@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,90 @@
|
|
|
1
|
+
//#region src/logic/verticalGeometry.ts
|
|
2
|
+
var e = 15e6, t = 5e4, n = (e, t, n, r) => e && t && n > 0 && n <= r, r = 1 << 20, i = (e, t) => ({
|
|
3
|
+
rowCount: e,
|
|
4
|
+
rowTop: (e) => e * t,
|
|
5
|
+
rowsHeight: (e, n) => (n - e + 1) * t,
|
|
6
|
+
totalBodyHeight: e * t,
|
|
7
|
+
rowAtContentY: (n) => Math.min(Math.max(Math.floor(n / t), 0), Math.max(e - 1, 0)),
|
|
8
|
+
cellHeight: () => t,
|
|
9
|
+
detailHeight: () => 0
|
|
10
|
+
}), a = (e, t) => {
|
|
11
|
+
let n = t.filter((t) => t.height > 0 && t.index >= 0 && t.index < e.rowCount).sort((e, t) => e.index - t.index), r = n.length, i = new Float64Array(r), a = new Float64Array(r + 1);
|
|
12
|
+
for (let e = 0; e < r; e += 1) i[e] = n[e].index, a[e + 1] = a[e] + n[e].height;
|
|
13
|
+
let o = a[r], { rowCount: s } = e, c = (e) => {
|
|
14
|
+
let t = 0, n = r;
|
|
15
|
+
for (; t < n;) {
|
|
16
|
+
let r = t + n >>> 1;
|
|
17
|
+
i[r] < e ? t = r + 1 : n = r;
|
|
18
|
+
}
|
|
19
|
+
return t;
|
|
20
|
+
}, l = (t) => {
|
|
21
|
+
let n = Math.min(Math.max(t, 0), s);
|
|
22
|
+
return (n === s ? e.totalBodyHeight : e.rowTop(n)) + a[c(n)];
|
|
23
|
+
};
|
|
24
|
+
return {
|
|
25
|
+
rowCount: s,
|
|
26
|
+
rowTop: l,
|
|
27
|
+
rowsHeight: (e, t) => l(t + 1) - l(e),
|
|
28
|
+
totalBodyHeight: e.totalBodyHeight + o,
|
|
29
|
+
rowAtContentY: (e) => {
|
|
30
|
+
if (s <= 0 || e <= 0) return 0;
|
|
31
|
+
let t = 0, n = s - 1;
|
|
32
|
+
for (; t < n;) {
|
|
33
|
+
let r = t + n + 1 >>> 1;
|
|
34
|
+
l(r) <= e ? t = r : n = r - 1;
|
|
35
|
+
}
|
|
36
|
+
return t;
|
|
37
|
+
},
|
|
38
|
+
cellHeight: (t) => e.cellHeight(t),
|
|
39
|
+
detailHeight: (e) => {
|
|
40
|
+
let t = c(e);
|
|
41
|
+
return t < r && i[t] === e ? a[t + 1] - a[t] : 0;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}, o = (e, t, n, r) => {
|
|
45
|
+
if (r < n) return null;
|
|
46
|
+
let i = Math.max(e, n), a = Math.min(t, r);
|
|
47
|
+
return i > a ? null : {
|
|
48
|
+
start: i,
|
|
49
|
+
end: a
|
|
50
|
+
};
|
|
51
|
+
}, s = (e, t) => e * t, c = (e, t) => t === 1 ? e : e / t, l = (e, t, n, r) => {
|
|
52
|
+
let i = t * (1 - n);
|
|
53
|
+
return r.rowAtContentY(e - i);
|
|
54
|
+
}, u = ({ rowCount: e, rowHeight: t, headerHeight: n, viewportHeight: i, scrollTop: a, overscan: o, maxBodyPx: s }) => {
|
|
55
|
+
let c = e * t, l = Math.min(c, s), u = Math.max(n + c - i, 0), d = Math.max(n + l - i, 0), f = d > 0 && c > l ? u / d : 1, p = Math.min(Math.max(a, 0), d), m = p * f, h = Math.ceil(i / t) + 1, g = Math.floor(m / t), _ = Math.max(g - o, 0), v = Math.min(g + h + o, e), y = f === 1 ? 0 : Math.floor(_ * t / r) * r, b = p - m + y, x = [], S = /* @__PURE__ */ new Set();
|
|
56
|
+
for (let e = _; e < v; e += 1) x.push({
|
|
57
|
+
index: e,
|
|
58
|
+
start: n + e * t - y
|
|
59
|
+
}), S.add(e);
|
|
60
|
+
return {
|
|
61
|
+
physicalBodyHeight: l,
|
|
62
|
+
logicalBodyHeight: c,
|
|
63
|
+
scaleFactor: f,
|
|
64
|
+
translateY: b,
|
|
65
|
+
windowBaseOffsetPx: y,
|
|
66
|
+
rows: x,
|
|
67
|
+
rowIndexSet: S
|
|
68
|
+
};
|
|
69
|
+
}, d = ({ headerHeight: e, viewportHeight: t, scrollTop: n, overscan: r }, i) => {
|
|
70
|
+
let a = i.rowCount, o = i.totalBodyHeight, s = o, c = Math.max(e + o - t, 0), l = Math.min(Math.max(n, 0), c), u = i.rowAtContentY(l), d = i.rowAtContentY(l + t), f = Math.max(u - r, 0), p = Math.min(d + r + 1, a), m = [], h = /* @__PURE__ */ new Set();
|
|
71
|
+
for (let t = f; t < p; t += 1) {
|
|
72
|
+
let n = {
|
|
73
|
+
index: t,
|
|
74
|
+
start: e + i.rowTop(t),
|
|
75
|
+
size: i.cellHeight(t)
|
|
76
|
+
}, r = i.detailHeight(t);
|
|
77
|
+
r > 0 && (n.detailSize = r), m.push(n), h.add(t);
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
physicalBodyHeight: s,
|
|
81
|
+
logicalBodyHeight: o,
|
|
82
|
+
scaleFactor: 1,
|
|
83
|
+
translateY: 0,
|
|
84
|
+
windowBaseOffsetPx: 0,
|
|
85
|
+
rows: m,
|
|
86
|
+
rowIndexSet: h
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
//#endregion
|
|
90
|
+
export { t as AUTO_HEIGHT_MAX_ROWS, e as MAX_BODY_PX, r as WINDOW_BASE_CHUNK_PX, l as clientYToRowIndex, o as clipRowRangeToWindow, d as computeAutoHeightVerticalGeometry, u as computeVerticalGeometry, a as createDetailRowMetrics, i as createUniformRowMetrics, c as logicalToPhysicalScrollTop, s as physicalToLogicalScrollTop, n as shouldUseAutoHeight };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e={activateCell:e=>({type:`cell/activate`,cell:e}),startSelection:e=>({type:`selection/start`,cell:e}),updateSelection:e=>({type:`selection/update`,cell:e}),startRowSelection:e=>({type:`rowSelection/start`,row:e}),updateRowSelection:e=>({type:`rowSelection/update`,row:e}),startColumnSelection:e=>({type:`columnSelection/start`,col:e}),updateColumnSelection:e=>({type:`columnSelection/update`,col:e}),endSelection:()=>({type:`selection/end`}),clearSelection:()=>({type:`selection/clear`}),startEdit:e=>({type:`edit/start`,cell:e}),stopEdit:()=>({type:`edit/stop`}),startColumnResize:(e,t,n,r,i)=>({type:`column/resizeStart`,columnKey:e,startX:t,startWidth:n,minWidth:r,maxWidth:i}),updateColumnResize:e=>({type:`column/resizeUpdate`,clientX:e}),endColumnResize:()=>({type:`column/resizeEnd`}),syncColumnWidths:e=>({type:`columnWidths/sync`,widths:e}),resetColumnWidths:e=>({type:`columnWidths/reset`,widths:e}),setGlobalFilter:e=>({type:`filter/setGlobal`,value:e}),setColumnFilter:(e,t)=>({type:`filter/setColumn`,columnKey:e,value:t}),clearColumnFilter:e=>({type:`filter/clearColumn`,columnKey:e}),resetAllFilters:()=>({type:`filter/resetAll`}),setAllFilters:e=>({type:`filter/setAll`,filters:e}),setSort:e=>({type:`sort/set`,entries:e}),clearSort:()=>({type:`sort/clear`}),setRowSelectionState:e=>({type:`rowSelect/set`,state:e}),toggleGroupCollapsed:e=>({type:`group/toggleCollapsed`,groupKey:e}),setGroupCollapsed:(e,t)=>({type:`group/setCollapsed`,groupKey:e,collapsed:t}),setCollapsedGroupKeys:e=>({type:`group/setCollapsedKeys`,keys:e}),toggleDetailRow:e=>({type:`detail/toggle`,rowKey:e}),setDetailRowExpanded:(e,t)=>({type:`detail/setExpanded`,rowKey:e,expanded:t}),setExpandedDetailRowKeys:e=>({type:`detail/setKeys`,keys:e})};exports.gridActions=e;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { CellCoord, ColumnFilterValue, GridFilterState, GridRowKey, GridSortEntry, RowSelectionState } from './gridTypes.unbound';
|
|
2
|
+
export type GridUiAction = {
|
|
3
|
+
type: 'cell/activate';
|
|
4
|
+
cell: CellCoord | null;
|
|
5
|
+
} | {
|
|
6
|
+
type: 'selection/start';
|
|
7
|
+
cell: CellCoord;
|
|
8
|
+
} | {
|
|
9
|
+
type: 'selection/update';
|
|
10
|
+
cell: CellCoord;
|
|
11
|
+
} | {
|
|
12
|
+
type: 'rowSelection/start';
|
|
13
|
+
row: number;
|
|
14
|
+
} | {
|
|
15
|
+
type: 'rowSelection/update';
|
|
16
|
+
row: number;
|
|
17
|
+
} | {
|
|
18
|
+
type: 'columnSelection/start';
|
|
19
|
+
col: number;
|
|
20
|
+
} | {
|
|
21
|
+
type: 'columnSelection/update';
|
|
22
|
+
col: number;
|
|
23
|
+
} | {
|
|
24
|
+
type: 'selection/end';
|
|
25
|
+
} | {
|
|
26
|
+
type: 'selection/clear';
|
|
27
|
+
} | {
|
|
28
|
+
type: 'edit/start';
|
|
29
|
+
cell: CellCoord;
|
|
30
|
+
} | {
|
|
31
|
+
type: 'edit/stop';
|
|
32
|
+
} | {
|
|
33
|
+
type: 'column/resizeStart';
|
|
34
|
+
columnKey: string;
|
|
35
|
+
startX: number;
|
|
36
|
+
startWidth: number;
|
|
37
|
+
minWidth: number;
|
|
38
|
+
maxWidth?: number;
|
|
39
|
+
} | {
|
|
40
|
+
type: 'column/resizeUpdate';
|
|
41
|
+
clientX: number;
|
|
42
|
+
} | {
|
|
43
|
+
type: 'column/resizeEnd';
|
|
44
|
+
} | {
|
|
45
|
+
type: 'columnWidths/sync';
|
|
46
|
+
widths: Record<string, number>;
|
|
47
|
+
} | {
|
|
48
|
+
type: 'columnWidths/reset';
|
|
49
|
+
widths: Record<string, number>;
|
|
50
|
+
} | {
|
|
51
|
+
type: 'filter/setGlobal';
|
|
52
|
+
value: string;
|
|
53
|
+
} | {
|
|
54
|
+
type: 'filter/setColumn';
|
|
55
|
+
columnKey: string;
|
|
56
|
+
value: ColumnFilterValue;
|
|
57
|
+
} | {
|
|
58
|
+
type: 'filter/clearColumn';
|
|
59
|
+
columnKey: string;
|
|
60
|
+
} | {
|
|
61
|
+
type: 'filter/resetAll';
|
|
62
|
+
} | {
|
|
63
|
+
type: 'filter/setAll';
|
|
64
|
+
filters: GridFilterState;
|
|
65
|
+
} | {
|
|
66
|
+
type: 'sort/set';
|
|
67
|
+
entries: GridSortEntry[];
|
|
68
|
+
} | {
|
|
69
|
+
type: 'sort/clear';
|
|
70
|
+
} | {
|
|
71
|
+
type: 'rowSelect/set';
|
|
72
|
+
state: RowSelectionState;
|
|
73
|
+
} | {
|
|
74
|
+
type: 'group/toggleCollapsed';
|
|
75
|
+
groupKey: string;
|
|
76
|
+
} | {
|
|
77
|
+
type: 'group/setCollapsed';
|
|
78
|
+
groupKey: string;
|
|
79
|
+
collapsed: boolean;
|
|
80
|
+
} | {
|
|
81
|
+
type: 'group/setCollapsedKeys';
|
|
82
|
+
keys: ReadonlySet<string>;
|
|
83
|
+
} | {
|
|
84
|
+
type: 'detail/toggle';
|
|
85
|
+
rowKey: GridRowKey;
|
|
86
|
+
} | {
|
|
87
|
+
type: 'detail/setExpanded';
|
|
88
|
+
rowKey: GridRowKey;
|
|
89
|
+
expanded: boolean;
|
|
90
|
+
} | {
|
|
91
|
+
type: 'detail/setKeys';
|
|
92
|
+
keys: ReadonlySet<GridRowKey>;
|
|
93
|
+
};
|
|
94
|
+
export declare const gridActions: {
|
|
95
|
+
activateCell: (cell: CellCoord | null) => GridUiAction;
|
|
96
|
+
startSelection: (cell: CellCoord) => GridUiAction;
|
|
97
|
+
updateSelection: (cell: CellCoord) => GridUiAction;
|
|
98
|
+
startRowSelection: (row: number) => GridUiAction;
|
|
99
|
+
updateRowSelection: (row: number) => GridUiAction;
|
|
100
|
+
startColumnSelection: (col: number) => GridUiAction;
|
|
101
|
+
updateColumnSelection: (col: number) => GridUiAction;
|
|
102
|
+
endSelection: () => GridUiAction;
|
|
103
|
+
clearSelection: () => GridUiAction;
|
|
104
|
+
startEdit: (cell: CellCoord) => GridUiAction;
|
|
105
|
+
stopEdit: () => GridUiAction;
|
|
106
|
+
startColumnResize: (columnKey: string, startX: number, startWidth: number, minWidth: number, maxWidth?: number) => GridUiAction;
|
|
107
|
+
updateColumnResize: (clientX: number) => GridUiAction;
|
|
108
|
+
endColumnResize: () => GridUiAction;
|
|
109
|
+
syncColumnWidths: (widths: Record<string, number>) => GridUiAction;
|
|
110
|
+
resetColumnWidths: (widths: Record<string, number>) => GridUiAction;
|
|
111
|
+
setGlobalFilter: (value: string) => GridUiAction;
|
|
112
|
+
setColumnFilter: (columnKey: string, value: ColumnFilterValue) => GridUiAction;
|
|
113
|
+
clearColumnFilter: (columnKey: string) => GridUiAction;
|
|
114
|
+
resetAllFilters: () => GridUiAction;
|
|
115
|
+
setAllFilters: (filters: GridFilterState) => GridUiAction;
|
|
116
|
+
setSort: (entries: GridSortEntry[]) => GridUiAction;
|
|
117
|
+
clearSort: () => GridUiAction;
|
|
118
|
+
setRowSelectionState: (state: RowSelectionState) => GridUiAction;
|
|
119
|
+
toggleGroupCollapsed: (groupKey: string) => GridUiAction;
|
|
120
|
+
setGroupCollapsed: (groupKey: string, collapsed: boolean) => GridUiAction;
|
|
121
|
+
setCollapsedGroupKeys: (keys: ReadonlySet<string>) => GridUiAction;
|
|
122
|
+
toggleDetailRow: (rowKey: GridRowKey) => GridUiAction;
|
|
123
|
+
setDetailRowExpanded: (rowKey: GridRowKey, expanded: boolean) => GridUiAction;
|
|
124
|
+
setExpandedDetailRowKeys: (keys: ReadonlySet<GridRowKey>) => GridUiAction;
|
|
125
|
+
};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
//#region src/model/gridActions.ts
|
|
2
|
+
var e = {
|
|
3
|
+
activateCell: (e) => ({
|
|
4
|
+
type: "cell/activate",
|
|
5
|
+
cell: e
|
|
6
|
+
}),
|
|
7
|
+
startSelection: (e) => ({
|
|
8
|
+
type: "selection/start",
|
|
9
|
+
cell: e
|
|
10
|
+
}),
|
|
11
|
+
updateSelection: (e) => ({
|
|
12
|
+
type: "selection/update",
|
|
13
|
+
cell: e
|
|
14
|
+
}),
|
|
15
|
+
startRowSelection: (e) => ({
|
|
16
|
+
type: "rowSelection/start",
|
|
17
|
+
row: e
|
|
18
|
+
}),
|
|
19
|
+
updateRowSelection: (e) => ({
|
|
20
|
+
type: "rowSelection/update",
|
|
21
|
+
row: e
|
|
22
|
+
}),
|
|
23
|
+
startColumnSelection: (e) => ({
|
|
24
|
+
type: "columnSelection/start",
|
|
25
|
+
col: e
|
|
26
|
+
}),
|
|
27
|
+
updateColumnSelection: (e) => ({
|
|
28
|
+
type: "columnSelection/update",
|
|
29
|
+
col: e
|
|
30
|
+
}),
|
|
31
|
+
endSelection: () => ({ type: "selection/end" }),
|
|
32
|
+
clearSelection: () => ({ type: "selection/clear" }),
|
|
33
|
+
startEdit: (e) => ({
|
|
34
|
+
type: "edit/start",
|
|
35
|
+
cell: e
|
|
36
|
+
}),
|
|
37
|
+
stopEdit: () => ({ type: "edit/stop" }),
|
|
38
|
+
startColumnResize: (e, t, n, r, i) => ({
|
|
39
|
+
type: "column/resizeStart",
|
|
40
|
+
columnKey: e,
|
|
41
|
+
startX: t,
|
|
42
|
+
startWidth: n,
|
|
43
|
+
minWidth: r,
|
|
44
|
+
maxWidth: i
|
|
45
|
+
}),
|
|
46
|
+
updateColumnResize: (e) => ({
|
|
47
|
+
type: "column/resizeUpdate",
|
|
48
|
+
clientX: e
|
|
49
|
+
}),
|
|
50
|
+
endColumnResize: () => ({ type: "column/resizeEnd" }),
|
|
51
|
+
syncColumnWidths: (e) => ({
|
|
52
|
+
type: "columnWidths/sync",
|
|
53
|
+
widths: e
|
|
54
|
+
}),
|
|
55
|
+
resetColumnWidths: (e) => ({
|
|
56
|
+
type: "columnWidths/reset",
|
|
57
|
+
widths: e
|
|
58
|
+
}),
|
|
59
|
+
setGlobalFilter: (e) => ({
|
|
60
|
+
type: "filter/setGlobal",
|
|
61
|
+
value: e
|
|
62
|
+
}),
|
|
63
|
+
setColumnFilter: (e, t) => ({
|
|
64
|
+
type: "filter/setColumn",
|
|
65
|
+
columnKey: e,
|
|
66
|
+
value: t
|
|
67
|
+
}),
|
|
68
|
+
clearColumnFilter: (e) => ({
|
|
69
|
+
type: "filter/clearColumn",
|
|
70
|
+
columnKey: e
|
|
71
|
+
}),
|
|
72
|
+
resetAllFilters: () => ({ type: "filter/resetAll" }),
|
|
73
|
+
setAllFilters: (e) => ({
|
|
74
|
+
type: "filter/setAll",
|
|
75
|
+
filters: e
|
|
76
|
+
}),
|
|
77
|
+
setSort: (e) => ({
|
|
78
|
+
type: "sort/set",
|
|
79
|
+
entries: e
|
|
80
|
+
}),
|
|
81
|
+
clearSort: () => ({ type: "sort/clear" }),
|
|
82
|
+
setRowSelectionState: (e) => ({
|
|
83
|
+
type: "rowSelect/set",
|
|
84
|
+
state: e
|
|
85
|
+
}),
|
|
86
|
+
toggleGroupCollapsed: (e) => ({
|
|
87
|
+
type: "group/toggleCollapsed",
|
|
88
|
+
groupKey: e
|
|
89
|
+
}),
|
|
90
|
+
setGroupCollapsed: (e, t) => ({
|
|
91
|
+
type: "group/setCollapsed",
|
|
92
|
+
groupKey: e,
|
|
93
|
+
collapsed: t
|
|
94
|
+
}),
|
|
95
|
+
setCollapsedGroupKeys: (e) => ({
|
|
96
|
+
type: "group/setCollapsedKeys",
|
|
97
|
+
keys: e
|
|
98
|
+
}),
|
|
99
|
+
toggleDetailRow: (e) => ({
|
|
100
|
+
type: "detail/toggle",
|
|
101
|
+
rowKey: e
|
|
102
|
+
}),
|
|
103
|
+
setDetailRowExpanded: (e, t) => ({
|
|
104
|
+
type: "detail/setExpanded",
|
|
105
|
+
rowKey: e,
|
|
106
|
+
expanded: t
|
|
107
|
+
}),
|
|
108
|
+
setExpandedDetailRowKeys: (e) => ({
|
|
109
|
+
type: "detail/setKeys",
|
|
110
|
+
keys: e
|
|
111
|
+
})
|
|
112
|
+
};
|
|
113
|
+
//#endregion
|
|
114
|
+
export { e as gridActions };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/columnFlex.cjs"),t=require("../logic/rowSelection.cjs");var n=60,r=(e,t,n)=>Math.min(Math.max(e,t),n),i=t=>t.reduce((t,n)=>(e.isFlexingColumn(n)||(t[n.key]=n.width),t),{}),a=e=>({activeCell:null,selection:null,rowSelection:t.createEmptyRowSelection(),editingCell:null,dragState:null,columnWidths:i(e),filters:{globalText:``,columnFilters:{}},sort:[],collapsedGroupKeys:new Set,expandedDetailRowKeys:new Set}),o=(e,i)=>{switch(i.type){case`cell/activate`:return{...e,activeCell:i.cell};case`selection/start`:return{...e,activeCell:i.cell,selection:{type:`cell`,range:{start:i.cell,end:i.cell}},dragState:{type:`selection`,selectionKind:`cell`,anchor:i.cell}};case`rowSelection/start`:return{...e,activeCell:{row:i.row,col:e.activeCell?.col??0},selection:{type:`row`,startRow:i.row,endRow:i.row},dragState:{type:`selection`,selectionKind:`row`,anchorRow:i.row}};case`rowSelection/update`:return e.dragState?.type!==`selection`||e.dragState.selectionKind!==`row`||e.selection?.type===`row`&&e.selection.endRow===i.row?e:{...e,selection:{type:`row`,startRow:e.dragState.anchorRow,endRow:i.row}};case`selection/update`:return e.dragState?.type!==`selection`||e.dragState.selectionKind!==`cell`||e.selection?.type===`cell`&&e.selection.range.end.row===i.cell.row&&e.selection.range.end.col===i.cell.col?e:{...e,selection:{type:`cell`,range:{start:e.dragState.anchor,end:i.cell}}};case`columnSelection/start`:return{...e,activeCell:{row:e.activeCell?.row??0,col:i.col},selection:{type:`col`,startCol:i.col,endCol:i.col},dragState:{type:`selection`,selectionKind:`col`,anchorCol:i.col}};case`columnSelection/update`:return e.dragState?.type!==`selection`||e.dragState.selectionKind!==`col`||e.selection?.type===`col`&&e.selection.endCol===i.col?e:{...e,selection:{type:`col`,startCol:e.dragState.anchorCol,endCol:i.col}};case`selection/end`:return e.dragState?.type===`selection`?{...e,dragState:null}:e;case`selection/clear`:return{...e,selection:null,dragState:null};case`edit/start`:return{...e,editingCell:i.cell,activeCell:i.cell};case`edit/stop`:return{...e,editingCell:null};case`column/resizeStart`:return{...e,dragState:{type:`columnResize`,columnKey:i.columnKey,startX:i.startX,startWidth:i.startWidth,minWidth:i.minWidth||n,maxWidth:i.maxWidth??1/0}};case`column/resizeUpdate`:{if(e.dragState?.type!==`columnResize`)return e;let t=r(e.dragState.startWidth+(i.clientX-e.dragState.startX),e.dragState.minWidth,e.dragState.maxWidth);return e.columnWidths[e.dragState.columnKey]===t?e:{...e,columnWidths:{...e.columnWidths,[e.dragState.columnKey]:t}}}case`column/resizeEnd`:return e.dragState?.type===`columnResize`?{...e,dragState:null}:e;case`columnWidths/sync`:return{...e,columnWidths:{...e.columnWidths,...i.widths}};case`columnWidths/reset`:return{...e,columnWidths:i.widths};case`filter/setGlobal`:return{...e,filters:{...e.filters,globalText:i.value}};case`filter/setColumn`:return{...e,filters:{...e.filters,columnFilters:{...e.filters.columnFilters,[i.columnKey]:i.value}}};case`filter/clearColumn`:{let t={...e.filters.columnFilters};return delete t[i.columnKey],{...e,filters:{...e.filters,columnFilters:t}}}case`filter/resetAll`:return{...e,filters:{globalText:``,columnFilters:{}}};case`filter/setAll`:return{...e,filters:i.filters};case`sort/set`:return{...e,sort:i.entries};case`sort/clear`:return{...e,sort:[]};case`rowSelect/set`:return t.rowSelectionStateEquals(e.rowSelection,i.state)?e:{...e,rowSelection:i.state};case`group/toggleCollapsed`:{let t=new Set(e.collapsedGroupKeys);return t.has(i.groupKey)?t.delete(i.groupKey):t.add(i.groupKey),{...e,collapsedGroupKeys:t}}case`group/setCollapsed`:{if(e.collapsedGroupKeys.has(i.groupKey)===i.collapsed)return e;let t=new Set(e.collapsedGroupKeys);return i.collapsed?t.add(i.groupKey):t.delete(i.groupKey),{...e,collapsedGroupKeys:t}}case`group/setCollapsedKeys`:return i.keys===e.collapsedGroupKeys||i.keys.size===0&&e.collapsedGroupKeys.size===0?e:{...e,collapsedGroupKeys:i.keys};case`detail/toggle`:{let t=new Set(e.expandedDetailRowKeys);return t.has(i.rowKey)?t.delete(i.rowKey):t.add(i.rowKey),{...e,expandedDetailRowKeys:t}}case`detail/setExpanded`:{if(e.expandedDetailRowKeys.has(i.rowKey)===i.expanded)return e;let t=new Set(e.expandedDetailRowKeys);return i.expanded?t.add(i.rowKey):t.delete(i.rowKey),{...e,expandedDetailRowKeys:t}}case`detail/setKeys`:return i.keys===e.expandedDetailRowKeys||i.keys.size===0&&e.expandedDetailRowKeys.size===0?e:{...e,expandedDetailRowKeys:i.keys};default:return e}};exports.createInitialGridUiState=a,exports.gridUiReducer=o;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GridUiAction } from './gridActions';
|
|
2
|
+
import type { GridColumn, GridUiState } from './gridTypes.unbound';
|
|
3
|
+
export declare const createInitialGridUiState: <T>(columns: GridColumn<T>[]) => GridUiState;
|
|
4
|
+
export declare const gridUiReducer: (state: GridUiState, action: GridUiAction) => GridUiState;
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { isFlexingColumn as e } from "../logic/columnFlex.js";
|
|
2
|
+
import { createEmptyRowSelection as t, rowSelectionStateEquals as n } from "../logic/rowSelection.js";
|
|
3
|
+
//#region src/model/gridReducer.ts
|
|
4
|
+
var r = 60, i = (e, t, n) => Math.min(Math.max(e, t), n), a = (t) => t.reduce((t, n) => (e(n) || (t[n.key] = n.width), t), {}), o = (e) => ({
|
|
5
|
+
activeCell: null,
|
|
6
|
+
selection: null,
|
|
7
|
+
rowSelection: t(),
|
|
8
|
+
editingCell: null,
|
|
9
|
+
dragState: null,
|
|
10
|
+
columnWidths: a(e),
|
|
11
|
+
filters: {
|
|
12
|
+
globalText: "",
|
|
13
|
+
columnFilters: {}
|
|
14
|
+
},
|
|
15
|
+
sort: [],
|
|
16
|
+
collapsedGroupKeys: /* @__PURE__ */ new Set(),
|
|
17
|
+
expandedDetailRowKeys: /* @__PURE__ */ new Set()
|
|
18
|
+
}), s = (e, t) => {
|
|
19
|
+
switch (t.type) {
|
|
20
|
+
case "cell/activate": return {
|
|
21
|
+
...e,
|
|
22
|
+
activeCell: t.cell
|
|
23
|
+
};
|
|
24
|
+
case "selection/start": return {
|
|
25
|
+
...e,
|
|
26
|
+
activeCell: t.cell,
|
|
27
|
+
selection: {
|
|
28
|
+
type: "cell",
|
|
29
|
+
range: {
|
|
30
|
+
start: t.cell,
|
|
31
|
+
end: t.cell
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
dragState: {
|
|
35
|
+
type: "selection",
|
|
36
|
+
selectionKind: "cell",
|
|
37
|
+
anchor: t.cell
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
case "rowSelection/start": return {
|
|
41
|
+
...e,
|
|
42
|
+
activeCell: {
|
|
43
|
+
row: t.row,
|
|
44
|
+
col: e.activeCell?.col ?? 0
|
|
45
|
+
},
|
|
46
|
+
selection: {
|
|
47
|
+
type: "row",
|
|
48
|
+
startRow: t.row,
|
|
49
|
+
endRow: t.row
|
|
50
|
+
},
|
|
51
|
+
dragState: {
|
|
52
|
+
type: "selection",
|
|
53
|
+
selectionKind: "row",
|
|
54
|
+
anchorRow: t.row
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
case "rowSelection/update": return e.dragState?.type !== "selection" || e.dragState.selectionKind !== "row" || e.selection?.type === "row" && e.selection.endRow === t.row ? e : {
|
|
58
|
+
...e,
|
|
59
|
+
selection: {
|
|
60
|
+
type: "row",
|
|
61
|
+
startRow: e.dragState.anchorRow,
|
|
62
|
+
endRow: t.row
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
case "selection/update": return e.dragState?.type !== "selection" || e.dragState.selectionKind !== "cell" || e.selection?.type === "cell" && e.selection.range.end.row === t.cell.row && e.selection.range.end.col === t.cell.col ? e : {
|
|
66
|
+
...e,
|
|
67
|
+
selection: {
|
|
68
|
+
type: "cell",
|
|
69
|
+
range: {
|
|
70
|
+
start: e.dragState.anchor,
|
|
71
|
+
end: t.cell
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
case "columnSelection/start": return {
|
|
76
|
+
...e,
|
|
77
|
+
activeCell: {
|
|
78
|
+
row: e.activeCell?.row ?? 0,
|
|
79
|
+
col: t.col
|
|
80
|
+
},
|
|
81
|
+
selection: {
|
|
82
|
+
type: "col",
|
|
83
|
+
startCol: t.col,
|
|
84
|
+
endCol: t.col
|
|
85
|
+
},
|
|
86
|
+
dragState: {
|
|
87
|
+
type: "selection",
|
|
88
|
+
selectionKind: "col",
|
|
89
|
+
anchorCol: t.col
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
case "columnSelection/update": return e.dragState?.type !== "selection" || e.dragState.selectionKind !== "col" || e.selection?.type === "col" && e.selection.endCol === t.col ? e : {
|
|
93
|
+
...e,
|
|
94
|
+
selection: {
|
|
95
|
+
type: "col",
|
|
96
|
+
startCol: e.dragState.anchorCol,
|
|
97
|
+
endCol: t.col
|
|
98
|
+
}
|
|
99
|
+
};
|
|
100
|
+
case "selection/end": return e.dragState?.type === "selection" ? {
|
|
101
|
+
...e,
|
|
102
|
+
dragState: null
|
|
103
|
+
} : e;
|
|
104
|
+
case "selection/clear": return {
|
|
105
|
+
...e,
|
|
106
|
+
selection: null,
|
|
107
|
+
dragState: null
|
|
108
|
+
};
|
|
109
|
+
case "edit/start": return {
|
|
110
|
+
...e,
|
|
111
|
+
editingCell: t.cell,
|
|
112
|
+
activeCell: t.cell
|
|
113
|
+
};
|
|
114
|
+
case "edit/stop": return {
|
|
115
|
+
...e,
|
|
116
|
+
editingCell: null
|
|
117
|
+
};
|
|
118
|
+
case "column/resizeStart": return {
|
|
119
|
+
...e,
|
|
120
|
+
dragState: {
|
|
121
|
+
type: "columnResize",
|
|
122
|
+
columnKey: t.columnKey,
|
|
123
|
+
startX: t.startX,
|
|
124
|
+
startWidth: t.startWidth,
|
|
125
|
+
minWidth: t.minWidth || r,
|
|
126
|
+
maxWidth: t.maxWidth ?? Infinity
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
case "column/resizeUpdate": {
|
|
130
|
+
if (e.dragState?.type !== "columnResize") return e;
|
|
131
|
+
let n = i(e.dragState.startWidth + (t.clientX - e.dragState.startX), e.dragState.minWidth, e.dragState.maxWidth);
|
|
132
|
+
return e.columnWidths[e.dragState.columnKey] === n ? e : {
|
|
133
|
+
...e,
|
|
134
|
+
columnWidths: {
|
|
135
|
+
...e.columnWidths,
|
|
136
|
+
[e.dragState.columnKey]: n
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
case "column/resizeEnd": return e.dragState?.type === "columnResize" ? {
|
|
141
|
+
...e,
|
|
142
|
+
dragState: null
|
|
143
|
+
} : e;
|
|
144
|
+
case "columnWidths/sync": return {
|
|
145
|
+
...e,
|
|
146
|
+
columnWidths: {
|
|
147
|
+
...e.columnWidths,
|
|
148
|
+
...t.widths
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
case "columnWidths/reset": return {
|
|
152
|
+
...e,
|
|
153
|
+
columnWidths: t.widths
|
|
154
|
+
};
|
|
155
|
+
case "filter/setGlobal": return {
|
|
156
|
+
...e,
|
|
157
|
+
filters: {
|
|
158
|
+
...e.filters,
|
|
159
|
+
globalText: t.value
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
case "filter/setColumn": return {
|
|
163
|
+
...e,
|
|
164
|
+
filters: {
|
|
165
|
+
...e.filters,
|
|
166
|
+
columnFilters: {
|
|
167
|
+
...e.filters.columnFilters,
|
|
168
|
+
[t.columnKey]: t.value
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
case "filter/clearColumn": {
|
|
173
|
+
let n = { ...e.filters.columnFilters };
|
|
174
|
+
return delete n[t.columnKey], {
|
|
175
|
+
...e,
|
|
176
|
+
filters: {
|
|
177
|
+
...e.filters,
|
|
178
|
+
columnFilters: n
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
case "filter/resetAll": return {
|
|
183
|
+
...e,
|
|
184
|
+
filters: {
|
|
185
|
+
globalText: "",
|
|
186
|
+
columnFilters: {}
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
case "filter/setAll": return {
|
|
190
|
+
...e,
|
|
191
|
+
filters: t.filters
|
|
192
|
+
};
|
|
193
|
+
case "sort/set": return {
|
|
194
|
+
...e,
|
|
195
|
+
sort: t.entries
|
|
196
|
+
};
|
|
197
|
+
case "sort/clear": return {
|
|
198
|
+
...e,
|
|
199
|
+
sort: []
|
|
200
|
+
};
|
|
201
|
+
case "rowSelect/set": return n(e.rowSelection, t.state) ? e : {
|
|
202
|
+
...e,
|
|
203
|
+
rowSelection: t.state
|
|
204
|
+
};
|
|
205
|
+
case "group/toggleCollapsed": {
|
|
206
|
+
let n = new Set(e.collapsedGroupKeys);
|
|
207
|
+
return n.has(t.groupKey) ? n.delete(t.groupKey) : n.add(t.groupKey), {
|
|
208
|
+
...e,
|
|
209
|
+
collapsedGroupKeys: n
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
case "group/setCollapsed": {
|
|
213
|
+
if (e.collapsedGroupKeys.has(t.groupKey) === t.collapsed) return e;
|
|
214
|
+
let n = new Set(e.collapsedGroupKeys);
|
|
215
|
+
return t.collapsed ? n.add(t.groupKey) : n.delete(t.groupKey), {
|
|
216
|
+
...e,
|
|
217
|
+
collapsedGroupKeys: n
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
case "group/setCollapsedKeys": return t.keys === e.collapsedGroupKeys || t.keys.size === 0 && e.collapsedGroupKeys.size === 0 ? e : {
|
|
221
|
+
...e,
|
|
222
|
+
collapsedGroupKeys: t.keys
|
|
223
|
+
};
|
|
224
|
+
case "detail/toggle": {
|
|
225
|
+
let n = new Set(e.expandedDetailRowKeys);
|
|
226
|
+
return n.has(t.rowKey) ? n.delete(t.rowKey) : n.add(t.rowKey), {
|
|
227
|
+
...e,
|
|
228
|
+
expandedDetailRowKeys: n
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
case "detail/setExpanded": {
|
|
232
|
+
if (e.expandedDetailRowKeys.has(t.rowKey) === t.expanded) return e;
|
|
233
|
+
let n = new Set(e.expandedDetailRowKeys);
|
|
234
|
+
return t.expanded ? n.add(t.rowKey) : n.delete(t.rowKey), {
|
|
235
|
+
...e,
|
|
236
|
+
expandedDetailRowKeys: n
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
case "detail/setKeys": return t.keys === e.expandedDetailRowKeys || t.keys.size === 0 && e.expandedDetailRowKeys.size === 0 ? e : {
|
|
240
|
+
...e,
|
|
241
|
+
expandedDetailRowKeys: t.keys
|
|
242
|
+
};
|
|
243
|
+
default: return e;
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
//#endregion
|
|
247
|
+
export { o as createInitialGridUiState, s as gridUiReducer };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=e=>({start:{row:Math.min(e.start.row,e.end.row),col:Math.min(e.start.col,e.end.col)},end:{row:Math.max(e.start.row,e.end.row),col:Math.max(e.start.col,e.end.col)}}),t=(e,t)=>({startRow:Math.min(e,t),endRow:Math.max(e,t)}),n=(e,t)=>({startCol:Math.min(e,t),endCol:Math.max(e,t)}),r=e=>e.activeCell,i=e=>e.selection,a=e=>e.editingCell,o=(e,t)=>e.columnWidths[t],s=e=>e.filters.globalText,c=(e,t)=>e.filters.columnFilters[t],l=(e,t,n)=>e.activeCell?.row===t&&e.activeCell?.col===n,u=(e,t,n)=>e.editingCell?.row===t&&e.editingCell?.col===n,d=(r,i,a)=>{if(!r.selection)return!1;if(r.selection.type===`cell`){let t=e(r.selection.range);return i>=t.start.row&&i<=t.end.row&&a>=t.start.col&&a<=t.end.col}if(r.selection.type===`row`){let e=t(r.selection.startRow,r.selection.endRow);return i>=e.startRow&&i<=e.endRow}if(r.selection.type===`col`){let e=n(r.selection.startCol,r.selection.endCol);return a>=e.startCol&&a<=e.endCol}return!1},f=(e,n)=>{if(e.selection?.type!==`row`)return!1;let r=t(e.selection.startRow,e.selection.endRow);return n>=r.startRow&&n<=r.endRow},p=(e,t)=>{if(e.selection?.type!==`col`)return!1;let r=n(e.selection.startCol,e.selection.endCol);return t>=r.startCol&&t<=r.endCol},m=r=>{if(!r)return{kind:`none`};if(r.type===`cell`){let t=e(r.range);return{kind:`cell`,startRow:t.start.row,endRow:t.end.row,startCol:t.start.col,endCol:t.end.col}}if(r.type===`row`){let e=t(r.startRow,r.endRow);return{kind:`row`,startRow:e.startRow,endRow:e.endRow}}let i=n(r.startCol,r.endCol);return{kind:`col`,startCol:i.startCol,endCol:i.endCol}},h=(e,t)=>!e||!t?!1:e.row===t.row&&e.col===t.col;exports.buildSelectionSnapshot=m,exports.isSameCellCoord=h,exports.normalizeCellRange=e,exports.normalizeColumnRange=n,exports.normalizeRowRange=t,exports.selectActiveCell=r,exports.selectColumnFilter=c,exports.selectColumnWidth=o,exports.selectEditingCell=a,exports.selectGlobalFilter=s,exports.selectIsActiveCell=l,exports.selectIsCellSelected=d,exports.selectIsColumnSelected=p,exports.selectIsEditingCell=u,exports.selectIsRowSelected=f,exports.selectSelection=i;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { CellCoord, CellRange, GridUiState } from './gridTypes.unbound';
|
|
2
|
+
export declare const normalizeCellRange: (range: CellRange) => CellRange;
|
|
3
|
+
export declare const normalizeRowRange: (startRow: number, endRow: number) => {
|
|
4
|
+
startRow: number;
|
|
5
|
+
endRow: number;
|
|
6
|
+
};
|
|
7
|
+
export declare const normalizeColumnRange: (startCol: number, endCol: number) => {
|
|
8
|
+
startCol: number;
|
|
9
|
+
endCol: number;
|
|
10
|
+
};
|
|
11
|
+
export declare const selectActiveCell: (state: GridUiState) => CellCoord | null;
|
|
12
|
+
export declare const selectSelection: (state: GridUiState) => import("./gridTypes.core").GridSelection;
|
|
13
|
+
export declare const selectEditingCell: (state: GridUiState) => CellCoord | null;
|
|
14
|
+
export declare const selectColumnWidth: (state: GridUiState, columnKey: string) => number;
|
|
15
|
+
export declare const selectGlobalFilter: (state: GridUiState) => string;
|
|
16
|
+
export declare const selectColumnFilter: (state: GridUiState, columnKey: string) => import("./gridTypes.core").ColumnFilterValue;
|
|
17
|
+
export declare const selectIsActiveCell: (state: GridUiState, rowIndex: number, colIndex: number) => boolean;
|
|
18
|
+
export declare const selectIsEditingCell: (state: GridUiState, rowIndex: number, colIndex: number) => boolean;
|
|
19
|
+
export declare const selectIsCellSelected: (state: GridUiState, rowIndex: number, colIndex: number) => boolean;
|
|
20
|
+
export declare const selectIsRowSelected: (state: GridUiState, rowIndex: number) => boolean;
|
|
21
|
+
export declare const selectIsColumnSelected: (state: GridUiState, colIndex: number) => boolean;
|
|
22
|
+
export type SelectionSnapshot = {
|
|
23
|
+
kind: 'none';
|
|
24
|
+
} | {
|
|
25
|
+
kind: 'cell';
|
|
26
|
+
startRow: number;
|
|
27
|
+
endRow: number;
|
|
28
|
+
startCol: number;
|
|
29
|
+
endCol: number;
|
|
30
|
+
} | {
|
|
31
|
+
kind: 'row';
|
|
32
|
+
startRow: number;
|
|
33
|
+
endRow: number;
|
|
34
|
+
} | {
|
|
35
|
+
kind: 'col';
|
|
36
|
+
startCol: number;
|
|
37
|
+
endCol: number;
|
|
38
|
+
};
|
|
39
|
+
export declare const buildSelectionSnapshot: (selection: GridUiState["selection"]) => SelectionSnapshot;
|
|
40
|
+
export declare const isSameCellCoord: (left: CellCoord | null, right: CellCoord | null) => boolean;
|