@gravitee/graphene-core 2.7.0 → 2.7.1-feat-copyable-text.525335
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/USAGE_GUIDE.md +3 -1
- package/dist/base/Table/Table.harness.d.ts +23 -0
- package/dist/base/Table/Table.harness.d.ts.map +1 -0
- package/dist/composed/CopyableText/CopyableText.d.ts +22 -0
- package/dist/composed/CopyableText/CopyableText.d.ts.map +1 -0
- package/dist/composed/CopyableText/index.d.ts +3 -0
- package/dist/composed/CopyableText/index.d.ts.map +1 -0
- package/dist/composed/DataTable/DataTable.harness.d.ts +26 -0
- package/dist/composed/DataTable/DataTable.harness.d.ts.map +1 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6243 -6190
- package/dist/lib/use-sync-external-store-with-selector-shim.d.ts.map +1 -1
- package/dist/testing/index.d.ts +4 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +125 -5
- package/package.json +3 -2
package/USAGE_GUIDE.md
CHANGED
|
@@ -384,9 +384,11 @@ If zero or more than one element matches when a `selector` is provided, the harn
|
|
|
384
384
|
|
|
385
385
|
Every interactive base component exports a matching `xHarness` factory — `Button` → `buttonHarness`, `Input` → `inputHarness`, etc. The current list is whatever `@gravitee/graphene-core/testing` re-exports; IDE autocomplete on that import shows them all. Each harness has a few async actions (`click`, `type`, `select`, `toggle`, …) and synchronous getters (`getValue`, `isChecked`, `isDisabled`, …).
|
|
386
386
|
|
|
387
|
-
|
|
387
|
+
A few cases worth remembering:
|
|
388
388
|
|
|
389
389
|
- **`RadioGroup` exposes two harnesses** — `radioGroupHarness` (group-level: `select(value)`, `getValue`, `getOptions`) and `radioHarness` (single radio: `select`, `isSelected`, `getValue`).
|
|
390
|
+
- **`Table` returns a row sub-harness** — `tableHarness().getRow(matcher)` returns a `TableRowHarness` exposing `getCells`, `getCellText(header)`, `getCellElement(header)`. The cell element is the hook to scope another harness inside a specific row (see the **Tables** section below).
|
|
391
|
+
- **`DataTable` is composed but exported via `/testing`** — most harnesses are for base primitives, but `dataTableHarness` is exposed because it adds sorting, selection, empty/loading state on top of the inner `<Table>`. Its rows extend `TableRowHarness` with `isSelected`, `select`, `unselect`.
|
|
390
392
|
- **Static primitives have no harness** — `Badge`, `Card`, `Skeleton`, `Avatar`, `Spinner`, `Separator`, `Label`, `Kbd`, `Alert`, etc. carry no behavior to drive. Query them directly with RTL's `getByRole` / `getByText`.
|
|
391
393
|
|
|
392
394
|
### Async data — wait before attaching
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { HarnessQuery } from '../../testing/harnessQuery';
|
|
2
|
+
interface TableRowHarness {
|
|
3
|
+
readonly getElement: () => HTMLTableRowElement;
|
|
4
|
+
readonly getCells: () => string[];
|
|
5
|
+
readonly getCellText: (header: string | RegExp) => string;
|
|
6
|
+
readonly getCellElement: (header: string | RegExp) => HTMLTableCellElement;
|
|
7
|
+
}
|
|
8
|
+
interface TableHarness {
|
|
9
|
+
readonly getElement: () => HTMLTableElement;
|
|
10
|
+
readonly getHeaders: () => string[];
|
|
11
|
+
readonly getRowCount: () => number;
|
|
12
|
+
readonly getRow: (matcher: number | string | RegExp) => TableRowHarness;
|
|
13
|
+
readonly queryRow: (matcher: string | RegExp) => TableRowHarness | null;
|
|
14
|
+
readonly getRows: () => TableRowHarness[];
|
|
15
|
+
}
|
|
16
|
+
declare function headerMatches(th: HTMLTableCellElement, matcher: string | RegExp): boolean;
|
|
17
|
+
declare function describeHeaders(headers: readonly HTMLTableCellElement[]): string;
|
|
18
|
+
declare function getOwnHeaderCells(table: HTMLTableElement): HTMLTableCellElement[];
|
|
19
|
+
declare function getOwnBodyRows(table: HTMLTableElement): HTMLTableRowElement[];
|
|
20
|
+
declare function tableHarness(query?: HarnessQuery): TableHarness;
|
|
21
|
+
export { describeHeaders, getOwnBodyRows, getOwnHeaderCells, headerMatches, tableHarness };
|
|
22
|
+
export type { TableHarness, TableRowHarness };
|
|
23
|
+
//# sourceMappingURL=Table.harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Table.harness.d.ts","sourceRoot":"","sources":["../../../src/base/Table/Table.harness.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAEnG,UAAU,eAAe;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,mBAAmB,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,MAAM,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,KAAK,MAAM,CAAC;IAC1D,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,KAAK,oBAAoB,CAAC;CAC5E;AAED,UAAU,YAAY;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,KAAK,eAAe,CAAC;IACxE,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,KAAK,eAAe,GAAG,IAAI,CAAC;IACxE,QAAQ,CAAC,OAAO,EAAE,MAAM,eAAe,EAAE,CAAC;CAC3C;AAID,iBAAS,aAAa,CAAC,EAAE,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAKlF;AAED,iBAAS,eAAe,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,GAAG,MAAM,CAUzE;AAMD,iBAAS,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,oBAAoB,EAAE,CAM1E;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,EAAE,CAItE;AA4BD,iBAAS,YAAY,CAAC,KAAK,GAAE,YAAiB,GAAG,YAAY,CAiD5D;AAED,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;AAC3F,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
interface CopyableTextProps {
|
|
2
|
+
readonly value: string;
|
|
3
|
+
readonly className?: string;
|
|
4
|
+
/** Tooltip text shown before copy. Defaults to "Click to copy". */
|
|
5
|
+
readonly copyLabel?: string;
|
|
6
|
+
/** Tooltip text shown right after copy. Defaults to "Copied!". */
|
|
7
|
+
readonly copiedLabel?: string;
|
|
8
|
+
/** Milliseconds to keep the "copied" state. Defaults to 1500. */
|
|
9
|
+
readonly resetDelayMs?: number;
|
|
10
|
+
/**
|
|
11
|
+
* Called with the rejection when the clipboard write fails or the
|
|
12
|
+
* Clipboard API is unavailable. Without it, failures are silent.
|
|
13
|
+
*/
|
|
14
|
+
readonly onCopyError?: (error: unknown) => void;
|
|
15
|
+
}
|
|
16
|
+
declare function CopyableText({ value, className, copyLabel, copiedLabel, resetDelayMs, onCopyError, }: CopyableTextProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
declare namespace CopyableText {
|
|
18
|
+
var displayName: string;
|
|
19
|
+
}
|
|
20
|
+
export { CopyableText };
|
|
21
|
+
export type { CopyableTextProps };
|
|
22
|
+
//# sourceMappingURL=CopyableText.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CopyableText.d.ts","sourceRoot":"","sources":["../../../src/composed/CopyableText/CopyableText.tsx"],"names":[],"mappings":"AAMA,UAAU,iBAAiB;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACjD;AAED,iBAAS,YAAY,CAAC,EACpB,KAAK,EACL,SAAS,EACT,SAA2B,EAC3B,WAAuB,EACvB,YAAmB,EACnB,WAAW,GACZ,EAAE,iBAAiB,2CAkDnB;kBAzDQ,YAAY;;;AA6DrB,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composed/CopyableText/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { TableRowHarness } from '../../base/Table/Table.harness';
|
|
2
|
+
import { HarnessQuery } from '../../testing/harnessQuery';
|
|
3
|
+
interface DataTableRowHarness extends TableRowHarness {
|
|
4
|
+
readonly isSelected: () => boolean;
|
|
5
|
+
readonly select: () => Promise<void>;
|
|
6
|
+
readonly unselect: () => Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
interface DataTableHarness {
|
|
9
|
+
readonly getElement: () => HTMLTableElement;
|
|
10
|
+
readonly getHeaders: () => string[];
|
|
11
|
+
readonly getRowCount: () => number;
|
|
12
|
+
readonly getRow: (matcher: number | string | RegExp) => DataTableRowHarness;
|
|
13
|
+
readonly queryRow: (matcher: string | RegExp) => DataTableRowHarness | null;
|
|
14
|
+
readonly getRows: () => DataTableRowHarness[];
|
|
15
|
+
readonly sortBy: (header: string | RegExp) => Promise<void>;
|
|
16
|
+
readonly getSortDirection: (header: string | RegExp) => 'ascending' | 'descending' | 'none' | null;
|
|
17
|
+
readonly selectAll: () => Promise<void>;
|
|
18
|
+
readonly unselectAll: () => Promise<void>;
|
|
19
|
+
readonly getSelectedCount: () => number;
|
|
20
|
+
readonly isLoading: () => boolean;
|
|
21
|
+
readonly isEmpty: () => boolean;
|
|
22
|
+
}
|
|
23
|
+
declare function dataTableHarness(query?: HarnessQuery): DataTableHarness;
|
|
24
|
+
export { dataTableHarness };
|
|
25
|
+
export type { DataTableHarness, DataTableRowHarness };
|
|
26
|
+
//# sourceMappingURL=DataTable.harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataTable.harness.d.ts","sourceRoot":"","sources":["../../../src/composed/DataTable/DataTable.harness.tsx"],"names":[],"mappings":"AAEA,OAAO,EAKL,KAAK,eAAe,EACrB,MAAM,kDAAkD,CAAC;AAC1D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAEjF,UAAU,mBAAoB,SAAQ,eAAe;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC;AAED,UAAU,gBAAgB;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,MAAM,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,KAAK,mBAAmB,CAAC;IAC5E,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,KAAK,mBAAmB,GAAG,IAAI,CAAC;IAC5E,QAAQ,CAAC,OAAO,EAAE,MAAM,mBAAmB,EAAE,CAAC;IAE9C,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,QAAQ,CAAC,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,KAAK,WAAW,GAAG,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC;IAEnG,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,MAAM,CAAC;IAExC,QAAQ,CAAC,SAAS,EAAE,MAAM,OAAO,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC;CACjC;AAWD,iBAAS,gBAAgB,CAAC,KAAK,GAAE,YAAiB,GAAG,gBAAgB,CAuEpE;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-mobile.d.ts","sourceRoot":"","sources":["../../src/hooks/use-mobile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-mobile.d.ts","sourceRoot":"","sources":["../../src/hooks/use-mobile.ts"],"names":[],"mappings":"AAmBA,wBAAgB,WAAW,YAE1B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -47,6 +47,7 @@ export * from './composed/AppLayout';
|
|
|
47
47
|
export * from './composed/AppSidebar';
|
|
48
48
|
export * from './composed/AppSwitcher';
|
|
49
49
|
export * from './composed/ContentHeader';
|
|
50
|
+
export * from './composed/CopyableText';
|
|
50
51
|
export { buildLinearBreadcrumbs, type LinearBreadcrumbNavigate, type LinearBreadcrumbSegment, } from './lib/breadcrumbs/buildLinearBreadcrumbs';
|
|
51
52
|
export * from './composed/DataTable';
|
|
52
53
|
export * from './composed/DataTablePagination';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAGjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,OAAO,EACL,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,0CAA0C,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAGjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,wBAAwB,CAAC;AACvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,OAAO,EACL,sBAAsB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,GAC7B,MAAM,0CAA0C,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
|