@lehnihon/bit-form 2.2.3 → 2.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/dist/angular/index.cjs +1 -1
  2. package/dist/angular/index.cjs.map +1 -1
  3. package/dist/angular/index.d.cts +7 -5
  4. package/dist/angular/index.d.ts +7 -5
  5. package/dist/angular/index.js +1 -1
  6. package/dist/angular/index.js.map +1 -1
  7. package/dist/{bus-DHQHDwUp.d.ts → bus-B4zZmB9C.d.ts} +23 -10
  8. package/dist/{bus-CILR-ENq.d.cts → bus-BeAeZwWu.d.cts} +23 -10
  9. package/dist/chunk-2FDEJYA5.js +2 -0
  10. package/dist/chunk-2FDEJYA5.js.map +1 -0
  11. package/dist/chunk-3CARTBEN.cjs +2 -0
  12. package/dist/chunk-3CARTBEN.cjs.map +1 -0
  13. package/dist/chunk-3NUJVIAM.js +2 -0
  14. package/dist/chunk-3NUJVIAM.js.map +1 -0
  15. package/dist/chunk-64KSP4TP.js +2 -0
  16. package/dist/chunk-64KSP4TP.js.map +1 -0
  17. package/dist/chunk-77PK7U73.cjs +2 -0
  18. package/dist/chunk-77PK7U73.cjs.map +1 -0
  19. package/dist/chunk-CTURHI75.cjs +2 -0
  20. package/dist/chunk-CTURHI75.cjs.map +1 -0
  21. package/dist/chunk-DD6XWUMR.cjs +2 -0
  22. package/dist/chunk-DD6XWUMR.cjs.map +1 -0
  23. package/dist/chunk-FGJB4DHQ.js +2 -0
  24. package/dist/chunk-FGJB4DHQ.js.map +1 -0
  25. package/dist/chunk-FQLJOSF7.js +1 -0
  26. package/dist/chunk-FQLJOSF7.js.map +1 -0
  27. package/dist/chunk-GDRNKTHO.js +2 -0
  28. package/dist/chunk-GDRNKTHO.js.map +1 -0
  29. package/dist/chunk-GUU6EXFN.js +2 -0
  30. package/dist/chunk-GUU6EXFN.js.map +1 -0
  31. package/dist/chunk-JIWR4KSZ.cjs +2 -0
  32. package/dist/chunk-JIWR4KSZ.cjs.map +1 -0
  33. package/dist/chunk-M2XR4C7T.js +2 -0
  34. package/dist/chunk-M2XR4C7T.js.map +1 -0
  35. package/dist/chunk-MFSDDSVG.cjs +1 -0
  36. package/dist/chunk-MFSDDSVG.cjs.map +1 -0
  37. package/dist/chunk-OZKLQRO6.cjs +2 -0
  38. package/dist/chunk-OZKLQRO6.cjs.map +1 -0
  39. package/dist/chunk-PFPGASVZ.cjs +2 -0
  40. package/dist/chunk-PFPGASVZ.cjs.map +1 -0
  41. package/dist/chunk-QWH2NBVB.js +2 -0
  42. package/dist/chunk-QWH2NBVB.js.map +1 -0
  43. package/dist/chunk-UMKOKAPD.js +2 -0
  44. package/dist/chunk-UMKOKAPD.js.map +1 -0
  45. package/dist/chunk-UT63HKR6.cjs +2 -0
  46. package/dist/chunk-UT63HKR6.cjs.map +1 -0
  47. package/dist/chunk-VQ7MK5VB.cjs +2 -0
  48. package/dist/chunk-VQ7MK5VB.cjs.map +1 -0
  49. package/dist/devtools/bridge.cjs +1 -1
  50. package/dist/devtools/bridge.cjs.map +1 -1
  51. package/dist/devtools/bridge.js +1 -1
  52. package/dist/devtools/bridge.js.map +1 -1
  53. package/dist/devtools/index.cjs +2 -2
  54. package/dist/devtools/index.cjs.map +1 -1
  55. package/dist/devtools/index.js +1 -1
  56. package/dist/devtools/index.js.map +1 -1
  57. package/dist/field-binding-BXw0Ku2c.d.cts +12 -0
  58. package/dist/field-binding-BXw0Ku2c.d.ts +12 -0
  59. package/dist/index.cjs +1 -1
  60. package/dist/index.cjs.map +1 -1
  61. package/dist/index.d.cts +37 -58
  62. package/dist/index.d.ts +37 -58
  63. package/dist/index.js +1 -1
  64. package/dist/mask.cjs +1 -1
  65. package/dist/mask.cjs.map +1 -1
  66. package/dist/mask.js +1 -1
  67. package/dist/mask.js.map +1 -1
  68. package/dist/{public-types-SU17BarA.d.cts → public-types-BQXaxmAE.d.cts} +9 -9
  69. package/dist/{public-types-Bgws0aVJ.d.ts → public-types-CVgFf_qY.d.ts} +9 -9
  70. package/dist/react/index.cjs +1 -1
  71. package/dist/react/index.cjs.map +1 -1
  72. package/dist/react/index.d.cts +7 -6
  73. package/dist/react/index.d.ts +7 -6
  74. package/dist/react/index.js +1 -1
  75. package/dist/react/index.js.map +1 -1
  76. package/dist/react-native/index.cjs +1 -1
  77. package/dist/react-native/index.d.cts +5 -4
  78. package/dist/react-native/index.d.ts +5 -4
  79. package/dist/react-native/index.js +1 -1
  80. package/dist/resolvers/index.cjs +2 -0
  81. package/dist/resolvers/index.cjs.map +1 -0
  82. package/dist/resolvers/index.d.cts +9 -0
  83. package/dist/resolvers/index.d.ts +9 -0
  84. package/dist/resolvers/index.js +2 -0
  85. package/dist/resolvers/index.js.map +1 -0
  86. package/dist/resolvers/joi.cjs +1 -1
  87. package/dist/resolvers/joi.cjs.map +1 -1
  88. package/dist/resolvers/joi.d.cts +1 -1
  89. package/dist/resolvers/joi.d.ts +1 -1
  90. package/dist/resolvers/joi.js +1 -1
  91. package/dist/resolvers/joi.js.map +1 -1
  92. package/dist/resolvers/types.cjs +2 -1
  93. package/dist/resolvers/types.cjs.map +1 -1
  94. package/dist/resolvers/types.js +1 -0
  95. package/dist/resolvers/yup.cjs +1 -1
  96. package/dist/resolvers/yup.cjs.map +1 -1
  97. package/dist/resolvers/yup.d.cts +1 -1
  98. package/dist/resolvers/yup.d.ts +1 -1
  99. package/dist/resolvers/yup.js +1 -1
  100. package/dist/resolvers/yup.js.map +1 -1
  101. package/dist/resolvers/zod.cjs +1 -1
  102. package/dist/resolvers/zod.cjs.map +1 -1
  103. package/dist/resolvers/zod.d.cts +1 -1
  104. package/dist/resolvers/zod.d.ts +1 -1
  105. package/dist/resolvers/zod.js +1 -1
  106. package/dist/resolvers/zod.js.map +1 -1
  107. package/dist/{types-C2mpfhp1.d.cts → upload-EXnJLq8k.d.cts} +1 -1
  108. package/dist/{types-C2mpfhp1.d.ts → upload-EXnJLq8k.d.ts} +1 -1
  109. package/dist/{use-bit-persist-BlR-hHk6.d.ts → use-bit-persist-CIVN-oIi.d.cts} +8 -6
  110. package/dist/{use-bit-persist-DEWMhvit.d.cts → use-bit-persist-iPWLbD8l.d.ts} +8 -6
  111. package/dist/vue/index.cjs +1 -1
  112. package/dist/vue/index.cjs.map +1 -1
  113. package/dist/vue/index.d.cts +4 -3
  114. package/dist/vue/index.d.ts +4 -3
  115. package/dist/vue/index.js +1 -1
  116. package/dist/vue/index.js.map +1 -1
  117. package/package.json +25 -1
  118. package/dist/chunk-3MUULXXZ.js +0 -2
  119. package/dist/chunk-3MUULXXZ.js.map +0 -1
  120. package/dist/chunk-7MBRAKBL.js +0 -2
  121. package/dist/chunk-7MBRAKBL.js.map +0 -1
  122. package/dist/chunk-ER2DNS7T.cjs +0 -2
  123. package/dist/chunk-ER2DNS7T.cjs.map +0 -1
  124. package/dist/chunk-FEW3ABPD.js +0 -2
  125. package/dist/chunk-FEW3ABPD.js.map +0 -1
  126. package/dist/chunk-JO37BU2C.cjs +0 -2
  127. package/dist/chunk-JO37BU2C.cjs.map +0 -1
  128. package/dist/chunk-NNKZFXEK.cjs +0 -2
  129. package/dist/chunk-NNKZFXEK.cjs.map +0 -1
  130. package/dist/chunk-PA6T2CBR.cjs +0 -2
  131. package/dist/chunk-PA6T2CBR.cjs.map +0 -1
  132. package/dist/chunk-T3XN5O7V.cjs +0 -2
  133. package/dist/chunk-T3XN5O7V.cjs.map +0 -1
  134. package/dist/chunk-ULC4OPIQ.js +0 -2
  135. package/dist/chunk-ULC4OPIQ.js.map +0 -1
  136. package/dist/chunk-VDWCFNA6.js +0 -2
  137. package/dist/chunk-VDWCFNA6.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{a as i,b as s,c as l}from"./chunk-GUU6EXFN.js";import{ValidationError as c}from"yup";var u=(a,n)=>async(p,e)=>{let t={};if(e?.scopeFields&&e.scopeFields.length>0)return await Promise.all(e.scopeFields.map(async o=>{try{await a.validateAt(o,p)}catch(r){r instanceof c&&r.path&&s(t,i(r.path),r.message)}})),t;try{return await a.validate(p,{abortEarly:n?.abortEarly??!1,stripUnknown:n?.stripUnknown??!1}),{}}catch(o){if(o instanceof c){for(let r of o.inner??[])r.path&&s(t,i(r.path),r.message);return l(t,e?.scopeFields)}return{}}};export{u as a};
