@lehnihon/bit-form 2.2.8 → 2.2.9

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 (142) 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 +12 -11
  4. package/dist/angular/index.d.ts +12 -11
  5. package/dist/angular/index.js +1 -1
  6. package/dist/angular/index.js.map +1 -1
  7. package/dist/{array-controller-Cx-DMH7Y.d.ts → array-controller-C61ByyG6.d.ts} +5 -5
  8. package/dist/{array-controller-B5bfXV1W.d.cts → array-controller-CtlqjA0e.d.cts} +5 -5
  9. package/dist/{bus-B2VEKrPI.d.ts → bus-BKuMV3E7.d.ts} +1 -1
  10. package/dist/{bus-ZLQeq4Vr.d.cts → bus-WOHGxuVy.d.cts} +1 -1
  11. package/dist/chunk-2QLQPMCZ.js +2 -0
  12. package/dist/chunk-2QLQPMCZ.js.map +1 -0
  13. package/dist/chunk-3KI3GEU3.cjs +2 -0
  14. package/dist/chunk-3KI3GEU3.cjs.map +1 -0
  15. package/dist/chunk-6LNXTSZ6.cjs +2 -0
  16. package/dist/{chunk-T2JRSWQU.cjs.map → chunk-6LNXTSZ6.cjs.map} +1 -1
  17. package/dist/{chunk-P2YWYBWG.cjs → chunk-GGZPA7AO.cjs} +2 -2
  18. package/dist/{chunk-P2YWYBWG.cjs.map → chunk-GGZPA7AO.cjs.map} +1 -1
  19. package/dist/chunk-ICYXODTQ.js +2 -0
  20. package/dist/chunk-ICYXODTQ.js.map +1 -0
  21. package/dist/chunk-J5ALITQW.cjs +2 -0
  22. package/dist/chunk-J5ALITQW.cjs.map +1 -0
  23. package/dist/chunk-J5GQLEVA.js +2 -0
  24. package/dist/chunk-J5GQLEVA.js.map +1 -0
  25. package/dist/chunk-KDHPLXZF.cjs +2 -0
  26. package/dist/chunk-KDHPLXZF.cjs.map +1 -0
  27. package/dist/{chunk-JC4R5WCC.js → chunk-N4HCGMMM.js} +2 -2
  28. package/dist/chunk-OLQVH24Z.cjs +2 -0
  29. package/dist/chunk-OLQVH24Z.cjs.map +1 -0
  30. package/dist/chunk-QX2IVNMK.js +2 -0
  31. package/dist/chunk-QX2IVNMK.js.map +1 -0
  32. package/dist/{chunk-D7JQWF6V.cjs → chunk-RHMJPKNV.cjs} +1 -1
  33. package/dist/{chunk-D7JQWF6V.cjs.map → chunk-RHMJPKNV.cjs.map} +1 -1
  34. package/dist/chunk-UARLAXZX.js +2 -0
  35. package/dist/chunk-UARLAXZX.js.map +1 -0
  36. package/dist/{chunk-EQ55DKX2.js → chunk-UIKO6GGW.js} +1 -1
  37. package/dist/chunk-UIKO6GGW.js.map +1 -0
  38. package/dist/chunk-X5UCRGYJ.cjs +2 -0
  39. package/dist/chunk-X5UCRGYJ.cjs.map +1 -0
  40. package/dist/chunk-Y3XVQGCU.js +2 -0
  41. package/dist/chunk-Y3XVQGCU.js.map +1 -0
  42. package/dist/cli/index.cjs +2 -2
  43. package/dist/core/bindings.cjs +1 -1
  44. package/dist/core/bindings.cjs.map +1 -1
  45. package/dist/core/bindings.d.cts +22 -14
  46. package/dist/core/bindings.d.ts +22 -14
  47. package/dist/core/bindings.js +1 -1
  48. package/dist/core/status.cjs +1 -1
  49. package/dist/core/status.d.cts +4 -4
  50. package/dist/core/status.d.ts +4 -4
  51. package/dist/core/status.js +1 -1
  52. package/dist/core/store.cjs +1 -1
  53. package/dist/core/store.cjs.map +1 -1
  54. package/dist/core/store.d.cts +4 -4
  55. package/dist/core/store.d.ts +4 -4
  56. package/dist/core/store.js +1 -1
  57. package/dist/core/utils.cjs +1 -1
  58. package/dist/core/utils.cjs.map +1 -1
  59. package/dist/core/utils.d.cts +4 -11
  60. package/dist/core/utils.d.ts +4 -11
  61. package/dist/core/utils.js +1 -1
  62. package/dist/core.cjs +1 -1
  63. package/dist/core.cjs.map +1 -1
  64. package/dist/core.d.cts +4 -4
  65. package/dist/core.d.ts +4 -4
  66. package/dist/core.js +1 -1
  67. package/dist/devtools/bridge.cjs +1 -1
  68. package/dist/devtools/bridge.cjs.map +1 -1
  69. package/dist/devtools/bridge.d.cts +2 -2
  70. package/dist/devtools/bridge.d.ts +2 -2
  71. package/dist/devtools/bridge.js +1 -1
  72. package/dist/devtools/index.cjs +2 -2
  73. package/dist/devtools/index.cjs.map +1 -1
  74. package/dist/devtools/index.d.cts +2 -2
  75. package/dist/devtools/index.d.ts +2 -2
  76. package/dist/devtools/index.js +1 -1
  77. package/dist/devtools/index.js.map +1 -1
  78. package/dist/index.cjs +1 -1
  79. package/dist/index.cjs.map +1 -1
  80. package/dist/index.d.cts +3 -3
  81. package/dist/index.d.ts +3 -3
  82. package/dist/index.js +1 -1
  83. package/dist/mask.cjs +1 -1
  84. package/dist/mask.cjs.map +1 -1
  85. package/dist/mask.js +1 -1
  86. package/dist/mask.js.map +1 -1
  87. package/dist/react/index.cjs +1 -1
  88. package/dist/react/index.cjs.map +1 -1
  89. package/dist/react/index.d.cts +7 -7
  90. package/dist/react/index.d.ts +7 -7
  91. package/dist/react/index.js +1 -1
  92. package/dist/react/index.js.map +1 -1
  93. package/dist/react-native/index.cjs +1 -1
  94. package/dist/react-native/index.cjs.map +1 -1
  95. package/dist/react-native/index.d.cts +6 -6
  96. package/dist/react-native/index.d.ts +6 -6
  97. package/dist/react-native/index.js +1 -1
  98. package/dist/react-native/index.js.map +1 -1
  99. package/dist/resolvers/index.d.cts +2 -2
  100. package/dist/resolvers/index.d.ts +2 -2
  101. package/dist/resolvers/joi.d.cts +2 -2
  102. package/dist/resolvers/joi.d.ts +2 -2
  103. package/dist/resolvers/yup.d.cts +2 -2
  104. package/dist/resolvers/yup.d.ts +2 -2
  105. package/dist/resolvers/zod.d.cts +2 -2
  106. package/dist/resolvers/zod.d.ts +2 -2
  107. package/dist/{store-api-types-D-ZHxzRy.d.cts → store-api-types-Bm3EAqR_.d.cts} +10 -10
  108. package/dist/{store-api-types-DPi30jQF.d.ts → store-api-types-DfTFy2h4.d.ts} +10 -10
  109. package/dist/{types-CG5nYeRk.d.ts → types-CRCP4Pgq.d.ts} +9 -3
  110. package/dist/{types-D6LhF5GC.d.cts → types-SOg9xEce.d.cts} +9 -3
  111. package/dist/{use-bit-persist-BTwy8kvA.d.ts → use-bit-persist-BDMZmxBh.d.ts} +4 -4
  112. package/dist/{use-bit-persist-C2LHNTVv.d.cts → use-bit-persist-CBTZIMc5.d.cts} +4 -4
  113. package/dist/utils.cjs +1 -1
  114. package/dist/utils.js +1 -1
  115. package/dist/vue/index.cjs +1 -1
  116. package/dist/vue/index.cjs.map +1 -1
  117. package/dist/vue/index.d.cts +4 -4
  118. package/dist/vue/index.d.ts +4 -4
  119. package/dist/vue/index.js +1 -1
  120. package/dist/vue/index.js.map +1 -1
  121. package/package.json +9 -6
  122. package/dist/chunk-63OJBMKK.js +0 -2
  123. package/dist/chunk-63OJBMKK.js.map +0 -1
  124. package/dist/chunk-CPP7ELA5.js +0 -2
  125. package/dist/chunk-CPP7ELA5.js.map +0 -1
  126. package/dist/chunk-E2NZR44P.js +0 -2
  127. package/dist/chunk-E2NZR44P.js.map +0 -1
  128. package/dist/chunk-EQ55DKX2.js.map +0 -1
  129. package/dist/chunk-M6WBNHIT.cjs +0 -2
  130. package/dist/chunk-M6WBNHIT.cjs.map +0 -1
  131. package/dist/chunk-MFSQATNZ.cjs +0 -2
  132. package/dist/chunk-MFSQATNZ.cjs.map +0 -1
  133. package/dist/chunk-MFTWAFMG.cjs +0 -2
  134. package/dist/chunk-MFTWAFMG.cjs.map +0 -1
  135. package/dist/chunk-RD73EBSN.js +0 -2
  136. package/dist/chunk-RD73EBSN.js.map +0 -1
  137. package/dist/chunk-T2JRSWQU.cjs +0 -2
  138. package/dist/chunk-UQ3DSUWC.js +0 -2
  139. package/dist/chunk-UQ3DSUWC.js.map +0 -1
  140. package/dist/chunk-VZHG372Q.cjs +0 -2
  141. package/dist/chunk-VZHG372Q.cjs.map +0 -1
  142. /package/dist/{chunk-JC4R5WCC.js.map → chunk-N4HCGMMM.js.map} +0 -0
