react-f0rm 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/devtools/index.cjs.js +20 -13
  2. package/dist/devtools/index.cjs.js.map +1 -1
  3. package/dist/devtools/index.d.ts +1 -1
  4. package/dist/devtools/index.mjs +20 -13
  5. package/dist/devtools/index.mjs.map +1 -1
  6. package/dist/{form-b9441d8c.cjs.js → form-B4r7INJ0.cjs.js} +10 -39
  7. package/dist/form-B4r7INJ0.cjs.js.map +1 -0
  8. package/dist/{form-61297bc0.d.ts → form-DeRFdFKE.d.ts} +2 -2
  9. package/dist/{form-94c70b4b.mjs → form-R1hDKjBm.mjs} +11 -40
  10. package/dist/form-R1hDKjBm.mjs.map +1 -0
  11. package/dist/index.cjs.js +20 -13
  12. package/dist/index.cjs.js.map +1 -1
  13. package/dist/index.d.ts +11 -8
  14. package/dist/index.mjs +21 -14
  15. package/dist/index.mjs.map +1 -1
  16. package/dist/index.umd.js +20 -13
  17. package/dist/index.umd.js.map +1 -1
  18. package/dist/index.umd.min.js +2 -2
  19. package/dist/index.umd.min.js.map +1 -1
  20. package/dist/resolvers/standard-schema.cjs.js +1 -1
  21. package/dist/resolvers/standard-schema.cjs.js.map +1 -1
  22. package/dist/resolvers/standard-schema.d.ts +2 -2
  23. package/dist/resolvers/standard-schema.mjs +1 -1
  24. package/dist/resolvers/standard-schema.mjs.map +1 -1
  25. package/dist/resolvers/yup.cjs.js +5 -7
  26. package/dist/resolvers/yup.cjs.js.map +1 -1
  27. package/dist/resolvers/yup.d.ts +2 -2
  28. package/dist/resolvers/yup.mjs +5 -7
  29. package/dist/resolvers/yup.mjs.map +1 -1
  30. package/dist/resolvers/zod.cjs.js +5 -7
  31. package/dist/resolvers/zod.cjs.js.map +1 -1
  32. package/dist/resolvers/zod.d.ts +2 -2
  33. package/dist/resolvers/zod.mjs +5 -7
  34. package/dist/resolvers/zod.mjs.map +1 -1
  35. package/dist/{validate-148fe167.d.ts → validate-B7S9EiRT.d.ts} +1 -1
  36. package/package.json +52 -51
  37. package/dist/form-94c70b4b.mjs.map +0 -1
  38. package/dist/form-b9441d8c.cjs.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * react-f0rm v0.4.0
2
+ * react-f0rm v0.4.1
3
3
  * Copyright (c) 2021-present wmzy <1256573276@qq.com>
4
4
  */
