react-f0rm 0.5.0 → 0.6.0
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.
- package/README.md +33 -0
- package/dist/devtools/index.cjs.js +1 -1
- package/dist/devtools/index.mjs +1 -1
- package/dist/{form-R1hDKjBm.mjs → form-CXF5HwQG.mjs} +2 -2
- package/dist/form-CXF5HwQG.mjs.map +1 -0
- package/dist/{form-rTlcIiWH.d.ts → form-D9COEt0-.d.ts} +2 -2
- package/dist/{form-B4r7INJ0.cjs.js → form-DbnzAKSM.cjs.js} +2 -2
- package/dist/form-DbnzAKSM.cjs.js.map +1 -0
- package/dist/index.cjs.js +14 -6
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +23 -4
- package/dist/index.mjs +14 -6
- package/dist/index.mjs.map +1 -1
- package/dist/index.umd.js +14 -6
- package/dist/index.umd.js.map +1 -1
- package/dist/index.umd.min.js +2 -2
- package/dist/index.umd.min.js.map +1 -1
- package/dist/resolvers/standard-schema.cjs.js +1 -1
- package/dist/resolvers/standard-schema.mjs +1 -1
- package/dist/resolvers/yup.cjs.js +1 -1
- package/dist/resolvers/yup.d.ts +1 -1
- package/dist/resolvers/yup.mjs +1 -1
- package/dist/resolvers/zod.cjs.js +1 -1
- package/dist/resolvers/zod.d.ts +1 -1
- package/dist/resolvers/zod.mjs +1 -1
- package/dist/{validate-CQX7BJOD.d.ts → validate-Cu43SqhV.d.ts} +1 -1
- package/package.json +1 -1
- package/dist/form-B4r7INJ0.cjs.js.map +0 -1
- package/dist/form-R1hDKjBm.mjs.map +0 -1
package/dist/index.umd.min.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* react-f0rm v0.
|
|
2
|
+
* react-f0rm v0.6.0
|
|
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){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 i(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 s(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 i=e[o];if("."===i)""!==r&&n();else if("["===i){""!==r&&n();const i=e[o+1];if('"'===i||"'"===i){const r=e.indexOf(i,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+=i}""===r&&0!==t.length||n();return t}(e);return u.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,i=null,u="";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:i[u]=t,o=t}s===t.length-1?o[a]=r:(i=o,u=a,o=o[a])}return e}function d(e){return e&&"function"==typeof e.then}function m(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(!m(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),i=Object.keys(t);if(o.length!==i.length)return!1;for(const r of o)if(!m(e[r],t[r]))return!1;return!0}function h(e,t,r,n){return new Promise((o,u)=>{if(n())return void u();if(r())return void o();const s=i(e,t,()=>{if(n())return s(),void u();r()&&(s(),o())})})}function y(e){const t=s(e);return{value:t,key:JSON.stringify(t)}}const v=Symbol("validation-outcome");function p(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 g(e){const{initialValues:t,parsedValues:r,values:n,deleted:o}=e,i=new Set;let u=r??t;for(const[e,t]of n)u=f(u,JSON.parse(e),t,i);for(const e of o)u=c(u,JSON.parse(e));return u}function b(e,t){return E(e,y(t))}function E({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 k(e,t,r,n){const{emitter:i,values:u,deleted:s}=e;u.set(t.key,r),q(s,t),N(e),n?.shouldTouch&&L(e,t),n?.shouldValidate&&e.validators.get(t.key)?.(),o(i,"change",t)}function S({errors:e},t){return e.get(t.key)?.[0]}const V=[];function O({errors:e},t){return e.get(t.key)??V}function w({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 C({errors:e}){return e.values().next().value?.[0]?.message}function x({emitter:e,validating:t},r){t.delete(r.key),o(e,"validating",r)}function T({emitter:e,validating:t},r){t.add(r.key),o(e,"validating",r)}function _(e,t,r){A(e,y(t),r)}function A({emitter:e,errors:t},r,n){const i=function(e){if("string"==typeof e)return e?[{type:"custom",message:e}]:void 0;if(H(e))return[e];if(!e)return;const t=[];return e.forEach(e=>{"string"==typeof e&&e?t.push({type:"custom",message:e}):H(e)&&t.push(e)}),t.length?t:void 0}(n);i?t.set(r.key,i):t.delete(r.key),o(e,"errors",r)}function j(e,t){const{emitter:r,errors:n}=e;if(void 0===t)return n.clear(),void o(r,"errors");const i="string"==typeof t||J(t)?[y(t)]:t.map(e=>y(e));for(const{key:e}of i)n.delete(e);for(const e of i)o(r,"errors",e)}function L({emitter:e,touched:t},r){t.has(r.key)||(t.add(r.key),o(e,"touched",r))}function B({touched:e},t){return e.has(t.key)}function F(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 P=new WeakMap;function N(e){const t=P.get(e);t&&t.version++}function M(e){const t={};return D(e,e=>{t[e]=!0}),t}function R(e){let t=P.get(e);if(t){if(t.version>0){const r=M(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:M(e)},P.set(e,t);return t.result}function I({touched:e}){return Array.from(e,e=>JSON.parse(e).join("."))}function $(e,{key:t,value:r}){const{emitter:n,values:i,touched:u,errors:s,validating:a,deleted:c}=e;i.delete(t),u.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}(i,r)||c.add(t),N(e),o(n,"change"),o(n,"touched"),o(n,"errors"),o(n,"validating")}function q(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 U(e,t){e.initialValues===t||m(e.initialValues,t)||(e.initialValues=t,e.parsedValues=void 0,e.values.clear(),e.deleted.clear(),N(e),o(e.emitter,"change"))}function G({errors:e}){return e.size>0}function J(e){return e.some(e=>"number"==typeof e)}function H(e){return!!e&&"object"==typeof e&&"string"==typeof e.type&&"string"==typeof e.message}function W(e,t,r=[]){Object.entries(t).forEach(([t,n])=>{const o=[...r,...s(t)];"string"==typeof n?n&&_(e,o,n):Array.isArray(n)||H(n)?_(e,o,n):n&&"object"==typeof n&&W(e,n,o)})}function z(e,t){if(t){if("object"==typeof t&&v in t){const r=t;return r.errors&&W(e,r.errors),void function(e,t){void 0!==t&&t!==e.parsedValues&&(e.parsedValues=t,o(e.emitter,"change"))}(e,r.values)}W(e,t)}}async function K(e){if(e.validators.forEach(e=>e()),await h(e.emitter,"validating",()=>!e.validating.size,()=>G(e)).catch(()=>{throw new Error(C(e))}),e.validate){const t=await e.validate(g(e));if(z(e,t),G(e))throw new Error(C(e))}}async function Y(e){return K(e).catch(e=>e.message)}function Q(e,t){e.isSubmitting=t,o(e.emitter,"submitting")}function X(e){e.submitCount++,o(e.emitter,"submitCount")}function Z(e,t){e.isSubmitSuccessful=t,o(e.emitter,"submitSuccessful")}function ee(e){if(e.startsWith("["))try{const t=JSON.parse(e);if(Array.isArray(t))return t.join(".")}catch{}return e}function te(e,t){const{onSubmit:r,onValidSubmit:n,onInvalidSubmit:i,shouldFocusError:u=!0}=t??{};return async t=>{t&&"function"==typeof t.preventDefault&&t.preventDefault();const s=t?.currentTarget;Q(e,!0),X(e);const a=g(e);if(s&&"function"==typeof s.checkValidity&&!1===s.checkValidity()){if(s.reportValidity(),u&&"function"==typeof s.querySelector){const e=s.querySelector(":invalid");e&&"function"==typeof e.focus&&e.focus()}return Q(e,!1),Z(e,!1),void(i&&i(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:ee(n.name),type:"native",message:n.validationMessage})}return t}(s),a))}if(await Y(e)){if(Q(e,!1),Z(e,!1),u){const t=e.errors.keys().next().value;void 0!==t&&o(e.emitter,"focusError",t)}i&&i(w(e),a)}else try{const o=g(e);r&&await r(o,t),n&&await n(o,t),Z(e,!0)}catch{Z(e,!1)}finally{Q(e,!1)}}}function re(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 ne,oe={exports:{}},ie={};var ue,se,ae={};var ce=(se||(se=1,"production"===process.env.NODE_ENV?oe.exports=function(){if(ne)return ie;ne=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,i=e.useLayoutEffect,u=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 i(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]),u(r),r};return ie.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:a,ie}():oe.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,i=r.useEffect,u=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 u(function(){m.value=f,m.getSnapshot=l,e(m)&&h({inst:m})},[t,f,l]),i(function(){return e(m)&&h({inst:m}),t(function(){e(m)&&h({inst:m})})},[t]),s(f),f};ae.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())}()),ae)),oe.exports);function le(e,t){return e.startsWith(`${t.slice(0,-1)},`)}function fe(e,t,r,n,o){const{key:u}=r;return i(e,t,e=>{(void 0===e||e.key===u||le(u,e.key)||"branch"===n&&le(e.key,u))&&o()})}function de(e,t,r,n){return i(e,t,e=>{void 0!==e&&e.key!==r||n()})}function me(e){const[r]=t.useState(()=>{const t=p(e);return e&&void 0!==e.values&&U(t,e.values),t}),n=e&&e.initialValues,o=e&&e.values,i=t.useRef(null);null===i.current&&(i.current={done:!1,source:void 0}),t.useEffect(()=>{const e=i.current;e.done&&(e.source===n||m(e.source,n))||(e.done=!0,e.source=n,U(r,n))},[r,n]);const u=t.useRef(null);return null===u.current&&(u.current={done:!1,source:void 0}),t.useEffect(()=>{if(void 0===o)return;const e=u.current;e.done&&(e.source===o||m(e.source,o))||(e.done=!0,e.source=o,U(r,o))},[r,o]),r}function he(e,r){const n=t.useRef(null);null===n.current&&(n.current={hasValue:!1});const o=n.current,i=t.useRef(r);i.current=r;const u=t.useCallback(()=>(o.hasValue||(o.value=i.current(),o.hasValue=!0),o.value),[o]),s=t.useCallback(t=>{o.hasValue=!1;return e(()=>{o.hasValue=!1,t()})},[e,o]);return ce.useSyncExternalStore(s,u,u)}function ye(e,r,n){return he(t.useCallback(t=>i(e,r,t),[e,r]),n)}function ve(e,r){const{emitter:n}=e,{key:o}=r;return he(t.useCallback(e=>fe(n,"change",r,"leaf",e),[n,o]),E.bind(null,e,r))}function pe(e,r){const{emitter:n}=e,{key:o}=r;return he(t.useCallback(e=>de(n,"touched",o,e),[n,o]),B.bind(null,e,r))}function ge(e,r){const{emitter:n}=e,{key:o}=r;return he(t.useCallback(e=>de(n,"errors",o,e),[n,o]),S.bind(null,e,r))}function be(e,r){const{emitter:n}=e,{key:o}=r;return he(t.useCallback(e=>de(n,"errors",o,e),[n,o]),O.bind(null,e,r))}function Ee(e){const r=t.useMemo(()=>y(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:re("required")}];const r=[],n=(t,r)=>e.messages?.[t]??re(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??re("pattern")}),r.length?r:void 0}}(e);return t?(e,n)=>{const o=r(e,n),i=e=>{const t=[...o??[]];return Array.isArray(e)?t.push(...e):e&&t.push(e),t.length?t:void 0},u=t(e,n);return d(u)?u.then(i):i(u)}:r}function Ve({form:e,name:r,initialValue:n,shouldUnregister:o,validate:i,rules:u,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 i=t.useContext(Te),u=n||i;if(!u)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,T(u,r))},i=()=>{n&&(n=!1,x(u,r))},l=()=>{e=null;const n=a.current;if(!n)return void i();t?.abort(),t=new AbortController;const c=s.current={};let l;try{l=n(E(u,r),{form:u,path:r,signal:t.signal})}catch(e){throw i(),e}if(!d(l))return A(u,r,l),void i();o(),l.then(e=>{c===s.current&&A(u,r,e)}).catch(()=>{}).finally(()=>{c===s.current&&(i(),s.current=null)})};return u.validators.set(r.key,()=>{const t=c.current;if(t>0)return null!==e?clearTimeout(e):o(),void(e=setTimeout(l,t));l()}),()=>{u.validators.delete(r.key),null!==e&&(clearTimeout(e),e=null),i(),t?.abort()}},[u,r.key]),ke(()=>u.validators.get(r.key)?.())}(Se(u,i),h,m,{debounce:s}),v=be(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],b=g?.message,S=ve(m,h),V=ye(m.emitter,"disabled",()=>m.disabled);t.useEffect(()=>{void 0!==n&&void 0===E(m,h)&&k(m,h,n)},[m,h,n]);const O=ke(e=>{k(m,h,e),("onChange"===m.mode||"all"===m.mode||"onTouched"===m.mode&&B(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&&$(m,h)},[h,m,o]),{form:m,value:S,error:b,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 i=Ee(e.name),u=t.useRef([]),s=t.useCallback(()=>E(o,i)||[],[o,i]),a=t.useCallback(e=>{k(o,i,e)},[o,i]),c=t.useCallback(()=>{const e=s();for(;u.current.length<e.length;)u.current.push(Ce());for(;u.current.length>e.length;)u.current.pop();return u.current.map((e,t)=>({id:e,index:t}))},[s]),[l,f]=t.useReducer(c,void 0,c);t.useEffect(()=>fe(o.emitter,"change",i,"branch",f),[o.emitter,i]);return{fields:l,append:ke(e=>{const t=s();u.current.push(Ce()),a([...t,e])}),prepend:ke(e=>{const t=s();u.current.unshift(Ce()),a([e,...t])}),insert:ke((e,t)=>{const r=s();u.current.splice(e,0,Ce());const n=[...r.slice(0,e),t,...r.slice(e)];a(n)}),remove:ke(e=>{const t=s();u.current.splice(e,1);const r=t.filter((t,r)=>r!==e);a(r)}),swap:ke((e,t)=>{const r=s();[u.current[e],u.current[t]]=[u.current[t],u.current[e]];const n=[...r];[n[e],n[t]]=[n[t],n[e]],a(n)}),move:ke((e,t)=>{const r=s(),[n]=u.current.splice(e,1);u.current.splice(t,0,n);const o=[...r],[i]=o.splice(e,1);o.splice(t,0,i),a(o)}),replace:ke(e=>{u.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),je=Ae.Provider;function Le(e){return e.replace(/["'[\],\s]+/g,"-").replace(/^-+|-+$/g,"")||"field"}const Be=n.forwardRef(({validate:e,eventToValue:t,initialValue:r,name:o,asProps:u,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(()=>i(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),j=Le(x),L=w?[v["aria-describedby"],j].filter(Boolean).join(" "):v["aria-describedby"];return n.createElement(n.Fragment,null,n.createElement(_,{...v,name:x,onBlur:O,...u,...c?c(S):{value:S},"aria-invalid":!!w||v["aria-invalid"],"aria-describedby":L,disabled:T,onChange:e=>V(A(e)),ref:k}),w&&s?n.createElement("span",{id:j,role:"alert"},s(w,j)):null)}),Fe=n.forwardRef(({name:e,form:t,initialValue:r,shouldUnregister:o,validate:i,rules:u,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:i,rules:u,validateDebounce:s,delayError:c,disabled:a});return n.createElement("input",{...l,name:v,onBlur:h,type:"checkbox",checked:!!d,"aria-invalid":!!y||l["aria-invalid"],"aria-describedby":y?[l["aria-describedby"],Le(v)].filter(Boolean).join(" "):l["aria-describedby"],disabled:p,onChange:e=>m(e.target.checked),ref:f})});function De(e,t){return e?Array.isArray(t)?t:[]:t??""}const Pe=n.forwardRef(({name:e,multiple:t,children:r,form:o,initialValue:i,shouldUnregister:u,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:i,shouldUnregister:u,validate:s,rules:a,validateDebounce:c,delayError:f,disabled:l});return n.createElement("select",{...d,name:g,onBlur:v,multiple:t,value:De(t,h),"aria-invalid":!!p||d["aria-invalid"],"aria-describedby":p?[d["aria-describedby"],Le(g)].filter(Boolean).join(" "):d["aria-describedby"],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=Ae,e.CheckboxGroupProvider=je,e.Field=Be,e.Form=function({form:e,context:t,initialValues:r,values:o,onSubmit:i,onValidSubmit:u,onInvalidSubmit:s,shouldFocusError:a,...c}){const l=me({initialValues:r,values:o}),f=e||l,d=te(f,{onSubmit:i,onValidSubmit:u,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=Pe,e.VALIDATION_OUTCOME=v,e.clearErrors=j,e.createForm=p,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=K,e.fieldErrorId=function(e){return Le(y(e).key)},e.getDirtyFields=R,e.getError=function(e,t){return S(e,y(t))},e.getErrorByPath=S,e.getErrors=w,e.getFieldErrors=function(e,t){return O(e,y(t))},e.getFieldErrorsByPath=O,e.getFieldState=function(e,t){const r=y(t),{initialValues:n,values:o,touched:i,validating:u}=e,s=o.get(r.key);return{value:E(e,r),error:S(e,r),errors:O(e,r),isDirty:o.has(r.key)&&a(n,r.value)!==s,isTouched:i.has(r.key),isValidating:u.has(r.key)}},e.getFirstError=C,e.getTouchedFields=I,e.getValue=b,e.getValueByPath=E,e.getValues=g,e.handleSubmit=te,e.hasErrors=G,e.hasTouched=function(e,t){return B(e,y(t))},e.hasTouchedByPath=B,e.incrementSubmitCount=X,e.isDirty=F,e.isTouched=function({touched:e}){return e.size>0},e.removeField=function(e,t){$(e,y(t))},e.removeFieldByPath=$,e.reset=function(e,t,r){const n=r?.keepDirtyValues?Object.keys(R(e)).map(t=>({key:t,value:b(e,t)})):[];e.initialValues=t,e.parsedValues=void 0,r?.keepErrors||j(e);const{emitter:i,touched:u,values:s,deleted:a,validating:c}=e;s.clear(),a.clear(),r?.keepTouched||u.clear(),c.clear(),r?.keepIsSubmitting||(e.isSubmitting=!1),r?.keepSubmitCount||(e.submitCount=0),r?.keepIsSubmitted||(e.isSubmitSuccessful=void 0),N(e);for(const{key:t,value:r}of n)k(e,y(t),r);o(i,"change"),o(i,"touched"),o(i,"validating"),o(i,"submitting"),o(i,"submitCount"),o(i,"submitSuccessful"),o(i,"reset")},e.resetField=function(e,t,r){const n=y(t),{emitter:i,values:u,touched:s,errors:l,deleted:f}=e;if(u.delete(n.key),void 0!==e.parsedValues){e.parsedValues=c(e.parsedValues,n.value);const t=a(e.initialValues,n.value);void 0!==t&&u.set(n.key,t)}r&&"value"in r&&u.set(n.key,r.value),q(f,n),o(i,"change"),!r?.keepTouched&&s.delete(n.key)&&o(i,"touched",n),!r?.keepErrors&&l.delete(n.key)&&o(i,"errors",n),N(e)},e.setDisabled=function(e,t){e.disabled=t,o(e.emitter,"disabled")},e.setError=_,e.setErrorByPath=A,e.setFocus=function(e,t,r){const{key:n}=y(t);r?o(e.emitter,"focusError",n,r):o(e.emitter,"focusError",n)},e.setInitialValues=U,e.setIsSubmitting=Q,e.setServerErrors=function(e,t,r){r?.keepExisting||j(e);for(const[r,n]of Object.entries(t))_(e,r,(Array.isArray(n)?n:[n]).map(e=>({type:"server",message:e})))},e.setSubmitSuccessful=Z,e.setTouched=function(e,t){L(e,y(t))},e.setTouchedByPath=L,e.setValidatingByPath=T,e.setValue=function(e,t,r,n){k(e,y(t),r,n)},e.setValueByPath=k,e.subscribe=function(e,t){const{name:r,event:n="change",scope:o="branch",callback:u}=t;if(void 0===r)return i(e.emitter,n,u);const s=(function(e){return Array.isArray(e)&&e.every(e=>"number"!=typeof e)}(r)?r:[r]).map(t=>{const r=y(t);return"errors"===n||"touched"===n?de(e.emitter,n,r.key,u):fe(e.emitter,n,r,o,u)});return 1===s.length?s[0]:()=>s.forEach(e=>e())},e.trigger=async function(e,t){const r=()=>h(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(g(e));z(e,t)}return!G(e)}const n="string"==typeof t||J(t)?[y(t).key]:t.map(e=>y(e).key);return n.forEach(t=>e.validators.get(t)?.()),await r(),n.every(t=>!e.errors.has(t))},e.unsetValidatingByPath=x,e.useCheckboxGroupContext=function(){const e=t.useContext(Ae);if(!e)throw new Error("no group provided");return e},e.useDirtyFields=function(e){return ye(e.emitter,"change",R.bind(null,e))},e.useError=function(e,t){return ge(e,y(t))?.message},e.useErrorByPath=ge,e.useField=Oe,e.useFieldArray=function(e){return xe(e,Te)},e.useFieldErrors=function(e,t){return be(e,y(t))},e.useFieldErrorsByPath=be,e.useForm=me,e.useFormContext=function(){const e=t.useContext(Te);if(!e)throw new Error("no form provided");return e},e.useHasErrors=function(e){return ye(e.emitter,"errors",G.bind(null,e))},e.useIsDirty=function(e){return ye(e.emitter,"change",F.bind(null,e))},e.useIsSubmitting=function(e){return ye(e.emitter,"submitting",()=>e.isSubmitting)},e.useSubmitCount=function(e){return ye(e.emitter,"submitCount",()=>e.submitCount)},e.useTouched=function(e,t){return pe(e,y(t))},e.useTouchedByPath=pe,e.useTouchedFields=function(e){return ye(e.emitter,"touched",I.bind(null,e))},e.useValue=function(e,t){return ve(e,y(t))},e.useValueByPath=ve,e.useWatch=ye,e.validate=Y});
|
|
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 i(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 s(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 i=e[o];if("."===i)""!==r&&n();else if("["===i){""!==r&&n();const i=e[o+1];if('"'===i||"'"===i){const r=e.indexOf(i,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+=i}""===r&&0!==t.length||n();return t}(e);return u.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 t=c(e[r],n);return t===e[r]?e:l(e,[r],t)}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,i=null,u="";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:i[u]=t,o=t}s===t.length-1?o[a]=r:(i=o,u=a,o=o[a])}return e}function d(e){return e&&"function"==typeof e.then}function m(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(!m(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),i=Object.keys(t);if(o.length!==i.length)return!1;for(const r of o)if(!m(e[r],t[r]))return!1;return!0}function h(e,t,r,n){return new Promise((o,u)=>{if(n())return void u();if(r())return void o();const s=i(e,t,()=>{if(n())return s(),void u();r()&&(s(),o())})})}function y(e){const t=s(e);return{value:t,key:JSON.stringify(t)}}const v=Symbol("validation-outcome");function p(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 g(e){const{initialValues:t,parsedValues:r,values:n,deleted:o}=e,i=new Set;let u=r??t;for(const[e,t]of n)u=f(u,JSON.parse(e),t,i);for(const e of o)u=c(u,JSON.parse(e));return u}function b(e,t){return E(e,y(t))}function E({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 k(e,t,r,n){const{emitter:i,values:u,deleted:s}=e;u.set(t.key,r),q(s,t),N(e),n?.shouldTouch&&L(e,t),n?.shouldValidate&&e.validators.get(t.key)?.(),o(i,"change",t)}function S({errors:e},t){return e.get(t.key)?.[0]}const V=[];function O({errors:e},t){return e.get(t.key)??V}function w({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 C({errors:e}){return e.values().next().value?.[0]?.message}function x({emitter:e,validating:t},r){t.delete(r.key),o(e,"validating",r)}function T({emitter:e,validating:t},r){t.add(r.key),o(e,"validating",r)}function _(e,t,r){A(e,y(t),r)}function A({emitter:e,errors:t},r,n){const i=function(e){if("string"==typeof e)return e?[{type:"custom",message:e}]:void 0;if(H(e))return[e];if(!e)return;const t=[];return e.forEach(e=>{"string"==typeof e&&e?t.push({type:"custom",message:e}):H(e)&&t.push(e)}),t.length?t:void 0}(n);i?t.set(r.key,i):t.delete(r.key),o(e,"errors",r)}function j(e,t){const{emitter:r,errors:n}=e;if(void 0===t)return n.clear(),void o(r,"errors");const i="string"==typeof t||J(t)?[y(t)]:t.map(e=>y(e));for(const{key:e}of i)n.delete(e);for(const e of i)o(r,"errors",e)}function L({emitter:e,touched:t},r){t.has(r.key)||(t.add(r.key),o(e,"touched",r))}function B({touched:e},t){return e.has(t.key)}function F(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 P=new WeakMap;function N(e){const t=P.get(e);t&&t.version++}function M(e){const t={};return D(e,e=>{t[e]=!0}),t}function R(e){let t=P.get(e);if(t){if(t.version>0){const r=M(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:M(e)},P.set(e,t);return t.result}function I({touched:e}){return Array.from(e,e=>JSON.parse(e).join("."))}function $(e,{key:t,value:r}){const{emitter:n,values:i,touched:u,errors:s,validating:a,deleted:c}=e;i.delete(t),u.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}(i,r)||c.add(t),N(e),o(n,"change"),o(n,"touched"),o(n,"errors"),o(n,"validating")}function q(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 U(e,t){e.initialValues===t||m(e.initialValues,t)||(e.initialValues=t,e.parsedValues=void 0,e.values.clear(),e.deleted.clear(),N(e),o(e.emitter,"change"))}function G({errors:e}){return e.size>0}function J(e){return e.some(e=>"number"==typeof e)}function H(e){return!!e&&"object"==typeof e&&"string"==typeof e.type&&"string"==typeof e.message}function W(e,t,r=[]){Object.entries(t).forEach(([t,n])=>{const o=[...r,...s(t)];"string"==typeof n?n&&_(e,o,n):Array.isArray(n)||H(n)?_(e,o,n):n&&"object"==typeof n&&W(e,n,o)})}function z(e,t){if(t){if("object"==typeof t&&v in t){const r=t;return r.errors&&W(e,r.errors),void function(e,t){void 0!==t&&t!==e.parsedValues&&(e.parsedValues=t,o(e.emitter,"change"))}(e,r.values)}W(e,t)}}async function K(e){if(e.validators.forEach(e=>e()),await h(e.emitter,"validating",()=>!e.validating.size,()=>G(e)).catch(()=>{throw new Error(C(e))}),e.validate){const t=await e.validate(g(e));if(z(e,t),G(e))throw new Error(C(e))}}async function Y(e){return K(e).catch(e=>e.message)}function Q(e,t){e.isSubmitting=t,o(e.emitter,"submitting")}function X(e){e.submitCount++,o(e.emitter,"submitCount")}function Z(e,t){e.isSubmitSuccessful=t,o(e.emitter,"submitSuccessful")}function ee(e){if(e.startsWith("["))try{const t=JSON.parse(e);if(Array.isArray(t))return t.join(".")}catch{}return e}function te(e,t){const{onSubmit:r,onValidSubmit:n,onInvalidSubmit:i,shouldFocusError:u=!0}=t??{};return async t=>{t&&"function"==typeof t.preventDefault&&t.preventDefault();const s=t?.currentTarget;Q(e,!0),X(e);const a=g(e);if(s&&"function"==typeof s.checkValidity&&!1===s.checkValidity()){if(s.reportValidity(),u&&"function"==typeof s.querySelector){const e=s.querySelector(":invalid");e&&"function"==typeof e.focus&&e.focus()}return Q(e,!1),Z(e,!1),void(i&&i(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:ee(n.name),type:"native",message:n.validationMessage})}return t}(s),a))}if(await Y(e)){if(Q(e,!1),Z(e,!1),u){const t=e.errors.keys().next().value;void 0!==t&&o(e.emitter,"focusError",t)}i&&i(w(e),a)}else try{const o=g(e);r&&await r(o,t),n&&await n(o,t),Z(e,!0)}catch{Z(e,!1)}finally{Q(e,!1)}}}function re(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 ne,oe={exports:{}},ie={};var ue,se,ae={};var ce=(se||(se=1,"production"===process.env.NODE_ENV?oe.exports=function(){if(ne)return ie;ne=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,i=e.useLayoutEffect,u=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 i(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]),u(r),r};return ie.useSyncExternalStore=void 0!==e.useSyncExternalStore?e.useSyncExternalStore:a,ie}():oe.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,i=r.useEffect,u=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 u(function(){m.value=f,m.getSnapshot=l,e(m)&&h({inst:m})},[t,f,l]),i(function(){return e(m)&&h({inst:m}),t(function(){e(m)&&h({inst:m})})},[t]),s(f),f};ae.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())}()),ae)),oe.exports);function le(e,t){return e.startsWith(`${t.slice(0,-1)},`)}function fe(e,t,r,n,o){const{key:u}=r;return i(e,t,e=>{(void 0===e||e.key===u||le(u,e.key)||"branch"===n&&le(e.key,u))&&o()})}function de(e,t,r,n){return i(e,t,e=>{void 0!==e&&e.key!==r||n()})}function me(e){const[r]=t.useState(()=>{const t=p(e);return e&&void 0!==e.values&&U(t,e.values),t}),n=e&&e.initialValues,o=e&&e.values,i=t.useRef(null);null===i.current&&(i.current={done:!1,source:void 0}),t.useEffect(()=>{const e=i.current;e.done&&(e.source===n||m(e.source,n))||(e.done=!0,e.source=n,U(r,n))},[r,n]);const u=t.useRef(null);return null===u.current&&(u.current={done:!1,source:void 0}),t.useEffect(()=>{if(void 0===o)return;const e=u.current;e.done&&(e.source===o||m(e.source,o))||(e.done=!0,e.source=o,U(r,o))},[r,o]),r}function he(e,r){const n=t.useRef(null);null===n.current&&(n.current={hasValue:!1});const o=n.current,i=t.useRef(r);i.current=r;const u=t.useCallback(()=>(o.hasValue||(o.value=i.current(),o.hasValue=!0),o.value),[o]),s=t.useCallback(t=>{o.hasValue=!1;return e(()=>{o.hasValue=!1,t()})},[e,o]);return ce.useSyncExternalStore(s,u,u)}function ye(e,r,n){return he(t.useCallback(t=>i(e,r,t),[e,r]),n)}function ve(e,r){const{emitter:n}=e,{key:o}=r;return he(t.useCallback(e=>fe(n,"change",r,"leaf",e),[n,o]),E.bind(null,e,r))}function pe(e,r){const{emitter:n}=e,{key:o}=r;return he(t.useCallback(e=>de(n,"touched",o,e),[n,o]),B.bind(null,e,r))}function ge(e,r){const{emitter:n}=e,{key:o}=r;return he(t.useCallback(e=>de(n,"errors",o,e),[n,o]),S.bind(null,e,r))}function be(e,r){const{emitter:n}=e,{key:o}=r;return he(t.useCallback(e=>de(n,"errors",o,e),[n,o]),O.bind(null,e,r))}function Ee(e){const r=t.useMemo(()=>y(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:re("required")}];const r=[],n=(t,r)=>e.messages?.[t]??re(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??re("pattern")}),r.length?r:void 0}}(e);return t?(e,n)=>{const o=r(e,n),i=e=>{const t=[...o??[]];return Array.isArray(e)?t.push(...e):e&&t.push(e),t.length?t:void 0},u=t(e,n);return d(u)?u.then(i):i(u)}:r}function Ve({form:e,name:r,initialValue:n,shouldUnregister:o,validate:i,rules:u,validateDebounce:s,delayError:a,disabled:c,mode:l},f){const m=t.useContext(f),h=e||m;if(!h)throw new Error("no form provided");const y=Ee(r),v=function(e,r,n,o){const i=t.useContext(Te),u=n||i;if(!u)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,T(u,r))},i=()=>{n&&(n=!1,x(u,r))},l=()=>{e=null;const n=a.current;if(!n)return void i();t?.abort(),t=new AbortController;const c=s.current={};let l;try{l=n(E(u,r),{form:u,path:r,signal:t.signal})}catch(e){throw i(),e}if(!d(l))return A(u,r,l),void i();o(),l.then(e=>{c===s.current&&A(u,r,e)}).catch(()=>{}).finally(()=>{c===s.current&&(i(),s.current=null)})};return u.validators.set(r.key,()=>{const t=c.current;if(t>0)return null!==e?clearTimeout(e):o(),void(e=setTimeout(l,t));l()}),()=>{u.validators.delete(r.key),null!==e&&(clearTimeout(e),e=null),i(),t?.abort()}},[u,r.key]),ke(()=>u.validators.get(r.key)?.())}(Se(u,i),y,h,{debounce:s}),p=be(h,y),g=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}(p,a),b=g[0],S=b?.message,V=ve(h,y),O=ye(h.emitter,"disabled",()=>h.disabled),w=l??h.mode;t.useEffect(()=>{void 0!==n&&void 0===E(h,y)&&k(h,y,n)},[h,y,n]);const C=ke(e=>{k(h,y,e),("onChange"===w||"all"===w||"onTouched"===w&&B(h,y)||p.length>0&&"onChange"===h.reValidateMode)&&v()}),_=ke(()=>{L(h,y),("onBlur"===w||"onTouched"===w||"all"===w||p.length>0&&"onBlur"===h.reValidateMode)&&v()});return t.useEffect(()=>()=>{!1!==o&&$(h,y)},[y,h,o]),{form:h,value:V,error:S,errorObject:b,errors:g,onChange:C,onBlur:_,name:y.key,disabled:O||!!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 i=Ee(e.name),u=t.useRef([]),s=t.useCallback(()=>E(o,i)||[],[o,i]),a=t.useCallback(e=>{k(o,i,e)},[o,i]),c=t.useCallback(()=>{const e=s();for(;u.current.length<e.length;)u.current.push(Ce());for(;u.current.length>e.length;)u.current.pop();return u.current.map((e,t)=>({id:e,index:t}))},[s]),[l,f]=t.useReducer(c,void 0,c);t.useEffect(()=>fe(o.emitter,"change",i,"branch",f),[o.emitter,i]);return{fields:l,append:ke(e=>{const t=s();u.current.push(Ce()),a([...t,e])}),prepend:ke(e=>{const t=s();u.current.unshift(Ce()),a([e,...t])}),insert:ke((e,t)=>{const r=s();u.current.splice(e,0,Ce());const n=[...r.slice(0,e),t,...r.slice(e)];a(n)}),remove:ke(e=>{const t=s();u.current.splice(e,1);const r=t.filter((t,r)=>r!==e);a(r)}),swap:ke((e,t)=>{const r=s();[u.current[e],u.current[t]]=[u.current[t],u.current[e]];const n=[...r];[n[e],n[t]]=[n[t],n[e]],a(n)}),move:ke((e,t)=>{const r=s(),[n]=u.current.splice(e,1);u.current.splice(t,0,n);const o=[...r],[i]=o.splice(e,1);o.splice(t,0,i),a(o)}),replace:ke(e=>{u.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),je=Ae.Provider;function Le(e){return e.replace(/["'[\],\s]+/g,"-").replace(/^-+|-+$/g,"")||"field"}const Be=n.forwardRef(({validate:e,eventToValue:t,initialValue:r,name:o,asProps:u,renderError:s,as:a,valueToProps:c,form:l,shouldUnregister:f,rules:d,validateDebounce:m,disabled:h,delayError:y,mode:v,...p},g)=>{const b=n.useRef(null),[E,k]=n.useState(0),S=n.useCallback(e=>{b.current=e,function(e,t){"function"==typeof e?e(t):e&&(e.current=t)}(g,e)},[g]),{value:V,onChange:O,onBlur:w,error:C,form:x,name:T,disabled:_}=Oe({name:o,form:l,initialValue:r,shouldUnregister:f,rules:d,validateDebounce:m,delayError:y,disabled:h,mode:v,validate:(...t)=>{const r=b.current;if(!r||"function"!=typeof r.checkValidity||(r.setCustomValidity(""),!1!==r.checkValidity()))return e?e(...t):void 0;k(e=>e+1)}}),A=a||"input";n.useEffect(()=>{const e=b.current;e&&"function"==typeof e.setCustomValidity&&("string"==typeof C?(e.setCustomValidity(C),e.reportValidity()):e.setCustomValidity(""))},[C]),n.useEffect(()=>{E>0&&b.current?.reportValidity()},[E]),n.useEffect(()=>i(x.emitter,"focusError",(e,t)=>{if(e!==T)return;const r=b.current;r&&"function"==typeof r.focus&&(r.focus(),t?.shouldSelect&&"function"==typeof r.select&&r.select())}),[x,T]);const j=t??(e=>e.target.value),L=Le(T),B=C?[p["aria-describedby"],L].filter(Boolean).join(" "):p["aria-describedby"];return n.createElement(n.Fragment,null,n.createElement(A,{...p,name:T,onBlur:w,...u,...c?c(V):{value:V},"aria-invalid":!!C||p["aria-invalid"],"aria-describedby":B,disabled:_,onChange:e=>O(j(e)),ref:S}),C&&s?n.createElement("span",{id:L,role:"alert"},s(C,L)):null)}),Fe=n.forwardRef(({name:e,form:t,initialValue:r,shouldUnregister:o,validate:i,rules:u,validateDebounce:s,disabled:a,delayError:c,mode:l,...f},d)=>{const{value:m,onChange:h,onBlur:y,error:v,name:p,disabled:g}=Oe({name:e,form:t,initialValue:r,shouldUnregister:o,validate:i,rules:u,validateDebounce:s,delayError:c,disabled:a,mode:l});return n.createElement("input",{...f,name:p,onBlur:y,type:"checkbox",checked:!!m,"aria-invalid":!!v||f["aria-invalid"],"aria-describedby":v?[f["aria-describedby"],Le(p)].filter(Boolean).join(" "):f["aria-describedby"],disabled:g,onChange:e=>h(e.target.checked),ref:d})});function De(e,t){return e?Array.isArray(t)?t:[]:t??""}const Pe=n.forwardRef(({name:e,multiple:t,children:r,form:o,initialValue:i,shouldUnregister:u,validate:s,rules:a,validateDebounce:c,disabled:l,delayError:f,mode:d,...m},h)=>{const{value:y,onChange:v,onBlur:p,error:g,name:b,disabled:E}=Oe({name:e,form:o,initialValue:i,shouldUnregister:u,validate:s,rules:a,validateDebounce:c,delayError:f,disabled:l,mode:d});return n.createElement("select",{...m,name:b,onBlur:p,multiple:t,value:De(t,y),"aria-invalid":!!g||m["aria-invalid"],"aria-describedby":g?[m["aria-describedby"],Le(b)].filter(Boolean).join(" "):m["aria-describedby"],disabled:E,onChange:e=>v(t?Array.from(e.target.selectedOptions,e=>e.value):e.target.value),ref:h},r)});e.Checkbox=Fe,e.CheckboxGroupContext=Ae,e.CheckboxGroupProvider=je,e.Field=Be,e.Form=function({form:e,context:t,initialValues:r,values:o,onSubmit:i,onValidSubmit:u,onInvalidSubmit:s,shouldFocusError:a,...c}){const l=me({initialValues:r,values:o}),f=e||l,d=te(f,{onSubmit:i,onValidSubmit:u,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=Pe,e.VALIDATION_OUTCOME=v,e.clearErrors=j,e.createForm=p,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=K,e.fieldErrorId=function(e){return Le(y(e).key)},e.getDirtyFields=R,e.getError=function(e,t){return S(e,y(t))},e.getErrorByPath=S,e.getErrors=w,e.getFieldErrors=function(e,t){return O(e,y(t))},e.getFieldErrorsByPath=O,e.getFieldState=function(e,t){const r=y(t),{initialValues:n,values:o,touched:i,validating:u}=e,s=o.get(r.key);return{value:E(e,r),error:S(e,r),errors:O(e,r),isDirty:o.has(r.key)&&a(n,r.value)!==s,isTouched:i.has(r.key),isValidating:u.has(r.key)}},e.getFirstError=C,e.getTouchedFields=I,e.getValue=b,e.getValueByPath=E,e.getValues=g,e.handleSubmit=te,e.hasErrors=G,e.hasTouched=function(e,t){return B(e,y(t))},e.hasTouchedByPath=B,e.incrementSubmitCount=X,e.isDirty=F,e.isTouched=function({touched:e}){return e.size>0},e.removeField=function(e,t){$(e,y(t))},e.removeFieldByPath=$,e.reset=function(e,t,r){const n=r?.keepDirtyValues?Object.keys(R(e)).map(t=>({key:t,value:b(e,t)})):[];e.initialValues=t,e.parsedValues=void 0,r?.keepErrors||j(e);const{emitter:i,touched:u,values:s,deleted:a,validating:c}=e;s.clear(),a.clear(),r?.keepTouched||u.clear(),c.clear(),r?.keepIsSubmitting||(e.isSubmitting=!1),r?.keepSubmitCount||(e.submitCount=0),r?.keepIsSubmitted||(e.isSubmitSuccessful=void 0),N(e);for(const{key:t,value:r}of n)k(e,y(t),r);o(i,"change"),o(i,"touched"),o(i,"validating"),o(i,"submitting"),o(i,"submitCount"),o(i,"submitSuccessful"),o(i,"reset")},e.resetField=function(e,t,r){const n=y(t),{emitter:i,values:u,touched:s,errors:l,deleted:f}=e;if(u.delete(n.key),void 0!==e.parsedValues){e.parsedValues=c(e.parsedValues,n.value);const t=a(e.initialValues,n.value);void 0!==t&&u.set(n.key,t)}r&&"value"in r&&u.set(n.key,r.value),q(f,n),o(i,"change"),!r?.keepTouched&&s.delete(n.key)&&o(i,"touched",n),!r?.keepErrors&&l.delete(n.key)&&o(i,"errors",n),N(e)},e.setDisabled=function(e,t){e.disabled=t,o(e.emitter,"disabled")},e.setError=_,e.setErrorByPath=A,e.setFocus=function(e,t,r){const{key:n}=y(t);r?o(e.emitter,"focusError",n,r):o(e.emitter,"focusError",n)},e.setInitialValues=U,e.setIsSubmitting=Q,e.setServerErrors=function(e,t,r){r?.keepExisting||j(e);for(const[r,n]of Object.entries(t))_(e,r,(Array.isArray(n)?n:[n]).map(e=>({type:"server",message:e})))},e.setSubmitSuccessful=Z,e.setTouched=function(e,t){L(e,y(t))},e.setTouchedByPath=L,e.setValidatingByPath=T,e.setValue=function(e,t,r,n){k(e,y(t),r,n)},e.setValueByPath=k,e.subscribe=function(e,t){const{name:r,event:n="change",scope:o="branch",callback:u}=t;if(void 0===r)return i(e.emitter,n,u);const s=(function(e){return Array.isArray(e)&&e.every(e=>"number"!=typeof e)}(r)?r:[r]).map(t=>{const r=y(t);return"errors"===n||"touched"===n?de(e.emitter,n,r.key,u):fe(e.emitter,n,r,o,u)});return 1===s.length?s[0]:()=>s.forEach(e=>e())},e.trigger=async function(e,t){const r=()=>h(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(g(e));z(e,t)}return!G(e)}const n="string"==typeof t||J(t)?[y(t).key]:t.map(e=>y(e).key);return n.forEach(t=>e.validators.get(t)?.()),await r(),n.every(t=>!e.errors.has(t))},e.unsetValidatingByPath=x,e.useCheckboxGroupContext=function(){const e=t.useContext(Ae);if(!e)throw new Error("no group provided");return e},e.useDirtyFields=function(e){return ye(e.emitter,"change",R.bind(null,e))},e.useError=function(e,t){return ge(e,y(t))?.message},e.useErrorByPath=ge,e.useField=Oe,e.useFieldArray=function(e){return xe(e,Te)},e.useFieldErrors=function(e,t){return be(e,y(t))},e.useFieldErrorsByPath=be,e.useForm=me,e.useFormContext=function(){const e=t.useContext(Te);if(!e)throw new Error("no form provided");return e},e.useHasErrors=function(e){return ye(e.emitter,"errors",G.bind(null,e))},e.useIsDirty=function(e){return ye(e.emitter,"change",F.bind(null,e))},e.useIsSubmitting=function(e){return ye(e.emitter,"submitting",()=>e.isSubmitting)},e.useSubmitCount=function(e){return ye(e.emitter,"submitCount",()=>e.submitCount)},e.useTouched=function(e,t){return pe(e,y(t))},e.useTouchedByPath=pe,e.useTouchedFields=function(e){return ye(e.emitter,"touched",I.bind(null,e))},e.useValue=function(e,t){return ve(e,y(t))},e.useValueByPath=ve,e.useWatch=ye,e.validate=Y});
|
|
6
6
|
//# sourceMappingURL=index.umd.min.js.map
|