@bioturing/components 0.32.2 → 0.33.1
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/components/code-block/component.d.ts.map +1 -1
- package/dist/components/code-block/component.js +41 -42
- package/dist/components/code-block/component.js.map +1 -1
- package/dist/components/command-palette/component.d.ts.map +1 -1
- package/dist/components/command-palette/component.js +18 -18
- package/dist/components/command-palette/component.js.map +1 -1
- package/dist/components/data-table/component.d.ts +8 -0
- package/dist/components/data-table/component.d.ts.map +1 -0
- package/dist/components/data-table/component.js +112 -0
- package/dist/components/data-table/component.js.map +1 -0
- package/dist/components/data-table/components/TableBody.d.ts +15 -0
- package/dist/components/data-table/components/TableBody.d.ts.map +1 -0
- package/dist/components/data-table/components/TableBody.js +114 -0
- package/dist/components/data-table/components/TableBody.js.map +1 -0
- package/dist/components/data-table/components/TableHeader.d.ts +11 -0
- package/dist/components/data-table/components/TableHeader.d.ts.map +1 -0
- package/dist/components/data-table/components/TableHeader.js +103 -0
- package/dist/components/data-table/components/TableHeader.js.map +1 -0
- package/dist/components/data-table/components/TablePagination.d.ts +10 -0
- package/dist/components/data-table/components/TablePagination.d.ts.map +1 -0
- package/dist/components/data-table/components/TablePagination.js +38 -0
- package/dist/components/data-table/components/TablePagination.js.map +1 -0
- package/dist/components/data-table/components/index.d.ts +4 -0
- package/dist/components/data-table/components/index.d.ts.map +1 -0
- package/dist/components/data-table/hooks.d.ts +14 -0
- package/dist/components/data-table/hooks.d.ts.map +1 -0
- package/dist/components/data-table/hooks.js +120 -0
- package/dist/components/data-table/hooks.js.map +1 -0
- package/dist/components/data-table/index.d.ts +4 -0
- package/dist/components/data-table/index.d.ts.map +1 -0
- package/dist/components/data-table/style.css +1 -0
- package/dist/components/data-table/types.d.ts +108 -0
- package/dist/components/data-table/types.d.ts.map +1 -0
- package/dist/components/data-table/utils.d.ts +39 -0
- package/dist/components/data-table/utils.d.ts.map +1 -0
- package/dist/components/data-table/utils.js +71 -0
- package/dist/components/data-table/utils.js.map +1 -0
- package/dist/components/dropdown-menu/component.d.ts.map +1 -1
- package/dist/components/dropdown-menu/component.js +60 -56
- package/dist/components/dropdown-menu/component.js.map +1 -1
- package/dist/components/ds-root/component.d.ts.map +1 -1
- package/dist/components/ds-root/component.js +15 -16
- package/dist/components/ds-root/component.js.map +1 -1
- package/dist/components/ds-root/hook.d.ts +5 -0
- package/dist/components/ds-root/hook.d.ts.map +1 -0
- package/dist/components/ds-root/hook.js +7 -0
- package/dist/components/ds-root/hook.js.map +1 -0
- package/dist/components/ds-root/index.d.ts +1 -1
- package/dist/components/ds-root/index.d.ts.map +1 -1
- package/dist/components/field/component.d.ts.map +1 -1
- package/dist/components/field/component.js +22 -21
- package/dist/components/field/component.js.map +1 -1
- package/dist/components/hooks/useBreakpoint.d.ts.map +1 -1
- package/dist/components/hooks/useBreakpoint.js +30 -8
- package/dist/components/hooks/useBreakpoint.js.map +1 -1
- package/dist/components/hooks/useCharts.js +1 -1
- package/dist/components/hooks/useCharts.js.map +1 -1
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/modal/Modal.d.ts +1 -1
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/modal/Modal.js +59 -55
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/index.d.ts +1 -1
- package/dist/components/popover/component.d.ts.map +1 -1
- package/dist/components/popover/component.js +22 -9
- package/dist/components/popover/component.js.map +1 -1
- package/dist/components/popup-panel/component.d.ts.map +1 -1
- package/dist/components/popup-panel/component.js +61 -56
- package/dist/components/popup-panel/component.js.map +1 -1
- package/dist/components/scroll-area/component.d.ts.map +1 -1
- package/dist/components/scroll-area/component.js +28 -28
- package/dist/components/scroll-area/component.js.map +1 -1
- package/dist/components/table/component.d.ts.map +1 -1
- package/dist/components/table/component.js.map +1 -1
- package/dist/components/theme-provider/component.d.ts +6 -2
- package/dist/components/theme-provider/component.d.ts.map +1 -1
- package/dist/components/theme-provider/component.js +32 -28
- package/dist/components/theme-provider/component.js.map +1 -1
- package/dist/components/theme-provider/context/index.d.ts +3 -0
- package/dist/components/theme-provider/context/index.d.ts.map +1 -0
- package/dist/components/theme-provider/context/provider.d.ts +7 -0
- package/dist/components/theme-provider/context/provider.d.ts.map +1 -0
- package/dist/components/theme-provider/context/provider.js +11 -0
- package/dist/components/theme-provider/context/provider.js.map +1 -0
- package/dist/components/theme-provider/context/themeStore.d.ts +11 -0
- package/dist/components/theme-provider/context/themeStore.d.ts.map +1 -0
- package/dist/components/theme-provider/context/themeStore.js +15 -0
- package/dist/components/theme-provider/context/themeStore.js.map +1 -0
- package/dist/components/theme-provider/index.d.ts +1 -0
- package/dist/components/theme-provider/index.d.ts.map +1 -1
- package/dist/components/tree/useTreeCommon.d.ts +10 -10
- package/dist/components/tree/useTreeCommon.d.ts.map +1 -1
- package/dist/components/utils/client.d.ts +0 -1
- package/dist/components/utils/client.d.ts.map +1 -1
- package/dist/index.js +223 -219
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +9 -0
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +18 -0
- package/dist/metadata.js.map +1 -1
- package/dist/stats.html +1 -1
- package/package.json +3 -2
- package/dist/components/ds-root/context.d.ts +0 -8
- package/dist/components/ds-root/context.d.ts.map +0 -1
- package/dist/components/ds-root/context.js +0 -10
- package/dist/components/ds-root/context.js.map +0 -1
- package/dist/components/utils/WithAntdTokens.d.ts +0 -8
- package/dist/components/utils/WithAntdTokens.d.ts.map +0 -1
- package/dist/components/utils/WithAntdTokens.js +0 -25
- package/dist/components/utils/WithAntdTokens.js.map +0 -1
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
function o(e) {
|
|
2
|
+
return "accessorKey" in e && typeof e.accessorKey == "string";
|
|
3
|
+
}
|
|
4
|
+
function g(e) {
|
|
5
|
+
return "accessorFn" in e && typeof e.accessorFn == "function";
|
|
6
|
+
}
|
|
7
|
+
function S(e) {
|
|
8
|
+
return "header" in e && e.header !== void 0;
|
|
9
|
+
}
|
|
10
|
+
function c(e) {
|
|
11
|
+
return "cell" in e && e.cell !== void 0;
|
|
12
|
+
}
|
|
13
|
+
function l(e) {
|
|
14
|
+
const i = e, t = {
|
|
15
|
+
id: e.key?.toString() || e.dataIndex?.toString() || (o(i) ? i.accessorKey : void 0)
|
|
16
|
+
};
|
|
17
|
+
if (o(i))
|
|
18
|
+
t.accessorKey = i.accessorKey;
|
|
19
|
+
else if (g(i))
|
|
20
|
+
t.accessorFn = i.accessorFn;
|
|
21
|
+
else if (e.dataIndex) {
|
|
22
|
+
const r = Array.isArray(e.dataIndex) ? e.dataIndex.join(".") : e.dataIndex.toString();
|
|
23
|
+
t.accessorKey = r;
|
|
24
|
+
}
|
|
25
|
+
return S(i) ? t.header = i.header : e.title && (typeof e.title == "function" ? t.header = ({ column: r }) => {
|
|
26
|
+
const n = r.getIsSorted(), s = n === "asc" ? "ascend" : n === "desc" ? "descend" : void 0;
|
|
27
|
+
return e.title({ sortOrder: s });
|
|
28
|
+
} : t.header = () => e.title), c(i) ? t.cell = i.cell : e.render && (t.cell = ({ getValue: r, row: n }) => {
|
|
29
|
+
const s = r(), f = n.original, a = n.index;
|
|
30
|
+
return e.render(s, f, a);
|
|
31
|
+
}), e.enableSorting !== void 0 ? t.enableSorting = e.enableSorting : e.sorter !== void 0 && (t.enableSorting = !!e.sorter, typeof e.sorter == "function" && (t.sortingFn = (r, n) => e.sorter(r.original, n.original))), e.enableFiltering !== void 0 && (t.enableColumnFilter = e.enableFiltering), e.filterFn && (typeof e.filterFn == "string" ? t.filterFn = e.filterFn : t.filterFn = (r, n, s) => e.filterFn(r.original, n, s)), e.enableResizing !== void 0 && (t.enableResizing = e.enableResizing), e.size !== void 0 && (t.size = e.size), e.minSize !== void 0 && (t.minSize = e.minSize), e.maxSize !== void 0 && (t.maxSize = e.maxSize), t.meta = {
|
|
32
|
+
...e.meta,
|
|
33
|
+
align: e.align || e.meta?.align,
|
|
34
|
+
width: e.width,
|
|
35
|
+
fixed: e.fixed,
|
|
36
|
+
ellipsis: e.ellipsis
|
|
37
|
+
}, e.width && (t.size = typeof e.width == "number" ? e.width : void 0), t;
|
|
38
|
+
}
|
|
39
|
+
function h(e) {
|
|
40
|
+
return e.map(l);
|
|
41
|
+
}
|
|
42
|
+
function y(e, i, t) {
|
|
43
|
+
if (typeof t == "function")
|
|
44
|
+
return t(e, i);
|
|
45
|
+
if (typeof t == "string")
|
|
46
|
+
return e[t]?.toString() || i.toString();
|
|
47
|
+
const r = e.key || e.id;
|
|
48
|
+
return r ? r.toString() : i.toString();
|
|
49
|
+
}
|
|
50
|
+
function F(e, i, t) {
|
|
51
|
+
const r = [], n = [];
|
|
52
|
+
return i.forEach((s, f) => {
|
|
53
|
+
const a = y(s, f, t), d = String(a);
|
|
54
|
+
e[d] && (r.push(a), n.push(s));
|
|
55
|
+
}), { selectedRowKeys: r, selectedRows: n };
|
|
56
|
+
}
|
|
57
|
+
function v(e) {
|
|
58
|
+
return !e || e === "left" ? "" : `text-${e}`;
|
|
59
|
+
}
|
|
60
|
+
function p(e) {
|
|
61
|
+
return e.getCanSort?.() || e.getCanFilter?.() || !1;
|
|
62
|
+
}
|
|
63
|
+
export {
|
|
64
|
+
l as convertColumnToTanStack,
|
|
65
|
+
h as convertColumnsToTanStack,
|
|
66
|
+
F as convertSelectionToAntFormat,
|
|
67
|
+
v as getAlignmentClass,
|
|
68
|
+
y as getRowKey,
|
|
69
|
+
p as shouldShowIcons
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/components/data-table/utils.ts"],"sourcesContent":["import { type DataTableColumnType, type RowKey } from \"./types\";\nimport { type ColumnDef, type Row, type AccessorKeyColumnDef, type AccessorFnColumnDef } from \"@tanstack/react-table\";\n\n// Type for columns that might have TanStack properties\ntype ExtendedColumnType<RecordType extends Record<string, any>> = DataTableColumnType<RecordType> & {\n accessorKey?: string;\n accessorFn?: (row: RecordType) => RecordType[keyof RecordType];\n header?: ColumnDef<RecordType>['header'];\n cell?: ColumnDef<RecordType>['cell'];\n};\n\n// Type guards\nfunction hasAccessorKey<T extends Record<string, unknown>>(column: ExtendedColumnType<T>): column is ExtendedColumnType<T> & { accessorKey: string } {\n return 'accessorKey' in column && typeof column.accessorKey === 'string';\n}\n\nfunction hasAccessorFn<T extends Record<string, unknown>>(column: ExtendedColumnType<T>): column is ExtendedColumnType<T> & { accessorFn: (row: T) => T[keyof T] } {\n return 'accessorFn' in column && typeof column.accessorFn === 'function';\n}\n\nfunction hasTanStackHeader<T extends Record<string, unknown>>(column: ExtendedColumnType<T>): column is ExtendedColumnType<T> & { header: ColumnDef<T>['header'] } {\n return 'header' in column && column.header !== undefined;\n}\n\nfunction hasTanStackCell<T extends Record<string, unknown>>(column: ExtendedColumnType<T>): column is ExtendedColumnType<T> & { cell: ColumnDef<T>['cell'] } {\n return 'cell' in column && column.cell !== undefined;\n}\n\n/**\n * Converts Ant Design column definition to TanStack Table column definition\n * Handles both Ant Design props and TanStack props for maximum compatibility\n */\nexport function convertColumnToTanStack<RecordType extends Record<string, any> = Record<string, unknown>>(\n column: DataTableColumnType<RecordType>\n): ColumnDef<RecordType> {\n const extColumn = column as ExtendedColumnType<RecordType>;\n const tanStackColumn: ColumnDef<RecordType> = {\n id: column.key?.toString() || column.dataIndex?.toString() || (hasAccessorKey(extColumn) ? extColumn.accessorKey : undefined),\n };\n\n // Handle data access - priority: accessorKey > accessorFn > dataIndex\n if (hasAccessorKey(extColumn)) {\n (tanStackColumn as AccessorKeyColumnDef<RecordType>).accessorKey = extColumn.accessorKey;\n } else if (hasAccessorFn(extColumn)) {\n (tanStackColumn as AccessorFnColumnDef<RecordType>).accessorFn = extColumn.accessorFn;\n } else if (column.dataIndex) {\n // Convert Ant Design dataIndex to TanStack accessorKey\n const dataIndex = Array.isArray(column.dataIndex) \n ? column.dataIndex.join('.') \n : column.dataIndex.toString();\n (tanStackColumn as AccessorKeyColumnDef<RecordType>).accessorKey = dataIndex;\n }\n\n // Handle header - priority: header > title\n if (hasTanStackHeader(extColumn)) {\n tanStackColumn.header = extColumn.header;\n } else if (column.title) {\n if (typeof column.title === 'function') {\n tanStackColumn.header = ({ column: tanStackCol }) => {\n const sortOrder = tanStackCol.getIsSorted();\n const antSortOrder = sortOrder === 'asc' ? 'ascend' : sortOrder === 'desc' ? 'descend' : undefined;\n return (column.title as (options: { sortOrder?: 'ascend' | 'descend' }) => React.ReactNode)({ sortOrder: antSortOrder });\n };\n } else {\n tanStackColumn.header = () => column.title;\n }\n }\n\n // Handle cell rendering - priority: cell > render\n if (hasTanStackCell(extColumn)) {\n tanStackColumn.cell = extColumn.cell;\n } else if (column.render) {\n tanStackColumn.cell = ({ getValue, row }) => {\n const value = getValue() as RecordType[keyof RecordType];\n const record = row.original;\n const index = row.index;\n return column.render!(value, record, index);\n };\n }\n\n // Handle sorting\n if (column.enableSorting !== undefined) {\n tanStackColumn.enableSorting = column.enableSorting;\n } else if (column.sorter !== undefined) {\n tanStackColumn.enableSorting = !!column.sorter;\n if (typeof column.sorter === 'function') {\n tanStackColumn.sortingFn = (rowA, rowB) => {\n return (column.sorter as (a: RecordType, b: RecordType) => number)(rowA.original, rowB.original);\n };\n }\n }\n\n // Handle filtering\n if (column.enableFiltering !== undefined) {\n tanStackColumn.enableColumnFilter = column.enableFiltering;\n }\n if (column.filterFn) {\n if (typeof column.filterFn === 'string') {\n // TanStack Table supports built-in filter function names as strings\n // Using type assertion here as this is a compatibility layer\n tanStackColumn.filterFn = column.filterFn as 'includesString';\n } else {\n tanStackColumn.filterFn = (row: Row<RecordType>, columnId: string, filterValue: unknown) => {\n return (column.filterFn as (row: RecordType, columnId: string, filterValue: unknown) => boolean)(row.original, columnId, filterValue);\n };\n }\n }\n\n // Handle column resizing\n if (column.enableResizing !== undefined) {\n tanStackColumn.enableResizing = column.enableResizing;\n }\n if (column.size !== undefined) {\n tanStackColumn.size = column.size;\n }\n if (column.minSize !== undefined) {\n tanStackColumn.minSize = column.minSize;\n }\n if (column.maxSize !== undefined) {\n tanStackColumn.maxSize = column.maxSize;\n }\n\n // Handle column metadata for alignment and other features\n tanStackColumn.meta = {\n ...column.meta,\n align: column.align || column.meta?.align,\n width: column.width,\n fixed: column.fixed,\n ellipsis: column.ellipsis,\n };\n\n // Set size/width\n if (column.width) {\n tanStackColumn.size = typeof column.width === 'number' ? column.width : undefined;\n }\n\n return tanStackColumn;\n}\n\n/**\n * Converts array of Ant Design columns to TanStack columns\n */\nexport function convertColumnsToTanStack<RecordType extends Record<string, any> = Record<string, unknown>>(\n columns: DataTableColumnType<RecordType>[]\n): ColumnDef<RecordType>[] {\n return columns.map(convertColumnToTanStack);\n}\n\n/**\n * Generates a unique row key for a record\n * Follows Ant Design's rowKey logic\n */\nexport function getRowKey<RecordType extends Record<string, any> = Record<string, unknown>>(\n record: RecordType, \n index: number,\n rowKey?: RowKey | ((record: RecordType, index?: number) => RowKey)\n): RowKey {\n if (typeof rowKey === 'function') {\n return rowKey(record, index);\n }\n \n if (typeof rowKey === 'string') {\n return record[rowKey]?.toString() || index.toString();\n }\n \n // Default behavior - try 'key', then 'id', then index\n const defaultKey = record.key || record.id;\n return defaultKey ? defaultKey.toString() : index.toString();\n}\n\n/**\n * Converts TanStack selection state to Ant Design format\n */\nexport function convertSelectionToAntFormat<RecordType extends Record<string, any> = Record<string, unknown>>(\n rowSelectionState: Record<string, boolean>,\n data: RecordType[],\n rowKey?: RowKey | ((record: RecordType, index?: number) => RowKey)\n): {\n selectedRowKeys: React.Key[];\n selectedRows: RecordType[];\n} {\n const selectedRowKeys: React.Key[] = [];\n const selectedRows: RecordType[] = [];\n\n data.forEach((record, index) => {\n const key = getRowKey(record, index, rowKey);\n const keyStr = String(key);\n if (rowSelectionState[keyStr]) {\n selectedRowKeys.push(key);\n selectedRows.push(record);\n }\n });\n\n return { selectedRowKeys, selectedRows };\n}\n\n/**\n * Converts Ant Design selection format to TanStack format\n */\nexport function convertSelectionToTanStackFormat<RecordType extends Record<string, any> = Record<string, unknown>>(\n selectedRowKeys: React.Key[],\n _data: RecordType[],\n _rowKey?: RowKey | ((record: RecordType, index?: number) => RowKey)\n): Record<string, boolean> {\n const selectionState: Record<string, boolean> = {};\n \n selectedRowKeys.forEach(key => {\n selectionState[key.toString()] = true;\n });\n\n return selectionState;\n}\n\n/**\n * Gets the appropriate CSS class for text alignment\n */\nexport function getAlignmentClass(align?: 'left' | 'center' | 'right'): string {\n if (!align || align === 'left') return '';\n return `text-${align}`;\n}\n\n/**\n * Determines if a column should show sort/filter icons\n */\nexport function shouldShowIcons(column: { getCanSort?: () => boolean; getCanFilter?: () => boolean }): boolean {\n return column.getCanSort?.() || column.getCanFilter?.() || false;\n}"],"names":["hasAccessorKey","column","hasAccessorFn","hasTanStackHeader","hasTanStackCell","convertColumnToTanStack","extColumn","tanStackColumn","dataIndex","tanStackCol","sortOrder","antSortOrder","getValue","row","value","record","index","rowA","rowB","columnId","filterValue","convertColumnsToTanStack","columns","getRowKey","rowKey","defaultKey","convertSelectionToAntFormat","rowSelectionState","data","selectedRowKeys","selectedRows","key","keyStr","getAlignmentClass","align","shouldShowIcons"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown-menu/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAEtD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AASpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAMlC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAmB,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,OAAO,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/dropdown-menu/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC;AAEtD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AASpD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAMlC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAmB,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,OAAO,aAAa,CAAC;AAGrB,MAAM,WAAW,iBACf,SAAQ,IAAI,CAAC,oBAAoB,EAAE,YAAY,CAAC;IAChD,0DAA0D;IAC1D,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC9B,qDAAqD;IACrD,QAAQ,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC/D;;;OAGG;IACH,SAAS,CAAC,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,CAAC,EAAE;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAEvC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,OAAO,cAAc,CAAC;IAC5C;;OAEG;IACH,WAAW,CAAC,EAAE,IAAI,CAChB,KAAK,CAAC,cAAc,CAAC,OAAO,OAAO,CAAC,KAAK,CAAC,EAC1C,MAAM,GAAG,KAAK,CACf,CAAC;IACF;;;OAGG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED,eAAO,MAAM,YAAY,GAAI,sWA0B1B,iBAAiB,4CA+InB,CAAC"}
|
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsxs as
|
|
3
|
-
import { useRef as
|
|
2
|
+
import { jsxs as m, jsx as r } from "react/jsx-runtime";
|
|
3
|
+
import { useRef as B, useCallback as F, createElement as L } from "react";
|
|
4
4
|
import { Menu as U } from "@base-ui-components/react/menu";
|
|
5
5
|
import { Popover as W } from "@base-ui-components/react/popover";
|
|
6
|
-
import { Command as
|
|
6
|
+
import { Command as i } from "../cmdk/index.js";
|
|
7
7
|
import { FormItemInputContext as q } from "antd/es/form/context";
|
|
8
|
-
import { PopupPanelSize as
|
|
8
|
+
import { PopupPanelSize as I } from "../popup-panel/constants.js";
|
|
9
9
|
import { useDropdownMenu as H } from "./useDropdownMenu.js";
|
|
10
10
|
import './style.css';/* empty css */
|
|
11
11
|
import { parseAntdPlacement as J } from "../utils/placement.js";
|
|
12
12
|
import { Input as Q } from "../input/component.js";
|
|
13
|
-
import { ScrollArea as
|
|
13
|
+
import { ScrollArea as P } from "../scroll-area/component.js";
|
|
14
14
|
import { DROPDOWN_COLLISION_AVOIDANCE as X } from "../utils/constants.js";
|
|
15
15
|
import { useControlledState as Y } from "../hooks/useControlledState.js";
|
|
16
|
-
import { useCls as Z
|
|
16
|
+
import { useCls as Z } from "../utils/antdUtils.js";
|
|
17
|
+
import { useTheme as $ } from "../theme-provider/context/themeStore.js";
|
|
17
18
|
import { clsx as c } from "../utils/cn.js";
|
|
18
|
-
const
|
|
19
|
-
children:
|
|
20
|
-
items:
|
|
21
|
-
placement:
|
|
22
|
-
openOnHover:
|
|
19
|
+
const wo = ({
|
|
20
|
+
children: x,
|
|
21
|
+
items: O,
|
|
22
|
+
placement: b,
|
|
23
|
+
openOnHover: N,
|
|
23
24
|
open: S,
|
|
24
|
-
onOpenChange:
|
|
25
|
-
defaultOpen:
|
|
26
|
-
className:
|
|
25
|
+
onOpenChange: A,
|
|
26
|
+
defaultOpen: D,
|
|
27
|
+
className: E,
|
|
27
28
|
itemRender: M,
|
|
28
29
|
classNames: o,
|
|
29
30
|
size: s = "auto",
|
|
@@ -33,28 +34,28 @@ const Co = ({
|
|
|
33
34
|
placeholder: "Search..."
|
|
34
35
|
},
|
|
35
36
|
popupMatchTriggerWidth: R,
|
|
36
|
-
beforeList:
|
|
37
|
+
beforeList: d,
|
|
37
38
|
afterList: p,
|
|
38
|
-
keepOpenOnSelect:
|
|
39
|
+
keepOpenOnSelect: k,
|
|
39
40
|
highlightedItemKey: l,
|
|
40
|
-
selectedItemKeys:
|
|
41
|
-
getItemKeywords:
|
|
41
|
+
selectedItemKeys: y,
|
|
42
|
+
getItemKeywords: j,
|
|
42
43
|
showCheckbox: C,
|
|
43
|
-
itemLabelRender:
|
|
44
|
+
itemLabelRender: G
|
|
44
45
|
}) => {
|
|
45
|
-
const
|
|
46
|
+
const T = typeof f == "boolean" ? f : n, [V, w] = Y(
|
|
46
47
|
S,
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
), e = Z(),
|
|
50
|
-
items:
|
|
51
|
-
keepOpenOnSelect:
|
|
52
|
-
selectedItemKeys:
|
|
48
|
+
A,
|
|
49
|
+
D
|
|
50
|
+
), e = Z(), { className: h } = $(), v = J(b), _ = B(null), { itemGroups: u, renderGroup: a } = H({
|
|
51
|
+
items: O,
|
|
52
|
+
keepOpenOnSelect: k,
|
|
53
|
+
selectedItemKeys: y,
|
|
53
54
|
showCheckbox: C,
|
|
54
|
-
getItemKeywords:
|
|
55
|
-
itemLabelRender:
|
|
55
|
+
getItemKeywords: j,
|
|
56
|
+
itemLabelRender: G,
|
|
56
57
|
itemRender: M,
|
|
57
|
-
inCombobox:
|
|
58
|
+
inCombobox: T,
|
|
58
59
|
onOpenChange: w,
|
|
59
60
|
classNames: {
|
|
60
61
|
item: o?.item,
|
|
@@ -64,16 +65,16 @@ const Co = ({
|
|
|
64
65
|
groupLabel: o?.groupLabel,
|
|
65
66
|
divider: o?.divider
|
|
66
67
|
}
|
|
67
|
-
}),
|
|
68
|
-
() => n ? /* @__PURE__ */
|
|
69
|
-
|
|
68
|
+
}), z = F(
|
|
69
|
+
() => n ? /* @__PURE__ */ m(
|
|
70
|
+
i,
|
|
70
71
|
{
|
|
71
72
|
className: e("dropdown-menu-container"),
|
|
72
73
|
disablePointerSelection: n,
|
|
73
74
|
defaultValue: l ? String(l) : void 0,
|
|
74
75
|
children: [
|
|
75
|
-
/* @__PURE__ */ r(q.Provider, { value: {}, children: /* @__PURE__ */
|
|
76
|
-
|
|
76
|
+
/* @__PURE__ */ r(q.Provider, { value: {}, children: /* @__PURE__ */ L(
|
|
77
|
+
i.Input,
|
|
77
78
|
{
|
|
78
79
|
...g,
|
|
79
80
|
key: "search",
|
|
@@ -87,17 +88,17 @@ const Co = ({
|
|
|
87
88
|
)
|
|
88
89
|
}
|
|
89
90
|
) }),
|
|
90
|
-
|
|
91
|
-
/* @__PURE__ */ r(
|
|
92
|
-
/* @__PURE__ */ r(
|
|
91
|
+
d,
|
|
92
|
+
/* @__PURE__ */ r(P, { fadeEdges: !0, children: /* @__PURE__ */ m(i.List, { className: e("dropdown-menu-list"), children: [
|
|
93
|
+
/* @__PURE__ */ r(i.Empty, { className: e("dropdown-menu-empty"), children: "No results found." }),
|
|
93
94
|
u.map(a)
|
|
94
95
|
] }) }),
|
|
95
96
|
p
|
|
96
97
|
]
|
|
97
98
|
}
|
|
98
|
-
) : /* @__PURE__ */
|
|
99
|
-
|
|
100
|
-
/* @__PURE__ */ r(
|
|
99
|
+
) : /* @__PURE__ */ m("div", { className: e("dropdown-menu-container"), children: [
|
|
100
|
+
d,
|
|
101
|
+
/* @__PURE__ */ r(P, { fadeEdges: !0, children: u.map(a) }),
|
|
101
102
|
p
|
|
102
103
|
] }),
|
|
103
104
|
[
|
|
@@ -105,38 +106,42 @@ const Co = ({
|
|
|
105
106
|
e,
|
|
106
107
|
l,
|
|
107
108
|
g,
|
|
108
|
-
|
|
109
|
+
d,
|
|
109
110
|
u,
|
|
110
111
|
p,
|
|
111
112
|
a
|
|
112
113
|
]
|
|
113
114
|
), t = n ? W : U;
|
|
114
|
-
return /* @__PURE__ */
|
|
115
|
+
return /* @__PURE__ */ m(
|
|
115
116
|
t.Root,
|
|
116
117
|
{
|
|
117
|
-
openOnHover:
|
|
118
|
-
open:
|
|
118
|
+
openOnHover: N,
|
|
119
|
+
open: V,
|
|
119
120
|
onOpenChange: w,
|
|
120
121
|
children: [
|
|
121
122
|
/* @__PURE__ */ r(
|
|
122
123
|
t.Trigger,
|
|
123
124
|
{
|
|
124
|
-
render:
|
|
125
|
-
ref:
|
|
125
|
+
render: x,
|
|
126
|
+
ref: _,
|
|
126
127
|
className: c(
|
|
127
128
|
e("dropdown-menu-trigger"),
|
|
128
129
|
o?.trigger,
|
|
129
|
-
|
|
130
|
+
h
|
|
130
131
|
)
|
|
131
132
|
}
|
|
132
133
|
),
|
|
133
134
|
/* @__PURE__ */ r(t.Portal, { children: /* @__PURE__ */ r(
|
|
134
135
|
t.Positioner,
|
|
135
136
|
{
|
|
136
|
-
side:
|
|
137
|
-
align:
|
|
137
|
+
side: v.side,
|
|
138
|
+
align: v.align,
|
|
138
139
|
sideOffset: 4,
|
|
139
|
-
className: c(
|
|
140
|
+
className: c(
|
|
141
|
+
e("dropdown-menu-root"),
|
|
142
|
+
h,
|
|
143
|
+
o?.root
|
|
144
|
+
),
|
|
140
145
|
collisionAvoidance: X,
|
|
141
146
|
children: /* @__PURE__ */ r(
|
|
142
147
|
t.Popup,
|
|
@@ -147,14 +152,13 @@ const Co = ({
|
|
|
147
152
|
C && "dropdown-menu-show-checkbox",
|
|
148
153
|
R && "dropdown-menu-match-trigger-width"
|
|
149
154
|
),
|
|
150
|
-
|
|
151
|
-
o?.popup
|
|
152
|
-
v
|
|
155
|
+
E,
|
|
156
|
+
o?.popup
|
|
153
157
|
),
|
|
154
158
|
style: {
|
|
155
|
-
"--size-width": s in
|
|
159
|
+
"--size-width": s in I ? I[s] : void 0
|
|
156
160
|
},
|
|
157
|
-
children:
|
|
161
|
+
children: z()
|
|
158
162
|
}
|
|
159
163
|
)
|
|
160
164
|
}
|
|
@@ -164,6 +168,6 @@ const Co = ({
|
|
|
164
168
|
);
|
|
165
169
|
};
|
|
166
170
|
export {
|
|
167
|
-
|
|
171
|
+
wo as DropdownMenu
|
|
168
172
|
};
|
|
169
173
|
//# sourceMappingURL=component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../../src/components/dropdown-menu/component.tsx"],"sourcesContent":["\"use client\";\nimport { Menu } from \"@base-ui-components/react/menu\";\nimport { Popover } from \"@base-ui-components/react/popover\";\nimport { type PopoverProps } from \"antd/es/popover\";\nimport { useCallback, useRef } from \"react\";\nimport {\n clsx,\n DROPDOWN_COLLISION_AVOIDANCE,\n parseAntdPlacement,\n useAntdCssVarClassname,\n useCls,\n} from \"../utils\";\nimport { Command } from \"../cmdk\";\nimport { ScrollArea } from \"../scroll-area\";\nimport { FormItemInputContext } from \"antd/es/form/context\";\n\n// Import component-specific styles\nimport { Input } from \"../input\";\nimport { PopupPanelSize } from \"../popup-panel/constants\";\n\nimport { DropdownMenuItemType } from \"./types\";\nimport { useDropdownMenu, UseDropdownMenuProps } from \"./useDropdownMenu\";\nimport { useControlledState } from \"../hooks\";\n\nimport \"./style.css\";\n\nexport interface DropdownMenuProps\n extends Omit<UseDropdownMenuProps, \"classNames\"> {\n /** Array of menu items to be displayed in the dropdown */\n items: DropdownMenuItemType[];\n /** Custom render function for the trigger element */\n children?: React.ComponentProps<typeof Menu.Trigger>[\"render\"];\n /**\n * Placement of the dropdown relative to the trigger element\n * @default \"bottomLeft\"\n */\n placement?: PopoverProps[\"placement\"];\n /**\n * Whether to open the dropdown on hover instead of click\n * @default false\n */\n openOnHover?: boolean;\n /**\n * Controlled open state of the dropdown\n */\n open?: boolean;\n /**\n * Callback fired when the dropdown open state changes\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Default open state of the dropdown\n */\n defaultOpen?: boolean;\n /**\n * Additional CSS class for the dropdown component\n */\n className?: string;\n /**\n * Custom class names for different parts of the dropdown\n * @default {}\n */\n classNames?: {\n root?: string;\n trigger?: string;\n popup?: string;\n itemIcon?: string;\n itemText?: string;\n positioner?: string;\n } & UseDropdownMenuProps[\"classNames\"];\n\n /**\n * Whether to show search input\n * @default false\n */\n showSearch?: boolean;\n /**\n * Size of the dropdown menu\n * @default \"auto\"\n */\n size?: \"auto\" | keyof typeof PopupPanelSize;\n /**\n * Search placeholder\n */\n searchProps?: Omit<\n React.ComponentProps<typeof Command.Input>,\n \"size\" | \"ref\"\n >;\n /**\n * Whether to match the width of the popup with the trigger\n * @default false\n */\n popupMatchTriggerWidth?: boolean;\n /**\n * Content to display before the list\n */\n beforeList?: React.ReactNode;\n /**\n * Content to display after the list\n */\n afterList?: React.ReactNode;\n}\n\nexport const DropdownMenu = ({\n children,\n items,\n placement,\n openOnHover,\n open: outsideOpen,\n onOpenChange: outsideOnOpenChange,\n defaultOpen,\n className,\n itemRender,\n classNames,\n size = \"auto\",\n showSearch,\n inCombobox: inComboboxProp,\n searchProps = {\n placeholder: \"Search...\",\n },\n popupMatchTriggerWidth,\n beforeList,\n afterList,\n keepOpenOnSelect,\n highlightedItemKey,\n selectedItemKeys,\n getItemKeywords,\n showCheckbox,\n itemLabelRender,\n}: DropdownMenuProps) => {\n const inCombobox =\n typeof inComboboxProp === \"boolean\" ? inComboboxProp : showSearch;\n const [open, onOpenChange] = useControlledState(\n outsideOpen,\n outsideOnOpenChange,\n defaultOpen\n );\n const cls = useCls();\n const antdCssVarClassname = useAntdCssVarClassname();\n const baseUIPlacement = parseAntdPlacement(placement);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const { itemGroups, renderGroup } = useDropdownMenu({\n items,\n keepOpenOnSelect,\n highlightedItemKey,\n selectedItemKeys,\n showCheckbox,\n getItemKeywords,\n itemLabelRender,\n itemRender,\n inCombobox,\n onOpenChange,\n classNames: {\n item: classNames?.item,\n itemIcon: classNames?.itemIcon,\n itemSuffix: classNames?.itemSuffix,\n group: classNames?.group,\n groupLabel: classNames?.groupLabel,\n divider: classNames?.divider,\n },\n });\n const renderMenuInner = useCallback(\n () =>\n showSearch ? (\n <Command\n className={cls(\"dropdown-menu-container\")}\n disablePointerSelection={showSearch}\n defaultValue={\n highlightedItemKey ? String(highlightedItemKey) : undefined\n }\n // filter={(value, search, keywords) => {\n // console.log({ value, search, keywords });\n // const extendValue = value + \" \" + keywords.join(\" \");\n // if (extendValue.toLowerCase().includes(search.toLowerCase()))\n // return 1;\n // return 0;\n // }}\n >\n <FormItemInputContext.Provider value={{}}>\n <Command.Input\n {...searchProps}\n key=\"search\"\n render={\n <Input\n allowClear\n className={cls(\"dropdown-menu-search\")}\n placeholder=\"Search\"\n />\n }\n />\n </FormItemInputContext.Provider>\n {beforeList}\n <ScrollArea fadeEdges>\n <Command.List className={cls(\"dropdown-menu-list\")}>\n <Command.Empty className={cls(\"dropdown-menu-empty\")}>\n No results found.\n </Command.Empty>\n {itemGroups.map(renderGroup)}\n </Command.List>\n </ScrollArea>\n {afterList}\n </Command>\n ) : (\n <div className={cls(\"dropdown-menu-container\")}>\n {beforeList}\n <ScrollArea fadeEdges>{itemGroups.map(renderGroup)}</ScrollArea>\n {afterList}\n </div>\n ),\n [\n showSearch,\n cls,\n highlightedItemKey,\n searchProps,\n beforeList,\n itemGroups,\n afterList,\n renderGroup,\n ]\n );\n const BaseComponent = showSearch ? Popover : Menu;\n\n return (\n <BaseComponent.Root\n openOnHover={openOnHover}\n open={open}\n onOpenChange={onOpenChange}\n >\n <BaseComponent.Trigger\n render={children}\n ref={buttonRef}\n className={clsx(\n cls(\"dropdown-menu-trigger\"),\n classNames?.trigger,\n antdCssVarClassname\n )}\n />\n <BaseComponent.Portal>\n <BaseComponent.Positioner\n side={baseUIPlacement.side}\n align={baseUIPlacement.align}\n sideOffset={4}\n className={clsx(cls(\"dropdown-menu-root\"), classNames?.root)}\n collisionAvoidance={DROPDOWN_COLLISION_AVOIDANCE}\n >\n <BaseComponent.Popup\n className={clsx(\n cls(\n \"dropdown-menu\",\n showCheckbox && \"dropdown-menu-show-checkbox\",\n popupMatchTriggerWidth && \"dropdown-menu-match-trigger-width\"\n ),\n className,\n classNames?.popup,\n antdCssVarClassname\n )}\n style={\n {\n \"--size-width\":\n size in PopupPanelSize ? PopupPanelSize[size] : undefined,\n } as React.CSSProperties\n }\n >\n {renderMenuInner()}\n </BaseComponent.Popup>\n </BaseComponent.Positioner>\n </BaseComponent.Portal>\n </BaseComponent.Root>\n );\n};\n"],"names":["DropdownMenu","children","items","placement","openOnHover","outsideOpen","outsideOnOpenChange","defaultOpen","className","itemRender","classNames","size","showSearch","inComboboxProp","searchProps","popupMatchTriggerWidth","beforeList","afterList","keepOpenOnSelect","highlightedItemKey","selectedItemKeys","getItemKeywords","showCheckbox","itemLabelRender","inCombobox","open","onOpenChange","useControlledState","cls","useCls","antdCssVarClassname","useAntdCssVarClassname","baseUIPlacement","parseAntdPlacement","buttonRef","useRef","itemGroups","renderGroup","useDropdownMenu","renderMenuInner","useCallback","jsxs","Command","jsx","FormItemInputContext","createElement","Input","ScrollArea","BaseComponent","Popover","Menu","clsx","DROPDOWN_COLLISION_AVOIDANCE","PopupPanelSize"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../src/components/dropdown-menu/component.tsx"],"sourcesContent":["\"use client\";\nimport { Menu } from \"@base-ui-components/react/menu\";\nimport { Popover } from \"@base-ui-components/react/popover\";\nimport { type PopoverProps } from \"antd/es/popover\";\nimport { useCallback, useRef } from \"react\";\nimport {\n clsx,\n DROPDOWN_COLLISION_AVOIDANCE,\n parseAntdPlacement,\n useAntdCssVarClassname,\n useCls,\n} from \"../utils\";\nimport { Command } from \"../cmdk\";\nimport { ScrollArea } from \"../scroll-area\";\nimport { FormItemInputContext } from \"antd/es/form/context\";\n\n// Import component-specific styles\nimport { Input } from \"../input\";\nimport { PopupPanelSize } from \"../popup-panel/constants\";\n\nimport { DropdownMenuItemType } from \"./types\";\nimport { useDropdownMenu, UseDropdownMenuProps } from \"./useDropdownMenu\";\nimport { useControlledState } from \"../hooks\";\n\nimport \"./style.css\";\nimport { useTheme } from \"../theme-provider\";\n\nexport interface DropdownMenuProps\n extends Omit<UseDropdownMenuProps, \"classNames\"> {\n /** Array of menu items to be displayed in the dropdown */\n items: DropdownMenuItemType[];\n /** Custom render function for the trigger element */\n children?: React.ComponentProps<typeof Menu.Trigger>[\"render\"];\n /**\n * Placement of the dropdown relative to the trigger element\n * @default \"bottomLeft\"\n */\n placement?: PopoverProps[\"placement\"];\n /**\n * Whether to open the dropdown on hover instead of click\n * @default false\n */\n openOnHover?: boolean;\n /**\n * Controlled open state of the dropdown\n */\n open?: boolean;\n /**\n * Callback fired when the dropdown open state changes\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Default open state of the dropdown\n */\n defaultOpen?: boolean;\n /**\n * Additional CSS class for the dropdown component\n */\n className?: string;\n /**\n * Custom class names for different parts of the dropdown\n * @default {}\n */\n classNames?: {\n root?: string;\n trigger?: string;\n popup?: string;\n itemIcon?: string;\n itemText?: string;\n positioner?: string;\n } & UseDropdownMenuProps[\"classNames\"];\n\n /**\n * Whether to show search input\n * @default false\n */\n showSearch?: boolean;\n /**\n * Size of the dropdown menu\n * @default \"auto\"\n */\n size?: \"auto\" | keyof typeof PopupPanelSize;\n /**\n * Search placeholder\n */\n searchProps?: Omit<\n React.ComponentProps<typeof Command.Input>,\n \"size\" | \"ref\"\n >;\n /**\n * Whether to match the width of the popup with the trigger\n * @default false\n */\n popupMatchTriggerWidth?: boolean;\n /**\n * Content to display before the list\n */\n beforeList?: React.ReactNode;\n /**\n * Content to display after the list\n */\n afterList?: React.ReactNode;\n}\n\nexport const DropdownMenu = ({\n children,\n items,\n placement,\n openOnHover,\n open: outsideOpen,\n onOpenChange: outsideOnOpenChange,\n defaultOpen,\n className,\n itemRender,\n classNames,\n size = \"auto\",\n showSearch,\n inCombobox: inComboboxProp,\n searchProps = {\n placeholder: \"Search...\",\n },\n popupMatchTriggerWidth,\n beforeList,\n afterList,\n keepOpenOnSelect,\n highlightedItemKey,\n selectedItemKeys,\n getItemKeywords,\n showCheckbox,\n itemLabelRender,\n}: DropdownMenuProps) => {\n const inCombobox =\n typeof inComboboxProp === \"boolean\" ? inComboboxProp : showSearch;\n const [open, onOpenChange] = useControlledState(\n outsideOpen,\n outsideOnOpenChange,\n defaultOpen\n );\n const cls = useCls();\n const { className: themeClassName } = useTheme();\n const baseUIPlacement = parseAntdPlacement(placement);\n const buttonRef = useRef<HTMLButtonElement>(null);\n const { itemGroups, renderGroup } = useDropdownMenu({\n items,\n keepOpenOnSelect,\n highlightedItemKey,\n selectedItemKeys,\n showCheckbox,\n getItemKeywords,\n itemLabelRender,\n itemRender,\n inCombobox,\n onOpenChange,\n classNames: {\n item: classNames?.item,\n itemIcon: classNames?.itemIcon,\n itemSuffix: classNames?.itemSuffix,\n group: classNames?.group,\n groupLabel: classNames?.groupLabel,\n divider: classNames?.divider,\n },\n });\n const renderMenuInner = useCallback(\n () =>\n showSearch ? (\n <Command\n className={cls(\"dropdown-menu-container\")}\n disablePointerSelection={showSearch}\n defaultValue={\n highlightedItemKey ? String(highlightedItemKey) : undefined\n }\n // filter={(value, search, keywords) => {\n // console.log({ value, search, keywords });\n // const extendValue = value + \" \" + keywords.join(\" \");\n // if (extendValue.toLowerCase().includes(search.toLowerCase()))\n // return 1;\n // return 0;\n // }}\n >\n <FormItemInputContext.Provider value={{}}>\n <Command.Input\n {...searchProps}\n key=\"search\"\n render={\n <Input\n allowClear\n className={cls(\"dropdown-menu-search\")}\n placeholder=\"Search\"\n />\n }\n />\n </FormItemInputContext.Provider>\n {beforeList}\n <ScrollArea fadeEdges>\n <Command.List className={cls(\"dropdown-menu-list\")}>\n <Command.Empty className={cls(\"dropdown-menu-empty\")}>\n No results found.\n </Command.Empty>\n {itemGroups.map(renderGroup)}\n </Command.List>\n </ScrollArea>\n {afterList}\n </Command>\n ) : (\n <div className={cls(\"dropdown-menu-container\")}>\n {beforeList}\n <ScrollArea fadeEdges>{itemGroups.map(renderGroup)}</ScrollArea>\n {afterList}\n </div>\n ),\n [\n showSearch,\n cls,\n highlightedItemKey,\n searchProps,\n beforeList,\n itemGroups,\n afterList,\n renderGroup,\n ]\n );\n const BaseComponent = showSearch ? Popover : Menu;\n\n return (\n <BaseComponent.Root\n openOnHover={openOnHover}\n open={open}\n onOpenChange={onOpenChange}\n >\n <BaseComponent.Trigger\n render={children}\n ref={buttonRef}\n className={clsx(\n cls(\"dropdown-menu-trigger\"),\n classNames?.trigger,\n themeClassName\n )}\n />\n <BaseComponent.Portal>\n <BaseComponent.Positioner\n side={baseUIPlacement.side}\n align={baseUIPlacement.align}\n sideOffset={4}\n className={clsx(\n cls(\"dropdown-menu-root\"),\n themeClassName,\n classNames?.root\n )}\n collisionAvoidance={DROPDOWN_COLLISION_AVOIDANCE}\n >\n <BaseComponent.Popup\n className={clsx(\n cls(\n \"dropdown-menu\",\n showCheckbox && \"dropdown-menu-show-checkbox\",\n popupMatchTriggerWidth && \"dropdown-menu-match-trigger-width\"\n ),\n className,\n classNames?.popup\n )}\n style={\n {\n \"--size-width\":\n size in PopupPanelSize ? PopupPanelSize[size] : undefined,\n } as React.CSSProperties\n }\n >\n {renderMenuInner()}\n </BaseComponent.Popup>\n </BaseComponent.Positioner>\n </BaseComponent.Portal>\n </BaseComponent.Root>\n );\n};\n"],"names":["DropdownMenu","children","items","placement","openOnHover","outsideOpen","outsideOnOpenChange","defaultOpen","className","itemRender","classNames","size","showSearch","inComboboxProp","searchProps","popupMatchTriggerWidth","beforeList","afterList","keepOpenOnSelect","highlightedItemKey","selectedItemKeys","getItemKeywords","showCheckbox","itemLabelRender","inCombobox","open","onOpenChange","useControlledState","cls","useCls","themeClassName","useTheme","baseUIPlacement","parseAntdPlacement","buttonRef","useRef","itemGroups","renderGroup","useDropdownMenu","renderMenuInner","useCallback","jsxs","Command","jsx","FormItemInputContext","createElement","Input","ScrollArea","BaseComponent","Popover","Menu","clsx","DROPDOWN_COLLISION_AVOIDANCE","PopupPanelSize"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/ds-root/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/ds-root/component.tsx"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAOrC,OAAO,aAAa,CAAC;AAErB,MAAM,WAAW,WAAY,SAAQ,kBAAkB;IACrD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;CACxC;AAED,eAAO,MAAM,MAAM,GAAI,2DAMpB,WAAW,4CAYb,CAAC"}
|
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
2
|
+
import { jsx as r, jsxs as l } from "react/jsx-runtime";
|
|
3
3
|
import { ThemeProvider as c } from "../theme-provider/component.js";
|
|
4
4
|
import { Modal as d } from "../modal/index.js";
|
|
5
|
-
import
|
|
6
|
-
import { DSRootContextProvider as f } from "./context.js";
|
|
5
|
+
import f from "antd/es/app/App";
|
|
7
6
|
import './style.css';/* empty css */
|
|
8
|
-
import { Toast as
|
|
9
|
-
import { useCls as
|
|
7
|
+
import { Toast as o } from "../toast/component.js";
|
|
8
|
+
import { useCls as n } from "../utils/antdUtils.js";
|
|
10
9
|
import { clsx as h } from "../utils/cn.js";
|
|
11
|
-
const
|
|
12
|
-
className:
|
|
13
|
-
appendClassesTo:
|
|
14
|
-
children:
|
|
15
|
-
theme:
|
|
10
|
+
const C = ({
|
|
11
|
+
className: m,
|
|
12
|
+
appendClassesTo: t = "html",
|
|
13
|
+
children: i,
|
|
14
|
+
theme: e,
|
|
16
15
|
...s
|
|
17
16
|
}) => {
|
|
18
|
-
const
|
|
19
|
-
return /* @__PURE__ */
|
|
20
|
-
/* @__PURE__ */ o
|
|
21
|
-
/* @__PURE__ */
|
|
22
|
-
] }) }) })
|
|
17
|
+
const p = n();
|
|
18
|
+
return /* @__PURE__ */ r(c, { theme: e, ...s, appendClassesTo: t, children: /* @__PURE__ */ r(o.Provider, { children: /* @__PURE__ */ l(d.Provider, { children: [
|
|
19
|
+
/* @__PURE__ */ r(o.List, {}),
|
|
20
|
+
/* @__PURE__ */ r(f, { className: h(p("root"), m), children: i })
|
|
21
|
+
] }) }) });
|
|
23
22
|
};
|
|
24
23
|
export {
|
|
25
|
-
|
|
24
|
+
C as DSRoot
|
|
26
25
|
};
|
|
27
26
|
//# sourceMappingURL=component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../../src/components/ds-root/component.tsx"],"sourcesContent":["\"use client\";\nimport {\n ThemeProvider,\n type ThemeProviderProps,\n} from \"../theme-provider/component\";\nimport { Toast } from \"../toast\";\nimport { Modal } from \"../modal\";\nimport App from \"antd/es/app/App\";\nimport {
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../src/components/ds-root/component.tsx"],"sourcesContent":["\"use client\";\nimport {\n ThemeProvider,\n type ThemeProviderProps,\n} from \"../theme-provider/component\";\nimport { Toast } from \"../toast\";\nimport { Modal } from \"../modal\";\nimport App from \"antd/es/app/App\";\nimport { useCls, clsx } from \"../utils\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport interface DSRootProps extends ThemeProviderProps {\n /**\n * Classname passed to App component\n */\n className?: string;\n\n /**\n * Element to which the theme classes are appended\n * @default \"html\"\n */\n appendClassesTo?: string | HTMLElement;\n}\n\nexport const DSRoot = ({\n className,\n appendClassesTo = \"html\",\n children,\n theme,\n ...props\n}: DSRootProps) => {\n const cls = useCls();\n return (\n <ThemeProvider theme={theme} {...props} appendClassesTo={appendClassesTo}>\n <Toast.Provider>\n <Modal.Provider>\n <Toast.List />\n <App className={clsx(cls(\"root\"), className)}>{children}</App>\n </Modal.Provider>\n </Toast.Provider>\n </ThemeProvider>\n );\n};\n"],"names":["DSRoot","className","appendClassesTo","children","theme","props","cls","useCls","jsx","ThemeProvider","Toast","jsxs","Modal","App","clsx"],"mappings":";;;;;;;;;AA0BO,MAAMA,IAAS,CAAC;AAAA,EACrB,WAAAC;AAAA,EACA,iBAAAC,IAAkB;AAAA,EAClB,UAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,MAAmB;AACjB,QAAMC,IAAMC,EAAA;AACZ,SACE,gBAAAC,EAACC,GAAA,EAAc,OAAAL,GAAe,GAAGC,GAAO,iBAAAH,GACtC,UAAA,gBAAAM,EAACE,EAAM,UAAN,EACC,UAAA,gBAAAC,EAACC,EAAM,UAAN,EACC,UAAA;AAAA,IAAA,gBAAAJ,EAACE,EAAM,MAAN,EAAW;AAAA,IACZ,gBAAAF,EAACK,KAAI,WAAWC,EAAKR,EAAI,MAAM,GAAGL,CAAS,GAAI,UAAAE,EAAA,CAAS;AAAA,EAAA,EAAA,CAC1D,GACF,GACF;AAEJ;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.d.ts","sourceRoot":"","sources":["../../../src/components/ds-root/hook.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK;;;CAEjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hook.js","sources":["../../../src/components/ds-root/hook.ts"],"sourcesContent":["\"use client\";\nimport { useTheme } from \"../theme-provider\";\n\nexport const useDS = () => {\n return useTheme();\n};\n"],"names":["useDS","useTheme"],"mappings":";;AAGO,MAAMA,IAAQ,MACZC,EAAA;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ds-root/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ds-root/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/field/component.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAqB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/field/component.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAqB,MAAM,OAAO,CAAC;AAKxD,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3C,KAAK,OAAO,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SAAS,OAAO,GACjD,QAAQ,GACR,CAAC,SAAS,QAAQ,GAClB,cAAc,GACd,KAAK,CAAC;AAEV,UAAU,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACnE,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,KAAK,eAAe,GAAG,cAAc,GAAG;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,KAAK,gBAAgB,GAAG,cAAc,GAAG;IACvC,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,SAAS,GAAG,OAAO,IAAI,CAAC,SAAS,OAAO,GACrE,eAAe,GACf,gBAAgB,CAAC;AAErB;;GAEG;AACH,QAAA,MAAM,UAAU,GAAI,CAAC,SAAS,SAAS,EACrC,kDAOG,UAAU,CAAC,CAAC,CAAC,EAChB,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,4CA0B9B,CAAC;AAEF,eAAO,MAAM,KAAK,EAA6B,CAAC,CAAC,SAAS,SAAS,EACjE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,KACtD,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -1,31 +1,32 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsxs as
|
|
3
|
-
import { Select as
|
|
4
|
-
import { forwardRef as
|
|
2
|
+
import { jsxs as m, jsx as n } from "react/jsx-runtime";
|
|
3
|
+
import { Select as d, Input as f } from "antd";
|
|
4
|
+
import { forwardRef as h, useId as x } from "react";
|
|
5
5
|
import './style.css';/* empty css */
|
|
6
|
-
import { useCls as I
|
|
6
|
+
import { useCls as I } from "../utils/antdUtils.js";
|
|
7
|
+
import { useTheme as N } from "../theme-provider/context/themeStore.js";
|
|
7
8
|
import { clsx as F } from "../utils/cn.js";
|
|
8
9
|
const j = ({
|
|
9
|
-
label:
|
|
10
|
-
className:
|
|
11
|
-
size:
|
|
12
|
-
colon:
|
|
13
|
-
type:
|
|
14
|
-
...
|
|
15
|
-
},
|
|
16
|
-
const
|
|
10
|
+
label: r,
|
|
11
|
+
className: c,
|
|
12
|
+
size: t = "small",
|
|
13
|
+
colon: i = !0,
|
|
14
|
+
type: p = "input",
|
|
15
|
+
...s
|
|
16
|
+
}, o) => {
|
|
17
|
+
const l = I(), e = x(), { className: u } = N(), a = () => p === "select" ? (
|
|
17
18
|
// @ts-expect-error: this is a workaround for the type error
|
|
18
|
-
/* @__PURE__ */
|
|
19
|
-
) : /* @__PURE__ */
|
|
20
|
-
return /* @__PURE__ */
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
/* @__PURE__ */ n(d, { id: e, ref: o, size: t, ...s.selectProps || {} })
|
|
20
|
+
) : /* @__PURE__ */ n(f, { id: e, ref: o, size: t, ...s.inputProps || {} });
|
|
21
|
+
return /* @__PURE__ */ m("div", { className: F(l("field"), u, c), children: [
|
|
22
|
+
r && /* @__PURE__ */ m("label", { htmlFor: e, className: l("field-label"), children: [
|
|
23
|
+
r,
|
|
24
|
+
i ? ":" : ""
|
|
24
25
|
] }),
|
|
25
|
-
|
|
26
|
+
a()
|
|
26
27
|
] });
|
|
27
|
-
},
|
|
28
|
+
}, R = h(j);
|
|
28
29
|
export {
|
|
29
|
-
|
|
30
|
+
R as Field
|
|
30
31
|
};
|
|
31
32
|
//# sourceMappingURL=component.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../../src/components/field/component.tsx"],"sourcesContent":["\"use client\";\nimport type { InputProps, InputRef, SelectProps } from \"antd\";\nimport { Input, Select } from \"antd\";\nimport { SizeType } from \"antd/es/config-provider/SizeContext\";\nimport { RefSelectProps } from \"antd/es/select\";\nimport { ForwardedRef, forwardRef, useId } from \"react\";\nimport { clsx, useCls
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../src/components/field/component.tsx"],"sourcesContent":["\"use client\";\nimport type { InputProps, InputRef, SelectProps } from \"antd\";\nimport { Input, Select } from \"antd\";\nimport { SizeType } from \"antd/es/config-provider/SizeContext\";\nimport { RefSelectProps } from \"antd/es/select\";\nimport { ForwardedRef, forwardRef, useId } from \"react\";\nimport { clsx, useCls } from \"../utils\";\nimport { useTheme } from \"../theme-provider\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport type FieldType = \"input\" | \"select\";\n\ntype RefType<T extends FieldType> = T extends \"input\"\n ? InputRef\n : T extends \"select\"\n ? RefSelectProps\n : never;\n\ninterface BaseFieldProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: React.ReactNode;\n /**\n * Block or inline display\n * @default false\n */\n block?: boolean;\n /**\n * Size of the field\n * @default \"small\"\n */\n size?: SizeType;\n /**\n * Colon after label\n * @default true\n */\n colon?: boolean;\n}\n\ntype InputFieldProps = BaseFieldProps & {\n type?: \"input\";\n inputProps: InputProps;\n};\n\ntype SelectFieldProps = BaseFieldProps & {\n type: \"select\";\n selectProps: SelectProps;\n};\n\nexport type FieldProps<T extends FieldType = \"input\"> = T extends \"input\"\n ? InputFieldProps\n : SelectFieldProps;\n\n/**\n * Generic Field component that forwards ref to Input or Select\n */\nconst FieldInner = <T extends FieldType>(\n {\n label,\n className,\n size = \"small\",\n colon = true,\n type = \"input\",\n ...rest\n }: FieldProps<T>,\n ref: ForwardedRef<RefType<T>>\n) => {\n const cls = useCls();\n const id = useId();\n const { className: themeClassName } = useTheme();\n const renderInputOrSelect = () => {\n if (type === \"select\") {\n return (\n // @ts-expect-error: this is a workaround for the type error\n <Select id={id} ref={ref} size={size} {...(rest.selectProps || {})} />\n );\n }\n // @ts-expect-error: this is a workaround for the type error\n return <Input id={id} ref={ref} size={size} {...(rest.inputProps || {})} />;\n };\n return (\n <div className={clsx(cls(\"field\"), themeClassName, className)}>\n {label && (\n <label htmlFor={id} className={cls(\"field-label\")}>\n {label}\n {colon ? \":\" : \"\"}\n </label>\n )}\n {renderInputOrSelect()}\n </div>\n );\n};\n\nexport const Field = forwardRef(FieldInner) as <T extends FieldType>(\n props: FieldProps<T> & { ref?: ForwardedRef<RefType<T>> }\n) => ReturnType<typeof FieldInner<T>>;\n"],"names":["FieldInner","label","className","size","colon","type","rest","ref","cls","useCls","id","useId","themeClassName","useTheme","renderInputOrSelect","jsx","Select","Input","jsxs","clsx","Field","forwardRef"],"mappings":";;;;;;;;AAwDA,MAAMA,IAAa,CACjB;AAAA,EACE,OAAAC;AAAA,EACA,WAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,OAAAC,IAAQ;AAAA,EACR,MAAAC,IAAO;AAAA,EACP,GAAGC;AACL,GACAC,MACG;AACH,QAAMC,IAAMC,EAAA,GACNC,IAAKC,EAAA,GACL,EAAE,WAAWC,EAAA,IAAmBC,EAAA,GAChCC,IAAsB,MACtBT,MAAS;AAAA;AAAA,IAGT,gBAAAU,EAACC,KAAO,IAAAN,GAAQ,KAAAH,GAAU,MAAAJ,GAAa,GAAIG,EAAK,eAAe,GAAC,CAAI;AAAA,MAIjE,gBAAAS,EAACE,KAAM,IAAAP,GAAQ,KAAAH,GAAU,MAAAJ,GAAa,GAAIG,EAAK,cAAc,CAAA,GAAK;AAE3E,SACE,gBAAAY,EAAC,SAAI,WAAWC,EAAKX,EAAI,OAAO,GAAGI,GAAgBV,CAAS,GACzD,UAAA;AAAA,IAAAD,uBACE,SAAA,EAAM,SAASS,GAAI,WAAWF,EAAI,aAAa,GAC7C,UAAA;AAAA,MAAAP;AAAA,MACAG,IAAQ,MAAM;AAAA,IAAA,GACjB;AAAA,IAEDU,EAAA;AAAA,EAAoB,GACvB;AAEJ,GAEaM,IAAQC,EAAWrB,CAAU;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useBreakpoint.d.ts","sourceRoot":"","sources":["../../../src/components/hooks/useBreakpoint.ts"],"names":[],"mappings":"AAGA,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAE5D,eAAO,MAAM,WAAW;;;;;;CAMvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,aAAa,GAAI,gBAAe,UAAiB;;
|
|
1
|
+
{"version":3,"file":"useBreakpoint.d.ts","sourceRoot":"","sources":["../../../src/components/hooks/useBreakpoint.ts"],"names":[],"mappings":"AAGA,KAAK,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAE5D,eAAO,MAAM,WAAW;;;;;;CAMvB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,aAAa,GAAI,gBAAe,UAAiB;;aAmErD,UAAU;eAaV,UAAU;qBAaP,UAAU,SAAS,UAAU;eAoBhC,UAAU;CAqClB,CAAC"}
|