{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///dist/formly.min.js","webpack:///webpack/bootstrap 686cb09c15fc8834efc4","webpack:///./index.js","webpack:///./angular-fix/index.js","webpack:///./other/utils.js","webpack:///./directives/formly-custom-validation.js","webpack:///./directives/formly-field.js","webpack:///./directives/formly-focus.js","webpack:///./directives/formly-form.js","webpack:///./index.common.js","webpack:///./providers/formlyApiCheck.js","webpack:///./providers/formlyConfig.js","webpack:///./providers/formlyUsability.js","webpack:///./providers/formlyValidationMessages.js","webpack:///./run/formlyCustomTags.js","webpack:///./run/formlyNgModelAttrsManipulator.js","webpack:///./services/formlyUtil.js","webpack:///./services/formlyWarn.js","webpack:///external \"angular\"","webpack:///external {\"root\":\"apiCheck\",\"amd\":\"api-check\",\"commonjs2\":\"api-check\",\"commonjs\":\"api-check\"}"],"names":["root","factory","exports","module","require","define","amd","this","__WEBPACK_EXTERNAL_MODULE_17__","__WEBPACK_EXTERNAL_MODULE_18__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","Object","defineProperty","value","_indexCommon","_indexCommon2","angular","version","window","formlyEval","scope","expression","$modelValue","$viewValue","extraLocals","_angularFix2","isFunction","$eval","extend","getFieldId","formId","options","index","type","template","templateUrl","key","join","reverseDeepMerge","dest","forEach","arguments","src","val","prop","isDefined","objAndSameType","copy","obj1","obj2","isObject","getPrototypeOf","findByNodeName","el","nodeName","element","toUpperCase","children","i","length","node","arrayify","isArray","extendFunction","_len","fns","Array","_key","args","fn","apply","_angularFix","formlyCustomValidation","formlyUtil","$q","isPromiseLike","then","checkValidators","validators","allowedProperties","validatorsWithExtraProps","validator","name","isString","extraProps","v","indexOf","push","keys","Error","JSON","stringify","restrict","link","attrs","ctrl","opts","validation","messages","message","useNewValidatorsApi","hasOwnProperty","setupWithValidators","validatorCollection","isPossiblyAsync","modelValue","viewValue","when","reject","setupWithParsers","inFlightValidator","undefined","$parsers","unshift","isValid","$pending","$setValidity","$inject","formlyField","$http","$compile","$templateCache","$interpolate","formlyConfig","formlyValidationMessages","formlyApiCheck","formlyUsability","formlyWarn","FormlyFieldController","$scope","$timeout","$parse","$controller","runExpressions","field","currentValue","valueGetterSetter","expressionProperties","setter","assign","promise","newVal","model","simplifyLife","data","templateOptions","to","formOptions","setFieldIdAndName","extras","formName","form","$name","setDefaultValue","defaultValue","setInitialValue","initialValue","mergeFieldOptionsWithTypeDefaults","mergeOptions","defaultOptions","properOrder","optionsTypes","reverse","typeName","getType","extraOptions","extendOptionsWithDefaults","resetModel","updateInitialValue","addModelWatcher","$watch","formControl","resetFormControl","isMultiNgModel","$setViewValue","$render","$setUntouched","$setPristine","$root","$$phase","$digest","addValidationMessages","invokeControllers","controller","setupFieldGroup","formState","fieldGroup","fieldType","getFieldType","checkApi","fieldLink","setFieldGroupTemplate","checkFieldGroupApi","addClass","extraAttributes","elementAttributes","map","setElementTemplate","className","addAttributes","attr","addClasses","templateString","html","asHtml","contents","watchFormControl","watchFieldNameOrExistence","nameExpressionRegex","nameExpression","exec","watchFieldExistence","fieldCount","fc","stopWatchingShowError","addShowMessagesWatcher","customExpression","errorExistsAndShouldBeVisibleExpression","$invalid","show","noTouchedButDirty","isUndefined","$touched","$dirty","errorExistsAndShouldBeVisible","showError","noop","noFormControl","templateEl","ngModelNodes","querySelectorAll","ngModelNode","getAttribute","callLinkFunctions","thusly","runManipulators","manipulators","templateToManipulate","chain","manipulator","newTemplate","fieldManipulators","getManipulators","getFieldTemplate","preWrapper","transcludeInWrappers","postWrapper","error","wrapper","append","addManipulators","_ref","_ref$preWrapper","pre","_ref$postWrapper","post","concat","templateManipulators","fromOptionsOrType","getFieldError","getTemplate","isUrl","templatePromise","_ret","httpOptions","cache","url","get","response","getWrapperOption","aWrapper","checkWrapper","validateOptions","runApiCheck","promises","w","all","wrappersTemplates","wrapperTemplate","checkWrapperTemplate","totalWrapper","shift","doTransclusion","superWrapper","transcludeEl","find","replaceWith","getWrapper","getWrapperByType","typeWrappers","formWrappers","defaultWrapper","formlyFieldOptions","prefix","hide","_ref2","apiCheck","apiCheckInstance","apiCheckFunction","apiCheckOptions","instance","shape","config","output","docsBaseUrl","transclude","fields","formlyFocus","$document","previousEl","doc","$observe","activeElement","focus","focusWait","blur","_toConsumableArray","arr","arr2","from","formlyForm","formlyFormGetTemplate","getRootEl","rootEl","getFieldRootEl","fieldRootEl","getHideDirective","hideDirective","defaultHideDirective","getTrackBy","trackBy","getFormName","bindName","minor","getFormlyError","startSymbol","endSymbol","copyAttributes","attributes","excluded","arrayAttrs","nodeValue","toKebabCase","currentFormId","parentFormAttributes","parent","hasClass","FormlyFormController","onModelOrFormStateChange","hideExpression","evalCloseToFormlyExpression","setupFields","fieldTransform","initModel","attachKey","setupWatchers","setupOptions","formOptionsApi","optional","isFieldGroup","watcher","watchers","listener","watchExpression","getWatchExpression","watchListener","getWatchListener","stopWatching","watchDeep","originalExpression","modifyArgs","_slice","displayName","originalListener","originalArgs","getFormlyFieldLikeLocals","formlyFormLink","setFormController","theFormlyForm","getter","parentForm","$parent","$removeControl","removeData","disableWarnings","fixChromeAutocomplete","global","removeChromeAutoComplete","offInstance","onInstance","input","document","createElement","setAttribute","appendChild","string","replace","$1","toLowerCase","prototype","slice","_providersFormlyApiCheck","_providersFormlyApiCheck2","_otherDocsBaseUrl","_otherDocsBaseUrl2","_providersFormlyUsability","_providersFormlyUsability2","_providersFormlyConfig","_providersFormlyConfig2","_providersFormlyValidationMessages","_providersFormlyValidationMessages2","_servicesFormlyUtil","_servicesFormlyUtil2","_servicesFormlyWarn","_servicesFormlyWarn2","_directivesFormlyCustomValidation","_directivesFormlyCustomValidation2","_directivesFormlyField","_directivesFormlyField2","_directivesFormlyFocus","_directivesFormlyFocus2","_directivesFormlyForm","_directivesFormlyForm2","_runFormlyNgModelAttrsManipulator","_runFormlyNgModelAttrsManipulator2","_runFormlyCustomTags","_runFormlyCustomTags2","ngModuleName","ngModule","constant","provider","directive","run","shapeRequiredIfNot","otherProps","propChecker","shapeRequiredIfNotDefinition","propName","location","propExists","otherPropsExist","some","otherProp","utils","getError","checkerHelpers","setupChecker","nullable","checker","oneOfType","oneOf","_apiCheck","_apiCheck2","formlyExpression","func","specifyWrapperType","typeOrArrayOf","apiCheckProperty","objectOf","apiCheckInstanceProperty","onlyIf","withProperties","warn","throw","apiCheckFunctionProperty","formlyWrapperType","ifNot","types","overwriteOk","bool","object","strict","modelChecker","arrayOf","fieldOptionsApiShape","$$hashKey","any","number","modelOptions","updateOn","debounce","allowInvalid","getterSetter","timezone","ngModelAttrs","attribute","bound","array","typeOptionsDefaultOptions","formlyTypeOptions","extends","formlyUsabilityProvider","setType","checkType","extendTypeOptions","typeMap","checkOverwrite","extendsType","extendTypeControllerFunction","extendTypeLinkFunction","extendTypeValidateOptionsFunction","extendTypeDefaultOptions","_otherUtils2","extendTemplate","extendsCtrl","optionsCtrl","extendsFn","optionsFn","originalDefaultOptions","mergedOptions","extendsDO","optionsDO","optionsDOIsFn","extendsDOIsFn","extendsDefaultOptions","mergedDefaultOptions","extenderOptionsDefaultOptions","newDefaultOptions","throwError","errorContext","setWrapper","_x","_x2","_again","wrapperOptions","getOptionsTypes","getOptionsName","checkWrapperAPI","templateWrappersMap","defaultWrapperName","checkWrapperTypes","shouldThrow","every","property","newValue","objectName","wrappers","removeWrapperByName","removeWrappersForType","_this","console","_this2","disableNgModelAttrsManipulator","ngModelAttrsManipulatorPreferUnbound","$get","_otherUtils","formlyErrorAndWarningsUrlPrefix","errorInfoSlug","getErrorMessage","toJson","urlSuffix","additionalInfo","formlyTransclude","addTemplateOptionValueMessage","suffix","alternate","validationMessages","templateOptionValue","addStringMessage","addCustomTags","div","innerHTML","isIeLessThan9","getElementsByTagName","customElements","addFormlyNgModelAttrsManipulator","ngModelAttrsManipulator","addValidation","addIfNotPresent","modelNodes","addModelOptions","addTemplateOptionsAttrs","ep","ngModelAttributes","getBuiltInAttributes","attrVal","attrName","ref","toVal","epVal","getEpValue","inTo","inEp","skipNgModelAttrsManipulator","boundOnly","bothBooleanAndBound","bothAttributeAndBound","expressionOnly","attributeOnly","item","boolean","substr","nodes","$log","warnInfoSlug"],"mappings":"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","file":"dist/formly.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"), require(\"api-check\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\", \"api-check\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ngFormly\"] = factory(require(\"angular\"), require(\"api-check\"));\n\telse\n\t\troot[\"ngFormly\"] = factory(root[\"angular\"], root[\"apiCheck\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_17__, __WEBPACK_EXTERNAL_MODULE_18__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","//! angular-formly version 6.15.2 built with ♥ by Astrism , Kent C. Dodds (ó ì_í)=óò=(ì_í ò)\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"), require(\"api-check\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\", \"api-check\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ngFormly\"] = factory(require(\"angular\"), require(\"api-check\"));\n\telse\n\t\troot[\"ngFormly\"] = factory(root[\"angular\"], root[\"apiCheck\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE_17__, __WEBPACK_EXTERNAL_MODULE_18__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _indexCommon = __webpack_require__(8);\n\t\n\tvar _indexCommon2 = _interopRequireDefault(_indexCommon);\n\n\texports['default'] = _indexCommon2['default'];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t// some versions of angular don't export the angular module properly,\n\t// so we get it from window in this case.\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\tvar angular = __webpack_require__(17);\n\t\n\t/* istanbul ignore next */\n\tif (!angular.version) {\n\t angular = window.angular;\n\t}\n\texports['default'] = angular;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports[\"default\"] = \"https://github.com/formly-js/angular-formly/blob/\" + (\"6.15.2\") + \"/other/ERRORS_AND_WARNINGS.md#\";\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _angularFix = __webpack_require__(1);\n\t\n\tvar _angularFix2 = _interopRequireDefault(_angularFix);\n\t\n\texports['default'] = { formlyEval: formlyEval, getFieldId: getFieldId, reverseDeepMerge: reverseDeepMerge, findByNodeName: findByNodeName, arrayify: arrayify, extendFunction: extendFunction };\n\t\n\tfunction formlyEval(scope, expression, $modelValue, $viewValue, extraLocals) {\n\t if (_angularFix2['default'].isFunction(expression)) {\n\t return expression($viewValue, $modelValue, scope, extraLocals);\n\t } else {\n\t return scope.$eval(expression, _angularFix2['default'].extend({ $viewValue: $viewValue, $modelValue: $modelValue }, extraLocals));\n\t }\n\t}\n\t\n\tfunction getFieldId(formId, options, index) {\n\t if (options.id) {\n\t return options.id;\n\t }\n\t var type = options.type;\n\t if (!type && options.template) {\n\t type = 'template';\n\t } else if (!type && options.templateUrl) {\n\t type = 'templateUrl';\n\t }\n\t\n\t return [formId, type, options.key, index].join('_');\n\t}\n\t\n\tfunction reverseDeepMerge(dest) {\n\t _angularFix2['default'].forEach(arguments, function (src, index) {\n\t if (!index) {\n\t return;\n\t }\n\t _angularFix2['default'].forEach(src, function (val, prop) {\n\t if (!_angularFix2['default'].isDefined(dest[prop])) {\n\t dest[prop] = _angularFix2['default'].copy(val);\n\t } else if (objAndSameType(dest[prop], val)) {\n\t reverseDeepMerge(dest[prop], val);\n\t }\n\t });\n\t });\n\t}\n\t\n\tfunction objAndSameType(obj1, obj2) {\n\t return _angularFix2['default'].isObject(obj1) && _angularFix2['default'].isObject(obj2) && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2);\n\t}\n\t\n\t// recurse down a node tree to find a node with matching nodeName, for custom tags jQuery.find doesn't work in IE8\n\tfunction findByNodeName(el, nodeName) {\n\t if (!el.prop) {\n\t // not a jQuery or jqLite object -> wrap it\n\t el = _angularFix2['default'].element(el);\n\t }\n\t\n\t if (el.prop('nodeName') === nodeName.toUpperCase()) {\n\t return el;\n\t }\n\t\n\t var c = el.children();\n\t for (var i = 0; c && i < c.length; i++) {\n\t var node = findByNodeName(c[i], nodeName);\n\t if (node) {\n\t return node;\n\t }\n\t }\n\t}\n\t\n\tfunction arrayify(obj) {\n\t if (obj && !_angularFix2['default'].isArray(obj)) {\n\t obj = [obj];\n\t } else if (!obj) {\n\t obj = [];\n\t }\n\t return obj;\n\t}\n\t\n\tfunction extendFunction() {\n\t for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n\t fns[_key] = arguments[_key];\n\t }\n\t\n\t return function extendedFunction() {\n\t var args = arguments;\n\t fns.forEach(function (fn) {\n\t return fn.apply(null, args);\n\t });\n\t };\n\t}\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _angularFix = __webpack_require__(1);\n\t\n\tvar _angularFix2 = _interopRequireDefault(_angularFix);\n\t\n\texports['default'] = formlyCustomValidation;\n\t\n\t// @ngInject\n\tfunction formlyCustomValidation(formlyUtil, $q) {\n\t return {\n\t restrict: 'A',\n\t require: 'ngModel',\n\t link: function formlyCustomValidationLink(scope, el, attrs, ctrl) {\n\t var opts = scope.options;\n\t if (opts.validators) {\n\t checkValidators(opts.validators);\n\t }\n\t opts.validation.messages = opts.validation.messages || {};\n\t _angularFix2['default'].forEach(opts.validation.messages, function (message, key) {\n\t opts.validation.messages[key] = function () {\n\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t };\n\t });\n\t\n\t var useNewValidatorsApi = ctrl.hasOwnProperty('$validators') && !attrs.hasOwnProperty('useParsers');\n\t _angularFix2['default'].forEach(opts.validators, function addValidatorToPipeline(validator, name) {\n\t var message = validator.message;\n\t if (message) {\n\t opts.validation.messages[name] = function () {\n\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t };\n\t }\n\t validator = _angularFix2['default'].isObject(validator) ? validator.expression : validator;\n\t var isPossiblyAsync = !_angularFix2['default'].isString(validator);\n\t if (useNewValidatorsApi) {\n\t setupWithValidators();\n\t } else {\n\t setupWithParsers();\n\t }\n\t\n\t function setupWithValidators() {\n\t var validatorCollection = isPossiblyAsync ? '$asyncValidators' : '$validators';\n\t ctrl[validatorCollection][name] = function evalValidity(modelValue, viewValue) {\n\t var value = formlyUtil.formlyEval(scope, validator, modelValue, viewValue);\n\t if (isPossiblyAsync) {\n\t return isPromiseLike(value) ? value : value ? $q.when(value) : $q.reject(value);\n\t } else {\n\t return value;\n\t }\n\t };\n\t }\n\t\n\t function setupWithParsers() {\n\t var inFlightValidator = undefined;\n\t ctrl.$parsers.unshift(function evalValidityOfParser(viewValue) {\n\t var isValid = formlyUtil.formlyEval(scope, validator, ctrl.$modelValue, viewValue);\n\t if (isPromiseLike(isValid)) {\n\t ctrl.$pending = ctrl.$pending || {};\n\t ctrl.$pending[name] = true;\n\t inFlightValidator = isValid;\n\t isValid.then(function () {\n\t if (inFlightValidator === isValid) {\n\t ctrl.$setValidity(name, true);\n\t }\n\t })['catch'](function () {\n\t if (inFlightValidator === isValid) {\n\t ctrl.$setValidity(name, false);\n\t }\n\t })['finally'](function () {\n\t if (Object.keys(ctrl.$pending).length === 1) {\n\t delete ctrl.$pending;\n\t } else {\n\t delete ctrl.$pending[name];\n\t }\n\t });\n\t } else {\n\t ctrl.$setValidity(name, isValid);\n\t }\n\t return viewValue;\n\t });\n\t }\n\t });\n\t }\n\t };\n\t\n\t function isPromiseLike(obj) {\n\t return obj && _angularFix2['default'].isFunction(obj.then);\n\t }\n\t\n\t function checkValidators(validators) {\n\t var allowedProperties = ['expression', 'message'];\n\t var validatorsWithExtraProps = {};\n\t _angularFix2['default'].forEach(validators, function (validator, name) {\n\t if (_angularFix2['default'].isString(validator)) {\n\t return;\n\t }\n\t var extraProps = [];\n\t _angularFix2['default'].forEach(validator, function (v, key) {\n\t if (allowedProperties.indexOf(key) === -1) {\n\t extraProps.push(key);\n\t }\n\t });\n\t if (extraProps.length) {\n\t validatorsWithExtraProps[name] = extraProps;\n\t }\n\t });\n\t if (Object.keys(validatorsWithExtraProps).length) {\n\t throw new Error(['Validators are only allowed to be functions or objects that have ' + allowedProperties.join(', ') + '.', 'You provided some extra properties: ' + JSON.stringify(validatorsWithExtraProps)].join(' '));\n\t }\n\t }\n\t}\n\tformlyCustomValidation.$inject = [\"formlyUtil\", \"$q\"];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _angularFix = __webpack_require__(1);\n\t\n\tvar _angularFix2 = _interopRequireDefault(_angularFix);\n\t\n\texports['default'] = formlyField;\n\t\n\t/**\n\t * @ngdoc directive\n\t * @name formlyField\n\t * @restrict AE\n\t */\n\t// @ngInject\n\tfunction formlyField($http, $q, $compile, $templateCache, $interpolate, formlyConfig, formlyValidationMessages, formlyApiCheck, formlyUtil, formlyUsability, formlyWarn) {\n\t var arrayify = formlyUtil.arrayify;\n\t\n\t FormlyFieldController.$inject = [\"$scope\", \"$timeout\", \"$parse\", \"$controller\"];\n\t return {\n\t restrict: 'AE',\n\t transclude: true,\n\t scope: {\n\t options: '=',\n\t model: '=',\n\t formId: '@', // TODO remove formId in a breaking release\n\t index: '=?',\n\t fields: '=?',\n\t formState: '=?',\n\t formOptions: '=?',\n\t form: '=?' // TODO require form in a breaking release\n\t },\n\t controller: FormlyFieldController,\n\t link: fieldLink\n\t };\n\t\n\t // @ngInject\n\t function FormlyFieldController($scope, $timeout, $parse, $controller) {\n\t /* eslint max-statements:[2, 31] */\n\t if ($scope.options.fieldGroup) {\n\t setupFieldGroup();\n\t return;\n\t }\n\t\n\t var fieldType = getFieldType($scope.options);\n\t simplifyLife($scope.options);\n\t mergeFieldOptionsWithTypeDefaults($scope.options, fieldType);\n\t extendOptionsWithDefaults($scope.options, $scope.index);\n\t checkApi($scope.options);\n\t // set field id to link labels and fields\n\t\n\t // initalization\n\t setFieldIdAndName();\n\t setDefaultValue();\n\t setInitialValue();\n\t runExpressions();\n\t addModelWatcher($scope, $scope.options);\n\t addValidationMessages($scope.options);\n\t invokeControllers($scope, $scope.options, fieldType);\n\t\n\t // function definitions\n\t function runExpressions() {\n\t // must run on next tick to make sure that the current value is correct.\n\t $timeout(function runExpressionsOnNextTick() {\n\t var field = $scope.options;\n\t var currentValue = valueGetterSetter();\n\t _angularFix2['default'].forEach(field.expressionProperties, function runExpression(expression, prop) {\n\t var setter = $parse(prop).assign;\n\t var promise = $q.when(formlyUtil.formlyEval($scope, expression, currentValue, currentValue));\n\t promise.then(function setFieldValue(value) {\n\t setter(field, value);\n\t });\n\t });\n\t });\n\t }\n\t\n\t function valueGetterSetter(newVal) {\n\t if (!$scope.model || !$scope.options.key) {\n\t return undefined;\n\t }\n\t if (_angularFix2['default'].isDefined(newVal)) {\n\t $scope.model[$scope.options.key] = newVal;\n\t }\n\t return $scope.model[$scope.options.key];\n\t }\n\t\n\t function simplifyLife(options) {\n\t // add a few empty objects (if they don't already exist) so you don't have to undefined check everywhere\n\t formlyUtil.reverseDeepMerge(options, {\n\t data: {},\n\t templateOptions: {},\n\t validation: {}\n\t });\n\t // create $scope.to so template authors can reference to instead of $scope.options.templateOptions\n\t $scope.to = $scope.options.templateOptions;\n\t $scope.formOptions = $scope.formOptions || {};\n\t }\n\t\n\t function setFieldIdAndName() {\n\t if (_angularFix2['default'].isFunction(formlyConfig.extras.getFieldId)) {\n\t $scope.id = formlyConfig.extras.getFieldId($scope.options, $scope.model, $scope);\n\t } else {\n\t var formName = $scope.form && $scope.form.$name || $scope.formId;\n\t $scope.id = formlyUtil.getFieldId(formName, $scope.options, $scope.index);\n\t }\n\t $scope.options.id = $scope.id;\n\t $scope.name = $scope.options.name || $scope.options.id;\n\t $scope.options.name = $scope.name;\n\t }\n\t\n\t function setDefaultValue() {\n\t if (_angularFix2['default'].isDefined($scope.options.defaultValue) && !_angularFix2['default'].isDefined($scope.model[$scope.options.key])) {\n\t $scope.model[$scope.options.key] = $scope.options.defaultValue;\n\t }\n\t }\n\t\n\t function setInitialValue() {\n\t $scope.options.initialValue = $scope.model && $scope.model[$scope.options.key];\n\t }\n\t\n\t function mergeFieldOptionsWithTypeDefaults(options, type) {\n\t if (type) {\n\t mergeOptions(options, type.defaultOptions);\n\t }\n\t var properOrder = arrayify(options.optionsTypes).reverse(); // so the right things are overridden\n\t _angularFix2['default'].forEach(properOrder, function (typeName) {\n\t mergeOptions(options, formlyConfig.getType(typeName, true, options).defaultOptions);\n\t });\n\t }\n\t\n\t function mergeOptions(options, extraOptions) {\n\t if (extraOptions) {\n\t if (_angularFix2['default'].isFunction(extraOptions)) {\n\t extraOptions = extraOptions(options);\n\t }\n\t formlyUtil.reverseDeepMerge(options, extraOptions);\n\t }\n\t }\n\t\n\t function extendOptionsWithDefaults(options, index) {\n\t var key = options.key || index || 0;\n\t _angularFix2['default'].extend(options, {\n\t // attach the key in case the formly-field directive is used directly\n\t key: key,\n\t value: valueGetterSetter,\n\t runExpressions: runExpressions,\n\t resetModel: resetModel,\n\t updateInitialValue: updateInitialValue\n\t });\n\t }\n\t\n\t // initialization functions\n\t function addModelWatcher(scope, options) {\n\t if (options.model) {\n\t scope.$watch('options.model', runExpressions, true);\n\t }\n\t }\n\t\n\t function resetModel() {\n\t $scope.model[$scope.options.key] = $scope.options.initialValue;\n\t if ($scope.options.formControl) {\n\t if (_angularFix2['default'].isArray($scope.options.formControl)) {\n\t _angularFix2['default'].forEach($scope.options.formControl, function (formControl) {\n\t resetFormControl(formControl, true);\n\t });\n\t } else {\n\t resetFormControl($scope.options.formControl);\n\t }\n\t }\n\t }\n\t\n\t function resetFormControl(formControl, isMultiNgModel) {\n\t if (!isMultiNgModel) {\n\t formControl.$setViewValue($scope.model[$scope.options.key]);\n\t }\n\t\n\t formControl.$render();\n\t formControl.$setUntouched();\n\t formControl.$setPristine();\n\t\n\t // To prevent breaking change requiring a digest to reset $viewModel\n\t if (!$scope.$root.$$phase) {\n\t $scope.$digest();\n\t }\n\t }\n\t\n\t function updateInitialValue() {\n\t $scope.options.initialValue = $scope.model[$scope.options.key];\n\t }\n\t\n\t function addValidationMessages(options) {\n\t options.validation.messages = options.validation.messages || {};\n\t _angularFix2['default'].forEach(formlyValidationMessages.messages, function createFunctionForMessage(expression, name) {\n\t if (!options.validation.messages[name]) {\n\t options.validation.messages[name] = function evaluateMessage(viewValue, modelValue, scope) {\n\t return formlyUtil.formlyEval(scope, expression, modelValue, viewValue);\n\t };\n\t }\n\t });\n\t }\n\t\n\t function invokeControllers(scope) {\n\t var options = arguments[1] === undefined ? {} : arguments[1];\n\t var type = arguments[2] === undefined ? {} : arguments[2];\n\t\n\t _angularFix2['default'].forEach([type.controller, options.controller], function (controller) {\n\t if (controller) {\n\t $controller(controller, { $scope: scope });\n\t }\n\t });\n\t }\n\t\n\t function setupFieldGroup() {\n\t $scope.options.options = $scope.options.options || {};\n\t $scope.options.options.formState = $scope.formState;\n\t }\n\t }\n\t\n\t // link function\n\t function fieldLink(scope, el) {\n\t if (scope.options.fieldGroup) {\n\t setFieldGroupTemplate();\n\t return;\n\t }\n\t\n\t addAttributes();\n\t addClasses();\n\t\n\t var type = getFieldType(scope.options);\n\t var args = arguments;\n\t var thusly = this;\n\t var fieldCount = 0;\n\t var fieldManipulators = getManipulators(scope.options, scope.formOptions);\n\t getFieldTemplate(scope.options).then(runManipulators(fieldManipulators.preWrapper)).then(transcludeInWrappers(scope.options, scope.formOptions)).then(runManipulators(fieldManipulators.postWrapper)).then(setElementTemplate).then(watchFormControl).then(callLinkFunctions)['catch'](function (error) {\n\t formlyWarn('there-was-a-problem-setting-the-template-for-this-field', 'There was a problem setting the template for this field ', scope.options, error);\n\t });\n\t\n\t function setFieldGroupTemplate() {\n\t checkFieldGroupApi(scope.options);\n\t el.addClass('formly-field-group');\n\t var extraAttributes = '';\n\t if (scope.options.elementAttributes) {\n\t extraAttributes = Object.keys(scope.options.elementAttributes).map(function (key) {\n\t return '' + key + '=\"' + scope.options.elementAttributes[key] + '\"';\n\t }).join(' ');\n\t }\n\t var modelValue = 'model';\n\t scope.options.form = scope.form;\n\t if (scope.options.key) {\n\t modelValue = 'model[\\'' + scope.options.key + '\\']';\n\t }\n\t setElementTemplate('\\n \\n \\n ');\n\t }\n\t\n\t function addAttributes() {\n\t if (scope.options.elementAttributes) {\n\t el.attr(scope.options.elementAttributes);\n\t }\n\t }\n\t\n\t function addClasses() {\n\t if (scope.options.className) {\n\t el.addClass(scope.options.className);\n\t }\n\t if (scope.options.type) {\n\t el.addClass('formly-field-' + scope.options.type);\n\t }\n\t }\n\t\n\t function setElementTemplate(templateString) {\n\t el.html(asHtml(templateString));\n\t $compile(el.contents())(scope);\n\t return templateString;\n\t }\n\t\n\t function watchFormControl(templateString) {\n\t var stopWatchingShowError = _angularFix2['default'].noop;\n\t if (scope.options.noFormControl) {\n\t return;\n\t }\n\t var templateEl = _angularFix2['default'].element('
' + templateString + '
');\n\t var ngModelNodes = templateEl[0].querySelectorAll('[ng-model],[data-ng-model]');\n\t\n\t if (ngModelNodes) {\n\t _angularFix2['default'].forEach(ngModelNodes, function (ngModelNode) {\n\t fieldCount++;\n\t watchFieldNameOrExistence(ngModelNode.getAttribute('name'));\n\t });\n\t }\n\t\n\t function watchFieldNameOrExistence(name) {\n\t var nameExpressionRegex = /\\{\\{(.*?)}}/;\n\t var nameExpression = nameExpressionRegex.exec(name);\n\t if (nameExpression) {\n\t name = $interpolate(name)(scope);\n\t }\n\t watchFieldExistence(name);\n\t }\n\t\n\t function watchFieldExistence(name) {\n\t scope.$watch('form[\"' + name + '\"]', function formControlChange(formControl) {\n\t if (formControl) {\n\t if (fieldCount > 1) {\n\t if (!scope.options.formControl) {\n\t scope.options.formControl = [];\n\t }\n\t scope.options.formControl.push(formControl);\n\t } else {\n\t scope.options.formControl = formControl;\n\t }\n\t scope.fc = scope.options.formControl; // shortcut for template authors\n\t stopWatchingShowError();\n\t addShowMessagesWatcher();\n\t }\n\t });\n\t }\n\t\n\t function addShowMessagesWatcher() {\n\t stopWatchingShowError = scope.$watch(function watchShowValidationChange() {\n\t var customExpression = formlyConfig.extras.errorExistsAndShouldBeVisibleExpression;\n\t var options = scope.options;\n\t var fc = scope.fc;\n\t\n\t if (!fc.$invalid) {\n\t return false;\n\t } else if (typeof options.validation.show === 'boolean') {\n\t return options.validation.show;\n\t } else if (customExpression) {\n\t return formlyUtil.formlyEval(scope, customExpression, fc.$modelValue, fc.$viewValue);\n\t } else {\n\t var noTouchedButDirty = _angularFix2['default'].isUndefined(fc.$touched) && fc.$dirty;\n\t return scope.fc.$touched || noTouchedButDirty;\n\t }\n\t }, function onShowValidationChange(show) {\n\t scope.options.validation.errorExistsAndShouldBeVisible = show;\n\t scope.showError = show; // shortcut for template authors\n\t });\n\t }\n\t }\n\t\n\t function callLinkFunctions() {\n\t if (type && type.link) {\n\t type.link.apply(thusly, args);\n\t }\n\t if (scope.options.link) {\n\t scope.options.link.apply(thusly, args);\n\t }\n\t }\n\t\n\t function runManipulators(manipulators) {\n\t return function runManipulatorsOnTemplate(templateToManipulate) {\n\t var chain = $q.when(templateToManipulate);\n\t _angularFix2['default'].forEach(manipulators, function (manipulator) {\n\t chain = chain.then(function (template) {\n\t return $q.when(manipulator(template, scope.options, scope)).then(function (newTemplate) {\n\t return _angularFix2['default'].isString(newTemplate) ? newTemplate : asHtml(newTemplate);\n\t });\n\t });\n\t });\n\t return chain;\n\t };\n\t }\n\t }\n\t\n\t // sort-of stateless util functions\n\t function asHtml(el) {\n\t var wrapper = _angularFix2['default'].element('');\n\t return wrapper.append(el).html();\n\t }\n\t\n\t function getFieldType(options) {\n\t return options.type && formlyConfig.getType(options.type);\n\t }\n\t\n\t function getManipulators(options, formOptions) {\n\t var preWrapper = [];\n\t var postWrapper = [];\n\t addManipulators(options.templateManipulators);\n\t addManipulators(formOptions.templateManipulators);\n\t addManipulators(formlyConfig.templateManipulators);\n\t return { preWrapper: preWrapper, postWrapper: postWrapper };\n\t\n\t function addManipulators(manipulators) {\n\t /* eslint-disable */ // it doesn't understand this :-(\n\t\n\t var _ref = manipulators || {};\n\t\n\t var _ref$preWrapper = _ref.preWrapper;\n\t var pre = _ref$preWrapper === undefined ? [] : _ref$preWrapper;\n\t var _ref$postWrapper = _ref.postWrapper;\n\t var post = _ref$postWrapper === undefined ? [] : _ref$postWrapper;\n\t\n\t preWrapper = preWrapper.concat(pre);\n\t postWrapper = postWrapper.concat(post);\n\t /* eslint-enable */\n\t }\n\t }\n\t\n\t function getFieldTemplate(options) {\n\t function fromOptionsOrType(key, fieldType) {\n\t if (_angularFix2['default'].isDefined(options[key])) {\n\t return options[key];\n\t } else if (fieldType && _angularFix2['default'].isDefined(fieldType[key])) {\n\t return fieldType[key];\n\t }\n\t }\n\t\n\t var type = formlyConfig.getType(options.type, true, options);\n\t var template = fromOptionsOrType('template', type);\n\t var templateUrl = fromOptionsOrType('templateUrl', type);\n\t if (_angularFix2['default'].isUndefined(template) && !templateUrl) {\n\t throw formlyUsability.getFieldError('type-type-has-no-template', 'Type \\'' + options.type + '\\' has not template. On element:', options);\n\t }\n\t\n\t return getTemplate(templateUrl || template, _angularFix2['default'].isUndefined(template), options);\n\t }\n\t\n\t function getTemplate(template, isUrl, options) {\n\t var templatePromise = undefined;\n\t if (_angularFix2['default'].isFunction(template)) {\n\t templatePromise = $q.when(template(options));\n\t } else {\n\t templatePromise = $q.when(template);\n\t }\n\t\n\t if (!isUrl) {\n\t return templatePromise;\n\t } else {\n\t var _ret = (function () {\n\t var httpOptions = { cache: $templateCache };\n\t return {\n\t v: templatePromise.then(function (url) {\n\t return $http.get(url, httpOptions);\n\t }).then(function (response) {\n\t return response.data;\n\t })['catch'](function handleErrorGettingATemplate(error) {\n\t formlyWarn('problem-loading-template-for-templateurl', 'Problem loading template for ' + template, error);\n\t })\n\t };\n\t })();\n\t\n\t if (typeof _ret === 'object') return _ret.v;\n\t }\n\t }\n\t\n\t function transcludeInWrappers(options, formOptions) {\n\t var wrapper = getWrapperOption(options, formOptions);\n\t\n\t return function transcludeTemplate(template) {\n\t if (!wrapper.length) {\n\t return $q.when(template);\n\t }\n\t\n\t wrapper.forEach(function (aWrapper) {\n\t formlyUsability.checkWrapper(aWrapper, options);\n\t aWrapper.validateOptions && aWrapper.validateOptions(options);\n\t runApiCheck(aWrapper, options);\n\t });\n\t var promises = wrapper.map(function (w) {\n\t return getTemplate(w.template || w.templateUrl, !w.template);\n\t });\n\t return $q.all(promises).then(function (wrappersTemplates) {\n\t wrappersTemplates.forEach(function (wrapperTemplate, index) {\n\t formlyUsability.checkWrapperTemplate(wrapperTemplate, wrapper[index]);\n\t });\n\t wrappersTemplates.reverse(); // wrapper 0 is wrapped in wrapper 1 and so on...\n\t var totalWrapper = wrappersTemplates.shift();\n\t wrappersTemplates.forEach(function (wrapperTemplate) {\n\t totalWrapper = doTransclusion(totalWrapper, wrapperTemplate);\n\t });\n\t return doTransclusion(totalWrapper, template);\n\t });\n\t };\n\t }\n\t\n\t function doTransclusion(wrapper, template) {\n\t var superWrapper = _angularFix2['default'].element(''); // this allows people not have to have a single root in wrappers\n\t superWrapper.append(wrapper);\n\t var transcludeEl = superWrapper.find('formly-transclude');\n\t if (!transcludeEl.length) {\n\t // try it using our custom find function\n\t transcludeEl = formlyUtil.findByNodeName(superWrapper, 'formly-transclude');\n\t }\n\t transcludeEl.replaceWith(template);\n\t return superWrapper.html();\n\t }\n\t\n\t function getWrapperOption(options, formOptions) {\n\t /* eslint complexity:[6, 2] */\n\t var wrapper = options.wrapper;\n\t // explicit null means no wrapper\n\t if (wrapper === null) {\n\t return [];\n\t }\n\t\n\t // nothing specified means use the default wrapper for the type\n\t if (!wrapper) {\n\t // get all wrappers that specify they apply to this type\n\t wrapper = arrayify(formlyConfig.getWrapperByType(options.type));\n\t } else {\n\t wrapper = arrayify(wrapper).map(formlyConfig.getWrapper);\n\t }\n\t\n\t // get all wrappers for that the type specified that it uses.\n\t var type = formlyConfig.getType(options.type, true, options);\n\t if (type && type.wrapper) {\n\t var typeWrappers = arrayify(type.wrapper).map(formlyConfig.getWrapper);\n\t wrapper = wrapper.concat(typeWrappers);\n\t }\n\t\n\t // add form wrappers\n\t if (formOptions.wrapper) {\n\t var formWrappers = arrayify(formOptions.wrapper).map(formlyConfig.getWrapper);\n\t wrapper = wrapper.concat(formWrappers);\n\t }\n\t\n\t // add the default wrapper last\n\t var defaultWrapper = formlyConfig.getWrapper();\n\t if (defaultWrapper) {\n\t wrapper.push(defaultWrapper);\n\t }\n\t return wrapper;\n\t }\n\t\n\t function checkApi(options) {\n\t formlyApiCheck['throw'](formlyApiCheck.formlyFieldOptions, options, {\n\t prefix: 'formly-field directive',\n\t url: 'formly-field-directive-validation-failed'\n\t });\n\t // validate with the type\n\t var type = options.type && formlyConfig.getType(options.type);\n\t if (type) {\n\t if (type.validateOptions) {\n\t type.validateOptions(options);\n\t }\n\t runApiCheck(type, options);\n\t }\n\t if (options.expressionProperties && options.expressionProperties.hide) {\n\t formlyWarn('dont-use-expressionproperties.hide-use-hideexpression-instead', 'You have specified `hide` in `expressionProperties`. Use `hideExpression` instead', options);\n\t }\n\t }\n\t\n\t function checkFieldGroupApi(options) {\n\t formlyApiCheck['throw'](formlyApiCheck.fieldGroup, options, {\n\t prefix: 'formly-field directive',\n\t url: 'formly-field-directive-validation-failed'\n\t });\n\t }\n\t\n\t function runApiCheck(_ref2, options) {\n\t var apiCheck = _ref2.apiCheck;\n\t var apiCheckInstance = _ref2.apiCheckInstance;\n\t var apiCheckFunction = _ref2.apiCheckFunction;\n\t var apiCheckOptions = _ref2.apiCheckOptions;\n\t\n\t if (!apiCheck) {\n\t return;\n\t }\n\t var instance = apiCheckInstance || formlyApiCheck;\n\t var fn = apiCheckFunction || 'warn';\n\t var shape = instance.shape(apiCheck);\n\t instance[fn](shape, options, apiCheckOptions || {\n\t prefix: 'formly-field ' + name,\n\t url: formlyApiCheck.config.output.docsBaseUrl + 'formly-field-type-apicheck-failed'\n\t });\n\t }\n\t}\n\tformlyField.$inject = [\"$http\", \"$q\", \"$compile\", \"$templateCache\", \"$interpolate\", \"formlyConfig\", \"formlyValidationMessages\", \"formlyApiCheck\", \"formlyUtil\", \"formlyUsability\", \"formlyWarn\"];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\texports['default'] = formlyFocus;\n\t\n\t// @ngInject\n\tfunction formlyFocus($timeout, $document) {\n\t return {\n\t restrict: 'A',\n\t link: function formlyFocusLink(scope, element, attrs) {\n\t var previousEl = null;\n\t var el = element[0];\n\t var doc = $document[0];\n\t attrs.$observe('formlyFocus', function respondToFocusExpressionChange(value) {\n\t if (value === 'true') {\n\t $timeout(function setElementFocus() {\n\t previousEl = doc.activeElement;\n\t el.focus();\n\t }, ~ ~attrs.focusWait);\n\t } else if (value === 'false') {\n\t if (doc.activeElement === el) {\n\t el.blur();\n\t if (attrs.hasOwnProperty('refocus') && previousEl) {\n\t previousEl.focus();\n\t }\n\t }\n\t }\n\t });\n\t }\n\t };\n\t}\n\tformlyFocus.$inject = [\"$timeout\", \"$document\"];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\tvar _slice = Array.prototype.slice;\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }\n\t\n\tvar _angularFix = __webpack_require__(1);\n\t\n\tvar _angularFix2 = _interopRequireDefault(_angularFix);\n\t\n\texports['default'] = formlyForm;\n\t\n\t/**\n\t * @ngdoc directive\n\t * @name formlyForm\n\t * @restrict E\n\t */\n\t// @ngInject\n\tfunction formlyForm(formlyUsability, formlyWarn, $parse, formlyConfig, $interpolate) {\n\t var currentFormId = 1;\n\t FormlyFormController.$inject = [\"$scope\", \"formlyApiCheck\", \"formlyUtil\"];\n\t return {\n\t restrict: 'E',\n\t template: formlyFormGetTemplate,\n\t replace: true,\n\t transclude: true,\n\t scope: {\n\t fields: '=',\n\t model: '=',\n\t form: '=?',\n\t options: '=?'\n\t },\n\t controller: FormlyFormController,\n\t link: formlyFormLink\n\t };\n\t\n\t function formlyFormGetTemplate(el, attrs) {\n\t var rootEl = getRootEl();\n\t var fieldRootEl = getFieldRootEl();\n\t var formId = 'formly_' + currentFormId++;\n\t var parentFormAttributes = '';\n\t if (attrs.hasOwnProperty('isFieldGroup') && el.parent().parent().hasClass('formly')) {\n\t parentFormAttributes = copyAttributes(el.parent().parent()[0].attributes);\n\t }\n\t return '\\n <' + rootEl + ' class=\"formly\"\\n name=\"' + getFormName() + '\"\\n role=\"form\" ' + parentFormAttributes + '>\\n <' + fieldRootEl + ' formly-field\\n ng-repeat=\"field in fields ' + getTrackBy() + '\"\\n ' + getHideDirective() + '=\"!field.hide\"\\n class=\"formly-field\"\\n options=\"field\"\\n model=\"field.model || model\"\\n fields=\"fields\"\\n form=\"theFormlyForm\"\\n form-id=\"' + getFormName() + '\"\\n form-state=\"options.formState\"\\n form-options=\"options\"\\n index=\"$index\">\\n \\n
\\n \\n ';\n\t\n\t function getRootEl() {\n\t return attrs.rootEl || 'ng-form';\n\t }\n\t\n\t function getFieldRootEl() {\n\t return attrs.fieldRootEl || 'div';\n\t }\n\t\n\t function getHideDirective() {\n\t return attrs.hideDirective || formlyConfig.extras.defaultHideDirective || 'ng-if';\n\t }\n\t\n\t function getTrackBy() {\n\t if (!attrs.trackBy) {\n\t return '';\n\t } else {\n\t return 'track by ' + attrs.trackBy;\n\t }\n\t }\n\t\n\t function getFormName() {\n\t var formName = formId;\n\t var bindName = attrs.bindName;\n\t if (bindName) {\n\t if (_angularFix2['default'].version.minor < 3) {\n\t throw formlyUsability.getFormlyError('bind-name attribute on formly-form not allowed in < angular 1.3');\n\t }\n\t // we can do a one-time binding here because we know we're in 1.3.x territory\n\t formName = '' + $interpolate.startSymbol() + '::\\'formly_\\' + ' + bindName + '' + $interpolate.endSymbol();\n\t }\n\t return formName;\n\t }\n\t\n\t function copyAttributes(attributes) {\n\t var excluded = ['model', 'form', 'fields', 'options', 'name', 'role', 'class', 'data-model', 'data-form', 'data-fields', 'data-options', 'data-name'];\n\t var arrayAttrs = [];\n\t _angularFix2['default'].forEach(attributes, function (_ref) {\n\t var nodeName = _ref.nodeName;\n\t var nodeValue = _ref.nodeValue;\n\t\n\t if (nodeName !== 'undefined' && excluded.indexOf(nodeName) === -1) {\n\t arrayAttrs.push('' + toKebabCase(nodeName) + '=\"' + nodeValue + '\"');\n\t }\n\t });\n\t return arrayAttrs.join(' ');\n\t }\n\t }\n\t\n\t // @ngInject\n\t function FormlyFormController($scope, formlyApiCheck, formlyUtil) {\n\t setupOptions();\n\t $scope.model = $scope.model || {};\n\t setupFields();\n\t\n\t // watch the model and evaluate watch expressions that depend on it.\n\t $scope.$watch('model', onModelOrFormStateChange, true);\n\t if ($scope.options.formState) {\n\t $scope.$watch('options.formState', onModelOrFormStateChange, true);\n\t }\n\t\n\t function onModelOrFormStateChange() {\n\t _angularFix2['default'].forEach($scope.fields, function runFieldExpressionProperties(field, index) {\n\t /*jshint -W030 */\n\t var model = field.model || $scope.model;\n\t field.runExpressions && field.runExpressions(model);\n\t if (field.hideExpression) {\n\t // can't use hide with expressionProperties reliably\n\t var val = model[field.key];\n\t field.hide = evalCloseToFormlyExpression(field.hideExpression, val, field, index);\n\t }\n\t });\n\t }\n\t\n\t function setupFields() {\n\t $scope.fields = $scope.fields || [];\n\t var fieldTransform = $scope.options.fieldTransform || formlyConfig.extras.fieldTransform;\n\t\n\t if (fieldTransform) {\n\t $scope.fields = fieldTransform($scope.fields, $scope.model, $scope.options, $scope.form);\n\t if (!$scope.fields) {\n\t throw formlyUsability.getFormlyError('fieldTransform must return an array of fields');\n\t }\n\t }\n\t\n\t _angularFix2['default'].forEach($scope.fields, initModel); // initializes the model property if set to 'formState'\n\t _angularFix2['default'].forEach($scope.fields, attachKey); // attaches a key based on the index if a key isn't specified\n\t _angularFix2['default'].forEach($scope.fields, setupWatchers); // setup watchers for all fields\n\t }\n\t\n\t function setupOptions() {\n\t formlyApiCheck['throw']([formlyApiCheck.formOptionsApi.optional], [$scope.options], { prefix: 'formly-form options check' });\n\t $scope.options = $scope.options || {};\n\t $scope.options.formState = $scope.options.formState || {};\n\t\n\t _angularFix2['default'].extend($scope.options, {\n\t updateInitialValue: updateInitialValue,\n\t resetModel: resetModel\n\t });\n\t }\n\t\n\t function updateInitialValue() {\n\t _angularFix2['default'].forEach($scope.fields, function (field) {\n\t if (isFieldGroup(field)) {\n\t field.options.updateInitialValue();\n\t } else {\n\t field.updateInitialValue();\n\t }\n\t });\n\t }\n\t\n\t function resetModel() {\n\t _angularFix2['default'].forEach($scope.fields, function (field) {\n\t if (isFieldGroup(field)) {\n\t field.options.resetModel();\n\t } else {\n\t field.resetModel();\n\t }\n\t });\n\t }\n\t\n\t function initModel(field) {\n\t if (_angularFix2['default'].isString(field.model)) {\n\t var expression = field.model;\n\t var index = $scope.fields.indexOf(field);\n\t field.model = evalCloseToFormlyExpression(expression, undefined, field, index);\n\t if (!field.model) {\n\t throw formlyUsability.getFieldError('field-model-must-be-initialized', 'Field model must be initialized. When specifying a model as a string for a field, the result of the' + ' expression must have been initialized ahead of time.', field);\n\t }\n\t }\n\t }\n\t\n\t function attachKey(field, index) {\n\t if (!isFieldGroup(field)) {\n\t field.key = field.key || index || 0;\n\t }\n\t }\n\t\n\t function setupWatchers(field, index) {\n\t if (isFieldGroup(field) || !_angularFix2['default'].isDefined(field.watcher)) {\n\t return;\n\t }\n\t var watchers = field.watcher;\n\t if (!_angularFix2['default'].isArray(watchers)) {\n\t watchers = [watchers];\n\t }\n\t _angularFix2['default'].forEach(watchers, function setupWatcher(watcher) {\n\t if (!_angularFix2['default'].isDefined(watcher.listener)) {\n\t throw formlyUsability.getFieldError('all-field-watchers-must-have-a-listener', 'All field watchers must have a listener', field);\n\t }\n\t var watchExpression = getWatchExpression(watcher, field, index);\n\t var watchListener = getWatchListener(watcher, field, index);\n\t\n\t var type = watcher.type || '$watch';\n\t watcher.stopWatching = $scope[type](watchExpression, watchListener, watcher.watchDeep);\n\t });\n\t }\n\t\n\t function getWatchExpression(watcher, field, index) {\n\t var watchExpression = watcher.expression || 'model[\\'' + field.key + '\\']';\n\t if (_angularFix2['default'].isFunction(watchExpression)) {\n\t // wrap the field's watch expression so we can call it with the field as the first arg\n\t // and the stop function as the last arg as a helper\n\t var originalExpression = watchExpression;\n\t watchExpression = function formlyWatchExpression() {\n\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t return originalExpression.apply(undefined, _toConsumableArray(args));\n\t };\n\t watchExpression.displayName = 'Formly Watch Expression for field for ' + field.key;\n\t }\n\t return watchExpression;\n\t }\n\t\n\t function getWatchListener(watcher, field, index) {\n\t var watchListener = watcher.listener;\n\t if (_angularFix2['default'].isFunction(watchListener)) {\n\t // wrap the field's watch listener so we can call it with the field as the first arg\n\t // and the stop function as the last arg as a helper\n\t var originalListener = watchListener;\n\t watchListener = function formlyWatchListener() {\n\t var args = modifyArgs.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n\t return originalListener.apply(undefined, _toConsumableArray(args));\n\t };\n\t watchListener.displayName = 'Formly Watch Listener for field for ' + field.key;\n\t }\n\t return watchListener;\n\t }\n\t\n\t function modifyArgs(watcher, index) {\n\t for (var _len = arguments.length, originalArgs = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n\t originalArgs[_key - 2] = arguments[_key];\n\t }\n\t\n\t return [$scope.fields[index]].concat(originalArgs, [watcher.stopWatching]);\n\t }\n\t\n\t function evalCloseToFormlyExpression(expression, val, field, index) {\n\t var extraLocals = getFormlyFieldLikeLocals(field, index);\n\t return formlyUtil.formlyEval($scope, expression, val, val, extraLocals);\n\t }\n\t\n\t function getFormlyFieldLikeLocals(field, index) {\n\t // this makes it closer to what a regular formlyExpression would be\n\t return {\n\t options: field,\n\t index: index,\n\t formState: $scope.options.formState,\n\t formId: $scope.formId\n\t };\n\t }\n\t }\n\t\n\t function formlyFormLink(scope, el, attrs) {\n\t setFormController();\n\t fixChromeAutocomplete();\n\t\n\t function setFormController() {\n\t var formId = attrs.name;\n\t scope.formId = formId;\n\t scope.theFormlyForm = scope[formId];\n\t if (attrs.form) {\n\t var getter = $parse(attrs.form);\n\t var setter = getter.assign;\n\t var parentForm = getter(scope.$parent);\n\t if (parentForm) {\n\t scope.theFormlyForm = parentForm;\n\t if (scope[formId]) {\n\t scope.theFormlyForm.$removeControl(scope[formId]);\n\t }\n\t\n\t // this next line is probably one of the more dangerous things that angular-formly does to improve the\n\t // API for angular-formly forms. It ensures that the NgModelControllers inside of formly-form will be\n\t // attached to the form that is passed to formly-form rather than the one that formly-form creates\n\t // this is necessary because it's confusing to have a step between the form you pass in\n\t // and the fields in that form. It also is because angular doesn't propagate properties like $submitted down\n\t // to children forms :-( This line was added to solve this issue:\n\t // https://github.com/formly-js/angular-formly/issues/287\n\t // luckily, this is how the formController has been accessed by the NgModelController since angular 1.0.0\n\t // so I expect it will remain this way for the life of angular 1.x\n\t el.removeData('$formController');\n\t } else {\n\t setter(scope.$parent, scope[formId]);\n\t }\n\t }\n\t if (!scope.theFormlyForm && !formlyConfig.disableWarnings) {\n\t /* eslint no-console:0 */\n\t formlyWarn('formly-form-has-no-formcontroller', 'Your formly-form does not have a `form` property. Many functions of the form (like validation) may not work', el, scope);\n\t }\n\t }\n\t\n\t /**\n\t * chrome autocomplete lameness\n\t * see https://code.google.com/p/chromium/issues/detail?id=468153#c14\n\t * ლ(ಠ益ಠლ) (╯°□°)╯︵ ┻━┻ (◞‸◟;)\n\t */\n\t function fixChromeAutocomplete() {\n\t var global = formlyConfig.extras.removeChromeAutoComplete === true;\n\t var offInstance = scope.options && scope.options.removeChromeAutoComplete === false;\n\t var onInstance = scope.options && scope.options.removeChromeAutoComplete === true;\n\t if (global && !offInstance || onInstance) {\n\t var input = document.createElement('input');\n\t input.setAttribute('autocomplete', 'address-level4');\n\t input.setAttribute('hidden', 'true');\n\t el[0].appendChild(input);\n\t }\n\t }\n\t }\n\t\n\t // stateless util functions\n\t function toKebabCase(string) {\n\t if (string) {\n\t return string.replace(/([A-Z])/g, function ($1) {\n\t return '-' + $1.toLowerCase();\n\t });\n\t } else {\n\t return '';\n\t }\n\t }\n\t\n\t function isFieldGroup(field) {\n\t return field && !!field.fieldGroup;\n\t }\n\t}\n\tformlyForm.$inject = [\"formlyUsability\", \"formlyWarn\", \"$parse\", \"formlyConfig\", \"$interpolate\"];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _angularFix = __webpack_require__(1);\n\t\n\tvar _angularFix2 = _interopRequireDefault(_angularFix);\n\t\n\tvar _providersFormlyApiCheck = __webpack_require__(9);\n\t\n\tvar _providersFormlyApiCheck2 = _interopRequireDefault(_providersFormlyApiCheck);\n\t\n\tvar _otherDocsBaseUrl = __webpack_require__(2);\n\t\n\tvar _otherDocsBaseUrl2 = _interopRequireDefault(_otherDocsBaseUrl);\n\t\n\tvar _providersFormlyUsability = __webpack_require__(11);\n\t\n\tvar _providersFormlyUsability2 = _interopRequireDefault(_providersFormlyUsability);\n\t\n\tvar _providersFormlyConfig = __webpack_require__(10);\n\t\n\tvar _providersFormlyConfig2 = _interopRequireDefault(_providersFormlyConfig);\n\t\n\tvar _providersFormlyValidationMessages = __webpack_require__(12);\n\t\n\tvar _providersFormlyValidationMessages2 = _interopRequireDefault(_providersFormlyValidationMessages);\n\t\n\tvar _servicesFormlyUtil = __webpack_require__(15);\n\t\n\tvar _servicesFormlyUtil2 = _interopRequireDefault(_servicesFormlyUtil);\n\t\n\tvar _servicesFormlyWarn = __webpack_require__(16);\n\t\n\tvar _servicesFormlyWarn2 = _interopRequireDefault(_servicesFormlyWarn);\n\t\n\tvar _directivesFormlyCustomValidation = __webpack_require__(4);\n\t\n\tvar _directivesFormlyCustomValidation2 = _interopRequireDefault(_directivesFormlyCustomValidation);\n\t\n\tvar _directivesFormlyField = __webpack_require__(5);\n\t\n\tvar _directivesFormlyField2 = _interopRequireDefault(_directivesFormlyField);\n\t\n\tvar _directivesFormlyFocus = __webpack_require__(6);\n\t\n\tvar _directivesFormlyFocus2 = _interopRequireDefault(_directivesFormlyFocus);\n\t\n\tvar _directivesFormlyForm = __webpack_require__(7);\n\t\n\tvar _directivesFormlyForm2 = _interopRequireDefault(_directivesFormlyForm);\n\t\n\tvar _runFormlyNgModelAttrsManipulator = __webpack_require__(14);\n\t\n\tvar _runFormlyNgModelAttrsManipulator2 = _interopRequireDefault(_runFormlyNgModelAttrsManipulator);\n\t\n\tvar _runFormlyCustomTags = __webpack_require__(13);\n\t\n\tvar _runFormlyCustomTags2 = _interopRequireDefault(_runFormlyCustomTags);\n\t\n\tvar ngModuleName = 'formly';\n\t\n\texports['default'] = ngModuleName;\n\t\n\tvar ngModule = _angularFix2['default'].module(ngModuleName, []);\n\t\n\tngModule.constant('formlyApiCheck', _providersFormlyApiCheck2['default']);\n\tngModule.constant('formlyErrorAndWarningsUrlPrefix', _otherDocsBaseUrl2['default']);\n\tngModule.constant('formlyVersion', (\"6.15.2\")); // <-- webpack variable\n\t\n\tngModule.provider('formlyUsability', _providersFormlyUsability2['default']);\n\tngModule.provider('formlyConfig', _providersFormlyConfig2['default']);\n\t\n\tngModule.factory('formlyValidationMessages', _providersFormlyValidationMessages2['default']);\n\tngModule.factory('formlyUtil', _servicesFormlyUtil2['default']);\n\tngModule.factory('formlyWarn', _servicesFormlyWarn2['default']);\n\t\n\tngModule.directive('formlyCustomValidation', _directivesFormlyCustomValidation2['default']);\n\tngModule.directive('formlyField', _directivesFormlyField2['default']);\n\tngModule.directive('formlyFocus', _directivesFormlyFocus2['default']);\n\tngModule.directive('formlyForm', _directivesFormlyForm2['default']);\n\t\n\tngModule.run(_runFormlyNgModelAttrsManipulator2['default']);\n\tngModule.run(_runFormlyCustomTags2['default']);\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _angularFix = __webpack_require__(1);\n\t\n\tvar _angularFix2 = _interopRequireDefault(_angularFix);\n\t\n\tvar _apiCheck = __webpack_require__(18);\n\t\n\tvar _apiCheck2 = _interopRequireDefault(_apiCheck);\n\t\n\tvar apiCheck = (0, _apiCheck2['default'])({\n\t output: {\n\t prefix: 'angular-formly:',\n\t docsBaseUrl: __webpack_require__(2)\n\t }\n\t});\n\t\n\tfunction shapeRequiredIfNot(otherProps, propChecker) {\n\t if (!_angularFix2['default'].isArray(otherProps)) {\n\t otherProps = [otherProps];\n\t }\n\t var type = 'specified if these are not specified: `' + otherProps.join(', ') + '` (otherwise it\\'s optional)';\n\t function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n\t var propExists = obj && obj.hasOwnProperty(propName);\n\t var otherPropsExist = otherProps.some(function (otherProp) {\n\t return obj && obj.hasOwnProperty(otherProp);\n\t });\n\t if (!otherPropsExist && !propExists) {\n\t return apiCheck.utils.getError(propName, location, type);\n\t } else if (propExists) {\n\t return propChecker(prop, propName, location, obj);\n\t }\n\t }\n\t shapeRequiredIfNotDefinition.type = type;\n\t return apiCheck.utils.checkerHelpers.setupChecker(shapeRequiredIfNotDefinition);\n\t}\n\t\n\tfunction nullable(checker) {\n\t return apiCheck.oneOfType([apiCheck.oneOf([null]), checker]);\n\t}\n\t\n\tvar formlyExpression = apiCheck.oneOfType([apiCheck.string, apiCheck.func]);\n\tvar specifyWrapperType = nullable(apiCheck.typeOrArrayOf(apiCheck.string));\n\t\n\tvar apiCheckProperty = apiCheck.objectOf(apiCheck.func);\n\t\n\tvar apiCheckInstanceProperty = apiCheck.shape.onlyIf('apiCheck', apiCheck.func.withProperties({\n\t warn: apiCheck.func,\n\t 'throw': apiCheck.func,\n\t shape: apiCheck.func\n\t}));\n\t\n\tvar apiCheckFunctionProperty = apiCheck.shape.onlyIf('apiCheck', apiCheck.oneOf(['throw', 'warn']));\n\t\n\tvar formlyWrapperType = apiCheck.shape({\n\t name: shapeRequiredIfNot('types', apiCheck.string).optional,\n\t template: apiCheck.shape.ifNot('templateUrl', apiCheck.string).optional,\n\t templateUrl: apiCheck.shape.ifNot('template', apiCheck.string).optional,\n\t types: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t overwriteOk: apiCheck.bool.optional,\n\t validateOptions: apiCheck.func.optional,\n\t apiCheck: apiCheckProperty.optional,\n\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t apiCheckOptions: apiCheck.object.optional\n\t}).strict;\n\t\n\tvar expressionProperties = apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t expression: formlyExpression,\n\t message: formlyExpression.optional\n\t}).strict]));\n\t\n\tvar modelChecker = apiCheck.oneOfType([apiCheck.string, apiCheck.object]);\n\t\n\tvar templateManipulators = nullable(apiCheck.shape({\n\t preWrapper: nullable(apiCheck.arrayOf(apiCheck.func)).optional,\n\t postWrapper: nullable(apiCheck.arrayOf(apiCheck.func)).optional\n\t}).strict);\n\t\n\tvar fieldOptionsApiShape = {\n\t $$hashKey: apiCheck.any.optional,\n\t type: apiCheck.shape.ifNot(['template', 'templateUrl'], apiCheck.string).optional,\n\t template: apiCheck.shape.ifNot(['type', 'templateUrl'], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t templateUrl: apiCheck.shape.ifNot(['type', 'template'], apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t key: apiCheck.oneOfType([apiCheck.string, apiCheck.number]).optional,\n\t model: modelChecker.optional,\n\t className: apiCheck.string.optional,\n\t id: apiCheck.string.optional,\n\t name: apiCheck.string.optional,\n\t expressionProperties: expressionProperties.optional,\n\t data: apiCheck.object.optional,\n\t templateOptions: apiCheck.object.optional,\n\t wrapper: specifyWrapperType.optional,\n\t modelOptions: apiCheck.shape({\n\t updateOn: apiCheck.string.optional,\n\t debounce: apiCheck.oneOfType([apiCheck.objectOf(apiCheck.number), apiCheck.number]).optional,\n\t allowInvalid: apiCheck.bool.optional,\n\t getterSetter: apiCheck.bool.optional,\n\t timezone: apiCheck.string.optional\n\t }).optional,\n\t watcher: apiCheck.typeOrArrayOf(apiCheck.shape({\n\t expression: formlyExpression.optional,\n\t listener: formlyExpression\n\t })).optional,\n\t validators: apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t expression: formlyExpression,\n\t message: formlyExpression.optional\n\t }).strict])).optional,\n\t noFormControl: apiCheck.bool.optional,\n\t hide: apiCheck.bool.optional,\n\t hideExpression: formlyExpression.optional,\n\t ngModelAttrs: apiCheck.objectOf(apiCheck.shape({\n\t expression: apiCheck.shape.ifNot(['value', 'attribute', 'bound'], apiCheck.any).optional,\n\t value: apiCheck.shape.ifNot('expression', apiCheck.any).optional,\n\t attribute: apiCheck.shape.ifNot('expression', apiCheck.any).optional,\n\t bound: apiCheck.shape.ifNot('expression', apiCheck.any).optional\n\t }).strict).optional,\n\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional,\n\t optionsTypes: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n\t link: apiCheck.func.optional,\n\t controller: apiCheck.oneOfType([apiCheck.string, apiCheck.func, apiCheck.array]).optional,\n\t validation: apiCheck.shape({\n\t show: nullable(apiCheck.bool).optional,\n\t messages: apiCheck.objectOf(formlyExpression).optional,\n\t errorExistsAndShouldBeVisible: apiCheck.bool.optional\n\t }).optional,\n\t formControl: apiCheck.typeOrArrayOf(apiCheck.object).optional,\n\t value: apiCheck.func.optional,\n\t runExpressions: apiCheck.func.optional,\n\t templateManipulators: templateManipulators.optional,\n\t resetModel: apiCheck.func.optional,\n\t updateInitialValue: apiCheck.func.optional,\n\t initialValue: apiCheck.any.optional,\n\t defaultValue: apiCheck.any.optional\n\t};\n\t\n\tvar formlyFieldOptions = apiCheck.shape(fieldOptionsApiShape).strict;\n\t\n\tvar formOptionsApi = apiCheck.shape({\n\t formState: apiCheck.object.optional,\n\t resetModel: apiCheck.func.optional,\n\t updateInitialValue: apiCheck.func.optional,\n\t removeChromeAutoComplete: apiCheck.bool.optional,\n\t templateManipulators: templateManipulators.optional,\n\t wrapper: specifyWrapperType.optional,\n\t fieldTransform: apiCheck.func.optional,\n\t data: apiCheck.object.optional\n\t}).strict;\n\t\n\tvar fieldGroup = apiCheck.shape({\n\t $$hashKey: apiCheck.any.optional,\n\t key: apiCheck.oneOfType([apiCheck.string, apiCheck.number]).optional,\n\t // danger. Nested field groups wont get api-checked...\n\t fieldGroup: apiCheck.arrayOf(apiCheck.oneOfType([formlyFieldOptions, apiCheck.object])),\n\t className: apiCheck.string.optional,\n\t options: formOptionsApi.optional,\n\t hide: apiCheck.bool.optional,\n\t hideExpression: formlyExpression.optional,\n\t data: apiCheck.object.optional,\n\t model: modelChecker.optional,\n\t form: apiCheck.object.optional,\n\t elementAttributes: apiCheck.objectOf(apiCheck.string).optional\n\t}).strict;\n\t\n\tvar typeOptionsDefaultOptions = _angularFix2['default'].copy(fieldOptionsApiShape);\n\ttypeOptionsDefaultOptions.key = apiCheck.string.optional;\n\t\n\tvar formlyTypeOptions = apiCheck.shape({\n\t name: apiCheck.string,\n\t template: apiCheck.shape.ifNot('templateUrl', apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t templateUrl: apiCheck.shape.ifNot('template', apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n\t controller: apiCheck.oneOfType([apiCheck.func, apiCheck.string, apiCheck.array]).optional,\n\t link: apiCheck.func.optional,\n\t defaultOptions: apiCheck.oneOfType([apiCheck.func, apiCheck.shape(typeOptionsDefaultOptions)]).optional,\n\t 'extends': apiCheck.string.optional,\n\t wrapper: specifyWrapperType.optional,\n\t data: apiCheck.object.optional,\n\t validateOptions: apiCheck.func.optional,\n\t apiCheck: apiCheckProperty.optional,\n\t apiCheckInstance: apiCheckInstanceProperty.optional,\n\t apiCheckFunction: apiCheckFunctionProperty.optional,\n\t apiCheckOptions: apiCheck.object.optional,\n\t overwriteOk: apiCheck.bool.optional\n\t}).strict;\n\t\n\t_angularFix2['default'].extend(apiCheck, {\n\t formlyTypeOptions: formlyTypeOptions, formlyFieldOptions: formlyFieldOptions, formlyExpression: formlyExpression, formlyWrapperType: formlyWrapperType, fieldGroup: fieldGroup, formOptionsApi: formOptionsApi\n\t});\n\t\n\texports['default'] = apiCheck;\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _angularFix = __webpack_require__(1);\n\t\n\tvar _angularFix2 = _interopRequireDefault(_angularFix);\n\t\n\tvar _otherUtils = __webpack_require__(3);\n\t\n\tvar _otherUtils2 = _interopRequireDefault(_otherUtils);\n\t\n\texports['default'] = formlyConfig;\n\t\n\t// @ngInject\n\tfunction formlyConfig(formlyUsabilityProvider, formlyApiCheck) {\n\t var _this2 = this;\n\t\n\t var typeMap = {};\n\t var templateWrappersMap = {};\n\t var defaultWrapperName = 'default';\n\t var _this = this;\n\t var getError = formlyUsabilityProvider.getFormlyError;\n\t\n\t _angularFix2['default'].extend(this, {\n\t setType: setType,\n\t getType: getType,\n\t setWrapper: setWrapper,\n\t getWrapper: getWrapper,\n\t getWrapperByType: getWrapperByType,\n\t removeWrapperByName: removeWrapperByName,\n\t removeWrappersForType: removeWrappersForType,\n\t disableWarnings: false,\n\t extras: {\n\t disableNgModelAttrsManipulator: false,\n\t ngModelAttrsManipulatorPreferUnbound: false,\n\t removeChromeAutoComplete: false,\n\t defaultHideDirective: 'ng-if',\n\t getFieldId: null\n\t },\n\t templateManipulators: {\n\t preWrapper: [],\n\t postWrapper: []\n\t },\n\t $get: function $get() {\n\t return _this2;\n\t }\n\t });\n\t\n\t function setType(options) {\n\t if (_angularFix2['default'].isArray(options)) {\n\t _angularFix2['default'].forEach(options, setType);\n\t } else if (_angularFix2['default'].isObject(options)) {\n\t checkType(options);\n\t if (options['extends']) {\n\t extendTypeOptions(options);\n\t }\n\t typeMap[options.name] = options;\n\t } else {\n\t throw getError('You must provide an object or array for setType. You provided: ' + JSON.stringify(arguments));\n\t }\n\t }\n\t\n\t function checkType(options) {\n\t formlyApiCheck['throw'](formlyApiCheck.formlyTypeOptions, options, {\n\t prefix: 'formlyConfig.setType',\n\t url: 'settype-validation-failed'\n\t });\n\t if (!options.overwriteOk) {\n\t checkOverwrite(options.name, typeMap, options, 'types');\n\t } else {\n\t options.overwriteOk = undefined;\n\t }\n\t }\n\t\n\t function extendTypeOptions(options) {\n\t var extendsType = getType(options['extends'], true, options);\n\t extendTypeControllerFunction(options, extendsType);\n\t extendTypeLinkFunction(options, extendsType);\n\t extendTypeValidateOptionsFunction(options, extendsType);\n\t extendTypeDefaultOptions(options, extendsType);\n\t _otherUtils2['default'].reverseDeepMerge(options, extendsType);\n\t extendTemplate(options, extendsType);\n\t }\n\t\n\t function extendTemplate(options, extendsType) {\n\t if (options.template && extendsType.templateUrl) {\n\t delete options.templateUrl;\n\t } else if (options.templateUrl && extendsType.template) {\n\t delete options.template;\n\t }\n\t }\n\t\n\t function extendTypeControllerFunction(options, extendsType) {\n\t var extendsCtrl = extendsType.controller;\n\t if (!_angularFix2['default'].isDefined(extendsCtrl)) {\n\t return;\n\t }\n\t var optionsCtrl = options.controller;\n\t if (_angularFix2['default'].isDefined(optionsCtrl)) {\n\t options.controller = function ($scope, $controller) {\n\t $controller(extendsCtrl, { $scope: $scope });\n\t $controller(optionsCtrl, { $scope: $scope });\n\t };\n\t options.controller.$inject = ['$scope', '$controller'];\n\t } else {\n\t options.controller = extendsCtrl;\n\t }\n\t }\n\t\n\t function extendTypeLinkFunction(options, extendsType) {\n\t var extendsFn = extendsType.link;\n\t if (!_angularFix2['default'].isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.link;\n\t if (_angularFix2['default'].isDefined(optionsFn)) {\n\t options.link = function () {\n\t extendsFn.apply(undefined, arguments);\n\t optionsFn.apply(undefined, arguments);\n\t };\n\t } else {\n\t options.link = extendsFn;\n\t }\n\t }\n\t\n\t function extendTypeValidateOptionsFunction(options, extendsType) {\n\t var extendsFn = extendsType.validateOptions;\n\t if (!_angularFix2['default'].isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.validateOptions;\n\t var originalDefaultOptions = options.defaultOptions;\n\t if (_angularFix2['default'].isDefined(optionsFn)) {\n\t options.validateOptions = function (opts) {\n\t optionsFn(opts);\n\t var mergedOptions = _angularFix2['default'].copy(opts);\n\t var defaultOptions = originalDefaultOptions;\n\t if (defaultOptions) {\n\t if (_angularFix2['default'].isFunction(defaultOptions)) {\n\t defaultOptions = defaultOptions(mergedOptions);\n\t }\n\t _otherUtils2['default'].reverseDeepMerge(mergedOptions, defaultOptions);\n\t }\n\t extendsFn(mergedOptions);\n\t };\n\t } else {\n\t options.validateOptions = extendsFn;\n\t }\n\t }\n\t\n\t function extendTypeDefaultOptions(options, extendsType) {\n\t var extendsDO = extendsType.defaultOptions;\n\t if (!_angularFix2['default'].isDefined(extendsDO)) {\n\t return;\n\t }\n\t var optionsDO = options.defaultOptions;\n\t var optionsDOIsFn = _angularFix2['default'].isFunction(optionsDO);\n\t var extendsDOIsFn = _angularFix2['default'].isFunction(extendsDO);\n\t if (extendsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(opts) {\n\t var extendsDefaultOptions = extendsDO(opts);\n\t var mergedDefaultOptions = {};\n\t _otherUtils2['default'].reverseDeepMerge(mergedDefaultOptions, opts, extendsDefaultOptions);\n\t var extenderOptionsDefaultOptions = optionsDO;\n\t if (optionsDOIsFn) {\n\t extenderOptionsDefaultOptions = extenderOptionsDefaultOptions(mergedDefaultOptions);\n\t }\n\t _otherUtils2['default'].reverseDeepMerge(extendsDefaultOptions, extenderOptionsDefaultOptions);\n\t return extendsDefaultOptions;\n\t };\n\t } else if (optionsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(opts) {\n\t var newDefaultOptions = {};\n\t _otherUtils2['default'].reverseDeepMerge(newDefaultOptions, opts, extendsDO);\n\t return optionsDO(newDefaultOptions);\n\t };\n\t }\n\t }\n\t\n\t function getType(name, throwError, errorContext) {\n\t if (!name) {\n\t return undefined;\n\t }\n\t var type = typeMap[name];\n\t if (!type && throwError === true) {\n\t throw getError('There is no type by the name of \"' + name + '\": ' + JSON.stringify(errorContext));\n\t } else {\n\t return type;\n\t }\n\t }\n\t\n\t function setWrapper(_x, _x2) {\n\t var _again = true;\n\t\n\t _function: while (_again) {\n\t var options = _x,\n\t name = _x2;\n\t _again = false;\n\t\n\t if (_angularFix2['default'].isArray(options)) {\n\t return options.map(function (wrapperOptions) {\n\t return setWrapper(wrapperOptions);\n\t });\n\t } else if (_angularFix2['default'].isObject(options)) {\n\t options.types = getOptionsTypes(options);\n\t options.name = getOptionsName(options, name);\n\t checkWrapperAPI(options);\n\t templateWrappersMap[options.name] = options;\n\t return options;\n\t } else if (_angularFix2['default'].isString(options)) {\n\t _x = {\n\t template: options,\n\t name: name\n\t };\n\t _again = true;\n\t continue _function;\n\t }\n\t }\n\t }\n\t\n\t function getOptionsTypes(options) {\n\t if (_angularFix2['default'].isString(options.types)) {\n\t return [options.types];\n\t }\n\t if (!_angularFix2['default'].isDefined(options.types)) {\n\t return [];\n\t } else {\n\t return options.types;\n\t }\n\t }\n\t\n\t function getOptionsName(options, name) {\n\t return options.name || name || options.types.join(' ') || defaultWrapperName;\n\t }\n\t\n\t function checkWrapperAPI(options) {\n\t formlyUsabilityProvider.checkWrapper(options);\n\t if (options.template) {\n\t formlyUsabilityProvider.checkWrapperTemplate(options.template, options);\n\t }\n\t if (!options.overwriteOk) {\n\t checkOverwrite(options.name, templateWrappersMap, options, 'templateWrappers');\n\t } else {\n\t delete options.overwriteOk;\n\t }\n\t checkWrapperTypes(options);\n\t }\n\t\n\t function checkWrapperTypes(options) {\n\t var shouldThrow = !_angularFix2['default'].isArray(options.types) || !options.types.every(_angularFix2['default'].isString);\n\t if (shouldThrow) {\n\t throw getError('Attempted to create a template wrapper with types that is not a string or an array of strings');\n\t }\n\t }\n\t\n\t function checkOverwrite(property, object, newValue, objectName) {\n\t if (object.hasOwnProperty(property)) {\n\t warn(['Attempting to overwrite ' + property + ' on ' + objectName + ' which is currently', '' + JSON.stringify(object[property]) + ' with ' + JSON.stringify(newValue), 'To supress this warning, specify the property \"overwriteOk: true\"'].join(' '));\n\t }\n\t }\n\t\n\t function getWrapper(name) {\n\t return templateWrappersMap[name || defaultWrapperName];\n\t }\n\t\n\t function getWrapperByType(type) {\n\t /* jshint maxcomplexity:6 */\n\t var wrappers = [];\n\t for (var name in templateWrappersMap) {\n\t if (templateWrappersMap.hasOwnProperty(name)) {\n\t if (templateWrappersMap[name].types && templateWrappersMap[name].types.indexOf(type) !== -1) {\n\t wrappers.push(templateWrappersMap[name]);\n\t }\n\t }\n\t }\n\t return wrappers;\n\t }\n\t\n\t function removeWrapperByName(name) {\n\t var wrapper = templateWrappersMap[name];\n\t delete templateWrappersMap[name];\n\t return wrapper;\n\t }\n\t\n\t function removeWrappersForType(type) {\n\t var wrappers = getWrapperByType(type);\n\t if (!wrappers) {\n\t return undefined;\n\t }\n\t if (!_angularFix2['default'].isArray(wrappers)) {\n\t return removeWrapperByName(wrappers.name);\n\t } else {\n\t wrappers.forEach(function (wrapper) {\n\t return removeWrapperByName(wrapper.name);\n\t });\n\t return wrappers;\n\t }\n\t }\n\t\n\t function warn() {\n\t if (!_this.disableWarnings) {\n\t /* eslint no-console:0 */\n\t console.warn.apply(console, arguments);\n\t }\n\t }\n\t}\n\tformlyConfig.$inject = [\"formlyUsabilityProvider\", \"formlyApiCheck\"];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _angularFix = __webpack_require__(1);\n\t\n\tvar _angularFix2 = _interopRequireDefault(_angularFix);\n\t\n\texports['default'] = formlyUsability;\n\t\n\t// @ngInject\n\tfunction formlyUsability(formlyApiCheck, formlyErrorAndWarningsUrlPrefix) {\n\t var _this = this;\n\t\n\t _angularFix2['default'].extend(this, {\n\t getFormlyError: getFormlyError,\n\t getFieldError: getFieldError,\n\t checkWrapper: checkWrapper,\n\t checkWrapperTemplate: checkWrapperTemplate,\n\t getErrorMessage: getErrorMessage,\n\t $get: function $get() {\n\t return _this;\n\t }\n\t });\n\t\n\t function getFieldError(errorInfoSlug, message, field) {\n\t if (arguments.length < 3) {\n\t field = message;\n\t message = errorInfoSlug;\n\t errorInfoSlug = null;\n\t }\n\t return new Error(getErrorMessage(errorInfoSlug, message) + (' Field definition: ' + _angularFix2['default'].toJson(field)));\n\t }\n\t\n\t function getFormlyError(errorInfoSlug, message) {\n\t if (!message) {\n\t message = errorInfoSlug;\n\t errorInfoSlug = null;\n\t }\n\t return new Error(getErrorMessage(errorInfoSlug, message));\n\t }\n\t\n\t function getErrorMessage(errorInfoSlug, message) {\n\t var url = '';\n\t if (errorInfoSlug !== null) {\n\t url = '' + formlyErrorAndWarningsUrlPrefix + '' + errorInfoSlug;\n\t }\n\t return 'Formly Error: ' + message + '. ' + url;\n\t }\n\t\n\t function checkWrapper(wrapper) {\n\t formlyApiCheck['throw'](formlyApiCheck.formlyWrapperType, wrapper, {\n\t prefix: 'formlyConfig.setWrapper',\n\t urlSuffix: 'setwrapper-validation-failed'\n\t });\n\t }\n\t\n\t function checkWrapperTemplate(template, additionalInfo) {\n\t var formlyTransclude = '';\n\t if (template.indexOf(formlyTransclude) === -1) {\n\t throw getFormlyError('Template wrapper templates must use \"' + formlyTransclude + '\" somewhere in them. ' + ('This one does not have \"\" in it: ' + template) + '\\n' + ('Additional information: ' + JSON.stringify(additionalInfo)));\n\t }\n\t }\n\t}\n\tformlyUsability.$inject = [\"formlyApiCheck\", \"formlyErrorAndWarningsUrlPrefix\"];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports[\"default\"] = formlyValidationMessages;\n\t\n\t// @ngInject\n\tfunction formlyValidationMessages() {\n\t\n\t var validationMessages = {\n\t addTemplateOptionValueMessage: addTemplateOptionValueMessage,\n\t addStringMessage: addStringMessage,\n\t messages: {}\n\t };\n\t\n\t return validationMessages;\n\t\n\t function addTemplateOptionValueMessage(name, prop, prefix, suffix, alternate) {\n\t validationMessages.messages[name] = templateOptionValue(prop, prefix, suffix, alternate);\n\t }\n\t\n\t function addStringMessage(name, string) {\n\t validationMessages.messages[name] = function () {\n\t return string;\n\t };\n\t }\n\t\n\t function templateOptionValue(prop, prefix, suffix, alternate) {\n\t return function getValidationMessage(viewValue, modelValue, scope) {\n\t if (scope.options.templateOptions[prop]) {\n\t return \"\" + prefix + \" \" + scope.options.templateOptions[prop] + \" \" + suffix;\n\t } else {\n\t return alternate;\n\t }\n\t };\n\t }\n\t}\n\tmodule.exports = exports[\"default\"];\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _angularFix = __webpack_require__(1);\n\t\n\tvar _angularFix2 = _interopRequireDefault(_angularFix);\n\t\n\texports['default'] = addCustomTags;\n\t\n\t// @ngInject\n\tfunction addCustomTags($document) {\n\t if ($document && $document.get) {\n\t (function () {\n\t // IE8 check ->\n\t // http://stackoverflow.com/questions/10964966/detect-ie-version-prior-to-v9-in-javascript/10965203#10965203\n\t var document = $document.get(0);\n\t var div = document.createElement('div');\n\t div.innerHTML = '';\n\t var isIeLessThan9 = div.getElementsByTagName('i').length === 1;\n\t\n\t if (isIeLessThan9) {\n\t // add the custom elements that we need for formly\n\t var customElements = ['formly-field', 'formly-form', 'formly-custom-validation', 'formly-focus', 'formly-transpose'];\n\t _angularFix2['default'].forEach(customElements, function (el) {\n\t document.createElement(el);\n\t });\n\t }\n\t })();\n\t }\n\t}\n\taddCustomTags.$inject = [\"$document\"];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _angularFix = __webpack_require__(1);\n\t\n\tvar _angularFix2 = _interopRequireDefault(_angularFix);\n\t\n\texports['default'] = addFormlyNgModelAttrsManipulator;\n\t\n\t// @ngInject\n\tfunction addFormlyNgModelAttrsManipulator(formlyConfig, $interpolate) {\n\t if (formlyConfig.extras.disableNgModelAttrsManipulator) {\n\t return;\n\t }\n\t formlyConfig.templateManipulators.preWrapper.push(ngModelAttrsManipulator);\n\t\n\t function ngModelAttrsManipulator(template, options, scope) {\n\t /* jshint maxcomplexity:6 */\n\t var el = document.createElement('div');\n\t var data = options.data;\n\t if (data.skipNgModelAttrsManipulator === true) {\n\t return template;\n\t }\n\t el.innerHTML = template;\n\t var modelNodes = el.querySelectorAll('[ng-model], [data-ng-model]');\n\t if (!modelNodes || !modelNodes.length) {\n\t return template;\n\t }\n\t\n\t addIfNotPresent(modelNodes, 'id', scope.id);\n\t addIfNotPresent(modelNodes, 'name', scope.name || scope.id);\n\t\n\t addValidation();\n\t addModelOptions();\n\t addTemplateOptionsAttrs();\n\t\n\t return el.innerHTML;\n\t\n\t function addValidation() {\n\t if (_angularFix2['default'].isDefined(options.validators) || _angularFix2['default'].isDefined(options.validation.messages)) {\n\t addIfNotPresent(modelNodes, 'formly-custom-validation', '');\n\t }\n\t }\n\t\n\t function addModelOptions() {\n\t if (_angularFix2['default'].isDefined(options.modelOptions)) {\n\t addIfNotPresent(modelNodes, 'ng-model-options', 'options.modelOptions');\n\t if (options.modelOptions.getterSetter) {\n\t _angularFix2['default'].forEach(modelNodes, function (node) {\n\t node.setAttribute('ng-model', 'options.value');\n\t });\n\t }\n\t }\n\t }\n\t\n\t function addTemplateOptionsAttrs() {\n\t if (!options.templateOptions && !options.expressionProperties) {\n\t // no need to run these if there are no templateOptions or expressionProperties\n\t return;\n\t }\n\t var to = options.templateOptions || {};\n\t var ep = options.expressionProperties || {};\n\t\n\t var ngModelAttributes = getBuiltInAttributes();\n\t\n\t // extend with the user's specifications winning\n\t _angularFix2['default'].extend(ngModelAttributes, options.ngModelAttrs);\n\t\n\t // Feel free to make this more simple :-)\n\t _angularFix2['default'].forEach(ngModelAttributes, function (val, name) {\n\t /* eslint complexity:[2, 14] */\n\t var attrVal = undefined;\n\t var attrName = undefined;\n\t var ref = 'options.templateOptions[\\'' + name + '\\']';\n\t var toVal = to[name];\n\t var epVal = getEpValue(ep, name);\n\t\n\t var inTo = _angularFix2['default'].isDefined(toVal);\n\t var inEp = _angularFix2['default'].isDefined(epVal);\n\t if (val.value) {\n\t // I realize this looks backwards, but it's right, trust me...\n\t attrName = val.value;\n\t attrVal = name;\n\t } else if (val.expression && inTo) {\n\t attrName = val.expression;\n\t if (_angularFix2['default'].isString(to[name])) {\n\t attrVal = '$eval(' + ref + ')';\n\t } else if (_angularFix2['default'].isFunction(to[name])) {\n\t attrVal = '' + ref + '(model[options.key], options, this, $event)';\n\t } else {\n\t throw new Error('options.templateOptions.' + name + ' must be a string or function: ' + JSON.stringify(options));\n\t }\n\t } else if (val.bound && inEp) {\n\t attrName = val.bound;\n\t attrVal = ref;\n\t } else if ((val.attribute || val.boolean) && inEp) {\n\t attrName = val.attribute || val.boolean;\n\t attrVal = '' + $interpolate.startSymbol() + '' + ref + '' + $interpolate.endSymbol();\n\t } else if (val.attribute && inTo) {\n\t attrName = val.attribute;\n\t attrVal = toVal;\n\t } else if (val.boolean) {\n\t if (inTo && !inEp && toVal) {\n\t attrName = val.boolean;\n\t attrVal = true;\n\t } else {}\n\t } else if (val.bound && inTo) {\n\t attrName = val.bound;\n\t attrVal = ref;\n\t }\n\t\n\t if (_angularFix2['default'].isDefined(attrName) && _angularFix2['default'].isDefined(attrVal)) {\n\t addIfNotPresent(modelNodes, attrName, attrVal);\n\t }\n\t });\n\t }\n\t }\n\t\n\t // Utility functions\n\t function getBuiltInAttributes() {\n\t var ngModelAttributes = {\n\t focus: {\n\t attribute: 'formly-focus'\n\t }\n\t };\n\t var boundOnly = [];\n\t var bothBooleanAndBound = ['required', 'disabled'];\n\t var bothAttributeAndBound = ['pattern', 'minlength'];\n\t var expressionOnly = ['change', 'keydown', 'keyup', 'keypress', 'click', 'focus', 'blur'];\n\t var attributeOnly = ['placeholder', 'min', 'max', 'tabindex', 'type'];\n\t if (formlyConfig.extras.ngModelAttrsManipulatorPreferUnbound) {\n\t bothAttributeAndBound.push('maxlength');\n\t } else {\n\t boundOnly.push('maxlength');\n\t }\n\t\n\t _angularFix2['default'].forEach(boundOnly, function (item) {\n\t ngModelAttributes[item] = { bound: 'ng-' + item };\n\t });\n\t\n\t _angularFix2['default'].forEach(bothBooleanAndBound, function (item) {\n\t ngModelAttributes[item] = { boolean: item, bound: 'ng-' + item };\n\t });\n\t\n\t _angularFix2['default'].forEach(bothAttributeAndBound, function (item) {\n\t ngModelAttributes[item] = { attribute: item, bound: 'ng-' + item };\n\t });\n\t\n\t _angularFix2['default'].forEach(expressionOnly, function (item) {\n\t var propName = 'on' + item.substr(0, 1).toUpperCase() + item.substr(1);\n\t ngModelAttributes[propName] = { expression: 'ng-' + item };\n\t });\n\t\n\t _angularFix2['default'].forEach(attributeOnly, function (item) {\n\t ngModelAttributes[item] = { attribute: item };\n\t });\n\t return ngModelAttributes;\n\t }\n\t\n\t function getEpValue(ep, name) {\n\t return ep['templateOptions.' + name] || ep['templateOptions[\\'' + name + '\\']'] || ep['templateOptions[\"' + name + '\"]'];\n\t }\n\t\n\t function addIfNotPresent(nodes, attr, val) {\n\t _angularFix2['default'].forEach(nodes, function (node) {\n\t if (!node.getAttribute(attr)) {\n\t node.setAttribute(attr, val);\n\t }\n\t });\n\t }\n\t}\n\taddFormlyNgModelAttrsManipulator.$inject = [\"formlyConfig\", \"$interpolate\"];\n\tmodule.exports = exports['default'];\n\n\t/* eslint no-empty:0 */\n\t// empty to illustrate that a boolean will not be added via val.bound\n\t// if you want it added via val.bound, then put it in expressionProperties\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\t\n\tvar _otherUtils = __webpack_require__(3);\n\t\n\tvar _otherUtils2 = _interopRequireDefault(_otherUtils);\n\t\n\texports['default'] = formlyUtil;\n\t\n\t// @ngInject\n\tfunction formlyUtil() {\n\t return _otherUtils2['default'];\n\t}\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, '__esModule', {\n\t value: true\n\t});\n\t\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; return arr2; } else { return Array.from(arr); } }\n\t\n\texports['default'] = formlyWarn;\n\t\n\t// @ngInject\n\tfunction formlyWarn(formlyConfig, formlyErrorAndWarningsUrlPrefix, $log) {\n\t return function warn() {\n\t if (!formlyConfig.disableWarnings) {\n\t var args = Array.prototype.slice.call(arguments);\n\t var warnInfoSlug = args.shift();\n\t args.unshift('Formly Warning:');\n\t args.push('' + formlyErrorAndWarningsUrlPrefix + '' + warnInfoSlug);\n\t $log.warn.apply($log, _toConsumableArray(args));\n\t }\n\t };\n\t}\n\tformlyWarn.$inject = [\"formlyConfig\", \"formlyErrorAndWarningsUrlPrefix\", \"$log\"];\n\tmodule.exports = exports['default'];\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_17__;\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_18__;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** dist/formly.min.js\n **/"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 686cb09c15fc8834efc4\n **/","import index from './index.common';\nexport default index;\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./index.js\n **/","// some versions of angular don't export the angular module properly,\n// so we get it from window in this case.\nvar angular = require('angular');\n\n/* istanbul ignore next */\nif (!angular.version) {\n angular = window.angular;\n}\nexport default angular;\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./angular-fix/index.js\n **/","import angular from 'angular-fix';\n\nexport default {formlyEval, getFieldId, reverseDeepMerge, findByNodeName, arrayify, extendFunction};\n\nfunction formlyEval(scope, expression, $modelValue, $viewValue, extraLocals) {\n if (angular.isFunction(expression)) {\n return expression($viewValue, $modelValue, scope, extraLocals);\n } else {\n return scope.$eval(expression, angular.extend({$viewValue, $modelValue}, extraLocals));\n }\n}\n\nfunction getFieldId(formId, options, index) {\n if (options.id) {\n return options.id;\n }\n var type = options.type;\n if (!type && options.template) {\n type = 'template';\n } else if (!type && options.templateUrl) {\n type = 'templateUrl';\n }\n\n return [formId, type, options.key, index].join('_');\n}\n\n\nfunction reverseDeepMerge(dest) {\n angular.forEach(arguments, (src, index) => {\n if (!index) {\n return;\n }\n angular.forEach(src, (val, prop) => {\n if (!angular.isDefined(dest[prop])) {\n dest[prop] = angular.copy(val);\n } else if (objAndSameType(dest[prop], val)) {\n reverseDeepMerge(dest[prop], val);\n }\n });\n });\n}\n\nfunction objAndSameType(obj1, obj2) {\n return angular.isObject(obj1) && angular.isObject(obj2) &&\n Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2);\n}\n\n// recurse down a node tree to find a node with matching nodeName, for custom tags jQuery.find doesn't work in IE8\nfunction findByNodeName(el, nodeName) {\n if (!el.prop) { // not a jQuery or jqLite object -> wrap it\n el = angular.element(el);\n }\n\n if (el.prop('nodeName') === nodeName.toUpperCase()) {\n return el;\n }\n\n var c = el.children();\n for(var i = 0; c && i < c.length; i++) {\n var node = findByNodeName(c[i], nodeName);\n if (node) {\n return node;\n }\n }\n}\n\n\nfunction arrayify(obj) {\n if (obj && !angular.isArray(obj)) {\n obj = [obj];\n } else if (!obj) {\n obj = [];\n }\n return obj;\n}\n\n\nfunction extendFunction(...fns) {\n return function extendedFunction() {\n var args = arguments;\n fns.forEach(fn => fn.apply(null, args));\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./other/utils.js\n **/","import angular from 'angular-fix';\nexport default formlyCustomValidation;\n\n// @ngInject\nfunction formlyCustomValidation(formlyUtil, $q) {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: function formlyCustomValidationLink(scope, el, attrs, ctrl) {\n const opts = scope.options;\n if (opts.validators) {\n checkValidators(opts.validators);\n }\n opts.validation.messages = opts.validation.messages || {};\n angular.forEach(opts.validation.messages, (message, key) => {\n opts.validation.messages[key] = () => {\n return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n };\n });\n\n\n var useNewValidatorsApi = ctrl.hasOwnProperty('$validators') && !attrs.hasOwnProperty('useParsers');\n angular.forEach(opts.validators, function addValidatorToPipeline(validator, name) {\n var message = validator.message;\n if (message) {\n opts.validation.messages[name] = () => {\n return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n };\n }\n validator = angular.isObject(validator) ? validator.expression : validator;\n var isPossiblyAsync = !angular.isString(validator);\n if (useNewValidatorsApi) {\n setupWithValidators();\n } else {\n setupWithParsers();\n }\n\n function setupWithValidators() {\n var validatorCollection = isPossiblyAsync ? '$asyncValidators' : '$validators';\n ctrl[validatorCollection][name] = function evalValidity(modelValue, viewValue) {\n var value = formlyUtil.formlyEval(scope, validator, modelValue, viewValue);\n if (isPossiblyAsync) {\n return isPromiseLike(value) ? value : value ? $q.when(value) : $q.reject(value);\n } else {\n return value;\n }\n };\n }\n\n function setupWithParsers() {\n let inFlightValidator;\n ctrl.$parsers.unshift(function evalValidityOfParser(viewValue) {\n var isValid = formlyUtil.formlyEval(scope, validator, ctrl.$modelValue, viewValue);\n if (isPromiseLike(isValid)) {\n ctrl.$pending = ctrl.$pending || {};\n ctrl.$pending[name] = true;\n inFlightValidator = isValid;\n isValid.then(() => {\n if (inFlightValidator === isValid) {\n ctrl.$setValidity(name, true);\n }\n }).catch(() => {\n if (inFlightValidator === isValid) {\n ctrl.$setValidity(name, false);\n }\n }).finally(() => {\n if (Object.keys(ctrl.$pending).length === 1) {\n delete ctrl.$pending;\n } else {\n delete ctrl.$pending[name];\n }\n });\n } else {\n ctrl.$setValidity(name, isValid);\n }\n return viewValue;\n });\n }\n });\n }\n };\n\n function isPromiseLike(obj) {\n return obj && angular.isFunction(obj.then);\n }\n\n function checkValidators(validators) {\n var allowedProperties = ['expression', 'message'];\n var validatorsWithExtraProps = {};\n angular.forEach(validators, (validator, name) => {\n if (angular.isString(validator)) {\n return;\n }\n var extraProps = [];\n angular.forEach(validator, (v, key) => {\n if (allowedProperties.indexOf(key) === -1) {\n extraProps.push(key);\n }\n });\n if (extraProps.length) {\n validatorsWithExtraProps[name] = extraProps;\n }\n });\n if (Object.keys(validatorsWithExtraProps).length) {\n throw new Error([\n `Validators are only allowed to be functions or objects that have ${allowedProperties.join(', ')}.`,\n `You provided some extra properties: ${JSON.stringify(validatorsWithExtraProps)}`\n ].join(' '));\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./directives/formly-custom-validation.js\n **/","import angular from 'angular-fix';\n\nexport default formlyField;\n\n/**\n * @ngdoc directive\n * @name formlyField\n * @restrict AE\n */\n// @ngInject\nfunction formlyField($http, $q, $compile, $templateCache, $interpolate, formlyConfig, formlyValidationMessages,\n formlyApiCheck, formlyUtil, formlyUsability, formlyWarn) {\n const {arrayify} = formlyUtil;\n\n return {\n restrict: 'AE',\n transclude: true,\n scope: {\n options: '=',\n model: '=',\n formId: '@', // TODO remove formId in a breaking release\n index: '=?',\n fields: '=?',\n formState: '=?',\n formOptions: '=?',\n form: '=?' // TODO require form in a breaking release\n },\n controller: FormlyFieldController,\n link: fieldLink\n };\n\n\n // @ngInject\n function FormlyFieldController($scope, $timeout, $parse, $controller) {\n /* eslint max-statements:[2, 31] */\n if ($scope.options.fieldGroup) {\n setupFieldGroup();\n return;\n }\n\n var fieldType = getFieldType($scope.options);\n simplifyLife($scope.options);\n mergeFieldOptionsWithTypeDefaults($scope.options, fieldType);\n extendOptionsWithDefaults($scope.options, $scope.index);\n checkApi($scope.options);\n // set field id to link labels and fields\n\n // initalization\n setFieldIdAndName();\n setDefaultValue();\n setInitialValue();\n runExpressions();\n addModelWatcher($scope, $scope.options);\n addValidationMessages($scope.options);\n invokeControllers($scope, $scope.options, fieldType);\n\n // function definitions\n function runExpressions() {\n // must run on next tick to make sure that the current value is correct.\n $timeout(function runExpressionsOnNextTick() {\n var field = $scope.options;\n var currentValue = valueGetterSetter();\n angular.forEach(field.expressionProperties, function runExpression(expression, prop) {\n var setter = $parse(prop).assign;\n var promise = $q.when(formlyUtil.formlyEval($scope, expression, currentValue, currentValue));\n promise.then(function setFieldValue(value) {\n setter(field, value);\n });\n });\n });\n }\n\n function valueGetterSetter(newVal) {\n if (!$scope.model || !$scope.options.key) {\n return undefined;\n }\n if (angular.isDefined(newVal)) {\n $scope.model[$scope.options.key] = newVal;\n }\n return $scope.model[$scope.options.key];\n }\n\n function simplifyLife(options) {\n // add a few empty objects (if they don't already exist) so you don't have to undefined check everywhere\n formlyUtil.reverseDeepMerge(options, {\n data: {},\n templateOptions: {},\n validation: {}\n });\n // create $scope.to so template authors can reference to instead of $scope.options.templateOptions\n $scope.to = $scope.options.templateOptions;\n $scope.formOptions = $scope.formOptions || {};\n }\n\n function setFieldIdAndName() {\n if (angular.isFunction(formlyConfig.extras.getFieldId)) {\n $scope.id = formlyConfig.extras.getFieldId($scope.options, $scope.model, $scope);\n } else {\n const formName = ($scope.form && $scope.form.$name) || $scope.formId;\n $scope.id = formlyUtil.getFieldId(formName, $scope.options, $scope.index);\n }\n $scope.options.id = $scope.id;\n $scope.name = $scope.options.name || $scope.options.id;\n $scope.options.name = $scope.name;\n }\n\n function setDefaultValue() {\n if (angular.isDefined($scope.options.defaultValue) && !angular.isDefined($scope.model[$scope.options.key])) {\n $scope.model[$scope.options.key] = $scope.options.defaultValue;\n }\n }\n\n function setInitialValue() {\n $scope.options.initialValue = $scope.model && $scope.model[$scope.options.key];\n }\n\n function mergeFieldOptionsWithTypeDefaults(options, type) {\n if (type) {\n mergeOptions(options, type.defaultOptions);\n }\n var properOrder = arrayify(options.optionsTypes).reverse(); // so the right things are overridden\n angular.forEach(properOrder, typeName => {\n mergeOptions(options, formlyConfig.getType(typeName, true, options).defaultOptions);\n });\n }\n\n function mergeOptions(options, extraOptions) {\n if (extraOptions) {\n if (angular.isFunction(extraOptions)) {\n extraOptions = extraOptions(options);\n }\n formlyUtil.reverseDeepMerge(options, extraOptions);\n }\n }\n\n function extendOptionsWithDefaults(options, index) {\n const key = options.key || index || 0;\n angular.extend(options, {\n // attach the key in case the formly-field directive is used directly\n key,\n value: valueGetterSetter,\n runExpressions,\n resetModel,\n updateInitialValue\n });\n }\n\n // initialization functions\n function addModelWatcher(scope, options) {\n if (options.model) {\n scope.$watch('options.model', runExpressions, true);\n }\n }\n\n function resetModel() {\n $scope.model[$scope.options.key] = $scope.options.initialValue;\n if ($scope.options.formControl) {\n if(angular.isArray($scope.options.formControl)){\n angular.forEach($scope.options.formControl, function(formControl){\n resetFormControl(formControl, true);\n });\n } else {\n resetFormControl($scope.options.formControl);\n }\n }\n }\n\n function resetFormControl(formControl, isMultiNgModel){\n if(!isMultiNgModel){\n formControl.$setViewValue($scope.model[$scope.options.key]);\n }\n\n formControl.$render();\n formControl.$setUntouched();\n formControl.$setPristine();\n\n // To prevent breaking change requiring a digest to reset $viewModel\n if(!$scope.$root.$$phase){\n $scope.$digest();\n }\n }\n\n function updateInitialValue() {\n $scope.options.initialValue = $scope.model[$scope.options.key];\n }\n\n function addValidationMessages(options) {\n options.validation.messages = options.validation.messages || {};\n angular.forEach(formlyValidationMessages.messages, function createFunctionForMessage(expression, name) {\n if (!options.validation.messages[name]) {\n options.validation.messages[name] = function evaluateMessage(viewValue, modelValue, scope) {\n return formlyUtil.formlyEval(scope, expression, modelValue, viewValue);\n };\n }\n });\n }\n\n function invokeControllers(scope, options = {}, type = {}) {\n angular.forEach([type.controller, options.controller], controller => {\n if (controller) {\n $controller(controller, {$scope: scope});\n }\n });\n }\n\n function setupFieldGroup() {\n $scope.options.options = $scope.options.options || {};\n $scope.options.options.formState = $scope.formState;\n }\n }\n\n\n\n // link function\n function fieldLink(scope, el) {\n if (scope.options.fieldGroup) {\n setFieldGroupTemplate();\n return;\n }\n\n addAttributes();\n addClasses();\n\n var type = getFieldType(scope.options);\n var args = arguments;\n var thusly = this;\n var fieldCount = 0;\n const fieldManipulators = getManipulators(scope.options, scope.formOptions);\n getFieldTemplate(scope.options)\n .then(runManipulators(fieldManipulators.preWrapper))\n .then(transcludeInWrappers(scope.options, scope.formOptions))\n .then(runManipulators(fieldManipulators.postWrapper))\n .then(setElementTemplate)\n .then(watchFormControl)\n .then(callLinkFunctions)\n .catch(error => {\n formlyWarn(\n 'there-was-a-problem-setting-the-template-for-this-field',\n 'There was a problem setting the template for this field ',\n scope.options,\n error\n );\n });\n\n function setFieldGroupTemplate() {\n checkFieldGroupApi(scope.options);\n el.addClass('formly-field-group');\n let extraAttributes = '';\n if (scope.options.elementAttributes) {\n extraAttributes = Object.keys(scope.options.elementAttributes).map(key => {\n return `${key}=\"${scope.options.elementAttributes[key]}\"`;\n }).join(' ');\n }\n let modelValue = 'model';\n scope.options.form = scope.form;\n if (scope.options.key) {\n modelValue = `model['${scope.options.key}']`;\n }\n setElementTemplate(`\n \n \n `);\n }\n\n function addAttributes() {\n if (scope.options.elementAttributes) {\n el.attr(scope.options.elementAttributes);\n }\n }\n\n function addClasses() {\n if (scope.options.className) {\n el.addClass(scope.options.className);\n }\n if (scope.options.type) {\n el.addClass(`formly-field-${scope.options.type}`);\n }\n }\n\n function setElementTemplate(templateString) {\n el.html(asHtml(templateString));\n $compile(el.contents())(scope);\n return templateString;\n }\n\n function watchFormControl(templateString) {\n let stopWatchingShowError = angular.noop;\n if (scope.options.noFormControl) {\n return;\n }\n const templateEl = angular.element(`
${templateString}
`);\n const ngModelNodes = templateEl[0].querySelectorAll('[ng-model],[data-ng-model]');\n\n\n if (ngModelNodes) {\n angular.forEach(ngModelNodes, function(ngModelNode) {\n fieldCount++;\n watchFieldNameOrExistence(ngModelNode.getAttribute('name'));\n });\n }\n\n function watchFieldNameOrExistence(name) {\n const nameExpressionRegex = /\\{\\{(.*?)}}/;\n const nameExpression = nameExpressionRegex.exec(name);\n if (nameExpression) {\n name = $interpolate(name)(scope);\n }\n watchFieldExistence(name);\n }\n\n function watchFieldExistence(name) {\n scope.$watch(`form[\"${name}\"]`, function formControlChange(formControl) {\n if (formControl) {\n if(fieldCount > 1){\n if(!scope.options.formControl){\n scope.options.formControl = [];\n }\n scope.options.formControl.push(formControl);\n } else {\n scope.options.formControl = formControl;\n }\n scope.fc = scope.options.formControl; // shortcut for template authors\n stopWatchingShowError();\n addShowMessagesWatcher();\n }\n });\n }\n\n function addShowMessagesWatcher() {\n stopWatchingShowError = scope.$watch(function watchShowValidationChange() {\n const customExpression = formlyConfig.extras.errorExistsAndShouldBeVisibleExpression;\n const {options, fc} = scope;\n if (!fc.$invalid) {\n return false;\n } else if (typeof options.validation.show === 'boolean') {\n return options.validation.show;\n } else if (customExpression) {\n return formlyUtil.formlyEval(scope, customExpression, fc.$modelValue, fc.$viewValue);\n } else {\n let noTouchedButDirty = (angular.isUndefined(fc.$touched) && fc.$dirty);\n return (scope.fc.$touched || noTouchedButDirty);\n }\n }, function onShowValidationChange(show) {\n scope.options.validation.errorExistsAndShouldBeVisible = show;\n scope.showError = show; // shortcut for template authors\n });\n }\n }\n\n function callLinkFunctions() {\n if (type && type.link) {\n type.link.apply(thusly, args);\n }\n if (scope.options.link) {\n scope.options.link.apply(thusly, args);\n }\n }\n\n\n function runManipulators(manipulators) {\n return function runManipulatorsOnTemplate(templateToManipulate) {\n var chain = $q.when(templateToManipulate);\n angular.forEach(manipulators, manipulator => {\n chain = chain.then(template => {\n return $q.when(manipulator(template, scope.options, scope)).then(newTemplate => {\n return angular.isString(newTemplate) ? newTemplate : asHtml(newTemplate);\n });\n });\n });\n return chain;\n };\n }\n }\n\n // sort-of stateless util functions\n function asHtml(el) {\n var wrapper = angular.element('');\n return wrapper.append(el).html();\n }\n\n function getFieldType(options) {\n return options.type && formlyConfig.getType(options.type);\n }\n\n function getManipulators(options, formOptions) {\n let preWrapper = [];\n let postWrapper = [];\n addManipulators(options.templateManipulators);\n addManipulators(formOptions.templateManipulators);\n addManipulators(formlyConfig.templateManipulators);\n return {preWrapper, postWrapper};\n\n function addManipulators(manipulators) {\n /* eslint-disable */ // it doesn't understand this :-(\n const {preWrapper:pre = [], postWrapper:post = []} = (manipulators || {});\n preWrapper = preWrapper.concat(pre);\n postWrapper = postWrapper.concat(post);\n /* eslint-enable */\n }\n }\n\n function getFieldTemplate(options) {\n function fromOptionsOrType(key, fieldType){\n if(angular.isDefined(options[key])){\n return options[key];\n } else if(fieldType && angular.isDefined(fieldType[key])){\n return fieldType[key];\n }\n }\n\n let type = formlyConfig.getType(options.type, true, options);\n let template = fromOptionsOrType('template', type);\n let templateUrl = fromOptionsOrType('templateUrl', type);\n if (angular.isUndefined(template) && !templateUrl) {\n throw formlyUsability.getFieldError(\n 'type-type-has-no-template',\n `Type '${options.type}' has not template. On element:`, options\n );\n }\n\n return getTemplate(templateUrl || template, angular.isUndefined(template), options);\n }\n\n\n function getTemplate(template, isUrl, options) {\n let templatePromise;\n if (angular.isFunction(template)) {\n templatePromise = $q.when(template(options));\n } else {\n templatePromise = $q.when(template);\n }\n\n if (!isUrl) {\n return templatePromise;\n } else {\n let httpOptions = {cache: $templateCache};\n return templatePromise\n .then((url) => $http.get(url, httpOptions))\n .then((response) => response.data)\n .catch(function handleErrorGettingATemplate(error) {\n formlyWarn(\n 'problem-loading-template-for-templateurl',\n 'Problem loading template for ' + template,\n error\n );\n });\n }\n }\n\n function transcludeInWrappers(options, formOptions) {\n let wrapper = getWrapperOption(options, formOptions);\n\n return function transcludeTemplate(template) {\n if (!wrapper.length) {\n return $q.when(template);\n }\n\n wrapper.forEach((aWrapper) => {\n formlyUsability.checkWrapper(aWrapper, options);\n aWrapper.validateOptions && aWrapper.validateOptions(options);\n runApiCheck(aWrapper, options);\n });\n let promises = wrapper.map(w => getTemplate(w.template || w.templateUrl, !w.template));\n return $q.all(promises).then(wrappersTemplates => {\n wrappersTemplates.forEach((wrapperTemplate, index) => {\n formlyUsability.checkWrapperTemplate(wrapperTemplate, wrapper[index]);\n });\n wrappersTemplates.reverse(); // wrapper 0 is wrapped in wrapper 1 and so on...\n let totalWrapper = wrappersTemplates.shift();\n wrappersTemplates.forEach(wrapperTemplate => {\n totalWrapper = doTransclusion(totalWrapper, wrapperTemplate);\n });\n return doTransclusion(totalWrapper, template);\n });\n };\n }\n\n function doTransclusion(wrapper, template) {\n let superWrapper = angular.element(''); // this allows people not have to have a single root in wrappers\n superWrapper.append(wrapper);\n let transcludeEl = superWrapper.find('formly-transclude');\n if (!transcludeEl.length) {\n // try it using our custom find function\n transcludeEl = formlyUtil.findByNodeName(superWrapper, 'formly-transclude');\n }\n transcludeEl.replaceWith(template);\n return superWrapper.html();\n }\n\n function getWrapperOption(options, formOptions) {\n /* eslint complexity:[6, 2] */\n let wrapper = options.wrapper;\n // explicit null means no wrapper\n if (wrapper === null) {\n return [];\n }\n\n // nothing specified means use the default wrapper for the type\n if (!wrapper) {\n // get all wrappers that specify they apply to this type\n wrapper = arrayify(formlyConfig.getWrapperByType(options.type));\n } else {\n wrapper = arrayify(wrapper).map(formlyConfig.getWrapper);\n }\n\n // get all wrappers for that the type specified that it uses.\n var type = formlyConfig.getType(options.type, true, options);\n if (type && type.wrapper) {\n let typeWrappers = arrayify(type.wrapper).map(formlyConfig.getWrapper);\n wrapper = wrapper.concat(typeWrappers);\n }\n\n // add form wrappers\n if (formOptions.wrapper) {\n let formWrappers = arrayify(formOptions.wrapper).map(formlyConfig.getWrapper);\n wrapper = wrapper.concat(formWrappers);\n }\n\n // add the default wrapper last\n var defaultWrapper = formlyConfig.getWrapper();\n if (defaultWrapper) {\n wrapper.push(defaultWrapper);\n }\n return wrapper;\n }\n\n function checkApi(options) {\n formlyApiCheck.throw(formlyApiCheck.formlyFieldOptions, options, {\n prefix: 'formly-field directive',\n url: 'formly-field-directive-validation-failed'\n });\n // validate with the type\n const type = options.type && formlyConfig.getType(options.type);\n if (type) {\n if (type.validateOptions) {\n type.validateOptions(options);\n }\n runApiCheck(type, options);\n }\n if (options.expressionProperties && options.expressionProperties.hide) {\n formlyWarn(\n 'dont-use-expressionproperties.hide-use-hideexpression-instead',\n 'You have specified `hide` in `expressionProperties`. Use `hideExpression` instead',\n options\n );\n }\n }\n\n function checkFieldGroupApi(options) {\n formlyApiCheck.throw(formlyApiCheck.fieldGroup, options, {\n prefix: 'formly-field directive',\n url: 'formly-field-directive-validation-failed'\n });\n }\n\n function runApiCheck({apiCheck, apiCheckInstance, apiCheckFunction, apiCheckOptions}, options) {\n if (!apiCheck) {\n return;\n }\n const instance = apiCheckInstance || formlyApiCheck;\n const fn = apiCheckFunction || 'warn';\n const shape = instance.shape(apiCheck);\n instance[fn](shape, options, apiCheckOptions || {\n prefix: `formly-field ${name}`,\n url: formlyApiCheck.config.output.docsBaseUrl + 'formly-field-type-apicheck-failed'\n });\n }\n\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./directives/formly-field.js\n **/","export default formlyFocus;\n\n// @ngInject\nfunction formlyFocus($timeout, $document) {\n return {\n restrict: 'A',\n link: function formlyFocusLink(scope, element, attrs) {\n var previousEl = null;\n var el = element[0];\n var doc = $document[0];\n attrs.$observe('formlyFocus', function respondToFocusExpressionChange(value) {\n if (value === 'true') {\n $timeout(function setElementFocus() {\n previousEl = doc.activeElement;\n el.focus();\n }, ~~attrs.focusWait);\n } else if (value === 'false') {\n if (doc.activeElement === el) {\n el.blur();\n if (attrs.hasOwnProperty('refocus') && previousEl) {\n previousEl.focus();\n }\n }\n }\n });\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./directives/formly-focus.js\n **/","import angular from 'angular-fix';\n\nexport default formlyForm;\n\n/**\n * @ngdoc directive\n * @name formlyForm\n * @restrict E\n */\n// @ngInject\nfunction formlyForm(formlyUsability, formlyWarn, $parse, formlyConfig, $interpolate) {\n var currentFormId = 1;\n return {\n restrict: 'E',\n template: formlyFormGetTemplate,\n replace: true,\n transclude: true,\n scope: {\n fields: '=',\n model: '=',\n form: '=?',\n options: '=?'\n },\n controller: FormlyFormController,\n link: formlyFormLink\n };\n\n function formlyFormGetTemplate(el, attrs) {\n const rootEl = getRootEl();\n const fieldRootEl = getFieldRootEl();\n const formId = `formly_${currentFormId++}`;\n let parentFormAttributes = '';\n if (attrs.hasOwnProperty('isFieldGroup') && el.parent().parent().hasClass('formly')) {\n parentFormAttributes = copyAttributes(el.parent().parent()[0].attributes);\n }\n return `\n <${rootEl} class=\"formly\"\n name=\"${getFormName()}\"\n role=\"form\" ${parentFormAttributes}>\n <${fieldRootEl} formly-field\n ng-repeat=\"field in fields ${getTrackBy()}\"\n ${getHideDirective()}=\"!field.hide\"\n class=\"formly-field\"\n options=\"field\"\n model=\"field.model || model\"\n fields=\"fields\"\n form=\"theFormlyForm\"\n form-id=\"${getFormName()}\"\n form-state=\"options.formState\"\n form-options=\"options\"\n index=\"$index\">\n \n
\n \n `;\n\n function getRootEl() {\n return attrs.rootEl || 'ng-form';\n }\n\n function getFieldRootEl() {\n return attrs.fieldRootEl || 'div';\n }\n\n function getHideDirective() {\n return attrs.hideDirective || formlyConfig.extras.defaultHideDirective || 'ng-if';\n }\n\n function getTrackBy() {\n if (!attrs.trackBy) {\n return '';\n } else {\n return `track by ${attrs.trackBy}`;\n }\n }\n\n function getFormName() {\n let formName = formId;\n const bindName = attrs.bindName;\n if (bindName) {\n if (angular.version.minor < 3) {\n throw formlyUsability.getFormlyError('bind-name attribute on formly-form not allowed in < angular 1.3');\n }\n // we can do a one-time binding here because we know we're in 1.3.x territory\n formName = `${$interpolate.startSymbol()}::'formly_' + ${bindName}${$interpolate.endSymbol()}`;\n }\n return formName;\n }\n\n function copyAttributes(attributes) {\n const excluded = ['model', 'form', 'fields', 'options', 'name', 'role', 'class',\n 'data-model', 'data-form', 'data-fields', 'data-options', 'data-name'];\n const arrayAttrs = [];\n angular.forEach(attributes, ({nodeName, nodeValue}) => {\n if (nodeName !== 'undefined' && excluded.indexOf(nodeName) === -1) {\n arrayAttrs.push(`${toKebabCase(nodeName)}=\"${nodeValue}\"`);\n }\n });\n return arrayAttrs.join(' ');\n }\n }\n\n // @ngInject\n function FormlyFormController($scope, formlyApiCheck, formlyUtil) {\n setupOptions();\n $scope.model = $scope.model || {};\n setupFields();\n\n // watch the model and evaluate watch expressions that depend on it.\n $scope.$watch('model', onModelOrFormStateChange, true);\n if ($scope.options.formState) {\n $scope.$watch('options.formState', onModelOrFormStateChange, true);\n }\n\n function onModelOrFormStateChange() {\n angular.forEach($scope.fields, function runFieldExpressionProperties(field, index) {\n /*jshint -W030 */\n const model = field.model || $scope.model;\n field.runExpressions && field.runExpressions(model);\n if (field.hideExpression) { // can't use hide with expressionProperties reliably\n const val = model[field.key];\n field.hide = evalCloseToFormlyExpression(field.hideExpression, val, field, index);\n }\n });\n }\n\n function setupFields() {\n $scope.fields = $scope.fields || [];\n const fieldTransform = $scope.options.fieldTransform || formlyConfig.extras.fieldTransform;\n\n if (fieldTransform) {\n $scope.fields = fieldTransform($scope.fields, $scope.model, $scope.options, $scope.form);\n if (!$scope.fields) {\n throw formlyUsability.getFormlyError('fieldTransform must return an array of fields');\n }\n }\n\n angular.forEach($scope.fields, initModel); // initializes the model property if set to 'formState'\n angular.forEach($scope.fields, attachKey); // attaches a key based on the index if a key isn't specified\n angular.forEach($scope.fields, setupWatchers); // setup watchers for all fields\n }\n\n\n function setupOptions() {\n formlyApiCheck.throw(\n [formlyApiCheck.formOptionsApi.optional], [$scope.options], {prefix: 'formly-form options check'}\n );\n $scope.options = $scope.options || {};\n $scope.options.formState = $scope.options.formState || {};\n\n angular.extend($scope.options, {\n updateInitialValue,\n resetModel\n });\n\n }\n\n function updateInitialValue() {\n angular.forEach($scope.fields, field => {\n if (isFieldGroup(field)) {\n field.options.updateInitialValue();\n } else {\n field.updateInitialValue();\n }\n });\n }\n\n function resetModel() {\n angular.forEach($scope.fields, field => {\n if (isFieldGroup(field)) {\n field.options.resetModel();\n } else {\n field.resetModel();\n }\n });\n }\n\n function initModel(field) {\n if (angular.isString(field.model)) {\n const expression = field.model;\n const index = $scope.fields.indexOf(field);\n field.model = evalCloseToFormlyExpression(expression, undefined, field, index);\n if (!field.model) {\n throw formlyUsability.getFieldError(\n 'field-model-must-be-initialized',\n 'Field model must be initialized. When specifying a model as a string for a field, the result of the' +\n ' expression must have been initialized ahead of time.',\n field);\n }\n }\n }\n\n function attachKey(field, index) {\n if (!isFieldGroup(field)) {\n field.key = field.key || index || 0;\n }\n }\n\n function setupWatchers(field, index) {\n if (isFieldGroup(field) || !angular.isDefined(field.watcher)) {\n return;\n }\n var watchers = field.watcher;\n if (!angular.isArray(watchers)) {\n watchers = [watchers];\n }\n angular.forEach(watchers, function setupWatcher(watcher) {\n if (!angular.isDefined(watcher.listener)) {\n throw formlyUsability.getFieldError(\n 'all-field-watchers-must-have-a-listener',\n 'All field watchers must have a listener', field\n );\n }\n var watchExpression = getWatchExpression(watcher, field, index);\n var watchListener = getWatchListener(watcher, field, index);\n\n var type = watcher.type || '$watch';\n watcher.stopWatching = $scope[type](watchExpression, watchListener, watcher.watchDeep);\n });\n }\n\n function getWatchExpression(watcher, field, index) {\n var watchExpression = watcher.expression || `model['${field.key}']`;\n if (angular.isFunction(watchExpression)) {\n // wrap the field's watch expression so we can call it with the field as the first arg\n // and the stop function as the last arg as a helper\n var originalExpression = watchExpression;\n watchExpression = function formlyWatchExpression() {\n var args = modifyArgs(watcher, index, ...arguments);\n return originalExpression(...args);\n };\n watchExpression.displayName = `Formly Watch Expression for field for ${field.key}`;\n }\n return watchExpression;\n }\n\n function getWatchListener(watcher, field, index) {\n var watchListener = watcher.listener;\n if (angular.isFunction(watchListener)) {\n // wrap the field's watch listener so we can call it with the field as the first arg\n // and the stop function as the last arg as a helper\n var originalListener = watchListener;\n watchListener = function formlyWatchListener() {\n var args = modifyArgs(watcher, index, ...arguments);\n return originalListener(...args);\n };\n watchListener.displayName = `Formly Watch Listener for field for ${field.key}`;\n }\n return watchListener;\n }\n\n function modifyArgs(watcher, index, ...originalArgs) {\n return [$scope.fields[index], ...originalArgs, watcher.stopWatching];\n }\n\n function evalCloseToFormlyExpression(expression, val, field, index) {\n const extraLocals = getFormlyFieldLikeLocals(field, index);\n return formlyUtil.formlyEval($scope, expression, val, val, extraLocals);\n }\n\n function getFormlyFieldLikeLocals(field, index) {\n // this makes it closer to what a regular formlyExpression would be\n return {\n options: field,\n index: index,\n formState: $scope.options.formState,\n formId: $scope.formId\n };\n }\n }\n\n function formlyFormLink(scope, el, attrs) {\n setFormController();\n fixChromeAutocomplete();\n\n function setFormController() {\n const formId = attrs.name;\n scope.formId = formId;\n scope.theFormlyForm = scope[formId];\n if (attrs.form) {\n const getter = $parse(attrs.form);\n const setter = getter.assign;\n const parentForm = getter(scope.$parent);\n if (parentForm) {\n scope.theFormlyForm = parentForm;\n if (scope[formId]) {\n scope.theFormlyForm.$removeControl(scope[formId]);\n }\n\n // this next line is probably one of the more dangerous things that angular-formly does to improve the\n // API for angular-formly forms. It ensures that the NgModelControllers inside of formly-form will be\n // attached to the form that is passed to formly-form rather than the one that formly-form creates\n // this is necessary because it's confusing to have a step between the form you pass in\n // and the fields in that form. It also is because angular doesn't propagate properties like $submitted down\n // to children forms :-( This line was added to solve this issue:\n // https://github.com/formly-js/angular-formly/issues/287\n // luckily, this is how the formController has been accessed by the NgModelController since angular 1.0.0\n // so I expect it will remain this way for the life of angular 1.x\n el.removeData('$formController');\n } else {\n setter(scope.$parent, scope[formId]);\n }\n }\n if (!scope.theFormlyForm && !formlyConfig.disableWarnings) {\n /* eslint no-console:0 */\n formlyWarn(\n 'formly-form-has-no-formcontroller',\n 'Your formly-form does not have a `form` property. Many functions of the form (like validation) may not work',\n el,\n scope\n );\n }\n }\n\n /**\n * chrome autocomplete lameness\n * see https://code.google.com/p/chromium/issues/detail?id=468153#c14\n * ლ(ಠ益ಠლ) (╯°□°)╯︵ ┻━┻ (◞‸◟;)\n */\n function fixChromeAutocomplete() {\n const global = formlyConfig.extras.removeChromeAutoComplete === true;\n const offInstance = scope.options && scope.options.removeChromeAutoComplete === false;\n const onInstance = scope.options && scope.options.removeChromeAutoComplete === true;\n if ((global && !offInstance) || onInstance) {\n const input = document.createElement('input');\n input.setAttribute('autocomplete', 'address-level4');\n input.setAttribute('hidden', 'true');\n el[0].appendChild(input);\n }\n\n }\n }\n\n\n // stateless util functions\n function toKebabCase(string) {\n if (string) {\n return string.replace(/([A-Z])/g, $1 => '-' + $1.toLowerCase());\n } else {\n return '';\n }\n }\n\n function isFieldGroup(field) {\n return field && !!field.fieldGroup;\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./directives/formly-form.js\n **/","import angular from 'angular-fix';\n\nimport formlyApiCheck from './providers/formlyApiCheck';\nimport formlyErrorAndWarningsUrlPrefix from './other/docsBaseUrl';\nimport formlyUsability from './providers/formlyUsability';\nimport formlyConfig from './providers/formlyConfig';\nimport formlyValidationMessages from './providers/formlyValidationMessages';\nimport formlyUtil from './services/formlyUtil';\nimport formlyWarn from './services/formlyWarn';\n\nimport formlyCustomValidation from './directives/formly-custom-validation';\nimport formlyField from './directives/formly-field';\nimport formlyFocus from './directives/formly-focus';\nimport formlyForm from './directives/formly-form';\n\nimport formlyNgModelAttrsManipulator from './run/formlyNgModelAttrsManipulator';\nimport formlyCustomTags from './run/formlyCustomTags';\n\nconst ngModuleName = 'formly';\n\nexport default ngModuleName;\n\nconst ngModule = angular.module(ngModuleName, []);\n\nngModule.constant('formlyApiCheck', formlyApiCheck);\nngModule.constant('formlyErrorAndWarningsUrlPrefix', formlyErrorAndWarningsUrlPrefix);\nngModule.constant('formlyVersion', VERSION); // <-- webpack variable\n\nngModule.provider('formlyUsability', formlyUsability);\nngModule.provider('formlyConfig', formlyConfig);\n\nngModule.factory('formlyValidationMessages', formlyValidationMessages);\nngModule.factory('formlyUtil', formlyUtil);\nngModule.factory('formlyWarn', formlyWarn);\n\nngModule.directive('formlyCustomValidation', formlyCustomValidation);\nngModule.directive('formlyField', formlyField);\nngModule.directive('formlyFocus', formlyFocus);\nngModule.directive('formlyForm', formlyForm);\n\nngModule.run(formlyNgModelAttrsManipulator);\nngModule.run(formlyCustomTags);\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./index.common.js\n **/","import angular from 'angular-fix';\nimport apiCheckFactory from 'api-check';\n\nlet apiCheck = apiCheckFactory({\n output: {\n prefix: 'angular-formly:',\n docsBaseUrl: require('../other/docsBaseUrl')\n }\n});\n\nfunction shapeRequiredIfNot(otherProps, propChecker) {\n if (!angular.isArray(otherProps)) {\n otherProps = [otherProps];\n }\n const type = `specified if these are not specified: \\`${otherProps.join(', ')}\\` (otherwise it's optional)`;\n function shapeRequiredIfNotDefinition(prop, propName, location, obj) {\n var propExists = obj && obj.hasOwnProperty(propName);\n var otherPropsExist = otherProps.some(function (otherProp) {\n return obj && obj.hasOwnProperty(otherProp);\n });\n if (!otherPropsExist && !propExists) {\n return apiCheck.utils.getError(propName, location, type);\n } else if (propExists) {\n return propChecker(prop, propName, location, obj);\n }\n }\n shapeRequiredIfNotDefinition.type = type;\n return apiCheck.utils.checkerHelpers.setupChecker(shapeRequiredIfNotDefinition);\n}\n\nfunction nullable(checker) {\n return apiCheck.oneOfType([\n apiCheck.oneOf([null]), checker\n ]);\n}\n\nlet formlyExpression = apiCheck.oneOfType([apiCheck.string, apiCheck.func]);\nlet specifyWrapperType = nullable(apiCheck.typeOrArrayOf(apiCheck.string));\n\nconst apiCheckProperty = apiCheck.objectOf(apiCheck.func);\n\nconst apiCheckInstanceProperty = apiCheck.shape.onlyIf('apiCheck', apiCheck.func.withProperties({\n warn: apiCheck.func,\n throw: apiCheck.func,\n shape: apiCheck.func\n}));\n\nconst apiCheckFunctionProperty = apiCheck.shape.onlyIf('apiCheck', apiCheck.oneOf(['throw', 'warn']));\n\nconst formlyWrapperType = apiCheck.shape({\n name: shapeRequiredIfNot('types', apiCheck.string).optional,\n template: apiCheck.shape.ifNot('templateUrl', apiCheck.string).optional,\n templateUrl: apiCheck.shape.ifNot('template', apiCheck.string).optional,\n types: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n overwriteOk: apiCheck.bool.optional,\n validateOptions: apiCheck.func.optional,\n apiCheck: apiCheckProperty.optional,\n apiCheckInstance: apiCheckInstanceProperty.optional,\n apiCheckFunction: apiCheckFunctionProperty.optional,\n apiCheckOptions: apiCheck.object.optional\n}).strict;\n\nconst expressionProperties = apiCheck.objectOf(apiCheck.oneOfType([\n formlyExpression,\n apiCheck.shape({\n expression: formlyExpression,\n message: formlyExpression.optional\n }).strict\n]));\n\nconst modelChecker = apiCheck.oneOfType([apiCheck.string, apiCheck.object]);\n\nconst templateManipulators = nullable(apiCheck.shape({\n preWrapper: nullable(apiCheck.arrayOf(apiCheck.func)).optional,\n postWrapper: nullable(apiCheck.arrayOf(apiCheck.func)).optional\n}).strict);\n\nlet fieldOptionsApiShape = {\n $$hashKey: apiCheck.any.optional,\n type: apiCheck.shape.ifNot(['template', 'templateUrl'], apiCheck.string).optional,\n template: apiCheck.shape.ifNot(\n ['type', 'templateUrl'],\n apiCheck.oneOfType([apiCheck.string, apiCheck.func])\n ).optional,\n templateUrl: apiCheck.shape.ifNot(\n ['type', 'template'],\n apiCheck.oneOfType([apiCheck.string, apiCheck.func])\n ).optional,\n key: apiCheck.oneOfType([apiCheck.string, apiCheck.number]).optional,\n model: modelChecker.optional,\n className: apiCheck.string.optional,\n id: apiCheck.string.optional,\n name: apiCheck.string.optional,\n expressionProperties: expressionProperties.optional,\n data: apiCheck.object.optional,\n templateOptions: apiCheck.object.optional,\n wrapper: specifyWrapperType.optional,\n modelOptions: apiCheck.shape({\n updateOn: apiCheck.string.optional,\n debounce: apiCheck.oneOfType([\n apiCheck.objectOf(apiCheck.number), apiCheck.number\n ]).optional,\n allowInvalid: apiCheck.bool.optional,\n getterSetter: apiCheck.bool.optional,\n timezone: apiCheck.string.optional\n }).optional,\n watcher: apiCheck.typeOrArrayOf(\n apiCheck.shape({\n expression: formlyExpression.optional,\n listener: formlyExpression\n })\n ).optional,\n validators: apiCheck.objectOf(apiCheck.oneOfType([\n formlyExpression, apiCheck.shape({\n expression: formlyExpression,\n message: formlyExpression.optional\n }).strict\n ])).optional,\n noFormControl: apiCheck.bool.optional,\n hide: apiCheck.bool.optional,\n hideExpression: formlyExpression.optional,\n ngModelAttrs: apiCheck.objectOf(apiCheck.shape({\n expression: apiCheck.shape.ifNot(['value', 'attribute', 'bound'], apiCheck.any).optional,\n value: apiCheck.shape.ifNot('expression', apiCheck.any).optional,\n attribute: apiCheck.shape.ifNot('expression', apiCheck.any).optional,\n bound: apiCheck.shape.ifNot('expression', apiCheck.any).optional\n }).strict).optional,\n elementAttributes: apiCheck.objectOf(apiCheck.string).optional,\n optionsTypes: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n link: apiCheck.func.optional,\n controller: apiCheck.oneOfType([\n apiCheck.string, apiCheck.func, apiCheck.array\n ]).optional,\n validation: apiCheck.shape({\n show: nullable(apiCheck.bool).optional,\n messages: apiCheck.objectOf(formlyExpression).optional,\n errorExistsAndShouldBeVisible: apiCheck.bool.optional\n }).optional,\n formControl: apiCheck.typeOrArrayOf(apiCheck.object).optional,\n value: apiCheck.func.optional,\n runExpressions: apiCheck.func.optional,\n templateManipulators: templateManipulators.optional,\n resetModel: apiCheck.func.optional,\n updateInitialValue: apiCheck.func.optional,\n initialValue: apiCheck.any.optional,\n defaultValue: apiCheck.any.optional\n};\n\n\nlet formlyFieldOptions = apiCheck.shape(fieldOptionsApiShape).strict;\n\n\nconst formOptionsApi = apiCheck.shape({\n formState: apiCheck.object.optional,\n resetModel: apiCheck.func.optional,\n updateInitialValue: apiCheck.func.optional,\n removeChromeAutoComplete: apiCheck.bool.optional,\n templateManipulators: templateManipulators.optional,\n wrapper: specifyWrapperType.optional,\n fieldTransform: apiCheck.func.optional,\n data: apiCheck.object.optional\n}).strict;\n\n\nconst fieldGroup = apiCheck.shape({\n $$hashKey: apiCheck.any.optional,\n key: apiCheck.oneOfType([apiCheck.string, apiCheck.number]).optional,\n // danger. Nested field groups wont get api-checked...\n fieldGroup: apiCheck.arrayOf(apiCheck.oneOfType([formlyFieldOptions, apiCheck.object])),\n className: apiCheck.string.optional,\n options: formOptionsApi.optional,\n hide: apiCheck.bool.optional,\n hideExpression: formlyExpression.optional,\n data: apiCheck.object.optional,\n model: modelChecker.optional,\n form: apiCheck.object.optional,\n elementAttributes: apiCheck.objectOf(apiCheck.string).optional\n}).strict;\n\nlet typeOptionsDefaultOptions = angular.copy(fieldOptionsApiShape);\ntypeOptionsDefaultOptions.key = apiCheck.string.optional;\n\nlet formlyTypeOptions = apiCheck.shape({\n name: apiCheck.string,\n template: apiCheck.shape.ifNot('templateUrl', apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n templateUrl: apiCheck.shape.ifNot('template', apiCheck.oneOfType([apiCheck.string, apiCheck.func])).optional,\n controller: apiCheck.oneOfType([\n apiCheck.func, apiCheck.string, apiCheck.array\n ]).optional,\n link: apiCheck.func.optional,\n defaultOptions: apiCheck.oneOfType([\n apiCheck.func, apiCheck.shape(typeOptionsDefaultOptions)\n ]).optional,\n extends: apiCheck.string.optional,\n wrapper: specifyWrapperType.optional,\n data: apiCheck.object.optional,\n validateOptions: apiCheck.func.optional,\n apiCheck: apiCheckProperty.optional,\n apiCheckInstance: apiCheckInstanceProperty.optional,\n apiCheckFunction: apiCheckFunctionProperty.optional,\n apiCheckOptions: apiCheck.object.optional,\n overwriteOk: apiCheck.bool.optional\n}).strict;\n\nangular.extend(apiCheck, {\n formlyTypeOptions, formlyFieldOptions, formlyExpression, formlyWrapperType, fieldGroup, formOptionsApi\n});\n\nexport default apiCheck;\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./providers/formlyApiCheck.js\n **/","import angular from 'angular-fix';\nimport utils from '../other/utils';\n\nexport default formlyConfig;\n\n// @ngInject\nfunction formlyConfig(formlyUsabilityProvider, formlyApiCheck) {\n\n var typeMap = {};\n var templateWrappersMap = {};\n var defaultWrapperName = 'default';\n var _this = this;\n var getError = formlyUsabilityProvider.getFormlyError;\n\n angular.extend(this, {\n setType,\n getType,\n setWrapper,\n getWrapper,\n getWrapperByType,\n removeWrapperByName,\n removeWrappersForType,\n disableWarnings: false,\n extras: {\n disableNgModelAttrsManipulator: false,\n ngModelAttrsManipulatorPreferUnbound: false,\n removeChromeAutoComplete: false,\n defaultHideDirective: 'ng-if',\n getFieldId: null\n },\n templateManipulators: {\n preWrapper: [],\n postWrapper: []\n },\n $get: () => this\n });\n\n function setType(options) {\n if (angular.isArray(options)) {\n angular.forEach(options, setType);\n } else if (angular.isObject(options)) {\n checkType(options);\n if (options.extends) {\n extendTypeOptions(options);\n }\n typeMap[options.name] = options;\n } else {\n throw getError(`You must provide an object or array for setType. You provided: ${JSON.stringify(arguments)}`);\n }\n }\n\n function checkType(options) {\n formlyApiCheck.throw(formlyApiCheck.formlyTypeOptions, options, {\n prefix: 'formlyConfig.setType',\n url: 'settype-validation-failed'\n });\n if (!options.overwriteOk) {\n checkOverwrite(options.name, typeMap, options, 'types');\n } else {\n options.overwriteOk = undefined;\n }\n }\n\n function extendTypeOptions(options) {\n const extendsType = getType(options.extends, true, options);\n extendTypeControllerFunction(options, extendsType);\n extendTypeLinkFunction(options, extendsType);\n extendTypeValidateOptionsFunction(options, extendsType);\n extendTypeDefaultOptions(options, extendsType);\n utils.reverseDeepMerge(options, extendsType);\n extendTemplate(options, extendsType);\n }\n\n function extendTemplate(options, extendsType){\n if(options.template && extendsType.templateUrl){\n delete options.templateUrl;\n } else if(options.templateUrl && extendsType.template){\n delete options.template;\n }\n }\n\n function extendTypeControllerFunction(options, extendsType) {\n const extendsCtrl = extendsType.controller;\n if (!angular.isDefined(extendsCtrl)) {\n return;\n }\n const optionsCtrl = options.controller;\n if (angular.isDefined(optionsCtrl)) {\n options.controller = function ($scope, $controller) {\n $controller(extendsCtrl, {$scope});\n $controller(optionsCtrl, {$scope});\n };\n options.controller.$inject = ['$scope', '$controller'];\n } else {\n options.controller = extendsCtrl;\n }\n }\n\n function extendTypeLinkFunction(options, extendsType) {\n const extendsFn = extendsType.link;\n if (!angular.isDefined(extendsFn)) {\n return;\n }\n const optionsFn = options.link;\n if (angular.isDefined(optionsFn)) {\n options.link = function () {\n extendsFn(...arguments);\n optionsFn(...arguments);\n };\n } else {\n options.link = extendsFn;\n }\n }\n\n function extendTypeValidateOptionsFunction(options, extendsType) {\n const extendsFn = extendsType.validateOptions;\n if (!angular.isDefined(extendsFn)) {\n return;\n }\n const optionsFn = options.validateOptions;\n const originalDefaultOptions = options.defaultOptions;\n if (angular.isDefined(optionsFn)) {\n options.validateOptions = function (opts) {\n optionsFn(opts);\n let mergedOptions = angular.copy(opts);\n let defaultOptions = originalDefaultOptions;\n if (defaultOptions) {\n if (angular.isFunction(defaultOptions)) {\n defaultOptions = defaultOptions(mergedOptions);\n }\n utils.reverseDeepMerge(mergedOptions, defaultOptions);\n }\n extendsFn(mergedOptions);\n };\n } else {\n options.validateOptions = extendsFn;\n }\n }\n\n function extendTypeDefaultOptions(options, extendsType) {\n const extendsDO = extendsType.defaultOptions;\n if (!angular.isDefined(extendsDO)) {\n return;\n }\n const optionsDO = options.defaultOptions;\n const optionsDOIsFn = angular.isFunction(optionsDO);\n const extendsDOIsFn = angular.isFunction(extendsDO);\n if (extendsDOIsFn) {\n options.defaultOptions = function defaultOptions(opts) {\n const extendsDefaultOptions = extendsDO(opts);\n const mergedDefaultOptions = {};\n utils.reverseDeepMerge(mergedDefaultOptions, opts, extendsDefaultOptions);\n let extenderOptionsDefaultOptions = optionsDO;\n if (optionsDOIsFn) {\n extenderOptionsDefaultOptions = extenderOptionsDefaultOptions(mergedDefaultOptions);\n }\n utils.reverseDeepMerge(extendsDefaultOptions, extenderOptionsDefaultOptions);\n return extendsDefaultOptions;\n };\n } else if (optionsDOIsFn) {\n options.defaultOptions = function defaultOptions(opts) {\n let newDefaultOptions = {};\n utils.reverseDeepMerge(newDefaultOptions, opts, extendsDO);\n return optionsDO(newDefaultOptions);\n };\n }\n }\n\n function getType(name, throwError, errorContext) {\n if (!name) {\n return undefined;\n }\n var type = typeMap[name];\n if (!type && throwError === true) {\n throw getError(\n `There is no type by the name of \"${name}\": ${JSON.stringify(errorContext)}`\n );\n } else {\n return type;\n }\n }\n\n function setWrapper(options, name) {\n if (angular.isArray(options)) {\n return options.map(wrapperOptions => setWrapper(wrapperOptions));\n } else if (angular.isObject(options)) {\n options.types = getOptionsTypes(options);\n options.name = getOptionsName(options, name);\n checkWrapperAPI(options);\n templateWrappersMap[options.name] = options;\n return options;\n } else if (angular.isString(options)) {\n return setWrapper({\n template: options,\n name\n });\n }\n }\n\n function getOptionsTypes(options) {\n if (angular.isString(options.types)) {\n return [options.types];\n }\n if (!angular.isDefined(options.types)) {\n return [];\n } else {\n return options.types;\n }\n }\n\n function getOptionsName(options, name) {\n return options.name || name || options.types.join(' ') || defaultWrapperName;\n }\n\n function checkWrapperAPI(options) {\n formlyUsabilityProvider.checkWrapper(options);\n if (options.template) {\n formlyUsabilityProvider.checkWrapperTemplate(options.template, options);\n }\n if (!options.overwriteOk) {\n checkOverwrite(options.name, templateWrappersMap, options, 'templateWrappers');\n } else {\n delete options.overwriteOk;\n }\n checkWrapperTypes(options);\n }\n\n function checkWrapperTypes(options) {\n let shouldThrow = !angular.isArray(options.types) || !options.types.every(angular.isString);\n if (shouldThrow) {\n throw getError(`Attempted to create a template wrapper with types that is not a string or an array of strings`);\n }\n }\n\n function checkOverwrite(property, object, newValue, objectName) {\n if (object.hasOwnProperty(property)) {\n warn([\n `Attempting to overwrite ${property} on ${objectName} which is currently`,\n `${JSON.stringify(object[property])} with ${JSON.stringify(newValue)}`,\n `To supress this warning, specify the property \"overwriteOk: true\"`\n ].join(' '));\n }\n }\n\n function getWrapper(name) {\n return templateWrappersMap[name || defaultWrapperName];\n }\n\n function getWrapperByType(type) {\n /* jshint maxcomplexity:6 */\n var wrappers = [];\n for (var name in templateWrappersMap) {\n if (templateWrappersMap.hasOwnProperty(name)) {\n if (templateWrappersMap[name].types && templateWrappersMap[name].types.indexOf(type) !== -1) {\n wrappers.push(templateWrappersMap[name]);\n }\n }\n }\n return wrappers;\n }\n\n function removeWrapperByName(name) {\n var wrapper = templateWrappersMap[name];\n delete templateWrappersMap[name];\n return wrapper;\n }\n\n function removeWrappersForType(type) {\n var wrappers = getWrapperByType(type);\n if (!wrappers) {\n return undefined;\n }\n if (!angular.isArray(wrappers)) {\n return removeWrapperByName(wrappers.name);\n } else {\n wrappers.forEach((wrapper) => removeWrapperByName(wrapper.name));\n return wrappers;\n }\n }\n\n\n function warn() {\n if (!_this.disableWarnings) {\n /* eslint no-console:0 */\n console.warn(...arguments);\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./providers/formlyConfig.js\n **/","import angular from 'angular-fix';\n\nexport default formlyUsability;\n\n// @ngInject\nfunction formlyUsability(formlyApiCheck, formlyErrorAndWarningsUrlPrefix) {\n angular.extend(this, {\n getFormlyError,\n getFieldError,\n checkWrapper,\n checkWrapperTemplate,\n getErrorMessage,\n $get: () => this\n });\n\n function getFieldError(errorInfoSlug, message, field) {\n if (arguments.length < 3) {\n field = message;\n message = errorInfoSlug;\n errorInfoSlug = null;\n }\n return new Error(getErrorMessage(errorInfoSlug, message) + ` Field definition: ${angular.toJson(field)}`);\n }\n\n function getFormlyError(errorInfoSlug, message) {\n if (!message) {\n message = errorInfoSlug;\n errorInfoSlug = null;\n }\n return new Error(getErrorMessage(errorInfoSlug, message));\n }\n\n function getErrorMessage(errorInfoSlug, message) {\n let url = '';\n if (errorInfoSlug !== null) {\n url = `${formlyErrorAndWarningsUrlPrefix}${errorInfoSlug}`;\n }\n return `Formly Error: ${message}. ${url}`;\n }\n\n function checkWrapper(wrapper) {\n formlyApiCheck.throw(formlyApiCheck.formlyWrapperType, wrapper, {\n prefix: 'formlyConfig.setWrapper',\n urlSuffix: 'setwrapper-validation-failed'\n });\n }\n\n function checkWrapperTemplate(template, additionalInfo) {\n var formlyTransclude = '';\n if (template.indexOf(formlyTransclude) === -1) {\n throw getFormlyError(\n `Template wrapper templates must use \"${formlyTransclude}\" somewhere in them. ` +\n `This one does not have \"\" in it: ${template}` + '\\n' +\n `Additional information: ${JSON.stringify(additionalInfo)}`\n );\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./providers/formlyUsability.js\n **/","export default formlyValidationMessages;\n\n\n// @ngInject\nfunction formlyValidationMessages() {\n\n var validationMessages = {\n addTemplateOptionValueMessage,\n addStringMessage,\n messages: {}\n };\n\n return validationMessages;\n\n function addTemplateOptionValueMessage(name, prop, prefix, suffix, alternate) {\n validationMessages.messages[name] = templateOptionValue(prop, prefix, suffix, alternate);\n }\n\n function addStringMessage(name, string) {\n validationMessages.messages[name] = () => string;\n }\n\n\n function templateOptionValue(prop, prefix, suffix, alternate) {\n return function getValidationMessage(viewValue, modelValue, scope) {\n if (scope.options.templateOptions[prop]) {\n return `${prefix} ${scope.options.templateOptions[prop]} ${suffix}`;\n } else {\n return alternate;\n }\n };\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./providers/formlyValidationMessages.js\n **/","import angular from 'angular-fix';\nexport default addCustomTags;\n\n// @ngInject\nfunction addCustomTags($document) {\n if ($document && $document.get) {\n // IE8 check ->\n // http://stackoverflow.com/questions/10964966/detect-ie-version-prior-to-v9-in-javascript/10965203#10965203\n const document = $document.get(0);\n const div = document.createElement('div');\n div.innerHTML = '';\n const isIeLessThan9 = (div.getElementsByTagName('i').length === 1);\n\n if (isIeLessThan9) {\n // add the custom elements that we need for formly\n const customElements = [\n 'formly-field', 'formly-form', 'formly-custom-validation', 'formly-focus', 'formly-transpose'\n ];\n angular.forEach(customElements, el => {\n document.createElement(el);\n });\n }\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./run/formlyCustomTags.js\n **/","import angular from 'angular-fix';\n\nexport default addFormlyNgModelAttrsManipulator;\n\n// @ngInject\nfunction addFormlyNgModelAttrsManipulator(formlyConfig, $interpolate) {\n if (formlyConfig.extras.disableNgModelAttrsManipulator) {\n return;\n }\n formlyConfig.templateManipulators.preWrapper.push(ngModelAttrsManipulator);\n\n\n function ngModelAttrsManipulator(template, options, scope) {\n /* jshint maxcomplexity:6 */\n var el = document.createElement('div');\n var data = options.data;\n if (data.skipNgModelAttrsManipulator === true) {\n return template;\n }\n el.innerHTML = template;\n var modelNodes = el.querySelectorAll('[ng-model], [data-ng-model]');\n if (!modelNodes || !modelNodes.length) {\n return template;\n }\n\n addIfNotPresent(modelNodes, 'id', scope.id);\n addIfNotPresent(modelNodes, 'name', scope.name || scope.id);\n\n addValidation();\n addModelOptions();\n addTemplateOptionsAttrs();\n\n\n return el.innerHTML;\n\n\n function addValidation() {\n if (angular.isDefined(options.validators) || angular.isDefined(options.validation.messages)) {\n addIfNotPresent(modelNodes, 'formly-custom-validation', '');\n }\n }\n\n function addModelOptions() {\n if (angular.isDefined(options.modelOptions)) {\n addIfNotPresent(modelNodes, 'ng-model-options', 'options.modelOptions');\n if (options.modelOptions.getterSetter) {\n angular.forEach(modelNodes, node => {\n node.setAttribute('ng-model', 'options.value');\n });\n }\n }\n }\n\n function addTemplateOptionsAttrs() {\n if (!options.templateOptions && !options.expressionProperties) {\n // no need to run these if there are no templateOptions or expressionProperties\n return;\n }\n const to = options.templateOptions || {};\n const ep = options.expressionProperties || {};\n\n let ngModelAttributes = getBuiltInAttributes();\n\n // extend with the user's specifications winning\n angular.extend(ngModelAttributes, options.ngModelAttrs);\n\n // Feel free to make this more simple :-)\n angular.forEach(ngModelAttributes, (val, name) => {\n /* eslint complexity:[2, 14] */\n let attrVal;\n let attrName;\n const ref = `options.templateOptions['${name}']`;\n const toVal = to[name];\n const epVal = getEpValue(ep, name);\n\n const inTo = angular.isDefined(toVal);\n const inEp = angular.isDefined(epVal);\n if (val.value) {\n // I realize this looks backwards, but it's right, trust me...\n attrName = val.value;\n attrVal = name;\n } else if (val.expression && inTo) {\n attrName = val.expression;\n if (angular.isString(to[name])) {\n attrVal = `$eval(${ref})`;\n } else if (angular.isFunction(to[name])) {\n attrVal = `${ref}(model[options.key], options, this, $event)`;\n } else {\n throw new Error(\n `options.templateOptions.${name} must be a string or function: ${JSON.stringify(options)}`\n );\n }\n } else if (val.bound && inEp) {\n attrName = val.bound;\n attrVal = ref;\n } else if ((val.attribute || val.boolean) && inEp) {\n attrName = val.attribute || val.boolean;\n attrVal = `${$interpolate.startSymbol()}${ref}${$interpolate.endSymbol()}`;\n } else if (val.attribute && inTo) {\n attrName = val.attribute;\n attrVal = toVal;\n } else if (val.boolean) {\n if (inTo && !inEp && toVal) {\n attrName = val.boolean;\n attrVal = true;\n } else {\n /* eslint no-empty:0 */\n // empty to illustrate that a boolean will not be added via val.bound\n // if you want it added via val.bound, then put it in expressionProperties\n }\n } else if (val.bound && inTo) {\n attrName = val.bound;\n attrVal = ref;\n }\n\n if (angular.isDefined(attrName) && angular.isDefined(attrVal)) {\n addIfNotPresent(modelNodes, attrName, attrVal);\n }\n });\n }\n }\n\n // Utility functions\n function getBuiltInAttributes() {\n let ngModelAttributes = {\n focus: {\n attribute: 'formly-focus'\n }\n };\n const boundOnly = [];\n const bothBooleanAndBound = ['required', 'disabled'];\n const bothAttributeAndBound = ['pattern', 'minlength'];\n const expressionOnly = ['change', 'keydown', 'keyup', 'keypress', 'click', 'focus', 'blur'];\n const attributeOnly = ['placeholder', 'min', 'max', 'tabindex', 'type'];\n if (formlyConfig.extras.ngModelAttrsManipulatorPreferUnbound) {\n bothAttributeAndBound.push('maxlength');\n } else {\n boundOnly.push('maxlength');\n }\n\n angular.forEach(boundOnly, item => {\n ngModelAttributes[item] = {bound: 'ng-' + item};\n });\n\n angular.forEach(bothBooleanAndBound, item => {\n ngModelAttributes[item] = {boolean: item, bound: 'ng-' + item};\n });\n\n angular.forEach(bothAttributeAndBound, item => {\n ngModelAttributes[item] = {attribute: item, bound: 'ng-' + item};\n });\n\n angular.forEach(expressionOnly, item => {\n var propName = 'on' + item.substr(0, 1).toUpperCase() + item.substr(1);\n ngModelAttributes[propName] = {expression: 'ng-' + item};\n });\n\n angular.forEach(attributeOnly, item => {\n ngModelAttributes[item] = {attribute: item};\n });\n return ngModelAttributes;\n }\n\n function getEpValue(ep, name) {\n return ep['templateOptions.' + name] ||\n ep[`templateOptions['${name}']`] ||\n ep[`templateOptions[\"${name}\"]`];\n }\n\n function addIfNotPresent(nodes, attr, val) {\n angular.forEach(nodes, node => {\n if (!node.getAttribute(attr)) {\n node.setAttribute(attr, val);\n }\n });\n }\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./run/formlyNgModelAttrsManipulator.js\n **/","import utils from '../other/utils';\n\nexport default formlyUtil;\n\n// @ngInject\nfunction formlyUtil() {\n return utils;\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./services/formlyUtil.js\n **/","export default formlyWarn;\n\n// @ngInject\nfunction formlyWarn(formlyConfig, formlyErrorAndWarningsUrlPrefix, $log) {\n return function warn() {\n if (!formlyConfig.disableWarnings) {\n var args = Array.prototype.slice.call(arguments);\n var warnInfoSlug = args.shift();\n args.unshift('Formly Warning:');\n args.push(`${formlyErrorAndWarningsUrlPrefix}${warnInfoSlug}`);\n $log.warn(...args);\n }\n };\n}\n\n\n\n/** WEBPACK FOOTER **\n ** ../~/eslint-loader!./services/formlyWarn.js\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_17__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"angular\"\n ** module id = 17\n ** module chunks = 0\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_18__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"apiCheck\",\"amd\":\"api-check\",\"commonjs2\":\"api-check\",\"commonjs\":\"api-check\"}\n ** module id = 18\n ** module chunks = 0\n **/"],"sourceRoot":""}