@scbt-ecom/ui 0.61.2 → 0.61.3

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.
@@ -1,5 +1,5 @@
1
1
  import { f as N, D as m, z as a, p as I, i as T, s as A } from "./utils-Cc0awqbk.js";
2
- import { T as c } from "./typeGuards-Bhdr9KYW.js";
2
+ import { T as _ } from "./typeGuards-Bhdr9KYW.js";
3
3
  const s = {
4
4
  NON_EMPTY: () => "Поле не может быть пустым",
5
5
  MIN_LENGTH: (e) => `Поле должно содержать минимум символов: ${e}`,
@@ -19,50 +19,50 @@ const s = {
19
19
  DATE_NON_EMPTY: () => "Укажите дату",
20
20
  VALUE_OUT_OF_RANGE: (e) => `Выберите один из вариантов ${e.join(", ")}`,
21
21
  DATE_MIN: (e) => {
22
- const t = c.isString(e) ? new Date(e) : e;
22
+ const t = _.isString(e) ? new Date(e) : e;
23
23
  return `Выбранная дата должна быть не раньше ${N(t)}`;
24
24
  },
25
25
  DATE_MAX: (e) => {
26
- const t = c.isString(e) ? new Date(e) : e;
26
+ const t = _.isString(e) ? new Date(e) : e;
27
27
  return `Выбранная дата должна быть не позже ${N(t)}`;
28
28
  },
29
29
  INVALID_URL: () => "Ссылка введена некорректно. Пример: https://example.com, example.com"
30
30
  }, S = (e) => {
31
31
  const { iso: t = !0, pattern: d = m, min: r, max: n, message: i } = e || {};
32
- return a.string().min(8, (i == null ? void 0 : i.min) || s.DATE_NON_EMPTY()).superRefine((u, l) => {
32
+ return a.string().min(8, (i == null ? void 0 : i.min) || s.DATE_NON_EMPTY()).superRefine((l, u) => {
33
33
  const o = d.replace(/\W/g, "").length;
34
- if (u.replace(/[._-]/g, "").length < o && l.addIssue({
34
+ if (l.replace(/[._-]/g, "").length < o && u.addIssue({
35
35
  code: a.ZodIssueCode.too_small,
36
36
  minimum: o,
37
37
  type: "date",
38
38
  inclusive: !0,
39
39
  message: (i == null ? void 0 : i.min) || s.DATE_NON_EMPTY()
40
40
  }), t) {
41
- let _ = null;
41
+ let c = null;
42
42
  try {
43
- _ = new Date(u);
43
+ c = new Date(l);
44
44
  } catch {
45
- l.addIssue({
45
+ u.addIssue({
46
46
  code: a.ZodIssueCode.invalid_date,
47
47
  message: (i == null ? void 0 : i.invalidDate) || s.DATE_INVALID_FORMAT()
48
48
  });
49
49
  }
50
- r && _.getTime() < (c.isString(r) ? new Date(r).getTime() : r.getTime()) && l.addIssue({
50
+ r && c.getTime() < (_.isString(r) ? new Date(r).getTime() : r.getTime()) && u.addIssue({
51
51
  code: a.ZodIssueCode.invalid_date,
52
52
  message: (i == null ? void 0 : i.min) || s.DATE_MIN(r)
53
- }), n && _.getTime() > (c.isString(n) ? new Date(n).getTime() : n.getTime()) && l.addIssue({
53
+ }), n && c.getTime() > (_.isString(n) ? new Date(n).getTime() : n.getTime()) && u.addIssue({
54
54
  code: a.ZodIssueCode.invalid_date,
55
55
  message: (i == null ? void 0 : i.max) || s.DATE_MAX(n)
56
56
  });
57
57
  } else {
58
- const _ = I(u, d, /* @__PURE__ */ new Date());
59
- T(_) || l.addIssue({
58
+ const c = I(l, d, /* @__PURE__ */ new Date());
59
+ T(c) || u.addIssue({
60
60
  code: a.ZodIssueCode.invalid_date,
61
61
  message: (i == null ? void 0 : i.invalidDate) || s.DATE_INVALID_FORMAT()
62
- }), r && _.getTime() < (c.isString(r) ? new Date(r).getTime() : r.getTime()) && l.addIssue({
62
+ }), r && c.getTime() < (_.isString(r) ? new Date(r).getTime() : r.getTime()) && u.addIssue({
63
63
  code: a.ZodIssueCode.invalid_date,
64
64
  message: (i == null ? void 0 : i.min) || s.DATE_MIN(r)
65
- }), n && _.getTime() > (c.isString(n) ? new Date(n).getTime() : n.getTime()) && l.addIssue({
65
+ }), n && c.getTime() > (_.isString(n) ? new Date(n).getTime() : n.getTime()) && u.addIssue({
66
66
  code: a.ZodIssueCode.invalid_date,
67
67
  message: (i == null ? void 0 : i.max) || s.DATE_MAX(n)
68
68
  });
@@ -70,41 +70,41 @@ const s = {
70
70
  }).default("");
71
71
  }, C = (e) => {
72
72
  const { iso: t = !0, pattern: d = m, min: r, max: n, message: i } = e || {};
73
- return a.string().transform((u) => u || void 0).superRefine((u, l) => {
74
- if (c.isString(u) && u.length) {
73
+ return a.string().transform((l) => l || void 0).superRefine((l, u) => {
74
+ if (_.isString(l) && l.length) {
75
75
  const o = d.replace(/\W/g, "").length;
76
- if (u.replace(/[._-]/g, "").length < o && l.addIssue({
76
+ if (l.replace(/[._-]/g, "").length < o && u.addIssue({
77
77
  code: a.ZodIssueCode.too_small,
78
78
  minimum: o,
79
79
  type: "date",
80
80
  inclusive: !0,
81
81
  message: (i == null ? void 0 : i.min) || s.DATE_NON_EMPTY()
82
82
  }), t) {
83
- let _ = null;
83
+ let c = null;
84
84
  try {
85
- _ = new Date(u);
85
+ c = new Date(l);
86
86
  } catch {
87
- l.addIssue({
87
+ u.addIssue({
88
88
  code: a.ZodIssueCode.invalid_date,
89
89
  message: (i == null ? void 0 : i.invalidDate) || s.DATE_INVALID_FORMAT()
90
90
  });
91
91
  }
92
- r && _.getTime() < (c.isString(r) ? new Date(r).getTime() : r.getTime()) && l.addIssue({
92
+ r && c.getTime() < (_.isString(r) ? new Date(r).getTime() : r.getTime()) && u.addIssue({
93
93
  code: a.ZodIssueCode.invalid_date,
94
94
  message: (i == null ? void 0 : i.min) || s.DATE_MIN(r)
95
- }), n && _.getTime() > (c.isString(n) ? new Date(n).getTime() : n.getTime()) && l.addIssue({
95
+ }), n && c.getTime() > (_.isString(n) ? new Date(n).getTime() : n.getTime()) && u.addIssue({
96
96
  code: a.ZodIssueCode.invalid_date,
97
97
  message: (i == null ? void 0 : i.max) || s.DATE_MAX(n)
98
98
  });
99
99
  } else {
100
- const _ = I(u, d, /* @__PURE__ */ new Date());
101
- T(_) || l.addIssue({
100
+ const c = I(l, d, /* @__PURE__ */ new Date());
101
+ T(c) || u.addIssue({
102
102
  code: a.ZodIssueCode.invalid_date,
103
103
  message: (i == null ? void 0 : i.invalidDate) || s.DATE_INVALID_FORMAT()
104
- }), r && _.getTime() < (c.isString(r) ? new Date(r).getTime() : r.getTime()) && l.addIssue({
104
+ }), r && c.getTime() < (_.isString(r) ? new Date(r).getTime() : r.getTime()) && u.addIssue({
105
105
  code: a.ZodIssueCode.invalid_date,
106
106
  message: (i == null ? void 0 : i.min) || s.DATE_MIN(r)
107
- }), n && _.getTime() > (c.isString(n) ? new Date(n).getTime() : n.getTime()) && l.addIssue({
107
+ }), n && c.getTime() > (_.isString(n) ? new Date(n).getTime() : n.getTime()) && u.addIssue({
108
108
  code: a.ZodIssueCode.invalid_date,
109
109
  message: (i == null ? void 0 : i.max) || s.DATE_MAX(n)
110
110
  });
@@ -117,12 +117,12 @@ function R(e) {
117
117
  return t ? S(e) : C(e);
118
118
  }
119
119
  const L = /^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/g, y = (e) => {
120
- const { message: t, regexp: d = L } = e || {}, r = c.isString(d) ? new RegExp(d) : d;
120
+ const { message: t, regexp: d = L } = e || {}, r = _.isString(d) ? new RegExp(d) : d;
121
121
  return a.string().min(1, (t == null ? void 0 : t.min) || s.EMAIL_NON_EMPTY()).regex(r, (t == null ? void 0 : t.invalid) || s.EMAIL_INVALID()).default("");
122
122
  }, P = (e) => {
123
- const { message: t, regexp: d = L } = e || {}, r = c.isString(d) ? new RegExp(d) : d;
123
+ const { message: t, regexp: d = L } = e || {}, r = _.isString(d) ? new RegExp(d) : d;
124
124
  return a.string().refine(
125
- (n) => c.isStringEmpty(n) ? !0 : r.test(n),
125
+ (n) => _.isStringEmpty(n) ? !0 : r.test(n),
126
126
  {
127
127
  message: (t == null ? void 0 : t.invalid) || s.EMAIL_INVALID()
128
128
  }
@@ -142,14 +142,19 @@ function U(e) {
142
142
  return t ? D(e) : h(e);
143
143
  }
144
144
  const Y = (e) => {
145
- const { ignoreMask: t = !0, maskSymbols: d = /[()+_ -]/g, message: r } = e || {}, n = c.isString(d) ? new RegExp(d) : d;
146
- let i = a.string().superRefine((u, l) => {
147
- const o = u.replace(n, ""), f = o.charAt(1);
148
- ["3", "4", "5", "6", "7", "9"].includes(f) || l.addIssue({
145
+ const {
146
+ ignoreMask: t = !0,
147
+ maskSymbols: d = /[()+_ -]/g,
148
+ message: r,
149
+ validOperatorCodes: n = ["3", "4", "5", "6", "7", "9"]
150
+ } = e || {}, i = _.isString(d) ? new RegExp(d) : d;
151
+ let l = a.string().superRefine((u, o) => {
152
+ const f = u.replace(i, ""), c = f.charAt(1);
153
+ n.includes(c) || o.addIssue({
149
154
  code: a.ZodIssueCode.invalid_string,
150
155
  validation: "regex",
151
156
  message: (r == null ? void 0 : r.invalidOperator) || s.PHONE_INVALID_OPERATOR()
152
- }), o.length < 11 && l.addIssue({
157
+ }), f.length < 11 && o.addIssue({
153
158
  code: a.ZodIssueCode.too_small,
154
159
  minimum: 11,
155
160
  inclusive: !0,
@@ -157,16 +162,21 @@ const Y = (e) => {
157
162
  message: (r == null ? void 0 : r.min) || s.PHONE_NON_EMPTY()
158
163
  });
159
164
  });
160
- return t && (i = i.transform((u) => u.replace(n, ""))), i.default("");
165
+ return t && (l = l.transform((u) => u.replace(i, ""))), l.default("");
161
166
  }, w = (e) => {
162
- const { ignoreMask: t = !0, maskSymbols: d = /[()+_ -]/g, message: r } = e || {}, n = c.isString(d) ? new RegExp(d) : d;
163
- let i = a.string().superRefine((u, l) => {
164
- const o = u.replace(n, ""), f = o.charAt(1);
165
- ["3", "4", "5", "6", "7", "9"].includes(f) || l.addIssue({
167
+ const {
168
+ ignoreMask: t = !0,
169
+ maskSymbols: d = /[()+_ -]/g,
170
+ message: r,
171
+ validOperatorCodes: n = ["3", "4", "5", "6", "7", "9"]
172
+ } = e || {}, i = _.isString(d) ? new RegExp(d) : d;
173
+ let l = a.string().superRefine((u, o) => {
174
+ const f = u.replace(i, ""), c = f.charAt(1);
175
+ n.includes(c) || o.addIssue({
166
176
  code: a.ZodIssueCode.invalid_string,
167
177
  validation: "regex",
168
178
  message: (r == null ? void 0 : r.invalidOperator) || s.PHONE_INVALID_OPERATOR()
169
- }), o.length < 11 && l.addIssue({
179
+ }), f.length < 11 && o.addIssue({
170
180
  code: a.ZodIssueCode.too_small,
171
181
  minimum: 11,
172
182
  inclusive: !0,
@@ -174,7 +184,7 @@ const Y = (e) => {
174
184
  message: (r == null ? void 0 : r.min) || s.PHONE_NON_EMPTY()
175
185
  });
176
186
  });
177
- return t && (i = i.transform((u) => u.replace(n, ""))), i.transform((u) => u || void 0);
187
+ return t && (l = l.transform((u) => u.replace(i, ""))), l.transform((u) => u || void 0);
178
188
  };
179
189
  function H(e) {
180
190
  const { required: t = !0 } = e || {};
@@ -203,20 +213,20 @@ function p(e) {
203
213
  const v = (e) => {
204
214
  const { min: t, max: d, length: r, message: n } = e || {};
205
215
  let i = a.string({ message: n == null ? void 0 : n.root });
206
- return t && (i = i.min(t, { message: (n == null ? void 0 : n.min) || s.MIN_LENGTH(t) })), d && (i = i.max(d, { message: (n == null ? void 0 : n.max) || s.MAX_LENGTH(d) })), r && (i = i.length(r, { message: (n == null ? void 0 : n.length) || s.FIX_LENGTH(r) })), i.refine((u) => !!u.length, { message: (n == null ? void 0 : n.min) || s.NON_EMPTY() }).default("");
216
+ return t && (i = i.min(t, { message: (n == null ? void 0 : n.min) || s.MIN_LENGTH(t) })), d && (i = i.max(d, { message: (n == null ? void 0 : n.max) || s.MAX_LENGTH(d) })), r && (i = i.length(r, { message: (n == null ? void 0 : n.length) || s.FIX_LENGTH(r) })), i.refine((l) => !!l.length, { message: (n == null ? void 0 : n.min) || s.NON_EMPTY() }).default("");
207
217
  }, G = (e) => {
208
218
  const { min: t, max: d, length: r, message: n } = e || {};
209
219
  let i = a.string({ message: n == null ? void 0 : n.root });
210
- return t && (i = i.min(t, { message: (n == null ? void 0 : n.min) || s.MIN_LENGTH(t) })), d && (i = i.max(d, { message: (n == null ? void 0 : n.max) || s.MAX_LENGTH(d) })), r && (i = i.length(r, { message: (n == null ? void 0 : n.length) || s.FIX_LENGTH(r) })), i.optional().transform((u) => u != null && u.length ? u : void 0);
220
+ return t && (i = i.min(t, { message: (n == null ? void 0 : n.min) || s.MIN_LENGTH(t) })), d && (i = i.max(d, { message: (n == null ? void 0 : n.max) || s.MAX_LENGTH(d) })), r && (i = i.length(r, { message: (n == null ? void 0 : n.length) || s.FIX_LENGTH(r) })), i.optional().transform((l) => l != null && l.length ? l : void 0);
211
221
  };
212
222
  function X(e) {
213
223
  const { required: t = !0, ...d } = e || {};
214
224
  return t ? v(d) : G(d);
215
225
  }
216
226
  const M = (e, t) => {
217
- const { message: d, ...r } = t || {}, [n, i, ...u] = e.map((o) => a.literal(o)), l = d ? typeof d == "function" ? d(e) : d : s.VALUE_OUT_OF_RANGE(e);
218
- return a.union([n, i, ...u], {
219
- message: l,
227
+ const { message: d, ...r } = t || {}, [n, i, ...l] = e.map((o) => a.literal(o)), u = d ? typeof d == "function" ? d(e) : d : s.VALUE_OUT_OF_RANGE(e);
228
+ return a.union([n, i, ...l], {
229
+ message: u,
220
230
  ...r
221
231
  }).nullable().refine(Boolean, s.NON_EMPTY()).default(null);
222
232
  }, q = (e, t) => M(e, t).optional();
@@ -225,11 +235,11 @@ function F(e, t) {
225
235
  return d ? M(e, r) : q(e, r);
226
236
  }
227
237
  const O = /^(http:\/\/www\.|https:\/\/www\.|http:\/\/|https:\/\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*\.[a-z]{2,5}(:[0-9]{1,5})?(\/.*)?$/, $ = (e) => {
228
- const { message: t, regexp: d = O } = e || {}, r = c.isString(d) ? new RegExp(d) : d;
238
+ const { message: t, regexp: d = O } = e || {}, r = _.isString(d) ? new RegExp(d) : d;
229
239
  return A().min(1, (t == null ? void 0 : t.min) || s.NON_EMPTY()).regex(r, (t == null ? void 0 : t.invalid) || s.INVALID_URL()).default("");
230
240
  }, j = (e) => {
231
- const { message: t, regexp: d = O } = e || {}, r = c.isString(d) ? new RegExp(d) : d;
232
- return A().refine((n) => c.isStringEmpty(n) ? !0 : r.test(n), (t == null ? void 0 : t.invalid) || s.INVALID_URL()).optional().transform((n) => n != null && n.length ? n : void 0);
241
+ const { message: t, regexp: d = O } = e || {}, r = _.isString(d) ? new RegExp(d) : d;
242
+ return A().refine((n) => _.isStringEmpty(n) ? !0 : r.test(n), (t == null ? void 0 : t.invalid) || s.INVALID_URL()).optional().transform((n) => n != null && n.length ? n : void 0);
233
243
  };
234
244
  function B(e) {
235
245
  const { required: t = !0 } = e || {};
@@ -318,10 +328,10 @@ class te {
318
328
  };
319
329
  if (t instanceof a.ZodEffects || t._def.typeName === "ZodEffects")
320
330
  return n(t);
321
- const u = {};
331
+ const l = {};
322
332
  return Object.entries(t.shape).map(([o, f]) => {
323
- u[o] = i(f);
324
- }), u;
333
+ l[o] = i(f);
334
+ }), l;
325
335
  }
326
336
  /**
327
337
  * Функция для объединения zod схождений
@@ -372,30 +382,30 @@ const g = {
372
382
  return { surname: t, name: d, patronymic: n };
373
383
  }, Z = (e) => {
374
384
  const { message: t } = e || {}, { nameOrSurnameEmpty: d, invalidSurname: r, invalidPatronymic: n, invalidName: i } = t || {};
375
- return a.string().superRefine((u, l) => {
376
- const { name: o, surname: f, patronymic: _ } = k(u);
377
- E.ONLY_CYRILLIC.test(u) || l.addIssue({
385
+ return a.string().superRefine((l, u) => {
386
+ const { name: o, surname: f, patronymic: c } = k(l);
387
+ E.ONLY_CYRILLIC.test(l) || u.addIssue({
378
388
  code: a.ZodIssueCode.invalid_string,
379
389
  validation: "regex",
380
390
  message: g.ONLY_CYRILLIC()
381
- }), (!o || !f) && l.addIssue({
391
+ }), (!o || !f) && u.addIssue({
382
392
  code: a.ZodIssueCode.invalid_string,
383
393
  validation: "regex",
384
394
  message: d || g.NAME_OR_SURNAME_NON_EMPTY()
385
- }), E.CHECK_HYPHEN.test(o) || l.addIssue({
395
+ }), E.CHECK_HYPHEN.test(o) || u.addIssue({
386
396
  code: a.ZodIssueCode.invalid_string,
387
397
  validation: "regex",
388
398
  message: i || g.INVALID_NAME()
389
- }), E.CHECK_HYPHEN.test(f) || l.addIssue({
399
+ }), E.CHECK_HYPHEN.test(f) || u.addIssue({
390
400
  code: a.ZodIssueCode.invalid_string,
391
401
  validation: "regex",
392
402
  message: r || g.INVALID_SURNAME()
393
- }), _ && (E.PATRONYMIC.test(_) || l.addIssue({
403
+ }), c && (E.PATRONYMIC.test(c) || u.addIssue({
394
404
  code: a.ZodIssueCode.invalid_string,
395
405
  validation: "regex",
396
406
  message: n || g.INVALID_PATRONYMIC()
397
407
  }));
398
- }).transform((u) => u.trimEnd()).default("");
408
+ }).transform((l) => l.trimEnd()).default("");
399
409
  }, W = (e) => Z(e).optional().transform((t) => t != null && t.length ? t : void 0);
400
410
  function K(e) {
401
411
  const { required: t = !0, ...d } = e || {};
@@ -413,4 +423,4 @@ export {
413
423
  s as b,
414
424
  ne as z
415
425
  };
416
- //# sourceMappingURL=index-DskTH4KE.js.map
426
+ //# sourceMappingURL=index-DGoeevV2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DGoeevV2.js","sources":["../lib/shared/validation/base/base.constants.ts","../lib/shared/validation/base/date.validators.ts","../lib/shared/validation/base/email.validators.ts","../lib/shared/validation/base/number.validators.ts","../lib/shared/validation/base/phone.validators.ts","../lib/shared/validation/base/select.validators.ts","../lib/shared/validation/base/string.validators.ts","../lib/shared/validation/base/union.validators.ts","../lib/shared/validation/base/url.validators.ts","../lib/shared/validation/base/base.validators.ts","../lib/shared/validation/utils/zodUtils.ts","../lib/shared/validation/dadata/dadata.constants.ts","../lib/shared/validation/dadata/fio.validators.ts","../lib/shared/validation/dadata/index.ts","../lib/shared/validation/index.ts"],"sourcesContent":["import { type Primitive } from 'zod'\nimport { formatDateToLocaleString } from '$/shared/ui'\nimport { TypeGuards } from '$/shared/utils'\n\nexport const baseDefaultMessages = {\n NON_EMPTY: () => 'Поле не может быть пустым',\n MIN_LENGTH: (min: number) => `Поле должно содержать минимум символов: ${min}`,\n MAX_LENGTH: (max: number) => `Поле должно содержать максимум символов: ${max}`,\n FIX_LENGTH: (length: number) => `Поле должно быть фиксированной длины символов: ${length}`,\n MIN_VALUE: (min: number) => `Значение не может быть меньше чем ${min}`,\n MAX_VALUE: (max: number) => `Значение не может быть больше чем ${max}`,\n PHONE_NON_EMPTY: () => 'Номер телефона должен состоять из 11 цифр',\n PHONE_INVALID_OPERATOR: () => 'Код города/оператора должен начинаться с цифры 3, 4, 5, 6 или 9',\n EMAIL_INVALID: () => 'Email введен некорректно. Пример: example@domain.ru',\n EMAIL_NON_EMPTY: () => 'Введите адрес электронной почты',\n SELECT_NON_EMPTY: () => 'Выберите один из вариантов',\n SELECT_MULTIPLE_MIN_LENGTH: (length: number) => `Выберите не менее ${length} вариантов`,\n SELECT_MULTIPLE_MAX_LENGTH: (length: number) => `Выберите не более ${length} вариантов`,\n SELECT_FIX_LENGTH: (length: number) => `Поле должно быть фиксированного количества вариантов: ${length}`,\n DATE_INVALID_FORMAT: () => 'Дата указана некорректно',\n DATE_NON_EMPTY: () => 'Укажите дату',\n VALUE_OUT_OF_RANGE: <T extends Primitive>(range: T[]) => `Выберите один из вариантов ${range.join(', ')}`,\n DATE_MIN: (min: Date | string) => {\n const date = TypeGuards.isString(min) ? new Date(min) : min\n\n return `Выбранная дата должна быть не раньше ${formatDateToLocaleString(date)}`\n },\n DATE_MAX: (max: Date | string) => {\n const date = TypeGuards.isString(max) ? new Date(max) : max\n\n return `Выбранная дата должна быть не позже ${formatDateToLocaleString(date)}`\n },\n INVALID_URL: () => 'Ссылка введена некорректно. Пример: https://example.com, example.com'\n}\n","import { isValid, parse } from 'date-fns'\nimport z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { DATE_VISIBLE_PATTERN } from '$/shared/ui'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type DateValidationOptions<Required extends boolean> = {\n /**\n * валидация строки с учетом ISO формата\n * @default true\n */\n iso?: boolean\n /**\n * шаблон для валидации строки (будет проигнорирован, если `iso = true`)\n * @default 'dd.MM.yyyy'\n */\n pattern?: string\n /**\n * минимальная дата\n * `Date | ISO string`\n */\n min?: Date | string\n /**\n * максимальная дата\n * `Date | ISO string`\n */\n max?: Date | string\n /**\n * указывает что поле обязательное\n */\n required?: Required\n message?: {\n min?: string\n max?: string\n invalidDate?: string\n }\n}\n\n/**\n * Схема валидации обязательного поля даты\n */\nconst getDateRequired = (props?: Omit<DateValidationOptions<boolean>, 'required'>) => {\n const { iso = true, pattern = DATE_VISIBLE_PATTERN, min, max, message } = props || {}\n\n return z\n .string()\n .min(8, message?.min || baseDefaultMessages.DATE_NON_EMPTY())\n .superRefine((value, context) => {\n const validSymbolsLength = pattern.replace(/\\W/g, '').length\n const cleanedValue = value.replace(/[._-]/g, '')\n\n if (cleanedValue.length < validSymbolsLength) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: validSymbolsLength,\n type: 'date',\n inclusive: true,\n message: message?.min || baseDefaultMessages.DATE_NON_EMPTY()\n })\n }\n\n if (iso) {\n let date: Date | null = null\n\n try {\n date = new Date(value)\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date!.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date!.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\n }\n }\n } else {\n const date = parse(value, pattern, new Date())\n\n if (!isValid(date)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\n }\n }\n }\n })\n .default('')\n}\ntype DateRequiredSchema = ReturnType<typeof getDateRequired>\n\n/**\n * Схема валидации опционального поля даты\n */\nconst getDateOptional = (props?: Omit<DateValidationOptions<boolean>, 'required'>) => {\n const { iso = true, pattern = DATE_VISIBLE_PATTERN, min, max, message } = props || {}\n\n return z\n .string()\n .transform((value) => (!value ? undefined : value))\n .superRefine((value, context) => {\n if (TypeGuards.isString(value) && Boolean(value.length)) {\n const validSymbolsLength = pattern.replace(/\\W/g, '').length\n const cleanedValue = value.replace(/[._-]/g, '')\n\n if (cleanedValue.length < validSymbolsLength) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: validSymbolsLength,\n type: 'date',\n inclusive: true,\n message: message?.min || baseDefaultMessages.DATE_NON_EMPTY()\n })\n }\n\n if (iso) {\n let date: Date | null = null\n\n try {\n date = new Date(value)\n } catch {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date!.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date!.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\n }\n }\n } else {\n const date = parse(value, pattern, new Date())\n\n if (!isValid(date)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.invalidDate || baseDefaultMessages.DATE_INVALID_FORMAT()\n })\n }\n\n if (min) {\n if (date.getTime() < (TypeGuards.isString(min) ? new Date(min).getTime() : min.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.min || baseDefaultMessages.DATE_MIN(min)\n })\n }\n }\n\n if (max) {\n if (date.getTime() > (TypeGuards.isString(max) ? new Date(max).getTime() : max.getTime())) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_date,\n message: message?.max || baseDefaultMessages.DATE_MAX(max)\n })\n }\n }\n }\n }\n })\n .optional()\n}\ntype DateOptionalSchema = ReturnType<typeof getDateOptional>\n\n/**\n * Схема валидации поля даты\n * @param {DateValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @typeParam `iso` - `boolean | undefined`\n * @typeParam `pattern` - `string | undefined`\n * @typeParam `message` - `{ [min | invalidOperator]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getDateSchema()\n * })\n * // will returns z.string()\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getDateSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getDateSchema(props?: DateValidationOptions<true>): DateRequiredSchema\nexport function getDateSchema(props?: DateValidationOptions<false>): DateOptionalSchema\nexport function getDateSchema<Required extends boolean>(\n props?: DateValidationOptions<Required>\n): DateRequiredSchema | DateOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getDateRequired(props) : getDateOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type EmailValidationOptions<Required extends boolean> = {\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n /**\n * Регулярное выражение для проверки email на валидность\n */\n regexp?: RegExp | string\n message?: {\n min?: string\n invalid?: string\n }\n}\n\nconst EMAIL_REGEX = /^[\\w-.]+@([\\w-]+\\.)+[\\w-]{2,4}$/g\n\n/**\n * Схема валидации обязательного поля типа email\n */\nconst getEmailRequired = (props?: Omit<EmailValidationOptions<true>, 'required'>) => {\n const { message, regexp = EMAIL_REGEX } = props || {}\n\n const regex = TypeGuards.isString(regexp) ? new RegExp(regexp) : regexp\n\n return z\n .string()\n .min(1, message?.min || baseDefaultMessages.EMAIL_NON_EMPTY())\n .regex(regex, message?.invalid || baseDefaultMessages.EMAIL_INVALID())\n .default('')\n}\ntype EmailRequiredSchema = ReturnType<typeof getEmailRequired>\n\n/**\n * Схема валидации опционального поля типа email\n */\nconst getEmailOptional = (props?: Omit<EmailValidationOptions<false>, 'required'>) => {\n const { message, regexp = EMAIL_REGEX } = props || {}\n\n const regex = TypeGuards.isString(regexp) ? new RegExp(regexp) : regexp\n\n return z\n .string()\n .refine(\n (value) => {\n if (TypeGuards.isStringEmpty(value)) return true\n return regex.test(value)\n },\n {\n message: message?.invalid || baseDefaultMessages.EMAIL_INVALID()\n }\n )\n .optional()\n .transform((value) => (value?.length === 0 ? undefined : value))\n}\ntype EmailOptionalSchema = ReturnType<typeof getEmailOptional>\n\n/**\n * Схема валидации поля типа email\n * @param {EmailValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @typeParam `regexp` - `RegExp`\n * @typeParam `message` - `{ [min | invalid]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getEmailSchema()\n * })\n * // will returns z.string().min(1).email()\n *\n * @example with optional value\n * z.object({\n * field: zodValidators.base.getEmailSchema({ required: false })\n * })\n * // will returns z.string().min(1).email().optional()\n */\nexport function getEmailSchema(props?: EmailValidationOptions<true>): EmailRequiredSchema\nexport function getEmailSchema(props?: EmailValidationOptions<false>): EmailOptionalSchema\nexport function getEmailSchema<Required extends boolean>(\n props?: EmailValidationOptions<Required>\n): EmailRequiredSchema | EmailOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getEmailRequired(props) : getEmailOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type NumberValidationOptions<Required extends boolean> = {\n /**\n * минимальное значение\n * @default 0\n */\n min?: number\n /**\n * максимальное значение\n * @default undefined\n */\n max?: number\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: Partial<Record<keyof Omit<NumberValidationOptions<Required>, 'message'>, string>>\n}\n\n/**\n * Схема валидации обязательного поля числового типа\n */\nconst getNumberRequired = (props?: Omit<NumberValidationOptions<true>, 'required'>) => {\n const { min, max, message } = props || {}\n\n let schema = z.coerce.number()\n\n if (min) {\n schema = schema.min(min, message?.min || baseDefaultMessages.MIN_VALUE(min))\n }\n\n if (max) {\n schema = schema.max(max, message?.min || baseDefaultMessages.MAX_VALUE(max))\n }\n\n return schema.default(0)\n}\ntype NumberRequiredSchema = ReturnType<typeof getNumberRequired>\n\n/**\n * Схема валидации опционального поля числового типа\n */\nconst getNumberOptional = (props?: Omit<NumberValidationOptions<false>, 'required'>) => {\n return getNumberRequired(props)\n .optional()\n .transform((value) => (!value ? undefined : value))\n}\ntype NumberOptionalSchema = ReturnType<typeof getNumberOptional>\n\n/**\n * Схема валидации опционального поля числового типа\n * @param {NumberValidationOptions} props настройки схемы\n @typeParam `required` - `boolean`\n * @typeParam `min` - `number | undefined` `default: 1`\n * @typeParam `max` - `number | undefined` `default: undefined`\n * @typeParam `message` - `{ [min | max]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required min, max value\n * z.object({\n * field: zodValidators.base.getNumberSchema({ min: 10, max: 20 })\n * })\n * // will returns z.coerce.number().min(10).max(20)\n *\n * @example with optional min, max value\n * z.object({\n * field: zodValidators.base.getNumberSchema({ min: 10, max: 20, required: false })\n * })\n * // will returns z.coerce.number().min(10).max(20).optional()\n */\nexport function getNumberSchema(props?: NumberValidationOptions<true>): NumberRequiredSchema\nexport function getNumberSchema(props?: NumberValidationOptions<false>): NumberOptionalSchema\nexport function getNumberSchema<Required extends boolean>(\n props?: NumberValidationOptions<Required>\n): NumberRequiredSchema | NumberOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getNumberRequired(props) : getNumberOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type PhoneValidationOptions<Required extends boolean> = {\n /**\n * исключает маску в возвращаемом значении\n * @default true\n */\n ignoreMask?: boolean\n /**\n * игнорирует символы для проверки поля исключая данные символы\n * @default /[()+_ -]/g\n */\n maskSymbols?: RegExp | string\n /**\n * указывает что поле обязательное\n */\n required?: Required\n message?: {\n min?: string\n invalidOperator?: string\n }\n /**\n * указываем валидные коды оператор\n * @default ['3', '4', '5', '6', '7', '9']\n * @param string[]\n */\n validOperatorCodes?: string[]\n}\n\n/**\n * Схема валидации обязательного поля номера телефона\n */\nconst getPhoneRequired = (props?: Omit<PhoneValidationOptions<true>, 'required'>) => {\n const {\n ignoreMask = true,\n maskSymbols = /[()+_ -]/g,\n message,\n validOperatorCodes = ['3', '4', '5', '6', '7', '9']\n } = props || {}\n\n const mask = TypeGuards.isString(maskSymbols) ? new RegExp(maskSymbols) : maskSymbols\n\n let schema = z.string().superRefine((value, context) => {\n const cleanValue = value.replace(mask, '')\n\n const operatorCode = cleanValue.charAt(1)\n\n if (!validOperatorCodes.includes(operatorCode)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: message?.invalidOperator || baseDefaultMessages.PHONE_INVALID_OPERATOR()\n })\n }\n\n if (cleanValue.length < 11) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: 11,\n inclusive: true,\n type: 'string',\n message: message?.min || baseDefaultMessages.PHONE_NON_EMPTY()\n })\n }\n })\n\n if (ignoreMask) {\n schema = schema.transform((value) => value.replace(mask, '')) as unknown as typeof schema\n }\n\n return schema.default('')\n}\ntype PhoneRequiredSchema = ReturnType<typeof getPhoneRequired>\n\n/**\n * Схема валидации опционального поля номера телефона\n */\nconst getPhoneOptional = (props?: Omit<PhoneValidationOptions<false>, 'required'>) => {\n const {\n ignoreMask = true,\n maskSymbols = /[()+_ -]/g,\n message,\n validOperatorCodes = ['3', '4', '5', '6', '7', '9']\n } = props || {}\n\n const mask = TypeGuards.isString(maskSymbols) ? new RegExp(maskSymbols) : maskSymbols\n\n let schema = z.string().superRefine((value, context) => {\n const cleanValue = value.replace(mask, '')\n\n const operatorCode = cleanValue.charAt(1)\n\n if (!validOperatorCodes.includes(operatorCode)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: message?.invalidOperator || baseDefaultMessages.PHONE_INVALID_OPERATOR()\n })\n }\n\n if (cleanValue.length < 11) {\n context.addIssue({\n code: z.ZodIssueCode.too_small,\n minimum: 11,\n inclusive: true,\n type: 'string',\n message: message?.min || baseDefaultMessages.PHONE_NON_EMPTY()\n })\n }\n })\n\n if (ignoreMask) {\n schema = schema.transform((value) => value.replace(mask, '')) as unknown as typeof schema\n }\n\n return schema.transform((value) => (!value ? undefined : value))\n}\ntype PhoneOptionalSchema = ReturnType<typeof getPhoneOptional>\n\n/**\n * Схема валидации опционального поля номера телефона\n * @param {PhoneValidationOptions} props настройки схемы\n @typeParam `required` - `boolean`\n * @typeParam `ignoreSeparators` - `boolean | undefined` `default: false`\n * @typeParam `maskSymbols` - `RegExp | undefined` `default: /[()+_ -]/g`\n * @typeParam `message` - `{ [min | invalidOperator]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getPhoneSchema()\n * })\n * // will returns z.string()\n *\n * @example with optional value\n * z.object({\n * field: zodValidators.base.getPhoneSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getPhoneSchema(props?: PhoneValidationOptions<true>): PhoneRequiredSchema\nexport function getPhoneSchema(props?: PhoneValidationOptions<false>): PhoneOptionalSchema\nexport function getPhoneSchema<Required extends boolean>(\n props?: PhoneValidationOptions<Required>\n): PhoneRequiredSchema | PhoneOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getPhoneRequired(props) : getPhoneOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type SelectSingleValidationOptions<Required extends boolean, Multi extends boolean = false> = {\n /**\n * включает валидацию мульти селекта\n * @default false\n */\n multiple?: Multi\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: {\n single?: string\n multiple?: string\n }\n}\n\ntype SelectMultipleValidationOptions<Required extends boolean, Multi extends boolean = true> = SelectSingleValidationOptions<\n Required,\n Multi\n> & {\n /**\n * минимальное количество элементов\n * @default 0\n */\n minLength?: number\n /**\n * максимальное количество элементов\n * @default undefined\n */\n maxLength?: number\n /**\n * фиксированное количество элементов\n * @default undefined\n */\n length?: number\n message?: SelectSingleValidationOptions<Required, Multi> & {\n minLength?: string\n maxLength?: string\n length?: string\n }\n}\n\ntype SelectValidationOptions<Required extends boolean, Multi extends boolean> = Multi extends true\n ? SelectMultipleValidationOptions<Required, Multi>\n : SelectSingleValidationOptions<Required, Multi>\n\n/**\n * Схема валидации обязательного поля типа select\n */\nconst getSelectRequired = <Required extends boolean, Multi extends boolean>(props?: SelectValidationOptions<Required, Multi>) => {\n const { message } = props || {}\n\n const selectSchema = z\n .string()\n .min(1, message?.single || baseDefaultMessages.SELECT_NON_EMPTY())\n .nullable()\n .refine((value) => Boolean(value), message?.single || baseDefaultMessages.SELECT_NON_EMPTY())\n .default(null)\n\n if (props?.multiple) {\n let arraySchema = z\n .array(selectSchema)\n .min(props?.minLength || 0, message?.multiple || baseDefaultMessages.SELECT_MULTIPLE_MIN_LENGTH(props?.minLength || 0))\n\n if (props?.length) {\n return arraySchema\n .length(props.length, props.message?.length || baseDefaultMessages.SELECT_FIX_LENGTH(props.length))\n .default([])\n } else if (props?.maxLength) {\n arraySchema = arraySchema.max(\n props.maxLength,\n props.message?.maxLength || baseDefaultMessages.SELECT_MULTIPLE_MAX_LENGTH(props.maxLength)\n )\n }\n\n return arraySchema.default([])\n }\n\n return selectSchema\n}\ntype SelectRequiredSchema = ReturnType<typeof getSelectRequired>\n\n/**\n * Схема валидации опционального поля типа select\n */\nfunction getSelectOptional<Required extends boolean, Multi extends boolean>(\n props?: Omit<SelectValidationOptions<Required, Multi>, 'message'>\n) {\n const selectSchema = z.string().nullable().optional()\n\n if (props?.multiple) {\n return z.array(selectSchema).optional()\n }\n\n return selectSchema\n}\ntype SelectOptionalSchema = ReturnType<typeof getSelectOptional>\n\n/**\n * Схема валидации опционального поля типа select\n * @param {SelectValidationOptions} props настройки схемы\n @typeParam `required` - `boolean`\n * @typeParam `multiple` - `boolean`\n * @typeParam `minLength` - `number | undefined`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required single value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ multiple: false })\n * })\n * // will returns z.string().nullable()\n *\n * @example with required multiple value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ multiple: true })\n * })\n * // will returns z.array(z.string().nullable())\n *\n * @example with optional single value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ required: false, multiple: false })\n * })\n * // will returns z.string().nullable().optional()\n *\n * @example with optional multiple value\n * z.object({\n * field: zodValidators.base.getSelectSchema({ required: false, multiple: true })\n * })\n * // will returns z.array(z.string().nullable().optional()).optional()\n */\nexport function getSelectSchema<Multi extends boolean>(props?: SelectValidationOptions<true, Multi>): SelectRequiredSchema\nexport function getSelectSchema<Multi extends boolean>(props?: SelectValidationOptions<false, Multi>): SelectOptionalSchema\nexport function getSelectSchema<Multi extends boolean, Required extends boolean>(\n props?: SelectValidationOptions<Required, Multi>\n): SelectRequiredSchema | SelectOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getSelectRequired(props) : getSelectOptional(props)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type StringValidationOptions<Required extends boolean> = {\n /**\n * минимальное количество символов\n * @default 1\n */\n min?: number\n /**\n * максимальное количество символов\n * @default undefined\n */\n max?: number\n /**\n * фиксированная длина символов\n */\n length?: number\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: Partial<Record<keyof Omit<StringValidationOptions<Required>, 'message'> | 'root', string>>\n}\n\n/**\n * Схема валидации обязательного поля строкового типа\n */\nconst getStringRequired = (props?: Omit<StringValidationOptions<true>, 'required'>) => {\n const { min, max, length, message } = props || {}\n\n let schema = z.string({ message: message?.root })\n\n if (min) {\n schema = schema.min(min, { message: message?.min || baseDefaultMessages.MIN_LENGTH(min) })\n }\n\n if (max) {\n schema = schema.max(max, { message: message?.max || baseDefaultMessages.MAX_LENGTH(max) })\n }\n\n if (length) {\n schema = schema.length(length, { message: message?.length || baseDefaultMessages.FIX_LENGTH(length) })\n }\n\n return schema.refine((value) => Boolean(value.length), { message: message?.min || baseDefaultMessages.NON_EMPTY() }).default('')\n}\ntype StringRequiredSchema = ReturnType<typeof getStringRequired>\n\n/**\n * Схема валидации обязательного поля строкового типа\n */\nconst getStringOptional = (props?: Omit<StringValidationOptions<false>, 'required'>) => {\n const { min, max, length, message } = props || {}\n\n let schema = z.string({ message: message?.root })\n\n if (min) {\n schema = schema.min(min, { message: message?.min || baseDefaultMessages.MIN_LENGTH(min) })\n }\n\n if (max) {\n schema = schema.max(max, { message: message?.max || baseDefaultMessages.MAX_LENGTH(max) })\n }\n\n if (length) {\n schema = schema.length(length, { message: message?.length || baseDefaultMessages.FIX_LENGTH(length) })\n }\n\n return schema.optional().transform((value) => (!value?.length ? undefined : value))\n}\ntype StringOptionalSchema = ReturnType<typeof getStringOptional>\n\n/**\n * Схема валидации обязательного поля строкового типа\n * @param {StringValidationOptions} props настройки схемы\n * @typeParam `min` - `number | undefined` `default: 1`\n * @typeParam `max` - `number | undefined` `default: undefined`\n * @typeParam `message` - `{ [min | max]: string }`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required min value\n * z.object({\n * field: zodValidators.base.getStringSchema({ min: 10 })\n * })\n * // will returns z.string().min(10)\n *\n * @example with required min, max value\n * z.object({\n * field: zodValidators.base.getStringSchema({ min: 10, max: 20 })\n * })\n * // will returns z.string().min(10).max(20)\n *\n * @example with optional min value\n * z.object({\n * field: zodValidators.base.getStringSchema({ required: false, min: 10 })\n * })\n * // will returns z.string().min(10).optional()\n *\n * @example with optional min, max value\n * z.object({\n * field: zodValidators.base.getStringSchema({ required: false, min: 10, max: 20 })\n * })\n * // will returns z.string().min(10).max(20).optional()\n */\nexport function getStringSchema(props?: StringValidationOptions<true>): StringRequiredSchema\nexport function getStringSchema(props?: StringValidationOptions<false>): StringOptionalSchema\nexport function getStringSchema<Required extends boolean>(\n props?: StringValidationOptions<Required>\n): StringRequiredSchema | StringOptionalSchema {\n const { required = true, ...restProps } = props || {}\n\n return required ? getStringRequired(restProps) : getStringOptional(restProps)\n}\n","import z from 'zod'\nimport { baseDefaultMessages } from './base.constants'\n\nexport type UnionValidationOptions<Required extends boolean, T extends z.Primitive> = {\n /**\n * сообщение об ошибке\n */\n message?: ((values: readonly T[]) => string) | string\n errorMap?: z.ZodErrorMap\n /**\n * сообщение об ошибке при не правильном типе значение\n */\n invalid_type_error?: string\n /**\n * сообщение об ошибке при отсутствии значения\n */\n required_error?: string\n /**\n * описание схемы\n */\n description?: string\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n}\n\n/**\n * Схема валидации обязательного поля из выборки\n */\nconst getUnionRequired = <T extends z.Primitive>(\n values: [T, T, ...T[]],\n props?: Omit<UnionValidationOptions<true, T>, 'required'>\n) => {\n const { message, ...restProps } = props || {}\n\n const [first, second, ...other] = values.map((value) => z.literal(value))\n\n const errorMessage = (() => {\n if (message) {\n return typeof message === 'function' ? message(values) : message\n }\n\n return baseDefaultMessages.VALUE_OUT_OF_RANGE(values)\n })()\n\n return z\n .union([first, second, ...other], {\n message: errorMessage,\n ...restProps\n })\n .nullable()\n .refine(Boolean, baseDefaultMessages.NON_EMPTY())\n .default(null)\n}\ntype UnionRequiredSchema<T extends z.Primitive> = ReturnType<typeof getUnionRequired<T>>\n\n/**\n * Схема валидации обязательного поля из выборки\n */\nconst getUnionOptional = <T extends z.Primitive>(values: [T, T, ...T[]], props?: UnionValidationOptions<false, T>) => {\n return getUnionRequired(values, props).optional()\n}\ntype UnionOptionalSchema<T extends z.Primitive> = ReturnType<typeof getUnionOptional<T>>\n\n/**\n * Схема валидации обязательного поля из выборки\n * @param {z.Primitive} values литералы\n * @param {z.RawCreateParams & { message: (values: z.Primitive[]) => string }} props настройки схемы\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required union value\n * z.object({\n * field: zodValidators.base.getUnionSchema(['A', 'B'] as const)\n * }) ^ it need to infer literal type\n * // will returns z.union([z.literal('A'), z.literal('B')])\n *\n * @example with optional union value\n * z.object({\n * field: zodValidators.base.getUnionSchema(['A', 'B'] as const, { required: false })\n * }) ^ it need to infer literal type\n * // will returns z.union([z.literal('A'), z.literal('B')]).optional()\n */\nexport function getUnionSchema<T extends z.Primitive>(\n values: [T, T, ...T[]],\n props?: UnionValidationOptions<true, T>\n): UnionRequiredSchema<T>\nexport function getUnionSchema<T extends z.Primitive>(\n values: [T, T, ...T[]],\n props?: UnionValidationOptions<false, T>\n): UnionOptionalSchema<T>\nexport function getUnionSchema<T extends z.Primitive, Required extends boolean>(\n values: [T, T, ...T[]],\n props?: UnionValidationOptions<Required, T>\n): UnionRequiredSchema<T> | UnionOptionalSchema<T> {\n const { required, ...restProps } = props || {}\n\n return required ? getUnionRequired(values, restProps) : getUnionOptional(values, restProps)\n}\n","import { string } from 'zod'\nimport { baseDefaultMessages } from './base.constants'\nimport { TypeGuards } from '$/shared/utils'\n\nexport type UrlValidationOptions<Required extends boolean> = {\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n /**\n * Регулярное выражение для проверки url на валидность\n */\n regexp?: RegExp | string\n message?: {\n min?: string\n invalid?: string\n }\n}\n\nconst URL_REGEX =\n /^(http:\\/\\/www\\.|https:\\/\\/www\\.|http:\\/\\/|https:\\/\\/)?[a-z0-9]+([-.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$/\n\n/**\n * Схема валидации обязательного поля ссылки\n */\nconst getUrlRequired = (props?: Omit<UrlValidationOptions<true>, 'required'>) => {\n const { message, regexp = URL_REGEX } = props || {}\n\n const regex = TypeGuards.isString(regexp) ? new RegExp(regexp) : regexp\n\n return string()\n .min(1, message?.min || baseDefaultMessages.NON_EMPTY())\n .regex(regex, message?.invalid || baseDefaultMessages.INVALID_URL())\n .default('')\n}\ntype UrlRequiredSchema = ReturnType<typeof getUrlRequired>\n\n/**\n * Схема валидации опционального поля ссылки\n */\nconst getUrlOptional = (props?: Omit<UrlValidationOptions<false>, 'required'>) => {\n const { message, regexp = URL_REGEX } = props || {}\n\n const regex = TypeGuards.isString(regexp) ? new RegExp(regexp) : regexp\n\n return string()\n .refine((value) => {\n if (TypeGuards.isStringEmpty(value)) return true\n return regex.test(value)\n }, message?.invalid || baseDefaultMessages.INVALID_URL())\n .optional()\n .transform((value) => (!value?.length ? undefined : value))\n}\ntype UrlOptionalSchema = ReturnType<typeof getUrlOptional>\n\nexport function getUrlSchema(props?: UrlValidationOptions<true>): UrlRequiredSchema\nexport function getUrlSchema(props?: UrlValidationOptions<false>): UrlOptionalSchema\n/**\n * Схема валидации поля ссылки\n * @param {UrlValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @typeParam `regexp` - `RegExp`\n * @typeParam `message` - `{ [min | invalid]: string }`\n * @returns схема валидации поля в соответствии с настройками\n */\nexport function getUrlSchema<Required extends boolean>(\n props?: UrlValidationOptions<Required>\n): UrlRequiredSchema | UrlOptionalSchema {\n const { required = true } = props || {}\n\n return required ? getUrlRequired(props) : getUrlOptional(props)\n}\n","import { getDateSchema } from './date.validators'\nimport { getEmailSchema } from './email.validators'\nimport { getNumberSchema } from './number.validators'\nimport { getPhoneSchema } from './phone.validators'\nimport { getSelectSchema } from './select.validators'\nimport { getStringSchema } from './string.validators'\nimport { getUnionSchema } from './union.validators'\nimport { getUrlSchema } from './url.validators'\n\nexport const baseValidationSchemas = {\n getStringSchema,\n getEmailSchema,\n getSelectSchema,\n getNumberSchema,\n getPhoneSchema,\n getDateSchema,\n getUnionSchema,\n getUrlSchema\n}\n","import z from 'zod'\n\ntype ZodUtilsGetDefaultsOptions = {\n /**\n * Вставить в массив значение, исходя из внутренней схемы z.array\n */\n fillArrayWithValue?: boolean\n}\n\nexport class ZodUtils {\n /**\n * Функция для получения значения по умолчанию исходя из схемы\n * @param zodSchema схема формы\n * @param options настройки генерации значений по умолчанию\n * @returns объект значений по умолчанию\n *\n * @example\n * const schema = z.object({\n * name: zodValidators.base.getStringSchema(),\n * role: zodValidators.base.getUnionSchema(['UNKNOWN', 'ADMIN', 'MODERATOR', 'USER'] as const),\n * info: z.object({\n * address: zodValidators.base.getStringSchema(),\n * phone: zodValidators.base.getPhoneSchema({ ignoreMask: true }),\n * age: zodValidators.base.getNumberSchema()\n * })\n * })\n *\n * const defaultValues = ZodUtils.getZodDefaults(schema)\n *\n * // default values will be inferred from schema\n * // {\n * // name: '',\n * // role: 'UNKNOWN',\n * // info: {\n * // address: '',\n * // phone: '',\n * // age: 0\n * // }\n * // }\n */\n static getZodDefaults<ZodSchema extends z.AnyZodObject, Schema = z.TypeOf<ZodSchema>>(\n zodSchema: ZodSchema | z.ZodEffects<ZodSchema>,\n options?: ZodUtilsGetDefaultsOptions\n ): Schema {\n const { fillArrayWithValue } = options || {}\n\n const processZodEffects = (schema: z.ZodEffects<any>) => {\n const innerType = schema._def.schema\n\n if (innerType instanceof z.ZodEffects || innerType._def.typeName === 'ZodEffects') {\n return processZodEffects(innerType)\n }\n\n if (innerType instanceof z.ZodObject || innerType._def.typeName === 'ZodObject') {\n return this.getZodDefaults(innerType, options)\n }\n\n return getDefaultValue(innerType)\n }\n\n const getDefaultValue = (schema: z.ZodTypeAny): unknown => {\n if (schema instanceof z.ZodEffects || schema._def.typeName === 'ZodEffects') {\n return processZodEffects(schema as z.ZodEffects<ZodSchema>)\n }\n\n switch (true) {\n case schema._def.typeName === 'ZodDefault' || schema instanceof z.ZodDefault:\n return (schema as z.ZodDefault<ZodSchema>)._def.defaultValue()\n case schema._def.typeName === 'ZodOptional' || schema instanceof z.ZodOptional:\n return undefined\n case schema._def.typeName === 'ZodEffects':\n return processZodEffects(schema as z.ZodEffects<ZodSchema>)\n case schema._def.typeName === 'ZodNullable' || schema instanceof z.ZodNullable:\n return null\n case schema._def.typeName === 'ZodArray' || schema instanceof z.ZodArray:\n return fillArrayWithValue ? [getDefaultValue((schema as z.ZodArray<ZodSchema>).element)] : []\n case schema._def.typeName === 'ZodObject' || schema instanceof z.ZodObject:\n return this.getZodDefaults(schema as z.ZodObject<z.ZodRawShape>, options)\n case schema._def.typeName === 'ZodUnion' || schema instanceof z.ZodUnion:\n return getDefaultValue(schema._def.options[0])\n case schema._def.typeName === 'ZodLiteral' || schema instanceof z.ZodLiteral:\n return schema._def.value\n case schema._def.typeName === 'ZodDiscriminatedUnion' || schema instanceof z.ZodDiscriminatedUnion:\n return getDefaultValue(schema._def.options[0])\n case schema._def.typeName === 'ZodEnum' || schema instanceof z.ZodEnum:\n return schema._def.values[0]\n case schema._def.typeName === 'ZodString' || schema instanceof z.ZodString:\n return ''\n case schema._def.typeName === 'ZodNumber' || schema instanceof z.ZodNumber:\n return 0\n case schema._def.typeName === 'ZodBoolean' || schema instanceof z.ZodBoolean:\n return false\n case !('innerType' in schema._def):\n return undefined\n default:\n return getDefaultValue(schema._def.innerType)\n }\n }\n\n // @ts-expect-error asf\n if (zodSchema instanceof z.ZodEffects || zodSchema._def.typeName === 'ZodEffects') {\n return processZodEffects(zodSchema as unknown as z.ZodEffects<any>)\n }\n\n const defaults = {} as Schema\n\n const schemaEntries = Object.entries(zodSchema.shape) as [keyof Schema, z.ZodAny][]\n\n schemaEntries.map(([key, value]) => {\n defaults[key] = getDefaultValue(value) as Schema[keyof Schema]\n })\n\n return defaults\n }\n\n /**\n * Функция для объединения zod схождений\n * @param {ZodIntersection} zodSchema\n * @returns объединенная схема двух схождений\n *\n * @example\n * let schema = z.object({\n * foo: z.string()\n * })\n * // this will return intersection and we need\n * // to merge its left to right schema's\n * .and(\n * z.object({\n * bar: z.string()\n * })\n * )\n *\n * schema = ZodUtils.zodMergeIntersection(schema)\n *\n * // schema will be\n * z.object({\n * foo: z.string(),\n * bar: z.string()\n * })\n */\n static zodMergeIntersection<ZodLeft extends z.ZodTypeAny, ZodRight extends z.ZodTypeAny>(\n zodSchema: z.ZodIntersection<ZodLeft, ZodRight>\n ): z.ZodObject<z.objectUtil.MergeShapes<z.TypeOf<ZodLeft>, z.TypeOf<ZodRight>>> {\n const { left, right } = zodSchema._def\n\n const leftSchema =\n left instanceof z.ZodDiscriminatedUnion || left._def.typeName === 'ZodDiscriminatedUnion' ? left._def.options[0] : left\n const rightSchema =\n right instanceof z.ZodDiscriminatedUnion || right._def.typeName === 'ZodDiscriminatedUnion' ? right._def.options[0] : right\n\n if (\n (leftSchema._def.typeName === 'ZodObject' || leftSchema instanceof z.ZodObject) &&\n (rightSchema._def.typeName === 'ZodObject' || rightSchema instanceof z.ZodObject)\n ) {\n return leftSchema.merge(rightSchema)\n }\n\n throw new Error(`Cannot merge schema type ${rightSchema._def.typeName} to ${leftSchema._def.typeName}`)\n }\n}\n","export const fioDefaultMessages = {\n NON_EMPTY: () => 'Поле обязательно для заполнения',\n VALUE_NO_WHITESPACE: () => 'Укажите фамилию, имя и отчество через пробел',\n ONLY_CYRILLIC: () => 'Данные должны быть написаны кириллицей',\n NAME_OR_SURNAME_NON_EMPTY: () => 'Укажите имя и фамилию',\n INVALID_NAME: () => 'Неверно введено имя',\n INVALID_SURNAME: () => 'Неверно введена фамилия',\n INVALID_PATRONYMIC: () => 'Неверно введено отчество'\n}\n\nexport const fioRegex = {\n ONLY_CYRILLIC: /[\\u0400-\\u04FF\\u00CB\\u00EB -]/g,\n CHECK_HYPHEN: /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/,\n PATRONYMIC: /^[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\\s+[a-zA-Zа-яА-ЯёЁ]+(?:\\s*-\\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i\n}\n","import z from 'zod'\nimport { fioDefaultMessages, fioRegex } from './dadata.constants'\n\nconst getFioParts = (value: string) => {\n const [surname, name, ...patronymicParts] = value.trim().replace(/\\s+/g, ' ').split(' ')\n const patronymic = patronymicParts.join(' ')\n\n return { surname, name, patronymic }\n}\n\nexport type FioValidationOptions<Required extends boolean> = {\n /**\n * указывает что поле обязательное\n * @default true\n */\n required?: Required\n message?: {\n root?: string\n nameOrSurnameEmpty?: string\n invalidName?: string\n invalidSurname?: string\n invalidPatronymic?: string\n }\n}\n\n/**\n * Схема валидации обязательного поля автозаполнения ФИО\n */\nconst getFioRequired = (props?: Omit<FioValidationOptions<true>, 'required'>) => {\n const { message } = props || {}\n\n const { nameOrSurnameEmpty, invalidSurname, invalidPatronymic, invalidName } = message || {}\n\n return z\n .string()\n .superRefine((value, context) => {\n const { name, surname, patronymic } = getFioParts(value)\n\n if (!fioRegex.ONLY_CYRILLIC.test(value)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: fioDefaultMessages.ONLY_CYRILLIC()\n })\n }\n\n if (!name || !surname) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: nameOrSurnameEmpty || fioDefaultMessages.NAME_OR_SURNAME_NON_EMPTY()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(name)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidName || fioDefaultMessages.INVALID_NAME()\n })\n }\n\n if (!fioRegex.CHECK_HYPHEN.test(surname)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidSurname || fioDefaultMessages.INVALID_SURNAME()\n })\n }\n\n if (patronymic) {\n if (!fioRegex.PATRONYMIC.test(patronymic)) {\n context.addIssue({\n code: z.ZodIssueCode.invalid_string,\n validation: 'regex',\n message: invalidPatronymic || fioDefaultMessages.INVALID_PATRONYMIC()\n })\n }\n }\n })\n .transform((value) => value.trimEnd())\n .default('')\n}\ntype FioRequiredSchema = ReturnType<typeof getFioRequired>\n\n/**\n * Схема валидации опционального поля автозаполнения ФИО\n */\nconst getFioOptional = (props?: Omit<FioValidationOptions<false>, 'required'>) => {\n return getFioRequired(props)\n .optional()\n .transform((value) => (!value?.length ? undefined : value))\n}\ntype FioOptionalSchema = ReturnType<typeof getFioOptional>\n\n/**\n * Схема валидации поля автозаполнения ФИО\n * @param {DateValidationOptions} props настройки схемы\n * @typeParam `required` - `boolean`\n * @returns схема валидации поля в соответствии с настройками\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema()\n * })\n * // will returns z.string()\n *\n * @example with required value\n * z.object({\n * field: zodValidators.base.getFioSchema({ required: false })\n * })\n * // will returns z.string().optional()\n */\nexport function getFioSchema(props?: FioValidationOptions<true>): FioRequiredSchema\nexport function getFioSchema(props?: FioValidationOptions<false>): FioOptionalSchema\nexport function getFioSchema<Required extends boolean>(\n props?: FioValidationOptions<Required>\n): FioRequiredSchema | FioOptionalSchema {\n const { required = true, ...restProps } = props || {}\n\n return required ? getFioRequired(restProps) : getFioOptional(restProps)\n}\n","import { getFioSchema } from './fio.validators'\nexport type * from './fio.validators'\nexport { fioDefaultMessages } from './dadata.constants'\n\nexport const dadataValidationSchemas = {\n getFioSchema\n}\n","export * from './regExp'\nexport * from './messages'\nexport * from './zodValidation'\nexport * from './base'\nexport type * from './dadata'\nexport * from './utils'\nimport { baseValidationSchemas } from './base'\nimport { dadataValidationSchemas } from './dadata'\n\nexport const zodValidators = {\n base: baseValidationSchemas,\n dadata: dadataValidationSchemas\n}\n"],"names":["baseDefaultMessages","min","max","length","range","date","TypeGuards","formatDateToLocaleString","getDateRequired","props","iso","pattern","DATE_VISIBLE_PATTERN","message","z","value","context","validSymbolsLength","parse","isValid","getDateOptional","getDateSchema","required","EMAIL_REGEX","getEmailRequired","regexp","regex","getEmailOptional","getEmailSchema","getNumberRequired","schema","getNumberOptional","getNumberSchema","getPhoneRequired","ignoreMask","maskSymbols","validOperatorCodes","mask","cleanValue","operatorCode","getPhoneOptional","getPhoneSchema","getSelectRequired","selectSchema","arraySchema","_a","_b","getSelectOptional","getSelectSchema","getStringRequired","getStringOptional","getStringSchema","restProps","getUnionRequired","values","first","second","other","errorMessage","getUnionOptional","getUnionSchema","URL_REGEX","getUrlRequired","string","getUrlOptional","getUrlSchema","baseValidationSchemas","ZodUtils","zodSchema","options","fillArrayWithValue","processZodEffects","innerType","getDefaultValue","defaults","key","left","right","leftSchema","rightSchema","fioDefaultMessages","fioRegex","getFioParts","surname","name","patronymicParts","patronymic","getFioRequired","nameOrSurnameEmpty","invalidSurname","invalidPatronymic","invalidName","getFioOptional","getFioSchema","dadataValidationSchemas","zodValidators"],"mappings":"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"}
@@ -18,6 +18,12 @@ export type PhoneValidationOptions<Required extends boolean> = {
18
18
  min?: string;
19
19
  invalidOperator?: string;
20
20
  };
21
+ /**
22
+ * указываем валидные коды оператор
23
+ * @default ['3', '4', '5', '6', '7', '9']
24
+ * @param string[]
25
+ */
26
+ validOperatorCodes?: string[];
21
27
  };
22
28
  /**
23
29
  * Схема валидации обязательного поля номера телефона
package/dist/ui.js CHANGED
@@ -1,5 +1,5 @@
1
- import { j as p, c as tt, R as nt, B as D, u as ot, a as rt, b as it, d as lt, P as U, e as Fe, f as ut, I as st, g as X, h as at, A as gt, H as dt, i as N, k as ct, m as we, D as ft, V as pt, O as mt } from "./index-CN2YlBui.js";
2
- import { n as io, C as lo, t as uo, s as so, o as ao, K as go, L as co, N as fo, l as po, p as mo, q as ho, U as So, r as Co, v as wo } from "./index-CN2YlBui.js";
1
+ import { j as p, c as tt, R as nt, B as D, u as ot, a as rt, b as it, d as lt, P as U, e as Fe, f as ut, I as st, g as X, h as at, A as gt, H as dt, i as N, k as ct, m as we, D as ft, V as pt, O as mt } from "./index-CeBEX-QQ.js";
2
+ import { n as io, C as lo, t as uo, s as so, o as ao, K as go, L as co, N as fo, l as po, p as mo, q as ho, U as So, r as Co, v as wo } from "./index-CeBEX-QQ.js";
3
3
  import * as E from "react";
4
4
  import { forwardRef as M, useRef as ht, useState as ne, useEffect as ye, isValidElement as k, cloneElement as $e, Children as G } from "react";
5
5
  import { c as w, T as Re } from "./typeGuards-Bhdr9KYW.js";
@@ -1,4 +1,4 @@
1
- import { Z as D, b as p, a as l, z as Z } from "./index-DskTH4KE.js";
1
+ import { Z as D, b as p, a as l, z as Z } from "./index-DGoeevV2.js";
2
2
  import { z as o, p as m, i as c } from "./utils-Cc0awqbk.js";
3
3
  const I = /^[\u0400-\u04FF\u00CB\u00EB -]+$/, i = /^(?:[^-]+(?:-[^-]+){0,4}|[^-]+)$/, r = /^[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4}(?:\s+[a-zA-Zа-яА-ЯёЁ]+(?:\s*-\s*[a-zA-Zа-яА-ЯёЁ]+){0,4})?$/i, t = {
4
4
  REQUIRED: "Поле обязательно к заполнению",
package/dist/widget.js CHANGED
@@ -13,7 +13,7 @@ var ht = (e, t, r, i) => ({
13
13
  return h(e, t, i);
14
14
  }
15
15
  });
16
- import { S as Ut, w as Vt, Q as le, x as I, y as Et, z as ue, E as pe, F as It, G as P, J as he, M as me, T as xe, W as fe, X as Mt, Y as Ot, Z as ce, _ as St, $ as Ft, a0 as be, j as n, B as kt, c as M, R as _, l as Wt, r as ge, H as L, i as c, s as ct, p as je, L as ye, n as wt, A as rt, t as se, a1 as ke, q as we, U as Gt, m as vt, k as ve } from "./index-CN2YlBui.js";
16
+ import { S as Ut, w as Vt, Q as le, x as I, y as Et, z as ue, E as pe, F as It, G as P, J as he, M as me, T as xe, W as fe, X as Mt, Y as Ot, Z as ce, _ as St, $ as Ft, a0 as be, j as n, B as kt, c as M, R as _, l as Wt, r as ge, H as L, i as c, s as ct, p as je, L as ye, n as wt, A as rt, t as se, a1 as ke, q as we, U as Gt, m as vt, k as ve } from "./index-CeBEX-QQ.js";
17
17
  import { c as a, T as s } from "./typeGuards-Bhdr9KYW.js";
18
18
  import * as dt from "react";
19
19
  import { useCallback as Kt, useState as W, useMemo as Nt, createElement as $t, Fragment as Ne, useEffect as Zt, useRef as Ct, useReducer as Ce, memo as Xt } from "react";
@@ -21,7 +21,7 @@ import { s as Te, c as bt, g as Bt, a as Ee } from "./uuid-2wKG15vy.js";
21
21
  import { i as Jt } from "./isClient-C9aZtt2Q.js";
22
22
  import { a as G, c as Ie, b as Me } from "./useDebounce-QgEEiWs9.js";
23
23
  import { o as Oe } from "./utils-Cc0awqbk.js";
24
- import { z as Yt, Z as Se } from "./index-DskTH4KE.js";
24
+ import { z as Yt, Z as Se } from "./index-DGoeevV2.js";
25
25
  import { u as Fe } from "./useFieldsProgress-BXzIWmGP.js";
26
26
  import { createPortal as te } from "react-dom";
27
27
  var B, Qt, Be = (Qt = class extends Ut {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scbt-ecom/ui",
3
- "version": "0.61.2",
3
+ "version": "0.61.3",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {