@amateescu/portal-ui-components 0.0.38 → 0.0.40

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 (54) hide show
  1. package/dist/{Button-BM72-1G6.js → Button-BPIbs5cw.js} +3 -3
  2. package/dist/{ButtonBase-D6nf3ymf.js → ButtonBase-Cj889DO9.js} +4 -4
  3. package/dist/CheckBox-B3iprBDG.js +11 -0
  4. package/dist/{CircularProgress-BlQFR6DW.js → CircularProgress-BjeN7Xv-.js} +8 -8
  5. package/dist/{Clear-BauR3cPE.js → Clear-BzF0WMi7.js} +1 -1
  6. package/dist/{DefaultPropsProvider-BtPfTrMq.js → DefaultPropsProvider-8An9vBcT.js} +13 -12
  7. package/dist/Search-BxOqluZm.js +8 -0
  8. package/dist/assets/index.css +1 -1
  9. package/dist/components/LoadingAnimation/LoadingAnimation.js +18 -17
  10. package/dist/components/Login/Login.js +1 -1
  11. package/dist/components/PassportButton/PassportButton.js +1 -1
  12. package/dist/components/PassportDatePicker/PassportDatePicker.js +7 -6
  13. package/dist/components/PassportDateTimePicker/PassportDateTimePicker.js +32 -31
  14. package/dist/components/PassportInput/PassportInput.js +9 -12
  15. package/dist/components/PassportMultiSelect/PassportMultiSelect.js +1 -1
  16. package/dist/components/PassportPagination/PassportPagination.js +7 -6
  17. package/dist/components/PassportSearchableMultiSelect/PassportSearchableMultiSelect.d.ts +3 -0
  18. package/dist/components/PassportSearchableMultiSelect/PassportSearchableMultiSelect.d.ts.map +1 -0
  19. package/dist/components/PassportSearchableMultiSelect/PassportSearchableMultiSelect.js +76 -0
  20. package/dist/components/PassportSearchableMultiSelect/PassportSearchableMultiSelect.stories.d.ts +30 -0
  21. package/dist/components/PassportSearchableMultiSelect/PassportSearchableMultiSelect.stories.d.ts.map +1 -0
  22. package/dist/components/PassportSearchableMultiSelect/PassportSearchableMultiSelect.types.d.ts +17 -0
  23. package/dist/components/PassportSearchableMultiSelect/PassportSearchableMultiSelect.types.d.ts.map +1 -0
  24. package/dist/components/PassportSearchableMultiSelect/PassportSearchableMultiSelect.types.js +1 -0
  25. package/dist/components/PassportSearchableMultiSelectDetailed/PassportSearchableMultiSelectDetailed.d.ts +3 -0
  26. package/dist/components/PassportSearchableMultiSelectDetailed/PassportSearchableMultiSelectDetailed.d.ts.map +1 -0
  27. package/dist/components/PassportSearchableMultiSelectDetailed/PassportSearchableMultiSelectDetailed.js +100 -0
  28. package/dist/components/PassportSearchableMultiSelectDetailed/PassportSearchableMultiSelectDetailed.stories.d.ts +31 -0
  29. package/dist/components/PassportSearchableMultiSelectDetailed/PassportSearchableMultiSelectDetailed.stories.d.ts.map +1 -0
  30. package/dist/components/PassportSearchableMultiSelectDetailed/PassportSearchableMultiSelectDetailed.types.d.ts +19 -0
  31. package/dist/components/PassportSearchableMultiSelectDetailed/PassportSearchableMultiSelectDetailed.types.d.ts.map +1 -0
  32. package/dist/components/PassportSearchableMultiSelectDetailed/PassportSearchableMultiSelectDetailed.types.js +1 -0
  33. package/dist/components/PassportTreeSelect/PassportTreeSelect.d.ts +3 -0
  34. package/dist/components/PassportTreeSelect/PassportTreeSelect.d.ts.map +1 -0
  35. package/dist/components/PassportTreeSelect/PassportTreeSelect.js +4641 -0
  36. package/dist/components/PassportTreeSelect/PassportTreeSelect.stories.d.ts +33 -0
  37. package/dist/components/PassportTreeSelect/PassportTreeSelect.stories.d.ts.map +1 -0
  38. package/dist/components/PassportTreeSelect/PassportTreeSelect.types.d.ts +20 -0
  39. package/dist/components/PassportTreeSelect/PassportTreeSelect.types.d.ts.map +1 -0
  40. package/dist/components/PassportTreeSelect/PassportTreeSelect.types.js +1 -0
  41. package/dist/components/index.d.ts +3 -0
  42. package/dist/components/index.d.ts.map +1 -1
  43. package/dist/components/index.js +42 -36
  44. package/dist/{createSvgIcon-B-eIQ7rU.js → createSvgIcon-DQP4Lgl5.js} +1 -1
  45. package/dist/extendSxProp-kvzSbCJ3.js +36 -0
  46. package/dist/integerPropType-BihGt2aU.js +31 -0
  47. package/dist/main.js +57 -51
  48. package/dist/useFormControl-DUby-fW8.js +498 -0
  49. package/dist/{useMobilePicker-hk2kq6ev.js → useMobilePicker-CDuVVUzY.js} +3001 -3479
  50. package/dist/useSlot-Bvdicoh5.js +160 -0
  51. package/dist/useTheme-BHcsKB53.js +18 -0
  52. package/package.json +2 -1
  53. package/dist/extendSxProp-QNe1Nf_s.js +0 -51
  54. package/dist/useSlot-CXnK24LX.js +0 -189
