{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///formly.min.js","webpack:///webpack/bootstrap 51c1fa799d1dfecceaac","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:///./directives/index.js","webpack:///./index.common.js","webpack:///./providers/formlyApiCheck.js","webpack:///./providers/formlyConfig.js","webpack:///./providers/formlyErrorAndWarningsUrlPrefix.js","webpack:///./providers/formlyUsability.js","webpack:///./providers/formlyValidationMessages.js","webpack:///./providers/formlyVersion.js","webpack:///./providers/index.js","webpack:///./run/formlyNgModelAttrsManipulator.js","webpack:///./run/index.js","webpack:///./services/formlyUtil.js","webpack:///./services/formlyWarn.js","webpack:///./services/index.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_21__","__WEBPACK_EXTERNAL_MODULE_22__","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","angular","version","window","formlyEval","scope","expression","modelValue","viewValue","isFunction","$eval","$viewValue","$modelValue","getFieldId","formId","options","index","type","template","templateUrl","key","join","reverseDeepMerge","dest","forEach","arguments","src","val","prop","isDefined","objAndSameType","copy","obj1","obj2","isObject","Object","getPrototypeOf","ngModule","formlyCustomValidation","formlyUtil","$q","isPromiseLike","obj","then","checkValidators","validators","allowedProperties","validatorsWithExtraProps","validator","name","isString","extraProps","v","indexOf","push","length","keys","Error","JSON","stringify","link","el","attrs","ctrl","validation","messages","useNewValidatorsApi","hasOwnProperty","setupWithValidators","validatorCollection","isPossiblyAsync","value","when","reject","setupWithParsers","inFlightValidator","undefined","$parsers","unshift","isValid","$pending","$setValidity","message","directive","tests","$inject","formlyField","$http","$compile","$templateCache","formlyConfig","formlyValidationMessages","formlyApiCheck","formlyUsability","formlyWarn","asHtml","wrapper","element","append","html","getFieldTemplate","getType","getFieldError","getTemplate","isUrl","httpOptions","cache","get","response","data","error","transcludeInWrappers","getWrapperOption","checkWrapper","promises","map","w","all","wrappersTemplates","wrapperTemplate","checkWrapperTemplate","reverse","totalWrapper","shift","doTransclusion","superWrapper","transcludeEl","find","replaceWith","arrayify","getWrapper","getWrapperByType","typeWrappers","concat","defaultWrapper","checkApi","formlyFieldOptions","prefix","url","validateOptions","restrict","transclude","model","fields","formState","form","controller","$scope","$timeout","$parse","$controller","runExpressions","field","currentValue","valueGetterSetter","expressionProperties","setter","assign","promise","newVal","simplifyLife","templateOptions","mergeFieldOptionsWithTypeDefaults","mergeOptions","defaultOptions","properOrder","optionsTypes","typeName","extraOptions","extendOptionsWithDefaults","extend","setFormControl","cleanUp","stopWaitingForDestroy","clearInterval","interval","noFormControl","maxTime","intervalTime","iterations","setInterval","formControl","fc","addShowMessagesWatcher","$on","addModelWatcher","$watch","show","$invalid","$touched","errorExistsAndShouldBeVisible","showError","addValidationMessages","invokeControllers","opts","fieldType","to","setElementTemplate","templateEl","contents","apply","thusly","args","runManipulators","manipulators","chain","manipulator","newTemplate","templateManipulators","preWrapper","postWrapper","isArray","$document","previousEl","doc","$observe","activeElement","focus","focusWait","blur","_toConsumableArray","arr","Array","i","arr2","from","_slice","prototype","slice","formlyForm","currentFormId","rootEl","replace","attachKey","setupWatchers","watcher","watchers","listener","watchExpression","getWatchExpression","watchListener","getWatchListener","stopWatching","watchDeep","originalExpression","modifyArgs","displayName","originalListener","_len","originalArgs","_key","newResult","getFormlyError","ngModuleName","apiCheck","output","docsBaseUrl","constant","formlyExpression","oneOfType","string","func","wrapperType","oneOf","typeOrArrayOf","fieldOptionsApiShape","shape","ifNot","optional","number","object","objectOf","strict","modelOptions","updateOn","debounce","allowInvalid","bool","getterSetter","timezone","hide","ngModelAttrs","any","attribute","bound","array","typeOptionsDefaultOptions","formlyTypeOptions","extends","overwriteOk","utils","formlyUsabilityProvider","setType","getError","checkType","extendTypeOptions","typeMap","checkOverwrite","checkAllowedProperties","allowedTypeProperties","extendsType","extendTypeControllerFunction","extendTypeLinkFunction","extendTypeValidateOptionsFunction","extendTypeDefaultOptions","extendsCtrl","optionsCtrl","extendsFn","optionsFn","originalDefaultOptions","mergedOptions","extendsDO","optionsDO","optionsDOIsFn","extendsDOIsFn","extendsDefaultOptions","mergedDefaultOptions","newDefaultOptions","throwError","errorContext","setWrapper","_x","_x2","_again","wrapperOptions","types","getOptionsTypes","getOptionsName","checkWrapperAPI","templateWrappersMap","defaultWrapperName","checkWrapperTypes","shouldThrow","every","property","newValue","objectName","warn","wrappers","removeWrapperByName","removeWrappersForType","_this","disableWarnings","console","_this2","extras","disableNgModelAttrsManipulator","ngModelAttrsManipulatorPreferBound","$get","provider","formlyVersion","errorInfoSlug","getErrorMessage","toJson","errorsAndWarningsUrlPrefix","additionalInfo","formlyTransclude","context","filter","extraPropsJSON","allowedPropsJSON","addTemplateOptionValueMessage","suffix","alternate","templateOptionValue","addStringMessage","addFormlyNgModelAttrsManipulator","ngModelAttrsManipulator","addTemplateOptionsAttrs","ep","ngModelAttributes","getBuiltinAttributes","attrVal","attrName","ref","toVal","epVal","getEpValue","inTo","inEp","addIfNotPresent","modelEls","boundOnly","bothAttributeAndBound","expressionOnly","attributeOnly","item","propName","substr","toUpperCase","attr","noTouchy","querySelectorAll","run","formlyErrorAndWarningsUrlPrefix","$log","warnInfoSlug"],"mappings":"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","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_21__, __WEBPACK_EXTERNAL_MODULE_22__) {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\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_21__, __WEBPACK_EXTERNAL_MODULE_22__) {\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\tmodule.exports = __webpack_require__(8);\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\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\tvar angular = __webpack_require__(21);\n\tif (!angular.version) {\n\t angular = window.angular;\n\t}\n\tmodule.exports = angular;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar angular = __webpack_require__(1);\n\t\n\tmodule.exports = { formlyEval: formlyEval, getFieldId: getFieldId, reverseDeepMerge: reverseDeepMerge };\n\t\n\tfunction formlyEval(scope, expression, modelValue, viewValue) {\n\t if (angular.isFunction(expression)) {\n\t return expression(viewValue || modelValue, modelValue, scope);\n\t } else {\n\t return scope.$eval(expression, {\n\t $viewValue: viewValue || modelValue,\n\t $modelValue: modelValue\n\t });\n\t }\n\t}\n\t\n\tfunction getFieldId(formId, options, index) {\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 angular.forEach(arguments, function (src, index) {\n\t if (!index) {\n\t return;\n\t }\n\t angular.forEach(src, function (val, prop) {\n\t if (!angular.isDefined(dest[prop])) {\n\t dest[prop] = angular.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 angular.isObject(obj1) && angular.isObject(obj2) && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2);\n\t}\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (ngModule) {\n\t ngModule.directive(\"formlyCustomValidation\", formlyCustomValidation);\n\t\n\t formlyCustomValidation.tests = false ? require(\"./formly-custom-validation.test\")(ngModule) : null;\n\t\n\t function formlyCustomValidation(formlyUtil, $q) {\n\t return {\n\t require: \"ngModel\",\n\t link: function link(scope, el, attrs, ctrl) {\n\t var validators = scope.$eval(attrs.formlyCustomValidation);\n\t if (!validators) {\n\t return;\n\t }\n\t checkValidators(validators);\n\t scope.options.validation.messages = scope.options.validation.messages || {};\n\t\n\t var useNewValidatorsApi = ctrl.hasOwnProperty(\"$validators\") && !attrs.hasOwnProperty(\"useParsers\");\n\t angular.forEach(validators, function (validator, name) {\n\t var message = validator.message;\n\t if (message) {\n\t scope.options.validation.messages[name] = function () {\n\t return formlyUtil.formlyEval(scope, message, ctrl.$modelValue, ctrl.$viewValue);\n\t };\n\t }\n\t validator = angular.isObject(validator) ? validator.expression : validator;\n\t var isPossiblyAsync = !angular.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 (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 (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 && angular.isFunction(obj.then);\n\t }\n\t\n\t function checkValidators(validators) {\n\t var allowedProperties = [\"expression\", \"message\"];\n\t var validatorsWithExtraProps = {};\n\t angular.forEach(validators, function (validator, name) {\n\t if (angular.isString(validator)) {\n\t return;\n\t }\n\t var extraProps = [];\n\t angular.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\t formlyCustomValidation.$inject = [\"formlyUtil\", \"$q\"];\n\t};\n\n/***/ },\n/* 4 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar angular = __webpack_require__(1);\n\t\n\tmodule.exports = function (ngModule) {\n\t ngModule.directive(\"formlyField\", formlyField);\n\t\n\t formlyField.tests = false ? require(\"./formly-field.test\")(ngModule) : null;\n\t\n\t function formlyField($http, $q, $compile, $templateCache, formlyConfig, formlyValidationMessages, formlyApiCheck, formlyUtil, formlyUsability, formlyWarn) {\n\t return {\n\t restrict: \"AE\",\n\t transclude: true,\n\t scope: {\n\t options: \"=\",\n\t model: \"=\",\n\t formId: \"=?\",\n\t index: \"=?\",\n\t fields: \"=?\",\n\t formState: \"=?\",\n\t form: \"=?\"\n\t },\n\t controller: [\"$scope\", \"$timeout\", \"$parse\", \"$controller\", function fieldController($scope, $timeout, $parse, $controller) {\n\t var opts = $scope.options;\n\t var fieldType = opts.type && formlyConfig.getType(opts.type);\n\t simplifyLife(opts);\n\t mergeFieldOptionsWithTypeDefaults(opts, fieldType);\n\t checkApi(opts);\n\t // set field id to link labels and fields\n\t $scope.id = formlyUtil.getFieldId($scope.formId, opts, $scope.index);\n\t\n\t // initalization\n\t extendOptionsWithDefaults(opts, $scope.index);\n\t runExpressions();\n\t setFormControl($scope, opts);\n\t addModelWatcher($scope, opts);\n\t addValidationMessages(opts);\n\t // simplify things\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 invokeControllers($scope, opts, fieldType);\n\t\n\t // function definitions\n\t function runExpressions() {\n\t $timeout(function () {\n\t // must run on next tick to make sure that the current value is correct.\n\t var field = $scope.options;\n\t var currentValue = valueGetterSetter();\n\t angular.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));\n\t promise.then(function (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;\n\t }\n\t if (angular.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 }\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 angular.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 (angular.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 angular.extend(options, {\n\t // attach the key in case the formly-field directive is used directly\n\t key: options.key || index || 0,\n\t value: valueGetterSetter,\n\t runExpressions: runExpressions\n\t });\n\t }\n\t\n\t // initialization functions\n\t function setFormControl(scope, options) {\n\t if (options.noFormControl) {\n\t return;\n\t }\n\t var stopWaitingForDestroy;\n\t var maxTime = 2000;\n\t var intervalTime = 5;\n\t var iterations = 0;\n\t var interval = setInterval(function () {\n\t iterations++;\n\t if (!angular.isDefined(options.key)) {\n\t return cleanUp();\n\t }\n\t var formControl = scope.form && scope.form[scope.id];\n\t if (formControl) {\n\t options.formControl = formControl;\n\t scope.fc = formControl;\n\t addShowMessagesWatcher(scope, options);\n\t cleanUp();\n\t } else if (intervalTime * iterations > maxTime) {\n\t formlyWarn(\"couldnt-set-the-formcontrol-after-timems\", \"Couldn't set the formControl after \" + maxTime + \"ms\", scope);\n\t cleanUp();\n\t }\n\t }, intervalTime);\n\t stopWaitingForDestroy = scope.$on(\"$destroy\", cleanUp);\n\t\n\t function cleanUp() {\n\t stopWaitingForDestroy();\n\t clearInterval(interval);\n\t }\n\t }\n\t\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 addShowMessagesWatcher(scope, options) {\n\t scope.$watch(function () {\n\t if (typeof scope.options.validation.show === \"boolean\") {\n\t return scope.fc.$invalid && scope.options.validation.show;\n\t } else {\n\t return scope.fc.$invalid && scope.fc.$touched;\n\t }\n\t }, function (show) {\n\t options.validation.errorExistsAndShouldBeVisible = show;\n\t scope.showError = show;\n\t });\n\t }\n\t\n\t function addValidationMessages(options) {\n\t options.validation.messages = options.validation.messages || {};\n\t angular.forEach(formlyValidationMessages.messages, function (expression, name) {\n\t if (!options.validation.messages[name]) {\n\t options.validation.messages[name] = function (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 angular.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 link: function fieldLink(scope, el) {\n\t var type = scope.options.type && formlyConfig.getType(scope.options.type);\n\t var args = arguments;\n\t var thusly = this;\n\t getFieldTemplate(scope.options).then(runManipulators(formlyConfig.templateManipulators.preWrapper)).then(transcludeInWrappers(scope.options)).then(runManipulators(formlyConfig.templateManipulators.postWrapper)).then(setElementTemplate)[\"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 setElementTemplate(templateEl) {\n\t el.html(asHtml(templateEl));\n\t $compile(el.contents())(scope);\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(template) {\n\t var chain = $q.when(template);\n\t angular.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 angular.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\n\t function asHtml(el) {\n\t var wrapper = angular.element(\"\");\n\t return wrapper.append(el).html();\n\t }\n\t\n\t function getFieldTemplate(options) {\n\t var type = formlyConfig.getType(options.type, true, options);\n\t var template = options.template || type && type.template;\n\t var templateUrl = options.templateUrl || type && type.templateUrl;\n\t if (!template && !templateUrl) {\n\t throw formlyUsability.getFieldError(\"template-type-type-not-supported\", \"template type '\" + options.type + \"' not supported. On element:\", options);\n\t }\n\t return getTemplate(template || templateUrl, !template);\n\t }\n\t\n\t function getTemplate(template, isUrl) {\n\t if (!isUrl) {\n\t return $q.when(template);\n\t } else {\n\t var httpOptions = { cache: $templateCache };\n\t return $http.get(template, httpOptions).then(function (response) {\n\t return response.data;\n\t })[\"catch\"](function (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 function transcludeInWrappers(options) {\n\t var wrapper = getWrapperOption(options);\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 (wrapper) {\n\t formlyUsability.checkWrapper(wrapper, 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 = angular.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 transcludeEl.replaceWith(template);\n\t return superWrapper.html();\n\t }\n\t\n\t function getWrapperOption(options) {\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 this 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 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, arguments, {\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 && type.validateOptions) {\n\t type.validateOptions(options);\n\t }\n\t }\n\t }\n\t formlyField.$inject = [\"$http\", \"$q\", \"$compile\", \"$templateCache\", \"formlyConfig\", \"formlyValidationMessages\", \"formlyApiCheck\", \"formlyUtil\", \"formlyUsability\", \"formlyWarn\"];\n\t\n\t function arrayify(obj) {\n\t if (obj && !angular.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\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (ngModule) {\n\t ngModule.directive(\"formlyFocus\", [\"$timeout\", \"$document\", function ($timeout, $document) {\n\t /* jshint -W052 */\n\t return {\n\t link: function link(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 (value) {\n\t if (value === \"true\") {\n\t $timeout(function () {\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\t};\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar _toConsumableArray = function (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 _slice = Array.prototype.slice;\n\tvar angular = __webpack_require__(1);\n\t\n\tmodule.exports = function (ngModule) {\n\t ngModule.directive(\"formlyForm\", formlyForm);\n\t\n\t formlyForm.tests = false ? require(\"./formly-form.test\")(ngModule) : null;\n\t\n\t function formlyForm(formlyUsability) {\n\t var currentFormId = 1;\n\t return {\n\t restrict: \"E\",\n\t template: function template(el, attrs) {\n\t /* jshint -W033 */ // this because jshint is broken I guess...\n\t var rootEl = attrs.rootEl || \"ng-form\";\n\t return \"\\n <\" + rootEl + \" class=\\\"formly\\\"\\n name=\\\"form\\\"\\n role=\\\"form\\\">\\n
\\n
\\n
\\n \\n \";\n\t },\n\t replace: true,\n\t transclude: true,\n\t scope: {\n\t fields: \"=\",\n\t model: \"=\", // we'll do our own warning to help with migrations\n\t form: \"=?\",\n\t options: \"=?\"\n\t },\n\t controller: [\"$scope\", function controller($scope) {\n\t $scope.formId = \"formly_\" + currentFormId++;\n\t $scope.options = $scope.options || {};\n\t $scope.options.formState = $scope.options.formState || {};\n\t\n\t angular.forEach($scope.fields, attachKey); // attaches a key based on the index if a key isn't specified\n\t angular.forEach($scope.fields, setupWatchers); // setup watchers for all fields\n\t\n\t // watch the model and evaluate watch expressions that depend on it.\n\t $scope.$watch(\"model\", function onResultUpdate(newResult) {\n\t angular.forEach($scope.fields, function (field) {\n\t /*jshint -W030 */\n\t field.runExpressions && field.runExpressions(newResult);\n\t });\n\t }, true);\n\t\n\t function attachKey(field, index) {\n\t field.key = field.key || index || 0;\n\t }\n\t\n\t function setupWatchers(field, index) {\n\t if (!angular.isDefined(field.watcher)) {\n\t return;\n\t }\n\t var watchers = field.watcher;\n\t if (!angular.isArray(watchers)) {\n\t watchers = [watchers];\n\t }\n\t angular.forEach(watchers, function (watcher) {\n\t if (!angular.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 (angular.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 (angular.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 link: function link(scope, el, attrs) {\n\t if (attrs.hasOwnProperty(\"result\")) {\n\t throw formlyUsability.getFormlyError(\"The \\\"result\\\" attribute on a formly-form is no longer valid. Use \\\"model\\\" instead\");\n\t }\n\t if (attrs.name !== \"form\") {\n\t // then they specified their own name\n\t throw formlyUsability.getFormlyError(\"The \\\"name\\\" attribute on a formly-form is no longer valid. Use \\\"form\\\" instead\");\n\t }\n\t }\n\t };\n\t }\n\t formlyForm.$inject = [\"formlyUsability\"];\n\t};\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (ngModule) {\n\t __webpack_require__(3)(ngModule);\n\t __webpack_require__(4)(ngModule);\n\t __webpack_require__(6)(ngModule);\n\t __webpack_require__(5)(ngModule);\n\t};\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar ngModuleName = \"formly\";\n\tvar angular = __webpack_require__(1);\n\tvar ngModule = angular.module(ngModuleName, []);\n\t\n\t__webpack_require__(15)(ngModule);\n\t__webpack_require__(20)(ngModule);\n\t__webpack_require__(7)(ngModule);\n\t__webpack_require__(17)(ngModule);\n\t\n\tmodule.exports = ngModuleName;\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (ngModule) {\n\t\n\t var apiCheck = __webpack_require__(22)({\n\t output: {\n\t prefix: \"angular-formly:\",\n\t docsBaseUrl: \"https://github.com/formly-js/angular-formly/blob/\" + (\"4.0.2\") + \"/other/ERRORS_AND_WARNINGS.md#\"\n\t }\n\t });\n\t\n\t ngModule.constant(\"formlyApiCheck\", apiCheck);\n\t if (false) {\n\t require(\"./formlyApiCheck.test\")(ngModule);\n\t }\n\t\n\t var formlyExpression = apiCheck.oneOfType([apiCheck.string, apiCheck.func]);\n\t var wrapperType = apiCheck.oneOfType([apiCheck.oneOf([null]), apiCheck.typeOrArrayOf(apiCheck.string)]);\n\t\n\t var fieldOptionsApiShape = {\n\t type: apiCheck.shape.ifNot([\"template\", \"templateUrl\"], apiCheck.string).optional,\n\t template: apiCheck.shape.ifNot([\"type\", \"templateUrl\"], apiCheck.string).optional,\n\t templateUrl: apiCheck.shape.ifNot([\"type\", \"template\"], apiCheck.string).optional,\n\t key: apiCheck.oneOfType([apiCheck.string, apiCheck.number]),\n\t model: apiCheck.object.optional,\n\t expressionProperties: apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n\t expression: formlyExpression,\n\t message: formlyExpression.optional\n\t }).strict])).optional,\n\t data: apiCheck.object.optional,\n\t templateOptions: apiCheck.object.optional,\n\t wrapper: wrapperType.optional,\n\t modelOptions: apiCheck.shape({\n\t updateOn: apiCheck.string.optional,\n\t debounce: apiCheck.oneOfType([apiCheck.object, apiCheck.string]).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([apiCheck.func, 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 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 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: apiCheck.oneOfType([apiCheck.bool, apiCheck.oneOf([null])]).optional,\n\t messages: apiCheck.objectOf(apiCheck.func).optional,\n\t errorExistsAndShouldBeVisible: apiCheck.bool.optional\n\t }).optional,\n\t formControl: apiCheck.object.optional,\n\t value: apiCheck.func.optional,\n\t runExpressions: apiCheck.func.optional\n\t };\n\t\n\t var formlyFieldOptions = apiCheck.shape(fieldOptionsApiShape).strict;\n\t\n\t var typeOptionsDefaultOptions = angular.copy(fieldOptionsApiShape);\n\t typeOptionsDefaultOptions.key = apiCheck.string.optional;\n\t\n\t var formlyTypeOptions = apiCheck.shape({\n\t name: apiCheck.string,\n\t template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.string).optional,\n\t templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.string).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: wrapperType.optional,\n\t data: apiCheck.object.optional,\n\t validateOptions: apiCheck.func.optional,\n\t overwriteOk: apiCheck.bool.optional\n\t }).strict;\n\t\n\t angular.extend(apiCheck, {\n\t formlyTypeOptions: formlyTypeOptions, formlyFieldOptions: formlyFieldOptions, formlyExpression: formlyExpression\n\t });\n\t};\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar angular = __webpack_require__(1);\n\tvar utils = __webpack_require__(2);\n\t\n\tmodule.exports = function (ngModule) {\n\t ngModule.provider(\"formlyConfig\", formlyConfig);\n\t\n\t formlyConfig.tests = false ? require(\"./formlyConfig.test\")(ngModule) : null;\n\t\n\t function 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 var allowedTypeProperties = [\"name\", \"template\", \"templateUrl\", \"controller\", \"link\", \"defaultOptions\", \"extends\", \"wrapper\", \"data\", \"validateOptions\", \"overwriteOk\"];\n\t\n\t angular.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 ngModelAttrsManipulatorPreferBound: false\n\t },\n\t templateManipulators: {\n\t preWrapper: [],\n\t postWrapper: []\n\t },\n\t $get: function () {\n\t return _this2;\n\t }\n\t });\n\t\n\t function setType(options) {\n\t if (angular.isArray(options)) {\n\t angular.forEach(options, setType);\n\t } else if (angular.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, arguments, {\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 formlyUsabilityProvider.checkAllowedProperties(allowedTypeProperties, options);\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 utils.reverseDeepMerge(options, extendsType);\n\t }\n\t\n\t function extendTypeControllerFunction(options, extendsType) {\n\t var extendsCtrl = extendsType.controller;\n\t if (!angular.isDefined(extendsCtrl)) {\n\t return;\n\t }\n\t var optionsCtrl = options.controller;\n\t if (angular.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 (!angular.isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.link;\n\t if (angular.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 (!angular.isDefined(extendsFn)) {\n\t return;\n\t }\n\t var optionsFn = options.validateOptions;\n\t var originalDefaultOptions = options.defaultOptions;\n\t if (angular.isDefined(optionsFn)) {\n\t options.validateOptions = function (options) {\n\t optionsFn(options);\n\t var mergedOptions = angular.copy(options);\n\t var defaultOptions = originalDefaultOptions;\n\t if (defaultOptions) {\n\t if (angular.isFunction(defaultOptions)) {\n\t defaultOptions = defaultOptions(mergedOptions);\n\t }\n\t utils.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 (!angular.isDefined(extendsDO)) {\n\t return;\n\t }\n\t var optionsDO = options.defaultOptions;\n\t var optionsDOIsFn = angular.isFunction(optionsDO);\n\t var extendsDOIsFn = angular.isFunction(extendsDO);\n\t if (extendsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(options) {\n\t var extendsDefaultOptions = extendsDO(options);\n\t var mergedDefaultOptions = {};\n\t utils.reverseDeepMerge(mergedDefaultOptions, options, extendsDefaultOptions);\n\t if (optionsDOIsFn) {\n\t return optionsDO(mergedDefaultOptions);\n\t } else {\n\t utils.reverseDeepMerge(extendsDefaultOptions, optionsDO);\n\t return extendsDefaultOptions;\n\t }\n\t };\n\t } else if (optionsDOIsFn) {\n\t options.defaultOptions = function defaultOptions(options) {\n\t var newDefaultOptions = {};\n\t utils.reverseDeepMerge(newDefaultOptions, options, 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 _again = false;\n\t var options = _x,\n\t name = _x2;\n\t\n\t if (angular.isArray(options)) {\n\t return options.map(function (wrapperOptions) {\n\t return setWrapper(wrapperOptions);\n\t });\n\t } else if (angular.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 (angular.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 (angular.isString(options.types)) {\n\t return [options.types];\n\t }\n\t if (!angular.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 = !angular.isArray(options.types) || !options.types.every(angular.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;\n\t }\n\t if (!angular.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 console.warn.apply(console, arguments);\n\t }\n\t }\n\t }\n\t formlyConfig.$inject = [\"formlyUsabilityProvider\", \"formlyApiCheck\"];\n\t};\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (ngModule) {\n\t ngModule.constant(\"formlyErrorAndWarningsUrlPrefix\", \"https://github.com/formly-js/angular-formly/wiki/Errors-and-Warnings#\");\n\t};\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar angular = __webpack_require__(1);\n\t\n\tmodule.exports = function (ngModule) {\n\t ngModule.provider(\"formlyUsability\", [\"formlyVersion\", function (formlyVersion) {\n\t var _this = this;\n\t\n\t var errorsAndWarningsUrlPrefix = \"https://github.com/formly-js/angular-formly/blob/\" + formlyVersion + \"/other/ERRORS_AND_WARNINGS.md#\";\n\t angular.extend(this, {\n\t getFormlyError: getFormlyError,\n\t getFieldError: getFieldError,\n\t checkWrapper: checkWrapper,\n\t checkWrapperTemplate: checkWrapperTemplate,\n\t checkAllowedProperties: checkAllowedProperties,\n\t $get: function () {\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: \" + angular.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 = \"\" + errorsAndWarningsUrlPrefix + \"\" + errorInfoSlug;\n\t }\n\t return \"Formly Error: \" + message + \". \" + url;\n\t }\n\t\n\t function checkWrapper(wrapper, options) {\n\t if (wrapper.template && wrapper.templateUrl) {\n\t throw getFormlyError(\"Template wrappers can only have a templateUrl or a template. \" + (\"This one provided both: \" + JSON.stringify(wrapper)));\n\t }\n\t if (!wrapper.template && !wrapper.templateUrl) {\n\t throw getFormlyError(\"Template wrappers must have one of a templateUrl or a template. \" + (\"This one provided neither: \" + JSON.stringify(wrapper)));\n\t }\n\t wrapper.validateOptions && wrapper.validateOptions(options);\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\t function checkAllowedProperties(allowedProperties, obj, context) {\n\t var extraProps = Object.keys(obj).filter(function (prop) {\n\t return allowedProperties.indexOf(prop) === -1;\n\t });\n\t if (extraProps.length) {\n\t var extraPropsJSON = JSON.stringify(extraProps.join(\", \"));\n\t var allowedPropsJSON = JSON.stringify(allowedProperties.join(\", \"));\n\t throw getFieldError(\"you-have-specified-properties-for-context-that-are-not-allowed\", [\"You have specified properties for \" + context + \" that are not allowed: \" + extraPropsJSON, \"Allowed properties are: \" + allowedPropsJSON].join(\"\\n\"), obj);\n\t }\n\t }\n\t }]);\n\t};\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (ngModule) {\n\t ngModule.factory(\"formlyValidationMessages\", function () {\n\t\n\t var formlyValidationMessages = {\n\t addTemplateOptionValueMessage: addTemplateOptionValueMessage,\n\t addStringMessage: addStringMessage,\n\t messages: {}\n\t };\n\t\n\t return formlyValidationMessages;\n\t\n\t function addTemplateOptionValueMessage(name, prop, prefix, suffix, alternate) {\n\t formlyValidationMessages.messages[name] = templateOptionValue(prop, prefix, suffix, alternate);\n\t }\n\t\n\t function addStringMessage(name, string) {\n\t formlyValidationMessages.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\t};\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (ngModule) {\n\t ngModule.constant(\"formlyVersion\", (\"4.0.2\"));\n\t};\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (ngModule) {\n\t __webpack_require__(9)(ngModule);\n\t __webpack_require__(12)(ngModule);\n\t __webpack_require__(10)(ngModule);\n\t __webpack_require__(14)(ngModule);\n\t __webpack_require__(11)(ngModule);\n\t __webpack_require__(13)(ngModule);\n\t};\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (ngModule) {\n\t ngModule.run(addFormlyNgModelAttrsManipulator);\n\t\n\t function addFormlyNgModelAttrsManipulator(formlyConfig) {\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:7 */\n\t var el = angular.element(\"\");\n\t var data = options.data;\n\t if (data.noTouchy) {\n\t return template;\n\t }\n\t el.append(template);\n\t var modelEls = angular.element(el[0].querySelectorAll(\"[ng-model]\"));\n\t if (!modelEls || !modelEls.length) {\n\t return template;\n\t }\n\t\n\t addIfNotPresent(modelEls, \"id\", scope.id);\n\t addIfNotPresent(modelEls, \"name\", scope.id);\n\t\n\t if (angular.isDefined(options.validators)) {\n\t addIfNotPresent(modelEls, \"formly-custom-validation\", \"options.validators\");\n\t }\n\t if (angular.isDefined(options.modelOptions)) {\n\t addIfNotPresent(modelEls, \"ng-model-options\", \"options.modelOptions\");\n\t if (options.modelOptions.getterSetter) {\n\t modelEls.attr(\"ng-model\", \"options.value\");\n\t }\n\t }\n\t addTemplateOptionsAttrs();\n\t\n\t return el.html();\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 angular.extend(ngModelAttributes, options.ngModelAttrs);\n\t\n\t angular.forEach(ngModelAttributes, function (val, name) {\n\t /* jshint maxcomplexity:10 */\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 = angular.isDefined(toVal);\n\t var inEp = angular.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 (angular.isString(to[name])) {\n\t attrVal = \"$eval(\" + ref + \")\";\n\t } else if (angular.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 && inEp) {\n\t attrName = val.attribute;\n\t attrVal = \"{{\" + ref + \"}}\";\n\t } else if (val.attribute && inTo) {\n\t attrName = val.attribute;\n\t attrVal = toVal;\n\t } else if (val.bound && inTo) {\n\t attrName = val.bound;\n\t attrVal = ref;\n\t }\n\t if (angular.isDefined(attrName) && angular.isDefined(attrVal)) {\n\t addIfNotPresent(modelEls, attrName, attrVal);\n\t }\n\t });\n\t }\n\t\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 bothAttributeAndBound = [\"required\", \"disabled\", \"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.ngModelAttrsManipulatorPreferBound) {\n\t boundOnly.push(\"maxlength\");\n\t } else {\n\t bothAttributeAndBound.push(\"maxlength\");\n\t }\n\t\n\t angular.forEach(boundOnly, function (item) {\n\t ngModelAttributes[item] = { bound: \"ng-\" + item };\n\t });\n\t\n\t angular.forEach(bothAttributeAndBound, function (item) {\n\t ngModelAttributes[item] = { attribute: item, bound: \"ng-\" + item };\n\t });\n\t\n\t angular.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 angular.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(el, attr, val) {\n\t if (!el.attr(attr)) {\n\t el.attr(attr, val);\n\t }\n\t }\n\t }\n\t }\n\t addFormlyNgModelAttrsManipulator.$inject = [\"formlyConfig\"];\n\t};\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (ngModule) {\n\t __webpack_require__(16)(ngModule);\n\t};\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar utils = __webpack_require__(2);\n\t\n\tmodule.exports = function (ngModule) {\n\t ngModule.factory(\"formlyUtil\", formlyUtil);\n\t\n\t formlyUtil.tests = false ? require(\"./formlyUtil.test\")(ngModule) : null;\n\t\n\t function formlyUtil() {\n\t return utils;\n\t }\n\t};\n\n/***/ },\n/* 19 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tvar _toConsumableArray = function (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\tmodule.exports = function (ngModule) {\n\t ngModule.factory(\"formlyWarn\", [\"formlyConfig\", \"formlyErrorAndWarningsUrlPrefix\", \"$log\", function (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\t};\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\t\n\tmodule.exports = function (ngModule) {\n\t __webpack_require__(18)(ngModule);\n\t __webpack_require__(19)(ngModule);\n\t};\n\n/***/ },\n/* 21 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_21__;\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __WEBPACK_EXTERNAL_MODULE_22__;\n\n/***/ }\n/******/ ])\n});\n\n\n\n/** WEBPACK FOOTER **\n ** 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/** WEBPACK FOOTER **\n ** webpack/bootstrap 51c1fa799d1dfecceaac\n **/","\"use strict\";\n\nmodule.exports = require(\"./index.common\");\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./index.js\n ** module id = 0\n ** module chunks = 0\n **/","\"use strict\";\n\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\");\nif (!angular.version) {\n angular = window.angular;\n}\nmodule.exports = angular;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./angular-fix/index.js\n ** module id = 1\n ** module chunks = 0\n **/","\"use strict\";\n\nvar angular = require(\"angular-fix\");\n\nmodule.exports = { formlyEval: formlyEval, getFieldId: getFieldId, reverseDeepMerge: reverseDeepMerge };\n\nfunction formlyEval(scope, expression, modelValue, viewValue) {\n if (angular.isFunction(expression)) {\n return expression(viewValue || modelValue, modelValue, scope);\n } else {\n return scope.$eval(expression, {\n $viewValue: viewValue || modelValue,\n $modelValue: modelValue\n });\n }\n}\n\nfunction getFieldId(formId, options, index) {\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\nfunction reverseDeepMerge(dest) {\n angular.forEach(arguments, function (src, index) {\n if (!index) {\n return;\n }\n angular.forEach(src, function (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) && Object.getPrototypeOf(obj1) === Object.getPrototypeOf(obj2);\n}\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./other/utils.js\n ** module id = 2\n ** module chunks = 0\n **/","\"use strict\";\n\nmodule.exports = function (ngModule) {\n ngModule.directive(\"formlyCustomValidation\", formlyCustomValidation);\n\n formlyCustomValidation.tests = ON_TEST ? require(\"./formly-custom-validation.test\")(ngModule) : null;\n\n function formlyCustomValidation(formlyUtil, $q) {\n return {\n require: \"ngModel\",\n link: function link(scope, el, attrs, ctrl) {\n var validators = scope.$eval(attrs.formlyCustomValidation);\n if (!validators) {\n return;\n }\n checkValidators(validators);\n scope.options.validation.messages = scope.options.validation.messages || {};\n\n var useNewValidatorsApi = ctrl.hasOwnProperty(\"$validators\") && !attrs.hasOwnProperty(\"useParsers\");\n angular.forEach(validators, function (validator, name) {\n var message = validator.message;\n if (message) {\n scope.options.validation.messages[name] = function () {\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 (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 var inFlightValidator = undefined;\n ctrl.$parsers.unshift(function (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(function () {\n if (inFlightValidator === isValid) {\n ctrl.$setValidity(name, true);\n }\n })[\"catch\"](function () {\n if (inFlightValidator === isValid) {\n ctrl.$setValidity(name, false);\n }\n })[\"finally\"](function () {\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, function (validator, name) {\n if (angular.isString(validator)) {\n return;\n }\n var extraProps = [];\n angular.forEach(validator, function (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([\"Validators are only allowed to be functions or objects that have \" + allowedProperties.join(\", \") + \".\", \"You provided some extra properties: \" + JSON.stringify(validatorsWithExtraProps)].join(\" \"));\n }\n }\n }\n formlyCustomValidation.$inject = [\"formlyUtil\", \"$q\"];\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./directives/formly-custom-validation.js\n ** module id = 3\n ** module chunks = 0\n **/","\"use strict\";\n\nvar angular = require(\"angular-fix\");\n\nmodule.exports = function (ngModule) {\n ngModule.directive(\"formlyField\", formlyField);\n\n formlyField.tests = ON_TEST ? require(\"./formly-field.test\")(ngModule) : null;\n\n function formlyField($http, $q, $compile, $templateCache, formlyConfig, formlyValidationMessages, formlyApiCheck, formlyUtil, formlyUsability, formlyWarn) {\n return {\n restrict: \"AE\",\n transclude: true,\n scope: {\n options: \"=\",\n model: \"=\",\n formId: \"=?\",\n index: \"=?\",\n fields: \"=?\",\n formState: \"=?\",\n form: \"=?\"\n },\n controller: [\"$scope\", \"$timeout\", \"$parse\", \"$controller\", function fieldController($scope, $timeout, $parse, $controller) {\n var opts = $scope.options;\n var fieldType = opts.type && formlyConfig.getType(opts.type);\n simplifyLife(opts);\n mergeFieldOptionsWithTypeDefaults(opts, fieldType);\n checkApi(opts);\n // set field id to link labels and fields\n $scope.id = formlyUtil.getFieldId($scope.formId, opts, $scope.index);\n\n // initalization\n extendOptionsWithDefaults(opts, $scope.index);\n runExpressions();\n setFormControl($scope, opts);\n addModelWatcher($scope, opts);\n addValidationMessages(opts);\n // simplify things\n // create $scope.to so template authors can reference to instead of $scope.options.templateOptions\n $scope.to = $scope.options.templateOptions;\n invokeControllers($scope, opts, fieldType);\n\n // function definitions\n function runExpressions() {\n $timeout(function () {\n // must run on next tick to make sure that the current value is correct.\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));\n promise.then(function (value) {\n setter(field, value);\n });\n });\n });\n }\n\n function valueGetterSetter(newVal) {\n if (!$scope.model || !$scope.options.key) {\n return;\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 }\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, function (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 angular.extend(options, {\n // attach the key in case the formly-field directive is used directly\n key: options.key || index || 0,\n value: valueGetterSetter,\n runExpressions: runExpressions\n });\n }\n\n // initialization functions\n function setFormControl(scope, options) {\n if (options.noFormControl) {\n return;\n }\n var stopWaitingForDestroy;\n var maxTime = 2000;\n var intervalTime = 5;\n var iterations = 0;\n var interval = setInterval(function () {\n iterations++;\n if (!angular.isDefined(options.key)) {\n return cleanUp();\n }\n var formControl = scope.form && scope.form[scope.id];\n if (formControl) {\n options.formControl = formControl;\n scope.fc = formControl;\n addShowMessagesWatcher(scope, options);\n cleanUp();\n } else if (intervalTime * iterations > maxTime) {\n formlyWarn(\"couldnt-set-the-formcontrol-after-timems\", \"Couldn't set the formControl after \" + maxTime + \"ms\", scope);\n cleanUp();\n }\n }, intervalTime);\n stopWaitingForDestroy = scope.$on(\"$destroy\", cleanUp);\n\n function cleanUp() {\n stopWaitingForDestroy();\n clearInterval(interval);\n }\n }\n\n function addModelWatcher(scope, options) {\n if (options.model) {\n scope.$watch(\"options.model\", runExpressions, true);\n }\n }\n\n function addShowMessagesWatcher(scope, options) {\n scope.$watch(function () {\n if (typeof scope.options.validation.show === \"boolean\") {\n return scope.fc.$invalid && scope.options.validation.show;\n } else {\n return scope.fc.$invalid && scope.fc.$touched;\n }\n }, function (show) {\n options.validation.errorExistsAndShouldBeVisible = show;\n scope.showError = show;\n });\n }\n\n function addValidationMessages(options) {\n options.validation.messages = options.validation.messages || {};\n angular.forEach(formlyValidationMessages.messages, function (expression, name) {\n if (!options.validation.messages[name]) {\n options.validation.messages[name] = function (viewValue, modelValue, scope) {\n return formlyUtil.formlyEval(scope, expression, modelValue, viewValue);\n };\n }\n });\n }\n\n function invokeControllers(scope) {\n var options = arguments[1] === undefined ? {} : arguments[1];\n var type = arguments[2] === undefined ? {} : arguments[2];\n\n angular.forEach([type.controller, options.controller], function (controller) {\n if (controller) {\n $controller(controller, { $scope: scope });\n }\n });\n }\n }],\n link: function fieldLink(scope, el) {\n var type = scope.options.type && formlyConfig.getType(scope.options.type);\n var args = arguments;\n var thusly = this;\n getFieldTemplate(scope.options).then(runManipulators(formlyConfig.templateManipulators.preWrapper)).then(transcludeInWrappers(scope.options)).then(runManipulators(formlyConfig.templateManipulators.postWrapper)).then(setElementTemplate)[\"catch\"](function (error) {\n 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 });\n\n function setElementTemplate(templateEl) {\n el.html(asHtml(templateEl));\n $compile(el.contents())(scope);\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 function runManipulators(manipulators) {\n return function runManipulatorsOnTemplate(template) {\n var chain = $q.when(template);\n angular.forEach(manipulators, function (manipulator) {\n chain = chain.then(function (template) {\n return $q.when(manipulator(template, scope.options, scope)).then(function (newTemplate) {\n return angular.isString(newTemplate) ? newTemplate : asHtml(newTemplate);\n });\n });\n });\n return chain;\n };\n }\n }\n };\n\n function asHtml(el) {\n var wrapper = angular.element(\"\");\n return wrapper.append(el).html();\n }\n\n function getFieldTemplate(options) {\n var type = formlyConfig.getType(options.type, true, options);\n var template = options.template || type && type.template;\n var templateUrl = options.templateUrl || type && type.templateUrl;\n if (!template && !templateUrl) {\n throw formlyUsability.getFieldError(\"template-type-type-not-supported\", \"template type '\" + options.type + \"' not supported. On element:\", options);\n }\n return getTemplate(template || templateUrl, !template);\n }\n\n function getTemplate(template, isUrl) {\n if (!isUrl) {\n return $q.when(template);\n } else {\n var httpOptions = { cache: $templateCache };\n return $http.get(template, httpOptions).then(function (response) {\n return response.data;\n })[\"catch\"](function (error) {\n formlyWarn(\"problem-loading-template-for-templateurl\", \"Problem loading template for \" + template, error);\n });\n }\n }\n\n function transcludeInWrappers(options) {\n var wrapper = getWrapperOption(options);\n\n return function transcludeTemplate(template) {\n if (!wrapper.length) {\n return $q.when(template);\n }\n\n wrapper.forEach(function (wrapper) {\n formlyUsability.checkWrapper(wrapper, options);\n });\n var promises = wrapper.map(function (w) {\n return getTemplate(w.template || w.templateUrl, !w.template);\n });\n return $q.all(promises).then(function (wrappersTemplates) {\n wrappersTemplates.forEach(function (wrapperTemplate, index) {\n formlyUsability.checkWrapperTemplate(wrapperTemplate, wrapper[index]);\n });\n wrappersTemplates.reverse(); // wrapper 0 is wrapped in wrapper 1 and so on...\n var totalWrapper = wrappersTemplates.shift();\n wrappersTemplates.forEach(function (wrapperTemplate) {\n totalWrapper = doTransclusion(totalWrapper, wrapperTemplate);\n });\n return doTransclusion(totalWrapper, template);\n });\n };\n }\n\n function doTransclusion(wrapper, template) {\n var superWrapper = angular.element(\"\"); // this allows people not have to have a single root in wrappers\n superWrapper.append(wrapper);\n var transcludeEl = superWrapper.find(\"formly-transclude\");\n transcludeEl.replaceWith(template);\n return superWrapper.html();\n }\n\n function getWrapperOption(options) {\n var 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 this type specified that it uses.\n var type = formlyConfig.getType(options.type, true, options);\n if (type && type.wrapper) {\n var typeWrappers = arrayify(type.wrapper).map(formlyConfig.getWrapper);\n wrapper = wrapper.concat(typeWrappers);\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, arguments, {\n prefix: \"formly-field directive\",\n url: \"formly-field-directive-validation-failed\"\n });\n // validate with the type\n var type = options.type && formlyConfig.getType(options.type);\n if (type && type.validateOptions) {\n type.validateOptions(options);\n }\n }\n }\n formlyField.$inject = [\"$http\", \"$q\", \"$compile\", \"$templateCache\", \"formlyConfig\", \"formlyValidationMessages\", \"formlyApiCheck\", \"formlyUtil\", \"formlyUsability\", \"formlyWarn\"];\n\n function arrayify(obj) {\n if (obj && !angular.isArray(obj)) {\n obj = [obj];\n } else if (!obj) {\n obj = [];\n }\n return obj;\n }\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./directives/formly-field.js\n ** module id = 4\n ** module chunks = 0\n **/","\"use strict\";\n\nmodule.exports = function (ngModule) {\n ngModule.directive(\"formlyFocus\", [\"$timeout\", \"$document\", function ($timeout, $document) {\n /* jshint -W052 */\n return {\n link: function link(scope, element, attrs) {\n var previousEl = null;\n var el = element[0];\n var doc = $document[0];\n attrs.$observe(\"formlyFocus\", function (value) {\n if (value === \"true\") {\n $timeout(function () {\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/*****************\n ** WEBPACK FOOTER\n ** ./directives/formly-focus.js\n ** module id = 5\n ** module chunks = 0\n **/","\"use strict\";\n\nvar _toConsumableArray = function (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\nvar _slice = Array.prototype.slice;\nvar angular = require(\"angular-fix\");\n\nmodule.exports = function (ngModule) {\n ngModule.directive(\"formlyForm\", formlyForm);\n\n formlyForm.tests = ON_TEST ? require(\"./formly-form.test\")(ngModule) : null;\n\n function formlyForm(formlyUsability) {\n var currentFormId = 1;\n return {\n restrict: \"E\",\n template: function template(el, attrs) {\n /* jshint -W033 */ // this because jshint is broken I guess...\n var rootEl = attrs.rootEl || \"ng-form\";\n return \"\\n <\" + rootEl + \" class=\\\"formly\\\"\\n name=\\\"form\\\"\\n role=\\\"form\\\">\\n
\\n
\\n
\\n \\n \";\n },\n replace: true,\n transclude: true,\n scope: {\n fields: \"=\",\n model: \"=\", // we'll do our own warning to help with migrations\n form: \"=?\",\n options: \"=?\"\n },\n controller: [\"$scope\", function controller($scope) {\n $scope.formId = \"formly_\" + currentFormId++;\n $scope.options = $scope.options || {};\n $scope.options.formState = $scope.options.formState || {};\n\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 // watch the model and evaluate watch expressions that depend on it.\n $scope.$watch(\"model\", function onResultUpdate(newResult) {\n angular.forEach($scope.fields, function (field) {\n /*jshint -W030 */\n field.runExpressions && field.runExpressions(newResult);\n });\n }, true);\n\n function attachKey(field, index) {\n field.key = field.key || index || 0;\n }\n\n function setupWatchers(field, index) {\n if (!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 (watcher) {\n if (!angular.isDefined(watcher.listener)) {\n throw formlyUsability.getFieldError(\"all-field-watchers-must-have-a-listener\", \"All field watchers must have a listener\", field);\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.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n return originalExpression.apply(undefined, _toConsumableArray(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.apply(undefined, [watcher, index].concat(_slice.call(arguments)));\n return originalListener.apply(undefined, _toConsumableArray(args));\n };\n watchListener.displayName = \"Formly Watch Listener for field for \" + field.key;\n }\n return watchListener;\n }\n\n function modifyArgs(watcher, index) {\n for (var _len = arguments.length, originalArgs = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n originalArgs[_key - 2] = arguments[_key];\n }\n\n return [$scope.fields[index]].concat(originalArgs, [watcher.stopWatching]);\n }\n }],\n link: function link(scope, el, attrs) {\n if (attrs.hasOwnProperty(\"result\")) {\n throw formlyUsability.getFormlyError(\"The \\\"result\\\" attribute on a formly-form is no longer valid. Use \\\"model\\\" instead\");\n }\n if (attrs.name !== \"form\") {\n // then they specified their own name\n throw formlyUsability.getFormlyError(\"The \\\"name\\\" attribute on a formly-form is no longer valid. Use \\\"form\\\" instead\");\n }\n }\n };\n }\n formlyForm.$inject = [\"formlyUsability\"];\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./directives/formly-form.js\n ** module id = 6\n ** module chunks = 0\n **/","\"use strict\";\n\nmodule.exports = function (ngModule) {\n require(\"./formly-custom-validation\")(ngModule);\n require(\"./formly-field\")(ngModule);\n require(\"./formly-form\")(ngModule);\n require(\"./formly-focus\")(ngModule);\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./directives/index.js\n ** module id = 7\n ** module chunks = 0\n **/","\"use strict\";\n\nvar ngModuleName = \"formly\";\nvar angular = require(\"./angular-fix\");\nvar ngModule = angular.module(ngModuleName, []);\n\nrequire(\"./providers\")(ngModule);\nrequire(\"./services\")(ngModule);\nrequire(\"./directives\")(ngModule);\nrequire(\"./run\")(ngModule);\n\nmodule.exports = ngModuleName;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./index.common.js\n ** module id = 8\n ** module chunks = 0\n **/","\"use strict\";\n\nmodule.exports = function (ngModule) {\n\n var apiCheck = require(\"api-check\")({\n output: {\n prefix: \"angular-formly:\",\n docsBaseUrl: \"https://github.com/formly-js/angular-formly/blob/\" + VERSION + \"/other/ERRORS_AND_WARNINGS.md#\"\n }\n });\n\n ngModule.constant(\"formlyApiCheck\", apiCheck);\n if (ON_TEST) {\n require(\"./formlyApiCheck.test\")(ngModule);\n }\n\n var formlyExpression = apiCheck.oneOfType([apiCheck.string, apiCheck.func]);\n var wrapperType = apiCheck.oneOfType([apiCheck.oneOf([null]), apiCheck.typeOrArrayOf(apiCheck.string)]);\n\n var fieldOptionsApiShape = {\n type: apiCheck.shape.ifNot([\"template\", \"templateUrl\"], apiCheck.string).optional,\n template: apiCheck.shape.ifNot([\"type\", \"templateUrl\"], apiCheck.string).optional,\n templateUrl: apiCheck.shape.ifNot([\"type\", \"template\"], apiCheck.string).optional,\n key: apiCheck.oneOfType([apiCheck.string, apiCheck.number]),\n model: apiCheck.object.optional,\n expressionProperties: apiCheck.objectOf(apiCheck.oneOfType([formlyExpression, apiCheck.shape({\n expression: formlyExpression,\n message: formlyExpression.optional\n }).strict])).optional,\n data: apiCheck.object.optional,\n templateOptions: apiCheck.object.optional,\n wrapper: wrapperType.optional,\n modelOptions: apiCheck.shape({\n updateOn: apiCheck.string.optional,\n debounce: apiCheck.oneOfType([apiCheck.object, apiCheck.string]).optional,\n allowInvalid: apiCheck.bool.optional,\n getterSetter: apiCheck.bool.optional,\n timezone: apiCheck.string.optional\n }).optional,\n watcher: apiCheck.typeOrArrayOf(apiCheck.shape({\n expression: formlyExpression.optional,\n listener: formlyExpression\n })).optional,\n validators: apiCheck.objectOf(apiCheck.oneOfType([apiCheck.func, apiCheck.shape({\n expression: formlyExpression,\n message: formlyExpression.optional\n }).strict])).optional,\n noFormControl: apiCheck.bool.optional,\n hide: apiCheck.bool.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 optionsTypes: apiCheck.typeOrArrayOf(apiCheck.string).optional,\n link: apiCheck.func.optional,\n controller: apiCheck.oneOfType([apiCheck.string, apiCheck.func, apiCheck.array]).optional,\n validation: apiCheck.shape({\n show: apiCheck.oneOfType([apiCheck.bool, apiCheck.oneOf([null])]).optional,\n messages: apiCheck.objectOf(apiCheck.func).optional,\n errorExistsAndShouldBeVisible: apiCheck.bool.optional\n }).optional,\n formControl: apiCheck.object.optional,\n value: apiCheck.func.optional,\n runExpressions: apiCheck.func.optional\n };\n\n var formlyFieldOptions = apiCheck.shape(fieldOptionsApiShape).strict;\n\n var typeOptionsDefaultOptions = angular.copy(fieldOptionsApiShape);\n typeOptionsDefaultOptions.key = apiCheck.string.optional;\n\n var formlyTypeOptions = apiCheck.shape({\n name: apiCheck.string,\n template: apiCheck.shape.ifNot(\"templateUrl\", apiCheck.string).optional,\n templateUrl: apiCheck.shape.ifNot(\"template\", apiCheck.string).optional,\n controller: apiCheck.oneOfType([apiCheck.func, apiCheck.string, apiCheck.array]).optional,\n link: apiCheck.func.optional,\n defaultOptions: apiCheck.oneOfType([apiCheck.func, apiCheck.shape(typeOptionsDefaultOptions)]).optional,\n \"extends\": apiCheck.string.optional,\n wrapper: wrapperType.optional,\n data: apiCheck.object.optional,\n validateOptions: apiCheck.func.optional,\n overwriteOk: apiCheck.bool.optional\n }).strict;\n\n angular.extend(apiCheck, {\n formlyTypeOptions: formlyTypeOptions, formlyFieldOptions: formlyFieldOptions, formlyExpression: formlyExpression\n });\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./providers/formlyApiCheck.js\n ** module id = 9\n ** module chunks = 0\n **/","\"use strict\";\n\nvar angular = require(\"angular-fix\");\nvar utils = require(\"../other/utils\");\n\nmodule.exports = function (ngModule) {\n ngModule.provider(\"formlyConfig\", formlyConfig);\n\n formlyConfig.tests = ON_TEST ? require(\"./formlyConfig.test\")(ngModule) : null;\n\n function formlyConfig(formlyUsabilityProvider, formlyApiCheck) {\n var _this2 = this;\n\n var typeMap = {};\n var templateWrappersMap = {};\n var defaultWrapperName = \"default\";\n var _this = this;\n var getError = formlyUsabilityProvider.getFormlyError;\n var allowedTypeProperties = [\"name\", \"template\", \"templateUrl\", \"controller\", \"link\", \"defaultOptions\", \"extends\", \"wrapper\", \"data\", \"validateOptions\", \"overwriteOk\"];\n\n angular.extend(this, {\n setType: setType,\n getType: getType,\n setWrapper: setWrapper,\n getWrapper: getWrapper,\n getWrapperByType: getWrapperByType,\n removeWrapperByName: removeWrapperByName,\n removeWrappersForType: removeWrappersForType,\n disableWarnings: false,\n extras: {\n disableNgModelAttrsManipulator: false,\n ngModelAttrsManipulatorPreferBound: false\n },\n templateManipulators: {\n preWrapper: [],\n postWrapper: []\n },\n $get: function () {\n return _this2;\n }\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, arguments, {\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 formlyUsabilityProvider.checkAllowedProperties(allowedTypeProperties, options);\n }\n\n function extendTypeOptions(options) {\n var 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 }\n\n function extendTypeControllerFunction(options, extendsType) {\n var extendsCtrl = extendsType.controller;\n if (!angular.isDefined(extendsCtrl)) {\n return;\n }\n var optionsCtrl = options.controller;\n if (angular.isDefined(optionsCtrl)) {\n options.controller = function ($scope, $controller) {\n $controller(extendsCtrl, { $scope: $scope });\n $controller(optionsCtrl, { $scope: $scope });\n };\n options.controller.$inject = [\"$scope\", \"$controller\"];\n } else {\n options.controller = extendsCtrl;\n }\n }\n\n function extendTypeLinkFunction(options, extendsType) {\n var extendsFn = extendsType.link;\n if (!angular.isDefined(extendsFn)) {\n return;\n }\n var optionsFn = options.link;\n if (angular.isDefined(optionsFn)) {\n options.link = function () {\n extendsFn.apply(undefined, arguments);\n optionsFn.apply(undefined, arguments);\n };\n } else {\n options.link = extendsFn;\n }\n }\n\n function extendTypeValidateOptionsFunction(options, extendsType) {\n var extendsFn = extendsType.validateOptions;\n if (!angular.isDefined(extendsFn)) {\n return;\n }\n var optionsFn = options.validateOptions;\n var originalDefaultOptions = options.defaultOptions;\n if (angular.isDefined(optionsFn)) {\n options.validateOptions = function (options) {\n optionsFn(options);\n var mergedOptions = angular.copy(options);\n var 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 var extendsDO = extendsType.defaultOptions;\n if (!angular.isDefined(extendsDO)) {\n return;\n }\n var optionsDO = options.defaultOptions;\n var optionsDOIsFn = angular.isFunction(optionsDO);\n var extendsDOIsFn = angular.isFunction(extendsDO);\n if (extendsDOIsFn) {\n options.defaultOptions = function defaultOptions(options) {\n var extendsDefaultOptions = extendsDO(options);\n var mergedDefaultOptions = {};\n utils.reverseDeepMerge(mergedDefaultOptions, options, extendsDefaultOptions);\n if (optionsDOIsFn) {\n return optionsDO(mergedDefaultOptions);\n } else {\n utils.reverseDeepMerge(extendsDefaultOptions, optionsDO);\n return extendsDefaultOptions;\n }\n };\n } else if (optionsDOIsFn) {\n options.defaultOptions = function defaultOptions(options) {\n var newDefaultOptions = {};\n utils.reverseDeepMerge(newDefaultOptions, options, 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(\"There is no type by the name of \\\"\" + name + \"\\\": \" + JSON.stringify(errorContext));\n } else {\n return type;\n }\n }\n\n function setWrapper(_x, _x2) {\n var _again = true;\n\n _function: while (_again) {\n _again = false;\n var options = _x,\n name = _x2;\n\n if (angular.isArray(options)) {\n return options.map(function (wrapperOptions) {\n return setWrapper(wrapperOptions);\n });\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 _x = {\n template: options,\n name: name\n };\n _again = true;\n continue _function;\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 var 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([\"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 }\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;\n }\n if (!angular.isArray(wrappers)) {\n return removeWrapperByName(wrappers.name);\n } else {\n wrappers.forEach(function (wrapper) {\n return removeWrapperByName(wrapper.name);\n });\n return wrappers;\n }\n }\n\n function warn() {\n if (!_this.disableWarnings) {\n console.warn.apply(console, arguments);\n }\n }\n }\n formlyConfig.$inject = [\"formlyUsabilityProvider\", \"formlyApiCheck\"];\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./providers/formlyConfig.js\n ** module id = 10\n ** module chunks = 0\n **/","\"use strict\";\n\nmodule.exports = function (ngModule) {\n ngModule.constant(\"formlyErrorAndWarningsUrlPrefix\", \"https://github.com/formly-js/angular-formly/wiki/Errors-and-Warnings#\");\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./providers/formlyErrorAndWarningsUrlPrefix.js\n ** module id = 11\n ** module chunks = 0\n **/","\"use strict\";\n\nvar angular = require(\"angular-fix\");\n\nmodule.exports = function (ngModule) {\n ngModule.provider(\"formlyUsability\", [\"formlyVersion\", function (formlyVersion) {\n var _this = this;\n\n var errorsAndWarningsUrlPrefix = \"https://github.com/formly-js/angular-formly/blob/\" + formlyVersion + \"/other/ERRORS_AND_WARNINGS.md#\";\n angular.extend(this, {\n getFormlyError: getFormlyError,\n getFieldError: getFieldError,\n checkWrapper: checkWrapper,\n checkWrapperTemplate: checkWrapperTemplate,\n checkAllowedProperties: checkAllowedProperties,\n $get: function () {\n return _this;\n }\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 var url = \"\";\n if (errorInfoSlug !== null) {\n url = \"\" + errorsAndWarningsUrlPrefix + \"\" + errorInfoSlug;\n }\n return \"Formly Error: \" + message + \". \" + url;\n }\n\n function checkWrapper(wrapper, options) {\n if (wrapper.template && wrapper.templateUrl) {\n throw getFormlyError(\"Template wrappers can only have a templateUrl or a template. \" + (\"This one provided both: \" + JSON.stringify(wrapper)));\n }\n if (!wrapper.template && !wrapper.templateUrl) {\n throw getFormlyError(\"Template wrappers must have one of a templateUrl or a template. \" + (\"This one provided neither: \" + JSON.stringify(wrapper)));\n }\n wrapper.validateOptions && wrapper.validateOptions(options);\n }\n\n function checkWrapperTemplate(template, additionalInfo) {\n var formlyTransclude = \"\";\n if (template.indexOf(formlyTransclude) === -1) {\n 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 }\n }\n\n function checkAllowedProperties(allowedProperties, obj, context) {\n var extraProps = Object.keys(obj).filter(function (prop) {\n return allowedProperties.indexOf(prop) === -1;\n });\n if (extraProps.length) {\n var extraPropsJSON = JSON.stringify(extraProps.join(\", \"));\n var allowedPropsJSON = JSON.stringify(allowedProperties.join(\", \"));\n throw getFieldError(\"you-have-specified-properties-for-context-that-are-not-allowed\", [\"You have specified properties for \" + context + \" that are not allowed: \" + extraPropsJSON, \"Allowed properties are: \" + allowedPropsJSON].join(\"\\n\"), obj);\n }\n }\n }]);\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./providers/formlyUsability.js\n ** module id = 12\n ** module chunks = 0\n **/","\"use strict\";\n\nmodule.exports = function (ngModule) {\n ngModule.factory(\"formlyValidationMessages\", function () {\n\n var formlyValidationMessages = {\n addTemplateOptionValueMessage: addTemplateOptionValueMessage,\n addStringMessage: addStringMessage,\n messages: {}\n };\n\n return formlyValidationMessages;\n\n function addTemplateOptionValueMessage(name, prop, prefix, suffix, alternate) {\n formlyValidationMessages.messages[name] = templateOptionValue(prop, prefix, suffix, alternate);\n }\n\n function addStringMessage(name, string) {\n formlyValidationMessages.messages[name] = function () {\n return 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/*****************\n ** WEBPACK FOOTER\n ** ./providers/formlyValidationMessages.js\n ** module id = 13\n ** module chunks = 0\n **/","\"use strict\";\n\nmodule.exports = function (ngModule) {\n ngModule.constant(\"formlyVersion\", VERSION);\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./providers/formlyVersion.js\n ** module id = 14\n ** module chunks = 0\n **/","\"use strict\";\n\nmodule.exports = function (ngModule) {\n require(\"./formlyApiCheck\")(ngModule);\n require(\"./formlyUsability\")(ngModule);\n require(\"./formlyConfig\")(ngModule);\n require(\"./formlyVersion\")(ngModule);\n require(\"./formlyErrorAndWarningsUrlPrefix\")(ngModule);\n require(\"./formlyValidationMessages\")(ngModule);\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./providers/index.js\n ** module id = 15\n ** module chunks = 0\n **/","\"use strict\";\n\nmodule.exports = function (ngModule) {\n ngModule.run(addFormlyNgModelAttrsManipulator);\n\n function addFormlyNgModelAttrsManipulator(formlyConfig) {\n if (formlyConfig.extras.disableNgModelAttrsManipulator) {\n return;\n }\n formlyConfig.templateManipulators.preWrapper.push(ngModelAttrsManipulator);\n\n function ngModelAttrsManipulator(template, options, scope) {\n /* jshint maxcomplexity:7 */\n var el = angular.element(\"\");\n var data = options.data;\n if (data.noTouchy) {\n return template;\n }\n el.append(template);\n var modelEls = angular.element(el[0].querySelectorAll(\"[ng-model]\"));\n if (!modelEls || !modelEls.length) {\n return template;\n }\n\n addIfNotPresent(modelEls, \"id\", scope.id);\n addIfNotPresent(modelEls, \"name\", scope.id);\n\n if (angular.isDefined(options.validators)) {\n addIfNotPresent(modelEls, \"formly-custom-validation\", \"options.validators\");\n }\n if (angular.isDefined(options.modelOptions)) {\n addIfNotPresent(modelEls, \"ng-model-options\", \"options.modelOptions\");\n if (options.modelOptions.getterSetter) {\n modelEls.attr(\"ng-model\", \"options.value\");\n }\n }\n addTemplateOptionsAttrs();\n\n return el.html();\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 var to = options.templateOptions || {};\n var ep = options.expressionProperties || {};\n\n var ngModelAttributes = getBuiltinAttributes();\n\n // extend with the user's specifications winning\n angular.extend(ngModelAttributes, options.ngModelAttrs);\n\n angular.forEach(ngModelAttributes, function (val, name) {\n /* jshint maxcomplexity:10 */\n var attrVal = undefined;\n var attrName = undefined;\n var ref = \"options.templateOptions['\" + name + \"']\";\n var toVal = to[name];\n var epVal = getEpValue(ep, name);\n\n var inTo = angular.isDefined(toVal);\n var 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(\"options.templateOptions.\" + name + \" must be a string or function: \" + JSON.stringify(options));\n }\n } else if (val.bound && inEp) {\n attrName = val.bound;\n attrVal = ref;\n } else if (val.attribute && inEp) {\n attrName = val.attribute;\n attrVal = \"{{\" + ref + \"}}\";\n } else if (val.attribute && inTo) {\n attrName = val.attribute;\n attrVal = toVal;\n } else if (val.bound && inTo) {\n attrName = val.bound;\n attrVal = ref;\n }\n if (angular.isDefined(attrName) && angular.isDefined(attrVal)) {\n addIfNotPresent(modelEls, attrName, attrVal);\n }\n });\n }\n\n function getBuiltinAttributes() {\n var ngModelAttributes = {\n focus: {\n attribute: \"formly-focus\"\n }\n };\n var boundOnly = [];\n var bothAttributeAndBound = [\"required\", \"disabled\", \"pattern\", \"minlength\"];\n var expressionOnly = [\"change\", \"keydown\", \"keyup\", \"keypress\", \"click\", \"focus\", \"blur\"];\n var attributeOnly = [\"placeholder\", \"min\", \"max\", \"tabindex\", \"type\"];\n if (formlyConfig.extras.ngModelAttrsManipulatorPreferBound) {\n boundOnly.push(\"maxlength\");\n } else {\n bothAttributeAndBound.push(\"maxlength\");\n }\n\n angular.forEach(boundOnly, function (item) {\n ngModelAttributes[item] = { bound: \"ng-\" + item };\n });\n\n angular.forEach(bothAttributeAndBound, function (item) {\n ngModelAttributes[item] = { attribute: item, bound: \"ng-\" + item };\n });\n\n angular.forEach(expressionOnly, function (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, function (item) {\n ngModelAttributes[item] = { attribute: item };\n });\n return ngModelAttributes;\n }\n\n function getEpValue(ep, name) {\n return ep[\"templateOptions.\" + name] || ep[\"templateOptions['\" + name + \"']\"] || ep[\"templateOptions[\\\"\" + name + \"\\\"]\"];\n }\n\n function addIfNotPresent(el, attr, val) {\n if (!el.attr(attr)) {\n el.attr(attr, val);\n }\n }\n }\n }\n addFormlyNgModelAttrsManipulator.$inject = [\"formlyConfig\"];\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./run/formlyNgModelAttrsManipulator.js\n ** module id = 16\n ** module chunks = 0\n **/","\"use strict\";\n\nmodule.exports = function (ngModule) {\n require(\"./formlyNgModelAttrsManipulator\")(ngModule);\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./run/index.js\n ** module id = 17\n ** module chunks = 0\n **/","\"use strict\";\n\nvar utils = require(\"../other/utils\");\n\nmodule.exports = function (ngModule) {\n ngModule.factory(\"formlyUtil\", formlyUtil);\n\n formlyUtil.tests = ON_TEST ? require(\"./formlyUtil.test\")(ngModule) : null;\n\n function formlyUtil() {\n return utils;\n }\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./services/formlyUtil.js\n ** module id = 18\n ** module chunks = 0\n **/","\"use strict\";\n\nvar _toConsumableArray = function (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\nmodule.exports = function (ngModule) {\n ngModule.factory(\"formlyWarn\", [\"formlyConfig\", \"formlyErrorAndWarningsUrlPrefix\", \"$log\", function (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.apply($log, _toConsumableArray(args));\n }\n };\n }]);\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./services/formlyWarn.js\n ** module id = 19\n ** module chunks = 0\n **/","\"use strict\";\n\nmodule.exports = function (ngModule) {\n require(\"./formlyUtil\")(ngModule);\n require(\"./formlyWarn\")(ngModule);\n};\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./services/index.js\n ** module id = 20\n ** module chunks = 0\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_21__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external \"angular\"\n ** module id = 21\n ** module chunks = 0\n **/","module.exports = __WEBPACK_EXTERNAL_MODULE_22__;\n\n\n/*****************\n ** WEBPACK FOOTER\n ** external {\"root\":\"apiCheck\",\"amd\":\"api-check\",\"commonjs2\":\"api-check\",\"commonjs\":\"api-check\"}\n ** module id = 22\n ** module chunks = 0\n **/"],"sourceRoot":"","file":"formly.min.js"}