@layers-app/shared 0.2.3 → 0.2.4

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 (35) hide show
  1. package/dist/components/AppContainer/AppContainer.d.ts +1 -1
  2. package/dist/components/AppContainer/AppContainer.d.ts.map +1 -1
  3. package/dist/components/AppContainer/AppContainer.js +31 -23
  4. package/dist/components/AppContainer/hooks/useAppContainerStore.d.ts.map +1 -1
  5. package/dist/components/AppContainer/hooks/useAppContainerStore.js +12 -9
  6. package/dist/components/AppContainer/types.d.ts +1 -0
  7. package/dist/components/AppContainer/types.d.ts.map +1 -1
  8. package/dist/components/EmojiPicker/EmojiPanel.d.ts.map +1 -1
  9. package/dist/components/EmojiPicker/EmojiPanel.js +50 -49
  10. package/dist/components/EmojiPicker/IconsPanel.d.ts.map +1 -1
  11. package/dist/components/EmojiPicker/IconsPanel.js +79 -78
  12. package/dist/components/FilePicker/FilePicker.d.ts +2 -3
  13. package/dist/components/FilePicker/FilePicker.d.ts.map +1 -1
  14. package/dist/components/FilePicker/FilePicker.js +88 -122
  15. package/dist/components/FilePicker/FilePickerGiphy.d.ts +1 -3
  16. package/dist/components/FilePicker/FilePickerGiphy.d.ts.map +1 -1
  17. package/dist/components/FilePicker/FilePickerGiphy.js +43 -44
  18. package/dist/components/FilePicker/FilePickerLink.d.ts +2 -3
  19. package/dist/components/FilePicker/FilePickerLink.d.ts.map +1 -1
  20. package/dist/components/FilePicker/FilePickerLink.js +21 -21
  21. package/dist/components/FilePicker/FilePickerUnsplash.d.ts +1 -3
  22. package/dist/components/FilePicker/FilePickerUnsplash.d.ts.map +1 -1
  23. package/dist/components/FilePicker/FilePickerUnsplash.js +45 -46
  24. package/dist/components/FilePicker/FilePickerUpload.d.ts +3 -3
  25. package/dist/components/FilePicker/FilePickerUpload.d.ts.map +1 -1
  26. package/dist/components/FilePicker/FilePickerUpload.js +49 -43
  27. package/dist/components/NavMenu/components/NavMenuItem.d.ts.map +1 -1
  28. package/dist/components/NavMenu/components/NavMenuItem.js +6 -5
  29. package/dist/components/WorkspaceMenu/WorkspaceMenu.d.ts +2 -2
  30. package/dist/components/WorkspaceMenu/WorkspaceMenu.d.ts.map +1 -1
  31. package/dist/components/WorkspaceMenu/WorkspaceMenu.js +100 -103
  32. package/dist/lang/locales/ui_en.json.js +20 -12
  33. package/dist/lang/locales/ui_es.json.js +18 -10
  34. package/dist/lang/locales/ui_ru.json.js +24 -16
  35. package/package.json +1 -1
@@ -1,87 +1,87 @@
1
1
  import { jsxs as m, jsx as e } from "react/jsx-runtime";
2
- import { memo as B, useState as k, useEffect as M, useCallback as U, useMemo as V } from "react";
3
- import { useTranslation as G } from "react-i18next";
4
- import { Search01Icon as Q, ShuffleIcon as Y } from "@hugeicons/core-free-icons";
2
+ import { memo as q, useState as x, useEffect as B, useCallback as M, useMemo as U } from "react";
3
+ import { useTranslation as V } from "react-i18next";
4
+ import { Search01Icon as G, ShuffleIcon as Q } from "@hugeicons/core-free-icons";
5
5
  import { HugeiconsIcon as L } from "@hugeicons/react";
6
- import { useMantineTheme as _, parseThemeColor as j, darken as J, Stack as x, Text as b, Flex as K, FocusTrap as W, TextInput as X, Tooltip as Z, ActionIcon as ee, Box as z, Paper as E, SimpleGrid as N } from "@mantine/core";
6
+ import { useMantineTheme as Y, parseThemeColor as _, darken as J, Stack as y, Text as b, Flex as z, FocusTrap as K, TextInput as W, Tooltip as X, ActionIcon as Z, Box as ee, Paper as D, SimpleGrid as E } from "@mantine/core";
7
7
  import { useEvent as oe } from "draggable-ui";
