-
Notifications
You must be signed in to change notification settings - Fork 45
/
Copy pathangular-schema-form-material.min.js
9 lines (9 loc) · 23.4 KB
/
angular-schema-form-material.min.js
1
2
3
4
5
6
7
8
9
/*!
* angular-schema-form-material
* @version 1.0.0-alpha.2
* @date Mon, 02 Jan 2017 12:21:23 GMT
* @link https://github.com/json-schema-form/angular-schema-form-material
* @license MIT
* Copyright (c) 2014-2017 JSON Schema Form
*/
!function(e){function r(t){if(n[t])return n[t].exports;var a=n[t]={i:t,l:!1,exports:{}};return e[t].call(a.exports,a,a.exports,r),a.l=!0,a.exports}var n={};return r.m=e,r.c=n,r.i=function(e){return e},r.d=function(e,n,t){r.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:t})},r.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(n,"a",n),n},r.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},r.p="",r(r.s=27)}([function(e,r){var n="/material/default.html",t='<md-input-container class="schema-form-{{::form.type}} {{::form.htmlClass}}"\r\n ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess(), \'has-feedback\': form.feedback !== false}"\r\n sf-messages sf-layout sf-material-class="md-input-has-value">\r\n <label ng-show="showTitle()" for="{{::form.key|sfCamelKey}}">{{::form.title}}</label>\r\n <input sf-field-model\r\n ng-show="::form.key"\r\n type="{{::form.type}}"\r\n step="any"\r\n sf-changed="form"\r\n placeholder="{{::form.placeholder}}"\r\n id="{{::form.key|sfCamelKey}}"\r\n ng-class="::form.fieldHtmlClass"\r\n sf-type-parser="form.schema"\r\n ng-disabled="::form.readonly"\r\n schema-validate="form"\r\n name="{{::form.key|sfCamelKey}}"\r\n aria-describedby="{{::form.key|sfCamelKey}}Status" />\r\n</md-input-container>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/checkbox.html",t='<div class="checkbox schema-form-checkbox {{::form.htmlClass}}"\r\n ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess()}"\r\n sf-messages>\r\n <md-checkbox sf-field-model\r\n sf-changed="form"\r\n ng-disabled="form.readonly"\r\n schema-validate="form"\r\n sf-material-class="md-checked"\r\n class="{{::form.fieldHtmlClass}}"\r\n name="{{::form.key|sfCamelKey}}"\r\n aria-label="{{::form.title}}">\r\n <span>{{::form.title}}</span>\r\n </md-checkbox>\r\n</div>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/submit.html",t='<section class="schema-form-submit {{::form.htmlClass}}" sf-messages>\r\n <md-button class="md-raised {{ form.style || \'md-primary\' }} {{::form.fieldHtmlClass}}"\r\n type="{{::form.type}}"\r\n ng-disabled="form.readonly"\r\n aria-label="{{::form.title}}">\r\n <md-tooltip ng-if="::form.tip">{{::form.tip}}</md-tooltip>\r\n {{::form.title}}\r\n </md-button>\r\n</section>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r,n){n(22),n(21),n(20)},function(e,r){var n="/material/actions.html",t='<section layout="row" class="btn-group schema-form-actions {{form.htmlClass}}"></section>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/array.html",t='<div class="schema-form-array {{::form.htmlClass}}"\r\n sf-field-model="sf-new-array"\r\n sf-new-array>\r\n <label class="control-label" ng-show="showTitle()">{{ form.title }}</label>\r\n <md-list class="list-group" sf-field-model ui-sortable="form.sortOptions">\r\n <md-list-item layout="row" class="list-group-item"\r\n sf-field-model="ng-repeat"\r\n ng-repeat="item in modelArray track by $index"\r\n schema-form-array-items\r\n class="{{::form.fieldHtmlClass}}">\r\n <md-button flex="none" flex-order="2"\r\n type="button"\r\n ng-hide="form.readonly || form.remove === null"\r\n ng-click="deleteFromArray($index)"\r\n ng-disabled="form.schema.minItems >= modelArray.length"\r\n class="md-icon-button" aria-label="More"\r\n style="position: relative; z-index: 20;">\r\n <md-icon>close</md-icon>\r\n </md-button>\r\n </md-list-item>\r\n </md-list>\r\n <div class="clearfix" style="padding: 15px;" ng-model="modelArray" schema-validate="form">\r\n <div class="help-block"\r\n ng-show="(hasError() && errorMessage(schemaError())) || form.description"\r\n ng-bind-html="(hasError() && errorMessage(schemaError())) || form.description"></div>\r\n\r\n <md-button ng-hide="form.readonly || form.add === null"\r\n ng-click="appendToArray()"\r\n ng-disabled="form.schema.maxItems <= modelArray.length"\r\n type="button"\r\n class="btn md-raised md-primary {{ form.style.add || \'btn-default\' }} pull-right">\r\n <i class="glyphicon glyphicon-plus"></i>\r\n {{ form.add || \'Add\'}}\r\n </md-button>\r\n </div>\r\n</div>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/autocomplete.html",t='<div class="form-group {{::form.htmlClass}} schema-form-select"\r\n ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess(), \'has-feedback\': form.feedback !== false}"\r\n sf-messages sf-layout>\r\n <md-autocomplete flex\r\n ng-disabled="form.readonly"\r\n ng-model="$$value$$"\r\n sf-autocomplete\r\n sf-field-model="replaceAll"\r\n schema-validate="form"\r\n md-selected-item="$$value$$"\r\n md-search-text="searchText"\r\n md-selected-item-change="\'todo\';"\r\n md-items="item in evalExpr(\'this[\\\'\'+form.optionFilter+\'\\\'](\\\'\'+searchText+\'\\\')\')"\r\n md-item-text="item.name"\r\n md-floating-label="{{::form.title}}"\r\n md-menu-class="autocomplete-custom-template">\r\n <md-item-template>\r\n <span md-highlight-text="searchText">{{item.name}}</span>\r\n </md-item-template>\r\n <md-not-found>\r\n No matches found\r\n </md-not-found>\r\n </md-autocomplete>\r\n</div>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/checkboxes.html",t='<div sf-array="form" sf-field-model\r\n class="form-group schema-form-checkboxes {{::form.htmlClass}}"\r\n ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess()}"\r\n sf-messages>\r\n <label class="control-label" ng-show="showTitle()">{{::form.title}}</label>\r\n <div class="checkbox" ng-repeat="val in titleMapValues track by $index" >\r\n <md-checkbox ng-model="titleMapValues[$index]"\r\n sf-changed="form"\r\n ng-disabled="::form.readonly"\r\n name="{{::form.key|sfCamelKey}}"\r\n ng-true-value="true"\r\n ng-false-value="false"\r\n aria-label="{{::form.title}}">\r\n {{::form.titleMap[$index].name}}\r\n </md-checkbox>\r\n </div>\r\n</div>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/date.html",t='<div class="schema-form-date {{::form.htmlClass}}">\r\n <label ng-show="showTitle()" for="{{::form.key|sfCamelKey}}">{{::form.title}}</label>\r\n <md-datepicker sf-field-model\r\n sf-changed="form"\r\n schema-validate="form"\r\n sf-type-parser="form.schema"\r\n id="{{::form.key|sfCamelKey}}"\r\n ng-show="::form.key"\r\n ng-class="::form.fieldHtmlClass"\r\n ng-disabled="::form.readonly"\r\n md-placeholder="Enter date" sf-messages>\r\n </md-datepicker>\r\n</div>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/fieldset.html",t='<fieldset ng-disabled="form.readonly" class="standard {{form.htmlClass}}" flex>\r\n <legend ng-show="form.title">{{ form.title }}</legend>\r\n</fieldset>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/help.html",t='<div class="helpvalue schema-form-helpvalue {{form.htmlClass}}" ng-bind-html="form.helpvalue"></div>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/radio-buttons.html",t='<div class="form-group schema-form-radiobuttons {{::form.htmlClass}}"\r\n ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess()}" sf-layout sf-messages>\r\n <div>\r\n <label class="control-label" ng-show="showTitle()">{{form.title}}</label>\r\n </div>\r\n <section layout="row" layout-sm="column" layout-align="center center">\r\n <md-input-container ng-repeat="item in form.titleMap">\r\n <md-button type="button"\r\n class="group md-raised"\r\n sf-field-model="replaceAll"\r\n ng-model="$$value$$"\r\n sf-changed="form"\r\n class="radio {{::form.fieldHtmlClass}}"\r\n ng-class="{\'md-primary\': ($$value$$ == item.value)}"\r\n ng-disabled="form.readonly"\r\n ng-model-options="form.ngModelOptions"\r\n schema-validate="form"\r\n ng-value="item.value"\r\n ng-click="$$value$$ = item.value"\r\n name="{{form.key.join(\'.\')}}">\r\n <span ng-bind-html="item.name"></span>\r\n </md-button>\r\n </md-input-container>\r\n </section>\r\n</div>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/radios-inline.html",t='<div class="form-group schema-form-radios-inline {{::form.htmlClass}}"\r\n ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess()}" sf-layout sf-messages>\r\n <label class="control-label" ng-show="showTitle()">{{form.title}}</label>\r\n <md-radio-group layout="row"\r\n sf-field-model="replaceAll"\r\n ng-model="$$value$$"\r\n class="{{::form.fieldHtmlClass}}"\r\n ng-class="{ active: item.value === $$value$$ }"\r\n sf-changed="form"\r\n schema-validate="form"\r\n ng-disabled="form.readonly"\r\n name="{{form.key.join(\'.\')}}">\r\n <md-radio-button ng-repeat="item in form.titleMap" ng-value="item.value">\r\n <span ng-bind-html="item.name"></span>\r\n </md-radio-button>\r\n </md-radio-group>\r\n</div>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/radios.html",t='<div class="form-group schema-form-radios {{::form.htmlClass}}"\r\n ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess()}">\r\n <label class="control-label" ng-show="showTitle()" aria-label="{{form.title}}" layout="row">{{form.title}} {{form.titleMap | json}}</label>\r\n <div>\r\n <md-radio-group sf-field-model\r\n sf-changed="form"\r\n ng-disabled="form.readonly"\r\n name="{{form.key.join(\'.\')}}"\r\n sf-layout sf-messages>\r\n <md-radio-button ng-repeat="item in form.titleMap"\r\n ng-value="item.value"\r\n class="{{::form.fieldHtmlClass}}"\r\n sf-field-model="ng-class"\r\n ng-class="{ active: item.value === $$value$$ }">\r\n <span ng-bind-html="item.name"></span>\r\n </md-radio-button>\r\n </md-radio-group>\r\n </div>\r\n</div>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/section.html",t='<md-content class="schema-form-section {{::form.htmlClass}}" sf-layout>\r\n</md-content>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/select.html",t='<md-input-container\r\n class="form-group {{::form.htmlClass}} schema-form-select"\r\n ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess(), \'has-feedback\': form.feedback !== false}"\r\n sf-messages sf-layout>\r\n <label ng-show="::showTitle()">{{::form.title}}</label>\r\n <md-select sf-field-model schema-validate="form">\r\n <md-optgroup ng-repeat-start="(key, opt) in form.getOptions(form, evalExpr) | orderBy:\'group\' as optGroups"\r\n ng-if="opt.group && opt.group != optGroups[key-1].group"\r\n label="{{::opt.group}}"\r\n aria-label="{{::opt.group}}">\r\n <md-option ng-repeat="(key, filtered) in form.getOptions(form, evalExpr) | filter: {group: opt.group} | orderBy:\'name\' as opts"\r\n ng-value="::filtered.value"\r\n aria-label="{{::filtered.name}}">{{::filtered.name}}</md-option>\r\n </md-optgroup>\r\n <md-option ng-if="!opt.group"\r\n ng-value="::opt.value"\r\n ng-repeat-end>{{::opt.name}}</md-option>\r\n </md-select>\r\n</md-input-container>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/switch.html",t='<md-input-container class="schema-form-switch {{::form.htmlClass}}">\r\n <md-switch sf-field-model\r\n sf-changed="form"\r\n sf-type-parser="form.schema"\r\n sf-messages\r\n schema-validate="form"\r\n id="{{::form.key|sfCamelKey}}"\r\n aria-label="{{form.title}}"\r\n ng-show="::form.key"\r\n ng-class="form.fieldHtmlClass"\r\n ng-disabled="::form.readonly">\r\n <span ng-show="showTitle()" for="{{::form.key|sfCamelKey}}">{{::form.title}}</span>\r\n </md-switch>\r\n</md-input-container>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/tabarray.html",t='\r\n<div sf-array="form" ng-init="selected = { tab: 0 }"\r\n class="clearfix schema-form-tabarray schema-form-tabarray-{{form.tabType || \'left\'}} {{::form.htmlClass}}">\r\n <div ng-if="!form.tabType || form.tabType !== \'right\'"\r\n ng-class="{\'col-xs-3\': !form.tabType || form.tabType === \'left\'}">\r\n <ul class="nav nav-tabs"\r\n ng-class="{ \'tabs-left\': !form.tabType || form.tabType === \'left\'}">\r\n <li ng-repeat="item in modelArray track by $index"\r\n ng-click="$event.preventDefault() || (selected.tab = $index)"\r\n ng-class="{active: selected.tab === $index}">\r\n <a href="#">{{interp(form.title,{\'$index\':$index, value: item}) || $index}}</a>\r\n </li>\r\n <li ng-hide="form.readonly" ng-click="$event.preventDefault() || (selected.tab = appendToArray().length - 1)">\r\n <a href="#">\r\n <i class="glyphicon glyphicon-plus"></i>\r\n {{ form.add || \'Add\'}}\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n <div ng-class="{\'col-xs-9\': !form.tabType || form.tabType === \'left\' || form.tabType === \'right\'}">\r\n <div class="tab-content {{::form.fieldHtmlClass}}">\r\n <div class="tab-pane clearfix"\r\n ng-repeat="item in modelArray track by $index"\r\n ng-show="selected.tab === $index"\r\n ng-class="{active: selected.tab === $index}">\r\n <sf-decorator ng-init="arrayIndex = $index" form="copyWithIndex($index)"></sf-decorator>\r\n\r\n\r\n <button ng-hide="form.readonly"\r\n ng-click="selected.tab = deleteFromArray($index).length - 1"\r\n type="button"\r\n class="btn {{ form.style.remove || \'btn-default\' }} pull-right">\r\n <i class="glyphicon glyphicon-trash"></i>\r\n {{ form.remove || \'Remove\'}}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div ng-if="form.tabType === \'right\'" class="col-xs-3">\r\n <ul class="nav nav-tabs tabs-right">\r\n <li ng-repeat="item in modelArray track by $index"\r\n ng-click="$event.preventDefault() || (selected.tab = $index)"\r\n ng-class="{active: selected.tab === $index}">\r\n <a href="#">{{interp(form.title,{\'$index\':$index, value: item}) || $index}}</a>\r\n </li>\r\n <li ng-hide="form.readonly" ng-click="$event.preventDefault() || appendToArray()">\r\n <a href="#">\r\n <i class="glyphicon glyphicon-plus"></i>\r\n {{ form.add || \'Add\'}}\r\n </a>\r\n </li>\r\n </ul>\r\n </div>\r\n\r\n</div>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/tabs.html",t='<div sf-field-model class="schema-form-tabs {{::form.htmlClass}}">\r\n <md-tabs md-dynamic-height md-selected="selected" md-autoselect ng-init="selected = 0"></md-tabs>\r\n</div>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){var n="/material/textarea.html",t='<md-input-container class="{{::form.htmlClass}} schema-form-textarea" sf-messages sf-layout>\r\n <label ng-show="showTitle()" for="{{::form.key|sfCamelKey}}">{{::form.title}}</label>\r\n <textarea ng-class="::form.fieldHtmlClass"\r\n id="{{::form.key|sfCamelKey}}"\r\n sf-changed="form"\r\n ng-disabled="::form.readonly"\r\n sf-field-model\r\n schema-validate="form"\r\n name="{{::form.key|sfCamelKey}}"></textarea>\r\n</md-input-container>\r\n';window.angular.module("ng").run(["$templateCache",function(e){e.put(n,t)}]),e.exports=n},function(e,r){function n(e,r){return{restrict:"A",scope:!1,link:function(e,n,t,a){function l(e,r){return e[r]}var o;try{o=e.form.key.reduce(l,e.model)}catch(e){o=void 0}r(function(){null!==o&&"undefined"!=typeof o&&o!==!1&&n.addClass(t.sfMaterialClass)},0)}}}angular.module("schemaForm").directive("sfMaterialClass",n),n.$inject=["$compile","$timeout"]},function(e,r,n){"use strict";function t(e,r,n,t,o){function s(e){var r=e.fieldFrag.querySelector("[sf-layout]");e.form.grid&&Object.getOwnPropertyNames(e.form.grid).forEach(function(n,t,a){r.setAttribute(n,e.form.grid[n])})}function i(){var e='<div ng-if="ngModel.$invalid" ng-messages="ngModel.$error"><div sf-message ng-message></div></div>',r=document.createElement("div");return r.innerHTML=e,r.firstChild}function m(e){var r=e.fieldFrag.querySelector("[sf-messages]");if(r&&N){var n=N.cloneNode();r.appendChild(n)}}function c(e){var r=e.fieldFrag.querySelector("textarea"),n=e.form.maxlength||!1;r&&n&&r.setAttribute("md-maxlength",n)}function u(e){var r=e.fieldFrag.querySelector("md-autocomplete"),n=e.form.minLength||1,t=e.form.maxLength||!1,a=e.form.title||e.form.placeholder||e.form.key.slice(-1)[0];r&&(e.form.onChange&&(r.setAttribute("md-selected-item-change","args.form.onChange()"),r.setAttribute("md-search-text-change","args.form.onChange(searchText)")),r.setAttribute("md-min-length",n),t&&r.setAttribute("md-max-length",t),a&&r.setAttribute("md-floating-label",a))}function h(e){var r=e.fieldFrag.querySelector("md-switch");e.form.schema.titleMap&&(r.setAttribute("ng-true-value",e.form.schema.titleMap.true),r.setAttribute("ng-false-value",e.form.schema.titleMap.false))}function b(e){var r,n,n=e.fieldFrag.querySelector("md-select");if(e.form.selectOptions=[],e.form.getOptions=a,e.form.schema.links&&"object"==typeof e.form.schema.links){var t,o=/({)([^}]*)(})/gm;for(r=0;r<e.form.schema.links.length;r++)t=e.form.schema.links[r],"options"===t.rel&&(e.form.optionSource=t.href.replace(o,"$1$1 model.$2 $3$3"));n.setAttribute("sfm-external-options",e.form.optionSource)}else e.form.selectOptions=l(e.form)}function y(e){var r=e.fieldFrag.querySelector("md-datepicker");if(r){e.form.onChange&&r.setAttribute("ng-change","args.form.onChange(searchText)");var n=e.form.minimum||!1,t=e.form.maximum||!1;n&&r.setAttribute("md-max-date",n),t&&r.setAttribute("md-max-date",t)}}function $(e){if(e.form.tabs&&e.form.tabs.length>0){var r=e.fieldFrag.querySelector("md-tabs");e.form.tabs.forEach(function(n,t){var a="(evalExpr("+e.path+".tabs["+t+'].condition, { model: model, "arrayIndex": $index}))',l=document.createElement("md-tab");n.condition&&l.setAttribute("ng-if",a),l.setAttribute("label","{{"+e.path+".tabs["+t+"].title}}");var o=document.createElement("md-tab-body"),s=e.build(n.items,e.path+".tabs["+t+"].items",e.state);o.appendChild(s),l.appendChild(o),r.appendChild(l)})}}function C(r,n,a){if("string"===n.type&&("date"===n.format||"date-time"===n.format)){var l=e.stdFormObj(r,n,a);return l.key=a.path,l.type="date",a.lookup[t.stringify(a.path)]=l,l}}var A=n.builders.simpleTransclusion,M=n.builders.ngModelOptions,O=n.builders.ngModel,S=n.builders.sfField,K=n.builders.condition,P=n.builders.array,D=n.builders.numeric,s=s,N=i(),B=m,V=b,z=u,U=h,W=y,J=$,Q=c,X=[S,O,M,K,s],Y=X.concat(B),Z=X.concat(P);e.defaults.string.unshift(C),r.defineDecorator("materialDecorator",{actions:{template:d.a,builder:[S,A,K]},array:{template:f.a,builder:Z},autocomplete:{template:p.a,builder:Y.concat(z)},boolean:{template:g.a,builder:Y},button:{template:v.a,builder:Y},checkbox:{template:g.a,builder:Y},checkboxes:{template:x.a,builder:Z},date:{template:w.a,builder:Y.concat(W)},default:{template:k.a,builder:Y},fieldset:{template:T.a,builder:[S,A,K]},help:{template:E.a,builder:Y},number:{template:k.a,builder:Y.concat(D)},password:{template:k.a,builder:Y},radios:{template:F.a,builder:Y},"radios-inline":{template:j.a,builder:Y},radiobuttons:{template:H.a,builder:Y},section:{template:q.a,builder:[S,A,K,s]},select:{template:I.a,builder:Y.concat(V)},submit:{template:v.a,builder:Y},tabs:{template:G.a,builder:[S,J,K]},tabarray:{template:_.a,builder:Z},textarea:{template:R.a,builder:Y.concat(Q)},switch:{template:L.a,builder:Y.concat(U)}})}function a(e,r){return e.optionData?r(e.optionData):e.selectOptions?e.selectOptions:[]}function l(e){var r=[];if(e.titleMap)return e.titleMap;if(e.enum&&e.enum.length)for(i=0;i<e.enum.length;i++)e.enum[i]&&e.enum[i].length&&r.push({name:e.enum[i],value:e.enum[i]});return r}function o(e){function r(r,n,t){t.$observe("sfmExternalOptions",function(n){e.get(n).then(function(e){r.form.selectOptions=l(e.data)})})}var n={link:r,restrict:"A"};return n}function s(){return function(e){if(!e)return"";var r,n,t;for(t=e.slice(),n=0;n<t.length;n++)r=t[n].toLowerCase().split(""),n&&r.length&&(r[0]=r[0].toUpperCase()),t[n]=r.join("");return t.join("")}}var m=n(4),d=n.n(m),c=n(5),f=n.n(c),u=n(6),p=n.n(u),h=n(1),g=n.n(h),b=n(2),v=n.n(b),y=n(7),x=n.n(y),$=n(8),w=n.n($),C=n(0),k=n.n(C),A=n(9),T=n.n(A),M=n(10),E=n.n(M),O=n(13),F=n.n(O),S=n(12),j=n.n(S),K=n(11),H=n.n(K),P=n(14),q=n.n(P),D=n(15),I=n.n(D),N=n(16),L=n.n(N),B=n(18),G=n.n(B),V=n(17),_=n.n(V),z=n(19),R=n.n(z);angular.module("schemaForm").config(t).directive("sfmExternalOptions",o).filter("sfCamelKey",s),t.$inject=["schemaFormProvider","schemaFormDecoratorsProvider","sfBuilderProvider","sfPathProvider","$injector"],o.$inject=["$http"]},function(e,r){angular.module("schemaForm").directive("sfTypeParser",function(){return{restrict:"A",scope:!1,require:"ngModel",link:function(e,r,n,t){var a=e.$watch(n.sfTypeParser,function(e){if(e){var r=e.type.indexOf("number")!==-1,n=e.type.indexOf("integer")!==-1,l=/^[0-9]*$/;(r||n)&&t.$parsers.push(function(e){var n;return r?n=parseFloat(e):l.test(e)&&(n=parseInt(e,10)),console.log("parser",l.test(e),e,n),void 0===n||isNaN(n)?e:n}),a()}})}}})},,,,,function(e,r,n){e.exports=n(3)}]);