brd-ui-kit 0.1.85 → 0.1.86

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/components/forms/form-Input-phone.d.ts +10 -0
  2. package/dist/components/forms/form-avatar-uploader.d.ts +9 -0
  3. package/dist/components/forms/form-contact-input.d.ts +9 -0
  4. package/dist/components/forms/form-files-uploader.d.ts +9 -0
  5. package/dist/components/forms/form-input-password.d.ts +9 -0
  6. package/dist/components/forms/form-input.d.ts +9 -0
  7. package/dist/components/forms/form-select-calendar.d.ts +9 -0
  8. package/dist/components/forms/form-select.d.ts +18 -0
  9. package/dist/components/forms/form-textarea.d.ts +9 -0
  10. package/dist/components/forms/form-toggle-group.d.ts +13 -0
  11. package/dist/components/forms/form.d.ts +12 -0
  12. package/dist/components/forms/from-checkbox.d.ts +8 -0
  13. package/dist/components/forms/index.d.ts +12 -0
  14. package/dist/components/forms.d.ts +2 -0
  15. package/dist/components/input-contact/input-contact.d.ts +1 -0
  16. package/dist/components-forms-form-Input-phone.cjs +2 -0
  17. package/dist/components-forms-form-Input-phone.cjs.map +1 -0
  18. package/dist/components-forms-form-Input-phone.js +63 -0
  19. package/dist/components-forms-form-Input-phone.js.map +1 -0
  20. package/dist/components-forms-form-avatar-uploader.cjs +2 -0
  21. package/dist/components-forms-form-avatar-uploader.cjs.map +1 -0
  22. package/dist/components-forms-form-avatar-uploader.js +26 -0
  23. package/dist/components-forms-form-avatar-uploader.js.map +1 -0
  24. package/dist/components-forms-form-contact-input.cjs +2 -0
  25. package/dist/components-forms-form-contact-input.cjs.map +1 -0
  26. package/dist/components-forms-form-contact-input.js +66 -0
  27. package/dist/components-forms-form-contact-input.js.map +1 -0
  28. package/dist/components-forms-form-files-uploader.cjs +13 -0
  29. package/dist/components-forms-form-files-uploader.cjs.map +1 -0
  30. package/dist/components-forms-form-files-uploader.js +3060 -0
  31. package/dist/components-forms-form-files-uploader.js.map +1 -0
  32. package/dist/components-forms-form-input-password.cjs +30 -0
  33. package/dist/components-forms-form-input-password.cjs.map +1 -0
  34. package/dist/components-forms-form-input-password.js +377 -0
  35. package/dist/components-forms-form-input-password.js.map +1 -0
  36. package/dist/components-forms-form-input.cjs +2 -0
  37. package/dist/components-forms-form-input.cjs.map +1 -0
  38. package/dist/components-forms-form-input.js +46 -0
  39. package/dist/components-forms-form-input.js.map +1 -0
  40. package/dist/components-forms-form-select-calendar.cjs +2 -0
  41. package/dist/components-forms-form-select-calendar.cjs.map +1 -0
  42. package/dist/components-forms-form-select-calendar.js +28 -0
  43. package/dist/components-forms-form-select-calendar.js.map +1 -0
  44. package/dist/components-forms-form-select.cjs +2 -0
  45. package/dist/components-forms-form-select.cjs.map +1 -0
  46. package/dist/components-forms-form-select.js +83 -0
  47. package/dist/components-forms-form-select.js.map +1 -0
  48. package/dist/components-forms-form-textarea.cjs +2 -0
  49. package/dist/components-forms-form-textarea.cjs.map +1 -0
  50. package/dist/components-forms-form-textarea.js +42 -0
  51. package/dist/components-forms-form-textarea.js.map +1 -0
  52. package/dist/components-forms-form-toggle-group.cjs +2 -0
  53. package/dist/components-forms-form-toggle-group.cjs.map +1 -0
  54. package/dist/components-forms-form-toggle-group.js +27 -0
  55. package/dist/components-forms-form-toggle-group.js.map +1 -0
  56. package/dist/components-forms-form.cjs +2 -0
  57. package/dist/components-forms-form.cjs.map +1 -0
  58. package/dist/components-forms-form.js +24 -0
  59. package/dist/components-forms-form.js.map +1 -0
  60. package/dist/components-forms-from-checkbox.cjs +2 -0
  61. package/dist/components-forms-from-checkbox.cjs.map +1 -0
  62. package/dist/components-forms-from-checkbox.js +43 -0
  63. package/dist/components-forms-from-checkbox.js.map +1 -0
  64. package/dist/components-forms.cjs +2 -0
  65. package/dist/components-forms.cjs.map +1 -0
  66. package/dist/components-forms.js +27 -0
  67. package/dist/components-forms.js.map +1 -0
  68. package/dist/components-input-contact-input-contact.cjs.map +1 -1
  69. package/dist/components-input-contact-input-contact.js.map +1 -1
  70. package/dist/components-ui-typography-typography.styles-C6G6MFUq.js +105 -0
  71. package/dist/components-ui-typography-typography.styles-C6G6MFUq.js.map +1 -0
  72. package/dist/components-ui-typography-typography.styles-CMzY_pXl.cjs +2 -0
  73. package/dist/components-ui-typography-typography.styles-CMzY_pXl.cjs.map +1 -0
  74. package/dist/index.cjs +1 -1
  75. package/dist/index.d.ts +1 -0
  76. package/dist/index.esm-CFsbc_Iq.js +1328 -0
  77. package/dist/index.esm-CFsbc_Iq.js.map +1 -0
  78. package/dist/index.esm-ZdO9UZ3G.cjs +2 -0
  79. package/dist/index.esm-ZdO9UZ3G.cjs.map +1 -0
  80. package/dist/index.js +100 -76
  81. package/dist/index.js.map +1 -1
  82. package/dist/types/error.d.ts +13 -0
  83. package/dist/types-error.cjs +2 -0
  84. package/dist/types-error.cjs.map +1 -0
  85. package/dist/types-error.js +2 -0
  86. package/dist/types-error.js.map +1 -0
  87. package/dist/utils/get-validation-state.d.ts +1 -0
  88. package/dist/utils-get-validation-state.cjs +2 -0
  89. package/dist/utils-get-validation-state.cjs.map +1 -0
  90. package/dist/utils-get-validation-state.js +14 -0
  91. package/dist/utils-get-validation-state.js.map +1 -0
  92. package/package.json +12 -2
