mobx-react-form
Version:
Reactive MobX Form State Management
1 lines • 68.4 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("_"),require("mobx")):"function"==typeof define&&define.amd?define(["_","mobx"],t):"object"==typeof exports?exports.MobxReactForm=t(require("_"),require("mobx")):e.MobxReactForm=t(e._,e.mobx)}(self,((e,t)=>(()=>{"use strict";var i={311:function(e,t,i){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(259),a=r(i(479)),l=i(593),o=i(215),n=i(561),d=i(93),u=i(951);t.default=class{constructor(){Object.defineProperty(this,"noop",{enumerable:!0,configurable:!0,writable:!0,value:()=>{}}),Object.defineProperty(this,"state",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"fields",{enumerable:!0,configurable:!0,writable:!0,value:s.observable.map({})}),Object.defineProperty(this,"path",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$submitted",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"$submitting",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"$validated",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"$validating",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"$clearing",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"$resetting",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"$touched",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"$changed",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"$hooks",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,"$handlers",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,"execHook",{enumerable:!0,configurable:!0,writable:!0,value:(e,t={})=>(0,l.$try)(t[e],this.$hooks[e],this.noop).apply(this,[this])}),Object.defineProperty(this,"execHandler",{enumerable:!0,configurable:!0,writable:!0,value:(e,t,i,r=null,s=!0)=>[(0,l.$try)(this.$handlers[e]&&this.$handlers[e].apply(this,[this]),i,this.noop).apply(this,[...t]),s&&this.execHook(r||e)]}),Object.defineProperty(this,"intercept",{enumerable:!0,configurable:!0,writable:!0,value:e=>this.MOBXEvent("function"==typeof e?{type:"interceptor",call:e}:Object.assign({type:"interceptor"},e))}),Object.defineProperty(this,"observe",{enumerable:!0,configurable:!0,writable:!0,value:e=>this.MOBXEvent("function"==typeof e?{type:"observer",call:e}:Object.assign({type:"observer"},e))}),Object.defineProperty(this,"onClear",{enumerable:!0,configurable:!0,writable:!0,value:(...e)=>this.execHandler(n.FieldPropsEnum.onClear,e,(e=>{(0,l.isEvent)(e)&&e.preventDefault(),this.clear(!0,!1)}))}),Object.defineProperty(this,"onReset",{enumerable:!0,configurable:!0,writable:!0,value:(...e)=>this.execHandler(n.FieldPropsEnum.onReset,e,(e=>{(0,l.isEvent)(e)&&e.preventDefault(),this.reset(!0,!1)}))}),Object.defineProperty(this,"onSubmit",{enumerable:!0,configurable:!0,writable:!0,value:(...e)=>this.execHandler(n.FieldPropsEnum.onSubmit,e,((e,t={})=>{(0,l.isEvent)(e)&&e.preventDefault(),this.submit(t)}),null,!1)}),Object.defineProperty(this,"onAdd",{enumerable:!0,configurable:!0,writable:!0,value:(...e)=>this.execHandler(n.FieldPropsEnum.onAdd,e,((e,t)=>{(0,l.isEvent)(e)&&e.preventDefault(),this.add((0,l.isEvent)(t)?null:t,!1)}))}),Object.defineProperty(this,"onDel",{enumerable:!0,configurable:!0,writable:!0,value:(...e)=>this.execHandler(n.FieldPropsEnum.onDel,e,((e,t)=>{(0,l.isEvent)(e)&&e.preventDefault(),this.del((0,l.isEvent)(t)?this.path:t,!1)}))}),(0,s.makeObservable)(this,{$submitted:s.observable,$submitting:s.observable,$validated:s.observable,$validating:s.observable,$clearing:s.observable,$resetting:s.observable,$touched:s.observable,$changed:s.observable,$hooks:s.observable,$handlers:s.observable,changed:s.computed,submitted:s.computed,submitting:s.computed,validated:s.computed,validating:s.computed,clearing:s.computed,resetting:s.computed,hasIncrementalKeys:s.computed,hasNestedFields:s.computed,size:s.computed,initField:s.action,submit:s.action,deepUpdate:s.action,set:s.action,add:s.action,del:s.action})}get resetting(){return this.hasNestedFields?this.check(n.FieldPropsEnum.resetting,!0):this.$resetting}get clearing(){return this.hasNestedFields?this.check(n.FieldPropsEnum.clearing,!0):this.$clearing}get submitted(){return(0,s.toJS)(this.$submitted)}get submitting(){return(0,s.toJS)(this.$submitting)}get validated(){return(0,s.toJS)(this.$validated)}get validating(){return(0,s.toJS)(this.$validating)}get hasIncrementalKeys(){return!!this.fields.size&&(0,l.hasIntKeys)(this.fields)}get hasNestedFields(){return 0!==this.fields.size}get size(){return this.fields.size}get changed(){return!a.default.isNil(this.path)&&this.hasNestedFields?this.reduce(((e,t)=>e+t.changed),0)+this.$changed:this.$changed}initFields(e,t=!1){const i=this.state.options.get(d.OptionsEnum.fallback),r=e=>a.default.trimStart([this.path,e].join("."),".");let s;s=(0,o.prepareFieldsData)(e,this.state.strict,i),s=(0,o.mergeSchemaDefaults)(s,this.validator),a.default.forIn(s,((e,s)=>{const o=r(s),n=this.select(o,null,!1);if(a.default.isNil(n))if(i)this.initField(s,o,e,t);else{const i=(0,l.pathToStruct)(o);this.state.struct().filter((e=>e.startsWith(i))).find((e=>"."===e.charAt(i.length)||"[]"===e.substring(i.length,i.length+2)||e===i))&&this.initField(s,o,e,t)}}))}initField(e,t,i,r=!1){const s=this.state.get("current","props"),o=(0,l.pathToStruct)(t),d=e=>{const t=a.default.get(s[e],o);if(![n.FieldPropsEnum.input,n.FieldPropsEnum.output,n.FieldPropsEnum.converter].includes(e)||"function"==typeof t)return t},u={$value:a.default.get(s[n.SeparatedPropsMode.values],t),$computed:d(n.SeparatedPropsMode.computed),$label:d(n.SeparatedPropsMode.labels),$placeholder:d(n.SeparatedPropsMode.placeholders),$default:d(n.SeparatedPropsMode.defaults),$initial:d(n.SeparatedPropsMode.initials),$disabled:d(n.SeparatedPropsMode.disabled),$deleted:d(n.SeparatedPropsMode.deleted),$type:d(n.SeparatedPropsMode.types),$related:d(n.SeparatedPropsMode.related),$rules:d(n.SeparatedPropsMode.rules),$options:d(n.SeparatedPropsMode.options),$bindings:d(n.SeparatedPropsMode.bindings),$extra:d(n.SeparatedPropsMode.extra),$hooks:d(n.SeparatedPropsMode.hooks),$handlers:d(n.SeparatedPropsMode.handlers),$validatedWith:d(n.SeparatedPropsMode.validatedWith),$validators:d(n.SeparatedPropsMode.validators),$observers:d(n.SeparatedPropsMode.observers),$interceptors:d(n.SeparatedPropsMode.interceptors),$converters:d(n.SeparatedPropsMode.converters),$input:d(n.SeparatedPropsMode.input),$output:d(n.SeparatedPropsMode.output),$autoFocus:d(n.SeparatedPropsMode.autoFocus),$ref:d(n.SeparatedPropsMode.refs),$nullable:d(n.SeparatedPropsMode.nullable),$autoComplete:d(n.SeparatedPropsMode.autoComplete)},p=this.state.form.makeField({key:e,path:t,struct:o,data:i,props:u,update:r,state:this.state},i&&i[n.FieldPropsEnum.class]||d(n.SeparatedPropsMode.classes));return this.fields.merge({[e]:p}),p}validate(e,t){const i=a.default.merge(e,{path:this.path});return this.state.form.validator.validate(i,t)}submit(e={},{execOnSubmitHook:t=!0,execValidationHooks:i=!0,validate:r=!0}={}){const a=t?(()=>this.execHook(n.FieldPropsEnum.onSubmit,e))():void 0;if(this.$submitting=!0,this.$submitted+=1,!r||!this.state.options.get(d.OptionsEnum.validateOnSubmit,this))return Promise.resolve(a).then((0,s.action)((()=>this.$submitting=!1))).catch((0,s.action)((e=>{throw this.$submitting=!1,e}))).then((()=>this));const l=t=>t?this.execHook(u.ValidationHooks.onSuccess,e):this.execHook(u.ValidationHooks.onError,e);return this.validate({showErrors:this.state.options.get(d.OptionsEnum.showErrorsOnSubmit,this)}).then((({isValid:e})=>{const t=i?l(e):void 0;if(e)return Promise.all([a,t]);const r=this.state.options.get(d.OptionsEnum.defaultGenericError,this);return this.state.options.get(d.OptionsEnum.submitThrowsError,this)&&r&&this.invalidate(),Promise.all([a,t])})).then((0,s.action)((()=>this.$submitting=!1))).catch((0,s.action)((e=>{throw this.$submitting=!1,e}))).then((()=>this))}check(e,t=!1){return(0,l.allowedProps)(n.AllowedFieldPropsTypes.computed,[e]),t?(0,l.checkPropOccurrence)({type:l.props.occurrences[e],data:this.deepCheck(l.props.occurrences[e],e,this.fields)}):this[e]}deepCheck(e,t,i){const r=(0,l.getObservableMapValues)(i);return a.default.transform(r,((i,r)=>(r.fields.size&&Array.isArray(r.initial)||i.push(r[t]),i.push((0,l.checkPropOccurrence)({data:this.deepCheck(e,t,r.fields),type:e})),i)),[])}update(e){if(!a.default.isPlainObject(e))throw new Error("The update() method accepts only plain objects.");this.deepUpdate((0,o.prepareFieldsData)({fields:e},this.state.strict),void 0,void 0,e)}deepUpdate(e,t="",i=!0,r){a.default.each(e,((e,s)=>{var u;const p=a.default.has(e,n.FieldPropsEnum.name)?e.name:s,h=a.default.trimStart(`${t}.${p}`,"."),c=this.state.options.get(d.OptionsEnum.strictUpdate,this),b=this.select(h,null,c),f=this.select(t,null,!1)||this.state.form.select(this.path,null,!1),v=this.state.options.get(d.OptionsEnum.applyInputConverterOnUpdate,this);if(!a.default.isNil(b)&&!a.default.isUndefined(e)){if(Array.isArray(b.values())){const t=null!==(u=a.default.max(a.default.map(e.fields,((e,t)=>Number(t)))))&&void 0!==u?u:-1;(0,l.getObservableMapValues)(b.fields).forEach((e=>{Number(e.name)>t&&(b.$changed++,b.state.form.$changed++,b.fields.delete(e.name))}))}if(null==e?void 0:e.fields){const e=this.state.options.get(d.OptionsEnum.fallback),t=this.state.struct().findIndex((e=>e.startsWith(b.path.replace(/\.\d+\./,"[].")+"[]")));if(!e&&0===b.fields.size&&t<0)return void(b.value=(0,o.parseInput)(v?b.$input:e=>e,{fallbackValueOption:this.state.options.get(d.OptionsEnum.fallbackValue,this),separated:a.default.get(r,h)}))}if(a.default.isNull(e)||a.default.isNil(e.fields))return void(b.value=(0,o.parseInput)(v?b.$input:e=>e,{fallbackValueOption:this.state.options.get(d.OptionsEnum.fallbackValue,this),separated:e}))}if(!a.default.isNil(f)&&a.default.isNil(b)){const t=a.default.trimStart([this.path,h].join("."),".");f.$changed++,f.state.form.$changed++,f.initField(p,t,e,!0)}else if(i)if(a.default.has(e,n.FieldPropsEnum.fields)&&!a.default.isNil(e.fields))this.deepUpdate(e.fields,h);else{const e=(0,o.pathToFieldsTree)(this.state.struct(),h);this.deepUpdate(e,h,!1)}}))}get(e=null,t=!0){if(a.default.isNil(e))return this.deepGet([...l.props.computed,...l.props.editable,...l.props.validation],this.fields,t);if((0,l.allowedProps)(n.AllowedFieldPropsTypes.all,Array.isArray(e)?e:[e]),a.default.isString(e)){if([n.FieldPropsEnum.hooks,n.FieldPropsEnum.handlers].includes(e))return this[`$${e}`];if(t&&0===this.fields.size){const i=this.state.options.get(d.OptionsEnum.retrieveNullifiedEmptyStrings,this);return(0,o.parseCheckOutput)(this,e,!!t&&i)}const i=this.deepGet(e,this.fields,t),r=this.state.options.get(d.OptionsEnum.removeNullishValuesInArrays,this);return(0,o.parseCheckArray)(this,i,e,!!t&&r)}return this.deepGet(e,this.fields,t)}deepGet(e,t,i=!0){return a.default.transform((0,l.getObservableMapValues)(t),((t,r)=>{if(Object.assign(t,{[r.key]:{fields:(t=>0!==t.size?this.deepGet(e,t,i):void 0)(r.fields)}}),a.default.isString(e)){const s=this.state.options,a=s.get(d.OptionsEnum.retrieveOnlyDirtyFieldsValues,this)&&e===n.FieldPropsEnum.value&&r.isPristine||s.get(d.OptionsEnum.retrieveOnlyEnabledFieldsValues,this)&&e===n.FieldPropsEnum.value&&r.disabled||s.get(d.OptionsEnum.retrieveOnlyEnabledFieldsErrors,this)&&e===n.FieldPropsEnum.error&&r.disabled&&r.isValid&&(!r.error||!r.hasError)||s.get(d.OptionsEnum.softDelete,this)&&e===n.FieldPropsEnum.value&&r.deleted;if(0===r.fields.size){if(delete t[r.key],a)return t;const s=this.state.options.get(d.OptionsEnum.retrieveNullifiedEmptyStrings,this);return Object.assign(t,{[r.key]:(0,o.parseCheckOutput)(r,e,!!i&&s)})}let l=this.deepGet(e,r.fields,i);if(e===n.FieldPropsEnum.value&&(l=r.$output(l)),delete t[r.key],a)return t;const u=this.state.options.get(d.OptionsEnum.removeNullishValuesInArrays,this);return Object.assign(t,{[r.key]:(0,o.parseCheckArray)(r,l,e,!!i&&u)})}return a.default.each(e,(e=>Object.assign(t[r.key],{[e]:r[e]}))),t}),{})}set(e,t){if(!a.default.isString(e)||a.default.isUndefined(t))a.default.isNil(t)&&(this.hasNestedFields?this.deepSet(n.FieldPropsEnum.value,e,"",!0):this.set(n.FieldPropsEnum.value,e));else{(0,l.allowedProps)(n.AllowedFieldPropsTypes.editable,[e]);const i=[n.FieldPropsEnum.hooks,n.FieldPropsEnum.handlers].includes(e);if((a.default.isObject(t)&&e===n.FieldPropsEnum.value||a.default.isPlainObject(t)&&!i)&&this.hasNestedFields)return this.deepSet(e,t,"",!0);if(e===n.FieldPropsEnum.value){const e=this.state.options.get(d.OptionsEnum.applyInputConverterOnSet,this);this.value=(0,o.parseInput)(e?this.$input:e=>e,{fallbackValueOption:this.state.options.get(d.OptionsEnum.fallbackValue,this),separated:t})}else i?Object.assign(this[`$${e}`],t):a.default.set(this,`$${e}`,t)}}deepSet(e,t,i="",r=!1){const s=this.state.options.get(d.OptionsEnum.strictSet,this);a.default.isNil(t)?this.each((e=>e.$value=(0,o.defaultValue)({fallbackValueOption:this.state.options.get(d.OptionsEnum.fallbackValue,this),value:e.$value,nullable:e.$nullable,type:e.type}))):a.default.each(t,((t,o)=>{const n=a.default.trimStart(`${i}.${o}`,"."),d=this.select(n,null,s);s&&(0,l.throwError)(n,d,"You are updating a not existent field:"),a.default.isUndefined(d)||(a.default.isUndefined(t)||d.set(e,t,r),d.fields.size&&a.default.isObject(t)&&this.deepSet(e,t,n,r))}))}add(e,t=!0){if((0,l.isArrayOfObjects)(e))return a.default.each(e,(e=>this.update({[(0,l.maxKey)(this.fields)]:e}))),this.$changed++,this.state.form.$changed++,t&&this.execHook(n.FieldPropsEnum.onAdd),this;let i;a.default.has(e,n.FieldPropsEnum.key)&&(i=e.key),a.default.has(e,n.FieldPropsEnum.name)&&(i=e.name),i||(i=(0,l.maxKey)(this.fields));const r=(0,o.pathToFieldsTree)(this.state.struct(),this.path,0,!0),s=this.initField(i,(e=>a.default.trimStart([this.path,e].join("."),"."))(i),a.default.merge(r[0],e));if(!a.default.has(e,n.FieldPropsEnum.value)&&!a.default.has(e,n.FieldPropsEnum.fields)&&!this.state.options.get(d.OptionsEnum.preserveDeletedFieldsValues,this)){const e=this.state.options.get(d.OptionsEnum.fallbackValue,this);s.$value=(0,o.defaultValue)({fallbackValueOption:e,value:s.$value,nullable:s.$nullable,type:s.type}),s.each((t=>t.$value=(0,o.defaultValue)({fallbackValueOption:e,value:t.$value,nullable:t.$nullable,type:t.type})))}return this.$changed++,this.state.form.$changed++,t&&this.execHook(n.FieldPropsEnum.onAdd),s}del(e=null,t=!0){const i=this.state.options.get(d.OptionsEnum.strictDelete,this),r=(0,o.parsePath)(null!=e?e:this.path),s=a.default.trim([this.path,r].join("."),"."),u=this.container(e),p=a.default.split(r,"."),h=a.default.last(p);if(i&&!u.fields.has(h)){const e=`Key "${h}" not found when trying to delete field`;(0,l.throwError)(s,null,e)}return u.$changed++,u.state.form.$changed++,this.state.options.get(d.OptionsEnum.softDelete,this)?this.select(s).set(n.FieldPropsEnum.deleted,!0):(u.each((e=>e.debouncedValidation.cancel())),t&&this.execHook(n.FieldPropsEnum.onDel),u.fields.delete(h))}MOBXEvent({prop:e=n.FieldPropsEnum.value,key:t=null,path:i=null,call:r,type:o}){let d=t||e;(0,l.allowedProps)(n.AllowedFieldPropsTypes.observable,[d]);const u=this.select(i||this.path,null,null)||this,p=e=>r.apply(null,[{change:e,form:this.state.form,path:u.path||null,field:u.path?u:null}]);let h,c;"observer"===o&&(h=s.observe,c=e=>(0,s.observe)(u.fields,e)),"interceptor"===o&&(d=`$${e}`,h=s.intercept,c=u.fields.intercept);const b=u.path?`${d}@${u.path}`:d;a.default.merge(this.state.disposers[o],{[b]:d===n.FieldPropsEnum.fields?c.apply((e=>p(e))):h(u,d,(e=>p(e)))})}dispose(e=null){return this.path&&e?this.disposeSingle(e):this.disposeAll()}disposeAll(){const e=e=>e.apply();return a.default.each(this.state.disposers.interceptor,e),a.default.each(this.state.disposers.observer,e),this.state.disposers={interceptor:{},observer:{}},null}disposeSingle({type:e,key:t=n.FieldPropsEnum.value,path:i=null}){const r=(0,o.parsePath)(null!=i?i:this.path);"interceptor"===e&&(t=`$${t}`),this.state.disposers[e][`${t}@${r}`].apply(),delete this.state.disposers[e][`${t}@${r}`]}select(e,t=null,i=!0){const r=(0,o.parsePath)(e),s=a.default.split(r,"."),n=a.default.head(s);s.shift();let u=a.default.isNil(t)?this.fields.get(n):t.get(n),p=!1;return a.default.each(s,(e=>{p||(a.default.isNil(u)?(u=void 0,p=!0):u=u.fields.get(e))})),i&&this.state.options.get(d.OptionsEnum.strictSelect,this)&&(0,l.throwError)(e,u),u}container(e){const t=(0,o.parsePath)(null!=e?e:this.path),i=a.default.trim(t.replace(new RegExp("[^./]+$"),""),".");return this.path&&a.default.isNil(e)?""!==i?this.state.form.select(i,null,!1):this.state.form:""!==i?this.select(i,null,!1):this}has(e){return this.fields.has(e)}map(e){return(0,l.getObservableMapValues)(this.fields).map(e)}each(e,t=null,i=0){const r=t||this.fields;(0,l.getObservableMapValues)(r).forEach(((t,r)=>{e(t,r,i),0!==t.fields.size&&this.each(e,t.fields,i+1)}))}reduce(e,t){return(0,l.getObservableMapValues)(this.fields).reduce(e,t)}$(e){return this.select(e)}values(){return this.get(n.FieldPropsEnum.value)}errors(){return this.get(n.FieldPropsEnum.error)}labels(){return this.get(n.FieldPropsEnum.label)}placeholders(){return this.get(n.FieldPropsEnum.placeholder)}defaults(){return this.get(n.FieldPropsEnum.default)}initials(){return this.get(n.FieldPropsEnum.initial)}types(){return this.get(n.FieldPropsEnum.type)}}},169:function(e,t,i){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=r(i(479)),a=i(593),l=i(561);t.default=class{constructor(){Object.defineProperty(this,"templates",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,"rewriters",{enumerable:!0,configurable:!0,writable:!0,value:{default:{id:l.FieldPropsEnum.id,name:l.FieldPropsEnum.name,type:l.FieldPropsEnum.type,value:l.FieldPropsEnum.value,checked:l.FieldPropsEnum.checked,label:l.FieldPropsEnum.label,placeholder:l.FieldPropsEnum.placeholder,disabled:l.FieldPropsEnum.disabled,autoComplete:l.FieldPropsEnum.autoComplete,onChange:l.FieldPropsEnum.onChange,onBlur:l.FieldPropsEnum.onBlur,onFocus:l.FieldPropsEnum.onFocus,autoFocus:l.FieldPropsEnum.autoFocus,inputMode:l.FieldPropsEnum.inputMode,onKeyUp:l.FieldPropsEnum.onKeyUp,onKeyDown:l.FieldPropsEnum.onKeyDown}}})}register(e){return s.default.each(e,((e,t)=>{"function"==typeof e&&s.default.merge(this.templates,{[t]:e}),s.default.isPlainObject(e)&&s.default.merge(this.rewriters,{[t]:e})})),this}load(e,t=l.FieldPropsEnum.default,i){const r={keys:s.default.get(this.rewriters,l.FieldPropsEnum.default),form:e.state.form,field:e,props:i,$try:a.$try};if(s.default.has(this.templates,l.FieldPropsEnum.default))return s.default.get(this.templates,t)(r);if(s.default.has(this.rewriters,t)){const r={};return s.default.each(s.default.get(this.rewriters,t),((t,l)=>s.default.merge(r,{[t]:(0,a.$try)(i[l],e[l])}))),r}return s.default.get(this.templates,t)(r)}}},506:function(e,t,i){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(259),a=r(i(479)),l=r(i(311)),o=i(593),n=i(215),d=i(93),u=i(561),p=(e,t)=>"function"!=typeof t?t:t.apply(e,[{field:e,form:e.state.form}]),h=e=>"function"==typeof e?e:void 0,c=(e,t)=>"function"==typeof e[`_${t}`]?e[`_${t}`].apply(e,[{form:e.state.form,field:e}]):e[`$${t}`],b=(e,t,i)=>Object.assign(e,{_label:h(t.$label||(null==i?void 0:i.label)),_placeholder:h(t.$placeholder||(null==i?void 0:i.placeholder)),_disabled:h(t.$disabled||(null==i?void 0:i.disabled)),_rules:h(t.$rules||(null==i?void 0:i.rules)),_related:h(t.$related||(null==i?void 0:i.related)),_deleted:h(t.$deleted||(null==i?void 0:i.deleted)),_validators:h(t.$validators||(null==i?void 0:i.validators)),_validatedWith:h(t.$validatedWith||(null==i?void 0:i.validatedWith)),_bindings:h(t.$bindings||(null==i?void 0:i.bindings)),_extra:h(t.$extra||(null==i?void 0:i.extra)),_options:h(t.$options||(null==i?void 0:i.options)),_autoFocus:h(t.$autoFocus||(null==i?void 0:i.autoFocus)),_inputMode:h(t.$inputMode||(null==i?void 0:i.inputMode)),$label:p(e,t.$label||(null==i?void 0:i.label)||""),$placeholder:p(e,t.$placeholder||(null==i?void 0:i.placeholder)||""),$disabled:p(e,t.$disabled||(null==i?void 0:i.disabled)||!1),$rules:p(e,t.$rules||(null==i?void 0:i.rules)||null),$related:p(e,t.$related||(null==i?void 0:i.related)||[]),$deleted:p(e,t.$deleted||(null==i?void 0:i.deleted)||!1),$validatedWith:p(e,t.$validatedWith||(null==i?void 0:i.validatedWith)||u.FieldPropsEnum.value),$bindings:p(e,t.$bindings||(null==i?void 0:i.bindings)||u.FieldPropsEnum.default),$extra:p(e,t.$extra||(null==i?void 0:i.extra)||null),$options:p(e,t.$options||(null==i?void 0:i.options)||{}),$autoFocus:p(e,t.$autoFocus||(null==i?void 0:i.autoFocus)||!1),$inputMode:p(e,t.$inputMode||(null==i?void 0:i.inputMode)||void 0),$validators:p(e,t.$validators||(null==i?void 0:i.validators)||null),$hooks:t.$hooks||(null==i?void 0:i.hooks)||{},$handlers:t.$handlers||(null==i?void 0:i.handlers)||{},$observers:t.$observers||(null==i?void 0:i.observers)||null,$interceptors:t.$interceptors||(null==i?void 0:i.interceptors)||null,$ref:t.$ref||(null==i?void 0:i.ref)||void 0,$nullable:t.$nullable||(null==i?void 0:i.nullable)||!1,$autoComplete:t.$autoComplete||(null==i?void 0:i.autoComplete)||void 0}),f=(e,t,i,r,{isEmptyArray:s,fallbackValueOption:a})=>(0,n.parseInput)((e=>e),{isEmptyArray:s,type:e.type,unified:r?(0,n.defaultValue)({fallbackValueOption:a,type:e.type,value:e.value}):null==t?void 0:t.default,separated:i.$default,fallback:e.$initial});class v extends l.default{constructor({key:e,path:t,struct:i,data:r={},props:l={},update:n=!1,state:p}){super(),Object.defineProperty(this,"hasInitialNestedFields",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"incremental",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"key",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$observers",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$interceptors",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$converter",{enumerable:!0,configurable:!0,writable:!0,value:e=>e}),Object.defineProperty(this,"$input",{enumerable:!0,configurable:!0,writable:!0,value:e=>e}),Object.defineProperty(this,"$output",{enumerable:!0,configurable:!0,writable:!0,value:e=>e}),Object.defineProperty(this,"_value",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_label",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_placeholder",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_disabled",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_rules",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_related",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_deleted",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_validatedWith",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_validators",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_bindings",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_extra",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_autoFocus",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_inputMode",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$value",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$type",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$label",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$placeholder",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$default",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$initial",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$bindings",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$extra",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$related",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$validatedWith",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$validators",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$rules",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$disabled",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"$focused",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"$blurred",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"$deleted",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"$autoFocus",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"$inputMode",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$ref",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$nullable",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"$autoComplete",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"showError",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"errorSync",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"errorAsync",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"validationErrorStack",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"validationFunctionsData",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"validationAsyncData",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"debouncedValidation",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"disposeValidationOnBlur",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"disposeValidationOnChange",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"files",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"sync",{enumerable:!0,configurable:!0,writable:!0,value:(0,s.action)(((e,t=null)=>{const i=e=>(0,o.isBool)(e,this.value)?e.target.checked:e.target.value;if(a.default.isNil(e)||a.default.isNil(e.target))return a.default.isNil(t)||a.default.isNil(t.target)||(t=i(t)),void(this.value=(0,o.$try)(e,t));a.default.isNil(e.target)?this.value=e:this.value=i(e)}))}),Object.defineProperty(this,"onSync",{enumerable:!0,configurable:!0,writable:!0,value:(...e)=>"file"===this.type?this.onDrop(...e):this.execHandler(u.FieldPropsEnum.onChange,e,this.sync,u.FieldPropsEnum.onSync)}),Object.defineProperty(this,"onChange",{enumerable:!0,configurable:!0,writable:!0,value:this.onSync}),Object.defineProperty(this,"onToggle",{enumerable:!0,configurable:!0,writable:!0,value:(...e)=>this.execHandler(u.FieldPropsEnum.onToggle,e,this.sync)}),Object.defineProperty(this,"onBlur",{enumerable:!0,configurable:!0,writable:!0,value:(...e)=>this.execHandler(u.FieldPropsEnum.onBlur,e,(0,s.action)((()=>{this.$focused=!1,this.$blurred=!0})))}),Object.defineProperty(this,"onFocus",{enumerable:!0,configurable:!0,writable:!0,value:(...e)=>this.execHandler(u.FieldPropsEnum.onFocus,e,(0,s.action)((()=>{this.$focused=!0,this.$touched=!0})))}),Object.defineProperty(this,"onDrop",{enumerable:!0,configurable:!0,writable:!0,value:(...e)=>this.execHandler(u.FieldPropsEnum.onDrop,e,(0,s.action)((()=>{const t=e[0];let i=null;(0,o.isEvent)(t)&&(0,o.hasFiles)(t)&&(i=a.default.map(t.target.files)),this.files=[...a.default.map(this.files),...i||e]})))}),Object.defineProperty(this,"onKeyDown",{enumerable:!0,configurable:!0,writable:!0,value:(...e)=>this.execHandler(u.FieldPropsEnum.onKeyDown,e)}),Object.defineProperty(this,"onKeyUp",{enumerable:!0,configurable:!0,writable:!0,value:(...e)=>this.execHandler(u.FieldPropsEnum.onKeyUp,e)}),(0,s.makeObservable)(this,{$options:s.observable,$value:s.observable,$type:s.observable,$label:s.observable,$placeholder:s.observable,$default:s.observable,$initial:s.observable,$bindings:s.observable,$extra:s.observable,$related:s.observable,$validatedWith:s.observable,$validators:s.observable,$rules:s.observable,$disabled:s.observable,$focused:s.observable,$blurred:s.observable,$deleted:s.observable,showError:s.observable,errorSync:s.observable,errorAsync:s.observable,validationErrorStack:s.observable,validationFunctionsData:s.observable,validationAsyncData:s.observable,files:s.observable,autoFocus:s.computed,inputMode:s.computed,ref:s.computed,checkValidationErrors:s.computed,checked:s.computed,value:s.computed,initial:s.computed,default:s.computed,actionRunning:s.computed,type:s.computed,label:s.computed,placeholder:s.computed,extra:s.computed,options:s.computed,bindings:s.computed,related:s.computed,disabled:s.computed,rules:s.computed,validators:s.computed,validatedValue:s.computed,error:s.computed,hasError:s.computed,isValid:s.computed,isDefault:s.computed,isDirty:s.computed,isPristine:s.computed,isEmpty:s.computed,blurred:s.computed,touched:s.computed,deleted:s.computed,setupField:s.action,initNestedFields:s.action,invalidate:s.action,setValidationAsyncData:s.action,resetValidation:s.action,clear:s.action,reset:s.action,focus:s.action,blur:s.action,showErrors:s.action,update:s.action}),this.state=p,this.setupField(e,t,i,r,l,n),this.initNestedFields(r,n),this.incremental=this.hasIncrementalKeys,this.debouncedValidation=a.default.debounce(this.validate,this.state.options.get(d.OptionsEnum.validationDebounceWait,this),this.state.options.get(d.OptionsEnum.validationDebounceOptions,this)),this.observeValidationOnBlur(),this.observeValidationOnChange(),this.initMOBXEvent(u.FieldPropsEnum.observers),this.initMOBXEvent(u.FieldPropsEnum.interceptors),(0,s.runInAction)((()=>{var e;return Object.assign(this.$hooks,null===(e=this.hooks)||void 0===e?void 0:e.apply(this,[this]))})),(0,s.runInAction)((()=>{var e;return Object.assign(this.$handlers,null===(e=this.handlers)||void 0===e?void 0:e.apply(this,[this]))})),this.execHook(u.FieldPropsEnum.onInit),(0,s.autorun)((()=>this.changed&&this.execHook(u.FieldPropsEnum.onChange)))}get checkValidationErrors(){var e;return!1===(null===(e=this.validationAsyncData)||void 0===e?void 0:e.valid)&&!a.default.isEmpty(this.validationAsyncData)||!a.default.isEmpty(this.validationErrorStack)||a.default.isString(this.errorAsync)||a.default.isString(this.errorSync)}set value(e){a.default.isString(e)&&this.state.options.get(d.OptionsEnum.autoTrimValue,this)&&(e=e.trim()),this.$value!==e&&(this.handleSetNumberValue(e)||(this.$value=this.$converter(e),this.$changed++,this.actionRunning||this.state.form.$changed++))}handleSetNumberValue(e){return!!this.state.options.get(d.OptionsEnum.autoParseNumbers,this)&&((a.default.isNumber(this.$initial)||"number"==this.type)&&new RegExp("^-?\\d+(,\\d+)*(\\.\\d+([eE]\\d+)?)?$","g").exec(e)?(this.$value=this.$converter(a.default.toNumber(e)),this.$changed++,this.actionRunning||this.state.form.$changed++,!0):void 0)}get actionRunning(){return this.submitting||this.clearing||this.resetting}get checked(){return"checkbox"===this.type?this.value:void 0}get value(){return"function"!=typeof this._value||this.hasNestedFields?this.getComputedProp(u.FieldPropsEnum.value):c(this,u.FieldPropsEnum.value)}get initial(){return this.$initial?(0,s.toJS)(this.$initial):this.getComputedProp(u.FieldPropsEnum.initial)}get default(){return this.$default?(0,s.toJS)(this.$default):this.getComputedProp(u.FieldPropsEnum.default)}set initial(e){this.$initial=e}set default(e){this.$default=e}get nullable(){return c(this,u.FieldPropsEnum.nullable)}get autoComplete(){return c(this,u.FieldPropsEnum.autoComplete)}get ref(){return c(this,u.FieldPropsEnum.ref)}get extra(){return c(this,u.FieldPropsEnum.extra)}get autoFocus(){return c(this,u.FieldPropsEnum.autoFocus)}get inputMode(){return c(this,u.FieldPropsEnum.inputMode)}get type(){return c(this,u.FieldPropsEnum.type)}get label(){return c(this,u.FieldPropsEnum.label)}get placeholder(){return c(this,u.FieldPropsEnum.placeholder)}get options(){return c(this,u.FieldPropsEnum.options)}get bindings(){return c(this,u.FieldPropsEnum.bindings)}get related(){return c(this,u.FieldPropsEnum.related)}get disabled(){return c(this,u.FieldPropsEnum.disabled)}get rules(){return c(this,u.FieldPropsEnum.rules)}get validators(){return c(this,u.FieldPropsEnum.validators)}get validatedWith(){return c(this,u.FieldPropsEnum.validatedWith)}get validatedValue(){return(0,n.parseCheckOutput)(this,this.validatedWith)}get error(){return!1===this.showError?null:this.errorAsync||this.errorSync||null}get hasError(){return this.checkValidationErrors||this.check(u.FieldPropsEnum.hasError,!0)}get isValid(){return!this.checkValidationErrors&&this.check(u.FieldPropsEnum.isValid,!0)}get isDefault(){return!a.default.isNil(this.default)&&a.default.isEqual(this.default,this.value)}get isDirty(){const e=this.changed?this.value:this.initial;return!a.default.isEqual(this.initial,e)}get isPristine(){const e=this.changed?this.value:this.initial;return a.default.isEqual(this.initial,e)}get isEmpty(){return this.hasNestedFields?this.check(u.FieldPropsEnum.isEmpty,!0):a.default.isBoolean(this.value)?!!this.$value:!a.default.isNumber(this.value)&&!a.default.isDate(this.value)&&!a.default.isNull(this.value)&&a.default.isEmpty(this.value)}get focused(){return this.hasNestedFields?this.check(u.FieldPropsEnum.focused,!0):this.$focused}get blurred(){return this.hasNestedFields?this.check(u.FieldPropsEnum.blurred,!0):this.$blurred}get touched(){return this.hasNestedFields?this.check(u.FieldPropsEnum.touched,!0):this.$touched}get deleted(){return this.hasNestedFields?this.check(u.FieldPropsEnum.deleted,!0):this.$deleted}setupField(e,t,i,r,s,l){var u;this.key=e,this.path=t,this.id=null===(u=this.state.options.get(d.OptionsEnum.uniqueId))||void 0===u?void 0:u.apply(this,[this]);const c=this.state.options.get(d.OptionsEnum.fallbackValue,this),v=this.state.options.get(d.OptionsEnum.applyInputConverterOnInit,this),m=this.state.struct(),g=(0,o.pathToStruct)(this.path),y=(0,o.isArrayFromStruct)(m,g),{$type:P,$input:E,$output:O,$converter:$,$converters:F,$computed:w}=s;if(a.default.isPlainObject(r)){const{type:t,input:i,output:d,converter:u,converters:m,computed:g}=r;this.name=a.default.toString(r.name||e),this.$type=P||t||"text",this.$converter=(0,o.$try)($,F,u,m,this.$converter),this.$input=(0,o.$try)(E,i,this.$input),this.$output=(0,o.$try)(O,d,this.$output);const k=(0,n.parseInput)(v?this.$input:e=>e,{fallbackValueOption:c,isEmptyArray:y,type:this.type,unified:g||r.value,separated:w||s.$value,fallback:s.$initial});return this._value=h(k),this.$value="function"==typeof this._value?p(this,k):k,this.$initial=(0,n.parseInput)((e=>e),{fallbackValueOption:c,isEmptyArray:y,type:this.type,unified:r.initial,separated:s.$initial,fallback:this.$value}),this.$default=f(this,r,s,l,{fallbackValueOption:c,isEmptyArray:y}),void b(this,s,r)}this.name=a.default.toString(e),this.$type=P||"text",this.$converter=(0,o.$try)($,F,this.$converter),this.$input=(0,o.$try)(E,this.$input),this.$output=(0,o.$try)(O,this.$output);const k=(0,n.parseInput)(v?this.$input:e=>e,{fallbackValueOption:c,isEmptyArray:y,type:this.type,unified:w||r,separated:w||s.$value});this._value=h(k),this.$value="function"==typeof this._value?p(this,k):k,this.$initial=(0,n.parseInput)((e=>e),{fallbackValueOption:c,isEmptyArray:y,type:this.type,unified:r,separated:s.$initial,fallback:this.$value}),this.$default=f(this,r,s,l,{fallbackValueOption:c,isEmptyArray:y}),b(this,s,r)}getComputedProp(e){if(this.incremental||this.hasNestedFields)return e===u.FieldPropsEnum.value?this.get(e,!1):(0,s.untracked)((()=>this.get(e,!1)));const t=this[`$${e}`];return Array.isArray(t)||(0,s.isObservableArray)(t)?[].slice.call(t):(0,s.toJS)(t)}initNestedFields(e,t){const i=a.default.isNil(e)?null:e.fields;Array.isArray(i)&&!a.default.isEmpty(i)&&(this.hasInitialNestedFields=!0),this.initFields({fields:i},t),!t&&Array.isArray(i)&&a.default.isEmpty(i)&&Array.isArray(this.value)&&!a.default.isEmpty(this.value)&&(this.hasInitialNestedFields=!0,this.initFields({fields:i,values:this.value},t))}invalidate(e,t=!0,i=!1){return!0===i?(this.errorAsync=e,void this.showErrors(!0,t)):Array.isArray(e)?(this.validationErrorStack=e,void this.showErrors(!0,t)):(this.validationErrorStack.unshift(e),void this.showErrors(!0,t))}setValidationAsyncData(e=!1,t=""){this.validationAsyncData={valid:e,message:t}}resetValidation(e=!1){this.showError=!1,this.errorSync=null,this.errorAsync=null,this.validationAsyncData=void 0,this.validationFunctionsData=[],this.validationErrorStack=[],Promise.resolve().then((0,s.action)((()=>{this.$resetting=!1,this.$clearing=!1}))),e&&this.each((t=>t.resetValidation(e)))}clear(e=!0,t=!0){t&&this.execHook(u.FieldPropsEnum.onClear),this.$clearing=!0,this.$touched=!1,this.$blurred=!1,this.$changed=0,this.files=void 0,this.$value=(0,n.defaultValue)({fallbackValueOption:this.state.options.get(d.OptionsEnum.fallbackValue),value:this.$value,nullable:this.$nullable,type:this.type}),e&&this.each((t=>t.clear(e))),this.state.options.get(d.OptionsEnum.validateOnClear,this)?this.validate({showErrors:this.state.options.get(d.OptionsEnum.showErrorsOnClear,this)}):this.resetValidation(e)}reset(e=!0,t=!0){t&&this.execHook(u.FieldPropsEnum.onReset),this.$resetting=!0,this.$touched=!1,this.$blurred=!1,this.$changed=0,this.files=void 0;const i=this.$default!==this.$initial;i&&(this.value=this.$default),i||(this.value=this.$initial),e&&this.each((t=>t.reset(e))),this.state.options.get(d.OptionsEnum.validateOnReset,this)?this.validate({showErrors:this.state.options.get(d.OptionsEnum.showErrorsOnReset,this)}):this.resetValidation(e)}focus(){this.ref&&!this.focused&&this.ref.focus(),this.$focused=!0,this.$touched=!0}blur(){this.ref&&this.focused&&this.ref.blur(),this.$focused=!1,this.$blurred=!0}trim(){a.default.isString(this.value)&&(this.$value=this.value.trim())}showErrors(e=!0,t=!0){var i,r;this.showError=e,this.errorSync=a.default.head(this.validationErrorStack)||null,this.errorAsync=!1===(null===(i=this.validationAsyncData)||void 0===i?void 0:i.valid)?null===(r=this.validationAsyncData)||void 0===r?void 0:r.message:null,t&&this.each((i=>i.showErrors(e,t)))}observeValidationOnBlur(){const e=this.state.options;e.get(d.OptionsEnum.validateOnBlur,this)&&(this.disposeValidationOnBlur=(0,s.observe)(this,"$focused",(t=>!1===t.newValue&&this.debouncedValidation({showErrors:e.get(d.OptionsEnum.showErrorsOnBlur,this)}))))}observeValidationOnChange(){const e=this.state.options;e.get(d.OptionsEnum.validateOnChange,this)?this.disposeValidationOnChange=(0,s.observe)(this,"$value",(()=>!this.actionRunning&&this.debouncedValidation({showErrors:e.get(d.OptionsEnum.showErrorsOnChange,this)}))):(e.get(d.OptionsEnum.validateOnChangeAfterInitialBlur,this)||e.get(d.OptionsEnum.validateOnChangeAfterSubmit,this))&&(this.disposeValidationOnChange=(0,s.observe)(this,"$value",(()=>!this.actionRunning&&(e.get(d.OptionsEnum.validateOnChangeAfterInitialBlur,this)&&this.blurred||e.get(d.OptionsEnum.validateOnChangeAfterSubmit,this)&&this.state.form.submitted)&&this.debouncedValidation({showErrors:e.get(d.OptionsEnum.showErrorsOnChange,this)}))))}initMOBXEvent(e){if(!Array.isArray(this[`$${e}`]))return;let t;e===u.FieldPropsEnum.observers&&(t=this.observe),e===u.FieldPropsEnum.interceptors&&(t=this.intercept),this[`$${e}`].map((e=>t(a.default.omit(e,u.FieldPropsEnum.path))))}bind(e={}){return Object.assign(Object.assign({},this.state.bindings.load(this,this.bindings,e)),{ref:e=>this.$ref=e})}update(e){if(!a.default.isPlainObject(e))throw new Error("The update() method accepts only plain objects.");const t=this.state.options.get(d.OptionsEnum.fallback,this),i=this.state.options.get(d.OptionsEnum.applyInputConverterOnUpdate,this),r=this.state.struct().findIndex((e=>e.startsWith(this.path.replace(/\.\d+\./,"[].")+"[]")));!t&&0===this.fields.size&&r<0?this.value=(0,n.parseInput)(i?this.$input:e=>e,{fallbackValueOption:this.state.options.get(d.OptionsEnum.fallbackValue,this),separated:e}):super.update(e)}}t.default=v},338:function(e,t,i){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(259),a=r(i(479)),l=r(i(311)),o=r(i(265)),n=r(i(107)),d=r(i(506)),u=i(561),p=i(93);class h extends l.default{constructor(e={},{name:t="",options:i={},plugins:r={},bindings:l={},hooks:d={},handlers:h={}}={}){super(),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"path",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"validator",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"debouncedValidation",{enumerable:!0,configurable:!0,writable:!0,value:null}),(0,s.makeObservable)(this,{fields:s.observable,validatedValues:s.computed,error:s.computed,hasError:s.computed,isValid:s.computed,isPristine:s.computed,isDirty:s.computed,isDefault:s.computed,isEmpty:s.computed,focused:s.computed,touched:s.computed,disabled:s.computed,invalidate:s.action,clear:s.action,reset:s.action,resetValidation:s.action}),this.name=t,(0,s.runInAction)((()=>this.$hooks=d)),(0,s.runInAction)((()=>this.$handlers=h));const c=a.default.each({setup:e,options:i,plugins:r,bindings:l},((e,t)=>"function"==typeof this[t]?a.default.merge(e,this[t].apply(this,[this])):e));(0,s.runInAction)((()=>{var e;return Object.assign(this.$hooks,null===(e=this.hooks)||void 0===e?void 0:e.apply(this,[this]))})),(0,s.runInAction)((()=>{var e;return Object.assign(this.$handlers,null===(e=this.handlers)||void 0===e?void 0:e.apply(this,[this]))})),this.state=new n.default({form:this,initial:c.setup,options:c.options,bindings:c.bindings}),this.validator=new o.default({form:this,plugins:c.plugins}),this.initFields(c.setup),this.debouncedValidation=a.default.debounce(this.validate,this.state.options.get(p.OptionsEnum.validationDebounceWait),this.state.options.get(p.OptionsEnum.validationDebounceOptions)),this.state.options.get(p.OptionsEnum.validateOnInit)&&this.validator.validate({showErrors:this.state.options.get(p.OptionsEnum.showErrorsOnInit)}),this.execHook(u.FieldPropsEnum.onInit),(0,s.autorun)((()=>this.$changed&&this.execHook(u.FieldPropsEnum.onChange)))}get validatedValues(){const e={};return this.each((t=>e[t.path]=t.validatedValue)),e}get error(){return this.validator.error}get hasError(){return!!this.validator.error||this.check(u.FieldPropsEnum.hasError,!0)}get isValid(){return!this.validator.error&&this.check(u.FieldPropsEnum.isValid,!0)}get isPristine(){return this.check(u.FieldPropsEnum.isPristine,!0)}get isDirty(){return this.check(u.FieldPropsEnum.isDirty,!0)}get isDefault(){return this.check(u.FieldPropsEnum.isDefault,!0)}get isEmpty(){return this.check(u.FieldPropsEnum.isEmpty,!0)}get focused(){return this.check(u.FieldPropsEnum.focused,!0)}get touched(){return this.check(u.FieldPropsEnum.touched,!0)}get disabled(){return this.check(u.FieldPropsEnum.disabled,!0)}makeField(e,t=d.default){return new t(e)}invalidate(e=null,t=!0){this.debouncedValidation.cancel(),this.validator.error=e||this.state.options.get(p.OptionsEnum.defaultGenericError)||!0,t&&this.each((e=>e.debouncedValidation.cancel()))}showErrors(e=!0){this.each((t=>t.showErrors(e)))}resetValidation(e=!0){this.validator.error=null,e&&this.each((t=>t.resetValidation(e)))}clear(e=!0,t=!0){t&&this.execHook(u.FieldPropsEnum.onClear),this.$touched=!1,this.$changed=0,e&&this.each((t=>t.clear(e)))}reset(e=!0,t=!0){t&&this.execHook(u.FieldPropsEnum.onReset),this.$touched=!1,this.$changed=0,e&&this.each((t=>t.reset(e)))}}t.default=h},666:function(e,t,i){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(259),a=r(i(479)),l=i(593);t.default=class{constructor(){Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:{uniqueId:l.uniqueId,fallback:!0,fallbackValue:"",defaultGenericError:null,submitThrowsError:!0,showErrorsOnInit:!1,showErrorsOnSubmit:!0,showErrorsOnBlur:!0,showErrorsOnChange:!0,showErrorsOnClear:!1,showErrorsOnReset:!0,validateOnInit:!0,validateOnSubmit:!0,validateOnBlur:!0,validateOnChange:!1,validateOnChangeAfterInitialBlur:!1,validateOnChangeAfterSubmit:!1,validateOnClear:!1,validateOnReset:!1,validateDisabledFields:!1,validateDeletedFields:!1,validatePristineFields:!0,strictSet:!1,strictUpdate:!1,strictDelete:!0,strictSelect:!0,softDelete:!1,retrieveOnlyDirtyFieldsValues:!1,retrieveOnlyEnabledFieldsValues:!1,retrieveOnlyEnabledFieldsErrors:!1,retrieveNullifiedEmptyStrings:!1,autoTrimValue:!1,autoParseNumbers:!1,removeNullishValuesInArrays:!1,preserveDeletedFieldsValues:!1,validationDebounceWait:250,validationDebounceOptions:{leading:!1,trailing:!0},stopValidationOnError:!1,validationPluginsOrder:void 0,resetValidationBeforeValidate:!0,validateTrimmedValue:!1,applyInputConverterOnInit:!0,applyInputConverterOnSet:!0,applyInputConverterOnUpdate:!0}}),(0,s.makeObservable)(this,{options:s.observable,set:s.action})}get(e,t=null){return a.default.has(t,"path")&&a.default.has(t.$options,e)?t.$options[e]:e?a.default.get(this.options,e):(0,s.toJS)(this.options)}set(e){s.set?(0,s.set)(this.options,e):(0,s.extendObservable)(this.options,e)}}},107:function(e,t,i){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(259),a=r(i(479)),l=r(i(666)),o=r(i(169)),n=i(593),d=i(138),u=i(93);t.default=class{constructor({form:e,initial:t,options:i,bindings:r}){Object.defineProperty(this,"mode",{enumerable:!0,configurable:!0,writable:!0,value:d.RuntimeMode.mixed}),Object.defineProperty(this,"strict",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"form",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"bindings",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$extra",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"$struct",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"disposers",{enumerable:!0,configurable:!0,writable:!0,value:{interceptor:{},observer:{}}}),Object.defineProperty(this,"initial",{enumerable:!0,configurable:!0,writable:!0,value:{props:{},fields:{}}}),Object.defineProperty(this,"current",{enumerable:!0,configurable:!0,writable:!0,value:{props:{},fields:{}}}),this.set("form",e),this.initProps(t),this.options=new l.default,this.options.set(i),this.bindings=new o.default,this.bindings.register(r),this.observeOptions()}initProps(e={}){const t=a.default.pick(e,[...n.props.editable,...n.props.separated,...n.props.validation,...n.props.functions,...n.props.handlers]);this.set("initial","props",t);const i=(0,n.hasUnifiedProps)(e);if(((0,n.hasSeparatedProps)(e)||(0,n.isArrayOfStrings)(e.fields))&&!i){const t=(0,n.$try)(e.struct,e.fields);return this.struct(t),this.strict=!0,void(this.mode=d.RuntimeMode.separated)}this.struct(e.struct),this.mode=d.RuntimeMode.unified}struct(e=null){return e&&(this.$struct=e),this.$struct}get(e,t){return this[e][t]}set(e,t,i=null){"form"===e&&(this.form=t),"initial"===e&&(Object.assign(this.initial[t],i),Object.assign(this.current[t],i)),"current"===e&&Object.assign(this.current[t],i)}extra(e=null){return a.default.isString(e)?a.default.get(this.$extra,e):null===e?this.$extra:(this.$extra=e,null)}observeOptions(){(0,s.observe)(this.options.options,(0,n.checkObserve)([{type:"update",key:u.OptionsEnum.validateOnChange,to:!0,exec:()=>this.form.each((e=>e.observeValidationOnChange()))},{type:"update",key:u.OptionsEnum.validateOnChange,to:!1,exec:()=>this.form.each((e=>e.disposeValidationOnChange()))},{type:"update",key:u.OptionsEnum.validateOnBlur,to:!0,exec:()=>this.form.each((e=>e.observeValidationOnBlur()))},{type:"update",key:u.OptionsEnum.validateOnBlur,to:!1,exec:()=>this.form.each((e=>e.disposeValidationOnBlur()))}]))}}},265:function(e,t,i){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=i(259),a=r(i(479)),l=i(593),o=i(93);t.default=class{constructor(e){Object.defineProperty(this,"promises",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"form",{enumerable:!0,configurable:!0,wr