@coreui/react-data-grid 0.1.0-rc.0
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/LICENSE +3 -0
- package/README.md +33 -0
- package/dist/cjs/CDataGrid.d.ts +8 -0
- package/dist/cjs/CDataGrid.js +903 -0
- package/dist/cjs/CDataGrid.js.map +1 -0
- package/dist/cjs/CDataGridBody.d.ts +40 -0
- package/dist/cjs/CDataGridBody.js +144 -0
- package/dist/cjs/CDataGridBody.js.map +1 -0
- package/dist/cjs/CDataGridCellEditor.d.ts +8 -0
- package/dist/cjs/CDataGridCellEditor.js +67 -0
- package/dist/cjs/CDataGridCellEditor.js.map +1 -0
- package/dist/cjs/CDataGridColumnChooser.d.ts +23 -0
- package/dist/cjs/CDataGridColumnChooser.js +71 -0
- package/dist/cjs/CDataGridColumnChooser.js.map +1 -0
- package/dist/cjs/CDataGridFilterMenu.d.ts +22 -0
- package/dist/cjs/CDataGridFilterMenu.js +177 -0
- package/dist/cjs/CDataGridFilterMenu.js.map +1 -0
- package/dist/cjs/CDataGridHeader.d.ts +36 -0
- package/dist/cjs/CDataGridHeader.js +232 -0
- package/dist/cjs/CDataGridHeader.js.map +1 -0
- package/dist/cjs/CDataGridHeaderMenu.d.ts +29 -0
- package/dist/cjs/CDataGridHeaderMenu.js +127 -0
- package/dist/cjs/CDataGridHeaderMenu.js.map +1 -0
- package/dist/cjs/CDataGridPagination.d.ts +18 -0
- package/dist/cjs/CDataGridPagination.js +39 -0
- package/dist/cjs/CDataGridPagination.js.map +1 -0
- package/dist/cjs/CDataGridToolbar.d.ts +32 -0
- package/dist/cjs/CDataGridToolbar.js +49 -0
- package/dist/cjs/CDataGridToolbar.js.map +1 -0
- package/dist/cjs/active-cell.d.ts +22 -0
- package/dist/cjs/active-cell.js +89 -0
- package/dist/cjs/active-cell.js.map +1 -0
- package/dist/cjs/columns.d.ts +37 -0
- package/dist/cjs/columns.js +170 -0
- package/dist/cjs/columns.js.map +1 -0
- package/dist/cjs/icons.d.ts +22 -0
- package/dist/cjs/icons.js +40 -0
- package/dist/cjs/icons.js.map +1 -0
- package/dist/cjs/index.d.ts +12 -0
- package/dist/cjs/index.js +39 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/labels.d.ts +7 -0
- package/dist/cjs/pinning.d.ts +19 -0
- package/dist/cjs/pinning.js +32 -0
- package/dist/cjs/pinning.js.map +1 -0
- package/dist/cjs/toolbar.d.ts +22 -0
- package/dist/cjs/toolbar.js +43 -0
- package/dist/cjs/toolbar.js.map +1 -0
- package/dist/cjs/tooltip.d.ts +10 -0
- package/dist/cjs/tooltip.js +102 -0
- package/dist/cjs/tooltip.js.map +1 -0
- package/dist/cjs/types.d.ts +287 -0
- package/dist/esm/CDataGrid.d.ts +8 -0
- package/dist/esm/CDataGrid.mjs +901 -0
- package/dist/esm/CDataGrid.mjs.map +1 -0
- package/dist/esm/CDataGridBody.d.ts +40 -0
- package/dist/esm/CDataGridBody.mjs +142 -0
- package/dist/esm/CDataGridBody.mjs.map +1 -0
- package/dist/esm/CDataGridCellEditor.d.ts +8 -0
- package/dist/esm/CDataGridCellEditor.mjs +65 -0
- package/dist/esm/CDataGridCellEditor.mjs.map +1 -0
- package/dist/esm/CDataGridColumnChooser.d.ts +23 -0
- package/dist/esm/CDataGridColumnChooser.mjs +69 -0
- package/dist/esm/CDataGridColumnChooser.mjs.map +1 -0
- package/dist/esm/CDataGridFilterMenu.d.ts +22 -0
- package/dist/esm/CDataGridFilterMenu.mjs +175 -0
- package/dist/esm/CDataGridFilterMenu.mjs.map +1 -0
- package/dist/esm/CDataGridHeader.d.ts +36 -0
- package/dist/esm/CDataGridHeader.mjs +230 -0
- package/dist/esm/CDataGridHeader.mjs.map +1 -0
- package/dist/esm/CDataGridHeaderMenu.d.ts +29 -0
- package/dist/esm/CDataGridHeaderMenu.mjs +125 -0
- package/dist/esm/CDataGridHeaderMenu.mjs.map +1 -0
- package/dist/esm/CDataGridPagination.d.ts +18 -0
- package/dist/esm/CDataGridPagination.mjs +37 -0
- package/dist/esm/CDataGridPagination.mjs.map +1 -0
- package/dist/esm/CDataGridToolbar.d.ts +32 -0
- package/dist/esm/CDataGridToolbar.mjs +47 -0
- package/dist/esm/CDataGridToolbar.mjs.map +1 -0
- package/dist/esm/active-cell.d.ts +22 -0
- package/dist/esm/active-cell.mjs +86 -0
- package/dist/esm/active-cell.mjs.map +1 -0
- package/dist/esm/columns.d.ts +37 -0
- package/dist/esm/columns.mjs +163 -0
- package/dist/esm/columns.mjs.map +1 -0
- package/dist/esm/icons.d.ts +22 -0
- package/dist/esm/icons.mjs +24 -0
- package/dist/esm/icons.mjs.map +1 -0
- package/dist/esm/index.d.mts +1 -0
- package/dist/esm/index.d.ts +12 -0
- package/dist/esm/index.mjs +5 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/labels.d.ts +7 -0
- package/dist/esm/pinning.d.ts +19 -0
- package/dist/esm/pinning.mjs +29 -0
- package/dist/esm/pinning.mjs.map +1 -0
- package/dist/esm/toolbar.d.ts +22 -0
- package/dist/esm/toolbar.mjs +41 -0
- package/dist/esm/toolbar.mjs.map +1 -0
- package/dist/esm/tooltip.d.ts +10 -0
- package/dist/esm/tooltip.mjs +100 -0
- package/dist/esm/tooltip.mjs.map +1 -0
- package/dist/esm/types.d.ts +287 -0
- package/package.json +92 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { FILTER_OPERATORS, VALUELESS_OPERATORS } from '@coreui/data-grid/filters';
|
|
3
|
+
import { useRef, useState, useLayoutEffect, useId } from 'react';
|
|
4
|
+
import { createPortal } from 'react-dom';
|
|
5
|
+
import { interpolate } from '@coreui/data-grid/labels';
|
|
6
|
+
|
|
7
|
+
const SEARCH_THRESHOLD = 10;
|
|
8
|
+
const MAX_CONDITIONS = 2;
|
|
9
|
+
const OPERATOR_LABEL_KEYS = {
|
|
10
|
+
contains: 'operatorContains',
|
|
11
|
+
notContains: 'operatorNotContains',
|
|
12
|
+
equals: 'operatorEquals',
|
|
13
|
+
notEquals: 'operatorNotEquals',
|
|
14
|
+
startsWith: 'operatorStartsWith',
|
|
15
|
+
endsWith: 'operatorEndsWith',
|
|
16
|
+
blank: 'operatorBlank',
|
|
17
|
+
notBlank: 'operatorNotBlank',
|
|
18
|
+
greaterThan: 'operatorGreaterThan',
|
|
19
|
+
greaterThanOrEqual: 'operatorGreaterThanOrEqual',
|
|
20
|
+
lessThan: 'operatorLessThan',
|
|
21
|
+
lessThanOrEqual: 'operatorLessThanOrEqual',
|
|
22
|
+
between: 'operatorBetween'
|
|
23
|
+
};
|
|
24
|
+
const inputTypeFor = (filterType) => (filterType === 'number' ? 'number' : (filterType === 'date' ? 'date' : 'text'));
|
|
25
|
+
const toDraft = (filterType, condition) => {
|
|
26
|
+
var _a;
|
|
27
|
+
return ({
|
|
28
|
+
operator: (_a = condition === null || condition === void 0 ? void 0 : condition.operator) !== null && _a !== void 0 ? _a : FILTER_OPERATORS[filterType][0],
|
|
29
|
+
value: (condition === null || condition === void 0 ? void 0 : condition.value) === undefined ? '' : String(condition.value),
|
|
30
|
+
value2: (condition === null || condition === void 0 ? void 0 : condition.value2) === undefined ? '' : String(condition.value2)
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
const readCondition = (draft) => {
|
|
34
|
+
if (VALUELESS_OPERATORS.has(draft.operator)) {
|
|
35
|
+
return { operator: draft.operator };
|
|
36
|
+
}
|
|
37
|
+
if (draft.value.trim() === '') {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
operator: draft.operator,
|
|
42
|
+
value: draft.value,
|
|
43
|
+
...(draft.operator === 'between' && draft.value2.trim() !== '' && { value2: draft.value2 })
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
const FilterMenuFooter = ({ labels, onApply, onClear }) => (jsxs("div", { className: "data-grid-filter-menu-footer", children: [jsx("button", { type: "button", className: "btn btn-primary btn-sm", onClick: onApply, children: labels.applyFilter }), jsx("button", { type: "button", className: "btn btn-outline-secondary btn-sm", onClick: onClear, children: labels.clearFilter })] }));
|
|
47
|
+
const ConditionsContent = ({ current, filterType, labels, onApply }) => {
|
|
48
|
+
const initialConditions = current !== undefined && typeof current !== 'string' && 'conditions' in current ? current.conditions : [];
|
|
49
|
+
const [drafts, setDrafts] = useState(() => {
|
|
50
|
+
var _a;
|
|
51
|
+
return (initialConditions.length > 1 ?
|
|
52
|
+
[toDraft(filterType, initialConditions[0]), toDraft(filterType, initialConditions[1])] :
|
|
53
|
+
[toDraft(filterType, (_a = initialConditions[0]) !== null && _a !== void 0 ? _a : null)]);
|
|
54
|
+
});
|
|
55
|
+
const [join, setJoin] = useState(current !== undefined && typeof current !== 'string' && 'conditions' in current ? current.join : 'and');
|
|
56
|
+
const joinName = `${useId()}-join`;
|
|
57
|
+
const updateDraft = (index, patch) => {
|
|
58
|
+
setDrafts(previous => previous.map((draft, i) => (i === index ? { ...draft, ...patch } : draft)));
|
|
59
|
+
};
|
|
60
|
+
const addCondition = () => {
|
|
61
|
+
setDrafts(previous => {
|
|
62
|
+
var _a;
|
|
63
|
+
return (previous.length >= MAX_CONDITIONS ?
|
|
64
|
+
previous :
|
|
65
|
+
[...previous, toDraft(filterType, (_a = initialConditions[1]) !== null && _a !== void 0 ? _a : null)]);
|
|
66
|
+
});
|
|
67
|
+
};
|
|
68
|
+
const apply = () => {
|
|
69
|
+
const collected = [];
|
|
70
|
+
for (const draft of drafts) {
|
|
71
|
+
const condition = readCondition(draft);
|
|
72
|
+
if (condition !== null) {
|
|
73
|
+
collected.push(condition);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
onApply(collected.length === 0 ? undefined : { conditions: collected, join });
|
|
77
|
+
};
|
|
78
|
+
const conditionRow = (index) => {
|
|
79
|
+
const draft = drafts[index];
|
|
80
|
+
return (jsxs("div", { className: "data-grid-filter-menu-condition", children: [jsx("select", { className: "form-select form-select-sm", "aria-label": labels.filterAction, value: draft.operator, onChange: event => updateDraft(index, { operator: event.target.value }), children: FILTER_OPERATORS[filterType].map(operator => (jsx("option", { value: operator, children: labels[OPERATOR_LABEL_KEYS[operator]] }, operator))) }), jsx("input", { type: inputTypeFor(filterType), className: "form-control form-control-sm", "data-coreui-filter-value": "", hidden: VALUELESS_OPERATORS.has(draft.operator), value: draft.value, onChange: event => updateDraft(index, { value: event.target.value }) }), jsx("input", { type: inputTypeFor(filterType), className: "form-control form-control-sm", "data-coreui-filter-value2": "", hidden: draft.operator !== 'between', value: draft.value2, onChange: event => updateDraft(index, { value2: event.target.value }) })] }, index));
|
|
81
|
+
};
|
|
82
|
+
return (jsxs("div", { children: [conditionRow(0), drafts.length > 1 && (jsx("div", { className: "data-grid-filter-menu-join", children: ['and', 'or'].map(option => (jsxs("label", { children: [jsx("input", { type: "radio", className: "form-check-input", name: joinName, value: option, checked: join === option, onChange: () => setJoin(option) }), ` ${option === 'and' ? labels.joinAnd : labels.joinOr}`] }, option))) })), drafts.length > 1 && conditionRow(1), jsx("button", { type: "button", className: "btn btn-link btn-sm", hidden: drafts.length >= MAX_CONDITIONS, onClick: addCondition, children: labels.addCondition }), jsx(FilterMenuFooter, { labels: labels, onApply: apply, onClear: () => onApply() })] }));
|
|
83
|
+
};
|
|
84
|
+
const SelectContent = ({ current, labels, onApply, values }) => {
|
|
85
|
+
const [checked, setChecked] = useState(() => {
|
|
86
|
+
const selected = current !== undefined && typeof current !== 'string' && 'operator' in current ?
|
|
87
|
+
new Set(current.value.map(String)) :
|
|
88
|
+
null;
|
|
89
|
+
return new Set(selected === null ? values : values.filter(value => selected.has(value)));
|
|
90
|
+
});
|
|
91
|
+
const [search, setSearch] = useState('');
|
|
92
|
+
const allChecked = checked.size === values.length;
|
|
93
|
+
const toggleValue = (value, on) => {
|
|
94
|
+
setChecked(previous => {
|
|
95
|
+
const next = new Set(previous);
|
|
96
|
+
if (on) {
|
|
97
|
+
next.add(value);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
next.delete(value);
|
|
101
|
+
}
|
|
102
|
+
return next;
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
const apply = () => {
|
|
106
|
+
onApply(allChecked ? undefined : { operator: 'in', value: values.filter(value => checked.has(value)) });
|
|
107
|
+
};
|
|
108
|
+
const needle = search.toLowerCase();
|
|
109
|
+
return (jsxs("div", { children: [values.length > SEARCH_THRESHOLD && (jsx("input", { type: "text", className: "form-control form-control-sm", "aria-label": labels.searchValues, placeholder: labels.searchValues, value: search, onChange: event => setSearch(event.target.value) })), jsxs("div", { className: "data-grid-filter-menu-values", children: [jsxs("label", { className: "form-check", children: [jsx("input", { type: "checkbox", className: "form-check-input", checked: allChecked, "data-coreui-select-all-values": "", onChange: event => setChecked(new Set(event.target.checked ? values : [])) }), jsx("span", { className: "form-check-label", children: labels.selectAllValues })] }), values.map(value => (jsxs("label", { className: "form-check", hidden: !value.toLowerCase().includes(needle), children: [jsx("input", { type: "checkbox", className: "form-check-input", checked: checked.has(value), "data-coreui-filter-option": value, onChange: event => toggleValue(value, event.target.checked) }), jsx("span", { className: "form-check-label", children: value })] }, value)))] }), jsx(FilterMenuFooter, { labels: labels, onApply: apply, onClear: () => onApply() })] }));
|
|
110
|
+
};
|
|
111
|
+
const CDataGridFilterMenu = ({ column, container, id, labels, onClose, position, table }) => {
|
|
112
|
+
var _a, _b, _c;
|
|
113
|
+
const menuRef = useRef(null);
|
|
114
|
+
const [left, setLeft] = useState(0);
|
|
115
|
+
// Faceted values are captured once at open — the menu edits a draft and the
|
|
116
|
+
// grid state only changes on Apply, which closes it.
|
|
117
|
+
const [values] = useState(() => { var _a, _b; return [...((_b = (_a = table.getColumn(column.key)) === null || _a === void 0 ? void 0 : _a.getFacetedUniqueValues().keys()) !== null && _b !== void 0 ? _b : [])].map(String); });
|
|
118
|
+
// Right-align the dialog to the menu trigger, like the header menu — the
|
|
119
|
+
// width is only known after mount, so measure and place it before paint.
|
|
120
|
+
useLayoutEffect(() => {
|
|
121
|
+
var _a, _b;
|
|
122
|
+
const width = (_b = (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : 0;
|
|
123
|
+
setLeft(Math.max(position.buttonRight - width, 0));
|
|
124
|
+
}, [position.buttonRight]);
|
|
125
|
+
useLayoutEffect(() => {
|
|
126
|
+
var _a, _b;
|
|
127
|
+
(_b = (_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('select, input')) === null || _b === void 0 ? void 0 : _b.focus();
|
|
128
|
+
const onOutsidePointerDown = (event) => {
|
|
129
|
+
var _a, _b;
|
|
130
|
+
const target = event.target;
|
|
131
|
+
const trigger = (_a = container.current) === null || _a === void 0 ? void 0 : _a.querySelector(`button[data-coreui-menu="${column.key}"]`);
|
|
132
|
+
if (!((_b = menuRef.current) === null || _b === void 0 ? void 0 : _b.contains(target)) && !(trigger === null || trigger === void 0 ? void 0 : trigger.contains(target))) {
|
|
133
|
+
onClose();
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
const onWindowChange = (event) => {
|
|
137
|
+
var _a;
|
|
138
|
+
if ((event === null || event === void 0 ? void 0 : event.target) instanceof Node && ((_a = menuRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target))) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
onClose();
|
|
142
|
+
};
|
|
143
|
+
document.addEventListener('pointerdown', onOutsidePointerDown, true);
|
|
144
|
+
window.addEventListener('scroll', onWindowChange, true);
|
|
145
|
+
window.addEventListener('resize', onWindowChange);
|
|
146
|
+
return () => {
|
|
147
|
+
document.removeEventListener('pointerdown', onOutsidePointerDown, true);
|
|
148
|
+
window.removeEventListener('scroll', onWindowChange, true);
|
|
149
|
+
window.removeEventListener('resize', onWindowChange);
|
|
150
|
+
};
|
|
151
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
152
|
+
}, []);
|
|
153
|
+
if (!table.getColumn(column.key) || !container.current) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
const commit = (value) => {
|
|
157
|
+
var _a;
|
|
158
|
+
(_a = table.getColumn(column.key)) === null || _a === void 0 ? void 0 : _a.setFilterValue(value);
|
|
159
|
+
onClose(true);
|
|
160
|
+
};
|
|
161
|
+
const onKeyDown = (event) => {
|
|
162
|
+
if (event.key === 'Escape') {
|
|
163
|
+
event.stopPropagation();
|
|
164
|
+
onClose(true);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
const filterType = (_a = column.filterType) !== null && _a !== void 0 ? _a : 'text';
|
|
168
|
+
const current = (_b = table.getColumn(column.key)) === null || _b === void 0 ? void 0 : _b.getFilterValue();
|
|
169
|
+
return createPortal(jsx("div", { className: "data-grid-filter-menu", id: id, role: "dialog", "aria-label": interpolate(labels.filterColumn, { column: (_c = column.label) !== null && _c !== void 0 ? _c : column.key }), ref: menuRef, style: { top: position.top, left }, onKeyDown: onKeyDown, children: filterType === 'select' ?
|
|
170
|
+
(jsx(SelectContent, { current: current, labels: labels, onApply: commit, values: values })) :
|
|
171
|
+
(jsx(ConditionsContent, { current: current, filterType: filterType, labels: labels, onApply: commit })) }), container.current);
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
export { CDataGridFilterMenu };
|
|
175
|
+
//# sourceMappingURL=CDataGridFilterMenu.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CDataGridFilterMenu.mjs","sources":["../../../src/CDataGridFilterMenu.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --------------------------------------------------------------------------
|
|
3
|
+
* CoreUI PRO react-data-grid CDataGridHeader.tsx
|
|
4
|
+
* License (https://coreui.io/pro/license/)
|
|
5
|
+
* --------------------------------------------------------------------------
|
|
6
|
+
*/
|
|
7
|
+
import type { Table } from '@tanstack/react-table';
|
|
8
|
+
import { type ReactNode, type RefObject } from 'react';
|
|
9
|
+
import type { ActiveCell } from './active-cell';
|
|
10
|
+
import { type MenuIcons } from './columns';
|
|
11
|
+
import type { CDataGridColumn, CDataGridColumnMenuBuilder, DataGridItem, DataGridLabels } from './types';
|
|
12
|
+
export interface CDataGridHeaderProps {
|
|
13
|
+
cellNavigation: boolean;
|
|
14
|
+
columnFilters: boolean;
|
|
15
|
+
columns: CDataGridColumn[];
|
|
16
|
+
draggable: boolean;
|
|
17
|
+
icons: MenuIcons & {
|
|
18
|
+
columnMenu: ReactNode;
|
|
19
|
+
filter: ReactNode;
|
|
20
|
+
};
|
|
21
|
+
menuBuilder: CDataGridColumnMenuBuilder | null;
|
|
22
|
+
isFilterable: (column: CDataGridColumn) => boolean;
|
|
23
|
+
isResizable: (column: CDataGridColumn) => boolean;
|
|
24
|
+
isSortable: (column: CDataGridColumn) => boolean;
|
|
25
|
+
labels: DataGridLabels;
|
|
26
|
+
menu: boolean;
|
|
27
|
+
menuContainer: RefObject<HTMLDivElement | null>;
|
|
28
|
+
pinning: boolean;
|
|
29
|
+
resizable: boolean;
|
|
30
|
+
selectAll: boolean;
|
|
31
|
+
selection: boolean;
|
|
32
|
+
tabStop: ActiveCell | null;
|
|
33
|
+
table: Table<DataGridItem>;
|
|
34
|
+
visibility: boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare const CDataGridHeader: ({ cellNavigation, columnFilters, columns, draggable, icons, menuBuilder, isFilterable, isResizable, isSortable, labels, menu, menuContainer, pinning, resizable, selectAll, selection, tabStop, table, visibility }: CDataGridHeaderProps) => import("react").JSX.Element;
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { useRef, useState, useId } from 'react';
|
|
3
|
+
import { CDataGridFilterMenu } from './CDataGridFilterMenu.mjs';
|
|
4
|
+
import { CDataGridHeaderMenu } from './CDataGridHeaderMenu.mjs';
|
|
5
|
+
import { visibleColumns, buildMenuActions, reorderColumn } from './columns.mjs';
|
|
6
|
+
import { interpolate } from '@coreui/data-grid/labels';
|
|
7
|
+
import { pinnedColumnProps, selectCellPinnedProps } from './pinning.mjs';
|
|
8
|
+
|
|
9
|
+
const sortIconFor = (icons, sorted) => {
|
|
10
|
+
if (sorted === 'asc') {
|
|
11
|
+
return icons.sortAscending;
|
|
12
|
+
}
|
|
13
|
+
if (sorted === 'desc') {
|
|
14
|
+
return icons.sortDescending;
|
|
15
|
+
}
|
|
16
|
+
return icons.sortNeutral;
|
|
17
|
+
};
|
|
18
|
+
const CDataGridHeader = ({ cellNavigation, columnFilters, columns, draggable, icons, menuBuilder, isFilterable, isResizable, isSortable, labels, menu, menuContainer, pinning, resizable, selectAll, selection, tabStop, table, visibility }) => {
|
|
19
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
20
|
+
const dragColumn = useRef(null);
|
|
21
|
+
const [dragging, setDragging] = useState(null);
|
|
22
|
+
const [dropTarget, setDropTarget] = useState(null);
|
|
23
|
+
const [openMenu, setOpenMenu] = useState(null);
|
|
24
|
+
const [openFilterMenu, setOpenFilterMenu] = useState(null);
|
|
25
|
+
const menuId = useId();
|
|
26
|
+
const filterMenuId = useId();
|
|
27
|
+
// Columns with a custom filter UI own their filtering - no built-in button.
|
|
28
|
+
const hasFilterButton = (column) => columnFilters && isFilterable(column) && !column.filter;
|
|
29
|
+
// The filter row exists only for custom filter UIs.
|
|
30
|
+
const filterRowVisible = columnFilters && columns.some(column => column.filter && isFilterable(column));
|
|
31
|
+
const toggleFilterMenu = (column, event) => {
|
|
32
|
+
if ((openFilterMenu === null || openFilterMenu === void 0 ? void 0 : openFilterMenu.key) === column.key) {
|
|
33
|
+
setOpenFilterMenu(null);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
const root = menuContainer.current;
|
|
37
|
+
if (!root) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const rootRect = root.getBoundingClientRect();
|
|
41
|
+
const buttonRect = event.currentTarget.getBoundingClientRect();
|
|
42
|
+
setOpenFilterMenu({
|
|
43
|
+
key: column.key,
|
|
44
|
+
top: buttonRect.bottom - rootRect.top,
|
|
45
|
+
buttonRight: buttonRect.right - rootRect.left
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
const closeFilterMenu = (refocus = false) => {
|
|
49
|
+
var _a, _b;
|
|
50
|
+
if (refocus && openFilterMenu) {
|
|
51
|
+
(_b = (_a = menuContainer.current) === null || _a === void 0 ? void 0 : _a.querySelector(`button[data-coreui-filter="${openFilterMenu.key}"]`)) === null || _b === void 0 ? void 0 : _b.focus();
|
|
52
|
+
}
|
|
53
|
+
setOpenFilterMenu(null);
|
|
54
|
+
};
|
|
55
|
+
const hasMenu = (column) => {
|
|
56
|
+
if (!menu) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
// A builder can add items regardless of enabled features, so ask it directly.
|
|
60
|
+
if (menuBuilder) {
|
|
61
|
+
return (buildMenuActions({
|
|
62
|
+
builder: menuBuilder,
|
|
63
|
+
column,
|
|
64
|
+
icons,
|
|
65
|
+
labels,
|
|
66
|
+
ordering: draggable,
|
|
67
|
+
pinning,
|
|
68
|
+
sortable: isSortable(column),
|
|
69
|
+
table,
|
|
70
|
+
visibility
|
|
71
|
+
}).length > 0);
|
|
72
|
+
}
|
|
73
|
+
return (isSortable(column) ||
|
|
74
|
+
pinning ||
|
|
75
|
+
(visibility && column.hideable !== false) ||
|
|
76
|
+
(draggable && column.movable !== false));
|
|
77
|
+
};
|
|
78
|
+
const toggleMenu = (column, event) => {
|
|
79
|
+
if ((openMenu === null || openMenu === void 0 ? void 0 : openMenu.key) === column.key) {
|
|
80
|
+
setOpenMenu(null);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
const root = menuContainer.current;
|
|
84
|
+
if (!root) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const rootRect = root.getBoundingClientRect();
|
|
88
|
+
const buttonRect = event.currentTarget.getBoundingClientRect();
|
|
89
|
+
setOpenMenu({
|
|
90
|
+
key: column.key,
|
|
91
|
+
top: buttonRect.bottom - rootRect.top,
|
|
92
|
+
buttonRight: buttonRect.right - rootRect.left
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
const closeMenu = (refocus = false) => {
|
|
96
|
+
var _a, _b;
|
|
97
|
+
if (refocus && openMenu) {
|
|
98
|
+
(_b = (_a = menuContainer.current) === null || _a === void 0 ? void 0 : _a.querySelector(`button[data-coreui-menu="${openMenu.key}"]`)) === null || _b === void 0 ? void 0 : _b.focus();
|
|
99
|
+
}
|
|
100
|
+
setOpenMenu(null);
|
|
101
|
+
};
|
|
102
|
+
const visible = visibleColumns(table, columns);
|
|
103
|
+
const menuColumn = openMenu ?
|
|
104
|
+
(_b = (_a = visible.find(column => column.key === openMenu.key)) !== null && _a !== void 0 ? _a : columns.find(column => column.key === openMenu.key)) !== null && _b !== void 0 ? _b : null :
|
|
105
|
+
null;
|
|
106
|
+
const filterMenuColumn = openFilterMenu ?
|
|
107
|
+
(_d = (_c = visible.find(column => column.key === openFilterMenu.key)) !== null && _c !== void 0 ? _c : columns.find(column => column.key === openFilterMenu.key)) !== null && _d !== void 0 ? _d : null :
|
|
108
|
+
null;
|
|
109
|
+
const leftColumns = pinning ? table.getLeftLeafColumns().filter(column => column.getIsVisible()) : [];
|
|
110
|
+
const rightColumns = pinning ? table.getRightLeafColumns().filter(column => column.getIsVisible()) : [];
|
|
111
|
+
const selectPinned = pinning && selection && leftColumns.length > 0;
|
|
112
|
+
const pinnedEdges = { lastLeft: (_f = (_e = leftColumns[leftColumns.length - 1]) === null || _e === void 0 ? void 0 : _e.id) !== null && _f !== void 0 ? _f : null, firstRight: (_h = (_g = rightColumns[0]) === null || _g === void 0 ? void 0 : _g.id) !== null && _h !== void 0 ? _h : null };
|
|
113
|
+
const selectPin = selectCellPinnedProps(selectPinned);
|
|
114
|
+
const widths = resizable || pinning;
|
|
115
|
+
const endColumnDrag = () => {
|
|
116
|
+
dragColumn.current = null;
|
|
117
|
+
setDragging(null);
|
|
118
|
+
setDropTarget(null);
|
|
119
|
+
};
|
|
120
|
+
// A column is draggable only when reordering is on and its pinned region holds
|
|
121
|
+
// another movable column to swap with - reordering never crosses a pinning
|
|
122
|
+
// boundary, so a column alone in its region has no valid target.
|
|
123
|
+
const regionOf = (key) => { var _a; return ((_a = table.getColumn(key)) === null || _a === void 0 ? void 0 : _a.getIsPinned()) || 'center'; };
|
|
124
|
+
const movablePerRegion = new Map();
|
|
125
|
+
if (draggable) {
|
|
126
|
+
for (const column of visible) {
|
|
127
|
+
if (column.movable !== false) {
|
|
128
|
+
const region = regionOf(column.key);
|
|
129
|
+
movablePerRegion.set(region, ((_j = movablePerRegion.get(region)) !== null && _j !== void 0 ? _j : 0) + 1);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
const isColumnDraggable = (column) => { var _a; return draggable && column.movable !== false && ((_a = movablePerRegion.get(regionOf(column.key))) !== null && _a !== void 0 ? _a : 0) > 1; };
|
|
134
|
+
const dragHandlers = (column) => isColumnDraggable(column) ?
|
|
135
|
+
{
|
|
136
|
+
draggable: true,
|
|
137
|
+
'data-coreui-draggable': '',
|
|
138
|
+
onDragStart(event) {
|
|
139
|
+
var _a, _b;
|
|
140
|
+
// A drag started from the resize handle is a resize, not a reorder.
|
|
141
|
+
// The handle's mousedown is preventDefault'd so the browser never
|
|
142
|
+
// starts a drag there; this ancestry check is a secondary guard.
|
|
143
|
+
if ((_b = (_a = event.target).closest) === null || _b === void 0 ? void 0 : _b.call(_a, '[data-coreui-resizer]')) {
|
|
144
|
+
event.preventDefault();
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
dragColumn.current = column.key;
|
|
148
|
+
setDragging(column.key);
|
|
149
|
+
if (event.dataTransfer) {
|
|
150
|
+
event.dataTransfer.effectAllowed = 'move';
|
|
151
|
+
event.dataTransfer.setData('text/plain', column.key);
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
onDragOver(event) {
|
|
155
|
+
const sourceKey = dragColumn.current;
|
|
156
|
+
// A drop is only valid within the drag source's pinned region; leaving
|
|
157
|
+
// other targets un-prevented shows the browser's no-drop cursor there.
|
|
158
|
+
if (!sourceKey || sourceKey === column.key || regionOf(sourceKey) !== regionOf(column.key)) {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
event.preventDefault();
|
|
162
|
+
setDropTarget(column.key);
|
|
163
|
+
},
|
|
164
|
+
onDragLeave() {
|
|
165
|
+
setDropTarget(current => (current === column.key ? null : current));
|
|
166
|
+
},
|
|
167
|
+
onDrop(event) {
|
|
168
|
+
event.preventDefault();
|
|
169
|
+
const sourceKey = dragColumn.current;
|
|
170
|
+
endColumnDrag();
|
|
171
|
+
if (sourceKey) {
|
|
172
|
+
reorderColumn(table, sourceKey, column.key);
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
onDragEnd: endColumnDrag
|
|
176
|
+
} :
|
|
177
|
+
{};
|
|
178
|
+
const navOffset = selection ? 1 : 0;
|
|
179
|
+
return (jsxs("thead", { className: "data-grid-header", children: [jsxs("tr", { ...(cellNavigation && { role: 'row' }), children: [selection && (jsx("th", { className: `data-grid-select-cell${selectPin.className ? ` ${selectPin.className}` : ''}`, scope: "col", style: selectPin.style, ...(cellNavigation && { role: 'columnheader', 'aria-colindex': 1 }), children: selectAll && (jsx("input", { type: "checkbox", className: "form-check-input", "aria-label": labels.selectAllRows, checked: table.getIsAllRowsSelected(), "data-coreui-select-all": "", onChange: event => table.toggleAllRowsSelected(event.target.checked), ref: element => {
|
|
180
|
+
if (element) {
|
|
181
|
+
element.indeterminate = table.getIsSomeRowsSelected();
|
|
182
|
+
}
|
|
183
|
+
}, ...(cellNavigation && { tabIndex: -1 }) })) })), visible.map((column, navIndex) => {
|
|
184
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
185
|
+
const tableColumn = table.getColumn(column.key);
|
|
186
|
+
const sorted = tableColumn === null || tableColumn === void 0 ? void 0 : tableColumn.getIsSorted();
|
|
187
|
+
const sortDirection = sorted ? (sorted === 'desc' ? 'descending' : 'ascending') : undefined;
|
|
188
|
+
const sortable = isSortable(column);
|
|
189
|
+
const header = widths ?
|
|
190
|
+
(_a = table.getHeaderGroups()[0]) === null || _a === void 0 ? void 0 : _a.headers.find(item => item.column.id === column.key) :
|
|
191
|
+
undefined;
|
|
192
|
+
const pin = pinning && tableColumn ? pinnedColumnProps(tableColumn, selectPinned, pinnedEdges) : {};
|
|
193
|
+
const style = {
|
|
194
|
+
...column.style,
|
|
195
|
+
...(column.width !== undefined && { width: column.width }),
|
|
196
|
+
...(header && { width: header.getSize() }),
|
|
197
|
+
...pin.style
|
|
198
|
+
};
|
|
199
|
+
const className = [
|
|
200
|
+
sortable && 'data-grid-sortable',
|
|
201
|
+
pin.className,
|
|
202
|
+
dragging === column.key && 'data-grid-dragging',
|
|
203
|
+
dropTarget === column.key && 'data-grid-drop-target'
|
|
204
|
+
]
|
|
205
|
+
.filter(Boolean)
|
|
206
|
+
.join(' ');
|
|
207
|
+
return (jsxs("th", { scope: "col", className: className === '' ? undefined : className, style: style, "data-coreui-column": column.key, "aria-sort": sortDirection, ...(cellNavigation && {
|
|
208
|
+
role: 'columnheader',
|
|
209
|
+
'aria-colindex': navOffset + navIndex + 1,
|
|
210
|
+
tabIndex: tabStop !== null && tabStop.rowIndex === -1 && tabStop.columnId === column.key ? 0 : -1
|
|
211
|
+
}), ...dragHandlers(column), children: [jsxs("div", { className: "data-grid-header-cell", children: [sortable ?
|
|
212
|
+
(jsxs("button", { type: "button", className: "data-grid-sort-button", onClick: tableColumn === null || tableColumn === void 0 ? void 0 : tableColumn.getToggleSortingHandler(), ...(cellNavigation && { tabIndex: -1 }), children: [(_b = column.label) !== null && _b !== void 0 ? _b : column.key, jsx("span", { className: "data-grid-sort-icon", "aria-hidden": "true", "data-coreui-sort": sortDirection !== null && sortDirection !== void 0 ? sortDirection : 'neutral', children: sortIconFor(icons, sorted) })] })) :
|
|
213
|
+
(jsx("span", { className: "data-grid-header-label", children: (_c = column.label) !== null && _c !== void 0 ? _c : column.key })), hasFilterButton(column) && (jsx("button", { type: "button", className: `btn btn-ghost btn-sm data-grid-filter-button${table.getState().columnFilters.some(filter => filter.id === column.key) ?
|
|
214
|
+
' data-grid-filter-button-filtered' :
|
|
215
|
+
''}`, "aria-haspopup": "dialog", "aria-expanded": (openFilterMenu === null || openFilterMenu === void 0 ? void 0 : openFilterMenu.key) === column.key, "aria-controls": (openFilterMenu === null || openFilterMenu === void 0 ? void 0 : openFilterMenu.key) === column.key ? filterMenuId : undefined, "aria-label": interpolate(labels.filterColumn, { column: (_d = column.label) !== null && _d !== void 0 ? _d : column.key }), "data-coreui-tooltip": interpolate(labels.filterColumn, { column: (_e = column.label) !== null && _e !== void 0 ? _e : column.key }), "data-coreui-filter": column.key, onClick: event => toggleFilterMenu(column, event), ...(cellNavigation && { tabIndex: -1 }), children: icons.filter })), hasMenu(column) && (jsx("button", { type: "button", className: "btn btn-ghost btn-sm data-grid-menu-button", "aria-haspopup": "menu", "aria-expanded": (openMenu === null || openMenu === void 0 ? void 0 : openMenu.key) === column.key, "aria-controls": (openMenu === null || openMenu === void 0 ? void 0 : openMenu.key) === column.key ? menuId : undefined, "aria-label": interpolate(labels.columnMenu, { column: (_f = column.label) !== null && _f !== void 0 ? _f : column.key }), "data-coreui-tooltip": interpolate(labels.columnMenu, { column: (_g = column.label) !== null && _g !== void 0 ? _g : column.key }), "data-coreui-menu": column.key, onClick: event => toggleMenu(column, event), ...(cellNavigation && { tabIndex: -1 }), children: icons.columnMenu }))] }), resizable && isResizable(column) && header && (jsx("span", { className: `data-grid-resizer${(tableColumn === null || tableColumn === void 0 ? void 0 : tableColumn.getIsResizing()) ? ' data-grid-resizer-active' : ''}`, "aria-hidden": "true", "data-coreui-resizer": "", onMouseDown: event => {
|
|
216
|
+
// Stop the browser from starting a native reorder drag from
|
|
217
|
+
// the draggable th when the press lands on the handle.
|
|
218
|
+
event.preventDefault();
|
|
219
|
+
header.getResizeHandler()(event);
|
|
220
|
+
}, onTouchStart: header.getResizeHandler() }))] }, column.key));
|
|
221
|
+
})] }), openMenu && menuColumn && (jsx(CDataGridHeaderMenu, { builder: menuBuilder, column: menuColumn, container: menuContainer, icons: icons, id: menuId, labels: labels, onClose: closeMenu, ordering: draggable, pinning: pinning, position: openMenu, sortable: isSortable(menuColumn), table: table, visibility: visibility })), openFilterMenu && filterMenuColumn && (jsx(CDataGridFilterMenu, { column: filterMenuColumn, container: menuContainer, id: filterMenuId, labels: labels, onClose: closeFilterMenu, position: openFilterMenu, table: table })), filterRowVisible && (jsxs("tr", { className: "data-grid-filter-row", ...(cellNavigation && { role: 'row' }), children: [selection && jsx("th", { className: selectPin.className, style: selectPin.style }), visible.map(column => {
|
|
222
|
+
const tableColumn = table.getColumn(column.key);
|
|
223
|
+
const pin = pinning && tableColumn ? pinnedColumnProps(tableColumn, selectPinned, pinnedEdges) : {};
|
|
224
|
+
const Filter = column.filter;
|
|
225
|
+
return (jsx("th", { className: pin.className, style: pin.style, children: isFilterable(column) && Filter && tableColumn && (jsx(Filter, { column: tableColumn, table: table, labels: labels })) }, column.key));
|
|
226
|
+
})] }))] }));
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
export { CDataGridHeader };
|
|
230
|
+
//# sourceMappingURL=CDataGridHeader.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CDataGridHeader.mjs","sources":["../../../src/CDataGridHeader.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;AA+CA,MAAM,WAAW,GAAG,CAClB,KAAgB,EAChB,MAA0C,KAC7B;AACb,IAAA,IAAI,MAAM,KAAK,KAAK,EAAE;QACpB,OAAO,KAAK,CAAC,aAAa;IAC5B;AAEA,IAAA,IAAI,MAAM,KAAK,MAAM,EAAE;QACrB,OAAO,KAAK,CAAC,cAAc;IAC7B;IAEA,OAAO,KAAK,CAAC,WAAW;AAC1B,CAAC;MAEY,eAAe,GAAG,CAAC,EAC9B,cAAc,EACd,aAAa,EACb,OAAO,EACP,SAAS,EACT,KAAK,EACL,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,MAAM,EACN,IAAI,EACJ,aAAa,EACb,OAAO,EACP,SAAS,EACT,SAAS,EACT,SAAS,EACT,OAAO,EACP,KAAK,EACL,UAAU,EACW,KAAI;;AACzB,IAAA,MAAM,UAAU,GAAG,MAAM,CAAgB,IAAI,CAAC;IAC9C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;IAC7D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC;IACjE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAA2D,IAAI,CAAC;IACxG,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAA2D,IAAI,CAAC;AACpH,IAAA,MAAM,MAAM,GAAG,KAAK,EAAE;AACtB,IAAA,MAAM,YAAY,GAAG,KAAK,EAAE;;AAG5B,IAAA,MAAM,eAAe,GAAG,CAAC,MAAuB,KAC9C,aAAa,IAAI,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;;IAGzD,MAAM,gBAAgB,GAAG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;AAEvG,IAAA,MAAM,gBAAgB,GAAG,CAAC,MAAuB,EAAE,KAAoC,KAAI;AACzF,QAAA,IAAI,CAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,MAAA,GAAA,MAAA,GAAd,cAAc,CAAE,GAAG,MAAK,MAAM,CAAC,GAAG,EAAE;YACtC,iBAAiB,CAAC,IAAI,CAAC;YACvB;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO;QAClC,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE;QAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAC9D,QAAA,iBAAiB,CAAC;YAChB,GAAG,EAAE,MAAM,CAAC,GAAG;AACf,YAAA,GAAG,EAAE,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG;AACrC,YAAA,WAAW,EAAE,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC1C,SAAA,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,eAAe,GAAG,CAAC,OAAO,GAAG,KAAK,KAAI;;AAC1C,QAAA,IAAI,OAAO,IAAI,cAAc,EAAE;AAC7B,YAAA,CAAA,EAAA,GAAA,MAAA,aAAa,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CACjB,aAAa,CAAoB,CAAA,2BAAA,EAA8B,cAAc,CAAC,GAAG,CAAA,EAAA,CAAI,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CACtF,KAAK,EAAE;QACb;QAEA,iBAAiB,CAAC,IAAI,CAAC;AACzB,IAAA,CAAC;AAED,IAAA,MAAM,OAAO,GAAG,CAAC,MAAuB,KAAI;QAC1C,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,KAAK;QACd;;QAGA,IAAI,WAAW,EAAE;YACf,QACE,gBAAgB,CAAC;AACf,gBAAA,OAAO,EAAE,WAAW;gBACpB,MAAM;gBACN,KAAK;gBACL,MAAM;AACN,gBAAA,QAAQ,EAAE,SAAS;gBACnB,OAAO;AACP,gBAAA,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC;gBAC5B,KAAK;gBACL;AACD,aAAA,CAAC,CAAC,MAAM,GAAG,CAAC;QAEjB;AAEA,QAAA,QACE,UAAU,CAAC,MAAM,CAAC;YAClB,OAAO;AACP,aAAC,UAAU,IAAI,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC;aACxC,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC;AAE3C,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,MAAuB,EAAE,KAAoC,KAAI;AACnF,QAAA,IAAI,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAE,GAAG,MAAK,MAAM,CAAC,GAAG,EAAE;YAChC,WAAW,CAAC,IAAI,CAAC;YACjB;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO;QAClC,IAAI,CAAC,IAAI,EAAE;YACT;QACF;AAEA,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE;QAC7C,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,CAAC,qBAAqB,EAAE;AAC9D,QAAA,WAAW,CAAC;YACV,GAAG,EAAE,MAAM,CAAC,GAAG;AACf,YAAA,GAAG,EAAE,UAAU,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG;AACrC,YAAA,WAAW,EAAE,UAAU,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC1C,SAAA,CAAC;AACJ,IAAA,CAAC;AAED,IAAA,MAAM,SAAS,GAAG,CAAC,OAAO,GAAG,KAAK,KAAI;;AACpC,QAAA,IAAI,OAAO,IAAI,QAAQ,EAAE;AACvB,YAAA,CAAA,EAAA,GAAA,MAAA,aAAa,CAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CACjB,aAAa,CAAoB,CAAA,yBAAA,EAA4B,QAAQ,CAAC,GAAG,CAAA,EAAA,CAAI,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAC9E,KAAK,EAAE;QACb;QAEA,WAAW,CAAC,IAAI,CAAC;AACnB,IAAA,CAAC;IAED,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC;AAC9C,IAAA,MAAM,UAAU,GAAG,QAAQ;AACzB,QAAA,CAAA,EAAA,GAAA,MAAA,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GACnD,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,QAAQ,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GACnD,IAAI;AACJ,QAAA,IAAI;AACN,IAAA,MAAM,gBAAgB,GAAG,cAAc;AACrC,QAAA,CAAA,EAAA,GAAA,MAAA,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GACzD,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,cAAc,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GACzD,IAAI;AACJ,QAAA,IAAI;IACN,MAAM,WAAW,GAAG,OAAO,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;IACrG,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE;IACvG,MAAM,YAAY,GAAG,OAAO,IAAI,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;AACnE,IAAA,MAAM,WAAW,GAAG,EAAE,QAAQ,EAAE,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,EAAE,UAAU,EAAE,MAAA,CAAA,EAAA,GAAA,YAAY,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,EAAE,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,IAAI,EAAE;AAC1H,IAAA,MAAM,SAAS,GAAG,qBAAqB,CAAC,YAAY,CAAC;AACrD,IAAA,MAAM,MAAM,GAAG,SAAS,IAAI,OAAO;IAEnC,MAAM,aAAa,GAAG,MAAK;AACzB,QAAA,UAAU,CAAC,OAAO,GAAG,IAAI;QACzB,WAAW,CAAC,IAAI,CAAC;QACjB,aAAa,CAAC,IAAI,CAAC;AACrB,IAAA,CAAC;;;;IAKD,MAAM,QAAQ,GAAG,CAAC,GAAW,KAAY,EAAA,IAAA,EAAA,CAAA,CAAC,OAAA,CAAA,CAAA,EAAA,GAAA,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAW,EAAE,KAAI,QAAQ,CAAA,CAAA,CAAA;AACzF,IAAA,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB;IAClD,IAAI,SAAS,EAAE;AACb,QAAA,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE;AAC5B,YAAA,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,EAAE;gBAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;AACnC,gBAAA,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,MAAA,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,IAAI,CAAC,CAAC;YACvE;QACF;IACF;AAEA,IAAA,MAAM,iBAAiB,GAAG,CAAC,MAAuB,KAAI,EAAA,IAAA,EAAA,CAAA,CACpD,OAAA,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAA,EAAA,GAAA,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,CAAC,IAAI,CAAC,CAAA,EAAA;AAEhG,IAAA,MAAM,YAAY,GAAG,CAAC,MAAuB,KAC3C,iBAAiB,CAAC,MAAM,CAAC;AACvB,QAAA;AACE,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,uBAAuB,EAAE,EAAE;AAC3B,YAAA,WAAW,CAAC,KAAsC,EAAA;;;;;gBAIhD,IAAI,CAAA,EAAA,GAAA,CAAA,EAAA,GAAC,KAAK,CAAC,MAAsB,EAAC,OAAO,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAG,uBAAuB,CAAC,EAAE;oBACpE,KAAK,CAAC,cAAc,EAAE;oBACtB;gBACF;AAEA,gBAAA,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG;AAC/B,gBAAA,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;AACvB,gBAAA,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,oBAAA,KAAK,CAAC,YAAY,CAAC,aAAa,GAAG,MAAM;oBACzC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC;gBACtD;YACF,CAAC;AACD,YAAA,UAAU,CAAC,KAAsC,EAAA;AAC/C,gBAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;;;gBAGpC,IAAI,CAAC,SAAS,IAAI,SAAS,KAAK,MAAM,CAAC,GAAG,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;oBAC1F;gBACF;gBAEA,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC;YAC3B,CAAC;YACD,WAAW,GAAA;gBACT,aAAa,CAAC,OAAO,KAAK,OAAO,KAAK,MAAM,CAAC,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC;YACrE,CAAC;AACD,YAAA,MAAM,CAAC,KAAsC,EAAA;gBAC3C,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO;AACpC,gBAAA,aAAa,EAAE;gBACf,IAAI,SAAS,EAAE;oBACb,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC;gBAC7C;YACF,CAAC;AACD,YAAA,SAAS,EAAE;AACZ,SAAA;AACD,QAAA,EAAE;IAEN,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC;IAEnC,QACEA,IAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAC,kBAAkB,aACjCA,IAAA,CAAA,IAAA,EAAA,EAAA,IAAS,cAAc,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAA,QAAA,EAAA,CACxC,SAAS,KACRC,GAAA,CAAA,IAAA,EAAA,EACE,SAAS,EAAE,CAAA,qBAAA,EAAwB,SAAS,CAAC,SAAS,GAAG,CAAA,CAAA,EAAI,SAAS,CAAC,SAAS,CAAA,CAAE,GAAG,EAAE,CAAA,CAAE,EACzF,KAAK,EAAC,KAAK,EACX,KAAK,EAAE,SAAS,CAAC,KAAK,EAAA,IACjB,cAAc,IAAI,EAAE,IAAI,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC,EAAE,CAAC,EAAA,QAAA,EAEnE,SAAS,KACRA,GAAA,CAAA,OAAA,EAAA,EACE,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,kBAAkB,EAAA,YAAA,EAChB,MAAM,CAAC,aAAa,EAChC,OAAO,EAAE,KAAK,CAAC,oBAAoB,EAAE,EAAA,wBAAA,EACd,EAAE,EACzB,QAAQ,EAAE,KAAK,IAAI,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EACpE,GAAG,EAAE,OAAO,IAAG;gCACb,IAAI,OAAO,EAAE;AACX,oCAAA,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,qBAAqB,EAAE;gCACvD;4BACF,CAAC,EAAA,IACI,cAAc,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAA,CACxC,CACH,EAAA,CACE,CACN,EACA,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,KAAI;;wBAChC,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;wBAC/C,MAAM,MAAM,GAAG,WAAW,KAAA,IAAA,IAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,EAAE;wBACzC,MAAM,aAAa,GAAG,MAAM,IAAI,MAAM,KAAK,MAAM,GAAG,YAAY,GAAG,WAAW,IAAI,SAAS;AAC3F,wBAAA,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC;AACnC,wBAAA,MAAM,MAAM,GAAG,MAAM;4BACnB,CAAA,EAAA,GAAA,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC;AAC/E,4BAAA,SAAS;wBACX,MAAM,GAAG,GAAG,OAAO,IAAI,WAAW,GAAG,iBAAiB,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,GAAG,EAAE;AACnG,wBAAA,MAAM,KAAK,GAAG;4BACZ,GAAG,MAAM,CAAC,KAAK;AACf,4BAAA,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;4BAC1D,IAAI,MAAM,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;4BAC1C,GAAG,GAAG,CAAC;yBACR;AACD,wBAAA,MAAM,SAAS,GAAG;AAChB,4BAAA,QAAQ,IAAI,oBAAoB;AAChC,4BAAA,GAAG,CAAC,SAAS;AACb,4BAAA,QAAQ,KAAK,MAAM,CAAC,GAAG,IAAI,oBAAoB;AAC/C,4BAAA,UAAU,KAAK,MAAM,CAAC,GAAG,IAAI;AAC9B;6BACE,MAAM,CAAC,OAAO;6BACd,IAAI,CAAC,GAAG,CAAC;AACZ,wBAAA,QACED,IAAA,CAAA,IAAA,EAAA,EAEE,KAAK,EAAC,KAAK,EACX,SAAS,EAAE,SAAS,KAAK,EAAE,GAAG,SAAS,GAAG,SAAS,EACnD,KAAK,EAAE,KAAK,EAAA,oBAAA,EACQ,MAAM,CAAC,GAAG,EAAA,WAAA,EACnB,aAAa,EAAA,IACnB,cAAc,IAAI;AACrB,gCAAA,IAAI,EAAE,cAAc;AACpB,gCAAA,eAAe,EAAE,SAAS,GAAG,QAAQ,GAAG,CAAC;gCACzC,QAAQ,EAAE,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,EAAE,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG;AAChG,6BAAA,CAAC,EAAA,GACE,YAAY,CAAC,MAAM,CAAC,EAAA,QAAA,EAAA,CAExBA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,CACnC,QAAQ;AACzB,6CACkBA,IAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,uBAAuB,EACjC,OAAO,EAAE,WAAW,aAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,uBAAuB,EAAE,EAAA,IAC1C,cAAc,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAA,QAAA,EAAA,CAEvC,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM,CAAC,GAAG,EAC3BC,GAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAC,qBAAqB,EAAA,aAAA,EACnB,MAAM,sBACA,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,MAAA,GAAb,aAAa,GAAI,SAAS,EAAA,QAAA,EAE3C,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,EAAA,CACtB,CAAA,EAAA,CACA;6CAGTA,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,wBAAwB,EAAA,QAAA,EAAE,MAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM,CAAC,GAAG,EAAA,CAAQ,CAC7E,EACA,eAAe,CAAC,MAAM,CAAC,KACtBA,GAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,CAAA,4CAAA,EACT,KAAK,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,GAAG,CAAC;AACrE,gDAAA,mCAAmC;AACnC,gDAAA,EACJ,CAAA,CAAE,EAAA,eAAA,EACY,QAAQ,EAAA,eAAA,EACP,CAAA,cAAc,KAAA,IAAA,IAAd,cAAc,KAAA,MAAA,GAAA,MAAA,GAAd,cAAc,CAAE,GAAG,MAAK,MAAM,CAAC,GAAG,EAAA,eAAA,EAClC,CAAA,cAAc,KAAA,IAAA,IAAd,cAAc,uBAAd,cAAc,CAAE,GAAG,MAAK,MAAM,CAAC,GAAG,GAAG,YAAY,GAAG,SAAS,EAAA,YAAA,EAChE,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,MAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM,CAAC,GAAG,EAAE,CAAC,EAAA,qBAAA,EAC/D,WAAW,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM,CAAC,GAAG,EAAE,CAAC,EAAA,oBAAA,EACzE,MAAM,CAAC,GAAG,EAC9B,OAAO,EAAE,KAAK,IAAI,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAA,IAC5C,cAAc,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAA,QAAA,EAEvC,KAAK,CAAC,MAAM,GACN,CACV,EACA,OAAO,CAAC,MAAM,CAAC,KACdA,gBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,4CAA4C,EAAA,eAAA,EACxC,MAAM,EAAA,eAAA,EACL,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAE,GAAG,MAAK,MAAM,CAAC,GAAG,EAAA,eAAA,EAC5B,CAAA,QAAQ,KAAA,IAAA,IAAR,QAAQ,KAAA,MAAA,GAAA,MAAA,GAAR,QAAQ,CAAE,GAAG,MAAK,MAAM,CAAC,GAAG,GAAG,MAAM,GAAG,SAAS,gBACpD,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM,CAAC,GAAG,EAAE,CAAC,EAAA,qBAAA,EAC7D,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAA,EAAA,GAAA,MAAM,CAAC,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,MAAM,CAAC,GAAG,EAAE,CAAC,EAAA,kBAAA,EACzE,MAAM,CAAC,GAAG,EAC5B,OAAO,EAAE,KAAK,IAAI,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,EAAA,IACtC,cAAc,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAA,QAAA,EAEvC,KAAK,CAAC,UAAU,EAAA,CACV,CACV,CAAA,EAAA,CACG,EACL,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,MAAM,KACzCA,GAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,oBAAoB,CAAA,WAAW,KAAA,IAAA,IAAX,WAAW,KAAA,MAAA,GAAA,MAAA,GAAX,WAAW,CAAE,aAAa,EAAE,IAAG,2BAA2B,GAAG,EAAE,EAAE,EAAA,aAAA,EACpF,MAAM,EAAA,qBAAA,EACE,EAAE,EACtB,WAAW,EAAE,KAAK,IAAG;;;wCAGnB,KAAK,CAAC,cAAc,EAAE;AACtB,wCAAA,MAAM,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC;AAClC,oCAAA,CAAC,EACD,YAAY,EAAE,MAAM,CAAC,gBAAgB,EAAE,EAAA,CACvC,CACH,KArFI,MAAM,CAAC,GAAG,CAsFZ;AAET,oBAAA,CAAC,CAAC,CAAA,EAAA,CACC,EACJ,QAAQ,IAAI,UAAU,KACrBA,GAAA,CAAC,mBAAmB,EAAA,EAClB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,EAChC,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,GACtB,CACH,EACA,cAAc,IAAI,gBAAgB,KACjCA,GAAA,CAAC,mBAAmB,EAAA,EAClB,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,aAAa,EACxB,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,KAAK,EAAA,CACZ,CACH,EACA,gBAAgB,KACfD,IAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,sBAAsB,EAAA,IAAM,cAAc,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAA,QAAA,EAAA,CACzE,SAAS,IAAIC,YAAI,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAA,CAAI,EAC3E,OAAO,CAAC,GAAG,CAAC,MAAM,IAAG;wBACpB,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC;wBAC/C,MAAM,GAAG,GAAG,OAAO,IAAI,WAAW,GAAG,iBAAiB,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,CAAC,GAAG,EAAE;AACnG,wBAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM;wBAC5B,QACAA,YAAqB,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,YAC5D,YAAY,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,WAAW,KAC5CA,GAAA,CAAC,MAAM,IAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAI,CAC9D,EAAA,EAHM,MAAM,CAAC,GAAG,CAId;AAEP,oBAAA,CAAC,CAAC,CAAA,EAAA,CACC,CACN,CAAA,EAAA,CACK;AAEZ;;;;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --------------------------------------------------------------------------
|
|
3
|
+
* CoreUI PRO react-data-grid CDataGridHeaderMenu.tsx
|
|
4
|
+
* License (https://coreui.io/pro/license/)
|
|
5
|
+
* --------------------------------------------------------------------------
|
|
6
|
+
*/
|
|
7
|
+
import type { Table } from '@tanstack/react-table';
|
|
8
|
+
import { type RefObject } from 'react';
|
|
9
|
+
import { type MenuIcons } from './columns';
|
|
10
|
+
import type { CDataGridColumn, CDataGridColumnMenuBuilder, DataGridItem, DataGridLabels } from './types';
|
|
11
|
+
export interface CDataGridHeaderMenuProps {
|
|
12
|
+
builder: CDataGridColumnMenuBuilder | null;
|
|
13
|
+
column: CDataGridColumn;
|
|
14
|
+
container: RefObject<HTMLDivElement | null>;
|
|
15
|
+
icons: MenuIcons;
|
|
16
|
+
id: string;
|
|
17
|
+
labels: DataGridLabels;
|
|
18
|
+
onClose: (refocus?: boolean) => void;
|
|
19
|
+
ordering: boolean;
|
|
20
|
+
pinning: boolean;
|
|
21
|
+
position: {
|
|
22
|
+
buttonRight: number;
|
|
23
|
+
top: number;
|
|
24
|
+
};
|
|
25
|
+
sortable: boolean;
|
|
26
|
+
table: Table<DataGridItem>;
|
|
27
|
+
visibility: boolean;
|
|
28
|
+
}
|
|
29
|
+
export declare const CDataGridHeaderMenu: ({ builder, column, container, icons, id, labels, onClose, ordering, pinning, position, sortable, table, visibility }: CDataGridHeaderMenuProps) => import("react").ReactPortal | null;
|