react-input-mask-format 2.2.0 → 2.4.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 +120 -8
- package/dist/chunk-OMKRB5AE.js +27 -0
- package/dist/chunk-OMKRB5AE.js.map +1 -0
- package/dist/presets.cjs +152 -2
- package/dist/presets.cjs.map +1 -1
- package/dist/presets.d.cts +17 -1
- package/dist/presets.d.ts +17 -1
- package/dist/presets.js +120 -2
- package/dist/presets.js.map +1 -1
- package/dist/time.cjs +240 -0
- package/dist/time.cjs.map +1 -0
- package/dist/time.d.cts +28 -0
- package/dist/time.d.ts +28 -0
- package/dist/time.js +178 -0
- package/dist/time.js.map +1 -0
- package/dist/validators.cjs +158 -9
- package/dist/validators.cjs.map +1 -1
- package/dist/validators.d.cts +12 -1
- package/dist/validators.d.ts +12 -1
- package/dist/validators.js +131 -10
- package/dist/validators.js.map +1 -1
- package/package.json +15 -3
package/README.md
CHANGED
|
@@ -5,12 +5,25 @@
|
|
|
5
5
|
[](https://github.com/Temirtator/react-input-mask-format/actions/workflows/ci.yml)
|
|
6
6
|
|
|
7
7
|
General-purpose input masking for React — dates, phone numbers, cards, custom
|
|
8
|
-
tokens, and a growing set of ready-made country packs (Kazakhstan
|
|
8
|
+
tokens, and a growing set of ready-made country packs (Kazakhstan, Russia).
|
|
9
9
|
Made with attention to UX.
|
|
10
10
|
|
|
11
11
|
A maintained fork of [react-input-mask](https://github.com/sanniassin/react-input-mask).
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
**Live demo:** https://temirtator.github.io/react-input-mask-format/
|
|
14
|
+
|
|
15
|
+
## What's new in 2.4
|
|
16
|
+
|
|
17
|
+
- Russia country pack in `react-input-mask-format/presets` — phone, INN, SNILS, OGRN/OGRNIP, KPP, BIK, bank account, IBAN, car plate, postal code, passport, see [Presets](#presets)
|
|
18
|
+
- Russian validators in `react-input-mask-format/validators` — INN, SNILS, OGRN/OGRNIP, bank account key (with BIK), IBAN, plate, KPP/BIK format, see [Validators](#validators)
|
|
19
|
+
|
|
20
|
+
All additive — no migration needed.
|
|
21
|
+
|
|
22
|
+
### 2.3
|
|
23
|
+
|
|
24
|
+
- `react-input-mask-format/time` — HH:MM (24h) masked input with clamping, see [Time](#time--react-input-mask-formattime)
|
|
25
|
+
|
|
26
|
+
### 2.2
|
|
14
27
|
|
|
15
28
|
- `useMask` hook — mask your own `<input>` with no wrapper component, see [useMask hook](#usemask-hook)
|
|
16
29
|
- `react-input-mask-format/number` — numeric & currency masking, a lightweight `react-number-format` alternative, see [Numeric & currency](#numeric--currency--react-input-mask-formatnumber)
|
|
@@ -140,12 +153,19 @@ import { kzPhone, kzIban } from "react-input-mask-format/presets";
|
|
|
140
153
|
<InputMask {...kzIban} value={iban} onChange={onChange} />
|
|
141
154
|
```
|
|
142
155
|
|
|
143
|
-
Presets are a country-agnostic system
|
|
156
|
+
Presets are a country-agnostic system with country packs for Kazakhstan and Russia —
|
|
144
157
|
PRs adding other countries are welcome.
|
|
145
158
|
|
|
159
|
+
### Generic
|
|
160
|
+
|
|
146
161
|
| export | mask | example |
|
|
147
162
|
| --- | --- | --- |
|
|
148
163
|
| `card` | `9999 9999 9999 9999` | `4242 4242 4242 4242` |
|
|
164
|
+
|
|
165
|
+
### Kazakhstan
|
|
166
|
+
|
|
167
|
+
| export | mask | example |
|
|
168
|
+
| --- | --- | --- |
|
|
149
169
|
| `kzPhone` | `+7 (799) 999-99-99` | `+7 (701) 234-56-78` |
|
|
150
170
|
| `kzIin` | `999999999999` | `901010123458` |
|
|
151
171
|
| `kzBin` | `999999999999` | `150340004984` |
|
|
@@ -153,17 +173,56 @@ PRs adding other countries are welcome.
|
|
|
153
173
|
| `kzPlate` | `123 ABC 02` (letters `ABCEHKMNOPTXY`, uppercase) | `123 ABC 02` |
|
|
154
174
|
| `kzPostal` | `999999` | `050000` |
|
|
155
175
|
|
|
176
|
+
### Russia
|
|
177
|
+
|
|
178
|
+
| export | mask | example |
|
|
179
|
+
| --- | --- | --- |
|
|
180
|
+
| `ruPhone` | `+7 (999) 999-99-99` (first digit 3/4/8/9) | `+7 (912) 345-67-89` |
|
|
181
|
+
| `ruInnPerson` | `999999999999` | `500100732259` |
|
|
182
|
+
| `ruInnCompany` | `9999999999` | `7707083893` |
|
|
183
|
+
| `ruSnils` | `999-999-999 99` | `112-233-445 95` |
|
|
184
|
+
| `ruOgrn` | `9999999999999` | `1027700132195` |
|
|
185
|
+
| `ruOgrnip` | `999999999999999` | `304500116000157` |
|
|
186
|
+
| `ruKpp` | `9999**999` (uppercase) | `7707AB001` |
|
|
187
|
+
| `ruBik` | `999999999` | `044525225` |
|
|
188
|
+
| `ruAccount` | `99999 999 9 9999 9999999` | `40817 810 5 3809 1310419` |
|
|
189
|
+
| `ruIban` | `RU99 9999 9999 9999 99** **** **** **** *` (uppercase) | `RU03 0445 2522 5408 1781 0538 0913 1041 9` |
|
|
190
|
+
| `ruPlate` | `А 999 АА 999` (letters `АВЕКМНОРСТУХ`) | `А 123 ВС 77` |
|
|
191
|
+
| `ruPostal` | `999999` | `101000` |
|
|
192
|
+
| `ruPassport` | `9999 999999` | `4506 123456` |
|
|
193
|
+
|
|
194
|
+
Notes:
|
|
195
|
+
- `ruPlate` accepts Latin look-alikes (`A B E K M H O P C T Y X`) and stores **Cyrillic**.
|
|
196
|
+
Regions are 2 or 3 digits: with a 2-digit region the value ends with the placeholder
|
|
197
|
+
(`А 123 ВС 77_`). `isValidRuPlate` accepts both forms (a gap inside the plate is invalid); strip `_` before storing if you need the bare plate.
|
|
198
|
+
- `ruPlate` covers type-1 (passenger car) plates only — not taxi, trailer, motorcycle, or diplomatic plates.
|
|
199
|
+
- `ruPhone` expects the 10-digit national number. A number typed with the domestic
|
|
200
|
+
trunk prefix `8` (`8 912 …`) is read as area code `891`; `+7…` and `7…` input is handled.
|
|
201
|
+
|
|
156
202
|
## Validators
|
|
157
203
|
|
|
158
204
|
Optional checksum validators, separate entry point, zero-deps. Accept raw or formatted
|
|
159
205
|
input; return `false` on empty/invalid.
|
|
160
206
|
|
|
161
207
|
```jsx
|
|
162
|
-
import {
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
208
|
+
import {
|
|
209
|
+
isValidIin, isValidBin, isValidKzIban, luhn,
|
|
210
|
+
isValidRuInn, isValidRuSnils, isValidRuOgrn, isValidRuOgrnip,
|
|
211
|
+
isValidRuKpp, isValidRuBik, isValidRuAccount, isValidRuIban, isValidRuPlate
|
|
212
|
+
} from "react-input-mask-format/validators";
|
|
213
|
+
|
|
214
|
+
isValidIin("901010123458"); // KZ IIN/BIN mod-11 checksum
|
|
215
|
+
isValidKzIban("KZ86 125K ZT50 0410 0100"); // ISO 7064 MOD-97
|
|
216
|
+
luhn("4242 4242 4242 4242"); // card Luhn
|
|
217
|
+
|
|
218
|
+
isValidRuInn("7707083893"); // 10 (company) or 12 (person) digits
|
|
219
|
+
isValidRuSnils("112-233-445 95"); // mod-101; ≤ 001-001-998 not checked
|
|
220
|
+
isValidRuOgrn("1027700132195"); // OGRN (13) · isValidRuOgrnip — 15
|
|
221
|
+
isValidRuAccount("40817810538091310419", "044525225"); // account control key with BIK
|
|
222
|
+
isValidRuAccount("03100643000000018500", "017003983"); // treasury 03… accounts: structure only (no control key)
|
|
223
|
+
isValidRuIban("RU03 0445 2522 5408 1781 0538 0913 1041 9");
|
|
224
|
+
isValidRuPlate("А 123 ВС 77"); // region 2–3 digits, Latin look-alikes OK
|
|
225
|
+
isValidRuKpp("7707AB001"); isValidRuBik("044525225"); // format only (no checksum exists)
|
|
167
226
|
```
|
|
168
227
|
|
|
169
228
|
## `useMask` hook
|
|
@@ -242,6 +301,59 @@ The main differences: `decimalScale` **truncates** rather than rounds while
|
|
|
242
301
|
typing, and this package ships a single `NumberFormat` (no separate
|
|
243
302
|
`PatternFormat` — use the mask engine / `<InputMask>` for pattern masks).
|
|
244
303
|
|
|
304
|
+
## Time — `react-input-mask-format/time`
|
|
305
|
+
|
|
306
|
+
A separate, tree-shakeable entry for formatting times in 24-hour format (HH:MM).
|
|
307
|
+
|
|
308
|
+
```tsx
|
|
309
|
+
import { TimeFormat, useTimeFormat, formatTime } from "react-input-mask-format/time";
|
|
310
|
+
|
|
311
|
+
// controlled component
|
|
312
|
+
<TimeFormat value={time} onValueChange={(v) => setTime(v.value)} />
|
|
313
|
+
|
|
314
|
+
// bring-your-own input (e.g. a design-system Input)
|
|
315
|
+
const ref = useTimeFormat({ onValueChange: (v) => setTime(v.value) });
|
|
316
|
+
<input ref={ref} />
|
|
317
|
+
|
|
318
|
+
formatTime("2999"); // "23:59"
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
`onValueChange` receives `{ value, formattedValue, hours, minutes }`:
|
|
322
|
+
|
|
323
|
+
```txt
|
|
324
|
+
typing "1234" → value "12:34" formattedValue "12:34" hours 12 minutes 34
|
|
325
|
+
typing "12" → value "" formattedValue "12:" hours 12 minutes undefined
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
`value` remains empty until both hours and minutes are complete. The canonical
|
|
329
|
+
`value` always uses `:` as the separator, regardless of the display `separator`
|
|
330
|
+
option.
|
|
331
|
+
|
|
332
|
+
**Clamping**: When hours are complete (two digits), they're clamped to ≤23.
|
|
333
|
+
When minutes are complete, they're clamped to ≤59. A single digit is never
|
|
334
|
+
clamped.
|
|
335
|
+
|
|
336
|
+
Because an incomplete time has an empty canonical `value`, a controlled parent
|
|
337
|
+
that resets `value` to `""` won't visibly clear a partially-typed field; to
|
|
338
|
+
force-clear it, remount the input with a changed React `key`.
|
|
339
|
+
|
|
340
|
+
Options: `separator` (default `:`).
|
|
341
|
+
|
|
342
|
+
There is also a ref hook and the pure helpers:
|
|
343
|
+
|
|
344
|
+
```tsx
|
|
345
|
+
import { useTimeFormat, formatTime, parseTime } from "react-input-mask-format/time";
|
|
346
|
+
|
|
347
|
+
const ref = useTimeFormat({ separator: ":" });
|
|
348
|
+
// <input ref={ref} />
|
|
349
|
+
|
|
350
|
+
formatTime("2999", { separator: ":" }); // "23:59"
|
|
351
|
+
parseTime("14:30"); // { value: "14:30", formattedValue: "14:30", hours: 14, minutes: 30 }
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
**Reserved for a later minor release**: seconds (HH:MM:SS) and 12-hour format
|
|
355
|
+
with AM/PM.
|
|
356
|
+
|
|
245
357
|
### `maskPlaceholder`
|
|
246
358
|
|
|
247
359
|
```jsx
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// src/utils/ru-plate.ts
|
|
2
|
+
var RU_PLATE_LETTERS = "\u0410\u0412\u0415\u041A\u041C\u041D\u041E\u0420\u0421\u0422\u0423\u0425";
|
|
3
|
+
var LATIN_TO_CYRILLIC = {
|
|
4
|
+
A: "\u0410",
|
|
5
|
+
B: "\u0412",
|
|
6
|
+
E: "\u0415",
|
|
7
|
+
K: "\u041A",
|
|
8
|
+
M: "\u041C",
|
|
9
|
+
H: "\u041D",
|
|
10
|
+
O: "\u041E",
|
|
11
|
+
P: "\u0420",
|
|
12
|
+
C: "\u0421",
|
|
13
|
+
T: "\u0422",
|
|
14
|
+
Y: "\u0423",
|
|
15
|
+
X: "\u0425"
|
|
16
|
+
};
|
|
17
|
+
function toRuPlateChar(char) {
|
|
18
|
+
var _a;
|
|
19
|
+
const upper = char.toUpperCase();
|
|
20
|
+
return (_a = LATIN_TO_CYRILLIC[upper]) != null ? _a : upper;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export {
|
|
24
|
+
RU_PLATE_LETTERS,
|
|
25
|
+
toRuPlateChar
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=chunk-OMKRB5AE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/ru-plate.ts"],"sourcesContent":["// The 12 Cyrillic letters allowed on Russian plates (ГОСТ Р 50577-2018)\nexport const RU_PLATE_LETTERS = \"АВЕКМНОРСТУХ\";\n\n// Latin look-alikes a user may type on an English layout\nconst LATIN_TO_CYRILLIC: Record<string, string> = {\n A: \"А\", B: \"В\", E: \"Е\", K: \"К\", M: \"М\", H: \"Н\",\n O: \"О\", P: \"Р\", C: \"С\", T: \"Т\", Y: \"У\", X: \"Х\"\n};\n\nexport function toRuPlateChar(char: string): string {\n const upper = char.toUpperCase();\n return LATIN_TO_CYRILLIC[upper] ?? upper;\n}\n"],"mappings":";AACO,IAAM,mBAAmB;AAGhC,IAAM,oBAA4C;AAAA,EAChD,GAAG;AAAA,EAAK,GAAG;AAAA,EAAK,GAAG;AAAA,EAAK,GAAG;AAAA,EAAK,GAAG;AAAA,EAAK,GAAG;AAAA,EAC3C,GAAG;AAAA,EAAK,GAAG;AAAA,EAAK,GAAG;AAAA,EAAK,GAAG;AAAA,EAAK,GAAG;AAAA,EAAK,GAAG;AAC7C;AAEO,SAAS,cAAc,MAAsB;AATpD;AAUE,QAAM,QAAQ,KAAK,YAAY;AAC/B,UAAO,uBAAkB,KAAK,MAAvB,YAA4B;AACrC;","names":[]}
|
package/dist/presets.cjs
CHANGED
|
@@ -26,13 +26,30 @@ __export(presets_exports, {
|
|
|
26
26
|
kzIin: () => kzIin,
|
|
27
27
|
kzPhone: () => kzPhone,
|
|
28
28
|
kzPlate: () => kzPlate,
|
|
29
|
-
kzPostal: () => kzPostal
|
|
29
|
+
kzPostal: () => kzPostal,
|
|
30
|
+
ruAccount: () => ruAccount,
|
|
31
|
+
ruBik: () => ruBik,
|
|
32
|
+
ruIban: () => ruIban,
|
|
33
|
+
ruInnCompany: () => ruInnCompany,
|
|
34
|
+
ruInnPerson: () => ruInnPerson,
|
|
35
|
+
ruKpp: () => ruKpp,
|
|
36
|
+
ruOgrn: () => ruOgrn,
|
|
37
|
+
ruOgrnip: () => ruOgrnip,
|
|
38
|
+
ruPassport: () => ruPassport,
|
|
39
|
+
ruPhone: () => ruPhone,
|
|
40
|
+
ruPlate: () => ruPlate,
|
|
41
|
+
ruPostal: () => ruPostal,
|
|
42
|
+
ruSnils: () => ruSnils
|
|
30
43
|
});
|
|
31
44
|
module.exports = __toCommonJS(presets_exports);
|
|
45
|
+
|
|
46
|
+
// src/presets/generic.ts
|
|
32
47
|
var card = {
|
|
33
48
|
mask: "9999 9999 9999 9999",
|
|
34
49
|
maskPlaceholder: "_"
|
|
35
50
|
};
|
|
51
|
+
|
|
52
|
+
// src/presets/kz.ts
|
|
36
53
|
var kzPhone = {
|
|
37
54
|
mask: "+7 (799) 999-99-99",
|
|
38
55
|
maskPlaceholder: "_"
|
|
@@ -73,6 +90,126 @@ var kzPostal = {
|
|
|
73
90
|
mask: "999999",
|
|
74
91
|
maskPlaceholder: "_"
|
|
75
92
|
};
|
|
93
|
+
|
|
94
|
+
// src/utils/ru-plate.ts
|
|
95
|
+
var RU_PLATE_LETTERS = "\u0410\u0412\u0415\u041A\u041C\u041D\u041E\u0420\u0421\u0422\u0423\u0425";
|
|
96
|
+
var LATIN_TO_CYRILLIC = {
|
|
97
|
+
A: "\u0410",
|
|
98
|
+
B: "\u0412",
|
|
99
|
+
E: "\u0415",
|
|
100
|
+
K: "\u041A",
|
|
101
|
+
M: "\u041C",
|
|
102
|
+
H: "\u041D",
|
|
103
|
+
O: "\u041E",
|
|
104
|
+
P: "\u0420",
|
|
105
|
+
C: "\u0421",
|
|
106
|
+
T: "\u0422",
|
|
107
|
+
Y: "\u0423",
|
|
108
|
+
X: "\u0425"
|
|
109
|
+
};
|
|
110
|
+
function toRuPlateChar(char) {
|
|
111
|
+
var _a;
|
|
112
|
+
const upper = char.toUpperCase();
|
|
113
|
+
return (_a = LATIN_TO_CYRILLIC[upper]) != null ? _a : upper;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// src/presets/ru.ts
|
|
117
|
+
var DIGIT = /[0-9]/;
|
|
118
|
+
var ruPhone = {
|
|
119
|
+
// national number starts with 3/4/8/9; 6/7 belong to Kazakhstan
|
|
120
|
+
mask: [
|
|
121
|
+
"+",
|
|
122
|
+
"7",
|
|
123
|
+
" ",
|
|
124
|
+
"(",
|
|
125
|
+
/[3489]/,
|
|
126
|
+
DIGIT,
|
|
127
|
+
DIGIT,
|
|
128
|
+
")",
|
|
129
|
+
" ",
|
|
130
|
+
DIGIT,
|
|
131
|
+
DIGIT,
|
|
132
|
+
DIGIT,
|
|
133
|
+
"-",
|
|
134
|
+
DIGIT,
|
|
135
|
+
DIGIT,
|
|
136
|
+
"-",
|
|
137
|
+
DIGIT,
|
|
138
|
+
DIGIT
|
|
139
|
+
],
|
|
140
|
+
maskPlaceholder: "_"
|
|
141
|
+
};
|
|
142
|
+
var ruInnPerson = {
|
|
143
|
+
mask: "999999999999",
|
|
144
|
+
maskPlaceholder: "_"
|
|
145
|
+
};
|
|
146
|
+
var ruInnCompany = {
|
|
147
|
+
mask: "9999999999",
|
|
148
|
+
maskPlaceholder: "_"
|
|
149
|
+
};
|
|
150
|
+
var ruSnils = {
|
|
151
|
+
mask: "999-999-999 99",
|
|
152
|
+
maskPlaceholder: "_"
|
|
153
|
+
};
|
|
154
|
+
var ruOgrn = {
|
|
155
|
+
mask: "9999999999999",
|
|
156
|
+
maskPlaceholder: "_"
|
|
157
|
+
};
|
|
158
|
+
var ruOgrnip = {
|
|
159
|
+
mask: "999999999999999",
|
|
160
|
+
maskPlaceholder: "_"
|
|
161
|
+
};
|
|
162
|
+
var ruKpp = {
|
|
163
|
+
// positions 5-6 may be Latin A-Z
|
|
164
|
+
mask: "9999**999",
|
|
165
|
+
maskPlaceholder: "_",
|
|
166
|
+
transform: "uppercase"
|
|
167
|
+
};
|
|
168
|
+
var ruBik = {
|
|
169
|
+
mask: "999999999",
|
|
170
|
+
maskPlaceholder: "_"
|
|
171
|
+
};
|
|
172
|
+
var ruAccount = {
|
|
173
|
+
// balance account · currency · check key · branch · account
|
|
174
|
+
mask: "99999 999 9 9999 9999999",
|
|
175
|
+
maskPlaceholder: "_"
|
|
176
|
+
};
|
|
177
|
+
var ruIban = {
|
|
178
|
+
// RU + 2 check + BIK (9) + 5 digits + 15 alnum, grouped by 4
|
|
179
|
+
mask: "RU99 9999 9999 9999 99** **** **** **** *",
|
|
180
|
+
maskPlaceholder: "_",
|
|
181
|
+
transform: "uppercase"
|
|
182
|
+
};
|
|
183
|
+
var RU_PLATE_LETTER = new RegExp(`[${RU_PLATE_LETTERS}]`);
|
|
184
|
+
var ruPlate = {
|
|
185
|
+
// letter · 3 digits · 2 letters · region (2 or 3 digits). A 2-digit region
|
|
186
|
+
// leaves the trailing placeholder (А 123 ВС 77_), which isValidRuPlate accepts.
|
|
187
|
+
mask: [
|
|
188
|
+
RU_PLATE_LETTER,
|
|
189
|
+
" ",
|
|
190
|
+
DIGIT,
|
|
191
|
+
DIGIT,
|
|
192
|
+
DIGIT,
|
|
193
|
+
" ",
|
|
194
|
+
RU_PLATE_LETTER,
|
|
195
|
+
RU_PLATE_LETTER,
|
|
196
|
+
" ",
|
|
197
|
+
DIGIT,
|
|
198
|
+
DIGIT,
|
|
199
|
+
DIGIT
|
|
200
|
+
],
|
|
201
|
+
maskPlaceholder: "_",
|
|
202
|
+
transform: toRuPlateChar
|
|
203
|
+
};
|
|
204
|
+
var ruPostal = {
|
|
205
|
+
mask: "999999",
|
|
206
|
+
maskPlaceholder: "_"
|
|
207
|
+
};
|
|
208
|
+
var ruPassport = {
|
|
209
|
+
// series (4) + number (6), as entered on Gosuslugi
|
|
210
|
+
mask: "9999 999999",
|
|
211
|
+
maskPlaceholder: "_"
|
|
212
|
+
};
|
|
76
213
|
// Annotate the CommonJS export names for ESM import in node:
|
|
77
214
|
0 && (module.exports = {
|
|
78
215
|
card,
|
|
@@ -81,6 +218,19 @@ var kzPostal = {
|
|
|
81
218
|
kzIin,
|
|
82
219
|
kzPhone,
|
|
83
220
|
kzPlate,
|
|
84
|
-
kzPostal
|
|
221
|
+
kzPostal,
|
|
222
|
+
ruAccount,
|
|
223
|
+
ruBik,
|
|
224
|
+
ruIban,
|
|
225
|
+
ruInnCompany,
|
|
226
|
+
ruInnPerson,
|
|
227
|
+
ruKpp,
|
|
228
|
+
ruOgrn,
|
|
229
|
+
ruOgrnip,
|
|
230
|
+
ruPassport,
|
|
231
|
+
ruPhone,
|
|
232
|
+
ruPlate,
|
|
233
|
+
ruPostal,
|
|
234
|
+
ruSnils
|
|
85
235
|
});
|
|
86
236
|
//# sourceMappingURL=presets.cjs.map
|
package/dist/presets.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/presets/index.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["../src/presets/index.ts","../src/presets/generic.ts","../src/presets/kz.ts","../src/utils/ru-plate.ts","../src/presets/ru.ts"],"sourcesContent":["export type { MaskPreset } from \"./types\";\nexport * from \"./generic\";\nexport * from \"./kz\";\nexport * from \"./ru\";\n","import type { MaskPreset } from \"./types\";\n\nexport const card: MaskPreset = {\n mask: \"9999 9999 9999 9999\",\n maskPlaceholder: \"_\"\n};\n","import type { MaskPreset } from \"./types\";\n\nexport const kzPhone: MaskPreset = {\n mask: \"+7 (799) 999-99-99\",\n maskPlaceholder: \"_\"\n};\n\nexport const kzIin: MaskPreset = {\n mask: \"999999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const kzBin: MaskPreset = {\n mask: \"999999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const kzIban: MaskPreset = {\n // KZ + 2 check + 3 bank digits + 13 alnum account, grouped by 4\n mask: \"KZ99 999* **** **** ****\",\n maskPlaceholder: \"_\",\n transform: \"uppercase\"\n};\n\nconst KZ_PLATE_LETTER = /[ABCEHKMNOPTXY]/i;\nexport const kzPlate: MaskPreset = {\n // 3 digits · 3 letters (Latin look-alikes of Cyrillic) · 2-digit region\n mask: [\n /[0-9]/, /[0-9]/, /[0-9]/, \" \",\n KZ_PLATE_LETTER, KZ_PLATE_LETTER, KZ_PLATE_LETTER, \" \",\n /[0-9]/, /[0-9]/\n ],\n maskPlaceholder: \"_\",\n transform: \"uppercase\"\n};\n\nexport const kzPostal: MaskPreset = {\n mask: \"999999\",\n maskPlaceholder: \"_\"\n};\n","// The 12 Cyrillic letters allowed on Russian plates (ГОСТ Р 50577-2018)\nexport const RU_PLATE_LETTERS = \"АВЕКМНОРСТУХ\";\n\n// Latin look-alikes a user may type on an English layout\nconst LATIN_TO_CYRILLIC: Record<string, string> = {\n A: \"А\", B: \"В\", E: \"Е\", K: \"К\", M: \"М\", H: \"Н\",\n O: \"О\", P: \"Р\", C: \"С\", T: \"Т\", Y: \"У\", X: \"Х\"\n};\n\nexport function toRuPlateChar(char: string): string {\n const upper = char.toUpperCase();\n return LATIN_TO_CYRILLIC[upper] ?? upper;\n}\n","import type { MaskPreset } from \"./types\";\nimport { RU_PLATE_LETTERS, toRuPlateChar } from \"../utils/ru-plate\";\n\nconst DIGIT = /[0-9]/;\n\nexport const ruPhone: MaskPreset = {\n // national number starts with 3/4/8/9; 6/7 belong to Kazakhstan\n mask: [\n \"+\", \"7\", \" \", \"(\", /[3489]/, DIGIT, DIGIT, \")\", \" \",\n DIGIT, DIGIT, DIGIT, \"-\", DIGIT, DIGIT, \"-\", DIGIT, DIGIT\n ],\n maskPlaceholder: \"_\"\n};\n\nexport const ruInnPerson: MaskPreset = {\n mask: \"999999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruInnCompany: MaskPreset = {\n mask: \"9999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruSnils: MaskPreset = {\n mask: \"999-999-999 99\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruOgrn: MaskPreset = {\n mask: \"9999999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruOgrnip: MaskPreset = {\n mask: \"999999999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruKpp: MaskPreset = {\n // positions 5-6 may be Latin A-Z\n mask: \"9999**999\",\n maskPlaceholder: \"_\",\n transform: \"uppercase\"\n};\n\nexport const ruBik: MaskPreset = {\n mask: \"999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruAccount: MaskPreset = {\n // balance account · currency · check key · branch · account\n mask: \"99999 999 9 9999 9999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruIban: MaskPreset = {\n // RU + 2 check + BIK (9) + 5 digits + 15 alnum, grouped by 4\n mask: \"RU99 9999 9999 9999 99** **** **** **** *\",\n maskPlaceholder: \"_\",\n transform: \"uppercase\"\n};\n\nconst RU_PLATE_LETTER = new RegExp(`[${RU_PLATE_LETTERS}]`);\nexport const ruPlate: MaskPreset = {\n // letter · 3 digits · 2 letters · region (2 or 3 digits). A 2-digit region\n // leaves the trailing placeholder (А 123 ВС 77_), which isValidRuPlate accepts.\n mask: [\n RU_PLATE_LETTER, \" \", DIGIT, DIGIT, DIGIT, \" \",\n RU_PLATE_LETTER, RU_PLATE_LETTER, \" \", DIGIT, DIGIT, DIGIT\n ],\n maskPlaceholder: \"_\",\n transform: toRuPlateChar\n};\n\nexport const ruPostal: MaskPreset = {\n mask: \"999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruPassport: MaskPreset = {\n // series (4) + number (6), as entered on Gosuslugi\n mask: \"9999 999999\",\n maskPlaceholder: \"_\"\n};\n"],"mappings":"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","names":[]}
|
package/dist/presets.d.cts
CHANGED
|
@@ -7,7 +7,9 @@ interface MaskPreset {
|
|
|
7
7
|
transform?: Transform;
|
|
8
8
|
formatChars?: FormatChars;
|
|
9
9
|
}
|
|
10
|
+
|
|
10
11
|
declare const card: MaskPreset;
|
|
12
|
+
|
|
11
13
|
declare const kzPhone: MaskPreset;
|
|
12
14
|
declare const kzIin: MaskPreset;
|
|
13
15
|
declare const kzBin: MaskPreset;
|
|
@@ -15,4 +17,18 @@ declare const kzIban: MaskPreset;
|
|
|
15
17
|
declare const kzPlate: MaskPreset;
|
|
16
18
|
declare const kzPostal: MaskPreset;
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
declare const ruPhone: MaskPreset;
|
|
21
|
+
declare const ruInnPerson: MaskPreset;
|
|
22
|
+
declare const ruInnCompany: MaskPreset;
|
|
23
|
+
declare const ruSnils: MaskPreset;
|
|
24
|
+
declare const ruOgrn: MaskPreset;
|
|
25
|
+
declare const ruOgrnip: MaskPreset;
|
|
26
|
+
declare const ruKpp: MaskPreset;
|
|
27
|
+
declare const ruBik: MaskPreset;
|
|
28
|
+
declare const ruAccount: MaskPreset;
|
|
29
|
+
declare const ruIban: MaskPreset;
|
|
30
|
+
declare const ruPlate: MaskPreset;
|
|
31
|
+
declare const ruPostal: MaskPreset;
|
|
32
|
+
declare const ruPassport: MaskPreset;
|
|
33
|
+
|
|
34
|
+
export { type MaskPreset, card, kzBin, kzIban, kzIin, kzPhone, kzPlate, kzPostal, ruAccount, ruBik, ruIban, ruInnCompany, ruInnPerson, ruKpp, ruOgrn, ruOgrnip, ruPassport, ruPhone, ruPlate, ruPostal, ruSnils };
|
package/dist/presets.d.ts
CHANGED
|
@@ -7,7 +7,9 @@ interface MaskPreset {
|
|
|
7
7
|
transform?: Transform;
|
|
8
8
|
formatChars?: FormatChars;
|
|
9
9
|
}
|
|
10
|
+
|
|
10
11
|
declare const card: MaskPreset;
|
|
12
|
+
|
|
11
13
|
declare const kzPhone: MaskPreset;
|
|
12
14
|
declare const kzIin: MaskPreset;
|
|
13
15
|
declare const kzBin: MaskPreset;
|
|
@@ -15,4 +17,18 @@ declare const kzIban: MaskPreset;
|
|
|
15
17
|
declare const kzPlate: MaskPreset;
|
|
16
18
|
declare const kzPostal: MaskPreset;
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
declare const ruPhone: MaskPreset;
|
|
21
|
+
declare const ruInnPerson: MaskPreset;
|
|
22
|
+
declare const ruInnCompany: MaskPreset;
|
|
23
|
+
declare const ruSnils: MaskPreset;
|
|
24
|
+
declare const ruOgrn: MaskPreset;
|
|
25
|
+
declare const ruOgrnip: MaskPreset;
|
|
26
|
+
declare const ruKpp: MaskPreset;
|
|
27
|
+
declare const ruBik: MaskPreset;
|
|
28
|
+
declare const ruAccount: MaskPreset;
|
|
29
|
+
declare const ruIban: MaskPreset;
|
|
30
|
+
declare const ruPlate: MaskPreset;
|
|
31
|
+
declare const ruPostal: MaskPreset;
|
|
32
|
+
declare const ruPassport: MaskPreset;
|
|
33
|
+
|
|
34
|
+
export { type MaskPreset, card, kzBin, kzIban, kzIin, kzPhone, kzPlate, kzPostal, ruAccount, ruBik, ruIban, ruInnCompany, ruInnPerson, ruKpp, ruOgrn, ruOgrnip, ruPassport, ruPhone, ruPlate, ruPostal, ruSnils };
|
package/dist/presets.js
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
import {
|
|
2
|
+
RU_PLATE_LETTERS,
|
|
3
|
+
toRuPlateChar
|
|
4
|
+
} from "./chunk-OMKRB5AE.js";
|
|
5
|
+
|
|
6
|
+
// src/presets/generic.ts
|
|
2
7
|
var card = {
|
|
3
8
|
mask: "9999 9999 9999 9999",
|
|
4
9
|
maskPlaceholder: "_"
|
|
5
10
|
};
|
|
11
|
+
|
|
12
|
+
// src/presets/kz.ts
|
|
6
13
|
var kzPhone = {
|
|
7
14
|
mask: "+7 (799) 999-99-99",
|
|
8
15
|
maskPlaceholder: "_"
|
|
@@ -43,6 +50,104 @@ var kzPostal = {
|
|
|
43
50
|
mask: "999999",
|
|
44
51
|
maskPlaceholder: "_"
|
|
45
52
|
};
|
|
53
|
+
|
|
54
|
+
// src/presets/ru.ts
|
|
55
|
+
var DIGIT = /[0-9]/;
|
|
56
|
+
var ruPhone = {
|
|
57
|
+
// national number starts with 3/4/8/9; 6/7 belong to Kazakhstan
|
|
58
|
+
mask: [
|
|
59
|
+
"+",
|
|
60
|
+
"7",
|
|
61
|
+
" ",
|
|
62
|
+
"(",
|
|
63
|
+
/[3489]/,
|
|
64
|
+
DIGIT,
|
|
65
|
+
DIGIT,
|
|
66
|
+
")",
|
|
67
|
+
" ",
|
|
68
|
+
DIGIT,
|
|
69
|
+
DIGIT,
|
|
70
|
+
DIGIT,
|
|
71
|
+
"-",
|
|
72
|
+
DIGIT,
|
|
73
|
+
DIGIT,
|
|
74
|
+
"-",
|
|
75
|
+
DIGIT,
|
|
76
|
+
DIGIT
|
|
77
|
+
],
|
|
78
|
+
maskPlaceholder: "_"
|
|
79
|
+
};
|
|
80
|
+
var ruInnPerson = {
|
|
81
|
+
mask: "999999999999",
|
|
82
|
+
maskPlaceholder: "_"
|
|
83
|
+
};
|
|
84
|
+
var ruInnCompany = {
|
|
85
|
+
mask: "9999999999",
|
|
86
|
+
maskPlaceholder: "_"
|
|
87
|
+
};
|
|
88
|
+
var ruSnils = {
|
|
89
|
+
mask: "999-999-999 99",
|
|
90
|
+
maskPlaceholder: "_"
|
|
91
|
+
};
|
|
92
|
+
var ruOgrn = {
|
|
93
|
+
mask: "9999999999999",
|
|
94
|
+
maskPlaceholder: "_"
|
|
95
|
+
};
|
|
96
|
+
var ruOgrnip = {
|
|
97
|
+
mask: "999999999999999",
|
|
98
|
+
maskPlaceholder: "_"
|
|
99
|
+
};
|
|
100
|
+
var ruKpp = {
|
|
101
|
+
// positions 5-6 may be Latin A-Z
|
|
102
|
+
mask: "9999**999",
|
|
103
|
+
maskPlaceholder: "_",
|
|
104
|
+
transform: "uppercase"
|
|
105
|
+
};
|
|
106
|
+
var ruBik = {
|
|
107
|
+
mask: "999999999",
|
|
108
|
+
maskPlaceholder: "_"
|
|
109
|
+
};
|
|
110
|
+
var ruAccount = {
|
|
111
|
+
// balance account · currency · check key · branch · account
|
|
112
|
+
mask: "99999 999 9 9999 9999999",
|
|
113
|
+
maskPlaceholder: "_"
|
|
114
|
+
};
|
|
115
|
+
var ruIban = {
|
|
116
|
+
// RU + 2 check + BIK (9) + 5 digits + 15 alnum, grouped by 4
|
|
117
|
+
mask: "RU99 9999 9999 9999 99** **** **** **** *",
|
|
118
|
+
maskPlaceholder: "_",
|
|
119
|
+
transform: "uppercase"
|
|
120
|
+
};
|
|
121
|
+
var RU_PLATE_LETTER = new RegExp(`[${RU_PLATE_LETTERS}]`);
|
|
122
|
+
var ruPlate = {
|
|
123
|
+
// letter · 3 digits · 2 letters · region (2 or 3 digits). A 2-digit region
|
|
124
|
+
// leaves the trailing placeholder (А 123 ВС 77_), which isValidRuPlate accepts.
|
|
125
|
+
mask: [
|
|
126
|
+
RU_PLATE_LETTER,
|
|
127
|
+
" ",
|
|
128
|
+
DIGIT,
|
|
129
|
+
DIGIT,
|
|
130
|
+
DIGIT,
|
|
131
|
+
" ",
|
|
132
|
+
RU_PLATE_LETTER,
|
|
133
|
+
RU_PLATE_LETTER,
|
|
134
|
+
" ",
|
|
135
|
+
DIGIT,
|
|
136
|
+
DIGIT,
|
|
137
|
+
DIGIT
|
|
138
|
+
],
|
|
139
|
+
maskPlaceholder: "_",
|
|
140
|
+
transform: toRuPlateChar
|
|
141
|
+
};
|
|
142
|
+
var ruPostal = {
|
|
143
|
+
mask: "999999",
|
|
144
|
+
maskPlaceholder: "_"
|
|
145
|
+
};
|
|
146
|
+
var ruPassport = {
|
|
147
|
+
// series (4) + number (6), as entered on Gosuslugi
|
|
148
|
+
mask: "9999 999999",
|
|
149
|
+
maskPlaceholder: "_"
|
|
150
|
+
};
|
|
46
151
|
export {
|
|
47
152
|
card,
|
|
48
153
|
kzBin,
|
|
@@ -50,6 +155,19 @@ export {
|
|
|
50
155
|
kzIin,
|
|
51
156
|
kzPhone,
|
|
52
157
|
kzPlate,
|
|
53
|
-
kzPostal
|
|
158
|
+
kzPostal,
|
|
159
|
+
ruAccount,
|
|
160
|
+
ruBik,
|
|
161
|
+
ruIban,
|
|
162
|
+
ruInnCompany,
|
|
163
|
+
ruInnPerson,
|
|
164
|
+
ruKpp,
|
|
165
|
+
ruOgrn,
|
|
166
|
+
ruOgrnip,
|
|
167
|
+
ruPassport,
|
|
168
|
+
ruPhone,
|
|
169
|
+
ruPlate,
|
|
170
|
+
ruPostal,
|
|
171
|
+
ruSnils
|
|
54
172
|
};
|
|
55
173
|
//# sourceMappingURL=presets.js.map
|
package/dist/presets.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/presets/
|
|
1
|
+
{"version":3,"sources":["../src/presets/generic.ts","../src/presets/kz.ts","../src/presets/ru.ts"],"sourcesContent":["import type { MaskPreset } from \"./types\";\n\nexport const card: MaskPreset = {\n mask: \"9999 9999 9999 9999\",\n maskPlaceholder: \"_\"\n};\n","import type { MaskPreset } from \"./types\";\n\nexport const kzPhone: MaskPreset = {\n mask: \"+7 (799) 999-99-99\",\n maskPlaceholder: \"_\"\n};\n\nexport const kzIin: MaskPreset = {\n mask: \"999999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const kzBin: MaskPreset = {\n mask: \"999999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const kzIban: MaskPreset = {\n // KZ + 2 check + 3 bank digits + 13 alnum account, grouped by 4\n mask: \"KZ99 999* **** **** ****\",\n maskPlaceholder: \"_\",\n transform: \"uppercase\"\n};\n\nconst KZ_PLATE_LETTER = /[ABCEHKMNOPTXY]/i;\nexport const kzPlate: MaskPreset = {\n // 3 digits · 3 letters (Latin look-alikes of Cyrillic) · 2-digit region\n mask: [\n /[0-9]/, /[0-9]/, /[0-9]/, \" \",\n KZ_PLATE_LETTER, KZ_PLATE_LETTER, KZ_PLATE_LETTER, \" \",\n /[0-9]/, /[0-9]/\n ],\n maskPlaceholder: \"_\",\n transform: \"uppercase\"\n};\n\nexport const kzPostal: MaskPreset = {\n mask: \"999999\",\n maskPlaceholder: \"_\"\n};\n","import type { MaskPreset } from \"./types\";\nimport { RU_PLATE_LETTERS, toRuPlateChar } from \"../utils/ru-plate\";\n\nconst DIGIT = /[0-9]/;\n\nexport const ruPhone: MaskPreset = {\n // national number starts with 3/4/8/9; 6/7 belong to Kazakhstan\n mask: [\n \"+\", \"7\", \" \", \"(\", /[3489]/, DIGIT, DIGIT, \")\", \" \",\n DIGIT, DIGIT, DIGIT, \"-\", DIGIT, DIGIT, \"-\", DIGIT, DIGIT\n ],\n maskPlaceholder: \"_\"\n};\n\nexport const ruInnPerson: MaskPreset = {\n mask: \"999999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruInnCompany: MaskPreset = {\n mask: \"9999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruSnils: MaskPreset = {\n mask: \"999-999-999 99\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruOgrn: MaskPreset = {\n mask: \"9999999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruOgrnip: MaskPreset = {\n mask: \"999999999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruKpp: MaskPreset = {\n // positions 5-6 may be Latin A-Z\n mask: \"9999**999\",\n maskPlaceholder: \"_\",\n transform: \"uppercase\"\n};\n\nexport const ruBik: MaskPreset = {\n mask: \"999999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruAccount: MaskPreset = {\n // balance account · currency · check key · branch · account\n mask: \"99999 999 9 9999 9999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruIban: MaskPreset = {\n // RU + 2 check + BIK (9) + 5 digits + 15 alnum, grouped by 4\n mask: \"RU99 9999 9999 9999 99** **** **** **** *\",\n maskPlaceholder: \"_\",\n transform: \"uppercase\"\n};\n\nconst RU_PLATE_LETTER = new RegExp(`[${RU_PLATE_LETTERS}]`);\nexport const ruPlate: MaskPreset = {\n // letter · 3 digits · 2 letters · region (2 or 3 digits). A 2-digit region\n // leaves the trailing placeholder (А 123 ВС 77_), which isValidRuPlate accepts.\n mask: [\n RU_PLATE_LETTER, \" \", DIGIT, DIGIT, DIGIT, \" \",\n RU_PLATE_LETTER, RU_PLATE_LETTER, \" \", DIGIT, DIGIT, DIGIT\n ],\n maskPlaceholder: \"_\",\n transform: toRuPlateChar\n};\n\nexport const ruPostal: MaskPreset = {\n mask: \"999999\",\n maskPlaceholder: \"_\"\n};\n\nexport const ruPassport: MaskPreset = {\n // series (4) + number (6), as entered on Gosuslugi\n mask: \"9999 999999\",\n maskPlaceholder: \"_\"\n};\n"],"mappings":";;;;;;AAEO,IAAM,OAAmB;AAAA,EAC9B,MAAM;AAAA,EACN,iBAAiB;AACnB;;;ACHO,IAAM,UAAsB;AAAA,EACjC,MAAM;AAAA,EACN,iBAAiB;AACnB;AAEO,IAAM,QAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,iBAAiB;AACnB;AAEO,IAAM,QAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,iBAAiB;AACnB;AAEO,IAAM,SAAqB;AAAA;AAAA,EAEhC,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,WAAW;AACb;AAEA,IAAM,kBAAkB;AACjB,IAAM,UAAsB;AAAA;AAAA,EAEjC,MAAM;AAAA,IACJ;AAAA,IAAS;AAAA,IAAS;AAAA,IAAS;AAAA,IAC3B;AAAA,IAAiB;AAAA,IAAiB;AAAA,IAAiB;AAAA,IACnD;AAAA,IAAS;AAAA,EACX;AAAA,EACA,iBAAiB;AAAA,EACjB,WAAW;AACb;AAEO,IAAM,WAAuB;AAAA,EAClC,MAAM;AAAA,EACN,iBAAiB;AACnB;;;ACpCA,IAAM,QAAQ;AAEP,IAAM,UAAsB;AAAA;AAAA,EAEjC,MAAM;AAAA,IACJ;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAK;AAAA,IAAU;AAAA,IAAO;AAAA,IAAO;AAAA,IAAK;AAAA,IACjD;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAAK;AAAA,IAAO;AAAA,IAAO;AAAA,IAAK;AAAA,IAAO;AAAA,EACtD;AAAA,EACA,iBAAiB;AACnB;AAEO,IAAM,cAA0B;AAAA,EACrC,MAAM;AAAA,EACN,iBAAiB;AACnB;AAEO,IAAM,eAA2B;AAAA,EACtC,MAAM;AAAA,EACN,iBAAiB;AACnB;AAEO,IAAM,UAAsB;AAAA,EACjC,MAAM;AAAA,EACN,iBAAiB;AACnB;AAEO,IAAM,SAAqB;AAAA,EAChC,MAAM;AAAA,EACN,iBAAiB;AACnB;AAEO,IAAM,WAAuB;AAAA,EAClC,MAAM;AAAA,EACN,iBAAiB;AACnB;AAEO,IAAM,QAAoB;AAAA;AAAA,EAE/B,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,WAAW;AACb;AAEO,IAAM,QAAoB;AAAA,EAC/B,MAAM;AAAA,EACN,iBAAiB;AACnB;AAEO,IAAM,YAAwB;AAAA;AAAA,EAEnC,MAAM;AAAA,EACN,iBAAiB;AACnB;AAEO,IAAM,SAAqB;AAAA;AAAA,EAEhC,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,WAAW;AACb;AAEA,IAAM,kBAAkB,IAAI,OAAO,IAAI,gBAAgB,GAAG;AACnD,IAAM,UAAsB;AAAA;AAAA;AAAA,EAGjC,MAAM;AAAA,IACJ;AAAA,IAAiB;AAAA,IAAK;AAAA,IAAO;AAAA,IAAO;AAAA,IAAO;AAAA,IAC3C;AAAA,IAAiB;AAAA,IAAiB;AAAA,IAAK;AAAA,IAAO;AAAA,IAAO;AAAA,EACvD;AAAA,EACA,iBAAiB;AAAA,EACjB,WAAW;AACb;AAEO,IAAM,WAAuB;AAAA,EAClC,MAAM;AAAA,EACN,iBAAiB;AACnB;AAEO,IAAM,aAAyB;AAAA;AAAA,EAEpC,MAAM;AAAA,EACN,iBAAiB;AACnB;","names":[]}
|