2
+ //# sourceMappingURL=chunk-GDRNKTHO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resolvers/yup.ts"],"sourcesContent":["import { ValidationError, Schema } from \"yup\";\nimport { BitErrors } from \"../core\";\nimport {\n filterErrorsByScope,\n normalizeErrorPath,\n setFirstError,\n} from \"./utils\";\nimport { BitResolverScopeOptions, BitYupResolverConfig } from \"./types\";\n\nexport const yupResolver = <T extends object>(\n schema: Schema<T>,\n config?: BitYupResolverConfig,\n) => {\n return async (\n values: T,\n options?: BitResolverScopeOptions,\n ): Promise<BitErrors<T>> => {\n const errors: BitErrors<T> = {};\n\n if (options?.scopeFields && options.scopeFields.length > 0) {\n await Promise.all(\n options.scopeFields.map(async (field) => {\n try {\n await schema.validateAt(field, values);\n } catch (error: unknown) {\n if (error instanceof ValidationError && error.path) {\n setFirstError(\n errors,\n normalizeErrorPath(error.path),\n error.message,\n );\n }\n }\n }),\n );\n return errors;\n }\n\n try {\n await schema.validate(values, {\n abortEarly: config?.abortEarly ?? false,\n stripUnknown: config?.stripUnknown ?? false,\n });\n return {};\n } catch (error: unknown) {\n if (error instanceof ValidationError) {\n for (const item of error.inner ?? []) {\n if (item.path) {\n setFirstError(errors, normalizeErrorPath(item.path), item.message);\n }\n }\n\n return filterErrorsByScope(errors, options?.scopeFields);\n }\n\n return {};\n }\n };\n};\n"],"mappings":"sDAAA,OAAS,mBAAAA,MAA+B,MASjC,IAAMC,EAAc,CACzBC,EACAC,IAEO,MACLC,EACAC,IAC0B,CAC1B,IAAMC,EAAuB,CAAC,EAE9B,GAAID,GAAS,aAAeA,EAAQ,YAAY,OAAS,EACvD,aAAM,QAAQ,IACZA,EAAQ,YAAY,IAAI,MAAOE,GAAU,CACvC,GAAI,CACF,MAAML,EAAO,WAAWK,EAAOH,CAAM,CACvC,OAASI,EAAgB,CACnBA,aAAiBC,GAAmBD,EAAM,MAC5CE,EACEJ,EACAK,EAAmBH,EAAM,IAAI,EAC7BA,EAAM,OACR,CAEJ,CACF,CAAC,CACH,EACOF,EAGT,GAAI,CACF,aAAMJ,EAAO,SAASE,EAAQ,CAC5B,WAAYD,GAAQ,YAAc,GAClC,aAAcA,GAAQ,cAAgB,EACxC,CAAC,EACM,CAAC,CACV,OAASK,EAAgB,CACvB,GAAIA,aAAiBC,EAAiB,CACpC,QAAWG,KAAQJ,EAAM,OAAS,CAAC,EAC7BI,EAAK,MACPF,EAAcJ,EAAQK,EAAmBC,EAAK,IAAI,EAAGA,EAAK,OAAO,EAIrE,OAAOC,EAAoBP,EAAQD,GAAS,WAAW,CACzD,CAEA,MAAO,CAAC,CACV,CACF","names":["ValidationError","yupResolver","schema","config","values","options","errors","field","error","ValidationError","setFirstError","normalizeErrorPath","item","filterErrorsByScope"]}
@@ -0,0 +1,2 @@
1
+ function s(r){return r.replace(/\[(\d+)\]/g,".$1").replace(/^\.+/,"").replace(/\.{2,}/g,".")}function a(r,t){return r===t||r.startsWith(`${t}.`)||t.startsWith(`${r}.`)}function l(r,t,i){let e=s(t);!e||!i||r[e]||(r[e]=i)}function g(r,t){if(!t||t.length===0)return r;let i=t.map(n=>s(n)).filter(n=>n.length>0);if(i.length===0)return{};let e={};for(let[n,f]of Object.entries(r)){let c=s(n);if(f&&i.some(o=>a(c,o))){let o=n;e[o]=f}}return e}export{s as a,l as b,g as c};
2
+ //# sourceMappingURL=chunk-GUU6EXFN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resolvers/utils.ts"],"sourcesContent":["import { BitErrors } from \"../core\";\n\nexport function normalizeErrorPath(path: string): string {\n return path\n .replace(/\\[(\\d+)\\]/g, \".$1\")\n .replace(/^\\.+/, \"\")\n .replace(/\\.{2,}/g, \".\");\n}\n\nfunction matchScopePath(errorPath: string, scopePath: string): boolean {\n return (\n errorPath === scopePath ||\n errorPath.startsWith(`${scopePath}.`) ||\n scopePath.startsWith(`${errorPath}.`)\n );\n}\n\nexport function setFirstError<T extends object>(\n errors: BitErrors<T>,\n path: string,\n message: string | undefined,\n) {\n const normalizedPath = normalizeErrorPath(path);\n\n if (!normalizedPath || !message) {\n return;\n }\n\n if (!errors[normalizedPath as keyof BitErrors<T>]) {\n errors[normalizedPath as keyof BitErrors<T>] = message;\n }\n}\n\nexport function filterErrorsByScope<T extends object>(\n errors: BitErrors<T>,\n scopeFields?: string[],\n): BitErrors<T> {\n if (!scopeFields || scopeFields.length === 0) {\n return errors;\n }\n\n const normalizedScopeFields = scopeFields\n .map((scopeField) => normalizeErrorPath(scopeField))\n .filter((scopeField) => scopeField.length > 0);\n\n if (normalizedScopeFields.length === 0) {\n return {};\n }\n\n const filtered: BitErrors<T> = {};\n\n for (const [key, message] of Object.entries(errors)) {\n const normalizedKey = normalizeErrorPath(key);\n if (\n message &&\n normalizedScopeFields.some((scopeField) =>\n matchScopePath(normalizedKey, scopeField),\n )\n ) {\n const typedKey = key as keyof BitErrors<T>;\n filtered[typedKey] = message as BitErrors<T>[typeof typedKey];\n }\n }\n\n return filtered;\n}\n"],"mappings":"AAEO,SAASA,EAAmBC,EAAsB,CACvD,OAAOA,EACJ,QAAQ,aAAc,KAAK,EAC3B,QAAQ,OAAQ,EAAE,EAClB,QAAQ,UAAW,GAAG,CAC3B,CAEA,SAASC,EAAeC,EAAmBC,EAA4B,CACrE,OACED,IAAcC,GACdD,EAAU,WAAW,GAAGC,CAAS,GAAG,GACpCA,EAAU,WAAW,GAAGD,CAAS,GAAG,CAExC,CAEO,SAASE,EACdC,EACAL,EACAM,EACA,CACA,IAAMC,EAAiBR,EAAmBC,CAAI,EAE1C,CAACO,GAAkB,CAACD,GAInBD,EAAOE,CAAoC,IAC9CF,EAAOE,CAAoC,EAAID,EAEnD,CAEO,SAASE,EACdH,EACAI,EACc,CACd,GAAI,CAACA,GAAeA,EAAY,SAAW,EACzC,OAAOJ,EAGT,IAAMK,EAAwBD,EAC3B,IAAKE,GAAeZ,EAAmBY,CAAU,CAAC,EAClD,OAAQA,GAAeA,EAAW,OAAS,CAAC,EAE/C,GAAID,EAAsB,SAAW,EACnC,MAAO,CAAC,EAGV,IAAME,EAAyB,CAAC,EAEhC,OAAW,CAACC,EAAKP,CAAO,IAAK,OAAO,QAAQD,CAAM,EAAG,CACnD,IAAMS,EAAgBf,EAAmBc,CAAG,EAC5C,GACEP,GACAI,EAAsB,KAAMC,GAC1BV,EAAea,EAAeH,CAAU,CAC1C,EACA,CACA,IAAMI,EAAWF,EACjBD,EAASG,CAAQ,EAAIT,CACvB,CACF,CAEA,OAAOM,CACT","names":["normalizeErrorPath","path","matchScopePath","errorPath","scopePath","setFirstError","errors","message","normalizedPath","filterErrorsByScope","scopeFields","normalizedScopeFields","scopeField","filtered","key","normalizedKey","typedKey"]}
@@ -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 _chunkOZKLQRO6cjs = require('./chunk-OZKLQRO6.cjs');var _chunkPFPGASVZcjs = require('./chunk-PFPGASVZ.cjs');async function m(e,r,o,i){try{let t=await e(r,o);i.onSuccess(t)}catch(t){if(_chunkOZKLQRO6cjs.h.call(void 0, t)){i.onServerErrors(_chunkOZKLQRO6cjs.i.call(void 0, t));return}i.onUnhandledError(t instanceof Error?t:new Error(String(t)))}}function E(e){return{setField:(r,o)=>e.setField(r,o),blurField:r=>e.blurField(r),replaceValues:r=>e.replaceValues(r),hydrate:r=>e.hydrate(r),rebase:r=>e.rebase(r),setError:(r,o)=>e.setError(r,o),setErrors:r=>e.setErrors(r),setServerErrors:r=>e.setServerErrors(r),validate:r=>e.validate(r),transaction:r=>e.transaction(r)}}function p(e,r){_optionalChain([e, 'optionalAccess', _ => _.preventDefault, 'optionalCall', _2 => _2()]),_optionalChain([r, 'optionalAccess', _3 => _3.stopPropagation])&&_optionalChain([e, 'optionalAccess', _4 => _4.stopPropagation, 'optionalCall', _5 => _5()])}function f(e,r,o){return{submit:s=>a=>(p(a,o),e.submit(s)),onSubmit:s=>a=>(p(a,o),r.setSubmissionError(null),e.submit(async(b,F)=>{await m(s,b,F,{onSuccess:n=>{r.setSubmissionResult(n),r.setSubmissionError(null)},onServerErrors:n=>{e.setServerErrors(n)},onUnhandledError:n=>{r.setSubmissionError(n)}})})),reset:()=>{e.reset(),r.clearSubmissionState()},getValues:()=>e.getState().values,getErrors:()=>e.getState().errors,getTouched:()=>e.getState().touched,getDirtyValues:()=>e.getDirtyValues()}}function k(e,r,o){return e.subscribeSelector(()=>e.getFieldState(r),o,{paths:[r],autoTrackPaths:!1,equalityFn:(i,t)=>i.value===t.value&&i.error===t.error&&i.touched===t.touched&&i.isHidden===t.isHidden&&i.isRequired===t.isRequired&&i.isDirty===t.isDirty&&i.isValidating===t.isValidating})}function h(e,r,o){return{setValue:s=>{e.setField(r,_chunkPFPGASVZcjs.c.call(void 0, s,o))},setBlur:()=>e.blurField(r),displayValue:s=>_chunkPFPGASVZcjs.b.call(void 0, s,o)}}function P(e,r){let o=Object.keys(e),i=Object.keys(r);return o.length!==i.length?!1:o.every(t=>e[t]===r[t])}function x(e,r){return e.hasErrors===r.hasErrors&&e.isDirty===r.isDirty&&P(e.errors,r.errors)}function H(e){return[...e,"isDirty"]}exports.a = E; exports.b = f; exports.c = k; exports.d = h; exports.e = x; exports.f = H;
2
+ //# sourceMappingURL=chunk-JIWR4KSZ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-JIWR4KSZ.cjs","../src/core/submit-handler.ts","../src/core/form-controller.ts","../src/core/field-controller.ts","../src/core/scope-status.ts"],"names":["executeSubmitHandler","handler","values","dirtyValues","handlers","result","error","isValidationErrorShape","extractServerErrors","createStoreFormActions","store","path","value","message","errors","serverErrors","options","callback","preventFormEvent","event","createFormController","runtime","onSuccess","subscribeFieldState","listener","prev","next","createMaskedFieldController","mask","parseMaskedInput","formatMaskedValue","areScopeErrorsEqual","currentErrors","nextErrors","currentKeys","nextKeys","key","isScopeStatusEqual","currentStatus","nextStatus","getScopeSubscriptionPaths","scopeFields"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-JIWR4KSZ.cjs","sourcesContent":[null,"import { extractServerErrors, isValidationErrorShape } from \"./utils\";\n\nexport interface BitSubmitExecutionHandlers {\n onServerErrors: (errors: Record<string, string[] | string>) => void;\n onUnhandledError: (error: Error) => void;\n onSuccess: (result: unknown) => void;\n}\n\nexport async function executeSubmitHandler<T extends object>(\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n values: T,\n dirtyValues: Partial<T> | undefined,\n handlers: BitSubmitExecutionHandlers,\n): Promise<void> {\n try {\n const result = await handler(values, dirtyValues);\n handlers.onSuccess(result);\n } catch (error) {\n if (isValidationErrorShape(error)) {\n handlers.onServerErrors(extractServerErrors(error));\n return;\n }\n\n handlers.onUnhandledError(\n error instanceof Error ? error : new Error(String(error)),\n );\n }\n}\n","import { executeSubmitHandler } from \"./submit-handler\";\nimport type { BitStoreHooksApi } from \"./store/contracts/public-types\";\n\nexport type BitFormDomEvent = {\n preventDefault?: () => void;\n stopPropagation?: () => void;\n};\n\nexport interface BitFormControllerRuntime {\n clearSubmissionState: () => void;\n setSubmissionResult: (result: unknown) => void;\n setSubmissionError: (error: Error | null) => void;\n}\n\nexport interface BitFormControllerOptions {\n stopPropagation?: boolean;\n}\n\nexport function createStoreFormActions<T extends object>(\n store: BitStoreHooksApi<T>,\n) {\n return {\n setField: <P extends Parameters<BitStoreHooksApi<T>[\"setField\"]>[0]>(\n path: P,\n value: Parameters<BitStoreHooksApi<T>[\"setField\"]>[1],\n ) => store.setField(path, value),\n blurField: <P extends Parameters<BitStoreHooksApi<T>[\"blurField\"]>[0]>(\n path: P,\n ) => store.blurField(path),\n replaceValues: (values: T) => store.replaceValues(values),\n hydrate: (values: Parameters<BitStoreHooksApi<T>[\"hydrate\"]>[0]) =>\n store.hydrate(values),\n rebase: (values: T) => store.rebase(values),\n setError: (path: string, message: string | undefined) =>\n store.setError(path, message),\n setErrors: (errors: Parameters<BitStoreHooksApi<T>[\"setErrors\"]>[0]) =>\n store.setErrors(errors),\n setServerErrors: (\n serverErrors: Parameters<BitStoreHooksApi<T>[\"setServerErrors\"]>[0],\n ) => store.setServerErrors(serverErrors),\n validate: (options?: Parameters<BitStoreHooksApi<T>[\"validate\"]>[0]) =>\n store.validate(options),\n transaction: <TResult>(callback: () => TResult) =>\n store.transaction(callback),\n };\n}\n\nexport function preventFormEvent(\n event?: BitFormDomEvent,\n options?: BitFormControllerOptions,\n) {\n event?.preventDefault?.();\n if (options?.stopPropagation) {\n event?.stopPropagation?.();\n }\n}\n\nexport function createFormController<T extends object>(\n store: BitStoreHooksApi<T>,\n runtime: BitFormControllerRuntime,\n options?: BitFormControllerOptions,\n) {\n const submit = (\n onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>,\n ) => {\n return (event?: BitFormDomEvent) => {\n preventFormEvent(event, options);\n return store.submit(onSuccess);\n };\n };\n\n const onSubmit = (\n handler: (values: T, dirtyValues?: Partial<T>) => Promise<unknown>,\n ) => {\n return (event?: BitFormDomEvent) => {\n preventFormEvent(event, options);\n runtime.setSubmissionError(null);\n\n return store.submit(async (values, dirtyValues) => {\n await executeSubmitHandler(handler, values, dirtyValues, {\n onSuccess: (result) => {\n runtime.setSubmissionResult(result);\n runtime.setSubmissionError(null);\n },\n onServerErrors: (serverErrors) => {\n store.setServerErrors(serverErrors);\n },\n onUnhandledError: (error) => {\n runtime.setSubmissionError(error);\n },\n });\n });\n };\n };\n\n const reset = () => {\n store.reset();\n runtime.clearSubmissionState();\n };\n\n return {\n submit,\n onSubmit,\n reset,\n getValues: () => store.getState().values,\n getErrors: () => store.getState().errors,\n getTouched: () => store.getState().touched,\n getDirtyValues: () => store.getDirtyValues(),\n };\n}\n","import { formatMaskedValue, parseMaskedInput } from \"./mask/field-binding\";\nimport type { BitMask } from \"./mask/types\";\nimport type { BitStoreHooksApi } from \"./store/contracts/public-types\";\nimport type {\n BitFieldState,\n BitPath,\n BitPathValue,\n} from \"./store/contracts/types\";\n\nexport function subscribeFieldState<\n TForm extends object,\n P extends BitPath<TForm>,\n>(\n store: BitStoreHooksApi<TForm>,\n path: P,\n listener: (\n value: Readonly<BitFieldState<TForm, BitPathValue<TForm, P>>>,\n ) => void,\n) {\n return store.subscribeSelector(\n () =>\n store.getFieldState(path) as Readonly<\n BitFieldState<TForm, BitPathValue<TForm, P>>\n >,\n listener,\n {\n paths: [path as string],\n autoTrackPaths: false,\n equalityFn: (prev, next) =>\n prev.value === next.value &&\n prev.error === next.error &&\n prev.touched === next.touched &&\n prev.isHidden === next.isHidden &&\n prev.isRequired === next.isRequired &&\n prev.isDirty === next.isDirty &&\n prev.isValidating === next.isValidating,\n },\n );\n}\n\nexport function createMaskedFieldController<\n TForm extends object,\n P extends BitPath<TForm>,\n>(store: BitStoreHooksApi<TForm>, path: P, mask: BitMask | undefined) {\n const setValue = (value: unknown) => {\n store.setField(\n path,\n parseMaskedInput(value, mask) as BitPathValue<TForm, P>,\n );\n };\n\n const setBlur = () => store.blurField(path);\n\n const displayValue = (value: unknown) => formatMaskedValue(value, mask);\n\n return {\n setValue,\n setBlur,\n displayValue,\n };\n}\n","import type { ScopeStatus } from \"./store/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"]}
@@ -0,0 +1,2 @@
1
+ import{b as s,c as t}from"./chunk-GUU6EXFN.js";import{ZodError as f}from"zod";var l=(i,m)=>async(n,c)=>{try{return await i.parseAsync(n),{}}catch(r){let o={};if(r instanceof f)for(let e of r.issues){let p=e.path.join(".");s(o,p,e.message)}return t(o,c?.scopeFields)}};export{l as a};
2
+ //# sourceMappingURL=chunk-M2XR4C7T.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resolvers/zod.ts"],"sourcesContent":["import { ZodError, ZodSchema } from \"zod\";\nimport { BitErrors } from \"../core\";\nimport { filterErrorsByScope, setFirstError } from \"./utils\";\nimport { BitResolverScopeOptions, BitZodResolverConfig } from \"./types\";\n\nexport const zodResolver = <T extends object>(\n schema: ZodSchema<T>,\n _config?: BitZodResolverConfig,\n) => {\n return async (\n values: T,\n options?: BitResolverScopeOptions,\n ): Promise<BitErrors<T>> => {\n try {\n await schema.parseAsync(values);\n return {};\n } catch (error: unknown) {\n const errors: BitErrors<T> = {};\n\n if (error instanceof ZodError) {\n for (const issue of error.issues) {\n const path = issue.path.join(\".\");\n setFirstError(errors, path, issue.message);\n }\n }\n\n return filterErrorsByScope(errors, options?.scopeFields);\n }\n };\n};\n"],"mappings":"+CAAA,OAAS,YAAAA,MAA2B,MAK7B,IAAMC,EAAc,CACzBC,EACAC,IAEO,MACLC,EACAC,IAC0B,CAC1B,GAAI,CACF,aAAMH,EAAO,WAAWE,CAAM,EACvB,CAAC,CACV,OAASE,EAAgB,CACvB,IAAMC,EAAuB,CAAC,EAE9B,GAAID,aAAiBE,EACnB,QAAWC,KAASH,EAAM,OAAQ,CAChC,IAAMI,EAAOD,EAAM,KAAK,KAAK,GAAG,EAChCE,EAAcJ,EAAQG,EAAMD,EAAM,OAAO,CAC3C,CAGF,OAAOG,EAAoBL,EAAQF,GAAS,WAAW,CACzD,CACF","names":["ZodError","zodResolver","schema","_config","values","options","error","errors","ZodError","issue","path","setFirstError","filterErrorsByScope"]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-MFSDDSVG.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-MFSDDSVG.cjs"],"names":[],"mappings":"AAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-MFSDDSVG.cjs"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } 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; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10;function h(s){if(s===null||typeof s!="object")return s;if(typeof structuredClone=="function")return structuredClone(s);if(s instanceof Date)return new Date(s.getTime());if(s instanceof RegExp)return new RegExp(s.source,s.flags);if(Array.isArray(s))return s.map(t=>h(t));let e={};for(let t in s)Object.prototype.hasOwnProperty.call(s,t)&&(e[t]=h(s[t]));return e}function P(s,e){if(e===void 0)return h(s);if(e===null||typeof e!="object"||e instanceof Date||e instanceof RegExp||Array.isArray(e))return h(e);let t=s&&typeof s=="object"&&!Array.isArray(s)?h(s):{};for(let i of Object.keys(e)){let r=e[i],n=t[i];if(r!==null&&typeof r=="object"&&!Array.isArray(r)&&!(r instanceof Date)&&!(r instanceof RegExp)){t[i]=P(n,r);continue}t[i]=h(r)}return t}function S(s,e){return s===e?!0:s===null||typeof s!="object"||e===null||typeof e!="object"?!1:m(s,e)}function m(s,e){if(s===e)return!0;if(s===null||typeof s!="object"||e===null||typeof e!="object")return!1;if(s instanceof Date&&e instanceof Date)return s.getTime()===e.getTime();if(s instanceof RegExp&&e instanceof RegExp)return s.toString()===e.toString();let t=Object.keys(s),i=Object.keys(e);if(t.length!==i.length)return!1;for(let r of t)if(!Object.prototype.hasOwnProperty.call(e,r)||!m(s[r],e[r]))return!1;return!0}function N(s,e,t="",i=new Set){if(S(s,e))return i;if(s===null||typeof s!="object"||e===null||typeof e!="object")return t&&i.add(t),i;if(Array.isArray(s)||Array.isArray(e))return!S(s,e)&&t&&i.add(t),i;let r=new Set;for(let n of Object.keys(s||{}))r.add(n);for(let n of Object.keys(e||{}))r.add(n);for(let n of r){let o=t?`${t}.${n}`:n;N(_optionalChain([s, 'optionalAccess', _2 => _2[n]]),_optionalChain([e, 'optionalAccess', _3 => _3[n]]),o,i)}return i}var ie=1e3,B=new Map;function _(s){let e=B.get(s);if(e)return e;let t=s.split(".");return B.size>=ie&&B.clear(),B.set(s,t),t}function p(s,e){if(!e)return s;let t=_(e),i=s;for(let r of t){if(i==null)return;i=i[r]}return i}function y(s,e,t){if(!e)return t;let i=_(e),r=Array.isArray(s)?[...s]:{...s},n=r;for(let o=0;o<i.length-1;o++){let a=i[o],l=i[o+1],d=Number(l),c=Number.isInteger(d)&&String(d)===l,u=n[a];u==null?n[a]=c?[]:{}:n[a]=Array.isArray(u)?[...u]:{...u},n=n[a]}return n[i[i.length-1]]=t,r}function W(s,e){if(e.length===0)return s;let t=Array.isArray(s)?[...s]:{...s},i=new WeakSet;t&&typeof t=="object"&&i.add(t);for(let[r,n]of e){let o=_(r),a=t;for(let l=0;l<o.length-1;l++){let d=o[l],c=o[l+1],u=Number(c),g=Number.isInteger(u)&&String(u)===c,f=a[d];f==null?(a[d]=g?[]:{},i.add(a[d])):typeof f=="object"?i.has(f)||(a[d]=Array.isArray(f)?[...f]:{...f},i.add(a[d])):(a[d]=g?[]:{},i.add(a[d])),a=a[d]}a[o[o.length-1]]=n}return t}function re(s,e){let t={},i=`${e}.`;for(let r in s)r!==e&&!r.startsWith(i)&&(t[r]=s[r]);return t}function E(s,e,t){let i={},r={},n={},o=new Set;Object.keys(s.errors).forEach(l=>o.add(l)),Object.keys(s.touched).forEach(l=>o.add(l)),Object.keys(s.isValidating).forEach(l=>o.add(l));let a=`${e}.`;for(let l of o){let d=se(l,a,t);d&&(Object.prototype.hasOwnProperty.call(s.errors,l)&&(i[d]=s.errors[l]),Object.prototype.hasOwnProperty.call(s.touched,l)&&(r[d]=s.touched[l]),Object.prototype.hasOwnProperty.call(s.isValidating,l)&&(n[d]=s.isValidating[l]))}return{errors:i,touched:r,isValidating:n}}function se(s,e,t){if(!s.startsWith(e))return s;let r=s.substring(e.length).split("."),n=parseInt(r[0],10),o=t(n);if(o===null)return null;let a=r.slice(1).join(".");return a?`${e}${o}.${a}`:`${e}${o}`}function G(s){if(typeof s!="object"||s===null||Array.isArray(s))return!1;let e=_nullishCoalesce(s.errors, () => (s));return typeof e!="object"||e===null||Array.isArray(e)?!1:Object.values(e).every(t=>typeof t=="string"||Array.isArray(t)&&t.every(i=>typeof i=="string"))}function ne(s){return G(s)?_nullishCoalesce(s.errors, () => (s)):{}}var $=typeof globalThis<"u"?globalThis:typeof global<"u"?global:window;$.__BIT_FORM__||($.__BIT_FORM__={stores:{},listeners:new Set,dispatch(s,e){this.listeners.forEach(t=>t(s,e))},subscribe(s){return this.listeners.add(s),()=>{this.listeners.delete(s)}}});var T=$.__BIT_FORM__;function ae(){return`bit-form-${Math.random().toString(36).slice(2,9)}`}function J(s={}){let e=_nullishCoalesce(s.initialValues, () => ({})),t=s.validation,i=s.history,r=s.name?`bit-form:${s.name}:draft`:"bit-form:draft",n={enabled:_nullishCoalesce(_optionalChain([s, 'access', _4 => _4.persist, 'optionalAccess', _5 => _5.enabled]), () => (!1)),key:_nullishCoalesce(_optionalChain([s, 'access', _6 => _6.persist, 'optionalAccess', _7 => _7.key]), () => (r)),storage:_optionalChain([s, 'access', _8 => _8.persist, 'optionalAccess', _9 => _9.storage]),autoSave:_nullishCoalesce(_optionalChain([s, 'access', _10 => _10.persist, 'optionalAccess', _11 => _11.autoSave]), () => (!0)),debounceMs:_nullishCoalesce(_optionalChain([s, 'access', _12 => _12.persist, 'optionalAccess', _13 => _13.debounceMs]), () => (300)),mode:_nullishCoalesce(_optionalChain([s, 'access', _14 => _14.persist, 'optionalAccess', _15 => _15.mode]), () => ("values")),serialize:_nullishCoalesce(_optionalChain([s, 'access', _16 => _16.persist, 'optionalAccess', _17 => _17.serialize]), () => (JSON.stringify)),deserialize:_nullishCoalesce(_optionalChain([s, 'access', _18 => _18.persist, 'optionalAccess', _19 => _19.deserialize]), () => ((o=>JSON.parse(o)))),onError:_optionalChain([s, 'access', _20 => _20.persist, 'optionalAccess', _21 => _21.onError])};return{name:s.name,initialValues:h(e),resolver:_optionalChain([t, 'optionalAccess', _22 => _22.resolver]),validationDelay:_nullishCoalesce(_optionalChain([t, 'optionalAccess', _23 => _23.delay]), () => (300)),enableHistory:_nullishCoalesce(_optionalChain([i, 'optionalAccess', _24 => _24.enabled]), () => (!1)),historyLimit:_nullishCoalesce(_optionalChain([i, 'optionalAccess', _25 => _25.limit]), () => (15)),masks:s.masks,fields:s.fields,devTools:s.devTools,persist:n,idFactory:_nullishCoalesce(s.idFactory, () => (ae)),plugins:_nullishCoalesce(s.plugins, () => ([]))}}var V= (_class =class{constructor() { _class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this);_class.prototype.__init5.call(this);_class.prototype.__init6.call(this);_class.prototype.__init7.call(this);_class.prototype.__init8.call(this); }__init() {this.fieldConfigs=new Map}__init2() {this.dependencies=new Map}__init3() {this.hiddenFields=new Set}__init4() {this.conditionalVisibilityPaths=new Set}__init5() {this.requiredPathsByDependency=new Map}__init6() {this.requiredConditionalPaths=new Set}__init7() {this.requiredEvaluationCache=new WeakMap}__init8() {this.requiredEvaluationCacheDirty=!1}getFieldConfig(e){return this.fieldConfigs.get(e)}forEachFieldConfig(e){this.fieldConfigs.forEach((t,i)=>e(t,i))}hasFieldConfig(e){return this.fieldConfigs.has(e)}getHiddenFields(){return this.hiddenFields}register(e,t,i){this.fieldConfigs.set(e,t),_optionalChain([t, 'access', _26 => _26.conditional, 'optionalAccess', _27 => _27.showIf])&&this.conditionalVisibilityPaths.add(e);let r=_optionalChain([t, 'access', _28 => _28.conditional, 'optionalAccess', _29 => _29.dependsOn]);r&&r.forEach(o=>{this.dependencies.has(o)||this.dependencies.set(o,new Set),this.dependencies.get(o).add(e)});let n=_optionalChain([t, 'access', _30 => _30.conditional, 'optionalAccess', _31 => _31.dependsOn]);n&&_optionalChain([t, 'access', _32 => _32.conditional, 'optionalAccess', _33 => _33.requiredIf])&&(this.requiredConditionalPaths.add(e),n.forEach(o=>{this.requiredPathsByDependency.has(o)||this.requiredPathsByDependency.set(o,new Set),this.requiredPathsByDependency.get(o).add(e)})),this.requiredEvaluationCacheDirty=!0,this.evaluateFieldCondition(e,i)}isHidden(e){return this.hiddenFields.has(e)}isRequired(e,t){let i=this.fieldConfigs.get(e);if(!i||this.isHidden(e)||!_optionalChain([i, 'access', _34 => _34.conditional, 'optionalAccess', _35 => _35.requiredIf]))return!1;this.requiredEvaluationCacheDirty&&(this.requiredEvaluationCache=new WeakMap,this.requiredEvaluationCacheDirty=!1);let r=this.requiredEvaluationCache.get(t);if(r||(r=new Map,this.requiredEvaluationCache.set(t,r)),r.has(e))return r.get(e);let n=!!i.conditional.requiredIf(t);return r.set(e,n),n}getRequiredErrors(e){let t={};return this.requiredConditionalPaths.forEach(i=>{let r=this.fieldConfigs.get(i);if(r&&this.isRequired(i,e)){let n=p(e,i);this.isEmpty(n)&&(t[i]=_nullishCoalesce(_optionalChain([r, 'access', _36 => _36.conditional, 'optionalAccess', _37 => _37.requiredMessage]), () => ("required field")))}}),t}evaluateAll(e){this.conditionalVisibilityPaths.forEach(t=>{this.evaluateFieldCondition(t,e)})}updateDependencies(e,t){let i=[],r=[e],n=new Set;for(;r.length>0;){let o=r.shift();if(n.has(o))continue;n.add(o);let a=this.dependencies.get(o);a&&a.forEach(l=>{let d=this.isHidden(l);this.evaluateFieldCondition(l,t);let c=this.isHidden(l);d!==c&&i.push(l),r.push(l)})}return i}unregister(e){let t=this.fieldConfigs.get(e);this.fieldConfigs.delete(e),this.hiddenFields.delete(e),this.conditionalVisibilityPaths.delete(e),this.dependencies.delete(e),this.requiredEvaluationCacheDirty=!0,this.requiredConditionalPaths.delete(e),_optionalChain([t, 'optionalAccess', _38 => _38.conditional, 'optionalAccess', _39 => _39.dependsOn, 'optionalAccess', _40 => _40.forEach, 'call', _41 => _41(i=>{let r=this.requiredPathsByDependency.get(i);r&&(r.delete(e),r.size===0&&this.requiredPathsByDependency.delete(i))})]),this.dependencies.forEach(i=>{i.delete(e)})}unregisterPrefix(e){let t=[];return this.fieldConfigs.forEach((i,r)=>{r.startsWith(e)&&t.push([r,i])}),t.forEach(([i])=>this.unregister(i)),t}evaluateFieldCondition(e,t){let r=_optionalChain([this, 'access', _42 => _42.fieldConfigs, 'access', _43 => _43.get, 'call', _44 => _44(e), 'optionalAccess', _45 => _45.conditional, 'optionalAccess', _46 => _46.showIf]);r&&(r(t)?this.hiddenFields.delete(e):this.hiddenFields.add(e))}isEmpty(e){return e==null||typeof e=="string"&&e.trim()===""||Array.isArray(e)&&e.length===0}}, _class);var C= (_class2 =class s{constructor(e){;_class2.prototype.__init9.call(this);_class2.prototype.__init10.call(this);_class2.prototype.__init11.call(this);this.getComputedEntries=e}static __initStatic() {this.MIN_PASSES=4}__init9() {this.computedDependencyCache=new Map}__init10() {this.reverseDepsCache=null}__init11() {this.childDepsIndex=null}invalidateReverseDeps(){this.reverseDepsCache=null,this.childDepsIndex=null}getReverseDependencies(e){if(this.reverseDepsCache)return this.reverseDepsCache;let t=new Map;for(let r of e){let n=this.getDependenciesForEntry(r);for(let o of n){let a=t.get(o);a||(a=new Set,t.set(o,a)),a.add(r.path)}}let i=new Map;for(let r of t.keys()){let n=r.split(".");for(let o=1;o<n.length;o++){let a=n.slice(0,o).join("."),l=i.get(a);l||(l=new Set,i.set(a,l)),l.add(r)}}return this.reverseDepsCache=t,this.childDepsIndex=i,t}apply(e,t){let i=this.normalizeEntries(this.getComputedEntries());if(i.length===0)return e;let r=this.resolveEntriesToRun(i,t),n=r.entries;if(n.length===0)return e;let o=e,a=r.requiresStabilizationPasses?Math.max(s.MIN_PASSES,n.length*2):1;for(let l=0;l<a;l++){let d=!1;for(let c of n){let{newValue:u,trackedDependencies:g}=this.computeWithTracking(c,o,r.shouldTrackDependencies),f=p(o,c.path);if(m(f,u)||(o=y(o,c.path,u),d=!0),g){let L=this.computedDependencyCache.get(c.path);this.computedDependencyCache.set(c.path,g),(!L||L.size!==g.size||Array.from(L).some(te=>!g.has(te)))&&this.invalidateReverseDeps()}}if(!d)break;if(r.requiresStabilizationPasses&&l===a-1)throw new Error("BitStore: computed fields did not stabilize. Check for cyclic computed definitions.")}return o}resolveEntriesToRun(e,t){if(!t||t.length===0||t.includes("*"))return{entries:this.orderEntries(e),shouldTrackDependencies:!0,requiresStabilizationPasses:!0};let i=this.getReverseDependencies(e),r=!1;for(let l of e)this.getDependenciesForEntry(l).length===0&&(r=!0);let n=new Set,o=[...t];for(;o.length>0;){let l=o.shift(),d=this.getDependentsForPath(i,l);if(d)for(let c of d)n.has(c)||(n.add(c),o.push(c))}if(n.size===0)return{entries:[],shouldTrackDependencies:r,requiresStabilizationPasses:!1};let a=e.filter(l=>n.has(l.path));return{entries:this.orderEntries(a),shouldTrackDependencies:r,requiresStabilizationPasses:r}}normalizeEntries(e){return e.length===0||!Array.isArray(e[0])?e:e.map(t=>Array.isArray(t)?{path:t[0],compute:t[1]}:t)}getDependenciesForEntry(e){return _nullishCoalesce(e.dependsOn, () => (Array.from(_nullishCoalesce(this.computedDependencyCache.get(e.path), () => ([])))))}orderEntries(e){if(e.length<=1)return e;let t=new Map(e.map(a=>[a.path,a])),i=new Map,r=new Map;e.forEach(a=>i.set(a.path,0)),e.forEach(a=>{this.getDependenciesForEntry(a).forEach(d=>{if(!t.has(d))return;let c=_nullishCoalesce(r.get(d), () => (new Set));c.has(a.path)||(c.add(a.path),r.set(d,c),i.set(a.path,(_nullishCoalesce(i.get(a.path), () => (0)))+1))})});let n=e.filter(a=>(_nullishCoalesce(i.get(a.path), () => (0)))===0).map(a=>a.path),o=[];for(;n.length>0;){let a=n.shift();o.push(a);let l=r.get(a);l&&l.forEach(d=>{let c=(_nullishCoalesce(i.get(d), () => (0)))-1;i.set(d,c),c===0&&n.push(d)})}if(o.length!==e.length)throw new Error("BitStore: cyclic computed dependencies detected. Check computedDependsOn definitions.");return o.map(a=>t.get(a))}getDependentsForPath(e,t){let i=new Set,r=a=>{let l=e.get(a);l&&l.forEach(d=>i.add(d))};r(t);let n=t.split(".");for(;n.length>1;)n.pop(),r(n.join("."));let o=_optionalChain([this, 'access', _47 => _47.childDepsIndex, 'optionalAccess', _48 => _48.get, 'call', _49 => _49(t)]);if(o)for(let a of o)r(a);return i}computeWithTracking(e,t,i){let r=this.getDependenciesForEntry(e);if(!i||r.length>0)return{newValue:e.compute(t),trackedDependencies:null};let n=new Set,o=this.createTrackedValues(t,n);return{newValue:e.compute(o),trackedDependencies:n}}createTrackedValues(e,t){let i=(r,n)=>!r||typeof r!="object"?r:new Proxy(r,{get:(o,a)=>{if(typeof a!="string")return Reflect.get(o,a);let l=n?`${n}.${a}`:a;t.add(l);let d=Reflect.get(o,a);return i(d,l)}});return i(e,"")}}, _class2.__initStatic(), _class2);var F= (_class3 =class{constructor() { _class3.prototype.__init12.call(this);_class3.prototype.__init13.call(this);_class3.prototype.__init14.call(this); }__init12() {this.dirtyPaths=new Set}__init13() {this.dirtyPathIndex=new Set}__init14() {this.dirtyPrefixRefCount=new Map}updateForPath(e,t,i){this.removeDirtyChildren(e);let r=p(t,e),n=p(i,e);return S(r,n)?this.removeDirtyPath(e):this.addDirtyPath(e),this.dirtyPaths.size>0}rebuild(e,t){return this.dirtyPaths=N(e,t),this.dirtyPrefixRefCount.clear(),this.rebuildIndex(),this.dirtyPaths.size>0}clear(){this.dirtyPaths.clear(),this.dirtyPathIndex.clear(),this.dirtyPrefixRefCount.clear()}get isDirty(){return this.dirtyPaths.size>0}getDirtyPaths(){return this.dirtyPaths}isPathDirty(e){if(this.dirtyPathIndex.has(e))return!0;let t=e.split(".");for(;t.length>1;)if(t.pop(),this.dirtyPaths.has(t.join(".")))return!0;return!1}buildDirtyValues(e){if(this.dirtyPaths.size===0)return{};let t={},i=new Set;for(let r of this.dirtyPaths){let n=r.match(/^(.+)\.\d+/);if(n){let o=n[1];if(i.has(o))continue;i.add(o);let a=p(e,o);t=y(t,o,a)}else{let o=p(e,r);t=y(t,r,o)}}return t}rebuildIndex(){let e=new Set,t=new Map;for(let i of this.dirtyPaths)this.forEachPathPrefix(i,r=>{e.add(r),t.set(r,(_nullishCoalesce(t.get(r), () => (0)))+1)});this.dirtyPathIndex=e,this.dirtyPrefixRefCount=t}removeDirtyChildren(e){let t=[];for(let i of this.dirtyPaths)i.startsWith(`${e}.`)&&t.push(i);t.forEach(i=>this.removeDirtyPath(i))}addDirtyPath(e){this.dirtyPaths.has(e)||(this.dirtyPaths.add(e),this.forEachPathPrefix(e,t=>{this.dirtyPathIndex.add(t),this.dirtyPrefixRefCount.set(t,(_nullishCoalesce(this.dirtyPrefixRefCount.get(t), () => (0)))+1)}))}removeDirtyPath(e){this.dirtyPaths.has(e)&&(this.dirtyPaths.delete(e),this.forEachPathPrefix(e,t=>{let i=(_nullishCoalesce(this.dirtyPrefixRefCount.get(t), () => (0)))-1;if(i<=0){this.dirtyPrefixRefCount.delete(t),this.dirtyPathIndex.delete(t);return}this.dirtyPrefixRefCount.set(t,i)}))}forEachPathPrefix(e,t){let i=e.split("."),r="";for(let n of i)r=r?`${r}.${n}`:n,t(r)}}, _class3);var x= (_class4 =class{constructor(e){;_class4.prototype.__init15.call(this);_class4.prototype.__init16.call(this);_class4.prototype.__init17.call(this);_class4.prototype.__init18.call(this);_class4.prototype.__init19.call(this);_class4.prototype.__init20.call(this);this.getState=e}__init15() {this.listeners=new Set}__init16() {this.selectorListeners=new Set}__init17() {this.pathScopedSubscriptions=new Map}__init18() {this.pathSelectorIndex=new Map}__init19() {this.expandedPathCache=new Map}__init20() {this.notifyScopedSubscribers=new Set}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}subscribeSelector(e,t,i,r){let n=e(this.getState()),o={notify:d=>{let c=e(d);r(n,c)||(n=c,t(c))}},a=_optionalChain([i, 'optionalAccess', _50 => _50.autoTrackPaths])?this.collectTrackedSelectorPaths(e):[],l=this.normalizeSubscriptionPaths([..._nullishCoalesce(_optionalChain([i, 'optionalAccess', _51 => _51.paths]), () => ([])),...a]);return l.length>0?(this.pathScopedSubscriptions.set(o,l),l.forEach(d=>{this.expandPathForIndexing(d).forEach(c=>{let u=_nullishCoalesce(this.pathSelectorIndex.get(c), () => (new Set));u.add(o),this.pathSelectorIndex.set(c,u)})})):this.selectorListeners.add(o),_optionalChain([i, 'optionalAccess', _52 => _52.emitImmediately])&&t(n),()=>{this.selectorListeners.delete(o);let d=this.pathScopedSubscriptions.get(o);d&&(d.forEach(c=>{this.expandPathForIndexing(c).forEach(u=>{let g=this.pathSelectorIndex.get(u);g&&(g.delete(o),g.size===0&&this.pathSelectorIndex.delete(u))})}),this.pathScopedSubscriptions.delete(o))}}notify(e,t){if(this.listeners.forEach(r=>r()),this.selectorListeners.forEach(r=>{r.notify(e)}),this.pathScopedSubscriptions.size===0)return;if(!t||t.length===0||t.includes("*")){this.pathScopedSubscriptions.forEach((r,n)=>{n.notify(e)});return}this.collectSubscribersForChangedPaths(t).forEach(r=>{r.notify(e)})}destroy(){this.listeners.clear(),this.selectorListeners.clear(),this.pathScopedSubscriptions.clear(),this.pathSelectorIndex.clear(),this.expandedPathCache.clear(),this.notifyScopedSubscribers.clear()}normalizeSubscriptionPaths(e){if(!e||e.length===0)return[];let t=new Set,i=[];for(let r of e){let n=r.trim();n.length===0||t.has(n)||(t.add(n),i.push(n))}return i}collectTrackedSelectorPaths(e){let t=new Set,i=(n,o)=>!n||typeof n!="object"?n:new Proxy(n,{get:(a,l)=>{if(typeof l!="string")return Reflect.get(a,l);let d=o?`${o}.${l}`:l;t.add(d);let c=Reflect.get(a,l);return i(c,d)}}),r=new Proxy(this.getState(),{get:(n,o)=>{if(typeof o!="string")return Reflect.get(n,o);let a=Reflect.get(n,o);return o==="values"?i(a,""):a}});try{return e(r),Array.from(t)}catch (e2){return[]}}collectSubscribersForChangedPaths(e){let t=this.notifyScopedSubscribers;t.clear();let i=n=>{let o=this.pathSelectorIndex.get(n);o&&o.forEach(a=>t.add(a))};return this.normalizeSubscriptionPaths(e).forEach(n=>{i(n);let o=n.split(".");for(;o.length>1;)o.pop(),i(o.join("."))}),t}expandPathForIndexing(e){let t=this.expandedPathCache.get(e);if(t)return t;let i=e.split("."),r=[];for(let n=1;n<=i.length;n++)r.push(i.slice(0,n).join("."));return this.expandedPathCache.set(e,r),r}}, _class4);function oe(s){let e=!1;for(let i of Object.values(s))if(i===void 0){e=!0;break}if(!e)return s;let t={};return Object.entries(s).forEach(([i,r])=>{r!==void 0&&(t[i]=r)}),t}function le(s){for(let e in s)return!0;return!1}function K(s){let{currentState:e,partialState:t,changedPaths:i,applyComputedValues:r}=s,n={...e,...t},o=!!t.values;t.values&&(n.values=r(t.values)),t.errors&&(n.errors=oe(t.errors),n.isValid=!le(n.errors));let a=i&&i.length>0?i:void 0,l=de(t,!a),d=ce(a,l);return{nextState:n,changedPaths:d,valuesChanged:o}}function de(s,e){if(e&&s.values)return["*"];let t=new Set,i=[s.errors,s.touched,s.isValidating];for(let r of i)if(r)for(let n in r)t.add(n);return s.persist&&t.add("persist"),"isValid"in s&&t.add("isValid"),"isDirty"in s&&t.add("isDirty"),"isSubmitting"in s&&t.add("isSubmitting"),t.size>0?Array.from(t):void 0}function ce(s,e){if(!_optionalChain([s, 'optionalAccess', _53 => _53.length]))return e;if(!_optionalChain([e, 'optionalAccess', _54 => _54.length]))return s;let t=new Set;for(let i of s)t.add(i);for(let i of e)t.add(i);return Array.from(t)}function ue(s){return typeof s=="boolean"?{enabled:s,mode:"local"}:{enabled:!!s,mode:_nullishCoalesce(_optionalChain([s, 'optionalAccess', _55 => _55.mode]), () => ("local")),url:_optionalChain([s, 'optionalAccess', _56 => _56.url])}}function X(s){let e=ue(s);return e.enabled?{name:"bit-devtools",setup:()=>{let t=null,i=!1;return(async()=>{try{if(e.mode==="remote"){let{setupRemoteBridge:r}=await Promise.resolve().then(() => _interopRequireWildcard(require("./devtools/bridge.cjs")));t=r(e.url||"ws://localhost:3000")}else{let{initDevTools:r}=await Promise.resolve().then(() => _interopRequireWildcard(require("./devtools/index.cjs"))),n=r();t=n&&typeof n.destroy=="function"?n.destroy:null}i&&t&&(t(),t=null)}catch (e3){}})(),()=>{i=!0,t&&(t(),t=null)}}}:null}function he(){if(typeof globalThis>"u")return;let s=globalThis.localStorage;if(s)return{getItem:e=>s.getItem(e),setItem:(e,t)=>s.setItem(e,t),removeItem:e=>s.removeItem(e)}}var w=class{constructor(e,t,i,r){this.config=e;this.getValues=t;this.getDirtyValues=i;this.applyRestoredValues=r}getStorage(){return this.config.storage||he()}canPersist(){return!!(this.config.enabled&&this.config.key&&this.getStorage())}handleError(e){_optionalChain([this, 'access', _57 => _57.config, 'access', _58 => _58.onError, 'optionalCall', _59 => _59(e)])}async saveNow(){if(!this.canPersist())return;let e=this.getStorage();if(e)try{let t=this.config.mode==="dirtyValues"?this.getDirtyValues():this.getValues(),i=this.config.serialize(t);await e.setItem(this.config.key,i)}catch(t){this.handleError(t)}}queueSave(){!this.canPersist()||!this.config.autoSave||(this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.saveNow()},this.config.debounceMs))}async restore(){if(!this.canPersist())return!1;let e=this.getStorage();if(!e)return!1;try{let t=await e.getItem(this.config.key);if(!t)return!1;let i=this.config.deserialize(t);return!i||typeof i!="object"?!1:(this.applyRestoredValues(i),!0)}catch(t){return this.handleError(t),!1}}async clear(){if(!this.canPersist())return;let e=this.getStorage();if(e)try{await e.removeItem(this.config.key)}catch(t){this.handleError(t)}}destroy(){this.timer&&(clearTimeout(this.timer),this.timer=void 0)}};var D= (_class5 =class{constructor(e,t){;_class5.prototype.__init21.call(this);_class5.prototype.__init22.call(this);this.plugins=e;this.contextFactory=t}__init21() {this.teardownFns=[]}__init22() {this.notifyingError=!1}setupAll(){this.plugins.forEach(e=>{if(e.setup)try{let t=e.setup(this.contextFactory());typeof t=="function"&&this.teardownFns.push(t)}catch(t){this.reportError("setup",t,void 0,e.name)}})}async beforeValidate(e){await this.emitHook("beforeValidate",e)}async afterValidate(e){await this.emitHook("afterValidate",e)}async beforeSubmit(e){await this.emitHook("beforeSubmit",e)}async afterSubmit(e){await this.emitHook("afterSubmit",e)}onFieldChange(e){this.plugins.forEach(t=>{let i=_optionalChain([t, 'access', _60 => _60.hooks, 'optionalAccess', _61 => _61.onFieldChange]);if(i)try{let r=i(e,this.contextFactory());Promise.resolve(r).catch(n=>{this.reportError("onFieldChange",n,e,t.name)})}catch(r){this.reportError("onFieldChange",r,e,t.name)}})}async reportError(e,t,i,r){if(this.notifyingError)return;this.notifyingError=!0;let n=this.contextFactory(),o={source:e,pluginName:r,error:t,event:i,values:n.getState().values,state:n.getState()};for(let a of this.plugins){let l=_optionalChain([a, 'access', _62 => _62.hooks, 'optionalAccess', _63 => _63.onError]);if(l)try{await l(o,n)}catch (e4){}}this.notifyingError=!1}destroy(){for(let e=this.teardownFns.length-1;e>=0;e-=1){let t=this.teardownFns[e];try{t()}catch(i){this.reportError("teardown",i)}}this.teardownFns=[]}async emitHook(e,t){let i=this.contextFactory();for(let r of this.plugins){let n=_optionalChain([r, 'access', _64 => _64.hooks, 'optionalAccess', _65 => _65[e]]);if(n)try{await n(t,i)}catch(o){await this.reportError(e,o,t,r.name)}}}}, _class5);var k=class{constructor(e,t,i,r){this.storeId=e;this.storeInstance=t;this.persistManager=i;this.pluginManager=r}initialize(){this.pluginManager.setupAll(),T.stores[this.storeId]=this.storeInstance}onStateUpdated(e,t){t&&this.persistManager.queueSave(),T.dispatch(this.storeId,e)}restorePersisted(){return this.persistManager.restore()}savePersistedNow(){return this.persistManager.saveNow()}clearPersisted(){return this.persistManager.clear()}beforeValidate(e){return this.pluginManager.beforeValidate(e)}afterValidate(e){return this.pluginManager.afterValidate(e)}beforeSubmit(e){return this.pluginManager.beforeSubmit(e)}afterSubmit(e){return this.pluginManager.afterSubmit(e)}onFieldChange(e){this.pluginManager.onFieldChange(e)}reportOperationalError(e){return this.pluginManager.reportError(e.source,e.error,e.payload)}destroy(){this.persistManager.destroy(),this.pluginManager.destroy(),delete T.stores[this.storeId]}};var v=class{constructor(e){this.steps=e}async run(e){for(let t of this.steps){if(e.halted)break;await t.run(e)}}},M=class{constructor(e){this.steps=e}run(e){for(let t of this.steps){if(e.halted)break;t.run(e)}}};function A(s){for(let e in s)return!0;return!1}var R= (_class6 =class{constructor(e){;_class6.prototype.__init23.call(this);_class6.prototype.__init24.call(this);_class6.prototype.__init25.call(this);_class6.prototype.__init26.call(this);_class6.prototype.__init27.call(this);_class6.prototype.__init28.call(this);_class6.prototype.__init29.call(this);this.store=e;this.validationPipeline=new v([{name:"validate:resolve-target-fields",run:t=>this.resolveTargetFields(t)},{name:"validate:before-hooks",run:async t=>this.runBeforeValidateHooks(t)},{name:"validate:resolver",run:async t=>this.runResolver(t)},{name:"validate:required-and-hidden",run:t=>this.applyRequiredAndHiddenRules(t)},{name:"validate:abort-check",run:async t=>this.abortIfOutdated(t)},{name:"validate:commit-scoped",run:async t=>this.commitScopedValidation(t)},{name:"validate:commit-global",run:async t=>this.commitGlobalValidation(t)}])}__init23() {this.currentValidationId=0}__init24() {this.asyncEpoch=0}__init25() {this.validatingCount=0}__init26() {this.pendingScopeFields=null}__init27() {this.asyncTimers=new Map}__init28() {this.asyncRequests=new Map}__init29() {this.asyncErrors=new Map}updateFieldValidating(e,t){let i=this.store.getState();if(!!i.isValidating[e]===t)return;let n={...i.isValidating};t?(n[e]=!0,this.validatingCount+=1):(delete n[e],this.validatingCount=Math.max(0,this.validatingCount-1)),this.store.internalUpdateState({isValidating:n})}cancelFieldAsync(e){let t=this.asyncTimers.get(e);t&&(clearTimeout(t),this.asyncTimers.delete(e)),this.asyncRequests.set(e,(this.asyncRequests.get(e)||0)+1)}cleanupField(e){this.cancelFieldAsync(e),this.asyncTimers.delete(e),this.asyncRequests.delete(e),this.asyncErrors.delete(e),this.updateFieldValidating(e,!1)}cleanupPrefix(e){for(let t of this.asyncTimers.keys())(t===e||t.startsWith(`${e}.`))&&this.cleanupField(t)}beginExternalValidation(e){this.cancelFieldAsync(e),this.updateFieldValidating(e,!0)}endExternalValidation(e){this.updateFieldValidating(e,!1)}async setExternalError(e,t){if(t){this.asyncErrors.set(e,t),this.store.setError(e,t);return}if(this.asyncErrors.delete(e),this.store.validate){await this.store.validate({scopeFields:[e]});return}let i={...this.store.getState().errors};delete i[e],this.store.internalUpdateState({errors:i,isValid:!A(i)})}handleAsync(e,t){let i=this.store.getFieldConfig(e),r=_optionalChain([i, 'optionalAccess', _66 => _66.validation, 'optionalAccess', _67 => _67.asyncValidate]);if(!r){this.updateFieldValidating(e,!1);return}let n=this.asyncTimers.get(e);n&&clearTimeout(n);let o=_nullishCoalesce(_optionalChain([i, 'access', _68 => _68.validation, 'optionalAccess', _69 => _69.asyncValidateDelay]), () => (500));this.updateFieldValidating(e,!0),this.asyncTimers.set(e,setTimeout(async()=>{this.asyncTimers.delete(e);let a=this.asyncEpoch,l=(this.asyncRequests.get(e)||0)+1;this.asyncRequests.set(e,l);try{let d=await r(t,this.store.getState().values);if(this.asyncRequests.get(e)!==l||a!==this.asyncEpoch)return;if(d)this.asyncErrors.set(e,d),this.store.setError(e,d);else if(this.asyncErrors.delete(e),this.store.validate)await this.store.validate({scopeFields:[e]});else{let c={...this.store.getState().errors};delete c[e],this.store.internalUpdateState({errors:c,isValid:!A(c)})}}finally{this.asyncRequests.get(e)===l&&a===this.asyncEpoch&&this.updateFieldValidating(e,!1)}},o))}hasValidationsInProgress(e){let t=this.store.getState();return e&&e.length>0?e.some(i=>!!t.isValidating[i]):this.validatingCount>0}trigger(e,t){this.validationTimeout&&clearTimeout(this.validationTimeout);let i=_nullishCoalesce(this.store.config.validationDelay, () => (300)),r=_optionalChain([t, 'optionalAccess', _70 => _70.forceDebounce])?Math.max(1,i):i;if(r>0){if(e&&e.length>0)if(!this.pendingScopeFields)this.pendingScopeFields=new Set(e);else for(let o of e)this.pendingScopeFields.add(o);else this.pendingScopeFields=null;let n=this.pendingScopeFields?Array.from(this.pendingScopeFields):void 0;this.validationTimeout=setTimeout(()=>{this.pendingScopeFields=null,this.validate({scopeFields:n})},r)}else this.pendingScopeFields=null,this.validate({scopeFields:e})}async validate(e){let t={options:e,validationId:++this.currentValidationId,currentState:this.store.getState(),targetFields:_optionalChain([e, 'optionalAccess', _71 => _71.scopeFields]),allErrors:{},isValid:!0,result:!0,aborted:!1};return await this.validationPipeline.run(t),t.result}clear(e){let t=this.asyncTimers.get(e);t&&clearTimeout(t),this.asyncTimers.delete(e),this.updateFieldValidating(e,!1),this.asyncErrors.delete(e)}cancelAll(){this.asyncEpoch+=1,this.validatingCount=0,this.pendingScopeFields=null,this.validationTimeout&&clearTimeout(this.validationTimeout),this.asyncTimers.forEach(e=>clearTimeout(e)),this.asyncTimers.clear(),this.asyncRequests.clear(),this.asyncErrors.clear(),this.store.internalUpdateState({isValidating:{}})}resolveTargetFields(e){if(_optionalChain([e, 'access', _72 => _72.options, 'optionalAccess', _73 => _73.scope])){let t=this.store.getScopeFields(e.options.scope);t.length>0&&(e.targetFields=t)}}async runBeforeValidateHooks(e){await this.store.emitBeforeValidate({values:e.currentState.values,state:e.currentState,scope:_optionalChain([e, 'access', _74 => _74.options, 'optionalAccess', _75 => _75.scope]),scopeFields:e.targetFields})}async runResolver(e){e.allErrors=this.store.config.resolver?await this.store.config.resolver(e.currentState.values,{scopeFields:e.targetFields}):{}}applyRequiredAndHiddenRules(e){let t=this.store.getRequiredErrors(e.currentState.values);e.allErrors={...e.allErrors,...t},this.store.getHiddenFields().forEach(i=>{delete e.allErrors[i],this.asyncErrors.delete(i)})}async abortIfOutdated(e){e.validationId!==this.currentValidationId&&(e.aborted=!0,e.result=e.currentState.isValid,await this.store.emitAfterValidate({values:this.store.getState().values,state:this.store.getState(),scope:_optionalChain([e, 'access', _76 => _76.options, 'optionalAccess', _77 => _77.scope]),scopeFields:e.targetFields,errors:this.store.getState().errors,result:e.currentState.isValid,aborted:!0}),e.halted=!0)}async commitScopedValidation(e){if(!e.targetFields)return;let t={...e.currentState.errors};e.targetFields.forEach(i=>{e.allErrors[i]?t[i]=e.allErrors[i]:this.asyncErrors.has(i)?t[i]=this.asyncErrors.get(i):delete t[i]}),e.isValid=!A(t),e.result=e.targetFields.every(i=>!e.allErrors[i]&&!this.asyncErrors.has(i)),this.store.internalUpdateState({errors:t,isValid:e.isValid}),await this.store.emitAfterValidate({values:this.store.getState().values,state:this.store.getState(),scope:_optionalChain([e, 'access', _78 => _78.options, 'optionalAccess', _79 => _79.scope]),scopeFields:e.targetFields,errors:t,result:e.result}),e.halted=!0}async commitGlobalValidation(e){e.allErrors={...Object.fromEntries(this.asyncErrors.entries()),...e.allErrors},e.isValid=!A(e.allErrors),e.result=e.isValid,this.store.internalUpdateState({errors:e.allErrors,isValid:e.isValid}),await this.store.emitAfterValidate({values:this.store.getState().values,state:this.store.getState(),scope:_optionalChain([e, 'access', _80 => _80.options, 'optionalAccess', _81 => _81.scope]),scopeFields:e.targetFields,errors:e.allErrors,result:e.isValid})}}, _class6);var I=class{constructor(e){this.store=e;this.fieldUpdatePipeline=new M([{name:"field:clear-current-error",run:t=>this.clearCurrentError(t)},{name:"field:update-dependencies",run:t=>this.updateDependencies(t)},{name:"field:update-dirty",run:t=>this.updateDirtyState(t)},{name:"field:commit-state",run:t=>this.commitFieldState(t)},{name:"field:emit-change",run:t=>this.emitFieldChange(t)},{name:"field:trigger-validate",run:t=>this.triggerResolverValidation(t)},{name:"field:trigger-async-validate",run:t=>this.triggerAsyncValidation(t)}]),this.submitPipeline=new v([{name:"submit:start",run:async t=>this.startSubmit(t)},{name:"submit:invalid",run:async t=>this.handleInvalidSubmit(t)},{name:"submit:prepare",run:t=>this.prepareSubmitValues(t)},{name:"submit:before-hooks",run:async t=>this.runBeforeSubmitHooks(t)},{name:"submit:user-handler",run:async t=>this.runSubmitHandler(t)},{name:"submit:after-hooks",run:async t=>this.runAfterSubmitHooks(t)}])}updateField(e,t,i={origin:"setField"}){let r=this.store.getState(),n={path:e,value:t,meta:i,previousValue:p(r.values,e),nextValues:y(r.values,e,t),nextErrors:r.errors,hasMutatedErrors:!1,toggledFields:[],isDirty:!1};this.fieldUpdatePipeline.run(n)}replaceValues(e,t="replaceValues"){let i=this.store.getState().values,r=h(e);this.store.cancelAllValidations(),this.store.evaluateAllDependencies(r);let n=this.store.rebuildDirtyState(r,this.store.config.initialValues);this.store.internalUpdateState({values:r,errors:{},isValidating:{},isValid:!0,isDirty:n,isSubmitting:!1},["*"]),this.store.internalSaveSnapshot(),this.store.validateNow(),this.store.emitFieldChange({path:"*",previousValue:i,nextValue:r,values:this.store.getState().values,state:this.store.getState(),meta:{origin:t}})}hydrateValues(e){let t=P(this.store.getState().values,e);this.replaceValues(t,"hydrate")}rebaseValues(e){let t=this.store.getState().values,i=h(e);this.store.config.initialValues=h(i),this.store.cancelAllValidations(),this.store.evaluateAllDependencies(i),this.store.clearDirtyState(),this.store.internalUpdateState({values:i,errors:{},touched:{},isValidating:{},isValid:!0,isDirty:!1,isSubmitting:!1},["*"]),this.store.internalSaveSnapshot(),this.store.validateNow(),this.store.emitFieldChange({path:"*",previousValue:t,nextValue:i,values:this.store.getState().values,state:this.store.getState(),meta:{origin:"rebase"}})}async submit(e){if(this.store.getState().isSubmitting||this.store.hasValidationsInProgress())return;this.store.cancelAllValidations();let i={onSuccess:e,isValid:!1,valuesToSubmit:h(this.store.getState().values),dirtyValues:{}};try{await this.submitPipeline.run(i)}catch(r){i.error=r,await this.store.emitOperationalError({source:"submit",error:r}),await this.store.emitAfterSubmit({values:this.store.getState().values,dirtyValues:this.store.buildDirtyValues(this.store.getState().values),state:this.store.getState(),success:!1,error:r}),console.error(r)}finally{this.store.internalUpdateState({isSubmitting:!1})}}reset(){this.store.cancelAllValidations();let e=h(this.store.config.initialValues);this.store.evaluateAllDependencies(e),this.store.clearDirtyState(),this.store.internalUpdateState({values:e,errors:{},touched:{},isValidating:{},isValid:!0,isDirty:!1,isSubmitting:!1},["*"]),this.store.resetHistory(e)}clearCurrentError(e){let t=Object.prototype.hasOwnProperty.call(e.nextErrors,e.path);t&&!e.hasMutatedErrors&&(e.nextErrors={...e.nextErrors},e.hasMutatedErrors=!0),t&&delete e.nextErrors[e.path],this.store.clearFieldValidation(e.path)}updateDependencies(e){e.toggledFields=this.store.updateDependencies(e.path,e.nextValues),e.toggledFields.forEach(t=>{if(this.store.isFieldHidden(t)){let i=Object.prototype.hasOwnProperty.call(e.nextErrors,t);i&&!e.hasMutatedErrors&&(e.nextErrors={...e.nextErrors},e.hasMutatedErrors=!0),i&&delete e.nextErrors[t],this.store.clearFieldValidation(t)}})}updateDirtyState(e){e.isDirty=this.store.updateDirtyForPath(e.path,e.nextValues,this.store.config.initialValues)}commitFieldState(e){this.store.internalUpdateState({values:e.nextValues,errors:e.nextErrors,isDirty:e.isDirty},[e.path,...e.toggledFields])}emitFieldChange(e){this.store.emitFieldChange({path:e.path,previousValue:e.previousValue,nextValue:e.value,values:this.store.getState().values,state:this.store.getState(),meta:e.meta})}triggerResolverValidation(e){this.store.config.resolver&&this.store.triggerValidation([e.path])}triggerAsyncValidation(e){this.store.handleFieldAsyncValidation(e.path,e.value)}async startSubmit(e){this.store.internalUpdateState({isSubmitting:!0}),e.isValid=await this.store.validateNow()}async handleInvalidSubmit(e){if(e.isValid)return;let t=this.store.getState().errors,i={...this.store.getState().touched};Object.keys(t).forEach(r=>{i[r]=!0}),this.store.batchStateUpdates(()=>{this.store.internalUpdateState({touched:i})}),e.dirtyValues=this.store.buildDirtyValues(this.store.getState().values),e.invalid=!0,await this.store.emitAfterSubmit({values:this.store.getState().values,dirtyValues:e.dirtyValues,state:this.store.getState(),success:!1,invalid:!0}),e.halted=!0}prepareSubmitValues(e){let t=[];this.store.getHiddenFields().forEach(i=>{t.push([i,void 0])});for(let[i,r]of this.store.getTransformEntries()){let n=p(e.valuesToSubmit,i);t.push([i,r(n,this.store.getState().values)])}t.length>0&&(e.valuesToSubmit=W(e.valuesToSubmit,t)),e.dirtyValues=this.store.buildDirtyValues(e.valuesToSubmit)}async runBeforeSubmitHooks(e){await this.store.emitBeforeSubmit({values:e.valuesToSubmit,dirtyValues:e.dirtyValues,state:this.store.getState()})}async runSubmitHandler(e){await e.onSuccess(e.valuesToSubmit,e.dirtyValues)}async runAfterSubmitHooks(e){await this.store.emitAfterSubmit({values:e.valuesToSubmit,dirtyValues:e.dirtyValues,state:this.store.getState(),success:!0})}};var q= (_class7 =class{constructor(e,t=15){;_class7.prototype.__init30.call(this);_class7.prototype.__init31.call(this);_class7.prototype.__init32.call(this);_class7.prototype.__init33.call(this);this.enableHistory=e;this.maxHistory=t}__init30() {this.history=[]}__init31() {this.historyIndex=-1}__init32() {this.historySize=0}__init33() {this.historyHead=0}saveSnapshot(e){if(!this.enableHistory)return;let t=this.getSnapshotAt(this.historyIndex);if(t&&m(t,e))return;let i=h(e),r=this.getCapacity();this.historyIndex<this.historySize-1&&(this.historySize=this.historyIndex+1);let n=this.historyIndex+1;n<r?(this.history[this.toPhysicalIndex(n)]=i,this.historySize=Math.max(this.historySize,n+1),this.historyIndex=n):(this.historyHead=(this.historyHead+1)%r,this.history[this.toPhysicalIndex(r-1)]=i,this.historySize=r,this.historyIndex=r-1)}get canUndo(){return this.enableHistory?this.historyIndex>0:!1}get canRedo(){return this.enableHistory?this.historyIndex<this.historySize-1:!1}undo(){return this.canUndo?(this.historyIndex--,h(this.getSnapshotAt(this.historyIndex))):null}redo(){return this.canRedo?(this.historyIndex++,h(this.getSnapshotAt(this.historyIndex))):null}reset(e){this.history=[],this.historyIndex=-1,this.historySize=0,this.historyHead=0,this.saveSnapshot(e)}getMetadata(){return{enabled:this.enableHistory,canUndo:this.canUndo,canRedo:this.canRedo,historyIndex:this.historyIndex,historySize:this.historySize}}getCapacity(){return Math.max(1,this.maxHistory)}toPhysicalIndex(e){return(this.historyHead+e)%this.getCapacity()}getSnapshotAt(e){if(!(e<0||e>=this.historySize))return this.history[this.toPhysicalIndex(e)]}}, _class7);var O=class{constructor(e){this.store=e}pushItem(e,t){let i=p(this.store.getState().values,e)||[];this.store.setFieldWithMeta(e,[...i,t],{origin:"array",operation:"push"}),this.store.internalSaveSnapshot()}prependItem(e,t){let i=p(this.store.getState().values,e)||[];this.store.setFieldWithMeta(e,[t,...i],{origin:"array",operation:"prepend"}),this.store.internalSaveSnapshot()}insertItem(e,t,i){let r=[...p(this.store.getState().values,e)||[]];r.splice(t,0,i),this.store.setFieldWithMeta(e,r,{origin:"array",operation:"insert",index:t}),this.store.internalSaveSnapshot()}removeItem(e,t){let i=this.store.getState(),r=p(i.values,e);if(!Array.isArray(r))return;let n=[...r];this.store.unregisterPrefix&&this.store.unregisterPrefix(`${e}.${t}.`);let o=r.filter((c,u)=>u!==t),a=y(i.values,e,o),l=this.store.updateDirtyForPath(e,a,this.store.getConfig().initialValues),d=E(i,e,c=>c===t?null:c>t?c-1:c);this.store.internalUpdateState({values:a,errors:d.errors,touched:d.touched,isValidating:d.isValidating,isDirty:l}),this.store.emitFieldChange({path:e,previousValue:n,nextValue:o,values:this.store.getState().values,state:this.store.getState(),meta:{origin:"array",operation:"remove",index:t}}),this.store.internalSaveSnapshot(),this.revalidate(e)}swapItems(e,t,i){let r=this.store.getState(),n=[...p(r.values,e)||[]],o=[...n];[n[t],n[i]]=[n[i],n[t]];let a=y(r.values,e,n),l=this.store.updateDirtyForPath(e,a,this.store.getConfig().initialValues),d=E(r,e,c=>c===t?i:c===i?t:c);this.store.internalUpdateState({values:a,errors:d.errors,touched:d.touched,isValidating:d.isValidating,isDirty:l}),this.store.emitFieldChange({path:e,previousValue:o,nextValue:n,values:this.store.getState().values,state:this.store.getState(),meta:{origin:"array",operation:"swap",from:t,to:i}}),this.store.internalSaveSnapshot(),this.revalidate(e)}moveItem(e,t,i){let r=this.store.getState(),n=[...p(r.values,e)||[]],o=[...n],[a]=n.splice(t,1);n.splice(i,0,a);let l=y(r.values,e,n),d=this.store.updateDirtyForPath(e,l,this.store.getConfig().initialValues),c=E(r,e,u=>u===t?i:t<i&&u>t&&u<=i?u-1:t>i&&u>=i&&u<t?u+1:u);this.store.internalUpdateState({values:l,errors:c.errors,touched:c.touched,isValidating:c.isValidating,isDirty:d}),this.store.emitFieldChange({path:e,previousValue:o,nextValue:n,values:this.store.getState().values,state:this.store.getState(),meta:{origin:"array",operation:"move",from:t,to:i}}),this.store.internalSaveSnapshot(),this.revalidate(e)}revalidate(e){this.store.triggerValidation([e])}};var H=class{constructor(e,t,i,r){this.getState=e;this.getInitialValues=t;this.getScopeFields=i;this.isPathDirty=r}getStepStatus(e){let t=this.getScopeFields(e),i=this.getState(),r=t.some(a=>!!i.errors[a]),n=t.some(a=>this.isPathDirty(a)),o=this.getStepErrors(e);return{hasErrors:r,isDirty:n,errors:o}}getStepErrors(e){let t=this.getScopeFields(e),i=this.getState(),r={};for(let n of t){let o=i.errors[n];o&&(r[n]=o)}return r}};var U= (_class8 =class{constructor(e,t,i,r){;_class8.prototype.__init34.call(this);this.dependencyManager=e;this.getState=t;this.getConfig=i;this.isPathDirty=r}__init34() {this.requiredValuesRef=null}isHidden(e){return this.dependencyManager.isHidden(e)}isRequired(e){let t=this.getState().values;return this.requiredValuesRef!==t&&(this.requiredValuesRef=t),this.dependencyManager.isRequired(e,t)}isFieldDirty(e){return this.isPathDirty(e)}isFieldValidating(e){return!!this.getState().isValidating[e]}}, _class8);var j=class{constructor(e,t){this.getState=e;this.internalUpdateState=t}setError(e,t){let i={...this.getState().errors,[e]:t};t||delete i[e],this.internalUpdateState({errors:i})}setErrors(e){this.internalUpdateState({errors:{...this.getState().errors,...e}})}setServerErrors(e){let t={};for(let[i,r]of Object.entries(e))t[i]=Array.isArray(r)?r[0]:r;this.setErrors(t)}};var z= (_class9 =class{constructor() { _class9.prototype.__init35.call(this); }__init35() {this.capabilities=new Map}register(e,t){this.capabilities.set(e,t)}get(e){let t=this.capabilities.get(e);if(!t)throw new Error(`Capability "${String(e)}" is not registered`);return t}has(e){return this.capabilities.has(e)}clear(){this.capabilities.clear()}}, _class9);function Y(s){let{store:e,dependencyManager:t,dirtyManager:i}=s,r=new z,n={getState:()=>e.getState(),internalUpdateState:a=>e.internalUpdateState(a),setError:(a,l)=>e.setError(a,l),validate:a=>e.validate(a),getFieldConfig:a=>e.getFieldConfig(a),getScopeFields:a=>e.getScopeFields(a),config:e.config,getRequiredErrors:a=>e.getRequiredErrors(a),getHiddenFields:()=>e.getHiddenFields(),emitBeforeValidate:a=>e.emitBeforeValidate(a),emitAfterValidate:a=>e.emitAfterValidate(a)},o={getState:()=>e.getState(),internalUpdateState:(a,l)=>e.internalUpdateState(a,l),internalSaveSnapshot:()=>e.internalSaveSnapshot(),batchStateUpdates:a=>e.batchStateUpdates(a),config:e.config,getTransformEntries:()=>e.getTransformEntries(),updateDependencies:(a,l)=>e.updateDependencies(a,l),isFieldHidden:a=>e.isFieldHidden(a),evaluateAllDependencies:a=>e.evaluateAllDependencies(a),getHiddenFields:()=>e.getHiddenFields(),clearFieldValidation:a=>e.clearFieldValidation(a),triggerValidation:(a,l)=>e.triggerValidation(a,l),handleFieldAsyncValidation:(a,l)=>e.handleFieldAsyncValidation(a,l),cancelAllValidations:()=>e.cancelAllValidations(),validateNow:a=>e.validateNow(a),hasValidationsInProgress:a=>e.hasValidationsInProgress(a),updateDirtyForPath:(a,l,d)=>e.updateDirtyForPath(a,l,d),rebuildDirtyState:(a,l)=>e.rebuildDirtyState(a,l),clearDirtyState:()=>e.clearDirtyState(),buildDirtyValues:a=>e.buildDirtyValues(a),resetHistory:a=>e.resetHistory(a),emitFieldChange:a=>e.emitFieldChange(a),emitBeforeSubmit:a=>e.emitBeforeSubmit(a),emitAfterSubmit:a=>e.emitAfterSubmit(a),emitOperationalError:a=>e.emitOperationalError(a)};return r.register("validation",new R(n)),r.register("lifecycle",new I(o)),r.register("history",new q(!!e.config.enableHistory,_nullishCoalesce(e.config.historyLimit, () => (15)))),r.register("arrays",new O(e)),r.register("scope",new H(()=>e.getState(),()=>e.config.initialValues,a=>e.getScopeFields(a),a=>i.isPathDirty(a))),r.register("query",new U(t,()=>e.getState(),()=>e.config,a=>i.isPathDirty(a))),r.register("error",new j(()=>e.getState(),a=>e.internalUpdateState(a))),r}function Q(s){let{storeId:e,storeInstance:t,config:i,getState:r,getConfig:n,getValues:o,getDirtyValues:a,applyPersistedValues:l}=s,d=new w(i.persist,o,a,l),c=[...i.plugins],u=X(i.devTools);u&&c.push(u);let g=new D(c,()=>({storeId:e,getState:()=>r(),getConfig:()=>n()})),f=new k(e,t,d,g);return f.initialize(),f}function Z(s){let{config:e,dependencyManager:t,computedManager:i}=s,r=h(e.initialValues);return e.fields&&Object.entries(e.fields).forEach(([o,a])=>{t.register(o,a,r)}),{values:i.apply(r),errors:{},touched:{},isValidating:{},persist:{isSaving:!1,isRestoring:!1,error:null},isValid:!0,isSubmitting:!1,isDirty:!1}}var b= (_class10 =class{__init36() {this.scopeFieldsIndex=null}__init37() {this.computedEntriesCache=null}__init38() {this.transformEntriesCache=null}__init39() {this.batchDepth=0}__init40() {this.batchedState=null}__init41() {this.batchedChangedPaths=null}__init42() {this.batchedValuesChanged=!1}invalidateFieldIndexes(){this.scopeFieldsIndex=null,this.computedEntriesCache=null,this.transformEntriesCache=null,this.computedManager.invalidateReverseDeps()}registerCachedFieldIndexes(e,t){if(this.scopeFieldsIndex&&t.scope){let i=_nullishCoalesce(this.scopeFieldsIndex.get(t.scope), () => ([]));i.includes(e)||(i.push(e),this.scopeFieldsIndex.set(t.scope,i))}this.computedEntriesCache&&t.computed&&this.computedEntriesCache.push({path:e,compute:t.computed,dependsOn:_nullishCoalesce(t.computedDependsOn, () => (_optionalChain([t, 'access', _82 => _82.conditional, 'optionalAccess', _83 => _83.dependsOn])))}),this.transformEntriesCache&&t.transform&&this.transformEntriesCache.push([e,t.transform])}unregisterCachedFieldIndexes(e,t){if(!t){this.invalidateFieldIndexes();return}if(this.scopeFieldsIndex&&t.scope){let i=this.scopeFieldsIndex.get(t.scope);if(i){let r=i.filter(n=>n!==e);r.length>0?this.scopeFieldsIndex.set(t.scope,r):this.scopeFieldsIndex.delete(t.scope)}}this.computedEntriesCache&&t.computed&&(this.computedEntriesCache=this.computedEntriesCache.filter(i=>i.path!==e)),this.transformEntriesCache&&t.transform&&(this.transformEntriesCache=this.transformEntriesCache.filter(([i])=>i!==e))}getCapability(e){return this.capabilities.get(e)}get validation(){return this.getCapability("validation")}get lifecycle(){return this.getCapability("lifecycle")}get history(){return this.getCapability("history")}get arrays(){return this.getCapability("arrays")}get scope(){return this.getCapability("scope")}get query(){return this.getCapability("query")}get error(){return this.getCapability("error")}constructor(e={}){;_class10.prototype.__init36.call(this);_class10.prototype.__init37.call(this);_class10.prototype.__init38.call(this);_class10.prototype.__init39.call(this);_class10.prototype.__init40.call(this);_class10.prototype.__init41.call(this);_class10.prototype.__init42.call(this);this.config=J(e),this.dependencyManager=new V,this.computedManager=new C(()=>this.getComputedEntries()),this.dirtyManager=new F,this.capabilities=Y({store:this,dependencyManager:this.dependencyManager,dirtyManager:this.dirtyManager}),this.state=Z({config:this.config,dependencyManager:this.dependencyManager,computedManager:this.computedManager}),this.subscriptions=new x(()=>this.state),this.internalSaveSnapshot(),this.storeId=e.storeId||this.config.name||this.config.idFactory({scope:"store",storeName:this.config.name}),this.effects=Q({storeId:this.storeId,storeInstance:this,config:this.config,getState:()=>this.getState(),getConfig:()=>this.getConfig(),getValues:()=>this.state.values,getDirtyValues:()=>this.getDirtyValues(),applyPersistedValues:t=>this.applyPersistedValues(t)})}getConfig(){return this.config}getFieldConfig(e){return this.dependencyManager.getFieldConfig(e)||_optionalChain([this, 'access', _84 => _84.config, 'access', _85 => _85.fields, 'optionalAccess', _86 => _86[e]])}getScopeFields(e){if(!this.scopeFieldsIndex){let t=new Map;this.dependencyManager.forEachFieldConfig((i,r)=>{if(!i.scope)return;let n=_nullishCoalesce(t.get(i.scope), () => ([]));n.push(r),t.set(i.scope,n)}),this.scopeFieldsIndex=t}return _nullishCoalesce(this.scopeFieldsIndex.get(e), () => ([]))}getComputedEntries(){if(!this.computedEntriesCache){let e=[];this.dependencyManager.forEachFieldConfig((t,i)=>{t.computed&&e.push({path:i,compute:t.computed,dependsOn:_nullishCoalesce(t.computedDependsOn, () => (_optionalChain([t, 'access', _87 => _87.conditional, 'optionalAccess', _88 => _88.dependsOn])))})}),this.computedEntriesCache=e}return this.computedEntriesCache}getTransformEntries(){if(!this.transformEntriesCache){let e=[];this.dependencyManager.forEachFieldConfig((t,i)=>{t.transform&&e.push([i,t.transform])}),this.transformEntriesCache=e}return this.transformEntriesCache}resolveMask(e){let t=_optionalChain([this, 'access', _89 => _89.getFieldConfig, 'call', _90 => _90(e), 'optionalAccess', _91 => _91.mask]);if(t)return typeof t=="string"?_optionalChain([this, 'access', _92 => _92.config, 'access', _93 => _93.masks, 'optionalAccess', _94 => _94[t]]):t}getState(){return _nullishCoalesce(this.batchedState, () => (this.state))}getFieldState(e){return{value:p(this.state.values,e),error:this.state.errors[e],touched:!!this.state.touched[e],isHidden:this.isHidden(e),isRequired:this.isRequired(e),isDirty:this.isFieldDirty(e),isValidating:this.isFieldValidating(e)}}get isValid(){return this.state.isValid}get isSubmitting(){return this.state.isSubmitting}get isDirty(){return this.state.isDirty}registerField(e,t){this.dependencyManager.register(e,t,this.state.values),this.registerCachedFieldIndexes(e,t),this.dependencyManager.isHidden(e)&&this.subscriptions.notify(this.state,["*"])}unregisterField(e){if(_optionalChain([this, 'access', _95 => _95.config, 'access', _96 => _96.fields, 'optionalAccess', _97 => _97[e]]))return;let t=this.getFieldConfig(e);this.validation.cleanupField(e),this.dependencyManager.unregister(e),this.unregisterCachedFieldIndexes(e,t);let i={...this.state.errors},r={...this.state.touched},n=!1;i[e]&&(delete i[e],n=!0),r[e]&&(delete r[e],n=!0),n&&this.internalUpdateState({errors:i,touched:r})}unregisterPrefix(e){this.validation.cleanupPrefix(e),this.dependencyManager.unregisterPrefix(e).forEach(([i,r])=>{this.unregisterCachedFieldIndexes(i,r)})}isHidden(e){return this.query.isHidden(e)}isRequired(e){return this.query.isRequired(e)}isFieldDirty(e){return this.query.isFieldDirty(e)}isFieldValidating(e){return this.query.isFieldValidating(e)}subscribe(e){return this.subscriptions.subscribe(e)}subscribeSelector(e,t,i){let r=_nullishCoalesce(_optionalChain([i, 'optionalAccess', _98 => _98.equalityFn]), () => (S));return this.subscriptions.subscribeSelector(e,t,i,r)}subscribePath(e,t,i){let r=[..._nullishCoalesce(_optionalChain([i, 'optionalAccess', _99 => _99.paths]), () => ([])),e];return this.subscribeSelector(n=>p(n.values,e),t,{...i,paths:r})}watch(e,t){return this.subscribePath(e,t,{equalityFn:m})}setField(e,t){this.setFieldWithMeta(e,t,{origin:"setField"})}setFieldWithMeta(e,t,i={origin:"setField"}){this.lifecycle.updateField(e,t,i)}blurField(e){this.internalSaveSnapshot(),this.state.touched[e]||this.batchStateUpdates(()=>{this.internalUpdateState({touched:{...this.state.touched,[e]:!0}})}),this.validation.trigger([e])}markFieldsTouched(e){if(e.length===0)return;let t={...this.state.touched};e.forEach(i=>{t[i]=!0}),this.internalUpdateState({touched:t})}replaceValues(e){this.lifecycle.replaceValues(e)}hydrate(e){this.lifecycle.hydrateValues(e)}rebase(e){this.lifecycle.rebaseValues(e)}setError(e,t){this.error.setError(e,t)}setErrors(e){this.error.setErrors(e)}setServerErrors(e){this.error.setServerErrors(e)}reset(){this.lifecycle.reset()}transaction(e){return this.batchStateUpdates(e)}async submit(e){return this.lifecycle.submit(e)}registerMask(e,t){this.config.masks={...this.config.masks||{},[e]:t}}getDirtyValues(){return this.dirtyManager.buildDirtyValues(this.state.values)}getPersistMetadata(){return this.state.persist}async restorePersisted(){this.internalUpdateState({persist:{...this.state.persist,isRestoring:!0,error:null}});try{return await this.effects.restorePersisted()}catch(e){return this.internalUpdateState({persist:{...this.state.persist,isRestoring:!1,error:e instanceof Error?e:new Error(String(e))}}),!1}finally{this.internalUpdateState({persist:{...this.state.persist,isRestoring:!1}})}}async forceSave(){this.internalUpdateState({persist:{...this.state.persist,isSaving:!0,error:null}});try{await this.effects.savePersistedNow()}catch(e){this.internalUpdateState({persist:{...this.state.persist,isSaving:!1,error:e instanceof Error?e:new Error(String(e))}});return}this.internalUpdateState({persist:{...this.state.persist,isSaving:!1}})}async clearPersisted(){this.internalUpdateState({persist:{...this.state.persist,error:null}});try{await this.effects.clearPersisted()}catch(e){this.internalUpdateState({persist:{...this.state.persist,error:e instanceof Error?e:new Error(String(e))}})}}pushItem(e,t){this.arrays.pushItem(e,t)}prependItem(e,t){this.arrays.prependItem(e,t)}insertItem(e,t,i){this.arrays.insertItem(e,t,i)}removeItem(e,t){this.arrays.removeItem(e,t)}swapItems(e,t,i){this.arrays.swapItems(e,t,i)}moveItem(e,t,i){this.arrays.moveItem(e,t,i)}get canUndo(){return this.history.canUndo}get canRedo(){return this.history.canRedo}undo(){let e=this.history.undo();if(e){let t=this.dirtyManager.rebuild(e,this.config.initialValues);this.internalUpdateState({values:e,isDirty:t}),this.validation.trigger(void 0,{forceDebounce:!0})}}redo(){let e=this.history.redo();if(e){let t=this.dirtyManager.rebuild(e,this.config.initialValues);this.internalUpdateState({values:e,isDirty:t}),this.validation.trigger(void 0,{forceDebounce:!0})}}getHistoryMetadata(){return this.history.getMetadata()}validate(e){return this.validation.validate(e)}emitBeforeValidate(e){return this.effects.beforeValidate(e)}emitAfterValidate(e){return this.effects.afterValidate(e)}emitBeforeSubmit(e){return this.effects.beforeSubmit(e)}emitAfterSubmit(e){return this.effects.afterSubmit(e)}emitFieldChange(e){this.effects.onFieldChange(e)}emitOperationalError(e){return this.effects.reportOperationalError(e)}hasValidationsInProgress(e){return this.validation.hasValidationsInProgress(e)}triggerValidation(e,t){this.validation.trigger(e,t)}getStepStatus(e){return this.scope.getStepStatus(e)}getStepErrors(e){return this.scope.getStepErrors(e)}updateDependencies(e,t){return this.dependencyManager.updateDependencies(e,t)}isFieldHidden(e){return this.dependencyManager.isHidden(e)}evaluateAllDependencies(e){this.dependencyManager.evaluateAll(e)}getHiddenFields(){return this.dependencyManager.getHiddenFields()}getRequiredErrors(e){return this.dependencyManager.getRequiredErrors(e)}clearFieldValidation(e){this.validation.clear(e)}handleFieldAsyncValidation(e,t){this.validation.handleAsync(e,t)}cancelAllValidations(){this.validation.cancelAll()}validateNow(e){return this.validation.validate(e)}updateDirtyForPath(e,t,i){return this.dirtyManager.updateForPath(e,t,i)}rebuildDirtyState(e,t){return this.dirtyManager.rebuild(e,t)}clearDirtyState(){this.dirtyManager.clear()}buildDirtyValues(e){return this.dirtyManager.buildDirtyValues(e)}batchStateUpdates(e){this.batchDepth+=1;try{return e()}finally{this.batchDepth-=1,this.batchDepth===0&&this.flushBatchedStateUpdates()}}resetHistory(e){this.history.reset(e)}internalUpdateState(e,t){if(this.batchDepth>0){let r=K({currentState:_nullishCoalesce(this.batchedState, () => (this.state)),partialState:e,changedPaths:t,applyComputedValues:n=>n});if(this.batchedState=r.nextState,this.batchedValuesChanged||=r.valuesChanged,r.changedPaths&&r.changedPaths.length>0){let n=_nullishCoalesce(this.batchedChangedPaths, () => (new Set));r.changedPaths.forEach(o=>n.add(o)),this.batchedChangedPaths=n}return}let i=K({currentState:this.state,partialState:e,changedPaths:t,applyComputedValues:r=>this.computedManager.apply(r,t)});this.state=i.nextState,this.subscriptions.notify(this.state,i.changedPaths),this.effects.onStateUpdated(this.state,i.valuesChanged)}internalSaveSnapshot(){this.history.saveSnapshot(this.state.values)}applyPersistedValues(e){let t=h({...this.config.initialValues,...e});this.validation.cancelAll(),this.dependencyManager.evaluateAll(t);let i=this.dirtyManager.rebuild(t,this.config.initialValues);this.internalUpdateState({values:t,errors:{},touched:{},isValidating:{},persist:{...this.state.persist,error:null},isValid:!0,isDirty:i,isSubmitting:!1}),this.internalSaveSnapshot(),this.validation.validate()}cleanup(){this.subscriptions.destroy(),this.validation.cancelAll(),this.capabilities.clear(),this.effects.destroy()}flushBatchedStateUpdates(){if(!this.batchedState)return;let e=this.batchedState,t=this.batchedChangedPaths?Array.from(this.batchedChangedPaths):void 0,i=this.batchedValuesChanged;i&&(e={...e,values:this.computedManager.apply(e.values,t)}),this.batchedState=null,this.batchedChangedPaths=null,this.batchedValuesChanged=!1,this.state=e,this.subscriptions.notify(this.state,t),this.effects.onStateUpdated(this.state,i)}}, _class10);var ee=new Set(["config","getConfig","getState","subscribe","setField","blurField","replaceValues","hydrate","rebase","setError","setErrors","setServerErrors","validate","reset","transaction","submit","registerMask","getDirtyValues","getPersistMetadata","restorePersisted","forceSave","clearPersisted","cleanup","registerField","unregisterField","isHidden","isRequired","isFieldDirty","isFieldValidating","watch","pushItem","prependItem","insertItem","removeItem","moveItem","swapItems","getHistoryMetadata","undo","redo","getStepStatus","getStepErrors","getFieldState","subscribePath","subscribeSelector","unregisterPrefix","markFieldsTouched","hasValidationsInProgress","resolveMask","getScopeFields"]);function pe(s){return new Proxy(s,{get(e,t){if(typeof t=="string"&&!ee.has(t))return;let i=Reflect.get(e,t,e);return typeof i=="function"?i.bind(e):i},has(e,t){return typeof t=="string"&&ee.has(t)},set(){return!1}})}function ge(s){return typeof s.getFieldState=="function"&&typeof s.subscribePath=="function"&&typeof s.subscribeSelector=="function"&&typeof s.markFieldsTouched=="function"&&typeof s.hasValidationsInProgress=="function"&&typeof s.resolveMask=="function"&&typeof s.getScopeFields=="function"}function fe(s){if(s instanceof b||ge(s))return s;throw new Error("BitForm: o store informado n\xE3o exp\xF5e a API necess\xE1ria para hooks/framework bindings.")}function ye(s={}){return pe(new b(s))}exports.a = h; exports.b = P; exports.c = S; exports.d = m; exports.e = p; exports.f = y; exports.g = re; exports.h = G; exports.i = ne; exports.j = T; exports.k = fe; exports.l = ye;
2
+ //# sourceMappingURL=chunk-OZKLQRO6.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/utils.ts"],"names":["deepClone","obj","item","clone","key","deepMerge","target","source","base","sourceValue","baseValue","valueEqual","a","b","deepEqual","keysA","keysB","collectDirtyPaths","initial","prefix","result","allKeys","k","p"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/chunk-OZKLQRO6.cjs","sourcesContent":["export function deepClone<T>(obj: T): T {\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (typeof structuredClone === \"function\") {\n return structuredClone(obj);\n }\n\n if (obj instanceof Date) {\n return new Date(obj.getTime()) as any as T;\n }\n if (obj instanceof RegExp) {\n return new RegExp(obj.source, obj.flags) as any as T;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => deepClone(item)) as any as T;\n }\n\n const clone: any = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clone[key] = deepClone((obj as any)[key]);\n }\n }\n return clone as T;\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\n/**\n * Fast equality for single values. Uses === for primitives, deepEqual for objects/arrays.\n * Prefer over deepEqual when comparing a single field value (e.g. isFieldDirty, getStepStatus).\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 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 (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 !deepEqual(a[key], b[key])\n ) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Collects all paths where obj differs from initial. Used to rebuild dirtyPaths after full state replacement.\n */\nexport function collectDirtyPaths(\n obj: any,\n initial: any,\n prefix = \"\",\n result: Set<string> = new Set(),\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 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((obj as any)?.[k], (initial as any)?.[k], p, result);\n }\n return result;\n}\n\nconst PATH_CACHE_MAX = 1000;\nconst pathCache = new Map<string, string[]>();\n\nfunction getPathKeys(path: string): string[] {\n const cached = pathCache.get(path);\n if (cached) {\n return cached;\n }\n\n const keys = path.split(\".\");\n if (pathCache.size >= PATH_CACHE_MAX) {\n pathCache.clear();\n }\n pathCache.set(path, keys);\n return keys;\n}\n\nexport function getDeepValue(obj: any, path: string): any {\n if (!path) return obj;\n\n const keys = getPathKeys(path);\n\n let current = obj;\n for (const key of keys) {\n if (current === null || current === undefined) return undefined;\n current = current[key];\n }\n return current;\n}\n\nexport function setDeepValue(obj: any, path: string, value: any): any {\n if (!path) return value;\n\n const keys = getPathKeys(path);\n\n const result = Array.isArray(obj) ? [...obj] : { ...obj };\n let current = result;\n\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n const nextKey = keys[i + 1];\n\n const nextAsNumber = Number(nextKey);\n const isNextNumeric =\n Number.isInteger(nextAsNumber) && String(nextAsNumber) === nextKey;\n const currentValue = current[key];\n\n if (currentValue === null || currentValue === undefined) {\n current[key] = isNextNumeric ? [] : {};\n } else {\n current[key] = Array.isArray(currentValue)\n ? [...currentValue]\n : { ...currentValue };\n }\n\n current = current[key];\n }\n\n current[keys[keys.length - 1]] = value;\n\n return result;\n}\n\nexport function setDeepValues(\n obj: any,\n updates: ReadonlyArray<readonly [path: string, value: any]>,\n): any {\n if (updates.length === 0) {\n return obj;\n }\n\n const root = Array.isArray(obj) ? [...obj] : { ...obj };\n const clonedNodes = new WeakSet<object>();\n if (root && typeof root === \"object\") {\n clonedNodes.add(root);\n }\n\n for (const [path, value] of updates) {\n const keys = getPathKeys(path);\n let current: any = root;\n\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i];\n const nextKey = keys[i + 1];\n\n const nextAsNumber = Number(nextKey);\n const isNextNumeric =\n Number.isInteger(nextAsNumber) && String(nextAsNumber) === nextKey;\n\n const currentValue = current[key];\n\n if (currentValue === null || currentValue === undefined) {\n current[key] = isNextNumeric ? [] : {};\n clonedNodes.add(current[key]);\n } else if (typeof currentValue === \"object\") {\n if (!clonedNodes.has(currentValue)) {\n current[key] = Array.isArray(currentValue)\n ? [...currentValue]\n : { ...currentValue };\n clonedNodes.add(current[key]);\n }\n } else {\n current[key] = isNextNumeric ? [] : {};\n clonedNodes.add(current[key]);\n }\n\n current = current[key];\n }\n\n current[keys[keys.length - 1]] = value;\n }\n\n return root;\n}\n\nexport function cleanPrefixedKeys(\n obj: Record<string, any>,\n prefix: string,\n): Record<string, any> {\n const newObj: Record<string, any> = {};\n const prefixWithDot = `${prefix}.`;\n\n for (const key in obj) {\n if (key !== prefix && !key.startsWith(prefixWithDot)) {\n newObj[key] = obj[key];\n }\n }\n return newObj;\n}\n\nexport const shiftKeys = (\n obj: Record<string, any>,\n path: string,\n removedIndex: number,\n) => {\n return reindexObjectKeys(obj, path, (currentIdx) => {\n if (currentIdx === removedIndex) {\n return null;\n }\n\n return currentIdx > removedIndex ? currentIdx - 1 : currentIdx;\n });\n};\n\nexport const swapKeys = (\n obj: Record<string, any>,\n path: string,\n indexA: number,\n indexB: number,\n) => {\n return reindexObjectKeys(obj, path, (currentIdx) => {\n if (currentIdx === indexA) {\n return indexB;\n }\n\n if (currentIdx === indexB) {\n return indexA;\n }\n\n return currentIdx;\n });\n};\n\nexport const moveKeys = (\n obj: Record<string, any>,\n path: string,\n from: number,\n to: number,\n) => {\n return reindexObjectKeys(obj, path, (currentIdx) => {\n if (currentIdx === from) {\n return to;\n }\n\n if (from < to && currentIdx > from && currentIdx <= to) {\n return currentIdx - 1;\n }\n\n if (from > to && currentIdx >= to && currentIdx < from) {\n return currentIdx + 1;\n }\n\n return currentIdx;\n });\n};\n\nexport function reindexFieldArrayMeta(\n state: {\n errors: Record<string, any>;\n touched: Record<string, any>;\n isValidating: Record<string, any>;\n },\n path: string,\n remapIndex: (index: number) => number | null,\n) {\n const nextErrors: Record<string, any> = {};\n const nextTouched: Record<string, any> = {};\n const nextIsValidating: Record<string, any> = {};\n\n const allKeys = new Set<string>();\n Object.keys(state.errors).forEach((key) => allKeys.add(key));\n Object.keys(state.touched).forEach((key) => allKeys.add(key));\n Object.keys(state.isValidating).forEach((key) => allKeys.add(key));\n\n const prefix = `${path}.`;\n\n for (const key of allKeys) {\n const nextKey = remapIndexedPath(key, prefix, remapIndex);\n if (!nextKey) {\n continue;\n }\n\n if (Object.prototype.hasOwnProperty.call(state.errors, key)) {\n nextErrors[nextKey] = state.errors[key];\n }\n\n if (Object.prototype.hasOwnProperty.call(state.touched, key)) {\n nextTouched[nextKey] = state.touched[key];\n }\n\n if (Object.prototype.hasOwnProperty.call(state.isValidating, key)) {\n nextIsValidating[nextKey] = state.isValidating[key];\n }\n }\n\n return {\n errors: nextErrors,\n touched: nextTouched,\n isValidating: nextIsValidating,\n };\n}\n\nfunction remapIndexedPath(\n key: string,\n prefix: string,\n remapIndex: (index: number) => number | null,\n) {\n if (!key.startsWith(prefix)) {\n return key;\n }\n\n const remaining = key.substring(prefix.length);\n const parts = remaining.split(\".\");\n const currentIdx = parseInt(parts[0], 10);\n const nextIdx = remapIndex(currentIdx);\n\n if (nextIdx === null) {\n return null;\n }\n\n const rest = parts.slice(1).join(\".\");\n return rest ? `${prefix}${nextIdx}.${rest}` : `${prefix}${nextIdx}`;\n}\n\nfunction reindexObjectKeys(\n obj: Record<string, any>,\n path: string,\n remapIndex: (index: number) => number | null,\n) {\n const nextObject: Record<string, any> = {};\n const prefix = `${path}.`;\n\n for (const key of Object.keys(obj)) {\n if (!key.startsWith(prefix)) {\n nextObject[key] = obj[key];\n continue;\n }\n\n const remaining = key.substring(prefix.length);\n const parts = remaining.split(\".\");\n const currentIdx = parseInt(parts[0], 10);\n const nextIdx = remapIndex(currentIdx);\n\n if (nextIdx === null) {\n continue;\n }\n\n const rest = parts.slice(1).join(\".\");\n const nextKey = rest\n ? `${prefix}${nextIdx}.${rest}`\n : `${prefix}${nextIdx}`;\n nextObject[nextKey] = obj[key];\n }\n\n return nextObject;\n}\n\n/**\n * Checks if a value looks like a server validation error response.\n * Handles shapes like { email: \"Taken\" }, { errors: { email: [\"Taken\"] } }, etc.\n */\nexport function isValidationErrorShape(\n x: unknown,\n): x is Record<string, string | string[]> {\n if (typeof x !== \"object\" || x === null || Array.isArray(x)) return false;\n\n const obj = (x as Record<string, unknown>).errors ?? x;\n if (typeof obj !== \"object\" || obj === null || Array.isArray(obj))\n return false;\n\n return Object.values(obj as Record<string, unknown>).every(\n (v) =>\n typeof v === \"string\" ||\n (Array.isArray(v) && v.every((i) => typeof i === \"string\")),\n );\n}\n\n/**\n * Extracts server errors in the format expected by setServerErrors.\n */\nexport function extractServerErrors(\n x: unknown,\n): Record<string, string | string[]> {\n if (!isValidationErrorShape(x)) return {};\n\n const obj = (x as Record<string, unknown>).errors ?? x;\n return obj as Record<string, string | string[]>;\n}\n"]}
@@ -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 e(t){return t!=null&&typeof t=="object"&&"target"in t}var r=(t,n)=>t==null||t===""?"":n?n.format(t):String(t),i= exports.c =(t,n)=>n?n.parse(String(_nullishCoalesce(t, () => ("")))):t;exports.a = e; exports.b = r; exports.c = i;
2
+ //# sourceMappingURL=chunk-PFPGASVZ.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/mask/field-binding.ts"],"names":["isBitFieldInputEventObject","value","formatMaskedValue","mask","parseMaskedInput"],"mappings":"AAkBO,sLAASA,CAAAA,CACdC,CAAAA,CAIA,CACA,OAAOA,CAAAA,EAAS,IAAA,EAAQ,OAAOA,CAAAA,EAAU,QAAA,EAAY,QAAA,GAAYA,CACnE,CAEO,IAAMC,CAAAA,CAAoB,CAACD,CAAAA,CAAgBE,CAAAA,CAAAA,EACrBF,CAAAA,EAAU,IAAA,EAAQA,CAAAA,GAAU,EAAA,CAC9C,EAAA,CAGFE,CAAAA,CAAOA,CAAAA,CAAK,MAAA,CAAOF,CAAK,CAAA,CAAI,MAAA,CAAOA,CAAK,CAAA,CAGpCG,CAAAA,aAAmB,CAACH,CAAAA,CAAgBE,CAAAA,CAAAA,EAC1CA,CAAAA,CAIEA,CAAAA,CAAK,KAAA,CAAM,MAAA,kBAAOF,CAAAA,SAAS,IAAE,CAAC,CAAA,CAH5BA,CAAAA,CAAAA,4CAAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-PFPGASVZ.cjs","sourcesContent":["import type { BitMask } from \"./types\";\n\n/**\n * Tipo de entrada aceito pelos handlers de campo.\n * Cobre eventos nativos (`e.target.value`), eventos sintéticos e valores diretos.\n * Definido aqui para ser compartilhado entre todos os frameworks.\n */\nexport type BitFieldInputEvent =\n | { target?: { value?: string | number | null } }\n | string\n | number\n | null\n | undefined;\n\n/**\n * Type guard: verifica se o valor de entrada é um objeto de evento\n * (com propriedade `target`), diferenciando-o de um valor direto.\n */\nexport function isBitFieldInputEventObject(\n value: BitFieldInputEvent,\n): value is Extract<\n BitFieldInputEvent,\n { target?: { value?: string | number | null } }\n> {\n return value != null && typeof value === \"object\" && \"target\" in value;\n}\n\nexport const formatMaskedValue = (value: unknown, mask?: BitMask): string => {\n if (value === undefined || value === null || value === \"\") {\n return \"\";\n }\n\n return mask ? mask.format(value) : String(value);\n};\n\nexport const parseMaskedInput = (value: unknown, mask?: BitMask): unknown => {\n if (!mask) {\n return value;\n }\n\n return mask.parse(String(value ?? \"\"));\n};\n"]}
@@ -0,0 +1,2 @@
1
+ function d(r,t){return r.canUndo===t.canUndo&&r.canRedo===t.canRedo&&r.historyIndex===t.historyIndex&&r.historySize===t.historySize}function a(r,t,e){return async n=>{if(n){e.setLoading(!0),e.setError(r,void 0);try{let o=await t(n);e.setValue(o.url),e.setUploadKey(o.key),e.setError(r,void 0)}catch(o){let i=o instanceof Error?o.message:"Upload failed";e.setError(r,i)}finally{e.setLoading(!1)}}}}function s(r,t,e){return async()=>{let n=e.getUploadKey();if(n&&t)try{await t(n)}catch(o){let i=o instanceof Error?o.message:"Delete failed";e.setError(r,i);return}e.setValue(null),e.setUploadKey(null),e.setError(r,void 0)}}export{d as a,a as b,s as c};
2
+ //# sourceMappingURL=chunk-QWH2NBVB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/history-status.ts","../src/core/adapters/upload-kernel.ts"],"sourcesContent":["import type { BitHistoryMetadata } from \"./store/contracts/public-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","/**\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 { BitUploadFn, BitDeleteUploadFn } 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 fieldPath: string,\n uploadFn: BitUploadFn,\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":"AAgBO,SAASA,EAAmBC,EAAgBC,EAAyB,CAC1E,OACED,EAAE,UAAYC,EAAE,SAChBD,EAAE,UAAYC,EAAE,SAChBD,EAAE,eAAiBC,EAAE,cACrBD,EAAE,cAAgBC,EAAE,WAExB,CCcO,SAASC,EACdC,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":["isHistoryMetaEqual","a","b","createUploadHandler","fieldPath","uploadFn","callbacks","file","result","error","message","createRemoveHandler","deleteFile","uploadKey"]}
@@ -0,0 +1,2 @@
1
+ import{a as A,b as C,c as H,e as v,f as T}from"./chunk-2FDEJYA5.js";import{c as w,e as V,k as M}from"./chunk-64KSP4TP.js";import{createContext as L,useContext as W}from"react";import{jsx as O}from"react/jsx-runtime";var q=L(null),lt=({store:t,children:e})=>O(q.Provider,{value:M(t),children:e}),S=()=>{let t=W(q);if(!t)throw new Error("BitForm hooks devem ser usados dentro de um BitFormProvider");return t};import{useCallback as b,useSyncExternalStore as $,useMemo as D,useRef as z,useState as j}from"react";var G=t=>({isValid:t.isValid,isDirty:t.isDirty,isSubmitting:t.isSubmitting});function bt(){let t=S(),[e,o]=j(null),[s,n]=j(null),c=z(null),l=b(()=>{let p=t.getState(),P={isValid:p.isValid,isDirty:p.isDirty,isSubmitting:p.isSubmitting};return c.current&&c.current.isValid===P.isValid&&c.current.isDirty===P.isDirty&&c.current.isSubmitting===P.isSubmitting?c.current:(c.current=P,P)},[t]),d=b(p=>t.subscribeSelector(G,()=>p(),{paths:["isValid","isDirty","isSubmitting"]}),[t]),i=$(d,l,l),r=D(()=>C(t,{clearSubmissionState:()=>{o(null),n(null)},setSubmissionResult:p=>{n(p)},setSubmissionError:p=>{o(p)}}),[t]),u=D(()=>A(t),[t]),a=b(r.submit,[r]),y=b(r.onSubmit,[r]),h=b(r.reset,[r]),B=b(r.getValues,[r]),E=b(r.getErrors,[r]),m=b(r.getTouched,[r]),g=b(r.getDirtyValues,[r]);return{meta:D(()=>({...i,submitError:e,lastResponse:s}),[i,e,s]),getValues:B,getErrors:E,getTouched:m,getDirtyValues:g,submit:a,onSubmit:y,reset:h,...u}}import{useCallback as I,useSyncExternalStore as J,useRef as K,useMemo as U}from"react";function Tt(t){let e=S(),o=I(r=>e.config.idFactory({scope:"array",path:t,index:r}),[e,t]),s=K([]),n=I(()=>{let r=e.getState(),u=V(r.values,t),a=Array.isArray(u)?u:[];if(a.length!==s.current.length)if(a.length>s.current.length){let y=a.length-s.current.length;s.current=[...s.current,...Array(y).fill(null).map((h,B)=>o(s.current.length+B))]}else s.current=s.current.slice(0,a.length);return a},[e,t,o]),c=I(r=>e.subscribePath(t,()=>r()),[e,t]),l=J(c,n,n),d=U(()=>({append:r=>{s.current=[...s.current,o(s.current.length)],e.pushItem(t,r)},prepend:r=>{s.current=[o(0),...s.current],e.prependItem(t,r)},insert:(r,u)=>{let a=[...s.current];a.splice(r,0,o(r)),s.current=a,e.insertItem(t,r,u)},remove:r=>{s.current=s.current.filter((u,a)=>a!==r),e.removeItem(t,r)},move:(r,u)=>{let a=[...s.current],[y]=a.splice(r,1);a.splice(u,0,y),s.current=a,e.moveItem(t,r,u)},swap:(r,u)=>{let a=[...s.current];[a[r],a[u]]=[a[u],a[r]],s.current=a,e.swapItems(t,r,u)},replace:r=>{s.current=r.map((u,a)=>o(a)),e.setField(t,r)},clear:()=>{s.current=[],e.setField(t,[])}}),[e,t,o]);return{fields:U(()=>l.map((r,u)=>({key:s.current[u]||`temp-${u}`,value:r,index:u})),[l]),length:l.length,...d}}import{useCallback as R,useSyncExternalStore as Q,useRef as X}from"react";function It(t){let e=S(),o=e.getScopeFields(t),s=X(null),n=R(()=>{let r=e.getStepStatus(t);return s.current&&v(s.current,r)?s.current:(s.current=r,r)},[e,t]),c=R(r=>e.subscribeSelector(u=>({errors:u.errors,isDirty:u.isDirty}),()=>r(),{paths:T(o)}),[e,o]),l=Q(c,n,n),d=R(async()=>{let r=await e.validate({scope:t}),u=e.getStepErrors(t);return{valid:r,errors:u}},[e,t]),i=R(()=>e.getStepErrors(t),[e,t]);return{scopeName:t,status:l,errors:l.errors,validate:d,getErrors:i,isValid:!l.hasErrors,isDirty:l.isDirty}}import{useCallback as f,useSyncExternalStore as Y,useRef as Z,useState as N}from"react";function Ct(t){let e=S(),[o,s]=N(0),n=t[o]??"",c=e.getScopeFields(n),l=Z(null),d=f(()=>{let m=e.getStepStatus(n);return l.current&&v(l.current,m)?l.current:(l.current=m,m)},[e,n]),i=Y(f(m=>e.subscribeSelector(g=>({errors:g.errors,isDirty:g.isDirty}),()=>m(),{paths:T(c)}),[e,c]),d,d),r=f(async()=>{let m=await e.validate({scope:n}),g=e.getStepErrors(n);return{valid:m,errors:g}},[e,n]),u=f(()=>e.getStepErrors(n),[e,n]),a=f(async()=>{let m=e.getScopeFields(n);if(e.hasValidationsInProgress(m))return!1;let g=await e.validate({scope:n});if(g)s(F=>Math.min(F+1,t.length-1));else{let F=e.getStepErrors(n),p=Object.keys(F);p.length>0&&e.markFieldsTouched(p)}return g},[e,n,t.length]),y=f(()=>{s(m=>Math.max(m-1,0))},[]),h=f(m=>{s(Math.max(0,Math.min(m-1,t.length-1)))},[t.length]),B=o===0,E=o>=t.length-1;return{step:o+1,stepIndex:o,scope:n,next:a,prev:y,goTo:h,isFirst:B,isLast:E,status:i,errors:i.errors,isValid:!i.hasErrors,isDirty:i.isDirty,validate:r,getErrors:u}}import{useCallback as _,useSyncExternalStore as tt,useRef as et}from"react";function Wt(t){let e=S(),o=et(null),s=_(()=>{let c=V(e.getState().values,t);return o.current!==null&&w(o.current,c)?o.current:(o.current=c,c)},[e,t]),n=_(c=>e.subscribePath(t,()=>c()),[e,t]);return tt(n,s,s)}import{useCallback as k,useMemo as rt,useSyncExternalStore as st}from"react";function Gt(){let t=S(),e=st(l=>t.subscribeSelector(d=>d.persist,()=>l(),{paths:["persist"]}),()=>t.getPersistMetadata(),()=>t.getPersistMetadata()),o=k(async()=>t.restorePersisted(),[t]),s=k(async()=>{await t.forceSave()},[t]),n=k(async()=>{await t.clearPersisted()},[t]),c=rt(()=>({isSaving:e.isSaving,isRestoring:e.isRestoring,error:e.error}),[e]);return{restore:o,save:s,clear:n,meta:c}}import{useCallback as x,useSyncExternalStore as ot,useRef as it,useEffect as nt}from"react";function Yt(t){let e=S(),o=it(null);nt(()=>()=>{e.unregisterField&&e.unregisterField(t)},[e,t]);let s=x(()=>{let i=e.getFieldState(t);if(o.current&&o.current.value===i.value&&o.current.error===i.error&&o.current.touched===i.touched&&o.current.isHidden===i.isHidden&&o.current.isRequired===i.isRequired&&o.current.isDirty===i.isDirty&&o.current.isValidating===i.isValidating)return o.current;let r={value:i.value,error:i.error,touched:i.touched,isHidden:i.isHidden,isRequired:i.isRequired,isDirty:i.isDirty,isValidating:i.isValidating};return o.current=r,r},[e,t]),n=x(i=>H(e,t,()=>i()),[e,t]),c=ot(n,s,s),l=x(i=>e.setField(t,i),[e,t]),d=x(()=>e.blurField(t),[e,t]);return{fieldState:c,setValue:l,setBlur:d,store:e}}export{lt as a,S as b,bt as c,Yt as d,Tt as e,It as f,Ct as g,Wt as h,Gt as i};
2
+ //# sourceMappingURL=chunk-UMKOKAPD.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 { BitStoreApi, BitStoreHooksApi } from \"../core\";\nimport { resolveBitStoreForHooks } from \"../core\";\n\nconst BitContext = createContext<BitStoreHooksApi<any> | null>(null);\n\nexport const BitFormProvider = ({\n store,\n children,\n}: {\n store: BitStoreApi<any>;\n children: React.ReactNode;\n}) => (\n <BitContext.Provider value={resolveBitStoreForHooks(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 BitStoreHooksApi<T>;\n};\n","import {\n useCallback,\n useSyncExternalStore,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { useBitStore } from \"./context\";\nimport {\n createFormController,\n createStoreFormActions,\n} from \"../core/form-controller\";\nimport type { UseBitFormResult } from \"./types\";\n\nconst selectFormMeta = <T extends object>(state: {\n isValid: boolean;\n isDirty: boolean;\n isSubmitting: boolean;\n}) => ({\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n});\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<{\n isValid: boolean;\n isDirty: boolean;\n isSubmitting: boolean;\n } | null>(null);\n\n const getMetaSnapshot = useCallback(() => {\n const state = store.getState();\n const nextMeta = {\n isValid: state.isValid,\n isDirty: state.isDirty,\n isSubmitting: state.isSubmitting,\n };\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 subscribeMeta = useCallback(\n (cb: () => void) =>\n store.subscribeSelector(selectFormMeta, () => cb(), {\n paths: [\"isValid\", \"isDirty\", \"isSubmitting\"],\n }),\n [store],\n );\n\n const metaState = useSyncExternalStore(\n subscribeMeta,\n getMetaSnapshot,\n getMetaSnapshot,\n );\n\n const controller = useMemo(\n () =>\n createFormController(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 actions = useMemo(() => createStoreFormActions(store), [store]);\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, useSyncExternalStore, useRef, useMemo } from \"react\";\nimport { useBitStore } from \"./context\";\nimport {\n getDeepValue,\n BitArrayPath,\n BitPathValue,\n BitArrayItem,\n BitPath,\n} from \"../core\";\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 createId = useCallback(\n (index?: number) =>\n store.config.idFactory({\n scope: \"array\",\n path: path as string,\n index,\n }),\n [store, path],\n );\n const idsRef = useRef<string[]>([]);\n\n type Item = BitArrayItem<BitPathValue<TForm, P>>;\n\n const getSnapshot = useCallback(() => {\n const state = store.getState();\n const value = getDeepValue(state.values, path as string) as\n | BitPathValue<TForm, P>\n | undefined;\n const arrayValue = Array.isArray(value) ? (value as Item[]) : [];\n\n if (arrayValue.length !== idsRef.current.length) {\n if (arrayValue.length > idsRef.current.length) {\n const diff = arrayValue.length - idsRef.current.length;\n idsRef.current = [\n ...idsRef.current,\n ...Array(diff)\n .fill(null)\n .map((_, i) => createId(idsRef.current.length + i)),\n ];\n } else {\n idsRef.current = idsRef.current.slice(0, arrayValue.length);\n }\n }\n\n return arrayValue;\n }, [store, path, createId]);\n\n const subscribeArray = useCallback(\n (cb: () => void) => store.subscribePath(path, () => cb()),\n [store, path],\n );\n\n const data = useSyncExternalStore(subscribeArray, getSnapshot, getSnapshot);\n\n const methods = useMemo(\n () => ({\n append: (value: Item) => {\n idsRef.current = [...idsRef.current, createId(idsRef.current.length)];\n store.pushItem(path, value);\n },\n prepend: (value: Item) => {\n idsRef.current = [createId(0), ...idsRef.current];\n store.prependItem(path, value);\n },\n insert: (index: number, value: Item) => {\n const newIds = [...idsRef.current];\n newIds.splice(index, 0, createId(index));\n idsRef.current = newIds;\n store.insertItem(path, index, value);\n },\n remove: (index: number) => {\n idsRef.current = idsRef.current.filter((_, i) => i !== index);\n store.removeItem(path, index);\n },\n move: (from: number, to: number) => {\n const newIds = [...idsRef.current];\n const [item] = newIds.splice(from, 1);\n newIds.splice(to, 0, item);\n idsRef.current = newIds;\n store.moveItem(path, from, to);\n },\n swap: (indexA: number, indexB: number) => {\n const newIds = [...idsRef.current];\n [newIds[indexA], newIds[indexB]] = [newIds[indexB], newIds[indexA]];\n idsRef.current = newIds;\n store.swapItems(path, indexA, indexB);\n },\n replace: (items: Item[]) => {\n idsRef.current = items.map((_, index) => createId(index));\n store.setField(\n path as unknown as BitPath<TForm>,\n items as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n clear: () => {\n idsRef.current = [];\n store.setField(\n path as unknown as BitPath<TForm>,\n [] as unknown as BitPathValue<TForm, BitPath<TForm>>,\n );\n },\n }),\n [store, path, createId],\n );\n\n const fields = useMemo(\n () =>\n (data as Item[]).map((item: Item, index: number) => ({\n key: idsRef.current[index] || `temp-${index}`,\n value: item,\n index,\n })),\n [data],\n );\n\n return {\n fields,\n length: data.length,\n ...methods,\n };\n}\n","import { useCallback, useSyncExternalStore, useRef } from \"react\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport {\n getScopeSubscriptionPaths,\n isScopeStatusEqual,\n} from \"../core/scope-status\";\nimport { useBitStore } from \"./context\";\n\nexport type { ScopeStatus, ValidateScopeResult };\n\nexport function useBitScope(scopeName: string) {\n const store = useBitStore();\n const scopeFields = store.getScopeFields(scopeName);\n\n const lastStatus = useRef<ScopeStatus | null>(null);\n\n const getStatusSnapshot = useCallback(() => {\n const nextStatus = store.getStepStatus(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.subscribeSelector(\n (state) => ({ errors: state.errors, isDirty: state.isDirty }),\n () => cb(),\n { paths: getScopeSubscriptionPaths(scopeFields) },\n ),\n [store, scopeFields],\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.validate({ scope: scopeName });\n const errors = store.getStepErrors(scopeName);\n return { valid, errors };\n }, [store, scopeName]);\n\n const getErrors = useCallback(() => {\n return store.getStepErrors(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, useSyncExternalStore, useRef, useState } from \"react\";\nimport type { ScopeStatus, ValidateScopeResult } from \"../core\";\nimport {\n getScopeSubscriptionPaths,\n isScopeStatusEqual,\n} from \"../core/scope-status\";\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 scopeFields = store.getScopeFields(scope);\n const lastStatus = useRef<ScopeStatus | null>(null);\n\n const getStatusSnapshot = useCallback(() => {\n const nextStatus = store.getStepStatus(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) =>\n store.subscribeSelector(\n (state) => ({ errors: state.errors, isDirty: state.isDirty }),\n () => cb(),\n { paths: getScopeSubscriptionPaths(scopeFields) },\n ),\n [store, scopeFields],\n ),\n getStatusSnapshot,\n getStatusSnapshot,\n );\n\n const validate = useCallback(async (): Promise<ValidateScopeResult> => {\n const valid = await store.validate({ scope });\n const errors = store.getStepErrors(scope);\n return { valid, errors };\n }, [store, scope]);\n\n const getErrors = useCallback(() => {\n return store.getStepErrors(scope);\n }, [store, scope]);\n\n const next = useCallback(async (): Promise<boolean> => {\n const scopeFields = store.getScopeFields(scope);\n\n if (store.hasValidationsInProgress(scopeFields)) {\n return false;\n }\n\n const valid = await store.validate({ scope });\n if (valid) {\n setStepIndex((s) => Math.min(s + 1, scopeNames.length - 1));\n } else {\n const errors = store.getStepErrors(scope);\n const pathsWithErrors = Object.keys(errors);\n if (pathsWithErrors.length > 0) {\n store.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.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.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 type { UseBitPersistResult } from \"./types\";\n\nexport function useBitPersist(): UseBitPersistResult {\n const store = useBitStore<any>();\n\n const persistMeta = useSyncExternalStore(\n (cb) =>\n store.subscribeSelector(\n (state) => state.persist,\n () => cb(),\n { paths: [\"persist\"] },\n ),\n () => store.getPersistMetadata(),\n () => store.getPersistMetadata(),\n );\n\n const restore = useCallback(async () => {\n return store.restorePersisted();\n }, [store]);\n\n const save = useCallback(async () => {\n await store.forceSave();\n }, [store]);\n\n const clear = useCallback(async () => {\n await store.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, useSyncExternalStore, useRef, useEffect } from \"react\";\nimport { useBitStore } from \"./context\";\nimport { BitPath, BitPathValue } from \"../core\";\nimport { subscribeFieldState } from \"../core/field-controller\";\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 lastState = useRef<{\n value: BitPathValue<TForm, P>;\n error: any;\n touched: boolean;\n isHidden: boolean;\n isRequired: boolean;\n isDirty: boolean;\n isValidating: boolean;\n } | null>(null);\n\n useEffect(() => {\n return () => {\n if (store.unregisterField) {\n store.unregisterField(path);\n }\n };\n }, [store, path]);\n\n const getSnapshot = useCallback(() => {\n const nextState = store.getFieldState(path);\n\n if (\n lastState.current &&\n lastState.current.value === nextState.value &&\n lastState.current.error === nextState.error &&\n lastState.current.touched === nextState.touched &&\n lastState.current.isHidden === nextState.isHidden &&\n lastState.current.isRequired === nextState.isRequired &&\n lastState.current.isDirty === nextState.isDirty &&\n lastState.current.isValidating === nextState.isValidating\n ) {\n return lastState.current;\n }\n\n const newState = {\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 lastState.current = newState;\n return newState;\n }, [store, path]);\n\n const subscribe = useCallback(\n (cb: () => void) => subscribeFieldState(store, 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.setField(path, val),\n [store, path],\n );\n\n const setBlur = useCallback(() => store.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","resolveBitStoreForHooks","useBitStore","useContext","useCallback","useSyncExternalStore","useMemo","useRef","useState","selectFormMeta","state","useBitForm","store","useBitStore","submitError","setSubmitError","useState","lastResponse","setLastResponse","lastMeta","useRef","getMetaSnapshot","useCallback","nextMeta","subscribeMeta","cb","metaState","useSyncExternalStore","controller","useMemo","createFormController","result","error","actions","createStoreFormActions","submit","onSubmit","reset","getValues","getErrors","getTouched","getDirtyValues","useCallback","useSyncExternalStore","useRef","useMemo","useBitArray","path","store","useBitStore","createId","useCallback","index","idsRef","useRef","getSnapshot","state","value","getDeepValue","arrayValue","diff","_","i","subscribeArray","cb","data","useSyncExternalStore","methods","useMemo","newIds","from","to","item","indexA","indexB","items","useCallback","useSyncExternalStore","useRef","useBitScope","scopeName","store","useBitStore","scopeFields","lastStatus","useRef","getStatusSnapshot","useCallback","nextStatus","isScopeStatusEqual","subscribe","cb","state","getScopeSubscriptionPaths","status","useSyncExternalStore","validate","valid","errors","getErrors","useCallback","useSyncExternalStore","useRef","useState","useBitSteps","scopeNames","store","useBitStore","stepIndex","setStepIndex","useState","scope","scopeFields","lastStatus","useRef","getStatusSnapshot","useCallback","nextStatus","isScopeStatusEqual","status","useSyncExternalStore","cb","state","getScopeSubscriptionPaths","validate","valid","errors","getErrors","next","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","state","restore","useCallback","save","clear","meta","useMemo","useCallback","useSyncExternalStore","useRef","useEffect","useBitFieldBase","path","store","useBitStore","lastState","useRef","useEffect","getSnapshot","useCallback","nextState","newState","subscribe","cb","subscribeFieldState","fieldState","useSyncExternalStore","setValue","val","setBlur"]}
@@ -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; }var _chunkCTURHI75cjs = require('./chunk-CTURHI75.cjs');var _yup = require('yup');var u=(a,n)=>async(p,e)=>{let t={};if(_optionalChain([e, 'optionalAccess', _ => _.scopeFields])&&e.scopeFields.length>0)return await Promise.all(e.scopeFields.map(async o=>{try{await a.validateAt(o,p)}catch(r){r instanceof _yup.ValidationError&&r.path&&_chunkCTURHI75cjs.b.call(void 0, t,_chunkCTURHI75cjs.a.call(void 0, r.path),r.message)}})),t;try{return await a.validate(p,{abortEarly:_nullishCoalesce(_optionalChain([n, 'optionalAccess', _2 => _2.abortEarly]), () => (!1)),stripUnknown:_nullishCoalesce(_optionalChain([n, 'optionalAccess', _3 => _3.stripUnknown]), () => (!1))}),{}}catch(o){if(o instanceof _yup.ValidationError){for(let r of _nullishCoalesce(o.inner, () => ([])))r.path&&_chunkCTURHI75cjs.b.call(void 0, t,_chunkCTURHI75cjs.a.call(void 0, r.path),r.message);return _chunkCTURHI75cjs.c.call(void 0, t,_optionalChain([e, 'optionalAccess', _4 => _4.scopeFields]))}return{}}};exports.a = u;
2
+ //# sourceMappingURL=chunk-UT63HKR6.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/chunk-UT63HKR6.cjs","../src/resolvers/yup.ts"],"names":["yupResolver","schema","config","values","options","errors","field","error","ValidationError","setFirstError","normalizeErrorPath","item","filterErrorsByScope"],"mappings":"AAAA,yuBAAsD,0BCAd,IAS3BA,CAAAA,CAAc,CACzBC,CAAAA,CACAC,CAAAA,CAAAA,EAEO,KAAA,CACLC,CAAAA,CACAC,CAAAA,CAAAA,EAC0B,CAC1B,IAAMC,CAAAA,CAAuB,CAAC,CAAA,CAE9B,EAAA,iBAAID,CAAAA,2BAAS,aAAA,EAAeA,CAAAA,CAAQ,WAAA,CAAY,MAAA,CAAS,CAAA,CACvD,OAAA,MAAM,OAAA,CAAQ,GAAA,CACZA,CAAAA,CAAQ,WAAA,CAAY,GAAA,CAAI,MAAOE,CAAAA,EAAU,CACvC,GAAI,CACF,MAAML,CAAAA,CAAO,UAAA,CAAWK,CAAAA,CAAOH,CAAM,CACvC,CAAA,KAAA,CAASI,CAAAA,CAAgB,CACnBA,EAAAA,WAAiBC,oBAAAA,EAAmBD,CAAAA,CAAM,IAAA,EAC5CE,iCAAAA,CACEJ,CACAK,iCAAAA,CAAmBH,CAAM,IAAI,CAAA,CAC7BA,CAAAA,CAAM,OACR,CAEJ,CACF,CAAC,CACH,CAAA,CACOF,CAAAA,CAGT,GAAI,CACF,OAAA,MAAMJ,CAAAA,CAAO,QAAA,CAASE,CAAAA,CAAQ,CAC5B,UAAA,kCAAYD,CAAAA,6BAAQ,YAAA,SAAc,CAAA,GAAA,CAClC,YAAA,kCAAcA,CAAAA,6BAAQ,cAAA,SAAgB,CAAA,GACxC,CAAC,CAAA,CACM,CAAC,CACV,CAAA,KAAA,CAASK,CAAAA,CAAgB,CACvB,EAAA,CAAIA,EAAAA,WAAiBC,oBAAAA,CAAiB,CACpC,GAAA,CAAA,IAAWG,EAAAA,oBAAQJ,CAAAA,CAAM,KAAA,SAAS,CAAC,GAAA,CAC7BI,CAAAA,CAAK,IAAA,EACPF,iCAAAA,CAAcJ,CAAQK,iCAAAA,CAAmBC,CAAK,IAAI,CAAA,CAAGA,CAAAA,CAAK,OAAO,CAAA,CAIrE,OAAOC,iCAAAA,CAAoBP,iBAAQD,CAAAA,6BAAS,aAAW,CACzD,CAEA,MAAO,CAAC,CACV,CACF,CAAA,CAAA,cAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-UT63HKR6.cjs","sourcesContent":[null,"import { ValidationError, Schema } from \"yup\";\nimport { BitErrors } from \"../core\";\nimport {\n filterErrorsByScope,\n normalizeErrorPath,\n setFirstError,\n} from \"./utils\";\nimport { BitResolverScopeOptions, BitYupResolverConfig } from \"./types\";\n\nexport const yupResolver = <T extends object>(\n schema: Schema<T>,\n config?: BitYupResolverConfig,\n) => {\n return async (\n values: T,\n options?: BitResolverScopeOptions,\n ): Promise<BitErrors<T>> => {\n const errors: BitErrors<T> = {};\n\n if (options?.scopeFields && options.scopeFields.length > 0) {\n await Promise.all(\n options.scopeFields.map(async (field) => {\n try {\n await schema.validateAt(field, values);\n } catch (error: unknown) {\n if (error instanceof ValidationError && error.path) {\n setFirstError(\n errors,\n normalizeErrorPath(error.path),\n error.message,\n );\n }\n }\n }),\n );\n return errors;\n }\n\n try {\n await schema.validate(values, {\n abortEarly: config?.abortEarly ?? false,\n stripUnknown: config?.stripUnknown ?? false,\n });\n return {};\n } catch (error: unknown) {\n if (error instanceof ValidationError) {\n for (const item of error.inner ?? []) {\n if (item.path) {\n setFirstError(errors, normalizeErrorPath(item.path), item.message);\n }\n }\n\n return filterErrorsByScope(errors, options?.scopeFields);\n }\n\n return {};\n }\n };\n};\n"]}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});function d(r,t){return r.canUndo===t.canUndo&&r.canRedo===t.canRedo&&r.historyIndex===t.historyIndex&&r.historySize===t.historySize}function a(r,t,e){return async n=>{if(n){e.setLoading(!0),e.setError(r,void 0);try{let o=await t(n);e.setValue(o.url),e.setUploadKey(o.key),e.setError(r,void 0)}catch(o){let i=o instanceof Error?o.message:"Upload failed";e.setError(r,i)}finally{e.setLoading(!1)}}}}function s(r,t,e){return async()=>{let n=e.getUploadKey();if(n&&t)try{await t(n)}catch(o){let i=o instanceof Error?o.message:"Delete failed";e.setError(r,i);return}e.setValue(null),e.setUploadKey(null),e.setError(r,void 0)}}exports.a = d; exports.b = a; exports.c = s;
2
+ //# sourceMappingURL=chunk-VQ7MK5VB.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/history-status.ts","../src/core/adapters/upload-kernel.ts"],"names":["isHistoryMetaEqual","a","b","createUploadHandler","fieldPath","uploadFn","callbacks","file","result","error","message","createRemoveHandler","deleteFile","uploadKey"],"mappings":"AAgBO,kFAASA,CAAAA,CAAmBC,CAAAA,CAAgBC,CAAAA,CAAyB,CAC1E,OACED,CAAAA,CAAE,OAAA,GAAYC,CAAAA,CAAE,OAAA,EAChBD,CAAAA,CAAE,OAAA,GAAYC,CAAAA,CAAE,OAAA,EAChBD,CAAAA,CAAE,YAAA,GAAiBC,CAAAA,CAAE,YAAA,EACrBD,CAAAA,CAAE,WAAA,GAAgBC,CAAAA,CAAE,WAExB,CCcO,SAASC,CAAAA,CACdC,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,4CAAA","file":"/home/runner/work/bit-form/bit-form/dist/chunk-VQ7MK5VB.cjs","sourcesContent":["import type { BitHistoryMetadata } from \"./store/contracts/public-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","/**\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 { BitUploadFn, BitDeleteUploadFn } 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 fieldPath: string,\n uploadFn: BitUploadFn,\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"]}
@@ -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 _chunkJO37BU2Ccjs = require('../chunk-JO37BU2C.cjs');require('../chunk-PA6T2CBR.cjs');var S=o=>{let e=typeof o.getState=="function"?o.getState():o,t=_optionalChain([o, 'optionalAccess', _ => _.getHistoryMetadata, 'optionalCall', _2 => _2()])||{canUndo:!1,canRedo:!1,historyIndex:-1,historySize:0};return{...e,_meta:{canUndo:t.canUndo,canRedo:t.canRedo,totalSteps:t.historySize,currentIndex:t.historyIndex}}},l=null,m=o=>{if(!o||typeof o!="object")return!1;let{storeId:e,action:t}=o;return typeof e=="string"&&(t==="undo"||t==="redo"||t==="reset")};function v(o){l&&(console.warn("[bit-form] Reiniciando ponte do DevTools (Fast Refresh detectado)."),l());let e=null,t=null,d,f=!1,u=()=>{f=!1,e=new WebSocket(o),e.onopen=()=>{console.log("[bit-form] \u{1F50C} Conectado ao CLI DevTools via WebSocket.");let i=Object.entries(_chunkJO37BU2Ccjs.j.stores);if(i.length>0){let n=i.reduce((r,[s,a])=>(r[s]=S(a),r),{});_optionalChain([e, 'optionalAccess', _3 => _3.send, 'call', _4 => _4(JSON.stringify({type:"STATE_UPDATE",payload:n}))])}t=_chunkJO37BU2Ccjs.j.subscribe((n,r)=>{if(_optionalChain([e, 'optionalAccess', _5 => _5.readyState])===WebSocket.OPEN){let s=_chunkJO37BU2Ccjs.j.stores[n];s&&e.send(JSON.stringify({type:"STATE_UPDATE",payload:{[n]:S(s)}}))}}),d=setInterval(()=>{_optionalChain([e, 'optionalAccess', _6 => _6.readyState])===WebSocket.OPEN&&e.send(JSON.stringify({type:"PING"}))},3e4)},e.onmessage=i=>{try{let n=JSON.parse(i.data);if(n.type==="ACTION"){if(!m(n.payload))return;let{storeId:r,action:s}=n.payload,a=_chunkJO37BU2Ccjs.j.stores[r];if(!a||typeof a!="object")return;let p=a[{undo:"undo",redo:"redo",reset:"reset"}[s]];typeof p=="function"&&p.call(a)}}catch(n){console.warn("[bit-form] Erro ao processar comando do CLI:",n)}},e.onclose=()=>{t&&t(),clearInterval(d),f?console.log("[bit-form] Ponte antiga encerrada com sucesso."):(console.log("[bit-form] Conex\xE3o perdida. Reconectando em 3s..."),setTimeout(u,3e3))}};u();let y=()=>{f=!0,t&&t(),clearInterval(d),e&&(e.readyState===WebSocket.OPEN||e.readyState===WebSocket.CONNECTING)&&e.close(),l=null};return l=y,y}exports.setupRemoteBridge = v;
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 _chunkOZKLQRO6cjs = require('../chunk-OZKLQRO6.cjs');var S=o=>{let e=typeof o.getState=="function"?o.getState():o,t=_optionalChain([o, 'optionalAccess', _ => _.getHistoryMetadata, 'optionalCall', _2 => _2()])||{canUndo:!1,canRedo:!1,historyIndex:-1,historySize:0};return{...e,_meta:{canUndo:t.canUndo,canRedo:t.canRedo,totalSteps:t.historySize,currentIndex:t.historyIndex}}},l=null,m=o=>{if(!o||typeof o!="object")return!1;let{storeId:e,action:t}=o;return typeof e=="string"&&(t==="undo"||t==="redo"||t==="reset")};function v(o){l&&(console.warn("[bit-form] Reiniciando ponte do DevTools (Fast Refresh detectado)."),l());let e=null,t=null,d,f=!1,u=()=>{f=!1,e=new WebSocket(o),e.onopen=()=>{console.log("[bit-form] \u{1F50C} Conectado ao CLI DevTools via WebSocket.");let i=Object.entries(_chunkOZKLQRO6cjs.j.stores);if(i.length>0){let n=i.reduce((r,[s,a])=>(r[s]=S(a),r),{});_optionalChain([e, 'optionalAccess', _3 => _3.send, 'call', _4 => _4(JSON.stringify({type:"STATE_UPDATE",payload:n}))])}t=_chunkOZKLQRO6cjs.j.subscribe((n,r)=>{if(_optionalChain([e, 'optionalAccess', _5 => _5.readyState])===WebSocket.OPEN){let s=_chunkOZKLQRO6cjs.j.stores[n];s&&e.send(JSON.stringify({type:"STATE_UPDATE",payload:{[n]:S(s)}}))}}),d=setInterval(()=>{_optionalChain([e, 'optionalAccess', _6 => _6.readyState])===WebSocket.OPEN&&e.send(JSON.stringify({type:"PING"}))},3e4)},e.onmessage=i=>{try{let n=JSON.parse(i.data);if(n.type==="ACTION"){if(!m(n.payload))return;let{storeId:r,action:s}=n.payload,a=_chunkOZKLQRO6cjs.j.stores[r];if(!a||typeof a!="object")return;let p=a[{undo:"undo",redo:"redo",reset:"reset"}[s]];typeof p=="function"&&p.call(a)}}catch(n){console.warn("[bit-form] Erro ao processar comando do CLI:",n)}},e.onclose=()=>{t&&t(),clearInterval(d),f?console.log("[bit-form] Ponte antiga encerrada com sucesso."):(console.log("[bit-form] Conex\xE3o perdida. Reconectando em 3s..."),setTimeout(u,3e3))}};u();let y=()=>{f=!0,t&&t(),clearInterval(d),e&&(e.readyState===WebSocket.OPEN||e.readyState===WebSocket.CONNECTING)&&e.close(),l=null};return l=y,y}exports.setupRemoteBridge = v;
2
2
  //# sourceMappingURL=bridge.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/devtools/bridge.cjs","../../src/devtools/bridge.ts"],"names":["formatStoreState","instance","cleanState","historyMeta","activeBridgeCleanup","isDevToolsActionPayload","payload","storeId","action","setupRemoteBridge","url","socket","unsubscribeBus","heartbeatInterval","isIntentionalDisconnect","connect","storesEntries","bitBus","initialState","acc","id","store","_newState","storeInstance","event","message","method","e","cleanup"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/devtools/bridge.cjs","sourcesContent":[null,"import { bitBus } from \"bit-form/core\";\nimport type { DevToolsActionName, DevToolsActionPayload } from \"./types\";\n\nconst formatStoreState = (instance: any) => {\n const cleanState =\n typeof instance.getState === \"function\" ? instance.getState() : instance;\n\n const historyMeta = instance?.getHistoryMetadata?.() || {\n canUndo: false,\n canRedo: false,\n historyIndex: -1,\n historySize: 0,\n };\n\n return {\n ...cleanState,\n _meta: {\n canUndo: historyMeta.canUndo,\n canRedo: historyMeta.canRedo,\n totalSteps: historyMeta.historySize,\n currentIndex: historyMeta.historyIndex,\n },\n };\n};\n\nlet activeBridgeCleanup: (() => void) | null = null;\n\nconst isDevToolsActionPayload = (\n payload: unknown,\n): payload is DevToolsActionPayload => {\n if (!payload || typeof payload !== \"object\") return false;\n\n const { storeId, action } = payload as {\n storeId?: unknown;\n action?: unknown;\n };\n\n return (\n typeof storeId === \"string\" &&\n (action === \"undo\" || action === \"redo\" || action === \"reset\")\n );\n};\n\nexport function setupRemoteBridge(url: string) {\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 isIntentionalDisconnect = false;\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 const storesEntries = Object.entries(bitBus.stores);\n if (storesEntries.length > 0) {\n const initialState = storesEntries.reduce(\n (acc, [id, store]) => {\n acc[id] = formatStoreState(store);\n return acc;\n },\n {} as Record<string, any>,\n );\n\n socket?.send(\n JSON.stringify({ type: \"STATE_UPDATE\", payload: initialState }),\n );\n }\n\n unsubscribeBus = bitBus.subscribe((storeId, _newState) => {\n if (socket?.readyState === WebSocket.OPEN) {\n const storeInstance = bitBus.stores[storeId];\n if (storeInstance) {\n socket.send(\n JSON.stringify({\n type: \"STATE_UPDATE\",\n payload: { [storeId]: formatStoreState(storeInstance) },\n }),\n );\n }\n }\n });\n\n heartbeatInterval = setInterval(() => {\n if (socket?.readyState === WebSocket.OPEN) {\n socket.send(JSON.stringify({ type: \"PING\" }));\n }\n }, 30000);\n };\n\n socket.onmessage = (event) => {\n try {\n const message = JSON.parse(event.data) as {\n type?: unknown;\n payload?: unknown;\n };\n\n if (message.type === \"ACTION\") {\n if (!isDevToolsActionPayload(message.payload)) {\n return;\n }\n\n const { storeId, action } = message.payload;\n\n const store = bitBus.stores[storeId];\n\n if (!store || typeof store !== \"object\") {\n return;\n }\n\n const methodByAction: Record<DevToolsActionName, string> = {\n undo: \"undo\",\n redo: \"redo\",\n reset: \"reset\",\n };\n\n const method = (store as Record<string, unknown>)[\n methodByAction[action]\n ];\n if (typeof method === \"function\") {\n (method as () => void).call(store);\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\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 (\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/devtools/bridge.cjs","../../src/devtools/bridge.ts"],"names":["formatStoreState","instance","cleanState","historyMeta","activeBridgeCleanup","isDevToolsActionPayload","payload","storeId","action","setupRemoteBridge","url","socket","unsubscribeBus","heartbeatInterval","isIntentionalDisconnect","connect","storesEntries","bitBus","initialState","acc","id","store","_newState","storeInstance","event","message","method","e","cleanup"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/devtools/bridge.cjs","sourcesContent":[null,"import { bitBus } from \"bit-form/core\";\nimport type { DevToolsActionName, DevToolsActionPayload } from \"./types\";\n\nconst formatStoreState = (instance: any) => {\n const cleanState =\n typeof instance.getState === \"function\" ? instance.getState() : instance;\n\n const historyMeta = instance?.getHistoryMetadata?.() || {\n canUndo: false,\n canRedo: false,\n historyIndex: -1,\n historySize: 0,\n };\n\n return {\n ...cleanState,\n _meta: {\n canUndo: historyMeta.canUndo,\n canRedo: historyMeta.canRedo,\n totalSteps: historyMeta.historySize,\n currentIndex: historyMeta.historyIndex,\n },\n };\n};\n\nlet activeBridgeCleanup: (() => void) | null = null;\n\nconst isDevToolsActionPayload = (\n payload: unknown,\n): payload is DevToolsActionPayload => {\n if (!payload || typeof payload !== \"object\") return false;\n\n const { storeId, action } = payload as {\n storeId?: unknown;\n action?: unknown;\n };\n\n return (\n typeof storeId === \"string\" &&\n (action === \"undo\" || action === \"redo\" || action === \"reset\")\n );\n};\n\nexport function setupRemoteBridge(url: string) {\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 isIntentionalDisconnect = false;\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 const storesEntries = Object.entries(bitBus.stores);\n if (storesEntries.length > 0) {\n const initialState = storesEntries.reduce(\n (acc, [id, store]) => {\n acc[id] = formatStoreState(store);\n return acc;\n },\n {} as Record<string, any>,\n );\n\n socket?.send(\n JSON.stringify({ type: \"STATE_UPDATE\", payload: initialState }),\n );\n }\n\n unsubscribeBus = bitBus.subscribe((storeId, _newState) => {\n if (socket?.readyState === WebSocket.OPEN) {\n const storeInstance = bitBus.stores[storeId];\n if (storeInstance) {\n socket.send(\n JSON.stringify({\n type: \"STATE_UPDATE\",\n payload: { [storeId]: formatStoreState(storeInstance) },\n }),\n );\n }\n }\n });\n\n heartbeatInterval = setInterval(() => {\n if (socket?.readyState === WebSocket.OPEN) {\n socket.send(JSON.stringify({ type: \"PING\" }));\n }\n }, 30000);\n };\n\n socket.onmessage = (event) => {\n try {\n const message = JSON.parse(event.data) as {\n type?: unknown;\n payload?: unknown;\n };\n\n if (message.type === \"ACTION\") {\n if (!isDevToolsActionPayload(message.payload)) {\n return;\n }\n\n const { storeId, action } = message.payload;\n\n const store = bitBus.stores[storeId];\n\n if (!store || typeof store !== \"object\") {\n return;\n }\n\n const methodByAction: Record<DevToolsActionName, string> = {\n undo: \"undo\",\n redo: \"redo\",\n reset: \"reset\",\n };\n\n const method = (store as Record<string, unknown>)[\n methodByAction[action]\n ];\n if (typeof method === \"function\") {\n (method as () => void).call(store);\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\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 (\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{j as c}from"../chunk-ULC4OPIQ.js";import"../chunk-VDWCFNA6.js";var S=o=>{let e=typeof o.getState=="function"?o.getState():o,t=o?.getHistoryMetadata?.()||{canUndo:!1,canRedo:!1,historyIndex:-1,historySize:0};return{...e,_meta:{canUndo:t.canUndo,canRedo:t.canRedo,totalSteps:t.historySize,currentIndex:t.historyIndex}}},l=null,m=o=>{if(!o||typeof o!="object")return!1;let{storeId:e,action:t}=o;return typeof e=="string"&&(t==="undo"||t==="redo"||t==="reset")};function v(o){l&&(console.warn("[bit-form] Reiniciando ponte do DevTools (Fast Refresh detectado)."),l());let e=null,t=null,d,f=!1,u=()=>{f=!1,e=new WebSocket(o),e.onopen=()=>{console.log("[bit-form] \u{1F50C} Conectado ao CLI DevTools via WebSocket.");let i=Object.entries(c.stores);if(i.length>0){let n=i.reduce((r,[s,a])=>(r[s]=S(a),r),{});e?.send(JSON.stringify({type:"STATE_UPDATE",payload:n}))}t=c.subscribe((n,r)=>{if(e?.readyState===WebSocket.OPEN){let s=c.stores[n];s&&e.send(JSON.stringify({type:"STATE_UPDATE",payload:{[n]:S(s)}}))}}),d=setInterval(()=>{e?.readyState===WebSocket.OPEN&&e.send(JSON.stringify({type:"PING"}))},3e4)},e.onmessage=i=>{try{let n=JSON.parse(i.data);if(n.type==="ACTION"){if(!m(n.payload))return;let{storeId:r,action:s}=n.payload,a=c.stores[r];if(!a||typeof a!="object")return;let p=a[{undo:"undo",redo:"redo",reset:"reset"}[s]];typeof p=="function"&&p.call(a)}}catch(n){console.warn("[bit-form] Erro ao processar comando do CLI:",n)}},e.onclose=()=>{t&&t(),clearInterval(d),f?console.log("[bit-form] Ponte antiga encerrada com sucesso."):(console.log("[bit-form] Conex\xE3o perdida. Reconectando em 3s..."),setTimeout(u,3e3))}};u();let y=()=>{f=!0,t&&t(),clearInterval(d),e&&(e.readyState===WebSocket.OPEN||e.readyState===WebSocket.CONNECTING)&&e.close(),l=null};return l=y,y}export{v as setupRemoteBridge};
