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