package/dist/mask.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/mask/creators.ts","../src/core/mask/presets.ts","../src/core/mask/index.ts"],"sourcesContent":["import {\n BitMask,\n CurrencyMaskConfig,\n DateMaskConfig,\n PatternMaskOptions,\n} from \"./types\";\n\ntype TokenMap = Record<string, RegExp>;\n\nconst tokens: TokenMap = {\n \"#\": /\\d/,\n A: /[a-zA-Z]/,\n X: /[a-zA-Z0-9]/,\n H: /[0-9a-fA-F]/,\n U: /[A-Z]/,\n L: /[a-z]/,\n \"*\": /./,\n};\n\nexport const unmask = (\n value: string | number | null | undefined,\n allowChars?: string,\n): string => {\n if (value === null || value === undefined || value === \"\") return \"\";\n const stringValue = String(value);\n const isNegative = stringValue.startsWith(\"-\");\n\n const escapedChars = allowChars\n ? allowChars.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n : \"\";\n const regex = new RegExp(`[^a-zA-Z0-9${escapedChars}]`, \"g\");\n\n const clean = stringValue.replace(regex, \"\");\n return isNegative && clean && !clean.startsWith(\"-\") ? `-${clean}` : clean;\n};\n\nexport const unmaskCurrency = (value: any, precision = 2): number => {\n if (typeof value === \"number\") return value;\n if (!value) return 0;\n\n const stringValue = String(value);\n const isNegative = stringValue.includes(\"-\");\n const digits = stringValue.replace(/\\D/g, \"\");\n\n if (!digits) return 0;\n\n const numberValue = parseInt(digits, 10) / Math.pow(10, precision);\n return isNegative ? -numberValue : numberValue;\n};\n\nexport const createPatternMask = (\n pattern: string | string[],\n options?: PatternMaskOptions,\n): BitMask => {\n const getRawLength = (p: string) =>\n p.split(\"\").filter((c) => tokens[c]).length;\n\n const patterns = Array.isArray(pattern) ? pattern : [pattern];\n const sortedPatterns = [...patterns].sort(\n (a, b) => getRawLength(a) - getRawLength(b),\n );\n\n const getActivePattern = (rawValueLength: number) => {\n let activePattern = sortedPatterns[sortedPatterns.length - 1];\n for (const candidate of sortedPatterns) {\n if (rawValueLength <= getRawLength(candidate)) {\n activePattern = candidate;\n break;\n }\n }\n return activePattern;\n };\n\n const formatValue = (value: string | number | null | undefined): string => {\n const stringVal = unmask(value, options?.allowChars);\n\n if (!stringVal && !options?.guide) {\n return \"\";\n }\n\n const activePattern = getActivePattern(stringVal.length);\n const showGuide = options?.guide || false;\n const placeholder = options?.placeholderChar || \"_\";\n\n let masked = \"\";\n let valueIndex = 0;\n\n for (let i = 0; i < activePattern.length; i++) {\n const patternChar = activePattern[i];\n const token = tokens[patternChar];\n\n if (valueIndex < stringVal.length) {\n let dataChar = stringVal[valueIndex];\n\n if (token) {\n if (patternChar === \"U\") dataChar = dataChar.toUpperCase();\n if (patternChar === \"L\") dataChar = dataChar.toLowerCase();\n\n if (token.test(dataChar)) {\n masked += dataChar;\n valueIndex++;\n } else if (showGuide) {\n masked += placeholder;\n } else {\n break;\n }\n } else {\n masked += patternChar;\n if (dataChar === patternChar) valueIndex++;\n }\n } else if (showGuide) {\n masked += token ? placeholder : patternChar;\n } else {\n break;\n }\n }\n\n return masked;\n };\n\n return {\n format: formatValue,\n parse: (value: string) => {\n if (options?.customParse) return options.customParse(value);\n\n const formatted = formatValue(value);\n\n if (options?.saveRaw) {\n if (options?.guide) {\n const placeholder = options.placeholderChar || \"_\";\n const escapedPlaceholder = placeholder.replace(\n /[.*+?^${}()|[\\]\\\\]/g,\n \"\\\\$&\",\n );\n const placeholderRegex = new RegExp(escapedPlaceholder, \"g\");\n\n return formatted.replace(placeholderRegex, \"\");\n }\n\n return formatted;\n }\n\n return unmask(formatted, options?.allowChars);\n },\n };\n};\n\nexport const createCurrencyMask = ({\n prefix = \"\",\n suffix = \"\",\n thousand,\n decimal,\n precision = 2,\n allowNegative = true,\n saveRaw = false,\n}: CurrencyMaskConfig): BitMask => {\n const formatFn = (value: any) => {\n if (value === undefined || value === null || value === \"\") return \"\";\n\n let stringValue = \"\";\n\n if (typeof value === \"number\") {\n stringValue = Math.abs(value).toFixed(precision).replace(/\\D/g, \"\");\n } else {\n stringValue = String(value).replace(/\\D/g, \"\");\n }\n\n if (!stringValue && String(value).includes(\"-\") && allowNegative)\n return \"-\";\n if (!stringValue) return \"\";\n\n stringValue = stringValue.padStart(precision + 1, \"0\");\n\n const integerPart =\n precision > 0\n ? stringValue.slice(0, -precision).replace(/^0+(?=\\d)/, \"\") || \"0\"\n : stringValue.replace(/^0+(?=\\d)/, \"\") || \"0\";\n const decimalPart = precision > 0 ? stringValue.slice(-precision) : \"\";\n\n const formattedInteger = integerPart.replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n thousand,\n );\n\n const isNegative =\n typeof value === \"number\" ? value < 0 : String(value).includes(\"-\");\n const sign = isNegative && allowNegative ? \"-\" : \"\";\n\n if (precision === 0) {\n return `${sign}${prefix}${formattedInteger}${suffix}`;\n }\n\n return `${sign}${prefix}${formattedInteger}${decimal}${decimalPart}${suffix}`;\n };\n\n return {\n format: formatFn,\n parse: (value: string) => {\n const numericValue = unmaskCurrency(value, precision);\n const finalNumber = !allowNegative\n ? Math.abs(numericValue)\n : numericValue;\n if (saveRaw) return formatFn(finalNumber);\n return finalNumber;\n },\n };\n};\n\nexport const createCreditCardMask = (options?: PatternMaskOptions): BitMask => {\n // Função auxiliar para descobrir o padrão dinamicamente\n const getCardPattern = (rawValue: string) => {\n // Amex (American Express) começa com 34 ou 37 -> 15 dígitos\n if (/^3[47]/.test(rawValue)) {\n return \"#### ###### #####\";\n }\n // Diners Club começa com 300-305, 36 ou 38 -> 14 dígitos\n if (/^3(?:0[0-5]|[68])/.test(rawValue)) {\n return \"#### ###### ####\";\n }\n // Default: Visa, Mastercard, Discover, Elo, etc -> 16 dígitos\n return \"#### #### #### ####\";\n };\n\n return {\n format: (value: any) => {\n const stringVal = unmask(value, options?.allowChars);\n const pattern = getCardPattern(stringVal);\n const mask = createPatternMask(pattern, options);\n return mask.format(value);\n },\n parse: (value: string) => {\n const stringVal = unmask(value, options?.allowChars);\n const pattern = getCardPattern(stringVal);\n\n const mask = createPatternMask(pattern, options);\n return mask.parse(value);\n },\n };\n};\n\nexport const createDateMask = (config?: DateMaskConfig): BitMask => {\n const formatType = config?.format || \"DD/MM/YYYY\";\n const isISO = formatType === \"YYYY-MM-DD\";\n\n // Criamos a máscara base consoante o formato escolhido\n const baseMask = createPatternMask(\n isISO ? \"####-##-##\" : \"##/##/####\",\n config,\n );\n\n return {\n format: (value: any) => {\n let stringVal = unmask(value);\n if (!stringVal) return \"\";\n\n let day = \"\";\n let month = \"\";\n let year = \"\";\n\n // Separamos os componentes consoante o que o utilizador já digitou\n if (isISO) {\n year = stringVal.substring(0, 4);\n month = stringVal.substring(4, 6);\n day = stringVal.substring(6, 8);\n } else {\n day = stringVal.substring(0, 2);\n month = stringVal.substring(2, 4);\n year = stringVal.substring(4, 8);\n }\n\n // Validação do Dia (01 a 31)\n if (day.length === 2) {\n const d = parseInt(day, 10);\n if (d > 31) day = \"31\";\n if (d === 0) day = \"01\";\n }\n\n // Validação do Mês (01 a 12)\n if (month.length === 2) {\n const m = parseInt(month, 10);\n if (m > 12) month = \"12\";\n if (m === 0) month = \"01\";\n }\n\n // Reconstruímos a string limpa e passamos para o pattern normal\n const safeString = isISO\n ? `${year}${month}${day}`\n : `${day}${month}${year}`;\n\n return baseMask.format(safeString);\n },\n parse: (value: string) => {\n // Usamos a funcionalidade completa da máscara base (incluindo o saveRaw e o unmasking)\n return baseMask.parse(value);\n },\n };\n};\n","import type { BitMask } from \"./types\";\nimport {\n createCreditCardMask,\n createCurrencyMask,\n createDateMask,\n createPatternMask,\n} from \"./creators\";\n\n// ==========================================\n// 💲 MOEDAS (Currencies)\n// ==========================================\n\n/** BRL - Real Brasileiro (R$ 1.000,00) */\nexport const maskBRL = createCurrencyMask({\n prefix: \"R$ \",\n thousand: \".\",\n decimal: \",\",\n precision: 2,\n});\n\n/** USD - Dólar Americano ($1,000.00) */\nexport const maskUSD = createCurrencyMask({\n prefix: \"$\",\n thousand: \",\",\n decimal: \".\",\n precision: 2,\n});\n\n/** EUR - Euro Padrão (€ 1.000,00) - Sufixo comum na Europa */\nexport const maskEUR = createCurrencyMask({\n suffix: \" €\",\n thousand: \".\",\n decimal: \",\",\n precision: 2,\n});\n\n/** GBP - Libra Esterlina (£1,000.00) */\nexport const maskGBP = createCurrencyMask({\n prefix: \"£\",\n thousand: \",\",\n decimal: \".\",\n precision: 2,\n});\n\n/** JPY - Iene Japonês (¥1,000) - Geralmente sem decimais */\nexport const maskJPY = createCurrencyMask({\n prefix: \"¥\",\n thousand: \",\",\n decimal: \".\",\n precision: 0,\n});\n\n// ==========================================\n// 🔢 NÚMEROS E PERCENTUAIS\n// ==========================================\n\n/** Porcentagem PT-BR (10,5%) */\nexport const maskPercent = createCurrencyMask({\n suffix: \"%\",\n thousand: \".\",\n decimal: \",\",\n precision: 1, // Ex: 99,9%\n});\n\n/** Decimal Genérico PT-BR (1.000,00) - Sem símbolo */\nexport const maskDecimal = createCurrencyMask({\n thousand: \".\",\n decimal: \",\",\n precision: 2,\n});\n\n/** Inteiro (1.000) - Apenas separador de milhar */\nexport const maskInteger = createCurrencyMask({\n thousand: \".\",\n decimal: \",\",\n precision: 0,\n});\n\n// ==========================================\n// 🇧🇷 PADRÕES BRASILEIROS (Brazil)\n// ==========================================\n\n/** CPF (000.000.000-00) */\nexport const maskCPF = createPatternMask(\"###.###.###-##\");\n\n/** CNPJ (00.000.000/0000-00) */\nexport const maskCNPJ = createPatternMask(\"##.###.###/####-##\");\n\nexport const maskPhone = createPatternMask([\n \"(##) ####-####\", // Fixo (10 dígitos)\n \"(##) #####-####\", // Celular (11 dígitos)\n]);\n\n/** Telefone Fixo BR (11) 0000-0000 */\nexport const maskLandline = createPatternMask(\"(##) ####-####\");\n\n/** CEP (00000-000) */\nexport const maskCEP = createPatternMask(\"#####-###\");\n\n/** Data PT/BR com correção automática de dia/mês */\nexport const maskDate = createDateMask({\n format: \"DD/MM/YYYY\",\n guide: true,\n customParse: (val) => {\n const cleanVal = val.replace(/_/g, \"\");\n const parts = cleanVal.split(\"/\");\n if (parts.length === 3 && parts[2].length === 4) {\n return `${parts[2]}-${parts[1]}-${parts[0]}`;\n }\n return cleanVal.replace(/\\D/g, \"\");\n },\n});\n\n/** Hora Curta (HH:MM) */\nexport const maskTime = createPatternMask(\"##:##\");\n\n/** CNH (Carteira de Motorista - 11 dígitos) */\nexport const maskCNH = createPatternMask(\"###########\");\n\n/** RG (00.000.000-X) - Suporta o 'X' como dígito verificador */\nexport const maskRG = createPatternMask(\"##.###.###-X\");\n\n/**\n * CPF + CNPJ combinado — alterna automaticamente pelo número de dígitos:\n * - Até 11 dígitos → CPF (000.000.000-00)\n * - Mais de 11 → CNPJ (00.000.000/0000-00)\n */\nexport const maskCPFCNPJ = createPatternMask([\n \"###.###.###-##\",\n \"##.###.###/####-##\",\n]);\n\n/**\n * Placa de veículo BR — detecta o formato pelo 5.º caractere:\n * - Antigo → ABC-1234 (posição 5 é dígito)\n * - Mercosul → ABC1D23 (posição 5 é letra)\n */\nexport const maskPlate: BitMask = {\n format(value: any): string {\n const raw = String(value ?? \"\")\n .replace(/[^a-zA-Z0-9]/g, \"\")\n .toUpperCase()\n .slice(0, 7);\n\n if (raw.length === 0) return \"\";\n\n const prefix = raw.slice(0, 3);\n const rest = raw.slice(3);\n\n if (rest.length === 0) return prefix;\n\n // Posição 5 (rest[1]): letra → Mercosul; dígito → formato antigo\n const isMercosul = rest.length >= 2 && /[A-Z]/.test(rest[1]);\n\n return isMercosul ? `${prefix}${rest}` : `${prefix}-${rest}`;\n },\n parse(value: string): string {\n return String(value ?? \"\")\n .replace(/[^a-zA-Z0-9]/g, \"\")\n .toUpperCase()\n .slice(0, 7);\n },\n};\n\n// ==========================================\n// 🇺🇸 PADRÕES AMERICANOS (USA)\n// ==========================================\n\n/** US Phone ((000) 000-0000) */\nexport const maskUSPhone = createPatternMask(\"(###) ###-####\");\n\n/** ZIP Code (00000 or 00000-0000) */\nexport const maskZipCode = createPatternMask(\"#####-####\");\n\n/** Date US (MM/DD/YYYY) - Igual ao BR, mas semântica diferente */\nexport const maskDateUS = createPatternMask(\"##/##/####\");\n\n/** SSN (Social Security Number) */\nexport const maskSSN = createPatternMask(\"###-##-####\");\n\n// ==========================================\n// 🌐 PADRÕES GLOBAIS / TÉCNICOS\n// ==========================================\n\n/** Cartão de Crédito Inteligente (Detecta Visa/Master, Amex e Diners) */\nexport const maskCreditCard = createCreditCardMask();\n\n/** CVV (3 ou 4 dígitos) */\nexport const maskCVV = createPatternMask(\"####\");\n\n/** Data ISO (Ideal para base de dados: YYYY-MM-DD) */\nexport const maskDateISO = createDateMask({\n format: \"YYYY-MM-DD\",\n saveRaw: true,\n guide: true,\n});\n\n/** Endereço MAC (HH:HH:HH:HH:HH:HH) - Usa o token Hexadecimal */\nexport const maskMacAddress = createPatternMask(\"HH:HH:HH:HH:HH:HH\");\n\n/** Cor Hexadecimal (#HHHHHH) */\nexport const maskColorHex = createPatternMask(\"#HHHHHH\");\n\n/** IPv4 (000.000.000.000) - Formato de blocos fixos */\nexport const maskIPv4 = createPatternMask(\"###.###.###.###\");\n\n/** IPv6 (HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH) */\nexport const maskIPv6 = createPatternMask(\n \"HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH\",\n);\n\n/** * IBAN Internacional\n * Força as duas primeiras letras para maiúsculas e agrupa de 4 em 4.\n * O tamanho máximo cobre os 34 caracteres do padrão IBAN.\n */\nexport const maskIBAN = createPatternMask(\n \"UU## XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX\",\n { allowChars: \" \" },\n);\n","export * from \"./types\";\nexport * from \"./creators\";\nexport * from \"./presets\";\nexport * from \"./field-binding\";\n\nimport * as presets from \"./presets\";\nimport type { BitMask, BitBuiltInMaskName } from \"./types\";\n\nexport const bitMasks: Record<BitBuiltInMaskName, BitMask> = {\n // Moedas\n brl: presets.maskBRL,\n usd: presets.maskUSD,\n eur: presets.maskEUR,\n gbp: presets.maskGBP,\n jpy: presets.maskJPY,\n // Números\n percent: presets.maskPercent,\n decimal: presets.maskDecimal,\n int: presets.maskInteger,\n integer: presets.maskInteger,\n // Documentos BR\n cpf: presets.maskCPF,\n cnpj: presets.maskCNPJ,\n cpfCnpj: presets.maskCPFCNPJ,\n rg: presets.maskRG,\n cep: presets.maskCEP,\n cnh: presets.maskCNH,\n plate: presets.maskPlate,\n // Comunicação/Data\n phone: presets.maskPhone,\n landline: presets.maskLandline,\n date: presets.maskDate,\n time: presets.maskTime,\n // USA\n usPhone: presets.maskUSPhone,\n zipCode: presets.maskZipCode,\n dateUS: presets.maskDateUS,\n ssn: presets.maskSSN,\n // Tech/Global\n cc: presets.maskCreditCard,\n cvv: presets.maskCVV,\n dateISO: presets.maskDateISO,\n ip: presets.maskIPv4,\n ipv6: presets.maskIPv6,\n mac: presets.maskMacAddress,\n color: presets.maskColorHex,\n iban: presets.maskIBAN,\n};\n"],"mappings":"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","names":["tokens","unmask","value","allowChars","stringValue","isNegative","escapedChars","regex","clean","unmaskCurrency","precision","digits","numberValue","createPatternMask","pattern","options","getRawLength","p","c","sortedPatterns","a","b","getActivePattern","rawValueLength","activePattern","candidate","formatValue","stringVal","showGuide","placeholder","masked","valueIndex","i","patternChar","token","dataChar","formatted","escapedPlaceholder","placeholderRegex","createCurrencyMask","prefix","suffix","thousand","decimal","allowNegative","saveRaw","formatFn","integerPart","decimalPart","formattedInteger","sign","numericValue","finalNumber","createCreditCardMask","getCardPattern","rawValue","createDateMask","config","isISO","baseMask","day","month","year","d","m","safeString","maskBRL","createCurrencyMask","maskUSD","maskEUR","maskGBP","maskJPY","maskPercent","maskDecimal","maskInteger","maskCPF","createPatternMask","maskCNPJ","maskPhone","maskLandline","maskCEP","maskDate","createDateMask","val","cleanVal","parts","maskTime","maskCNH","maskRG","maskCPFCNPJ","maskPlate","value","raw","prefix","rest","maskUSPhone","maskZipCode","maskDateUS","maskSSN","maskCreditCard","createCreditCardMask","maskCVV","maskDateISO","maskMacAddress","maskColorHex","maskIPv4","maskIPv6","maskIBAN","bitMasks","maskBRL","maskUSD","maskEUR","maskGBP","maskJPY","maskPercent","maskDecimal","maskInteger","maskCPF","maskCNPJ","maskCPFCNPJ","maskRG","maskCEP","maskCNH","maskPlate","maskPhone","maskLandline","maskDate","maskTime","maskUSPhone","maskZipCode","maskDateUS","maskSSN","maskCreditCard","maskCVV","maskDateISO","maskIPv4","maskIPv6","maskMacAddress","maskColorHex","maskIBAN"]}
1
+ {"version":3,"sources":["../src/core/mask/creators.ts","../src/core/mask/presets.ts","../src/core/mask/index.ts"],"sourcesContent":["import {\n BitMask,\n CurrencyMaskConfig,\n DateMaskConfig,\n PatternMaskOptions,\n} from \"./types\";\n\ntype TokenMap = Record<string, RegExp>;\n\nconst tokens: TokenMap = {\n \"#\": /\\d/,\n A: /[a-zA-Z]/,\n X: /[a-zA-Z0-9]/,\n H: /[0-9a-fA-F]/,\n U: /[A-Z]/,\n L: /[a-z]/,\n \"*\": /./,\n};\n\nexport const unmask = (\n value: string | number | null | undefined,\n allowChars?: string,\n): string => {\n if (value === null || value === undefined || value === \"\") return \"\";\n const stringValue = String(value);\n const isNegative = stringValue.startsWith(\"-\");\n\n const escapedChars = allowChars\n ? allowChars.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n : \"\";\n const regex = new RegExp(`[^a-zA-Z0-9${escapedChars}]`, \"g\");\n\n const clean = stringValue.replace(regex, \"\");\n return isNegative && clean && !clean.startsWith(\"-\") ? `-${clean}` : clean;\n};\n\nexport const unmaskCurrency = (value: any, precision = 2): number => {\n if (typeof value === \"number\") return value;\n if (!value) return 0;\n\n const stringValue = String(value);\n const isNegative = stringValue.includes(\"-\");\n const digits = stringValue.replace(/\\D/g, \"\");\n\n if (!digits) return 0;\n\n const numberValue = parseInt(digits, 10) / Math.pow(10, precision);\n return isNegative ? -numberValue : numberValue;\n};\n\nexport const createPatternMask = (\n pattern: string | string[],\n options?: PatternMaskOptions,\n): BitMask => {\n const getRawLength = (p: string) =>\n p.split(\"\").filter((c) => tokens[c]).length;\n\n const patterns = Array.isArray(pattern) ? pattern : [pattern];\n const sortedPatterns = [...patterns].sort(\n (a, b) => getRawLength(a) - getRawLength(b),\n );\n\n const getActivePattern = (rawValueLength: number) => {\n let activePattern = sortedPatterns[sortedPatterns.length - 1];\n for (const candidate of sortedPatterns) {\n if (rawValueLength <= getRawLength(candidate)) {\n activePattern = candidate;\n break;\n }\n }\n return activePattern;\n };\n\n const formatValue = (value: string | number | null | undefined): string => {\n const stringVal = unmask(value, options?.allowChars);\n\n if (!stringVal && !options?.guide) {\n return \"\";\n }\n\n const activePattern = getActivePattern(stringVal.length);\n const showGuide = options?.guide || false;\n const placeholder = options?.placeholderChar || \"_\";\n\n let masked = \"\";\n let valueIndex = 0;\n\n for (let i = 0; i < activePattern.length; i++) {\n const patternChar = activePattern[i];\n const token = tokens[patternChar];\n\n if (valueIndex < stringVal.length) {\n let dataChar = stringVal[valueIndex];\n\n if (token) {\n if (patternChar === \"U\") dataChar = dataChar.toUpperCase();\n if (patternChar === \"L\") dataChar = dataChar.toLowerCase();\n\n if (token.test(dataChar)) {\n masked += dataChar;\n valueIndex++;\n } else if (showGuide) {\n masked += placeholder;\n } else {\n break;\n }\n } else {\n masked += patternChar;\n if (dataChar === patternChar) valueIndex++;\n }\n } else if (showGuide) {\n masked += token ? placeholder : patternChar;\n } else {\n break;\n }\n }\n\n return masked;\n };\n\n return {\n format: formatValue,\n parse: (value: string) => {\n if (options?.customParse) return options.customParse(value);\n\n const formatted = formatValue(value);\n\n if (options?.saveRaw) {\n if (options?.guide) {\n const placeholder = options.placeholderChar || \"_\";\n const escapedPlaceholder = placeholder.replace(\n /[.*+?^${}()|[\\]\\\\]/g,\n \"\\\\$&\",\n );\n const placeholderRegex = new RegExp(escapedPlaceholder, \"g\");\n\n return formatted.replace(placeholderRegex, \"\");\n }\n\n return formatted;\n }\n\n return unmask(formatted, options?.allowChars);\n },\n };\n};\n\nexport const createCurrencyMask = ({\n prefix = \"\",\n suffix = \"\",\n thousand,\n decimal,\n precision = 2,\n allowNegative = true,\n saveRaw = false,\n}: CurrencyMaskConfig): BitMask => {\n const formatFn = (value: any) => {\n if (value === undefined || value === null || value === \"\") return \"\";\n\n let stringValue =\n typeof value === \"number\"\n ? Math.abs(value).toFixed(precision).replace(/\\D/g, \"\")\n : String(value).replace(/\\D/g, \"\");\n\n if (!stringValue && String(value).includes(\"-\") && allowNegative)\n return \"-\";\n if (!stringValue) return \"\";\n\n stringValue = stringValue.padStart(precision + 1, \"0\");\n\n const integerPart =\n precision > 0\n ? stringValue.slice(0, -precision).replace(/^0+(?=\\d)/, \"\") || \"0\"\n : stringValue.replace(/^0+(?=\\d)/, \"\") || \"0\";\n const decimalPart = precision > 0 ? stringValue.slice(-precision) : \"\";\n\n const formattedInteger = integerPart.replace(\n /\\B(?=(\\d{3})+(?!\\d))/g,\n thousand,\n );\n\n const isNegative =\n typeof value === \"number\" ? value < 0 : String(value).includes(\"-\");\n const sign = isNegative && allowNegative ? \"-\" : \"\";\n\n if (precision === 0) {\n return `${sign}${prefix}${formattedInteger}${suffix}`;\n }\n\n return `${sign}${prefix}${formattedInteger}${decimal}${decimalPart}${suffix}`;\n };\n\n return {\n format: formatFn,\n parse: (value: string) => {\n const numericValue = unmaskCurrency(value, precision);\n const finalNumber = !allowNegative\n ? Math.abs(numericValue)\n : numericValue;\n if (saveRaw) return formatFn(finalNumber);\n return finalNumber;\n },\n };\n};\n\nexport const createCreditCardMask = (options?: PatternMaskOptions): BitMask => {\n // Função auxiliar para descobrir o padrão dinamicamente\n const getCardPattern = (rawValue: string) => {\n // Amex (American Express) começa com 34 ou 37 -> 15 dígitos\n if (/^3[47]/.test(rawValue)) {\n return \"#### ###### #####\";\n }\n // Diners Club começa com 300-305, 36 ou 38 -> 14 dígitos\n if (/^3(?:0[0-5]|[68])/.test(rawValue)) {\n return \"#### ###### ####\";\n }\n // Default: Visa, Mastercard, Discover, Elo, etc -> 16 dígitos\n return \"#### #### #### ####\";\n };\n\n return {\n format: (value: any) => {\n const stringVal = unmask(value, options?.allowChars);\n const pattern = getCardPattern(stringVal);\n const mask = createPatternMask(pattern, options);\n return mask.format(value);\n },\n parse: (value: string) => {\n const stringVal = unmask(value, options?.allowChars);\n const pattern = getCardPattern(stringVal);\n\n const mask = createPatternMask(pattern, options);\n return mask.parse(value);\n },\n };\n};\n\nexport const createDateMask = (config?: DateMaskConfig): BitMask => {\n const formatType = config?.format || \"DD/MM/YYYY\";\n const isISO = formatType === \"YYYY-MM-DD\";\n\n // Criamos a máscara base consoante o formato escolhido\n const baseMask = createPatternMask(\n isISO ? \"####-##-##\" : \"##/##/####\",\n config,\n );\n\n return {\n format: (value: any) => {\n let stringVal = unmask(value);\n if (!stringVal) return \"\";\n\n let day: string;\n let month: string;\n let year: string;\n\n // Separamos os componentes consoante o que o utilizador já digitou\n if (isISO) {\n year = stringVal.substring(0, 4);\n month = stringVal.substring(4, 6);\n day = stringVal.substring(6, 8);\n } else {\n day = stringVal.substring(0, 2);\n month = stringVal.substring(2, 4);\n year = stringVal.substring(4, 8);\n }\n\n // Validação do Dia (01 a 31)\n if (day.length === 2) {\n const d = parseInt(day, 10);\n if (d > 31) day = \"31\";\n if (d === 0) day = \"01\";\n }\n\n // Validação do Mês (01 a 12)\n if (month.length === 2) {\n const m = parseInt(month, 10);\n if (m > 12) month = \"12\";\n if (m === 0) month = \"01\";\n }\n\n // Reconstruímos a string limpa e passamos para o pattern normal\n const safeString = isISO\n ? `${year}${month}${day}`\n : `${day}${month}${year}`;\n\n return baseMask.format(safeString);\n },\n parse: (value: string) => {\n // Usamos a funcionalidade completa da máscara base (incluindo o saveRaw e o unmasking)\n return baseMask.parse(value);\n },\n };\n};\n","import type { BitMask } from \"./types\";\nimport {\n createCreditCardMask,\n createCurrencyMask,\n createDateMask,\n createPatternMask,\n} from \"./creators\";\n\n// ==========================================\n// 💲 MOEDAS (Currencies)\n// ==========================================\n\n/** BRL - Real Brasileiro (R$ 1.000,00) */\nexport const maskBRL = createCurrencyMask({\n prefix: \"R$ \",\n thousand: \".\",\n decimal: \",\",\n precision: 2,\n});\n\n/** USD - Dólar Americano ($1,000.00) */\nexport const maskUSD = createCurrencyMask({\n prefix: \"$\",\n thousand: \",\",\n decimal: \".\",\n precision: 2,\n});\n\n/** EUR - Euro Padrão (€ 1.000,00) - Sufixo comum na Europa */\nexport const maskEUR = createCurrencyMask({\n suffix: \" €\",\n thousand: \".\",\n decimal: \",\",\n precision: 2,\n});\n\n/** GBP - Libra Esterlina (£1,000.00) */\nexport const maskGBP = createCurrencyMask({\n prefix: \"£\",\n thousand: \",\",\n decimal: \".\",\n precision: 2,\n});\n\n/** JPY - Iene Japonês (¥1,000) - Geralmente sem decimais */\nexport const maskJPY = createCurrencyMask({\n prefix: \"¥\",\n thousand: \",\",\n decimal: \".\",\n precision: 0,\n});\n\n// ==========================================\n// 🔢 NÚMEROS E PERCENTUAIS\n// ==========================================\n\n/** Porcentagem PT-BR (10,5%) */\nexport const maskPercent = createCurrencyMask({\n suffix: \"%\",\n thousand: \".\",\n decimal: \",\",\n precision: 1, // Ex: 99,9%\n});\n\n/** Decimal Genérico PT-BR (1.000,00) - Sem símbolo */\nexport const maskDecimal = createCurrencyMask({\n thousand: \".\",\n decimal: \",\",\n precision: 2,\n});\n\n/** Inteiro (1.000) - Apenas separador de milhar */\nexport const maskInteger = createCurrencyMask({\n thousand: \".\",\n decimal: \",\",\n precision: 0,\n});\n\n// ==========================================\n// 🇧🇷 PADRÕES BRASILEIROS (Brazil)\n// ==========================================\n\n/** CPF (000.000.000-00) */\nexport const maskCPF = createPatternMask(\"###.###.###-##\");\n\n/** CNPJ (00.000.000/0000-00) */\nexport const maskCNPJ = createPatternMask(\"##.###.###/####-##\");\n\nexport const maskPhone = createPatternMask([\n \"(##) ####-####\", // Fixo (10 dígitos)\n \"(##) #####-####\", // Celular (11 dígitos)\n]);\n\n/** Telefone Fixo BR (11) 0000-0000 */\nexport const maskLandline = createPatternMask(\"(##) ####-####\");\n\n/** CEP (00000-000) */\nexport const maskCEP = createPatternMask(\"#####-###\");\n\n/** Data PT/BR com correção automática de dia/mês */\nexport const maskDate = createDateMask({\n format: \"DD/MM/YYYY\",\n guide: true,\n customParse: (val) => {\n const cleanVal = val.replace(/_/g, \"\");\n const parts = cleanVal.split(\"/\");\n if (parts.length === 3 && parts[2].length === 4) {\n return `${parts[2]}-${parts[1]}-${parts[0]}`;\n }\n return cleanVal.replace(/\\D/g, \"\");\n },\n});\n\n/** Hora Curta (HH:MM) */\nexport const maskTime = createPatternMask(\"##:##\");\n\n/** CNH (Carteira de Motorista - 11 dígitos) */\nexport const maskCNH = createPatternMask(\"###########\");\n\n/** RG (00.000.000-X) - Suporta o 'X' como dígito verificador */\nexport const maskRG = createPatternMask(\"##.###.###-X\");\n\n/**\n * CPF + CNPJ combinado — alterna automaticamente pelo número de dígitos:\n * - Até 11 dígitos → CPF (000.000.000-00)\n * - Mais de 11 → CNPJ (00.000.000/0000-00)\n */\nexport const maskCPFCNPJ = createPatternMask([\n \"###.###.###-##\",\n \"##.###.###/####-##\",\n]);\n\n/**\n * Placa de veículo BR — detecta o formato pelo 5.º caractere:\n * - Antigo → ABC-1234 (posição 5 é dígito)\n * - Mercosul → ABC1D23 (posição 5 é letra)\n */\nexport const maskPlate: BitMask = {\n format(value: any): string {\n const raw = String(value ?? \"\")\n .replace(/[^a-zA-Z0-9]/g, \"\")\n .toUpperCase()\n .slice(0, 7);\n\n if (raw.length === 0) return \"\";\n\n const prefix = raw.slice(0, 3);\n const rest = raw.slice(3);\n\n if (rest.length === 0) return prefix;\n\n // Posição 5 (rest[1]): letra → Mercosul; dígito → formato antigo\n const isMercosul = rest.length >= 2 && /[A-Z]/.test(rest[1]);\n\n return isMercosul ? `${prefix}${rest}` : `${prefix}-${rest}`;\n },\n parse(value: string): string {\n return String(value ?? \"\")\n .replace(/[^a-zA-Z0-9]/g, \"\")\n .toUpperCase()\n .slice(0, 7);\n },\n};\n\n// ==========================================\n// 🇺🇸 PADRÕES AMERICANOS (USA)\n// ==========================================\n\n/** US Phone ((000) 000-0000) */\nexport const maskUSPhone = createPatternMask(\"(###) ###-####\");\n\n/** ZIP Code (00000 or 00000-0000) */\nexport const maskZipCode = createPatternMask(\"#####-####\");\n\n/** Date US (MM/DD/YYYY) - Igual ao BR, mas semântica diferente */\nexport const maskDateUS = createPatternMask(\"##/##/####\");\n\n/** SSN (Social Security Number) */\nexport const maskSSN = createPatternMask(\"###-##-####\");\n\n// ==========================================\n// 🌐 PADRÕES GLOBAIS / TÉCNICOS\n// ==========================================\n\n/** Cartão de Crédito Inteligente (Detecta Visa/Master, Amex e Diners) */\nexport const maskCreditCard = createCreditCardMask();\n\n/** CVV (3 ou 4 dígitos) */\nexport const maskCVV = createPatternMask(\"####\");\n\n/** Data ISO (Ideal para base de dados: YYYY-MM-DD) */\nexport const maskDateISO = createDateMask({\n format: \"YYYY-MM-DD\",\n saveRaw: true,\n guide: true,\n});\n\n/** Endereço MAC (HH:HH:HH:HH:HH:HH) - Usa o token Hexadecimal */\nexport const maskMacAddress = createPatternMask(\"HH:HH:HH:HH:HH:HH\");\n\n/** Cor Hexadecimal (#HHHHHH) */\nexport const maskColorHex = createPatternMask(\"#HHHHHH\");\n\n/** IPv4 (000.000.000.000) - Formato de blocos fixos */\nexport const maskIPv4 = createPatternMask(\"###.###.###.###\");\n\n/** IPv6 (HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH) */\nexport const maskIPv6 = createPatternMask(\n \"HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH\",\n);\n\n/** * IBAN Internacional\n * Força as duas primeiras letras para maiúsculas e agrupa de 4 em 4.\n * O tamanho máximo cobre os 34 caracteres do padrão IBAN.\n */\nexport const maskIBAN = createPatternMask(\n \"UU## XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX\",\n { allowChars: \" \" },\n);\n","export * from \"./types\";\nexport * from \"./creators\";\nexport * from \"./presets\";\nexport * from \"./field-binding\";\n\nimport * as presets from \"./presets\";\nimport type { BitMask, BitBuiltInMaskName } from \"./types\";\n\nexport const bitMasks: Record<BitBuiltInMaskName, BitMask> = {\n // Moedas\n brl: presets.maskBRL,\n usd: presets.maskUSD,\n eur: presets.maskEUR,\n gbp: presets.maskGBP,\n jpy: presets.maskJPY,\n // Números\n percent: presets.maskPercent,\n decimal: presets.maskDecimal,\n int: presets.maskInteger,\n integer: presets.maskInteger,\n // Documentos BR\n cpf: presets.maskCPF,\n cnpj: presets.maskCNPJ,\n cpfCnpj: presets.maskCPFCNPJ,\n rg: presets.maskRG,\n cep: presets.maskCEP,\n cnh: presets.maskCNH,\n plate: presets.maskPlate,\n // Comunicação/Data\n phone: presets.maskPhone,\n landline: presets.maskLandline,\n date: presets.maskDate,\n time: presets.maskTime,\n // USA\n usPhone: presets.maskUSPhone,\n zipCode: presets.maskZipCode,\n dateUS: presets.maskDateUS,\n ssn: presets.maskSSN,\n // Tech/Global\n cc: presets.maskCreditCard,\n cvv: presets.maskCVV,\n dateISO: presets.maskDateISO,\n ip: presets.maskIPv4,\n ipv6: presets.maskIPv6,\n mac: presets.maskMacAddress,\n color: presets.maskColorHex,\n iban: presets.maskIBAN,\n};\n"],"mappings":"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","names":["tokens","unmask","value","allowChars","stringValue","isNegative","escapedChars","regex","clean","unmaskCurrency","precision","digits","numberValue","createPatternMask","pattern","options","getRawLength","p","c","sortedPatterns","a","b","getActivePattern","rawValueLength","activePattern","candidate","formatValue","stringVal","showGuide","placeholder","masked","valueIndex","i","patternChar","token","dataChar","formatted","escapedPlaceholder","placeholderRegex","createCurrencyMask","prefix","suffix","thousand","decimal","allowNegative","saveRaw","formatFn","integerPart","decimalPart","formattedInteger","sign","numericValue","finalNumber","createCreditCardMask","getCardPattern","rawValue","createDateMask","config","isISO","baseMask","day","month","year","d","m","safeString","maskBRL","createCurrencyMask","maskUSD","maskEUR","maskGBP","maskJPY","maskPercent","maskDecimal","maskInteger","maskCPF","createPatternMask","maskCNPJ","maskPhone","maskLandline","maskCEP","maskDate","createDateMask","val","cleanVal","parts","maskTime","maskCNH","maskRG","maskCPFCNPJ","maskPlate","value","raw","prefix","rest","maskUSPhone","maskZipCode","maskDateUS","maskSSN","maskCreditCard","createCreditCardMask","maskCVV","maskDateISO","maskMacAddress","maskColorHex","maskIPv4","maskIPv6","maskIBAN","bitMasks","maskBRL","maskUSD","maskEUR","maskGBP","maskJPY","maskPercent","maskDecimal","maskInteger","maskCPF","maskCNPJ","maskCPFCNPJ","maskRG","maskCEP","maskCNH","maskPlate","maskPhone","maskLandline","maskDate","maskTime","maskUSPhone","maskZipCode","maskDateUS","maskSSN","maskCreditCard","maskCVV","maskDateISO","maskIPv4","maskIPv6","maskMacAddress","maskColorHex","maskIBAN"]}
@@ -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 _chunkMFSQATNZcjs = require('../chunk-MFSQATNZ.cjs');var _chunkIV32WXCFcjs = require('../chunk-IV32WXCF.cjs');require('../chunk-W5CLDRRE.cjs');require('../chunk-VZHG372Q.cjs');var _chunkMFTWAFMGcjs = require('../chunk-MFTWAFMG.cjs');require('../chunk-BSGJ3T5S.cjs');var _chunkD7JQWF6Vcjs = require('../chunk-D7JQWF6V.cjs');var _chunkM6WBNHITcjs = require('../chunk-M6WBNHIT.cjs');require('../chunk-T2JRSWQU.cjs');var _chunkPFPGASVZcjs = require('../chunk-PFPGASVZ.cjs');var _react = require('react');function y(e){let{fieldState:t,setBlur:n,store:a}=_chunkMFSQATNZcjs.d.call(void 0, e),{fieldController:r}=_react.useMemo.call(void 0, ()=>_chunkMFTWAFMGcjs.h.call(void 0, a,e),[a,e]),l=_react.useMemo.call(void 0, ()=>r.displayValue(t.value),[t.value,r]),u=_react.useCallback.call(void 0, i=>{r.setValue(i)},[r]),{value:o}=t,s=_chunkM6WBNHITcjs.c.call(void 0, t),p=_react.useCallback.call(void 0, i=>{let B=_chunkPFPGASVZcjs.a.call(void 0, i)?_optionalChain([i, 'access', _ => _.target, 'optionalAccess', _2 => _2.value]):i;u(B)},[u]),c=_react.useCallback.call(void 0, ()=>{n()},[n]);return{value:o,displayValue:l,setValue:u,setBlur:n,onChange:p,onBlur:c,props:{value:l,onChange:p,onBlur:c},meta:{error:s.error,touched:s.touched,invalid:s.invalid,isDirty:s.isDirty,isValidating:s.isValidating,isHidden:s.isHidden,isRequired:s.isRequired,hasError:s.hasError}}}function D(){let e=_chunkMFSQATNZcjs.b.call(void 0, ),t=_react.useRef.call(void 0, null),n=_react.useCallback.call(void 0, ()=>{let o=_chunkD7JQWF6Vcjs.f.call(void 0, e);return t.current&&t.current.canUndo===o.canUndo&&t.current.canRedo===o.canRedo&&t.current.historyIndex===o.historyIndex&&t.current.historySize===o.historySize?t.current:(t.current=o,o)},[e]),a=_react.useCallback.call(void 0, o=>e.observe.subscribeHistoryMeta(()=>o()),[e]),r=_react.useSyncExternalStore.call(void 0, a,n,n),l=_react.useCallback.call(void 0, ()=>{e.feature.undo()},[e]),u=_react.useCallback.call(void 0, ()=>{e.feature.redo()},[e]);return{...r,undo:l,redo:u}}function q(e,t,n){let a=_chunkMFSQATNZcjs.b.call(void 0, ),r=y(e),l=_react.useRef.call(void 0, null),[u,o]=_react.useState.call(void 0, !1),s={setLoading:o,setError:(i,B)=>a.write.setError(i,B),setValue:i=>r.setValue(i),getUploadKey:()=>l.current,setUploadKey:i=>{l.current=i}},p=_react.useCallback.call(void 0, _chunkIV32WXCFcjs.a.call(void 0, e,t,s),[t,r,e,a]),c=_react.useCallback.call(void 0, _chunkIV32WXCFcjs.b.call(void 0, e,n,s),[n,r,e,a]);return{value:r.value,setValue:r.setValue,error:_optionalChain([r, 'access', _3 => _3.meta, 'optionalAccess', _4 => _4.error]),isValidating:!!_optionalChain([r, 'access', _5 => _5.meta, 'optionalAccess', _6 => _6.isValidating])||u,upload:p,remove:c}}exports.BitFormProvider = _chunkMFSQATNZcjs.a; exports.useBitArray = _chunkMFSQATNZcjs.e; exports.useBitField = y; exports.useBitForm = _chunkMFSQATNZcjs.c; exports.useBitHistory = D; exports.useBitPersist = _chunkMFSQATNZcjs.i; exports.useBitScope = _chunkMFSQATNZcjs.f; exports.useBitSteps = _chunkMFSQATNZcjs.g; exports.useBitStore = _chunkMFSQATNZcjs.b; exports.useBitUpload = q; exports.useBitWatch = _chunkMFSQATNZcjs.h;
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 _chunkX5UCRGYJcjs = require('../chunk-X5UCRGYJ.cjs');var _chunkIV32WXCFcjs = require('../chunk-IV32WXCF.cjs');require('../chunk-W5CLDRRE.cjs');require('../chunk-J5ALITQW.cjs');var _chunkKDHPLXZFcjs = require('../chunk-KDHPLXZF.cjs');require('../chunk-BSGJ3T5S.cjs');var _chunkRHMJPKNVcjs = require('../chunk-RHMJPKNV.cjs');var _chunk3KI3GEU3cjs = require('../chunk-3KI3GEU3.cjs');require('../chunk-OLQVH24Z.cjs');require('../chunk-6LNXTSZ6.cjs');var _chunkPFPGASVZcjs = require('../chunk-PFPGASVZ.cjs');var _react = require('react');function y(e){let{fieldState:t,setBlur:n,store:a}=_chunkX5UCRGYJcjs.d.call(void 0, e),{fieldController:r}=_react.useMemo.call(void 0, ()=>_chunkKDHPLXZFcjs.h.call(void 0, a,e),[a,e]),l=_react.useMemo.call(void 0, ()=>r.displayValue(t.value),[t.value,r]),u=_react.useCallback.call(void 0, i=>{r.setValue(i)},[r]),{value:o}=t,s=_chunk3KI3GEU3cjs.a.call(void 0, t),p=_react.useCallback.call(void 0, i=>{let B=_chunkPFPGASVZcjs.a.call(void 0, i)?_optionalChain([i, 'access', _ => _.target, 'optionalAccess', _2 => _2.value]):i;u(B)},[u]),c=_react.useCallback.call(void 0, ()=>{n()},[n]);return{value:o,displayValue:l,setValue:u,setBlur:n,onChange:p,onBlur:c,props:{value:l,onChange:p,onBlur:c},meta:{error:s.error,touched:s.touched,invalid:s.invalid,isDirty:s.isDirty,isValidating:s.isValidating,isHidden:s.isHidden,isRequired:s.isRequired,hasError:s.hasError}}}function D(){let e=_chunkX5UCRGYJcjs.b.call(void 0, ),t=_react.useRef.call(void 0, null),n=_react.useCallback.call(void 0, ()=>{let o=_chunkRHMJPKNVcjs.f.call(void 0, e);return t.current&&t.current.canUndo===o.canUndo&&t.current.canRedo===o.canRedo&&t.current.historyIndex===o.historyIndex&&t.current.historySize===o.historySize?t.current:(t.current=o,o)},[e]),a=_react.useCallback.call(void 0, o=>e.observe.subscribeHistoryMeta(()=>o()),[e]),r=_react.useSyncExternalStore.call(void 0, a,n,n),l=_react.useCallback.call(void 0, ()=>{e.feature.undo()},[e]),u=_react.useCallback.call(void 0, ()=>{e.feature.redo()},[e]);return{...r,undo:l,redo:u}}function q(e,t,n){let a=_chunkX5UCRGYJcjs.b.call(void 0, ),r=y(e),l=_react.useRef.call(void 0, null),[u,o]=_react.useState.call(void 0, !1),s={setLoading:o,setError:(i,B)=>a.write.setError(i,B),setValue:i=>r.setValue(i),getUploadKey:()=>l.current,setUploadKey:i=>{l.current=i}},p=_react.useCallback.call(void 0, _chunkIV32WXCFcjs.a.call(void 0, e,t,s),[t,r,e,a]),c=_react.useCallback.call(void 0, _chunkIV32WXCFcjs.b.call(void 0, e,n,s),[n,r,e,a]);return{value:r.value,setValue:r.setValue,error:_optionalChain([r, 'access', _3 => _3.meta, 'optionalAccess', _4 => _4.error]),isValidating:!!_optionalChain([r, 'access', _5 => _5.meta, 'optionalAccess', _6 => _6.isValidating])||u,upload:p,remove:c}}exports.BitFormProvider = _chunkX5UCRGYJcjs.a; exports.useBitArray = _chunkX5UCRGYJcjs.e; exports.useBitField = y; exports.useBitForm = _chunkX5UCRGYJcjs.c; exports.useBitHistory = D; exports.useBitPersist = _chunkX5UCRGYJcjs.i; exports.useBitScope = _chunkX5UCRGYJcjs.f; exports.useBitSteps = _chunkX5UCRGYJcjs.g; exports.useBitStore = _chunkX5UCRGYJcjs.b; exports.useBitUpload = q; exports.useBitWatch = _chunkX5UCRGYJcjs.h;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/react/index.cjs","../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"names":["useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","setValue","useCallback","val","value","metaState","deriveFieldMeta","onChange","e","isBitFieldInputEventObject","onBlur","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","readHistoryMetaSnapshot","subscribe","cb","meta","useSyncExternalStore","undo","redo","useBitUpload","fieldPath","uploadFn","deleteFile","field","uploadKeyRef","isUploading","setIsUploading","useState","kernelCallbacks","msg","key","upload","createUploadHandler","remove","createRemoveHandler"],"mappings":"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","file":"/home/runner/work/bit-form/bit-form/dist/react/index.cjs","sourcesContent":[null,"import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport type {\n BitFieldInputEvent,\n UseBitFieldResult,\n} from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) => {\n fieldController.setValue(val);\n },\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n\n const onChange = useCallback(\n (e: BitFieldInputEvent) => {\n const val = isBitFieldInputEventObject(e) ? e.target?.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isDirty: metaState.isDirty,\n isValidating: metaState.isValidating,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { readHistoryMetaSnapshot, type HistoryMeta } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<HistoryMeta | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = readHistoryMetaSnapshot(store);\n\n if (\n lastMeta.current &&\n lastMeta.current.canUndo === nextMeta.canUndo &&\n lastMeta.current.canRedo === nextMeta.canRedo &&\n lastMeta.current.historyIndex === nextMeta.historyIndex &&\n lastMeta.current.historySize === nextMeta.historySize\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeHistoryMeta(() => cb()),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.feature.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.feature.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useCallback, useRef, useState } from \"react\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport { createUploadHandler, createRemoveHandler } from \"../core/adapters\";\nimport type { UseBitUploadResult } from \"./types\";\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n const kernelCallbacks = {\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n };\n\n const upload = useCallback(\n createUploadHandler(fieldPath, uploadFn, kernelCallbacks),\n [uploadFn, field, fieldPath, store],\n );\n\n const remove = useCallback(\n createRemoveHandler(fieldPath, deleteFile, kernelCallbacks),\n [deleteFile, field, fieldPath, store],\n );\n\n return {\n value: field.value,\n setValue: field.setValue,\n error: field.meta?.error,\n isValidating: !!field.meta?.isValidating || isUploading,\n upload,\n remove,\n };\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/react/index.cjs","../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"names":["useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","setValue","useCallback","val","value","metaState","deriveFieldMeta","onChange","e","isBitFieldInputEventObject","onBlur","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","readHistoryMetaSnapshot","subscribe","cb","meta","useSyncExternalStore","undo","redo","useBitUpload","fieldPath","uploadFn","deleteFile","field","uploadKeyRef","isUploading","setIsUploading","useState","kernelCallbacks","msg","key","upload","createUploadHandler","remove","createRemoveHandler"],"mappings":"AAAA,soBAAiG,yDAAiD,iCAA8B,iCAA8B,yDAA0C,iCAA8B,yDAA0C,yDAA0C,iCAA8B,iCAA8B,yDAA0C,8BCA3a,SAcrBA,CAAAA,CAGdC,CAAAA,CAAsC,CACtC,GAAM,CAAE,UAAA,CAAAC,CAAAA,CAAY,OAAA,CAAAC,CAAAA,CAAS,KAAA,CAAAC,CAAM,CAAA,CAAIC,iCAAAA,CAIjC,CAAA,CAEA,CAAE,eAAA,CAAAC,CAAgB,CAAA,CAAIC,4BAAAA,CAAQ,CAAA,EAC3BC,iCAAAA,CAAkCJ,CAAOH,CAAI,CAAA,CACnD,CAACG,CAAAA,CAAOH,CAAI,CAAC,CAAA,CAEVQ,CAAAA,CAAeF,4BAAAA,CACnB,CAAA,EAAMD,CAAAA,CAAgB,YAAA,CAAaJ,CAAAA,CAAW,KAAK,CAAA,CACnD,CAACA,CAAAA,CAAW,KAAA,CAAOI,CAAe,CACpC,CAAA,CAEMI,CAAAA,CAAWC,gCAAAA,CACdC,EAAqE,CACpEN,CAAAA,CAAgB,QAAA,CAASM,CAAG,CAC9B,CAAA,CACA,CAACN,CAAe,CAClB,CAAA,CAEM,CAAE,KAAA,CAAAO,CAAM,CAAA,CAAIX,CAAAA,CACZY,CAAAA,CAAYC,iCAAAA,CAA0B,CAAA,CAEtCC,CAAAA,CAAWL,gCAAAA,CACdM,EAA0B,CACzB,IAAML,CAAAA,CAAMM,iCAAAA,CAA4B,CAAA,iBAAID,CAAAA,mBAAE,MAAA,6BAAQ,OAAA,CAAQA,CAAAA,CAC9DP,CAAAA,CAASE,CAAG,CACd,CAAA,CACA,CAACF,CAAQ,CACX,CAAA,CAEMS,CAAAA,CAASR,gCAAAA,CAAY,CAAA,EAAM,CAC/BR,CAAAA,CAAQ,CACV,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZ,MAAO,CAEL,KAAA,CAAOU,CAAAA,CACP,YAAA,CAAAJ,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,OAAA,CAAAP,CAAAA,CACA,QAAA,CAAAa,CAAAA,CACA,MAAA,CAAAG,CAAAA,CAEA,KAAA,CAAO,CACL,KAAA,CAAOV,CAAAA,CACP,QAAA,CAAAO,CAAAA,CACA,MAAA,CAAAG,CACF,CAAA,CAEA,IAAA,CAAM,CACJ,KAAA,CAAOL,CAAAA,CAAU,KAAA,CACjB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,YAAA,CAAcA,CAAAA,CAAU,YAAA,CACxB,QAAA,CAAUA,CAAAA,CAAU,QAAA,CACpB,UAAA,CAAYA,CAAAA,CAAU,UAAA,CACtB,QAAA,CAAUA,CAAAA,CAAU,QACtB,CACF,CACF,CCjFA,SAKgBM,CAAAA,CAAAA,CAA6D,CAC3E,IAAMhB,CAAAA,CAAQiB,iCAAAA,CAAe,CACvBC,CAAAA,CAAWC,2BAAAA,IAA+B,CAAA,CAE1CC,CAAAA,CAAcb,gCAAAA,CAAY,CAAA,EAAM,CACpC,IAAMc,CAAAA,CAAWC,iCAAAA,CAA6B,CAAA,CAE9C,OACEJ,CAAAA,CAAS,OAAA,EACTA,CAAAA,CAAS,OAAA,CAAQ,OAAA,GAAYG,CAAAA,CAAS,OAAA,EACtCH,CAAAA,CAAS,OAAA,CAAQ,OAAA,GAAYG,CAAAA,CAAS,OAAA,EACtCH,CAAAA,CAAS,OAAA,CAAQ,YAAA,GAAiBG,CAAAA,CAAS,YAAA,EAC3CH,CAAAA,CAAS,OAAA,CAAQ,WAAA,GAAgBG,CAAAA,CAAS,WAAA,CAEnCH,CAAAA,CAAS,OAAA,CAAA,CAGlBA,CAAAA,CAAS,OAAA,CAAUG,CAAAA,CACZA,CAAAA,CACT,CAAA,CAAG,CAACrB,CAAK,CAAC,CAAA,CAEJuB,CAAAA,CAAYhB,gCAAAA,CACfiB,EAAmBxB,CAAAA,CAAM,OAAA,CAAQ,oBAAA,CAAqB,CAAA,CAAA,EAAMwB,CAAAA,CAAG,CAAC,CAAA,CACjE,CAACxB,CAAK,CACR,CAAA,CAEMyB,CAAAA,CAAOC,yCAAAA,CAAqBH,CAAWH,CAAAA,CAAaA,CAAW,CAAA,CAE/DO,CAAAA,CAAOpB,gCAAAA,CAAY,CAAA,EAAM,CAC7BP,CAAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,CACrB,CAAA,CAAG,CAACA,CAAK,CAAC,CAAA,CAEJ4B,CAAAA,CAAOrB,gCAAAA,CAAY,CAAA,EAAM,CAC7BP,CAAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,CACrB,CAAA,CAAG,CAACA,CAAK,CAAC,CAAA,CAEV,MAAO,CACL,GAAGyB,CAAAA,CACH,IAAA,CAAAE,CAAAA,CACA,IAAA,CAAAC,CACF,CACF,CCxBA,SAOgBC,CAAAA,CACdC,CAAAA,CACAC,CAAAA,CACAC,CAAAA,CACoB,CACpB,IAAMhC,CAAAA,CAAQiB,iCAAAA,CAAiB,CACzBgB,CAAAA,CAAQrC,CAAAA,CAAYkC,CAAS,CAAA,CAC7BI,CAAAA,CAAef,2BAAAA,IAA0B,CAAA,CACzC,CAACgB,CAAAA,CAAaC,CAAc,CAAA,CAAIC,6BAAAA,CAAS,CAAK,CAAA,CAE9CC,CAAAA,CAAkB,CACtB,UAAA,CAAYF,CAAAA,CACZ,QAAA,CAAU,CAACvC,CAAAA,CAAc0C,CAAAA,CAAAA,EACvBvC,CAAAA,CAAM,KAAA,CAAM,QAAA,CAASH,CAAAA,CAAM0C,CAAG,CAAA,CAChC,QAAA,CAAW/B,CAAAA,EAAuByB,CAAAA,CAAM,QAAA,CAASzB,CAAU,CAAA,CAC3D,YAAA,CAAc,CAAA,CAAA,EAAM0B,CAAAA,CAAa,OAAA,CACjC,YAAA,CAAeM,CAAAA,EAAuB,CACpCN,CAAAA,CAAa,OAAA,CAAUM,CACzB,CACF,CAAA,CAEMC,CAAAA,CAASlC,gCAAAA,iCACbmC,CAAoBZ,CAAWC,CAAAA,CAAUO,CAAe,CAAA,CACxD,CAACP,CAAAA,CAAUE,CAAAA,CAAOH,CAAAA,CAAW9B,CAAK,CACpC,CAAA,CAEM2C,CAAAA,CAASpC,gCAAAA,iCACbqC,CAAoBd,CAAWE,CAAAA,CAAYM,CAAe,CAAA,CAC1D,CAACN,CAAAA,CAAYC,CAAAA,CAAOH,CAAAA,CAAW9B,CAAK,CACtC,CAAA,CAEA,MAAO,CACL,KAAA,CAAOiC,CAAAA,CAAM,KAAA,CACb,QAAA,CAAUA,CAAAA,CAAM,QAAA,CAChB,KAAA,iBAAOA,CAAAA,qBAAM,IAAA,6BAAM,OAAA,CACnB,YAAA,CAAc,CAAC,iBAACA,CAAAA,qBAAM,IAAA,6BAAM,cAAA,EAAgBE,CAAAA,CAC5C,MAAA,CAAAM,CAAAA,CACA,MAAA,CAAAE,CACF,CACF,CAAA,0aAAA","file":"/home/runner/work/bit-form/bit-form/dist/react/index.cjs","sourcesContent":[null,"import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport type {\n BitFieldInputEvent,\n UseBitFieldResult,\n} from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) => {\n fieldController.setValue(val);\n },\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n\n const onChange = useCallback(\n (e: BitFieldInputEvent) => {\n const val = isBitFieldInputEventObject(e) ? e.target?.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isDirty: metaState.isDirty,\n isValidating: metaState.isValidating,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { readHistoryMetaSnapshot, type HistoryMeta } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<HistoryMeta | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = readHistoryMetaSnapshot(store);\n\n if (\n lastMeta.current &&\n lastMeta.current.canUndo === nextMeta.canUndo &&\n lastMeta.current.canRedo === nextMeta.canRedo &&\n lastMeta.current.historyIndex === nextMeta.historyIndex &&\n lastMeta.current.historySize === nextMeta.historySize\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeHistoryMeta(() => cb()),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.feature.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.feature.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useCallback, useRef, useState } from \"react\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport { createUploadHandler, createRemoveHandler } from \"../core/adapters\";\nimport type { UseBitUploadResult } from \"./types\";\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n const kernelCallbacks = {\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n };\n\n const upload = useCallback(\n createUploadHandler(fieldPath, uploadFn, kernelCallbacks),\n [uploadFn, field, fieldPath, store],\n );\n\n const remove = useCallback(\n createRemoveHandler(fieldPath, deleteFile, kernelCallbacks),\n [deleteFile, field, fieldPath, store],\n );\n\n return {\n value: field.value,\n setValue: field.setValue,\n error: field.meta?.error,\n isValidating: !!field.meta?.isValidating || isUploading,\n upload,\n remove,\n };\n}\n"]}
@@ -1,15 +1,15 @@
1
- import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-C2LHNTVv.cjs';
2
- export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, U as UseBitPersistResult, l as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-C2LHNTVv.cjs';
3
- import { u as BitPath } from '../types-D6LhF5GC.cjs';
4
- export { S as ScopeStatus, V as ValidateScopeResult } from '../types-D6LhF5GC.cjs';
5
- import '../bus-ZLQeq4Vr.cjs';
1
+ import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-CBTZIMc5.cjs';
2
+ export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, U as UseBitPersistResult, l as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-CBTZIMc5.cjs';
3
+ import { u as BitPath } from '../types-SOg9xEce.cjs';
4
+ export { S as ScopeStatus, V as ValidateScopeResult } from '../types-SOg9xEce.cjs';
5
+ import '../bus-WOHGxuVy.cjs';
6
6
  import { a as BitUploadFn, B as BitDeleteUploadFn } from '../upload-C2mpfhp1.cjs';