5
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define("react-f0rm",["exports","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["react-f0rm"]={},e.React)}(this,function(e,t){"use strict";function r(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,Object.freeze(t)}var n=r(t);function o(e,t,r){var n=function(e,t){var r=e.get(t);if(r)return r;var n=new Set;return e.set(t,n),n}(e,t);return n.add(r),function(){return n.delete(r)}}const u=new Map;function i(e){if(Array.isArray(e))return e;const t=u.get(e);if(t)return t;const r=function(e){const t=[];let r="";const n=()=>{t.push(r),r=""};for(let o=0;o<e.length;o++){const u=e[o];if("."===u)""!==r&&n();else if("["===u){""!==r&&n();const u=e[o+1];if('"'===u||"'"===u){const r=e.indexOf(u,o+2);if(-1===r)throw new TypeError(`Unterminated quote in path: ${e}`);if("]"!==e[r+1])throw new TypeError(`Expected "]" after quoted segment in path: ${e}`);t.push(e.slice(o+2,r)),o=r+1}else{const r=e.indexOf("]",o+1);if(-1===r)throw new TypeError(`Unterminated bracket in path: ${e}`);const n=e.slice(o+1,r);t.push(/^-?\d+$/.test(n)?Number(n):n),o=r}}else r+=u}""===r&&0!==t.length||n();return t}(e);return u.set(e,r),r}function s(e,t){return t.reduce((e,t)=>{if(null!=e)return e[t]},e)}function a(e,t){if(!t.length||null==e)return e;const[r,...n]=t;if(n.length){const o=a(e[r],n);return o===e[r]?e:c(e,t,o)}if(Array.isArray(e)){if(!(r in e))return e;const t=e.slice();return delete t[r],t}if("object"!=typeof e||!(r in e))return e;const o={...e};return delete o[r],o}function c(e,t,r){if(!t.length)return r;const[n,...o]=t;if("number"==typeof n){const t=Array.isArray(e)?e.slice():[];return t[n]=c(t[n],o,r),t}return{...e,[n]:c(e&&e[n],o,r)}}function l(e,t,r,n){if(!t.length)return r;let o=e,u=null,i="";for(let s=0;s<t.length;s++){const a=t[s];if(!n.has(o)){let t;t="number"==typeof a?Array.isArray(o)?o.slice():[]:{...o},n.add(t),0===s?e=t:u[i]=t,o=t}s===t.length-1?o[a]=r:(u=o,i=a,o=o[a])}return e}function f(e){return e&&"function"==typeof e.then}function d(e,t,r,n){return new Promise((u,i)=>{if(n())return void i();if(r())return void u();const s=o(e,t,()=>{if(n())return s(),void i();r()&&(s(),u())})})}function m(e){const t=i(e);return{value:t,key:JSON.stringify(t)}}const h=function(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),o=2;o<r;o++)n[o-2]=arguments[o];(e.get(t)||[]).forEach(function(e){return e.apply(void 0,n)})},y=Symbol("validation-outcome");function v(e){return{emitter:new Map,...e,mode:e?.mode??"onSubmit",reValidateMode:e?.reValidateMode??"onChange",disabled:e?.disabled??!1,initialValues:e?.initialValues??{},values:new Map,deleted:new Set,errors:new Map,touched:new Set,validators:new Map,validating:new Set,parsedValues:void 0,isSubmitting:!1,submitCount:0,isSubmitSuccessful:void 0}}function p(e){const{initialValues:t,parsedValues:r,values:n,deleted:o}=e,u=new Set;let i=r??t;for(const[e,t]of n)i=l(i,JSON.parse(e),t,u);for(const e of o)i=a(i,JSON.parse(e));return i}function g(e,t){return b(e,m(t))}function b({initialValues:e,parsedValues:t,values:r,deleted:n},o){return r.has(o.key)?r.get(o.key):n.has(o.key)?void 0:s(t??e,o.value)}function E(e,t,r,n){const{emitter:o,values:u,deleted:i}=e;u.set(t.key,r),$(i,t),P(e),n?.shouldTouch&&L(e,t),n?.shouldValidate&&e.validators.get(t.key)?.(),h(o,"change",t)}function k({errors:e},t){return e.get(t.key)?.[0]}const S=[];function V({errors:e},t){return e.get(t.key)??S}function O({errors:e}){const t=[];for(const[r,n]of e){const e=JSON.parse(r).join(".");for(const{type:r,message:o}of n)t.push({path:e,type:r,message:o})}return t}function w({errors:e}){return e.values().next().value?.[0]?.message}function C({emitter:e,validating:t},r){t.delete(r.key),h(e,"validating",r)}function x({emitter:e,validating:t},r){t.add(r.key),h(e,"validating",r)}function T(e,t,r){_(e,m(t),r)}function _({emitter:e,errors:t},r,n){const o=function(e){if("string"==typeof e)return e?[{type:"custom",message:e}]:void 0;if(J(e))return[e];if(!e)return;const t=[];return e.forEach(e=>{"string"==typeof e&&e?t.push({type:"custom",message:e}):J(e)&&t.push(e)}),t.length?t:void 0}(n);o?t.set(r.key,o):t.delete(r.key),h(e,"errors",r)}function A(e,t){const{emitter:r,errors:n}=e;if(void 0===t)return n.clear(),void h(r,"errors");const o="string"==typeof t||G(t)?[m(t)]:t.map(e=>m(e));for(const{key:e}of o)n.delete(e);for(const e of o)h(r,"errors",e)}function L({emitter:e,touched:t},r){t.has(r.key)||(t.add(r.key),h(e,"touched",r))}function F({touched:e},t){return e.has(t.key)}function j(e){let t=!1;return D(e,()=>{t=!0}),t}function D({initialValues:e,values:t},r){for(const[n,o]of t){const t=JSON.parse(n);s(e,t)!==o&&r(t.join("."))}}const B=new WeakMap;function P(e){const t=B.get(e);t&&t.version++}function N(e){const t={};return D(e,e=>{t[e]=!0}),t}function M(e){let t=B.get(e);if(t){if(t.version>0){const r=N(e);(function(e,t){const r=Object.keys(e);return r.length===Object.keys(t).length&&r.every(e=>!0===t[e])})(t.result,r)||(t.result=r),t.version=0}}else t={version:0,result:N(e)},B.set(e,t);return t.result}function R({touched:e}){return Array.from(e,e=>JSON.parse(e).join("."))}function I(e,{key:t,value:r}){const{emitter:n,values:o,touched:u,errors:i,validating:s,deleted:a}=e;o.delete(t),u.delete(t),i.delete(t),s.delete(t),function(e,t){for(let r=1;r<t.length;r++)if(e.has(JSON.stringify(t.slice(0,r))))return!0;const r=`${JSON.stringify(t).slice(0,-1)},`;for(const t of e.keys())if(t.startsWith(r))return!0;return!1}(o,r)||a.add(t),P(e),h(n,"change"),h(n,"touched"),h(n,"errors"),h(n,"validating")}function $(e,{key:t}){if(e.size)for(const r of e)(r===t||r.startsWith(`${t.slice(0,-1)},`)||t.startsWith(`${r.slice(0,-1)},`))&&e.delete(r)}function q(e,t){e.initialValues!==t&&(e.initialValues=t,e.parsedValues=void 0,e.values.clear(),e.deleted.clear(),P(e),h(e.emitter,"change"))}function U({errors:e}){return e.size>0}function G(e){return e.some(e=>"number"==typeof e)}function J(e){return!!e&&"object"==typeof e&&"string"==typeof e.type&&"string"==typeof e.message}function H(e,t,r=[]){Object.entries(t).forEach(([t,n])=>{const o=[...r,...i(t)];"string"==typeof n?n&&T(e,o,n):Array.isArray(n)||J(n)?T(e,o,n):n&&"object"==typeof n&&H(e,n,o)})}function W(e,t){if(t){if("object"==typeof t&&y in t){const r=t;return r.errors&&H(e,r.errors),void function(e,t){void 0!==t&&t!==e.parsedValues&&(e.parsedValues=t,h(e.emitter,"change"))}(e,r.values)}H(e,t)}}async function z(e){if(e.validators.forEach(e=>e()),await d(e.emitter,"validating",()=>!e.validating.size,()=>U(e)).catch(()=>{throw new Error(w(e))}),e.validate){const t=await e.validate(p(e));if(W(e,t),U(e))throw new Error(w(e))}}async function K(e){return z(e).catch(e=>e.message)}function Y(e,t){e.isSubmitting=t,h(e.emitter,"submitting")}function Q(e){e.submitCount++,h(e.emitter,"submitCount")}function X(e,t){e.isSubmitSuccessful=t,h(e.emitter,"submitSuccessful")}function Z(e){if(e.startsWith("["))try{const t=JSON.parse(e);if(Array.isArray(t))return t.join(".")}catch{}return e}function ee(e,t){const{onSubmit:r,onValidSubmit:n,onInvalidSubmit:o,shouldFocusError:u=!0}=t??{};return async t=>{t&&"function"==typeof t.preventDefault&&t.preventDefault();const i=t?.currentTarget;Y(e,!0),Q(e);const s=p(e);if(i&&"function"==typeof i.checkValidity&&!1===i.checkValidity()){if(i.reportValidity(),u&&"function"==typeof i.querySelector){const e=i.querySelector(":invalid");e&&"function"==typeof e.focus&&e.focus()}return Y(e,!1),X(e,!1),void(o&&o(function(e){const t=[],{elements:r}=e;for(let e=0;e<r.length;e++){const n=r[e];n.name&&"function"==typeof n.checkValidity&&!n.checkValidity()&&t.push({path:Z(n.name),type:"native",message:n.validationMessage})}return t}(i),s))}if(await K(e)){if(Y(e,!1),X(e,!1),u){const t=e.errors.keys().next().value;void 0!==t&&h(e.emitter,"focusError",t)}o&&o(O(e),s)}else try{const o=p(e);r&&await r(o,t),n&&await n(o,t),X(e,!0)}catch{X(e,!1)}finally{Y(e,!1)}}}function te(e,t){switch(e){case"required":return"This field is required";case"min":return`Must be at least ${t}`;case"max":return`Must be at most ${t}`;case"minLength":return`Must be at least ${t} characters`;case"maxLength":return`Must be at most ${t} characters`;case"pattern":return"Invalid format";default:return"Invalid value"}}var re,ne={exports:{}},oe={};var ue,ie={};"production"===process.env.NODE_ENV?ne.exports=function(){if(re)return oe;re=1;var e=t,r="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},n=e.useState,o=e.useEffect,u=e.useLayoutEffect,i=e.useDebugValue;function s(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch(e){return!0}}var a="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var r=t(),a=n({inst:{value:r,getSnapshot:t}}),c=a[0].inst,l=a[1];return u(function(){c.value=r,c.getSnapshot=t,s(c)&&l({inst:c})},[e,r,t]),o(function(){return s(c)&&l({inst:c}),e(function(){s(c)&&l({inst:c})})},[e]),i(r),r};return oe.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:a,oe}():ne.exports=(ue||(ue=1,"production"!==process.env.NODE_ENV&&function(){function e(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!n(e,r)}catch(e){return!0}}"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var r=t,n="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,u=r.useEffect,i=r.useLayoutEffect,s=r.useDebugValue,a=!1,c=!1,l="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(t,l){a||void 0===r.startTransition||(a=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var f=l();if(!c){var d=l();n(f,d)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),c=!0)}var m=(d=o({inst:{value:f,getSnapshot:l}}))[0].inst,h=d[1];return i(function(){m.value=f,m.getSnapshot=l,e(m)&&h({inst:m})},[t,f,l]),u(function(){return e(m)&&h({inst:m}),t(function(){e(m)&&h({inst:m})})},[t]),s(f),f};ie.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:l,"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())}()),ie);var se=ne.exports;function ae(e,t){return e.startsWith(`${t.slice(0,-1)},`)}function ce(e,t,r,n,u){const{key:i}=r;return o(e,t,e=>{(void 0===e||e.key===i||ae(i,e.key)||"branch"===n&&ae(e.key,i))&&u()})}function le(e,t,r,n){return o(e,t,e=>{void 0!==e&&e.key!==r||n()})}function fe(e){const[r]=t.useState(()=>{const t=v(e);return e&&void 0!==e.values&&q(t,e.values),t}),n=e&&e.initialValues,o=e&&e.values,u=t.useRef(null);null===u.current&&(u.current={done:!1,source:void 0}),t.useEffect(()=>{const e=u.current;e.done&&(e.source===n||ge(e.source,n))||(e.done=!0,e.source=n,q(r,n))},[r,n]);const i=t.useRef(null);return null===i.current&&(i.current={done:!1,source:void 0}),t.useEffect(()=>{if(void 0===o)return;const e=i.current;e.done&&(e.source===o||ge(e.source,o))||(e.done=!0,e.source=o,q(r,o))},[r,o]),r}function de(e,r){const n=t.useRef(null);null===n.current&&(n.current={hasValue:!1});const o=n.current,u=t.useRef(r);u.current=r;const i=t.useCallback(()=>(o.hasValue||(o.value=u.current(),o.hasValue=!0),o.value),[o]),s=t.useCallback(t=>{o.hasValue=!1;return e(()=>{o.hasValue=!1,t()})},[e,o]);return se.useSyncExternalStore(s,i,i)}function me(e,r,n){return de(t.useCallback(t=>o(e,r,t),[e,r]),n)}function he(e,r){const{emitter:n}=e,{key:o}=r;return de(t.useCallback(e=>ce(n,"change",r,"leaf",e),[n,o]),b.bind(null,e,r))}function ye(e,r){const{emitter:n}=e,{key:o}=r;return de(t.useCallback(e=>le(n,"touched",o,e),[n,o]),F.bind(null,e,r))}function ve(e,r){const{emitter:n}=e,{key:o}=r;return de(t.useCallback(e=>le(n,"errors",o,e),[n,o]),k.bind(null,e,r))}function pe(e,r){const{emitter:n}=e,{key:o}=r;return de(t.useCallback(e=>le(n,"errors",o,e),[n,o]),V.bind(null,e,r))}function ge(e,t){if(Object.is(e,t))return!0;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(!e||!t||"object"!=typeof e||"object"!=typeof t)return!1;const r=Array.isArray(e);if(r!==Array.isArray(t))return!1;if(r){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!ge(e[r],t[r]))return!1;return!0}const n=Object.getPrototypeOf(e);if(n!==Object.prototype&&null!==n)return!1;if(Object.getPrototypeOf(t)!==n)return!1;const o=Object.keys(e),u=Object.keys(t);if(o.length!==u.length)return!1;for(const r of o)if(!ge(e[r],t[r]))return!1;return!0}function be(e){const r=t.useMemo(()=>m(i(e)),[e]);return t.useMemo(()=>r,[r.key])}function Ee(e){const r=function(e){const r=t.useRef(e);return r.current=e,r}(e);return t.useCallback((...e)=>r.current(...e),[r])}function ke(e,t){if(!e)return t;const r=function(e){return t=>{if(e.required&&(""===t||null==t))return[{type:"required",message:"string"==typeof e.required?e.required:te("required")}];const r=[],n=(t,r)=>e.messages?.[t]??te(t,r);if(void 0!==e.min){const o=Number(t);!Number.isNaN(o)&&o<e.min&&r.push({type:"min",message:n("min",e.min)})}if(void 0!==e.max){const o=Number(t);!Number.isNaN(o)&&o>e.max&&r.push({type:"max",message:n("max",e.max)})}return void 0!==e.minLength&&"string"==typeof t&&t.length<e.minLength&&r.push({type:"minLength",message:n("minLength",e.minLength)}),void 0!==e.maxLength&&"string"==typeof t&&t.length>e.maxLength&&r.push({type:"maxLength",message:n("maxLength",e.maxLength)}),e.pattern&&!e.pattern.value.test(t)&&r.push({type:"pattern",message:e.messages?.pattern??e.pattern.message??te("pattern")}),r.length?r:void 0}}(e);return t?(e,n)=>{const o=r(e,n),u=e=>{const t=[...o??[]];return Array.isArray(e)?t.push(...e):e&&t.push(e),t.length?t:void 0},i=t(e,n);return f(i)?i.then(u):u(i)}:r}function Se({form:e,name:r,initialValue:n,shouldUnregister:o,validate:u,rules:i,validateDebounce:s,delayError:a,disabled:c},l){const d=t.useContext(l),m=e||d;if(!m)throw new Error("no form provided");const h=be(r),y=function(e,r,n,o){const u=t.useContext(xe),i=n||u;if(!i)throw new Error("no form provided");const s=t.useRef(null),a=t.useRef(e);a.current=e;const c=t.useRef(o?.debounce??0);return c.current=o?.debounce??0,t.useEffect(()=>{let e=null,t=null,n=!1;const o=()=>{n||(n=!0,x(i,r))},u=()=>{n&&(n=!1,C(i,r))},l=()=>{e=null;const n=a.current;if(!n)return void u();t?.abort(),t=new AbortController;const c=s.current={};let l;try{l=n(b(i,r),{form:i,path:r,signal:t.signal})}catch(e){throw u(),e}if(!f(l))return _(i,r,l),void u();o(),l.then(e=>{c===s.current&&_(i,r,e)}).catch(()=>{}).finally(()=>{c===s.current&&(u(),s.current=null)})};return i.validators.set(r.key,()=>{const t=c.current;if(t>0)return null!==e?clearTimeout(e):o(),void(e=setTimeout(l,t));l()}),()=>{i.validators.delete(r.key),null!==e&&(clearTimeout(e),e=null),u(),t?.abort()}},[i,r.key]),Ee(()=>i.validators.get(r.key)?.())}(ke(i,u),h,m,{debounce:s}),v=pe(m,h),p=function(e,r){const[n,o]=t.useState(e);return t.useEffect(()=>{if(void 0===r)return;if(0===e.length)return void o(e);if(n.length>0)return void o(e);const t=setTimeout(()=>o(e),r);return()=>clearTimeout(t)},[e,r,n]),void 0===r?e:n}(v,a),g=p[0],k=g?.message,S=he(m,h),V=me(m.emitter,"disabled",()=>m.disabled);t.useEffect(()=>{void 0!==n&&void 0===b(m,h)&&E(m,h,n)},[m,h,n]);const O=Ee(e=>{E(m,h,e),("onChange"===m.mode||"all"===m.mode||"onTouched"===m.mode&&F(m,h)||v.length>0&&"onChange"===m.reValidateMode)&&y()}),w=Ee(()=>{L(m,h),("onBlur"===m.mode||"onTouched"===m.mode||"all"===m.mode||v.length>0&&"onBlur"===m.reValidateMode)&&y()});return t.useEffect(()=>()=>{!1!==o&&I(m,h)},[h,m,o]),{form:m,value:S,error:k,errorObject:g,errors:p,onChange:O,onBlur:w,name:h.key,disabled:V||!!c}}function Ve(e){return Se(e,xe)}let Oe=0;function we(){return"_"+ ++Oe}function Ce(e,r){const n=t.useContext(r),o=e.form||n;if(!o)throw new Error("no form provided");const u=be(e.name),i=t.useRef([]),s=t.useCallback(()=>b(o,u)||[],[o,u]),a=t.useCallback(e=>{E(o,u,e)},[o,u]),c=t.useCallback(()=>{const e=s();for(;i.current.length<e.length;)i.current.push(we());for(;i.current.length>e.length;)i.current.pop();return i.current.map((e,t)=>({id:e,index:t}))},[s]),[l,f]=t.useReducer(c,void 0,c);t.useEffect(()=>ce(o.emitter,"change",u,"branch",f),[o.emitter,u]);return{fields:l,append:Ee(e=>{const t=s();i.current.push(we()),a([...t,e])}),prepend:Ee(e=>{const t=s();i.current.unshift(we()),a([e,...t])}),insert:Ee((e,t)=>{const r=s();i.current.splice(e,0,we());const n=[...r.slice(0,e),t,...r.slice(e)];a(n)}),remove:Ee(e=>{const t=s();i.current.splice(e,1);const r=t.filter((t,r)=>r!==e);a(r)}),swap:Ee((e,t)=>{const r=s();[i.current[e],i.current[t]]=[i.current[t],i.current[e]];const n=[...r];[n[e],n[t]]=[n[t],n[e]],a(n)}),move:Ee((e,t)=>{const r=s(),[n]=i.current.splice(e,1);i.current.splice(t,0,n);const o=[...r],[u]=o.splice(e,1);o.splice(t,0,u),a(o)}),replace:Ee(e=>{i.current=e.map(()=>we()),a([...e])}),update:Ee((e,t)=>{const r=s();if(e<0||e>=r.length)return;const n=[...r];n[e]=t,a(n)})}}const xe=t.createContext(null),Te=xe.Provider;const _e=t.createContext(null),Ae=_e.Provider;const Le=n.forwardRef(({validate:e,eventToValue:t,initialValue:r,name:u,asProps:i,renderError:s,as:a,valueToProps:c,form:l,shouldUnregister:f,rules:d,validateDebounce:m,disabled:h,delayError:y,...v},p)=>{const g=n.useRef(null),[b,E]=n.useState(0),k=n.useCallback(e=>{g.current=e,function(e,t){"function"==typeof e?e(t):e&&(e.current=t)}(p,e)},[p]),{value:S,onChange:V,onBlur:O,error:w,form:C,name:x,disabled:T}=Ve({name:u,form:l,initialValue:r,shouldUnregister:f,rules:d,validateDebounce:m,delayError:y,disabled:h,validate:(...t)=>{const r=g.current;if(!r||"function"!=typeof r.checkValidity||(r.setCustomValidity(""),!1!==r.checkValidity()))return e?e(...t):void 0;E(e=>e+1)}}),_=a||"input";n.useEffect(()=>{const e=g.current;e&&"function"==typeof e.setCustomValidity&&("string"==typeof w?(e.setCustomValidity(w),e.reportValidity()):e.setCustomValidity(""))},[w]),n.useEffect(()=>{b>0&&g.current?.reportValidity()},[b]),n.useEffect(()=>o(C.emitter,"focusError",(e,t)=>{if(e!==x)return;const r=g.current;r&&"function"==typeof r.focus&&(r.focus(),t?.shouldSelect&&"function"==typeof r.select&&r.select())}),[C,x]);const A=t??(e=>e.target.value),L=x.replace(/["'[\],\s]+/g,"-").replace(/^-+|-+$/g,"")||"field";return n.createElement(n.Fragment,null,n.createElement(_,{"aria-invalid":!!w||void 0,"aria-describedby":w&&s?L:void 0,...v,name:x,onBlur:O,...i,...c?c(S):{value:S},disabled:T,onChange:e=>V(A(e)),ref:k}),w&&s?n.createElement("span",{id:L,role:"alert"},s(w,L)):null)}),Fe=n.forwardRef(({name:e,form:t,initialValue:r,shouldUnregister:o,validate:u,rules:i,validateDebounce:s,disabled:a,delayError:c,...l},f)=>{const{value:d,onChange:m,onBlur:h,error:y,name:v,disabled:p}=Ve({name:e,form:t,initialValue:r,shouldUnregister:o,validate:u,rules:i,validateDebounce:s,delayError:c,disabled:a});return n.createElement("input",{"aria-invalid":!!y||void 0,...l,name:v,onBlur:h,type:"checkbox",checked:!!d,disabled:p,onChange:e=>m(e.target.checked),ref:f})});function je(e,t){return e?Array.isArray(t)?t:[]:t??""}const De=n.forwardRef(({name:e,multiple:t,children:r,form:o,initialValue:u,shouldUnregister:i,validate:s,rules:a,validateDebounce:c,disabled:l,delayError:f,...d},m)=>{const{value:h,onChange:y,onBlur:v,error:p,name:g,disabled:b}=Ve({name:e,form:o,initialValue:u,shouldUnregister:i,validate:s,rules:a,validateDebounce:c,delayError:f,disabled:l});return n.createElement("select",{"aria-invalid":!!p||void 0,...d,name:g,onBlur:v,multiple:t,value:je(t,h),disabled:b,onChange:e=>y(t?Array.from(e.target.selectedOptions,e=>e.value):e.target.value),ref:m},r)});e.Checkbox=Fe,e.CheckboxGroupContext=_e,e.CheckboxGroupProvider=Ae,e.Field=Le,e.Form=function({form:e,context:t,initialValues:r,values:o,onSubmit:u,onValidSubmit:i,onInvalidSubmit:s,shouldFocusError:a,...c}){const l=fe({initialValues:r,values:o}),f=e||l,d=ee(f,{onSubmit:u,onValidSubmit:i,onInvalidSubmit:s,shouldFocusError:a}),{Provider:m}=t??xe;return n.createElement(m,{value:f},n.createElement("form",{...c,noValidate:!0,onSubmit:d}))},e.FormContext=xe,e.FormProvider=Te,e.Select=De,e.VALIDATION_OUTCOME=y,e.clearErrors=A,e.createForm=v,e.createFormContext=function(){const e=t.createContext(null);return{context:e,FormProvider:function({form:r,children:n}){return t.createElement(e.Provider,{value:r},n)},useFormContext:function(){const r=t.useContext(e);if(!r)throw new Error("no form provided");return r},useField:function(t){return Se(t,e)},useFieldArray:function(t){return Ce(t,e)}}},e.ensureValidate=z,e.getDirtyFields=M,e.getError=function(e,t){return k(e,m(t))},e.getErrorByPath=k,e.getErrors=O,e.getFieldErrors=function(e,t){return V(e,m(t))},e.getFieldErrorsByPath=V,e.getFieldState=function(e,t){const r=m(t),{initialValues:n,values:o,touched:u,validating:i}=e,a=o.get(r.key);return{value:b(e,r),error:k(e,r),errors:V(e,r),isDirty:o.has(r.key)&&s(n,r.value)!==a,isTouched:u.has(r.key),isValidating:i.has(r.key)}},e.getFirstError=w,e.getTouchedFields=R,e.getValue=g,e.getValueByPath=b,e.getValues=p,e.handleSubmit=ee,e.hasErrors=U,e.hasTouched=function(e,t){return F(e,m(t))},e.hasTouchedByPath=F,e.incrementSubmitCount=Q,e.isDirty=j,e.isTouched=function({touched:e}){return e.size>0},e.removeField=function(e,t){I(e,m(t))},e.removeFieldByPath=I,e.reset=function(e,t,r){const n=r?.keepDirtyValues?Object.keys(M(e)).map(t=>({key:t,value:g(e,t)})):[];e.initialValues=t,e.parsedValues=void 0,r?.keepErrors||A(e);const{emitter:o,touched:u,values:i,deleted:s,validating:a}=e;i.clear(),s.clear(),r?.keepTouched||u.clear(),a.clear(),r?.keepIsSubmitting||(e.isSubmitting=!1),r?.keepSubmitCount||(e.submitCount=0),r?.keepIsSubmitted||(e.isSubmitSuccessful=void 0),P(e);for(const{key:t,value:r}of n)E(e,m(t),r);h(o,"change"),h(o,"touched"),h(o,"validating"),h(o,"submitting"),h(o,"submitCount"),h(o,"submitSuccessful"),h(o,"reset")},e.resetField=function(e,t,r){const n=m(t),{emitter:o,values:u,touched:i,errors:c,deleted:l}=e;if(u.delete(n.key),void 0!==e.parsedValues){e.parsedValues=a(e.parsedValues,n.value);const t=s(e.initialValues,n.value);void 0!==t&&u.set(n.key,t)}r&&"value"in r&&u.set(n.key,r.value),$(l,n),h(o,"change"),!r?.keepTouched&&i.delete(n.key)&&h(o,"touched",n),!r?.keepErrors&&c.delete(n.key)&&h(o,"errors",n),P(e)},e.setDisabled=function(e,t){e.disabled=t,h(e.emitter,"disabled")},e.setError=T,e.setErrorByPath=_,e.setFocus=function(e,t,r){const{key:n}=m(t);r?h(e.emitter,"focusError",n,r):h(e.emitter,"focusError",n)},e.setInitialValues=q,e.setIsSubmitting=Y,e.setSubmitSuccessful=X,e.setTouched=function(e,t){L(e,m(t))},e.setTouchedByPath=L,e.setValidatingByPath=x,e.setValue=function(e,t,r,n){E(e,m(t),r,n)},e.setValueByPath=E,e.subscribe=function(e,t){const{name:r,event:n="change",scope:u="branch",callback:i}=t;if(void 0===r)return o(e.emitter,n,i);const s=(function(e){return Array.isArray(e)&&e.every(e=>"number"!=typeof e)}(r)?r:[r]).map(t=>{const r=m(t);return"errors"===n||"touched"===n?le(e.emitter,n,r.key,i):ce(e.emitter,n,r,u,i)});return 1===s.length?s[0]:()=>s.forEach(e=>e())},e.trigger=async function(e,t){const r=()=>d(e.emitter,"validating",()=>!e.validating.size,()=>!1);if(void 0===t){if(e.validators.forEach(e=>e()),await r(),e.validate){const t=await e.validate(p(e));W(e,t)}return!U(e)}const n="string"==typeof t||G(t)?[m(t).key]:t.map(e=>m(e).key);return n.forEach(t=>e.validators.get(t)?.()),await r(),n.every(t=>!e.errors.has(t))},e.unsetValidatingByPath=C,e.useCheckboxGroupContext=function(){const e=t.useContext(_e);if(!e)throw new Error("no group provided");return e},e.useDirtyFields=function(e){return me(e.emitter,"change",M.bind(null,e))},e.useError=function(e,t){return ve(e,m(t))?.message},e.useErrorByPath=ve,e.useField=Ve,e.useFieldArray=function(e){return Ce(e,xe)},e.useFieldErrors=function(e,t){return pe(e,m(t))},e.useFieldErrorsByPath=pe,e.useForm=fe,e.useFormContext=function(){const e=t.useContext(xe);if(!e)throw new Error("no form provided");return e},e.useHasErrors=function(e){return me(e.emitter,"errors",U.bind(null,e))},e.useIsDirty=function(e){return me(e.emitter,"change",j.bind(null,e))},e.useIsSubmitting=function(e){return me(e.emitter,"submitting",()=>e.isSubmitting)},e.useSubmitCount=function(e){return me(e.emitter,"submitCount",()=>e.submitCount)},e.useTouched=function(e,t){return ye(e,m(t))},e.useTouchedByPath=ye,e.useTouchedFields=function(e){return me(e.emitter,"touched",R.bind(null,e))},e.useValue=function(e,t){return he(e,m(t))},e.useValueByPath=he,e.useWatch=me,e.validate=K});
5
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define("react-f0rm",["exports","react"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["react-f0rm"]={},e.React)}(this,function(e,t){"use strict";function r(e){var t=Object.create(null);return e&&Object.keys(e).forEach(function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}}),t.default=e,Object.freeze(t)}var n=r(t);function o(e,t){for(var r=arguments.length,n=new Array(r>2?r-2:0),o=2;o<r;o++)n[o-2]=arguments[o];(e.get(t)||[]).forEach(function(e){return e.apply(void 0,n)})}function u(e,t,r){var n=function(e,t){var r=e.get(t);if(r)return r;var n=new Set;return e.set(t,n),n}(e,t);return n.add(r),function(){return n.delete(r)}}const i=new Map;function s(e){if(Array.isArray(e))return e;const t=i.get(e);if(t)return t;const r=function(e){const t=[];let r="";const n=()=>{t.push(r),r=""};for(let o=0;o<e.length;o++){const u=e[o];if("."===u)""!==r&&n();else if("["===u){""!==r&&n();const u=e[o+1];if('"'===u||"'"===u){const r=e.indexOf(u,o+2);if(-1===r)throw new TypeError(`Unterminated quote in path: ${e}`);if("]"!==e[r+1])throw new TypeError(`Expected "]" after quoted segment in path: ${e}`);t.push(e.slice(o+2,r)),o=r+1}else{const r=e.indexOf("]",o+1);if(-1===r)throw new TypeError(`Unterminated bracket in path: ${e}`);const n=e.slice(o+1,r);t.push(/^-?\d+$/.test(n)?Number(n):n),o=r}}else r+=u}""===r&&0!==t.length||n();return t}(e);return i.set(e,r),r}function a(e,t){return t.reduce((e,t)=>{if(null!=e)return e[t]},e)}function c(e,t){if(!t.length||null==e)return e;const[r,...n]=t;if(n.length){const o=c(e[r],n);return o===e[r]?e:l(e,t,o)}if(Array.isArray(e)){if(!(r in e))return e;const t=e.slice();return delete t[r],t}if("object"!=typeof e||!(r in e))return e;const o={...e};return delete o[r],o}function l(e,t,r){if(!t.length)return r;const[n,...o]=t;if("number"==typeof n){const t=Array.isArray(e)?e.slice():[];return t[n]=l(t[n],o,r),t}return{...e,[n]:l(e&&e[n],o,r)}}function f(e,t,r,n){if(!t.length)return r;let o=e,u=null,i="";for(let s=0;s<t.length;s++){const a=t[s];if(!n.has(o)){let t;t="number"==typeof a?Array.isArray(o)?o.slice():[]:{...o},n.add(t),0===s?e=t:u[i]=t,o=t}s===t.length-1?o[a]=r:(u=o,i=a,o=o[a])}return e}function d(e){return e&&"function"==typeof e.then}function m(e,t,r,n){return new Promise((o,i)=>{if(n())return void i();if(r())return void o();const s=u(e,t,()=>{if(n())return s(),void i();r()&&(s(),o())})})}function h(e){const t=s(e);return{value:t,key:JSON.stringify(t)}}const y=Symbol("validation-outcome");function v(e){return{emitter:new Map,...e,mode:e?.mode??"onSubmit",reValidateMode:e?.reValidateMode??"onChange",disabled:e?.disabled??!1,initialValues:e?.initialValues??{},values:new Map,deleted:new Set,errors:new Map,touched:new Set,validators:new Map,validating:new Set,parsedValues:void 0,isSubmitting:!1,submitCount:0,isSubmitSuccessful:void 0}}function p(e){const{initialValues:t,parsedValues:r,values:n,deleted:o}=e,u=new Set;let i=r??t;for(const[e,t]of n)i=f(i,JSON.parse(e),t,u);for(const e of o)i=c(i,JSON.parse(e));return i}function g(e,t){return b(e,h(t))}function b({initialValues:e,parsedValues:t,values:r,deleted:n},o){return r.has(o.key)?r.get(o.key):n.has(o.key)?void 0:a(t??e,o.value)}function E(e,t,r,n){const{emitter:u,values:i,deleted:s}=e;i.set(t.key,r),$(s,t),P(e),n?.shouldTouch&&L(e,t),n?.shouldValidate&&e.validators.get(t.key)?.(),o(u,"change",t)}function k({errors:e},t){return e.get(t.key)?.[0]}const S=[];function V({errors:e},t){return e.get(t.key)??S}function O({errors:e}){const t=[];for(const[r,n]of e){const e=JSON.parse(r).join(".");for(const{type:r,message:o}of n)t.push({path:e,type:r,message:o})}return t}function w({errors:e}){return e.values().next().value?.[0]?.message}function C({emitter:e,validating:t},r){t.delete(r.key),o(e,"validating",r)}function x({emitter:e,validating:t},r){t.add(r.key),o(e,"validating",r)}function T(e,t,r){_(e,h(t),r)}function _({emitter:e,errors:t},r,n){const u=function(e){if("string"==typeof e)return e?[{type:"custom",message:e}]:void 0;if(J(e))return[e];if(!e)return;const t=[];return e.forEach(e=>{"string"==typeof e&&e?t.push({type:"custom",message:e}):J(e)&&t.push(e)}),t.length?t:void 0}(n);u?t.set(r.key,u):t.delete(r.key),o(e,"errors",r)}function A(e,t){const{emitter:r,errors:n}=e;if(void 0===t)return n.clear(),void o(r,"errors");const u="string"==typeof t||G(t)?[h(t)]:t.map(e=>h(e));for(const{key:e}of u)n.delete(e);for(const e of u)o(r,"errors",e)}function L({emitter:e,touched:t},r){t.has(r.key)||(t.add(r.key),o(e,"touched",r))}function F({touched:e},t){return e.has(t.key)}function j(e){let t=!1;return D(e,()=>{t=!0}),t}function D({initialValues:e,values:t},r){for(const[n,o]of t){const t=JSON.parse(n);a(e,t)!==o&&r(t.join("."))}}const B=new WeakMap;function P(e){const t=B.get(e);t&&t.version++}function N(e){const t={};return D(e,e=>{t[e]=!0}),t}function M(e){let t=B.get(e);if(t){if(t.version>0){const r=N(e);(function(e,t){const r=Object.keys(e);return r.length===Object.keys(t).length&&r.every(e=>!0===t[e])})(t.result,r)||(t.result=r),t.version=0}}else t={version:0,result:N(e)},B.set(e,t);return t.result}function R({touched:e}){return Array.from(e,e=>JSON.parse(e).join("."))}function I(e,{key:t,value:r}){const{emitter:n,values:u,touched:i,errors:s,validating:a,deleted:c}=e;u.delete(t),i.delete(t),s.delete(t),a.delete(t),function(e,t){for(let r=1;r<t.length;r++)if(e.has(JSON.stringify(t.slice(0,r))))return!0;const r=`${JSON.stringify(t).slice(0,-1)},`;for(const t of e.keys())if(t.startsWith(r))return!0;return!1}(u,r)||c.add(t),P(e),o(n,"change"),o(n,"touched"),o(n,"errors"),o(n,"validating")}function $(e,{key:t}){if(e.size)for(const r of e)(r===t||r.startsWith(`${t.slice(0,-1)},`)||t.startsWith(`${r.slice(0,-1)},`))&&e.delete(r)}function q(e,t){e.initialValues!==t&&(e.initialValues=t,e.parsedValues=void 0,e.values.clear(),e.deleted.clear(),P(e),o(e.emitter,"change"))}function U({errors:e}){return e.size>0}function G(e){return e.some(e=>"number"==typeof e)}function J(e){return!!e&&"object"==typeof e&&"string"==typeof e.type&&"string"==typeof e.message}function H(e,t,r=[]){Object.entries(t).forEach(([t,n])=>{const o=[...r,...s(t)];"string"==typeof n?n&&T(e,o,n):Array.isArray(n)||J(n)?T(e,o,n):n&&"object"==typeof n&&H(e,n,o)})}function W(e,t){if(t){if("object"==typeof t&&y in t){const r=t;return r.errors&&H(e,r.errors),void function(e,t){void 0!==t&&t!==e.parsedValues&&(e.parsedValues=t,o(e.emitter,"change"))}(e,r.values)}H(e,t)}}async function z(e){if(e.validators.forEach(e=>e()),await m(e.emitter,"validating",()=>!e.validating.size,()=>U(e)).catch(()=>{throw new Error(w(e))}),e.validate){const t=await e.validate(p(e));if(W(e,t),U(e))throw new Error(w(e))}}async function K(e){return z(e).catch(e=>e.message)}function Y(e,t){e.isSubmitting=t,o(e.emitter,"submitting")}function Q(e){e.submitCount++,o(e.emitter,"submitCount")}function X(e,t){e.isSubmitSuccessful=t,o(e.emitter,"submitSuccessful")}function Z(e){if(e.startsWith("["))try{const t=JSON.parse(e);if(Array.isArray(t))return t.join(".")}catch{}return e}function ee(e,t){const{onSubmit:r,onValidSubmit:n,onInvalidSubmit:u,shouldFocusError:i=!0}=t??{};return async t=>{t&&"function"==typeof t.preventDefault&&t.preventDefault();const s=t?.currentTarget;Y(e,!0),Q(e);const a=p(e);if(s&&"function"==typeof s.checkValidity&&!1===s.checkValidity()){if(s.reportValidity(),i&&"function"==typeof s.querySelector){const e=s.querySelector(":invalid");e&&"function"==typeof e.focus&&e.focus()}return Y(e,!1),X(e,!1),void(u&&u(function(e){const t=[],{elements:r}=e;for(let e=0;e<r.length;e++){const n=r[e];n.name&&"function"==typeof n.checkValidity&&!n.checkValidity()&&t.push({path:Z(n.name),type:"native",message:n.validationMessage})}return t}(s),a))}if(await K(e)){if(Y(e,!1),X(e,!1),i){const t=e.errors.keys().next().value;void 0!==t&&o(e.emitter,"focusError",t)}u&&u(O(e),a)}else try{const o=p(e);r&&await r(o,t),n&&await n(o,t),X(e,!0)}catch{X(e,!1)}finally{Y(e,!1)}}}function te(e,t){switch(e){case"required":return"This field is required";case"min":return`Must be at least ${t}`;case"max":return`Must be at most ${t}`;case"minLength":return`Must be at least ${t} characters`;case"maxLength":return`Must be at most ${t} characters`;case"pattern":return"Invalid format";default:return"Invalid value"}}var re,ne={exports:{}},oe={};var ue,ie,se={};var ae=(ie||(ie=1,"production"===process.env.NODE_ENV?ne.exports=function(){if(re)return oe;re=1;var e=t,r="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},n=e.useState,o=e.useEffect,u=e.useLayoutEffect,i=e.useDebugValue;function s(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch(e){return!0}}var a="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var r=t(),a=n({inst:{value:r,getSnapshot:t}}),c=a[0].inst,l=a[1];return u(function(){c.value=r,c.getSnapshot=t,s(c)&&l({inst:c})},[e,r,t]),o(function(){return s(c)&&l({inst:c}),e(function(){s(c)&&l({inst:c})})},[e]),i(r),r};return oe.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:a,oe}():ne.exports=(ue||(ue=1,"production"!==process.env.NODE_ENV&&function(){function e(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!n(e,r)}catch(e){return!0}}"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var r=t,n="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=r.useState,u=r.useEffect,i=r.useLayoutEffect,s=r.useDebugValue,a=!1,c=!1,l="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(t,l){a||void 0===r.startTransition||(a=!0,console.error("You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release."));var f=l();if(!c){var d=l();n(f,d)||(console.error("The result of getSnapshot should be cached to avoid an infinite loop"),c=!0)}var m=(d=o({inst:{value:f,getSnapshot:l}}))[0].inst,h=d[1];return i(function(){m.value=f,m.getSnapshot=l,e(m)&&h({inst:m})},[t,f,l]),u(function(){return e(m)&&h({inst:m}),t(function(){e(m)&&h({inst:m})})},[t]),s(f),f};se.useSyncExternalStore=void 0!==r.useSyncExternalStore?r.useSyncExternalStore:l,"undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())}()),se)),ne.exports);function ce(e,t){return e.startsWith(`${t.slice(0,-1)},`)}function le(e,t,r,n,o){const{key:i}=r;return u(e,t,e=>{(void 0===e||e.key===i||ce(i,e.key)||"branch"===n&&ce(e.key,i))&&o()})}function fe(e,t,r,n){return u(e,t,e=>{void 0!==e&&e.key!==r||n()})}function de(e){const[r]=t.useState(()=>{const t=v(e);return e&&void 0!==e.values&&q(t,e.values),t}),n=e&&e.initialValues,o=e&&e.values,u=t.useRef(null);null===u.current&&(u.current={done:!1,source:void 0}),t.useEffect(()=>{const e=u.current;e.done&&(e.source===n||be(e.source,n))||(e.done=!0,e.source=n,q(r,n))},[r,n]);const i=t.useRef(null);return null===i.current&&(i.current={done:!1,source:void 0}),t.useEffect(()=>{if(void 0===o)return;const e=i.current;e.done&&(e.source===o||be(e.source,o))||(e.done=!0,e.source=o,q(r,o))},[r,o]),r}function me(e,r){const n=t.useRef(null);null===n.current&&(n.current={hasValue:!1});const o=n.current,u=t.useRef(r);u.current=r;const i=t.useCallback(()=>(o.hasValue||(o.value=u.current(),o.hasValue=!0),o.value),[o]),s=t.useCallback(t=>{o.hasValue=!1;return e(()=>{o.hasValue=!1,t()})},[e,o]);return ae.useSyncExternalStore(s,i,i)}function he(e,r,n){return me(t.useCallback(t=>u(e,r,t),[e,r]),n)}function ye(e,r){const{emitter:n}=e,{key:o}=r;return me(t.useCallback(e=>le(n,"change",r,"leaf",e),[n,o]),b.bind(null,e,r))}function ve(e,r){const{emitter:n}=e,{key:o}=r;return me(t.useCallback(e=>fe(n,"touched",o,e),[n,o]),F.bind(null,e,r))}function pe(e,r){const{emitter:n}=e,{key:o}=r;return me(t.useCallback(e=>fe(n,"errors",o,e),[n,o]),k.bind(null,e,r))}function ge(e,r){const{emitter:n}=e,{key:o}=r;return me(t.useCallback(e=>fe(n,"errors",o,e),[n,o]),V.bind(null,e,r))}function be(e,t){if(Object.is(e,t))return!0;if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(!e||!t||"object"!=typeof e||"object"!=typeof t)return!1;const r=Array.isArray(e);if(r!==Array.isArray(t))return!1;if(r){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!be(e[r],t[r]))return!1;return!0}const n=Object.getPrototypeOf(e);if(n!==Object.prototype&&null!==n)return!1;if(Object.getPrototypeOf(t)!==n)return!1;const o=Object.keys(e),u=Object.keys(t);if(o.length!==u.length)return!1;for(const r of o)if(!be(e[r],t[r]))return!1;return!0}function Ee(e){const r=t.useMemo(()=>h(s(e)),[e]);return t.useMemo(()=>r,[r.key])}function ke(e){const r=function(e){const r=t.useRef(e);return r.current=e,r}(e);return t.useCallback((...e)=>r.current(...e),[r])}function Se(e,t){if(!e)return t;const r=function(e){return t=>{if(e.required&&(""===t||null==t))return[{type:"required",message:"string"==typeof e.required?e.required:te("required")}];const r=[],n=(t,r)=>e.messages?.[t]??te(t,r);if(void 0!==e.min){const o=Number(t);!Number.isNaN(o)&&o<e.min&&r.push({type:"min",message:n("min",e.min)})}if(void 0!==e.max){const o=Number(t);!Number.isNaN(o)&&o>e.max&&r.push({type:"max",message:n("max",e.max)})}return void 0!==e.minLength&&"string"==typeof t&&t.length<e.minLength&&r.push({type:"minLength",message:n("minLength",e.minLength)}),void 0!==e.maxLength&&"string"==typeof t&&t.length>e.maxLength&&r.push({type:"maxLength",message:n("maxLength",e.maxLength)}),e.pattern&&!e.pattern.value.test(t)&&r.push({type:"pattern",message:e.messages?.pattern??e.pattern.message??te("pattern")}),r.length?r:void 0}}(e);return t?(e,n)=>{const o=r(e,n),u=e=>{const t=[...o??[]];return Array.isArray(e)?t.push(...e):e&&t.push(e),t.length?t:void 0},i=t(e,n);return d(i)?i.then(u):u(i)}:r}function Ve({form:e,name:r,initialValue:n,shouldUnregister:o,validate:u,rules:i,validateDebounce:s,delayError:a,disabled:c},l){const f=t.useContext(l),m=e||f;if(!m)throw new Error("no form provided");const h=Ee(r),y=function(e,r,n,o){const u=t.useContext(Te),i=n||u;if(!i)throw new Error("no form provided");const s=t.useRef(null),a=t.useRef(e);a.current=e;const c=t.useRef(o?.debounce??0);return c.current=o?.debounce??0,t.useEffect(()=>{let e=null,t=null,n=!1;const o=()=>{n||(n=!0,x(i,r))},u=()=>{n&&(n=!1,C(i,r))},l=()=>{e=null;const n=a.current;if(!n)return void u();t?.abort(),t=new AbortController;const c=s.current={};let l;try{l=n(b(i,r),{form:i,path:r,signal:t.signal})}catch(e){throw u(),e}if(!d(l))return _(i,r,l),void u();o(),l.then(e=>{c===s.current&&_(i,r,e)}).catch(()=>{}).finally(()=>{c===s.current&&(u(),s.current=null)})};return i.validators.set(r.key,()=>{const t=c.current;if(t>0)return null!==e?clearTimeout(e):o(),void(e=setTimeout(l,t));l()}),()=>{i.validators.delete(r.key),null!==e&&(clearTimeout(e),e=null),u(),t?.abort()}},[i,r.key]),ke(()=>i.validators.get(r.key)?.())}(Se(i,u),h,m,{debounce:s}),v=ge(m,h),p=function(e,r){const[n,o]=t.useState(e);return t.useEffect(()=>{if(void 0===r)return;if(0===e.length)return void o(e);if(n.length>0)return void o(e);const t=setTimeout(()=>o(e),r);return()=>clearTimeout(t)},[e,r,n]),void 0===r?e:n}(v,a),g=p[0],k=g?.message,S=ye(m,h),V=he(m.emitter,"disabled",()=>m.disabled);t.useEffect(()=>{void 0!==n&&void 0===b(m,h)&&E(m,h,n)},[m,h,n]);const O=ke(e=>{E(m,h,e),("onChange"===m.mode||"all"===m.mode||"onTouched"===m.mode&&F(m,h)||v.length>0&&"onChange"===m.reValidateMode)&&y()}),w=ke(()=>{L(m,h),("onBlur"===m.mode||"onTouched"===m.mode||"all"===m.mode||v.length>0&&"onBlur"===m.reValidateMode)&&y()});return t.useEffect(()=>()=>{!1!==o&&I(m,h)},[h,m,o]),{form:m,value:S,error:k,errorObject:g,errors:p,onChange:O,onBlur:w,name:h.key,disabled:V||!!c}}function Oe(e){return Ve(e,Te)}let we=0;function Ce(){return"_"+ ++we}function xe(e,r){const n=t.useContext(r),o=e.form||n;if(!o)throw new Error("no form provided");const u=Ee(e.name),i=t.useRef([]),s=t.useCallback(()=>b(o,u)||[],[o,u]),a=t.useCallback(e=>{E(o,u,e)},[o,u]),c=t.useCallback(()=>{const e=s();for(;i.current.length<e.length;)i.current.push(Ce());for(;i.current.length>e.length;)i.current.pop();return i.current.map((e,t)=>({id:e,index:t}))},[s]),[l,f]=t.useReducer(c,void 0,c);t.useEffect(()=>le(o.emitter,"change",u,"branch",f),[o.emitter,u]);return{fields:l,append:ke(e=>{const t=s();i.current.push(Ce()),a([...t,e])}),prepend:ke(e=>{const t=s();i.current.unshift(Ce()),a([e,...t])}),insert:ke((e,t)=>{const r=s();i.current.splice(e,0,Ce());const n=[...r.slice(0,e),t,...r.slice(e)];a(n)}),remove:ke(e=>{const t=s();i.current.splice(e,1);const r=t.filter((t,r)=>r!==e);a(r)}),swap:ke((e,t)=>{const r=s();[i.current[e],i.current[t]]=[i.current[t],i.current[e]];const n=[...r];[n[e],n[t]]=[n[t],n[e]],a(n)}),move:ke((e,t)=>{const r=s(),[n]=i.current.splice(e,1);i.current.splice(t,0,n);const o=[...r],[u]=o.splice(e,1);o.splice(t,0,u),a(o)}),replace:ke(e=>{i.current=e.map(()=>Ce()),a([...e])}),update:ke((e,t)=>{const r=s();if(e<0||e>=r.length)return;const n=[...r];n[e]=t,a(n)})}}const Te=t.createContext(null),_e=Te.Provider;const Ae=t.createContext(null),Le=Ae.Provider;const Fe=n.forwardRef(({validate:e,eventToValue:t,initialValue:r,name:o,asProps:i,renderError:s,as:a,valueToProps:c,form:l,shouldUnregister:f,rules:d,validateDebounce:m,disabled:h,delayError:y,...v},p)=>{const g=n.useRef(null),[b,E]=n.useState(0),k=n.useCallback(e=>{g.current=e,function(e,t){"function"==typeof e?e(t):e&&(e.current=t)}(p,e)},[p]),{value:S,onChange:V,onBlur:O,error:w,form:C,name:x,disabled:T}=Oe({name:o,form:l,initialValue:r,shouldUnregister:f,rules:d,validateDebounce:m,delayError:y,disabled:h,validate:(...t)=>{const r=g.current;if(!r||"function"!=typeof r.checkValidity||(r.setCustomValidity(""),!1!==r.checkValidity()))return e?e(...t):void 0;E(e=>e+1)}}),_=a||"input";n.useEffect(()=>{const e=g.current;e&&"function"==typeof e.setCustomValidity&&("string"==typeof w?(e.setCustomValidity(w),e.reportValidity()):e.setCustomValidity(""))},[w]),n.useEffect(()=>{b>0&&g.current?.reportValidity()},[b]),n.useEffect(()=>u(C.emitter,"focusError",(e,t)=>{if(e!==x)return;const r=g.current;r&&"function"==typeof r.focus&&(r.focus(),t?.shouldSelect&&"function"==typeof r.select&&r.select())}),[C,x]);const A=t??(e=>e.target.value),L=x.replace(/["'[\],\s]+/g,"-").replace(/^-+|-+$/g,"")||"field";return n.createElement(n.Fragment,null,n.createElement(_,{"aria-invalid":!!w||void 0,"aria-describedby":w&&s?L:void 0,...v,name:x,onBlur:O,...i,...c?c(S):{value:S},disabled:T,onChange:e=>V(A(e)),ref:k}),w&&s?n.createElement("span",{id:L,role:"alert"},s(w,L)):null)}),je=n.forwardRef(({name:e,form:t,initialValue:r,shouldUnregister:o,validate:u,rules:i,validateDebounce:s,disabled:a,delayError:c,...l},f)=>{const{value:d,onChange:m,onBlur:h,error:y,name:v,disabled:p}=Oe({name:e,form:t,initialValue:r,shouldUnregister:o,validate:u,rules:i,validateDebounce:s,delayError:c,disabled:a});return n.createElement("input",{"aria-invalid":!!y||void 0,...l,name:v,onBlur:h,type:"checkbox",checked:!!d,disabled:p,onChange:e=>m(e.target.checked),ref:f})});function De(e,t){return e?Array.isArray(t)?t:[]:t??""}const Be=n.forwardRef(({name:e,multiple:t,children:r,form:o,initialValue:u,shouldUnregister:i,validate:s,rules:a,validateDebounce:c,disabled:l,delayError:f,...d},m)=>{const{value:h,onChange:y,onBlur:v,error:p,name:g,disabled:b}=Oe({name:e,form:o,initialValue:u,shouldUnregister:i,validate:s,rules:a,validateDebounce:c,delayError:f,disabled:l});return n.createElement("select",{"aria-invalid":!!p||void 0,...d,name:g,onBlur:v,multiple:t,value:De(t,h),disabled:b,onChange:e=>y(t?Array.from(e.target.selectedOptions,e=>e.value):e.target.value),ref:m},r)});e.Checkbox=je,e.CheckboxGroupContext=Ae,e.CheckboxGroupProvider=Le,e.Field=Fe,e.Form=function({form:e,context:t,initialValues:r,values:o,onSubmit:u,onValidSubmit:i,onInvalidSubmit:s,shouldFocusError:a,...c}){const l=de({initialValues:r,values:o}),f=e||l,d=ee(f,{onSubmit:u,onValidSubmit:i,onInvalidSubmit:s,shouldFocusError:a}),{Provider:m}=t??Te;return n.createElement(m,{value:f},n.createElement("form",{...c,noValidate:!0,onSubmit:d}))},e.FormContext=Te,e.FormProvider=_e,e.Select=Be,e.VALIDATION_OUTCOME=y,e.clearErrors=A,e.createForm=v,e.createFormContext=function(){const e=t.createContext(null);return{context:e,FormProvider:function({form:r,children:n}){return t.createElement(e.Provider,{value:r},n)},useFormContext:function(){const r=t.useContext(e);if(!r)throw new Error("no form provided");return r},useField:function(t){return Ve(t,e)},useFieldArray:function(t){return xe(t,e)}}},e.ensureValidate=z,e.getDirtyFields=M,e.getError=function(e,t){return k(e,h(t))},e.getErrorByPath=k,e.getErrors=O,e.getFieldErrors=function(e,t){return V(e,h(t))},e.getFieldErrorsByPath=V,e.getFieldState=function(e,t){const r=h(t),{initialValues:n,values:o,touched:u,validating:i}=e,s=o.get(r.key);return{value:b(e,r),error:k(e,r),errors:V(e,r),isDirty:o.has(r.key)&&a(n,r.value)!==s,isTouched:u.has(r.key),isValidating:i.has(r.key)}},e.getFirstError=w,e.getTouchedFields=R,e.getValue=g,e.getValueByPath=b,e.getValues=p,e.handleSubmit=ee,e.hasErrors=U,e.hasTouched=function(e,t){return F(e,h(t))},e.hasTouchedByPath=F,e.incrementSubmitCount=Q,e.isDirty=j,e.isTouched=function({touched:e}){return e.size>0},e.removeField=function(e,t){I(e,h(t))},e.removeFieldByPath=I,e.reset=function(e,t,r){const n=r?.keepDirtyValues?Object.keys(M(e)).map(t=>({key:t,value:g(e,t)})):[];e.initialValues=t,e.parsedValues=void 0,r?.keepErrors||A(e);const{emitter:u,touched:i,values:s,deleted:a,validating:c}=e;s.clear(),a.clear(),r?.keepTouched||i.clear(),c.clear(),r?.keepIsSubmitting||(e.isSubmitting=!1),r?.keepSubmitCount||(e.submitCount=0),r?.keepIsSubmitted||(e.isSubmitSuccessful=void 0),P(e);for(const{key:t,value:r}of n)E(e,h(t),r);o(u,"change"),o(u,"touched"),o(u,"validating"),o(u,"submitting"),o(u,"submitCount"),o(u,"submitSuccessful"),o(u,"reset")},e.resetField=function(e,t,r){const n=h(t),{emitter:u,values:i,touched:s,errors:l,deleted:f}=e;if(i.delete(n.key),void 0!==e.parsedValues){e.parsedValues=c(e.parsedValues,n.value);const t=a(e.initialValues,n.value);void 0!==t&&i.set(n.key,t)}r&&"value"in r&&i.set(n.key,r.value),$(f,n),o(u,"change"),!r?.keepTouched&&s.delete(n.key)&&o(u,"touched",n),!r?.keepErrors&&l.delete(n.key)&&o(u,"errors",n),P(e)},e.setDisabled=function(e,t){e.disabled=t,o(e.emitter,"disabled")},e.setError=T,e.setErrorByPath=_,e.setFocus=function(e,t,r){const{key:n}=h(t);r?o(e.emitter,"focusError",n,r):o(e.emitter,"focusError",n)},e.setInitialValues=q,e.setIsSubmitting=Y,e.setSubmitSuccessful=X,e.setTouched=function(e,t){L(e,h(t))},e.setTouchedByPath=L,e.setValidatingByPath=x,e.setValue=function(e,t,r,n){E(e,h(t),r,n)},e.setValueByPath=E,e.subscribe=function(e,t){const{name:r,event:n="change",scope:o="branch",callback:i}=t;if(void 0===r)return u(e.emitter,n,i);const s=(function(e){return Array.isArray(e)&&e.every(e=>"number"!=typeof e)}(r)?r:[r]).map(t=>{const r=h(t);return"errors"===n||"touched"===n?fe(e.emitter,n,r.key,i):le(e.emitter,n,r,o,i)});return 1===s.length?s[0]:()=>s.forEach(e=>e())},e.trigger=async function(e,t){const r=()=>m(e.emitter,"validating",()=>!e.validating.size,()=>!1);if(void 0===t){if(e.validators.forEach(e=>e()),await r(),e.validate){const t=await e.validate(p(e));W(e,t)}return!U(e)}const n="string"==typeof t||G(t)?[h(t).key]:t.map(e=>h(e).key);return n.forEach(t=>e.validators.get(t)?.()),await r(),n.every(t=>!e.errors.has(t))},e.unsetValidatingByPath=C,e.useCheckboxGroupContext=function(){const e=t.useContext(Ae);if(!e)throw new Error("no group provided");return e},e.useDirtyFields=function(e){return he(e.emitter,"change",M.bind(null,e))},e.useError=function(e,t){return pe(e,h(t))?.message},e.useErrorByPath=pe,e.useField=Oe,e.useFieldArray=function(e){return xe(e,Te)},e.useFieldErrors=function(e,t){return ge(e,h(t))},e.useFieldErrorsByPath=ge,e.useForm=de,e.useFormContext=function(){const e=t.useContext(Te);if(!e)throw new Error("no form provided");return e},e.useHasErrors=function(e){return he(e.emitter,"errors",U.bind(null,e))},e.useIsDirty=function(e){return he(e.emitter,"change",j.bind(null,e))},e.useIsSubmitting=function(e){return he(e.emitter,"submitting",()=>e.isSubmitting)},e.useSubmitCount=function(e){return he(e.emitter,"submitCount",()=>e.submitCount)},e.useTouched=function(e,t){return ve(e,h(t))},e.useTouchedByPath=ve,e.useTouchedFields=function(e){return he(e.emitter,"touched",R.bind(null,e))},e.useValue=function(e,t){return ye(e,h(t))},e.useValueByPath=ye,e.useWatch=he,e.validate=K});
6
6
  //# sourceMappingURL=index.umd.min.js.map