@mutt/forms
Version:
HTML Forms with a squishy face.
1 lines • 92.9 kB
JavaScript
var Mutt=function(){"use strict";function _typeof(obj){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj})(obj)}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor))throw new TypeError("Cannot call a class as a function")}function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||!1,descriptor.configurable=!0,"value"in descriptor&&(descriptor.writable=!0),Object.defineProperty(target,descriptor.key,descriptor)}}function _createClass(Constructor,protoProps,staticProps){return protoProps&&_defineProperties(Constructor.prototype,protoProps),staticProps&&_defineProperties(Constructor,staticProps),Constructor}function _inherits(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function");subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:!0,configurable:!0}}),superClass&&_setPrototypeOf(subClass,superClass)}function _getPrototypeOf(o){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o)})(o)}function _setPrototypeOf(o,p){return(_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){return o.__proto__=p,o})(o,p)}function _assertThisInitialized(self){if(void 0===self)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return self}function _possibleConstructorReturn(self,call){return!call||"object"!=typeof call&&"function"!=typeof call?_assertThisInitialized(self):call}function _get(target,property,receiver){return(_get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function _get(target,property,receiver){var base=function _superPropBase(object,property){for(;!Object.prototype.hasOwnProperty.call(object,property)&&null!==(object=_getPrototypeOf(object)););return object}(target,property);if(base){var desc=Object.getOwnPropertyDescriptor(base,property);return desc.get?desc.get.call(receiver):desc.value}})(target,property,receiver||target)}function _slicedToArray(arr,i){return function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}(arr)||function _iterableToArrayLimit(arr,i){if(!(Symbol.iterator in Object(arr)||"[object Arguments]"===Object.prototype.toString.call(arr)))return;var _arr=[],_n=!0,_d=!1,_e=void 0;try{for(var _s,_i=arr[Symbol.iterator]();!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!i||_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{_n||null==_i.return||_i.return()}finally{if(_d)throw _e}}return _arr}(arr,i)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var Validator=function(){function Validator(messages){_classCallCheck(this,Validator),this.error=null,this.messages={required:"This field is required."},messages&&Object.assign(this.messages,messages)}return _createClass(Validator,[{key:"validate",value:function validate(){return!0}}]),Validator}(),RequiredValidator=function(_Validator){function RequiredValidator(){return _classCallCheck(this,RequiredValidator),_possibleConstructorReturn(this,_getPrototypeOf(RequiredValidator).apply(this,arguments))}return _inherits(RequiredValidator,_Validator),_createClass(RequiredValidator,[{key:"validate",value:function validate(value){return!(!value&&0!==value)||(this.error=this.messages.required,!1)}}]),RequiredValidator}(Validator),BooleanRequiredValidator=function(_Validator2){function BooleanRequiredValidator(){return _classCallCheck(this,BooleanRequiredValidator),_possibleConstructorReturn(this,_getPrototypeOf(BooleanRequiredValidator).apply(this,arguments))}return _inherits(BooleanRequiredValidator,_Validator2),_createClass(BooleanRequiredValidator,[{key:"validate",value:function validate(value){return!0===value||!1===value||(this.error=this.messages.required,!1)}}]),BooleanRequiredValidator}(Validator),BooleanTrueValidator=function(_Validator3){function BooleanTrueValidator(){return _classCallCheck(this,BooleanTrueValidator),_possibleConstructorReturn(this,_getPrototypeOf(BooleanTrueValidator).apply(this,arguments))}return _inherits(BooleanTrueValidator,_Validator3),_createClass(BooleanTrueValidator,[{key:"validate",value:function validate(value){return!0===value||(this.error=this.messages.required,!1)}}]),BooleanTrueValidator}(Validator),LengthValidator=function(_Validator4){function LengthValidator(){var _this,_ref=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},_ref$min=_ref.min,min=void 0===_ref$min?null:_ref$min,_ref$max=_ref.max,max=void 0===_ref$max?null:_ref$max,_ref$messages=_ref.messages,messages=void 0===_ref$messages?null:_ref$messages;return _classCallCheck(this,LengthValidator),(_this=_possibleConstructorReturn(this,_getPrototypeOf(LengthValidator).call(this,messages))).min=min,_this.max=max,_this.messages.hasOwnProperty("minLength")||(_this.messages.minLength="Length must be at least ".concat(_this.min,"!")),_this.messages.hasOwnProperty("maxLength")||(_this.messages.maxLength="Length must be no more than ".concat(_this.max,"!")),_this}return _inherits(LengthValidator,_Validator4),_createClass(LengthValidator,[{key:"validate",value:function validate(value){return value?this.min&&value.length<this.min?(this.error=this.messages.minLength,!1):!(this.max&&value.length>this.max)||(this.error=this.messages.maxLength,!1):(this.error=this.messages.required,!1)}}]),LengthValidator}(Validator),IntegerValidator=function(_Validator5){function IntegerValidator(messages){var _this2;return _classCallCheck(this,IntegerValidator),(_this2=_possibleConstructorReturn(this,_getPrototypeOf(IntegerValidator).call(this,messages))).messages.hasOwnProperty("intRequired")||(_this2.messages.intRequired="Value must be an integer"),_this2}return _inherits(IntegerValidator,_Validator5),_createClass(IntegerValidator,[{key:"validate",value:function validate(value){return!value||!isNaN(value)||(this.error=this.messages.intRequired,!1)}}]),IntegerValidator}(Validator),RegexValidator=function(_Validator6){function RegexValidator(patternParam,messagesParam){var _this3,pattern,messages;if(_classCallCheck(this,RegexValidator),"object"===_typeof(patternParam)&&patternParam.hasOwnProperty("pattern")?(pattern=patternParam.pattern,messages=patternParam.messages):(pattern=patternParam,messages=messagesParam),(_this3=_possibleConstructorReturn(this,_getPrototypeOf(RegexValidator).call(this,messages))).pattern=pattern,!_this3.messages.hasOwnProperty("invalidPattern")){var msg="Value must match the pattern: ".concat(_this3.pattern);_this3.messages.invalidPattern=msg}return _this3}return _inherits(RegexValidator,_Validator6),_createClass(RegexValidator,[{key:"validate",value:function validate(value){return value?!!value.match(this.pattern)||(this.error=this.messages.invalidPattern,!1):(this.error=this.messages.required,!1)}}]),RegexValidator}(Validator),AlphaValidator=function(_Validator7){function AlphaValidator(){var _this4,_ref2=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},_ref2$min=_ref2.min,min=void 0===_ref2$min?2:_ref2$min,_ref2$max=_ref2.max,max=void 0===_ref2$max?25:_ref2$max,_ref2$messages=_ref2.messages,messages=void 0===_ref2$messages?null:_ref2$messages;return _classCallCheck(this,AlphaValidator),(_this4=_possibleConstructorReturn(this,_getPrototypeOf(AlphaValidator).call(this,messages))).min=min,_this4.max=max,_this4}return _inherits(AlphaValidator,_Validator7),_createClass(AlphaValidator,[{key:"validate",value:function validate(value){return value?(value=value.trim()).length<this.min?(this.error="Must be more than 2 characters.",!1):value.length>this.max?(this.error="Must be less than 25 characters.",!1):!!value.match(/^[a-zA-Z\s]+$/)||(this.error="Only letters and spaces can be used.",!1):(this.error=this.messages.required,!1)}}]),AlphaValidator}(Validator),validators=Object.freeze({__proto__:null,Validator:Validator,RequiredValidator:RequiredValidator,BooleanRequiredValidator:BooleanRequiredValidator,BooleanTrueValidator:BooleanTrueValidator,LengthValidator:LengthValidator,IntegerValidator:IntegerValidator,RegexValidator:RegexValidator,AlphaValidator:AlphaValidator}),Field=function(){function Field(_ref){var id=_ref.id,name=_ref.name,_ref$label=_ref.label,label=void 0===_ref$label?null:_ref$label,_ref$initial=_ref.initial,initial=void 0===_ref$initial?null:_ref$initial,_ref$widget=_ref.widget,widget=void 0===_ref$widget?null:_ref$widget,_ref$validators=_ref.validators,validators=void 0===_ref$validators?[]:_ref$validators,_ref$attribs=_ref.attribs,attribs=void 0===_ref$attribs?{}:_ref$attribs,_ref$description=_ref.description,description=void 0===_ref$description?null:_ref$description,_ref$options=_ref.options,options=void 0===_ref$options?{}:_ref$options,_ref$order=_ref.order,order=void 0===_ref$order?null:_ref$order,_ref$parent=_ref.parent,parent=void 0===_ref$parent?null:_ref$parent;_classCallCheck(this,Field),this.id=id,this.name=name,this.label=label,this.description=description,this.attribs=attribs,this.options=options,this.validators=validators,this.sortOrder=order,this.parent=parent,this.label||(this.label=this.name),this.initOptions();var WidgetKlass=this.getWidget();widget&&(WidgetKlass=widget);var initalValue=initial||this.initialValue();this.widget=new WidgetKlass(this,this.type,this.id,this.name,this.label,this.attribs,this.options,initalValue),this._errors=[]}return _createClass(Field,[{key:"initOptions",value:function initOptions(){this.options.hasOwnProperty("order")&&(this.sortOrder=this.options.order),this.options.hasOwnProperty("label")&&(this.label=this.options.label),this.options.hasOwnProperty("description")&&(this.description=this.options.description)}},{key:"render",value:function render(){return this.widget.render()}},{key:"destroy",value:function destroy(){return this.widget.destroy()}},{key:"postRender",value:function postRender(){this.widget.postRender()}},{key:"validate",value:function validate(){this.refreshValidationState();var value=this.value,_iteratorNormalCompletion=!0,_didIteratorError=!1,_iteratorError=void 0;try{for(var _step,_iterator=this.validators[Symbol.iterator]();!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=!0){var validator=_step.value;if(!validator.validate(value)){this.errors=validator.error;break}}}catch(err){_didIteratorError=!0,_iteratorError=err}finally{try{_iteratorNormalCompletion||null==_iterator.return||_iterator.return()}finally{if(_didIteratorError)throw _iteratorError}}return!(this.errors.length>0)||(this.widget.refreshErrorState(this.errors),!1)}},{key:"refreshValidationState",value:function refreshValidationState(){var update=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];this._errors=[],this.widget.errors=[],update&&this.widget.refreshErrorState([])}},{key:"getWidget",value:function getWidget(){return Mutt.config.getWidget("text")}},{key:"getSortOrder",value:function getSortOrder(){return this.sortOrder}},{key:"getSerializedValue",value:function getSerializedValue(){if(!this.options.hasOwnProperty("serialize"))return this.value;var serializeKey,serializeArgs=this.options.serialize,serializeOptions={};return"object"===_typeof(serializeArgs)?(serializeKey=serializeArgs.name,serializeOptions=serializeArgs):serializeKey=serializeArgs,Mutt.config.hasSerializer(serializeKey)?new(Mutt.config.getSerializer(serializeKey))(this.value,serializeOptions).serialize():void 0}},{key:"setSortOrder",value:function setSortOrder(order){this.sortOrder=order}},{key:"toString",value:function toString(){return"Field <".concat(this.name," ").concat(this.type,">")}},{key:"updateId",value:function updateId(newId){var updateWidget=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],oldId=this.id;this.id=newId,updateWidget&&this.widget.updateId(oldId,newId)}},{key:"updateName",value:function updateName(newName){var updateWidget=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this.name=newName,updateWidget&&this.widget.updateName(newName)}},{key:"initialValue",value:function initialValue(){return null}},{key:"type",get:function get(){var type=this.constructor.name.toLowerCase();return"field"!==type?type.replace("field",""):type},set:function set(someType){throw new Error("Unable to set type on a field instance!")}},{key:"value",get:function get(){return this.widget.getValue()},set:function set(value){this.widget.setValue(value)}},{key:"errors",get:function get(){return this._errors},set:function set(error){this._errors.push(error)}}],[{key:"new",value:function _new(id,name,schema){var options=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},parent=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,required=arguments.length>5&&void 0!==arguments[5]&&arguments[5],fieldSpec={id:id,name:name,options:options,attribs:{},parent:parent,validators:[]},FieldKlass=null;if(schema.description&&(fieldSpec.description=schema.description),schema.title&&(fieldSpec.label=schema.title),schema.default&&(fieldSpec.initial=schema.default),schema.enum){var choices=[],_iteratorNormalCompletion2=!0,_didIteratorError2=!1,_iteratorError2=void 0;try{for(var _step2,_iterator2=schema.enum[Symbol.iterator]();!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=!0){var option=_step2.value;choices.push([option,option])}}catch(err){_didIteratorError2=!0,_iteratorError2=err}finally{try{_iteratorNormalCompletion2||null==_iterator2.return||_iterator2.return()}finally{if(_didIteratorError2)throw _iteratorError2}}fieldSpec.choices=choices,FieldKlass=Mutt.config.getField("enum")}if(options.hasOwnProperty("hidden")&&options.hidden&&(fieldSpec.widget=Mutt.config.getWidget("hidden")),schema.format&&Mutt.config.hasWidget(schema.format)&&(fieldSpec.widget=Mutt.config.getWidget(schema.format)),options.widget&&Mutt.config.hasWidget(options.widget)&&(fieldSpec.widget=Mutt.config.getWidget(options.widget)),schema.items&&(fieldSpec.items=schema.items),schema.properties&&(fieldSpec.properties=schema.properties),required||options.hasOwnProperty("required")&&options.required){if("boolean"===schema.type){var BoolValidator=Mutt.config.getValidator("booleanRequired");fieldSpec.validators.push(new BoolValidator)}else{var RequiredValidator=Mutt.config.getValidator("required");fieldSpec.validators.push(new RequiredValidator)}fieldSpec.attribs.required="true"}if(schema.required&&(fieldSpec.required=schema.required),options.validators){var _iteratorNormalCompletion3=!0,_didIteratorError3=!1,_iteratorError3=void 0;try{for(var _step3,_iterator3=options.validators[Symbol.iterator]();!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=!0){var validator=_step3.value;if("object"===_typeof(validator))if(validator instanceof Validator)fieldSpec.validators.push(validator);else if(validator.hasOwnProperty("name")){var Validator$1=Mutt.config.getValidator(validator.name),validatorArgs={};validator.hasOwnProperty("args")&&(validatorArgs=validator.args),fieldSpec.validators.push(new Validator$1(validatorArgs))}}}catch(err){_didIteratorError3=!0,_iteratorError3=err}finally{try{_iteratorNormalCompletion3||null==_iterator3.return||_iterator3.return()}finally{if(_didIteratorError3)throw _iteratorError3}}}if(schema.hasOwnProperty("minItems")&&(fieldSpec.minItems=schema.minItems),schema.hasOwnProperty("maxItems")&&(fieldSpec.maxItems=schema.maxItems),options.attribs&&(fieldSpec.attribs=Object.assign(fieldSpec.attribs,options.attribs)),!FieldKlass){if(!Mutt.config.hasField(schema.type))return null;FieldKlass=Mutt.config.getField(schema.type)}return new FieldKlass(fieldSpec)}}]),Field}(),Fieldset=function(){function Fieldset(_ref){var _ref$label=_ref.label,label=void 0===_ref$label?null:_ref$label,_ref$name=_ref.name,name=void 0===_ref$name?null:_ref$name;_classCallCheck(this,Fieldset),this.name=name,this.label=label,this.fields=[],this.errors={}}return _createClass(Fieldset,[{key:"addField",value:function addField(field){this.fields.push(field)}},{key:"hasField",value:function hasField(fieldName){for(var field in this.fields)if(field.name===fieldName)return!0;return!1}},{key:"data",value:function data(){var data={},_iteratorNormalCompletion=!0,_didIteratorError=!1,_iteratorError=void 0;try{for(var _step,_iterator=this.fields[Symbol.iterator]();!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=!0){var field=_step.value;data[field.name]=field.getSerializedValue()}}catch(err){_didIteratorError=!0,_iteratorError=err}finally{try{_iteratorNormalCompletion||null==_iterator.return||_iterator.return()}finally{if(_didIteratorError)throw _iteratorError}}return data}},{key:"populate",value:function populate(data){var _iteratorNormalCompletion2=!0,_didIteratorError2=!1,_iteratorError2=void 0;try{for(var _step2,_iterator2=this.fields[Symbol.iterator]();!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=!0){var field=_step2.value;data.hasOwnProperty(field.name)&&(field.value=data[field.name])}}catch(err){_didIteratorError2=!0,_iteratorError2=err}finally{try{_iteratorNormalCompletion2||null==_iterator2.return||_iterator2.return()}finally{if(_didIteratorError2)throw _iteratorError2}}}},{key:"validate",value:function validate(){var valid=!0,_iteratorNormalCompletion3=!0,_didIteratorError3=!1,_iteratorError3=void 0;try{for(var _step3,_iterator3=this.fields[Symbol.iterator]();!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=!0){var field=_step3.value;field.validate()||(this.errors[field.name]=field.errors,valid=!1)}}catch(err){_didIteratorError3=!0,_iteratorError3=err}finally{try{_iteratorNormalCompletion3||null==_iterator3.return||_iterator3.return()}finally{if(_didIteratorError3)throw _iteratorError3}}return valid}},{key:"setFieldErrors",value:function setFieldErrors(errors){for(var errorField in errors)this.hasField(errorField)&&this.getField(errorField)}},{key:"setLegend",value:function setLegend(legend){this.label=legend}},{key:"refreshValidationState",value:function refreshValidationState(){this.errors={};var _iteratorNormalCompletion4=!0,_didIteratorError4=!1,_iteratorError4=void 0;try{for(var _step4,_iterator4=this.fields[Symbol.iterator]();!(_iteratorNormalCompletion4=(_step4=_iterator4.next()).done);_iteratorNormalCompletion4=!0){_step4.value.refreshValidationState()}}catch(err){_didIteratorError4=!0,_iteratorError4=err}finally{try{_iteratorNormalCompletion4||null==_iterator4.return||_iterator4.return()}finally{if(_didIteratorError4)throw _iteratorError4}}}},{key:"render",value:function render(){var fieldsetContainer=document.createDocumentFragment(),fieldset=document.createElement("fieldset");if(fieldset.classList.add("mutt-fieldset"),this.name&&fieldset.setAttribute("name",this.name),this.label){var legend=document.createElement("legend");legend.textContent=this.label,fieldset.appendChild(legend)}this.fields.sort((function(a,b){return a.getSortOrder()-b.getSortOrder()}));var _iteratorNormalCompletion5=!0,_didIteratorError5=!1,_iteratorError5=void 0;try{for(var _step5,_iterator5=this.fields[Symbol.iterator]();!(_iteratorNormalCompletion5=(_step5=_iterator5.next()).done);_iteratorNormalCompletion5=!0){var fieldElement=_step5.value.render();fieldset.appendChild(fieldElement)}}catch(err){_didIteratorError5=!0,_iteratorError5=err}finally{try{_iteratorNormalCompletion5||null==_iterator5.return||_iterator5.return()}finally{if(_didIteratorError5)throw _iteratorError5}}return fieldsetContainer.appendChild(fieldset),fieldsetContainer}},{key:"postRender",value:function postRender(){var _iteratorNormalCompletion6=!0,_didIteratorError6=!1,_iteratorError6=void 0;try{for(var _step6,_iterator6=this.fields[Symbol.iterator]();!(_iteratorNormalCompletion6=(_step6=_iterator6.next()).done);_iteratorNormalCompletion6=!0){_step6.value.postRender()}}catch(err){_didIteratorError6=!0,_iteratorError6=err}finally{try{_iteratorNormalCompletion6||null==_iterator6.return||_iterator6.return()}finally{if(_didIteratorError6)throw _iteratorError6}}}},{key:"getFieldByPath",value:function getFieldByPath(path){var pathParts=path.split("."),searchName=pathParts.shift(),_iteratorNormalCompletion7=!0,_didIteratorError7=!1,_iteratorError7=void 0;try{for(var _step7,_iterator7=this.fields[Symbol.iterator]();!(_iteratorNormalCompletion7=(_step7=_iterator7.next()).done);_iteratorNormalCompletion7=!0){var field=_step7.value;if(field.name===searchName){var fieldProto=field.constructor.prototype;if(0===pathParts.length)return field;if(fieldProto.hasOwnProperty("getFieldByPath"))return field.getFieldByPath(pathParts.join("."))}}}catch(err){_didIteratorError7=!0,_iteratorError7=err}finally{try{_iteratorNormalCompletion7||null==_iterator7.return||_iterator7.return()}finally{if(_didIteratorError7)throw _iteratorError7}}return null}}],[{key:"new",value:function _new(schema){var options=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},fields=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,name=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,label=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,fieldsetSpec={name:name},fieldIdPrefix="",usePathId=!1;schema.hasOwnProperty("title")&&(fieldsetSpec.label=schema.title),options.hasOwnProperty("form")&&(options.form.hasOwnProperty("label")&&(fieldsetSpec.label=options.form.label),options.form.hasOwnProperty("idPrefix")&&(fieldIdPrefix="".concat(options.form.idPrefix,"_")),options.form.hasOwnProperty("usePathId")&&(usePathId=options.form.usePathId)),null!==label&&(fieldsetSpec.label=label),Object.assign(fieldsetSpec,options),schema.hasOwnProperty("properties")&&(schema=schema.properties);for(var fieldset=new Fieldset(fieldsetSpec),fieldIndex=1,_i=0,_Object$keys=Object.keys(schema);_i<_Object$keys.length;_i++){var fieldName=_Object$keys[_i],fieldId=usePathId?"".concat(fieldIdPrefix).concat(fieldName,"_field"):"".concat(fieldIdPrefix).concat(fieldName,"_field_").concat(fieldIndex),fieldSchema=schema[fieldName],fieldOptions={};if(!fields||Object.keys(fields).includes(fieldName)){options.fields&&options.fields.hasOwnProperty(fieldName)&&(fieldOptions=options.fields[fieldName]),options.fieldsets&&(fieldOptions.fieldsets=options.fieldsets),fieldOptions.hasOwnProperty("usePathId")||(fieldOptions.usePathId=usePathId);var field=Field.new(fieldId,fieldName,fieldSchema,fieldOptions);field&&(field.getSortOrder()||field.setSortOrder(fieldIndex),fieldset.addField(field),fieldIndex++)}}return fieldset}}]),Fieldset}(),MuttForm=function(){function MuttForm(schema){var options=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};_classCallCheck(this,MuttForm),this.schema=schema,this.options={},this.callbacks={},options&&options.hasOwnProperty("form")&&(this.options=options.form),this.mount=!1,this.multipart=!1,this.id=null,this.form=null,this.fieldsets=[],this.buttons={submit:null},this.build(schema,options)}return _createClass(MuttForm,[{key:"build",value:function build(schema){var options=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(options.hasOwnProperty("fieldsets")){var fieldsetIndex=0,_iteratorNormalCompletion=!0,_didIteratorError=!1,_iteratorError=void 0;try{for(var _step,_iterator=options.fieldsets[Symbol.iterator]();!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=!0){var fieldsetSpec=_step.value,fieldsetFields=null,fieldsetLabel=null;fieldsetSpec.hasOwnProperty("fields")&&(fieldsetFields=fieldsetSpec.fields),fieldsetSpec.hasOwnProperty("fieldsets")&&(options.fieldsets=fieldsetSpec.fieldsets),fieldsetSpec.options&&fieldsetSpec.options.hasOwnProperty("label")&&(fieldsetLabel=fieldsetSpec.options.label);var fieldset=Fieldset.new(schema,options,fieldsetFields,"mutt-fieldset-".concat(fieldsetIndex),fieldsetLabel);this.fieldsets.push(fieldset),fieldsetIndex++}}catch(err){_didIteratorError=!0,_iteratorError=err}finally{try{_iteratorNormalCompletion||null==_iterator.return||_iterator.return()}finally{if(_didIteratorError)throw _iteratorError}}}else{var _fieldset=Fieldset.new(schema,options);this.fieldsets.push(_fieldset)}}},{key:"data",value:function data(){var asList=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(asList){var _data=[],_iteratorNormalCompletion2=!0,_didIteratorError2=!1,_iteratorError2=void 0;try{for(var _step2,_iterator2=this.fieldsets[Symbol.iterator]();!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=!0){var fieldset=_step2.value;_data.push(fieldset.data())}}catch(err){_didIteratorError2=!0,_iteratorError2=err}finally{try{_iteratorNormalCompletion2||null==_iterator2.return||_iterator2.return()}finally{if(_didIteratorError2)throw _iteratorError2}}return _data}var data={},_iteratorNormalCompletion3=!0,_didIteratorError3=!1,_iteratorError3=void 0;try{for(var _step3,_iterator3=this.fieldsets[Symbol.iterator]();!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=!0){var _fieldset2=_step3.value;data=Object.assign(data,_fieldset2.data())}}catch(err){_didIteratorError3=!0,_iteratorError3=err}finally{try{_iteratorNormalCompletion3||null==_iterator3.return||_iterator3.return()}finally{if(_didIteratorError3)throw _iteratorError3}}return data}},{key:"populate",value:function populate(data){var _iteratorNormalCompletion4=!0,_didIteratorError4=!1,_iteratorError4=void 0;try{for(var _step4,_iterator4=this.fieldsets[Symbol.iterator]();!(_iteratorNormalCompletion4=(_step4=_iterator4.next()).done);_iteratorNormalCompletion4=!0){_step4.value.populate(data)}}catch(err){_didIteratorError4=!0,_iteratorError4=err}finally{try{_iteratorNormalCompletion4||null==_iterator4.return||_iterator4.return()}finally{if(_didIteratorError4)throw _iteratorError4}}}},{key:"render",value:function render(mount){var _this=this;return this.mount=mount,new Promise((function(resolve){var formContainer=document.createDocumentFragment();_this.form=document.createElement("form"),_this.id&&_this.form.setAttribute("id",_this.id),_this.form.setAttribute("method","POST"),_this.form.setAttribute("action",""),_this.form.setAttribute("class","mutt-form"),_this.multipart&&_this.form.setAttribute("enctype","multipart/form-data");var _iteratorNormalCompletion5=!0,_didIteratorError5=!1,_iteratorError5=void 0;try{for(var _step5,_iterator5=_this.fieldsets[Symbol.iterator]();!(_iteratorNormalCompletion5=(_step5=_iterator5.next()).done);_iteratorNormalCompletion5=!0){var fieldsetElement=_step5.value.render();_this.form.appendChild(fieldsetElement)}}catch(err){_didIteratorError5=!0,_iteratorError5=err}finally{try{_iteratorNormalCompletion5||null==_iterator5.return||_iterator5.return()}finally{if(_didIteratorError5)throw _iteratorError5}}var buttonClass="mutt-button",buttonText="Submit";if(_this.options.hasOwnProperty("buttons")&&_this.options.buttons.hasOwnProperty("submit")){if(_this.options.buttons.submit.hasOwnProperty("class"))buttonClass=buttonClass+" "+_this.options.buttons.submit.class;_this.options.buttons.submit.hasOwnProperty("text")&&(buttonText=_this.options.buttons.submit.text)}var buttonWrapper=document.createElement("div");if(buttonWrapper.setAttribute("class","mutt-button-wrapper"),_this.options.hasOwnProperty("buttons"))for(var _i=0,_Object$keys=Object.keys(_this.options.buttons);_i<_Object$keys.length;_i++){var buttonName=_Object$keys[_i];if("submit"!==buttonName){var buttonSpec=_this.options.buttons[buttonName],button=document.createElement("button");button.setAttribute("name",buttonName),button.setAttribute("class",buttonSpec.class),button.setAttribute("type","button"),button.textContent=buttonSpec.text,button.onclick=buttonSpec.callback,_this.buttons[buttonName]=button,buttonWrapper.appendChild(button)}}var submitButton=document.createElement("button");submitButton.setAttribute("class",buttonClass),submitButton.setAttribute("type","submit"),submitButton.textContent=buttonText,submitButton.onclick=function(e){return _this.submit(e),!1},_this.buttons.submit=submitButton,buttonWrapper.appendChild(submitButton),_this.form.appendChild(buttonWrapper),formContainer.appendChild(_this.form),_this.mount.appendChild(formContainer);var _iteratorNormalCompletion6=!0,_didIteratorError6=!1,_iteratorError6=void 0;try{for(var _step6,_iterator6=_this.fieldsets[Symbol.iterator]();!(_iteratorNormalCompletion6=(_step6=_iterator6.next()).done);_iteratorNormalCompletion6=!0){_step6.value.postRender()}}catch(err){_didIteratorError6=!0,_iteratorError6=err}finally{try{_iteratorNormalCompletion6||null==_iterator6.return||_iterator6.return()}finally{if(_didIteratorError6)throw _iteratorError6}}resolve(_this)}))}},{key:"destroy",value:function destroy(){if(this.mount){var form=this.mount.querySelector("form");return this.mount.removeChild(form),!0}return!1}},{key:"validate",value:function validate(){var valid=!0,errors=[],_iteratorNormalCompletion7=!0,_didIteratorError7=!1,_iteratorError7=void 0;try{for(var _step7,_iterator7=this.fieldsets[Symbol.iterator]();!(_iteratorNormalCompletion7=(_step7=_iterator7.next()).done);_iteratorNormalCompletion7=!0){var fieldset=_step7.value;fieldset.validate()||(errors.push(fieldset.errors),valid=!1)}}catch(err){_didIteratorError7=!0,_iteratorError7=err}finally{try{_iteratorNormalCompletion7||null==_iterator7.return||_iterator7.return()}finally{if(_didIteratorError7)throw _iteratorError7}}return Mutt.logger("Validation -> Status ".concat(valid," -> ").concat(JSON.stringify(errors))),valid}},{key:"refreshValidationState",value:function refreshValidationState(){var _iteratorNormalCompletion8=!0,_didIteratorError8=!1,_iteratorError8=void 0;try{for(var _step8,_iterator8=this.fieldsets[Symbol.iterator]();!(_iteratorNormalCompletion8=(_step8=_iterator8.next()).done);_iteratorNormalCompletion8=!0){_step8.value.refreshValidationState()}}catch(err){_didIteratorError8=!0,_iteratorError8=err}finally{try{_iteratorNormalCompletion8||null==_iterator8.return||_iterator8.return()}finally{if(_didIteratorError8)throw _iteratorError8}}}},{key:"submit",value:function submit(event){var valid=!1;try{valid=this.validate()}catch(e){return Mutt.logger("Unable to validate prior to submit!",e),!1}return!!valid&&(Mutt.logger("Submit form"),this.callbacks.hasOwnProperty("submit")?this.callbacks.submit(this.data(),event):this.form.submit(),!0)}},{key:"on",value:function on(hook,callback){return this.callbacks[hook]=callback,this}},{key:"setFormId",value:function setFormId(formId){this.id=formId}},{key:"getFormId",value:function getFormId(){return this.id}},{key:"setFieldErrors",value:function setFieldErrors(errors){var _iteratorNormalCompletion9=!0,_didIteratorError9=!1,_iteratorError9=void 0;try{for(var _step9,_iterator9=this.fieldsets[Symbol.iterator]();!(_iteratorNormalCompletion9=(_step9=_iterator9.next()).done);_iteratorNormalCompletion9=!0){_step9.value.setFieldErrors(errors)}}catch(err){_didIteratorError9=!0,_iteratorError9=err}finally{try{_iteratorNormalCompletion9||null==_iterator9.return||_iterator9.return()}finally{if(_didIteratorError9)throw _iteratorError9}}}},{key:"getFieldByPath",value:function getFieldByPath(path){var _iteratorNormalCompletion10=!0,_didIteratorError10=!1,_iteratorError10=void 0;try{for(var _step10,_iterator10=this.fieldsets[Symbol.iterator]();!(_iteratorNormalCompletion10=(_step10=_iterator10.next()).done);_iteratorNormalCompletion10=!0){var field=_step10.value.getFieldByPath(path);if(field)return field}}catch(err){_didIteratorError10=!0,_iteratorError10=err}finally{try{_iteratorNormalCompletion10||null==_iterator10.return||_iterator10.return()}finally{if(_didIteratorError10)throw _iteratorError10}}}}]),MuttForm}(),isMergeableObject=function isMergeableObject(value){return function isNonNullObject(value){return!!value&&"object"==typeof value}(value)&&!function isSpecial(value){var stringValue=Object.prototype.toString.call(value);return"[object RegExp]"===stringValue||"[object Date]"===stringValue||function isReactElement(value){return value.$$typeof===REACT_ELEMENT_TYPE}(value)}(value)};var REACT_ELEMENT_TYPE="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function cloneUnlessOtherwiseSpecified(value,options){return!1!==options.clone&&options.isMergeableObject(value)?deepmerge(function emptyTarget(val){return Array.isArray(val)?[]:{}}(value),value,options):value}function defaultArrayMerge(target,source,options){return target.concat(source).map((function(element){return cloneUnlessOtherwiseSpecified(element,options)}))}function deepmerge(target,source,options){(options=options||{}).arrayMerge=options.arrayMerge||defaultArrayMerge,options.isMergeableObject=options.isMergeableObject||isMergeableObject;var sourceIsArray=Array.isArray(source);return sourceIsArray===Array.isArray(target)?sourceIsArray?options.arrayMerge(target,source,options):function mergeObject(target,source,options){var destination={};return options.isMergeableObject(target)&&Object.keys(target).forEach((function(key){destination[key]=cloneUnlessOtherwiseSpecified(target[key],options)})),Object.keys(source).forEach((function(key){options.isMergeableObject(source[key])&&target[key]?destination[key]=deepmerge(target[key],source[key],options):destination[key]=cloneUnlessOtherwiseSpecified(source[key],options)})),destination}(target,source,options):cloneUnlessOtherwiseSpecified(source,options)}deepmerge.all=function deepmergeAll(array,options){if(!Array.isArray(array))throw new Error("first argument should be an array");return array.reduce((function(prev,next){return deepmerge(prev,next,options)}),{})};var deepmerge_1=deepmerge;function mixin(target,source){target=target.prototype,source=source.prototype,Object.getOwnPropertyNames(source).forEach((function(name){"constructor"!==name&&Object.defineProperty(target,name,Object.getOwnPropertyDescriptor(source,name))}))}function resolveSchema(schema){return schema.hasOwnProperty("allOf")&&(schema=function mergeAllOf(allOfList){return deepmerge_1.all(allOfList)}(schema.allOf)),schema}function logger(message){Mutt.config.getSetting("debug")&&console.log("Mutt :: ",message)}var ArrayField=function(_Field){function ArrayField(_ref){var _this,id=_ref.id,name=_ref.name,_ref$label=_ref.label,label=void 0===_ref$label?null:_ref$label,_ref$initial=_ref.initial,initial=void 0===_ref$initial?null:_ref$initial,_ref$widget=_ref.widget,widget=void 0===_ref$widget?null:_ref$widget,_ref$validators=_ref.validators,validators=void 0===_ref$validators?[]:_ref$validators,_ref$attribs=_ref.attribs,attribs=void 0===_ref$attribs?{}:_ref$attribs,_ref$description=_ref.description,description=void 0===_ref$description?null:_ref$description,_ref$options=_ref.options,options=void 0===_ref$options?{}:_ref$options,_ref$order=_ref.order,order=void 0===_ref$order?null:_ref$order,_ref$parent=_ref.parent,parent=void 0===_ref$parent?null:_ref$parent,_ref$items=_ref.items,items=void 0===_ref$items?{}:_ref$items,_ref$minItems=_ref.minItems,minItems=void 0===_ref$minItems?1:_ref$minItems,_ref$maxItems=_ref.maxItems,maxItems=void 0===_ref$maxItems?null:_ref$maxItems;_classCallCheck(this,ArrayField),(_this=_possibleConstructorReturn(this,_getPrototypeOf(ArrayField).call(this,{id:id,name:name,label:label,initial:initial,widget:widget,validators:validators,attribs:attribs,description:description,options:options,order:order,parent:parent}))).minItems=minItems,_this.maxItems=maxItems>=minItems?maxItems:null,_this.itemSchema=resolveSchema(items),_this.itemOptions=options,_this.slots=[];var buildPlaceholders=!0;if(_this.options.hasOwnProperty("disablePlaceholders")&&(buildPlaceholders=!_this.options.disablePlaceholders),buildPlaceholders)for(var i in Array.from(Array(_this.minItems).keys()))_this.addSlot(!1);return _this.validators.push(new LengthValidator({min:_this.minItems,max:_this.maxItems})),_this._errors=[],_this}return _inherits(ArrayField,_Field),_createClass(ArrayField,[{key:"addSlot",value:function addSlot(){var updateWidget=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],position=this.slots.length+1,fieldId=this.getSlotId(position),fieldName=this.getSlotName(position),fieldOptions=Object.assign({order:position},this.itemOptions),field=this.constructor.new(fieldId,fieldName,this.itemSchema,fieldOptions,this);this.slots.push(field),updateWidget&&this.widget.hasOwnProperty("addSlot")&&this.widget.addSlot(field)}},{key:"removeSlot",value:function removeSlot(){var updateWidget=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return 0!==this.slots.length&&(this.slots.pop(),updateWidget&&this.widget.hasOwnProperty("removeSlot")&&this.widget.removeSlot(),!0)}},{key:"spliceSlot",value:function spliceSlot(index){var updateWidget=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(0===this.slots.length)return!1;for(var slotIndex in this.slots)slotIndex=parseInt(slotIndex),updateWidget&&slotIndex===index&&this.slots[slotIndex].destroy();for(var _slotIndex in this.slots.splice(index,1),this.slots){var position=parseInt(_slotIndex)+1,newId=this.getSlotId(position),newName=this.getSlotName(position),slot=this.slots[_slotIndex];slot.updateId(newId,updateWidget),slot.updateName(newName,updateWidget)}return!0}},{key:"getSlotId",value:function getSlotId(index){return"".concat(this.id,"_item_").concat(index)}},{key:"getSlotName",value:function getSlotName(index){return"".concat(this.name,"_").concat(index)}},{key:"getSerializedValue",value:function getSerializedValue(){if(!this.options.hasOwnProperty("serialize")){var valueArray=[],_iteratorNormalCompletion=!0,_didIteratorError=!1,_iteratorError=void 0;try{for(var _step,_iterator=this.slots[Symbol.iterator]();!(_iteratorNormalCompletion=(_step=_iterator.next()).done);_iteratorNormalCompletion=!0){var slot=_step.value;valueArray.push(slot.getSerializedValue())}}catch(err){_didIteratorError=!0,_iteratorError=err}finally{try{_iteratorNormalCompletion||null==_iterator.return||_iterator.return()}finally{if(_didIteratorError)throw _iteratorError}}return valueArray}var serializeKey,serializeArgs=this.options.serialize,serializeOptions={};if("object"===_typeof(serializeArgs)?(serializeKey=serializeArgs.name,serializeOptions=serializeArgs):serializeKey=serializeArgs,Mutt.config.hasSerializer(serializeKey))return new(Mutt.config.getSerializer(serializeKey))(this.value,serializeOptions).serialize()}},{key:"validate",value:function validate(){if(this.refreshValidationState(),this.validators.length>0){var _iteratorNormalCompletion2=!0,_didIteratorError2=!1,_iteratorError2=void 0;try{for(var _step2,_iterator2=this.validators[Symbol.iterator]();!(_iteratorNormalCompletion2=(_step2=_iterator2.next()).done);_iteratorNormalCompletion2=!0){var validator=_step2.value;validator.validate(this.value)||(this.errors=validator.error)}}catch(err){_didIteratorError2=!0,_iteratorError2=err}finally{try{_iteratorNormalCompletion2||null==_iterator2.return||_iterator2.return()}finally{if(_didIteratorError2)throw _iteratorError2}}}if(this.errors.length>0)return this.widget.refreshErrorState(this.errors),!1;var valid=!0,_iteratorNormalCompletion3=!0,_didIteratorError3=!1,_iteratorError3=void 0;try{for(var _step3,_iterator3=this.slots[Symbol.iterator]();!(_iteratorNormalCompletion3=(_step3=_iterator3.next()).done);_iteratorNormalCompletion3=!0){_step3.value.validate()||(valid=!1)}}catch(err){_didIteratorError3=!0,_iteratorError3=err}finally{try{_iteratorNormalCompletion3||null==_iterator3.return||_iterator3.return()}finally{if(_didIteratorError3)throw _iteratorError3}}return valid}},{key:"refreshValidationState",value:function refreshValidationState(){_get(_getPrototypeOf(ArrayField.prototype),"refreshValidationState",this).call(this),this._errors=[]}},{key:"postRender",value:function postRender(){var _iteratorNormalCompletion4=!0,_didIteratorError4=!1,_iteratorError4=void 0;try{for(var _step4,_iterator4=this.slots[Symbol.iterator]();!(_iteratorNormalCompletion4=(_step4=_iterator4.next()).done);_iteratorNormalCompletion4=!0){_step4.value.postRender()}}catch(err){_didIteratorError4=!0,_iteratorError4=err}finally{try{_iteratorNormalCompletion4||null==_iterator4.return||_iterator4.return()}finally{if(_didIteratorError4)throw _iteratorError4}}}},{key:"getWidget",value:function getWidget(){return Mutt.config.getWidget("array")}},{key:"render",value:function render(){return this.widget.renderList(this.slots)}},{key:"getFieldByPath",value:function getFieldByPath(path){var pathParts=path.split("."),searchIndex=parseInt(pathParts.shift());if(isNaN(searchIndex))return null;if(searchIndex>this.slots.length)return null;var field=this.slots[searchIndex];return 0===pathParts.length?field:field.constructor.prototype.hasOwnProperty("getFieldByPath")?field.getFieldByPath(pathParts.join(".")):null}},{key:"value",get:function get(){var valueArray=[],_iteratorNormalCompletion5=!0,_didIteratorError5=!1,_iteratorError5=void 0;try{for(var _step5,_iterator5=this.slots[Symbol.iterator]();!(_iteratorNormalCompletion5=(_step5=_iterator5.next()).done);_iteratorNormalCompletion5=!0){var slot=_step5.value;valueArray.push(slot.value)}}catch(err){_didIteratorError5=!0,_iteratorError5=err}finally{try{_iteratorNormalCompletion5||null==_iterator5.return||_iterator5.return()}finally{if(_didIteratorError5)throw _iteratorError5}}return valueArray},set:function set(value){if(!Array.isArray(value))throw new Error("Unable to set array field value(s) from non-array!");if(value.length>this.slots.length){var difference=value.length-this.slots.length,_iteratorNormalCompletion6=!0,_didIteratorError6=!1,_iteratorError6=void 0;try{for(var _step6,_iterator6=Array(difference).keys()[Symbol.iterator]();!(_iteratorNormalCompletion6=(_step6=_iterator6.next()).done);_iteratorNormalCompletion6=!0){_step6.value;this.addSlot()}}catch(err){_didIteratorError6=!0,_iteratorError6=err}finally{try{_iteratorNormalCompletion6||null==_iterator6.return||_iterator6.return()}finally{if(_didIteratorError6)throw _iteratorError6}}}else value.length<this.slots.length&&(this.slots=this.slots.slice(0,value.length));var fieldValueMap=this.slots.map((function(field,index){return[field,value[index]]})),_iteratorNormalCompletion7=!0,_didIteratorError7=!1,_iteratorError7=void 0;try{for(var _step7,_iterator7=fieldValueMap[Symbol.iterator]();!(_iteratorNormalCompletion7=(_step7=_iterator7.next()).done);_iteratorNormalCompletion7=!0){var _step7$value=_slicedToArray(_step7.value,2),field=_step7$value[0],_value=_step7$value[1];field.value=_value}}catch(err){_didIteratorError7=!0,_iteratorError7=err}finally{try{_iteratorNormalCompletion7||null==_iterator7.return||_iterator7.return()}finally{if(_didIteratorError7)throw _iteratorError7}}}}]),ArrayField}(Field),ButtonField=function(_Field){function ButtonField(){return _classCallCheck(this,ButtonField),_possibleConstructorReturn(this,_getPrototypeOf(ButtonField).apply(this,arguments))}return _inherits(ButtonField,_Field),_createClass(ButtonField,[{key:"getWidget",value:function getWidget(){return Mutt.config.getWidget("button")}}]),ButtonField}(Field);var BooleanField=function(_Field){function BooleanField(){return _classCallCheck(this,BooleanField),_possibleConstructorReturn(this,_getPrototypeOf(BooleanField).apply(this,arguments))}return _inherits(BooleanField,_Field),_createClass(BooleanField,[{key:"getWidget",value:function getWidget(){return Mutt.config.getWidget("checkbox")}},{key:"value",get:function get(){return function toBool(value){if(null==value)return null;if("boolean"==typeof value)return value;switch(value.toLowerCase().trim()){case"true":case"yes":case"1":return!0;case"false":case"no":case"0":case null:return!1;default:return Boolean(value)}}(this.widget.getValue())},set:function set(value){this.widget.setValue(value)}}]),BooleanField}(Field),ChoiceField=function(_Field){function ChoiceField(_ref){var _this,id=_ref.id,name=_ref.name,_ref$label=_ref.label,label=void 0===_ref$label?null:_ref$label,_ref$initial=_ref.initial,initial=void 0===_ref$initial?null:_ref$initial,_ref$widget=_ref.widget,widget=void 0===_ref$widget?null:_ref$widget,_ref$validators=_ref.validators,validators=void 0===_ref$validators?[]:_ref$validators,_ref$attribs=_ref.attribs,attribs=void 0===_ref$attribs?{}:_ref$attribs,_ref$description=_ref.description,description=void 0===_ref$description?null:_ref$description,_ref$options=_ref.options,options=void 0===_ref$options?{}:_ref$options,_ref$order=_ref.order,order=void 0===_ref$order?null:_ref$order,_ref$parent=_ref.parent,parent=void 0===_ref$parent?null:_ref$parent,_ref$choices=_ref.choices,choices=void 0===_ref$choices?[]:_ref$choices;return _classCallCheck(this,ChoiceField),(_this=_possibleConstructorReturn(this,_getPrototypeOf(ChoiceField).call(this,{id:id,name:name,label:label,initial:initial,widget:widget,validators:validators,attribs:attribs,description:description,options:options,order:order,parent:parent}))).choices=choices,options.hasOwnProperty("choices")&&(_this.choices=options.choices),_this.widget.hasOwnProperty("setChoices")&&_this.widget.setChoices(_this.choices),_this}return _inherits(ChoiceField,_Field),_createClass(ChoiceField,[{key:"getWidget",value:function getWidget(){return this.options.hasOwnProperty("widget")&&"checkboxlist"===this.options.widget?Mutt.config.getWidget("checkboxlist"):Mutt.config.getWidget("select")}}]),ChoiceField}(Field),IntegerField=function(_Field){function IntegerField(_ref){var _this,id=_ref.id,name=_ref.name,_ref$label=_ref.label,label=void 0===_ref$label?null:_ref$label,_ref$initial=_ref.initial,initial=void 0===_ref$initial?null:_ref$initial,_ref$widget=_ref.widget,widget=void 0===_ref$widget?null:_ref$widget,_ref$validators=_ref.validators,validators=void 0===_ref$validators?[]:_ref$validators,_ref$attribs=_ref.attribs,attribs=void 0===_ref$attribs?{}:_ref$attribs,_ref$description=_ref.description,description=void 0===_ref$description?null:_ref$description,_ref$options=_ref.options,options=void 0===_ref$options?{}:_ref$options,_ref$order=_ref.order,order=void 0===_ref$order?null:_ref$order,_ref$parent=_ref.parent,parent=void 0===_ref$parent?null:_ref$parent;return _classCallCheck(this,IntegerField),(_this=_possibleConstructorReturn(this,_getPrototypeOf(IntegerField).call(this,{id:id,name:name,label:label,initial:initial,widget:widget,validators:validators,attribs:attribs,description:description,options:options,order:order,parent:parent}))).validators.push(new IntegerValidator),_this}return _inherits(IntegerField,_Field),_createClass(IntegerField,[{key:"getWidget",value:function getWidget(){return Mutt.config.getWidget("number")}},{key:"value",get:function get(){var value=this.widget.getValue();return value||0===value?parseInt(value):""},set:function set(value){this.widget.setValue(value)}}]),IntegerField}(Field),ObjectField=function(_Field){function ObjectField(_ref){var _this,id=_ref.id,name=_ref.name,_ref$label=_ref.label,label=void 0===_ref$label?null:_ref$label,_ref$initial=_ref.initial,initial=void 0===_ref$initial?null:_ref$initial,_ref$widget=_ref.widget,widget=void 0===_ref$widget?null:_ref$widget,_ref$validators=_ref.validators,validators=void 0===_ref$validators?[]:_ref$validators,_ref$attribs=_ref.attribs,attribs=void 0===_ref$attribs?{}:_ref$attribs,_ref$description=_ref.description,description=void 0===_ref$description?null:_ref$description,_ref$options=_ref.options,options=void 0===_ref$options?{}:_ref$options,_ref$order=_ref.order,order=void 0===_ref$order?null:_ref$order,_ref$parent=_ref.parent,parent=void 0===_ref$parent?null:_ref$parent,_ref$properties=_ref.properties,properties=void 0===_ref$properties?{}:_ref$properties,_ref$required=_ref.required,required=void 0===_ref$required?[]:_ref$required;_classCallCheck(this,ObjectField),(_this=_possibleConstructorReturn(this,_getPrototypeOf(ObjectField).call(this,{id:id,name:name,label:label,initial:initial,widget:widget,validators:validators,attribs:attribs,description:description,options:options,order:order,parent:parent}))).object={};for(var fieldIndex=1,resolvedProps=resolveSchema(properties),_i=0,_Object$keys=Object.keys(resolvedProps);_i<_Object$keys.length;_i++){var fieldName=_Object$keys[_i],fieldId=options.usePathId?"".concat(id,"_").concat(fieldName):"".concat(name,"_").concat(fieldName),fieldOptions={},fieldRequired=!1;_this.options.hasOwnProperty(fieldName)&&(fieldOptions=options[fieldName]),required.length>0&&-1!==required.indexOf(fieldName)&&(fieldRequired=!0),fieldOptions.hasOwnProperty("usePathId")||(fieldOptions.usePathId=options.usePathId);var field=_this.constructor.new(fieldId,fieldName,resolvedProps[fieldName],fieldOptions,_assertThisInitialized(_this),fieldRequired);if(!field)throw new Error('Unable to create "'.concat(fieldId,'" on ').concat(id," (ObjectField)!"));field.getSortOrder()||field.setSortOrder(fieldIndex),_this.object[fieldName]=field,fieldIndex++}return _this._errors={},_this}return _inherits(ObjectField,_Field),_createClass(ObjectField,[{key:"getSerializedValue",value:function getSerializedValue(){if(!this.options.hasOwnProperty("serialize")){for(var values={},_i2=0,_Object$keys2=Object.keys(this.object);_i2<_Object$keys2.length;_i2++){var key=_Object$keys2[_i2];values[key]=this.object[key].getSerializedValue()}return values}var serializeKey,serializeArgs=this.options.serialize,serializeOptions={};if("object"===_typeof(serializeArgs)?(serializeKey=serializeArgs.name,serializeOptions=serializeArgs):serializeKey=serializeArgs,Mutt.config.hasSerializer(serializeKey))return new(Mutt.config.getSerializer(serializeKey))(this.value,serializeOptions).serialize()}},{key:"validate",value:function validate(){var valid=!0;if(Object.values(this.object).forEach((function(field){field.validate()||(valid=!1)})),this.validators.length>0){var _iteratorNormalCompletion=!0,_didIteratorError=!1,_iteratorError=void 0;try{f