mobx-react-form
Version:
Reactive MobX Form State Management
2 lines • 68.2 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:{valid:!0,message:null}}),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(){return!this.validationAsyncData.valid||!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=null){this.validationAsyncData={valid:e,message:t}}resetValidation(e=!1){this.showError=!1,this.errorSync=null,this.errorAsync=null,this.validationAsyncData={valid:!0,message:null},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){this.showError=e,this.errorSync=a.default.head(this.validationErrorStack)||null,this.errorAsync=this.validationAsyncData.valid?null:this.validationAsyncData.message,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,writable:!0,value:null}),Object.defineProperty(this,"drivers",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,"plugins",{enumerable:!0,configurable:!0,writable:!0,value:{vjf:void 0,dvr:void 0,svk:void 0,yup:void 0,zod:void 0,joi:void 0}}),Object.defineProperty(this,"error",{enumerable:!0,configurable:!0,writable:!0,value:null}),(0,s.makeObservable)(this,{error:s.observable,validate:s.action,validateField:s.action}),this.form=e.form,Object.assign(this.plugins,e.plugins),this.initDrivers()}initDrivers(){a.default.map(this.plugins,((e,t)=>this.drivers[t]=e&&e.class&&new e.class({config:e.config,state:this.form.state,promises:this.promises})))}validate(e,t){const i=(0,l.$try)(null==e?void 0:e.path,e),r=(0,l.$try)(null==e?void 0:e.field,this.form.select(i,null,!1),this.form),o=(0,l.$try)(null==e?void 0:e.related,null==t?void 0:t.related,!0),n=(0,l.$try)(null==e?void 0:e.showErrors,null==t?void 0:t.showErrors,!1);return r.$validating=!0,r.$validated+=1,this.error=null,new Promise((e=>{(r.path||a.default.isString(i))&&this.validateField({field:r,showErrors:n,related:o,path:i}),r.each((e=>this.validateField({path:e.path,field:e,showErrors:n,related:o}))),e(Promise.all(this.promises))})).then((0,s.action)((()=>{r.$validating=!1,r.$clearing=!1,r.$resetting=!1}))).catch((0,s.action)((e=>{throw r.$validating=!1,r.$clearing=!1,r.$resetting=!1,e}))).then((()=>r))}validateField({showErrors:e=!1,related:t=!1,field:i=null,path:r}){const s=i||this.form.select(r),{options:l}=this.form.state;if(!s.path)throw new Error("Validation Error: Invalid Field Instance");if(s.deleted&&!l.get(o.OptionsEnum.validateDeletedFields,s))return;if(s.disabled&&!l.get(o.OptionsEnum.validateDisabledFields,s))return;if(s.isPristine&&!l.get(o.OptionsEnum.validatePristineFields,s))return;l.get(o.OptionsEnum.resetValidationBeforeValidate,s)&&s.resetValidation(),l.get(o.OptionsEnum.validateTrimmedValue,s)&&s.trim();const n=l.get(o.OptionsEnum.stopValidationOnError,s),d=l.get(o.OptionsEnum.validationPluginsOrder,s),u=d?d.map((e=>this.drivers[e])):this.drivers;a.default.each(u,(e=>{e&&e.validate(s),!n||s.hasError})),s.showErrors(e,!1),t&&this.validateRelatedFields(s,e)}validateRelatedFields(e,t){e.related&&e.related.length&&e.related.map((e=>this.validateField({related:!1,showErrors:t,path:e})))}}},607:function(e,t,i){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Field=t.Form=void 0;const s=r(i(338));t.Form=s.default;const a=r(i(506));t.Field=a.default,t.default=s.default},561:(e,t)=>{var i,r,s,a;Object.defineProperty(t,"__esModule",{value:!0}),t.SeparatedPropsMode=t.FieldPropsOccurrence=t.AllowedFieldPropsTypes=t.FieldPropsEnum=void 0,(a=t.FieldPropsEnum||(t.FieldPropsEnum={})).key="key",a.id="id",a.path="path",a.name="name",a.fields="fields",a.ref="ref",a.type="type",a.computed="computed",a.value="value",a.initial="initial",a.default="default",a.checked="checked",a.label="label",a.placeholder="placeholder",a.error="error",a.validatedWith="validatedWith",a.validators="validators",a.rules="rules",a.related="related",a.options="options",a.extra="extra",a.bindings="bindings",a.hooks="hooks",a.handlers="handlers",a.converter="converter",a.input="input",a.output="output",a.interceptors="interceptors",a.observers="observers",a.disabled="disabled",a.deleted="deleted",a.blurred="blurred",a.validating="validating",a.submitting="submitting",a.clearing="clearing",a.resetting="resetting",a.changed="changed",a.touched="touched",a.focused="focused",a.isEmpty="isEmpty",a.isDefault="isDefault",a.isPristine="isPristine",a.isDirty="isDirty",a.isValid="isValid",a.hasError="hasError",a.onInit="onInit",a.onSync="onSync",a.onChange="onChange",a.onBlur="onBlur",a.onFocus="onFocus",a.onToggle="onToggle",a.onDrop="onDrop",a.onSubmit="onSubmit",a.onReset="onReset",a.onClear="onClear",a.onAdd="onAdd",a.onDel="onDel",a.autoFocus="autoFocus",a.inputMode="inputMode",a.onKeyDown="onKeyDown",a.onKeyUp="onKeyUp",a.class="class",a.nullable="nullable",a.autoComplete="autoComplete",(s=t.AllowedFieldPropsTypes||(t.AllowedFieldPropsTypes={})).computed="computed",s.observable="observable",s.editable="editable",s.all="all",(r=t.FieldPropsOccurrence||(t.FieldPropsOccurrence={})).some="some",r.every="every",(i=t.SeparatedPropsMode||(t.SeparatedPropsMode={})).computed="computed",i.values="values",i.labels="labels",i.placeholders="placeholders",i.defaults="defaults",i.initials="initials",i.disabled="disabled",i.deleted="deleted",i.types="types",i.related="related",i.rules="rules",i.options="options",i.bindings="bindings",i.extra="extra",i.hooks="hooks",i.handlers="handlers",i.validatedWith="validatedWith",i.validators="validators",i.observers="observers",i.interceptors="interceptors",i.converters="converters",i.input="input",i.output="output",i.autoFocus="autoFocus",i.inputMode="inputMode",i.refs="refs",i.classes="classes",i.nullable="nullable",i.autoComplete="autoComplete"},93:(e,t)=>{var i;Object.defineProperty(t,"__esModule",{value:!0}),t.OptionsEnum=void 0,(i=t.OptionsEnum||(t.OptionsEnum={})).uniqueId="uniqueId",i.fallback="fallback",i.fallbackValue="fallbackValue",i.defaultGenericError="defaultGenericError",i.submitThrowsError="submitThrowsError",i.showErrorsOnInit="showErrorsOnInit",i.showErrorsOnSubmit="showErrorsOnSubmit",i.showErrorsOnBlur="showErrorsOnBlur",i.showErrorsOnChange="showErrorsOnChange",i.showErrorsOnClear="showErrorsOnClear",i.showErrorsOnReset="showErrorsOnReset",i.validateOnInit="validateOnInit",i.validateOnSubmit="validateOnSubmit",i.validateOnBlur="validateOnBlur",i.validateOnChange="validateOnChange",i.validateOnChangeAfterInitialBlur="validateOnChangeAfterInitialBlur",i.validateOnChangeAfterSubmit="validateOnChangeAfterSubmit",i.validateDisabledFields="validateDisabledFields",i.validateDeletedFields="validateDeletedFields",i.validatePristineFields="validatePristineFields",i.validateTrimmedValue="validateTrimmedValue",i.validateOnClear="validateOnClear",i.validateOnReset="validateOnReset",i.strictSet="strictSet",i.strictUpdate="strictUpdate",i.strictDelete="strictDelete",i.strictSelect="strictSelect",i.softDelete="softDelete",i.retrieveOnlyDirtyFieldsValues="retrieveOnlyDirtyFieldsValues",i.retrieveOnlyEnabledFieldsValues="retrieveOnlyEnabledFieldsValues",i.retrieveOnlyEnabledFieldsErrors="retrieveOnlyEnabledFieldsErrors",i.retrieveNullifiedEmptyStrings="retrieveNullifiedEmptyStrings",i.removeNullishValuesInArrays="removeNullishValuesInArrays",i.preserveDeletedFieldsValues="preserveDeletedFieldsValues",i.autoTrimValue="autoTrimValue",i.autoParseNumbers="autoParseNumbers",i.validationDebounceWait="validationDebounceWait",i.validationDebounceOptions="validationDebounceOptions",i.stopValidationOnError="stopValidationOnError",i.validationPluginsOrder="validationPluginsOrder",i.resetValidationBeforeValidate="resetValidationBeforeValidate",i.applyInputConverterOnInit="applyInputConverterOnInit",i.applyInputConverterOnSet="applyInputConverterOnSet",i.applyInputConverterOnUpdate="applyInputConverterOnUpdate"},138:(e,t)=>{var i;Object.defineProperty(t,"__esModule",{value:!0}),t.RuntimeMode=void 0,(i=t.RuntimeMode||(t.RuntimeMode={})).mixed="mixed",i.unified="unified",i.separated="separated"},951:(e,t)=>{var i;Object.defineProperty(t,"__esModule",{value:!0}),t.ValidationHooks=void 0,(i=t.ValidationHooks||(t.ValidationHooks={})).onSuccess="onSuccess",i.onError="onError"},215:function(e,t,i){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.pathToFieldsTree=t.prepareFieldsData=t.handleFieldsArrayOfStrings=t.handleFieldsNested=t.mergeSchemaDefaults=t.parseCheckOutput=t.parseCheckArray=t.parseArrayProp=t.parsePath=t.parseInput=t.defaultValue=void 0;const s=r(i(479)),a=i(561),l=i(593),o=({type:e,value:t,nullable:i,isEmptyArray:r=!1,fallbackValueOption:a=""})=>Array.isArray(t)||r?[]:i||s.default.isDate(t)||"date"===e||"datetime-local"===e?null:s.default.isNumber(t)||"number"===e?0:!s.default.isBoolean(t)&&"checkbox"!==e&&(s.default.isString(t)||"file"===e?"":a);t.defaultValue=o,t.parsePath=e=>{let t=e;return t=s.default.replace(t,new RegExp("\\[","g"),"."),t=s.default.replace(t,new RegExp("\\]","g"),""),t},t.parseInput=(e,{fallbackValueOption:t="",type:i,isEmptyArray:r,separated:s,unified:a,fallback:n})=>e((0,l.$try)(s,a,n,o({fallbackValueOption:t,type:i,isEmptyArray:r})));const n=(e,t,i)=>{const r=s.default.values(e),l=[a.FieldPropsEnum.value,a.FieldPropsEnum.initial,a.FieldPropsEnum.default].includes(t);return i&&l?s.default.without(r,null,void 0,""):r};t.parseArrayProp=n,t.parseCheckArray=(e,t,i,r)=>e.incremental&&s.default.isObject(t)&&s.default.isEmpty(t)?[]:e.hasIncrementalKeys?n(t,i,r):t,t.parseCheckOutput=(e,t,i=!1)=>{if(t===a.FieldPropsEnum.value||t.startsWith("value.")){const r=e.$output?e.$output(e[a.FieldPropsEnum.value]):e[a.FieldPropsEnum.value],l=t.startsWith("value.")?s.default.get(r,t.substring(6)):r;return s.default.isString(l)&&s.default.isEmpty(l)&&i?null:l}return e[t]};const d=(e,t=!1)=>{let i=e;return(0,l.isArrayOfStrings)(i)&&(i=s.default.transform(i,((e,i)=>{const r=s.default.split(i,".");return r.length?s.default.merge(e,((e,t=!1)=>s.default.reduceRight(e,((i,r)=>{const a={};if(s.default.endsWith(r,"[]")){const e=t?[i]:[];return a[s.default.trimEnd(r,"[]")]=e,a}const l=e[e.indexOf(r)-1],o=s.default.endsWith(l,"[]")&&s.default.last(e)===r;return!t&&o||(a[r]=i),a}),{}))(r,t)):Object.assign(e,{[i]:""})}),{})),i};t.handleFieldsArrayOfStrings=d;const u=(e,t=!0)=>s.default.transform(e,((e,i,r)=>(0,l.allowNested)(i,t)?Object.assign(e,{[r]:{fields:(0,l.isEmptyArray)(i)?[]:u(i)}}):Object.assign(e,{[r]:i})),{});t.handleFieldsNested=u;t.mergeSchemaDefaults=(e,t)=>{if(t){const i=s.default.get(t.plugins,"svk.config.schema");s.default.isEmpty(e)&&i&&i.properties&&s.default.each(i.properties,((t,i)=>{s.default.set(e,i,{value:t.default,label:t.title})}))}return e},t.prepareFieldsData=(e,t=!0,i=!0)=>{let r=s.default.merge(d(e.fields,!1),d(e.struct,!1));return r=(e=>{let t=e;return(0,l.isArrayOfObjects)(t)&&(t=s.default.transform(t,((e,t)=>{if(!(0,l.hasUnifiedProps)({fields:{field:t}})||s.default.has(t,a.FieldPropsEnum.name))return Object.assign(e,{[t.name]:t})}),{})),t})(r),r=((e,t,i)=>{if(!s.default.has(t,a.SeparatedPropsMode.values))return e;let{values:r}=t;return(0,l.hasUnifiedProps)({fields:t.fields})&&(r=(e=>s.default.transform(e,((e,t,i)=>{return Object.assign(e,{[i]:{value:t,fields:(r=t,s.default.isPlainObject(r)?s.default.map(r,((e,t)=>({value:e,name:t}))):void 0)}});var r}),{}))(r)),s.default.merge(e,s.default.transform(r,((t,r,s)=>{Array.isArray(e[s])&&(t[s]=r),s in e||isNaN(Number(s))&&!i||(t[s]=r)}),{}))})(r,e,i),r=u(r,t),r},t.pathToFieldsTree=(e,t,i=0,r=!1)=>{const o=(0,l.pathToStruct)(t),n=s.default.filter(e,(e=>s.default.startsWith(e,o))),p=d(n,r),h=s.default.replace(o,new RegExp("\\[]","g"),`[${i}]`),c=u(s.default.get(p,h));return e.length&&e.filter((e=>e.startsWith(t+"[]"))).map((e=>e.substring((t+"[].").length))).filter((e=>e.endsWith("[]"))).map((e=>e.substring(0,e.length-2))).forEach((e=>{var t,i;const r=e.split(".");let s=null===(t=c[0])||void 0===t?void 0:t.fields;for(let e=0;e<r.length&&(s=null===(i=null==s?void 0:s[r[e]])||void 0===i?void 0:i[a.FieldPropsEnum.fields],s);e++);s&&delete s[0]})),c}},529:(e,t,i)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.props=void 0;const r=i(561);t.props={editable:[r.FieldPropsEnum.type,r.FieldPropsEnum.value,r.FieldPropsEnum.initial,r.FieldPropsEnum.default,r.FieldPropsEnum.label,r.FieldPropsEnum.placeholder,r.FieldPropsEnum.related,r.FieldPropsEnum.options,r.FieldPropsEnum.extra,r.FieldPropsEnum.bindings,r.FieldPropsEnum.hooks,r.FieldPropsEnum.handlers,r.FieldPropsEnum.deleted,r.FieldPropsEnum.disabled,r.FieldPropsEnum.autoFocus,r.FieldPropsEnum.inputMode,r.FieldPropsEnum.ref,r.FieldPropsEnum.nullable,r.FieldPropsEnum.autoComplete],handlers:[r.FieldPropsEnum.onChange,r.FieldPropsEnum.onToggle,r.FieldPropsEnum.onFocus,r.FieldPropsEnum.onBlur,r.FieldPropsEnum.onDrop,r.FieldPropsEnum.onSubmit,r.FieldPropsEnum.onReset,r.FieldPropsEnum.onClear,r.FieldPropsEnum.onAdd,r.FieldPropsEnum.onDel],computed:[r.FieldPropsEnum.error,r.FieldPropsEnum.hasError,r.FieldPropsEnum.isValid,r.FieldPropsEnum.isDirty,r.FieldPropsEnum.isPristine,r.FieldPropsEnum.isDefault,r.FieldPropsEnum.isEmpty,r.FieldPropsEnum.focused,r.FieldPropsEnum.touched,r.FieldPropsEnum.changed,r.FieldPropsEnum.validating,r.FieldPropsEnum.submitting,r.FieldPropsEnum.resetting,r.FieldPropsEnum.clearing,r.FieldPropsEnum.blurred,r.FieldPropsEnum.deleted,r.FieldPropsEnum.disabled],separated:[r.SeparatedPropsMode.computed,r.SeparatedPropsMode.values,r.SeparatedPropsMode.labels,r.SeparatedPropsMode.placeholders,r.SeparatedPropsMode.defaults,r.SeparatedPropsMode.initials,r.SeparatedPropsMode.disabled,r.SeparatedPropsMode.deleted,r.SeparatedPropsMode.types,r.SeparatedPropsMode.related,r.SeparatedPropsMode.rules,r.SeparatedPropsMode.options,r.SeparatedPropsMode.bindings,r.SeparatedPropsMode.extra,r.SeparatedPropsMode.hooks,r.SeparatedPropsMode.handlers,r.SeparatedPropsMode.validatedWith,r.SeparatedPropsMode.validators,r.SeparatedPropsMode.observers,r.SeparatedPropsMode.interceptors,r.SeparatedPropsMode.converters,r.SeparatedPropsMode.input,r.SeparatedPropsMode.output,r.SeparatedPropsMode.autoFocus,r.SeparatedPropsMode.inputMode,r.SeparatedPropsMode.refs,r.SeparatedPropsMode.classes,r.SeparatedPropsMode.nullable,r.SeparatedPropsMode.autoComplete],functions:[r.FieldPropsEnum.computed,r.FieldPropsEnum.observers,r.FieldPropsEnum.interceptors,r.FieldPropsEnum.converter,r.FieldPropsEnum.input,r.FieldPropsEnum.output],validation:[r.FieldPropsEnum.rules,r.FieldPropsEnum.validators,r.FieldPropsEnum.validatedWith],occurrences:{isDirty:r.FieldPropsOccurrence.some,isPristine:r.FieldPropsOccurrence.every,isDefault:r.FieldPropsOccurrence.every,isValid:r.FieldPropsOccurrence.every,isEmpty:r.FieldPropsOccurrence.every,hasError:r.FieldPropsOccurrence.some,focused:r.FieldPropsOccurrence.some,blurred:r.FieldPropsOccurrence.some,touched:r.FieldPropsOccurrence.some,deleted:r.FieldPropsOccurrence.every,disabled:r.FieldPropsOccurrence.every,clearing:r.FieldPropsOccurrence.every,resetting:r.FieldPropsOccurrence.every}}},593:function(e,t,i){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getObservableMapValues=t.getObservableMapKeys=t.$try=t.isBool=t.hasFiles=t.isEvent=t.uniqueId=t.maxKey=t.hasIntKeys=t.parseIntKeys=t.allowNested=t.hasSeparatedProps=t.hasUnifiedProps=t.isArrayFromStruct=t.pathToStruct=t.isArrayOfObjects=t.isEmptyArray=t.isArrayOfStrings=t.throwError=t.allowedProps=t.hasProps=t.checkPropOccurrence=t.checkObserve=t.props=void 0;const s=r(i(479)),a=i(259),l=i(561),o=i(529);Object.defineProperty(t,"props",{enumerable:!0,get:function(){return o.props}}),t.getObservableMapValues=e=>(0,a.values)(e);const n=e=>(0,a.keys)(e);t.getObservableMapKeys=n,t.checkObserve=e=>t=>e.map((e=>({key:t,to:i,type:r,exec:s})=>e.type===r&&e.name===t&&e.newValue===i&&s.apply(e,[e]))(t)),t.checkPropOccurrence=({type:e,data:t})=>{let i;switch(e){case l.FieldPropsOccurrence.some:i=e=>s.default.some(e,Boolean);break;case l.FieldPropsOccurrence.every:i=e=>s.default.every(e,Boolean);break;default:throw new Error("Occurrence not found for specified prop")}return i(t)};const d=(e,t)=>{let i;switch(e){case l.AllowedFieldPropsTypes.computed:i=o.props.computed;break;case l.AllowedFieldPropsTypes.observable:i=[l.FieldPropsEnum.fields,...o.props.computed,...o.props.editable];break;case l.AllowedFieldPropsTypes.editable:i=[...o.props.editable,...o.props.validation,...o.props.functions,...o.props.handlers];break;case l.AllowedFieldPropsTypes.all:i=[l.FieldPropsEnum.id,l.FieldPropsEnum.key,l.FieldPropsEnum.name,l.FieldPropsEnum.path,...o.props.computed,...o.props.editable,...o.props.validation,...o.props.functions,...o.props.handlers];break;default:i=null}return s.default.intersection(t,i).length>0};t.hasProps=d,t.allowedProps=(e,t)=>{if(!d(e,t))throw new Error(`The selected property is not allowed (${JSON.stringify(t)})`)},t.throwError=(e,t,i=null)=>{if(!s.default.isNil(t))return;const r=s.default.isNil(i)?"The selected field is not defined":i;throw new Error(`${r} (${e})`)},t.pathToStruct=e=>{let t;return t=s.default.replace(e,new RegExp("[.]\\d+($|.)","g"),"[]."),t=s.default.replace(t,"..","."),t=s.default.trim(t,"."),t},t.isArrayFromStruct=(e,t)=>!!p(e)&&(!!e.filter((e=>e.startsWith(t))).find((e=>"[]"===e.substring(t.length)))||s.default.endsWith(null==e?void 0:e.find((e=>e===t)),"[]"));const u=(e,t)=>s.default.some(t,s.default.partial(s.default.has,e));t.isEmptyArray=e=>s.default.isEmpty(e)&&Array.isArray(e);const p=e=>Array.isArray(e)&&s.default.every(e,s.default.isString);t.isArrayOfStrings=p,t.isArrayOfObjects=e=>Array.isArray(e)&&s.default.every(e,s.default.isPlainObject),t.hasUnifiedProps=({fields:e})=>!p({fields:e})&&d(l.AllowedFieldPropsTypes.editable,(e=>s.default.union(...s.default.map(s.default.values(e),(e=>s.default.keys(e)))))(e)),t.hasSeparatedProps=e=>u(e,o.props.separated)||u(e,o.props.validation),t.allowNested=(e,t)=>s.default.isObject(e)&&!s.default.isDate(e)&&!s.default.has(e,l.FieldPropsEnum.fields)&&!s.default.has(e,l.FieldPropsEnum.class)&&(!u(e,[...o.props.editable,...o.props.handlers,...o.props.validation,...o.props.functions])||t);const h=e=>s.default.map(n(e),s.default.ary(s.default.toNumber,1));t.parseIntKeys=h,t.hasIntKeys=e=>s.default.every(h(e),s.default.isInteger),t.maxKey=e=>{const t=s.default.max(h(e));return s.default.isUndefined(t)?0:t+1},t.uniqueId=e=>s.default.uniqueId([s.default.replace(e.path,new RegExp("\\.","g"),"-"),"--"].join("")),t.isEvent=e=>!s.default.isNil(e)&&"undefined"!=typeof Event&&(e instanceof Event||!s.default.isNil(e.target)),t.hasFiles=e=>e.target.files&&0!==e.target.files.length,t.isBool=(e,t)=>s.default.isBoolean(t)&&s.default.isBoolean(e.target.checked),t.$try=(...e)=>{for(const t of e)if(void 0!==t)return t}},479:t=>{t.exports=e},259:e=>{e.exports=t}},r={};return function e(t){var s=r[t];if(void 0!==s)return s.exports;var a=r[t]={exports:{}};return i[t].call(a.exports,a,a.exports,e),a.exports}(607)})()));
//# sourceMappingURL=MobxReactForm.umd.min.js.map