@@ -0,0 +1,10 @@
1
+ import { RegisterOptions } from 'react-hook-form';
2
+ import { InputProps } from '../input-field';
3
+ type Props = Omit<InputProps, "value" | "onChange" | "ref"> & {
4
+ name: string;
5
+ rules?: RegisterOptions;
6
+ disabled?: boolean;
7
+ mask?: string;
8
+ };
9
+ export declare const FormInputPhone: ({ name, rules, mask, placeholder, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,9 @@
1
+ import { RegisterOptions } from 'react-hook-form';
2
+ import { AvatarUploadProps } from '../avatar-uploader';
3
+ type Props = Omit<AvatarUploadProps, "onChange" | "src"> & {
4
+ name: string;
5
+ rules?: RegisterOptions;
6
+ disabled?: boolean;
7
+ };
8
+ export declare const FormAvatar: ({ name, rules, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,9 @@
1
+ import { RegisterOptions } from 'react-hook-form';
2
+ import { InputProps } from '../input-field';
3
+ type Props = Omit<InputProps, "value" | "onChange" | "ref"> & {
4
+ name: string;
5
+ rules?: RegisterOptions;
6
+ disabled?: boolean;
7
+ };
8
+ export declare const FormContactInput: ({ name, rules, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,9 @@
1
+ import { PropsFilesUploader } from 'brd-ui-kit/files-uploader';
2
+ import { RegisterOptions } from 'react-hook-form';
3
+ type Props = Omit<PropsFilesUploader, "value" | "onChange" | "disabled" | "isErrorText"> & {
4
+ name: string;
5
+ rules?: RegisterOptions;
6
+ disabled?: boolean;
7
+ };
8
+ export declare const FormFilesUploader: ({ name, rules, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,9 @@
1
+ import { InputPasswordProps } from 'brd-ui-kit';
2
+ import { ControllerRenderProps, RegisterOptions } from 'react-hook-form';
3
+ type Props = Omit<InputPasswordProps, keyof ControllerRenderProps> & {
4
+ name: string;
5
+ rules?: RegisterOptions;
6
+ disabled?: boolean;
7
+ };
8
+ export declare const FormInputPassword: ({ name, rules, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,9 @@
1
+ import { ControllerRenderProps, RegisterOptions } from 'react-hook-form';
2
+ import { InputProps } from '../input-field';
3
+ type Props = Omit<InputProps, keyof ControllerRenderProps> & {
4
+ name: string;
5
+ rules?: RegisterOptions;
6
+ disabled?: boolean;
7
+ };
8
+ export declare const FormInput: ({ name, rules, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,9 @@
1
+ import { RegisterOptions } from 'react-hook-form';
2
+ import { SelectCalendarMenuProps } from '../ui/select-calendar-menu';
3
+ type Props = {
4
+ name: string;
5
+ rules?: RegisterOptions;
6
+ disabled?: boolean;
7
+ } & SelectCalendarMenuProps;
8
+ export declare const FormSelectCalendar: ({ name, rules, disabled, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,18 @@
1
+ import { ControllerRenderProps, RegisterOptions } from 'react-hook-form';
2
+ import { SelectProps } from '../select-field';
3
+ import { SelectGroupsProps } from '../select-groups';
4
+ type BaseProps = {
5
+ name: string;
6
+ rules?: RegisterOptions;
7
+ disabled?: boolean;
8
+ selectField?: "field" | "groups";
9
+ };
10
+ type FieldProps = BaseProps & {
11
+ selectField?: "field";
12
+ } & Omit<SelectProps, keyof ControllerRenderProps>;
13
+ type GroupsProps = BaseProps & {
14
+ selectField?: "groups";
15
+ } & SelectGroupsProps;
16
+ type Props = FieldProps | GroupsProps;
17
+ export declare const FormSelect: ({ name, rules, disabled, selectField, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
18
+ export {};
@@ -0,0 +1,9 @@
1
+ import { ControllerRenderProps, RegisterOptions } from 'react-hook-form';
2
+ import { TextareaFieldProps } from '../textarea-field';
3
+ type Props = Omit<TextareaFieldProps, keyof ControllerRenderProps> & {
4
+ name: string;
5
+ rules?: RegisterOptions;
6
+ disabled?: boolean;
7
+ };
8
+ export declare const FormTextarea: ({ name, rules, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,13 @@
1
+ import { RegisterOptions } from 'react-hook-form';
2
+ import { ToggleGroup } from '../ui/toggle-group';
3
+ type ToggleGroupProps = React.ComponentProps<typeof ToggleGroup>;
4
+ type BaseProps = {
5
+ name: string;
6
+ rules?: RegisterOptions;
7
+ disabled?: boolean;
8
+ kind?: string;
9
+ type?: "single" | "multiple";
10
+ };
11
+ type Props = BaseProps & ToggleGroupProps;
12
+ export declare const FormToggleGroup: ({ name, rules, kind, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
13
+ export {};
@@ -0,0 +1,12 @@
1
+ import { ApiValidationError } from '../../types/error';
2
+ import { ComponentPropsWithRef, PropsWithChildren } from 'react';
3
+ import { DefaultValues, FieldValues, UseFormReturn } from 'react-hook-form';
4
+ type FormProps<T extends FieldValues> = {
5
+ apiErrors?: ApiValidationError[];
6
+ onSubmit: (values: T) => void | Promise<void>;
7
+ defaultValues?: DefaultValues<T>;
8
+ formControls?: UseFormReturn<T>;
9
+ };
10
+ type Props<T extends FieldValues> = Omit<ComponentPropsWithRef<"form">, keyof FormProps<T>> & PropsWithChildren<FormProps<T>>;
11
+ declare const Form: <T extends FieldValues>(props: Props<T>) => import("react/jsx-runtime").JSX.Element;
12
+ export { Form };
@@ -0,0 +1,8 @@
1
+ import { ControllerRenderProps, RegisterOptions } from 'react-hook-form';
2
+ import { CheckboxProps } from '../basic-checkbox';
3
+ type Props = Omit<CheckboxProps, keyof ControllerRenderProps> & {
4
+ name: string;
5
+ rules?: RegisterOptions;
6
+ };
7
+ export declare const FormCheckbox: ({ name, rules, ...rest }: Props) => import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,12 @@
1
+ export { Form } from './form';
2
+ export { FormAvatar } from './form-avatar-uploader';
3
+ export { FormContactInput } from './form-contact-input';
4
+ export { FormFilesUploader } from './form-files-uploader';
5
+ export { FormInput } from './form-input';
6
+ export { FormInputPassword } from './form-input-password';
7
+ export { FormInputPhone } from './form-Input-phone';
8
+ export { FormSelect } from './form-select';
9
+ export { FormSelectCalendar } from './form-select-calendar';
10
+ export { FormTextarea } from './form-textarea';
11
+ export { FormToggleGroup } from './form-toggle-group';
12
+ export { FormCheckbox } from './from-checkbox';
@@ -0,0 +1,2 @@
1
+ export * from './forms/index'
2
+ export {}
@@ -19,6 +19,7 @@ type Props = {
19
19
  onTypeChange?: (type: TypesChange) => void;
20
20
  inputProps: React.ComponentPropsWithRef<"input">;
21
21
  inputPhoneProps: InputPhoneProps;
22
+ disabled?: boolean;
22
23
  };
23
24
  export declare const InputContact: (props: Props) => import("react/jsx-runtime").JSX.Element;
24
25
  export type { Props as InputContactProps, TypesChange };
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),x=require("./utils-get-validation-state.cjs"),y=require("react"),a=require("./index.esm-ZdO9UZ3G.cjs"),R=require("./components-input-phone-input-phone.cjs"),j="+{7} (000) 000-00-00",A="+7 (000) 000-00-00",r=t=>t.replace(/\D/g,"").length>1,I=({name:t,rules:d,mask:p=j,placeholder:h=A,...o})=>{const[P,i]=y.useState(!1),{control:g,formState:{errors:S,touchedFields:f,isSubmitted:m}}=a.useFormContext();return l.jsx(a.Controller,{name:t,rules:d,control:g,render:({field:{onChange:u,onBlur:F,value:n="",ref:_}})=>{const s=typeof n=="string"?n:String(n??""),[E,q]=x.getValidationState(t,s,S,f,m),c=P||r(s);return l.jsx(R.InputPhone,{...o,name:t,mask:p,unmask:!1,lazy:!c,value:s,type:"tel",inputRef:_,onAccept:e=>{u(r(e)?e:"")},onFocus:e=>{i(!0),o.onFocus?.(e)},onBlur:e=>{r(e.currentTarget.value)||u(""),i(!1),F(),o.onBlur?.(e)},isValid:E,description:q,placeholder:c?void 0:h})}})};exports.FormInputPhone=I;
2
+ //# sourceMappingURL=components-forms-form-Input-phone.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-forms-form-Input-phone.cjs","sources":["../src/components/forms/form-Input-phone.tsx"],"sourcesContent":["import { getValidationState } from \"@/utils/get-validation-state\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext, type RegisterOptions } from \"react-hook-form\";\nimport type { InputProps } from \"../input-field\";\nimport { InputPhone } from \"../input-phone\";\n\nconst PHONE_MASK_PATTERN = \"+{7} (000) 000-00-00\";\nconst PHONE_PLACEHOLDER = \"+7 (000) 000-00-00\";\nconst hasEnteredPhoneDigits = (value: string) => value.replace(/\\D/g, \"\").length > 1;\n\ntype Props = Omit<InputProps, \"value\" | \"onChange\" | \"ref\"> & {\n name: string;\n rules?: RegisterOptions;\n disabled?: boolean;\n mask?: string;\n};\n\n// TODO: Доделать\nexport const FormInputPhone = ({\n name,\n rules,\n mask = PHONE_MASK_PATTERN,\n placeholder = PHONE_PLACEHOLDER,\n ...rest\n}: Props) => {\n const [isFocused, setIsFocused] = useState(false);\n const {\n control,\n formState: { errors, touchedFields, isSubmitted },\n } = useFormContext();\n\n return (\n <Controller\n name={name}\n rules={rules}\n control={control}\n render={({ field: { onChange, onBlur, value = \"\", ref } }) => {\n const inputValue = typeof value === \"string\" ? value : String(value ?? \"\");\n const [isValid, errorMsg] = getValidationState(\n name,\n inputValue,\n errors,\n touchedFields,\n isSubmitted,\n );\n const shouldShowMask = isFocused || hasEnteredPhoneDigits(inputValue);\n\n return (\n <InputPhone\n {...rest}\n name={name}\n mask={mask}\n unmask={false}\n lazy={!shouldShowMask}\n value={inputValue}\n type=\"tel\"\n inputRef={ref}\n onAccept={(val: string) => {\n onChange(hasEnteredPhoneDigits(val) ? val : \"\");\n }}\n onFocus={(event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n rest.onFocus?.(event);\n }}\n onBlur={(event: React.FocusEvent<HTMLInputElement>) => {\n if (!hasEnteredPhoneDigits(event.currentTarget.value)) {\n onChange(\"\");\n }\n setIsFocused(false);\n onBlur();\n rest.onBlur?.(event);\n }}\n isValid={isValid}\n description={errorMsg}\n placeholder={shouldShowMask ? undefined : placeholder}\n />\n );\n }}\n />\n );\n};\n"],"names":["PHONE_MASK_PATTERN","PHONE_PLACEHOLDER","hasEnteredPhoneDigits","value","FormInputPhone","name","rules","mask","placeholder","rest","isFocused","setIsFocused","useState","control","errors","touchedFields","isSubmitted","useFormContext","jsx","Controller","onChange","onBlur","ref","inputValue","isValid","errorMsg","getValidationState","shouldShowMask","InputPhone","val","event"],"mappings":"kRAMMA,EAAqB,uBACrBC,EAAoB,qBACpBC,EAAyBC,GAAkBA,EAAM,QAAQ,MAAO,EAAE,EAAE,OAAS,EAUtEC,EAAiB,CAAC,CAC7B,KAAAC,EACA,MAAAC,EACA,KAAAC,EAAOP,EACP,YAAAQ,EAAcP,EACd,GAAGQ,CACL,IAAa,CACX,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAAS,EAAK,EAC1C,CACJ,QAAAC,EACA,UAAW,CAAE,OAAAC,EAAQ,cAAAC,EAAe,YAAAC,CAAA,CAAY,EAC9CC,iBAAA,EAEJ,OACEC,EAAAA,IAACC,EAAAA,WAAA,CACC,KAAAd,EACA,MAAAC,EACA,QAAAO,EACA,OAAQ,CAAC,CAAE,MAAO,CAAE,SAAAO,EAAU,OAAAC,EAAQ,MAAAlB,EAAQ,GAAI,IAAAmB,CAAA,KAAY,CAC5D,MAAMC,EAAa,OAAOpB,GAAU,SAAWA,EAAQ,OAAOA,GAAS,EAAE,EACnE,CAACqB,EAASC,CAAQ,EAAIC,EAAAA,mBAC1BrB,EACAkB,EACAT,EACAC,EACAC,CAAA,EAEIW,EAAiBjB,GAAaR,EAAsBqB,CAAU,EAEpE,OACEL,EAAAA,IAACU,EAAAA,WAAA,CACE,GAAGnB,EACJ,KAAAJ,EACA,KAAAE,EACA,OAAQ,GACR,KAAM,CAACoB,EACP,MAAOJ,EACP,KAAK,MACL,SAAUD,EACV,SAAWO,GAAgB,CACzBT,EAASlB,EAAsB2B,CAAG,EAAIA,EAAM,EAAE,CAChD,EACA,QAAUC,GAA8C,CACtDnB,EAAa,EAAI,EACjBF,EAAK,UAAUqB,CAAK,CACtB,EACA,OAASA,GAA8C,CAChD5B,EAAsB4B,EAAM,cAAc,KAAK,GAClDV,EAAS,EAAE,EAEbT,EAAa,EAAK,EAClBU,EAAA,EACAZ,EAAK,SAASqB,CAAK,CACrB,EACA,QAAAN,EACA,YAAaC,EACb,YAAaE,EAAiB,OAAYnB,CAAA,CAAA,CAGhD,CAAA,CAAA,CAGN"}
@@ -0,0 +1,63 @@
1
+ import { jsx as l } from "react/jsx-runtime";
2
+ import { getValidationState as x } from "./utils-get-validation-state.js";
3
+ import { useState as y } from "react";
4
+ import { a as C, C as D } from "./index.esm-CFsbc_Iq.js";
5
+ import { InputPhone as H } from "./components-input-phone-input-phone.js";
6
+ const I = "+{7} (000) 000-00-00", M = "+7 (000) 000-00-00", n = (t) => t.replace(/\D/g, "").length > 1, _ = ({
7
+ name: t,
8
+ rules: a,
9
+ mask: p = I,
10
+ placeholder: d = M,
11
+ ...r
12
+ }) => {
13
+ const [f, i] = y(!1), {
14
+ control: m,
15
+ formState: { errors: h, touchedFields: g, isSubmitted: F }
16
+ } = C();
17
+ return /* @__PURE__ */ l(
18
+ D,
19
+ {
20
+ name: t,
21
+ rules: a,
22
+ control: m,
23
+ render: ({ field: { onChange: c, onBlur: P, value: e = "", ref: S } }) => {
24
+ const s = typeof e == "string" ? e : String(e ?? ""), [E, A] = x(
25
+ t,
26
+ s,
27
+ h,
28
+ g,
29
+ F
30
+ ), u = f || n(s);
31
+ return /* @__PURE__ */ l(
32
+ H,
33
+ {
34
+ ...r,
35
+ name: t,
36
+ mask: p,
37
+ unmask: !1,
38
+ lazy: !u,
39
+ value: s,
40
+ type: "tel",
41
+ inputRef: S,
42
+ onAccept: (o) => {
43
+ c(n(o) ? o : "");
44
+ },
45
+ onFocus: (o) => {
46
+ i(!0), r.onFocus?.(o);
47
+ },
48
+ onBlur: (o) => {
49
+ n(o.currentTarget.value) || c(""), i(!1), P(), r.onBlur?.(o);
50
+ },
51
+ isValid: E,
52
+ description: A,
53
+ placeholder: u ? void 0 : d
54
+ }
55
+ );
56
+ }
57
+ }
58
+ );
59
+ };
60
+ export {
61
+ _ as FormInputPhone
62
+ };
63
+ //# sourceMappingURL=components-forms-form-Input-phone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-forms-form-Input-phone.js","sources":["../src/components/forms/form-Input-phone.tsx"],"sourcesContent":["import { getValidationState } from \"@/utils/get-validation-state\";\nimport { useState } from \"react\";\nimport { Controller, useFormContext, type RegisterOptions } from \"react-hook-form\";\nimport type { InputProps } from \"../input-field\";\nimport { InputPhone } from \"../input-phone\";\n\nconst PHONE_MASK_PATTERN = \"+{7} (000) 000-00-00\";\nconst PHONE_PLACEHOLDER = \"+7 (000) 000-00-00\";\nconst hasEnteredPhoneDigits = (value: string) => value.replace(/\\D/g, \"\").length > 1;\n\ntype Props = Omit<InputProps, \"value\" | \"onChange\" | \"ref\"> & {\n name: string;\n rules?: RegisterOptions;\n disabled?: boolean;\n mask?: string;\n};\n\n// TODO: Доделать\nexport const FormInputPhone = ({\n name,\n rules,\n mask = PHONE_MASK_PATTERN,\n placeholder = PHONE_PLACEHOLDER,\n ...rest\n}: Props) => {\n const [isFocused, setIsFocused] = useState(false);\n const {\n control,\n formState: { errors, touchedFields, isSubmitted },\n } = useFormContext();\n\n return (\n <Controller\n name={name}\n rules={rules}\n control={control}\n render={({ field: { onChange, onBlur, value = \"\", ref } }) => {\n const inputValue = typeof value === \"string\" ? value : String(value ?? \"\");\n const [isValid, errorMsg] = getValidationState(\n name,\n inputValue,\n errors,\n touchedFields,\n isSubmitted,\n );\n const shouldShowMask = isFocused || hasEnteredPhoneDigits(inputValue);\n\n return (\n <InputPhone\n {...rest}\n name={name}\n mask={mask}\n unmask={false}\n lazy={!shouldShowMask}\n value={inputValue}\n type=\"tel\"\n inputRef={ref}\n onAccept={(val: string) => {\n onChange(hasEnteredPhoneDigits(val) ? val : \"\");\n }}\n onFocus={(event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n rest.onFocus?.(event);\n }}\n onBlur={(event: React.FocusEvent<HTMLInputElement>) => {\n if (!hasEnteredPhoneDigits(event.currentTarget.value)) {\n onChange(\"\");\n }\n setIsFocused(false);\n onBlur();\n rest.onBlur?.(event);\n }}\n isValid={isValid}\n description={errorMsg}\n placeholder={shouldShowMask ? undefined : placeholder}\n />\n );\n }}\n />\n );\n};\n"],"names":["PHONE_MASK_PATTERN","PHONE_PLACEHOLDER","hasEnteredPhoneDigits","value","FormInputPhone","name","rules","mask","placeholder","rest","isFocused","setIsFocused","useState","control","errors","touchedFields","isSubmitted","useFormContext","jsx","Controller","onChange","onBlur","ref","inputValue","isValid","errorMsg","getValidationState","shouldShowMask","InputPhone","val","event"],"mappings":";;;;;AAMA,MAAMA,IAAqB,wBACrBC,IAAoB,sBACpBC,IAAwB,CAACC,MAAkBA,EAAM,QAAQ,OAAO,EAAE,EAAE,SAAS,GAUtEC,IAAiB,CAAC;AAAA,EAC7B,MAAAC;AAAA,EACA,OAAAC;AAAA,EACA,MAAAC,IAAOP;AAAA,EACP,aAAAQ,IAAcP;AAAA,EACd,GAAGQ;AACL,MAAa;AACX,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C;AAAA,IACJ,SAAAC;AAAA,IACA,WAAW,EAAE,QAAAC,GAAQ,eAAAC,GAAe,aAAAC,EAAA;AAAA,EAAY,IAC9CC,EAAA;AAEJ,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAAd;AAAA,MACA,OAAAC;AAAA,MACA,SAAAO;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAAO,GAAU,QAAAC,GAAQ,OAAAlB,IAAQ,IAAI,KAAAmB,EAAA,QAAY;AAC5D,cAAMC,IAAa,OAAOpB,KAAU,WAAWA,IAAQ,OAAOA,KAAS,EAAE,GACnE,CAACqB,GAASC,CAAQ,IAAIC;AAAA,UAC1BrB;AAAA,UACAkB;AAAA,UACAT;AAAA,UACAC;AAAA,UACAC;AAAA,QAAA,GAEIW,IAAiBjB,KAAaR,EAAsBqB,CAAU;AAEpE,eACE,gBAAAL;AAAA,UAACU;AAAA,UAAA;AAAA,YACE,GAAGnB;AAAA,YACJ,MAAAJ;AAAA,YACA,MAAAE;AAAA,YACA,QAAQ;AAAA,YACR,MAAM,CAACoB;AAAA,YACP,OAAOJ;AAAA,YACP,MAAK;AAAA,YACL,UAAUD;AAAA,YACV,UAAU,CAACO,MAAgB;AACzB,cAAAT,EAASlB,EAAsB2B,CAAG,IAAIA,IAAM,EAAE;AAAA,YAChD;AAAA,YACA,SAAS,CAACC,MAA8C;AACtD,cAAAnB,EAAa,EAAI,GACjBF,EAAK,UAAUqB,CAAK;AAAA,YACtB;AAAA,YACA,QAAQ,CAACA,MAA8C;AACrD,cAAK5B,EAAsB4B,EAAM,cAAc,KAAK,KAClDV,EAAS,EAAE,GAEbT,EAAa,EAAK,GAClBU,EAAA,GACAZ,EAAK,SAASqB,CAAK;AAAA,YACrB;AAAA,YACA,SAAAN;AAAA,YACA,aAAaC;AAAA,YACb,aAAaE,IAAiB,SAAYnB;AAAA,UAAA;AAAA,QAAA;AAAA,MAGhD;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),e=require("./index.esm-ZdO9UZ3G.cjs"),l=require("./components-avatar-uploader-avatar-uploader.cjs"),u=({name:t,rules:o,...a})=>{const{control:n}=e.useFormContext();return r.jsx(e.Controller,{name:t,rules:o,control:n,render:({field:{onChange:s,value:c=""}})=>r.jsx(l.AvatarUpload,{...a,src:c,onChange:s})})};exports.FormAvatar=u;
2
+ //# sourceMappingURL=components-forms-form-avatar-uploader.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-forms-form-avatar-uploader.cjs","sources":["../src/components/forms/form-avatar-uploader.tsx"],"sourcesContent":["import { Controller, useFormContext, type RegisterOptions } from \"react-hook-form\";\nimport { AvatarUpload, type AvatarUploadProps } from \"../avatar-uploader\";\n\ntype Props = Omit<AvatarUploadProps, \"onChange\" | \"src\"> & {\n name: string;\n rules?: RegisterOptions;\n disabled?: boolean;\n};\n\nexport const FormAvatar = ({ name, rules, ...rest }: Props) => {\n const { control } = useFormContext();\n\n return (\n <Controller\n name={name}\n rules={rules}\n control={control}\n render={({ field: { onChange, value = \"\" } }) => {\n return (\n <AvatarUpload\n {...rest}\n src={value}\n onChange={onChange}\n />\n );\n }}\n />\n );\n};\n"],"names":["FormAvatar","name","rules","rest","control","useFormContext","jsx","Controller","onChange","value","AvatarUpload"],"mappings":"yNASaA,EAAa,CAAC,CAAE,KAAAC,EAAM,MAAAC,EAAO,GAAGC,KAAkB,CAC7D,KAAM,CAAE,QAAAC,CAAA,EAAYC,iBAAA,EAEpB,OACEC,EAAAA,IAACC,EAAAA,WAAA,CACC,KAAAN,EACA,MAAAC,EACA,QAAAE,EACA,OAAQ,CAAC,CAAE,MAAO,CAAE,SAAAI,EAAU,MAAAC,EAAQ,EAAA,KAElCH,EAAAA,IAACI,EAAAA,aAAA,CACE,GAAGP,EACJ,IAAKM,EACL,SAAAD,CAAA,CAAA,CAGN,CAAA,CAGN"}
@@ -0,0 +1,26 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { a as s, C as l } from "./index.esm-CFsbc_Iq.js";
3
+ import { AvatarUpload as p } from "./components-avatar-uploader-avatar-uploader.js";
4
+ const d = ({ name: o, rules: t, ...e }) => {
5
+ const { control: a } = s();
6
+ return /* @__PURE__ */ r(
7
+ l,
8
+ {
9
+ name: o,
10
+ rules: t,
11
+ control: a,
12
+ render: ({ field: { onChange: m, value: n = "" } }) => /* @__PURE__ */ r(
13
+ p,
14
+ {
15
+ ...e,
16
+ src: n,
17
+ onChange: m
18
+ }
19
+ )
20
+ }
21
+ );
22
+ };
23
+ export {
24
+ d as FormAvatar
25
+ };
26
+ //# sourceMappingURL=components-forms-form-avatar-uploader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-forms-form-avatar-uploader.js","sources":["../src/components/forms/form-avatar-uploader.tsx"],"sourcesContent":["import { Controller, useFormContext, type RegisterOptions } from \"react-hook-form\";\nimport { AvatarUpload, type AvatarUploadProps } from \"../avatar-uploader\";\n\ntype Props = Omit<AvatarUploadProps, \"onChange\" | \"src\"> & {\n name: string;\n rules?: RegisterOptions;\n disabled?: boolean;\n};\n\nexport const FormAvatar = ({ name, rules, ...rest }: Props) => {\n const { control } = useFormContext();\n\n return (\n <Controller\n name={name}\n rules={rules}\n control={control}\n render={({ field: { onChange, value = \"\" } }) => {\n return (\n <AvatarUpload\n {...rest}\n src={value}\n onChange={onChange}\n />\n );\n }}\n />\n );\n};\n"],"names":["FormAvatar","name","rules","rest","control","useFormContext","jsx","Controller","onChange","value","AvatarUpload"],"mappings":";;;AASO,MAAMA,IAAa,CAAC,EAAE,MAAAC,GAAM,OAAAC,GAAO,GAAGC,QAAkB;AAC7D,QAAM,EAAE,SAAAC,EAAA,IAAYC,EAAA;AAEpB,SACE,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAAN;AAAA,MACA,OAAAC;AAAA,MACA,SAAAE;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAAI,GAAU,OAAAC,IAAQ,GAAA,QAElC,gBAAAH;AAAA,QAACI;AAAA,QAAA;AAAA,UACE,GAAGP;AAAA,UACJ,KAAKM;AAAA,UACL,UAAAD;AAAA,QAAA;AAAA,MAAA;AAAA,IAGN;AAAA,EAAA;AAGN;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const p=require("react/jsx-runtime"),E=require("./utils-get-validation-state.cjs"),M=require("react"),d=require("./index.esm-ZdO9UZ3G.cjs"),T=require("./components-input-contact-input-contact.cjs"),V="+7 (000) 000-00-00",j=({name:e,rules:g,...s})=>{const[S,u]=M.useState(!1),{control:m,formState:{errors:c,touchedFields:f,isSubmitted:F},setValue:i,clearErrors:y}=d.useFormContext(),a=t=>t.replace(/\D/g,"").length>1,P=t=>{i(`${e}.type`,t),i(`${e}.value`,""),y()};return p.jsx(d.Controller,{name:`${e}.value`,rules:g,control:m,render:({field:{onChange:t,onBlur:h,value:n="",ref:l}})=>{const C=c[e].value?.message,r=typeof n=="string"?n:String(n??""),[_,q]=E.getValidationState(e,r,c,f,F,C),x=S||a(r);return p.jsx(T.InputContact,{...s,inputProps:{ref:l,onChange:t},inputPhoneProps:{mask:V,unmask:!1,lazy:!x,type:"tel",inputRef:l,onAccept:t,onFocus:o=>{u(!0),s.onFocus?.(o)},onBlur:o=>{a(o.currentTarget.value)||t(""),u(!1),h(),s.onBlur?.(o)}},onTypeChange:P,isValid:_,description:q,name:e,value:r})}})};exports.FormContactInput=j;
2
+ //# sourceMappingURL=components-forms-form-contact-input.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-forms-form-contact-input.cjs","sources":["../src/components/forms/form-contact-input.tsx"],"sourcesContent":["import { getValidationState } from \"@/utils/get-validation-state\";\nimport { useState } from \"react\";\n\nimport {\n Controller,\n useFormContext,\n type FieldError,\n type RegisterOptions,\n} from \"react-hook-form\";\nimport { InputContact, type TypesChange } from \"../input-contact\";\nimport type { InputProps } from \"../input-field\";\n\ntype Props = Omit<InputProps, \"value\" | \"onChange\" | \"ref\"> & {\n name: string;\n rules?: RegisterOptions;\n disabled?: boolean;\n};\n\nconst PHONE_MASK_PATTERN = \"+7 (000) 000-00-00\";\n\nexport const FormContactInput = ({ name, rules, ...rest }: Props) => {\n const [isFocused, setIsFocused] = useState(false);\n const {\n control,\n formState: { errors, touchedFields, isSubmitted },\n setValue,\n clearErrors,\n } = useFormContext();\n\n const hasEnteredPhoneDigits = (value: string) => value.replace(/\\D/g, \"\").length > 1;\n\n const onTypeChange = (newType: TypesChange) => {\n setValue(`${name}.type`, newType);\n setValue(`${name}.value`, \"\");\n clearErrors();\n };\n\n return (\n <Controller\n name={`${name}.value`}\n rules={rules}\n control={control}\n render={({ field: { onChange, onBlur, value = \"\", ref } }) => {\n const customErrMsg = (errors[name] as { value?: FieldError }).value?.message;\n\n const inputValue = typeof value === \"string\" ? value : String(value ?? \"\");\n const [isValid, errorMsg] = getValidationState(\n name,\n inputValue,\n errors,\n touchedFields,\n isSubmitted,\n customErrMsg,\n );\n const shouldShowMask = isFocused || hasEnteredPhoneDigits(inputValue);\n\n return (\n <InputContact\n {...rest}\n inputProps={{\n ref,\n onChange,\n }}\n inputPhoneProps={{\n mask: PHONE_MASK_PATTERN,\n unmask: false,\n lazy: !shouldShowMask,\n type: \"tel\",\n inputRef: ref,\n onAccept: onChange,\n onFocus: (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n rest.onFocus?.(event);\n },\n onBlur: (event: React.FocusEvent<HTMLInputElement>) => {\n if (!hasEnteredPhoneDigits(event.currentTarget.value)) {\n onChange(\"\");\n }\n setIsFocused(false);\n onBlur();\n rest.onBlur?.(event);\n },\n }}\n onTypeChange={onTypeChange}\n isValid={isValid}\n description={errorMsg}\n name={name}\n value={inputValue}\n />\n );\n }}\n />\n );\n};\n"],"names":["PHONE_MASK_PATTERN","FormContactInput","name","rules","rest","isFocused","setIsFocused","useState","control","errors","touchedFields","isSubmitted","setValue","clearErrors","useFormContext","hasEnteredPhoneDigits","value","onTypeChange","newType","jsx","Controller","onChange","onBlur","ref","customErrMsg","inputValue","isValid","errorMsg","getValidationState","shouldShowMask","InputContact","event"],"mappings":"sRAkBMA,EAAqB,qBAEdC,EAAmB,CAAC,CAAE,KAAAC,EAAM,MAAAC,EAAO,GAAGC,KAAkB,CACnE,KAAM,CAACC,EAAWC,CAAY,EAAIC,EAAAA,SAAS,EAAK,EAC1C,CACJ,QAAAC,EACA,UAAW,CAAE,OAAAC,EAAQ,cAAAC,EAAe,YAAAC,CAAA,EACpC,SAAAC,EACA,YAAAC,CAAA,EACEC,iBAAA,EAEEC,EAAyBC,GAAkBA,EAAM,QAAQ,MAAO,EAAE,EAAE,OAAS,EAE7EC,EAAgBC,GAAyB,CAC7CN,EAAS,GAAGV,CAAI,QAASgB,CAAO,EAChCN,EAAS,GAAGV,CAAI,SAAU,EAAE,EAC5BW,EAAA,CACF,EAEA,OACEM,EAAAA,IAACC,EAAAA,WAAA,CACC,KAAM,GAAGlB,CAAI,SACb,MAAAC,EACA,QAAAK,EACA,OAAQ,CAAC,CAAE,MAAO,CAAE,SAAAa,EAAU,OAAAC,EAAQ,MAAAN,EAAQ,GAAI,IAAAO,CAAA,KAAY,CAC5D,MAAMC,EAAgBf,EAAOP,CAAI,EAA6B,OAAO,QAE/DuB,EAAa,OAAOT,GAAU,SAAWA,EAAQ,OAAOA,GAAS,EAAE,EACnE,CAACU,EAASC,CAAQ,EAAIC,EAAAA,mBAC1B1B,EACAuB,EACAhB,EACAC,EACAC,EACAa,CAAA,EAEIK,EAAiBxB,GAAaU,EAAsBU,CAAU,EAEpE,OACEN,EAAAA,IAACW,EAAAA,aAAA,CACE,GAAG1B,EACJ,WAAY,CACV,IAAAmB,EACA,SAAAF,CAAA,EAEF,gBAAiB,CACf,KAAMrB,EACN,OAAQ,GACR,KAAM,CAAC6B,EACP,KAAM,MACN,SAAUN,EACV,SAAUF,EACV,QAAUU,GAA8C,CACtDzB,EAAa,EAAI,EACjBF,EAAK,UAAU2B,CAAK,CACtB,EACA,OAASA,GAA8C,CAChDhB,EAAsBgB,EAAM,cAAc,KAAK,GAClDV,EAAS,EAAE,EAEbf,EAAa,EAAK,EAClBgB,EAAA,EACAlB,EAAK,SAAS2B,CAAK,CACrB,CAAA,EAEF,aAAAd,EACA,QAAAS,EACA,YAAaC,EACb,KAAAzB,EACA,MAAOuB,CAAA,CAAA,CAGb,CAAA,CAAA,CAGN"}
@@ -0,0 +1,66 @@
1
+ import { jsx as p } from "react/jsx-runtime";
2
+ import { getValidationState as T } from "./utils-get-validation-state.js";
3
+ import { useState as V } from "react";
4
+ import { a as k, C as x } from "./index.esm-CFsbc_Iq.js";
5
+ import { InputContact as A } from "./components-input-contact-input-contact.js";
6
+ const I = "+7 (000) 000-00-00", R = ({ name: o, rules: m, ...s }) => {
7
+ const [d, u] = V(!1), {
8
+ control: f,
9
+ formState: { errors: c, touchedFields: g, isSubmitted: F },
10
+ setValue: i,
11
+ clearErrors: S
12
+ } = k(), a = (t) => t.replace(/\D/g, "").length > 1, h = (t) => {
13
+ i(`${o}.type`, t), i(`${o}.value`, ""), S();
14
+ };
15
+ return /* @__PURE__ */ p(
16
+ x,
17
+ {
18
+ name: `${o}.value`,
19
+ rules: m,
20
+ control: f,
21
+ render: ({ field: { onChange: t, onBlur: P, value: e = "", ref: l } }) => {
22
+ const y = c[o].value?.message, n = typeof e == "string" ? e : String(e ?? ""), [E, C] = T(
23
+ o,
24
+ n,
25
+ c,
26
+ g,
27
+ F,
28
+ y
29
+ ), M = d || a(n);
30
+ return /* @__PURE__ */ p(
31
+ A,
32
+ {
33
+ ...s,
34
+ inputProps: {
35
+ ref: l,
36
+ onChange: t
37
+ },
38
+ inputPhoneProps: {
39
+ mask: I,
40
+ unmask: !1,
41
+ lazy: !M,
42
+ type: "tel",
43
+ inputRef: l,
44
+ onAccept: t,
45
+ onFocus: (r) => {
46
+ u(!0), s.onFocus?.(r);
47
+ },
48
+ onBlur: (r) => {
49
+ a(r.currentTarget.value) || t(""), u(!1), P(), s.onBlur?.(r);
50
+ }
51
+ },
52
+ onTypeChange: h,
53
+ isValid: E,
54
+ description: C,
55
+ name: o,
56
+ value: n
57
+ }
58
+ );
59
+ }
60
+ }
61
+ );
62
+ };
63
+ export {
64
+ R as FormContactInput
65
+ };
66
+ //# sourceMappingURL=components-forms-form-contact-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-forms-form-contact-input.js","sources":["../src/components/forms/form-contact-input.tsx"],"sourcesContent":["import { getValidationState } from \"@/utils/get-validation-state\";\nimport { useState } from \"react\";\n\nimport {\n Controller,\n useFormContext,\n type FieldError,\n type RegisterOptions,\n} from \"react-hook-form\";\nimport { InputContact, type TypesChange } from \"../input-contact\";\nimport type { InputProps } from \"../input-field\";\n\ntype Props = Omit<InputProps, \"value\" | \"onChange\" | \"ref\"> & {\n name: string;\n rules?: RegisterOptions;\n disabled?: boolean;\n};\n\nconst PHONE_MASK_PATTERN = \"+7 (000) 000-00-00\";\n\nexport const FormContactInput = ({ name, rules, ...rest }: Props) => {\n const [isFocused, setIsFocused] = useState(false);\n const {\n control,\n formState: { errors, touchedFields, isSubmitted },\n setValue,\n clearErrors,\n } = useFormContext();\n\n const hasEnteredPhoneDigits = (value: string) => value.replace(/\\D/g, \"\").length > 1;\n\n const onTypeChange = (newType: TypesChange) => {\n setValue(`${name}.type`, newType);\n setValue(`${name}.value`, \"\");\n clearErrors();\n };\n\n return (\n <Controller\n name={`${name}.value`}\n rules={rules}\n control={control}\n render={({ field: { onChange, onBlur, value = \"\", ref } }) => {\n const customErrMsg = (errors[name] as { value?: FieldError }).value?.message;\n\n const inputValue = typeof value === \"string\" ? value : String(value ?? \"\");\n const [isValid, errorMsg] = getValidationState(\n name,\n inputValue,\n errors,\n touchedFields,\n isSubmitted,\n customErrMsg,\n );\n const shouldShowMask = isFocused || hasEnteredPhoneDigits(inputValue);\n\n return (\n <InputContact\n {...rest}\n inputProps={{\n ref,\n onChange,\n }}\n inputPhoneProps={{\n mask: PHONE_MASK_PATTERN,\n unmask: false,\n lazy: !shouldShowMask,\n type: \"tel\",\n inputRef: ref,\n onAccept: onChange,\n onFocus: (event: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n rest.onFocus?.(event);\n },\n onBlur: (event: React.FocusEvent<HTMLInputElement>) => {\n if (!hasEnteredPhoneDigits(event.currentTarget.value)) {\n onChange(\"\");\n }\n setIsFocused(false);\n onBlur();\n rest.onBlur?.(event);\n },\n }}\n onTypeChange={onTypeChange}\n isValid={isValid}\n description={errorMsg}\n name={name}\n value={inputValue}\n />\n );\n }}\n />\n );\n};\n"],"names":["PHONE_MASK_PATTERN","FormContactInput","name","rules","rest","isFocused","setIsFocused","useState","control","errors","touchedFields","isSubmitted","setValue","clearErrors","useFormContext","hasEnteredPhoneDigits","value","onTypeChange","newType","jsx","Controller","onChange","onBlur","ref","customErrMsg","inputValue","isValid","errorMsg","getValidationState","shouldShowMask","InputContact","event"],"mappings":";;;;;AAkBA,MAAMA,IAAqB,sBAEdC,IAAmB,CAAC,EAAE,MAAAC,GAAM,OAAAC,GAAO,GAAGC,QAAkB;AACnE,QAAM,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C;AAAA,IACJ,SAAAC;AAAA,IACA,WAAW,EAAE,QAAAC,GAAQ,eAAAC,GAAe,aAAAC,EAAA;AAAA,IACpC,UAAAC;AAAA,IACA,aAAAC;AAAA,EAAA,IACEC,EAAA,GAEEC,IAAwB,CAACC,MAAkBA,EAAM,QAAQ,OAAO,EAAE,EAAE,SAAS,GAE7EC,IAAe,CAACC,MAAyB;AAC7C,IAAAN,EAAS,GAAGV,CAAI,SAASgB,CAAO,GAChCN,EAAS,GAAGV,CAAI,UAAU,EAAE,GAC5BW,EAAA;AAAA,EACF;AAEA,SACE,gBAAAM;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,MAAM,GAAGlB,CAAI;AAAA,MACb,OAAAC;AAAA,MACA,SAAAK;AAAA,MACA,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAAa,GAAU,QAAAC,GAAQ,OAAAN,IAAQ,IAAI,KAAAO,EAAA,QAAY;AAC5D,cAAMC,IAAgBf,EAAOP,CAAI,EAA6B,OAAO,SAE/DuB,IAAa,OAAOT,KAAU,WAAWA,IAAQ,OAAOA,KAAS,EAAE,GACnE,CAACU,GAASC,CAAQ,IAAIC;AAAA,UAC1B1B;AAAA,UACAuB;AAAA,UACAhB;AAAA,UACAC;AAAA,UACAC;AAAA,UACAa;AAAA,QAAA,GAEIK,IAAiBxB,KAAaU,EAAsBU,CAAU;AAEpE,eACE,gBAAAN;AAAA,UAACW;AAAA,UAAA;AAAA,YACE,GAAG1B;AAAA,YACJ,YAAY;AAAA,cACV,KAAAmB;AAAA,cACA,UAAAF;AAAA,YAAA;AAAA,YAEF,iBAAiB;AAAA,cACf,MAAMrB;AAAA,cACN,QAAQ;AAAA,cACR,MAAM,CAAC6B;AAAA,cACP,MAAM;AAAA,cACN,UAAUN;AAAA,cACV,UAAUF;AAAA,cACV,SAAS,CAACU,MAA8C;AACtD,gBAAAzB,EAAa,EAAI,GACjBF,EAAK,UAAU2B,CAAK;AAAA,cACtB;AAAA,cACA,QAAQ,CAACA,MAA8C;AACrD,gBAAKhB,EAAsBgB,EAAM,cAAc,KAAK,KAClDV,EAAS,EAAE,GAEbf,EAAa,EAAK,GAClBgB,EAAA,GACAlB,EAAK,SAAS2B,CAAK;AAAA,cACrB;AAAA,YAAA;AAAA,YAEF,cAAAd;AAAA,YACA,SAAAS;AAAA,YACA,aAAaC;AAAA,YACb,MAAAzB;AAAA,YACA,OAAOuB;AAAA,UAAA;AAAA,QAAA;AAAA,MAGb;AAAA,IAAA;AAAA,EAAA;AAGN;"}