UNPKG

angular-formly

Version:

AngularJS directive which takes JSON representing a form and renders to HTML

4 lines (3 loc) 23.2 kB
// angular-formly version 4.2.2 built with ♥ by Astrism <astrisms@gmail.com>, Kent C. Dodds <kent@doddsfamily.us> (ó ì_í)=óò=(ì_í ò) !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("api-check"),require("angular")):"function"==typeof define&&define.amd?define(["api-check","angular"],t):"object"==typeof exports?exports.ngFormly=t(require("api-check"),require("angular")):e.ngFormly=t(e.apiCheck,e.angular)}(this,function(e,t){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";e.exports=n(10)},function(e,t,n){"use strict";var r=n(24);r.version||(r=window.angular),e.exports=r},function(e){"use strict";e.exports="https://github.com/formly-js/angular-formly/blob/4.2.2/other/ERRORS_AND_WARNINGS.md#"},function(e,t,n){"use strict";function r(e,t,n,r){return l.isFunction(t)?t(r||n,n,e):e.$eval(t,{$viewValue:r||n,$modelValue:n})}function o(e,t,n){var r=t.type;return!r&&t.template?r="template":!r&&t.templateUrl&&(r="templateUrl"),[e,r,t.key,n].join("_")}function i(e){l.forEach(arguments,function(t,n){n&&l.forEach(t,function(t,n){l.isDefined(e[n])?a(e[n],t)&&i(e[n],t):e[n]=l.copy(t)})})}function a(e,t){return l.isObject(e)&&l.isObject(t)&&Object.getPrototypeOf(e)===Object.getPrototypeOf(t)}function s(e,t){if(e.prop||(e=l.element(e)),e.prop("nodeName")===t.toUpperCase())return e;for(var n=e.children(),r=0;n&&r<n.length;r++){var o=s(n[r],t);if(o)return o}}var l=n(1);e.exports={formlyEval:r,getFieldId:o,reverseDeepMerge:i,findByNodeName:s}},function(t){t.exports=e},function(e){"use strict";e.exports=function(e){function t(e,t){function n(e){return e&&angular.isFunction(e.then)}function r(e){var t=["expression","message"],n={};if(angular.forEach(e,function(e,r){if(!angular.isString(e)){var o=[];angular.forEach(e,function(e,n){-1===t.indexOf(n)&&o.push(n)}),o.length&&(n[r]=o)}}),Object.keys(n).length)throw new Error(["Validators are only allowed to be functions or objects that have "+t.join(", ")+".","You provided some extra properties: "+JSON.stringify(n)].join(" "))}return{restrict:"A",require:"ngModel",link:function(o,i,a,s){var l=o.$eval(a.formlyCustomValidation);if(l){r(l),o.options.validation.messages=o.options.validation.messages||{};var p=s.hasOwnProperty("$validators")&&!a.hasOwnProperty("useParsers");angular.forEach(l,function(r,i){function a(){var a=u?"$asyncValidators":"$validators";s[a][i]=function(i,a){var s=e.formlyEval(o,r,i,a);return u?n(s)?s:s?t.when(s):t.reject(s):s}}function l(){var t=void 0;s.$parsers.unshift(function(a){var l=e.formlyEval(o,r,s.$modelValue,a);return n(l)?(s.$pending=s.$pending||{},s.$pending[i]=!0,t=l,l.then(function(){t===l&&s.$setValidity(i,!0)})["catch"](function(){t===l&&s.$setValidity(i,!1)})["finally"](function(){1===Object.keys(s.$pending).length?delete s.$pending:delete s.$pending[i]})):s.$setValidity(i,l),a})}var f=r.message;f&&(o.options.validation.messages[i]=function(){return e.formlyEval(o,f,s.$modelValue,s.$viewValue)}),r=angular.isObject(r)?r.expression:r;var u=!angular.isString(r);p?a():l()})}}}}e.directive("formlyCustomValidation",t),t.tests=null,t.$inject=["formlyUtil","$q"]}},function(e,t,n){"use strict";var r=n(1);e.exports=function(e){function t(e,t,o,i,a,s,l,p,f,u){function c(e){var t=r.element("<a></a>");return t.append(e).html()}function m(e){var t=a.getType(e.type,!0,e),n=e.template||t&&t.template,r=e.templateUrl||t&&t.templateUrl;if(!n&&!r)throw f.getFieldError("type-type-has-no-template","Type '"+e.type+"' has not template. On element:",e);return d(n||r,!n)}function d(n,r){if(r){var o={cache:i};return e.get(n,o).then(function(e){return e.data})["catch"](function(e){u("problem-loading-template-for-templateurl","Problem loading template for "+n,e)})}return t.when(n)}function y(e){var n=g(e);return function(r){if(!n.length)return t.when(r);n.forEach(function(t){f.checkWrapper(t,e),t.validateOptions&&t.validateOptions(e),O(t,e)});var o=n.map(function(e){return d(e.template||e.templateUrl,!e.template)});return t.all(o).then(function(e){e.forEach(function(e,t){f.checkWrapperTemplate(e,n[t])}),e.reverse();var t=e.shift();return e.forEach(function(e){t=h(t,e)}),h(t,r)})}}function h(e,t){var n=r.element("<a></a>");n.append(e);var o=n.find("formly-transclude");return o.length||(o=p.findByNodeName(n,"formly-transclude")),o.replaceWith(t),n.html()}function g(e){var t=e.wrapper;if(null===t)return[];t=t?n(t).map(a.getWrapper):n(a.getWrapperByType(e.type));var r=a.getType(e.type,!0,e);if(r&&r.wrapper){var o=n(r.wrapper).map(a.getWrapper);t=t.concat(o)}var i=a.getWrapper();return i&&t.push(i),t}function v(e){l["throw"](l.formlyFieldOptions,arguments,{prefix:"formly-field directive",url:"formly-field-directive-validation-failed"});var t=e.type&&a.getType(e.type);t&&(t.validateOptions&&t.validateOptions(e),O(t,e))}function O(e,t){var n=e.apiCheck,r=e.apiCheckInstance,o=e.apiCheckFunction,i=e.apiCheckOptions;if(n){var a=r||l,s=o||"warn",p=a.shape(n);a[s](p,[t],i||{prefix:"formly-field "+name,url:l.config.output.docsBaseUrl+"formly-field-type-apicheck-failed"})}}return{restrict:"AE",transclude:!0,scope:{options:"=",model:"=",formId:"=?",index:"=?",fields:"=?",formState:"=?",form:"=?"},controller:["$scope","$timeout","$parse","$controller",function(e,o,i,l){function f(){o(function(){var n=e.options,o=u();r.forEach(n.expressionProperties,function(r,a){var s=i(a).assign,l=t.when(p.formlyEval(e,r,o));l.then(function(e){s(n,e)})})})}function u(t){return e.model&&e.options.key?(r.isDefined(t)&&(e.model[e.options.key]=t),e.model[e.options.key]):void 0}function c(e){p.reverseDeepMerge(e,{data:{},templateOptions:{},validation:{}})}function m(e,t){t&&d(e,t.defaultOptions);var o=n(e.optionsTypes).reverse();r.forEach(o,function(t){d(e,a.getType(t,!0,e).defaultOptions)})}function d(e,t){t&&(r.isFunction(t)&&(t=t(e)),p.reverseDeepMerge(e,t))}function y(e,t){r.extend(e,{key:e.key||t||0,value:u,runExpressions:f})}function h(e,t){t.noFormControl||e.$watch('form["'+e.id+'"]',function(n){n&&(e.fc=n,e.options.formControl=n,O(e,t))})}function g(e,t){t.model&&e.$watch("options.model",f,!0)}function O(e,t){e.$watch(function(){return"boolean"==typeof e.options.validation.show?e.fc.$invalid&&e.options.validation.show:e.fc.$invalid&&e.fc.$touched},function(n){t.validation.errorExistsAndShouldBeVisible=n,e.showError=n})}function b(e){e.validation.messages=e.validation.messages||{},r.forEach(s.messages,function(t,n){e.validation.messages[n]||(e.validation.messages[n]=function(e,n,r){return p.formlyEval(r,t,n,e)})})}function x(e){var t=void 0===arguments[1]?{}:arguments[1],n=void 0===arguments[2]?{}:arguments[2];r.forEach([n.controller,t.controller],function(t){t&&l(t,{$scope:e})})}var w=e.options,k=w.type&&a.getType(w.type);c(w),m(w,k),y(w,e.index),v(w),e.id=p.getFieldId(e.formId,w,e.index),f(),h(e,w),g(e,w),b(w),e.to=e.options.templateOptions,x(e,w,k)}],link:function(e,n){function i(t){n.html(c(t)),o(n.contents())(e),l&&l.link&&l.link.apply(f,p),e.options.link&&e.options.link.apply(f,p)}function s(n){return function(o){var i=t.when(o);return r.forEach(n,function(n){i=i.then(function(o){return t.when(n(o,e.options,e)).then(function(e){return r.isString(e)?e:c(e)})})}),i}}var l=e.options.type&&a.getType(e.options.type),p=arguments,f=this;m(e.options).then(s(a.templateManipulators.preWrapper)).then(y(e.options)).then(s(a.templateManipulators.postWrapper)).then(i)["catch"](function(t){u("there-was-a-problem-setting-the-template-for-this-field","There was a problem setting the template for this field ",e.options,t)})}}}function n(e){return e&&!r.isArray(e)?e=[e]:e||(e=[]),e}e.directive("formlyField",t),t.tests=null,t.$inject=["$http","$q","$compile","$templateCache","formlyConfig","formlyValidationMessages","formlyApiCheck","formlyUtil","formlyUsability","formlyWarn"]}},function(e){"use strict";e.exports=function(e){e.directive("formlyFocus",["$timeout","$document",function(e,t){return{restrict:"A",link:function(n,r,o){var i=null,a=r[0],s=t[0];o.$observe("formlyFocus",function(t){"true"===t?e(function(){i=s.activeElement,a.focus()},~~o.focusWait):"false"===t&&s.activeElement===a&&(a.blur(),o.hasOwnProperty("refocus")&&i&&i.focus())})}}}])}},function(e,t,n){"use strict";var r=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)},o=Array.prototype.slice,i=n(1);e.exports=function(e){function t(e){var t=1;return{restrict:"E",template:function(e,t){var n=t.rootEl||"ng-form";return"\n <"+n+' class="formly"\n name="form"\n role="form">\n <div formly-field\n ng-repeat="field in fields track by $index"\n ng-if="!field.hide"\n class="formly-field {{field.type ? \'formly-field-\' + field.type : \'\'}}"\n options="field"\n model="field.model || model"\n fields="fields"\n form="form"\n form-id="formId"\n form-state="options.formState"\n index="$index">\n </div>\n <div ng-transclude></div>\n </'+n+">\n "},replace:!0,transclude:!0,scope:{fields:"=",model:"=",form:"=?",options:"=?"},controller:["$scope",function(n){function a(e,t){e.key=e.key||t||0}function s(t,r){if(i.isDefined(t.watcher)){var o=t.watcher;i.isArray(o)||(o=[o]),i.forEach(o,function(o){if(!i.isDefined(o.listener))throw e.getFieldError("all-field-watchers-must-have-a-listener","All field watchers must have a listener",t);var a=l(o,t,r),s=p(o,t,r),f=o.type||"$watch";o.stopWatching=n[f](a,s,o.watchDeep)})}}function l(e,t,n){var a=e.expression||"model['"+t.key+"']";if(i.isFunction(a)){var s=a;a=function(){var t=f.apply(void 0,[e,n].concat(o.call(arguments)));return s.apply(void 0,r(t))},a.displayName="Formly Watch Expression for field for "+t.key}return a}function p(e,t,n){var a=e.listener;if(i.isFunction(a)){var s=a;a=function(){var t=f.apply(void 0,[e,n].concat(o.call(arguments)));return s.apply(void 0,r(t))},a.displayName="Formly Watch Listener for field for "+t.key}return a}function f(e,t){for(var r=arguments.length,o=Array(r>2?r-2:0),i=2;r>i;i++)o[i-2]=arguments[i];return[n.fields[t]].concat(o,[e.stopWatching])}n.formId="formly_"+t++,n.options=n.options||{},n.options.formState=n.options.formState||{},i.forEach(n.fields,a),i.forEach(n.fields,s),n.$watch("model",function(e){i.forEach(n.fields,function(t){t.runExpressions&&t.runExpressions(e)})},!0)}],link:function(t,n,r){if(r.hasOwnProperty("result"))throw e.getFormlyError('The "result" attribute on a formly-form is no longer valid. Use "model" instead');if("form"!==r.name)throw e.getFormlyError('The "name" attribute on a formly-form is no longer valid. Use "form" instead')}}}e.directive("formlyForm",t),t.tests=null,t.$inject=["formlyUsability"]}},function(e,t,n){"use strict";e.exports=function(e){n(5)(e),n(6)(e),n(8)(e),n(7)(e)}},function(e,t,n){"use strict";var r=n(4);if(!r)throw new Error("angular-formly requires the library apiCheck.js! Please include it! "+n(2)+"apicheckjs-dependency-required");var o="formly",i=n(1),a=i.module(o,[]);n(17)(a),n(23)(a),n(9)(a),n(20)(a),e.exports=o},function(e,t,n){"use strict";e.exports=function(e){function t(e,t){function n(n,i,a,s){var l=s&&s.hasOwnProperty(i),p=e.some(function(e){return s&&s.hasOwnProperty(e)});return p||l?l?t(n,i,a,s):void 0:r.utils.getError(i,a,o)}angular.isArray(e)||(e=[e]);var o="specified if these are not specified: `"+e.join(", ")+"` (otherwise it's optional)";return n.type=o,r.utils.checkerHelpers.setupChecker(n),n}var r=n(4)({output:{prefix:"angular-formly:",docsBaseUrl:n(2)}});e.constant("formlyApiCheck",r);var o=r.oneOfType([r.string,r.func]),i=r.oneOfType([r.oneOf([null]),r.typeOrArrayOf(r.string)]),a=r.objectOf(r.func),s=r.shape.onlyIf("apiCheck",r.func.withProperties({warn:r.func,"throw":r.func,shape:r.func})),l=r.shape.onlyIf("apiCheck",r.oneOf(["throw","warn"])),p=r.shape({name:t("types",r.string).optional,template:r.shape.ifNot("templateUrl",r.string).optional,templateUrl:r.shape.ifNot("template",r.string).optional,types:r.typeOrArrayOf(r.string).optional,overwriteOk:r.bool.optional,validateOptions:r.func.optional,apiCheck:a.optional,apiCheckInstance:s.optional,apiCheckFunction:l.optional,apiCheckOptions:r.object.optional}).strict,f={type:r.shape.ifNot(["template","templateUrl"],r.string).optional,template:r.shape.ifNot(["type","templateUrl"],r.string).optional,templateUrl:r.shape.ifNot(["type","template"],r.string).optional,key:r.oneOfType([r.string,r.number]),model:r.object.optional,expressionProperties:r.objectOf(r.oneOfType([o,r.shape({expression:o,message:o.optional}).strict])).optional,data:r.object.optional,templateOptions:r.object.optional,wrapper:i.optional,modelOptions:r.shape({updateOn:r.string.optional,debounce:r.oneOfType([r.object,r.string]).optional,allowInvalid:r.bool.optional,getterSetter:r.bool.optional,timezone:r.string.optional}).optional,watcher:r.typeOrArrayOf(r.shape({expression:o.optional,listener:o})).optional,validators:r.objectOf(r.oneOfType([o,r.shape({expression:o,message:o.optional}).strict])).optional,noFormControl:r.bool.optional,hide:r.bool.optional,ngModelAttrs:r.objectOf(r.shape({expression:r.shape.ifNot(["value","attribute","bound"],r.any).optional,value:r.shape.ifNot("expression",r.any).optional,attribute:r.shape.ifNot("expression",r.any).optional,bound:r.shape.ifNot("expression",r.any).optional}).strict).optional,optionsTypes:r.typeOrArrayOf(r.string).optional,link:r.func.optional,controller:r.oneOfType([r.string,r.func,r.array]).optional,validation:r.shape({show:r.oneOfType([r.bool,r.oneOf([null])]).optional,messages:r.objectOf(r.func).optional,errorExistsAndShouldBeVisible:r.bool.optional}).optional,formControl:r.object.optional,value:r.func.optional,runExpressions:r.func.optional},u=r.shape(f).strict,c=angular.copy(f);c.key=r.string.optional;var m=r.shape({name:r.string,template:r.shape.ifNot("templateUrl",r.string).optional,templateUrl:r.shape.ifNot("template",r.string).optional,controller:r.oneOfType([r.func,r.string,r.array]).optional,link:r.func.optional,defaultOptions:r.oneOfType([r.func,r.shape(c)]).optional,"extends":r.string.optional,wrapper:i.optional,data:r.object.optional,validateOptions:r.func.optional,apiCheck:a.optional,apiCheckInstance:s.optional,apiCheckFunction:l.optional,apiCheckOptions:r.object.optional,overwriteOk:r.bool.optional}).strict;angular.extend(r,{formlyTypeOptions:m,formlyFieldOptions:u,formlyExpression:o,formlyWrapperType:p})}},function(e,t,n){"use strict";var r=n(1),o=n(3);e.exports=function(e){function t(e,t){function n(e){if(r.isArray(e))r.forEach(e,n);else{if(!r.isObject(e))throw T("You must provide an object or array for setType. You provided: "+JSON.stringify(arguments));i(e),e["extends"]&&a(e),E[e.name]=e}}function i(e){t["throw"](t.formlyTypeOptions,arguments,{prefix:"formlyConfig.setType",url:"settype-validation-failed"}),e.overwriteOk?e.overwriteOk=void 0:g(e.name,E,e,"types")}function a(e){var t=u(e["extends"],!0,e);s(e,t),l(e,t),p(e,t),f(e,t),o.reverseDeepMerge(e,t)}function s(e,t){var n=t.controller;if(r.isDefined(n)){var o=e.controller;r.isDefined(o)?(e.controller=function(e,t){t(n,{$scope:e}),t(o,{$scope:e})},e.controller.$inject=["$scope","$controller"]):e.controller=n}}function l(e,t){var n=t.link;if(r.isDefined(n)){var o=e.link;e.link=r.isDefined(o)?function(){n.apply(void 0,arguments),o.apply(void 0,arguments)}:n}}function p(e,t){var n=t.validateOptions;if(r.isDefined(n)){var i=e.validateOptions,a=e.defaultOptions;e.validateOptions=r.isDefined(i)?function(e){i(e);var t=r.copy(e),s=a;s&&(r.isFunction(s)&&(s=s(t)),o.reverseDeepMerge(t,s)),n(t)}:n}}function f(e,t){var n=t.defaultOptions;if(r.isDefined(n)){var i=e.defaultOptions,a=r.isFunction(i),s=r.isFunction(n);s?e.defaultOptions=function(e){var t=n(e),r={};o.reverseDeepMerge(r,e,t);var s=i;return a&&(s=s(r)),o.reverseDeepMerge(t,s),t}:a&&(e.defaultOptions=function(e){var t={};return o.reverseDeepMerge(t,e,n),i(t)})}}function u(e,t,n){if(!e)return void 0;var r=E[e];if(r||t!==!0)return r;throw T('There is no type by the name of "'+e+'": '+JSON.stringify(n))}function c(e,t){for(var n=!0;n;){n=!1;var o=e,i=t;if(r.isArray(o))return o.map(function(e){return c(e)});if(r.isObject(o))return o.types=m(o),o.name=d(o,i),y(o),$[o.name]=o,o;r.isString(o)&&(e={template:o,name:i},n=!0)}}function m(e){return r.isString(e.types)?[e.types]:r.isDefined(e.types)?e.types:[]}function d(e,t){return e.name||t||e.types.join(" ")||A}function y(t){e.checkWrapper(t),t.template&&e.checkWrapperTemplate(t.template,t),t.overwriteOk?delete t.overwriteOk:g(t.name,$,t,"templateWrappers"),h(t)}function h(e){var t=!r.isArray(e.types)||!e.types.every(r.isString);if(t)throw T("Attempted to create a template wrapper with types that is not a string or an array of strings")}function g(e,t,n,r){t.hasOwnProperty(e)&&w(["Attempting to overwrite "+e+" on "+r+" which is currently",""+JSON.stringify(t[e])+" with "+JSON.stringify(n),'To supress this warning, specify the property "overwriteOk: true"'].join(" "))}function v(e){return $[e||A]}function O(e){var t=[];for(var n in $)$.hasOwnProperty(n)&&$[n].types&&-1!==$[n].types.indexOf(e)&&t.push($[n]);return t}function b(e){var t=$[e];return delete $[e],t}function x(e){var t=O(e);if(t)return r.isArray(t)?(t.forEach(function(e){return b(e.name)}),t):b(t.name)}function w(){j.disableWarnings||console.warn.apply(console,arguments)}var k=this,E={},$={},A="default",j=this,T=e.getFormlyError;r.extend(this,{setType:n,getType:u,setWrapper:c,getWrapper:v,getWrapperByType:O,removeWrapperByName:b,removeWrappersForType:x,disableWarnings:!1,extras:{disableNgModelAttrsManipulator:!1,ngModelAttrsManipulatorPreferBound:!1},templateManipulators:{preWrapper:[],postWrapper:[]},$get:function(){return k}})}e.provider("formlyConfig",t),t.tests=null,t.$inject=["formlyUsabilityProvider","formlyApiCheck"]}},function(e){"use strict";e.exports=function(e){e.constant("formlyErrorAndWarningsUrlPrefix","https://github.com/formly-js/angular-formly/blob/4.2.2/other/ERRORS_AND_WARNINGS.md#")}},function(e,t,n){"use strict";var r=n(1);e.exports=function(e){e.provider("formlyUsability",["formlyVersion","formlyApiCheck",function(e,t){function n(e,t,n){return arguments.length<3&&(n=t,t=e,e=null),new Error(i(e,t)+(" Field definition: "+r.toJson(n)))}function o(e,t){return t||(t=e,e=null),new Error(i(e,t))}function i(e,t){var n="";return null!==e&&(n=""+p+e),"Formly Error: "+t+". "+n}function a(){t["throw"](t.formlyWrapperType,arguments,{prefix:"formlyConfig.setWrapper",urlSuffix:"setwrapper-validation-failed"})}function s(e,t){var n="<formly-transclude></formly-transclude>";if(-1===e.indexOf(n))throw o('Template wrapper templates must use "'+n+'" somewhere in them. This one does not have "<formly-transclude></formly-transclude>" in it: '+e+"\nAdditional information: "+JSON.stringify(t))}var l=this,p="https://github.com/formly-js/angular-formly/blob/"+e+"/other/ERRORS_AND_WARNINGS.md#";r.extend(this,{getFormlyError:o,getFieldError:n,checkWrapper:a,checkWrapperTemplate:s,$get:function(){return l}})}])}},function(e){"use strict";e.exports=function(e){e.factory("formlyValidationMessages",function(){function e(e,t,o,i,a){r.messages[e]=n(t,o,i,a)}function t(e,t){r.messages[e]=function(){return t}}function n(e,t,n,r){return function(o,i,a){return a.options.templateOptions[e]?""+t+" "+a.options.templateOptions[e]+" "+n:r}}var r={addTemplateOptionValueMessage:e,addStringMessage:t,messages:{}};return r})}},function(e){"use strict";e.exports=function(e){e.constant("formlyVersion","4.2.2")}},function(e,t,n){"use strict";e.exports=function(e){n(11)(e),n(14)(e),n(12)(e),n(16)(e),n(13)(e),n(15)(e)}},function(e){"use strict";e.exports=function(e){function t(e){if(e&&e.get){var t=e.get(0),n=t.createElement("div");n.innerHTML="<!--[if lt IE 9]><i></i><![endif]-->";var r=1===n.getElementsByTagName("i").length;if(r)for(var o=["formly-field","formly-form","formly-custom-validation","formly-focus","formly-transpose"],i=0;i<o.length;i++)t.createElement(o[i])}}e.run(t),t.$inject=["$document"]}},function(e){"use strict";e.exports=function(e){function t(e){function t(t,n,r){function o(){if(n.templateOptions||n.expressionProperties){var e=n.templateOptions||{},t=n.expressionProperties||{},r=i();angular.extend(r,n.ngModelAttrs),angular.forEach(r,function(r,o){var i=void 0,l=void 0,p="options.templateOptions['"+o+"']",u=e[o],c=a(t,o),m=angular.isDefined(u),d=angular.isDefined(c);if(r.value)l=r.value,i=o;else if(r.expression&&m)if(l=r.expression,angular.isString(e[o]))i="$eval("+p+")";else{if(!angular.isFunction(e[o]))throw new Error("options.templateOptions."+o+" must be a string or function: "+JSON.stringify(n));i=""+p+"(model[options.key], options, this, $event)"}else r.bound&&d?(l=r.bound,i=p):r.attribute&&d?(l=r.attribute,i="{{"+p+"}}"):r.attribute&&m?(l=r.attribute,i=u):r.bound&&m&&(l=r.bound,i=p);angular.isDefined(l)&&angular.isDefined(i)&&s(f,l,i)})}}function i(){var t={focus:{attribute:"formly-focus"}},n=[],r=["required","disabled","pattern","minlength"],o=["change","keydown","keyup","keypress","click","focus","blur"],i=["placeholder","min","max","tabindex","type"];return e.extras.ngModelAttrsManipulatorPreferBound?n.push("maxlength"):r.push("maxlength"),angular.forEach(n,function(e){t[e]={bound:"ng-"+e}}),angular.forEach(r,function(e){t[e]={attribute:e,bound:"ng-"+e}}),angular.forEach(o,function(e){var n="on"+e.substr(0,1).toUpperCase()+e.substr(1);t[n]={expression:"ng-"+e}}),angular.forEach(i,function(e){t[e]={attribute:e}}),t}function a(e,t){return e["templateOptions."+t]||e["templateOptions['"+t+"']"]||e['templateOptions["'+t+'"]']}function s(e,t,n){e.attr(t)||e.attr(t,n)}var l=angular.element("<a></a>"),p=n.data;if(p.noTouchy)return t;l.append(t);var f=angular.element(l[0].querySelectorAll("[ng-model]"));return f&&f.length?(s(f,"id",r.id),s(f,"name",r.id),angular.isDefined(n.validators)&&s(f,"formly-custom-validation","options.validators"),angular.isDefined(n.modelOptions)&&(s(f,"ng-model-options","options.modelOptions"),n.modelOptions.getterSetter&&f.attr("ng-model","options.value")),o(),l.html()):t}e.extras.disableNgModelAttrsManipulator||e.templateManipulators.preWrapper.push(t)}e.run(t),t.$inject=["formlyConfig"]}},function(e,t,n){"use strict";e.exports=function(e){n(19)(e),n(18)(e)}},function(e,t,n){"use strict";var r=n(3);e.exports=function(e){function t(){return r}e.factory("formlyUtil",t),t.tests=null}},function(e){"use strict";var t=function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)};e.exports=function(e){e.factory("formlyWarn",["formlyConfig","formlyErrorAndWarningsUrlPrefix","$log",function(e,n,r){return function(){if(!e.disableWarnings){var o=Array.prototype.slice.call(arguments),i=o.shift();o.unshift("Formly Warning:"),o.push(""+n+i),r.warn.apply(r,t(o))}}}])}},function(e,t,n){"use strict";e.exports=function(e){n(21)(e),n(22)(e)}},function(e){e.exports=t}])}); //# sourceMappingURL=formly.min.js.map