@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,389 @@
|
|
|
1
|
+
import { collectAllGroupKeys as e, collectAllGroupRows as t } from "../logic/grouping.js";
|
|
2
|
+
import { findDetailRowIndex as n, isSyntheticColumnKey as r } from "../logic/detailRow.js";
|
|
3
|
+
import { gridActions as i } from "../model/gridActions.js";
|
|
4
|
+
import { computeSinglePaneColumnExtent as a } from "../logic/geometry.js";
|
|
5
|
+
import { normalizeCellRange as o, normalizeColumnRange as s, normalizeRowRange as c } from "../model/gridSelectors.js";
|
|
6
|
+
import { scanInvalidCells as l } from "../logic/validation.js";
|
|
7
|
+
import { logicalToPhysicalScrollTop as u, physicalToLogicalScrollTop as d } from "../logic/verticalGeometry.js";
|
|
8
|
+
import { clearRowSelection as f, countSelectedRows as p, resolveIsRowSelected as m, rowSelectionFromModel as h, rowSelectionToModel as g, selectAllRows as _ } from "../logic/rowSelection.js";
|
|
9
|
+
import { applyColumnState as v, buildGridState as y, extractColumnState as b, migrateGridState as x } from "../logic/gridState.js";
|
|
10
|
+
import { computeHorizontalScrollTarget as S, computeVerticalScrollTarget as C } from "../logic/scrollTargets.js";
|
|
11
|
+
import { serializeRowsToCsv as w } from "../logic/exportCsv.js";
|
|
12
|
+
import { buildGridExportData as T } from "../logic/exportData.js";
|
|
13
|
+
import { normalizeExportScope as E } from "../logic/exportScope.js";
|
|
14
|
+
//#region src/engine/gridApi.ts
|
|
15
|
+
var D = () => {
|
|
16
|
+
let D = null, O = (e, t, n = "auto") => {
|
|
17
|
+
let r = Math.max(e.scrollHeight - e.clientHeight, 0), i = Math.max(e.scrollWidth - e.clientWidth, 0), a = Math.min(Math.max(t.top, 0), r), o = Math.min(Math.max(t.left, 0), i);
|
|
18
|
+
(Math.round(a) !== Math.round(e.scrollTop) || Math.round(o) !== Math.round(e.scrollLeft)) && D?.markApiScroll(), e.scrollTo({
|
|
19
|
+
top: a,
|
|
20
|
+
left: o,
|
|
21
|
+
behavior: n
|
|
22
|
+
});
|
|
23
|
+
}, k = (e, t) => {
|
|
24
|
+
let n = D?.scrollContainerRef.current ?? null, r = D;
|
|
25
|
+
!n || !r || O(n, {
|
|
26
|
+
top: e === null ? n.scrollTop : u(e, r.verticalScaleFactor),
|
|
27
|
+
left: t === null ? n.scrollLeft : t
|
|
28
|
+
});
|
|
29
|
+
}, A = (e, t) => {
|
|
30
|
+
let n = D?.scrollContainerRef.current ?? null, r = D;
|
|
31
|
+
if (!n || !r || r.viewRowCount === 0) return null;
|
|
32
|
+
let i = Math.min(Math.max(e, 0), r.viewRowCount - 1);
|
|
33
|
+
return C({
|
|
34
|
+
rowTop: r.rowMetrics.rowTop(i),
|
|
35
|
+
rowHeight: r.rowMetrics.cellHeight(i),
|
|
36
|
+
headerHeight: r.headerHeight,
|
|
37
|
+
viewportHeight: n.clientHeight,
|
|
38
|
+
currentScrollTop: d(n.scrollTop, r.verticalScaleFactor),
|
|
39
|
+
align: t
|
|
40
|
+
});
|
|
41
|
+
}, j = (e, t) => {
|
|
42
|
+
let n = D?.scrollContainerRef.current ?? null, r = D;
|
|
43
|
+
if (!n || !r) return null;
|
|
44
|
+
let i = a(r.paneLayout, e);
|
|
45
|
+
return !i || i.pane !== "center" ? null : S({
|
|
46
|
+
cellLeft: r.leftPaneTotalWidth + r.centerLeadingWidth + i.extent.start,
|
|
47
|
+
cellWidth: i.extent.width,
|
|
48
|
+
leftPaneWidth: r.leftPaneTotalWidth,
|
|
49
|
+
rightPaneWidth: r.rightPaneTotalWidth,
|
|
50
|
+
viewportWidth: n.clientWidth,
|
|
51
|
+
currentScrollLeft: n.scrollLeft,
|
|
52
|
+
align: t
|
|
53
|
+
});
|
|
54
|
+
}, M = (e, t, n) => {
|
|
55
|
+
k(A(e, n), j(t, n));
|
|
56
|
+
}, N = (e) => {
|
|
57
|
+
let t = D;
|
|
58
|
+
if (!t) return null;
|
|
59
|
+
let n = (e) => t.rowModel.getRow(e), r = t.isRowExportable, i = r ? (e, n) => r(e, {
|
|
60
|
+
viewRowIndex: n,
|
|
61
|
+
rowKey: t.rowModel.getRowKey(n) ?? n
|
|
62
|
+
}) : void 0, a = r ? (e, n) => r(e, {
|
|
63
|
+
viewRowIndex: n,
|
|
64
|
+
rowKey: t.resolvedRowKeyGetter(e, n)
|
|
65
|
+
}) : void 0, l = E(e);
|
|
66
|
+
if (l === "raw") return t.isServerSide ? (console.warn("SpreadsheetGrid: scope 'raw' は serverSide では未ロード行を取得できないため、'view'(ロード済みビュー行)として扱います。全件エクスポートはサーバ側での実施を推奨します。"), {
|
|
67
|
+
getRow: n,
|
|
68
|
+
startRow: 0,
|
|
69
|
+
endRow: t.viewRowCount,
|
|
70
|
+
columns: t.orderedColumns,
|
|
71
|
+
isRowIncluded: i
|
|
72
|
+
}) : {
|
|
73
|
+
getRow: (e) => t.rows[e],
|
|
74
|
+
startRow: 0,
|
|
75
|
+
endRow: t.rows.length,
|
|
76
|
+
columns: t.orderedColumns,
|
|
77
|
+
isRowIncluded: a
|
|
78
|
+
};
|
|
79
|
+
if (l === "rendered") return {
|
|
80
|
+
getRow: n,
|
|
81
|
+
startRow: t.windowFirstRow,
|
|
82
|
+
endRow: t.windowLastRow >= t.windowFirstRow ? t.windowLastRow + 1 : t.windowFirstRow,
|
|
83
|
+
columns: t.orderedColumns,
|
|
84
|
+
isRowIncluded: i
|
|
85
|
+
};
|
|
86
|
+
if (l === "selection") {
|
|
87
|
+
let e = t.uiState.selection;
|
|
88
|
+
if (!e) return null;
|
|
89
|
+
if (e.type === "cell") {
|
|
90
|
+
let r = o(e.range);
|
|
91
|
+
return {
|
|
92
|
+
getRow: n,
|
|
93
|
+
startRow: r.start.row,
|
|
94
|
+
endRow: r.end.row + 1,
|
|
95
|
+
columns: t.orderedColumns.slice(r.start.col, r.end.col + 1),
|
|
96
|
+
isRowIncluded: i
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
if (e.type === "row") {
|
|
100
|
+
let r = c(e.startRow, e.endRow);
|
|
101
|
+
return {
|
|
102
|
+
getRow: n,
|
|
103
|
+
startRow: r.startRow,
|
|
104
|
+
endRow: r.endRow + 1,
|
|
105
|
+
columns: t.orderedColumns,
|
|
106
|
+
isRowIncluded: i
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
let r = s(e.startCol, e.endCol);
|
|
110
|
+
return {
|
|
111
|
+
getRow: n,
|
|
112
|
+
startRow: 0,
|
|
113
|
+
endRow: t.viewRowCount,
|
|
114
|
+
columns: t.orderedColumns.slice(r.startCol, r.endCol + 1),
|
|
115
|
+
isRowIncluded: i
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
getRow: n,
|
|
120
|
+
startRow: 0,
|
|
121
|
+
endRow: t.viewRowCount,
|
|
122
|
+
columns: t.orderedColumns,
|
|
123
|
+
isRowIncluded: i
|
|
124
|
+
};
|
|
125
|
+
}, P = (e) => e.filter((e) => !r(e.key)), F = (e) => {
|
|
126
|
+
let t = N(e?.scope ?? "view");
|
|
127
|
+
return t ? w({
|
|
128
|
+
getRow: t.getRow,
|
|
129
|
+
startRow: t.startRow,
|
|
130
|
+
endRow: t.endRow,
|
|
131
|
+
columns: P(t.columns),
|
|
132
|
+
delimiter: e?.delimiter,
|
|
133
|
+
includeHeaders: e?.includeHeaders,
|
|
134
|
+
bom: e?.bom,
|
|
135
|
+
isRowIncluded: t.isRowIncluded
|
|
136
|
+
}) : e?.bom ? "" : "";
|
|
137
|
+
}, I = (e) => {
|
|
138
|
+
let t = N(e?.scope ?? "view");
|
|
139
|
+
return t ? T({
|
|
140
|
+
getRow: t.getRow,
|
|
141
|
+
startRow: t.startRow,
|
|
142
|
+
endRow: t.endRow,
|
|
143
|
+
columns: P(t.columns),
|
|
144
|
+
isRowIncluded: t.isRowIncluded
|
|
145
|
+
}) : {
|
|
146
|
+
columns: [],
|
|
147
|
+
rows: []
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
return {
|
|
151
|
+
update: (e) => {
|
|
152
|
+
D = e;
|
|
153
|
+
},
|
|
154
|
+
handle: {
|
|
155
|
+
scrollToRow: (e, t) => k(A(e, t?.align ?? "auto"), null),
|
|
156
|
+
scrollToCell: (e, t, n) => M(e, t, n?.align ?? "auto"),
|
|
157
|
+
scrollToTop: () => {
|
|
158
|
+
let e = D?.scrollContainerRef.current ?? null;
|
|
159
|
+
e && O(e, {
|
|
160
|
+
top: 0,
|
|
161
|
+
left: e.scrollLeft
|
|
162
|
+
});
|
|
163
|
+
},
|
|
164
|
+
scrollToBottom: () => {
|
|
165
|
+
let e = D?.scrollContainerRef.current ?? null, t = D;
|
|
166
|
+
!e || !t || O(e, {
|
|
167
|
+
top: Math.max(t.headerHeight + t.physicalBodyHeight - e.clientHeight, 0),
|
|
168
|
+
left: e.scrollLeft
|
|
169
|
+
});
|
|
170
|
+
},
|
|
171
|
+
getScrollPosition: () => {
|
|
172
|
+
let e = D?.scrollContainerRef.current ?? null;
|
|
173
|
+
return e ? {
|
|
174
|
+
top: e.scrollTop,
|
|
175
|
+
left: e.scrollLeft
|
|
176
|
+
} : null;
|
|
177
|
+
},
|
|
178
|
+
setScrollPosition: (e, t) => {
|
|
179
|
+
let n = D?.scrollContainerRef.current ?? null;
|
|
180
|
+
n && O(n, {
|
|
181
|
+
top: e.top ?? n.scrollTop,
|
|
182
|
+
left: e.left ?? n.scrollLeft
|
|
183
|
+
}, t?.behavior ?? "auto");
|
|
184
|
+
},
|
|
185
|
+
getVisibleRowRange: () => {
|
|
186
|
+
let e = D;
|
|
187
|
+
return !e || e.windowLastRow < e.windowFirstRow ? null : {
|
|
188
|
+
startIndex: e.windowFirstRow,
|
|
189
|
+
endIndex: e.windowLastRow + 1
|
|
190
|
+
};
|
|
191
|
+
},
|
|
192
|
+
getActiveCell: () => {
|
|
193
|
+
let e = D?.uiState.activeCell;
|
|
194
|
+
return e ? {
|
|
195
|
+
row: e.row,
|
|
196
|
+
col: e.col
|
|
197
|
+
} : null;
|
|
198
|
+
},
|
|
199
|
+
setActiveCell: (e, t) => {
|
|
200
|
+
let n = D;
|
|
201
|
+
n && (n.dispatch(i.activateCell(e)), e && t?.scrollIntoView && M(e.row, e.col, "auto"));
|
|
202
|
+
},
|
|
203
|
+
getSelection: () => D?.uiState.selection ?? null,
|
|
204
|
+
selectCell: (e, t, n) => {
|
|
205
|
+
let r = D;
|
|
206
|
+
if (!r) return;
|
|
207
|
+
let a = {
|
|
208
|
+
row: e,
|
|
209
|
+
col: t
|
|
210
|
+
};
|
|
211
|
+
r.dispatch(i.startSelection(a)), r.dispatch(i.endSelection()), n?.scrollIntoView && M(e, t, "auto");
|
|
212
|
+
},
|
|
213
|
+
selectRange: (e, t) => {
|
|
214
|
+
let n = D;
|
|
215
|
+
n && (n.dispatch(i.startSelection(e.start)), n.dispatch(i.updateSelection(e.end)), n.dispatch(i.endSelection()), t?.scrollIntoView && M(e.end.row, e.end.col, "auto"));
|
|
216
|
+
},
|
|
217
|
+
clearSelection: () => {
|
|
218
|
+
D?.dispatch(i.clearSelection());
|
|
219
|
+
},
|
|
220
|
+
getSelectedRows: () => {
|
|
221
|
+
let e = D;
|
|
222
|
+
if (!e) return [];
|
|
223
|
+
let t = e.uiState.selection;
|
|
224
|
+
if (!t) return [];
|
|
225
|
+
let n = [], r = (t) => {
|
|
226
|
+
let r = e.rowModel.getRow(t);
|
|
227
|
+
r && n.push(r);
|
|
228
|
+
};
|
|
229
|
+
if (t.type === "cell") {
|
|
230
|
+
let e = o(t.range);
|
|
231
|
+
for (let t = e.start.row; t <= e.end.row; t += 1) r(t);
|
|
232
|
+
} else if (t.type === "row") {
|
|
233
|
+
let e = c(t.startRow, t.endRow);
|
|
234
|
+
for (let t = e.startRow; t <= e.endRow; t += 1) r(t);
|
|
235
|
+
} else for (let t = 0; t < e.viewRowCount; t += 1) r(t);
|
|
236
|
+
return n;
|
|
237
|
+
},
|
|
238
|
+
exportCsv: (e) => F(e),
|
|
239
|
+
downloadCsv: (e, t) => {
|
|
240
|
+
if (typeof document > "u") return;
|
|
241
|
+
let n = F({
|
|
242
|
+
...t,
|
|
243
|
+
bom: t?.bom ?? !0
|
|
244
|
+
}), r = new Blob([n], { type: "text/csv;charset=utf-8;" }), i = URL.createObjectURL(r), a = document.createElement("a");
|
|
245
|
+
a.href = i, a.download = e ?? "export.csv", document.body.appendChild(a), a.click(), document.body.removeChild(a), URL.revokeObjectURL(i);
|
|
246
|
+
},
|
|
247
|
+
getExportData: (e) => I(e),
|
|
248
|
+
getState: () => {
|
|
249
|
+
let e = D;
|
|
250
|
+
return e ? y(e.uiState.columnWidths, e.uiState.filters, e.uiState.sort, b(e.columns)) : y({}, {
|
|
251
|
+
globalText: "",
|
|
252
|
+
columnFilters: {}
|
|
253
|
+
}, [], []);
|
|
254
|
+
},
|
|
255
|
+
applyState: (e) => {
|
|
256
|
+
let t = D;
|
|
257
|
+
if (!t) return;
|
|
258
|
+
let n = x(e);
|
|
259
|
+
t.onColumnsChange && n.columns && t.onColumnsChange(v(t.columns, n.columns, n.columnWidths)), t.dispatch(i.resetColumnWidths(n.columnWidths)), t.dispatch(i.setAllFilters(n.filters)), t.dispatch(i.setSort(n.sort));
|
|
260
|
+
},
|
|
261
|
+
getRowSelection: () => {
|
|
262
|
+
let e = D;
|
|
263
|
+
return e ? g(e.uiState.rowSelection) : {
|
|
264
|
+
type: "include",
|
|
265
|
+
rowKeys: []
|
|
266
|
+
};
|
|
267
|
+
},
|
|
268
|
+
setRowSelection: (e) => {
|
|
269
|
+
D?.commitRowSelection(h(e));
|
|
270
|
+
},
|
|
271
|
+
getSelectedRowKeys: () => {
|
|
272
|
+
let e = D;
|
|
273
|
+
if (!e) return [];
|
|
274
|
+
let t = e.uiState.rowSelection;
|
|
275
|
+
if (t.mode === "include") return Array.from(t.keys);
|
|
276
|
+
let n = [], r = e.rowModel.getRowCount();
|
|
277
|
+
for (let i = 0; i < r; i += 1) {
|
|
278
|
+
if (!e.rowModel.getRow(i)) continue;
|
|
279
|
+
let r = e.rowModel.getRowKey(i) ?? i;
|
|
280
|
+
t.keys.has(r) || n.push(r);
|
|
281
|
+
}
|
|
282
|
+
return n;
|
|
283
|
+
},
|
|
284
|
+
getSelectedRowData: () => {
|
|
285
|
+
let e = D;
|
|
286
|
+
if (!e) return [];
|
|
287
|
+
let t = e.uiState.rowSelection, n = [], r = e.rowModel.getRowCount();
|
|
288
|
+
for (let i = 0; i < r; i += 1) {
|
|
289
|
+
let r = e.rowModel.getRow(i);
|
|
290
|
+
r && m(t, e.rowModel.getRowKey(i) ?? i) && n.push(r);
|
|
291
|
+
}
|
|
292
|
+
return n;
|
|
293
|
+
},
|
|
294
|
+
getSelectedRowCount: () => {
|
|
295
|
+
let e = D;
|
|
296
|
+
return e ? p(e.uiState.rowSelection, e.leafRowCount) : 0;
|
|
297
|
+
},
|
|
298
|
+
isRowSelected: (e) => {
|
|
299
|
+
let t = D;
|
|
300
|
+
return t ? m(t.uiState.rowSelection, e) : !1;
|
|
301
|
+
},
|
|
302
|
+
selectAllRows: () => {
|
|
303
|
+
D?.commitRowSelection(_());
|
|
304
|
+
},
|
|
305
|
+
clearRowSelection: () => {
|
|
306
|
+
D?.commitRowSelection(f());
|
|
307
|
+
},
|
|
308
|
+
undo: () => {
|
|
309
|
+
D?.undoRows();
|
|
310
|
+
},
|
|
311
|
+
redo: () => {
|
|
312
|
+
D?.redoRows();
|
|
313
|
+
},
|
|
314
|
+
canUndo: () => D?.canUndoRows() ?? !1,
|
|
315
|
+
canRedo: () => D?.canRedoRows() ?? !1,
|
|
316
|
+
clearUndoHistory: () => {
|
|
317
|
+
D?.clearUndoHistory();
|
|
318
|
+
},
|
|
319
|
+
setGroupCollapsed: (e, t) => {
|
|
320
|
+
D?.dispatch(i.setGroupCollapsed(e, t));
|
|
321
|
+
},
|
|
322
|
+
expandAllGroups: () => {
|
|
323
|
+
D?.dispatch(i.setCollapsedGroupKeys(/* @__PURE__ */ new Set()));
|
|
324
|
+
},
|
|
325
|
+
collapseAllGroups: () => {
|
|
326
|
+
let t = D;
|
|
327
|
+
!t || !t.groupTree || t.dispatch(i.setCollapsedGroupKeys(new Set(e(t.groupTree))));
|
|
328
|
+
},
|
|
329
|
+
getGroupRows: () => {
|
|
330
|
+
let e = D;
|
|
331
|
+
return e?.groupTree ? t(e.groupTree) : [];
|
|
332
|
+
},
|
|
333
|
+
setDetailRowExpanded: (e, t) => {
|
|
334
|
+
let r = D;
|
|
335
|
+
if (!(!r || !r.detailRowEnabled)) {
|
|
336
|
+
if (t && r.detailIsExpandable) {
|
|
337
|
+
let t = n(r.rowModel, e, r.detailIndexCacheRef.current, !r.isServerSide);
|
|
338
|
+
if (t >= 0) {
|
|
339
|
+
let n = r.rowModel.getRow(t);
|
|
340
|
+
if (n != null && !r.detailIsExpandable(n, {
|
|
341
|
+
rowKey: e,
|
|
342
|
+
sourceRowIndex: r.rowModel.getSourceIndex(t)
|
|
343
|
+
})) return;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
r.dispatch(i.setDetailRowExpanded(e, t));
|
|
347
|
+
}
|
|
348
|
+
},
|
|
349
|
+
getExpandedDetailRowKeys: () => {
|
|
350
|
+
let e = D;
|
|
351
|
+
return e && e.detailRowEnabled ? Array.from(e.uiState.expandedDetailRowKeys) : [];
|
|
352
|
+
},
|
|
353
|
+
collapseAllDetailRows: () => {
|
|
354
|
+
let e = D;
|
|
355
|
+
!e || !e.detailRowEnabled || e.dispatch(i.setExpandedDetailRowKeys(/* @__PURE__ */ new Set()));
|
|
356
|
+
},
|
|
357
|
+
moveRow: (e, t) => {
|
|
358
|
+
D?.moveRowByKey(e, t);
|
|
359
|
+
},
|
|
360
|
+
getInvalidCells: () => {
|
|
361
|
+
let e = D;
|
|
362
|
+
return e ? e.isServerSide ? (console.warn("[SpreadsheetGrid] getInvalidCells は serverSide モードでは利用できません(空配列を返します)。"), []) : l(e.rows, e.columns, e.resolvedRowKeyGetter) : [];
|
|
363
|
+
},
|
|
364
|
+
refreshServerSide: () => {
|
|
365
|
+
let e = D;
|
|
366
|
+
if (e) {
|
|
367
|
+
if (!e.isServerSide) {
|
|
368
|
+
console.warn("[SpreadsheetGrid] refreshServerSide は clientSide(rows)モードでは何もしません(dataSource 指定時のみ有効です)。");
|
|
369
|
+
return;
|
|
370
|
+
}
|
|
371
|
+
e.serverSideRefresh();
|
|
372
|
+
}
|
|
373
|
+
},
|
|
374
|
+
openFilterManager: () => {
|
|
375
|
+
D?.openToolPanel("filter");
|
|
376
|
+
},
|
|
377
|
+
closeFilterManager: () => {
|
|
378
|
+
let e = D;
|
|
379
|
+
e && e.activeToolPanelTab === "filter" && e.closeToolPanel();
|
|
380
|
+
}
|
|
381
|
+
},
|
|
382
|
+
applyScroll: k,
|
|
383
|
+
verticalTargetFor: A,
|
|
384
|
+
horizontalTargetFor: j,
|
|
385
|
+
scrollToCellInternal: M
|
|
386
|
+
};
|
|
387
|
+
};
|
|
388
|
+
//#endregion
|
|
389
|
+
export { D as createGridApi };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t)=>{if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!Object.is(e[n],t[n]))return!1;return!0},t=t=>{let n=null;return(...r)=>{if(n!==null&&e(n.args,r))return n.value;let i=t(...r);return n={args:r,value:i},i}};exports.createMemo=t;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/engine/memo.ts
|
|
2
|
+
var e = (e, t) => {
|
|
3
|
+
if (e.length !== t.length) return !1;
|
|
4
|
+
for (let n = 0; n < e.length; n += 1) if (!Object.is(e[n], t[n])) return !1;
|
|
5
|
+
return !0;
|
|
6
|
+
}, t = (t) => {
|
|
7
|
+
let n = null;
|
|
8
|
+
return (...r) => {
|
|
9
|
+
if (n !== null && e(n.args, r)) return n.value;
|
|
10
|
+
let i = t(...r);
|
|
11
|
+
return n = {
|
|
12
|
+
args: r,
|
|
13
|
+
value: i
|
|
14
|
+
}, i;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
export { t as createMemo };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/gridState.cjs");var t=()=>{let e=null,t=null;return{update:t=>{e=t},applyHoveredRowChange:n=>{if(e===null||!e.enableRowHover)return;let r=t,i=typeof n==`function`?n(r):n;i!==r&&(t=i,e.isHoverControlled||e.setHoveredRowIndex(i),e.onHoveredRowChange?.(i,{source:`pointer`}))}}},n=()=>{let e=null;return{update:({expandedKeys:t,onChange:n})=>{if(e===null){e=t;return}Object.is(e,t)||(e=t,n?.(Array.from(t)))}}},r=()=>{let t=null,n=null,r=(e,t)=>Object.is(e.columnWidths,t.columnWidths)&&Object.is(e.filters,t.filters)&&Object.is(e.sort,t.sort)&&Object.is(e.dragState,t.dragState)&&Object.is(e.columns,t.columns);return{update:i=>{let a=t===null||!r(t,i);if(t=i,!a||!i.onStateChange)return;let o=e.buildGridState(i.columnWidths,i.filters,i.sort,e.extractColumnState(i.columns)),s=e.decideStateChangeEmit(n,o,i.dragState!==null);n=s.nextLast,s.emit&&i.onStateChange(o)}}};exports.createDetailKeysNotifier=n,exports.createHoverRowNotifier=t,exports.createStateChangeNotifier=r;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { GridColumn, GridRowKey, GridSortState, GridState, GridUiState } from '../model/gridTypes.unbound';
|
|
2
|
+
export type HoverRowNotifierArgs = {
|
|
3
|
+
enableRowHover: boolean;
|
|
4
|
+
isHoverControlled: boolean;
|
|
5
|
+
onHoveredRowChange: ((index: number | null, meta: {
|
|
6
|
+
source: 'pointer';
|
|
7
|
+
}) => void) | undefined;
|
|
8
|
+
setHoveredRowIndex: (index: number | null) => void;
|
|
9
|
+
};
|
|
10
|
+
export type HoverRowAction = number | null | ((current: number | null) => number | null);
|
|
11
|
+
export type HoverRowNotifier = {
|
|
12
|
+
update: (args: HoverRowNotifierArgs) => void;
|
|
13
|
+
applyHoveredRowChange: (action: HoverRowAction) => void;
|
|
14
|
+
};
|
|
15
|
+
export declare const createHoverRowNotifier: () => HoverRowNotifier;
|
|
16
|
+
export type DetailKeysNotifierArgs = {
|
|
17
|
+
expandedKeys: ReadonlySet<GridRowKey>;
|
|
18
|
+
onChange: ((keys: GridRowKey[]) => void) | undefined;
|
|
19
|
+
};
|
|
20
|
+
export type DetailKeysNotifier = {
|
|
21
|
+
update: (args: DetailKeysNotifierArgs) => void;
|
|
22
|
+
};
|
|
23
|
+
export declare const createDetailKeysNotifier: () => DetailKeysNotifier;
|
|
24
|
+
export type StateChangeNotifierArgs<T> = {
|
|
25
|
+
columnWidths: GridUiState['columnWidths'];
|
|
26
|
+
filters: GridUiState['filters'];
|
|
27
|
+
sort: GridSortState;
|
|
28
|
+
dragState: GridUiState['dragState'];
|
|
29
|
+
columns: GridColumn<T>[];
|
|
30
|
+
onStateChange: ((state: GridState) => void) | undefined;
|
|
31
|
+
};
|
|
32
|
+
export type StateChangeNotifier<T> = {
|
|
33
|
+
update: (args: StateChangeNotifierArgs<T>) => void;
|
|
34
|
+
};
|
|
35
|
+
export declare const createStateChangeNotifier: <T>() => StateChangeNotifier<T>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { buildGridState as e, decideStateChangeEmit as t, extractColumnState as n } from "../logic/gridState.js";
|
|
2
|
+
//#region src/engine/notifiers.ts
|
|
3
|
+
var r = () => {
|
|
4
|
+
let e = null, t = null;
|
|
5
|
+
return {
|
|
6
|
+
update: (t) => {
|
|
7
|
+
e = t;
|
|
8
|
+
},
|
|
9
|
+
applyHoveredRowChange: (n) => {
|
|
10
|
+
if (e === null || !e.enableRowHover) return;
|
|
11
|
+
let r = t, i = typeof n == "function" ? n(r) : n;
|
|
12
|
+
i !== r && (t = i, e.isHoverControlled || e.setHoveredRowIndex(i), e.onHoveredRowChange?.(i, { source: "pointer" }));
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
}, i = () => {
|
|
16
|
+
let e = null;
|
|
17
|
+
return { update: ({ expandedKeys: t, onChange: n }) => {
|
|
18
|
+
if (e === null) {
|
|
19
|
+
e = t;
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
Object.is(e, t) || (e = t, n?.(Array.from(t)));
|
|
23
|
+
} };
|
|
24
|
+
}, a = () => {
|
|
25
|
+
let r = null, i = null, a = (e, t) => Object.is(e.columnWidths, t.columnWidths) && Object.is(e.filters, t.filters) && Object.is(e.sort, t.sort) && Object.is(e.dragState, t.dragState) && Object.is(e.columns, t.columns);
|
|
26
|
+
return { update: (o) => {
|
|
27
|
+
let s = r === null || !a(r, o);
|
|
28
|
+
if (r = o, !s || !o.onStateChange) return;
|
|
29
|
+
let c = e(o.columnWidths, o.filters, o.sort, n(o.columns)), l = t(i, c, o.dragState !== null);
|
|
30
|
+
i = l.nextLast, l.emit && o.onStateChange(c);
|
|
31
|
+
} };
|
|
32
|
+
};
|
|
33
|
+
//#endregion
|
|
34
|
+
export { i as createDetailKeysNotifier, r as createHoverRowNotifier, a as createStateChangeNotifier };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs"),t=require("../logic/grouping.cjs"),n=require("../logic/rowReorder.cjs"),r=require("../logic/filtering.cjs"),i=require("../logic/sorting.cjs"),a=require("./memo.cjs"),o=require("../logic/serverSideQuery.cjs");var s={},c={},l=[],u=`\0`,d=()=>{let d=a.createMemo(e=>r.createSourceOrder(e)),f=a.createMemo((e,t)=>{let n=[];for(let i of e)r.columnFilterUsesNumericKey(t[i.key])&&n.push(i.key);return n.join(u)}),p=a.createMemo((t,n,i)=>{let a=new Map;if(i.length===0)return a;let o=new Set(i.split(u)),s=t.length;for(let i of n){if(!o.has(i.key))continue;let n=new Float64Array(s);for(let a=0;a<s;a+=1)n[a]=r.coerceNumberFilterCellValue(e.getCellValue(t[a],i));a.set(i.key,n)}return a}),m=a.createMemo((e,t,n,i,a)=>r.filterOrderByColumns(e,t,n,i,a)),h=a.createMemo((e,t,n,r)=>i.sortOrder(e,t,n,r)),g=a.createMemo((e,t,r)=>e&&n.isIdentityOrder(t,r)),_=a.createMemo((e,n,r,i,a)=>e?t.buildGroupTree(n,r,i,a):null),v=a.createMemo((e,n)=>e?t.flattenGroupTree(e,n):null),y=a.createMemo((e,n,r,i)=>{if(e){let{displayOrder:n,groups:a}=e;return{getRowCount:()=>n.length,getRow:e=>r[n[e]],getSourceIndex:e=>{let t=n[e];return t>=0?t:void 0},getRowKey:e=>{let o=n[e];return t.isGroupOrderValue(o)?t.groupRowKey(a[t.groupIndexOfOrderValue(o)]):i(r[o],o)},getGroupRow:e=>{let r=n[e];return t.isGroupOrderValue(r)?a[t.groupIndexOfOrderValue(r)]:void 0}}}return{getRowCount:()=>n.length,getRow:e=>r[n[e]],getSourceIndex:e=>n[e],getRowKey:e=>i(r[n[e]],n[e])}}),b=a.createMemo((e,t,n,r,i,a,u)=>e?o.buildServerSideQuery({globalText:t?n:``,columnFilters:r?i:c,sort:a?u:l}):s),x=a.createMemo((e,t)=>e?o.serializeServerSideQuery(t):``),S=a.createMemo((e,t)=>({query:e,queryKey:t}));return{resolveBaseOrder:e=>d(e),resolveOrder:e=>{let{rows:t,visibleColumns:r,columnFilters:i,globalFilteredOrder:a,sort:o,rowDragAvailable:s}=e,c=f(r,i),l=p(t,r,c),u=m(t,a,r,i,l),d=h(t,u,r,o),_=g(s,d,t.length);return{order:d,orderIsIdentity:_,rowDragOperable:n.isRowDragOperable(s,_)}},resolveClientSideRowModel:e=>{let{rows:t,order:n,rowGroupingActive:r,groupColumns:i,aggColumns:a,collapsedGroupKeys:o,rowKeyGetter:s}=e,c=_(r,t,n,i,a),l=v(c,o);return{groupTree:c,groupedDisplay:l,rowModel:y(l,n,t,s)}},resolveServerSideQuery:e=>{let{isServerSide:t,globalFilterEnabled:n,globalText:r,columnFilterEnabled:i,columnFilters:a,sortingEnabled:o,sort:s}=e,c=b(t,n,r,i,a,o,s);return S(c,x(t,c))}}};exports.createRowPipelineResolver=d;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ColumnFilterValue, GridColumn, GridRowKey, GridSortState, RowModel, ServerSideQuery } from '../model/gridTypes.unbound';
|
|
2
|
+
import { type RowOrder } from '../logic/filtering';
|
|
3
|
+
import { type GroupTree, type GroupedDisplay } from '../logic/grouping';
|
|
4
|
+
export type RowOrderInputs<T> = {
|
|
5
|
+
rows: T[];
|
|
6
|
+
visibleColumns: GridColumn<T>[];
|
|
7
|
+
columnFilters: Record<string, ColumnFilterValue>;
|
|
8
|
+
globalFilteredOrder: RowOrder;
|
|
9
|
+
sort: GridSortState;
|
|
10
|
+
rowDragAvailable: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type RowOrderResolution = {
|
|
13
|
+
order: RowOrder;
|
|
14
|
+
orderIsIdentity: boolean;
|
|
15
|
+
rowDragOperable: boolean;
|
|
16
|
+
};
|
|
17
|
+
export type ClientSideRowModelInputs<T> = {
|
|
18
|
+
rows: T[];
|
|
19
|
+
order: RowOrder;
|
|
20
|
+
rowGroupingActive: boolean;
|
|
21
|
+
groupColumns: GridColumn<T>[];
|
|
22
|
+
aggColumns: GridColumn<T>[];
|
|
23
|
+
collapsedGroupKeys: ReadonlySet<string>;
|
|
24
|
+
rowKeyGetter: (row: T, index: number) => GridRowKey;
|
|
25
|
+
};
|
|
26
|
+
export type ClientSideRowModelResolution<T> = {
|
|
27
|
+
groupTree: GroupTree<T> | null;
|
|
28
|
+
groupedDisplay: GroupedDisplay | null;
|
|
29
|
+
rowModel: RowModel<T>;
|
|
30
|
+
};
|
|
31
|
+
export type ServerSideQueryInputs = {
|
|
32
|
+
isServerSide: boolean;
|
|
33
|
+
globalFilterEnabled: boolean;
|
|
34
|
+
globalText: string;
|
|
35
|
+
columnFilterEnabled: boolean;
|
|
36
|
+
columnFilters: Record<string, ColumnFilterValue>;
|
|
37
|
+
sortingEnabled: boolean;
|
|
38
|
+
sort: GridSortState;
|
|
39
|
+
};
|
|
40
|
+
export type ServerSideQueryResolution = {
|
|
41
|
+
query: ServerSideQuery;
|
|
42
|
+
queryKey: string;
|
|
43
|
+
};
|
|
44
|
+
export declare const createRowPipelineResolver: <T>() => {
|
|
45
|
+
resolveBaseOrder: (rowCount: number) => RowOrder;
|
|
46
|
+
resolveOrder: (inputs: RowOrderInputs<T>) => RowOrderResolution;
|
|
47
|
+
resolveClientSideRowModel: (inputs: ClientSideRowModelInputs<T>) => ClientSideRowModelResolution<T>;
|
|
48
|
+
resolveServerSideQuery: (inputs: ServerSideQueryInputs) => ServerSideQueryResolution;
|
|
49
|
+
};
|
|
50
|
+
export type RowPipelineResolver<T> = ReturnType<typeof createRowPipelineResolver<T>>;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { getCellValue as e } from "../utils/permissions.js";
|
|
2
|
+
import { buildGroupTree as t, flattenGroupTree as n, groupIndexOfOrderValue as r, groupRowKey as i, isGroupOrderValue as a } from "../logic/grouping.js";
|
|
3
|
+
import { isIdentityOrder as o, isRowDragOperable as s } from "../logic/rowReorder.js";
|
|
4
|
+
import { coerceNumberFilterCellValue as c, columnFilterUsesNumericKey as l, createSourceOrder as u, filterOrderByColumns as d } from "../logic/filtering.js";
|
|
5
|
+
import { sortOrder as f } from "../logic/sorting.js";
|
|
6
|
+
import { createMemo as p } from "./memo.js";
|
|
7
|
+
import { buildServerSideQuery as m, serializeServerSideQuery as h } from "../logic/serverSideQuery.js";
|
|
8
|
+
//#region src/engine/rowPipeline.ts
|
|
9
|
+
var g = {}, _ = {}, v = [], y = "\0", b = () => {
|
|
10
|
+
let b = p((e) => u(e)), x = p((e, t) => {
|
|
11
|
+
let n = [];
|
|
12
|
+
for (let r of e) l(t[r.key]) && n.push(r.key);
|
|
13
|
+
return n.join(y);
|
|
14
|
+
}), S = p((t, n, r) => {
|
|
15
|
+
let i = /* @__PURE__ */ new Map();
|
|
16
|
+
if (r.length === 0) return i;
|
|
17
|
+
let a = new Set(r.split(y)), o = t.length;
|
|
18
|
+
for (let r of n) {
|
|
19
|
+
if (!a.has(r.key)) continue;
|
|
20
|
+
let n = new Float64Array(o);
|
|
21
|
+
for (let i = 0; i < o; i += 1) n[i] = c(e(t[i], r));
|
|
22
|
+
i.set(r.key, n);
|
|
23
|
+
}
|
|
24
|
+
return i;
|
|
25
|
+
}), C = p((e, t, n, r, i) => d(e, t, n, r, i)), w = p((e, t, n, r) => f(e, t, n, r)), T = p((e, t, n) => e && o(t, n)), E = p((e, n, r, i, a) => e ? t(n, r, i, a) : null), D = p((e, t) => e ? n(e, t) : null), O = p((e, t, n, o) => {
|
|
26
|
+
if (e) {
|
|
27
|
+
let { displayOrder: t, groups: s } = e;
|
|
28
|
+
return {
|
|
29
|
+
getRowCount: () => t.length,
|
|
30
|
+
getRow: (e) => n[t[e]],
|
|
31
|
+
getSourceIndex: (e) => {
|
|
32
|
+
let n = t[e];
|
|
33
|
+
return n >= 0 ? n : void 0;
|
|
34
|
+
},
|
|
35
|
+
getRowKey: (e) => {
|
|
36
|
+
let c = t[e];
|
|
37
|
+
return a(c) ? i(s[r(c)]) : o(n[c], c);
|
|
38
|
+
},
|
|
39
|
+
getGroupRow: (e) => {
|
|
40
|
+
let n = t[e];
|
|
41
|
+
return a(n) ? s[r(n)] : void 0;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
getRowCount: () => t.length,
|
|
47
|
+
getRow: (e) => n[t[e]],
|
|
48
|
+
getSourceIndex: (e) => t[e],
|
|
49
|
+
getRowKey: (e) => o(n[t[e]], t[e])
|
|
50
|
+
};
|
|
51
|
+
}), k = p((e, t, n, r, i, a, o) => e ? m({
|
|
52
|
+
globalText: t ? n : "",
|
|
53
|
+
columnFilters: r ? i : _,
|
|
54
|
+
sort: a ? o : v
|
|
55
|
+
}) : g), A = p((e, t) => e ? h(t) : ""), j = p((e, t) => ({
|
|
56
|
+
query: e,
|
|
57
|
+
queryKey: t
|
|
58
|
+
}));
|
|
59
|
+
return {
|
|
60
|
+
resolveBaseOrder: (e) => b(e),
|
|
61
|
+
resolveOrder: (e) => {
|
|
62
|
+
let { rows: t, visibleColumns: n, columnFilters: r, globalFilteredOrder: i, sort: a, rowDragAvailable: o } = e, c = x(n, r), l = S(t, n, c), u = C(t, i, n, r, l), d = w(t, u, n, a), f = T(o, d, t.length);
|
|
63
|
+
return {
|
|
64
|
+
order: d,
|
|
65
|
+
orderIsIdentity: f,
|
|
66
|
+
rowDragOperable: s(o, f)
|
|
67
|
+
};
|
|
68
|
+
},
|
|
69
|
+
resolveClientSideRowModel: (e) => {
|
|
70
|
+
let { rows: t, order: n, rowGroupingActive: r, groupColumns: i, aggColumns: a, collapsedGroupKeys: o, rowKeyGetter: s } = e, c = E(r, t, n, i, a), l = D(c, o);
|
|
71
|
+
return {
|
|
72
|
+
groupTree: c,
|
|
73
|
+
groupedDisplay: l,
|
|
74
|
+
rowModel: O(l, n, t, s)
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
resolveServerSideQuery: (e) => {
|
|
78
|
+
let { isServerSide: t, globalFilterEnabled: n, globalText: r, columnFilterEnabled: i, columnFilters: a, sortingEnabled: o, sort: s } = e, c = k(t, n, r, i, a, o, s);
|
|
79
|
+
return j(c, A(t, c));
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
//#endregion
|
|
84
|
+
export { b as createRowPipelineResolver };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../model/gridActions.cjs"),t=require("../logic/rowSelection.cjs");var n=()=>{let n=null,r=null,i,a=!1,o=()=>{if(n===null)throw Error(`[SpreadsheetGrid] rowSelectionCommands は update 前に呼べません。`);return n},s=n=>{let{rowSelectionState:r,onRowSelectionChange:i,controlledRowSelectionModel:a,dispatch:s}=o();t.rowSelectionStateEquals(r,n)||i?.(t.rowSelectionToModel(n)),a===void 0&&s(e.gridActions.setRowSelectionState(n))},c=(e,t,n)=>{let r=Math.min(t,n),i=Math.max(t,n),a=[];for(let t=r;t<=i;t+=1)e.getRow(t)&&a.push(e.getRowKey(t)??t);return a};return{update:r=>{n=r;let o=r.controlledRowSelectionModel;if((!a||!Object.is(o,i))&&(a=!0,i=o,o!==void 0)){let n=t.rowSelectionFromModel(o);t.rowSelectionStateEquals(r.rowSelectionState,n)||r.dispatch(e.gridActions.setRowSelectionState(n))}},commitRowSelection:s,handleGutterRowSelect:(e,n)=>{let{rowModel:i,rowSelectionMode:a,rowSelectionState:l}=o();if(!i.getRow(e))return;let u=i.getRowKey(e)??e;if(a===`single`){r=e,s(t.selectSingleRow(u));return}if(n.shiftKey&&r!==null){s(t.selectRowRange(c(i,r,e)));return}r=e,s(t.toggleRowKey(l,u))},handleGutterRowSelectDrag:e=>{let{rowModel:n,rowSelectionMode:i}=o();if(n.getRow(e)){if(i===`single`){s(t.selectSingleRow(n.getRowKey(e)??e));return}r!==null&&s(t.selectRowRange(c(n,r,e)))}},handleToggleSelectAllRows:()=>{let{rowSelectionState:e,leafRowCount:n}=o(),r=t.getSelectAllState(e,n);s(r===`all`?t.clearRowSelection():t.selectAllRows())}}};exports.createRowSelectionCommands=n;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { RowModel, RowSelectionModel, RowSelectionState } from '../model/gridTypes.unbound';
|
|
2
|
+
import { type GridUiAction } from '../model/gridActions';
|
|
3
|
+
export type RowSelectionCommandsArgs<T> = {
|
|
4
|
+
rowModel: RowModel<T>;
|
|
5
|
+
rowSelectionState: RowSelectionState;
|
|
6
|
+
rowSelectionMode: 'single' | 'multiple';
|
|
7
|
+
onRowSelectionChange: ((model: RowSelectionModel) => void) | undefined;
|
|
8
|
+
controlledRowSelectionModel: RowSelectionModel | undefined;
|
|
9
|
+
leafRowCount: number;
|
|
10
|
+
dispatch: (action: GridUiAction) => void;
|
|
11
|
+
};
|
|
12
|
+
export type RowSelectionCommands<T> = {
|
|
13
|
+
update: (args: RowSelectionCommandsArgs<T>) => void;
|
|
14
|
+
commitRowSelection: (next: RowSelectionState) => void;
|
|
15
|
+
handleGutterRowSelect: (viewIndex: number, opts: {
|
|
16
|
+
shiftKey: boolean;
|
|
17
|
+
}) => void;
|
|
18
|
+
handleGutterRowSelectDrag: (viewIndex: number) => void;
|
|
19
|
+
handleToggleSelectAllRows: () => void;
|
|
20
|
+
};
|
|
21
|
+
export declare const createRowSelectionCommands: <T>() => RowSelectionCommands<T>;
|