@ishibashi0112/spreadsheet-grid-core 0.39.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 +21 -0
- package/dist/controllers/autoHeightMeasurer.cjs +1 -0
- package/dist/controllers/autoHeightMeasurer.d.ts +30 -0
- package/dist/controllers/autoHeightMeasurer.js +74 -0
- package/dist/controllers/clipboardController.cjs +2 -0
- package/dist/controllers/clipboardController.d.ts +31 -0
- package/dist/controllers/clipboardController.js +88 -0
- package/dist/controllers/columnAutosizeRunner.cjs +1 -0
- package/dist/controllers/columnAutosizeRunner.d.ts +31 -0
- package/dist/controllers/columnAutosizeRunner.js +61 -0
- package/dist/controllers/columnHeaderDragController.cjs +1 -0
- package/dist/controllers/columnHeaderDragController.d.ts +44 -0
- package/dist/controllers/columnHeaderDragController.js +256 -0
- package/dist/controllers/columnMenuController.cjs +1 -0
- package/dist/controllers/columnMenuController.d.ts +49 -0
- package/dist/controllers/columnMenuController.js +110 -0
- package/dist/controllers/contextMenuController.cjs +1 -0
- package/dist/controllers/contextMenuController.d.ts +30 -0
- package/dist/controllers/contextMenuController.js +65 -0
- package/dist/controllers/debouncedValueStore.cjs +1 -0
- package/dist/controllers/debouncedValueStore.d.ts +11 -0
- package/dist/controllers/debouncedValueStore.js +22 -0
- package/dist/controllers/editController.cjs +1 -0
- package/dist/controllers/editController.d.ts +27 -0
- package/dist/controllers/editController.js +76 -0
- package/dist/controllers/filterPopoverController.cjs +1 -0
- package/dist/controllers/filterPopoverController.d.ts +53 -0
- package/dist/controllers/filterPopoverController.js +146 -0
- package/dist/controllers/globalFilteredOrder.cjs +1 -0
- package/dist/controllers/globalFilteredOrder.d.ts +38 -0
- package/dist/controllers/globalFilteredOrder.js +78 -0
- package/dist/controllers/historyController.cjs +1 -0
- package/dist/controllers/historyController.d.ts +28 -0
- package/dist/controllers/historyController.js +52 -0
- package/dist/controllers/keyboardController.cjs +1 -0
- package/dist/controllers/keyboardController.d.ts +36 -0
- package/dist/controllers/keyboardController.js +111 -0
- package/dist/controllers/panelHeaderDragController.cjs +1 -0
- package/dist/controllers/panelHeaderDragController.d.ts +21 -0
- package/dist/controllers/panelHeaderDragController.js +32 -0
- package/dist/controllers/pointerInteractionsController.cjs +1 -0
- package/dist/controllers/pointerInteractionsController.d.ts +74 -0
- package/dist/controllers/pointerInteractionsController.js +262 -0
- package/dist/controllers/popoverSupport.cjs +1 -0
- package/dist/controllers/popoverSupport.d.ts +18 -0
- package/dist/controllers/popoverSupport.js +25 -0
- package/dist/controllers/rowDragController.cjs +1 -0
- package/dist/controllers/rowDragController.d.ts +40 -0
- package/dist/controllers/rowDragController.js +192 -0
- package/dist/controllers/scrollSyncController.cjs +1 -0
- package/dist/controllers/scrollSyncController.d.ts +17 -0
- package/dist/controllers/scrollSyncController.js +51 -0
- package/dist/controllers/selectOptionsCollector.cjs +1 -0
- package/dist/controllers/selectOptionsCollector.d.ts +31 -0
- package/dist/controllers/selectOptionsCollector.js +88 -0
- package/dist/controllers/serverSideRowModel.cjs +1 -0
- package/dist/controllers/serverSideRowModel.d.ts +36 -0
- package/dist/controllers/serverSideRowModel.js +153 -0
- package/dist/controllers/systemColorSchemeStore.cjs +1 -0
- package/dist/controllers/systemColorSchemeStore.d.ts +5 -0
- package/dist/controllers/systemColorSchemeStore.js +18 -0
- package/dist/controllers/toolPanelController.cjs +1 -0
- package/dist/controllers/toolPanelController.d.ts +36 -0
- package/dist/controllers/toolPanelController.js +112 -0
- package/dist/controllers/tooltipController.cjs +1 -0
- package/dist/controllers/tooltipController.d.ts +6 -0
- package/dist/controllers/tooltipController.js +75 -0
- package/dist/controllers/viewportSyncController.cjs +1 -0
- package/dist/controllers/viewportSyncController.d.ts +30 -0
- package/dist/controllers/viewportSyncController.js +40 -0
- package/dist/engine/columnCommands.cjs +1 -0
- package/dist/engine/columnCommands.d.ts +56 -0
- package/dist/engine/columnCommands.js +199 -0
- package/dist/engine/columnLayout.cjs +1 -0
- package/dist/engine/columnLayout.d.ts +43 -0
- package/dist/engine/columnLayout.js +91 -0
- package/dist/engine/createGridEngine.cjs +1 -0
- package/dist/engine/createGridEngine.d.ts +46 -0
- package/dist/engine/createGridEngine.js +52 -0
- package/dist/engine/filterPopoverCommands.cjs +1 -0
- package/dist/engine/filterPopoverCommands.d.ts +56 -0
- package/dist/engine/filterPopoverCommands.js +303 -0
- package/dist/engine/gridApi.cjs +1 -0
- package/dist/engine/gridApi.d.ts +61 -0
- package/dist/engine/gridApi.js +389 -0
- package/dist/engine/memo.cjs +1 -0
- package/dist/engine/memo.d.ts +2 -0
- package/dist/engine/memo.js +18 -0
- package/dist/engine/notifiers.cjs +1 -0
- package/dist/engine/notifiers.d.ts +35 -0
- package/dist/engine/notifiers.js +34 -0
- package/dist/engine/rowPipeline.cjs +1 -0
- package/dist/engine/rowPipeline.d.ts +50 -0
- package/dist/engine/rowPipeline.js +84 -0
- package/dist/engine/rowSelectionCommands.cjs +1 -0
- package/dist/engine/rowSelectionCommands.d.ts +21 -0
- package/dist/engine/rowSelectionCommands.js +57 -0
- package/dist/engine/verticalLayout.cjs +1 -0
- package/dist/engine/verticalLayout.d.ts +52 -0
- package/dist/engine/verticalLayout.js +60 -0
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +5 -0
- package/dist/logic/aggregation.cjs +1 -0
- package/dist/logic/aggregation.d.ts +13 -0
- package/dist/logic/aggregation.js +28 -0
- package/dist/logic/autoScrollGeometry.cjs +1 -0
- package/dist/logic/autoScrollGeometry.d.ts +27 -0
- package/dist/logic/autoScrollGeometry.js +19 -0
- package/dist/logic/autoSizeOnData.cjs +1 -0
- package/dist/logic/autoSizeOnData.d.ts +10 -0
- package/dist/logic/autoSizeOnData.js +19 -0
- package/dist/logic/cellOverflowTooltip.cjs +1 -0
- package/dist/logic/cellOverflowTooltip.d.ts +5 -0
- package/dist/logic/cellOverflowTooltip.js +4 -0
- package/dist/logic/checkboxEditor.cjs +1 -0
- package/dist/logic/checkboxEditor.d.ts +12 -0
- package/dist/logic/checkboxEditor.js +17 -0
- package/dist/logic/chunkedLoop.cjs +1 -0
- package/dist/logic/chunkedLoop.d.ts +8 -0
- package/dist/logic/chunkedLoop.js +18 -0
- package/dist/logic/clearCells.cjs +1 -0
- package/dist/logic/clearCells.d.ts +31 -0
- package/dist/logic/clearCells.js +91 -0
- package/dist/logic/columnAutosize.cjs +1 -0
- package/dist/logic/columnAutosize.d.ts +18 -0
- package/dist/logic/columnAutosize.js +150 -0
- package/dist/logic/columnFlex.cjs +1 -0
- package/dist/logic/columnFlex.d.ts +4 -0
- package/dist/logic/columnFlex.js +60 -0
- package/dist/logic/columnReset.cjs +1 -0
- package/dist/logic/columnReset.d.ts +7 -0
- package/dist/logic/columnReset.js +25 -0
- package/dist/logic/contextMenuTarget.cjs +1 -0
- package/dist/logic/contextMenuTarget.d.ts +4 -0
- package/dist/logic/contextMenuTarget.js +18 -0
- package/dist/logic/cx.cjs +1 -0
- package/dist/logic/cx.d.ts +1 -0
- package/dist/logic/cx.js +6 -0
- package/dist/logic/dateFilterCondition.cjs +1 -0
- package/dist/logic/dateFilterCondition.d.ts +26 -0
- package/dist/logic/dateFilterCondition.js +110 -0
- package/dist/logic/dateFilterPresets.cjs +1 -0
- package/dist/logic/dateFilterPresets.d.ts +13 -0
- package/dist/logic/dateFilterPresets.js +30 -0
- package/dist/logic/dateFilterTree.cjs +1 -0
- package/dist/logic/dateFilterTree.d.ts +17 -0
- package/dist/logic/dateFilterTree.js +75 -0
- package/dist/logic/datePickerCalendar.cjs +1 -0
- package/dist/logic/datePickerCalendar.d.ts +12 -0
- package/dist/logic/datePickerCalendar.js +41 -0
- package/dist/logic/detailRow.cjs +1 -0
- package/dist/logic/detailRow.d.ts +38 -0
- package/dist/logic/detailRow.js +78 -0
- package/dist/logic/domGuards.cjs +1 -0
- package/dist/logic/domGuards.d.ts +7 -0
- package/dist/logic/domGuards.js +4 -0
- package/dist/logic/editorValues.cjs +1 -0
- package/dist/logic/editorValues.d.ts +5 -0
- package/dist/logic/editorValues.js +32 -0
- package/dist/logic/exportCsv.cjs +3 -0
- package/dist/logic/exportCsv.d.ts +12 -0
- package/dist/logic/exportCsv.js +19 -0
- package/dist/logic/exportData.cjs +1 -0
- package/dist/logic/exportData.d.ts +9 -0
- package/dist/logic/exportData.js +24 -0
- package/dist/logic/exportScope.cjs +1 -0
- package/dist/logic/exportScope.d.ts +3 -0
- package/dist/logic/exportScope.js +4 -0
- package/dist/logic/filterPopoverLayout.cjs +1 -0
- package/dist/logic/filterPopoverLayout.d.ts +17 -0
- package/dist/logic/filterPopoverLayout.js +13 -0
- package/dist/logic/filterPopoverOutsideClick.cjs +1 -0
- package/dist/logic/filterPopoverOutsideClick.d.ts +2 -0
- package/dist/logic/filterPopoverOutsideClick.js +4 -0
- package/dist/logic/filterSummary.cjs +1 -0
- package/dist/logic/filterSummary.d.ts +3 -0
- package/dist/logic/filterSummary.js +22 -0
- package/dist/logic/filtering.cjs +1 -0
- package/dist/logic/filtering.d.ts +33 -0
- package/dist/logic/filtering.js +313 -0
- package/dist/logic/geometry.cjs +1 -0
- package/dist/logic/geometry.d.ts +72 -0
- package/dist/logic/geometry.js +161 -0
- package/dist/logic/gridState.cjs +1 -0
- package/dist/logic/gridState.d.ts +13 -0
- package/dist/logic/gridState.js +165 -0
- package/dist/logic/grouping.cjs +1 -0
- package/dist/logic/grouping.d.ts +34 -0
- package/dist/logic/grouping.js +93 -0
- package/dist/logic/history.cjs +1 -0
- package/dist/logic/history.d.ts +16 -0
- package/dist/logic/history.js +34 -0
- package/dist/logic/inferFilterType.cjs +1 -0
- package/dist/logic/inferFilterType.d.ts +19 -0
- package/dist/logic/inferFilterType.js +54 -0
- package/dist/logic/numberFilterCondition.cjs +1 -0
- package/dist/logic/numberFilterCondition.d.ts +21 -0
- package/dist/logic/numberFilterCondition.js +130 -0
- package/dist/logic/panelDragGeometry.cjs +1 -0
- package/dist/logic/panelDragGeometry.d.ts +13 -0
- package/dist/logic/panelDragGeometry.js +10 -0
- package/dist/logic/rowHeightStore.cjs +1 -0
- package/dist/logic/rowHeightStore.d.ts +13 -0
- package/dist/logic/rowHeightStore.js +41 -0
- package/dist/logic/rowReorder.cjs +1 -0
- package/dist/logic/rowReorder.d.ts +18 -0
- package/dist/logic/rowReorder.js +22 -0
- package/dist/logic/rowSelection.cjs +1 -0
- package/dist/logic/rowSelection.d.ts +16 -0
- package/dist/logic/rowSelection.js +49 -0
- package/dist/logic/scrollHint.cjs +1 -0
- package/dist/logic/scrollHint.d.ts +41 -0
- package/dist/logic/scrollHint.js +66 -0
- package/dist/logic/scrollTargets.cjs +1 -0
- package/dist/logic/scrollTargets.d.ts +22 -0
- package/dist/logic/scrollTargets.js +24 -0
- package/dist/logic/selectEditorState.cjs +1 -0
- package/dist/logic/selectEditorState.d.ts +28 -0
- package/dist/logic/selectEditorState.js +31 -0
- package/dist/logic/selectOptions.cjs +1 -0
- package/dist/logic/selectOptions.d.ts +9 -0
- package/dist/logic/selectOptions.js +23 -0
- package/dist/logic/serverSideBlocks.cjs +1 -0
- package/dist/logic/serverSideBlocks.d.ts +2 -0
- package/dist/logic/serverSideBlocks.js +14 -0
- package/dist/logic/serverSideCache.cjs +1 -0
- package/dist/logic/serverSideCache.d.ts +14 -0
- package/dist/logic/serverSideCache.js +42 -0
- package/dist/logic/serverSideEdits.cjs +1 -0
- package/dist/logic/serverSideEdits.d.ts +16 -0
- package/dist/logic/serverSideEdits.js +47 -0
- package/dist/logic/serverSideQuery.cjs +1 -0
- package/dist/logic/serverSideQuery.d.ts +7 -0
- package/dist/logic/serverSideQuery.js +21 -0
- package/dist/logic/setFilterSearch.cjs +1 -0
- package/dist/logic/setFilterSearch.d.ts +14 -0
- package/dist/logic/setFilterSearch.js +14 -0
- package/dist/logic/setFilterSelection.cjs +1 -0
- package/dist/logic/setFilterSelection.d.ts +5 -0
- package/dist/logic/setFilterSelection.js +4 -0
- package/dist/logic/slotDom.cjs +1 -0
- package/dist/logic/slotDom.d.ts +8 -0
- package/dist/logic/slotDom.js +22 -0
- package/dist/logic/slotProps.cjs +1 -0
- package/dist/logic/slotProps.d.ts +18 -0
- package/dist/logic/slotProps.js +63 -0
- package/dist/logic/sorting.cjs +1 -0
- package/dist/logic/sorting.d.ts +11 -0
- package/dist/logic/sorting.js +96 -0
- package/dist/logic/textFilterCondition.cjs +1 -0
- package/dist/logic/textFilterCondition.d.ts +18 -0
- package/dist/logic/textFilterCondition.js +55 -0
- package/dist/logic/theme.cjs +1 -0
- package/dist/logic/theme.d.ts +3 -0
- package/dist/logic/theme.js +4 -0
- package/dist/logic/tooltipGeometry.cjs +1 -0
- package/dist/logic/tooltipGeometry.d.ts +19 -0
- package/dist/logic/tooltipGeometry.js +16 -0
- package/dist/logic/validation.cjs +1 -0
- package/dist/logic/validation.d.ts +14 -0
- package/dist/logic/validation.js +47 -0
- package/dist/logic/valueFormatters.cjs +1 -0
- package/dist/logic/valueFormatters.d.ts +9 -0
- package/dist/logic/valueFormatters.js +17 -0
- package/dist/logic/valueStore.cjs +1 -0
- package/dist/logic/valueStore.d.ts +6 -0
- package/dist/logic/valueStore.js +18 -0
- package/dist/logic/verticalGeometry.cjs +1 -0
- package/dist/logic/verticalGeometry.d.ts +58 -0
- package/dist/logic/verticalGeometry.js +90 -0
- package/dist/model/gridActions.cjs +1 -0
- package/dist/model/gridActions.d.ts +125 -0
- package/dist/model/gridActions.js +114 -0
- package/dist/model/gridReducer.cjs +1 -0
- package/dist/model/gridReducer.d.ts +4 -0
- package/dist/model/gridReducer.js +247 -0
- package/dist/model/gridSelectors.cjs +1 -0
- package/dist/model/gridSelectors.d.ts +40 -0
- package/dist/model/gridSelectors.js +68 -0
- package/dist/model/gridStore.cjs +1 -0
- package/dist/model/gridStore.d.ts +24 -0
- package/dist/model/gridStore.js +38 -0
- package/dist/model/gridTypes.core.cjs +1 -0
- package/dist/model/gridTypes.core.d.ts +797 -0
- package/dist/model/gridTypes.core.js +0 -0
- package/dist/model/gridTypes.unbound.cjs +1 -0
- package/dist/model/gridTypes.unbound.d.ts +31 -0
- package/dist/model/gridTypes.unbound.js +0 -0
- package/dist/testing/index.cjs +1 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.js +51 -0
- package/dist/utils/clipboard.cjs +7 -0
- package/dist/utils/clipboard.d.ts +29 -0
- package/dist/utils/clipboard.js +110 -0
- package/dist/utils/excelColumnName.cjs +1 -0
- package/dist/utils/excelColumnName.d.ts +1 -0
- package/dist/utils/excelColumnName.js +9 -0
- package/dist/utils/permissions.cjs +1 -0
- package/dist/utils/permissions.d.ts +4 -0
- package/dist/utils/permissions.js +7 -0
- package/dist/utils/scheduler.cjs +1 -0
- package/dist/utils/scheduler.d.ts +1 -0
- package/dist/utils/scheduler.js +13 -0
- package/package.json +58 -0
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
import { getCellValue as e } from "../utils/permissions.js";
|
|
2
|
+
import { isBuiltinDateFilterPreset as t, normalizeDateFilterPresets as n } from "./dateFilterPresets.js";
|
|
3
|
+
//#region src/logic/filtering.ts
|
|
4
|
+
var r = (e) => {
|
|
5
|
+
let t = new Int32Array(e);
|
|
6
|
+
for (let n = 0; n < e; n += 1) t[n] = n;
|
|
7
|
+
return t;
|
|
8
|
+
}, i = (e) => e?.kind === "set", a = (e) => e?.kind === "numberSet", o = (e) => e?.kind === "textSet", s = (e) => e?.kind === "dateSet", c = (e) => e == null || String(e).trim() === "", l = (e) => {
|
|
9
|
+
if (!e) return !1;
|
|
10
|
+
switch (e.kind) {
|
|
11
|
+
case "set":
|
|
12
|
+
case "number":
|
|
13
|
+
case "custom": return !0;
|
|
14
|
+
case "numberSet":
|
|
15
|
+
case "textSet":
|
|
16
|
+
case "dateSet": return e.condition !== null || e.set !== null;
|
|
17
|
+
case "select": return e.value.length > 0;
|
|
18
|
+
case "text":
|
|
19
|
+
case "date": return e.value.trim().length > 0;
|
|
20
|
+
}
|
|
21
|
+
}, u = (e) => e == null || typeof e == "string" && e.trim() === "" ? NaN : Number(e), d = (e, t) => {
|
|
22
|
+
if (e.mode === "blank" || e.mode === "notBlank") return c(t) === (e.mode === "blank");
|
|
23
|
+
let n = u(t);
|
|
24
|
+
if (!Number.isFinite(n)) return !1;
|
|
25
|
+
if (e.mode === "range") return n >= e.min && n <= e.max;
|
|
26
|
+
switch (e.operator) {
|
|
27
|
+
case ">": return n > e.value;
|
|
28
|
+
case ">=": return n >= e.value;
|
|
29
|
+
case "<": return n < e.value;
|
|
30
|
+
case "<=": return n <= e.value;
|
|
31
|
+
case "!=": return n !== e.value;
|
|
32
|
+
default: return n === e.value;
|
|
33
|
+
}
|
|
34
|
+
}, f = (e, t) => {
|
|
35
|
+
if (e.mode === "blank" || e.mode === "notBlank") return c(t) === (e.mode === "blank");
|
|
36
|
+
let n = String(t ?? "").toLowerCase(), r = e.value.toLowerCase();
|
|
37
|
+
switch (e.mode) {
|
|
38
|
+
case "equals": return n === r;
|
|
39
|
+
case "startsWith": return n.startsWith(r);
|
|
40
|
+
case "endsWith": return n.endsWith(r);
|
|
41
|
+
default: return n.includes(r);
|
|
42
|
+
}
|
|
43
|
+
}, p = (e) => String(e).padStart(2, "0"), m = (e) => `${e.getFullYear()}-${p(e.getMonth() + 1)}-${p(e.getDate())}`, h = (e) => {
|
|
44
|
+
if (e == null) return null;
|
|
45
|
+
if (e instanceof Date) return Number.isNaN(e.getTime()) ? null : m(e);
|
|
46
|
+
let t = String(e).trim();
|
|
47
|
+
if (!t) return null;
|
|
48
|
+
let n = t.match(/^(\d{4})[-/](\d{1,2})[-/](\d{1,2})(?:[T ].*)?$/);
|
|
49
|
+
if (!n) return null;
|
|
50
|
+
let r = Number(n[2]), i = Number(n[3]);
|
|
51
|
+
return r < 1 || r > 12 || i < 1 || i > 31 ? null : `${n[1]}-${p(r)}-${p(i)}`;
|
|
52
|
+
}, g = (e) => {
|
|
53
|
+
let t = h(e);
|
|
54
|
+
return t === null ? c(e) ? "" : String(e) : t;
|
|
55
|
+
}, _ = (e, t) => {
|
|
56
|
+
let n = m(t);
|
|
57
|
+
switch (e) {
|
|
58
|
+
case "today": return {
|
|
59
|
+
from: n,
|
|
60
|
+
to: n
|
|
61
|
+
};
|
|
62
|
+
case "thisMonth": {
|
|
63
|
+
let e = new Date(t.getFullYear(), t.getMonth(), 1), n = new Date(t.getFullYear(), t.getMonth() + 1, 0);
|
|
64
|
+
return {
|
|
65
|
+
from: m(e),
|
|
66
|
+
to: m(n)
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
default: return {
|
|
70
|
+
from: m(new Date(t.getFullYear(), t.getMonth(), t.getDate() - 29)),
|
|
71
|
+
to: n
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}, v = (e) => e === void 0 ? null : h(e), y = (e, n, r) => {
|
|
75
|
+
if (e.mode !== "preset") return e;
|
|
76
|
+
let i = r?.find((t) => t.id === e.preset);
|
|
77
|
+
if (i?.resolve) {
|
|
78
|
+
let e = i.resolve(n), t = v(e.from), r = v(e.to);
|
|
79
|
+
return t !== null && r !== null ? t <= r ? {
|
|
80
|
+
mode: "range",
|
|
81
|
+
from: t,
|
|
82
|
+
to: r
|
|
83
|
+
} : {
|
|
84
|
+
mode: "range",
|
|
85
|
+
from: r,
|
|
86
|
+
to: t
|
|
87
|
+
} : t === null ? r === null ? null : {
|
|
88
|
+
mode: "onOrBefore",
|
|
89
|
+
value: r
|
|
90
|
+
} : {
|
|
91
|
+
mode: "onOrAfter",
|
|
92
|
+
value: t
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
return t(e.preset) ? {
|
|
96
|
+
mode: "range",
|
|
97
|
+
..._(e.preset, n)
|
|
98
|
+
} : null;
|
|
99
|
+
}, b = (e, t, n, r) => {
|
|
100
|
+
let i = y(e, n, r);
|
|
101
|
+
if (i === null) return !0;
|
|
102
|
+
if (i.mode === "blank" || i.mode === "notBlank") return c(t) === (i.mode === "blank");
|
|
103
|
+
let a = h(t);
|
|
104
|
+
if (a === null) return !1;
|
|
105
|
+
switch (i.mode) {
|
|
106
|
+
case "range": return a >= i.from && a <= i.to;
|
|
107
|
+
case "onOrAfter": return a >= i.value;
|
|
108
|
+
case "onOrBefore": return a <= i.value;
|
|
109
|
+
case "notEquals": return a !== i.value;
|
|
110
|
+
default: return a === i.value;
|
|
111
|
+
}
|
|
112
|
+
}, x = (e) => {
|
|
113
|
+
let t = e?.kind === "number" ? e.parsed : e?.kind === "numberSet" ? e.condition : null;
|
|
114
|
+
return t?.mode === "comparison" || t?.mode === "range";
|
|
115
|
+
}, S = (e) => {
|
|
116
|
+
let t = e.trim();
|
|
117
|
+
if (!t) return null;
|
|
118
|
+
let n = t.match(/^(-?\d+(?:\.\d+)?)\s*\.\.\s*(-?\d+(?:\.\d+)?)$/);
|
|
119
|
+
if (n) {
|
|
120
|
+
let e = Number(n[1]), t = Number(n[2]);
|
|
121
|
+
return !Number.isFinite(e) || !Number.isFinite(t) ? null : {
|
|
122
|
+
mode: "range",
|
|
123
|
+
min: Math.min(e, t),
|
|
124
|
+
max: Math.max(e, t)
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
let r = t.match(/^(<=|>=|=|<|>)?\s*(-?\d+(?:\.\d+)?)$/);
|
|
128
|
+
return r ? {
|
|
129
|
+
mode: "comparison",
|
|
130
|
+
operator: r[1] ?? "=",
|
|
131
|
+
value: Number(r[2])
|
|
132
|
+
} : null;
|
|
133
|
+
}, C = (e) => e?.kind === "number", w = (e) => {
|
|
134
|
+
let t = e.trim();
|
|
135
|
+
return t ? {
|
|
136
|
+
kind: "number",
|
|
137
|
+
raw: t,
|
|
138
|
+
parsed: S(t)
|
|
139
|
+
} : null;
|
|
140
|
+
}, T = (e) => {
|
|
141
|
+
if (!e) return "";
|
|
142
|
+
switch (e.kind) {
|
|
143
|
+
case "number": return e.raw;
|
|
144
|
+
case "text":
|
|
145
|
+
case "date":
|
|
146
|
+
case "select": return e.value;
|
|
147
|
+
case "set":
|
|
148
|
+
case "numberSet":
|
|
149
|
+
case "textSet":
|
|
150
|
+
case "dateSet":
|
|
151
|
+
case "custom": return "";
|
|
152
|
+
}
|
|
153
|
+
}, E = (e, t) => {
|
|
154
|
+
let n = String(t ?? "").trim();
|
|
155
|
+
if (!n) return !0;
|
|
156
|
+
let r = S(n);
|
|
157
|
+
if (!r) return String(e ?? "").toLowerCase().includes(n.toLowerCase());
|
|
158
|
+
if (r.mode === "blank" || r.mode === "notBlank") return c(e) === (r.mode === "blank");
|
|
159
|
+
let i = u(e);
|
|
160
|
+
if (!Number.isFinite(i)) return !1;
|
|
161
|
+
if (r.mode === "range") return i >= r.min && i <= r.max;
|
|
162
|
+
switch (r.operator) {
|
|
163
|
+
case ">": return i > r.value;
|
|
164
|
+
case ">=": return i >= r.value;
|
|
165
|
+
case "<": return i < r.value;
|
|
166
|
+
case "<=": return i <= r.value;
|
|
167
|
+
case "!=": return i !== r.value;
|
|
168
|
+
default: return i === r.value;
|
|
169
|
+
}
|
|
170
|
+
}, D = (t, n, r) => {
|
|
171
|
+
if (t.mode === "blank" || t.mode === "notBlank") {
|
|
172
|
+
let r = t.mode === "blank";
|
|
173
|
+
return (t) => c(e(t, n)) === r;
|
|
174
|
+
}
|
|
175
|
+
if (t.mode === "range") {
|
|
176
|
+
let { min: i, max: a } = t;
|
|
177
|
+
return (t, o) => {
|
|
178
|
+
let s = r ? r[o] : u(e(t, n));
|
|
179
|
+
return Number.isFinite(s) && s >= i && s <= a;
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
let { operator: i, value: a } = t;
|
|
183
|
+
return (t, o) => {
|
|
184
|
+
let s = r ? r[o] : u(e(t, n));
|
|
185
|
+
if (!Number.isFinite(s)) return !1;
|
|
186
|
+
switch (i) {
|
|
187
|
+
case ">": return s > a;
|
|
188
|
+
case ">=": return s >= a;
|
|
189
|
+
case "<": return s < a;
|
|
190
|
+
case "<=": return s <= a;
|
|
191
|
+
case "!=": return s !== a;
|
|
192
|
+
default: return s === a;
|
|
193
|
+
}
|
|
194
|
+
};
|
|
195
|
+
}, O = (t, n) => {
|
|
196
|
+
if (t.mode === "blank" || t.mode === "notBlank") {
|
|
197
|
+
let r = t.mode === "blank";
|
|
198
|
+
return (t) => c(e(t, n)) === r;
|
|
199
|
+
}
|
|
200
|
+
let r = t.value.toLowerCase(), i = t.mode;
|
|
201
|
+
return (t) => {
|
|
202
|
+
let a = String(e(t, n) ?? "").toLowerCase();
|
|
203
|
+
switch (i) {
|
|
204
|
+
case "equals": return a === r;
|
|
205
|
+
case "startsWith": return a.startsWith(r);
|
|
206
|
+
case "endsWith": return a.endsWith(r);
|
|
207
|
+
default: return a.includes(r);
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
}, k = (t, n, r) => {
|
|
211
|
+
let i = new Set(n);
|
|
212
|
+
return t === "exclude" ? (t) => !i.has(String(e(t, r) ?? "")) : (t) => i.has(String(e(t, r) ?? ""));
|
|
213
|
+
}, A = (t, n, r) => {
|
|
214
|
+
let i = new Set(n);
|
|
215
|
+
return t === "exclude" ? (t) => !i.has(g(e(t, r))) : (t) => i.has(g(e(t, r)));
|
|
216
|
+
}, j = (t, r, i) => {
|
|
217
|
+
let a = y(t, i, n(r.dateFilterPresets));
|
|
218
|
+
if (a === null) return () => !0;
|
|
219
|
+
if (a.mode === "blank" || a.mode === "notBlank") {
|
|
220
|
+
let t = a.mode === "blank";
|
|
221
|
+
return (n) => c(e(n, r)) === t;
|
|
222
|
+
}
|
|
223
|
+
if (a.mode === "range") {
|
|
224
|
+
let { from: t, to: n } = a;
|
|
225
|
+
return (i) => {
|
|
226
|
+
let a = h(e(i, r));
|
|
227
|
+
return a !== null && a >= t && a <= n;
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
let { mode: o, value: s } = a;
|
|
231
|
+
return (t) => {
|
|
232
|
+
let n = h(e(t, r));
|
|
233
|
+
if (n === null) return !1;
|
|
234
|
+
switch (o) {
|
|
235
|
+
case "onOrAfter": return n >= s;
|
|
236
|
+
case "onOrBefore": return n <= s;
|
|
237
|
+
case "notEquals": return n !== s;
|
|
238
|
+
default: return n === s;
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
}, M = (t, n, r, i) => {
|
|
242
|
+
if (!l(n)) return null;
|
|
243
|
+
let a = n;
|
|
244
|
+
if (t.filterFn) {
|
|
245
|
+
let e = t.filterFn;
|
|
246
|
+
return (t) => e(t, a);
|
|
247
|
+
}
|
|
248
|
+
switch (a.kind) {
|
|
249
|
+
case "set": return k(a.mode, a.values, t);
|
|
250
|
+
case "number": {
|
|
251
|
+
let n = a.parsed;
|
|
252
|
+
if (n === null) {
|
|
253
|
+
let n = a.raw.toLowerCase();
|
|
254
|
+
return (r) => String(e(r, t) ?? "").toLowerCase().includes(n);
|
|
255
|
+
}
|
|
256
|
+
return D(n, t, r);
|
|
257
|
+
}
|
|
258
|
+
case "numberSet":
|
|
259
|
+
case "textSet":
|
|
260
|
+
case "dateSet": {
|
|
261
|
+
let e = a.kind === "numberSet" ? a.condition ? D(a.condition, t, r) : null : a.kind === "textSet" ? a.condition ? O(a.condition, t) : null : a.condition ? j(a.condition, t, i ?? /* @__PURE__ */ new Date()) : null, n = a.set ? a.kind === "dateSet" ? A(a.set.mode, a.set.values, t) : k(a.set.mode, a.set.values, t) : null;
|
|
262
|
+
return e && n ? (t, r) => e(t, r) && n(t, r) : e ?? n;
|
|
263
|
+
}
|
|
264
|
+
case "select": {
|
|
265
|
+
let n = a.value;
|
|
266
|
+
return (r) => String(e(r, t) ?? "") === n;
|
|
267
|
+
}
|
|
268
|
+
case "text":
|
|
269
|
+
case "date": {
|
|
270
|
+
let n = a.value.trim().toLowerCase();
|
|
271
|
+
return (r) => String(e(r, t) ?? "").toLowerCase().includes(n);
|
|
272
|
+
}
|
|
273
|
+
case "custom": {
|
|
274
|
+
let n = String(a.value ?? "").trim().toLowerCase();
|
|
275
|
+
return (r) => String(e(r, t) ?? "").toLowerCase().includes(n);
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}, N = (t, n, r) => {
|
|
279
|
+
let i = n.length;
|
|
280
|
+
for (let a = 0; a < i; a += 1) {
|
|
281
|
+
let i = e(t, n[a]);
|
|
282
|
+
if (String(i ?? "").toLowerCase().includes(r)) return !0;
|
|
283
|
+
}
|
|
284
|
+
return !1;
|
|
285
|
+
}, P = (e, t, n, r) => {
|
|
286
|
+
let i = r.trim().toLowerCase();
|
|
287
|
+
if (!i) return t;
|
|
288
|
+
let a = t.length, o = new Int32Array(a), s = 0;
|
|
289
|
+
for (let r = 0; r < a; r += 1) {
|
|
290
|
+
let a = t[r];
|
|
291
|
+
N(e[a], n, i) && (o[s] = a, s += 1);
|
|
292
|
+
}
|
|
293
|
+
return s === a ? t : o.slice(0, s);
|
|
294
|
+
}, F = (e, t, n, r, i, a) => {
|
|
295
|
+
let o = [], s = a ?? /* @__PURE__ */ new Date();
|
|
296
|
+
for (let e of n) {
|
|
297
|
+
let t = M(e, r[e.key], i?.get(e.key), s);
|
|
298
|
+
t && o.push(t);
|
|
299
|
+
}
|
|
300
|
+
if (o.length === 0) return t;
|
|
301
|
+
let c = t.length, l = o.length, u = new Int32Array(c), d = 0;
|
|
302
|
+
for (let n = 0; n < c; n += 1) {
|
|
303
|
+
let r = t[n], i = e[r], a = !0;
|
|
304
|
+
for (let e = 0; e < l; e += 1) if (!o[e](i, r)) {
|
|
305
|
+
a = !1;
|
|
306
|
+
break;
|
|
307
|
+
}
|
|
308
|
+
a && (u[d] = r, d += 1);
|
|
309
|
+
}
|
|
310
|
+
return d === c ? t : u.slice(0, d);
|
|
311
|
+
};
|
|
312
|
+
//#endregion
|
|
313
|
+
export { E as applyNumberFilter, w as buildNumberColumnFilterValue, u as coerceNumberFilterCellValue, x as columnFilterUsesNumericKey, T as columnFilterValueToDraftText, r as createSourceOrder, F as filterOrderByColumns, P as filterOrderByGlobalText, m as formatDateKey, l as isActiveColumnFilterValue, c as isBlankCellValue, s as isDateSetColumnFilterValue, C as isNumberColumnFilterValue, a as isNumberSetColumnFilterValue, i as isSetColumnFilterValue, o as isTextSetColumnFilterValue, b as matchesParsedDateFilter, d as matchesParsedNumberFilter, f as matchesParsedTextFilter, S as parseNumberFilterExpression, _ as resolveDateFilterPreset, y as resolveParsedDateFilter, N as rowMatchesGlobalText, h as toDateKey, g as toDateSetKey };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t,n)=>Math.min(Math.max(e,t),n),t=(e,t)=>{let n=0;return e.map((e,r)=>{let i=t[e.key]??e.width,a={index:r,column:e,start:n,size:i,end:n+i};return n+=i,a})},n=(e,t)=>{if(e.length===0)return-1;if(t<=0)return 0;let n=0,r=e.length-1;for(;n<=r;){let i=Math.floor((n+r)/2),a=e[i];if(t<a.start){r=i-1;continue}if(t>=a.end){n=i+1;continue}return a.index}return Math.max(0,Math.min(n,e.length-1))},r=e=>e.pinned===`left`?`left`:e.pinned===`right`?`right`:`center`,i=e=>{let t=[],n=[],i=[];for(let a of e){let e=r(a);e===`left`?t.push(a):e===`right`?i.push(a):n.push(a)}return[...t,...n,...i]},a=e=>{let t={left:[],center:[],right:[]};return e.forEach((e,n)=>{let i=r(e);t[i].push({column:e,logicalIndex:n})}),t},o=(e,t)=>e.map(({column:e})=>t[e.key]??e.width),s=(e,t)=>o(e,t).join(`,`),c=e=>e===``?[]:e.split(`,`).map(Number),l=(e,t,n)=>{let r=0;return{pane:e,entries:t.map(({column:e,logicalIndex:t},i)=>{let a=n[i]??e.width,o={column:e,logicalIndex:t,paneLocalStart:r,paneLocalSize:a,paneLocalEnd:r+a};return r+=a,o}),totalWidth:r}},u=(e,t,n)=>l(e,t,c(n)),d=(e,t)=>{let n=a(e);return{left:l(`left`,n.left,o(n.left,t)),center:l(`center`,n.center,o(n.center,t)),right:l(`right`,n.right,o(n.right,t))}},f=(e,t)=>{let n=[[`left`,e.left],[`center`,e.center],[`right`,e.right]];for(let[e,r]of n){let n=r.entries.find(e=>e.logicalIndex===t);if(n)return{pane:e,entry:n}}return null},p=(e,t)=>{let{entries:n}=e;if(n.length===0)return-1;if(t<=0)return n[0].logicalIndex;let r=0,i=n.length-1;for(;r<=i;){let e=Math.floor((r+i)/2),a=n[e];if(t<a.paneLocalStart){i=e-1;continue}if(t>=a.paneLocalEnd){r=e+1;continue}return a.logicalIndex}return n[Math.max(0,Math.min(r,n.length-1))].logicalIndex},m=(e,t)=>{let{entries:n}=e;for(let e=0;e<n.length;e+=1){let r=n[e];if(t<r.paneLocalStart+r.paneLocalSize/2)return e}return n.length},h=(e,t)=>{let{entries:n,totalWidth:r}=e;return n.length===0?0:t<=0?n[0].paneLocalStart:t>=n.length?r:n[t].paneLocalStart},g=e=>({left:e.left.entries.length,center:e.center.entries.length,right:e.right.entries.length}),_=e=>e.left.entries.length===0&&e.right.entries.length===0,v=(e,t,n)=>{let r=Math.min(t,n),i=Math.max(t,n),a=1/0,o=-1/0,s=!1;for(let t of e.entries)t.logicalIndex<r||t.logicalIndex>i||(s=!0,t.paneLocalStart<a&&(a=t.paneLocalStart),t.paneLocalEnd>o&&(o=t.paneLocalEnd));return s?{start:a,end:o,width:o-a}:null},y=(e,t,n)=>({left:v(e.left,t,n),center:v(e.center,t,n),right:v(e.right,t,n)}),b=e=>{let t=e=>e.entries.length===0?null:{start:0,end:e.totalWidth,width:e.totalWidth};return{left:t(e.left),center:t(e.center),right:t(e.right)}},x=(e,t)=>{let n=f(e,t);if(!n)return null;let{pane:r,entry:i}=n;return{pane:r,extent:{start:i.paneLocalStart,end:i.paneLocalEnd,width:i.paneLocalSize}}};exports.buildColumnMeasurements=t,exports.buildGridPaneLayout=d,exports.buildPaneGeometry=l,exports.buildPaneGeometryFromWidthsKey=u,exports.buildPaneWidthsKey=s,exports.clamp=e,exports.computeFullWidthPaneExtents=b,exports.computePaneColumnExtents=y,exports.computeSinglePaneColumnExtent=x,exports.countPinnedColumns=g,exports.findColumnIndexFromOffset=n,exports.findLogicalIndexFromPaneOffset=p,exports.findPaneDropSlot=m,exports.getColumnPane=r,exports.isPlainLayout=_,exports.lookupPaneColumn=f,exports.paneDropSlotBoundaryX=h,exports.reorderColumnsByPane=i,exports.splitOrderedColumnsByPane=a;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { GridColumn } from '../model/gridTypes.unbound';
|
|
2
|
+
export type ColumnMeasurement<T> = {
|
|
3
|
+
index: number;
|
|
4
|
+
column: GridColumn<T>;
|
|
5
|
+
start: number;
|
|
6
|
+
size: number;
|
|
7
|
+
end: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const clamp: (value: number, min: number, max: number) => number;
|
|
10
|
+
export declare const buildColumnMeasurements: <T>(columns: GridColumn<T>[], columnWidths: Record<string, number>) => ColumnMeasurement<T>[];
|
|
11
|
+
export declare const findColumnIndexFromOffset: <T>(measurements: ColumnMeasurement<T>[], offset: number) => number;
|
|
12
|
+
export type ColumnPane = 'left' | 'center' | 'right';
|
|
13
|
+
export declare const getColumnPane: <T>(column: GridColumn<T>) => ColumnPane;
|
|
14
|
+
export declare const reorderColumnsByPane: <T>(columns: GridColumn<T>[]) => GridColumn<T>[];
|
|
15
|
+
export type PaneColumnEntry<T> = {
|
|
16
|
+
column: GridColumn<T>;
|
|
17
|
+
logicalIndex: number;
|
|
18
|
+
paneLocalStart: number;
|
|
19
|
+
paneLocalSize: number;
|
|
20
|
+
paneLocalEnd: number;
|
|
21
|
+
};
|
|
22
|
+
export type PaneGeometry<T> = {
|
|
23
|
+
pane: ColumnPane;
|
|
24
|
+
entries: PaneColumnEntry<T>[];
|
|
25
|
+
totalWidth: number;
|
|
26
|
+
};
|
|
27
|
+
export type GridPaneLayout<T> = {
|
|
28
|
+
left: PaneGeometry<T>;
|
|
29
|
+
center: PaneGeometry<T>;
|
|
30
|
+
right: PaneGeometry<T>;
|
|
31
|
+
};
|
|
32
|
+
export type PaneSourceColumn<T> = {
|
|
33
|
+
column: GridColumn<T>;
|
|
34
|
+
logicalIndex: number;
|
|
35
|
+
};
|
|
36
|
+
export type PaneSourceColumns<T> = {
|
|
37
|
+
left: PaneSourceColumn<T>[];
|
|
38
|
+
center: PaneSourceColumn<T>[];
|
|
39
|
+
right: PaneSourceColumn<T>[];
|
|
40
|
+
};
|
|
41
|
+
export declare const splitOrderedColumnsByPane: <T>(orderedColumns: GridColumn<T>[]) => PaneSourceColumns<T>;
|
|
42
|
+
export declare const buildPaneWidthsKey: <T>(items: PaneSourceColumn<T>[], columnWidths: Record<string, number>) => string;
|
|
43
|
+
export declare const buildPaneGeometry: <T>(pane: ColumnPane, items: PaneSourceColumn<T>[], resolvedWidths: number[]) => PaneGeometry<T>;
|
|
44
|
+
export declare const buildPaneGeometryFromWidthsKey: <T>(pane: ColumnPane, items: PaneSourceColumn<T>[], widthsKey: string) => PaneGeometry<T>;
|
|
45
|
+
export declare const buildGridPaneLayout: <T>(orderedColumns: GridColumn<T>[], columnWidths: Record<string, number>) => GridPaneLayout<T>;
|
|
46
|
+
export type PaneColumnLookupResult<T> = {
|
|
47
|
+
pane: ColumnPane;
|
|
48
|
+
entry: PaneColumnEntry<T>;
|
|
49
|
+
};
|
|
50
|
+
export declare const lookupPaneColumn: <T>(layout: GridPaneLayout<T>, logicalIndex: number) => PaneColumnLookupResult<T> | null;
|
|
51
|
+
export declare const findLogicalIndexFromPaneOffset: <T>(paneGeometry: PaneGeometry<T>, offset: number) => number;
|
|
52
|
+
export declare const findPaneDropSlot: <T>(paneGeometry: PaneGeometry<T>, paneLocalOffset: number) => number;
|
|
53
|
+
export declare const paneDropSlotBoundaryX: <T>(paneGeometry: PaneGeometry<T>, slot: number) => number;
|
|
54
|
+
export declare const countPinnedColumns: <T>(layout: GridPaneLayout<T>) => {
|
|
55
|
+
left: number;
|
|
56
|
+
center: number;
|
|
57
|
+
right: number;
|
|
58
|
+
};
|
|
59
|
+
export declare const isPlainLayout: <T>(layout: GridPaneLayout<T>) => boolean;
|
|
60
|
+
export type PaneColumnExtent = {
|
|
61
|
+
start: number;
|
|
62
|
+
end: number;
|
|
63
|
+
width: number;
|
|
64
|
+
};
|
|
65
|
+
export type PaneColumnExtentMap = Record<ColumnPane, PaneColumnExtent | null>;
|
|
66
|
+
export declare const computePaneColumnExtents: <T>(layout: GridPaneLayout<T>, startLogicalIndex: number, endLogicalIndex: number) => PaneColumnExtentMap;
|
|
67
|
+
export declare const computeFullWidthPaneExtents: <T>(layout: GridPaneLayout<T>) => PaneColumnExtentMap;
|
|
68
|
+
export type SinglePaneColumnExtent = {
|
|
69
|
+
pane: ColumnPane;
|
|
70
|
+
extent: PaneColumnExtent;
|
|
71
|
+
};
|
|
72
|
+
export declare const computeSinglePaneColumnExtent: <T>(layout: GridPaneLayout<T>, logicalIndex: number) => SinglePaneColumnExtent | null;
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
//#region src/logic/geometry.ts
|
|
2
|
+
var e = (e, t, n) => Math.min(Math.max(e, t), n), t = (e, t) => {
|
|
3
|
+
let n = 0;
|
|
4
|
+
return e.map((e, r) => {
|
|
5
|
+
let i = t[e.key] ?? e.width, a = {
|
|
6
|
+
index: r,
|
|
7
|
+
column: e,
|
|
8
|
+
start: n,
|
|
9
|
+
size: i,
|
|
10
|
+
end: n + i
|
|
11
|
+
};
|
|
12
|
+
return n += i, a;
|
|
13
|
+
});
|
|
14
|
+
}, n = (e, t) => {
|
|
15
|
+
if (e.length === 0) return -1;
|
|
16
|
+
if (t <= 0) return 0;
|
|
17
|
+
let n = 0, r = e.length - 1;
|
|
18
|
+
for (; n <= r;) {
|
|
19
|
+
let i = Math.floor((n + r) / 2), a = e[i];
|
|
20
|
+
if (t < a.start) {
|
|
21
|
+
r = i - 1;
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (t >= a.end) {
|
|
25
|
+
n = i + 1;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
return a.index;
|
|
29
|
+
}
|
|
30
|
+
return Math.max(0, Math.min(n, e.length - 1));
|
|
31
|
+
}, r = (e) => e.pinned === "left" ? "left" : e.pinned === "right" ? "right" : "center", i = (e) => {
|
|
32
|
+
let t = [], n = [], i = [];
|
|
33
|
+
for (let a of e) {
|
|
34
|
+
let e = r(a);
|
|
35
|
+
e === "left" ? t.push(a) : e === "right" ? i.push(a) : n.push(a);
|
|
36
|
+
}
|
|
37
|
+
return [
|
|
38
|
+
...t,
|
|
39
|
+
...n,
|
|
40
|
+
...i
|
|
41
|
+
];
|
|
42
|
+
}, a = (e) => {
|
|
43
|
+
let t = {
|
|
44
|
+
left: [],
|
|
45
|
+
center: [],
|
|
46
|
+
right: []
|
|
47
|
+
};
|
|
48
|
+
return e.forEach((e, n) => {
|
|
49
|
+
let i = r(e);
|
|
50
|
+
t[i].push({
|
|
51
|
+
column: e,
|
|
52
|
+
logicalIndex: n
|
|
53
|
+
});
|
|
54
|
+
}), t;
|
|
55
|
+
}, o = (e, t) => e.map(({ column: e }) => t[e.key] ?? e.width), s = (e, t) => o(e, t).join(","), c = (e) => e === "" ? [] : e.split(",").map(Number), l = (e, t, n) => {
|
|
56
|
+
let r = 0;
|
|
57
|
+
return {
|
|
58
|
+
pane: e,
|
|
59
|
+
entries: t.map(({ column: e, logicalIndex: t }, i) => {
|
|
60
|
+
let a = n[i] ?? e.width, o = {
|
|
61
|
+
column: e,
|
|
62
|
+
logicalIndex: t,
|
|
63
|
+
paneLocalStart: r,
|
|
64
|
+
paneLocalSize: a,
|
|
65
|
+
paneLocalEnd: r + a
|
|
66
|
+
};
|
|
67
|
+
return r += a, o;
|
|
68
|
+
}),
|
|
69
|
+
totalWidth: r
|
|
70
|
+
};
|
|
71
|
+
}, u = (e, t, n) => l(e, t, c(n)), d = (e, t) => {
|
|
72
|
+
let n = a(e);
|
|
73
|
+
return {
|
|
74
|
+
left: l("left", n.left, o(n.left, t)),
|
|
75
|
+
center: l("center", n.center, o(n.center, t)),
|
|
76
|
+
right: l("right", n.right, o(n.right, t))
|
|
77
|
+
};
|
|
78
|
+
}, f = (e, t) => {
|
|
79
|
+
let n = [
|
|
80
|
+
["left", e.left],
|
|
81
|
+
["center", e.center],
|
|
82
|
+
["right", e.right]
|
|
83
|
+
];
|
|
84
|
+
for (let [e, r] of n) {
|
|
85
|
+
let n = r.entries.find((e) => e.logicalIndex === t);
|
|
86
|
+
if (n) return {
|
|
87
|
+
pane: e,
|
|
88
|
+
entry: n
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return null;
|
|
92
|
+
}, p = (e, t) => {
|
|
93
|
+
let { entries: n } = e;
|
|
94
|
+
if (n.length === 0) return -1;
|
|
95
|
+
if (t <= 0) return n[0].logicalIndex;
|
|
96
|
+
let r = 0, i = n.length - 1;
|
|
97
|
+
for (; r <= i;) {
|
|
98
|
+
let e = Math.floor((r + i) / 2), a = n[e];
|
|
99
|
+
if (t < a.paneLocalStart) {
|
|
100
|
+
i = e - 1;
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (t >= a.paneLocalEnd) {
|
|
104
|
+
r = e + 1;
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
return a.logicalIndex;
|
|
108
|
+
}
|
|
109
|
+
return n[Math.max(0, Math.min(r, n.length - 1))].logicalIndex;
|
|
110
|
+
}, m = (e, t) => {
|
|
111
|
+
let { entries: n } = e;
|
|
112
|
+
for (let e = 0; e < n.length; e += 1) {
|
|
113
|
+
let r = n[e];
|
|
114
|
+
if (t < r.paneLocalStart + r.paneLocalSize / 2) return e;
|
|
115
|
+
}
|
|
116
|
+
return n.length;
|
|
117
|
+
}, h = (e, t) => {
|
|
118
|
+
let { entries: n, totalWidth: r } = e;
|
|
119
|
+
return n.length === 0 ? 0 : t <= 0 ? n[0].paneLocalStart : t >= n.length ? r : n[t].paneLocalStart;
|
|
120
|
+
}, g = (e) => ({
|
|
121
|
+
left: e.left.entries.length,
|
|
122
|
+
center: e.center.entries.length,
|
|
123
|
+
right: e.right.entries.length
|
|
124
|
+
}), _ = (e) => e.left.entries.length === 0 && e.right.entries.length === 0, v = (e, t, n) => {
|
|
125
|
+
let r = Math.min(t, n), i = Math.max(t, n), a = Infinity, o = -Infinity, s = !1;
|
|
126
|
+
for (let t of e.entries) t.logicalIndex < r || t.logicalIndex > i || (s = !0, t.paneLocalStart < a && (a = t.paneLocalStart), t.paneLocalEnd > o && (o = t.paneLocalEnd));
|
|
127
|
+
return s ? {
|
|
128
|
+
start: a,
|
|
129
|
+
end: o,
|
|
130
|
+
width: o - a
|
|
131
|
+
} : null;
|
|
132
|
+
}, y = (e, t, n) => ({
|
|
133
|
+
left: v(e.left, t, n),
|
|
134
|
+
center: v(e.center, t, n),
|
|
135
|
+
right: v(e.right, t, n)
|
|
136
|
+
}), b = (e) => {
|
|
137
|
+
let t = (e) => e.entries.length === 0 ? null : {
|
|
138
|
+
start: 0,
|
|
139
|
+
end: e.totalWidth,
|
|
140
|
+
width: e.totalWidth
|
|
141
|
+
};
|
|
142
|
+
return {
|
|
143
|
+
left: t(e.left),
|
|
144
|
+
center: t(e.center),
|
|
145
|
+
right: t(e.right)
|
|
146
|
+
};
|
|
147
|
+
}, x = (e, t) => {
|
|
148
|
+
let n = f(e, t);
|
|
149
|
+
if (!n) return null;
|
|
150
|
+
let { pane: r, entry: i } = n;
|
|
151
|
+
return {
|
|
152
|
+
pane: r,
|
|
153
|
+
extent: {
|
|
154
|
+
start: i.paneLocalStart,
|
|
155
|
+
end: i.paneLocalEnd,
|
|
156
|
+
width: i.paneLocalSize
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
//#endregion
|
|
161
|
+
export { t as buildColumnMeasurements, d as buildGridPaneLayout, l as buildPaneGeometry, u as buildPaneGeometryFromWidthsKey, s as buildPaneWidthsKey, e as clamp, b as computeFullWidthPaneExtents, y as computePaneColumnExtents, x as computeSinglePaneColumnExtent, g as countPinnedColumns, n as findColumnIndexFromOffset, p as findLogicalIndexFromPaneOffset, m as findPaneDropSlot, r as getColumnPane, _ as isPlainLayout, f as lookupPaneColumn, h as paneDropSlotBoundaryX, i as reorderColumnsByPane, a as splitOrderedColumnsByPane };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./geometry.cjs");var t=2,n=e=>{switch(e.kind){case`set`:return{...e,values:[...e.values]};case`number`:return{...e,parsed:e.parsed?{...e.parsed}:null};case`numberSet`:return{...e,condition:e.condition?{...e.condition}:null,set:e.set?{...e.set,values:[...e.set.values]}:null};case`textSet`:return{...e,condition:e.condition?{...e.condition}:null,set:e.set?{...e.set,values:[...e.set.values]}:null};case`dateSet`:return{...e,condition:e.condition?{...e.condition}:null,set:e.set?{...e.set,values:[...e.set.values]}:null};case`text`:case`date`:case`select`:return{...e};case`custom`:return{...e}}},r=e=>{let t={};for(let r of Object.keys(e))t[r]=n(e[r]);return t},i=e=>{let t={key:e.key};return e.visible!==void 0&&(t.visible=e.visible),e.pinned!==void 0&&(t.pinned=e.pinned),t},a=e=>e.map(e=>{let t={key:e.key};return e.visible!==void 0&&(t.visible=e.visible),e.pinned!==void 0&&(t.pinned=e.pinned),t}),o=(e,t,n,a=[],o=2)=>({version:o,columnWidths:{...e},filters:{globalText:t.globalText,columnFilters:r(t.columnFilters)},sort:n.map(e=>({...e})),columns:a.map(i)}),s=e=>{let t=e&&typeof e==`object`?e:{},r={},i=t.columnWidths;if(i&&typeof i==`object`){let e=i;for(let t of Object.keys(e)){let n=e[t];typeof n==`number`&&Number.isFinite(n)&&(r[t]=n)}}let a=t.filters&&typeof t.filters==`object`?t.filters:{},o=typeof a.globalText==`string`?a.globalText:``,s={},c=a.columnFilters;if(c&&typeof c==`object`){let e=c;for(let t of Object.keys(e)){let r=e[t];r&&typeof r==`object`&&`kind`in r&&(s[t]=n(r))}}let l=[],u=t.sort;if(Array.isArray(u)){for(let e of u)if(e&&typeof e==`object`){let t=e;typeof t.columnKey==`string`&&(t.direction===`asc`||t.direction===`desc`)&&l.push({columnKey:t.columnKey,direction:t.direction})}}let d,f=t.columns;if(Array.isArray(f)){let e=[];for(let t of f){if(!t||typeof t!=`object`)continue;let n=t;if(typeof n.key!=`string`)continue;let r={key:n.key};typeof n.visible==`boolean`&&(r.visible=n.visible),(n.pinned===`left`||n.pinned===`right`)&&(r.pinned=n.pinned),e.push(r)}d=e}return{version:2,columnWidths:r,filters:{globalText:o,columnFilters:s},sort:l,columns:d}},c=(t,n,r)=>{let i=new Map(t.map(e=>[e.key,e])),a=new Set,o=(e,t)=>{let n=r[e.key],i=typeof n==`number`;if(!t&&!i)return e;let a={...e};return t&&(a.visible=t.visible,a.pinned=t.pinned),i&&(a.width=n),a},s=[];for(let e of n){let t=i.get(e.key);t&&(a.add(e.key),s.push(o(t,e)))}for(let e of t)a.has(e.key)||s.push(o(e,void 0));return e.reorderColumnsByPane(s)},l=(e,t)=>e===null||t===null?e===t:e.mode===`blank`||e.mode===`notBlank`||t.mode===`blank`||t.mode===`notBlank`?e.mode===t.mode:e.mode===t.mode&&e.value===t.value,u=(e,t)=>e===null||t===null?e===t:e.mode===t.mode?e.mode===`range`&&t.mode===`range`?e.from===t.from&&e.to===t.to:e.mode===`preset`&&t.mode===`preset`?e.preset===t.preset:e.mode===`blank`||e.mode===`notBlank`?!0:`value`in e&&`value`in t&&e.value===t.value:!1,d=(e,t)=>e===null||t===null?e===t:(e.mode??`include`)===(t.mode??`include`)&&e.values.length===t.values.length&&e.values.every((e,n)=>e===t.values[n]),f=(e,t)=>e===null||t===null?e===t:e.mode===`comparison`&&t.mode===`comparison`?e.operator===t.operator&&e.value===t.value:e.mode===`range`&&t.mode===`range`?e.min===t.min&&e.max===t.max:e.mode===`blank`||e.mode===`notBlank`?e.mode===t.mode:!1,p=(e,t)=>{switch(e.kind){case`set`:return t.kind===`set`&&(e.mode??`include`)===(t.mode??`include`)&&e.values.length===t.values.length&&e.values.every((e,n)=>e===t.values[n]);case`number`:return t.kind===`number`&&e.raw===t.raw&&f(e.parsed,t.parsed);case`numberSet`:return t.kind===`numberSet`&&f(e.condition,t.condition)&&d(e.set,t.set);case`textSet`:return t.kind===`textSet`&&l(e.condition,t.condition)&&d(e.set,t.set);case`dateSet`:return t.kind===`dateSet`&&u(e.condition,t.condition)&&d(e.set,t.set);case`text`:return t.kind===`text`&&e.value===t.value;case`date`:return t.kind===`date`&&e.value===t.value;case`select`:return t.kind===`select`&&e.value===t.value;case`custom`:return t.kind===`custom`&&Object.is(e.value,t.value)}},m=(e,t)=>{let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!(r in t)||e[r]!==t[r])return!1;return!0},h=(e,t)=>{let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!(r in t)||!p(e[r],t[r]))return!1;return!0},g=(e,t)=>{if(e===void 0||t===void 0)return e===t;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n].key!==t[n].key||e[n].visible!==t[n].visible||e[n].pinned!==t[n].pinned)return!1;return!0},_=(e,t)=>{if(e.version!==t.version||!m(e.columnWidths,t.columnWidths)||e.filters.globalText!==t.filters.globalText||!h(e.filters.columnFilters,t.filters.columnFilters)||e.sort.length!==t.sort.length)return!1;for(let n=0;n<e.sort.length;n+=1)if(e.sort[n].columnKey!==t.sort[n].columnKey||e.sort[n].direction!==t.sort[n].direction)return!1;return!!g(e.columns,t.columns)},v=(e,t,n)=>n?{emit:!1,nextLast:e}:e===null||_(e,t)?{emit:!1,nextLast:t}:{emit:!0,nextLast:t};exports.GRID_STATE_VERSION=t,exports.applyColumnState=c,exports.buildGridState=o,exports.cloneColumnFilterValue=n,exports.decideStateChangeEmit=v,exports.extractColumnState=a,exports.isSameGridState=_,exports.migrateGridState=s;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ColumnFilterValue, GridColumn, GridColumnState, GridFilterState, GridSortState, GridState } from '../model/gridTypes.unbound';
|
|
2
|
+
export declare const GRID_STATE_VERSION = 2;
|
|
3
|
+
export declare const cloneColumnFilterValue: (value: ColumnFilterValue) => ColumnFilterValue;
|
|
4
|
+
export declare const extractColumnState: <T>(columns: GridColumn<T>[]) => GridColumnState[];
|
|
5
|
+
export declare const buildGridState: (columnWidths: Record<string, number>, filters: GridFilterState, sort: GridSortState, columns?: GridColumnState[], version?: number) => GridState;
|
|
6
|
+
export declare const migrateGridState: (input: unknown) => GridState;
|
|
7
|
+
export declare const applyColumnState: <T>(currentColumns: GridColumn<T>[], savedColumnState: GridColumnState[], savedWidths: Record<string, number>) => GridColumn<T>[];
|
|
8
|
+
export declare const isSameGridState: (a: GridState, b: GridState) => boolean;
|
|
9
|
+
export type StateChangeDecision = {
|
|
10
|
+
emit: boolean;
|
|
11
|
+
nextLast: GridState | null;
|
|
12
|
+
};
|
|
13
|
+
export declare const decideStateChangeEmit: (prevLast: GridState | null, current: GridState, isDragging: boolean) => StateChangeDecision;
|