8
- import { groupBy as re } from "lodash-es";
9
- import { DEFAULT_VALUES as te } from "../../constants.js";
8
+ import { groupBy as te } from "lodash-es";
9
+ import { DEFAULT_VALUES as re } from "../../constants.js";
10
10
  import { ColorPicker as ie } from "../ColorPicker/ColorPicker.js";
11
11
  import { NoData as ne } from "../NoData/NoData.js";
12
- import { IconEntity as y, IconType as A } from "../ProjectIcon/ProjectIcon.js";
13
- import { customIcons as D } from "./custom-icons/customIcons.js";
12
+ import { IconEntity as w, IconType as N } from "../ProjectIcon/ProjectIcon.js";
13
+ import { customIcons as A } from "./custom-icons/customIcons.js";
14
14
  import { getIconsList as F } from "./getIconsList.js";
15
15
  import { getRandomIcon as ce } from "./getRandomIcon.js";
16
16
  import h from "./EmojiPicker.module.css.js";
17
17
  async function ae(c, a, l = 500) {
18
- const u = [], p = c.length;
19
- for (let t = 0; t < p; t += l) {
20
- const f = c.slice(t, t + l).filter(a);
21
- u.push(...f), await new Promise((I) => setTimeout(I, 0));
18
+ const u = [], f = c.length;
19
+ for (let r = 0; r < f; r += l) {
20
+ const p = c.slice(r, r + l).filter(a);
21
+ u.push(...p), await new Promise((I) => setTimeout(I, 0));
22
22
  }
23
23
  return u;
24
24
  }
25
- const Ce = B(
25
+ const Ce = q(
26
26
  ({
27
27
  showColors: c,
28
28
  locales: a,
29
29
  onChange: l,
30
30
  value: u,
31
- onClose: p,
32
- project: t
31
+ onClose: f,
32
+ project: r
33
33
  }) => {
34
- const C = _(), [f, I] = k(""), { t: w } = G("ui"), [R, P] = k(
34
+ const C = Y(), [p, I] = x(""), { t: k } = V("ui"), [R, P] = x(
35
35
  []
36
36
  );
37
- M(() => {
37
+ B(() => {
38
38
  (async () => {
39
- const r = await F(t), s = re(r, "c");
39
+ const t = await F(r), s = te(t, "c");
40
40
  P(
41
- Object.entries(s).map((g) => ({
42
- id: g[0],
43
- icons: g[1].map((d) => d.n)
41
+ Object.entries(s).map((v) => ({
42
+ id: v[0],
43
+ icons: v[1].map((d) => d.n)
44
44
  }))
45
45
  );
46
46
  })();
47
- }, [t]);
48
- const [T, S] = k([]), $ = U(
47
+ }, [r]);
48
+ const [T, S] = x([]), $ = M(
49
49
  async (o) => {
50
- const r = o.currentTarget.value;
51
- I(r);
52
- const s = await F(t), g = await ae(
50
+ const t = o.currentTarget.value;
51
+ I(t);
52
+ const s = await F(r), v = await ae(
53
53
  s,
54
- (d) => d.t.split(",").some((q) => r.includes(String(q))) || d.n.includes(r),
54
+ (d) => d.t.split(",").some((j) => t.includes(String(j))) || d.n.includes(t),
55
55
  500
56
56
  );
57
- S(g.map((d) => d.n));
57
+ S(v.map((d) => d.n));
58
58
  },
59
- [t]
60
- ), i = y.parse(u), v = oe((o) => {
61
- const r = o.currentTarget.getAttribute("data-icon");
62
- r && (l?.(
63
- y.stringify({
64
- icon: r.replace("i:", ""),
59
+ [r]
60
+ ), i = w.parse(u), g = oe((o) => {
61
+ const t = o.currentTarget.getAttribute("data-icon");
62
+ t && (l?.(
63
+ w.stringify({
64
+ icon: t.replace("i:", ""),
65
65
  color: i?.color,
66
- type: A.FILLED
66
+ type: N.FILLED
67
67
  })
68
- ), c || p());
69
- }), n = j({
70
- color: i?.color || te.COLORS[0],
68
+ ), c || f());
69
+ }), n = _({
70
+ color: i?.color || re.COLORS[0],
71
71
  theme: C
72
- }), H = V(() => n.isThemeColor ? {
72
+ }), H = U(() => n.isThemeColor ? {
73
73
  "--icon-color": `var(--mantine-color-${n.color}-filled)`,
74
74
  "--icon-color-hover": `var(--mantine-color-${n.color}-filled-hover)`
75
75
  } : {
76
76
  "--icon-color": n.value,
77
77
  "--icon-color-hover": J(n.value, 0.2)
78
78
  }, [n]), O = async () => {
79
- const o = await ce(t);
80
- S([]), l?.(y.stringify({ icon: o, color: i?.color })), c || p();
79
+ const o = await ce(r);
80
+ S([]), l?.(w.stringify({ icon: o, color: i?.color })), c || f();
81
81
  };
82
- return /* @__PURE__ */ m(x, { w: "100%", gap: "sm", pt: 12, pb: 8, h: "100%", children: [
83
- c && /* @__PURE__ */ m(x, { gap: 4, px: 8, w: "100%", children: [
84
- /* @__PURE__ */ e(b, { lh: "140%", fw: 500, c: "dimmed", fz: "xs", children: a?.chooseColor || w("chooseColor") }),
82
+ return /* @__PURE__ */ m(y, { w: "100%", gap: "sm", pt: 12, pb: 8, h: "100%", children: [
83
+ c && /* @__PURE__ */ m(y, { gap: 4, px: 8, w: "100%", children: [
84
+ /* @__PURE__ */ e(b, { lh: "140%", fw: 500, c: "dimmed", fz: "xs", children: a?.chooseColor || k("chooseColor") }),
85
85
  /* @__PURE__ */ e(
86
86
  ie,
87
87
  {
@@ -89,10 +89,10 @@ const Ce = B(
89
89
  gap: 4,
90
90
  value: n.color,
91
91
  onChange: (o) => l?.(
92
- y.stringify({
92
+ w.stringify({
93
93
  color: o,
94
94
  icon: i?.icon,
95
- type: A.FILLED
95
+ type: N.FILLED
96
96
  })
97
97
  ),
98
98
  colors: [
@@ -111,12 +111,12 @@ const Ce = B(
111
111
  n.color
112
112
  )
113
113
  ] }),
114
- /* @__PURE__ */ m(K, { w: "100%", justify: "space-between", gap: 4, px: 8, h: 38, children: [
115
- /* @__PURE__ */ e(W, { active: !0, children: /* @__PURE__ */ e(
116
- X,
114
+ /* @__PURE__ */ m(z, { w: "100%", justify: "space-between", gap: 4, px: 8, h: 38, children: [
115
+ /* @__PURE__ */ e(K, { active: !0, children: /* @__PURE__ */ e(
116
+ W,
117
117
  {
118
- leftSection: /* @__PURE__ */ e(L, { size: 16, icon: Q }),
119
- value: f,
118
+ leftSection: /* @__PURE__ */ e(L, { size: 16, icon: G }),
119
+ value: p,
120
120
  placeholder: `${a?.search}...`,
121
121
  "data-autofocus": !0,
122
122
  styles: {
@@ -130,8 +130,8 @@ const Ce = B(
130
130
  radius: "var(--mantine-radius-default)"
131
131
  }
132
132
  ) }),
133
- /* @__PURE__ */ e(Z, { withArrow: !0, label: w("random"), children: /* @__PURE__ */ e(
134
- ee,
133
+ /* @__PURE__ */ e(X, { withArrow: !0, label: k("random"), children: /* @__PURE__ */ e(
134
+ Z,
135
135
  {
136
136
  h: 36,
137
137
  w: 36,
@@ -144,23 +144,23 @@ const Ce = B(
144
144
  {
145
145
  color: "var(--mantine-color-default-color)",
146
146
  size: 20,
147
- icon: Y
147
+ icon: Q
148
148
  }
149
149
  )
150
150
  }
151
151
  ) })
152
152
  ] }),
153
- /* @__PURE__ */ e(z, { pl: 8, style: H, children: /* @__PURE__ */ e(
154
- x,
153
+ /* @__PURE__ */ e(ee, { pl: 8, style: H, children: /* @__PURE__ */ e(
154
+ y,
155
155
  {
156
156
  h: "210px",
157
157
  style: {
158
158
  overflowY: "auto"
159
159
  },
160
160
  gap: 16,
161
- children: f ? /* @__PURE__ */ m("div", { children: [
161
+ children: p ? /* @__PURE__ */ m(y, { flex: 1, justify: "center", align: "stretch", children: [
162
162
  /* @__PURE__ */ e(
163
- E,
163
+ D,
164
164
  {
165
165
  py: 6,
166
166
  pos: "sticky",
@@ -170,16 +170,16 @@ const Ce = B(
170
170
  children: /* @__PURE__ */ e(b, { fz: "xs", fw: 500, lh: "140%", c: "dimmed", children: a?.searchResults })
171
171
  }
172
172
  ),
173
- T.length ? /* @__PURE__ */ e(N, { cols: 8, spacing: 0, children: T.map((o) => {
174
- const r = D[o];
175
- return r ? /* @__PURE__ */ e(
173
+ T.length ? /* @__PURE__ */ e(E, { cols: 8, spacing: 0, children: T.map((o) => {
174
+ const t = A[o];
175
+ return t ? /* @__PURE__ */ e(
176
176
  "div",
177
177
  {
178
178
  className: h.item,
179
179
  "data-icon": o,
180
180
  "data-active": o === i?.icon,
181
- onClick: v,
182
- children: /* @__PURE__ */ e(r, {})
181
+ onClick: g,
182
+ children: /* @__PURE__ */ e(t, {})
183
183
  },
184
184
  o
185
185
  ) : /* @__PURE__ */ e(
@@ -188,7 +188,7 @@ const Ce = B(
188
188
  className: h.item,
189
189
  "data-icon": o,
190
190
  "data-active": o === i?.icon,
191
- onClick: v,
191
+ onClick: g,
192
192
  children: /* @__PURE__ */ e("svg", { width: "1em", height: "1em", children: /* @__PURE__ */ e(
193
193
  "use",
194
194
  {
@@ -198,9 +198,10 @@ const Ce = B(
198
198
  },
199
199
  o
200
200
  );
201
- }) }) : /* @__PURE__ */ e(z, { pt: 16, children: /* @__PURE__ */ e(
201
+ }) }) : /* @__PURE__ */ e(z, { flex: 1, justify: "center", align: "stretch", children: /* @__PURE__ */ e(
202
202
  ne,
203
203
  {
204
+ showDots: !1,
204
205
  size: 100,
205
206
  description: a?.searchNoResults,
206
207
  descriptionProps: {
@@ -210,25 +211,25 @@ const Ce = B(
210
211
  ) })
211
212
  ] }) : R.map((o) => /* @__PURE__ */ m("div", { children: [
212
213
  /* @__PURE__ */ e(
213
- E,
214
+ D,
214
215
  {
215
216
  bg: "light-dark(var(--mantine-color-white), var(--mantine-color-dark-6))",
216
217
  py: 6,
217
218
  pos: "sticky",
218
219
  top: -1,
219
220
  style: { zIndex: 1 },
220
- children: /* @__PURE__ */ e(b, { fz: "xs", fw: 500, lh: "140%", c: "dimmed", children: o.id || w("noCat") })
221
+ children: /* @__PURE__ */ e(b, { fz: "xs", fw: 500, lh: "140%", c: "dimmed", children: o.id || k("noCat") })
221
222
  }
222
223
  ),
223
- /* @__PURE__ */ e(N, { cols: 10, spacing: 0, children: o.icons.map((r) => {
224
- const s = D[r];
224
+ /* @__PURE__ */ e(E, { cols: 10, spacing: 0, children: o.icons.map((t) => {
225
+ const s = A[t];
225
226
  return s ? /* @__PURE__ */ e(
226
227
  "div",
227
228
  {
228
229
  className: h.item,
229
- "data-icon": r,
230
- "data-active": r === i?.icon,
231
- onClick: v,
230
+ "data-icon": t,
231
+ "data-active": t === i?.icon,
232
+ onClick: g,
232
233
  children: /* @__PURE__ */ e(
233
234
  s,
234
235
  {
@@ -238,22 +239,22 @@ const Ce = B(
238
239
  }
239
240
  )
240
241
  },
241
- r
242
+ t
242
243
  ) : /* @__PURE__ */ e(
243
244
  "div",
244
245
  {
245
246
  className: h.item,
246
- "data-icon": r,
247
- "data-active": r === i?.icon,
248
- onClick: v,
247
+ "data-icon": t,
248
+ "data-active": t === i?.icon,
249
+ onClick: g,
249
250
  children: /* @__PURE__ */ e("svg", { width: "1em", height: "1em", children: /* @__PURE__ */ e(
250
251
  "use",
251
252
  {
252
- xlinkHref: `/tabler-sprite-filled.svg#tabler-filled-${r}`
253
+ xlinkHref: `/tabler-sprite-filled.svg#tabler-filled-${t}`
253
254
  }
254
255
  ) })
255
256
  },
256
- r
257
+ t
257
258
  );
258
259
  }) })
259
260
  ] }, o.id))
@@ -1,7 +1,7 @@
1
1
  import { PropsWithChildren } from 'react';
2
2
  import { FlexProps, FloatingPosition, PopoverProps } from '@mantine/core';
3
3
  import { DropzoneProps, FileWithPath } from '@mantine/dropzone';
4
- import { FilePickerLocales, FileType, ImagePickerGalleryCollection } from './types';
4
+ import { FileType, ImagePickerGalleryCollection } from './types';
5
5
  declare const baseTabsList: readonly ["gallery", "upload", "link", "unsplash", "giphy"];
6
6
  type TabType = (typeof baseTabsList)[number];
7
7
  export type FilePickerProps = PropsWithChildren<{
@@ -19,12 +19,11 @@ export type FilePickerProps = PropsWithChildren<{
19
19
  galleryCollection?: ImagePickerGalleryCollection[];
20
20
  popoverProps?: PopoverProps;
21
21
  dropZoneProps?: Omit<DropzoneProps, 'onDrop'>;
22
- locales?: FilePickerLocales;
23
22
  type?: FileType;
24
23
  isValidMediaUrl?: (url: string) => boolean;
25
24
  targetProps?: FlexProps;
26
25
  onOpenedChange?: (opened: boolean) => void;
27
26
  }>;
28
- export declare const FilePicker: ({ onChange, onRemove, onUpload, uploading, showTabs, children, width, position, readOnly, hasImage, giphyToken, unsplashClientId, type, galleryCollection, isValidMediaUrl, popoverProps, dropZoneProps, targetProps, onOpenedChange, locales, }: PropsWithChildren<FilePickerProps>) => import("react/jsx-runtime").JSX.Element;
27
+ export declare const FilePicker: ({ onChange, onRemove, onUpload, uploading, showTabs, children, width, position, readOnly, hasImage, giphyToken, unsplashClientId, type, galleryCollection, isValidMediaUrl, popoverProps, dropZoneProps, targetProps, onOpenedChange, }: PropsWithChildren<FilePickerProps>) => import("react/jsx-runtime").JSX.Element;
29
28
  export {};
30
29
  //# sourceMappingURL=FilePicker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilePicker.d.ts","sourceRoot":"","sources":["../../../src/components/FilePicker/FilePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAqB,MAAM,OAAO,CAAC;AAI7D,OAAO,EAIL,SAAS,EACT,gBAAgB,EAEhB,YAAY,EAIb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQhE,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,4BAA4B,EAC7B,MAAM,SAAS,CAAC;AAIjB,QAAA,MAAM,YAAY,6DAMR,CAAC;AAEX,KAAK,OAAO,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7C,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,EAAE,CACT,KAAK,EAAE,YAAY,EAAE,EACrB,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KAChC,IAAI,CAAC;IACV,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACnD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC9C,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C,CAAC,CAAC;AAEH,eAAO,MAAM,UAAU,GAAI,kPA6CxB,iBAAiB,CAAC,eAAe,CAAC,4CA2MpC,CAAC"}
1
+ {"version":3,"file":"FilePicker.d.ts","sourceRoot":"","sources":["../../../src/components/FilePicker/FilePicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAqB,MAAM,OAAO,CAAC;AAK7D,OAAO,EAIL,SAAS,EACT,gBAAgB,EAEhB,YAAY,EAIb,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQhE,OAAO,EAAE,QAAQ,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAIjE,QAAA,MAAM,YAAY,6DAMR,CAAC;AAEX,KAAK,OAAO,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7C,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC;IAC9C,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC5D,QAAQ,CAAC,EAAE,CACT,KAAK,EAAE,YAAY,EAAE,EACrB,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,KAChC,IAAI,CAAC;IACV,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,4BAA4B,EAAE,CAAC;IACnD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3C,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5C,CAAC,CAAC;AAEH,eAAO,MAAM,UAAU,GAAI,yOAoBxB,iBAAiB,CAAC,eAAe,CAAC,4CA4MpC,CAAC"}