7
7
  import 'react/jsx-runtime';
8
8
  import 'react';
9
- import '../store-api-types-D-ZHxzRy.cjs';
9
+ import '../store-api-types-Bm3EAqR_.cjs';
10
10
  import '../types-D8DgIUhJ.cjs';
11
11
  import '../meta-types-Bzmm21TP.cjs';
12
- import '../array-controller-B5bfXV1W.cjs';
12
+ import '../array-controller-CtlqjA0e.cjs';
13
13
  import '../field-binding-B_OX3bjp.cjs';
14
14
 
15
15
  declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
@@ -1,15 +1,15 @@
1
- import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-BTwy8kvA.js';
2
- export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, U as UseBitPersistResult, l as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-BTwy8kvA.js';
3
- import { u as BitPath } from '../types-CG5nYeRk.js';
4
- export { S as ScopeStatus, V as ValidateScopeResult } from '../types-CG5nYeRk.js';
5
- import '../bus-B2VEKrPI.js';
1
+ import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-BDMZmxBh.js';
2
+ export { B as BitFormProvider, j as UseBitFieldBindProps, k as UseBitFieldMeta, U as UseBitPersistResult, l as UseBitStepsResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-BDMZmxBh.js';
3
+ import { u as BitPath } from '../types-CRCP4Pgq.js';
4
+ export { S as ScopeStatus, V as ValidateScopeResult } from '../types-CRCP4Pgq.js';
5
+ import '../bus-BKuMV3E7.js';
6
6
  import { a as BitUploadFn, B as BitDeleteUploadFn } from '../upload-C2mpfhp1.js';
7
7
  import 'react/jsx-runtime';
8
8
  import 'react';
9
- import '../store-api-types-DPi30jQF.js';
9
+ import '../store-api-types-DfTFy2h4.js';
10
10
  import '../types-D8DgIUhJ.js';
11
11
  import '../meta-types-Bzmm21TP.js';
12
- import '../array-controller-Cx-DMH7Y.js';
12
+ import '../array-controller-C61ByyG6.js';
13
13
  import '../field-binding-MX6jVQbT.js';
14
14
 
15
15
  declare function useBitField<TForm extends object = any, P extends BitPath<TForm> = BitPath<TForm>>(path: P): UseBitFieldResult<TForm, P>;
@@ -1,2 +1,2 @@
1
- import{a as b,b as d,c as h,d as R,e as H,f as M,g as T,h as E,i as k}from"../chunk-CPP7ELA5.js";import{a as g,b as S}from"../chunk-O5UPA33R.js";import"../chunk-5NA2TFPG.js";import"../chunk-UQ3DSUWC.js";import{h as x}from"../chunk-E2NZR44P.js";import"../chunk-W2E5UIXT.js";import{f as U}from"../chunk-EQ55DKX2.js";import{c as v}from"../chunk-63OJBMKK.js";import"../chunk-RD73EBSN.js";import{a as F}from"../chunk-3NUJVIAM.js";import{useMemo as V,useCallback as f}from"react";function y(e){let{fieldState:t,setBlur:n,store:a}=R(e),{fieldController:r}=V(()=>x(a,e),[a,e]),l=V(()=>r.displayValue(t.value),[t.value,r]),u=f(i=>{r.setValue(i)},[r]),{value:o}=t,s=v(t),p=f(i=>{let B=F(i)?i.target?.value:i;u(B)},[u]),c=f(()=>{n()},[n]);return{value:o,displayValue:l,setValue:u,setBlur:n,onChange:p,onBlur:c,props:{value:l,onChange:p,onBlur:c},meta:{error:s.error,touched:s.touched,invalid:s.invalid,isDirty:s.isDirty,isValidating:s.isValidating,isHidden:s.isHidden,isRequired:s.isRequired,hasError:s.hasError}}}import{useCallback as m,useRef as C,useSyncExternalStore as I}from"react";function D(){let e=d(),t=C(null),n=m(()=>{let o=U(e);return t.current&&t.current.canUndo===o.canUndo&&t.current.canRedo===o.canRedo&&t.current.historyIndex===o.historyIndex&&t.current.historySize===o.historySize?t.current:(t.current=o,o)},[e]),a=m(o=>e.observe.subscribeHistoryMeta(()=>o()),[e]),r=I(a,n,n),l=m(()=>{e.feature.undo()},[e]),u=m(()=>{e.feature.redo()},[e]);return{...r,undo:l,redo:u}}import{useCallback as P,useRef as j,useState as K}from"react";function q(e,t,n){let a=d(),r=y(e),l=j(null),[u,o]=K(!1),s={setLoading:o,setError:(i,B)=>a.write.setError(i,B),setValue:i=>r.setValue(i),getUploadKey:()=>l.current,setUploadKey:i=>{l.current=i}},p=P(g(e,t,s),[t,r,e,a]),c=P(S(e,n,s),[n,r,e,a]);return{value:r.value,setValue:r.setValue,error:r.meta?.error,isValidating:!!r.meta?.isValidating||u,upload:p,remove:c}}export{b as BitFormProvider,H as useBitArray,y as useBitField,h as useBitForm,D as useBitHistory,k as useBitPersist,M as useBitScope,T as useBitSteps,d as useBitStore,q as useBitUpload,E as useBitWatch};
1
+ import{a as b,b as d,c as h,d as R,e as H,f as M,g as T,h as E,i as k}from"../chunk-J5GQLEVA.js";import{a as g,b as S}from"../chunk-O5UPA33R.js";import"../chunk-5NA2TFPG.js";import"../chunk-UARLAXZX.js";import{h as x}from"../chunk-Y3XVQGCU.js";import"../chunk-W2E5UIXT.js";import{f as U}from"../chunk-UIKO6GGW.js";import{a as v}from"../chunk-ICYXODTQ.js";import"../chunk-2QLQPMCZ.js";import"../chunk-QX2IVNMK.js";import{a as F}from"../chunk-3NUJVIAM.js";import{useMemo as V,useCallback as f}from"react";function y(e){let{fieldState:t,setBlur:n,store:a}=R(e),{fieldController:r}=V(()=>x(a,e),[a,e]),l=V(()=>r.displayValue(t.value),[t.value,r]),u=f(i=>{r.setValue(i)},[r]),{value:o}=t,s=v(t),p=f(i=>{let B=F(i)?i.target?.value:i;u(B)},[u]),c=f(()=>{n()},[n]);return{value:o,displayValue:l,setValue:u,setBlur:n,onChange:p,onBlur:c,props:{value:l,onChange:p,onBlur:c},meta:{error:s.error,touched:s.touched,invalid:s.invalid,isDirty:s.isDirty,isValidating:s.isValidating,isHidden:s.isHidden,isRequired:s.isRequired,hasError:s.hasError}}}import{useCallback as m,useRef as C,useSyncExternalStore as I}from"react";function D(){let e=d(),t=C(null),n=m(()=>{let o=U(e);return t.current&&t.current.canUndo===o.canUndo&&t.current.canRedo===o.canRedo&&t.current.historyIndex===o.historyIndex&&t.current.historySize===o.historySize?t.current:(t.current=o,o)},[e]),a=m(o=>e.observe.subscribeHistoryMeta(()=>o()),[e]),r=I(a,n,n),l=m(()=>{e.feature.undo()},[e]),u=m(()=>{e.feature.redo()},[e]);return{...r,undo:l,redo:u}}import{useCallback as P,useRef as j,useState as K}from"react";function q(e,t,n){let a=d(),r=y(e),l=j(null),[u,o]=K(!1),s={setLoading:o,setError:(i,B)=>a.write.setError(i,B),setValue:i=>r.setValue(i),getUploadKey:()=>l.current,setUploadKey:i=>{l.current=i}},p=P(g(e,t,s),[t,r,e,a]),c=P(S(e,n,s),[n,r,e,a]);return{value:r.value,setValue:r.setValue,error:r.meta?.error,isValidating:!!r.meta?.isValidating||u,upload:p,remove:c}}export{b as BitFormProvider,H as useBitArray,y as useBitField,h as useBitForm,D as useBitHistory,k as useBitPersist,M as useBitScope,T as useBitSteps,d as useBitStore,q as useBitUpload,E as useBitWatch};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"sourcesContent":["import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport type {\n BitFieldInputEvent,\n UseBitFieldResult,\n} from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) => {\n fieldController.setValue(val);\n },\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n\n const onChange = useCallback(\n (e: BitFieldInputEvent) => {\n const val = isBitFieldInputEventObject(e) ? e.target?.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isDirty: metaState.isDirty,\n isValidating: metaState.isValidating,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { readHistoryMetaSnapshot, type HistoryMeta } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<HistoryMeta | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = readHistoryMetaSnapshot(store);\n\n if (\n lastMeta.current &&\n lastMeta.current.canUndo === nextMeta.canUndo &&\n lastMeta.current.canRedo === nextMeta.canRedo &&\n lastMeta.current.historyIndex === nextMeta.historyIndex &&\n lastMeta.current.historySize === nextMeta.historySize\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeHistoryMeta(() => cb()),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.feature.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.feature.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useCallback, useRef, useState } from \"react\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport { createUploadHandler, createRemoveHandler } from \"../core/adapters\";\nimport type { UseBitUploadResult } from \"./types\";\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n const kernelCallbacks = {\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n };\n\n const upload = useCallback(\n createUploadHandler(fieldPath, uploadFn, kernelCallbacks),\n [uploadFn, field, fieldPath, store],\n );\n\n const remove = useCallback(\n createRemoveHandler(fieldPath, deleteFile, kernelCallbacks),\n [deleteFile, field, fieldPath, store],\n );\n\n return {\n value: field.value,\n setValue: field.setValue,\n error: field.meta?.error,\n isValidating: !!field.meta?.isValidating || isUploading,\n upload,\n remove,\n };\n}\n"],"mappings":"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","names":["useMemo","useCallback","useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","setValue","useCallback","val","value","metaState","deriveFieldMeta","onChange","e","isBitFieldInputEventObject","onBlur","useCallback","useRef","useSyncExternalStore","useBitHistory","store","useBitStore","lastMeta","useRef","getSnapshot","useCallback","nextMeta","readHistoryMetaSnapshot","subscribe","cb","meta","useSyncExternalStore","undo","redo","useCallback","useRef","useState","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKeyRef","useRef","isUploading","setIsUploading","useState","kernelCallbacks","path","msg","val","key","upload","useCallback","createUploadHandler","remove","createRemoveHandler"]}
1
+ {"version":3,"sources":["../../src/react/use-bit-field.ts","../../src/react/use-bit-history.ts","../../src/react/use-bit-upload.ts"],"sourcesContent":["import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n isBitFieldInputEventObject,\n} from \"../core\";\nimport type {\n BitFieldInputEvent,\n UseBitFieldResult,\n} from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) => {\n fieldController.setValue(val);\n },\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n\n const onChange = useCallback(\n (e: BitFieldInputEvent) => {\n const val = isBitFieldInputEventObject(e) ? e.target?.value : e;\n setValue(val);\n },\n [setValue],\n );\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n // Main handlers and values (flat)\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChange,\n onBlur,\n // Props helper\n props: {\n value: displayValue,\n onChange,\n onBlur,\n },\n // Metadata (grouped)\n meta: {\n error: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isDirty: metaState.isDirty,\n isValidating: metaState.isValidating,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { readHistoryMetaSnapshot, type HistoryMeta } from \"../core\";\nimport { useBitStore } from \"./context\";\nimport type { UseBitHistoryResult } from \"./types\";\n\nexport function useBitHistory<T extends object = any>(): UseBitHistoryResult {\n const store = useBitStore<T>();\n const lastMeta = useRef<HistoryMeta | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = readHistoryMetaSnapshot(store);\n\n if (\n lastMeta.current &&\n lastMeta.current.canUndo === nextMeta.canUndo &&\n lastMeta.current.canRedo === nextMeta.canRedo &&\n lastMeta.current.historyIndex === nextMeta.historyIndex &&\n lastMeta.current.historySize === nextMeta.historySize\n ) {\n return lastMeta.current;\n }\n\n lastMeta.current = nextMeta;\n return nextMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.observe.subscribeHistoryMeta(() => cb()),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.feature.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.feature.redo();\n }, [store]);\n\n return {\n ...meta,\n undo,\n redo,\n };\n}\n","/**\n * React Hook for File Upload Integration\n *\n * Minimal upload API integrated with global field validation lifecycle.\n *\n * @example\n * ```typescript\n * const avatar = useBitUpload(\"avatar\", uploadFn);\n *\n * return (\n * <>\n * <input\n * type=\"file\"\n * onChange={(e) => avatar.upload(e.target.files?.[0])}\n * disabled={avatar.isValidating}\n * />\n * {avatar.error && <Error>{avatar.error}</Error>}\n * </>\n * );\n * ```\n */\n\nimport { useCallback, useRef, useState } from \"react\";\nimport { useBitField } from \"./use-bit-field\";\nimport { useBitStore } from \"./context\";\nimport { BitUploadFn, BitDeleteUploadFn } from \"../core\";\nimport { createUploadHandler, createRemoveHandler } from \"../core/adapters\";\nimport type { UseBitUploadResult } from \"./types\";\n\nexport function useBitUpload(\n fieldPath: string,\n uploadFn: BitUploadFn,\n deleteFile?: BitDeleteUploadFn,\n): UseBitUploadResult {\n const store = useBitStore<any>();\n const field = useBitField(fieldPath);\n const uploadKeyRef = useRef<string | null>(null);\n const [isUploading, setIsUploading] = useState(false);\n\n const kernelCallbacks = {\n setLoading: setIsUploading,\n setError: (path: string, msg: string | undefined) =>\n store.write.setError(path, msg),\n setValue: (val: string | null) => field.setValue(val as any),\n getUploadKey: () => uploadKeyRef.current,\n setUploadKey: (key: string | null) => {\n uploadKeyRef.current = key;\n },\n };\n\n const upload = useCallback(\n createUploadHandler(fieldPath, uploadFn, kernelCallbacks),\n [uploadFn, field, fieldPath, store],\n );\n\n const remove = useCallback(\n createRemoveHandler(fieldPath, deleteFile, kernelCallbacks),\n [deleteFile, field, fieldPath, store],\n );\n\n return {\n value: field.value,\n setValue: field.setValue,\n error: field.meta?.error,\n isValidating: !!field.meta?.isValidating || isUploading,\n upload,\n remove,\n };\n}\n"],"mappings":"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","names":["useMemo","useCallback","useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","setValue","useCallback","val","value","metaState","deriveFieldMeta","onChange","e","isBitFieldInputEventObject","onBlur","useCallback","useRef","useSyncExternalStore","useBitHistory","store","useBitStore","lastMeta","useRef","getSnapshot","useCallback","nextMeta","readHistoryMetaSnapshot","subscribe","cb","meta","useSyncExternalStore","undo","redo","useCallback","useRef","useState","useBitUpload","fieldPath","uploadFn","deleteFile","store","useBitStore","field","useBitField","uploadKeyRef","useRef","isUploading","setIsUploading","useState","kernelCallbacks","path","msg","val","key","upload","useCallback","createUploadHandler","remove","createRemoveHandler"]}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkMFSQATNZcjs = require('../chunk-MFSQATNZ.cjs');require('../chunk-W5CLDRRE.cjs');require('../chunk-VZHG372Q.cjs');var _chunkMFTWAFMGcjs = require('../chunk-MFTWAFMG.cjs');require('../chunk-BSGJ3T5S.cjs');require('../chunk-D7JQWF6V.cjs');var _chunkM6WBNHITcjs = require('../chunk-M6WBNHIT.cjs');require('../chunk-T2JRSWQU.cjs');require('../chunk-PFPGASVZ.cjs');var _react = require('react');function g(i){let{fieldState:r,setBlur:o,store:l}=_chunkMFSQATNZcjs.d.call(void 0, i),{fieldController:t}=_react.useMemo.call(void 0, ()=>_chunkMFTWAFMGcjs.h.call(void 0, l,i),[l,i]),u=_react.useMemo.call(void 0, ()=>t.displayValue(r.value),[r.value,t]),d=_react.useCallback.call(void 0, s=>t.setValue(s),[t]),F=_react.useCallback.call(void 0, s=>t.setValue(s),[t]),{value:f}=r,e=_chunkM6WBNHITcjs.c.call(void 0, r),n=_react.useCallback.call(void 0, ()=>{o()},[o]);return{value:f,displayValue:u,setValue:F,setBlur:o,onChangeText:d,onBlur:n,meta:{error:e.error,touched:e.touched,invalid:e.invalid,isValidating:e.isValidating,isDirty:e.isDirty,isHidden:e.isHidden,isRequired:e.isRequired,hasError:e.hasError},props:{value:u,onChangeText:d,onBlur:n}}}exports.BitFormProvider = _chunkMFSQATNZcjs.a; exports.useBitArray = _chunkMFSQATNZcjs.e; exports.useBitField = g; exports.useBitForm = _chunkMFSQATNZcjs.c; exports.useBitPersist = _chunkMFSQATNZcjs.i; exports.useBitScope = _chunkMFSQATNZcjs.f; exports.useBitSteps = _chunkMFSQATNZcjs.g; exports.useBitStore = _chunkMFSQATNZcjs.b; exports.useBitWatch = _chunkMFSQATNZcjs.h;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkX5UCRGYJcjs = require('../chunk-X5UCRGYJ.cjs');require('../chunk-W5CLDRRE.cjs');require('../chunk-J5ALITQW.cjs');var _chunkKDHPLXZFcjs = require('../chunk-KDHPLXZF.cjs');require('../chunk-BSGJ3T5S.cjs');require('../chunk-RHMJPKNV.cjs');var _chunk3KI3GEU3cjs = require('../chunk-3KI3GEU3.cjs');require('../chunk-OLQVH24Z.cjs');require('../chunk-6LNXTSZ6.cjs');require('../chunk-PFPGASVZ.cjs');var _react = require('react');function g(i){let{fieldState:r,setBlur:o,store:l}=_chunkX5UCRGYJcjs.d.call(void 0, i),{fieldController:t}=_react.useMemo.call(void 0, ()=>_chunkKDHPLXZFcjs.h.call(void 0, l,i),[l,i]),u=_react.useMemo.call(void 0, ()=>t.displayValue(r.value),[r.value,t]),d=_react.useCallback.call(void 0, s=>t.setValue(s),[t]),F=_react.useCallback.call(void 0, s=>t.setValue(s),[t]),{value:f}=r,e=_chunk3KI3GEU3cjs.a.call(void 0, r),n=_react.useCallback.call(void 0, ()=>{o()},[o]);return{value:f,displayValue:u,setValue:F,setBlur:o,onChangeText:d,onBlur:n,meta:{error:e.error,touched:e.touched,invalid:e.invalid,isValidating:e.isValidating,isDirty:e.isDirty,isHidden:e.isHidden,isRequired:e.isRequired,hasError:e.hasError},props:{value:u,onChangeText:d,onBlur:n}}}exports.BitFormProvider = _chunkX5UCRGYJcjs.a; exports.useBitArray = _chunkX5UCRGYJcjs.e; exports.useBitField = g; exports.useBitForm = _chunkX5UCRGYJcjs.c; exports.useBitPersist = _chunkX5UCRGYJcjs.i; exports.useBitScope = _chunkX5UCRGYJcjs.f; exports.useBitSteps = _chunkX5UCRGYJcjs.g; exports.useBitStore = _chunkX5UCRGYJcjs.b; exports.useBitWatch = _chunkX5UCRGYJcjs.h;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/react-native/index.cjs","../../src/react-native/use-bit-field.ts"],"names":["useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","handleChange","useCallback","text","setValue","val","value","metaState","deriveFieldMeta","onBlur"],"mappings":"AAAA,kIAAiG,iCAA8B,iCAA8B,yDAA0C,iCAA8B,iCAA8B,yDAA0C,iCAA8B,iCAA8B,8BCApU,SAUrBA,CAAAA,CAGdC,CAAAA,CAA4C,CAC5C,GAAM,CAAE,UAAA,CAAAC,CAAAA,CAAY,OAAA,CAAAC,CAAAA,CAAS,KAAA,CAAAC,CAAM,CAAA,CAAIC,iCAAAA,CAIjC,CAAA,CAEA,CAAE,eAAA,CAAAC,CAAgB,CAAA,CAAIC,4BAAAA,CAAQ,CAAA,EAC3BC,iCAAAA,CAAkCJ,CAAOH,CAAI,CAAA,CACnD,CAACG,CAAAA,CAAOH,CAAI,CAAC,CAAA,CAEVQ,CAAAA,CAAeF,4BAAAA,CACnB,CAAA,EAAMD,CAAAA,CAAgB,YAAA,CAAaJ,CAAAA,CAAW,KAAK,CAAA,CACnD,CAACA,CAAAA,CAAW,KAAA,CAAOI,CAAe,CACpC,CAAA,CAEMI,CAAAA,CAAeC,gCAAAA,CAClBC,EAAiBN,CAAAA,CAAgB,QAAA,CAASM,CAAI,CAAA,CAC/C,CAACN,CAAe,CAClB,CAAA,CAEMO,CAAAA,CAAWF,gCAAAA,CACdG,EAAaR,CAAAA,CAAgB,QAAA,CAASQ,CAAG,CAAA,CAC1C,CAACR,CAAe,CAClB,CAAA,CAEM,CAAE,KAAA,CAAAS,CAAM,CAAA,CAAIb,CAAAA,CACZc,CAAAA,CAAYC,iCAAAA,CAA0B,CAAA,CAEtCC,CAAAA,CAASP,gCAAAA,CAAY,CAAA,EAAM,CAC/BR,CAAAA,CAAQ,CACV,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZ,MAAO,CACL,KAAA,CAAOY,CAAAA,CACP,YAAA,CAAAN,CAAAA,CACA,QAAA,CAAAI,CAAAA,CACA,OAAA,CAAAV,CAAAA,CACA,YAAA,CAAcO,CAAAA,CACd,MAAA,CAAAQ,CAAAA,CACA,IAAA,CAAM,CACJ,KAAA,CAAOF,CAAAA,CAAU,KAAA,CACjB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,YAAA,CAAcA,CAAAA,CAAU,YAAA,CACxB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,QAAA,CAAUA,CAAAA,CAAU,QAAA,CACpB,UAAA,CAAYA,CAAAA,CAAU,UAAA,CACtB,QAAA,CAAUA,CAAAA,CAAU,QACtB,CAAA,CACA,KAAA,CAAO,CACL,KAAA,CAAOP,CAAAA,CACP,YAAA,CAAcC,CAAAA,CACd,MAAA,CAAAQ,CACF,CACF,CACF,CAAA,qXAAA","file":"/home/runner/work/bit-form/bit-form/dist/react-native/index.cjs","sourcesContent":[null,"import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"../react/use-bit-field-base\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n} from \"../core\";\nimport type { UseBitFieldNativeResult } from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldNativeResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const handleChange = useCallback(\n (text: string) => fieldController.setValue(text),\n [fieldController],\n );\n\n const setValue = useCallback(\n (val: any) => fieldController.setValue(val),\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChangeText: handleChange,\n onBlur,\n meta: {\n error: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isValidating: metaState.isValidating,\n isDirty: metaState.isDirty,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n },\n props: {\n value: displayValue,\n onChangeText: handleChange,\n onBlur,\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/react-native/index.cjs","../../src/react-native/use-bit-field.ts"],"names":["useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","handleChange","useCallback","text","setValue","val","value","metaState","deriveFieldMeta","onBlur"],"mappings":"AAAA,kIAAiG,iCAA8B,iCAA8B,yDAA0C,iCAA8B,iCAA8B,yDAA0C,iCAA8B,iCAA8B,iCAA8B,8BCAlW,SAUrBA,CAAAA,CAGdC,CAAAA,CAA4C,CAC5C,GAAM,CAAE,UAAA,CAAAC,CAAAA,CAAY,OAAA,CAAAC,CAAAA,CAAS,KAAA,CAAAC,CAAM,CAAA,CAAIC,iCAAAA,CAIjC,CAAA,CAEA,CAAE,eAAA,CAAAC,CAAgB,CAAA,CAAIC,4BAAAA,CAAQ,CAAA,EAC3BC,iCAAAA,CAAkCJ,CAAOH,CAAI,CAAA,CACnD,CAACG,CAAAA,CAAOH,CAAI,CAAC,CAAA,CAEVQ,CAAAA,CAAeF,4BAAAA,CACnB,CAAA,EAAMD,CAAAA,CAAgB,YAAA,CAAaJ,CAAAA,CAAW,KAAK,CAAA,CACnD,CAACA,CAAAA,CAAW,KAAA,CAAOI,CAAe,CACpC,CAAA,CAEMI,CAAAA,CAAeC,gCAAAA,CAClBC,EAAiBN,CAAAA,CAAgB,QAAA,CAASM,CAAI,CAAA,CAC/C,CAACN,CAAe,CAClB,CAAA,CAEMO,CAAAA,CAAWF,gCAAAA,CACdG,EAAaR,CAAAA,CAAgB,QAAA,CAASQ,CAAG,CAAA,CAC1C,CAACR,CAAe,CAClB,CAAA,CAEM,CAAE,KAAA,CAAAS,CAAM,CAAA,CAAIb,CAAAA,CACZc,CAAAA,CAAYC,iCAAAA,CAA0B,CAAA,CAEtCC,CAAAA,CAASP,gCAAAA,CAAY,CAAA,EAAM,CAC/BR,CAAAA,CAAQ,CACV,CAAA,CAAG,CAACA,CAAO,CAAC,CAAA,CAEZ,MAAO,CACL,KAAA,CAAOY,CAAAA,CACP,YAAA,CAAAN,CAAAA,CACA,QAAA,CAAAI,CAAAA,CACA,OAAA,CAAAV,CAAAA,CACA,YAAA,CAAcO,CAAAA,CACd,MAAA,CAAAQ,CAAAA,CACA,IAAA,CAAM,CACJ,KAAA,CAAOF,CAAAA,CAAU,KAAA,CACjB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,YAAA,CAAcA,CAAAA,CAAU,YAAA,CACxB,OAAA,CAASA,CAAAA,CAAU,OAAA,CACnB,QAAA,CAAUA,CAAAA,CAAU,QAAA,CACpB,UAAA,CAAYA,CAAAA,CAAU,UAAA,CACtB,QAAA,CAAUA,CAAAA,CAAU,QACtB,CAAA,CACA,KAAA,CAAO,CACL,KAAA,CAAOP,CAAAA,CACP,YAAA,CAAcC,CAAAA,CACd,MAAA,CAAAQ,CACF,CACF,CACF,CAAA,qXAAA","file":"/home/runner/work/bit-form/bit-form/dist/react-native/index.cjs","sourcesContent":[null,"import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"../react/use-bit-field-base\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n} from \"../core\";\nimport type { UseBitFieldNativeResult } from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldNativeResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const handleChange = useCallback(\n (text: string) => fieldController.setValue(text),\n [fieldController],\n );\n\n const setValue = useCallback(\n (val: any) => fieldController.setValue(val),\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChangeText: handleChange,\n onBlur,\n meta: {\n error: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isValidating: metaState.isValidating,\n isDirty: metaState.isDirty,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n },\n props: {\n value: displayValue,\n onChangeText: handleChange,\n onBlur,\n },\n };\n}\n"]}
@@ -1,13 +1,13 @@
1
- export { B as BitFormProvider, U as UseBitPersistResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-C2LHNTVv.cjs';
2
- import { u as BitPath, v as BitPathValue } from '../types-D6LhF5GC.cjs';
3
- export { S as ScopeStatus, V as ValidateScopeResult } from '../types-D6LhF5GC.cjs';
4
- import '../bus-ZLQeq4Vr.cjs';
1
+ export { B as BitFormProvider, U as UseBitPersistResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-CBTZIMc5.cjs';
2
+ import { u as BitPath, v as BitPathValue } from '../types-SOg9xEce.cjs';
3
+ export { S as ScopeStatus, V as ValidateScopeResult } from '../types-SOg9xEce.cjs';
4
+ import '../bus-WOHGxuVy.cjs';
5
5
  import 'react/jsx-runtime';
6
6
  import 'react';
7
- import '../store-api-types-D-ZHxzRy.cjs';
7
+ import '../store-api-types-Bm3EAqR_.cjs';
8
8
  import '../types-D8DgIUhJ.cjs';
9
9
  import '../meta-types-Bzmm21TP.cjs';
10
- import '../array-controller-B5bfXV1W.cjs';
10
+ import '../array-controller-CtlqjA0e.cjs';
11
11
  import '../field-binding-B_OX3bjp.cjs';
12
12
 
13
13
  /**
@@ -1,13 +1,13 @@
1
- export { B as BitFormProvider, U as UseBitPersistResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-BTwy8kvA.js';
2
- import { u as BitPath, v as BitPathValue } from '../types-CG5nYeRk.js';
3
- export { S as ScopeStatus, V as ValidateScopeResult } from '../types-CG5nYeRk.js';
4
- import '../bus-B2VEKrPI.js';
1
+ export { B as BitFormProvider, U as UseBitPersistResult, u as useBitArray, a as useBitForm, b as useBitPersist, c as useBitScope, d as useBitSteps, e as useBitStore, f as useBitWatch } from '../use-bit-persist-BDMZmxBh.js';
2
+ import { u as BitPath, v as BitPathValue } from '../types-CRCP4Pgq.js';
3
+ export { S as ScopeStatus, V as ValidateScopeResult } from '../types-CRCP4Pgq.js';
4
+ import '../bus-BKuMV3E7.js';
5
5
  import 'react/jsx-runtime';
6
6
  import 'react';
7
- import '../store-api-types-DPi30jQF.js';
7
+ import '../store-api-types-DfTFy2h4.js';
8
8
  import '../types-D8DgIUhJ.js';
9
9
  import '../meta-types-Bzmm21TP.js';
10
- import '../array-controller-Cx-DMH7Y.js';
10
+ import '../array-controller-C61ByyG6.js';
11
11
  import '../field-binding-MX6jVQbT.js';
12
12
 
13
13
  /**
@@ -1,2 +1,2 @@
1
- import{a as x,b as P,c as v,d as B,e as y,f as h,g as V,h as T,i as S}from"../chunk-CPP7ELA5.js";import"../chunk-5NA2TFPG.js";import"../chunk-UQ3DSUWC.js";import{h as m}from"../chunk-E2NZR44P.js";import"../chunk-W2E5UIXT.js";import"../chunk-EQ55DKX2.js";import{c as p}from"../chunk-63OJBMKK.js";import"../chunk-RD73EBSN.js";import"../chunk-3NUJVIAM.js";import{useMemo as c,useCallback as a}from"react";function g(i){let{fieldState:r,setBlur:o,store:l}=B(i),{fieldController:t}=c(()=>m(l,i),[l,i]),u=c(()=>t.displayValue(r.value),[r.value,t]),d=a(s=>t.setValue(s),[t]),F=a(s=>t.setValue(s),[t]),{value:f}=r,e=p(r),n=a(()=>{o()},[o]);return{value:f,displayValue:u,setValue:F,setBlur:o,onChangeText:d,onBlur:n,meta:{error:e.error,touched:e.touched,invalid:e.invalid,isValidating:e.isValidating,isDirty:e.isDirty,isHidden:e.isHidden,isRequired:e.isRequired,hasError:e.hasError},props:{value:u,onChangeText:d,onBlur:n}}}export{x as BitFormProvider,y as useBitArray,g as useBitField,v as useBitForm,S as useBitPersist,h as useBitScope,V as useBitSteps,P as useBitStore,T as useBitWatch};
1
+ import{a as x,b as P,c as v,d as B,e as y,f as h,g as V,h as T,i as S}from"../chunk-J5GQLEVA.js";import"../chunk-5NA2TFPG.js";import"../chunk-UARLAXZX.js";import{h as m}from"../chunk-Y3XVQGCU.js";import"../chunk-W2E5UIXT.js";import"../chunk-UIKO6GGW.js";import{a as p}from"../chunk-ICYXODTQ.js";import"../chunk-2QLQPMCZ.js";import"../chunk-QX2IVNMK.js";import"../chunk-3NUJVIAM.js";import{useMemo as c,useCallback as a}from"react";function g(i){let{fieldState:r,setBlur:o,store:l}=B(i),{fieldController:t}=c(()=>m(l,i),[l,i]),u=c(()=>t.displayValue(r.value),[r.value,t]),d=a(s=>t.setValue(s),[t]),F=a(s=>t.setValue(s),[t]),{value:f}=r,e=p(r),n=a(()=>{o()},[o]);return{value:f,displayValue:u,setValue:F,setBlur:o,onChangeText:d,onBlur:n,meta:{error:e.error,touched:e.touched,invalid:e.invalid,isValidating:e.isValidating,isDirty:e.isDirty,isHidden:e.isHidden,isRequired:e.isRequired,hasError:e.hasError},props:{value:u,onChangeText:d,onBlur:n}}}export{x as BitFormProvider,y as useBitArray,g as useBitField,v as useBitForm,S as useBitPersist,h as useBitScope,V as useBitSteps,P as useBitStore,T as useBitWatch};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react-native/use-bit-field.ts"],"sourcesContent":["import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"../react/use-bit-field-base\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n} from \"../core\";\nimport type { UseBitFieldNativeResult } from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldNativeResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const handleChange = useCallback(\n (text: string) => fieldController.setValue(text),\n [fieldController],\n );\n\n const setValue = useCallback(\n (val: any) => fieldController.setValue(val),\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChangeText: handleChange,\n onBlur,\n meta: {\n error: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isValidating: metaState.isValidating,\n isDirty: metaState.isDirty,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n },\n props: {\n value: displayValue,\n onChangeText: handleChange,\n onBlur,\n },\n };\n}\n"],"mappings":"iWAAA,OAAS,WAAAA,EAAS,eAAAC,MAAmB,QAU9B,SAASC,EAGdC,EAA4C,CAC5C,GAAM,CAAE,WAAAC,EAAY,QAAAC,EAAS,MAAAC,CAAM,EAAIC,EAIrCJ,CAAI,EAEA,CAAE,gBAAAK,CAAgB,EAAIC,EAAQ,IAC3BC,EAAkCJ,EAAOH,CAAI,EACnD,CAACG,EAAOH,CAAI,CAAC,EAEVQ,EAAeF,EACnB,IAAMD,EAAgB,aAAaJ,EAAW,KAAK,EACnD,CAACA,EAAW,MAAOI,CAAe,CACpC,EAEMI,EAAeC,EAClBC,GAAiBN,EAAgB,SAASM,CAAI,EAC/C,CAACN,CAAe,CAClB,EAEMO,EAAWF,EACdG,GAAaR,EAAgB,SAASQ,CAAG,EAC1C,CAACR,CAAe,CAClB,EAEM,CAAE,MAAAS,CAAM,EAAIb,EACZc,EAAYC,EAAgBf,CAAU,EAEtCgB,EAASP,EAAY,IAAM,CAC/BR,EAAQ,CACV,EAAG,CAACA,CAAO,CAAC,EAEZ,MAAO,CACL,MAAOY,EACP,aAAAN,EACA,SAAAI,EACA,QAAAV,EACA,aAAcO,EACd,OAAAQ,EACA,KAAM,CACJ,MAAOF,EAAU,MACjB,QAASA,EAAU,QACnB,QAASA,EAAU,QACnB,aAAcA,EAAU,aACxB,QAASA,EAAU,QACnB,SAAUA,EAAU,SACpB,WAAYA,EAAU,WACtB,SAAUA,EAAU,QACtB,EACA,MAAO,CACL,MAAOP,EACP,aAAcC,EACd,OAAAQ,CACF,CACF,CACF","names":["useMemo","useCallback","useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","handleChange","useCallback","text","setValue","val","value","metaState","deriveFieldMeta","onBlur"]}
1
+ {"version":3,"sources":["../../src/react-native/use-bit-field.ts"],"sourcesContent":["import { useMemo, useCallback } from \"react\";\nimport { useBitFieldBase } from \"../react/use-bit-field-base\";\nimport {\n BitPath,\n BitPathValue,\n createFrameworkMaskedFieldBinding,\n deriveFieldMeta,\n} from \"../core\";\nimport type { UseBitFieldNativeResult } from \"./types\";\n\nexport function useBitField<\n TForm extends object = any,\n P extends BitPath<TForm> = BitPath<TForm>,\n>(path: P): UseBitFieldNativeResult<TForm, P> {\n const { fieldState, setBlur, store } = useBitFieldBase<\n BitPathValue<TForm, P>,\n TForm,\n P\n >(path);\n\n const { fieldController } = useMemo(() => {\n return createFrameworkMaskedFieldBinding(store, path);\n }, [store, path]);\n\n const displayValue = useMemo(\n () => fieldController.displayValue(fieldState.value),\n [fieldState.value, fieldController],\n );\n\n const handleChange = useCallback(\n (text: string) => fieldController.setValue(text),\n [fieldController],\n );\n\n const setValue = useCallback(\n (val: any) => fieldController.setValue(val),\n [fieldController],\n );\n\n const { value } = fieldState;\n const metaState = deriveFieldMeta(fieldState);\n\n const onBlur = useCallback(() => {\n setBlur();\n }, [setBlur]);\n\n return {\n value: value as BitPathValue<TForm, P>,\n displayValue,\n setValue,\n setBlur,\n onChangeText: handleChange,\n onBlur,\n meta: {\n error: metaState.error,\n touched: metaState.touched,\n invalid: metaState.invalid,\n isValidating: metaState.isValidating,\n isDirty: metaState.isDirty,\n isHidden: metaState.isHidden,\n isRequired: metaState.isRequired,\n hasError: metaState.hasError,\n },\n props: {\n value: displayValue,\n onChangeText: handleChange,\n onBlur,\n },\n };\n}\n"],"mappings":"8XAAA,OAAS,WAAAA,EAAS,eAAAC,MAAmB,QAU9B,SAASC,EAGdC,EAA4C,CAC5C,GAAM,CAAE,WAAAC,EAAY,QAAAC,EAAS,MAAAC,CAAM,EAAIC,EAIrCJ,CAAI,EAEA,CAAE,gBAAAK,CAAgB,EAAIC,EAAQ,IAC3BC,EAAkCJ,EAAOH,CAAI,EACnD,CAACG,EAAOH,CAAI,CAAC,EAEVQ,EAAeF,EACnB,IAAMD,EAAgB,aAAaJ,EAAW,KAAK,EACnD,CAACA,EAAW,MAAOI,CAAe,CACpC,EAEMI,EAAeC,EAClBC,GAAiBN,EAAgB,SAASM,CAAI,EAC/C,CAACN,CAAe,CAClB,EAEMO,EAAWF,EACdG,GAAaR,EAAgB,SAASQ,CAAG,EAC1C,CAACR,CAAe,CAClB,EAEM,CAAE,MAAAS,CAAM,EAAIb,EACZc,EAAYC,EAAgBf,CAAU,EAEtCgB,EAASP,EAAY,IAAM,CAC/BR,EAAQ,CACV,EAAG,CAACA,CAAO,CAAC,EAEZ,MAAO,CACL,MAAOY,EACP,aAAAN,EACA,SAAAI,EACA,QAAAV,EACA,aAAcO,EACd,OAAAQ,EACA,KAAM,CACJ,MAAOF,EAAU,MACjB,QAASA,EAAU,QACnB,QAASA,EAAU,QACnB,aAAcA,EAAU,aACxB,QAASA,EAAU,QACnB,SAAUA,EAAU,SACpB,WAAYA,EAAU,WACtB,SAAUA,EAAU,QACtB,EACA,MAAO,CACL,MAAOP,EACP,aAAcC,EACd,OAAAQ,CACF,CACF,CACF","names":["useMemo","useCallback","useBitField","path","fieldState","setBlur","store","useBitFieldBase","fieldController","useMemo","createFrameworkMaskedFieldBinding","displayValue","handleChange","useCallback","text","setValue","val","value","metaState","deriveFieldMeta","onBlur"]}
@@ -3,8 +3,8 @@ export { zodResolver } from './zod.cjs';
3
3
  export { yupResolver } from './yup.cjs';
4
4
  export { BitJoiResolverConfig, BitResolverScopeOptions, BitYupResolverConfig, BitZodResolverConfig } from './types.cjs';
5
5
  import 'joi';
6
- import '../types-D6LhF5GC.cjs';
6
+ import '../types-SOg9xEce.cjs';
7
7
  import '../types-D8DgIUhJ.cjs';
8
- import '../bus-ZLQeq4Vr.cjs';
8
+ import '../bus-WOHGxuVy.cjs';
9
9
  import 'zod';
10
10
  import 'yup';
@@ -3,8 +3,8 @@ export { zodResolver } from './zod.js';
3
3
  export { yupResolver } from './yup.js';
4
4
  export { BitJoiResolverConfig, BitResolverScopeOptions, BitYupResolverConfig, BitZodResolverConfig } from './types.js';
5
5
  import 'joi';
6
- import '../types-CG5nYeRk.js';
6
+ import '../types-CRCP4Pgq.js';
7
7
  import '../types-D8DgIUhJ.js';
8
- import '../bus-B2VEKrPI.js';
8
+ import '../bus-BKuMV3E7.js';
9
9
  import 'zod';
10
10
  import 'yup';
@@ -1,6 +1,6 @@
1
1
  import { ObjectSchema } from 'joi';
2
- import { k as BitErrors } from '../types-D6LhF5GC.cjs';
3
- import '../bus-ZLQeq4Vr.cjs';
2
+ import { k as BitErrors } from '../types-SOg9xEce.cjs';
3
+ import '../bus-WOHGxuVy.cjs';
4
4
  import { BitJoiResolverConfig, BitResolverScopeOptions } from './types.cjs';
5
5
  import '../types-D8DgIUhJ.cjs';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { ObjectSchema } from 'joi';
2
- import { k as BitErrors } from '../types-CG5nYeRk.js';
3
- import '../bus-B2VEKrPI.js';
2
+ import { k as BitErrors } from '../types-CRCP4Pgq.js';
3
+ import '../bus-BKuMV3E7.js';
4
4
  import { BitJoiResolverConfig, BitResolverScopeOptions } from './types.js';
5
5
  import '../types-D8DgIUhJ.js';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { Schema } from 'yup';
2
- import { k as BitErrors } from '../types-D6LhF5GC.cjs';
3
- import '../bus-ZLQeq4Vr.cjs';
2
+ import { k as BitErrors } from '../types-SOg9xEce.cjs';
3
+ import '../bus-WOHGxuVy.cjs';
4
4
  import { BitYupResolverConfig, BitResolverScopeOptions } from './types.cjs';
5
5
  import '../types-D8DgIUhJ.cjs';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { Schema } from 'yup';
2
- import { k as BitErrors } from '../types-CG5nYeRk.js';
3
- import '../bus-B2VEKrPI.js';
2
+ import { k as BitErrors } from '../types-CRCP4Pgq.js';
3
+ import '../bus-BKuMV3E7.js';
4
4
  import { BitYupResolverConfig, BitResolverScopeOptions } from './types.js';
5
5
  import '../types-D8DgIUhJ.js';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { ZodSchema } from 'zod';
2
- import { k as BitErrors } from '../types-D6LhF5GC.cjs';
3
- import '../bus-ZLQeq4Vr.cjs';
2
+ import { k as BitErrors } from '../types-SOg9xEce.cjs';
3
+ import '../bus-WOHGxuVy.cjs';
4
4
  import { BitZodResolverConfig, BitResolverScopeOptions } from './types.cjs';
5
5
  import '../types-D8DgIUhJ.cjs';
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { ZodSchema } from 'zod';
2
- import { k as BitErrors } from '../types-CG5nYeRk.js';
3
- import '../bus-B2VEKrPI.js';
2
+ import { k as BitErrors } from '../types-CRCP4Pgq.js';
3
+ import '../bus-BKuMV3E7.js';
4
4
  import { BitZodResolverConfig, BitResolverScopeOptions } from './types.js';
5
5
  import '../types-D8DgIUhJ.js';
6
6
 
@@ -1,7 +1,11 @@
1
- import { G as BitState, j as BitConfig, N as ValidatorFn, o as BitFieldDefinition, M as DevToolsOptions, O as BitPersistResolvedConfig, P as BitIdFactory, A as BitPlugin, F as BitScheduler, r as BitFormGlobal, u as BitPath, p as BitFieldState, v as BitPathValue, x as BitPersistMetadata, S as ScopeStatus, L as DeepPartial, k as BitErrors, H as BitSubmitResult, c as BitArrayPath, b as BitArrayItem } from './types-D6LhF5GC.cjs';
2
1
  import { B as BitMask } from './types-D8DgIUhJ.cjs';
2
+ import { G as BitState, j as BitConfig, N as ValidatorFn, o as BitFieldDefinition, M as DevToolsOptions, O as BitPersistResolvedConfig, P as BitIdFactory, A as BitPlugin, F as BitScheduler, r as BitFormGlobal, Q as BitOperationalErrorSource, u as BitPath, p as BitFieldState, v as BitPathValue, x as BitPersistMetadata, S as ScopeStatus, L as DeepPartial, k as BitErrors, H as BitSubmitResult, c as BitArrayPath, b as BitArrayItem } from './types-SOg9xEce.cjs';
3
3
  import { a as BitHistoryMetadata, B as BitFormMeta, b as BitValidationOptions } from './meta-types-Bzmm21TP.cjs';
4
4
 
5
+ interface BitValidationTriggerOptions {
6
+ forceDebounce?: boolean;
7
+ }
8
+
5
9
  type BitSelector<T extends object, TSlice> = (state: Readonly<BitState<T>>) => TSlice;
6
10
  type BitEqualityFn<TValue> = (previous: TValue, next: TValue) => boolean;
7
11
  interface BitScopedSelectorSubscriptionOptions<TValue> {
@@ -17,10 +21,6 @@ interface BitTrackedSelectorSubscriptionOptions<TValue> {
17
21
  }
18
22
  type BitSelectorSubscriptionOptions<TValue> = BitScopedSelectorSubscriptionOptions<TValue> | BitTrackedSelectorSubscriptionOptions<TValue>;
19
23
 
20
- interface BitValidationTriggerOptions {
21
- forceDebounce?: boolean;
22
- }
23
-
24
24
  interface BitStoreIdentityApi<T extends object = Record<string, unknown>> {
25
25
  readonly storeId: string;
26
26
  readonly config: Readonly<BitFrameworkConfig<T>>;
@@ -41,8 +41,9 @@ interface BitFrameworkConfig<T extends object = Record<string, unknown>> extends
41
41
  plugins: BitPlugin<T>[];
42
42
  scheduler?: BitScheduler;
43
43
  subscriptionCacheSize?: number;
44
+ trackedSubscriptions?: boolean;
44
45
  bus?: BitFormGlobal;
45
- onUnhandledError: (error: unknown, source: "submit" | "validation" | "persist") => void;
46
+ onUnhandledError: (error: unknown, source: BitOperationalErrorSource) => void;
46
47
  }
47
48
  interface BitFormReadApi<T extends object = Record<string, unknown>> {
48
49
  getState(): Readonly<BitState<T>>;
@@ -59,7 +60,7 @@ interface BitFormReadApi<T extends object = Record<string, unknown>> {
59
60
  getScopeErrors(scopeName: string): Record<string, string>;
60
61
  getScopeFields(scopeName: string): string[];
61
62
  }
62
- interface BitFormObserveApi<T extends object = Record<string, unknown>> {
63
+ interface BitFormObserveApi<_T extends object = Record<string, unknown>> {
63
64
  subscribe(listener: () => void): () => void;
64
65
  subscribePersistMeta(listener: (meta: BitPersistMetadata) => void): () => void;
65
66
  subscribeHistoryMeta(listener: (meta: BitHistoryMetadata) => void): () => void;
@@ -76,8 +77,6 @@ interface BitFormWriteApi<T extends object = Record<string, unknown>> {
76
77
  setError(path: string, message: string | undefined): void;
77
78
  setErrors(errors: BitErrors<T>): void;
78
79
  setServerErrors(serverErrors: Record<string, string[] | string>): void;
79
- validate(options?: BitValidationOptions): Promise<boolean>;
80
- triggerValidation(scopeFields?: string[], options?: BitValidationTriggerOptions): void;
81
80
  reset(): void;
82
81
  transaction<TResult>(callback: () => TResult): TResult;
83
82
  submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<BitSubmitResult>;
@@ -86,7 +85,6 @@ interface BitStoreLifecycleApi {
86
85
  cleanup(): void;
87
86
  }
88
87
  interface BitStorePersistFeatureApi {
89
- getPersistMetadata(): BitPersistMetadata;
90
88
  restorePersisted(): Promise<boolean>;
91
89
  forceSave(): Promise<void>;
92
90
  clearPersisted(): Promise<void>;
@@ -135,6 +133,8 @@ interface BitFieldBindingApi<T extends object = Record<string, unknown>> {
135
133
  unregisterField(path: string): void;
136
134
  }
137
135
  interface BitStoreFeatureApi<T extends object = Record<string, unknown>> extends BitStoreLifecycleApi, BitStorePersistFeatureApi, BitStoreRegistrationFeatureApi<T>, BitStoreArrayFeatureApi<T>, BitStoreHistoryFeatureApi {
136
+ validate(options?: BitValidationOptions): Promise<boolean>;
137
+ triggerValidation(scopeFields?: string[], options?: BitValidationTriggerOptions): void;
138
138
  hasValidationsInProgress(scopeFields?: string[]): boolean;
139
139
  resolveMask(path: string): BitMask | undefined;
140
140
  createArrayItemId(path: string, index?: number): string;