@lehnihon/bit-form 2.2.8 → 2.2.10
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/dist/angular/index.cjs +1 -1
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.d.cts +27 -59
- package/dist/angular/index.d.ts +27 -59
- package/dist/angular/index.js +1 -1
- package/dist/angular/index.js.map +1 -1
- package/dist/bus-BFOBGmd9.d.ts +41 -0
- package/dist/bus-DzTqgkZ4.d.cts +41 -0
- package/dist/chunk-2AFWJAQG.js +2 -0
- package/dist/chunk-2AFWJAQG.js.map +1 -0
- package/dist/chunk-3KI3GEU3.cjs +2 -0
- package/dist/chunk-3KI3GEU3.cjs.map +1 -0
- package/dist/chunk-4RQFECC7.cjs +2 -0
- package/dist/chunk-4RQFECC7.cjs.map +1 -0
- package/dist/chunk-FLFIOW75.js +2 -0
- package/dist/chunk-FLFIOW75.js.map +1 -0
- package/dist/chunk-G2FQQDRK.js +2 -0
- package/dist/chunk-G2FQQDRK.js.map +1 -0
- package/dist/chunk-GPMAT4PT.cjs +2 -0
- package/dist/chunk-GPMAT4PT.cjs.map +1 -0
- package/dist/chunk-GQ2QJCBF.js +2 -0
- package/dist/chunk-GQ2QJCBF.js.map +1 -0
- package/dist/chunk-ICYXODTQ.js +2 -0
- package/dist/chunk-ICYXODTQ.js.map +1 -0
- package/dist/{chunk-P2YWYBWG.cjs → chunk-IVPCXKYW.cjs} +2 -2
- package/dist/{chunk-P2YWYBWG.cjs.map → chunk-IVPCXKYW.cjs.map} +1 -1
- package/dist/{chunk-JC4R5WCC.js → chunk-LX4GSDUV.js} +2 -2
- package/dist/chunk-NVFZ22A7.cjs +2 -0
- package/dist/chunk-NVFZ22A7.cjs.map +1 -0
- package/dist/chunk-OPC7HFNN.js +2 -0
- package/dist/chunk-OPC7HFNN.js.map +1 -0
- package/dist/chunk-PA43XYOW.cjs +2 -0
- package/dist/{chunk-IV32WXCF.cjs.map → chunk-PA43XYOW.cjs.map} +1 -1
- package/dist/chunk-PG7ZH32Z.js +2 -0
- package/dist/chunk-PG7ZH32Z.js.map +1 -0
- package/dist/{chunk-D7JQWF6V.cjs → chunk-RHMJPKNV.cjs} +1 -1
- package/dist/{chunk-D7JQWF6V.cjs.map → chunk-RHMJPKNV.cjs.map} +1 -1
- package/dist/{chunk-EQ55DKX2.js → chunk-UIKO6GGW.js} +1 -1
- package/dist/chunk-UIKO6GGW.js.map +1 -0
- package/dist/chunk-VBX5I5XG.cjs +2 -0
- package/dist/chunk-VBX5I5XG.cjs.map +1 -0
- package/dist/chunk-ZKAFHJPU.cjs +2 -0
- package/dist/chunk-ZKAFHJPU.cjs.map +1 -0
- package/dist/cli/index.cjs +5 -5
- package/dist/{types-D6LhF5GC.d.cts → config-types-5eR82k2V.d.cts} +45 -168
- package/dist/{types-CG5nYeRk.d.ts → config-types-D9n-rQLk.d.ts} +45 -168
- package/dist/core/bindings.cjs +1 -1
- package/dist/core/bindings.cjs.map +1 -1
- package/dist/core/bindings.d.cts +33 -21
- package/dist/core/bindings.d.ts +33 -21
- package/dist/core/bindings.js +1 -1
- package/dist/core/status.cjs +1 -1
- package/dist/core/status.d.cts +5 -6
- package/dist/core/status.d.ts +5 -6
- package/dist/core/status.js +1 -1
- package/dist/core/store.cjs +1 -1
- package/dist/core/store.cjs.map +1 -1
- package/dist/core/store.d.cts +8 -6
- package/dist/core/store.d.ts +8 -6
- package/dist/core/store.js +1 -1
- package/dist/core/utils.cjs +1 -1
- package/dist/core/utils.cjs.map +1 -1
- package/dist/core/utils.d.cts +4 -12
- package/dist/core/utils.d.ts +4 -12
- package/dist/core/utils.js +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +10 -9
- package/dist/core.d.ts +10 -9
- package/dist/core.js +1 -1
- package/dist/devtools/bridge.cjs +1 -1
- package/dist/devtools/bridge.cjs.map +1 -1
- package/dist/devtools/bridge.d.cts +2 -3
- package/dist/devtools/bridge.d.ts +2 -3
- package/dist/devtools/bridge.js +1 -1
- package/dist/devtools/index.cjs +2 -2
- package/dist/devtools/index.cjs.map +1 -1
- package/dist/devtools/index.d.cts +5 -3
- package/dist/devtools/index.d.ts +5 -3
- package/dist/devtools/index.js +1 -1
- package/dist/devtools/index.js.map +1 -1
- package/dist/{field-binding-MX6jVQbT.d.ts → field-binding-Bi1g-D8X.d.ts} +1 -1
- package/dist/{field-binding-B_OX3bjp.d.cts → field-binding-X5TkvfUt.d.cts} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +7 -5
- package/dist/index.d.ts +7 -5
- package/dist/index.js +1 -1
- package/dist/mask.cjs +1 -1
- package/dist/mask.cjs.map +1 -1
- package/dist/mask.d.cts +2 -2
- package/dist/mask.d.ts +2 -2
- package/dist/mask.js +1 -1
- package/dist/mask.js.map +1 -1
- package/dist/meta-types-BC1VLABk.d.cts +28 -0
- package/dist/meta-types-BC1VLABk.d.ts +28 -0
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +12 -12
- package/dist/react/index.d.ts +12 -12
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react-native/index.cjs +1 -1
- package/dist/react-native/index.cjs.map +1 -1
- package/dist/react-native/index.d.cts +10 -9
- package/dist/react-native/index.d.ts +10 -9
- package/dist/react-native/index.js +1 -1
- package/dist/react-native/index.js.map +1 -1
- package/dist/resolvers/index.d.cts +2 -3
- package/dist/resolvers/index.d.ts +2 -3
- package/dist/resolvers/joi.d.cts +2 -3
- package/dist/resolvers/joi.d.ts +2 -3
- package/dist/resolvers/yup.d.cts +2 -3
- package/dist/resolvers/yup.d.ts +2 -3
- package/dist/resolvers/zod.d.cts +2 -3
- package/dist/resolvers/zod.d.ts +2 -3
- package/dist/runtime-types-D1SRZr-n.d.cts +43 -0
- package/dist/runtime-types-D1SRZr-n.d.ts +43 -0
- package/dist/state-types-8bUndWfg.d.cts +42 -0
- package/dist/state-types-8bUndWfg.d.ts +42 -0
- package/dist/{store-api-types-DPi30jQF.d.ts → store-api-types-Bozwlwyb.d.ts} +18 -14
- package/dist/{store-api-types-D-ZHxzRy.d.cts → store-api-types-DSgYwMS3.d.cts} +18 -14
- package/dist/{types-D8DgIUhJ.d.cts → types-CUXh7PqD.d.cts} +1 -1
- package/dist/{types-D8DgIUhJ.d.ts → types-CUXh7PqD.d.ts} +1 -1
- package/dist/upload-C4JqIaU2.d.cts +89 -0
- package/dist/upload-ao6skK9K.d.ts +89 -0
- package/dist/{use-bit-persist-BTwy8kvA.d.ts → use-bit-persist-Bd1H2fge.d.ts} +12 -45
- package/dist/{use-bit-persist-C2LHNTVv.d.cts → use-bit-persist-DDxV21AN.d.cts} +12 -45
- package/dist/utils.cjs +1 -1
- package/dist/utils.js +1 -1
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +18 -51
- package/dist/vue/index.d.ts +18 -51
- package/dist/vue/index.js +1 -1
- package/dist/vue/index.js.map +1 -1
- package/package.json +10 -7
- package/dist/array-controller-B5bfXV1W.d.cts +0 -23
- package/dist/array-controller-Cx-DMH7Y.d.ts +0 -23
- package/dist/bus-B2VEKrPI.d.ts +0 -19
- package/dist/bus-ZLQeq4Vr.d.cts +0 -19
- package/dist/chunk-63OJBMKK.js +0 -2
- package/dist/chunk-63OJBMKK.js.map +0 -1
- package/dist/chunk-CPP7ELA5.js +0 -2
- package/dist/chunk-CPP7ELA5.js.map +0 -1
- package/dist/chunk-E2NZR44P.js +0 -2
- package/dist/chunk-E2NZR44P.js.map +0 -1
- package/dist/chunk-EQ55DKX2.js.map +0 -1
- package/dist/chunk-IV32WXCF.cjs +0 -2
- package/dist/chunk-M6WBNHIT.cjs +0 -2
- package/dist/chunk-M6WBNHIT.cjs.map +0 -1
- package/dist/chunk-MFSQATNZ.cjs +0 -2
- package/dist/chunk-MFSQATNZ.cjs.map +0 -1
- package/dist/chunk-MFTWAFMG.cjs +0 -2
- package/dist/chunk-MFTWAFMG.cjs.map +0 -1
- package/dist/chunk-O5UPA33R.js +0 -2
- package/dist/chunk-O5UPA33R.js.map +0 -1
- package/dist/chunk-RD73EBSN.js +0 -2
- package/dist/chunk-RD73EBSN.js.map +0 -1
- package/dist/chunk-T2JRSWQU.cjs +0 -2
- package/dist/chunk-T2JRSWQU.cjs.map +0 -1
- package/dist/chunk-UQ3DSUWC.js +0 -2
- package/dist/chunk-UQ3DSUWC.js.map +0 -1
- package/dist/chunk-VZHG372Q.cjs +0 -2
- package/dist/chunk-VZHG372Q.cjs.map +0 -1
- package/dist/meta-types-Bzmm21TP.d.cts +0 -18
- package/dist/meta-types-Bzmm21TP.d.ts +0 -18
- package/dist/upload-C2mpfhp1.d.cts +0 -17
- package/dist/upload-C2mpfhp1.d.ts +0 -17
- /package/dist/{chunk-JC4R5WCC.js.map → chunk-LX4GSDUV.js.map} +0 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunk4RQFECC7cjs = require('./chunk-4RQFECC7.cjs');var _chunkNVFZ22A7cjs = require('./chunk-NVFZ22A7.cjs');var _chunkRHMJPKNVcjs = require('./chunk-RHMJPKNV.cjs');var _chunkZKAFHJPUcjs = require('./chunk-ZKAFHJPU.cjs');var _chunkVBX5I5XGcjs = require('./chunk-VBX5I5XG.cjs');var _react = require('react');var _jsxruntime = require('react/jsx-runtime');var L=_react.createContext.call(void 0, null),dt= exports.a =({store:t,children:e})=>_jsxruntime.jsx.call(void 0, L.Provider,{value:_chunk4RQFECC7cjs.d.call(void 0, t),children:e}),c= exports.b =()=>{let t=_react.useContext.call(void 0, L);if(!t)throw new Error("BitForm hooks devem ser usados dentro de um BitFormProvider");return t};function yt(){let t=c(),[e,r]=_react.useState.call(void 0, null),[n,o]=_react.useState.call(void 0, null),s=_react.useRef.call(void 0, null),m=_react.useCallback.call(void 0, S=>_chunkNVFZ22A7cjs.b.call(void 0, t,S),[t]),l=_react.useCallback.call(void 0, ()=>{let S=_chunkNVFZ22A7cjs.a.call(void 0, t);return s.current&&s.current.isValid===S.isValid&&s.current.isDirty===S.isDirty&&s.current.isSubmitting===S.isSubmitting?s.current:(s.current=S,S)},[t]),i=_react.useSyncExternalStore.call(void 0, m,l,l),d=_react.useMemo.call(void 0, ()=>_chunkNVFZ22A7cjs.i.call(void 0, t,{clearSubmissionState:()=>{r(null),o(null)},setSubmissionResult:S=>{o(S)},setSubmissionError:S=>{r(S)}}),[t]),{controller:a,actions:h}=d,x=_react.useCallback.call(void 0, a.submit,[a]),v=_react.useCallback.call(void 0, a.onSubmit,[a]),T=_react.useCallback.call(void 0, a.reset,[a]),u=_react.useCallback.call(void 0, a.getValues,[a]),b=_react.useCallback.call(void 0, a.getErrors,[a]),B=_react.useCallback.call(void 0, a.getTouched,[a]),g=_react.useCallback.call(void 0, a.getDirtyValues,[a]);return{meta:_react.useMemo.call(void 0, ()=>({...i,submitError:e,lastResponse:n}),[i,e,n]),getValues:u,getErrors:b,getTouched:B,getDirtyValues:g,submit:x,onSubmit:v,reset:T,...h}}function Et(t){let e=c(),r=_react.useMemo.call(void 0, ()=>_chunkNVFZ22A7cjs.g.call(void 0, e,t),[e,t]),n=_react.useCallback.call(void 0, ()=>r.readItems(),[r]),o=_react.useCallback.call(void 0, l=>e.observe.subscribePath(t,()=>l()),[e,t]),s=_react.useSyncExternalStore.call(void 0, o,n,n),m=_react.useMemo.call(void 0, ()=>r.getFields(s),[r,s]);return _react.useEffect.call(void 0, ()=>()=>{_chunkNVFZ22A7cjs.k.call(void 0, e,`${t}.`)},[e,t]),{fields:m,length:s.length,append:r.append,prepend:r.prepend,insert:r.insert,remove:r.remove,move:r.move,swap:r.swap,replace:r.replace,clear:r.clear}}function Mt(t){let e=c(),r=_react.useRef.call(void 0, null),n=_react.useCallback.call(void 0, ()=>{let i=e.read.getScopeStatus(t);return r.current&&_chunkRHMJPKNVcjs.b.call(void 0, r.current,i)?r.current:(r.current=i,i)},[e,t]),o=_react.useCallback.call(void 0, i=>e.observe.subscribeScopeStatus(t,()=>i()),[e,t]),s=_react.useSyncExternalStore.call(void 0, o,n,n),m=_react.useCallback.call(void 0, async()=>{let i=await e.feature.validate({scope:t}),d=e.read.getScopeErrors(t);return{valid:i,errors:d}},[e,t]),l=_react.useCallback.call(void 0, ()=>e.read.getScopeErrors(t),[e,t]);return{scopeName:t,status:s,errors:s.errors,validate:m,getErrors:l,isValid:!s.hasErrors,isDirty:s.isDirty}}function jt(t){let e=c(),[r,n]=_react.useState.call(void 0, 0),o=_nullishCoalesce(t[r], () => ("")),s=_react.useRef.call(void 0, null),m=_react.useCallback.call(void 0, ()=>{let u=e.read.getScopeStatus(o);return s.current&&_chunkRHMJPKNVcjs.b.call(void 0, s.current,u)?s.current:(s.current=u,u)},[e,o]),l=_react.useSyncExternalStore.call(void 0, _react.useCallback.call(void 0, u=>e.observe.subscribeScopeStatus(o,()=>u()),[e,o]),m,m),i=_react.useCallback.call(void 0, async()=>{let u=await e.feature.validate({scope:o}),b=e.read.getScopeErrors(o);return{valid:u,errors:b}},[e,o]),d=_react.useCallback.call(void 0, ()=>e.read.getScopeErrors(o),[e,o]),a=_react.useCallback.call(void 0, async()=>{let u=e.read.getScopeFields(o);if(e.feature.hasValidationsInProgress(u))return!1;let b=await e.feature.validate({scope:o});if(b)n(B=>Math.min(B+1,t.length-1));else{let B=e.read.getScopeErrors(o),g=Object.keys(B);g.length>0&&e.write.markFieldsTouched(g)}return b},[e,o,t.length]),h=_react.useCallback.call(void 0, ()=>{n(u=>Math.max(u-1,0))},[]),x=_react.useCallback.call(void 0, u=>{n(Math.max(0,Math.min(u-1,t.length-1)))},[t.length]),v=r===0,T=r>=t.length-1;return{step:r+1,stepIndex:r,scope:o,next:a,prev:h,goTo:x,isFirst:v,isLast:T,status:l,errors:l.errors,isValid:!l.hasErrors,isDirty:l.isDirty,validate:i,getErrors:d}}function $t(t){let e=c(),r=_react.useRef.call(void 0, null),n=_react.useCallback.call(void 0, ()=>{let s=_chunkVBX5I5XGcjs.f.call(void 0, e.read.getState().values,t);return r.current!==null&&_chunkVBX5I5XGcjs.c.call(void 0, r.current,s)?r.current:(r.current=s,s)},[e,t]),o=_react.useCallback.call(void 0, s=>e.observe.subscribePath(t,()=>s()),[e,t]);return _react.useSyncExternalStore.call(void 0, o,n,n)}function Kt(){let t=c(),e=_react.useSyncExternalStore.call(void 0, m=>_chunkNVFZ22A7cjs.e.call(void 0, t,m),()=>_chunkNVFZ22A7cjs.d.call(void 0, t),()=>_chunkNVFZ22A7cjs.d.call(void 0, t)),r=_react.useCallback.call(void 0, async()=>t.feature.restorePersisted(),[t]),n=_react.useCallback.call(void 0, async()=>{await t.feature.forceSave()},[t]),o=_react.useCallback.call(void 0, async()=>{await t.feature.clearPersisted()},[t]),s=_react.useMemo.call(void 0, ()=>({isSaving:e.isSaving,isRestoring:e.isRestoring,error:e.error}),[e]);return{restore:r,save:n,clear:o,meta:s}}function re(t){let e=c(),r=_react.useRef.call(void 0, null);_react.useEffect.call(void 0, ()=>()=>_chunkNVFZ22A7cjs.j.call(void 0, e,t),[e,t]);let n=_react.useCallback.call(void 0, ()=>{let i=e.read.getFieldState(t),d=_chunkZKAFHJPUcjs.a.call(void 0, i,r.current);return r.current=d,d},[e,t]),o=_react.useCallback.call(void 0, i=>e.observe.subscribeFieldState(t,()=>i()),[e,t]),s=_react.useSyncExternalStore.call(void 0, o,n,n),m=_react.useCallback.call(void 0, i=>e.write.setField(t,i),[e,t]),l=_react.useCallback.call(void 0, ()=>e.write.blurField(t),[e,t]);return{fieldState:s,setValue:m,setBlur:l,store:e}}exports.a = dt; exports.b = c; exports.c = yt; exports.d = re; exports.e = Et; exports.f = Mt; exports.g = jt; exports.h = $t; exports.i = Kt;
|
|
2
|
+
//# sourceMappingURL=chunk-GPMAT4PT.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-GPMAT4PT.cjs","../src/react/context.tsx","../src/react/use-bit-form.ts","../src/react/use-bit-array.ts"],"names":["BitContext","createContext","BitFormProvider","store","children","jsx","createFrameworkStoreAdapter","useBitStore","useContext","useBitForm","submitError","setSubmitError","useState","lastResponse","setLastResponse","lastMeta","useRef","subscribeMeta","useCallback","cb","subscribeFormMetaSnapshot","getMetaSnapshot","nextMeta","readFormMetaSnapshot","metaState","useSyncExternalStore","binding","useMemo","createFrameworkFormBinding","result","error","controller","actions","submit","onSubmit","reset","getValues","getErrors","getTouched","getDirtyValues","useBitArray","path","createArrayBinding","getSnapshot","subscribeArray","data","fields","useEffect","cleanupRegisteredPrefix"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-GPMAT4PT.cjs","sourcesContent":[null,"import React, { createContext, useContext } from \"react\";\nimport type { BitFrameworkStoreApi, BitStoreApi } from \"../core\";\nimport { createFrameworkStoreAdapter } from \"../core\";\n\nconst BitContext = createContext<BitFrameworkStoreApi<any> | null>(null);\n\nexport const BitFormProvider = ({\n store,\n children,\n}: {\n store: BitFrameworkStoreApi<any> | BitStoreApi<any>;\n children: React.ReactNode;\n}) => (\n <BitContext.Provider value={createFrameworkStoreAdapter(store)}>\n {children}\n </BitContext.Provider>\n);\n\nexport const useBitStore = <T extends object>() => {\n const store = useContext(BitContext);\n if (!store)\n throw new Error(\n \"BitForm hooks devem ser usados dentro de um BitFormProvider\",\n );\n return store as BitFrameworkStoreApi<T>;\n};\n","import {\n useCallback,\n useSyncExternalStore,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useBitStore } from \"./context\";\nimport {\n createFrameworkFormBinding,\n readFormMetaSnapshot,\n subscribeFormMetaSnapshot,\n} from \"../core\";\nimport type { UseBitFormResult } from \"./types\";\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n\n const [submitError, setSubmitError] = useState<Error | null>(null);\n const [lastResponse, setLastResponse] = useState<unknown>(null);\n const lastMeta = useRef<ReturnType<typeof readFormMetaSnapshot<T>> | null>(\n null,\n );\n\n const subscribeMeta = useCallback(\n (cb: () => void) => subscribeFormMetaSnapshot(store, cb),\n [store],\n );\n const getMetaSnapshot = useCallback(() => {\n const nextMeta = readFormMetaSnapshot(store);\n\n if (\n lastMeta.current &&\n lastMeta.current.isValid === nextMeta.isValid &&\n lastMeta.current.isDirty === nextMeta.isDirty &&\n lastMeta.current.isSubmitting === nextMeta.isSubmitting\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const metaState = useSyncExternalStore(\n subscribeMeta,\n getMetaSnapshot,\n getMetaSnapshot,\n );\n\n const binding = useMemo(\n () =>\n createFrameworkFormBinding(store, {\n clearSubmissionState: () => {\n setSubmitError(null);\n setLastResponse(null);\n },\n setSubmissionResult: (result) => {\n setLastResponse(result);\n },\n setSubmissionError: (error) => {\n setSubmitError(error);\n },\n }),\n [store],\n );\n\n const { controller, actions } = binding;\n\n const submit = useCallback(controller.submit, [controller]);\n const onSubmit = useCallback(controller.onSubmit, [controller]);\n const reset = useCallback(controller.reset, [controller]);\n\n const getValues = useCallback(controller.getValues, [controller]);\n const getErrors = useCallback(controller.getErrors, [controller]);\n const getTouched = useCallback(controller.getTouched, [controller]);\n const getDirtyValues = useCallback(controller.getDirtyValues, [controller]);\n\n const meta = useMemo(\n () => ({\n ...metaState,\n submitError,\n lastResponse,\n }),\n [metaState, submitError, lastResponse],\n );\n\n return {\n // Metadata (grouped)\n meta,\n // Getters\n getValues,\n getErrors,\n getTouched,\n getDirtyValues,\n // Main actions (frequent use - flat)\n submit,\n onSubmit,\n reset,\n ...actions,\n };\n}\n","import { useCallback, useEffect, useMemo, useSyncExternalStore } from \"react\";\nimport {\n BitArrayPath,\n cleanupRegisteredPrefix,\n createArrayBinding,\n} from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const controller = useMemo(\n () => createArrayBinding<TForm, P>(store, path),\n [store, path],\n );\n\n const getSnapshot = useCallback(() => {\n return controller.readItems();\n }, [controller]);\n\n const subscribeArray = useCallback(\n (cb: () => void) => store.observe.subscribePath(path, () => cb()),\n [store, path],\n );\n\n const data = useSyncExternalStore(subscribeArray, getSnapshot, getSnapshot);\n\n const fields = useMemo(() => controller.getFields(data), [controller, data]);\n\n useEffect(() => {\n return () => {\n cleanupRegisteredPrefix(store, `${path as string}.`);\n };\n }, [store, path]);\n\n return {\n fields,\n length: data.length,\n append: controller.append,\n prepend: controller.prepend,\n insert: controller.insert,\n remove: controller.remove,\n move: controller.move,\n swap: controller.swap,\n replace: controller.replace,\n clear: controller.clear,\n };\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{d as M}from"./chunk-G2FQQDRK.js";import{a as A,b as C,d as E,e as D,g as U,i as j,j as I,k as q}from"./chunk-2AFWJAQG.js";import{b as F}from"./chunk-UIKO6GGW.js";import{a as k}from"./chunk-OPC7HFNN.js";import{c as V,f as w}from"./chunk-FLFIOW75.js";import{createContext as G,useContext as H}from"react";import{jsx as J}from"react/jsx-runtime";var L=G(null),dt=({store:t,children:e})=>J(L.Provider,{value:M(t),children:e}),c=()=>{let t=H(L);if(!t)throw new Error("BitForm hooks devem ser usados dentro de um BitFormProvider");return t};import{useCallback as p,useSyncExternalStore as K,useMemo as W,useRef as Q,useState as O}from"react";function yt(){let t=c(),[e,r]=O(null),[n,o]=O(null),s=Q(null),m=p(S=>C(t,S),[t]),l=p(()=>{let S=A(t);return s.current&&s.current.isValid===S.isValid&&s.current.isDirty===S.isDirty&&s.current.isSubmitting===S.isSubmitting?s.current:(s.current=S,S)},[t]),i=K(m,l,l),d=W(()=>j(t,{clearSubmissionState:()=>{r(null),o(null)},setSubmissionResult:S=>{o(S)},setSubmissionError:S=>{r(S)}}),[t]),{controller:a,actions:h}=d,x=p(a.submit,[a]),v=p(a.onSubmit,[a]),T=p(a.reset,[a]),u=p(a.getValues,[a]),b=p(a.getErrors,[a]),B=p(a.getTouched,[a]),g=p(a.getDirtyValues,[a]);return{meta:W(()=>({...i,submitError:e,lastResponse:n}),[i,e,n]),getValues:u,getErrors:b,getTouched:B,getDirtyValues:g,submit:x,onSubmit:v,reset:T,...h}}import{useCallback as _,useEffect as X,useMemo as $,useSyncExternalStore as Y}from"react";function Et(t){let e=c(),r=$(()=>U(e,t),[e,t]),n=_(()=>r.readItems(),[r]),o=_(l=>e.observe.subscribePath(t,()=>l()),[e,t]),s=Y(o,n,n),m=$(()=>r.getFields(s),[r,s]);return X(()=>()=>{q(e,`${t}.`)},[e,t]),{fields:m,length:s.length,append:r.append,prepend:r.prepend,insert:r.insert,remove:r.remove,move:r.move,swap:r.swap,replace:r.replace,clear:r.clear}}import{useCallback as y,useRef as Z,useSyncExternalStore as N}from"react";function Mt(t){let e=c(),r=Z(null),n=y(()=>{let i=e.read.getScopeStatus(t);return r.current&&F(r.current,i)?r.current:(r.current=i,i)},[e,t]),o=y(i=>e.observe.subscribeScopeStatus(t,()=>i()),[e,t]),s=N(o,n,n),m=y(async()=>{let i=await e.feature.validate({scope:t}),d=e.read.getScopeErrors(t);return{valid:i,errors:d}},[e,t]),l=y(()=>e.read.getScopeErrors(t),[e,t]);return{scopeName:t,status:s,errors:s.errors,validate:m,getErrors:l,isValid:!s.hasErrors,isDirty:s.isDirty}}import{useCallback as f,useRef as tt,useState as et,useSyncExternalStore as rt}from"react";function jt(t){let e=c(),[r,n]=et(0),o=t[r]??"",s=tt(null),m=f(()=>{let u=e.read.getScopeStatus(o);return s.current&&F(s.current,u)?s.current:(s.current=u,u)},[e,o]),l=rt(f(u=>e.observe.subscribeScopeStatus(o,()=>u()),[e,o]),m,m),i=f(async()=>{let u=await e.feature.validate({scope:o}),b=e.read.getScopeErrors(o);return{valid:u,errors:b}},[e,o]),d=f(()=>e.read.getScopeErrors(o),[e,o]),a=f(async()=>{let u=e.read.getScopeFields(o);if(e.feature.hasValidationsInProgress(u))return!1;let b=await e.feature.validate({scope:o});if(b)n(B=>Math.min(B+1,t.length-1));else{let B=e.read.getScopeErrors(o),g=Object.keys(B);g.length>0&&e.write.markFieldsTouched(g)}return b},[e,o,t.length]),h=f(()=>{n(u=>Math.max(u-1,0))},[]),x=f(u=>{n(Math.max(0,Math.min(u-1,t.length-1)))},[t.length]),v=r===0,T=r>=t.length-1;return{step:r+1,stepIndex:r,scope:o,next:a,prev:h,goTo:x,isFirst:v,isLast:T,status:l,errors:l.errors,isValid:!l.hasErrors,isDirty:l.isDirty,validate:i,getErrors:d}}import{useCallback as z,useSyncExternalStore as st,useRef as ot}from"react";function $t(t){let e=c(),r=ot(null),n=z(()=>{let s=w(e.read.getState().values,t);return r.current!==null&&V(r.current,s)?r.current:(r.current=s,s)},[e,t]),o=z(s=>e.observe.subscribePath(t,()=>s()),[e,t]);return st(o,n,n)}import{useCallback as R,useMemo as nt,useSyncExternalStore as it}from"react";function Kt(){let t=c(),e=it(m=>D(t,m),()=>E(t),()=>E(t)),r=R(async()=>t.feature.restorePersisted(),[t]),n=R(async()=>{await t.feature.forceSave()},[t]),o=R(async()=>{await t.feature.clearPersisted()},[t]),s=nt(()=>({isSaving:e.isSaving,isRestoring:e.isRestoring,error:e.error}),[e]);return{restore:r,save:n,clear:o,meta:s}}import{useCallback as P,useEffect as at,useRef as ut,useSyncExternalStore as ct}from"react";function re(t){let e=c(),r=ut(null);at(()=>()=>I(e,t),[e,t]);let n=P(()=>{let i=e.read.getFieldState(t),d=k(i,r.current);return r.current=d,d},[e,t]),o=P(i=>e.observe.subscribeFieldState(t,()=>i()),[e,t]),s=ct(o,n,n),m=P(i=>e.write.setField(t,i),[e,t]),l=P(()=>e.write.blurField(t),[e,t]);return{fieldState:s,setValue:m,setBlur:l,store:e}}export{dt as a,c as b,yt as c,re as d,Et as e,Mt as f,jt as g,$t as h,Kt as i};
|
|
2
|
+
//# sourceMappingURL=chunk-GQ2QJCBF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/react/context.tsx","../src/react/use-bit-form.ts","../src/react/use-bit-array.ts","../src/react/use-bit-scope.ts","../src/react/use-bit-steps.ts","../src/react/use-bit-watch.ts","../src/react/use-bit-persist.ts","../src/react/use-bit-field-base.ts"],"sourcesContent":["import React, { createContext, useContext } from \"react\";\nimport type { BitFrameworkStoreApi, BitStoreApi } from \"../core\";\nimport { createFrameworkStoreAdapter } from \"../core\";\n\nconst BitContext = createContext<BitFrameworkStoreApi<any> | null>(null);\n\nexport const BitFormProvider = ({\n store,\n children,\n}: {\n store: BitFrameworkStoreApi<any> | BitStoreApi<any>;\n children: React.ReactNode;\n}) => (\n <BitContext.Provider value={createFrameworkStoreAdapter(store)}>\n {children}\n </BitContext.Provider>\n);\n\nexport const useBitStore = <T extends object>() => {\n const store = useContext(BitContext);\n if (!store)\n throw new Error(\n \"BitForm hooks devem ser usados dentro de um BitFormProvider\",\n );\n return store as BitFrameworkStoreApi<T>;\n};\n","import {\n useCallback,\n useSyncExternalStore,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useBitStore } from \"./context\";\nimport {\n createFrameworkFormBinding,\n readFormMetaSnapshot,\n subscribeFormMetaSnapshot,\n} from \"../core\";\nimport type { UseBitFormResult } from \"./types\";\n\nexport function useBitForm<T extends object>(): UseBitFormResult<T> {\n const store = useBitStore<T>();\n\n const [submitError, setSubmitError] = useState<Error | null>(null);\n const [lastResponse, setLastResponse] = useState<unknown>(null);\n const lastMeta = useRef<ReturnType<typeof readFormMetaSnapshot<T>> | null>(\n null,\n );\n\n const subscribeMeta = useCallback(\n (cb: () => void) => subscribeFormMetaSnapshot(store, cb),\n [store],\n );\n const getMetaSnapshot = useCallback(() => {\n const nextMeta = readFormMetaSnapshot(store);\n\n if (\n lastMeta.current &&\n lastMeta.current.isValid === nextMeta.isValid &&\n lastMeta.current.isDirty === nextMeta.isDirty &&\n lastMeta.current.isSubmitting === nextMeta.isSubmitting\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const metaState = useSyncExternalStore(\n subscribeMeta,\n getMetaSnapshot,\n getMetaSnapshot,\n );\n\n const binding = useMemo(\n () =>\n createFrameworkFormBinding(store, {\n clearSubmissionState: () => {\n setSubmitError(null);\n setLastResponse(null);\n },\n setSubmissionResult: (result) => {\n setLastResponse(result);\n },\n setSubmissionError: (error) => {\n setSubmitError(error);\n },\n }),\n [store],\n );\n\n const { controller, actions } = binding;\n\n const submit = useCallback(controller.submit, [controller]);\n const onSubmit = useCallback(controller.onSubmit, [controller]);\n const reset = useCallback(controller.reset, [controller]);\n\n const getValues = useCallback(controller.getValues, [controller]);\n const getErrors = useCallback(controller.getErrors, [controller]);\n const getTouched = useCallback(controller.getTouched, [controller]);\n const getDirtyValues = useCallback(controller.getDirtyValues, [controller]);\n\n const meta = useMemo(\n () => ({\n ...metaState,\n submitError,\n lastResponse,\n }),\n [metaState, submitError, lastResponse],\n );\n\n return {\n // Metadata (grouped)\n meta,\n // Getters\n getValues,\n getErrors,\n getTouched,\n getDirtyValues,\n // Main actions (frequent use - flat)\n submit,\n onSubmit,\n reset,\n ...actions,\n };\n}\n","import { useCallback, useEffect, useMemo, useSyncExternalStore } from \"react\";\nimport {\n BitArrayPath,\n cleanupRegisteredPrefix,\n createArrayBinding,\n} from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport function useBitArray<\n TForm extends object = any,\n P extends BitArrayPath<TForm> = BitArrayPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const controller = useMemo(\n () => createArrayBinding<TForm, P>(store, path),\n [store, path],\n );\n\n const getSnapshot = useCallback(() => {\n return controller.readItems();\n }, [controller]);\n\n const subscribeArray = useCallback(\n (cb: () => void) => store.observe.subscribePath(path, () => cb()),\n [store, path],\n );\n\n const data = useSyncExternalStore(subscribeArray, getSnapshot, getSnapshot);\n\n const fields = useMemo(() => controller.getFields(data), [controller, data]);\n\n useEffect(() => {\n return () => {\n cleanupRegisteredPrefix(store, `${path as string}.`);\n };\n }, [store, path]);\n\n return {\n fields,\n length: data.length,\n append: controller.append,\n prepend: controller.prepend,\n insert: controller.insert,\n remove: controller.remove,\n move: controller.move,\n swap: controller.swap,\n replace: controller.replace,\n clear: controller.clear,\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { isScopeStatusEqual } from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n\n const lastStatus = useRef<ScopeStatus | null>(null);\n\n const getStatusSnapshot = useCallback(() => {\n const nextStatus = store.read.getScopeStatus(scopeName);\n\n if (\n lastStatus.current &&\n isScopeStatusEqual(lastStatus.current, nextStatus)\n ) {\n return lastStatus.current;\n }\n\n lastStatus.current = nextStatus;\n return nextStatus;\n }, [store, scopeName]);\n\n // Assina apenas os slices de estado relevantes para o escopo (errors e\n // isDirty), evitando execuções desnecessárias do getStatusSnapshot em\n // mudanças não relacionadas (isSubmitting, isValidating de outros campos…)\n const subscribe = useCallback(\n (cb: () => void) =>\n store.observe.subscribeScopeStatus(scopeName, () => cb()),\n [store, scopeName],\n );\n\n const status = useSyncExternalStore(\n subscribe,\n getStatusSnapshot,\n getStatusSnapshot,\n );\n\n const validate = useCallback(async (): Promise<ValidateScopeResult> => {\n const valid = await store.feature.validate({ scope: scopeName });\n const errors = store.read.getScopeErrors(scopeName);\n return { valid, errors };\n }, [store, scopeName]);\n\n const getErrors = useCallback(() => {\n return store.read.getScopeErrors(scopeName);\n }, [store, scopeName]);\n\n return {\n scopeName,\n status,\n errors: status.errors,\n validate,\n getErrors,\n isValid: !status.hasErrors,\n isDirty: status.isDirty,\n };\n}\n","import { useCallback, useRef, useState, useSyncExternalStore } from \"react\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport { isScopeStatusEqual } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitStepsResult } from \"./types\";\n\nexport function useBitSteps(scopeNames: string[]): UseBitStepsResult {\n const store = useBitStore();\n const [stepIndex, setStepIndex] = useState(0);\n\n const scope = scopeNames[stepIndex] ?? \"\";\n const lastStatus = useRef<ScopeStatus | null>(null);\n\n const getStatusSnapshot = useCallback(() => {\n const nextStatus = store.read.getScopeStatus(scope);\n\n if (\n lastStatus.current &&\n isScopeStatusEqual(lastStatus.current, nextStatus)\n ) {\n return lastStatus.current;\n }\n\n lastStatus.current = nextStatus;\n return nextStatus;\n }, [store, scope]);\n\n const status = useSyncExternalStore(\n useCallback(\n (cb: () => void) => store.observe.subscribeScopeStatus(scope, () => cb()),\n [store, scope],\n ),\n getStatusSnapshot,\n getStatusSnapshot,\n );\n\n const validate = useCallback(async (): Promise<ValidateScopeResult> => {\n const valid = await store.feature.validate({ scope });\n const errors = store.read.getScopeErrors(scope);\n return { valid, errors };\n }, [store, scope]);\n\n const getErrors = useCallback(() => {\n return store.read.getScopeErrors(scope);\n }, [store, scope]);\n\n const next = useCallback(async (): Promise<boolean> => {\n const scopeFields = store.read.getScopeFields(scope);\n\n if (store.feature.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.feature.validate({ scope });\n if (valid) {\n setStepIndex((s) => Math.min(s + 1, scopeNames.length - 1));\n } else {\n const errors = store.read.getScopeErrors(scope);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.write.markFieldsTouched(pathsWithErrors);\n }\n }\n return valid;\n }, [store, scope, scopeNames.length]);\n\n const prev = useCallback(() => {\n setStepIndex((s) => Math.max(s - 1, 0));\n }, []);\n\n const goTo = useCallback(\n (targetStep: number) => {\n setStepIndex(\n Math.max(0, Math.min(targetStep - 1, scopeNames.length - 1)),\n );\n },\n [scopeNames.length],\n );\n\n const isFirst = stepIndex === 0;\n const isLast = stepIndex >= scopeNames.length - 1;\n\n return {\n step: stepIndex + 1,\n stepIndex,\n scope,\n next,\n prev,\n goTo,\n isFirst,\n isLast,\n status,\n errors: status.errors,\n isValid: !status.hasErrors,\n isDirty: status.isDirty,\n validate,\n getErrors,\n };\n}\n","import { useCallback, useSyncExternalStore, useRef } from \"react\";\nimport { useBitStore } from \"./context\";\nimport { getDeepValue, valueEqual, BitPath, BitPathValue } from \"../core\";\n\nexport function useBitWatch<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): BitPathValue<TForm, P> {\n const store = useBitStore<TForm>();\n const lastValue = useRef<BitPathValue<TForm, P> | null>(null);\n\n const getSnapshot = useCallback(() => {\n const value = getDeepValue(\n store.read.getState().values,\n path as string,\n ) as BitPathValue<TForm, P>;\n\n if (lastValue.current !== null && valueEqual(lastValue.current, value)) {\n return lastValue.current;\n }\n\n lastValue.current = value;\n return value;\n }, [store, path]);\n\n // Assina apenas o path monitorado → evita executar getSnapshot em toda\n // mudança de estado do store (blur, validation, outros campos, etc.)\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribePath(path, () => cb()),\n [store, path],\n );\n\n return useSyncExternalStore(\n subscribe,\n getSnapshot,\n getSnapshot,\n ) as BitPathValue<TForm, P>;\n}\n","import { useCallback, useMemo, useSyncExternalStore } from \"react\";\nimport { useBitStore } from \"./context\";\nimport { readPersistMetaSnapshot, subscribePersistMetaSnapshot } from \"../core\";\nimport type { UseBitPersistResult } from \"./types\";\n\nexport function useBitPersist(): UseBitPersistResult {\n const store = useBitStore<any>();\n\n const persistMeta = useSyncExternalStore(\n (cb) => subscribePersistMetaSnapshot(store, cb),\n () => readPersistMetaSnapshot(store),\n () => readPersistMetaSnapshot(store),\n );\n\n const restore = useCallback(async () => {\n return store.feature.restorePersisted();\n }, [store]);\n\n const save = useCallback(async () => {\n await store.feature.forceSave();\n }, [store]);\n\n const clear = useCallback(async () => {\n await store.feature.clearPersisted();\n }, [store]);\n\n const meta = useMemo(\n () => ({\n isSaving: persistMeta.isSaving,\n isRestoring: persistMeta.isRestoring,\n error: persistMeta.error,\n }),\n [persistMeta],\n );\n\n return {\n restore,\n save,\n clear,\n meta,\n };\n}\n","import { useCallback, useEffect, useRef, useSyncExternalStore } from \"react\";\nimport {\n BitFieldSnapshot,\n BitPath,\n BitPathValue,\n cleanupRegisteredField,\n createFieldStateSnapshot,\n} from \"../core\";\nimport { useBitStore } from \"./context\";\n\nexport function useBitFieldBase<\n _TValue = any,\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P) {\n const store = useBitStore<TForm>();\n const lastSnapshot = useRef<BitFieldSnapshot<BitPathValue<TForm, P>> | null>(\n null,\n );\n\n useEffect(() => {\n return () => cleanupRegisteredField(store, path as string);\n }, [store, path]);\n\n const getSnapshot = useCallback(() => {\n const nextState = store.read.getFieldState(path);\n const snapshot = createFieldStateSnapshot(nextState, lastSnapshot.current);\n lastSnapshot.current = snapshot;\n return snapshot;\n }, [store, path]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeFieldState(path, () => cb()),\n [store, path],\n );\n\n const fieldState = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P>) => store.write.setField(path, val),\n [store, path],\n );\n\n const setBlur = useCallback(() => store.write.blurField(path), [store, path]);\n\n return { fieldState, setValue, setBlur, store };\n}\n"],"mappings":"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","names":["createContext","useContext","jsx","BitContext","createContext","BitFormProvider","store","children","createFrameworkStoreAdapter","useBitStore","useContext","useCallback","useSyncExternalStore","useMemo","useRef","useState","useBitForm","store","useBitStore","submitError","setSubmitError","useState","lastResponse","setLastResponse","lastMeta","useRef","subscribeMeta","useCallback","cb","subscribeFormMetaSnapshot","getMetaSnapshot","nextMeta","readFormMetaSnapshot","metaState","useSyncExternalStore","binding","useMemo","createFrameworkFormBinding","result","error","controller","actions","submit","onSubmit","reset","getValues","getErrors","getTouched","getDirtyValues","useCallback","useEffect","useMemo","useSyncExternalStore","useBitArray","path","store","useBitStore","controller","useMemo","createArrayBinding","getSnapshot","useCallback","subscribeArray","cb","data","useSyncExternalStore","fields","useEffect","cleanupRegisteredPrefix","useCallback","useRef","useSyncExternalStore","useBitScope","scopeName","store","useBitStore","lastStatus","useRef","getStatusSnapshot","useCallback","nextStatus","isScopeStatusEqual","subscribe","cb","status","useSyncExternalStore","validate","valid","errors","getErrors","useCallback","useRef","useState","useSyncExternalStore","useBitSteps","scopeNames","store","useBitStore","stepIndex","setStepIndex","useState","scope","lastStatus","useRef","getStatusSnapshot","useCallback","nextStatus","isScopeStatusEqual","status","useSyncExternalStore","cb","validate","valid","errors","getErrors","next","scopeFields","s","pathsWithErrors","prev","goTo","targetStep","isFirst","isLast","useCallback","useSyncExternalStore","useRef","useBitWatch","path","store","useBitStore","lastValue","useRef","getSnapshot","useCallback","value","getDeepValue","valueEqual","subscribe","cb","useSyncExternalStore","useCallback","useMemo","useSyncExternalStore","useBitPersist","store","useBitStore","persistMeta","useSyncExternalStore","cb","subscribePersistMetaSnapshot","readPersistMetaSnapshot","restore","useCallback","save","clear","meta","useMemo","useCallback","useEffect","useRef","useSyncExternalStore","useBitFieldBase","path","store","useBitStore","lastSnapshot","useRef","useEffect","cleanupRegisteredField","getSnapshot","useCallback","nextState","snapshot","createFieldStateSnapshot","subscribe","cb","fieldState","useSyncExternalStore","setValue","val","setBlur"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function o(e){let i=e.touched?e.error:void 0,r=!!e.error;return{error:i,touched:e.touched,invalid:!!(e.touched&&e.error),isValidating:e.isValidating,isDirty:e.isDirty,isHidden:e.isHidden,isRequired:e.isRequired,hasError:r}}export{o as a};
|
|
2
|
+
//# sourceMappingURL=chunk-ICYXODTQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/utils/field-meta.ts"],"sourcesContent":["import type { BitFieldState } from \"../store/contracts/types\";\n\nexport interface BitDerivedFieldMeta {\n error: string | undefined;\n touched: boolean;\n invalid: boolean;\n isValidating: boolean;\n isDirty: boolean;\n isHidden: boolean;\n isRequired: boolean;\n hasError: boolean;\n}\n\nexport function deriveFieldMeta<T extends object, TValue>(\n state: Readonly<BitFieldState<T, TValue>>,\n): BitDerivedFieldMeta {\n const error = state.touched ? state.error : undefined;\n const hasError = !!state.error;\n\n return {\n error,\n touched: state.touched,\n invalid: !!(state.touched && state.error),\n isValidating: state.isValidating,\n isDirty: state.isDirty,\n isHidden: state.isHidden,\n isRequired: state.isRequired,\n hasError,\n };\n}\n"],"mappings":"AAaO,SAASA,EACdC,EACqB,CACrB,IAAMC,EAAQD,EAAM,QAAUA,EAAM,MAAQ,OACtCE,EAAW,CAAC,CAACF,EAAM,MAEzB,MAAO,CACL,MAAAC,EACA,QAASD,EAAM,QACf,QAAS,CAAC,EAAEA,EAAM,SAAWA,EAAM,OACnC,aAAcA,EAAM,aACpB,QAASA,EAAM,QACf,SAAUA,EAAM,SAChB,WAAYA,EAAM,WAClB,SAAAE,CACF,CACF","names":["deriveFieldMeta","state","error","hasError"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkQKGTVKBUcjs = require('./chunk-QKGTVKBU.cjs');var
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkQKGTVKBUcjs = require('./chunk-QKGTVKBU.cjs');var _chunk4RQFECC7cjs = require('./chunk-4RQFECC7.cjs');function R(e){return{values:e.values,errors:e.errors,touched:e.touched,isValid:e.isValid,isDirty:e.isDirty,isSubmitting:e.isSubmitting,isValidating:e.isValidating,persist:e.persist}}function k(e){let o=e.getHistoryMetadata();return{...R(e.getState()),_meta:{canUndo:o.canUndo,canRedo:o.canRedo,totalSteps:o.historySize,currentIndex:o.historyIndex}}}function b(e){let o={};for(let[t,i]of Object.entries(e))o[t]=k(i);return o}function w(e){if(!e||typeof e!="object")return!1;let o=e;return typeof o.getState=="function"&&typeof o.getHistoryMetadata=="function"}function I(e){if(!w(e))return!1;let o=e;return typeof o.undo=="function"&&typeof o.redo=="function"&&typeof o.reset=="function"}function B(e,o){let t=e[o];return I(t)?t:null}var S=null,O=50;function N(e,o=_chunk4RQFECC7cjs.a){S&&(console.warn("[bit-form] Reiniciando ponte do DevTools (Fast Refresh detectado)."),S());let t=null,i=null,f,n=null,a=new Set,T=!1,u=r=>{_optionalChain([t, 'optionalAccess', _ => _.readyState])===WebSocket.OPEN&&t.send(JSON.stringify(r))},h=()=>{if(a.size===0)return;let r=b(Array.from(a).reduce((s,l)=>{let d=o.stores[l];return d&&(s[l]=d),s},{}));a.clear(),n=null,Object.keys(r).length>0&&u({type:"STATE_UPDATE",protocolVersion:1,payload:r})},D=()=>{n||(n=setTimeout(()=>{h()},O))},y=()=>{T=!1,t=new WebSocket(e),t.onopen=()=>{console.log("[bit-form] \u{1F50C} Conectado ao CLI DevTools via WebSocket."),u({type:"HELLO",protocolVersion:1,payload:{role:"server",protocolVersion:1}});let r=b(o.stores);Object.keys(r).length>0&&u({type:"STATE_UPDATE",protocolVersion:1,payload:r}),i=o.subscribe((s,l)=>{a.add(s),D()}),f=setInterval(()=>{u({type:"PING",protocolVersion:1})},3e4)},t.onmessage=r=>{try{let s=JSON.parse(r.data);if(_chunkQKGTVKBUcjs.c.call(void 0, s)){let{storeId:l,action:d}=s.payload,p=B(o.stores,l);if(!p)return;switch(d){case"undo":p.undo();break;case"redo":p.redo();break;case"reset":p.reset();break}}}catch(s){console.warn("[bit-form] Erro ao processar comando do CLI:",s)}},t.onclose=()=>{i&&i(),clearInterval(f),n&&(clearTimeout(n),n=null),a.clear(),T?console.log("[bit-form] Ponte antiga encerrada com sucesso."):(console.log("[bit-form] Conex\xE3o perdida. Reconectando em 3s..."),setTimeout(y,3e3))}};y();let m=()=>{T=!0,i&&i(),clearInterval(f),n&&(clearTimeout(n),n=null),a.clear(),t&&(t.readyState===WebSocket.OPEN||t.readyState===WebSocket.CONNECTING)&&t.close(),S=null};return S=m,m}exports.a = b; exports.b = B; exports.c = N;
|
|
2
|
+
//# sourceMappingURL=chunk-IVPCXKYW.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-P2YWYBWG.cjs","../src/devtools/store-snapshot.ts","../src/devtools/store-port.ts","../src/devtools/bridge.ts"],"names":["normalizeStoreState","state","createDevToolsStoreSnapshot","store","historyMeta","createDevToolsSnapshotMap","stores","snapshots","storeId","instance","isDevToolsReadableStore","value","candidate","isDevToolsActionableStore","getDevToolsActionableStore","activeBridgeCleanup","STATE_BATCH_INTERVAL_MS","setupRemoteBridge","url","bus","bitBus","socket","unsubscribeBus","heartbeatInterval","batchFlushTimeout","pendingStoreIds","isIntentionalDisconnect","sendWhenOpen","message","flushPendingStoreUpdates","payload","acc","storeInstance","scheduleStoreFlush","connect","initialState","_newState","event","isDevToolsActionMessage","action","e","cleanup"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-P2YWYBWG.cjs","sourcesContent":[null,"import type { BitBusStorePort, BitState } from \"../core\";\nimport type { DevToolsStoreSnapshot, DevToolsStoreSnapshots } from \"./protocol\";\n\nfunction normalizeStoreState<T extends object>(\n state: Readonly<BitState<T>>,\n): Omit<DevToolsStoreSnapshot, \"_meta\"> {\n return {\n values: state.values,\n errors: state.errors as Record<string, unknown>,\n touched: state.touched as Record<string, unknown>,\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n isValidating: state.isValidating as Record<string, unknown>,\n persist: state.persist,\n };\n}\n\nexport function createDevToolsStoreSnapshot<T extends object>(store: {\n getState: () => Readonly<BitState<T>>;\n getHistoryMetadata: () => {\n canUndo: boolean;\n canRedo: boolean;\n historySize: number;\n historyIndex: number;\n };\n}): DevToolsStoreSnapshot {\n const historyMeta = store.getHistoryMetadata();\n\n return {\n ...normalizeStoreState(store.getState()),\n _meta: {\n canUndo: historyMeta.canUndo,\n canRedo: historyMeta.canRedo,\n totalSteps: historyMeta.historySize,\n currentIndex: historyMeta.historyIndex,\n },\n };\n}\n\nexport function createDevToolsSnapshotMap(\n stores: Record<string, BitBusStorePort<object>>,\n): DevToolsStoreSnapshots {\n const snapshots: DevToolsStoreSnapshots = {};\n\n for (const [storeId, instance] of Object.entries(stores)) {\n snapshots[storeId] = createDevToolsStoreSnapshot(instance);\n }\n\n return snapshots;\n}\n","import type { BitBusStorePort } from \"../core\";\n\nexport type BitDevToolsReadableStore<T extends object = object> =\n BitBusStorePort<T>;\n\nexport type BitDevToolsActionableStore<T extends object = object> =\n BitBusStorePort<T>;\n\nexport function isDevToolsReadableStore(\n value: unknown,\n): value is BitDevToolsReadableStore<object> {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n\n const candidate = value as unknown as Record<string, unknown>;\n\n return (\n typeof candidate.getState === \"function\" &&\n typeof candidate.getHistoryMetadata === \"function\"\n );\n}\n\nexport function isDevToolsActionableStore(\n value: unknown,\n): value is BitDevToolsActionableStore<object> {\n if (!isDevToolsReadableStore(value)) {\n return false;\n }\n\n const candidate = value as unknown as Record<string, unknown>;\n\n return (\n typeof candidate.undo === \"function\" &&\n typeof candidate.redo === \"function\" &&\n typeof candidate.reset === \"function\"\n );\n}\n\nexport function getDevToolsActionableStore(\n stores: Record<string, unknown>,\n storeId: string,\n): BitDevToolsActionableStore<object> | null {\n const candidate = stores[storeId];\n return isDevToolsActionableStore(candidate) ? candidate : null;\n}\n","import { bitBus } from \"../core\";\nimport type { BitBus } from \"../core\";\nimport type { BitBusStorePort } from \"../core\";\nimport { DEVTOOLS_PROTOCOL_VERSION, isDevToolsActionMessage } from \"./protocol\";\nimport { createDevToolsSnapshotMap } from \"./store-snapshot\";\nimport { getDevToolsActionableStore } from \"./store-port\";\n\nlet activeBridgeCleanup: (() => void) | null = null;\nconst STATE_BATCH_INTERVAL_MS = 50;\n\nexport function setupRemoteBridge(url: string, bus: BitBus = bitBus) {\n if (activeBridgeCleanup) {\n console.warn(\n \"[bit-form] Reiniciando ponte do DevTools (Fast Refresh detectado).\",\n );\n activeBridgeCleanup();\n }\n\n let socket: WebSocket | null = null;\n let unsubscribeBus: (() => void) | null = null;\n let heartbeatInterval: ReturnType<typeof setInterval>;\n let batchFlushTimeout: ReturnType<typeof setTimeout> | null = null;\n const pendingStoreIds = new Set<string>();\n let isIntentionalDisconnect = false;\n\n const sendWhenOpen = (message: Record<string, unknown>) => {\n if (socket?.readyState !== WebSocket.OPEN) {\n return;\n }\n\n socket.send(JSON.stringify(message));\n };\n\n const flushPendingStoreUpdates = () => {\n if (pendingStoreIds.size === 0) {\n return;\n }\n\n const payload = createDevToolsSnapshotMap(\n Array.from(pendingStoreIds).reduce<\n Record<string, BitBusStorePort<object>>\n >((acc, storeId) => {\n const storeInstance = bus.stores[storeId];\n if (storeInstance) {\n acc[storeId] = storeInstance;\n }\n return acc;\n }, {}),\n );\n\n pendingStoreIds.clear();\n batchFlushTimeout = null;\n\n if (Object.keys(payload).length > 0) {\n sendWhenOpen({\n type: \"STATE_UPDATE\",\n protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\n payload,\n });\n }\n };\n\n const scheduleStoreFlush = () => {\n if (batchFlushTimeout) {\n return;\n }\n\n batchFlushTimeout = setTimeout(() => {\n flushPendingStoreUpdates();\n }, STATE_BATCH_INTERVAL_MS);\n };\n\n const connect = () => {\n isIntentionalDisconnect = false;\n socket = new WebSocket(url);\n\n socket.onopen = () => {\n console.log(\"[bit-form] 🔌 Conectado ao CLI DevTools via WebSocket.\");\n\n sendWhenOpen({\n type: \"HELLO\",\n protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\n payload: { role: \"server\", protocolVersion: DEVTOOLS_PROTOCOL_VERSION },\n });\n\n const initialState = createDevToolsSnapshotMap(bus.stores);\n if (Object.keys(initialState).length > 0) {\n sendWhenOpen({\n type: \"STATE_UPDATE\",\n protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\n payload: initialState,\n });\n }\n\n unsubscribeBus = bus.subscribe((storeId, _newState) => {\n pendingStoreIds.add(storeId);\n scheduleStoreFlush();\n });\n\n heartbeatInterval = setInterval(() => {\n sendWhenOpen({\n type: \"PING\",\n protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\n });\n }, 30000);\n };\n\n socket.onmessage = (event) => {\n try {\n const message = JSON.parse(event.data) as unknown;\n\n if (isDevToolsActionMessage(message)) {\n const { storeId, action } = message.payload;\n const store = getDevToolsActionableStore(bus.stores, storeId);\n\n if (!store) {\n return;\n }\n\n switch (action) {\n case \"undo\":\n store.undo();\n break;\n case \"redo\":\n store.redo();\n break;\n case \"reset\":\n store.reset();\n break;\n }\n }\n } catch (e) {\n console.warn(\"[bit-form] Erro ao processar comando do CLI:\", e);\n }\n };\n\n socket.onclose = () => {\n if (unsubscribeBus) unsubscribeBus();\n clearInterval(heartbeatInterval);\n if (batchFlushTimeout) {\n clearTimeout(batchFlushTimeout);\n batchFlushTimeout = null;\n }\n pendingStoreIds.clear();\n\n if (!isIntentionalDisconnect) {\n console.log(\"[bit-form] Conexão perdida. Reconectando em 3s...\");\n setTimeout(connect, 3000);\n } else {\n console.log(\"[bit-form] Ponte antiga encerrada com sucesso.\");\n }\n };\n };\n\n connect();\n\n const cleanup = () => {\n isIntentionalDisconnect = true;\n\n if (unsubscribeBus) unsubscribeBus();\n clearInterval(heartbeatInterval);\n if (batchFlushTimeout) {\n clearTimeout(batchFlushTimeout);\n batchFlushTimeout = null;\n }\n pendingStoreIds.clear();\n if (\n socket &&\n (socket.readyState === WebSocket.OPEN ||\n socket.readyState === WebSocket.CONNECTING)\n ) {\n socket.close();\n }\n activeBridgeCleanup = null;\n };\n\n activeBridgeCleanup = cleanup;\n\n return cleanup;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-IVPCXKYW.cjs","../src/devtools/store-snapshot.ts","../src/devtools/store-port.ts","../src/devtools/bridge.ts"],"names":["normalizeStoreState","state","createDevToolsStoreSnapshot","store","historyMeta","createDevToolsSnapshotMap","stores","snapshots","storeId","instance","isDevToolsReadableStore","value","candidate","isDevToolsActionableStore","getDevToolsActionableStore","activeBridgeCleanup","STATE_BATCH_INTERVAL_MS","setupRemoteBridge","url","bus","bitBus","socket","unsubscribeBus","heartbeatInterval","batchFlushTimeout","pendingStoreIds","isIntentionalDisconnect","sendWhenOpen","message","flushPendingStoreUpdates","payload","acc","storeInstance","scheduleStoreFlush","connect","initialState","_newState","event","isDevToolsActionMessage","action","e","cleanup"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-IVPCXKYW.cjs","sourcesContent":[null,"import type { BitBusStorePort, BitState } from \"../core\";\nimport type { DevToolsStoreSnapshot, DevToolsStoreSnapshots } from \"./protocol\";\n\nfunction normalizeStoreState<T extends object>(\n state: Readonly<BitState<T>>,\n): Omit<DevToolsStoreSnapshot, \"_meta\"> {\n return {\n values: state.values,\n errors: state.errors as Record<string, unknown>,\n touched: state.touched as Record<string, unknown>,\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n isValidating: state.isValidating as Record<string, unknown>,\n persist: state.persist,\n };\n}\n\nexport function createDevToolsStoreSnapshot<T extends object>(store: {\n getState: () => Readonly<BitState<T>>;\n getHistoryMetadata: () => {\n canUndo: boolean;\n canRedo: boolean;\n historySize: number;\n historyIndex: number;\n };\n}): DevToolsStoreSnapshot {\n const historyMeta = store.getHistoryMetadata();\n\n return {\n ...normalizeStoreState(store.getState()),\n _meta: {\n canUndo: historyMeta.canUndo,\n canRedo: historyMeta.canRedo,\n totalSteps: historyMeta.historySize,\n currentIndex: historyMeta.historyIndex,\n },\n };\n}\n\nexport function createDevToolsSnapshotMap(\n stores: Record<string, BitBusStorePort<object>>,\n): DevToolsStoreSnapshots {\n const snapshots: DevToolsStoreSnapshots = {};\n\n for (const [storeId, instance] of Object.entries(stores)) {\n snapshots[storeId] = createDevToolsStoreSnapshot(instance);\n }\n\n return snapshots;\n}\n","import type { BitBusStorePort } from \"../core\";\n\nexport type BitDevToolsReadableStore<T extends object = object> =\n BitBusStorePort<T>;\n\nexport type BitDevToolsActionableStore<T extends object = object> =\n BitBusStorePort<T>;\n\nexport function isDevToolsReadableStore(\n value: unknown,\n): value is BitDevToolsReadableStore<object> {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n\n const candidate = value as unknown as Record<string, unknown>;\n\n return (\n typeof candidate.getState === \"function\" &&\n typeof candidate.getHistoryMetadata === \"function\"\n );\n}\n\nexport function isDevToolsActionableStore(\n value: unknown,\n): value is BitDevToolsActionableStore<object> {\n if (!isDevToolsReadableStore(value)) {\n return false;\n }\n\n const candidate = value as unknown as Record<string, unknown>;\n\n return (\n typeof candidate.undo === \"function\" &&\n typeof candidate.redo === \"function\" &&\n typeof candidate.reset === \"function\"\n );\n}\n\nexport function getDevToolsActionableStore(\n stores: Record<string, unknown>,\n storeId: string,\n): BitDevToolsActionableStore<object> | null {\n const candidate = stores[storeId];\n return isDevToolsActionableStore(candidate) ? candidate : null;\n}\n","import { bitBus } from \"../core\";\nimport type { BitBus } from \"../core\";\nimport type { BitBusStorePort } from \"../core\";\nimport { DEVTOOLS_PROTOCOL_VERSION, isDevToolsActionMessage } from \"./protocol\";\nimport { createDevToolsSnapshotMap } from \"./store-snapshot\";\nimport { getDevToolsActionableStore } from \"./store-port\";\n\nlet activeBridgeCleanup: (() => void) | null = null;\nconst STATE_BATCH_INTERVAL_MS = 50;\n\nexport function setupRemoteBridge(url: string, bus: BitBus = bitBus) {\n if (activeBridgeCleanup) {\n console.warn(\n \"[bit-form] Reiniciando ponte do DevTools (Fast Refresh detectado).\",\n );\n activeBridgeCleanup();\n }\n\n let socket: WebSocket | null = null;\n let unsubscribeBus: (() => void) | null = null;\n let heartbeatInterval: ReturnType<typeof setInterval>;\n let batchFlushTimeout: ReturnType<typeof setTimeout> | null = null;\n const pendingStoreIds = new Set<string>();\n let isIntentionalDisconnect = false;\n\n const sendWhenOpen = (message: Record<string, unknown>) => {\n if (socket?.readyState !== WebSocket.OPEN) {\n return;\n }\n\n socket.send(JSON.stringify(message));\n };\n\n const flushPendingStoreUpdates = () => {\n if (pendingStoreIds.size === 0) {\n return;\n }\n\n const payload = createDevToolsSnapshotMap(\n Array.from(pendingStoreIds).reduce<\n Record<string, BitBusStorePort<object>>\n >((acc, storeId) => {\n const storeInstance = bus.stores[storeId];\n if (storeInstance) {\n acc[storeId] = storeInstance;\n }\n return acc;\n }, {}),\n );\n\n pendingStoreIds.clear();\n batchFlushTimeout = null;\n\n if (Object.keys(payload).length > 0) {\n sendWhenOpen({\n type: \"STATE_UPDATE\",\n protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\n payload,\n });\n }\n };\n\n const scheduleStoreFlush = () => {\n if (batchFlushTimeout) {\n return;\n }\n\n batchFlushTimeout = setTimeout(() => {\n flushPendingStoreUpdates();\n }, STATE_BATCH_INTERVAL_MS);\n };\n\n const connect = () => {\n isIntentionalDisconnect = false;\n socket = new WebSocket(url);\n\n socket.onopen = () => {\n console.log(\"[bit-form] 🔌 Conectado ao CLI DevTools via WebSocket.\");\n\n sendWhenOpen({\n type: \"HELLO\",\n protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\n payload: { role: \"server\", protocolVersion: DEVTOOLS_PROTOCOL_VERSION },\n });\n\n const initialState = createDevToolsSnapshotMap(bus.stores);\n if (Object.keys(initialState).length > 0) {\n sendWhenOpen({\n type: \"STATE_UPDATE\",\n protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\n payload: initialState,\n });\n }\n\n unsubscribeBus = bus.subscribe((storeId, _newState) => {\n pendingStoreIds.add(storeId);\n scheduleStoreFlush();\n });\n\n heartbeatInterval = setInterval(() => {\n sendWhenOpen({\n type: \"PING\",\n protocolVersion: DEVTOOLS_PROTOCOL_VERSION,\n });\n }, 30000);\n };\n\n socket.onmessage = (event) => {\n try {\n const message = JSON.parse(event.data) as unknown;\n\n if (isDevToolsActionMessage(message)) {\n const { storeId, action } = message.payload;\n const store = getDevToolsActionableStore(bus.stores, storeId);\n\n if (!store) {\n return;\n }\n\n switch (action) {\n case \"undo\":\n store.undo();\n break;\n case \"redo\":\n store.redo();\n break;\n case \"reset\":\n store.reset();\n break;\n }\n }\n } catch (e) {\n console.warn(\"[bit-form] Erro ao processar comando do CLI:\", e);\n }\n };\n\n socket.onclose = () => {\n if (unsubscribeBus) unsubscribeBus();\n clearInterval(heartbeatInterval);\n if (batchFlushTimeout) {\n clearTimeout(batchFlushTimeout);\n batchFlushTimeout = null;\n }\n pendingStoreIds.clear();\n\n if (!isIntentionalDisconnect) {\n console.log(\"[bit-form] Conexão perdida. Reconectando em 3s...\");\n setTimeout(connect, 3000);\n } else {\n console.log(\"[bit-form] Ponte antiga encerrada com sucesso.\");\n }\n };\n };\n\n connect();\n\n const cleanup = () => {\n isIntentionalDisconnect = true;\n\n if (unsubscribeBus) unsubscribeBus();\n clearInterval(heartbeatInterval);\n if (batchFlushTimeout) {\n clearTimeout(batchFlushTimeout);\n batchFlushTimeout = null;\n }\n pendingStoreIds.clear();\n if (\n socket &&\n (socket.readyState === WebSocket.OPEN ||\n socket.readyState === WebSocket.CONNECTING)\n ) {\n socket.close();\n }\n activeBridgeCleanup = null;\n };\n\n activeBridgeCleanup = cleanup;\n\n return cleanup;\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as c,c as v}from"./chunk-K5X37E3U.js";import{a as g}from"./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import{a as c,c as v}from"./chunk-K5X37E3U.js";import{a as g}from"./chunk-G2FQQDRK.js";function R(e){return{values:e.values,errors:e.errors,touched:e.touched,isValid:e.isValid,isDirty:e.isDirty,isSubmitting:e.isSubmitting,isValidating:e.isValidating,persist:e.persist}}function k(e){let o=e.getHistoryMetadata();return{...R(e.getState()),_meta:{canUndo:o.canUndo,canRedo:o.canRedo,totalSteps:o.historySize,currentIndex:o.historyIndex}}}function b(e){let o={};for(let[t,i]of Object.entries(e))o[t]=k(i);return o}function w(e){if(!e||typeof e!="object")return!1;let o=e;return typeof o.getState=="function"&&typeof o.getHistoryMetadata=="function"}function I(e){if(!w(e))return!1;let o=e;return typeof o.undo=="function"&&typeof o.redo=="function"&&typeof o.reset=="function"}function B(e,o){let t=e[o];return I(t)?t:null}var S=null,O=50;function N(e,o=g){S&&(console.warn("[bit-form] Reiniciando ponte do DevTools (Fast Refresh detectado)."),S());let t=null,i=null,f,n=null,a=new Set,T=!1,u=r=>{t?.readyState===WebSocket.OPEN&&t.send(JSON.stringify(r))},h=()=>{if(a.size===0)return;let r=b(Array.from(a).reduce((s,l)=>{let d=o.stores[l];return d&&(s[l]=d),s},{}));a.clear(),n=null,Object.keys(r).length>0&&u({type:"STATE_UPDATE",protocolVersion:1,payload:r})},D=()=>{n||(n=setTimeout(()=>{h()},O))},y=()=>{T=!1,t=new WebSocket(e),t.onopen=()=>{console.log("[bit-form] \u{1F50C} Conectado ao CLI DevTools via WebSocket."),u({type:"HELLO",protocolVersion:1,payload:{role:"server",protocolVersion:1}});let r=b(o.stores);Object.keys(r).length>0&&u({type:"STATE_UPDATE",protocolVersion:1,payload:r}),i=o.subscribe((s,l)=>{a.add(s),D()}),f=setInterval(()=>{u({type:"PING",protocolVersion:1})},3e4)},t.onmessage=r=>{try{let s=JSON.parse(r.data);if(v(s)){let{storeId:l,action:d}=s.payload,p=B(o.stores,l);if(!p)return;switch(d){case"undo":p.undo();break;case"redo":p.redo();break;case"reset":p.reset();break}}}catch(s){console.warn("[bit-form] Erro ao processar comando do CLI:",s)}},t.onclose=()=>{i&&i(),clearInterval(f),n&&(clearTimeout(n),n=null),a.clear(),T?console.log("[bit-form] Ponte antiga encerrada com sucesso."):(console.log("[bit-form] Conex\xE3o perdida. Reconectando em 3s..."),setTimeout(y,3e3))}};y();let m=()=>{T=!0,i&&i(),clearInterval(f),n&&(clearTimeout(n),n=null),a.clear(),t&&(t.readyState===WebSocket.OPEN||t.readyState===WebSocket.CONNECTING)&&t.close(),S=null};return S=m,m}export{b as a,B as b,N as c};
|
|
2
|
+
//# sourceMappingURL=chunk-LX4GSDUV.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunkVBX5I5XGcjs = require('./chunk-VBX5I5XG.cjs');var _chunkPFPGASVZcjs = require('./chunk-PFPGASVZ.cjs');function m(e){let t=e.read.getState();return{isValid:t.isValid,isDirty:t.isDirty,isSubmitting:t.isSubmitting}}function f(e,t){return e.observe.subscribeFormMeta(()=>t())}function g(e,t){return t(m(e)),f(e,()=>{t(m(e))})}function B(e){return e.read.getPersistMetadata()}function v(e,t){return e.observe.subscribePersistMeta(()=>t())}function x(e,t){return t(B(e)),e.observe.subscribePersistMeta(o=>{t(o)})}function M(e,t){let o=!1,a=r=>Array.isArray(r)?r:r==null?[]:((!(typeof process<"u")||process.env.NODE_ENV!=="production")&&!o&&(o=!0,console.warn(`[bit-form] createArrayBinding expected an array at path "${String(t)}" but received ${typeof r}. Returning an empty array.`)),[]),p=r=>e.feature.getArrayItemIds(t,r);return{readItems(){let r=_chunkVBX5I5XGcjs.f.call(void 0, e.read.getState().values,t);return a(r)},getFields(r){let i=p(r.length);return r.map((s,n)=>({key:i[n]||`temp-${n}`,value:s,index:n}))},append(r){e.feature.pushItem(t,r)},prepend(r){e.feature.prependItem(t,r)},insert(r,i){e.feature.insertItem(t,r,i)},remove(r){e.feature.removeItem(t,r)},move(r,i){e.feature.moveItem(t,r,i)},swap(r,i){e.feature.swapItems(t,r,i)},replace(r){e.feature.replaceItems(t,r)},clear(){e.feature.clearItems(t)}}}function b(e,t,o){return{setValue:i=>{let s=o();e.setField(t,_chunkPFPGASVZcjs.c.call(void 0, i,s))},setBlur:()=>e.blurField(t),displayValue:i=>_chunkPFPGASVZcjs.b.call(void 0, i,o())}}function w(e,t){return{fieldController:b({setField(a,p){e.write.setField(a,p)},blurField(a){e.write.blurField(a)}},t,()=>e.feature.resolveMask(t))}}function F(e,t){_optionalChain([e, 'optionalAccess', _ => _.preventDefault, 'optionalCall', _2 => _2()]),_optionalChain([t, 'optionalAccess', _3 => _3.stopPropagation])&&_optionalChain([e, 'optionalAccess', _4 => _4.stopPropagation, 'optionalCall', _5 => _5()])}function y(e,t,o){return{submit:i=>async s=>{F(s,o),await e.submit(i)},onSubmit:i=>async s=>{F(s,o),t.setSubmissionError(null);let n,l=await e.submit(async(P,S)=>{n=await i(P,S)});if(l.status==="submitted"){t.setSubmissionResult(n),t.setSubmissionError(null);return}l.status==="failed"&&t.setSubmissionError(l.error instanceof Error?l.error:new Error(String(l.error)))},reset:()=>{e.reset(),t.clearSubmissionState()},getValues:()=>e.getState().values,getErrors:()=>e.getState().errors,getTouched:()=>e.getState().touched,getDirtyValues:()=>e.getDirtyValues()}}function T(e,t,o){let a={getState:e.read.getState,getDirtyValues:e.read.getDirtyValues,submit:e.write.submit,reset:e.write.reset,setServerErrors:e.write.setServerErrors};return{controller:y(a,t,o),actions:{setField:e.write.setField.bind(e.write),blurField:e.write.blurField.bind(e.write),setValues:e.write.setValues.bind(e.write),setError:e.write.setError.bind(e.write),setErrors:e.write.setErrors.bind(e.write),setServerErrors:e.write.setServerErrors.bind(e.write),validate:e.feature.validate.bind(e.feature),transaction:e.write.transaction.bind(e.write)}}}function A(e,t){_optionalChain([e, 'access', _6 => _6.feature, 'optionalAccess', _7 => _7.unregisterField, 'optionalCall', _8 => _8(t)])}function k(e,t){_optionalChain([e, 'access', _9 => _9.feature, 'optionalAccess', _10 => _10.unregisterPrefix, 'optionalCall', _11 => _11(t)])}exports.a = m; exports.b = f; exports.c = g; exports.d = B; exports.e = v; exports.f = x; exports.g = M; exports.h = w; exports.i = T; exports.j = A; exports.k = k;
|
|
2
|
+
//# sourceMappingURL=chunk-NVFZ22A7.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-NVFZ22A7.cjs","../src/core/bindings/form-meta.ts","../src/core/bindings/persist-meta.ts","../src/core/bindings/array-controller.ts"],"names":["readFormMetaSnapshot","store","state","subscribeFormMetaSnapshot","listener","observeFormMetaSnapshot","readPersistMetaSnapshot","subscribePersistMetaSnapshot","observePersistMetaSnapshot","meta","createArrayBinding","path","warnedTypeMismatch","normalizeItems","value","getIds","length","getDeepValue","items","ids","item","index"],"mappings":"AAAA,qoBAAwC,wDAAgD,SCGxEA,CAAAA,CACdC,CAAAA,CACa,CACb,IAAMC,CAAAA,CAAQD,CAAAA,CAAM,IAAA,CAAK,QAAA,CAAS,CAAA,CAClC,MAAO,CACL,OAAA,CAASC,CAAAA,CAAM,OAAA,CACf,OAAA,CAASA,CAAAA,CAAM,OAAA,CACf,YAAA,CAAcA,CAAAA,CAAM,YACtB,CACF,CAEO,SAASC,CAAAA,CACdF,CAAAA,CACAG,CAAAA,CACY,CACZ,OAAOH,CAAAA,CAAM,OAAA,CAAQ,iBAAA,CAAkB,CAAA,CAAA,EAAMG,CAAAA,CAAS,CAAC,CACzD,CAEO,SAASC,CAAAA,CACdJ,CAAAA,CACAG,CAAAA,CACY,CACZ,OAAAA,CAAAA,CAASJ,CAAAA,CAAqBC,CAAK,CAAC,CAAA,CAE7BE,CAAAA,CAA0BF,CAAAA,CAAO,CAAA,CAAA,EAAM,CAC5CG,CAAAA,CAASJ,CAAAA,CAAqBC,CAAK,CAAC,CACtC,CAAC,CACH,CCjBO,SAASK,CAAAA,CAAwBL,CAAAA,CAIjB,CACrB,OAAOA,CAAAA,CAAM,IAAA,CAAK,kBAAA,CAAmB,CACvC,CAEO,SAASM,CAAAA,CACdN,CAAAA,CACAG,CAAAA,CACY,CACZ,OAAOH,CAAAA,CAAM,OAAA,CAAQ,oBAAA,CAAqB,CAAA,CAAA,EAAMG,CAAAA,CAAS,CAAC,CAC5D,CAEO,SAASI,CAAAA,CACdP,CAAAA,CACAG,CAAAA,CACY,CACZ,OAAAA,CAAAA,CAASE,CAAAA,CAAwBL,CAAK,CAAC,CAAA,CAEhCA,CAAAA,CAAM,OAAA,CAAQ,oBAAA,CAAsBQ,CAAAA,EAAS,CAClDL,CAAAA,CAASK,CAAI,CACf,CAAC,CACH,CC1BO,SAASC,CAAAA,CAGdT,CAAAA,CAA2BU,CAAAA,CAAoC,CAG/D,IAAIC,CAAAA,CAAqB,CAAA,CAAA,CAEnBC,CAAAA,CAAkBC,CAAAA,EAClB,KAAA,CAAM,OAAA,CAAQA,CAAK,CAAA,CACdA,CAAAA,CAGLA,CAAAA,EAAS,IAAA,CACJ,CAAC,CAAA,CAAA,CAAA,CAIR,CAAA,CAAA,OAAO,OAAA,CAAY,GAAA,CAAA,EACf,OAAA,CAAQ,GAAA,CAAI,QAAA,GAAa,YAAA,CAAA,EAGlB,CAACF,CAAAA,EAAAA,CACZA,CAAAA,CAAqB,CAAA,CAAA,CACrB,OAAA,CAAQ,IAAA,CACN,CAAA,yDAAA,EAA4D,MAAA,CAC1DD,CACF,CAAC,CAAA,eAAA,EAAkB,OAAOG,CAAK,CAAA,2BAAA,CACjC,CAAA,CAAA,CAGK,CAAC,CAAA,CAAA,CAGJC,CAAAA,CAAUC,CAAAA,EACdf,CAAAA,CAAM,OAAA,CAAQ,eAAA,CAAgBU,CAAAA,CAAMK,CAAM,CAAA,CAE5C,MAAO,CACL,SAAA,CAAA,CAAY,CACV,IAAMF,CAAAA,CAAQG,iCAAAA,CACZhB,CAAM,IAAA,CAAK,QAAA,CAAS,CAAA,CAAE,MAAA,CACtBU,CACF,CAAA,CACA,OAAOE,CAAAA,CAAeC,CAAK,CAC7B,CAAA,CAEA,SAAA,CAAUI,CAAAA,CAAO,CACf,IAAMC,CAAAA,CAAMJ,CAAAA,CAAOG,CAAAA,CAAM,MAAM,CAAA,CAC/B,OAAOA,CAAAA,CAAM,GAAA,CAAI,CAACE,CAAAA,CAAMC,CAAAA,CAAAA,EAAAA,CAAW,CACjC,GAAA,CAAKF,CAAAA,CAAIE,CAAK,CAAA,EAAK,CAAA,KAAA,EAAQA,CAAK,CAAA,CAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-NVFZ22A7.cjs","sourcesContent":[null,"import type { BitFormMeta } from \"../store/contracts/public/meta-types\";\nimport type { BitStoreApi } from \"../store/contracts/public/store-api-types\";\n\nexport function readFormMetaSnapshot<T extends object>(\n store: BitStoreApi<T>,\n): BitFormMeta {\n const state = store.read.getState();\n return {\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n };\n}\n\nexport function subscribeFormMetaSnapshot<T extends object>(\n store: BitStoreApi<T>,\n listener: () => void,\n): () => void {\n return store.observe.subscribeFormMeta(() => listener());\n}\n\nexport function observeFormMetaSnapshot<T extends object>(\n store: BitStoreApi<T>,\n listener: (meta: BitFormMeta) => void,\n): () => void {\n listener(readFormMetaSnapshot(store));\n\n return subscribeFormMetaSnapshot(store, () => {\n listener(readFormMetaSnapshot(store));\n });\n}\n","import type { BitPersistMetadata } from \"../store/contracts/types\";\n\ntype BitPersistMetaReadableStore = {\n read: {\n getPersistMetadata(): BitPersistMetadata;\n };\n observe: {\n subscribePersistMeta(\n listener: (meta: BitPersistMetadata) => void,\n ): () => void;\n };\n};\n\nexport function readPersistMetaSnapshot(store: {\n read: {\n getPersistMetadata(): BitPersistMetadata;\n };\n}): BitPersistMetadata {\n return store.read.getPersistMetadata();\n}\n\nexport function subscribePersistMetaSnapshot(\n store: BitPersistMetaReadableStore,\n listener: () => void,\n): () => void {\n return store.observe.subscribePersistMeta(() => listener());\n}\n\nexport function observePersistMetaSnapshot(\n store: BitPersistMetaReadableStore,\n listener: (meta: BitPersistMetadata) => void,\n): () => void {\n listener(readPersistMetaSnapshot(store));\n\n return store.observe.subscribePersistMeta((meta) => {\n listener(meta);\n });\n}\n","import type { BitStoreApi } from \"../store/contracts/public/store-api-types\";\nimport type {\n BitArrayItem,\n BitArrayPath,\n BitPathValue,\n} from \"../store/contracts/types\";\nimport type { BitArrayBinding, BitArrayBindingField } from \"../types/bindings\";\nimport { getDeepValue } from \"../utils\";\n\nexport type { BitArrayBinding, BitArrayBindingField };\n\nexport function createArrayBinding<\n TForm extends object,\n P extends BitArrayPath<TForm>,\n>(store: BitStoreApi<TForm>, path: P): BitArrayBinding<TForm, P> {\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n let warnedTypeMismatch = false;\n\n const normalizeItems = (value: unknown): Item[] => {\n if (Array.isArray(value)) {\n return value as Item[];\n }\n\n if (value == null) {\n return [];\n }\n\n const isDev =\n typeof process !== \"undefined\"\n ? process.env.NODE_ENV !== \"production\"\n : true;\n\n if (isDev && !warnedTypeMismatch) {\n warnedTypeMismatch = true;\n console.warn(\n `[bit-form] createArrayBinding expected an array at path \"${String(\n path,\n )}\" but received ${typeof value}. Returning an empty array.`,\n );\n }\n\n return [];\n };\n\n const getIds = (length: number) =>\n store.feature.getArrayItemIds(path, length);\n\n return {\n readItems() {\n const value = getDeepValue(\n store.read.getState().values,\n path as string,\n ) as BitPathValue<TForm, P> | undefined;\n return normalizeItems(value);\n },\n\n getFields(items) {\n const ids = getIds(items.length);\n return items.map((item, index) => ({\n key: ids[index] || `temp-${index}`,\n value: item,\n index,\n }));\n },\n\n append(value) {\n store.feature.pushItem(path, value);\n },\n\n prepend(value) {\n store.feature.prependItem(path, value);\n },\n\n insert(index, value) {\n store.feature.insertItem(path, index, value);\n },\n\n remove(index) {\n store.feature.removeItem(path, index);\n },\n\n move(from, to) {\n store.feature.moveItem(path, from, to);\n },\n\n swap(indexA, indexB) {\n store.feature.swapItems(path, indexA, indexB);\n },\n\n replace(items) {\n store.feature.replaceItems(path, items);\n },\n\n clear() {\n store.feature.clearItems(path);\n },\n };\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{d as r}from"./chunk-FLFIOW75.js";function o(i,e){return e&&e.value===i.value&&e.error===i.error&&e.touched===i.touched&&e.isHidden===i.isHidden&&e.isRequired===i.isRequired&&e.isDirty===i.isDirty&&e.isValidating===i.isValidating?e:{value:i.value,error:i.error,touched:i.touched,isHidden:i.isHidden,isRequired:i.isRequired,isDirty:i.isDirty,isValidating:i.isValidating}}function d(i,e){return i===e?!0:!i||!e?!1:r(i.value,e.value)&&i.error===e.error&&i.touched===e.touched&&i.isHidden===e.isHidden&&i.isRequired===e.isRequired&&i.isDirty===e.isDirty&&i.isValidating===e.isValidating}var n=d;export{o as a,d as b,n as c};
|
|
2
|
+
//# sourceMappingURL=chunk-OPC7HFNN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/utils/field-state-snapshot.ts"],"sourcesContent":["/**\n * Field State Snapshot Utilities\n *\n * Shared utilities for creating and managing field state snapshots across frameworks\n * (React, Vue, Angular). Reduces code duplication while maintaining type safety.\n */\n\nimport type { BitFieldState } from \"../store/contracts/types\";\nimport { deepEqual } from \"../utils\";\n\n/**\n * Represents a stable snapshot of field state that can be compared for equality.\n */\nexport type BitFieldSnapshot<TValue = unknown> = BitFieldState<\n Record<string, unknown>,\n TValue\n>;\n\n/**\n * Creates or reuses a field state snapshot with shallow equality checking.\n *\n * This function prevents unnecessary re-renders in frameworks like React by\n * returning the same object reference when field state hasn't changed.\n *\n * @param nextState - The new field state from the store\n * @param lastSnapshot - The previous snapshot (can be null on first call)\n * @returns A stable snapshot object that can be used for equality comparison\n *\n * @example\n * ```typescript\n * const snapshot = createFieldStateSnapshot(store.getFieldState(\"email\"), lastSnapshot);\n * if (snapshot !== lastSnapshot) {\n * // Field state changed, update component\n * render(snapshot);\n * }\n * ```\n */\nexport function createFieldStateSnapshot<TValue = unknown>(\n nextState: {\n value: TValue;\n error: string | undefined;\n touched: boolean;\n isHidden: boolean;\n isRequired: boolean;\n isDirty: boolean;\n isValidating: boolean;\n },\n lastSnapshot: BitFieldSnapshot<TValue> | null,\n): BitFieldSnapshot<TValue> {\n // Use shallow equality: return cached if all fields are equal by reference\n if (lastSnapshot) {\n const shallowEqual =\n lastSnapshot.value === nextState.value &&\n lastSnapshot.error === nextState.error &&\n lastSnapshot.touched === nextState.touched &&\n lastSnapshot.isHidden === nextState.isHidden &&\n lastSnapshot.isRequired === nextState.isRequired &&\n lastSnapshot.isDirty === nextState.isDirty &&\n lastSnapshot.isValidating === nextState.isValidating;\n\n if (shallowEqual) {\n return lastSnapshot;\n }\n }\n\n return {\n value: nextState.value,\n error: nextState.error,\n touched: nextState.touched,\n isHidden: nextState.isHidden,\n isRequired: nextState.isRequired,\n isDirty: nextState.isDirty,\n isValidating: nextState.isValidating,\n };\n}\n\n/**\n * Deep comparison utility for field state snapshots.\n * Useful for scenarios where shallow comparison isn't sufficient (e.g., object/array values).\n *\n * @param snapshotA - First snapshot\n * @param snapshotB - Second snapshot\n * @returns true if snapshots are deeply equal\n */\nexport function areFieldSnapshotsEqual(\n snapshotA: BitFieldSnapshot | null | undefined,\n snapshotB: BitFieldSnapshot | null | undefined,\n): boolean {\n if (snapshotA === snapshotB) return true;\n if (!snapshotA || !snapshotB) return false;\n\n return (\n deepEqual(snapshotA.value, snapshotB.value) &&\n snapshotA.error === snapshotB.error &&\n snapshotA.touched === snapshotB.touched &&\n snapshotA.isHidden === snapshotB.isHidden &&\n snapshotA.isRequired === snapshotB.isRequired &&\n snapshotA.isDirty === snapshotB.isDirty &&\n snapshotA.isValidating === snapshotB.isValidating\n );\n}\n\nexport const areFieldStatesEqual = areFieldSnapshotsEqual;\n"],"mappings":"wCAqCO,SAASA,EACdC,EASAC,EAC0B,CAE1B,OAAIA,GAEAA,EAAa,QAAUD,EAAU,OACjCC,EAAa,QAAUD,EAAU,OACjCC,EAAa,UAAYD,EAAU,SACnCC,EAAa,WAAaD,EAAU,UACpCC,EAAa,aAAeD,EAAU,YACtCC,EAAa,UAAYD,EAAU,SACnCC,EAAa,eAAiBD,EAAU,aAGjCC,EAIJ,CACL,MAAOD,EAAU,MACjB,MAAOA,EAAU,MACjB,QAASA,EAAU,QACnB,SAAUA,EAAU,SACpB,WAAYA,EAAU,WACtB,QAASA,EAAU,QACnB,aAAcA,EAAU,YAC1B,CACF,CAUO,SAASE,EACdC,EACAC,EACS,CACT,OAAID,IAAcC,EAAkB,GAChC,CAACD,GAAa,CAACC,EAAkB,GAGnCC,EAAUF,EAAU,MAAOC,EAAU,KAAK,GAC1CD,EAAU,QAAUC,EAAU,OAC9BD,EAAU,UAAYC,EAAU,SAChCD,EAAU,WAAaC,EAAU,UACjCD,EAAU,aAAeC,EAAU,YACnCD,EAAU,UAAYC,EAAU,SAChCD,EAAU,eAAiBC,EAAU,YAEzC,CAEO,IAAME,EAAsBJ","names":["createFieldStateSnapshot","nextState","lastSnapshot","areFieldSnapshotsEqual","snapshotA","snapshotB","deepEqual","areFieldStatesEqual"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});function d(n,o,e){return async t=>{if(t){e.setLoading(!0),e.setError(n,void 0);try{let r=await o(t);e.setValue(r.url),e.setUploadKey(r.key),e.setError(n,void 0)}catch(r){let a=r instanceof Error?r.message:"Upload failed";e.setError(n,a)}finally{e.setLoading(!1)}}}}function s(n,o,e){return async()=>{let t=e.getUploadKey();if(t&&o)try{await o(t)}catch(r){let a=r instanceof Error?r.message:"Delete failed";e.setError(n,a);return}e.setValue(null),e.setUploadKey(null),e.setError(n,void 0)}}exports.a = d; exports.b = s;
|
|
2
|
+
//# sourceMappingURL=chunk-PA43XYOW.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/adapters/upload-kernel.ts"],"names":["createUploadHandler","fieldPath","uploadFn","callbacks","file","result","error","message","createRemoveHandler","deleteFile","uploadKey"],"mappings":"AAqCO,kFAASA,CAAAA,
|
|
1
|
+
{"version":3,"sources":["../src/core/adapters/upload-kernel.ts"],"names":["createUploadHandler","fieldPath","uploadFn","callbacks","file","result","error","message","createRemoveHandler","deleteFile","uploadKey"],"mappings":"AAqCO,kFAASA,CAAAA,CAGdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACkD,CAClD,OAAO,MAAOC,CAAAA,EAAS,CACrB,EAAA,CAAKA,CAAAA,CAEL,CAAAD,CAAAA,CAAU,UAAA,CAAW,CAAA,CAAI,CAAA,CACzBA,CAAAA,CAAU,QAAA,CAASF,CAAAA,CAAW,KAAA,CAAS,CAAA,CAEvC,GAAI,CACF,IAAMI,CAAAA,CAAS,MAAMH,CAAAA,CAASE,CAAI,CAAA,CAElCD,CAAAA,CAAU,QAAA,CAASE,CAAAA,CAAO,GAAG,CAAA,CAC7BF,CAAAA,CAAU,YAAA,CAAaE,CAAAA,CAAO,GAAG,CAAA,CACjCF,CAAAA,CAAU,QAAA,CAASF,CAAAA,CAAW,KAAA,CAAS,CACzC,CAAA,KAAA,CAASK,CAAAA,CAAO,CACd,IAAMC,CAAAA,CAAUD,EAAAA,WAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,eAAA,CACzDH,CAAAA,CAAU,QAAA,CAASF,CAAAA,CAAWM,CAAO,CACvC,CAAA,OAAE,CACAJ,CAAAA,CAAU,UAAA,CAAW,CAAA,CAAK,CAC5B,CAAA,CACF,CACF,CAKO,SAASK,CAAAA,CACdP,CAAAA,CACAQ,CAAAA,CACAN,CAAAA,CACqB,CACrB,OAAO,KAAA,CAAA,CAAA,EAAY,CACjB,IAAMO,CAAAA,CAAYP,CAAAA,CAAU,YAAA,CAAa,CAAA,CAEzC,EAAA,CAAIO,CAAAA,EAAaD,CAAAA,CACf,GAAI,CACF,MAAMA,CAAAA,CAAWC,CAAS,CAC5B,CAAA,KAAA,CAASJ,CAAAA,CAAO,CACd,IAAMC,CAAAA,CACJD,EAAAA,WAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,eAAA,CAC3CH,CAAAA,CAAU,QAAA,CAASF,CAAAA,CAAWM,CAAO,CAAA,CACrC,MACF,CAGFJ,CAAAA,CAAU,QAAA,CAAS,IAAI,CAAA,CACvBA,CAAAA,CAAU,YAAA,CAAa,IAAI,CAAA,CAC3BA,CAAAA,CAAU,QAAA,CAASF,CAAAA,CAAW,KAAA,CAAS,CACzC,CACF,CAAA,6BAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-PA43XYOW.cjs","sourcesContent":["/**\n * Framework-agnostic upload kernel.\n *\n * Encapsulates the side-effect logic for uploading/removing files so that\n * React, Vue, and Angular adapters share a single implementation and only\n * differ in how they wire reactive state.\n */\n\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../types/upload\";\n\nexport interface UploadKernelCallbacks {\n /** Called with `true` when upload starts and `false` when it finishes. */\n setLoading: (loading: boolean) => void;\n /** Set or clear a field-level error message. */\n setError: (path: string, message: string | undefined) => void;\n /** Set the stored file URL after a successful upload (or `null` on remove). */\n setValue: (value: string | null) => void;\n /** Return the key of the last uploaded file (used when deleting). */\n getUploadKey: () => string | null;\n /** Persist the upload key returned by the upload function. */\n setUploadKey: (key: string | null) => void;\n}\n\n/**\n * Creates a type-safe `upload` handler for a field.\n *\n * @example\n * ```ts\n * const upload = createUploadHandler(\"avatar\", myUploadFn, {\n * setLoading: (v) => (isUploading.value = v),\n * setError: (p, m) => store.setError(p, m),\n * setValue: (v) => field.setValue(v),\n * getUploadKey: () => uploadKey,\n * setUploadKey: (k) => (uploadKey = k),\n * });\n * ```\n */\nexport function createUploadHandler<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n callbacks: UploadKernelCallbacks,\n): (file: File | null | undefined) => Promise<void> {\n return async (file) => {\n if (!file) return;\n\n callbacks.setLoading(true);\n callbacks.setError(fieldPath, undefined);\n\n try {\n const result = await uploadFn(file);\n\n callbacks.setValue(result.url);\n callbacks.setUploadKey(result.key);\n callbacks.setError(fieldPath, undefined);\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Upload failed\";\n callbacks.setError(fieldPath, message);\n } finally {\n callbacks.setLoading(false);\n }\n };\n}\n\n/**\n * Creates a type-safe `remove` handler for a field.\n */\nexport function createRemoveHandler(\n fieldPath: string,\n deleteFile: BitDeleteUploadFn | undefined,\n callbacks: UploadKernelCallbacks,\n): () => Promise<void> {\n return async () => {\n const uploadKey = callbacks.getUploadKey();\n\n if (uploadKey && deleteFile) {\n try {\n await deleteFile(uploadKey);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Delete failed\";\n callbacks.setError(fieldPath, message);\n return;\n }\n }\n\n callbacks.setValue(null);\n callbacks.setUploadKey(null);\n callbacks.setError(fieldPath, undefined);\n };\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function d(n,o,e){return async t=>{if(t){e.setLoading(!0),e.setError(n,void 0);try{let r=await o(t);e.setValue(r.url),e.setUploadKey(r.key),e.setError(n,void 0)}catch(r){let a=r instanceof Error?r.message:"Upload failed";e.setError(n,a)}finally{e.setLoading(!1)}}}}function s(n,o,e){return async()=>{let t=e.getUploadKey();if(t&&o)try{await o(t)}catch(r){let a=r instanceof Error?r.message:"Delete failed";e.setError(n,a);return}e.setValue(null),e.setUploadKey(null),e.setError(n,void 0)}}export{d as a,s as b};
|
|
2
|
+
//# sourceMappingURL=chunk-PG7ZH32Z.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/adapters/upload-kernel.ts"],"sourcesContent":["/**\n * Framework-agnostic upload kernel.\n *\n * Encapsulates the side-effect logic for uploading/removing files so that\n * React, Vue, and Angular adapters share a single implementation and only\n * differ in how they wire reactive state.\n */\n\nimport type { BitDeleteUploadFn, BitUploadFn } from \"../types/upload\";\n\nexport interface UploadKernelCallbacks {\n /** Called with `true` when upload starts and `false` when it finishes. */\n setLoading: (loading: boolean) => void;\n /** Set or clear a field-level error message. */\n setError: (path: string, message: string | undefined) => void;\n /** Set the stored file URL after a successful upload (or `null` on remove). */\n setValue: (value: string | null) => void;\n /** Return the key of the last uploaded file (used when deleting). */\n getUploadKey: () => string | null;\n /** Persist the upload key returned by the upload function. */\n setUploadKey: (key: string | null) => void;\n}\n\n/**\n * Creates a type-safe `upload` handler for a field.\n *\n * @example\n * ```ts\n * const upload = createUploadHandler(\"avatar\", myUploadFn, {\n * setLoading: (v) => (isUploading.value = v),\n * setError: (p, m) => store.setError(p, m),\n * setValue: (v) => field.setValue(v),\n * getUploadKey: () => uploadKey,\n * setUploadKey: (k) => (uploadKey = k),\n * });\n * ```\n */\nexport function createUploadHandler<\n TMetadata extends Record<string, unknown> = Record<string, unknown>,\n>(\n fieldPath: string,\n uploadFn: BitUploadFn<TMetadata>,\n callbacks: UploadKernelCallbacks,\n): (file: File | null | undefined) => Promise<void> {\n return async (file) => {\n if (!file) return;\n\n callbacks.setLoading(true);\n callbacks.setError(fieldPath, undefined);\n\n try {\n const result = await uploadFn(file);\n\n callbacks.setValue(result.url);\n callbacks.setUploadKey(result.key);\n callbacks.setError(fieldPath, undefined);\n } catch (error) {\n const message = error instanceof Error ? error.message : \"Upload failed\";\n callbacks.setError(fieldPath, message);\n } finally {\n callbacks.setLoading(false);\n }\n };\n}\n\n/**\n * Creates a type-safe `remove` handler for a field.\n */\nexport function createRemoveHandler(\n fieldPath: string,\n deleteFile: BitDeleteUploadFn | undefined,\n callbacks: UploadKernelCallbacks,\n): () => Promise<void> {\n return async () => {\n const uploadKey = callbacks.getUploadKey();\n\n if (uploadKey && deleteFile) {\n try {\n await deleteFile(uploadKey);\n } catch (error) {\n const message =\n error instanceof Error ? error.message : \"Delete failed\";\n callbacks.setError(fieldPath, message);\n return;\n }\n }\n\n callbacks.setValue(null);\n callbacks.setUploadKey(null);\n callbacks.setError(fieldPath, undefined);\n };\n}\n"],"mappings":"AAqCO,SAASA,EAGdC,EACAC,EACAC,EACkD,CAClD,MAAO,OAAOC,GAAS,CACrB,GAAKA,EAEL,CAAAD,EAAU,WAAW,EAAI,EACzBA,EAAU,SAASF,EAAW,MAAS,EAEvC,GAAI,CACF,IAAMI,EAAS,MAAMH,EAASE,CAAI,EAElCD,EAAU,SAASE,EAAO,GAAG,EAC7BF,EAAU,aAAaE,EAAO,GAAG,EACjCF,EAAU,SAASF,EAAW,MAAS,CACzC,OAASK,EAAO,CACd,IAAMC,EAAUD,aAAiB,MAAQA,EAAM,QAAU,gBACzDH,EAAU,SAASF,EAAWM,CAAO,CACvC,QAAE,CACAJ,EAAU,WAAW,EAAK,CAC5B,EACF,CACF,CAKO,SAASK,EACdP,EACAQ,EACAN,EACqB,CACrB,MAAO,UAAY,CACjB,IAAMO,EAAYP,EAAU,aAAa,EAEzC,GAAIO,GAAaD,EACf,GAAI,CACF,MAAMA,EAAWC,CAAS,CAC5B,OAASJ,EAAO,CACd,IAAMC,EACJD,aAAiB,MAAQA,EAAM,QAAU,gBAC3CH,EAAU,SAASF,EAAWM,CAAO,EACrC,MACF,CAGFJ,EAAU,SAAS,IAAI,EACvBA,EAAU,aAAa,IAAI,EAC3BA,EAAU,SAASF,EAAW,MAAS,CACzC,CACF","names":["createUploadHandler","fieldPath","uploadFn","callbacks","file","result","error","message","createRemoveHandler","deleteFile","uploadKey"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});function a(t,e){let o=Object.keys(t),s=Object.keys(e);return o.length!==s.length?!1:o.every(r=>t[r]===e[r])}function n(t,e){return t.hasErrors===e.hasErrors&&t.isDirty===e.isDirty&&a(t.errors,e.errors)}function c(t){return[...t,"isDirty"]}function y(t){return`__scope__.${t}`}function p(t,e){return t.canUndo===e.canUndo&&t.canRedo===e.canRedo&&t.historyIndex===e.historyIndex&&t.historySize===e.historySize}function i(t){let e=t.read.getHistoryMetadata();return{canUndo:e.canUndo,canRedo:e.canRedo,historyIndex:e.historyIndex,historySize:e.historySize}}function u(t,e){return e(i(t)),t.observe.subscribeHistoryMeta(()=>{e(i(t))})}function h(){return"__history__"}exports.a = a; exports.b = n; exports.c = c; exports.d = y; exports.e = p; exports.f = i; exports.g = u; exports.h = h;
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
//# sourceMappingURL=chunk-RHMJPKNV.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/store/shared/scope-status.ts"],"names":["areScopeErrorsEqual","currentErrors","nextErrors","currentKeys","nextKeys","key","isScopeStatusEqual","currentStatus","nextStatus","getScopeSubscriptionPaths","scopeFields","getScopeRegistrySubscriptionPath","scopeName"],"mappings":"AAEO,kFAASA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACS,CACT,IAAMC,CAAAA,CAAc,MAAA,CAAO,IAAA,CAAKF,CAAa,CAAA,CACvCG,CAAAA,CAAW,MAAA,CAAO,IAAA,CAAKF,CAAU,CAAA,CAEvC,OAAIC,CAAAA,CAAY,MAAA,GAAWC,CAAAA,CAAS,MAAA,CAC3B,CAAA,CAAA,CAGFD,CAAAA,CAAY,KAAA,CAAOE,CAAAA,EAAQJ,CAAAA,CAAcI,CAAG,CAAA,GAAMH,CAAAA,CAAWG,CAAG,CAAC,CAC1E,CAEO,SAASC,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACS,CACT,OACED,CAAAA,CAAc,SAAA,GAAcC,CAAAA,CAAW,SAAA,EACvCD,CAAAA,CAAc,OAAA,GAAYC,CAAAA,CAAW,OAAA,EACrCR,CAAAA,CAAoBO,CAAAA,CAAc,MAAA,CAAQC,CAAAA,CAAW,MAAM,CAE/D,CAEO,SAASC,CAAAA,CAA0BC,CAAAA,CAAgC,CACxE,MAAO,CAAC,GAAGA,CAAAA,CAAa,SAAS,CACnC,CAEO,SAASC,CAAAA,CAAiCC,CAAAA,CAAmB,CAClE,MAAO,CAAA,UAAA,EAAaA,CAAS,CAAA,CAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-
|
|
1
|
+
{"version":3,"sources":["../src/core/store/shared/scope-status.ts"],"names":["areScopeErrorsEqual","currentErrors","nextErrors","currentKeys","nextKeys","key","isScopeStatusEqual","currentStatus","nextStatus","getScopeSubscriptionPaths","scopeFields","getScopeRegistrySubscriptionPath","scopeName"],"mappings":"AAEO,kFAASA,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACS,CACT,IAAMC,CAAAA,CAAc,MAAA,CAAO,IAAA,CAAKF,CAAa,CAAA,CACvCG,CAAAA,CAAW,MAAA,CAAO,IAAA,CAAKF,CAAU,CAAA,CAEvC,OAAIC,CAAAA,CAAY,MAAA,GAAWC,CAAAA,CAAS,MAAA,CAC3B,CAAA,CAAA,CAGFD,CAAAA,CAAY,KAAA,CAAOE,CAAAA,EAAQJ,CAAAA,CAAcI,CAAG,CAAA,GAAMH,CAAAA,CAAWG,CAAG,CAAC,CAC1E,CAEO,SAASC,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACS,CACT,OACED,CAAAA,CAAc,SAAA,GAAcC,CAAAA,CAAW,SAAA,EACvCD,CAAAA,CAAc,OAAA,GAAYC,CAAAA,CAAW,OAAA,EACrCR,CAAAA,CAAoBO,CAAAA,CAAc,MAAA,CAAQC,CAAAA,CAAW,MAAM,CAE/D,CAEO,SAASC,CAAAA,CAA0BC,CAAAA,CAAgC,CACxE,MAAO,CAAC,GAAGA,CAAAA,CAAa,SAAS,CACnC,CAEO,SAASC,CAAAA,CAAiCC,CAAAA,CAAmB,CAClE,MAAO,CAAA,UAAA,EAAaA,CAAS,CAAA,CAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-RHMJPKNV.cjs","sourcesContent":["import type { ScopeStatus } from \"../contracts/types\";\n\nexport function areScopeErrorsEqual(\n currentErrors: Record<string, string>,\n nextErrors: Record<string, string>,\n): boolean {\n const currentKeys = Object.keys(currentErrors);\n const nextKeys = Object.keys(nextErrors);\n\n if (currentKeys.length !== nextKeys.length) {\n return false;\n }\n\n return currentKeys.every((key) => currentErrors[key] === nextErrors[key]);\n}\n\nexport function isScopeStatusEqual(\n currentStatus: ScopeStatus,\n nextStatus: ScopeStatus,\n): boolean {\n return (\n currentStatus.hasErrors === nextStatus.hasErrors &&\n currentStatus.isDirty === nextStatus.isDirty &&\n areScopeErrorsEqual(currentStatus.errors, nextStatus.errors)\n );\n}\n\nexport function getScopeSubscriptionPaths(scopeFields: readonly string[]) {\n return [...scopeFields, \"isDirty\"];\n}\n\nexport function getScopeRegistrySubscriptionPath(scopeName: string) {\n return `__scope__.${scopeName}`;\n}\n"]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
function a(t,e){let o=Object.keys(t),s=Object.keys(e);return o.length!==s.length?!1:o.every(r=>t[r]===e[r])}function n(t,e){return t.hasErrors===e.hasErrors&&t.isDirty===e.isDirty&&a(t.errors,e.errors)}function c(t){return[...t,"isDirty"]}function y(t){return`__scope__.${t}`}function p(t,e){return t.canUndo===e.canUndo&&t.canRedo===e.canRedo&&t.historyIndex===e.historyIndex&&t.historySize===e.historySize}function i(t){let e=t.read.getHistoryMetadata();return{canUndo:e.canUndo,canRedo:e.canRedo,historyIndex:e.historyIndex,historySize:e.historySize}}function u(t,e){return e(i(t)),t.observe.subscribeHistoryMeta(()=>{e(i(t))})}function h(){return"__history__"}export{a,n as b,c,y as d,p as e,i as f,u as g,h};
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
//# sourceMappingURL=chunk-UIKO6GGW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/store/shared/scope-status.ts","../src/core/history-status.ts"],"sourcesContent":["import type { ScopeStatus } from \"../contracts/types\";\n\nexport function areScopeErrorsEqual(\n currentErrors: Record<string, string>,\n nextErrors: Record<string, string>,\n): boolean {\n const currentKeys = Object.keys(currentErrors);\n const nextKeys = Object.keys(nextErrors);\n\n if (currentKeys.length !== nextKeys.length) {\n return false;\n }\n\n return currentKeys.every((key) => currentErrors[key] === nextErrors[key]);\n}\n\nexport function isScopeStatusEqual(\n currentStatus: ScopeStatus,\n nextStatus: ScopeStatus,\n): boolean {\n return (\n currentStatus.hasErrors === nextStatus.hasErrors &&\n currentStatus.isDirty === nextStatus.isDirty &&\n areScopeErrorsEqual(currentStatus.errors, nextStatus.errors)\n );\n}\n\nexport function getScopeSubscriptionPaths(scopeFields: readonly string[]) {\n return [...scopeFields, \"isDirty\"];\n}\n\nexport function getScopeRegistrySubscriptionPath(scopeName: string) {\n return `__scope__.${scopeName}`;\n}\n","import type { BitHistoryMetadata } from \"./store/contracts/public/meta-types\";\n\n/**\n * Subconjunto relevante de BitHistoryMetadata para comparação de igualdade.\n * Evita re-renders/updates desnecessários quando o estado de histórico não muda.\n */\nexport type HistoryMeta = Pick<\n BitHistoryMetadata,\n \"canUndo\" | \"canRedo\" | \"historyIndex\" | \"historySize\"\n>;\n\n/**\n * Compara dois snapshots de metadata de histórico por valor.\n * Retorna `true` quando todos os campos relevantes são idênticos,\n * permitindo que os bindings de framework ignorem atualizações não relacionadas.\n */\nexport function isHistoryMetaEqual(a: HistoryMeta, b: HistoryMeta): boolean {\n return (\n a.canUndo === b.canUndo &&\n a.canRedo === b.canRedo &&\n a.historyIndex === b.historyIndex &&\n a.historySize === b.historySize\n );\n}\n\nexport function readHistoryMetaSnapshot<_T extends object>(store: {\n read: {\n getHistoryMetadata(): BitHistoryMetadata;\n };\n}): HistoryMeta {\n const nextMeta = store.read.getHistoryMetadata();\n\n return {\n canUndo: nextMeta.canUndo,\n canRedo: nextMeta.canRedo,\n historyIndex: nextMeta.historyIndex,\n historySize: nextMeta.historySize,\n };\n}\n\nexport function observeHistoryMetaSnapshot<_T extends object>(\n store: {\n read: {\n getHistoryMetadata(): BitHistoryMetadata;\n };\n observe: {\n subscribeHistoryMeta(\n listener: (meta: BitHistoryMetadata) => void,\n ): () => void;\n };\n },\n listener: (meta: HistoryMeta) => void,\n): () => void {\n listener(readHistoryMetaSnapshot(store));\n\n return store.observe.subscribeHistoryMeta(() => {\n listener(readHistoryMetaSnapshot(store));\n });\n}\n\nexport function getHistorySubscriptionPath() {\n return \"__history__\";\n}\n"],"mappings":"AAEO,SAASA,EACdC,EACAC,EACS,CACT,IAAMC,EAAc,OAAO,KAAKF,CAAa,EACvCG,EAAW,OAAO,KAAKF,CAAU,EAEvC,OAAIC,EAAY,SAAWC,EAAS,OAC3B,GAGFD,EAAY,MAAOE,GAAQJ,EAAcI,CAAG,IAAMH,EAAWG,CAAG,CAAC,CAC1E,CAEO,SAASC,EACdC,EACAC,EACS,CACT,OACED,EAAc,YAAcC,EAAW,WACvCD,EAAc,UAAYC,EAAW,SACrCR,EAAoBO,EAAc,OAAQC,EAAW,MAAM,CAE/D,CAEO,SAASC,EAA0BC,EAAgC,CACxE,MAAO,CAAC,GAAGA,EAAa,SAAS,CACnC,CAEO,SAASC,EAAiCC,EAAmB,CAClE,MAAO,aAAaA,CAAS,EAC/B,CCjBO,SAASC,EAAmBC,EAAgBC,EAAyB,CAC1E,OACED,EAAE,UAAYC,EAAE,SAChBD,EAAE,UAAYC,EAAE,SAChBD,EAAE,eAAiBC,EAAE,cACrBD,EAAE,cAAgBC,EAAE,WAExB,CAEO,SAASC,EAA2CC,EAI3C,CACd,IAAMC,EAAWD,EAAM,KAAK,mBAAmB,EAE/C,MAAO,CACL,QAASC,EAAS,QAClB,QAASA,EAAS,QAClB,aAAcA,EAAS,aACvB,YAAaA,EAAS,WACxB,CACF,CAEO,SAASC,EACdF,EAUAG,EACY,CACZ,OAAAA,EAASJ,EAAwBC,CAAK,CAAC,EAEhCA,EAAM,QAAQ,qBAAqB,IAAM,CAC9CG,EAASJ,EAAwBC,CAAK,CAAC,CACzC,CAAC,CACH,CAEO,SAASI,GAA6B,CAC3C,MAAO,aACT","names":["areScopeErrorsEqual","currentErrors","nextErrors","currentKeys","nextKeys","key","isScopeStatusEqual","currentStatus","nextStatus","getScopeSubscriptionPaths","scopeFields","getScopeRegistrySubscriptionPath","scopeName","isHistoryMetaEqual","a","b","readHistoryMetaSnapshot","store","nextMeta","observeHistoryMetaSnapshot","listener","getHistorySubscriptionPath"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }function p(e,n=new WeakMap){if(e===null||typeof e!="object")return e;if(typeof structuredClone=="function")try{return structuredClone(e)}catch (e2){}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e.source,e.flags);if(n.has(e))return n.get(e);if(Array.isArray(e)){let r=[];n.set(e,r);for(let s of e)r.push(p(s,n));return r}let t={};n.set(e,t);for(let r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=p(e[r],n));return t}function d(e){return p(e)}function R(e,n){if(n===void 0)return d(e);if(n===null||typeof n!="object"||n instanceof Date||n instanceof RegExp||Array.isArray(n))return d(n);let t=e&&typeof e=="object"&&!Array.isArray(e)?d(e):{};for(let r of Object.keys(n)){let s=n[r],i=t[r];if(s!==null&&typeof s=="object"&&!Array.isArray(s)&&!(s instanceof Date)&&!(s instanceof RegExp)){t[r]=R(i,s);continue}t[r]=d(s)}return t}function A(e,n){return e===n?!0:e===null||typeof e!="object"||n===null||typeof n!="object"?!1:m(e,n)}function m(e,n){return w(e,n,new WeakSet)}function w(e,n,t){if(e===n)return!0;if(e===null||typeof e!="object"||n===null||typeof n!="object"||t.has(e))return!1;if(t.add(e),e instanceof Date&&n instanceof Date)return e.getTime()===n.getTime();if(e instanceof RegExp&&n instanceof RegExp)return e.toString()===n.toString();let r=Object.keys(e),s=Object.keys(n);if(r.length!==s.length)return!1;for(let i of r)if(!Object.prototype.hasOwnProperty.call(n,i)||!w(e[i],n[i],t))return!1;return!0}function b(e,n,t="",r=new Set,s=new WeakMap){if(A(e,n))return r;if(e===null||typeof e!="object"||n===null||typeof n!="object")return t&&r.add(t),r;let i=s.get(e);if(_optionalChain([i, 'optionalAccess', _ => _.has, 'call', _2 => _2(n)]))return r;if(i?i.add(n):s.set(e,new WeakSet([n])),Array.isArray(e)||Array.isArray(n))return!A(e,n)&&t&&r.add(t),r;let a=new Set;for(let o of Object.keys(e||{}))a.add(o);for(let o of Object.keys(n||{}))a.add(o);for(let o of a){let c=t?`${t}.${o}`:o;b(_optionalChain([e, 'optionalAccess', _3 => _3[o]]),_optionalChain([n, 'optionalAccess', _4 => _4[o]]),c,r,s)}return r}var g=new Map;function T(e,n){if(g.has(e))g.delete(e);else if(g.size>=5e3){let t=g.keys().next().value;t!==void 0&&g.delete(t)}g.set(e,n)}function k(e){let n=g.get(e);if(n)return n;let t=e.split(".");return T(e,t),t}function K(e,n){if(!n)return e;let t=k(n),r=e;for(let s of t){if(r==null)return;r=r[s]}return r}function D(e,n,t){if(!n)return t;let r=k(n),s=Array.isArray(e)?[...e]:{...e},i=s;for(let a=0;a<r.length-1;a++){let o=r[a],c=r[a+1],u=Number(c),y=Number.isInteger(u)&&String(u)===c,f=i[o];f==null?i[o]=y?[]:{}:i[o]=Array.isArray(f)?[...f]:{...f},i=i[o]}return i[r[r.length-1]]=t,s}function E(e,n){if(n.length===0)return e;let t=Array.isArray(e)?[...e]:{...e},r=new WeakSet;t&&typeof t=="object"&&r.add(t);for(let[s,i]of n){let a=k(s),o=t;for(let c=0;c<a.length-1;c++){let u=a[c],y=a[c+1],f=Number(y),x=Number.isInteger(f)&&String(f)===y,l=o[u];l==null?(o[u]=x?[]:{},r.add(o[u])):typeof l=="object"?r.has(l)||(o[u]=Array.isArray(l)?[...l]:{...l},r.add(o[u])):(o[u]=x?[]:{},r.add(o[u])),o=o[u]}o[a[a.length-1]]=i}return t}function S(e,n){if(n.length===0)return e;let t=Array.isArray(e)?[...e]:{...e},r=new WeakSet;t&&typeof t=="object"&&r.add(t);for(let s of n){if(!s)return Array.isArray(e)?[]:{};let i=k(s),a=t;for(let c=0;c<i.length-1;c++){let u=i[c],y=_optionalChain([a, 'optionalAccess', _5 => _5[u]]);if(y==null){a=void 0;break}if(typeof y=="object")r.has(y)||(a[u]=Array.isArray(y)?[...y]:{...y},r.add(a[u]));else{a=void 0;break}a=a[u]}if(!a)continue;let o=i[i.length-1];Array.isArray(a)?a.splice(Number(o),1):a&&typeof a=="object"&&delete a[o]}return t}function O(e,n){let t={},r=`${n}.`;for(let s in e)s!==n&&!s.startsWith(r)&&(t[s]=e[s]);return t}function $(e,n,t){let r={},s={},i={},a=`${n}.`;for(let o of Object.keys(e.errors)){let c=h(o,a,t);c&&(r[c]=e.errors[o])}for(let o of Object.keys(e.touched)){let c=h(o,a,t);c&&(s[c]=e.touched[o])}for(let o of Object.keys(e.isValidating)){let c=h(o,a,t);c&&(i[c]=e.isValidating[o])}return{errors:r,touched:s,isValidating:i}}function h(e,n,t){if(!e.startsWith(n))return e;let s=e.substring(n.length).split("."),i=parseInt(s[0],10),a=t(i);if(a===null)return null;let o=s.slice(1).join(".");return o?`${n}${a}.${o}`:`${n}${a}`}function V(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let n=_nullishCoalesce(e.errors, () => (e));if(typeof n!="object"||n===null||Array.isArray(n))return!1;let t=Object.entries(n);return t.length===0?!1:t.every(([r,s])=>r.length>0&&(typeof s=="string"||Array.isArray(s)&&s.every(i=>typeof i=="string")))}function N(e){return V(e)?_nullishCoalesce(e.errors, () => (e)):{}}exports.a = d; exports.b = R; exports.c = A; exports.d = m; exports.e = b; exports.f = K; exports.g = D; exports.h = E; exports.i = S; exports.j = O; exports.k = $; exports.l = V; exports.m = N;
|
|
2
|
+
//# sourceMappingURL=chunk-VBX5I5XG.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/utils/clone.ts","../src/core/utils/structural.ts"],"names":["cloneValue","obj","visited","clone","item","key","deepClone","deepMerge","target","source","base","sourceValue","baseValue","valueEqual","a","b","deepEqual","deepEqualInner","keysA","keysB","collectDirtyPaths","initial","prefix","result","visitedPairs","visitedInitials","allKeys","k","p"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-VBX5I5XG.cjs","sourcesContent":["export function cloneValue<T>(\n obj: T,\n visited: WeakMap<object, unknown> = new WeakMap(),\n): T {\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (typeof structuredClone === \"function\") {\n try {\n return structuredClone(obj);\n } catch {\n // Alguns runtimes lançam para payloads não suportados (ex.: funções).\n // Nesses casos, seguimos para o clone recursivo para manter fail-open.\n }\n }\n\n if (obj instanceof Date) {\n return new Date(obj.getTime()) as any as T;\n }\n\n if (obj instanceof RegExp) {\n return new RegExp(obj.source, obj.flags) as any as T;\n }\n\n if (visited.has(obj as object)) {\n return visited.get(obj as object) as T;\n }\n\n if (Array.isArray(obj)) {\n const clone: unknown[] = [];\n visited.set(obj as object, clone);\n\n for (const item of obj) {\n clone.push(cloneValue(item, visited));\n }\n\n return clone as T;\n }\n\n const clone: any = {};\n visited.set(obj as object, clone);\n\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clone[key] = cloneValue((obj as any)[key], visited);\n }\n }\n\n return clone as T;\n}\n","import { cloneValue } from \"./clone\";\n\nexport function deepClone<T>(obj: T): T {\n return cloneValue(obj);\n}\n\nexport function deepMerge<T>(target: T, source: any): T {\n if (source === undefined) {\n return deepClone(target);\n }\n\n if (\n source === null ||\n typeof source !== \"object\" ||\n source instanceof Date ||\n source instanceof RegExp ||\n Array.isArray(source)\n ) {\n return deepClone(source as T);\n }\n\n const base =\n target && typeof target === \"object\" && !Array.isArray(target)\n ? deepClone(target as any)\n : ({} as Record<string, unknown>);\n\n for (const key of Object.keys(source)) {\n const sourceValue = source[key];\n const baseValue = (base as Record<string, unknown>)[key];\n\n if (\n sourceValue !== null &&\n typeof sourceValue === \"object\" &&\n !Array.isArray(sourceValue) &&\n !(sourceValue instanceof Date) &&\n !(sourceValue instanceof RegExp)\n ) {\n (base as Record<string, unknown>)[key] = deepMerge(\n baseValue,\n sourceValue,\n );\n continue;\n }\n\n (base as Record<string, unknown>)[key] = deepClone(sourceValue);\n }\n\n return base as T;\n}\n\nexport function valueEqual(a: any, b: any): boolean {\n if (a === b) return true;\n if (\n a === null ||\n typeof a !== \"object\" ||\n b === null ||\n typeof b !== \"object\"\n ) {\n return false;\n }\n return deepEqual(a, b);\n}\n\nexport function deepEqual(a: any, b: any): boolean {\n return deepEqualInner(a, b, new WeakSet());\n}\n\nfunction deepEqualInner(a: any, b: any, visited: WeakSet<object>): boolean {\n if (a === b) return true;\n if (\n a === null ||\n typeof a !== \"object\" ||\n b === null ||\n typeof b !== \"object\"\n ) {\n return false;\n }\n\n if (visited.has(a)) return false;\n visited.add(a);\n\n if (a instanceof Date && b instanceof Date)\n return a.getTime() === b.getTime();\n if (a instanceof RegExp && b instanceof RegExp)\n return a.toString() === b.toString();\n\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) return false;\n\n for (const key of keysA) {\n if (\n !Object.prototype.hasOwnProperty.call(b, key) ||\n !deepEqualInner(a[key], b[key], visited)\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nexport function collectDirtyPaths(\n obj: any,\n initial: any,\n prefix = \"\",\n result: Set<string> = new Set(),\n visitedPairs: WeakMap<object, WeakSet<object>> = new WeakMap(),\n): Set<string> {\n if (valueEqual(obj, initial)) return result;\n if (\n obj === null ||\n typeof obj !== \"object\" ||\n initial === null ||\n typeof initial !== \"object\"\n ) {\n if (prefix) result.add(prefix);\n return result;\n }\n\n const visitedInitials = visitedPairs.get(obj as object);\n if (visitedInitials?.has(initial as object)) {\n return result;\n }\n\n if (visitedInitials) {\n visitedInitials.add(initial as object);\n } else {\n visitedPairs.set(obj as object, new WeakSet([initial as object]));\n }\n\n if (Array.isArray(obj) || Array.isArray(initial)) {\n if (!valueEqual(obj, initial) && prefix) result.add(prefix);\n return result;\n }\n const allKeys = new Set<string>();\n for (const key of Object.keys(obj || {})) {\n allKeys.add(key);\n }\n for (const key of Object.keys(initial || {})) {\n allKeys.add(key);\n }\n for (const k of allKeys) {\n const p = prefix ? `${prefix}.${k}` : k;\n collectDirtyPaths(\n (obj as any)?.[k],\n (initial as any)?.[k],\n p,\n result,\n visitedPairs,\n );\n }\n return result;\n}\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkVBX5I5XGcjs = require('./chunk-VBX5I5XG.cjs');function o(i,e){return e&&e.value===i.value&&e.error===i.error&&e.touched===i.touched&&e.isHidden===i.isHidden&&e.isRequired===i.isRequired&&e.isDirty===i.isDirty&&e.isValidating===i.isValidating?e:{value:i.value,error:i.error,touched:i.touched,isHidden:i.isHidden,isRequired:i.isRequired,isDirty:i.isDirty,isValidating:i.isValidating}}function d(i,e){return i===e?!0:!i||!e?!1:_chunkVBX5I5XGcjs.d.call(void 0, i.value,e.value)&&i.error===e.error&&i.touched===e.touched&&i.isHidden===e.isHidden&&i.isRequired===e.isRequired&&i.isDirty===e.isDirty&&i.isValidating===e.isValidating}var n=d;exports.a = o; exports.b = d; exports.c = n;
|
|
2
|
+
//# sourceMappingURL=chunk-ZKAFHJPU.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-ZKAFHJPU.cjs","../src/core/utils/field-state-snapshot.ts"],"names":["createFieldStateSnapshot","nextState","lastSnapshot","areFieldSnapshotsEqual","snapshotA","snapshotB","deepEqual","areFieldStatesEqual"],"mappings":"AAAA,iIAAwC,SCqCxBA,CAAAA,CACdC,CAAAA,CASAC,CAAAA,CAC0B,CAE1B,OAAIA,CAAAA,EAEAA,CAAAA,CAAa,KAAA,GAAUD,CAAAA,CAAU,KAAA,EACjCC,CAAAA,CAAa,KAAA,GAAUD,CAAAA,CAAU,KAAA,EACjCC,CAAAA,CAAa,OAAA,GAAYD,CAAAA,CAAU,OAAA,EACnCC,CAAAA,CAAa,QAAA,GAAaD,CAAAA,CAAU,QAAA,EACpCC,CAAAA,CAAa,UAAA,GAAeD,CAAAA,CAAU,UAAA,EACtCC,CAAAA,CAAa,OAAA,GAAYD,CAAAA,CAAU,OAAA,EACnCC,CAAAA,CAAa,YAAA,GAAiBD,CAAAA,CAAU,YAAA,CAGjCC,CAAAA,CAIJ,CACL,KAAA,CAAOD,CAAAA,CAAU,KAAA,CACjB,KAAA,CAAOA,CAAAA,CAAU,KAAA,CACjB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,QAAA,CAAUA,CAAAA,CAAU,QAAA,CACpB,UAAA,CAAYA,CAAAA,CAAU,UAAA,CACtB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,YAAA,CAAcA,CAAAA,CAAU,YAC1B,CACF,CAUO,SAASE,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACS,CACT,OAAID,CAAAA,GAAcC,CAAAA,CAAkB,CAAA,CAAA,CAChC,CAACD,CAAAA,EAAa,CAACC,CAAAA,CAAkB,CAAA,CAAA,CAGnCC,iCAAAA,CAAUF,CAAU,KAAA,CAAOC,CAAAA,CAAU,KAAK,CAAA,EAC1CD,CAAAA,CAAU,KAAA,GAAUC,CAAAA,CAAU,KAAA,EAC9BD,CAAAA,CAAU,OAAA,GAAYC,CAAAA,CAAU,OAAA,EAChCD,CAAAA,CAAU,QAAA,GAAaC,CAAAA,CAAU,QAAA,EACjCD,CAAAA,CAAU,UAAA,GAAeC,CAAAA,CAAU,UAAA,EACnCD,CAAAA,CAAU,OAAA,GAAYC,CAAAA,CAAU,OAAA,EAChCD,CAAAA,CAAU,YAAA,GAAiBC,CAAAA,CAAU,YAEzC,CAEO,IAAME,CAAAA,CAAsBJ,CAAAA,CAAAA,4CAAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-ZKAFHJPU.cjs","sourcesContent":[null,"/**\n * Field State Snapshot Utilities\n *\n * Shared utilities for creating and managing field state snapshots across frameworks\n * (React, Vue, Angular). Reduces code duplication while maintaining type safety.\n */\n\nimport type { BitFieldState } from \"../store/contracts/types\";\nimport { deepEqual } from \"../utils\";\n\n/**\n * Represents a stable snapshot of field state that can be compared for equality.\n */\nexport type BitFieldSnapshot<TValue = unknown> = BitFieldState<\n Record<string, unknown>,\n TValue\n>;\n\n/**\n * Creates or reuses a field state snapshot with shallow equality checking.\n *\n * This function prevents unnecessary re-renders in frameworks like React by\n * returning the same object reference when field state hasn't changed.\n *\n * @param nextState - The new field state from the store\n * @param lastSnapshot - The previous snapshot (can be null on first call)\n * @returns A stable snapshot object that can be used for equality comparison\n *\n * @example\n * ```typescript\n * const snapshot = createFieldStateSnapshot(store.getFieldState(\"email\"), lastSnapshot);\n * if (snapshot !== lastSnapshot) {\n * // Field state changed, update component\n * render(snapshot);\n * }\n * ```\n */\nexport function createFieldStateSnapshot<TValue = unknown>(\n nextState: {\n value: TValue;\n error: string | undefined;\n touched: boolean;\n isHidden: boolean;\n isRequired: boolean;\n isDirty: boolean;\n isValidating: boolean;\n },\n lastSnapshot: BitFieldSnapshot<TValue> | null,\n): BitFieldSnapshot<TValue> {\n // Use shallow equality: return cached if all fields are equal by reference\n if (lastSnapshot) {\n const shallowEqual =\n lastSnapshot.value === nextState.value &&\n lastSnapshot.error === nextState.error &&\n lastSnapshot.touched === nextState.touched &&\n lastSnapshot.isHidden === nextState.isHidden &&\n lastSnapshot.isRequired === nextState.isRequired &&\n lastSnapshot.isDirty === nextState.isDirty &&\n lastSnapshot.isValidating === nextState.isValidating;\n\n if (shallowEqual) {\n return lastSnapshot;\n }\n }\n\n return {\n value: nextState.value,\n error: nextState.error,\n touched: nextState.touched,\n isHidden: nextState.isHidden,\n isRequired: nextState.isRequired,\n isDirty: nextState.isDirty,\n isValidating: nextState.isValidating,\n };\n}\n\n/**\n * Deep comparison utility for field state snapshots.\n * Useful for scenarios where shallow comparison isn't sufficient (e.g., object/array values).\n *\n * @param snapshotA - First snapshot\n * @param snapshotB - Second snapshot\n * @returns true if snapshots are deeply equal\n */\nexport function areFieldSnapshotsEqual(\n snapshotA: BitFieldSnapshot | null | undefined,\n snapshotB: BitFieldSnapshot | null | undefined,\n): boolean {\n if (snapshotA === snapshotB) return true;\n if (!snapshotA || !snapshotB) return false;\n\n return (\n deepEqual(snapshotA.value, snapshotB.value) &&\n snapshotA.error === snapshotB.error &&\n snapshotA.touched === snapshotB.touched &&\n snapshotA.isHidden === snapshotB.isHidden &&\n snapshotA.isRequired === snapshotB.isRequired &&\n snapshotA.isDirty === snapshotB.isDirty &&\n snapshotA.isValidating === snapshotB.isValidating\n );\n}\n\nexport const areFieldStatesEqual = areFieldSnapshotsEqual;\n"]}
|