mother-mask 3.11.0 → 3.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +112 -3
- package/dist/mother-mask.cjs +1 -1
- package/dist/mother-mask.cjs.map +1 -1
- package/dist/mother-mask.d.cts +36 -13
- package/dist/mother-mask.d.mts +36 -13
- package/dist/mother-mask.mjs +1 -1
- package/dist/mother-mask.mjs.map +1 -1
- package/dist/mother-mask.umd.js +1 -1
- package/dist/mother-mask.umd.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -96,8 +96,8 @@ bindDecimal(input, { prefix: 'Q1 ', decimalPlaces: 2 })
|
|
|
96
96
|
| Character | Matches |
|
|
97
97
|
| --- | --- |
|
|
98
98
|
| `9` | Digit |
|
|
99
|
-
| `Z` |
|
|
100
|
-
| `A` |
|
|
99
|
+
| `Z` | ASCII letter |
|
|
100
|
+
| `A` | ASCII letter or digit |
|
|
101
101
|
| Anything else | Literal separator |
|
|
102
102
|
|
|
103
103
|
Examples:
|
|
@@ -108,6 +108,105 @@ bind(input, '99/99/9999')
|
|
|
108
108
|
bind(input, 'AA.AAA.AAA/AAAA-99')
|
|
109
109
|
```
|
|
110
110
|
|
|
111
|
+
## Custom Tokens and Transforms
|
|
112
|
+
|
|
113
|
+
Tokens are local to an operation or binding. A definition is a `RegExp`, a
|
|
114
|
+
`(char: string) => boolean` matcher, or `{ match, transform? }`:
|
|
115
|
+
|
|
116
|
+
```ts
|
|
117
|
+
bind(input, 'HH-HH', { tokens: { H: /[0-9A-Fa-f]/ } })
|
|
118
|
+
// "a1b2" → "a1-b2"; "g" is rejected
|
|
119
|
+
|
|
120
|
+
bind(input, 'UUU-999', {
|
|
121
|
+
tokens: {
|
|
122
|
+
U: { match: /[a-z]/i, transform: char => char.toUpperCase() },
|
|
123
|
+
},
|
|
124
|
+
})
|
|
125
|
+
// "abc123" → "ABC-123"
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Keys are single Unicode code points; `\` is reserved. Custom definitions may
|
|
129
|
+
override `9`, `Z`, or `A` for that binding only. Definitions are snapshotted on
|
|
130
|
+
bind; dispose and rebind to change them. Matchers should be pure. RegExp `g`/`y`
|
|
131
|
+
flags are ignored on a private copy; the caller's `lastIndex` is never changed.
|
|
132
|
+
|
|
133
|
+
A transform **must return exactly one Unicode code point**, otherwise a
|
|
134
|
+
`RangeError` is thrown (for example, uppercasing `ß` to `SS` is not supported).
|
|
135
|
+
Use an idempotent transform whose output still matches the token. UTF-16 width
|
|
136
|
+
may change: the caret follows the source character, not the output's case or width.
|
|
137
|
+
|
|
138
|
+
Custom tokens work with ordered arrays, segmented editing, eager literals,
|
|
139
|
+
and all four APIs: `applyMask`, `process`, `buildMask`, and `bind`.
|
|
140
|
+
|
|
141
|
+
## Content-dependent Masks
|
|
142
|
+
|
|
143
|
+
```ts
|
|
144
|
+
bind(input, '9999 9999 9999 9999', {
|
|
145
|
+
resolveMask(value) {
|
|
146
|
+
return value.startsWith('34') || value.startsWith('37')
|
|
147
|
+
? '9999 999999 99999'
|
|
148
|
+
: '9999 9999 9999 9999'
|
|
149
|
+
},
|
|
150
|
+
})
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
`resolveMask` is called **once per masking application**, before transforms,
|
|
154
|
+
with candidate data: code points accepted by the slots of the supplied fallback
|
|
155
|
+
pattern (or any fallback array member). Complete fallback literal runs at their
|
|
156
|
+
slot boundaries (escaped runs also after a segment shrinks) and nonmatching characters are removed. Thus raw and formatted
|
|
157
|
+
card numbers give the same digit stream, and invalid letters cannot change the
|
|
158
|
+
prefix. Make the fallback alphabet cover every format your resolver can return.
|
|
159
|
+
The callback can return a string or an ordered array; arrays retain capacity-based
|
|
160
|
+
selection. No recursive resolution or caching of input values occurs.
|
|
161
|
+
|
|
162
|
+
Resolver masks describe **one continuous identifier**: old separators are removed
|
|
163
|
+
before rendering the selected layout, even with `segmented: true`. This prevents
|
|
164
|
+
stale boundaries when equal-capacity layouts switch. For independently editable
|
|
165
|
+
fields, use a static pattern/array and segmented mode instead. Eager mode still
|
|
166
|
+
applies; the caret tracks logical characters and already-crossed literal boundaries.
|
|
167
|
+
|
|
168
|
+
`bind` does not add `maxlength` for resolvers (the maximum is unknowable) or
|
|
169
|
+
custom tokens (IME drafts can exceed the final capacity). The engine still caps
|
|
170
|
+
slots. Author-supplied `maxlength` is preserved. Disposal removes attributes added
|
|
171
|
+
by the binding, so rebinding cannot inherit a library-created stale limit.
|
|
172
|
+
|
|
173
|
+
## Escaped Literals
|
|
174
|
+
|
|
175
|
+
```ts
|
|
176
|
+
bind(input, '\\A-999999') // "123456" → "A-123456"
|
|
177
|
+
bind(input, '\\9-99') // "12" → "9-12"
|
|
178
|
+
bind(input, '\\Z-99') // "12" → "Z-12"
|
|
179
|
+
bind(input, '\\\\99') // a literal backslash, then two digits
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
In the pattern, backslash escapes a built-in/custom token or another backslash.
|
|
183
|
+
Before any other character it remains literal; a trailing backslash also remains
|
|
184
|
+
literal. Existing masks that used a backslash immediately before a token or
|
|
185
|
+
backslash must double it to keep that backslash in the output.
|
|
186
|
+
|
|
187
|
+
Complete literal runs are treated as formatting at their boundary; escaped runs
|
|
188
|
+
remain formatting after a segment shrinks, rather than becoming slot data. If literal text also matches the data alphabet, raw
|
|
189
|
+
and already-formatted input can be ambiguous: use a distinct separator (such as
|
|
190
|
+
`'\\9-99'`) to distinguish the literal from user data. Resolver formats should
|
|
191
|
+
likewise avoid introducing data-looking literals absent from the fallback pattern.
|
|
192
|
+
|
|
193
|
+
## Unicode and Composition
|
|
194
|
+
|
|
195
|
+
```ts
|
|
196
|
+
bind(input, 'LLLL', { tokens: { L: /\p{L}/u } })
|
|
197
|
+
// accepts Á, Ç, É, ñ, ü, ø, Ж, λ, and supplementary letters such as 𐐀
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Matching is by **Unicode code point**, not UTF-16 code unit or grapheme cluster.
|
|
201
|
+
Combining marks and joined emoji sequences therefore occupy separate slots if
|
|
202
|
+
accepted; no normalization or grapheme segmentation is performed. Caret offsets
|
|
203
|
+
remain DOM-compatible UTF-16 positions. Built-in `Z` and `A` remain ASCII-only.
|
|
204
|
+
|
|
205
|
+
With custom tokens, provisional IME text and selection are left untouched until
|
|
206
|
+
composition commits. This includes custom ASCII matchers: an arbitrary predicate's
|
|
207
|
+
alphabet cannot be safely inferred. Built-in-only masks keep live formatting during
|
|
208
|
+
Android autocorrect composition. No timeout or delayed commit is used.
|
|
209
|
+
|
|
111
210
|
## Segmented Editing
|
|
112
211
|
|
|
113
212
|
Masks are segmented by default. Separators behave like boundaries, which keeps fields such as dates from bleeding into each other while editing:
|
|
@@ -116,6 +215,12 @@ Masks are segmented by default. Separators behave like boundaries, which keeps f
|
|
|
116
215
|
bind(input, '99/99/9999')
|
|
117
216
|
```
|
|
118
217
|
|
|
218
|
+
Deleting all the data in an internal segment preserves its existing dividers
|
|
219
|
+
while later segments still contain data. For example, three Backspaces over
|
|
220
|
+
`222` in `(111) 222-3333` leave `(111) |-3333` (`|` marks the caret), ready to
|
|
221
|
+
type a replacement. This also works with `eager: false`. Trailing separators
|
|
222
|
+
still follow eager mode, and selecting everything and deleting clears the input.
|
|
223
|
+
|
|
119
224
|
Separators left in the value also anchor the characters around them, so an edit that replaces whole fields leaves the rest where it was:
|
|
120
225
|
|
|
121
226
|
```ts
|
|
@@ -152,7 +257,7 @@ Main exports:
|
|
|
152
257
|
- `applyMask(value, mask, inputCaret?, options?)`
|
|
153
258
|
- `process(value, mask, options?)`
|
|
154
259
|
- `buildMask(value, mask, caret?, options?)`
|
|
155
|
-
- `getMaxLength(mask)`
|
|
260
|
+
- `getMaxLength(mask, options?)` (formatted UTF-16 upper bound; `Infinity` with a resolver)
|
|
156
261
|
- `applyDecimalMask(value, inputCaret?, options?)`
|
|
157
262
|
- `processDecimal(value, options?)`
|
|
158
263
|
- `unmaskDecimal(value, options?)`
|
|
@@ -162,6 +267,10 @@ Main exports:
|
|
|
162
267
|
Exported types:
|
|
163
268
|
|
|
164
269
|
- `MaskPattern`
|
|
270
|
+
- `TokenMatcher`
|
|
271
|
+
- `MaskTokenDefinition`
|
|
272
|
+
- `MaskTokens`
|
|
273
|
+
- `MaskResolver`
|
|
165
274
|
- `MaskResult`
|
|
166
275
|
- `ApplyMaskOptions`
|
|
167
276
|
- `BindOptions`
|
package/dist/mother-mask.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e>=`0`&&e<=`9`}function t(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function n(e){return e===`9`||e===`Z`||e===`A`}function r(n,r){return r===`9`?e(n):r===`Z`?t(n):e(n)||t(n)}function i(e,t,n,i){let a=``,o=``,s=0,c=0,l=!1;for(let i=0;i<t.length;i++){let u=t[i];if(u!==`9`&&u!==`Z`&&u!==`A`){o+=u;continue}let d=!1;for(;s<e.length;){let t=e[s++];if(r(t,u)){a+=o+t,o=``,d=!0,l||(s<=n?c=a.length:l=!0);break}}if(!d)break}if(l||(c=a.length),i&&o){let e=c===a.length;a+=o,e&&(c=a.length)}return{value:a,caret:c}}const a=new Map;function o(e,t){if(a.size>=64){let e=a.keys().next();e.done||a.delete(e.value)}a.set(e,t)}function s(e){let t=a.get(e);if(t)return t;let r=[],i=[],s=[],c=[],l=0;for(;l<e.length;){let t=l,a=n(e[l]);for(;l<e.length&&n(e[l])===a;)l++;let o=e.slice(t,l);a?(i.push(s.length),c.push(r.length),s.push(o),r.push({kind:`slots`,chars:o})):(i.push(-1),r.push({kind:`literal`,text:o}))}let u=s.length,d=Array(u),f=Array(u),p=Array(u+1),m=Array(r.length).fill(-1),h=Array(r.length).fill(-1),g=0;for(let e=0;e<u;e++)d[e]=g,g+=s[e].length,f[e]=c[e]>0?c[e]-1:-1;p[u]=0;for(let e=u-1;e>=0;e--)p[e]=p[e+1]+s[e].length;for(let e=0;e<r.length;e++)r[e].kind===`literal`&&(m[e]=e>0?i[e-1]:-1,h[e]=e+1<r.length?i[e+1]:-1);let _={tokens:r,runChars:s,runOffset:d,literalBeforeRun:f,capacityFromRun:p,runOfToken:i,runBeforeLiteral:m,runAfterLiteral:h,totalSlots:g};return o(e,_),_}function c(e,t){return e.tokens[e.literalBeforeRun[t]].text}function l(n,r){let i=0;for(let a=r;a<n.length;a++){let r=n[a];(e(r)||t(r))&&i++}return i}function u(e,t,n,r){let i=l(e,t);for(let a=r+1;a<n.runChars.length;a++)if(e.startsWith(c(n,a),t))return i<=n.capacityFromRun[a]?a:-1;return-1}function d(e,t){let n=t.runChars.length,i=Array(t.totalSlots).fill(``),a=Array(t.totalSlots).fill(-1),o=Array(n).fill(0),s=Array(t.tokens.length).fill(-1),l=0,d=0,f=0;for(;f<e.length&&l<n;){let p=t.runChars[l],m=e[f];if(r(m,p[d])){let r=t.runOffset[l]+d;if(i[r]=m,a[r]=f,o[l]=d+1,f++,d++,d===p.length&&(l++,d=0,l<n)){let n=c(t,l);e.startsWith(n,f)&&(s[t.literalBeforeRun[l]]=f,f+=n.length)}continue}let h=u(e,f,t,l);if(h>=0){s[t.literalBeforeRun[h]]=f,f+=c(t,h).length,l=h,d=0;continue}f++}return{slotChar:i,slotSource:a,runFilled:o,literalSource:s}}function f(e,t,n){let{tokens:r,runBeforeLiteral:i,runAfterLiteral:a,literalBeforeRun:o,runChars:s}=e,{runFilled:c}=t,l=Array(r.length).fill(!1);for(let e=0;e<r.length;e++){if(r[e].kind!==`literal`)continue;let t=a[e],o=i[e];l[e]=t>=0&&c[t]>0||n&&(o<0||c[o]===s[o].length)}let u=-1;for(let e=0;e<s.length;e++){if(c[e]===0)continue;let t=o[e];if(t>=0){let n=r[t].text;for(let t=u+1;t<e;t++){let e=o[t];e<0||r[e].text===n&&(l[e]=!0)}}u=e}return l}function p(e,t,n,r,i){let{tokens:a,runChars:o,runOffset:s,runBeforeLiteral:c,runAfterLiteral:l,runOfToken:u}=e,{slotChar:d,slotSource:f,runFilled:p}=t,m=``,h=0,g=!1;for(let e=0;e<a.length;e++){let _=a[e];if(_.kind===`literal`){if(!n[e])continue;let a=c[e],s=l[e],u=s<0||p[s]===0,d=i&&(a<0||p[a]===o[a].length),f=t.literalSource[e],v=!g&&h===m.length;m+=_.text,v&&(d&&u||f>=0&&f<r)&&(h=m.length);continue}let v=u[e],y=s[v];for(let e=0;e<p[v];e++)m+=d[y+e],!g&&(f[y+e]<r?h=m.length:g=!0)}return{value:m,caret:h}}function m(e,t,n,r){let i=s(t),a=d(e,i);return p(i,a,f(i,a,r),n,r)}function h(e,t,n=0,r){if(!e)return{value:``,caret:0};let a=r?.eager!==!1;return r?.segmented===!1?i(e,t,n,a):m(e,t,n,a)}function g(e){let t=0;for(let n of e)(n>=`0`&&n<=`9`||n>=`a`&&n<=`z`||n>=`A`&&n<=`Z`)&&t++;return t}function _(e){let t=0;for(let n of e)(n===`9`||n===`Z`||n===`A`)&&t++;return t}function v(e,t){if(!Array.isArray(t))return t;let n=g(e),r=0;for(;r<t.length-1&&n>_(t[r]);)r++;return t[r]}function y(e){return Array.isArray(e)?e.length>0?Math.max(...e.map(e=>e.length)):0:e.length}var b=class{caret;_value;_mask;_options;constructor(e,t,n=0,r){this._value=e,this._mask=t,this.caret=n,this._options=r}process(){let e=h(this._value,this._mask,this.caret,this._options);return this.caret=e.caret,e.value}};function x(e,t,n=0,r){return new b(e,v(e,t),n,r)}function S(e,t,n){return x(e,t,0,n).process()}let C;function w(){return C===void 0&&(C=typeof navigator<`u`&&/iPad|iPhone|iPod/i.test(navigator.userAgent)),C}const T=`data-masked`;function E(e){return e==null?{}:typeof e==`function`?{onChange:e}:e}function D(e){try{return e.selectionStart??e.value.length}catch{return e.value.length}}function O(e,t){try{e.setSelectionRange(t,t)}catch{}}function k(e){return e===`deleteContentBackward`?`backspace`:e===`deleteContentForward`?`delete`:e&&e.startsWith(`insert`)?`insert`:`unidentified`}function A(e,t){return!t&&e}function j(e,t,n){if(e.getAttribute(T)!==null)return()=>{};let{onChange:r,segmented:i,eager:a}=E(n),o=[],s=(t,n)=>{e.hasAttribute(t)||(e.setAttribute(t,n),o.push(t))},c=y(t);e.setAttribute(T,Array.isArray(t)?t.join(`|`):t),s(`autocomplete`,`off`),s(`autocorrect`,`off`),s(`autocapitalize`,`off`),s(`spellcheck`,`false`),s(`maxlength`,String(c));let l=!1,u=!1,d=!1,f=e.value??``,p=w()?`keyup`:`keydown`,m=new Set,h=e=>{let t=requestAnimationFrame(()=>{m.delete(t),e()});m.add(t)},g=()=>{for(let e of m)cancelAnimationFrame(e);m.clear()},_=e=>{let n=e.target;h(()=>{let e=x(n.value,t,0,{segmented:i,eager:a});n.value=e.process(),r?.(n.value)})},v=e=>{let n=e,o=e.target;g(),l=!1,d=!0;let s=D(o),c=f.length,u=k(n.inputType),p=x(o.value,t,s,{segmented:i,eager:A(a,u===`backspace`||u===`delete`)});o.value=p.process(),u===`unidentified`?O(o,o.value.length>c?p.caret:s):u===`delete`?O(o,c===o.value.length?s+1:s):u===`backspace`?O(o,s):O(o,p.caret),f=o.value,r?.(o.value)},b=()=>{u=!0,g(),l=!1},S=e=>{u=!1,d=!0;let n=e.target,o=D(n),s=x(n.value,t,o,{segmented:i,eager:a});n.value=s.process(),O(n,s.caret),f=n.value,r?.(n.value)},C=e=>{let n=e,o=n.target,s=o.value;if(u)return;if(p===`keyup`&&d){d=!1;return}if(!n.key){l=!0,h(()=>{if(o.value===s&&o.selectionStart!==o.selectionEnd){l=!1;return}let e=o.selectionStart??999,n=o.value.length<s.length,r=x(o.value,t,e,{segmented:i,eager:A(a,n)});o.value=r.process(),o.setSelectionRange(r.caret,r.caret),h(()=>{l=!1})});return}if(n.key===`Meta`)return;let f=n.key===`Backspace`,m=n.key===`Delete`,g=n.key.length===1&&!n.ctrlKey&&!n.altKey&&!n.metaKey,_=n.key===`Unidentified`;if(g&&o.selectionStart===o.selectionEnd&&s.length>=c&&!w()){n.preventDefault();return}if(l){n.preventDefault();return}!f&&!m&&!g&&!_||h(()=>{if(o.value===s&&o.selectionStart!==o.selectionEnd)return;let e=o.selectionStart??999,n=x(o.value,t,e,{segmented:i,eager:A(a,f||m)});if(o.value=n.process(),_){let t=o.value.length>s.length?n.caret:e;o.setSelectionRange(t,t)}else if(m){let t=s.length===o.value.length?e+1:e;o.setSelectionRange(t,t)}else f?o.setSelectionRange(e,e):g&&o.setSelectionRange(n.caret,n.caret);r?.(o.value)})};return e.addEventListener(`paste`,_),e.addEventListener(`input`,v),e.addEventListener(`compositionstart`,b),e.addEventListener(`compositionend`,S),e.addEventListener(p,C),()=>{e.removeEventListener(`paste`,_),e.removeEventListener(`input`,v),e.removeEventListener(`compositionstart`,b),e.removeEventListener(`compositionend`,S),e.removeEventListener(p,C),e.removeAttribute(T);for(let t of o)e.removeAttribute(t);g()}}function M(e){return e>=`0`&&e<=`9`}function N(e){let t=e?.decimalPlaces,n=t!=null&&Number.isFinite(t)?Math.max(0,Math.floor(t)):void 0,r=e?.numberPlaces;return{decimalPlaces:n,numberPlaces:r!=null&&Number.isFinite(r)?Math.max(1,Math.floor(r)):void 0,segmented:e?.segmented??!0,separator:e?.separator??`,`,decimalSeparator:e?.decimalSeparator??`.`,prefix:e?.prefix??``,suffix:e?.suffix??``,allowNegative:e?.allowNegative??!1}}function P(e){let t=0;for(;t<e.length-1&&e[t]===`0`;)t++;return e.slice(t)}function F(e,t){if(!t||e.length<=3)return e;let n=[],r=e.length;for(;r>3;)n.unshift(e.slice(r-3,r)),r-=3;return n.unshift(e.slice(0,r)),n.join(t)}function I(e,t){if(t<=0)return 0;let n=0;for(let r=0;r<e.length;r++)if(M(e[r])&&(n++,n===t))return r+1;return e.length}function L(e,t){let n=0,r=``;t.prefix&&e.startsWith(t.prefix)?n=t.prefix.length:(t.allowNegative&&e[0]===`-`&&(r=`-`,n=1),t.prefix&&e.startsWith(t.prefix,n)&&(n+=t.prefix.length));let i=e.length;return t.suffix&&e.endsWith(t.suffix)&&i-t.suffix.length>=n&&(i-=t.suffix.length),{sign:r,body:e.slice(n,i),bodyStart:n}}function R(e,t){let n=L(e,t),r=``,i=``,a=n.sign===`-`,o=!1,s=t.decimalPlaces!==0;for(let e of n.body){if(M(e)){o?(t.decimalPlaces==null||i.length<t.decimalPlaces)&&(i+=e):(t.numberPlaces==null||r.length<t.numberPlaces)&&(r+=e);continue}if(s&&!o&&e===t.decimalSeparator){o=!0;continue}e===`-`&&t.allowNegative&&(a=!0)}return{isNegative:a,intDigits:r,fracDigits:i,hasSeparator:o}}function z(e,t,n){let r=n.decimalPlaces!==0,i=!1,a=0;for(let o=0;o<t;o++){let t=e[o];if(M(t)){i?(n.decimalPlaces==null||a<n.decimalPlaces)&&a++:(n.numberPlaces==null||a<n.numberPlaces)&&a++;continue}r&&!i&&t===n.decimalSeparator&&(i=!0,a=0)}return{inFraction:i,digitsBefore:a}}function B(e,t=0,n){let r=N(n);if(!e)return{value:``,caret:0};let{isNegative:i,intDigits:a,fracDigits:o,hasSeparator:s}=R(e,r);if(a===``&&o===``&&!s)return{value:``,caret:0};let c=P(a||`0`),l=r.numberPlaces==null?c:c.padStart(r.numberPlaces,`0`),u=r.segmented?F(l,r.separator):l,d=r.decimalPlaces!=null&&r.decimalPlaces>0?o.padEnd(r.decimalPlaces,`0`):o,f=u+(r.decimalPlaces!==0&&(r.decimalPlaces!=null||s)?r.decimalSeparator+d:``),p=i?`-`:``,m=p+r.prefix+f+r.suffix,h=L(e,r),g=Math.max(0,Math.min(t-h.bodyStart,h.body.length)),{inFraction:_,digitsBefore:v}=z(h.body,g,r),y=p.length+r.prefix.length,b=l.length-c.length;return{value:m,caret:_?y+u.length+r.decimalSeparator.length+v:y+I(u,v+b)}}function V(e,t){return B(e,e.length,t).value}function H(e,t){let{isNegative:n,intDigits:r,fracDigits:i}=R(e,N(t)),a=Number(i?`${r||`0`}.${i}`:r||`0`);return n?-a:a}function U(e,t){let n=N(t);if(n.decimalPlaces==null||n.decimalPlaces<=0)return null;let{isNegative:r,intDigits:i,hasSeparator:a}=R(e,n);if(a||i.length<n.decimalPlaces+1)return null;let o=i.length-n.decimalPlaces,s=i.slice(o),c=i.slice(0,o-1),l=r?`-`:``;return B(l+c+n.decimalSeparator+s,l.length+c.length,n)}function W(e,t,n,r){if(n<=0)return null;let i=t-n;if(i<0||t>e.length)return null;let a=e.slice(0,i)+e.slice(t),{bodyStart:o,body:s}=L(a,N(r)),c=o+s.length,l=i<o?o:i>c?c:-1;if(l<0)return null;let u=e.slice(i,t);return{value:a.slice(0,l)+u+a.slice(l),caret:l+n}}function G(e,t,n,r){let i=N(r),a=t-1;if(a<0||e[a]!==n)return null;let{isNegative:o,intDigits:s,fracDigits:c,hasSeparator:l}=R(e.slice(0,a)+e.slice(t),i),u=P(s||`0`),d=u!==`0`,f=d&&i.numberPlaces!=null&&u.length<i.numberPlaces;if(d&&!f)return null;let p=+!!o+i.prefix.length;if(a<p||a>p+s.length)return null;let m=o?`-`:``,h=(d?u:``)+n;return B(m+h+(l?i.decimalSeparator+c:``),m.length+h.length,i)}function K(e,t){let n=N(t);if(!Number.isFinite(e))return``;let r=n.allowNegative&&e<0,i=Math.abs(e),a=n.decimalPlaces==null?String(i):i.toFixed(n.decimalPlaces),o=a.indexOf(`.`),s=o===-1?a:a.slice(0,o),c=o===-1?``:a.slice(o+1),l=P(s||`0`),u=n.numberPlaces==null?l:l.padStart(n.numberPlaces,`0`),d=(n.segmented?F(u,n.separator):u)+(n.decimalPlaces!==0&&c!==``?n.decimalSeparator+c:``);return(r?`-`:``)+n.prefix+d+n.suffix}const q=`data-masked`;function J(e){return e==null?{}:typeof e==`function`?{onChange:e}:e}function Y(e){return e.length===1&&e>=`0`&&e<=`9`}function X(e){try{return e.selectionStart??e.value.length}catch{return e.value.length}}function Z(e,t){try{e.setSelectionRange(t,t)}catch{}}function Q(e,t){if(e.getAttribute(q)!==null)return()=>{};let{onChange:n,...r}=J(t),i=r,{decimalSeparator:a,decimalPlaces:o}=N(i),s=[],c=(t,n)=>{e.hasAttribute(t)||(e.setAttribute(t,n),s.push(t))};e.setAttribute(q,`decimal`),c(`autocomplete`,`off`),c(`autocorrect`,`off`),c(`autocapitalize`,`off`),c(`spellcheck`,`false`);let l=!1,u=!1,d=!1,f=null,p=w()?`keyup`:`keydown`,m=new Set,h=e=>{let t=requestAnimationFrame(()=>{m.delete(t),e()});m.add(t)},g=()=>{for(let e of m)cancelAnimationFrame(e);m.clear()},_=(e,t)=>{e.value=t.value,Z(e,t.caret),n?.(t.value,H(t.value,i))},v=(e,t={})=>{let n=X(e),r=(t,r)=>{if(o===0||t.length!==1||t!==`.`&&t!==`,`||t===a)return!1;for(let i of r)if(i!=null&&i>=0&&e.value.slice(i,i+t.length)===t)return e.value=e.value.slice(0,i)+a+e.value.slice(i+t.length),n=i+t.length<=n?n+a.length-t.length:n,Z(e,n),!0;return!1};if(f){let{text:e,starts:t}=f;f=null,r(e,t)}if(t.inputType===`deleteContentBackward`){let t=U(e.value,i);if(t){_(e,t);return}}let s=t.insertedText;if(s!=null&&r(s,[t.insertedAt,n-s.length]),s!=null&&s.length>0){let t=W(e.value,n,s.length,i);t&&(e.value=t.value,n=t.caret)}let c=s!=null&&s.length===1&&Y(s)?s:void 0,l=c?G(e.value,n,c,i):null;_(e,l??B(e.value,n,i))},y=e=>{let t=e.target;h(()=>{v(t)})},b=e=>{let t=e,n=e.target;g(),l=!1,f=null,d=!0,v(n,{insertedText:typeof t.data==`string`?t.data:null,inputType:t.inputType})},x=()=>{u=!0,g(),l=!1,f=null},S=e=>{u=!1,d=!0,v(e.target)},C=e=>{let t=e,n=t.target,r=X(n),i=n.value;if(u)return;if(p===`keyup`&&d){d=!1;return}if(!t.key){l=!0,h(()=>{if(n.value===i&&n.selectionStart!==n.selectionEnd){l=!1;return}v(n),h(()=>{l=!1})});return}if(t.key===`Meta`)return;if(l){t.preventDefault();return}let s=t.key===`Backspace`,c=t.key===`Delete`,m=t.key.length===1&&!t.ctrlKey&&!t.altKey&&!t.metaKey,g=t.key===`Unidentified`;m&&o!==0&&(t.key===`.`||t.key===`,`)&&t.key!==a&&(f={text:t.key,starts:[r,r-t.key.length]}),!(!s&&!c&&!m&&!g)&&h(()=>{(n.value!==i||n.selectionStart===n.selectionEnd)&&v(n,{insertedText:m?t.key:null,insertedAt:m?r:void 0,inputType:s?`deleteContentBackward`:c?`deleteContentForward`:void 0})})};return e.addEventListener(`paste`,y),e.addEventListener(`input`,b),e.addEventListener(`compositionstart`,x),e.addEventListener(`compositionend`,S),e.addEventListener(p,C),()=>{e.removeEventListener(`paste`,y),e.removeEventListener(`input`,b),e.removeEventListener(`compositionstart`,x),e.removeEventListener(`compositionend`,S),e.removeEventListener(p,C),e.removeAttribute(q);for(let t of s)e.removeAttribute(t);g()}}exports.Mask=b,exports.applyDecimalMask=B,exports.applyMask=h,exports.bind=j,exports.bindDecimal=Q,exports.buildMask=x,exports.formatDecimalValue=K,exports.getMaxLength=y,exports.process=S,exports.processDecimal=V,exports.unmaskDecimal=H;
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(e){return e>=`0`&&e<=`9`}function t(e){return e>=`a`&&e<=`z`||e>=`A`&&e<=`Z`}function n(n){return e(n)||t(n)}const r=[[`9`,{match:e,maxLength:1}],[`Z`,{match:t,maxLength:1}],[`A`,{match:n,maxLength:1}]];function i(e){if(typeof e==`function`)return e;let t=new RegExp(e.source,e.flags.replace(/[gy]/g,``));return e=>t.test(e)}function a(e,t){if(!t.transform)return e;let n=t.transform(e);if(typeof n!=`string`||Array.from(n).length!==1)throw RangeError(`A mask token transform must return exactly one Unicode code point`);return n}function o(e,t){let n=[],r=[],i=[],a=[],o=Array.from(e),s=0,c=!1;for(let e=0;e<o.length;e++){let l=o[e],u=!1;l===`\\`&&(o[e+1]===`\\`||t.has(o[e+1]))&&(l=o[++e],u=!0,c=!0);let d=u?void 0:t.get(l),f=n[n.length-1];if(d){if(s+=d.maxLength,f?.kind===`slots`)f.chars.push(d);else{let e=[d];r.push(i.length),a.push(n.length),i.push(e),n.push({kind:`slots`,chars:e})}}else s+=l.length,f?.kind===`literal`?f.text+=l:(r.push(-1),n.push({kind:`literal`,text:l}))}let l=i.length,u=Array(l),d=Array(l),f=Array(l+1),p=Array(n.length).fill(-1),m=Array(n.length).fill(-1),h=0;for(let e=0;e<l;e++)u[e]=h,h+=i[e].length,d[e]=a[e]>0?a[e]-1:-1;f[l]=0;for(let e=l-1;e>=0;e--)f[e]=f[e+1]+i[e].length;for(let e=0;e<n.length;e++)n[e].kind===`literal`&&(p[e]=e>0?r[e-1]:-1,m[e]=e+1<n.length?r[e+1]:-1);let g=[],_=[],v=new Set;for(let e=0;e<n.length;e++){let t=n[e];if(t.kind===`literal`)g.push(t),_.push({text:t.text,offset:m[e]<0?h:u[m[e]]});else for(let e of t.chars)g.push(e),v.add(e)}return{maxLength:s,hasEscapes:c,dataSlots:[...v],literals:_,parts:g,tokens:n,runChars:i,runOffset:u,literalBeforeRun:d,capacityFromRun:f,runOfToken:r,runBeforeLiteral:p,runAfterLiteral:m,totalSlots:h}}var s=class{definitions=new Map(r);cache=new Map;custom;constructor(e){this.custom=!!e&&Object.keys(e).length>0;for(let t of Object.keys(e??{})){let n=e[t];if(t===`\\`||Array.from(t).length!==1)throw RangeError(`Mask token keys must be one Unicode code point other than backslash`);let r=typeof n==`object`&&`match`in n?n:{match:n};this.definitions.set(t,{match:i(r.match),transform:r.transform,maxLength:2})}}compile(e){let t=this.cache.get(e);if(t)return t;let n=o(e,this.definitions);return this.cache.size===64&&this.cache.delete(this.cache.keys().next().value),this.cache.set(e,n),n}isData(e,t){if(t&&(this.custom||t.hasEscapes))return t.dataSlots.some(t=>t.match(e));for(let t of this.definitions.values())if(t.match(e))return!0;return!1}data(e,t,n,r=!0){let i=``,a=0,o=0,s=0,c=-1,l=!1,u,d=[];if(n){let e=new Set;for(let t of n){for(let n of t.dataSlots)e.add(n);if(r)for(let e of t.literals)d.push(e)}u=[...e]}let f=n?.some(e=>e.hasEscapes);for(;a<e.length;){let n=c!==s&&d?.find(t=>(t.offset===s||f)&&e.startsWith(t.text,a));if(n){a<t&&(l=!0),a+=n.text.length,c=s;continue}let r=String.fromCodePoint(e.codePointAt(a)),p=a;if(a+=r.length,!(u?u.some(e=>e.match(r)):this.isData(r))){p<t&&d?.some(t=>e.startsWith(t.text,p))&&(l=!0);continue}i+=r,s++,a<=t&&(o=i.length,l=!1)}return{value:i,caret:o,afterLiteral:l}}resolve(e,t,n=!0){if(!Array.isArray(t))return this.compile(t);let r=t.map(e=>this.compile(e)),i=Array.from(this.data(e,0,this.custom||r.some(e=>e.hasEscapes)?r:void 0,n).value).length,a=0;for(;a<r.length-1&&i>r[a].totalSlots;)a++;return r[a]??this.compile(``)}};const c=new s;function l(e,t){if(t?.resolveMask)return 1/0;let n=t?.tokens?new s(t.tokens):c,r=Array.isArray(e)?e:[e],i=0;for(let e of r)i=Math.max(i,n.compile(e).maxLength);return i}function u(e,t,n,r,i,o){let s=``,c=``,l=0,u=0,d=!1,f=t.tokens[0],p=!1;for(let r of t.parts){if(`kind`in r){c+=r.text,i&&e.startsWith(r.text,l)&&(l+=r.text.length,r===f&&(p=!0));continue}let m=!1;for(;l<e.length;){let h=i&&t.hasEscapes&&t.literals.find(t=>e.startsWith(t.text,l));if(h){l+=h.text.length;continue}if(i&&!p&&f?.kind===`literal`&&e.startsWith(f.text,l)){l+=f.text.length,p=!0;continue}let g=String.fromCodePoint(e.codePointAt(l));if(l+=g.length,r.match(g)){o&&!d&&l>n&&(u=s.length+c.length),s+=c+a(g,r),c=``,m=!0,d||(l<=n?u=s.length:d=!0);break}}if(!m)break}if(d||(u=s.length),r&&c){let e=u===s.length;s+=c,e&&(u=s.length)}return{value:s,caret:u}}function d(e,t){return e.tokens[e.literalBeforeRun[t]].text}function f(e,t,n,r){let i=0;for(let a=t;a<e.length;){let t=String.fromCodePoint(e.codePointAt(a));a+=t.length,n.isData(t,r)&&i++}return i}function p(e,t,n,r,i){for(let a=r+1;a<n.runChars.length;a++){let r=d(n,a);if(e.startsWith(r,t))return f(e,t+r.length,i,n)<=n.capacityFromRun[a]?a:-1}return-1}function m(e,t,n,r){let i=t.runChars.length,o=Array(t.totalSlots).fill(``),s=Array(t.totalSlots).fill(-1),c=Array(i).fill(0),l=Array(t.tokens.length).fill(-1),u=0,f=0,m=0,h=t.tokens[0];for(r&&h?.kind===`literal`&&e.startsWith(h.text)&&(l[0]=0,m=h.text.length);m<e.length&&u<i;){if(r&&l[0]<0&&h?.kind===`literal`&&e.startsWith(h.text,m)){l[0]=m,m+=h.text.length;continue}let g=t.runChars[u],_=String.fromCodePoint(e.codePointAt(m)),v=g[f].match(_),y=r&&(!v||t.hasEscapes)?p(e,m,t,u,n):-1;if(y>=0){l[t.literalBeforeRun[y]]=m,m+=d(t,y).length,u=y,f=0;continue}if(v){let n=t.runOffset[u]+f;if(o[n]=a(_,g[f]),s[n]=m+_.length,c[u]=f+1,m+=_.length,f++,f===g.length&&(u++,f=0,r&&u<i)){let n=d(t,u);e.startsWith(n,m)&&(l[t.literalBeforeRun[u]]=m,m+=n.length)}continue}m+=_.length}return{slotChar:o,slotSource:s,runFilled:c,literalSource:l}}function h(e,t,n){let{tokens:r,runBeforeLiteral:i,runAfterLiteral:a,literalBeforeRun:o,runChars:s}=e,{runFilled:c,literalSource:l}=t,u=Array(r.length).fill(!1),d=c.length-1;for(;d>=0&&c[d]===0;)d--;for(let e=0;e<r.length;e++){if(r[e].kind!==`literal`)continue;let t=a[e],o=i[e];u[e]=t>=0&&(c[t]>0||l[e]>=0&&t<d)||n&&(o<0||c[o]===s[o].length)}let f=-1;for(let e=0;e<s.length;e++){if(c[e]===0)continue;let t=o[e];if(t>=0){let n=r[t].text;for(let t=f+1;t<e;t++){let e=o[t];e<0||r[e].text===n&&(u[e]=!0)}}f=e}return u}function g(e,t,n,r,i,a){let{tokens:o,runChars:s,runOffset:c,runBeforeLiteral:l,runAfterLiteral:u,runOfToken:d}=e,{slotChar:f,slotSource:p,runFilled:m}=t,h=``,g=0,_=!1;for(let e=0;e<o.length;e++){let v=o[e];if(v.kind===`literal`){if(!n[e])continue;let o=l[e],c=u[e],d=c<0||m[c]===0,f=i&&(o<0||m[o]===s[o].length),p=t.literalSource[e],y=!_&&g===h.length;h+=v.text,y&&(a||f&&d||p>=0&&p<r)&&(g=h.length);continue}let y=d[e],b=c[y];for(let e=0;e<m[y];e++)h+=f[b+e],!_&&(p[b+e]<=r?g=h.length:_=!0)}return{value:h,caret:g}}function _(e,t,n,r,i,a,o){let s=m(e,t,i,a);return g(t,s,h(t,s,r),n,r,o)}function v(e,t,n,r,i){let a,o=!1;if(r?.resolveMask){let s=Array.isArray(t)?t:[t],c=i.data(e,n,s.map(e=>i.compile(e)));a=i.resolve(c.value,r.resolveMask(c.value),!1),e=c.value,n=c.caret,o=c.afterLiteral}else a=i.resolve(e,t);if(!e)return{value:``,caret:0};let s=r?.eager!==!1;return r?.segmented===!1?u(e,a,n,s,!r.resolveMask,o):_(e,a,n,s,i,!r?.resolveMask,o)}function y(e,t,n=0,r){return v(e,t,n,r,r?.tokens?new s(r.tokens):c)}let b;function x(){return b===void 0&&(b=typeof navigator<`u`&&/iPad|iPhone|iPod/i.test(navigator.userAgent)),b}const S=`data-masked`;function C(e){return e==null?{}:typeof e==`function`?{onChange:e}:e}function w(e){try{return e.selectionStart??e.value.length}catch{return e.value.length}}function T(e,t){try{t>0&&t<e.value.length&&e.value.charCodeAt(t)>=56320&&e.value.charCodeAt(t)<=57343&&e.value.charCodeAt(t-1)>=55296&&e.value.charCodeAt(t-1)<=56319&&t--,e.setSelectionRange(t,t)}catch{}}function E(e){return()=>{let t=e;e=void 0,t?.()}}function D(e){return e===`deleteContentBackward`?`backspace`:e===`deleteContentForward`?`delete`:e&&e.startsWith(`insert`)?`insert`:`unidentified`}function O(e,t){return!t&&e}function k(e,t,n){if(e.getAttribute(S)!==null)return()=>{};let{onChange:r,segmented:i,eager:a,tokens:o,resolveMask:c}=C(n),u=new s(o),d=(e,n,r=a)=>v(e,t,n,{tokens:o,resolveMask:c,segmented:i,eager:r},u),f=!!o&&Object.keys(o).length>0,p=[],m=(t,n)=>{e.hasAttribute(t)||(e.setAttribute(t,n),p.push(t))},h=c||f?1/0:l(t);e.setAttribute(S,Array.isArray(t)?t.join(`|`):t),m(`autocomplete`,`off`),m(`autocorrect`,`off`),m(`autocapitalize`,`off`),m(`spellcheck`,`false`),Number.isFinite(h)&&m(`maxlength`,String(h));let g=!1,_=!1,y=!1,b=e.value??``,k=x()?`keyup`:`keydown`,A=new Set,j=e=>{let t=requestAnimationFrame(()=>{A.delete(t),e()});A.add(t)},M=()=>{for(let e of A)cancelAnimationFrame(e);A.clear()},N=e=>{let t=e.target,n=t.value;j(()=>{if(f&&_||t.value===n&&t.selectionStart!==t.selectionEnd)return;let e=d(t.value,w(t));t.value=e.value,T(t,e.caret),b=t.value,r?.(t.value)})},P=e=>{let t=e,n=e.target;if(M(),g=!1,y=!0,f&&(_||t.isComposing)||n.value===b&&n.selectionStart!==n.selectionEnd)return;let i=w(n),o=b.length,s=D(t.inputType),l=n.value,u=d(l,i,O(a,s===`backspace`||s===`delete`));n.value=u.value,c&&u.value!==l&&u.value!==b?T(n,u.caret):s===`unidentified`?T(n,n.value.length>o?u.caret:i):s===`delete`?T(n,o===n.value.length?i+1:i):s===`backspace`?T(n,i):T(n,u.caret),b=n.value,r?.(n.value)},F=()=>{_=!0,M(),g=!1},I=e=>{_=!1,y=!0;let t=e.target,n=w(t),i=d(t.value,n);t.value=i.value,T(t,i.caret),b=t.value,r?.(t.value)},L=e=>{let t=e,n=t.target,i=n.value;if(_)return;if(k===`keyup`&&y){y=!1;return}if(!t.key){g=!0,j(()=>{if(n.value===i&&n.selectionStart!==n.selectionEnd){g=!1;return}let e=n.selectionStart??999,t=n.value.length<i.length,r=d(n.value,e,O(a,t));n.value=r.value,T(n,r.caret),b=n.value,j(()=>{g=!1})});return}if(t.key===`Meta`)return;let o=t.key===`Backspace`,s=t.key===`Delete`,l=Array.from(t.key).length===1&&!t.ctrlKey&&!t.altKey&&!t.metaKey,u=t.key===`Unidentified`;if(l&&n.selectionStart===n.selectionEnd&&i.length>=h&&!x()){t.preventDefault();return}if(g){t.preventDefault();return}!o&&!s&&!l&&!u||j(()=>{if(n.value===i&&n.selectionStart!==n.selectionEnd)return;let e=n.selectionStart??999,t=n.value,f=d(t,e,O(a,o||s));if(n.value=f.value,c&&f.value!==t&&f.value!==i)T(n,f.caret);else if(u){let t=n.value.length>i.length?f.caret:e;T(n,t)}else if(s){let t=i.length===n.value.length?e+1:e;T(n,t)}else o?T(n,e):l&&T(n,f.caret);b=n.value,r?.(n.value)})};return e.addEventListener(`paste`,N),e.addEventListener(`input`,P),e.addEventListener(`compositionstart`,F),e.addEventListener(`compositionend`,I),e.addEventListener(k,L),E(()=>{e.removeEventListener(`paste`,N),e.removeEventListener(`input`,P),e.removeEventListener(`compositionstart`,F),e.removeEventListener(`compositionend`,I),e.removeEventListener(k,L),e.removeAttribute(S);for(let t of p)e.removeAttribute(t);M()})}function A(e){return e>=`0`&&e<=`9`}function j(e){let t=e?.decimalPlaces,n=t!=null&&Number.isFinite(t)?Math.max(0,Math.floor(t)):void 0,r=e?.numberPlaces;return{decimalPlaces:n,numberPlaces:r!=null&&Number.isFinite(r)?Math.max(1,Math.floor(r)):void 0,segmented:e?.segmented??!0,separator:e?.separator??`,`,decimalSeparator:e?.decimalSeparator??`.`,prefix:e?.prefix??``,suffix:e?.suffix??``,allowNegative:e?.allowNegative??!1}}function M(e){let t=0;for(;t<e.length-1&&e[t]===`0`;)t++;return e.slice(t)}function N(e,t){if(!t||e.length<=3)return e;let n=[],r=e.length;for(;r>3;)n.unshift(e.slice(r-3,r)),r-=3;return n.unshift(e.slice(0,r)),n.join(t)}function P(e,t){if(t<=0)return 0;let n=0;for(let r=0;r<e.length;r++)if(A(e[r])&&(n++,n===t))return r+1;return e.length}function F(e,t){let n=0,r=``;t.prefix&&e.startsWith(t.prefix)?n=t.prefix.length:(t.allowNegative&&e[0]===`-`&&(r=`-`,n=1),t.prefix&&e.startsWith(t.prefix,n)&&(n+=t.prefix.length));let i=e.length;return t.suffix&&e.endsWith(t.suffix)&&i-t.suffix.length>=n&&(i-=t.suffix.length),{sign:r,body:e.slice(n,i),bodyStart:n}}function I(e,t){let n=F(e,t),r=``,i=``,a=n.sign===`-`,o=!1,s=t.decimalPlaces!==0;for(let e of n.body){if(A(e)){o?(t.decimalPlaces==null||i.length<t.decimalPlaces)&&(i+=e):(t.numberPlaces==null||r.length<t.numberPlaces)&&(r+=e);continue}if(s&&!o&&e===t.decimalSeparator){o=!0;continue}e===`-`&&t.allowNegative&&(a=!0)}return{isNegative:a,intDigits:r,fracDigits:i,hasSeparator:o}}function L(e,t,n){let r=n.decimalPlaces!==0,i=!1,a=0;for(let o=0;o<t;o++){let t=e[o];if(A(t)){i?(n.decimalPlaces==null||a<n.decimalPlaces)&&a++:(n.numberPlaces==null||a<n.numberPlaces)&&a++;continue}r&&!i&&t===n.decimalSeparator&&(i=!0,a=0)}return{inFraction:i,digitsBefore:a}}function R(e,t=0,n){let r=j(n);if(!e)return{value:``,caret:0};let{isNegative:i,intDigits:a,fracDigits:o,hasSeparator:s}=I(e,r);if(a===``&&o===``&&!s)return{value:``,caret:0};let c=M(a||`0`),l=r.numberPlaces==null?c:c.padStart(r.numberPlaces,`0`),u=r.segmented?N(l,r.separator):l,d=r.decimalPlaces!=null&&r.decimalPlaces>0?o.padEnd(r.decimalPlaces,`0`):o,f=u+(r.decimalPlaces!==0&&(r.decimalPlaces!=null||s)?r.decimalSeparator+d:``),p=i?`-`:``,m=p+r.prefix+f+r.suffix,h=F(e,r),g=Math.max(0,Math.min(t-h.bodyStart,h.body.length)),{inFraction:_,digitsBefore:v}=L(h.body,g,r),y=p.length+r.prefix.length,b=l.length-c.length;return{value:m,caret:_?y+u.length+r.decimalSeparator.length+v:y+P(u,v+b)}}function z(e,t){return R(e,e.length,t).value}function B(e,t){let{isNegative:n,intDigits:r,fracDigits:i}=I(e,j(t)),a=Number(i?`${r||`0`}.${i}`:r||`0`);return n?-a:a}function V(e,t){let n=j(t);if(n.decimalPlaces==null||n.decimalPlaces<=0)return null;let{isNegative:r,intDigits:i,hasSeparator:a}=I(e,n);if(a||i.length<n.decimalPlaces+1)return null;let o=i.length-n.decimalPlaces,s=i.slice(o),c=i.slice(0,o-1),l=r?`-`:``;return R(l+c+n.decimalSeparator+s,l.length+c.length,n)}function H(e,t,n,r){if(n<=0)return null;let i=t-n;if(i<0||t>e.length)return null;let a=e.slice(0,i)+e.slice(t),{bodyStart:o,body:s}=F(a,j(r)),c=o+s.length,l=i<o?o:i>c?c:-1;if(l<0)return null;let u=e.slice(i,t);return{value:a.slice(0,l)+u+a.slice(l),caret:l+n}}function U(e,t,n,r){let i=j(r),a=t-1;if(a<0||e[a]!==n)return null;let{isNegative:o,intDigits:s,fracDigits:c,hasSeparator:l}=I(e.slice(0,a)+e.slice(t),i),u=M(s||`0`),d=u!==`0`,f=d&&i.numberPlaces!=null&&u.length<i.numberPlaces;if(d&&!f)return null;let p=+!!o+i.prefix.length;if(a<p||a>p+s.length)return null;let m=o?`-`:``,h=(d?u:``)+n;return R(m+h+(l?i.decimalSeparator+c:``),m.length+h.length,i)}function W(e,t){let n=j(t);if(!Number.isFinite(e))return``;let r=n.allowNegative&&e<0,i=Math.abs(e),a=n.decimalPlaces==null?String(i):i.toFixed(n.decimalPlaces),o=a.indexOf(`.`),s=o===-1?a:a.slice(0,o),c=o===-1?``:a.slice(o+1),l=M(s||`0`),u=n.numberPlaces==null?l:l.padStart(n.numberPlaces,`0`),d=(n.segmented?N(u,n.separator):u)+(n.decimalPlaces!==0&&c!==``?n.decimalSeparator+c:``);return(r?`-`:``)+n.prefix+d+n.suffix}const G=`data-masked`;function K(e){return e==null?{}:typeof e==`function`?{onChange:e}:e}function q(e){return e.length===1&&e>=`0`&&e<=`9`}function J(e){try{return e.selectionStart??e.value.length}catch{return e.value.length}}function Y(e,t){try{e.setSelectionRange(t,t)}catch{}}function X(e,t){if(e.getAttribute(G)!==null)return()=>{};let{onChange:n,...r}=K(t),i=r,{decimalSeparator:a,decimalPlaces:o}=j(i),s=[],c=(t,n)=>{e.hasAttribute(t)||(e.setAttribute(t,n),s.push(t))};e.setAttribute(G,`decimal`),c(`autocomplete`,`off`),c(`autocorrect`,`off`),c(`autocapitalize`,`off`),c(`spellcheck`,`false`);let l=!1,u=!1,d=!1,f=null,p=x()?`keyup`:`keydown`,m=new Set,h=e=>{let t=requestAnimationFrame(()=>{m.delete(t),e()});m.add(t)},g=()=>{for(let e of m)cancelAnimationFrame(e);m.clear()},_=(e,t)=>{e.value=t.value,Y(e,t.caret),n?.(t.value,B(t.value,i))},v=(e,t={})=>{let n=J(e),r=(t,r)=>{if(o===0||t.length!==1||t!==`.`&&t!==`,`||t===a)return!1;for(let i of r)if(i!=null&&i>=0&&e.value.slice(i,i+t.length)===t)return e.value=e.value.slice(0,i)+a+e.value.slice(i+t.length),n=i+t.length<=n?n+a.length-t.length:n,Y(e,n),!0;return!1};if(f){let{text:e,starts:t}=f;f=null,r(e,t)}if(t.inputType===`deleteContentBackward`){let t=V(e.value,i);if(t){_(e,t);return}}let s=t.insertedText;if(s!=null&&r(s,[t.insertedAt,n-s.length]),s!=null&&s.length>0){let t=H(e.value,n,s.length,i);t&&(e.value=t.value,n=t.caret)}let c=s!=null&&s.length===1&&q(s)?s:void 0,l=c?U(e.value,n,c,i):null;_(e,l??R(e.value,n,i))},y=e=>{let t=e.target;h(()=>{v(t)})},b=e=>{let t=e,n=e.target;g(),l=!1,f=null,d=!0,v(n,{insertedText:typeof t.data==`string`?t.data:null,inputType:t.inputType})},S=()=>{u=!0,g(),l=!1,f=null},C=e=>{u=!1,d=!0,v(e.target)},w=e=>{let t=e,n=t.target,r=J(n),i=n.value;if(u)return;if(p===`keyup`&&d){d=!1;return}if(!t.key){l=!0,h(()=>{if(n.value===i&&n.selectionStart!==n.selectionEnd){l=!1;return}v(n),h(()=>{l=!1})});return}if(t.key===`Meta`)return;if(l){t.preventDefault();return}let s=t.key===`Backspace`,c=t.key===`Delete`,m=t.key.length===1&&!t.ctrlKey&&!t.altKey&&!t.metaKey,g=t.key===`Unidentified`;m&&o!==0&&(t.key===`.`||t.key===`,`)&&t.key!==a&&(f={text:t.key,starts:[r,r-t.key.length]}),!(!s&&!c&&!m&&!g)&&h(()=>{(n.value!==i||n.selectionStart===n.selectionEnd)&&v(n,{insertedText:m?t.key:null,insertedAt:m?r:void 0,inputType:s?`deleteContentBackward`:c?`deleteContentForward`:void 0})})};return e.addEventListener(`paste`,y),e.addEventListener(`input`,b),e.addEventListener(`compositionstart`,S),e.addEventListener(`compositionend`,C),e.addEventListener(p,w),()=>{e.removeEventListener(`paste`,y),e.removeEventListener(`input`,b),e.removeEventListener(`compositionstart`,S),e.removeEventListener(`compositionend`,C),e.removeEventListener(p,w),e.removeAttribute(G);for(let t of s)e.removeAttribute(t);g()}}var Z=class{caret;_value;_mask;_options;constructor(e,t,n=0,r){this._value=e,this._mask=t,this.caret=n,this._options=r}process(){let e=y(this._value,this._mask,this.caret,this._options);return this.caret=e.caret,e.value}};function Q(e,t,n=0,r){return new Z(e,t,n,r)}function $(e,t,n){return Q(e,t,0,n).process()}exports.Mask=Z,exports.applyDecimalMask=R,exports.applyMask=y,exports.bind=k,exports.bindDecimal=X,exports.buildMask=Q,exports.formatDecimalValue=W,exports.getMaxLength=l,exports.process=$,exports.processDecimal=z,exports.unmaskDecimal=B;
|
|
2
2
|
//# sourceMappingURL=mother-mask.cjs.map
|