@natoora-libs/core 0.2.27-dev-doug-2 → 0.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -17,10 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
18
 
19
19
  // src/index.ts
20
- var src_exports = {};
21
- __export(src_exports, {
22
- default: () => src_default
20
+ var index_exports = {};
21
+ __export(index_exports, {
22
+ default: () => index_default
23
23
  });
24
- module.exports = __toCommonJS(src_exports);
25
- var src_default = "@natoora-libs/core";
24
+ module.exports = __toCommonJS(index_exports);
25
+ var index_default = "@natoora-libs/core";
26
26
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export default '@natoora-libs/core';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAO,cAAQ;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export default '@natoora-libs/core';\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAO,gBAAQ;","names":[]}
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import "./chunk-5WRI5ZAA.js";
2
2
 
3
3
  // src/index.ts
4
- var src_default = "@natoora-libs/core";
4
+ var index_default = "@natoora-libs/core";
5
5
  export {
6
- src_default as default
6
+ index_default as default
7
7
  };
8
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export default '@natoora-libs/core';\n"],"mappings":";;;AAAA,IAAO,cAAQ;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export default '@natoora-libs/core';\n"],"mappings":";;;AAAA,IAAO,gBAAQ;","names":[]}
@@ -20,8 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  var utils_exports = {};
21
21
  __export(utils_exports, {
22
22
  getFlattenedFiltersIds: () => getFlattenedFiltersIds,
23
- getFlattenedFiltersLabels: () => getFlattenedFiltersLabels,
24
- getSelectOptionFromKeyPress: () => getSelectOptionFromKeyPress
23
+ getFlattenedFiltersLabels: () => getFlattenedFiltersLabels
25
24
  });
26
25
  module.exports = __toCommonJS(utils_exports);
27
26
 
@@ -40,55 +39,9 @@ var getFlattenedFiltersIds = (filters) => Object.fromEntries(
40
39
  values.map((value) => typeof value === "object" ? value.id : value)
41
40
  ])
42
41
  );
43
-
44
- // src/utils/getSelectOptionFromKeyPress/getSelectOptionFromKeyPress.ts
45
- var getNextCircularIndex = ({
46
- isArrowUp,
47
- currentIndex,
48
- numOptions,
49
- iteration
50
- }) => {
51
- const step = isArrowUp ? -iteration : iteration;
52
- return (currentIndex + step + numOptions) % numOptions;
53
- };
54
- var getSelectOptionFromKeyPress = ({
55
- key,
56
- options,
57
- currentValue
58
- }) => {
59
- const numOptions = options.length;
60
- const isArrowUp = key === "ArrowUp";
61
- const isArrowDown = key === "ArrowDown";
62
- const isArrow = isArrowUp || isArrowDown;
63
- const searchKey = key.toLowerCase();
64
- if (!isArrow && searchKey.length !== 1) {
65
- return void 0;
66
- }
67
- if (!numOptions) {
68
- return void 0;
69
- }
70
- const currentIndex = options.findIndex((o) => o.value === currentValue);
71
- const indicesToCheck = Array.from({ length: numOptions }).map(
72
- (_, i) => getNextCircularIndex({
73
- isArrowUp,
74
- currentIndex,
75
- numOptions,
76
- iteration: i + 1
77
- })
78
- );
79
- const nextMatchIndex = indicesToCheck.find((indexToCheck) => {
80
- const option = options[indexToCheck];
81
- return !option.disabled && (isArrow || option.label?.toLowerCase().startsWith(searchKey));
82
- });
83
- if (nextMatchIndex !== void 0 && nextMatchIndex !== currentIndex) {
84
- return options[nextMatchIndex];
85
- }
86
- return void 0;
87
- };
88
42
  // Annotate the CommonJS export names for ESM import in node:
89
43
  0 && (module.exports = {
90
44
  getFlattenedFiltersIds,
91
- getFlattenedFiltersLabels,
92
- getSelectOptionFromKeyPress
45
+ getFlattenedFiltersLabels
93
46
  });
