-
Notifications
You must be signed in to change notification settings - Fork 45
/
Copy pathangular-schema-form-material.min.js
24 lines (24 loc) · 87.1 KB
/
angular-schema-form-material.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*!
* angular-schema-form-material
* @version 1.0.0-alpha.1
* @link https://github.com/json-schema-form/angular-schema-form-material
* @license MIT
* Copyright (c) 2016 JSON Schema Form
*/
(function webpackUniversalModuleDefinition(root,factory){if(typeof exports==="object"&&typeof module==="object")module.exports=factory(require("angular"),require("tv4"));else if(typeof define==="function"&&define.amd)define(["angular","tv4"],factory);else{var a=typeof exports==="object"?factory(require("angular"),require("tv4")):factory(root["angular"],root["tv4"]);for(var i in a)(typeof exports==="object"?exports:root)[i]=a[i]}})(this,function(__WEBPACK_EXTERNAL_MODULE_2__,__WEBPACK_EXTERNAL_MODULE_3__){return function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={exports:{},id:moduleId,loaded:false};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.loaded=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.p="";return __webpack_require__(0)}([function(module,exports,__webpack_require__){__webpack_require__(1);__webpack_require__(4);__webpack_require__(5);__webpack_require__(6);__webpack_require__(7)},function(module,exports,__webpack_require__){/*!
* angular-schema-form
* @version 1.0.0-alpha.2
* @link https://github.com/json-schema-form/angular-schema-form
* @license MIT
* Copyright (c) 2016 JSON Schema Form
*/
(function webpackUniversalModuleDefinition(root,factory){if(true)module.exports=factory(__webpack_require__(2),__webpack_require__(3));else if(typeof define==="function"&&define.amd)define(["angular","tv4"],factory);else{var a=typeof exports==="object"?factory(require("angular"),require("tv4")):factory(root["angular"],root["tv4"]);for(var i in a)(typeof exports==="object"?exports:root)[i]=a[i]}})(this,function(__WEBPACK_EXTERNAL_MODULE_2__,__WEBPACK_EXTERNAL_MODULE_8__){return function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={exports:{},id:moduleId,loaded:false};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.loaded=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.p="";return __webpack_require__(0)}([function(module,exports,__webpack_require__){module.exports=__webpack_require__(1)},function(module,exports,__webpack_require__){"use strict";var _angular=__webpack_require__(2);var _angular2=_interopRequireDefault(_angular);var _builder=__webpack_require__(3);var _builder2=_interopRequireDefault(_builder);var _decorators=__webpack_require__(4);var _decorators2=_interopRequireDefault(_decorators);var _schemaForm=__webpack_require__(5);var _schemaForm2=_interopRequireDefault(_schemaForm);var _jsonSchemaFormCore=__webpack_require__(6);var _validator=__webpack_require__(7);var _validator2=_interopRequireDefault(_validator);var _errors=__webpack_require__(9);var _errors2=_interopRequireDefault(_errors);var _sfPath=__webpack_require__(10);var _sfPath2=_interopRequireDefault(_sfPath);var _array=__webpack_require__(11);var _array2=_interopRequireDefault(_array);var _changed=__webpack_require__(12);var _changed2=_interopRequireDefault(_changed);var _field=__webpack_require__(13);var _field2=_interopRequireDefault(_field);var _message=__webpack_require__(14);var _message2=_interopRequireDefault(_message);var _newArray=__webpack_require__(15);var _newArray2=_interopRequireDefault(_newArray);var _schemaForm3=__webpack_require__(16);var _schemaForm4=_interopRequireDefault(_schemaForm3);var _schemaValidate=__webpack_require__(17);var _schemaValidate2=_interopRequireDefault(_schemaValidate);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var deps=[];try{_angular2.default.module("ngSanitize");deps.push("ngSanitize")}catch(e){}try{_angular2.default.module("ui.sortable");deps.push("ui.sortable")}catch(e){}try{_angular2.default.module("angularSpectrumColorpicker");deps.push("angularSpectrumColorpicker")}catch(e){}_angular2.default.module("schemaForm",deps).provider("sfPath",_sfPath2.default).provider("sfBuilder",["sfPathProvider",_builder2.default]).provider("schemaFormDecorators",["$compileProvider","sfPathProvider",_decorators2.default]).provider("sfErrorMessage",_errors2.default).provider("schemaForm",["sfPathProvider",_schemaForm2.default]).factory("sfSelect",function(){return _jsonSchemaFormCore.select}).factory("sfValidator",_validator2.default).directive("sfArray",["sfSelect","schemaForm","sfValidator","sfPath",_array2.default]).directive("sfChanged",_changed2.default).directive("sfField",["$parse","$compile","$http","$templateCache","$interpolate","$q","sfErrorMessage","sfPath","sfSelect",_field2.default]).directive("sfMessage",["$injector","sfErrorMessage",_message2.default]).directive("sfNewArray",["sfSelect","sfPath","schemaForm",_newArray2.default]).directive("sfSchema",["$compile","$http","$templateCache","$q","schemaForm","schemaFormDecorators","sfSelect","sfPath","sfBuilder",_schemaForm4.default]).directive("schemaValidate",["sfValidator","$parse","sfSelect",_schemaValidate2.default])},function(module,exports){module.exports=angular},function(module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(sfPathProvider){var SNAKE_CASE_REGEXP=/[A-Z]/g;var snakeCase=function snakeCase(name,separator){separator=separator||"_";return name.replace(SNAKE_CASE_REGEXP,function(letter,pos){return(pos?separator:"")+letter.toLowerCase()})};var formId=0;var builders={sfField:function sfField(args){args.fieldFrag.firstChild.setAttribute("sf-field",formId);args.lookup["f"+formId]=args.form;formId++},ngModel:function ngModel(args){if(!args.form.key){return}var key=args.form.key;if(args.state.keyRedaction){key=key.slice(args.state.keyRedaction)}var modelValue;if(!args.state.modelValue){var strKey=sfPathProvider.stringify(key).replace(/"/g,""");modelValue=args.state.modelName||"model";if(strKey){modelValue+=(strKey[0]!=="["?".":"")+strKey}}else{modelValue=args.state.modelValue}var nodes=args.fieldFrag.querySelectorAll("[sf-field-model]");for(var i=0;i<nodes.length;i++){var n=nodes[i];var conf=n.getAttribute("sf-field-model");if(!conf||conf===""){n.setAttribute("ng-model",modelValue)}else if(conf==="replaceAll"){var attributes=n.attributes;for(var j=0;j<attributes.length;j++){if(attributes[j].value&&attributes[j].value.indexOf("$$value")!==-1){attributes[j].value=attributes[j].value.replace(/\$\$value\$\$/g,modelValue)}}}else{var val=n.getAttribute(conf);if(val&&val.indexOf("$$value$$")){n.setAttribute(conf,val.replace(/\$\$value\$\$/g,modelValue))}else{n.setAttribute(conf,modelValue)}}}},simpleTransclusion:function simpleTransclusion(args){var children=args.build(args.form.items,args.path+".items",args.state);args.fieldFrag.firstChild.appendChild(children)},ngModelOptions:function ngModelOptions(args){if(args.form.ngModelOptions&&Object.keys(args.form.ngModelOptions).length>0){args.fieldFrag.firstChild.setAttribute("ng-model-options",JSON.stringify(args.form.ngModelOptions))}},transclusion:function transclusion(args){var transclusions=args.fieldFrag.querySelectorAll("[sf-field-transclude]");if(transclusions.length){for(var i=0;i<transclusions.length;i++){var n=transclusions[i];var sub=n.getAttribute("sf-field-transclude")||"items";var items=args.form[sub];if(items){var childFrag=args.build(items,args.path+"."+sub,args.state);n.appendChild(childFrag)}}}},condition:function condition(args){if(args.form.condition){var evalExpr="evalExpr("+args.path+'.condition, { model: model, "arrayIndex": $index})';if(args.form.key){var strKey=sfPathProvider.stringify(args.form.key);var arrayDepth=args.form.key.filter(function(e){return e===""}).length;var arrayIndices=arrayDepth>1?Array(arrayDepth-1).join("$parent.$parent.$parent.")+"$parent.$parent.$index,":"";for(var i=arrayDepth;i>2;i--){arrayIndices+=Array(i-1).join("$parent.$parent.$parent.")+"$index,"}arrayIndices+="$index";evalExpr="evalExpr("+args.path+'.condition,{ model: model, "arrayIndex": $index, '+'"arrayIndices": ['+arrayIndices+"],"+'"modelValue": model'+(strKey[0]==="["?"":".")+strKey+"})"}var children=args.fieldFrag.children||args.fieldFrag.childNodes;for(var i=0;i<children.length;i++){var child=children[i];var ngIf=child.getAttribute("ng-if");child.setAttribute("ng-if",ngIf?"("+ngIf+") || ("+evalExpr+")":evalExpr)}}},array:function array(args){var items=args.fieldFrag.querySelector("[schema-form-array-items]");if(items){var state=angular.copy(args.state);state.keyRedaction=0;state.keyRedaction+=args.form.key.length+1;if(args.form.schema&&args.form.schema.items&&args.form.schema.items.type&&args.form.schema.items.type.indexOf("object")===-1&&args.form.schema.items.type.indexOf("array")===-1){var strKey=sfPathProvider.stringify(args.form.key).replace(/"/g,""")+"[$index]";state.modelValue="modelArray[$index]"}else{state.modelName="item"}state.arrayCompatFlag=true;var childFrag=args.build(args.form.items,args.path+".items",state);items.appendChild(childFrag)}},numeric:function numeric(args){var inputFrag=args.fieldFrag.querySelector("input");var maximum=args.form.maximum||false;var exclusiveMaximum=args.form.exclusiveMaximum||false;var minimum=args.form.minimum||false;var exclusiveMinimum=args.form.exclusiveMinimum||false;var multipleOf=args.form.multipleOf||false;if(inputFrag){if(multipleOf!==false){inputFrag.setAttribute("step",multipleOf)}if(maximum!==false){if(exclusiveMaximum!==false&&multipleOf!==false){maximum=maximum-multipleOf}inputFrag.setAttribute("max",maximum)}if(minimum!==false){if(exclusiveMinimum!==false&&multipleOf!==false){minimum=minimum+multipleOf}inputFrag.setAttribute("min",minimum)}}}};this.builders=builders;var stdBuilders=[builders.sfField,builders.ngModel,builders.ngModelOptions,builders.condition];this.stdBuilders=stdBuilders;this.$get=["$templateCache","schemaFormDecorators","sfPath",function($templateCache,schemaFormDecorators,sfPath){var checkForSlot=function checkForSlot(form,slots){if(form.key){var slot=slots[sfPath.stringify(form.key)];if(slot){while(slot.firstChild){slot.removeChild(slot.firstChild)}return slot}}};var _build=function _build(items,decorator,templateFn,slots,path,state,lookup){state=state||{};lookup=lookup||Object.create(null);path=path||"schemaForm.form";var container=document.createDocumentFragment();items.reduce(function(frag,f,index){if(!f.type){return frag}var field=decorator[f.type]||decorator["default"];if(!field.replace){var n=document.createElement(snakeCase(decorator.__name,"-"));if(state.arrayCompatFlag){n.setAttribute("form","copyWithIndex($index)")}else{n.setAttribute("form",path+"["+index+"]")}(checkForSlot(f,slots)||frag).appendChild(n)}else{var tmpl;state.arrayCompatFlag=false;var div=document.createElement("div");var template=templateFn(f,field)||templateFn(f,decorator["default"]);div.innerHTML=template;tmpl=document.createDocumentFragment();while(div.childNodes.length>0){tmpl.appendChild(div.childNodes[0])}var args={fieldFrag:tmpl,form:f,lookup:lookup,state:state,path:path+"["+index+"]",build:function build(items,path,state){return _build(items,decorator,templateFn,slots,path,state,lookup)}};var builderFn=f.builder||field.builder;if(typeof builderFn==="function"){builderFn(args)}else{builderFn.forEach(function(fn){fn(args)})}(checkForSlot(f,slots)||frag).appendChild(tmpl)}return frag},container);return container};return{build:function build(form,decorator,slots,lookup){return _build(form,decorator,function(form,field){if(form.type==="template"){return form.template}return $templateCache.get(field.template)},slots,undefined,undefined,lookup)},builder:builders,stdBuilders:stdBuilders,internalBuild:_build}}]}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function($compileProvider,sfPathProvider){var defaultDecorator="";var decorators={};var templateUrl=function templateUrl(name,form){if(name==="sfDecorator"){name=defaultDecorator}var decorator=decorators[name];if(decorator[form.type]){return decorator[form.type].template}return decorator["default"].template};var createDirective=function createDirective(name){$compileProvider.directive(name,["$parse","$compile","$http","$templateCache","$interpolate","$q","sfErrorMessage","sfPath","sfSelect",function($parse,$compile,$http,$templateCache,$interpolate,$q,sfErrorMessage,sfPath,sfSelect){return{restrict:"AE",replace:false,transclude:false,scope:true,require:"?^sfSchema",link:function link(scope,element,attrs,sfSchema){scope.$on("schemaFormPropagateNgModelController",function(event,ngModel){event.stopPropagation();event.preventDefault();scope.ngModel=ngModel});scope.showTitle=function(){return scope.form&&scope.form.notitle!==true&&scope.form.title};scope.listToCheckboxValues=function(list){var values={};_angular2.default.forEach(list,function(v){values[v]=true});return values};scope.checkboxValuesToList=function(values){var lst=[];_angular2.default.forEach(values,function(v,k){if(v){lst.push(k)}});return lst};scope.buttonClick=function($event,form){if(_angular2.default.isFunction(form.onClick)){form.onClick($event,form)}else if(_angular2.default.isString(form.onClick)){if(sfSchema){sfSchema.evalInParentScope(form.onClick,{$event:$event,form:form})}else{scope.$eval(form.onClick,{$event:$event,form:form})}}};scope.evalExpr=function(expression,locals){if(sfSchema){return sfSchema.evalInParentScope(expression,locals)}return scope.$eval(expression,locals)};scope.evalInScope=function(expression,locals){if(expression){return scope.$eval(expression,locals)}};scope.interp=function(expression,locals){return expression&&$interpolate(expression)(locals)};scope.hasSuccess=function(){if(!scope.ngModel){return false}if(scope.options&&scope.options.pristine&&scope.options.pristine.success===false){return scope.ngModel.$valid&&!scope.ngModel.$pristine&&!scope.ngModel.$isEmpty(scope.ngModel.$modelValue)}else{return scope.ngModel.$valid&&(!scope.ngModel.$pristine||!scope.ngModel.$isEmpty(scope.ngModel.$modelValue))}};scope.hasError=function(){if(!scope.ngModel){return false}return scope.ngModel.$invalid&&!scope.ngModel.$pristine};scope.errorMessage=function(schemaError){return sfErrorMessage.interpolate(schemaError&&schemaError.code+""||"default",scope.ngModel&&scope.ngModel.$modelValue||"",scope.ngModel&&scope.ngModel.$viewValue||"",scope.form,scope.options&&scope.options.validationMessage)};var once=scope.$watch(attrs.form,function(form){if(form){form.ngModelOptions=form.ngModelOptions||{};scope.form=form;var templatePromise;if(form.type==="template"&&form.template){templatePromise=$q.when(form.template)}else{var url=form.type==="template"?form.templateUrl:templateUrl(name,form);templatePromise=$http.get(url,{cache:$templateCache}).then(function(res){return res.data})}templatePromise.then(function(template){if(form.key){var key=form.key?sfPathProvider.stringify(form.key).replace(/"/g,"""):"";template=template.replace(/\$\$value\$\$/g,"model"+(key[0]!=="["?".":"")+key)}element.html(template);if(form.condition){var evalExpr='evalExpr(form.condition,{ model: model, "arrayIndex": arrayIndex})';if(form.key){evalExpr="evalExpr(form.condition, {"+'model: model, "arrayIndex": arrayIndex, "modelValue": model'+sfPath.stringify(form.key)+"})"}_angular2.default.forEach(element.children(),function(child){var ngIf=child.getAttribute("ng-if");child.setAttribute("ng-if",ngIf?"("+ngIf+") || ("+evalExpr+")":evalExpr)})}$compile(element.contents())(scope)});if(form.key){scope.$on("schemaForm.error."+form.key.join("."),function(event,error,validationMessage,validity,formName){formName=validity;if(validationMessage===true||validationMessage===false){validity=validationMessage;validationMessage=undefined}if(formName!=undefined&&scope.ngModel.$$parentForm.$name!==formName){return}if(scope.ngModel&&error){if(scope.ngModel.$setDirty){scope.ngModel.$setDirty()}else{scope.ngModel.$dirty=true;scope.ngModel.$pristine=false}if(validationMessage){if(!form.validationMessage){form.validationMessage={}}form.validationMessage[error]=validationMessage}scope.ngModel.$setValidity(error,validity===true);if(validity===true){scope.ngModel.$validate();scope.$broadcast("schemaFormValidate")}}});scope.$on("$destroy",function(){if(!scope.externalDestructionInProgress){var destroyStrategy=form.destroyStrategy||scope.options&&scope.options.destroyStrategy||"remove";if(form.key&&destroyStrategy!=="retain"){var obj=scope.model;if(form.key.length>1){obj=sfSelect(form.key.slice(0,form.key.length-1),obj)}if(obj===undefined){return}var type=form.schema&&form.schema.type||"";if(destroyStrategy==="empty"&&type.indexOf("string")!==-1){obj[form.key.slice(-1)]=""}else if(destroyStrategy==="empty"&&type.indexOf("object")!==-1){obj[form.key.slice(-1)]={}}else if(destroyStrategy==="empty"&&type.indexOf("array")!==-1){obj[form.key.slice(-1)]=[]}else if(destroyStrategy==="null"){obj[form.key.slice(-1)]=null}else{delete obj[form.key.slice(-1)]}}}})}once()}})}}}])};var createManualDirective=function createManualDirective(type,templateUrl,transclude){transclude=_angular2.default.isDefined(transclude)?transclude:false;$compileProvider.directive("sf"+_angular2.default.uppercase(type[0])+type.substr(1),function(){return{restrict:"EAC",scope:true,replace:true,transclude:transclude,template:'<sf-decorator form="form"></sf-decorator>',link:function link(scope,element,attrs){var watchThis={items:"c",titleMap:"c",schema:"c"};var form={type:type};var once=true;_angular2.default.forEach(attrs,function(value,name){if(name[0]!=="$"&&name.indexOf("ng")!==0&&name!=="sfField"){var updateForm=function updateForm(val){if(_angular2.default.isDefined(val)&&val!==form[name]){form[name]=val;if(once&&form.type&&(form.key||_angular2.default.isUndefined(attrs.key))){scope.form=form;once=false}}};if(name==="model"){scope.$watch(value,function(val){if(val&&scope.model!==val){scope.model=val}})}else if(watchThis[name]==="c"){scope.$watchCollection(value,updateForm)}else{attrs.$observe(name,updateForm)}}})}}})};this.createDecorator=function(name,templates){decorators[name]={__name:name};_angular2.default.forEach(templates,function(url,type){decorators[name][type]={template:url,replace:false,builder:[]}});if(!decorators[defaultDecorator]){defaultDecorator=name}createDirective(name)};this.defineDecorator=function(name,fields){decorators[name]={__name:name};_angular2.default.forEach(fields,function(field,type){field.builder=field.builder||[];field.replace=_angular2.default.isDefined(field.replace)?field.replace:true;decorators[name][type]=field});if(!decorators[defaultDecorator]){defaultDecorator=name}createDirective(name)};this.createDirective=createManualDirective;this.createDirectives=function(templates){_angular2.default.forEach(templates,function(url,type){createManualDirective(type,url)})};this.decorator=function(name){name=name||defaultDecorator;return decorators[name]};this.addMapping=function(name,type,url,builder,replace){if(decorators[name]){decorators[name][type]={template:url,builder:builder,replace:!!replace}}};this.defineAddOn=function(name,type,url,builder){if(decorators[name]){decorators[name][type]={template:url,builder:builder,replace:true}}};this.$get=function(){return{decorator:function decorator(name){return decorators[name]||decorators[defaultDecorator]},defaultDecorator:defaultDecorator}};createDirective("sfDecorator")};var _angular=__webpack_require__(2);var _angular2=_interopRequireDefault(_angular);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(){var postProcessFn=function postProcessFn(form){return form};var defaults=_jsonSchemaFormCore.schemaDefaults.createDefaults();this.defaults=defaults;this.stdFormObj=_jsonSchemaFormCore.schemaDefaults.stdFormObj;this.defaultFormDefinition=_jsonSchemaFormCore.schemaDefaults.defaultFormDefinition;this.postProcess=function(fn){postProcessFn=fn};this.appendRule=function(type,rule){if(!defaults[type]){defaults[type]=[]}defaults[type].push(rule)};this.prependRule=function(type,rule){if(!defaults[type]){defaults[type]=[]}defaults[type].unshift(rule)};this.createStandardForm=_jsonSchemaFormCore.schemaDefaults.stdFormObj;this.$get=function(){var service={};var typeDefault=this.defaults;service.merge=function(schema,form,ignore,options,readonly,asyncTemplates){form=form||["*"];options=options||{};readonly=readonly||schema.readonly||schema.readOnly;var stdForm=_jsonSchemaFormCore.schemaDefaults.defaultForm(schema,typeDefault,ignore,options);var idx=form.indexOf("*");if(idx!==-1){form=form.slice(0,idx).concat(stdForm.form).concat(form.slice(idx+1))}var canonical=(0,_jsonSchemaFormCore.merge)(stdForm.lookup,form,options,readonly,asyncTemplates);return postProcessFn(canonical)};service.defaults=_jsonSchemaFormCore.schemaDefaults.defaultForm;service.typeDefault=typeDefault;service.traverseSchema=_jsonSchemaFormCore.traverseSchema;service.traverseForm=_jsonSchemaFormCore.traverseForm;return service}};var _angular=__webpack_require__(2);var _angular2=_interopRequireDefault(_angular);var _jsonSchemaFormCore=__webpack_require__(6);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}},function(module,exports,__webpack_require__){/*!
* json-schema-form
* @version 1.0.0-alpha.1
* @link https://github.com/json-schema-form/json-schema-form-core
* @license MIT
* Copyright (c) 2016 JSON Schema Form
*/
(function webpackUniversalModuleDefinition(root,factory){if(true)module.exports=factory();else if(typeof define==="function"&&define.amd)define([],factory);else{var a=factory();for(var i in a)(typeof exports==="object"?exports:root)[i]=a[i]}})(this,function(){return function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId])return installedModules[moduleId].exports;var module=installedModules[moduleId]={exports:{},id:moduleId,loaded:false};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.loaded=true;return module.exports}__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.p="";return __webpack_require__(0)}([function(module,exports,__webpack_require__){module.exports=__webpack_require__(1)},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.canonicalTitleMap=exports.schemaDefaults=exports.sfPath=undefined;var _merge=__webpack_require__(2);Object.keys(_merge).forEach(function(key){if(key==="default")return;Object.defineProperty(exports,key,{enumerable:true,get:function get(){return _merge[key]}})});var _select=__webpack_require__(7);Object.keys(_select).forEach(function(key){if(key==="default")return;Object.defineProperty(exports,key,{enumerable:true,get:function get(){return _select[key]}})});var _traverse=__webpack_require__(8);Object.keys(_traverse).forEach(function(key){if(key==="default")return;Object.defineProperty(exports,key,{enumerable:true,get:function get(){return _traverse[key]}})});var _schemaDefaults=__webpack_require__(9);var schemaDefaultsImp=_interopRequireWildcard(_schemaDefaults);var _sfPath=__webpack_require__(3);var sfPathImp=_interopRequireWildcard(_sfPath);var _canonicalTitleMap=__webpack_require__(6);var _canonicalTitleMap2=_interopRequireDefault(_canonicalTitleMap);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _interopRequireWildcard(obj){if(obj&&obj.__esModule){return obj}else{var newObj={};if(obj!=null){for(var key in obj){if(Object.prototype.hasOwnProperty.call(obj,key))newObj[key]=obj[key]}}newObj.default=obj;return newObj}}var sfPath=exports.sfPath=sfPathImp;var schemaDefaults=exports.schemaDefaults=schemaDefaultsImp;var canonicalTitleMap=exports.canonicalTitleMap=_canonicalTitleMap2.default},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.merge=merge;var _sfPath=__webpack_require__(3);var _canonicalTitleMap=__webpack_require__(6);var _canonicalTitleMap2=_interopRequireDefault(_canonicalTitleMap);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function merge(lookup,form,options,readonly,asyncTemplates){form=form||[];options=options||{};return form.map(function(obj){if(typeof obj==="string"){obj={key:obj}}if(obj.key){if(typeof obj.key==="string"){obj.key=(0,_sfPath.parse)(obj.key)}}if(obj.titleMap){obj.titleMap=(0,_canonicalTitleMap2.default)(obj.titleMap)}if(obj.key){var strid=(0,_sfPath.stringify)(obj.key);if(lookup[strid]){(function(){var schemaDefaults=lookup[strid];if(schemaDefaults){Object.keys(schemaDefaults).forEach(function(attr){if(obj[attr]===undefined){obj[attr]=schemaDefaults[attr]}})}})()}}if(readonly===true){obj.readonly=true}if(obj.items){obj.items=merge(lookup,obj.items,options,obj.readonly,asyncTemplates)}if(obj.tabs){obj.tabs.forEach(function(tab){if(tab.items){tab.items=merge(lookup,tab.items,options,obj.readonly,asyncTemplates)}})}if(obj.type==="checkbox"&&obj.schema["default"]===undefined){obj.schema["default"]=false}if(asyncTemplates&&obj.type==="template"&&!obj.template&&obj.templateUrl){asyncTemplates.push(obj)}return obj})}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _objectpath=__webpack_require__(4);Object.defineProperty(exports,"parse",{enumerable:true,get:function get(){return _objectpath.parse}});Object.defineProperty(exports,"stringify",{enumerable:true,get:function get(){return _objectpath.stringify}});Object.defineProperty(exports,"normalize",{enumerable:true,get:function get(){return _objectpath.normalize}})},function(module,exports,__webpack_require__){"use strict";module.exports=__webpack_require__(5).ObjectPath},function(module,exports,__webpack_require__){var __WEBPACK_AMD_DEFINE_RESULT__;"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};!function(undefined){var ObjectPath={parse:function parse(str){if(typeof str!=="string"){throw new TypeError("ObjectPath.parse must be passed a string")}var i=0;var parts=[];var d,b,q,c;while(i<str.length){d=str.indexOf(".",i);b=str.indexOf("[",i);if(d===-1&&b===-1){parts.push(str.slice(i,str.length));i=str.length}else if(b===-1||d!==-1&&d<b){parts.push(str.slice(i,d));i=d+1}else{if(b>i){parts.push(str.slice(i,b));i=b}q=str.slice(b+1,b+2);if(q!=='"'&&q!=="'"){c=str.indexOf("]",b);if(c===-1)c=str.length;parts.push(str.slice(i+1,c));i=str.slice(c+1,c+2)==="."?c+2:c+1}else{c=str.indexOf(q+"]",b);if(c===-1)c=str.length;while(str.slice(c-1,c)==="\\"&&b<str.length){b++;c=str.indexOf(q+"]",b)}parts.push(str.slice(i+2,c).replace(new RegExp("\\"+q,"g"),q));i=str.slice(c+2,c+3)==="."?c+3:c+2}}}return parts},stringify:function stringify(arr,quote){if(!Array.isArray(arr))arr=[arr.toString()];quote=quote==='"'?'"':"'";return arr.map(function(n){return"["+quote+n.toString().replace(new RegExp(quote,"g"),"\\"+quote)+quote+"]"}).join("")},normalize:function normalize(data,quote){return ObjectPath.stringify(Array.isArray(data)?data:ObjectPath.parse(data),quote)},registerModule:function registerModule(angular){angular.module("ObjectPath",[]).provider("ObjectPath",function(){this.parse=ObjectPath.parse;this.stringify=ObjectPath.stringify;this.normalize=ObjectPath.normalize;this.$get=function(){return ObjectPath}})}};if(true){!(__WEBPACK_AMD_DEFINE_RESULT__=function(){return{ObjectPath:ObjectPath}}.call(exports,__webpack_require__,exports,module),__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}else if((typeof exports==="undefined"?"undefined":_typeof(exports))==="object"){exports.ObjectPath=ObjectPath}else{window.ObjectPath=ObjectPath}}()},function(module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};exports.default=function(titleMap,originalEnum){if(!Array.isArray(titleMap)){var _ret=function(){var canonical=[];if(originalEnum){originalEnum.forEach(function(value){canonical.push({name:titleMap[value],value:value})})}else{Object.keys(titleMap).forEach(function(value){canonical.push({name:titleMap[value],value:value})})}return{v:canonical}}();if((typeof _ret==="undefined"?"undefined":_typeof(_ret))==="object")return _ret.v}return titleMap}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.select=select;var _sfPath=__webpack_require__(3);var _sfPath2=_interopRequireDefault(_sfPath);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var numRe=/^\d+$/;function select(projection,obj,valueToSet){if(!obj){obj=this}var parts=typeof projection==="string"?_sfPath2.default.parse(projection):projection;if(typeof valueToSet!=="undefined"&&parts.length===1){obj[parts[0]]=valueToSet;return obj}if(typeof valueToSet!=="undefined"&&typeof obj[parts[0]]==="undefined"){obj[parts[0]]=parts.length>2&&numRe.test(parts[1])?[]:{}}var value=obj[parts[0]];for(var i=1;i<parts.length;i++){if(parts[i]===""){return undefined}if(typeof valueToSet!=="undefined"){if(i===parts.length-1){value[parts[i]]=valueToSet;return valueToSet}else{var tmp=value[parts[i]];if(typeof tmp==="undefined"||tmp===null){tmp=numRe.test(parts[i+1])?[]:{};value[parts[i]]=tmp}value=tmp}}else if(value){value=value[parts[i]]}}return value}},function(module,exports){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.traverseSchema=traverseSchema;exports.traverseForm=traverseForm;function traverseSchema(schema,fn,path,ignoreArrays){ignoreArrays=ignoreArrays===undefined?true:ignoreArrays;path=path||[];var traverse=function traverse(schema,fn,path){fn(schema,path);if(schema.properties){Object.keys(schema.properties).forEach(function(name){var currentPath=path.slice();currentPath.push(name);traverse(schema.properties[name],fn,currentPath)})}if(!ignoreArrays&&schema.items){var arrPath=path.slice();arrPath.push("");traverse(schema.items,fn,arrPath)}};traverse(schema,fn,path||[])}function traverseForm(form,fn){fn(form);if(form.items){form.items.forEach(function(f){traverseForm(f,fn)})}if(form.tabs){form.tabs.forEach(function(tab){if(tab.items){tab.items.forEach(function(f){traverseForm(f,fn)})}})}}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(obj){return typeof obj}:function(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol?"symbol":typeof obj};exports.defaultFormDefinition=defaultFormDefinition;exports.stdFormObj=stdFormObj;exports.text=text;exports.number=number;exports.integer=integer;exports.checkbox=checkbox;exports.select=select;exports.checkboxes=checkboxes;exports.fieldset=fieldset;exports.array=array;exports.createDefaults=createDefaults;exports.defaultForm=defaultForm;var _sfPath=__webpack_require__(3);var _canonicalTitleMap=__webpack_require__(6);var _canonicalTitleMap2=_interopRequireDefault(_canonicalTitleMap);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}var stripNullType=function stripNullType(type){if(Array.isArray(type)&&type.length==2){if(type[0]==="null"){return type[1]}if(type[1]==="null"){return type[0]}}return type};var enumToTitleMap=function enumToTitleMap(enm){var titleMap=[];enm.forEach(function(name){titleMap.push({name:name,value:name})});return titleMap};function defaultFormDefinition(schemaTypes,name,schema,options){var rules=schemaTypes[stripNullType(schema.type)];if(rules){var def=void 0;var innerDefaultFormDefinition=function innerDefaultFormDefinition(childName,childSchema,childOptions){return defaultFormDefinition(schemaTypes,childName,childSchema,childOptions)};for(var i=0;i<rules.length;i++){def=rules[i](name,schema,options,innerDefaultFormDefinition);if(def){if(def.schema["x-schema-form"]){Object.assign(def,def.schema["x-schema-form"])}return def}}}}function stdFormObj(name,schema,options){options=options||{};var f=options.global&&options.global.formDefaults?Object.assign({},options.global.formDefaults):{};if(options.global&&options.global.supressPropertyTitles===true){f.title=schema.title}else{f.title=schema.title||name}if(schema.description){f.description=schema.description}if(options.required===true||schema.required===true){f.required=true}if(schema.maxLength){f.maxlength=schema.maxLength}if(schema.minLength){f.minlength=schema.minLength}if(schema.readOnly||schema.readonly){f.readonly=true}if(schema.minimum){f.minimum=schema.minimum+(schema.exclusiveMinimum?1:0)}if(schema.maximum){f.maximum=schema.maximum-(schema.exclusiveMaximum?1:0)}if(schema.validationMessage){f.validationMessage=schema.validationMessage}if(schema.enumNames){f.titleMap=(0,_canonicalTitleMap2.default)(schema.enumNames,schema["enum"])}f.schema=schema;f.ngModelOptions=f.ngModelOptions||{};return f}function text(name,schema,options){if(stripNullType(schema.type)==="string"&&!schema["enum"]){var f=stdFormObj(name,schema,options);f.key=options.path;f.type="text";options.lookup[(0,_sfPath.stringify)(options.path)]=f;return f}}function number(name,schema,options){if(stripNullType(schema.type)==="number"){var f=stdFormObj(name,schema,options);f.key=options.path;f.type="number";options.lookup[(0,_sfPath.stringify)(options.path)]=f;return f}}function integer(name,schema,options){if(stripNullType(schema.type)==="integer"){var f=stdFormObj(name,schema,options);f.key=options.path;f.type="number";options.lookup[(0,_sfPath.stringify)(options.path)]=f;return f}}function checkbox(name,schema,options){if(stripNullType(schema.type)==="boolean"){var f=stdFormObj(name,schema,options);f.key=options.path;f.type="checkbox";options.lookup[(0,_sfPath.stringify)(options.path)]=f;return f}}function select(name,schema,options){if(stripNullType(schema.type)==="string"&&schema["enum"]){var f=stdFormObj(name,schema,options);f.key=options.path;f.type="select";if(!f.titleMap){f.titleMap=enumToTitleMap(schema["enum"])}options.lookup[(0,_sfPath.stringify)(options.path)]=f;return f}}function checkboxes(name,schema,options){if(stripNullType(schema.type)==="array"&&schema.items&&schema.items["enum"]){var f=stdFormObj(name,schema,options);f.key=options.path;f.type="checkboxes";if(!f.titleMap){f.titleMap=enumToTitleMap(schema.items["enum"])}options.lookup[(0,_sfPath.stringify)(options.path)]=f;return f}}function fieldset(name,schema,options,defaultFormDef){if(stripNullType(schema.type)==="object"){var _ret=function(){var f=stdFormObj(name,schema,options);f.type="fieldset";f.key=options.path;f.items=[];options.lookup[(0,_sfPath.stringify)(options.path)]=f;if(schema.properties){Object.keys(schema.properties).forEach(function(key){var value=schema.properties[key];var path=options.path.slice();path.push(key);if(options.ignore[(0,_sfPath.stringify)(path)]!==true){var required=schema.required&&schema.required.indexOf(key)!==-1;var def=defaultFormDef(key,value,{path:path,required:required||false,lookup:options.lookup,ignore:options.ignore,global:options.global});if(def){f.items.push(def)}}})}return{v:f}}();if((typeof _ret==="undefined"?"undefined":_typeof(_ret))==="object")return _ret.v}}function array(name,schema,options,defaultFormDef){if(stripNullType(schema.type)==="array"){var f=stdFormObj(name,schema,options);f.type="array";f.key=options.path;options.lookup[(0,_sfPath.stringify)(options.path)]=f;var required=schema.required&&schema.required.indexOf(options.path[options.path.length-1])!==-1;var arrPath=options.path.slice();arrPath.push("");f.items=[defaultFormDef(name,schema.items,{path:arrPath,required:required||false,lookup:options.lookup,ignore:options.ignore,global:options.global})];return f}}function createDefaults(){return{string:[select,text],object:[fieldset],number:[number],integer:[integer],boolean:[checkbox],array:[checkboxes,array]}}function defaultForm(schema,defaultSchemaTypes,ignore,globalOptions){var form=[];var lookup={};ignore=ignore||{};globalOptions=globalOptions||{};defaultSchemaTypes=defaultSchemaTypes||createDefaults();if(schema.properties){Object.keys(schema.properties).forEach(function(key){if(ignore[key]!==true){var required=schema.required&&schema.required.indexOf(key)!==-1;var def=defaultFormDefinition(defaultSchemaTypes,key,schema.properties[key],{path:[key],lookup:lookup,ignore:ignore,required:required,global:globalOptions});if(def){form.push(def)}}})}else{throw new Error('Not implemented. Only type "object" allowed at root level of schema.')}return{form:form,lookup:lookup}}}])})},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(){var validator={};validator.validate=function(form,value){if(!form){return{valid:true}}var schema=form.schema;if(!schema){return{valid:true}}if(value===""){value=undefined}if(form.type==="number"&&value===null){value=undefined}if(schema.type==="object"&&value===null){value=undefined}if(schema.type==="string"&&schema.format==="date"){if(value===null){value=undefined}else{if(typeof value.toISOString==="function"){value=value.toISOString()}}}var wrap={type:"object",properties:{}};var propName=form.key[form.key.length-1];wrap.properties[propName]=schema;if(form.required){wrap.required=[propName]}var valueWrap={};if(_angular2.default.isDefined(value)){valueWrap[propName]=value}return _tv2.default.validateResult(valueWrap,wrap)};return validator};var _tv=__webpack_require__(8);var _tv2=_interopRequireDefault(_tv);var _angular=__webpack_require__(2);var _angular2=_interopRequireDefault(_angular);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}},function(module,exports){module.exports=tv4},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(){var defaultMessages={default:"Field does not validate",0:"Invalid type, expected {{schema.type}}",1:"No enum match for: {{viewValue}}",10:'Data does not match any schemas from "anyOf"',11:'Data does not match any schemas from "oneOf"',12:'Data is valid against more than one schema from "oneOf"',13:'Data matches schema from "not"',100:"Value is not a multiple of {{schema.multipleOf}}",101:"{{viewValue}} is less than the allowed minimum of {{schema.minimum}}",102:"{{viewValue}} is equal to the exclusive minimum {{schema.minimum}}",103:"{{viewValue}} is greater than the allowed maximum of {{schema.maximum}}",104:"{{viewValue}} is equal to the exclusive maximum {{schema.maximum}}",105:"Value is not a valid number",200:"String is too short ({{viewValue.length}} chars), minimum {{schema.minLength}}",201:"String is too long ({{viewValue.length}} chars), maximum {{schema.maxLength}}",202:"String does not match pattern: {{schema.pattern}}",300:"Too few properties defined, minimum {{schema.minProperties}}",301:"Too many properties defined, maximum {{schema.maxProperties}}",302:"Required",303:"Additional properties not allowed",304:"Dependency failed - key must exist",400:"Array is too short ({{value.length}}), minimum {{schema.minItems}}",401:"Array is too long ({{value.length}}), maximum {{schema.maxItems}}",402:"Array items are not unique",403:"Additional items not allowed",500:"Format validation failed",501:'Keyword failed: "{{title}}"',600:"Circular $refs",1e3:"Unknown property (not in schema)"};defaultMessages.number=defaultMessages[105];defaultMessages.required=defaultMessages[302];defaultMessages.min=defaultMessages[101];defaultMessages.max=defaultMessages[103];defaultMessages.maxlength=defaultMessages[201];defaultMessages.minlength=defaultMessages[200];defaultMessages.pattern=defaultMessages[202];this.setDefaultMessages=function(messages){defaultMessages=messages};this.getDefaultMessages=function(){return defaultMessages};this.setDefaultMessage=function(error,msg){defaultMessages[error]=msg};this.$get=["$interpolate",function($interpolate){var service={};service.defaultMessages=defaultMessages;service.interpolate=function(error,value,viewValue,form,global){global=global||{};var validationMessage=form.validationMessage||{};if(error.indexOf("tv4-")===0){error=error.substring(4)}var message=validationMessage["default"]||global["default"]||"";[validationMessage,global,defaultMessages].some(function(val){if(_angular2.default.isString(val)||_angular2.default.isFunction(val)){message=val;return true}if(val&&val[error]){message=val[error];return true}});var context={error:error,value:value,viewValue:viewValue,form:form,schema:form.schema,title:form.title||form.schema&&form.schema.title};if(_angular2.default.isFunction(message)){return message(context)}else{return $interpolate(message)(context)}};return service}]};var _angular=__webpack_require__(2);var _angular2=_interopRequireDefault(_angular);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(){this.parse=_jsonSchemaFormCore.sfPath.parse;this.stringify=_jsonSchemaFormCore.sfPath.stringify;this.normalize=_jsonSchemaFormCore.sfPath.normalize;this.$get=function(){return _jsonSchemaFormCore.sfPath}};var _angular=__webpack_require__(2);var _angular2=_interopRequireDefault(_angular);var _jsonSchemaFormCore=__webpack_require__(6);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(sfSelect,schemaForm,sfValidator,sfPath){var setIndex=function setIndex(index){return function(form){if(form.key){form.key[form.key.indexOf("")]=index}}};return{restrict:"A",scope:true,require:"?ngModel",link:function link(scope,element,attrs,ngModel){var formDefCache={};scope.validateArray=_angular2.default.noop;if(ngModel){scope.$emit("schemaFormPropagateNgModelController",ngModel)}var once=scope.$watch(attrs.sfArray,function(form){if(!form){return}var list=sfSelect(form.key,scope.model);var key=sfPath.normalize(form.key);scope.$watch("model"+(key[0]!=="["?".":"")+key,function(value){list=scope.modelArray=value});if(_angular2.default.isUndefined(list)){list=[];sfSelect(form.key,scope.model,list)}scope.modelArray=list;if(form.items){var subForm=form.items[0];if(form.items.length>1){subForm={type:"section",items:form.items.map(function(item){item.ngModelOptions=form.ngModelOptions;if(_angular2.default.isUndefined(item.readonly)){item.readonly=form.readonly}return item})}}}scope.copyWithIndex=function(index){if(!formDefCache[index]){if(subForm){var copy=_angular2.default.copy(subForm);copy.arrayIndex=index;schemaForm.traverseForm(copy,setIndex(index));formDefCache[index]=copy}}return formDefCache[index]};scope.appendToArray=function(){var len=list.length;var copy=scope.copyWithIndex(len);schemaForm.traverseForm(copy,function(part){if(part.key){var def;if(_angular2.default.isDefined(part["default"])){def=part["default"]}if(_angular2.default.isDefined(part.schema)&&_angular2.default.isDefined(part.schema["default"])){def=part.schema["default"]}if(_angular2.default.isDefined(def)){sfSelect(part.key,scope.model,def)}}});if(len===list.length){var type=sfSelect("schema.items.type",form);var dflt;if(type==="object"){dflt={}}else if(type==="array"){dflt=[]}list.push(dflt)}scope.validateArray();return list};scope.deleteFromArray=function(index){list.splice(index,1);scope.validateArray();if(ngModel&&ngModel.$setDirty){ngModel.$setDirty()}return list};if(!form.titleMap&&form.startEmpty!==true&&list.length===0){scope.appendToArray()}if(form.titleMap&&form.titleMap.length>0){scope.titleMapValues=[];var updateTitleMapValues=function updateTitleMapValues(arr){scope.titleMapValues=[];arr=arr||[];form.titleMap.forEach(function(item){scope.titleMapValues.push(arr.indexOf(item.value)!==-1)})};updateTitleMapValues(scope.modelArray);scope.$watchCollection("modelArray",updateTitleMapValues);scope.$watchCollection("titleMapValues",function(vals,old){if(vals&&vals!==old){var arr=scope.modelArray;while(arr.length>0){arr.pop()}form.titleMap.forEach(function(item,index){if(vals[index]){arr.push(item.value)}});scope.validateArray()}})}if(ngModel){var error;scope.validateArray=function(){var result=sfValidator.validate(form,scope.modelArray.length>0?scope.modelArray:undefined);Object.keys(ngModel.$error).filter(function(k){return k.indexOf("tv4-")===0}).forEach(function(k){ngModel.$setValidity(k,true)});if(result.valid===false&&result.error&&(result.error.dataPath===""||result.error.dataPath==="/"+form.key[form.key.length-1])){ngModel.$setViewValue(scope.modelArray);error=result.error;ngModel.$setValidity("tv4-"+result.error.code,false)}};scope.$on("schemaFormValidate",scope.validateArray);scope.hasSuccess=function(){if(scope.options&&scope.options.pristine&&scope.options.pristine.success===false){return ngModel.$valid&&!ngModel.$pristine&&!ngModel.$isEmpty(ngModel.$modelValue)}else{return ngModel.$valid&&(!ngModel.$pristine||!ngModel.$isEmpty(ngModel.$modelValue))}};scope.hasError=function(){if(!scope.options||!scope.options.pristine||scope.options.pristine.errors!==false){return ngModel.$invalid}else{return ngModel.$invalid&&!ngModel.$pristine}};scope.schemaError=function(){return error}}once()})}}};var _angular=__webpack_require__(2);var _angular2=_interopRequireDefault(_angular);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(){return{require:"ngModel",restrict:"AC",scope:false,link:function link(scope,element,attrs,ctrl){var form=scope.$eval(attrs.sfChanged);if(form&&form.onChange){ctrl.$viewChangeListeners.push(function(){if(_angular2.default.isFunction(form.onChange)){form.onChange(ctrl.$modelValue,form)}else{scope.evalExpr(form.onChange,{modelValue:ctrl.$modelValue,form:form})}})}}}};var _angular=__webpack_require__(2);var _angular2=_interopRequireDefault(_angular);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function($parse,$compile,$http,$templateCache,$interpolate,$q,sfErrorMessage,sfPath,sfSelect){return{restrict:"AE",replace:false,transclude:false,scope:true,require:"^sfSchema",link:{pre:function pre(scope,element,attrs,sfSchema){scope.$on("schemaFormPropagateNgModelController",function(event,ngModel){event.stopPropagation();event.preventDefault();scope.ngModel=ngModel});scope.form=sfSchema.lookup["f"+attrs.sfField]},post:function post(scope,element,attrs,sfSchema){scope.showTitle=function(){return scope.form&&scope.form.notitle!==true&&scope.form.title};scope.listToCheckboxValues=function(list){var values={};_angular2.default.forEach(list,function(v){values[v]=true});return values};scope.checkboxValuesToList=function(values){var lst=[];_angular2.default.forEach(values,function(v,k){if(v){lst.push(k)}});return lst};scope.buttonClick=function($event,form){if(_angular2.default.isFunction(form.onClick)){form.onClick($event,form)}else if(_angular2.default.isString(form.onClick)){if(sfSchema){sfSchema.evalInParentScope(form.onClick,{$event:$event,form:form})}else{scope.$eval(form.onClick,{$event:$event,form:form})}}};scope.evalExpr=function(expression,locals){if(sfSchema){return sfSchema.evalInParentScope(expression,locals)}return scope.$eval(expression,locals)};scope.evalInScope=function(expression,locals){if(expression){return scope.$eval(expression,locals)}};scope.interp=function(expression,locals){return expression&&$interpolate(expression)(locals)};scope.hasSuccess=function(){if(!scope.ngModel){return false}if(scope.options&&scope.options.pristine&&scope.options.pristine.success===false){return scope.ngModel.$valid&&!scope.ngModel.$pristine&&!scope.ngModel.$isEmpty(scope.ngModel.$modelValue)}else{return scope.ngModel.$valid&&(!scope.ngModel.$pristine||!scope.ngModel.$isEmpty(scope.ngModel.$modelValue))}};scope.hasError=function(){if(!scope.ngModel){return false}if(!scope.options||!scope.options.pristine||scope.options.pristine.errors!==false){return scope.ngModel.$invalid}else{return scope.ngModel.$invalid&&!scope.ngModel.$pristine}};scope.errorMessage=function(schemaError){return sfErrorMessage.interpolate(schemaError&&schemaError.code+""||"default",scope.ngModel&&scope.ngModel.$modelValue||"",scope.ngModel&&scope.ngModel.$viewValue||"",scope.form,scope.options&&scope.options.validationMessage)};var form=scope.form;if(form.key){scope.$on("schemaForm.error."+form.key.join("."),function(event,error,validationMessage,validity,formName){formName=validity;if(validationMessage===true||validationMessage===false){validity=validationMessage;validationMessage=undefined}if(formName!=undefined&&scope.ngModel.$$parentForm.$name!==formName){return}if(scope.ngModel&&error){if(scope.ngModel.$setDirty){scope.ngModel.$setDirty()}else{scope.ngModel.$dirty=true;scope.ngModel.$pristine=false}if(validationMessage){if(!form.validationMessage){form.validationMessage={}}form.validationMessage[error]=validationMessage}scope.ngModel.$setValidity(error,validity===true);if(validity===true){scope.ngModel.$validate();scope.$broadcast("schemaFormValidate")}}});scope.$on("$destroy",function(){if(!scope.externalDestructionInProgress){var destroyStrategy=form.destroyStrategy||scope.options&&scope.options.destroyStrategy||"remove";if(form.key&&destroyStrategy!=="retain"){var obj=scope.model;if(form.key.length>1){obj=sfSelect(form.key.slice(0,form.key.length-1),obj)}if(obj===undefined){return}var type=form.schema&&form.schema.type||"";if(destroyStrategy==="empty"&&type.indexOf("string")!==-1){obj[form.key.slice(-1)]=""}else if(destroyStrategy==="empty"&&type.indexOf("object")!==-1){obj[form.key.slice(-1)]={}}else if(destroyStrategy==="empty"&&type.indexOf("array")!==-1){obj[form.key.slice(-1)]=[]}else if(destroyStrategy==="null"){obj[form.key.slice(-1)]=null}else{delete obj[form.key.slice(-1)]}}}})}}}}};var _angular=__webpack_require__(2);var _angular2=_interopRequireDefault(_angular);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function($injector,sfErrorMessage){var $sanitize=$injector.has("$sanitize")?$injector.get("$sanitize"):function(html){return html};var $timeout=$injector.get("$timeout");return{scope:false,restrict:"EA",link:function link(scope,element,attrs){var message="";if(attrs.sfMessage){scope.$watch(attrs.sfMessage,function(msg){if(msg){message=$sanitize(msg);update(!!scope.ngModel)}})}var currentMessage;var setMessage=function setMessage(msg){if(msg!==currentMessage){element.html(msg);currentMessage=msg}};var updateAsync=function updateAsync(checkForErrors){$timeout(function(){update(checkForErrors)})};var update=function update(checkForErrors){if(checkForErrors){if(!scope.hasError()){setMessage(message)}else{var errors=[];_angular2.default.forEach(scope.ngModel&&scope.ngModel.$error,function(status,code){if(status){errors.push(code)}});errors=errors.filter(function(e){return e!=="schemaForm"});var error=errors[0];if(error){setMessage(sfErrorMessage.interpolate(error,scope.ngModel.$modelValue,scope.ngModel.$viewValue,scope.form,scope.options&&scope.options.validationMessage))}else{setMessage(message)}}}else{setMessage(message)}};update();var once=scope.$watch("ngModel",function(ngModel){if(ngModel){ngModel.$parsers.push(function(val){updateAsync(true);return val});ngModel.$formatters.push(function(val){updateAsync(true);return val});once()}});scope.$watchCollection("ngModel.$error",function(){update(!!scope.ngModel)})}}};var _angular=__webpack_require__(2);var _angular2=_interopRequireDefault(_angular);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(sel,sfPath,schemaForm){return{scope:false,link:function link(scope,element,attrs){scope.min=0;scope.modelArray=scope.$eval(attrs.sfNewArray);var watchFn=function watchFn(){scope.modelArray=scope.$eval(attrs.sfNewArray);if(scope.ngModel&&scope.ngModel.$pristine&&scope.firstDigest&&(!scope.options||scope.options.validateOnRender!==true)){return}else if(scope.validateField){scope.validateField()}};var onChangeFn=function onChangeFn(){if(scope.form&&scope.form.onChange){if(_angular2.default.isFunction(scope.form.onChange)){scope.form.onChange(scope.modelArray,scope.form)}else{scope.evalExpr(scope.form.onChange,{modelValue:scope.modelArray,form:scope.form})}}};var getOrCreateModel=function getOrCreateModel(){var model=scope.modelArray;if(!model){var selection=sfPath.parse(attrs.sfNewArray);model=[];sel(selection,scope,model);scope.modelArray=model}return model};var once=scope.$watch("form",function(form){
if(!form){return}if(!form.titleMap&&form.startEmpty!==true&&(!scope.modelArray||scope.modelArray.length===0)){scope.appendToArray();if(form.startAtMin===true){while(scope.modelArray.length<form.schema.minItems){scope.appendToArray()}}}if(scope.form&&scope.form.schema&&scope.form.schema.uniqueItems===true){scope.$watch(attrs.sfNewArray,watchFn,true);scope.$watch([attrs.sfNewArray,attrs.sfNewArray+".length"],onChangeFn)}else{if(scope.$watchGroup){scope.$watchGroup([attrs.sfNewArray,attrs.sfNewArray+".length"],function(){watchFn();onChangeFn()})}else{scope.$watch(attrs.sfNewArray,function(){watchFn();onChangeFn()});scope.$watch(attrs.sfNewArray+".length",function(){watchFn();onChangeFn()})}}if(form.titleMap&&form.titleMap.length>0){scope.titleMapValues=[];var updateTitleMapValues=function updateTitleMapValues(arr){scope.titleMapValues=[];arr=arr||[];form.titleMap.forEach(function(item){scope.titleMapValues.push(arr.indexOf(item.value)!==-1)})};updateTitleMapValues(scope.modelArray);scope.$watchCollection("modelArray",updateTitleMapValues);scope.$watchCollection("titleMapValues",function(vals,old){if(vals&&vals!==old){var arr=getOrCreateModel();form.titleMap.forEach(function(item,index){var arrIndex=arr.indexOf(item.value);if(arrIndex===-1&&vals[index]){arr.push(item.value)}if(arrIndex!==-1&&!vals[index]){arr.splice(arrIndex,1)}});if(scope.validateField){scope.validateField()}}})}once()});scope.appendToArray=function(){var empty;var model=getOrCreateModel();if(scope.form&&scope.form.schema&&scope.form.schema.items){var items=scope.form.schema.items;if(items.type&&items.type.indexOf("object")!==-1){empty={};if(!scope.options||scope.options.setSchemaDefaults!==false){empty=_angular2.default.isDefined(items["default"])?items["default"]:empty;if(empty){schemaForm.traverseSchema(items,function(prop,path){if(_angular2.default.isDefined(prop["default"])){sel(path,empty,prop["default"])}})}}}else if(items.type&&items.type.indexOf("array")!==-1){empty=[];if(!scope.options||scope.options.setSchemaDefaults!==false){empty=items["default"]||empty}}else{if(!scope.options||scope.options.setSchemaDefaults!==false){empty=items["default"]||empty}}}model.push(empty);return model};scope.deleteFromArray=function(index){var model=scope.modelArray;if(model){model.splice(index,1)}return model};var setIndex=function setIndex(index){return function(form){if(form.key){form.key[form.key.indexOf("")]=index}}};var formDefCache={};scope.copyWithIndex=function(index){var form=scope.form;if(!formDefCache[index]){var subForm=form.items[0];if(form.items.length>1){subForm={type:"section",items:form.items.map(function(item){item.ngModelOptions=form.ngModelOptions;if(_angular2.default.isUndefined(item.readonly)){item.readonly=form.readonly}return item})}}if(subForm){var copy=_angular2.default.copy(subForm);copy.arrayIndex=index;schemaForm.traverseForm(copy,setIndex(index));formDefCache[index]=copy}}return formDefCache[index]}}}};var _angular=__webpack_require__(2);var _angular2=_interopRequireDefault(_angular);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function($compile,$http,$templateCache,$q,schemaForm,schemaFormDecorators,sfSelect,sfPath,sfBuilder){return{scope:{schema:"=sfSchema",initialForm:"=sfForm",model:"=sfModel",options:"=sfOptions"},controller:["$scope",function($scope){this.evalInParentScope=function(expr,locals){return $scope.$parent.$eval(expr,locals)};var that=this;$scope.lookup=function(lookup){if(lookup){that.lookup=lookup}return that.lookup}}],replace:false,restrict:"A",transclude:true,require:"?form",link:function link(scope,element,attrs,formCtrl,transclude){scope.formCtrl=formCtrl;var ignore={};transclude(scope,function(clone){clone.addClass("schema-form-ignore");element.prepend(clone);if(element[0].querySelectorAll){var models=element[0].querySelectorAll("[ng-model]");if(models){for(var i=0;i<models.length;i++){var key=models[i].getAttribute("ng-model");ignore[key.substring(key.indexOf(".")+1)]=true}}}});var lastDigest={};var childScope;var render=function render(schema,form){var asyncTemplates=[];var merged=schemaForm.merge(schema,form,ignore,scope.options,undefined,asyncTemplates);if(asyncTemplates.length>0){$q.all(asyncTemplates.map(function(form){return $http.get(form.templateUrl,{cache:$templateCache}).then(function(res){form.template=res.data})})).then(function(){internalRender(schema,form,merged)})}else{internalRender(schema,form,merged)}};var internalRender=function internalRender(schema,form,merged){if(childScope){scope.externalDestructionInProgress=true;childScope.$destroy();scope.externalDestructionInProgress=false}childScope=scope.$new();childScope.schemaForm={form:merged,schema:schema};element.children(":not(.schema-form-ignore)").remove();var slots={};var slotsFound=element[0].querySelectorAll("*[sf-insert-field]");for(var i=0;i<slotsFound.length;i++){slots[slotsFound[i].getAttribute("sf-insert-field")]=slotsFound[i]}var decorator=schemaFormDecorators.decorator(attrs.sfUseDecorator);var lookup=Object.create(null);scope.lookup(lookup);element[0].appendChild(sfBuilder.build(merged,decorator,slots,lookup));childScope.firstDigest=true;setTimeout(function(){childScope.firstDigest=false},0);$compile(element.children())(childScope);if(!scope.options||scope.options.setSchemaDefaults!==false){schemaForm.traverseSchema(schema,function(prop,path){if(_angular2.default.isDefined(prop["default"])){var val=sfSelect(path,scope.model);if(_angular2.default.isUndefined(val)){sfSelect(path,scope.model,prop["default"])}}})}scope.$emit("sf-render-finished",element)};var defaultForm=["*"];scope.$watch(function(){var schema=scope.schema;var form=scope.initialForm||defaultForm;if(form&&schema&&schema.type&&(lastDigest.form!==form||lastDigest.schema!==schema)&&Object.keys(schema.properties).length>0){lastDigest.schema=schema;lastDigest.form=form;render(schema,form)}});scope.$on("schemaFormRedraw",function(){var schema=scope.schema;var form=scope.initialForm?_angular2.default.copy(scope.initialForm):["*"];if(schema){render(schema,form)}});scope.$on("$destroy",function(){scope.externalDestructionInProgress=true});scope.evalExpr=function(expression,locals){return scope.$parent.$eval(expression,locals)}}}};var _angular=__webpack_require__(2);var _angular2=_interopRequireDefault(_angular);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}},function(module,exports,__webpack_require__){"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.default=function(sfValidator,$parse,sfSelect){return{restrict:"A",scope:false,priority:500,require:"ngModel",link:function link(scope,element,attrs,ngModel){scope.$emit("schemaFormPropagateNgModelController",ngModel);var error=null;var form=scope.$eval(attrs.schemaValidate);if(form.copyValueTo){ngModel.$viewChangeListeners.push(function(){var paths=form.copyValueTo;_angular2.default.forEach(paths,function(path){sfSelect(path,scope.model,ngModel.$modelValue)})})}var validate=function validate(viewValue){if(!form){return viewValue}if(scope.options&&scope.options.tv4Validation===false){return viewValue}var result=sfValidator.validate(form,viewValue);Object.keys(ngModel.$error).filter(function(k){return k.indexOf("tv4-")===0}).forEach(function(k){ngModel.$setValidity(k,true)});if(!result.valid){ngModel.$setValidity("tv4-"+result.error.code,false);error=result.error;if(ngModel.$validators){return viewValue}return undefined}return viewValue};if(typeof form.ngModel==="function"){form.ngModel(ngModel)}["$parsers","$viewChangeListeners","$formatters"].forEach(function(attr){if(form[attr]&&ngModel[attr]){form[attr].forEach(function(fn){ngModel[attr].push(fn)})}});["$validators","$asyncValidators"].forEach(function(attr){if(form[attr]&&ngModel[attr]){_angular2.default.forEach(form[attr],function(fn,name){ngModel[attr][name]=fn})}});ngModel.$parsers.push(validate);if(ngModel.$validators){ngModel.$validators.schemaForm=function(){return!Object.keys(ngModel.$error).some(function(e){return e!=="schemaForm"})}}var schema=form.schema;scope.validateField=function(formName){if(formName!=undefined&&ngModel.$$parentForm.$name!==formName){return}if(schema&&schema.type.indexOf("array")!==-1){validate(ngModel.$modelValue)}if(ngModel.$setDirty){ngModel.$setDirty();ngModel.$setViewValue(ngModel.$viewValue);ngModel.$commitViewValue();if(form.type==="checkbox"){if(form.required&&ngModel.$modelValue===undefined){ngModel.$setValidity("tv4-302",false)}}else if(form.required&&ngModel.$isEmpty(ngModel.$modelValue)){ngModel.$setValidity("tv4-302",false)}}else{ngModel.$setViewValue(ngModel.$viewValue)}};var first=true;ngModel.$formatters.push(function(val){if(ngModel.$pristine&&first&&(!scope.options||scope.options.validateOnRender!==true)){first=false;return val}validate(ngModel.$modelValue);return val});scope.$on("schemaFormValidate",function(event,formName){scope.validateField(formName)});scope.schemaError=function(){return error}}}};var _angular=__webpack_require__(2);var _angular2=_interopRequireDefault(_angular);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}}])})},function(module,exports){module.exports=angular},function(module,exports){module.exports=tv4},function(module,exports){angular.module("schemaForm").run(["$templateCache",function($templateCache){$templateCache.put("decorators/material/actions-trcl.html",'<div class="btn-group schema-form-actions {{form.htmlClass}}" ng-transclude=""></div>');$templateCache.put("decorators/material/actions.html",'<section layout="row" class="btn-group schema-form-actions {{form.htmlClass}}"></section>');$templateCache.put("decorators/material/array.html",'<div class="schema-form-array {{form.htmlClass}}" sf-field-model="sf-new-array" sf-new-array=""><label class="control-label" ng-show="showTitle()">{{ form.title }}</label><md-list class="list-group" sf-field-model="" ui-sortable="form.sortOptions"><md-list-item layout="row" class="list-group-item" sf-field-model="ng-repeat" ng-repeat="item in modelArray track by $index" schema-form-array-items=""><md-button flex="none" flex-order="2" type="button" ng-if="!( form.readonly || form.remove === null )" ng-click="deleteFromArray($index)" ng-disabled="form.schema.minItems >= modelArray.length" class="md-icon-button" aria-label="More" style="position: relative; z-index: 20;"><md-icon>close</md-icon></md-button></md-list-item></md-list><div class="clearfix" ng-model="modelArray" schema-validate="form" layout="row" layout-align="end center"><div class="help-block" ng-show="(hasError() && errorMessage(schemaError())) || form.description" ng-bind-html="(hasError() && errorMessage(schemaError())) || form.description"></div><md-button ng-if="!( form.readonly || form.add === null )" ng-click="appendToArray()" ng-disabled="form.schema.maxItems <= modelArray.length" type="button" style="align-self: flex-end;" class="md-raised md-mini md-primary {{ form.style.add || \'btn-default\' }} pull-right"><i class="glyphicon glyphicon-plus"></i> {{ form.add || \'Add\'}}</md-button></div></div>');$templateCache.put("decorators/material/autocomplete.html",'<div class="form-group {{::form.htmlClass ? form.htmlClass : \'flex-100\'}} schema-form-select" sf-layout=""><md-autocomplete flex="" sf-messages="" ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess(), \'has-feedback\': form.feedback !== false}" ng-disabled="form.readonly" ng-model="$$value$$" sf-autocomplete="" sf-field-model="replaceAll" sf-changed-auto-complete="form" schema-validate="form" md-selected-item="$$value$$" md-search-text="searchText" md-selected-item-change="\'todo\';" md-items="item in evalExpr(\'this[\\\\\'\'+form.optionFilter+\'\\\\\'](\\\\\'\'+searchText+\'\\\\\')\')" md-item-text="item.name" md-floating-label="{{::form.title}}" md-menu-class="autocomplete-custom-template"><md-item-template><span md-highlight-text="searchText">{{item.name}}</span></md-item-template><md-not-found>No matches found</md-not-found></md-autocomplete></div>');$templateCache.put("decorators/material/card-content.html",'<md-card-content class="schema-form-card-content {{form.htmlClass}}"></md-card-content>');$templateCache.put("decorators/material/card.html",'<md-card ng-disabled="form.readonly" class="standard {{form.htmlClass}}"><md-card-header ng-if="form.title && !form.notitle"><md-card-header-text><span class="md-title">{{ form.title }}</span></md-card-header-text></md-card-header><md-card-content ng-class=\'{"layout-column": !form.inline, "layout-row": form.inline}\' layout-wrap="" sf-field-transclude=""></md-card-content></md-card>');$templateCache.put("decorators/material/checkbox.html",'<div class="checkbox schema-form-checkbox {{::form.htmlClass}}" ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess()}" sf-messages=""><md-checkbox sf-field-model="" sf-changed="form" ng-disabled="form.readonly" schema-validate="form" sf-material-class="md-checked" class="{{::form.fieldHtmlClass}}" name="{{::form.key|sfCamelKey}}" aria-label="{{::form.title}}"><span>{{::form.title}}</span></md-checkbox></div>');$templateCache.put("decorators/material/checkboxes.html",'<div sf-array="form" sf-field-model="" class="form-group schema-form-checkboxes {{::form.htmlClass}}" ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess()}" sf-messages=""><label class="control-label" ng-show="showTitle()">{{::form.title}}</label><div class="checkbox" ng-repeat="val in titleMapValues track by $index"><md-checkbox ng-model="titleMapValues[$index]" sf-changed="form" ng-disabled="::form.readonly" name="{{::form.key|sfCamelKey}}" ng-true-value="true" ng-false-value="false" aria-label="{{::form.title}}">{{::form.titleMap[$index].name}}</md-checkbox></div></div>');$templateCache.put("decorators/material/chips.html",'<div class="form-group schema-form-chips {{form.htmlClass}}" ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess(), \'has-feedback\': form.feedback !== false}"><md-chips sf-field-model="" readonly="form.readonly" flex="" placeholder="{{::form.title}}"><md-chip-template><strong ng-if="!form.template">{{$chip}}</strong></md-chip-template></md-chips><div ng-messages="ngModel.$error"><div sf-message="" ng-message=""></div></div></div>');$templateCache.put("decorators/material/date.html",'<div class="schema-form-date {{::form.htmlClass ? form.htmlClass : \'flex-100\'}} layout-row"><md-input-container sf-messages="" flex="100"><label ng-show="showTitle()" for="{{::form.key|sfCamelKey}}">{{::form.title}}</label><md-datepicker sf-field-model="" sf-changed="form" schema-validate="form" sf-type-parser="form.schema" id="{{::form.key|sfCamelKey}}" ng-show="::form.key" ng-class="::form.fieldHtmlClass" ng-disabled="::form.readonly"></md-datepicker></md-input-container></div>');$templateCache.put("decorators/material/default.html",'<div class="{{::form.htmlClass ? form.htmlClass : \'flex-100\'}}"><md-input-container class="schema-form-{{::form.type}}" ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess(), \'has-feedback\': form.feedback !== false, \'md-icon-left\': !!form.mdIcon }" sf-messages="" sf-layout="" sf-material-class="md-input-has-value" flex="100"><md-icon ng-if="form.mdIcon">{{form.mdIcon}}</md-icon><label ng-show="showTitle()" for="{{::form.key|sfCamelKey}}">{{::form.title}}</label> <input sf-field-model="" ng-show="::form.key" type="{{::form.type}}" step="any" sf-changed="form" placeholder="{{form.placeholder}}" id="{{::form.key|sfCamelKey}}" ng-class="::form.fieldHtmlClass" sf-type-parser="form.schema" ng-disabled="::form.readonly" schema-validate="form" name="{{::form.key|sfCamelKey}}" aria-describedby="{{::form.key|sfCamelKey}}Status" ng-attr-md-maxlength="{{form.maxlength}}" ng-attr-maxlength="{{form.maxlength}}"></md-input-container></div>');$templateCache.put("decorators/material/fieldset-trcl.html",'<fieldset ng-disabled="form.readonly" class="standard {{form.htmlClass}}" flex=""><legend ng-show="showTitle()">{{ form.title }}</legend><div ng-transclude=""></div></fieldset>');$templateCache.put("decorators/material/fieldset.html",'<fieldset ng-disabled="form.readonly" class="standard {{ form.htmlClass ? form.htmlClass : \'flex-100\' }}"><legend ng-show="showTitle()">{{ form.title }}</legend><div layout="row" layout-wrap="" sf-field-transclude=""></div></fieldset>');$templateCache.put("decorators/material/help.html",'<div class="helpvalue schema-form-helpvalue {{form.htmlClass}}" ng-bind-html="form.helpvalue"></div>');$templateCache.put("decorators/material/radio-buttons.html",'<div class="form-group schema-form-radiobuttons {{form.htmlClass}}" ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess()}" sf-layout="" sf-messages=""><div><label class="control-label" ng-show="showTitle()">{{form.title}}</label></div><section layout="row" layout-sm="column" layout-align="center center"><md-input-container ng-repeat="item in form.titleMap"><md-button type="button" class="group md-raised" sf-field-model="replaceAll" ng-model="$$value$$" sf-changed="form" ng-class="{\'md-primary\': ($$value$$ == item.value)}" ng-disabled="form.readonly" ng-model-options="form.ngModelOptions" schema-validate="form" ng-value="item.value" ng-click="$$value$$ = item.value" name="{{form.key.join(\'.\')}}"><span ng-bind-html="item.name"></span></md-button></md-input-container></section></div>');$templateCache.put("decorators/material/radios-inline.html",'<div class="form-group schema-form-radios-inline {{form.htmlClass}}" ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess()}" sf-layout="" sf-messages=""><label class="control-label" ng-show="showTitle()">{{form.title}}</label><md-radio-group layout="row" sf-field-model="replaceAll" ng-model="$$value$$" class="{{form.fieldHtmlClass}}" ng-class="{ active: item.value === $$value$$ }" sf-changed="form" schema-validate="form" ng-disabled="form.readonly" name="{{form.key.join(\'.\')}}"><md-radio-button ng-repeat="item in form.titleMap" ng-value="item.value"><span ng-bind-html="item.name"></span></md-radio-button></md-radio-group></div>');$templateCache.put("decorators/material/radios.html",'<div class="form-group schema-form-radios {{form.htmlClass}}" ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess()}" sf-messages=""><label class="control-label" ng-show="showTitle()" aria-label="{{form.title}}" layout="row" ng-class="{\'md-required\': form.required}">{{form.title}}</label><div><md-radio-group sf-field-model="" sf-changed="form" ng-disabled="form.readonly" name="{{form.key.join(\'.\')}}" schema-validate="form" sf-layout=""><md-radio-button ng-repeat="item in form.titleMap" ng-value="item.value" sf-field-model="ng-class" ng-class="{ active: item.value === $$value$$ }" aria-label="item.name"><span ng-bind-html="item.name"></span></md-radio-button></md-radio-group></div></div>');$templateCache.put("decorators/material/section.html",'<md-content class="schema-form-section {{::form.htmlClass}}" sf-layout=""></md-content>');$templateCache.put("decorators/material/select.html",'<md-input-container class="form-group {{::form.htmlClass ? form.htmlClass : \'flex-100\'}} schema-form-select" ng-class="{\'has-error\': hasError(), \'has-success\': hasSuccess(), \'has-feedback\': form.feedback !== false}" sf-messages="" sf-layout=""><label ng-show="::showTitle()">{{::form.title}}</label><md-select sf-field-model="" schema-validate="form" ng-disabled="::form.readonly"><md-optgroup ng-repeat-start="(key, opt) in form.getOptions(form, evalExpr) | orderBy:\'group\' as optGroups" ng-if="opt.group && opt.group != optGroups[key-1].group" label="{{::opt.group}}" aria-label="{{::opt.group}}"><md-option ng-repeat="(key, filtered) in form.getOptions(form, evalExpr) | filter: {group: opt.group} | orderBy:\'name\' as opts" ng-value="::filtered.value" aria-label="{{::filtered.name}}">{{::filtered.name}}</md-option></md-optgroup><md-option ng-if="!opt.group" ng-value="::opt.value" ng-repeat-end="">{{::opt.name}}</md-option></md-select><div class="md-errors-spacer"></div></md-input-container>');$templateCache.put("decorators/material/slider.html",'<md-input-container class="schema-form-slider {{form.htmlClass}}"><label ng-show="showTitle()" for="{{::form.key|sfCamelKey}}">{{::form.title}}</label><md-slider sf-field-model="" flex="" id="{{::form.key|sfCamelKey}}" min="0" max="255" aria-label="blue"></md-slider></md-input-container>');$templateCache.put("decorators/material/submit.html",'<section class="schema-form-submit {{form.htmlClass}}" sf-messages="" layout="row"><md-progress-circular class="md-accent md-hue-1" md-mode="indeterminate" md-diameter="32" aria-label="Saving" style="margin: 0 8px 0 0;" ng-if="model.processing"></md-progress-circular><md-button class="md-raised {{ form.style || \'md-primary\' }} {{form.fieldHtmlClass}}" type="{{::form.type}}" ng-disabled="form.readonly" aria-label="{{::form.title}}" layout="row" layout-align="space-around center"><md-tooltip ng-if="::form.tip">{{::form.tip}}</md-tooltip>{{::form.title}}</md-button></section>');$templateCache.put("decorators/material/switch.html",'<md-input-container class="schema-form-switch {{::form.htmlClass}}"><md-switch sf-field-model="" sf-changed="form" sf-type-parser="form.schema" sf-messages="" schema-validate="form" id="{{::form.key|sfCamelKey}}" aria-label="{{form.title}}" ng-show="::form.key" ng-class="form.fieldHtmlClass" ng-disabled="::form.readonly"><span ng-show="showTitle()" for="{{::form.key|sfCamelKey}}">{{::form.title}}</span></md-switch></md-input-container>');$templateCache.put("decorators/material/tabarray.html",'<div sf-array="form" ng-init="selected = { tab: 0 }" class="clearfix schema-form-tabarray schema-form-tabarray-{{form.tabType || \'left\'}} {{form.htmlClass}}"><div ng-if="!form.tabType || form.tabType !== \'right\'" ng-class="{\'col-xs-3\': !form.tabType || form.tabType === \'left\'}"><ul class="nav nav-tabs" ng-class="{ \'tabs-left\': !form.tabType || form.tabType === \'left\'}"><li ng-repeat="item in modelArray track by $index" ng-click="$event.preventDefault() || (selected.tab = $index)" ng-class="{active: selected.tab === $index}"><a href="#">{{interp(form.title,{\'$index\':$index, value: item}) || $index}}</a></li><li ng-hide="form.readonly" ng-click="$event.preventDefault() || (selected.tab = appendToArray().length - 1)"><a href="#"><i class="glyphicon glyphicon-plus"></i> {{ form.add || \'Add\'}}</a></li></ul></div><div ng-class="{\'col-xs-9\': !form.tabType || form.tabType === \'left\' || form.tabType === \'right\'}"><div class="tab-content {{form.fieldHtmlClass}}"><div class="tab-pane clearfix" ng-repeat="item in modelArray track by $index" ng-show="selected.tab === $index" ng-class="{active: selected.tab === $index}"><sf-decorator ng-init="arrayIndex = $index" form="copyWithIndex($index)"></sf-decorator><button ng-hide="form.readonly" ng-click="selected.tab = deleteFromArray($index).length - 1" type="button" class="btn {{ form.style.remove || \'btn-default\' }} pull-right"><i class="glyphicon glyphicon-trash"></i> {{ form.remove || \'Remove\'}}</button></div></div></div><div ng-if="form.tabType === \'right\'" class="col-xs-3"><ul class="nav nav-tabs tabs-right"><li ng-repeat="item in modelArray track by $index" ng-click="$event.preventDefault() || (selected.tab = $index)" ng-class="{active: selected.tab === $index}"><a href="#">{{interp(form.title,{\'$index\':$index, value: item}) || $index}}</a></li><li ng-hide="form.readonly" ng-click="$event.preventDefault() || appendToArray()"><a href="#"><i class="glyphicon glyphicon-plus"></i> {{ form.add || \'Add\'}}</a></li></ul></div></div>');$templateCache.put("decorators/material/tabs.html",'<div sf-field-model="" class="schema-form-tabs {{::form.htmlClass}}"><md-tabs md-dynamic-height="" md-selected="selected" md-autoselect="" ng-init="selected = 0"></md-tabs></div>');$templateCache.put("decorators/material/textarea.html",'<md-input-container class="{{::form.htmlClass ? form.htmlClass : \'flex-100\'}} schema-form-textarea" sf-messages="" sf-layout=""><label ng-show="showTitle()" for="{{::form.key|sfCamelKey}}">{{::form.title}}</label> <textarea ng-class="::form.fieldHtmlClass" id="{{::form.key|sfCamelKey}}" sf-changed="form" ng-disabled="::form.readonly" sf-field-model="" schema-validate="form" name="{{::form.key|sfCamelKey}}"></textarea></md-input-container>')}])},function(module,exports){angular.module("schemaForm").directive("sfTypeParser",function(){return{restrict:"A",scope:false,require:"ngModel",link:function(scope,element,attrs,ngModel){var once=scope.$watch(attrs.sfTypeParser,function(schema){if(!schema){return}var isNumber=schema.type.indexOf("number")!==-1;var isInteger=schema.type.indexOf("integer")!==-1;var numberRE=/^[0-9]*$/;if(isNumber||isInteger){ngModel.$parsers.push(function(viewValue){var value;if(isNumber){value=parseFloat(viewValue)}else if(numberRE.test(viewValue)){value=parseInt(viewValue,10)}console.log("parser",numberRE.test(viewValue),viewValue,value);if(value===undefined||isNaN(value)){return viewValue}return value})}once()})}}})},function(module,exports){(function(angular,undefined){"use strict";angular.module("schemaForm").config(materialDecoratorConfig).directive("sfmExternalOptions",sfmExternalOptionsDirective).filter("sfCamelKey",sfCamelKeyFilter).directive("sfChangedAutoComplete",function(){return{require:"ngModel",restrict:"AC",link:function(scope,element,attrs,ctrl){var form=scope.$eval(attrs.sfChangedAutoComplete);if(form&&form.onChange){scope.onChangeFn=function(){if(angular.isFunction(form.onChange)){form.onChange(ctrl.$modelValue,form)}else{scope.evalExpr(form.onChange,{modelValue:ctrl.$modelValue,form:form})}}}}}});materialDecoratorConfig.$inject=["schemaFormProvider","schemaFormDecoratorsProvider","sfBuilderProvider","sfPathProvider","$injector"];function materialDecoratorConfig(schemaFormProvider,decoratorsProvider,sfBuilderProvider,sfPathProvider,$injector){var base="decorators/material/";var simpleTransclusion=sfBuilderProvider.builders.simpleTransclusion;var transclusion=sfBuilderProvider.builders.transclusion;var ngModelOptions=sfBuilderProvider.builders.ngModelOptions;var ngModel=sfBuilderProvider.builders.ngModel;var sfField=sfBuilderProvider.builders.sfField;var condition=sfBuilderProvider.builders.condition;var array=sfBuilderProvider.builders.array;var numeric=sfBuilderProvider.builders.numeric;var sfLayout=sfLayout;var sfMessagesNode=sfMessagesNodeHandler();var sfMessages=sfMessagesBuilder;var sfOptions=sfOptionsBuilder;var mdAutocomplete=mdAutocompleteBuilder;var mdSwitch=mdSwitchBuilder;var mdDatepicker=mdDatepickerBuilder;var mdTabs=mdTabsBuilder;var textarea=textareaBuilder;var sfFieldMaterial=function(args){sfField(args);var field=args.fieldFrag.querySelector("input, textarea, md-select");if(args.form.required&&field){field.setAttribute("ng-required","form.required")}};var core=[sfFieldMaterial,ngModel,ngModelOptions,condition,sfLayout];var defaults=core.concat(sfMessages);var arrays=core.concat(array);schemaFormProvider.defaults.string.unshift(dateDefault);schemaFormProvider.defaults.object.unshift(dateObjectDefault);decoratorsProvider.defineDecorator("materialDecorator",{actions:{template:base+"actions.html",builder:[sfField,simpleTransclusion,condition]},array:{template:base+"array.html",builder:arrays},autocomplete:{template:base+"autocomplete.html",builder:defaults.concat(mdAutocomplete)},boolean:{template:base+"checkbox.html",builder:defaults},button:{template:base+"submit.html",builder:defaults},card:{template:base+"card.html",builder:[sfField,transclusion,condition]},checkbox:{template:base+"checkbox.html",builder:defaults},checkboxes:{template:base+"checkboxes.html",builder:arrays},date:{template:base+"date.html",builder:defaults.concat(mdDatepicker)},default:{template:base+"default.html",builder:defaults},fieldset:{template:base+"fieldset.html",builder:[sfField,transclusion,condition]},help:{template:base+"help.html",builder:defaults},number:{template:base+"default.html",builder:defaults.concat(numeric)},password:{template:base+"default.html",builder:defaults},radios:{template:base+"radios.html",builder:defaults},"radios-inline":{template:base+"radios-inline.html",builder:defaults},radiobuttons:{template:base+"radio-buttons.html",builder:defaults},section:{template:base+"section.html",builder:[sfField,simpleTransclusion,condition,sfLayout]},select:{template:base+"select.html",builder:defaults.concat(sfOptions)},submit:{template:base+"submit.html",builder:defaults},tabs:{template:base+"tabs.html",builder:[sfField,mdTabs,condition]},tabarray:{template:base+"tabarray.html",builder:arrays},textarea:{template:base+"textarea.html",builder:defaults.concat(textarea)},switch:{template:base+"switch.html",builder:defaults.concat(mdSwitch)}});var dateFormat=/^[0-9]{4,}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}(?:\.[0-9]+|)(?:[+-][0-9]{2}:?(?:[0-9]{2}|)|Z)$/;var mdDateFormat=/^(:?[A-Z][a-z]{2}\s){2}\d{1,2}\s\d{4}\s(:?\d{2}\:?){3}\s[A-Z]{3}\-\d{4}\s\([A-Z]{3}\)$/;var formats={date:function(value){if(value&&typeof value!=="string"&&value.toISOString){value=value.toISOString()||""}if(dateFormat.test(value)||mdDateFormat.test(value)){return null}return"A valid date expected"}};tv4.addFormat("date",formats.date);function sfLayout(args){var layoutDiv=args.fieldFrag.querySelector("[sf-layout]");if(args.form.grid){Object.getOwnPropertyNames(args.form.grid).forEach(function(property,idx,array){layoutDiv.setAttribute(property,args.form.grid[property])})}}function sfMessagesNodeHandler(){var html='<div ng-show="ngModel.$invalid" ng-messages="{dummy: true}" class="ng-active">'+'<div ng-message="dummy" class="md-input-message-animation" sf-message="form.description"></div></div>';var div=document.createElement("div");div.innerHTML=html;return div.firstChild}function sfMessagesBuilder(args){var messagesDiv=args.fieldFrag.querySelector("[sf-messages]");if(messagesDiv&&sfMessagesNode){var child=sfMessagesNode.cloneNode(true);messagesDiv.appendChild(child)}}function textareaBuilder(args){var textareaFrag=args.fieldFrag.querySelector("textarea");var maxLength=args.form.maxlength||false;if(textareaFrag&&maxLength){textareaFrag.setAttribute("md-maxlength",maxLength)}}function mdAutocompleteBuilder(args){var mdAutocompleteFrag=args.fieldFrag.querySelector("md-autocomplete");var minLength=args.form.minLength!==undefined?args.form.minLength:1;var maxLength=args.form.maxLength||false;var title=args.form.title||args.form.placeholder||args.form.key.slice(-1)[0];if(mdAutocompleteFrag){if(args.form.onChange){mdAutocompleteFrag.setAttribute("md-selected-item-change","onChangeFn()");mdAutocompleteFrag.setAttribute("md-search-text-change","onChangeFn(searchText)")}mdAutocompleteFrag.setAttribute("md-min-length",minLength);if(maxLength){mdAutocompleteFrag.setAttribute("md-max-length",maxLength)}if(title){mdAutocompleteFrag.setAttribute("md-floating-label",title)}if(args.form.schema.requireMatch){mdAutocompleteFrag.setAttribute("md-require-match",true)}}}function mdSwitchBuilder(args){var mdSwitchFrag=args.fieldFrag.querySelector("md-switch");if(args.form.schema.titleMap){mdSwitchFrag.setAttribute("ng-true-value",args.form.schema.titleMap.true);mdSwitchFrag.setAttribute("ng-false-value",args.form.schema.titleMap.false)}}function sfOptionsBuilder(args){var mdSelectFrag=args.fieldFrag.querySelector("md-select");var enumTitleMap=[];var i;var mdSelectFrag;args.form.selectOptions=[];args.form.getOptions=getOptionsHandler;if(args.form.schema.links&&typeof args.form.schema.links==="object"){var link;var related=/({)([^}]*)(})/gm;var source=/{{([^}]*)}}/gm;var matched;for(i=0;i<args.form.schema.links.length;i++){link=args.form.schema.links[i];if(link.rel==="options"){args.form.optionSource=link.href.replace(related,"$1$1 model.$2 $3$3")}}mdSelectFrag.setAttribute("sfm-external-options",args.form.optionSource);
}else{args.form.selectOptions=sfOptionsProcessor(args.form)}}function mdDatepickerBuilder(args){console.log("Date Picker",args);var mdDatepickerFrag=args.fieldFrag.querySelector("md-datepicker");if(mdDatepickerFrag){if(args.form.onChange){mdDatepickerFrag.setAttribute("ng-change","args.form.onChange(searchText)")}var minDate=args.form.minimum||false;var maxDate=args.form.maximum||false;if(minDate){mdDatepickerFrag.setAttribute("md-min-date",minDate)}if(maxDate){mdDatepickerFrag.setAttribute("md-max-date",maxDate)}if(args.form.mdHideIcons){mdDatepickerFrag.setAttribute("md-hide-icons",args.form.mdHideIcons)}}}function mdTabsBuilder(args){if(args.form.tabs&&args.form.tabs.length>0){var mdTabsFrag=args.fieldFrag.querySelector("md-tabs");args.form.tabs.forEach(function(tab,index){var mdTab=document.createElement("md-tab");mdTab.setAttribute("label","{{"+args.path+".tabs["+index+"].title}}");var mdTabBody=document.createElement("md-tab-body");var childFrag=args.build(tab.items,args.path+".tabs["+index+"].items",args.state);mdTabBody.appendChild(childFrag);mdTab.appendChild(mdTabBody);mdTabsFrag.appendChild(mdTab)})}}function dateDefault(name,schema,options){if(schema.type==="string"&&(schema.format==="date"||schema.format==="date-time")){var f=schemaFormProvider.stdFormObj(name,schema,options);f.key=options.path;f.type="date";options.lookup[sfPathProvider.stringify(options.path)]=f;return f}}function dateObjectDefault(name,schema,options){if(schema.type==="object"&&(schema.format==="date"||schema.format==="date-time")){var f=schemaFormProvider.stdFormObj(name,schema,options);f.key=options.path;f.type="date";options.lookup[sfPathProvider.stringify(options.path)]=f;return f}}}function getOptionsHandler(form,evalExpr){if(form.optionData){return evalExpr(form.optionData)}if(form.selectOptions){return form.selectOptions}return[]}function sfOptionsProcessor(data){var enumTitleMap=[];if(data.titleMap){return data.titleMap}else if(data.enum&&data.enum.length){for(i=0;i<data.enum.length;i++){if(data.enum[i]&&data.enum[i].length){enumTitleMap.push({name:data.enum[i],value:data.enum[i]})}}}return enumTitleMap}sfmExternalOptionsDirective.$inject=["$http"];function sfmExternalOptionsDirective($http){var directive={link:link,restrict:"A"};return directive;function link(scope,element,attrs){attrs.$observe("sfmExternalOptions",function(dataURI){$http.get(dataURI).then(function(response){scope.form.selectOptions=sfOptionsProcessor(response.data)})})}}function sfCamelKeyFilter(){return function(formKey){if(!formKey){return""}var part,i,key;key=formKey.slice();for(i=0;i<key.length;i++){part=key[i].toLowerCase().split("");if(i&&part.length){part[0]=part[0].toUpperCase()}key[i]=part.join("")}return key.join("")}}})(angular,undefined)},function(module,exports){angular.module("schemaForm").directive("sfMaterialClass",["$compile","$timeout",function($compile,$timeout){return{restrict:"A",scope:false,link:function(scope,element,attrs,ngModel){function reduceHelper(obj,i){return obj[i]}var modelValue;try{modelValue=scope.form.key.reduce(reduceHelper,scope.model)}catch(e){modelValue=undefined}$timeout(function(){if(modelValue!==null&&typeof modelValue!=="undefined"&&modelValue!==false&&modelValue!==""){element.addClass(attrs.sfMaterialClass)}},100)}}}])}])});