@@ -0,0 +1,76 @@
1
+ import { jsx as l, jsxs as h } from "react/jsx-runtime";
2
+ import { Autocomplete as g, TextField as k, Checkbox as v } from "@mui/material";
3
+ import { C, a as O } from "../../CheckBox-B3iprBDG.js";
4
+ const S = /* @__PURE__ */ l(O, { fontSize: "small" }), I = /* @__PURE__ */ l(C, { fontSize: "small" });
5
+ function B({
6
+ label: i,
7
+ data: s,
8
+ handleChange: n,
9
+ fullWidth: a = !1,
10
+ values: c = [],
11
+ disabled: u = !1,
12
+ isRtl: p = !1,
13
+ width: d = 300,
14
+ placeholder: m,
15
+ ...x
16
+ }) {
17
+ const b = s?.filter((e) => c.includes(e.value)) ?? [];
18
+ return /* @__PURE__ */ l(
19
+ g,
20
+ {
21
+ ...x,
22
+ multiple: !0,
23
+ fullWidth: a,
24
+ size: "small",
25
+ disablePortal: !0,
26
+ disabled: u,
27
+ options: s ?? [],
28
+ value: b,
29
+ disableCloseOnSelect: !0,
30
+ getOptionLabel: (e) => e.label,
31
+ isOptionEqualToValue: (e, o) => e.value === o.value,
32
+ sx: {
33
+ width: a ? "100%" : d,
34
+ "& fieldset": {
35
+ borderRadius: "8px",
36
+ border: "1px solid var(--color-gray)"
37
+ },
38
+ "&:hover fieldset": {
39
+ borderRadius: "8px"
40
+ },
41
+ marginRight: p ? "10px" : "0px",
42
+ bgcolor: "var(--color-background)"
43
+ },
44
+ onChange: (e, o) => {
45
+ const t = o.map((r) => r.value);
46
+ n(t);
47
+ },
48
+ renderOption: (e, o, { selected: t }) => {
49
+ const { key: r, ...f } = e;
50
+ return /* @__PURE__ */ h("li", { ...f, children: [
51
+ /* @__PURE__ */ l(
52
+ v,
53
+ {
54
+ icon: S,
55
+ checkedIcon: I,
56
+ style: { marginRight: 8 },
57
+ checked: t
58
+ }
59
+ ),
60
+ o.label
61
+ ] }, r);
62
+ },
63
+ renderInput: (e) => /* @__PURE__ */ l(
64
+ k,
65
+ {
66
+ ...e,
67
+ label: i,
68
+ placeholder: m
69
+ }
70
+ )
71
+ }
72
+ );
73
+ }
74
+ export {
75
+ B as PassportSearchableMultiSelect
76
+ };
@@ -0,0 +1,30 @@
1
+ import { StoryObj } from '@storybook/react';
2
+ declare const meta: {
3
+ title: string;
4
+ component: ({ isRtl, width, fullWidth, disabled, }: {
5
+ isRtl?: boolean;
6
+ width?: number;
7
+ fullWidth?: boolean;
8
+ disabled?: boolean;
9
+ }) => import("react/jsx-runtime").JSX.Element;
10
+ tags: string[];
11
+ parameters: {
12
+ layout: string;
13
+ };
14
+ args: {
15
+ isRtl: false;
16
+ width: number;
17
+ fullWidth: false;
18
+ disabled: false;
19
+ };
20
+ };
21
+ export default meta;
22
+ type Story = StoryObj<typeof meta>;
23
+ export declare const Default: Story;
24
+ export declare const RTL: Story;
25
+ export declare const WithPreselected: Story;
26
+ export declare const CustomWidth: Story;
27
+ export declare const FullWidth: Story;
28
+ export declare const Disabled: Story;
29
+ export declare const ManyOptions: Story;
30
+ //# sourceMappingURL=PassportSearchableMultiSelect.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PassportSearchableMultiSelect.stories.d.ts","sourceRoot":"","sources":["../../../src/components/PassportSearchableMultiSelect/PassportSearchableMultiSelect.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAkDvD,QAAA,MAAM,IAAI;;wDA5BP;QACD,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB;;;;;;;;;;;CAoC4D,CAAC;AAE9D,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,GAAG,EAAE,KAIjB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAmB7B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAIvB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAgBtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAwBzB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { AutocompleteProps } from '@mui/material';
2
+ export interface PassportSearchableMultiSelectOption {
3
+ value: string;
4
+ label: string;
5
+ }
6
+ export interface PassportSearchableMultiSelectProps extends Omit<AutocompleteProps<PassportSearchableMultiSelectOption, true, false, false>, 'label' | 'onChange' | 'value' | 'renderInput' | 'options' | 'multiple'> {
7
+ label: string;
8
+ handleChange: (values: string[]) => void;
9
+ data?: PassportSearchableMultiSelectOption[];
10
+ fullWidth?: boolean;
11
+ values?: string[];
12
+ disabled?: boolean;
13
+ isRtl?: boolean;
14
+ width?: number;
15
+ placeholder?: string;
16
+ }
17
+ //# sourceMappingURL=PassportSearchableMultiSelect.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PassportSearchableMultiSelect.types.d.ts","sourceRoot":"","sources":["../../../src/components/PassportSearchableMultiSelect/PassportSearchableMultiSelect.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,mCAAmC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kCACf,SAAQ,IAAI,CACV,iBAAiB,CACf,mCAAmC,EACnC,IAAI,EACJ,KAAK,EACL,KAAK,CACN,EACD,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CACxE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACzC,IAAI,CAAC,EAAE,mCAAmC,EAAE,CAAC;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,3 @@
1
+ import { PassportSearchableMultiSelectDetailedProps } from './PassportSearchableMultiSelectDetailed.types';
2
+ export declare function PassportSearchableMultiSelectDetailed({ label, data, handleChange, fullWidth, values, disabled, isRtl, width, placeholder, ...rest }: PassportSearchableMultiSelectDetailedProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=PassportSearchableMultiSelectDetailed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PassportSearchableMultiSelectDetailed.d.ts","sourceRoot":"","sources":["../../../src/components/PassportSearchableMultiSelectDetailed/PassportSearchableMultiSelectDetailed.tsx"],"names":[],"mappings":"AASA,OAAO,EACL,0CAA0C,EAC3C,MAAM,+CAA+C,CAAC;AAKvD,wBAAgB,qCAAqC,CAAC,EACpD,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,SAAiB,EACjB,MAAW,EACX,QAAgB,EAChB,KAAa,EACb,KAAW,EACX,WAAW,EACX,GAAG,IAAI,EACR,EAAE,0CAA0C,2CA0E5C"}
@@ -0,0 +1,100 @@
1
+ import { jsx as o, jsxs as r } from "react/jsx-runtime";
2
+ import { Autocomplete as v, TextField as I, Checkbox as k, Box as y, Typography as i } from "@mui/material";
3
+ import { C as S, a as C } from "../../CheckBox-B3iprBDG.js";
4
+ const O = /* @__PURE__ */ o(C, { fontSize: "small" }), z = /* @__PURE__ */ o(S, { fontSize: "small" });
5
+ function P({
6
+ label: c,
7
+ data: a,
8
+ handleChange: d,
9
+ fullWidth: s = !1,
10
+ values: p = [],
11
+ disabled: x = !1,
12
+ isRtl: u = !1,
13
+ width: m = 300,
14
+ placeholder: f,
15
+ ...h
16
+ }) {
17
+ const b = a?.filter((e) => p.includes(e.value)) ?? [];
18
+ return /* @__PURE__ */ o(
19
+ v,
20
+ {
21
+ ...h,
22
+ multiple: !0,
23
+ fullWidth: s,
24
+ size: "small",
25
+ disablePortal: !0,
26
+ disabled: x,
27
+ options: a ?? [],
28
+ value: b,
29
+ disableCloseOnSelect: !0,
30
+ getOptionLabel: (e) => e.label,
31
+ isOptionEqualToValue: (e, l) => e.value === l.value,
32
+ sx: {
33
+ width: s ? "100%" : m,
34
+ "& fieldset": {
35
+ borderRadius: "8px",
36
+ border: "1px solid var(--color-gray)"
37
+ },
38
+ "&:hover fieldset": {
39
+ borderRadius: "8px"
40
+ },
41
+ marginRight: u ? "10px" : "0px",
42
+ bgcolor: "var(--color-background)"
43
+ },
44
+ onChange: (e, l) => {
45
+ const t = l.map((n) => n.value);
46
+ d(t);
47
+ },
48
+ renderOption: (e, l, { selected: t }) => {
49
+ const { key: n, ...g } = e;
50
+ return /* @__PURE__ */ r("li", { ...g, children: [
51
+ /* @__PURE__ */ o(
52
+ k,
53
+ {
54
+ icon: O,
55
+ checkedIcon: z,
56
+ style: { marginRight: 8 },
57
+ checked: t
58
+ }
59
+ ),
60
+ /* @__PURE__ */ r(y, { sx: { display: "flex", flexDirection: "column" }, children: [
61
+ /* @__PURE__ */ o(
62
+ i,
63
+ {
64
+ component: "span",
65
+ sx: { fontWeight: 500, fontSize: "0.875rem" },
66
+ children: l.label
67
+ }
68
+ ),
69
+ /* @__PURE__ */ r(
70
+ i,
71
+ {
72
+ component: "span",
73
+ sx: { fontSize: "0.75rem", color: "text.secondary" },
74
+ children: [
75
+ "Id: ",
76
+ l.id,
77
+ l.externalId !== void 0 && l.externalId !== "" && /* @__PURE__ */ r("span", { style: { marginLeft: 8 }, children: [
78
+ "External ID: ",
79
+ l.externalId
80
+ ] })
81
+ ]
82
+ }
83
+ )
84
+ ] })
85
+ ] }, n);
86
+ },
87
+ renderInput: (e) => /* @__PURE__ */ o(
88
+ I,
89
+ {
90
+ ...e,
91
+ label: c,
92
+ placeholder: f
93
+ }
94
+ )
95
+ }
96
+ );
97
+ }
98
+ export {
99
+ P as PassportSearchableMultiSelectDetailed
100
+ };
@@ -0,0 +1,31 @@
1
+ import { StoryObj } from '@storybook/react';
2
+ declare const meta: {
3
+ title: string;
4
+ component: ({ isRtl, width, fullWidth, disabled, }: {
5
+ isRtl?: boolean;
6
+ width?: number;
7
+ fullWidth?: boolean;
8
+ disabled?: boolean;
9
+ }) => import("react/jsx-runtime").JSX.Element;
10
+ tags: string[];
11
+ parameters: {
12
+ layout: string;
13
+ };
14
+ args: {
15
+ isRtl: false;
16
+ width: number;
17
+ fullWidth: false;
18
+ disabled: false;
19
+ };
20
+ };
21
+ export default meta;
22
+ type Story = StoryObj<typeof meta>;
23
+ export declare const Default: Story;
24
+ export declare const RTL: Story;
25
+ export declare const WithPreselected: Story;
26
+ export declare const CustomWidth: Story;
27
+ export declare const FullWidth: Story;
28
+ export declare const Disabled: Story;
29
+ export declare const WithoutExternalIds: Story;
30
+ export declare const MixedExternalIds: Story;
31
+ //# sourceMappingURL=PassportSearchableMultiSelectDetailed.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PassportSearchableMultiSelectDetailed.stories.d.ts","sourceRoot":"","sources":["../../../src/components/PassportSearchableMultiSelectDetailed/PassportSearchableMultiSelectDetailed.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAkDvD,QAAA,MAAM,IAAI;;wDA5BP;QACD,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB;;;;;;;;;;;CAoCoE,CAAC;AAEtE,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC;AAEjC,eAAO,MAAM,GAAG,EAAE,KAIjB,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,KAmB7B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAIzB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAIvB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAgBtB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KA0BhC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,KAoB9B,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { AutocompleteProps } from '@mui/material';
2
+ export interface PassportSearchableMultiSelectDetailedOption {
3
+ value: string;
4
+ label: string;
5
+ id: string | number;
6
+ externalId?: string | number;
7
+ }
8
+ export interface PassportSearchableMultiSelectDetailedProps extends Omit<AutocompleteProps<PassportSearchableMultiSelectDetailedOption, true, false, false>, 'label' | 'onChange' | 'value' | 'renderInput' | 'options' | 'multiple'> {
9
+ label: string;
10
+ handleChange: (values: string[]) => void;
11
+ data?: PassportSearchableMultiSelectDetailedOption[];
12
+ fullWidth?: boolean;
13
+ values?: string[];
14
+ disabled?: boolean;
15
+ isRtl?: boolean;
16
+ width?: number;
17
+ placeholder?: string;
18
+ }
19
+ //# sourceMappingURL=PassportSearchableMultiSelectDetailed.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PassportSearchableMultiSelectDetailed.types.d.ts","sourceRoot":"","sources":["../../../src/components/PassportSearchableMultiSelectDetailed/PassportSearchableMultiSelectDetailed.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,2CAA2C;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,0CACf,SAAQ,IAAI,CACV,iBAAiB,CACf,2CAA2C,EAC3C,IAAI,EACJ,KAAK,EACL,KAAK,CACN,EACD,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,aAAa,GAAG,SAAS,GAAG,UAAU,CACxE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACzC,IAAI,CAAC,EAAE,2CAA2C,EAAE,CAAC;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1,3 @@
1
+ import { PassportTreeSelectProps } from './PassportTreeSelect.types';
2
+ export declare function PassportTreeSelect({ label, data, handleChange, fullWidth, values, disabled, isRtl, width, placeholder, maxHeight, }: PassportTreeSelectProps): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=PassportTreeSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PassportTreeSelect.d.ts","sourceRoot":"","sources":["../../../src/components/PassportTreeSelect/PassportTreeSelect.tsx"],"names":[],"mappings":"AAoBA,OAAO,EACL,uBAAuB,EAExB,MAAM,4BAA4B,CAAC;AAiBpC,wBAAgB,kBAAkB,CAAC,EACjC,KAAK,EACL,IAAI,EACJ,YAAY,EACZ,SAAiB,EACjB,MAAW,EACX,QAAgB,EAChB,KAAa,EACb,KAAW,EACX,WAAyB,EACzB,SAAe,GAChB,EAAE,uBAAuB,2CA8YzB"}