@lehnihon/bit-form 2.2.4 → 2.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/angular/index.cjs +1 -1
- package/dist/angular/index.cjs.map +1 -1
- package/dist/angular/index.d.cts +3 -2
- package/dist/angular/index.d.ts +3 -2
- package/dist/angular/index.js +1 -1
- package/dist/angular/index.js.map +1 -1
- package/dist/{bus-BQI1FIOs.d.ts → bus-B4zZmB9C.d.ts} +4 -1
- package/dist/{bus-a_GA51Qw.d.cts → bus-BeAeZwWu.d.cts} +4 -1
- package/dist/chunk-2CVKNPWX.js +2 -0
- package/dist/chunk-2CVKNPWX.js.map +1 -0
- package/dist/chunk-3EDD3V43.cjs +2 -0
- package/dist/chunk-3EDD3V43.cjs.map +1 -0
- package/dist/chunk-3NUJVIAM.js +2 -0
- package/dist/chunk-3NUJVIAM.js.map +1 -0
- package/dist/{chunk-YEXRRTI3.cjs → chunk-77PK7U73.cjs} +2 -2
- package/dist/{chunk-YEXRRTI3.cjs.map → chunk-77PK7U73.cjs.map} +1 -1
- package/dist/chunk-CTURHI75.cjs +2 -0
- package/dist/{chunk-CFFLDMLG.cjs.map → chunk-CTURHI75.cjs.map} +1 -1
- package/dist/{chunk-MQX4YS6D.cjs → chunk-DD6XWUMR.cjs} +2 -2
- package/dist/{chunk-MQX4YS6D.cjs.map → chunk-DD6XWUMR.cjs.map} +1 -1
- package/dist/{chunk-BMHK77NL.js → chunk-FGJB4DHQ.js} +2 -2
- package/dist/{chunk-4XLU5ZCX.js → chunk-GDRNKTHO.js} +2 -2
- package/dist/chunk-GUU6EXFN.js +2 -0
- package/dist/chunk-GUU6EXFN.js.map +1 -0
- package/dist/{chunk-MBTLLIBM.js → chunk-M2XR4C7T.js} +2 -2
- package/dist/chunk-PFPGASVZ.cjs +2 -0
- package/dist/chunk-PFPGASVZ.cjs.map +1 -0
- package/dist/chunk-PX6WKENM.js +2 -0
- package/dist/chunk-PX6WKENM.js.map +1 -0
- package/dist/chunk-QWH2NBVB.js +2 -0
- package/dist/chunk-QWH2NBVB.js.map +1 -0
- package/dist/chunk-T3FR7D5V.js +2 -0
- package/dist/chunk-T3FR7D5V.js.map +1 -0
- package/dist/{chunk-KYM7JG2G.cjs → chunk-UT63HKR6.cjs} +2 -2
- package/dist/{chunk-KYM7JG2G.cjs.map → chunk-UT63HKR6.cjs.map} +1 -1
- package/dist/chunk-VQ7MK5VB.cjs +2 -0
- package/dist/chunk-VQ7MK5VB.cjs.map +1 -0
- package/dist/chunk-Y2ONHDRE.cjs +2 -0
- package/dist/chunk-Y2ONHDRE.cjs.map +1 -0
- package/dist/chunk-YCSWULEN.cjs +2 -0
- package/dist/chunk-YCSWULEN.cjs.map +1 -0
- package/dist/devtools/bridge.cjs +1 -1
- package/dist/devtools/bridge.cjs.map +1 -1
- package/dist/devtools/bridge.js +1 -1
- package/dist/devtools/bridge.js.map +1 -1
- package/dist/devtools/index.cjs +2 -2
- package/dist/devtools/index.cjs.map +1 -1
- package/dist/devtools/index.js +1 -1
- package/dist/devtools/index.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +44 -49
- package/dist/index.d.ts +44 -49
- package/dist/index.js +1 -1
- package/dist/mask.cjs +1 -1
- package/dist/mask.cjs.map +1 -1
- package/dist/mask.js +1 -1
- package/dist/mask.js.map +1 -1
- package/dist/{public-types-D14VY_4o.d.cts → public-types-Cd9ai20P.d.cts} +10 -2
- package/dist/{public-types-D3WIiMGu.d.ts → public-types-DdZxD6Op.d.ts} +10 -2
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.cjs.map +1 -1
- package/dist/react/index.d.cts +5 -5
- package/dist/react/index.d.ts +5 -5
- package/dist/react/index.js +1 -1
- package/dist/react/index.js.map +1 -1
- package/dist/react-native/index.cjs +1 -1
- package/dist/react-native/index.d.cts +4 -4
- package/dist/react-native/index.d.ts +4 -4
- package/dist/react-native/index.js +1 -1
- package/dist/resolvers/index.cjs +1 -1
- package/dist/resolvers/index.d.cts +1 -1
- package/dist/resolvers/index.d.ts +1 -1
- package/dist/resolvers/index.js +1 -1
- package/dist/resolvers/joi.cjs +1 -1
- package/dist/resolvers/joi.d.cts +1 -1
- package/dist/resolvers/joi.d.ts +1 -1
- package/dist/resolvers/joi.js +1 -1
- package/dist/resolvers/yup.cjs +1 -1
- package/dist/resolvers/yup.d.cts +1 -1
- package/dist/resolvers/yup.d.ts +1 -1
- package/dist/resolvers/yup.js +1 -1
- package/dist/resolvers/zod.cjs +1 -1
- package/dist/resolvers/zod.d.cts +1 -1
- package/dist/resolvers/zod.d.ts +1 -1
- package/dist/resolvers/zod.js +1 -1
- package/dist/{use-bit-persist-Dt4zIl2u.d.cts → use-bit-persist-D_gimC9A.d.cts} +3 -2
- package/dist/{use-bit-persist-CNtQ3Gaq.d.ts → use-bit-persist-Dk3fUrds.d.ts} +3 -2
- package/dist/vue/index.cjs +1 -1
- package/dist/vue/index.cjs.map +1 -1
- package/dist/vue/index.d.cts +3 -2
- package/dist/vue/index.d.ts +3 -2
- package/dist/vue/index.js +1 -1
- package/dist/vue/index.js.map +1 -1
- package/package.json +20 -1
- package/dist/chunk-66DIO2SH.js +0 -2
- package/dist/chunk-66DIO2SH.js.map +0 -1
- package/dist/chunk-7LMNIQTT.js +0 -2
- package/dist/chunk-7LMNIQTT.js.map +0 -1
- package/dist/chunk-AE4G32HS.js +0 -2
- package/dist/chunk-AE4G32HS.js.map +0 -1
- package/dist/chunk-CFFLDMLG.cjs +0 -2
- package/dist/chunk-EI5L5L3R.cjs +0 -2
- package/dist/chunk-EI5L5L3R.cjs.map +0 -1
- package/dist/chunk-IV32WXCF.cjs +0 -2
- package/dist/chunk-IV32WXCF.cjs.map +0 -1
- package/dist/chunk-K5NZDYAT.js +0 -2
- package/dist/chunk-K5NZDYAT.js.map +0 -1
- package/dist/chunk-LOYB7TTM.cjs +0 -2
- package/dist/chunk-LOYB7TTM.cjs.map +0 -1
- package/dist/chunk-O5UPA33R.js +0 -2
- package/dist/chunk-O5UPA33R.js.map +0 -1
- package/dist/chunk-RFFMBY7M.cjs +0 -2
- package/dist/chunk-RFFMBY7M.cjs.map +0 -1
- package/dist/chunk-YGAD4ZZW.js +0 -2
- package/dist/chunk-YGAD4ZZW.js.map +0 -1
- package/dist/chunk-ZO3GXKF3.cjs +0 -2
- package/dist/chunk-ZO3GXKF3.cjs.map +0 -1
- /package/dist/{chunk-BMHK77NL.js.map → chunk-FGJB4DHQ.js.map} +0 -0
- /package/dist/{chunk-4XLU5ZCX.js.map → chunk-GDRNKTHO.js.map} +0 -0
- /package/dist/{chunk-MBTLLIBM.js.map → chunk-M2XR4C7T.js.map} +0 -0
package/dist/mask.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/mask.cjs"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/bit-form/bit-form/dist/mask.cjs","../src/core/mask/creators.ts"],"names":["tokens","unmask","value","allowChars","stringValue","isNegative","escapedChars","regex","clean"],"mappings":"AAAA,itBAA4B,ICStBA,EAAAA,CAAmB,CACvB,GAAA,CAAK,IAAA,CACL,CAAA,CAAG,UAAA,CACH,CAAA,CAAG,aAAA,CACH,CAAA,CAAG,aAAA,CACH,CAAA,CAAG,OAAA,CACH,CAAA,CAAG,OAAA,CACH,GAAA,CAAK,GACP,CAAA,CAEaC,CAAAA,kBAAS,CACpBC,CAAAA,CACAC,CAAAA,CAAAA,EACW,CACX,EAAA,CAAID,CAAAA,EAAU,IAAA,EAA+BA,CAAAA,GAAU,EAAA,CAAI,MAAO,EAAA,CAClE,IAAME,CAAAA,CAAc,MAAA,CAAOF,CAAK,CAAA,CAC1BG,CAAAA,CAAaD,CAAAA,CAAY,UAAA,CAAW,GAAG,CAAA,CAEvCE,CAAAA,CAAeH,CAAAA,CACjBA,CAAAA,CAAW,OAAA,CAAQ,qBAAA,CAAuB,MAAM,CAAA,CAChD,EAAA,CACEI,CAAAA,CAAQ,IAAI,MAAA,CAAO,CAAA,WAAA,EAAcD,CAAY,CAAA,CAAA,CAAA,CAAK,GAAG,CAAA,CAErDE,CAAAA,CAAQJ,CAAAA,CAAY,OAAA,CAAQG,CAAAA,CAAO,EAAE,CAAA,CAC3C,OAAOF,CAAAA,EAAcG,CAAAA,EAAS,CAACA,CAAAA,CAAM,UAAA,CAAW,GAAG,CAAA,CAAI,CAAA,CAAA,EAAIA,CAAK,CAAA,CAAA","file":"/home/runner/work/bit-form/bit-form/dist/mask.cjs","sourcesContent":[null,"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"]}
|
package/dist/mask.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{A
|
|
1
|
+
import"./chunk-3NUJVIAM.js";var ee={"#":/\d/,A:/[a-zA-Z]/,X:/[a-zA-Z0-9]/,H:/[0-9a-fA-F]/,U:/[A-Z]/,L:/[a-z]/,"*":/./},x=(s,r)=>{if(s==null||s==="")return"";let e=String(s),m=e.startsWith("-"),a=r?r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"):"",i=new RegExp(`[^a-zA-Z0-9${a}]`,"g"),p=e.replace(i,"");return m&&p&&!p.startsWith("-")?`-${p}`:p},te=(s,r=2)=>{if(typeof s=="number")return s;if(!s)return 0;let e=String(s),m=e.includes("-"),a=e.replace(/\D/g,"");if(!a)return 0;let i=parseInt(a,10)/Math.pow(10,r);return m?-i:i},n=(s,r)=>{let e=o=>o.split("").filter(t=>ee[t]).length,a=[...Array.isArray(s)?s:[s]].sort((o,t)=>e(o)-e(t)),i=o=>{let t=a[a.length-1];for(let c of a)if(o<=e(c)){t=c;break}return t},p=o=>{let t=x(o,r?.allowChars);if(!t&&!r?.guide)return"";let c=i(t.length),k=r?.guide||!1,f=r?.placeholderChar||"_",d="",P=0;for(let g=0;g<c.length;g++){let C=c[g],h=ee[C];if(P<t.length){let u=t[P];if(h)if(C==="U"&&(u=u.toUpperCase()),C==="L"&&(u=u.toLowerCase()),h.test(u))d+=u,P++;else if(k)d+=f;else break;else d+=C,u===C&&P++}else if(k)d+=h?f:C;else break}return d};return{format:p,parse:o=>{if(r?.customParse)return r.customParse(o);let t=p(o);if(r?.saveRaw){if(r?.guide){let k=(r.placeholderChar||"_").replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),f=new RegExp(k,"g");return t.replace(f,"")}return t}return x(t,r?.allowChars)}}},l=({prefix:s="",suffix:r="",thousand:e,decimal:m,precision:a=2,allowNegative:i=!0,saveRaw:p=!1})=>{let o=t=>{if(t==null||t==="")return"";let c="";if(typeof t=="number"?c=Math.abs(t).toFixed(a).replace(/\D/g,""):c=String(t).replace(/\D/g,""),!c&&String(t).includes("-")&&i)return"-";if(!c)return"";c=c.padStart(a+1,"0");let k=a>0?c.slice(0,-a).replace(/^0+(?=\d)/,"")||"0":c.replace(/^0+(?=\d)/,"")||"0",f=a>0?c.slice(-a):"",d=k.replace(/\B(?=(\d{3})+(?!\d))/g,e),g=(typeof t=="number"?t<0:String(t).includes("-"))&&i?"-":"";return a===0?`${g}${s}${d}${r}`:`${g}${s}${d}${m}${f}${r}`};return{format:o,parse:t=>{let c=te(t,a),k=i?c:Math.abs(c);return p?o(k):k}}},D=s=>{let r=e=>/^3[47]/.test(e)?"#### ###### #####":/^3(?:0[0-5]|[68])/.test(e)?"#### ###### ####":"#### #### #### ####";return{format:e=>{let m=x(e,s?.allowChars),a=r(m);return n(a,s).format(e)},parse:e=>{let m=x(e,s?.allowChars),a=r(m);return n(a,s).parse(e)}}},H=s=>{let e=(s?.format||"DD/MM/YYYY")==="YYYY-MM-DD",m=n(e?"####-##-##":"##/##/####",s);return{format:a=>{let i=x(a);if(!i)return"";let p="",o="",t="";if(e?(t=i.substring(0,4),o=i.substring(4,6),p=i.substring(6,8)):(p=i.substring(0,2),o=i.substring(2,4),t=i.substring(4,8)),p.length===2){let k=parseInt(p,10);k>31&&(p="31"),k===0&&(p="01")}if(o.length===2){let k=parseInt(o,10);k>12&&(o="12"),k===0&&(o="01")}let c=e?`${t}${o}${p}`:`${p}${o}${t}`;return m.format(c)},parse:a=>m.parse(a)}};var X=l({prefix:"R$ ",thousand:".",decimal:",",precision:2}),$=l({prefix:"$",thousand:",",decimal:".",precision:2}),y=l({suffix:" \u20AC",thousand:".",decimal:",",precision:2}),S=l({prefix:"\xA3",thousand:",",decimal:".",precision:2}),B=l({prefix:"\xA5",thousand:",",decimal:".",precision:0}),b=l({suffix:"%",thousand:".",decimal:",",precision:1}),I=l({thousand:".",decimal:",",precision:2}),M=l({thousand:".",decimal:",",precision:0}),N=n("###.###.###-##"),U=n("##.###.###/####-##"),R=n(["(##) ####-####","(##) #####-####"]),Y=n("(##) ####-####"),A=n("#####-###"),V=H({format:"DD/MM/YYYY",guide:!0,customParse:s=>{let r=s.replace(/_/g,""),e=r.split("/");return e.length===3&&e[2].length===4?`${e[2]}-${e[1]}-${e[0]}`:r.replace(/\D/g,"")}}),w=n("##:##"),L=n("###########"),Z=n("##.###.###-X"),E=n(["###.###.###-##","##.###.###/####-##"]),F={format(s){let r=String(s??"").replace(/[^a-zA-Z0-9]/g,"").toUpperCase().slice(0,7);if(r.length===0)return"";let e=r.slice(0,3),m=r.slice(3);return m.length===0?e:m.length>=2&&/[A-Z]/.test(m[1])?`${e}${m}`:`${e}-${m}`},parse(s){return String(s??"").replace(/[^a-zA-Z0-9]/g,"").toUpperCase().slice(0,7)}},J=n("(###) ###-####"),O=n("#####-####"),z=n("##/##/####"),G=n("###-##-####"),T=D(),j=n("####"),_=H({format:"YYYY-MM-DD",saveRaw:!0,guide:!0}),W=n("HH:HH:HH:HH:HH:HH"),q=n("#HHHHHH"),K=n("###.###.###.###"),Q=n("HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH:HHHH"),v=n("UU## XXXX XXXX XXXX XXXX XXXX XXXX XXXX XX",{allowChars:" "});var re={brl:X,usd:$,eur:y,gbp:S,jpy:B,percent:b,decimal:I,int:M,integer:M,cpf:N,cnpj:U,cpfCnpj:E,rg:Z,cep:A,cnh:L,plate:F,phone:R,landline:Y,date:V,time:w,usPhone:J,zipCode:O,dateUS:z,ssn:G,cc:T,cvv:j,dateISO:_,ip:K,ipv6:Q,mac:W,color:q,iban:v};export{re as bitMasks,D as createCreditCardMask,l as createCurrencyMask,H as createDateMask,n as createPatternMask,X as maskBRL,A as maskCEP,L as maskCNH,U as maskCNPJ,N as maskCPF,E as maskCPFCNPJ,j as maskCVV,q as maskColorHex,T as maskCreditCard,V as maskDate,_ as maskDateISO,z as maskDateUS,I as maskDecimal,y as maskEUR,S as maskGBP,v as maskIBAN,K as maskIPv4,Q as maskIPv6,M as maskInteger,B as maskJPY,Y as maskLandline,W as maskMacAddress,b as maskPercent,R as maskPhone,F as maskPlate,Z as maskRG,G as maskSSN,w as maskTime,$ as maskUSD,J as maskUSPhone,O as maskZipCode,x as unmask,te as unmaskCurrency};
|
|
2
2
|
//# sourceMappingURL=mask.js.map
|
package/dist/mask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
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,4 +1,4 @@
|
|
|
1
|
-
import { B as BitConfig, V as ValidatorFn, a as BitFieldDefinition, D as DevToolsOptions, b as BitPersistResolvedConfig, c as BitIdFactory, d as BitPlugin, e as BitState, f as BitPath, g as BitPathValue, h as DeepPartial, i as BitErrors, j as BitPersistMetadata, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus, m as BitFieldState } from './bus-
|
|
1
|
+
import { B as BitConfig, V as ValidatorFn, a as BitFieldDefinition, D as DevToolsOptions, b as BitPersistResolvedConfig, c as BitIdFactory, d as BitPlugin, e as BitState, f as BitPath, g as BitPathValue, h as DeepPartial, i as BitErrors, j as BitPersistMetadata, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus, m as BitFieldState } from './bus-BeAeZwWu.cjs';
|
|
2
2
|
import { B as BitMask, a as BitMaskName } from './types-D8DgIUhJ.cjs';
|
|
3
3
|
|
|
4
4
|
type BitSelector<T extends object, TSlice> = (state: Readonly<BitState<T>>) => TSlice;
|
|
@@ -7,6 +7,10 @@ interface BitSelectorSubscriptionOptions<TValue> {
|
|
|
7
7
|
equalityFn?: BitEqualityFn<TValue>;
|
|
8
8
|
emitImmediately?: boolean;
|
|
9
9
|
paths?: string[];
|
|
10
|
+
/**
|
|
11
|
+
* Quando `true`, o store tenta inferir paths acessados pelo selector via Proxy.
|
|
12
|
+
* Mantido como opt-in para reduzir custo de inscrição e complexidade implícita.
|
|
13
|
+
*/
|
|
10
14
|
autoTrackPaths?: boolean;
|
|
11
15
|
}
|
|
12
16
|
interface BitValidationOptions {
|
|
@@ -48,6 +52,7 @@ interface BitStoreApi<T extends object = any> {
|
|
|
48
52
|
setServerErrors(serverErrors: Record<string, string[] | string>): void;
|
|
49
53
|
validate(options?: BitValidationOptions): Promise<boolean>;
|
|
50
54
|
reset(): void;
|
|
55
|
+
transaction<TResult>(callback: () => TResult): TResult;
|
|
51
56
|
submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
|
|
52
57
|
registerMask(name: BitMaskName, mask: BitMask): void;
|
|
53
58
|
getDirtyValues(): Partial<T>;
|
|
@@ -83,7 +88,10 @@ interface BitStoreHooksApi<T extends object = any> extends BitStoreApi<T> {
|
|
|
83
88
|
markFieldsTouched(paths: string[]): void;
|
|
84
89
|
hasValidationsInProgress(scopeFields?: string[]): boolean;
|
|
85
90
|
resolveMask(path: string): BitMask | undefined;
|
|
91
|
+
/** Returns a version counter that increments on every registerMask() call.
|
|
92
|
+
* Used by React hooks to track mask config changes reactively. */
|
|
93
|
+
getMasksVersion(): number;
|
|
86
94
|
getScopeFields(scopeName: string): string[];
|
|
87
95
|
}
|
|
88
96
|
|
|
89
|
-
export type { BitFrameworkConfig as B,
|
|
97
|
+
export type { BitFrameworkConfig as B, BitSelector as a, BitSelectorSubscriptionOptions as b, BitHistoryMetadata as c, BitValidationOptions as d, BitStoreApi as e, BitStoreHooksApi as f, BitEqualityFn as g };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { B as BitConfig, V as ValidatorFn, a as BitFieldDefinition, D as DevToolsOptions, b as BitPersistResolvedConfig, c as BitIdFactory, d as BitPlugin, e as BitState, f as BitPath, g as BitPathValue, h as DeepPartial, i as BitErrors, j as BitPersistMetadata, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus, m as BitFieldState } from './bus-
|
|
1
|
+
import { B as BitConfig, V as ValidatorFn, a as BitFieldDefinition, D as DevToolsOptions, b as BitPersistResolvedConfig, c as BitIdFactory, d as BitPlugin, e as BitState, f as BitPath, g as BitPathValue, h as DeepPartial, i as BitErrors, j as BitPersistMetadata, k as BitArrayPath, l as BitArrayItem, S as ScopeStatus, m as BitFieldState } from './bus-B4zZmB9C.js';
|
|
2
2
|
import { B as BitMask, a as BitMaskName } from './types-D8DgIUhJ.js';
|
|
3
3
|
|
|
4
4
|
type BitSelector<T extends object, TSlice> = (state: Readonly<BitState<T>>) => TSlice;
|
|
@@ -7,6 +7,10 @@ interface BitSelectorSubscriptionOptions<TValue> {
|
|
|
7
7
|
equalityFn?: BitEqualityFn<TValue>;
|
|
8
8
|
emitImmediately?: boolean;
|
|
9
9
|
paths?: string[];
|
|
10
|
+
/**
|
|
11
|
+
* Quando `true`, o store tenta inferir paths acessados pelo selector via Proxy.
|
|
12
|
+
* Mantido como opt-in para reduzir custo de inscrição e complexidade implícita.
|
|
13
|
+
*/
|
|
10
14
|
autoTrackPaths?: boolean;
|
|
11
15
|
}
|
|
12
16
|
interface BitValidationOptions {
|
|
@@ -48,6 +52,7 @@ interface BitStoreApi<T extends object = any> {
|
|
|
48
52
|
setServerErrors(serverErrors: Record<string, string[] | string>): void;
|
|
49
53
|
validate(options?: BitValidationOptions): Promise<boolean>;
|
|
50
54
|
reset(): void;
|
|
55
|
+
transaction<TResult>(callback: () => TResult): TResult;
|
|
51
56
|
submit(onSuccess: (values: T, dirtyValues?: Partial<T>) => void | Promise<void>): Promise<void>;
|
|
52
57
|
registerMask(name: BitMaskName, mask: BitMask): void;
|
|
53
58
|
getDirtyValues(): Partial<T>;
|
|
@@ -83,7 +88,10 @@ interface BitStoreHooksApi<T extends object = any> extends BitStoreApi<T> {
|
|
|
83
88
|
markFieldsTouched(paths: string[]): void;
|
|
84
89
|
hasValidationsInProgress(scopeFields?: string[]): boolean;
|
|
85
90
|
resolveMask(path: string): BitMask | undefined;
|
|
91
|
+
/** Returns a version counter that increments on every registerMask() call.
|
|
92
|
+
* Used by React hooks to track mask config changes reactively. */
|
|
93
|
+
getMasksVersion(): number;
|
|
86
94
|
getScopeFields(scopeName: string): string[];
|
|
87
95
|
}
|
|
88
96
|
|
|
89
|
-
export type { BitFrameworkConfig as B,
|
|
97
|
+
export type { BitFrameworkConfig as B, BitSelector as a, BitSelectorSubscriptionOptions as b, BitHistoryMetadata as c, BitValidationOptions as d, BitStoreApi as e, BitStoreHooksApi as f, BitEqualityFn as g };
|
package/dist/react/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var _chunk3EDD3V43cjs = require('../chunk-3EDD3V43.cjs');var _chunkVQ7MK5VBcjs = require('../chunk-VQ7MK5VB.cjs');require('../chunk-Y2ONHDRE.cjs');require('../chunk-YCSWULEN.cjs');var _chunkPFPGASVZcjs = require('../chunk-PFPGASVZ.cjs');var _react = require('react');function F(e){let{fieldState:s,setValue:n,setBlur:o,store:t}=_chunk3EDD3V43cjs.d.call(void 0, e),d=_react.useSyncExternalStore.call(void 0, u=>t.subscribe(u),()=>t.getMasksVersion(),()=>t.getMasksVersion()),a=_react.useMemo.call(void 0, ()=>t.resolveMask(e),[d,t.config.fields,e]),r=_react.useMemo.call(void 0, ()=>_chunkPFPGASVZcjs.b.call(void 0, s.value,_nullishCoalesce(a, () => (void 0))),[s.value,a]),i=_react.useCallback.call(void 0, u=>n(_chunkPFPGASVZcjs.c.call(void 0, u,_nullishCoalesce(a, () => (void 0)))),[a,n]),{isHidden:B,isRequired:f,value:l,error:p,touched:y,isDirty:h,isValidating:T}=s,E=!!(y&&p),I=y?p:void 0,x=_react.useCallback.call(void 0, u=>{let C=_chunkPFPGASVZcjs.a.call(void 0, u)?_optionalChain([u, 'access', _ => _.target, 'optionalAccess', _2 => _2.value]):u;i(C)},[i]),g=_react.useCallback.call(void 0, ()=>{o()},[o]);return{value:l,displayValue:r,setValue:i,setBlur:o,onChange:x,onBlur:g,props:{value:r,onChange:x,onBlur:g},meta:{error:I,touched:y,invalid:E,isDirty:h,isValidating:T,isHidden:B,isRequired:f,hasError:!!p}}}function G(){let e=_chunk3EDD3V43cjs.b.call(void 0, ),s=_react.useRef.call(void 0, null),n=_react.useCallback.call(void 0, ()=>{let r=e.getHistoryMetadata();if(s.current&&_chunkVQ7MK5VBcjs.a.call(void 0, s.current,r))return s.current;let i={canUndo:r.canUndo,canRedo:r.canRedo,historyIndex:r.historyIndex,historySize:r.historySize};return s.current=i,i},[e]),o=_react.useCallback.call(void 0, r=>e.subscribe(r),[e]),t=_react.useSyncExternalStore.call(void 0, o,n,n),d=_react.useCallback.call(void 0, ()=>{e.undo()},[e]),a=_react.useCallback.call(void 0, ()=>{e.redo()},[e]);return{...t,undo:d,redo:a}}function Q(e,s,n){let o=_chunk3EDD3V43cjs.b.call(void 0, ),t=F(e),d=_react.useRef.call(void 0, null),[a,r]=_react.useState.call(void 0, !1),i={setLoading:r,setError:(l,p)=>o.setError(l,p),setValue:l=>t.setValue(l),getUploadKey:()=>d.current,setUploadKey:l=>{d.current=l}},B=_react.useCallback.call(void 0, _chunkVQ7MK5VBcjs.b.call(void 0, e,s,i),[s,t,e,o]),f=_react.useCallback.call(void 0, _chunkVQ7MK5VBcjs.c.call(void 0, e,n,i),[n,t,e,o]);return{value:t.value,setValue:t.setValue,error:_optionalChain([t, 'access', _3 => _3.meta, 'optionalAccess', _4 => _4.error]),isValidating:!!_optionalChain([t, 'access', _5 => _5.meta, 'optionalAccess', _6 => _6.isValidating])||a,upload:B,remove:f}}exports.BitFormProvider = _chunk3EDD3V43cjs.a; exports.useBitArray = _chunk3EDD3V43cjs.e; exports.useBitField = F; exports.useBitForm = _chunk3EDD3V43cjs.c; exports.useBitHistory = G; exports.useBitPersist = _chunk3EDD3V43cjs.i; exports.useBitScope = _chunk3EDD3V43cjs.f; exports.useBitSteps = _chunk3EDD3V43cjs.g; exports.useBitStore = _chunk3EDD3V43cjs.b; exports.useBitUpload = Q; exports.useBitWatch = _chunk3EDD3V43cjs.h;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/react/index.cjs.map
CHANGED
|
@@ -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","rawSetValue","setBlur","store","useBitFieldBase","resolvedMask","useMemo","displayValue","formatMaskedValue","setValue","useCallback","val","parseMaskedInput","isHidden","isRequired","value","error","touched","isDirty","isValidating","invalid","visibleError","onChange","e","isBitFieldInputEventObject","onBlur","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","stableMeta","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 { BitPath, BitPathValue } from \"../core\";\nimport {\n formatMaskedValue,\n parseMaskedInput,\n isBitFieldInputEventObject,\n} from \"../core/mask/field-binding\";\nimport type {\n BitFieldInputEvent,\n UseBitFieldMeta,\n UseBitFieldBindProps,\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 {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path);\n\n const resolvedMask = useMemo(() => {\n return store.resolveMask(path as string);\n }, [store.config.masks, store.config.fields, path]);\n\n const displayValue = useMemo(\n () => formatMaskedValue(fieldState.value, resolvedMask ?? undefined),\n [fieldState.value, resolvedMask],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) =>\n rawSetValue(\n parseMaskedInput(val, resolvedMask ?? undefined) as BitPathValue<\n TForm,\n P\n >,\n ),\n [resolvedMask, rawSetValue],\n );\n\n const { isHidden, isRequired, value, error, touched, isDirty, isValidating } =\n fieldState;\n\n const invalid = !!(touched && error);\n const visibleError = touched ? error : undefined;\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: visibleError,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError: !!error,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\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<{\n canUndo: boolean;\n canRedo: boolean;\n historyIndex: number;\n historySize: number;\n } | null>(null);\n\n const getSnapshot = useCallback(() => {\n const nextMeta = store.getHistoryMetadata();\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 const stableMeta = {\n canUndo: nextMeta.canUndo,\n canRedo: nextMeta.canRedo,\n historyIndex: nextMeta.historyIndex,\n historySize: nextMeta.historySize,\n };\n\n lastMeta.current = stableMeta;\n return stableMeta;\n }, [store]);\n\n const meta = useSyncExternalStore(\n store.subscribe.bind(store),\n getSnapshot,\n getSnapshot,\n );\n\n const undo = useCallback(() => {\n store.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.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.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","rawSetValue","setBlur","store","useBitFieldBase","masksVersion","useSyncExternalStore","cb","resolvedMask","useMemo","displayValue","formatMaskedValue","setValue","useCallback","val","parseMaskedInput","isHidden","isRequired","value","error","touched","isDirty","isValidating","invalid","visibleError","onChange","e","isBitFieldInputEventObject","onBlur","useBitHistory","useBitStore","lastMeta","useRef","getSnapshot","nextMeta","isHistoryMetaEqual","stableMeta","subscribe","meta","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, useSyncExternalStore } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport { BitPath, BitPathValue } from \"../core\";\nimport {\n formatMaskedValue,\n parseMaskedInput,\n isBitFieldInputEventObject,\n} from \"../core/mask/field-binding\";\nimport type {\n BitFieldInputEvent,\n UseBitFieldMeta,\n UseBitFieldBindProps,\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 {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path);\n\n // Track mask registrations reactively. getMasksVersion() returns a counter\n // that increments on every registerMask() call. useSyncExternalStore fires\n // the snapshot on every store notification; the integer comparison is O(1)\n // so this only triggers a re-render when a mask is actually added.\n const masksVersion = useSyncExternalStore(\n // store.subscribe fires on every state change (global listener)\n (cb) => store.subscribe(cb),\n () => store.getMasksVersion(),\n () => store.getMasksVersion(),\n );\n\n const resolvedMask = useMemo(() => {\n return store.resolveMask(path as string);\n }, [masksVersion, store.config.fields, path]);\n\n const displayValue = useMemo(\n () => formatMaskedValue(fieldState.value, resolvedMask ?? undefined),\n [fieldState.value, resolvedMask],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) =>\n rawSetValue(\n parseMaskedInput(val, resolvedMask ?? undefined) as BitPathValue<\n TForm,\n P\n >,\n ),\n [resolvedMask, rawSetValue],\n );\n\n const { isHidden, isRequired, value, error, touched, isDirty, isValidating } =\n fieldState;\n\n const invalid = !!(touched && error);\n const visibleError = touched ? error : undefined;\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: visibleError,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError: !!error,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { isHistoryMetaEqual, type HistoryMeta } from \"../core/history-status\";\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 = store.getHistoryMetadata();\n\n if (lastMeta.current && isHistoryMetaEqual(lastMeta.current, nextMeta)) {\n return lastMeta.current;\n }\n\n const stableMeta = {\n canUndo: nextMeta.canUndo,\n canRedo: nextMeta.canRedo,\n historyIndex: nextMeta.historyIndex,\n historySize: nextMeta.historySize,\n };\n\n lastMeta.current = stableMeta;\n return stableMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.subscribe(cb),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.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.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"]}
|
package/dist/react/index.d.cts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-
|
|
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-
|
|
3
|
-
import { f as BitPath } from '../bus-
|
|
4
|
-
export { S as ScopeStatus, n as ValidateScopeResult } from '../bus-
|
|
1
|
+
import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-D_gimC9A.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-D_gimC9A.cjs';
|
|
3
|
+
import { f as BitPath } from '../bus-BeAeZwWu.cjs';
|
|
4
|
+
export { S as ScopeStatus, n as ValidateScopeResult } from '../bus-BeAeZwWu.cjs';
|
|
5
5
|
import { B as BitUploadFn, a as BitDeleteUploadFn } from '../upload-EXnJLq8k.cjs';
|
|
6
6
|
import 'react/jsx-runtime';
|
|
7
7
|
import 'react';
|
|
8
|
-
import '../public-types-
|
|
8
|
+
import '../public-types-Cd9ai20P.cjs';
|
|
9
9
|
import '../types-D8DgIUhJ.cjs';
|
|
10
10
|
import '../field-binding-BXw0Ku2c.cjs';
|
|
11
11
|
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-
|
|
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-
|
|
3
|
-
import { f as BitPath } from '../bus-
|
|
4
|
-
export { S as ScopeStatus, n as ValidateScopeResult } from '../bus-
|
|
1
|
+
import { g as UseBitFieldResult, h as UseBitHistoryResult, i as UseBitUploadResult } from '../use-bit-persist-Dk3fUrds.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-Dk3fUrds.js';
|
|
3
|
+
import { f as BitPath } from '../bus-B4zZmB9C.js';
|
|
4
|
+
export { S as ScopeStatus, n as ValidateScopeResult } from '../bus-B4zZmB9C.js';
|
|
5
5
|
import { B as BitUploadFn, a as BitDeleteUploadFn } from '../upload-EXnJLq8k.js';
|
|
6
6
|
import 'react/jsx-runtime';
|
|
7
7
|
import 'react';
|
|
8
|
-
import '../public-types-
|
|
8
|
+
import '../public-types-DdZxD6Op.js';
|
|
9
9
|
import '../types-D8DgIUhJ.js';
|
|
10
10
|
import '../field-binding-BXw0Ku2c.js';
|
|
11
11
|
|
package/dist/react/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as j,b as m,c as D,d as S,e as K,f as q,g as z,h as w,i as A}from"../chunk-T3FR7D5V.js";import{a as P,b,c as M}from"../chunk-QWH2NBVB.js";import"../chunk-2CVKNPWX.js";import"../chunk-PX6WKENM.js";import{a as V,b as v,c as R}from"../chunk-3NUJVIAM.js";import{useMemo as k,useCallback as U,useSyncExternalStore as L}from"react";function F(e){let{fieldState:s,setValue:n,setBlur:o,store:t}=S(e),d=L(u=>t.subscribe(u),()=>t.getMasksVersion(),()=>t.getMasksVersion()),a=k(()=>t.resolveMask(e),[d,t.config.fields,e]),r=k(()=>v(s.value,a??void 0),[s.value,a]),i=U(u=>n(R(u,a??void 0)),[a,n]),{isHidden:B,isRequired:f,value:l,error:p,touched:y,isDirty:h,isValidating:T}=s,E=!!(y&&p),I=y?p:void 0,x=U(u=>{let C=V(u)?u.target?.value:u;i(C)},[i]),g=U(()=>{o()},[o]);return{value:l,displayValue:r,setValue:i,setBlur:o,onChange:x,onBlur:g,props:{value:r,onChange:x,onBlur:g},meta:{error:I,touched:y,invalid:E,isDirty:h,isValidating:T,isHidden:B,isRequired:f,hasError:!!p}}}import{useCallback as c,useRef as O,useSyncExternalStore as W}from"react";function G(){let e=m(),s=O(null),n=c(()=>{let r=e.getHistoryMetadata();if(s.current&&P(s.current,r))return s.current;let i={canUndo:r.canUndo,canRedo:r.canRedo,historyIndex:r.historyIndex,historySize:r.historySize};return s.current=i,i},[e]),o=c(r=>e.subscribe(r),[e]),t=W(o,n,n),d=c(()=>{e.undo()},[e]),a=c(()=>{e.redo()},[e]);return{...t,undo:d,redo:a}}import{useCallback as H,useRef as J,useState as N}from"react";function Q(e,s,n){let o=m(),t=F(e),d=J(null),[a,r]=N(!1),i={setLoading:r,setError:(l,p)=>o.setError(l,p),setValue:l=>t.setValue(l),getUploadKey:()=>d.current,setUploadKey:l=>{d.current=l}},B=H(b(e,s,i),[s,t,e,o]),f=H(M(e,n,i),[n,t,e,o]);return{value:t.value,setValue:t.setValue,error:t.meta?.error,isValidating:!!t.meta?.isValidating||a,upload:B,remove:f}}export{j as BitFormProvider,K as useBitArray,F as useBitField,D as useBitForm,G as useBitHistory,A as useBitPersist,q as useBitScope,z as useBitSteps,m as useBitStore,Q as useBitUpload,w as useBitWatch};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/react/index.js.map
CHANGED
|
@@ -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 { BitPath, BitPathValue } from \"../core\";\nimport {\n formatMaskedValue,\n parseMaskedInput,\n isBitFieldInputEventObject,\n} from \"../core/mask/field-binding\";\nimport type {\n BitFieldInputEvent,\n UseBitFieldMeta,\n UseBitFieldBindProps,\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 {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path);\n\n const resolvedMask = useMemo(() => {\n return store.resolveMask(path as string);\n }, [
|
|
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, useSyncExternalStore } from \"react\";\nimport { useBitFieldBase } from \"./use-bit-field-base\";\nimport { BitPath, BitPathValue } from \"../core\";\nimport {\n formatMaskedValue,\n parseMaskedInput,\n isBitFieldInputEventObject,\n} from \"../core/mask/field-binding\";\nimport type {\n BitFieldInputEvent,\n UseBitFieldMeta,\n UseBitFieldBindProps,\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 {\n fieldState,\n setValue: rawSetValue,\n setBlur,\n store,\n } = useBitFieldBase<BitPathValue<TForm, P>, TForm, P>(path);\n\n // Track mask registrations reactively. getMasksVersion() returns a counter\n // that increments on every registerMask() call. useSyncExternalStore fires\n // the snapshot on every store notification; the integer comparison is O(1)\n // so this only triggers a re-render when a mask is actually added.\n const masksVersion = useSyncExternalStore(\n // store.subscribe fires on every state change (global listener)\n (cb) => store.subscribe(cb),\n () => store.getMasksVersion(),\n () => store.getMasksVersion(),\n );\n\n const resolvedMask = useMemo(() => {\n return store.resolveMask(path as string);\n }, [masksVersion, store.config.fields, path]);\n\n const displayValue = useMemo(\n () => formatMaskedValue(fieldState.value, resolvedMask ?? undefined),\n [fieldState.value, resolvedMask],\n );\n\n const setValue = useCallback(\n (val: BitPathValue<TForm, P> | string | number | null | undefined) =>\n rawSetValue(\n parseMaskedInput(val, resolvedMask ?? undefined) as BitPathValue<\n TForm,\n P\n >,\n ),\n [resolvedMask, rawSetValue],\n );\n\n const { isHidden, isRequired, value, error, touched, isDirty, isValidating } =\n fieldState;\n\n const invalid = !!(touched && error);\n const visibleError = touched ? error : undefined;\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: visibleError,\n touched,\n invalid,\n isDirty,\n isValidating,\n isHidden,\n isRequired,\n hasError: !!error,\n },\n };\n}\n","import { useCallback, useRef, useSyncExternalStore } from \"react\";\nimport { isHistoryMetaEqual, type HistoryMeta } from \"../core/history-status\";\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 = store.getHistoryMetadata();\n\n if (lastMeta.current && isHistoryMetaEqual(lastMeta.current, nextMeta)) {\n return lastMeta.current;\n }\n\n const stableMeta = {\n canUndo: nextMeta.canUndo,\n canRedo: nextMeta.canRedo,\n historyIndex: nextMeta.historyIndex,\n historySize: nextMeta.historySize,\n };\n\n lastMeta.current = stableMeta;\n return stableMeta;\n }, [store]);\n\n const subscribe = useCallback(\n (cb: () => void) => store.subscribe(cb),\n [store],\n );\n\n const meta = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n const undo = useCallback(() => {\n store.undo();\n }, [store]);\n\n const redo = useCallback(() => {\n store.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.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","useSyncExternalStore","useBitField","path","fieldState","rawSetValue","setBlur","store","useBitFieldBase","masksVersion","useSyncExternalStore","cb","resolvedMask","useMemo","displayValue","formatMaskedValue","setValue","useCallback","val","parseMaskedInput","isHidden","isRequired","value","error","touched","isDirty","isValidating","invalid","visibleError","onChange","e","isBitFieldInputEventObject","onBlur","useCallback","useRef","useSyncExternalStore","useBitHistory","store","useBitStore","lastMeta","useRef","getSnapshot","useCallback","nextMeta","isHistoryMetaEqual","stableMeta","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}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }var _chunk3EDD3V43cjs = require('../chunk-3EDD3V43.cjs');require('../chunk-Y2ONHDRE.cjs');require('../chunk-YCSWULEN.cjs');var _chunkPFPGASVZcjs = require('../chunk-PFPGASVZ.cjs');var _react = require('react');function E(r){let{fieldState:o,setValue:t,setBlur:s,store:i}=_chunk3EDD3V43cjs.d.call(void 0, r),e=_react.useMemo.call(void 0, ()=>i.resolveMask(r),[i.config.masks,i.config.fields,r]),m=_react.useMemo.call(void 0, ()=>_chunkPFPGASVZcjs.b.call(void 0, o.value,_nullishCoalesce(e, () => (void 0))),[o.value,e]),p=_react.useCallback.call(void 0, u=>t(_chunkPFPGASVZcjs.c.call(void 0, u,_nullishCoalesce(e, () => (void 0)))),[e,t]),x=_react.useCallback.call(void 0, u=>t(_chunkPFPGASVZcjs.c.call(void 0, u,_nullishCoalesce(e, () => (void 0)))),[e,t]),{isHidden:P,isRequired:v,value:y,error:a,touched:n,isDirty:h,isValidating:V}=o,T=!!(n&&a),g=n?a:void 0,B=_react.useCallback.call(void 0, ()=>{s()},[s]);return{value:y,displayValue:m,setValue:x,setBlur:s,onChangeText:p,onBlur:B,meta:{error:g,touched:n,invalid:T,isValidating:V,isDirty:h,isHidden:P,isRequired:v,hasError:!!a},props:{value:m,onChangeText:p,onBlur:B}}}exports.BitFormProvider = _chunk3EDD3V43cjs.a; exports.useBitArray = _chunk3EDD3V43cjs.e; exports.useBitField = E; exports.useBitForm = _chunk3EDD3V43cjs.c; exports.useBitPersist = _chunk3EDD3V43cjs.i; exports.useBitScope = _chunk3EDD3V43cjs.f; exports.useBitSteps = _chunk3EDD3V43cjs.g; exports.useBitStore = _chunk3EDD3V43cjs.b; exports.useBitWatch = _chunk3EDD3V43cjs.h;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,9 +1,9 @@
|
|
|
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-
|
|
2
|
-
import { f as BitPath, g as BitPathValue } from '../bus-
|
|
3
|
-
export { S as ScopeStatus, n as ValidateScopeResult } from '../bus-
|
|
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-D_gimC9A.cjs';
|
|
2
|
+
import { f as BitPath, g as BitPathValue } from '../bus-BeAeZwWu.cjs';
|
|
3
|
+
export { S as ScopeStatus, n as ValidateScopeResult } from '../bus-BeAeZwWu.cjs';
|
|
4
4
|
import 'react/jsx-runtime';
|
|
5
5
|
import 'react';
|
|
6
|
-
import '../public-types-
|
|
6
|
+
import '../public-types-Cd9ai20P.cjs';
|
|
7
7
|
import '../types-D8DgIUhJ.cjs';
|
|
8
8
|
import '../field-binding-BXw0Ku2c.cjs';
|
|
9
9
|
|
|
@@ -1,9 +1,9 @@
|
|
|
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-
|
|
2
|
-
import { f as BitPath, g as BitPathValue } from '../bus-
|
|
3
|
-
export { S as ScopeStatus, n as ValidateScopeResult } from '../bus-
|
|
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-Dk3fUrds.js';
|
|
2
|
+
import { f as BitPath, g as BitPathValue } from '../bus-B4zZmB9C.js';
|
|
3
|
+
export { S as ScopeStatus, n as ValidateScopeResult } from '../bus-B4zZmB9C.js';
|
|
4
4
|
import 'react/jsx-runtime';
|
|
5
5
|
import 'react';
|
|
6
|
-
import '../public-types-
|
|
6
|
+
import '../public-types-DdZxD6Op.js';
|
|
7
7
|
import '../types-D8DgIUhJ.js';
|
|
8
8
|
import '../field-binding-BXw0Ku2c.js';
|
|
9
9
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as S,b as k,c as M,d as c,e as R,f as U,g as N,h as C,i as b}from"../chunk-
|
|
1
|
+
import{a as S,b as k,c as M,d as c,e as R,f as U,g as N,h as C,i as b}from"../chunk-T3FR7D5V.js";import"../chunk-2CVKNPWX.js";import"../chunk-PX6WKENM.js";import{b as f,c as l}from"../chunk-3NUJVIAM.js";import{useMemo as F,useCallback as d}from"react";function E(r){let{fieldState:o,setValue:t,setBlur:s,store:i}=c(r),e=F(()=>i.resolveMask(r),[i.config.masks,i.config.fields,r]),m=F(()=>f(o.value,e??void 0),[o.value,e]),p=d(u=>t(l(u,e??void 0)),[e,t]),x=d(u=>t(l(u,e??void 0)),[e,t]),{isHidden:P,isRequired:v,value:y,error:a,touched:n,isDirty:h,isValidating:V}=o,T=!!(n&&a),g=n?a:void 0,B=d(()=>{s()},[s]);return{value:y,displayValue:m,setValue:x,setBlur:s,onChangeText:p,onBlur:B,meta:{error:g,touched:n,invalid:T,isValidating:V,isDirty:h,isHidden:P,isRequired:v,hasError:!!a},props:{value:m,onChangeText:p,onBlur:B}}}export{S as BitFormProvider,R as useBitArray,E as useBitField,M as useBitForm,b as useBitPersist,U as useBitScope,N as useBitSteps,k as useBitStore,C as useBitWatch};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/resolvers/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkDD6XWUMRcjs = require('../chunk-DD6XWUMR.cjs');require('../chunk-MFSDDSVG.cjs');var _chunk77PK7U73cjs = require('../chunk-77PK7U73.cjs');var _chunkUT63HKR6cjs = require('../chunk-UT63HKR6.cjs');require('../chunk-CTURHI75.cjs');exports.joiResolver = _chunkDD6XWUMRcjs.a; exports.yupResolver = _chunkUT63HKR6cjs.a; exports.zodResolver = _chunk77PK7U73cjs.a;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -3,7 +3,7 @@ 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 '../bus-
|
|
6
|
+
import '../bus-BeAeZwWu.cjs';
|
|
7
7
|
import '../types-D8DgIUhJ.cjs';
|
|
8
8
|
import 'zod';
|
|
9
9
|
import 'yup';
|
|
@@ -3,7 +3,7 @@ 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 '../bus-
|
|
6
|
+
import '../bus-B4zZmB9C.js';
|
|
7
7
|
import '../types-D8DgIUhJ.js';
|
|
8
8
|
import 'zod';
|
|
9
9
|
import 'yup';
|
package/dist/resolvers/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e}from"../chunk-
|
|
1
|
+
import{a as e}from"../chunk-FGJB4DHQ.js";import"../chunk-FQLJOSF7.js";import{a as o}from"../chunk-M2XR4C7T.js";import{a as r}from"../chunk-GDRNKTHO.js";import"../chunk-GUU6EXFN.js";export{e as joiResolver,r as yupResolver,o as zodResolver};
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/resolvers/joi.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkDD6XWUMRcjs = require('../chunk-DD6XWUMR.cjs');require('../chunk-CTURHI75.cjs');exports.joiResolver = _chunkDD6XWUMRcjs.a;
|
|
2
2
|
//# sourceMappingURL=joi.cjs.map
|
package/dist/resolvers/joi.d.cts
CHANGED
package/dist/resolvers/joi.d.ts
CHANGED
package/dist/resolvers/joi.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-FGJB4DHQ.js";import"../chunk-GUU6EXFN.js";export{a as joiResolver};
|
|
2
2
|
//# sourceMappingURL=joi.js.map
|
package/dist/resolvers/yup.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunkUT63HKR6cjs = require('../chunk-UT63HKR6.cjs');require('../chunk-CTURHI75.cjs');exports.yupResolver = _chunkUT63HKR6cjs.a;
|
|
2
2
|
//# sourceMappingURL=yup.cjs.map
|
package/dist/resolvers/yup.d.cts
CHANGED
package/dist/resolvers/yup.d.ts
CHANGED
package/dist/resolvers/yup.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-GDRNKTHO.js";import"../chunk-GUU6EXFN.js";export{a as yupResolver};
|
|
2
2
|
//# sourceMappingURL=yup.js.map
|
package/dist/resolvers/zod.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var _chunk77PK7U73cjs = require('../chunk-77PK7U73.cjs');require('../chunk-CTURHI75.cjs');exports.zodResolver = _chunk77PK7U73cjs.a;
|
|
2
2
|
//# sourceMappingURL=zod.cjs.map
|
package/dist/resolvers/zod.d.cts
CHANGED
package/dist/resolvers/zod.d.ts
CHANGED
package/dist/resolvers/zod.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-M2XR4C7T.js";import"../chunk-GUU6EXFN.js";export{a as zodResolver};
|
|
2
2
|
//# sourceMappingURL=zod.js.map
|