1
+ import{j as c}from"../chunk-64KSP4TP.js";var S=o=>{let e=typeof o.getState=="function"?o.getState():o,t=o?.getHistoryMetadata?.()||{canUndo:!1,canRedo:!1,historyIndex:-1,historySize:0};return{...e,_meta:{canUndo:t.canUndo,canRedo:t.canRedo,totalSteps:t.historySize,currentIndex:t.historyIndex}}},l=null,m=o=>{if(!o||typeof o!="object")return!1;let{storeId:e,action:t}=o;return typeof e=="string"&&(t==="undo"||t==="redo"||t==="reset")};function v(o){l&&(console.warn("[bit-form] Reiniciando ponte do DevTools (Fast Refresh detectado)."),l());let e=null,t=null,d,f=!1,u=()=>{f=!1,e=new WebSocket(o),e.onopen=()=>{console.log("[bit-form] \u{1F50C} Conectado ao CLI DevTools via WebSocket.");let i=Object.entries(c.stores);if(i.length>0){let n=i.reduce((r,[s,a])=>(r[s]=S(a),r),{});e?.send(JSON.stringify({type:"STATE_UPDATE",payload:n}))}t=c.subscribe((n,r)=>{if(e?.readyState===WebSocket.OPEN){let s=c.stores[n];s&&e.send(JSON.stringify({type:"STATE_UPDATE",payload:{[n]:S(s)}}))}}),d=setInterval(()=>{e?.readyState===WebSocket.OPEN&&e.send(JSON.stringify({type:"PING"}))},3e4)},e.onmessage=i=>{try{let n=JSON.parse(i.data);if(n.type==="ACTION"){if(!m(n.payload))return;let{storeId:r,action:s}=n.payload,a=c.stores[r];if(!a||typeof a!="object")return;let p=a[{undo:"undo",redo:"redo",reset:"reset"}[s]];typeof p=="function"&&p.call(a)}}catch(n){console.warn("[bit-form] Erro ao processar comando do CLI:",n)}},e.onclose=()=>{t&&t(),clearInterval(d),f?console.log("[bit-form] Ponte antiga encerrada com sucesso."):(console.log("[bit-form] Conex\xE3o perdida. Reconectando em 3s..."),setTimeout(u,3e3))}};u();let y=()=>{f=!0,t&&t(),clearInterval(d),e&&(e.readyState===WebSocket.OPEN||e.readyState===WebSocket.CONNECTING)&&e.close(),l=null};return l=y,y}export{v as setupRemoteBridge};
2
2
  //# sourceMappingURL=bridge.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/devtools/bridge.ts"],"sourcesContent":["import { bitBus } from \"bit-form/core\";\nimport type { DevToolsActionName, DevToolsActionPayload } from \"./types\";\n\nconst formatStoreState = (instance: any) => {\n const cleanState =\n typeof instance.getState === \"function\" ? instance.getState() : instance;\n\n const historyMeta = instance?.getHistoryMetadata?.() || {\n canUndo: false,\n canRedo: false,\n historyIndex: -1,\n historySize: 0,\n };\n\n return {\n ...cleanState,\n _meta: {\n canUndo: historyMeta.canUndo,\n canRedo: historyMeta.canRedo,\n totalSteps: historyMeta.historySize,\n currentIndex: historyMeta.historyIndex,\n },\n };\n};\n\nlet activeBridgeCleanup: (() => void) | null = null;\n\nconst isDevToolsActionPayload = (\n payload: unknown,\n): payload is DevToolsActionPayload => {\n if (!payload || typeof payload !== \"object\") return false;\n\n const { storeId, action } = payload as {\n storeId?: unknown;\n action?: unknown;\n };\n\n return (\n typeof storeId === \"string\" &&\n (action === \"undo\" || action === \"redo\" || action === \"reset\")\n );\n};\n\nexport function setupRemoteBridge(url: string) {\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 isIntentionalDisconnect = false;\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 const storesEntries = Object.entries(bitBus.stores);\n if (storesEntries.length > 0) {\n const initialState = storesEntries.reduce(\n (acc, [id, store]) => {\n acc[id] = formatStoreState(store);\n return acc;\n },\n {} as Record<string, any>,\n );\n\n socket?.send(\n JSON.stringify({ type: \"STATE_UPDATE\", payload: initialState }),\n );\n }\n\n unsubscribeBus = bitBus.subscribe((storeId, _newState) => {\n if (socket?.readyState === WebSocket.OPEN) {\n const storeInstance = bitBus.stores[storeId];\n if (storeInstance) {\n socket.send(\n JSON.stringify({\n type: \"STATE_UPDATE\",\n payload: { [storeId]: formatStoreState(storeInstance) },\n }),\n );\n }\n }\n });\n\n heartbeatInterval = setInterval(() => {\n if (socket?.readyState === WebSocket.OPEN) {\n socket.send(JSON.stringify({ type: \"PING\" }));\n }\n }, 30000);\n };\n\n socket.onmessage = (event) => {\n try {\n const message = JSON.parse(event.data) as {\n type?: unknown;\n payload?: unknown;\n };\n\n if (message.type === \"ACTION\") {\n if (!isDevToolsActionPayload(message.payload)) {\n return;\n }\n\n const { storeId, action } = message.payload;\n\n const store = bitBus.stores[storeId];\n\n if (!store || typeof store !== \"object\") {\n return;\n }\n\n const methodByAction: Record<DevToolsActionName, string> = {\n undo: \"undo\",\n redo: \"redo\",\n reset: \"reset\",\n };\n\n const method = (store as Record<string, unknown>)[\n methodByAction[action]\n ];\n if (typeof method === \"function\") {\n (method as () => void).call(store);\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\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 (\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"],"mappings":"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","names":["formatStoreState","instance","cleanState","historyMeta","activeBridgeCleanup","isDevToolsActionPayload","payload","storeId","action","setupRemoteBridge","url","socket","unsubscribeBus","heartbeatInterval","isIntentionalDisconnect","connect","storesEntries","bitBus","initialState","acc","id","store","_newState","storeInstance","event","message","method","e","cleanup"]}