94
47
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/index.ts","../../src/utils/flattenTableFilters/flattenTableFilters.ts","../../src/utils/getSelectOptionFromKeyPress/getSelectOptionFromKeyPress.ts"],"sourcesContent":["export {\n getFlattenedFiltersLabels,\n getFlattenedFiltersIds,\n type FlattenedFilterIds,\n} from './flattenTableFilters/flattenTableFilters';\nexport { getSelectOptionFromKeyPress } from './getSelectOptionFromKeyPress/getSelectOptionFromKeyPress';\n","import {\n HeaderFilterObject,\n HeaderFilters,\n} from '@/components/TableDesktop/TableDesktop';\n\nexport type FlattenedFilterIds = {\n [key: string]: (string | number)[];\n};\n\nexport const getFlattenedFiltersLabels = (\n filters: string[] | HeaderFilterObject[],\n fieldName: string,\n): (string | number)[] => {\n return filters.map((value: string | HeaderFilterObject) => {\n if (typeof value === 'object') {\n return value[fieldName] ?? '';\n }\n return value;\n });\n};\n\nexport const getFlattenedFiltersIds = (\n filters: HeaderFilters,\n): FlattenedFilterIds =>\n Object.fromEntries(\n Object.entries(filters).map(([id, values]) => [\n id,\n values.map((value) => (typeof value === 'object' ? value.id : value)),\n ]),\n );\n","export interface NavigableOption {\n value?: string | number | null;\n label?: string;\n disabled?: boolean;\n}\n\nexport interface GetSelectOptionFromKeyPressParams<T extends NavigableOption> {\n key: string;\n options: T[];\n currentValue?: string | number | null;\n}\n\nconst getNextCircularIndex = ({\n isArrowUp,\n currentIndex,\n numOptions,\n iteration,\n}: {\n isArrowUp: boolean;\n currentIndex: number;\n numOptions: number;\n iteration: number;\n}) => {\n const step = isArrowUp ? -iteration : iteration;\n return (currentIndex + step + numOptions) % numOptions;\n};\n\nexport const getSelectOptionFromKeyPress = <T extends NavigableOption>({\n key,\n options,\n currentValue,\n}: GetSelectOptionFromKeyPressParams<T>): T | undefined => {\n const numOptions = options.length;\n const isArrowUp = key === 'ArrowUp';\n const isArrowDown = key === 'ArrowDown';\n const isArrow = isArrowUp || isArrowDown;\n const searchKey = key.toLowerCase();\n\n // Ignores any input that is not ArrowUp, ArrowDown or a single character.\n if (!isArrow && searchKey.length !== 1) {\n return undefined;\n }\n\n if (!numOptions) {\n return undefined;\n }\n\n const currentIndex = options.findIndex((o) => o.value === currentValue);\n\n // Generates a circular sequence of indices starting from the next item.\n // This ensures that pressing the same key repeatedly cycles through all matching options.\n const indicesToCheck = Array.from({ length: numOptions }).map((_, i) =>\n getNextCircularIndex({\n isArrowUp,\n currentIndex,\n numOptions,\n iteration: i + 1,\n }),\n );\n\n const nextMatchIndex = indicesToCheck.find((indexToCheck) => {\n const option = options[indexToCheck];\n return (\n !option.disabled &&\n (isArrow || option.label?.toLowerCase().startsWith(searchKey))\n );\n });\n\n if (nextMatchIndex !== undefined && nextMatchIndex !== currentIndex) {\n return options[nextMatchIndex];\n }\n\n return undefined;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACSO,IAAM,4BAA4B,CACvC,SACA,cACwB;AACxB,SAAO,QAAQ,IAAI,CAAC,UAAuC;AACzD,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,MAAM,SAAS,KAAK;AAAA,IAC7B;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAEO,IAAM,yBAAyB,CACpC,YAEA,OAAO;AAAA,EACL,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,MAAM;AAAA,IAC5C;AAAA,IACA,OAAO,IAAI,CAAC,UAAW,OAAO,UAAU,WAAW,MAAM,KAAK,KAAM;AAAA,EACtE,CAAC;AACH;;;ACjBF,IAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAKM;AACJ,QAAM,OAAO,YAAY,CAAC,YAAY;AACtC,UAAQ,eAAe,OAAO,cAAc;AAC9C;AAEO,IAAM,8BAA8B,CAA4B;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AACF,MAA2D;AACzD,QAAM,aAAa,QAAQ;AAC3B,QAAM,YAAY,QAAQ;AAC1B,QAAM,cAAc,QAAQ;AAC5B,QAAM,UAAU,aAAa;AAC7B,QAAM,YAAY,IAAI,YAAY;AAGlC,MAAI,CAAC,WAAW,UAAU,WAAW,GAAG;AACtC,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,YAAY;AACf,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,QAAQ,UAAU,CAAC,MAAM,EAAE,UAAU,YAAY;AAItE,QAAM,iBAAiB,MAAM,KAAK,EAAE,QAAQ,WAAW,CAAC,EAAE;AAAA,IAAI,CAAC,GAAG,MAChE,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,IAAI;AAAA,IACjB,CAAC;AAAA,EACH;AAEA,QAAM,iBAAiB,eAAe,KAAK,CAAC,iBAAiB;AAC3D,UAAM,SAAS,QAAQ,YAAY;AACnC,WACE,CAAC,OAAO,aACP,WAAW,OAAO,OAAO,YAAY,EAAE,WAAW,SAAS;AAAA,EAEhE,CAAC;AAED,MAAI,mBAAmB,UAAa,mBAAmB,cAAc;AACnE,WAAO,QAAQ,cAAc;AAAA,EAC/B;AAEA,SAAO;AACT;","names":[]}
1
+ {"version":3,"sources":["../../src/utils/index.ts","../../src/utils/flattenTableFilters/flattenTableFilters.ts"],"sourcesContent":["export {\n getFlattenedFiltersLabels,\n getFlattenedFiltersIds,\n type FlattenedFilterIds,\n} from './flattenTableFilters/flattenTableFilters';\n","import {\n HeaderFilterObject,\n HeaderFilters,\n} from '@/components/TableDesktop/TableDesktop';\n\nexport type FlattenedFilterIds = {\n [key: string]: (string | number)[];\n};\n\nexport const getFlattenedFiltersLabels = (\n filters: string[] | HeaderFilterObject[],\n fieldName: string,\n): (string | number)[] => {\n return filters.map((value: string | HeaderFilterObject) => {\n if (typeof value === 'object') {\n return value[fieldName] ?? '';\n }\n return value;\n });\n};\n\nexport const getFlattenedFiltersIds = (\n filters: HeaderFilters,\n): FlattenedFilterIds =>\n Object.fromEntries(\n Object.entries(filters).map(([id, values]) => [\n id,\n values.map((value) => (typeof value === 'object' ? value.id : value)),\n ]),\n );\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACSO,IAAM,4BAA4B,CACvC,SACA,cACwB;AACxB,SAAO,QAAQ,IAAI,CAAC,UAAuC;AACzD,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,MAAM,SAAS,KAAK;AAAA,IAC7B;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAEO,IAAM,yBAAyB,CACpC,YAEA,OAAO;AAAA,EACL,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,MAAM;AAAA,IAC5C;AAAA,IACA,OAAO,IAAI,CAAC,UAAW,OAAO,UAAU,WAAW,MAAM,KAAK,KAAM;AAAA,EACtE,CAAC;AACH;","names":[]}
@@ -9,16 +9,4 @@ type FlattenedFilterIds = {
9
9
  declare const getFlattenedFiltersLabels: (filters: string[] | HeaderFilterObject[], fieldName: string) => (string | number)[];
10
10
  declare const getFlattenedFiltersIds: (filters: HeaderFilters) => FlattenedFilterIds;
11
11
 
12
- interface NavigableOption {
13
- value?: string | number | null;
14
- label?: string;
15
- disabled?: boolean;
16
- }
17
- interface GetSelectOptionFromKeyPressParams<T extends NavigableOption> {
18
- key: string;
19
- options: T[];
20
- currentValue?: string | number | null;
21
- }
22
- declare const getSelectOptionFromKeyPress: <T extends NavigableOption>({ key, options, currentValue, }: GetSelectOptionFromKeyPressParams<T>) => T | undefined;
23
-
24
- export { type FlattenedFilterIds, getFlattenedFiltersIds, getFlattenedFiltersLabels, getSelectOptionFromKeyPress };
12
+ export { type FlattenedFilterIds, getFlattenedFiltersIds, getFlattenedFiltersLabels };
@@ -9,16 +9,4 @@ type FlattenedFilterIds = {
9
9
  declare const getFlattenedFiltersLabels: (filters: string[] | HeaderFilterObject[], fieldName: string) => (string | number)[];
10
10
  declare const getFlattenedFiltersIds: (filters: HeaderFilters) => FlattenedFilterIds;
11
11
 
12
- interface NavigableOption {
13
- value?: string | number | null;
14
- label?: string;
15
- disabled?: boolean;
16
- }
17
- interface GetSelectOptionFromKeyPressParams<T extends NavigableOption> {
18
- key: string;
19
- options: T[];
20
- currentValue?: string | number | null;
21
- }
22
- declare const getSelectOptionFromKeyPress: <T extends NavigableOption>({ key, options, currentValue, }: GetSelectOptionFromKeyPressParams<T>) => T | undefined;
23
-
24
- export { type FlattenedFilterIds, getFlattenedFiltersIds, getFlattenedFiltersLabels, getSelectOptionFromKeyPress };
12
+ export { type FlattenedFilterIds, getFlattenedFiltersIds, getFlattenedFiltersLabels };
@@ -1,12 +1,10 @@
1
1
  import {
2
2
  getFlattenedFiltersIds,
3
- getFlattenedFiltersLabels,
4
- getSelectOptionFromKeyPress
5
- } from "../chunk-3UDYWCV6.js";
3
+ getFlattenedFiltersLabels
4
+ } from "../chunk-N3IUZVB7.js";
6
5
  import "../chunk-5WRI5ZAA.js";
7
6
  export {
8
7
  getFlattenedFiltersIds,
9
- getFlattenedFiltersLabels,
10
- getSelectOptionFromKeyPress
8
+ getFlattenedFiltersLabels
11
9
  };
12
10
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@natoora-libs/core",
3
- "version": "0.2.27-dev-doug-2",
3
+ "version": "0.2.28",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -44,7 +44,7 @@
44
44
  },
45
45
  "packageManager": "pnpm@10.14.0",
46
46
  "scripts": {
47
- "dev": "yalc publish && NODE_OPTIONS=\"--max-old-space-size=8192\" tsup --watch --onSuccess \"yalc push --changed\"",
47
+ "dev": "yalc publish && tsup --watch --onSuccess \"yalc push --changed\"",
48
48
  "build": "tsup",
49
49
  "build-storybook": "storybook build",
50
50
  "storybook": "storybook dev -p 6006",
@@ -101,7 +101,7 @@
101
101
  "storybook": "^10.2.10",
102
102
  "ts-jest": "^29.4.0",
103
103
  "ts-loader": "^9.5.2",
104
- "tsup": "8.3.0",
104
+ "tsup": "^8.5.1",
105
105
  "typescript": "^5.8.3",
106
106
  "yalc": "^1.0.0-pre.53"
107
107
  },
@@ -1,67 +0,0 @@
1
- // src/utils/getSelectOptionFromKeyPress/getSelectOptionFromKeyPress.ts
2
- var getNextCircularIndex = ({
3
- isArrowUp,
4
- currentIndex,
5
- numOptions,
6
- iteration
7
- }) => {
8
- const step = isArrowUp ? -iteration : iteration;
9
- return (currentIndex + step + numOptions) % numOptions;
10
- };
11
- var getSelectOptionFromKeyPress = ({
12
- key,
13
- options,
14
- currentValue
15
- }) => {
16
- const numOptions = options.length;
17
- const isArrowUp = key === "ArrowUp";
18
- const isArrowDown = key === "ArrowDown";
19
- const isArrow = isArrowUp || isArrowDown;
20
- const searchKey = key.toLowerCase();
21
- if (!isArrow && searchKey.length !== 1) {
22
- return void 0;
23
- }
24
- if (!numOptions) {
25
- return void 0;
26
- }
27
- const currentIndex = options.findIndex((o) => o.value === currentValue);
28
- const indicesToCheck = Array.from({ length: numOptions }).map(
29
- (_, i) => getNextCircularIndex({
30
- isArrowUp,
31
- currentIndex,
32
- numOptions,
33
- iteration: i + 1
34
- })
35
- );
36
- const nextMatchIndex = indicesToCheck.find((indexToCheck) => {
37
- const option = options[indexToCheck];
38
- return !option.disabled && (isArrow || option.label?.toLowerCase().startsWith(searchKey));
39
- });
40
- if (nextMatchIndex !== void 0 && nextMatchIndex !== currentIndex) {
41
- return options[nextMatchIndex];
42
- }
43
- return void 0;
44
- };
45
-
46
- // src/utils/flattenTableFilters/flattenTableFilters.ts
47
- var getFlattenedFiltersLabels = (filters, fieldName) => {
48
- return filters.map((value) => {
49
- if (typeof value === "object") {
50
- return value[fieldName] ?? "";
51
- }
52
- return value;
53
- });
54
- };
55
- var getFlattenedFiltersIds = (filters) => Object.fromEntries(
56
- Object.entries(filters).map(([id, values]) => [
57
- id,
58
- values.map((value) => typeof value === "object" ? value.id : value)
59
- ])
60
- );
61
-
62
- export {
63
- getSelectOptionFromKeyPress,
64
- getFlattenedFiltersLabels,
65
- getFlattenedFiltersIds
66
- };
67
- //# sourceMappingURL=chunk-3UDYWCV6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/utils/getSelectOptionFromKeyPress/getSelectOptionFromKeyPress.ts","../src/utils/flattenTableFilters/flattenTableFilters.ts"],"sourcesContent":["export interface NavigableOption {\n value?: string | number | null;\n label?: string;\n disabled?: boolean;\n}\n\nexport interface GetSelectOptionFromKeyPressParams<T extends NavigableOption> {\n key: string;\n options: T[];\n currentValue?: string | number | null;\n}\n\nconst getNextCircularIndex = ({\n isArrowUp,\n currentIndex,\n numOptions,\n iteration,\n}: {\n isArrowUp: boolean;\n currentIndex: number;\n numOptions: number;\n iteration: number;\n}) => {\n const step = isArrowUp ? -iteration : iteration;\n return (currentIndex + step + numOptions) % numOptions;\n};\n\nexport const getSelectOptionFromKeyPress = <T extends NavigableOption>({\n key,\n options,\n currentValue,\n}: GetSelectOptionFromKeyPressParams<T>): T | undefined => {\n const numOptions = options.length;\n const isArrowUp = key === 'ArrowUp';\n const isArrowDown = key === 'ArrowDown';\n const isArrow = isArrowUp || isArrowDown;\n const searchKey = key.toLowerCase();\n\n // Ignores any input that is not ArrowUp, ArrowDown or a single character.\n if (!isArrow && searchKey.length !== 1) {\n return undefined;\n }\n\n if (!numOptions) {\n return undefined;\n }\n\n const currentIndex = options.findIndex((o) => o.value === currentValue);\n\n // Generates a circular sequence of indices starting from the next item.\n // This ensures that pressing the same key repeatedly cycles through all matching options.\n const indicesToCheck = Array.from({ length: numOptions }).map((_, i) =>\n getNextCircularIndex({\n isArrowUp,\n currentIndex,\n numOptions,\n iteration: i + 1,\n }),\n );\n\n const nextMatchIndex = indicesToCheck.find((indexToCheck) => {\n const option = options[indexToCheck];\n return (\n !option.disabled &&\n (isArrow || option.label?.toLowerCase().startsWith(searchKey))\n );\n });\n\n if (nextMatchIndex !== undefined && nextMatchIndex !== currentIndex) {\n return options[nextMatchIndex];\n }\n\n return undefined;\n};\n","import {\n HeaderFilterObject,\n HeaderFilters,\n} from '@/components/TableDesktop/TableDesktop';\n\nexport type FlattenedFilterIds = {\n [key: string]: (string | number)[];\n};\n\nexport const getFlattenedFiltersLabels = (\n filters: string[] | HeaderFilterObject[],\n fieldName: string,\n): (string | number)[] => {\n return filters.map((value: string | HeaderFilterObject) => {\n if (typeof value === 'object') {\n return value[fieldName] ?? '';\n }\n return value;\n });\n};\n\nexport const getFlattenedFiltersIds = (\n filters: HeaderFilters,\n): FlattenedFilterIds =>\n Object.fromEntries(\n Object.entries(filters).map(([id, values]) => [\n id,\n values.map((value) => (typeof value === 'object' ? value.id : value)),\n ]),\n );\n"],"mappings":";AAYA,IAAM,uBAAuB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAKM;AACJ,QAAM,OAAO,YAAY,CAAC,YAAY;AACtC,UAAQ,eAAe,OAAO,cAAc;AAC9C;AAEO,IAAM,8BAA8B,CAA4B;AAAA,EACrE;AAAA,EACA;AAAA,EACA;AACF,MAA2D;AACzD,QAAM,aAAa,QAAQ;AAC3B,QAAM,YAAY,QAAQ;AAC1B,QAAM,cAAc,QAAQ;AAC5B,QAAM,UAAU,aAAa;AAC7B,QAAM,YAAY,IAAI,YAAY;AAGlC,MAAI,CAAC,WAAW,UAAU,WAAW,GAAG;AACtC,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,YAAY;AACf,WAAO;AAAA,EACT;AAEA,QAAM,eAAe,QAAQ,UAAU,CAAC,MAAM,EAAE,UAAU,YAAY;AAItE,QAAM,iBAAiB,MAAM,KAAK,EAAE,QAAQ,WAAW,CAAC,EAAE;AAAA,IAAI,CAAC,GAAG,MAChE,qBAAqB;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA,WAAW,IAAI;AAAA,IACjB,CAAC;AAAA,EACH;AAEA,QAAM,iBAAiB,eAAe,KAAK,CAAC,iBAAiB;AAC3D,UAAM,SAAS,QAAQ,YAAY;AACnC,WACE,CAAC,OAAO,aACP,WAAW,OAAO,OAAO,YAAY,EAAE,WAAW,SAAS;AAAA,EAEhE,CAAC;AAED,MAAI,mBAAmB,UAAa,mBAAmB,cAAc;AACnE,WAAO,QAAQ,cAAc;AAAA,EAC/B;AAEA,SAAO;AACT;;;AChEO,IAAM,4BAA4B,CACvC,SACA,cACwB;AACxB,SAAO,QAAQ,IAAI,CAAC,UAAuC;AACzD,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,MAAM,SAAS,KAAK;AAAA,IAC7B;AACA,WAAO;AAAA,EACT,CAAC;AACH;AAEO,IAAM,yBAAyB,CACpC,YAEA,OAAO;AAAA,EACL,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,MAAM,MAAM;AAAA,IAC5C;AAAA,IACA,OAAO,IAAI,CAAC,UAAW,OAAO,UAAU,WAAW,MAAM,KAAK,KAAM;AAAA,EACtE,CAAC;AACH;","names":[]}