1
+ {"version":3,"sources":["../../src/devtools/bridge.ts"],"sourcesContent":["import { bitBus } from \"bit-form/core\";\nimport type { DevToolsActionName, DevToolsActionPayload } from \"./types\";\n\nconst formatStoreState = (instance: any) => {\n const cleanState =\n typeof instance.getState === \"function\" ? instance.getState() : instance;\n\n const historyMeta = instance?.getHistoryMetadata?.() || {\n canUndo: false,\n canRedo: false,\n historyIndex: -1,\n historySize: 0,\n };\n\n return {\n ...cleanState,\n _meta: {\n canUndo: historyMeta.canUndo,\n canRedo: historyMeta.canRedo,\n totalSteps: historyMeta.historySize,\n currentIndex: historyMeta.historyIndex,\n },\n };\n};\n\nlet activeBridgeCleanup: (() => void) | null = null;\n\nconst isDevToolsActionPayload = (\n payload: unknown,\n): payload is DevToolsActionPayload => {\n if (!payload || typeof payload !== \"object\") return false;\n\n const { storeId, action } = payload as {\n storeId?: unknown;\n action?: unknown;\n };\n\n return (\n typeof storeId === \"string\" &&\n (action === \"undo\" || action === \"redo\" || action === \"reset\")\n );\n};\n\nexport function setupRemoteBridge(url: string) {\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 isIntentionalDisconnect = false;\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 const storesEntries = Object.entries(bitBus.stores);\n if (storesEntries.length > 0) {\n const initialState = storesEntries.reduce(\n (acc, [id, store]) => {\n acc[id] = formatStoreState(store);\n return acc;\n },\n {} as Record<string, any>,\n );\n\n socket?.send(\n JSON.stringify({ type: \"STATE_UPDATE\", payload: initialState }),\n );\n }\n\n unsubscribeBus = bitBus.subscribe((storeId, _newState) => {\n if (socket?.readyState === WebSocket.OPEN) {\n const storeInstance = bitBus.stores[storeId];\n if (storeInstance) {\n socket.send(\n JSON.stringify({\n type: \"STATE_UPDATE\",\n payload: { [storeId]: formatStoreState(storeInstance) },\n }),\n );\n }\n }\n });\n\n heartbeatInterval = setInterval(() => {\n if (socket?.readyState === WebSocket.OPEN) {\n socket.send(JSON.stringify({ type: \"PING\" }));\n }\n }, 30000);\n };\n\n socket.onmessage = (event) => {\n try {\n const message = JSON.parse(event.data) as {\n type?: unknown;\n payload?: unknown;\n };\n\n if (message.type === \"ACTION\") {\n if (!isDevToolsActionPayload(message.payload)) {\n return;\n }\n\n const { storeId, action } = message.payload;\n\n const store = bitBus.stores[storeId];\n\n if (!store || typeof store !== \"object\") {\n return;\n }\n\n const methodByAction: Record<DevToolsActionName, string> = {\n undo: \"undo\",\n redo: \"redo\",\n reset: \"reset\",\n };\n\n const method = (store as Record<string, unknown>)[\n methodByAction[action]\n ];\n if (typeof method === \"function\") {\n (method as () => void).call(store);\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\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 (\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"],"mappings":"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","names":["formatStoreState","instance","cleanState","historyMeta","activeBridgeCleanup","isDevToolsActionPayload","payload","storeId","action","setupRemoteBridge","url","socket","unsubscribeBus","heartbeatInterval","isIntentionalDisconnect","connect","storesEntries","bitBus","initialState","acc","id","store","_newState","storeInstance","event","message","method","e","cleanup"]}