@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,30 @@
|
|
|
1
|
+
import type { ColumnMeasurement } from '../logic/geometry';
|
|
2
|
+
import type { CellCoord } from '../model/gridTypes.unbound';
|
|
3
|
+
export type ViewportCellRect = {
|
|
4
|
+
left: number;
|
|
5
|
+
top: number;
|
|
6
|
+
width: number;
|
|
7
|
+
height: number;
|
|
8
|
+
};
|
|
9
|
+
export type ViewportSyncArgs<T> = {
|
|
10
|
+
scrollElement: HTMLElement | null;
|
|
11
|
+
columnVirtualizer: {
|
|
12
|
+
measure: () => void;
|
|
13
|
+
};
|
|
14
|
+
columnMeasurements: ColumnMeasurement<T>[];
|
|
15
|
+
totalScrollWidth: number;
|
|
16
|
+
physicalBodyHeight: number;
|
|
17
|
+
headerHeight: number;
|
|
18
|
+
leftPaneWidth: number;
|
|
19
|
+
rightPaneWidth: number;
|
|
20
|
+
centerLeadingWidth: number;
|
|
21
|
+
activeCellRect: ViewportCellRect | null;
|
|
22
|
+
activeCell: CellCoord | null;
|
|
23
|
+
verticalScaleFactor: number;
|
|
24
|
+
};
|
|
25
|
+
export type ViewportSyncController<T> = {
|
|
26
|
+
update: (args: ViewportSyncArgs<T>) => void;
|
|
27
|
+
};
|
|
28
|
+
export declare const clampScrollToContent: (scrollElement: HTMLElement, args: Pick<ViewportSyncArgs<unknown>, "totalScrollWidth" | "physicalBodyHeight" | "headerHeight">) => void;
|
|
29
|
+
export declare const scrollCellIntoView: (scrollElement: HTMLElement, rect: ViewportCellRect, args: Pick<ViewportSyncArgs<unknown>, "headerHeight" | "leftPaneWidth" | "rightPaneWidth" | "centerLeadingWidth" | "verticalScaleFactor">) => void;
|
|
30
|
+
export declare const createViewportSyncController: <T>() => ViewportSyncController<T>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { logicalToPhysicalScrollTop as e, physicalToLogicalScrollTop as t } from "../logic/verticalGeometry.js";
|
|
2
|
+
//#region src/controllers/viewportSyncController.ts
|
|
3
|
+
var n = (e, t) => {
|
|
4
|
+
let n = Math.max(t.totalScrollWidth - e.clientWidth, 0), r = Math.max(t.headerHeight + t.physicalBodyHeight - e.clientHeight, 0);
|
|
5
|
+
e.scrollLeft > n && (e.scrollLeft = n), e.scrollTop > r && (e.scrollTop = r);
|
|
6
|
+
}, r = (n, r, i) => {
|
|
7
|
+
let a = i.headerHeight + r.top, o = a + r.height, s = i.leftPaneWidth + i.centerLeadingWidth + r.left, c = s + r.width, l = t(n.scrollTop, i.verticalScaleFactor), u = n.scrollLeft, d = n.clientHeight, f = n.clientWidth, p = l, m = u, h = l + i.headerHeight, g = l + d;
|
|
8
|
+
a < h ? p = Math.max(a - i.headerHeight, 0) : o > g && (p = Math.max(o - d, 0));
|
|
9
|
+
let _ = u + i.leftPaneWidth, v = u + f - i.rightPaneWidth;
|
|
10
|
+
s < _ ? m = Math.max(s - i.leftPaneWidth, 0) : c > v && (m = Math.max(c - f + i.rightPaneWidth, 0)), (p !== l || m !== u) && n.scrollTo({
|
|
11
|
+
top: e(p, i.verticalScaleFactor),
|
|
12
|
+
left: m,
|
|
13
|
+
behavior: "auto"
|
|
14
|
+
});
|
|
15
|
+
}, i = (e, t, n) => e === null || n.some((n) => !Object.is(e[n], t[n])), a = () => {
|
|
16
|
+
let e = null, t = null;
|
|
17
|
+
return { update: (a) => {
|
|
18
|
+
if (i(e, a, ["columnVirtualizer", "columnMeasurements"]) && a.columnVirtualizer.measure(), i(e, a, [
|
|
19
|
+
"scrollElement",
|
|
20
|
+
"totalScrollWidth",
|
|
21
|
+
"physicalBodyHeight",
|
|
22
|
+
"headerHeight"
|
|
23
|
+
]) && a.scrollElement && n(a.scrollElement, a), i(e, a, [
|
|
24
|
+
"scrollElement",
|
|
25
|
+
"activeCellRect",
|
|
26
|
+
"activeCell",
|
|
27
|
+
"headerHeight",
|
|
28
|
+
"leftPaneWidth",
|
|
29
|
+
"rightPaneWidth",
|
|
30
|
+
"centerLeadingWidth",
|
|
31
|
+
"verticalScaleFactor"
|
|
32
|
+
])) {
|
|
33
|
+
let e = t, { activeCell: n } = a, i = e !== null && n !== null && e.row === n.row && e.col === n.col;
|
|
34
|
+
t = n, !i && a.scrollElement && a.activeCellRect && r(a.scrollElement, a.activeCellRect, a);
|
|
35
|
+
}
|
|
36
|
+
e = a;
|
|
37
|
+
} };
|
|
38
|
+
};
|
|
39
|
+
//#endregion
|
|
40
|
+
export { n as clampScrollToContent, a as createViewportSyncController, r as scrollCellIntoView };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../model/gridActions.cjs"),t=require("../logic/geometry.cjs"),n=require("../logic/sorting.cjs"),r=require("../logic/columnReset.cjs");var i=300,a=4,o=()=>{let o=null,s=null,c=null,l=()=>{if(o===null)throw Error(`[SpreadsheetGrid] columnCommands は update 前に呼べません。`);return o},u=t=>{t(e.gridActions.stopEdit()),t(e.gridActions.clearSelection()),t(e.gridActions.activateCell(null))},d=(t,n)=>{n(t.length===0?e.gridActions.clearSort():e.gridActions.setSort(t))},f=(e,t)=>{let{closeColumnMenu:n,onColumnsChange:r,columns:i,columnWidths:a,dispatch:o}=l();if(n(),!r)return;let s=i.find(t=>t.key===e);s&&(s.pinned??void 0)!==t&&(r(i.map(n=>{let r=a[n.key]??n.width;return n.key===e?{...n,width:r,pinned:t}:r===n.width?n:{...n,width:r}})),u(o))},p=e=>{let{closeColumnMenu:t,visibleColumns:n,runAutosize:r}=l();t();let i=n.find(t=>t.key===e);i&&r([i])},m=()=>{let{closeColumnMenu:e,visibleColumns:t,runAutosize:n}=l();e(),n(t)},h=()=>{let{closeColumnMenu:e,openToolPanel:t}=l();e(),t(`columns`)},g=()=>{let{closeColumnMenu:e,openToolPanel:t}=l();e(),t(`sort`)},_=()=>{let{closeColumnMenu:e,openToolPanel:t}=l();e(),t(`filter`)},v=e=>{let{closeColumnMenu:t,openColumnFilterPopover:n}=l();t(),n(e)},y=t=>{l().dispatch(e.gridActions.clearColumnFilter(t))},b=()=>{let{dispatch:t,globalFilterText:n}=l();t(e.gridActions.setAllFilters({globalText:n,columnFilters:{}}))},x=()=>{l().dispatch(e.gridActions.setGlobalFilter(``))},S=(e,t)=>{let{onColumnsChange:n,columns:r,columnWidths:i,dispatch:a}=l();if(!n)return;let o=r.find(t=>t.key===e);o&&o.visible!==!1!==t&&(!t&&r.filter(e=>e.visible!==!1).length<=1||(n(r.map(n=>{let r=i[n.key]??n.width;return n.key===e?{...n,width:r,visible:t}:r===n.width?n:{...n,width:r}})),u(a)))},C=()=>{let{onColumnsChange:e,columns:t,columnWidths:n,dispatch:r}=l();e&&t.some(e=>e.visible===!1)&&(e(t.map(e=>{let t=n[e.key]??e.width,r=t!==e.width,i=e.visible===!1;return!r&&!i?e:i?{...e,width:t,visible:!0}:{...e,width:t}})),u(r))},w=()=>{let{onColumnsChange:e,columns:t,orderedColumns:n,columnWidths:r,dispatch:i}=l();if(!e)return;let a=n[0]?.key;a!==void 0&&t.some(e=>e.visible!==!1&&e.key!==a)&&(e(t.map(e=>{let t=r[e.key]??e.width,n=t!==e.width,i=e.visible!==!1&&e.key!==a;return!n&&!i?e:i?{...e,width:t,visible:!1}:{...e,width:t}})),u(i))},T=(e,n)=>{let{onColumnsChange:r,columns:i,columnWidths:a,dispatch:o}=l();if(!r||e.length!==i.length)return;let s=new Map(i.map(e=>[e.key,e]));if(!e.every(e=>s.has(e)))return;let c=t.reorderColumnsByPane(e.map(e=>{let t=s.get(e),r=a[t.key]??t.width,i=n?.has(e)?n.get(e):t.pinned,o=r!==t.width,c=(t.pinned??void 0)!==(i??void 0);return o||c?{...t,width:r,pinned:i}:t}));c.length===i.length&&c.every((e,t)=>{let n=i[t];return!!n&&n.key===e.key&&n.width===e.width&&(n.pinned??void 0)===(e.pinned??void 0)})||(r(c),u(o))},E=e=>{T(e)},D=()=>{let{onColumnsChange:e,columns:t,columnWidths:n,dispatch:i}=l();if(!e||!s)return;let a=r.buildResetColumns(t,s,n);a!==null&&(e(a),u(i))};return{update:e=>{o=e,s===null&&(s=new Map(e.columns.map(e=>[e.key,{width:e.width,pinned:e.pinned,visible:e.visible}])))},handleColumnMenuPinnedChange:f,handleColumnMenuAutosizeColumn:p,handleColumnMenuAutosizeAllColumns:m,handleColumnMenuOpenChooser:h,handleColumnMenuOpenSortManager:g,handleColumnMenuOpenFilter:v,handleColumnMenuOpenFilterManager:_,handleColumnMenuResetColumns:()=>{l().closeColumnMenu(),D()},handleColumnMenuSortChange:(e,t)=>{let{closeColumnMenu:r,enableSorting:i,sort:a,dispatch:o}=l();r(),i&&d(n.nextSortEntries(a,e,t,!1),o)},handleFilterManagerClearFilter:y,handleFilterManagerClearAll:b,handleFilterManagerClearGlobal:x,handleColumnChooserToggleVisibility:S,handleColumnChooserShowAll:C,handleColumnChooserHideAll:w,handleColumnChooserReorder:E,handleColumnChooserReset:D,applyColumnOrderAndPin:T,handleSortManagerAddLevel:(t,r)=>{let{enableSorting:i,sort:a,dispatch:o}=l();i&&o(e.gridActions.setSort(n.addSortEntry(a,t,r)))},handleSortManagerChangeDirection:(t,r)=>{let{enableSorting:i,sort:a,dispatch:o}=l();i&&o(e.gridActions.setSort(n.setSortEntryDirection(a,t,r)))},handleSortManagerChangeColumn:(t,r)=>{let{enableSorting:i,sort:a,dispatch:o}=l();i&&o(e.gridActions.setSort(n.setSortEntryColumn(a,t,r)))},handleSortManagerRemoveLevel:e=>{let{enableSorting:t,sort:r,dispatch:i}=l();t&&d(n.removeSortEntryAt(r,e),i)},handleSortManagerClearAll:()=>{let{enableSorting:t,dispatch:n}=l();t&&n(e.gridActions.clearSort())},handleSortManagerMove:(t,r)=>{let{enableSorting:i,sort:a,dispatch:o}=l();i&&o(e.gridActions.setSort(n.moveSortEntry(a,t,r)))},handleColumnResizePointerDown:(t,n)=>{n.preventDefault(),n.stopPropagation();let{columnWidths:r,dispatch:o,runAutosize:s}=l(),u=n.timeStamp,d=c;if(d&&d.key===t.key&&u-d.time<i&&Math.abs(n.clientX-d.x)<a){c=null,s([t]);return}c={key:t.key,time:u,x:n.clientX},o(e.gridActions.startColumnResize(t.key,n.clientX,r[t.key]??t.width,t.minWidth??60,t.maxWidth))},getInitialColumnState:()=>s}};exports.createColumnCommands=o;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { GridColumn, GridColumnPinned, GridSortState } from '../model/gridTypes.unbound';
|
|
2
|
+
import { type GridUiAction } from '../model/gridActions';
|
|
3
|
+
import { type InitialColumnState } from '../logic/columnReset';
|
|
4
|
+
import type { ToolPanelTab } from '../controllers/toolPanelController';
|
|
5
|
+
export type ColumnCommandsArgs<T> = {
|
|
6
|
+
columns: GridColumn<T>[];
|
|
7
|
+
visibleColumns: GridColumn<T>[];
|
|
8
|
+
orderedColumns: GridColumn<T>[];
|
|
9
|
+
columnWidths: Record<string, number>;
|
|
10
|
+
onColumnsChange: ((columns: GridColumn<T>[]) => void) | undefined;
|
|
11
|
+
dispatch: (action: GridUiAction) => void;
|
|
12
|
+
enableSorting: boolean;
|
|
13
|
+
sort: GridSortState;
|
|
14
|
+
globalFilterText: string;
|
|
15
|
+
closeColumnMenu: () => void;
|
|
16
|
+
openToolPanel: (tab: ToolPanelTab) => void;
|
|
17
|
+
openColumnFilterPopover: (column: GridColumn<T>) => void;
|
|
18
|
+
runAutosize: (columns: GridColumn<T>[]) => Promise<void> | void;
|
|
19
|
+
};
|
|
20
|
+
export type SortDirection = 'asc' | 'desc';
|
|
21
|
+
export type ColumnCommands<T> = {
|
|
22
|
+
update: (args: ColumnCommandsArgs<T>) => void;
|
|
23
|
+
handleColumnMenuPinnedChange: (columnKey: string, nextPinned: GridColumnPinned | undefined) => void;
|
|
24
|
+
handleColumnMenuAutosizeColumn: (columnKey: string) => void;
|
|
25
|
+
handleColumnMenuAutosizeAllColumns: () => void;
|
|
26
|
+
handleColumnMenuOpenChooser: () => void;
|
|
27
|
+
handleColumnMenuOpenSortManager: () => void;
|
|
28
|
+
handleColumnMenuOpenFilter: (column: GridColumn<T>) => void;
|
|
29
|
+
handleColumnMenuOpenFilterManager: () => void;
|
|
30
|
+
handleColumnMenuResetColumns: () => void;
|
|
31
|
+
handleColumnMenuSortChange: (columnKey: string, direction: SortDirection) => void;
|
|
32
|
+
handleFilterManagerClearFilter: (columnKey: string) => void;
|
|
33
|
+
handleFilterManagerClearAll: () => void;
|
|
34
|
+
handleFilterManagerClearGlobal: () => void;
|
|
35
|
+
handleColumnChooserToggleVisibility: (columnKey: string, nextVisible: boolean) => void;
|
|
36
|
+
handleColumnChooserShowAll: () => void;
|
|
37
|
+
handleColumnChooserHideAll: () => void;
|
|
38
|
+
handleColumnChooserReorder: (orderedKeys: string[]) => void;
|
|
39
|
+
handleColumnChooserReset: () => void;
|
|
40
|
+
applyColumnOrderAndPin: (orderedKeys: string[], pinOverride?: Map<string, GridColumnPinned | undefined>) => void;
|
|
41
|
+
handleSortManagerAddLevel: (columnKey: string, direction: SortDirection) => void;
|
|
42
|
+
handleSortManagerChangeDirection: (index: number, direction: SortDirection) => void;
|
|
43
|
+
handleSortManagerChangeColumn: (index: number, columnKey: string) => void;
|
|
44
|
+
handleSortManagerRemoveLevel: (index: number) => void;
|
|
45
|
+
handleSortManagerClearAll: () => void;
|
|
46
|
+
handleSortManagerMove: (from: number, to: number) => void;
|
|
47
|
+
handleColumnResizePointerDown: (column: GridColumn<T>, event: ColumnResizePointerEvent) => void;
|
|
48
|
+
getInitialColumnState: () => Map<string, InitialColumnState> | null;
|
|
49
|
+
};
|
|
50
|
+
export type ColumnResizePointerEvent = {
|
|
51
|
+
timeStamp: number;
|
|
52
|
+
clientX: number;
|
|
53
|
+
preventDefault: () => void;
|
|
54
|
+
stopPropagation: () => void;
|
|
55
|
+
};
|
|
56
|
+
export declare const createColumnCommands: <T>() => ColumnCommands<T>;
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { gridActions as e } from "../model/gridActions.js";
|
|
2
|
+
import { reorderColumnsByPane as t } from "../logic/geometry.js";
|
|
3
|
+
import { addSortEntry as n, moveSortEntry as r, nextSortEntries as i, removeSortEntryAt as a, setSortEntryColumn as o, setSortEntryDirection as s } from "../logic/sorting.js";
|
|
4
|
+
import { buildResetColumns as c } from "../logic/columnReset.js";
|
|
5
|
+
//#region src/engine/columnCommands.ts
|
|
6
|
+
var l = 300, u = 4, d = () => {
|
|
7
|
+
let d = null, f = null, p = null, m = () => {
|
|
8
|
+
if (d === null) throw Error("[SpreadsheetGrid] columnCommands は update 前に呼べません。");
|
|
9
|
+
return d;
|
|
10
|
+
}, h = (t) => {
|
|
11
|
+
t(e.stopEdit()), t(e.clearSelection()), t(e.activateCell(null));
|
|
12
|
+
}, g = (t, n) => {
|
|
13
|
+
n(t.length === 0 ? e.clearSort() : e.setSort(t));
|
|
14
|
+
}, _ = (e, t) => {
|
|
15
|
+
let { closeColumnMenu: n, onColumnsChange: r, columns: i, columnWidths: a, dispatch: o } = m();
|
|
16
|
+
if (n(), !r) return;
|
|
17
|
+
let s = i.find((t) => t.key === e);
|
|
18
|
+
s && (s.pinned ?? void 0) !== t && (r(i.map((n) => {
|
|
19
|
+
let r = a[n.key] ?? n.width;
|
|
20
|
+
return n.key === e ? {
|
|
21
|
+
...n,
|
|
22
|
+
width: r,
|
|
23
|
+
pinned: t
|
|
24
|
+
} : r === n.width ? n : {
|
|
25
|
+
...n,
|
|
26
|
+
width: r
|
|
27
|
+
};
|
|
28
|
+
})), h(o));
|
|
29
|
+
}, v = (e) => {
|
|
30
|
+
let { closeColumnMenu: t, visibleColumns: n, runAutosize: r } = m();
|
|
31
|
+
t();
|
|
32
|
+
let i = n.find((t) => t.key === e);
|
|
33
|
+
i && r([i]);
|
|
34
|
+
}, y = () => {
|
|
35
|
+
let { closeColumnMenu: e, visibleColumns: t, runAutosize: n } = m();
|
|
36
|
+
e(), n(t);
|
|
37
|
+
}, b = () => {
|
|
38
|
+
let { closeColumnMenu: e, openToolPanel: t } = m();
|
|
39
|
+
e(), t("columns");
|
|
40
|
+
}, x = () => {
|
|
41
|
+
let { closeColumnMenu: e, openToolPanel: t } = m();
|
|
42
|
+
e(), t("sort");
|
|
43
|
+
}, S = () => {
|
|
44
|
+
let { closeColumnMenu: e, openToolPanel: t } = m();
|
|
45
|
+
e(), t("filter");
|
|
46
|
+
}, C = (e) => {
|
|
47
|
+
let { closeColumnMenu: t, openColumnFilterPopover: n } = m();
|
|
48
|
+
t(), n(e);
|
|
49
|
+
}, w = (t) => {
|
|
50
|
+
m().dispatch(e.clearColumnFilter(t));
|
|
51
|
+
}, T = () => {
|
|
52
|
+
let { dispatch: t, globalFilterText: n } = m();
|
|
53
|
+
t(e.setAllFilters({
|
|
54
|
+
globalText: n,
|
|
55
|
+
columnFilters: {}
|
|
56
|
+
}));
|
|
57
|
+
}, E = () => {
|
|
58
|
+
m().dispatch(e.setGlobalFilter(""));
|
|
59
|
+
}, D = (e, t) => {
|
|
60
|
+
let { onColumnsChange: n, columns: r, columnWidths: i, dispatch: a } = m();
|
|
61
|
+
if (!n) return;
|
|
62
|
+
let o = r.find((t) => t.key === e);
|
|
63
|
+
o && o.visible !== !1 !== t && (!t && r.filter((e) => e.visible !== !1).length <= 1 || (n(r.map((n) => {
|
|
64
|
+
let r = i[n.key] ?? n.width;
|
|
65
|
+
return n.key === e ? {
|
|
66
|
+
...n,
|
|
67
|
+
width: r,
|
|
68
|
+
visible: t
|
|
69
|
+
} : r === n.width ? n : {
|
|
70
|
+
...n,
|
|
71
|
+
width: r
|
|
72
|
+
};
|
|
73
|
+
})), h(a)));
|
|
74
|
+
}, O = () => {
|
|
75
|
+
let { onColumnsChange: e, columns: t, columnWidths: n, dispatch: r } = m();
|
|
76
|
+
e && t.some((e) => e.visible === !1) && (e(t.map((e) => {
|
|
77
|
+
let t = n[e.key] ?? e.width, r = t !== e.width, i = e.visible === !1;
|
|
78
|
+
return !r && !i ? e : i ? {
|
|
79
|
+
...e,
|
|
80
|
+
width: t,
|
|
81
|
+
visible: !0
|
|
82
|
+
} : {
|
|
83
|
+
...e,
|
|
84
|
+
width: t
|
|
85
|
+
};
|
|
86
|
+
})), h(r));
|
|
87
|
+
}, k = () => {
|
|
88
|
+
let { onColumnsChange: e, columns: t, orderedColumns: n, columnWidths: r, dispatch: i } = m();
|
|
89
|
+
if (!e) return;
|
|
90
|
+
let a = n[0]?.key;
|
|
91
|
+
a !== void 0 && t.some((e) => e.visible !== !1 && e.key !== a) && (e(t.map((e) => {
|
|
92
|
+
let t = r[e.key] ?? e.width, n = t !== e.width, i = e.visible !== !1 && e.key !== a;
|
|
93
|
+
return !n && !i ? e : i ? {
|
|
94
|
+
...e,
|
|
95
|
+
width: t,
|
|
96
|
+
visible: !1
|
|
97
|
+
} : {
|
|
98
|
+
...e,
|
|
99
|
+
width: t
|
|
100
|
+
};
|
|
101
|
+
})), h(i));
|
|
102
|
+
}, A = (e, n) => {
|
|
103
|
+
let { onColumnsChange: r, columns: i, columnWidths: a, dispatch: o } = m();
|
|
104
|
+
if (!r || e.length !== i.length) return;
|
|
105
|
+
let s = new Map(i.map((e) => [e.key, e]));
|
|
106
|
+
if (!e.every((e) => s.has(e))) return;
|
|
107
|
+
let c = t(e.map((e) => {
|
|
108
|
+
let t = s.get(e), r = a[t.key] ?? t.width, i = n?.has(e) ? n.get(e) : t.pinned, o = r !== t.width, c = (t.pinned ?? void 0) !== (i ?? void 0);
|
|
109
|
+
return o || c ? {
|
|
110
|
+
...t,
|
|
111
|
+
width: r,
|
|
112
|
+
pinned: i
|
|
113
|
+
} : t;
|
|
114
|
+
}));
|
|
115
|
+
c.length === i.length && c.every((e, t) => {
|
|
116
|
+
let n = i[t];
|
|
117
|
+
return !!n && n.key === e.key && n.width === e.width && (n.pinned ?? void 0) === (e.pinned ?? void 0);
|
|
118
|
+
}) || (r(c), h(o));
|
|
119
|
+
}, j = (e) => {
|
|
120
|
+
A(e);
|
|
121
|
+
}, M = () => {
|
|
122
|
+
let { onColumnsChange: e, columns: t, columnWidths: n, dispatch: r } = m();
|
|
123
|
+
if (!e || !f) return;
|
|
124
|
+
let i = c(t, f, n);
|
|
125
|
+
i !== null && (e(i), h(r));
|
|
126
|
+
};
|
|
127
|
+
return {
|
|
128
|
+
update: (e) => {
|
|
129
|
+
d = e, f === null && (f = new Map(e.columns.map((e) => [e.key, {
|
|
130
|
+
width: e.width,
|
|
131
|
+
pinned: e.pinned,
|
|
132
|
+
visible: e.visible
|
|
133
|
+
}])));
|
|
134
|
+
},
|
|
135
|
+
handleColumnMenuPinnedChange: _,
|
|
136
|
+
handleColumnMenuAutosizeColumn: v,
|
|
137
|
+
handleColumnMenuAutosizeAllColumns: y,
|
|
138
|
+
handleColumnMenuOpenChooser: b,
|
|
139
|
+
handleColumnMenuOpenSortManager: x,
|
|
140
|
+
handleColumnMenuOpenFilter: C,
|
|
141
|
+
handleColumnMenuOpenFilterManager: S,
|
|
142
|
+
handleColumnMenuResetColumns: () => {
|
|
143
|
+
m().closeColumnMenu(), M();
|
|
144
|
+
},
|
|
145
|
+
handleColumnMenuSortChange: (e, t) => {
|
|
146
|
+
let { closeColumnMenu: n, enableSorting: r, sort: a, dispatch: o } = m();
|
|
147
|
+
n(), r && g(i(a, e, t, !1), o);
|
|
148
|
+
},
|
|
149
|
+
handleFilterManagerClearFilter: w,
|
|
150
|
+
handleFilterManagerClearAll: T,
|
|
151
|
+
handleFilterManagerClearGlobal: E,
|
|
152
|
+
handleColumnChooserToggleVisibility: D,
|
|
153
|
+
handleColumnChooserShowAll: O,
|
|
154
|
+
handleColumnChooserHideAll: k,
|
|
155
|
+
handleColumnChooserReorder: j,
|
|
156
|
+
handleColumnChooserReset: M,
|
|
157
|
+
applyColumnOrderAndPin: A,
|
|
158
|
+
handleSortManagerAddLevel: (t, r) => {
|
|
159
|
+
let { enableSorting: i, sort: a, dispatch: o } = m();
|
|
160
|
+
i && o(e.setSort(n(a, t, r)));
|
|
161
|
+
},
|
|
162
|
+
handleSortManagerChangeDirection: (t, n) => {
|
|
163
|
+
let { enableSorting: r, sort: i, dispatch: a } = m();
|
|
164
|
+
r && a(e.setSort(s(i, t, n)));
|
|
165
|
+
},
|
|
166
|
+
handleSortManagerChangeColumn: (t, n) => {
|
|
167
|
+
let { enableSorting: r, sort: i, dispatch: a } = m();
|
|
168
|
+
r && a(e.setSort(o(i, t, n)));
|
|
169
|
+
},
|
|
170
|
+
handleSortManagerRemoveLevel: (e) => {
|
|
171
|
+
let { enableSorting: t, sort: n, dispatch: r } = m();
|
|
172
|
+
t && g(a(n, e), r);
|
|
173
|
+
},
|
|
174
|
+
handleSortManagerClearAll: () => {
|
|
175
|
+
let { enableSorting: t, dispatch: n } = m();
|
|
176
|
+
t && n(e.clearSort());
|
|
177
|
+
},
|
|
178
|
+
handleSortManagerMove: (t, n) => {
|
|
179
|
+
let { enableSorting: i, sort: a, dispatch: o } = m();
|
|
180
|
+
i && o(e.setSort(r(a, t, n)));
|
|
181
|
+
},
|
|
182
|
+
handleColumnResizePointerDown: (t, n) => {
|
|
183
|
+
n.preventDefault(), n.stopPropagation();
|
|
184
|
+
let { columnWidths: r, dispatch: i, runAutosize: a } = m(), o = n.timeStamp, s = p;
|
|
185
|
+
if (s && s.key === t.key && o - s.time < l && Math.abs(n.clientX - s.x) < u) {
|
|
186
|
+
p = null, a([t]);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
p = {
|
|
190
|
+
key: t.key,
|
|
191
|
+
time: o,
|
|
192
|
+
x: n.clientX
|
|
193
|
+
}, i(e.startColumnResize(t.key, n.clientX, r[t.key] ?? t.width, t.minWidth ?? 60, t.maxWidth));
|
|
194
|
+
},
|
|
195
|
+
getInitialColumnState: () => f
|
|
196
|
+
};
|
|
197
|
+
};
|
|
198
|
+
//#endregion
|
|
199
|
+
export { d as createColumnCommands };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/grouping.cjs"),t=require("../logic/rowReorder.cjs"),n=require("../logic/detailRow.cjs"),r=require("../logic/geometry.cjs"),i=require("../logic/columnFlex.cjs"),a=require("./memo.cjs");var o=()=>{let i=a.createMemo(t=>e.collectGroupingColumns(t)),o=a.createMemo((r,i,a,o,s,c)=>{let l=o.some(e=>e.pinned===`left`),u=r?{key:t.ROW_DRAG_HANDLE_COLUMN_KEY,title:``,width:28,minWidth:28,readOnly:!0,suppressAutoSize:!0,resizable:!1,pinned:l?`left`:void 0,cellClassName:`ssg-body-cell--row-drag-handle`,renderCell:()=>null}:null,d=i?{key:n.DETAIL_TOGGLE_COLUMN_KEY,title:``,width:28,minWidth:28,readOnly:!0,suppressAutoSize:!0,resizable:!1,pinned:l?`left`:void 0,cellClassName:`ssg-body-cell--detail-toggle`,renderCell:c}:null,f=[];if(u&&f.push(u),d&&f.push(d),!a)return f.length>0?[...f,...o]:o;let p=[{key:e.GROUP_AUTO_COLUMN_KEY,title:s.map(e=>e.title||e.key).join(` › `),width:240,minWidth:120,readOnly:!0,suppressAutoSize:!0},...o.filter(e=>e.rowGroup!==!0)];return f.length>0?[...f,...p]:p}),s=a.createMemo(e=>e.filter(e=>e.visible!==!1)),c=a.createMemo(e=>r.reorderColumnsByPane(e));return e=>{let{columns:n,isServerSide:r,enableRowDrag:a,hasRowsChange:l,detailToggleColumnActive:u,renderDetailToggleCell:d}=e,{groupColumns:f,aggColumns:p}=i(n),m=!r&&f.length>0,h=t.isRowDragAvailable({enableRowDrag:a,isServerSide:r,rowGroupingActive:m,hasRowsChange:l}),g=o(h,u,m,n,f,d),_=s(g);return{groupColumns:f,aggColumns:p,rowGroupingActive:m,rowDragAvailable:h,effectiveColumns:g,visibleColumns:_,orderedColumns:c(_)}}},s={},c=(e,t)=>e.reduce((e,{column:n})=>e+(t[n.key]??n.width),0),l=()=>{let e=a.createMemo(e=>r.splitOrderedColumnsByPane(e)),t=a.createMemo(e=>e.map(({column:e})=>e)),n=a.createMemo(e=>e.some(i.isFlexingColumn)),o=a.createMemo((e,t,n,r,a)=>!e||t<=0?s:i.computeCenterFlexWidths(n,r,a)),l=a.createMemo((e,t)=>e===s?t:{...e,...t}),u=a.createMemo((e,t)=>r.buildPaneGeometryFromWidthsKey(`left`,e,t)),d=a.createMemo((e,t)=>r.buildPaneGeometryFromWidthsKey(`center`,e,t)),f=a.createMemo((e,t)=>r.buildPaneGeometryFromWidthsKey(`right`,e,t)),p=a.createMemo((e,t,n)=>({left:e,center:t,right:n}));return i=>{let{orderedColumns:a,columnWidths:s,viewportWidth:m,rowHeaderWidth:h}=i,g=e(a),_=c(g.left,s),v=c(g.right,s),y=g.left.length>0,b=y?h+_:0,x=y?0:h,S=t(g.center),C=n(S),w=m-b-v-x,T=o(C,m,S,s,w),E=l(T,s),D=r.buildPaneWidthsKey(g.left,s),O=r.buildPaneWidthsKey(g.center,E),k=r.buildPaneWidthsKey(g.right,s),A=p(u(g.left,D),d(g.center,O),f(g.right,k)),j=A.left.entries.length>0,M=A.right.entries.length>0,N=!j,P=h,F=N?h:0,I=j?P+A.left.totalWidth:0,L=A.right.totalWidth,R=F+A.center.totalWidth;return{paneSourceColumns:g,hasFlexColumn:C,effectiveColumnWidths:E,paneLayout:A,hasLeftPane:j,hasRightPane:M,centerOwnsRowHeader:N,leftLeadingWidth:P,centerLeadingWidth:F,rightLeadingWidth:0,leftPaneTotalWidth:I,rightPaneTotalWidth:L,centerContentWidth:R,totalScrollWidth:I+R+L}}};exports.createColumnResolver=o,exports.createPaneLayoutResolver=l;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { GridColumn } from '../model/gridTypes.unbound';
|
|
2
|
+
import { type GridPaneLayout, type PaneSourceColumns } from '../logic/geometry';
|
|
3
|
+
export type ColumnResolutionInputs<T> = {
|
|
4
|
+
columns: GridColumn<T>[];
|
|
5
|
+
isServerSide: boolean;
|
|
6
|
+
enableRowDrag: boolean;
|
|
7
|
+
hasRowsChange: boolean;
|
|
8
|
+
detailToggleColumnActive: boolean;
|
|
9
|
+
renderDetailToggleCell: NonNullable<GridColumn<T>['renderCell']>;
|
|
10
|
+
};
|
|
11
|
+
export type ColumnResolution<T> = {
|
|
12
|
+
groupColumns: GridColumn<T>[];
|
|
13
|
+
aggColumns: GridColumn<T>[];
|
|
14
|
+
rowGroupingActive: boolean;
|
|
15
|
+
rowDragAvailable: boolean;
|
|
16
|
+
effectiveColumns: GridColumn<T>[];
|
|
17
|
+
visibleColumns: GridColumn<T>[];
|
|
18
|
+
orderedColumns: GridColumn<T>[];
|
|
19
|
+
};
|
|
20
|
+
export declare const createColumnResolver: <T>() => (inputs: ColumnResolutionInputs<T>) => ColumnResolution<T>;
|
|
21
|
+
export type PaneLayoutInputs<T> = {
|
|
22
|
+
orderedColumns: GridColumn<T>[];
|
|
23
|
+
columnWidths: Record<string, number>;
|
|
24
|
+
viewportWidth: number;
|
|
25
|
+
rowHeaderWidth: number;
|
|
26
|
+
};
|
|
27
|
+
export type PaneLayoutResolution<T> = {
|
|
28
|
+
paneSourceColumns: PaneSourceColumns<T>;
|
|
29
|
+
hasFlexColumn: boolean;
|
|
30
|
+
effectiveColumnWidths: Record<string, number>;
|
|
31
|
+
paneLayout: GridPaneLayout<T>;
|
|
32
|
+
hasLeftPane: boolean;
|
|
33
|
+
hasRightPane: boolean;
|
|
34
|
+
centerOwnsRowHeader: boolean;
|
|
35
|
+
leftLeadingWidth: number;
|
|
36
|
+
centerLeadingWidth: number;
|
|
37
|
+
rightLeadingWidth: number;
|
|
38
|
+
leftPaneTotalWidth: number;
|
|
39
|
+
rightPaneTotalWidth: number;
|
|
40
|
+
centerContentWidth: number;
|
|
41
|
+
totalScrollWidth: number;
|
|
42
|
+
};
|
|
43
|
+
export declare const createPaneLayoutResolver: <T>() => (inputs: PaneLayoutInputs<T>) => PaneLayoutResolution<T>;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { GROUP_AUTO_COLUMN_KEY as e, collectGroupingColumns as t } from "../logic/grouping.js";
|
|
2
|
+
import { ROW_DRAG_HANDLE_COLUMN_KEY as n, isRowDragAvailable as r } from "../logic/rowReorder.js";
|
|
3
|
+
import { DETAIL_TOGGLE_COLUMN_KEY as i } from "../logic/detailRow.js";
|
|
4
|
+
import { buildPaneGeometryFromWidthsKey as a, buildPaneWidthsKey as o, reorderColumnsByPane as s, splitOrderedColumnsByPane as c } from "../logic/geometry.js";
|
|
5
|
+
import { computeCenterFlexWidths as l, isFlexingColumn as u } from "../logic/columnFlex.js";
|
|
6
|
+
import { createMemo as d } from "./memo.js";
|
|
7
|
+
//#region src/engine/columnLayout.ts
|
|
8
|
+
var f = () => {
|
|
9
|
+
let a = d((e) => t(e)), o = d((t, r, a, o, s, c) => {
|
|
10
|
+
let l = o.some((e) => e.pinned === "left"), u = t ? {
|
|
11
|
+
key: n,
|
|
12
|
+
title: "",
|
|
13
|
+
width: 28,
|
|
14
|
+
minWidth: 28,
|
|
15
|
+
readOnly: !0,
|
|
16
|
+
suppressAutoSize: !0,
|
|
17
|
+
resizable: !1,
|
|
18
|
+
pinned: l ? "left" : void 0,
|
|
19
|
+
cellClassName: "ssg-body-cell--row-drag-handle",
|
|
20
|
+
renderCell: () => null
|
|
21
|
+
} : null, d = r ? {
|
|
22
|
+
key: i,
|
|
23
|
+
title: "",
|
|
24
|
+
width: 28,
|
|
25
|
+
minWidth: 28,
|
|
26
|
+
readOnly: !0,
|
|
27
|
+
suppressAutoSize: !0,
|
|
28
|
+
resizable: !1,
|
|
29
|
+
pinned: l ? "left" : void 0,
|
|
30
|
+
cellClassName: "ssg-body-cell--detail-toggle",
|
|
31
|
+
renderCell: c
|
|
32
|
+
} : null, f = [];
|
|
33
|
+
if (u && f.push(u), d && f.push(d), !a) return f.length > 0 ? [...f, ...o] : o;
|
|
34
|
+
let p = [{
|
|
35
|
+
key: e,
|
|
36
|
+
title: s.map((e) => e.title || e.key).join(" › "),
|
|
37
|
+
width: 240,
|
|
38
|
+
minWidth: 120,
|
|
39
|
+
readOnly: !0,
|
|
40
|
+
suppressAutoSize: !0
|
|
41
|
+
}, ...o.filter((e) => e.rowGroup !== !0)];
|
|
42
|
+
return f.length > 0 ? [...f, ...p] : p;
|
|
43
|
+
}), c = d((e) => e.filter((e) => e.visible !== !1)), l = d((e) => s(e));
|
|
44
|
+
return (e) => {
|
|
45
|
+
let { columns: t, isServerSide: n, enableRowDrag: i, hasRowsChange: s, detailToggleColumnActive: u, renderDetailToggleCell: d } = e, { groupColumns: f, aggColumns: p } = a(t), m = !n && f.length > 0, h = r({
|
|
46
|
+
enableRowDrag: i,
|
|
47
|
+
isServerSide: n,
|
|
48
|
+
rowGroupingActive: m,
|
|
49
|
+
hasRowsChange: s
|
|
50
|
+
}), g = o(h, u, m, t, f, d), _ = c(g);
|
|
51
|
+
return {
|
|
52
|
+
groupColumns: f,
|
|
53
|
+
aggColumns: p,
|
|
54
|
+
rowGroupingActive: m,
|
|
55
|
+
rowDragAvailable: h,
|
|
56
|
+
effectiveColumns: g,
|
|
57
|
+
visibleColumns: _,
|
|
58
|
+
orderedColumns: l(_)
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
}, p = {}, m = (e, t) => e.reduce((e, { column: n }) => e + (t[n.key] ?? n.width), 0), h = () => {
|
|
62
|
+
let e = d((e) => c(e)), t = d((e) => e.map(({ column: e }) => e)), n = d((e) => e.some(u)), r = d((e, t, n, r, i) => !e || t <= 0 ? p : l(n, r, i)), i = d((e, t) => e === p ? t : {
|
|
63
|
+
...e,
|
|
64
|
+
...t
|
|
65
|
+
}), s = d((e, t) => a("left", e, t)), f = d((e, t) => a("center", e, t)), h = d((e, t) => a("right", e, t)), g = d((e, t, n) => ({
|
|
66
|
+
left: e,
|
|
67
|
+
center: t,
|
|
68
|
+
right: n
|
|
69
|
+
}));
|
|
70
|
+
return (a) => {
|
|
71
|
+
let { orderedColumns: c, columnWidths: l, viewportWidth: u, rowHeaderWidth: d } = a, p = e(c), _ = m(p.left, l), v = m(p.right, l), y = p.left.length > 0, b = y ? d + _ : 0, x = y ? 0 : d, S = t(p.center), C = n(S), w = u - b - v - x, T = r(C, u, S, l, w), E = i(T, l), D = o(p.left, l), O = o(p.center, E), k = o(p.right, l), A = g(s(p.left, D), f(p.center, O), h(p.right, k)), j = A.left.entries.length > 0, M = A.right.entries.length > 0, N = !j, P = d, F = N ? d : 0, I = j ? P + A.left.totalWidth : 0, L = A.right.totalWidth, R = F + A.center.totalWidth;
|
|
72
|
+
return {
|
|
73
|
+
paneSourceColumns: p,
|
|
74
|
+
hasFlexColumn: C,
|
|
75
|
+
effectiveColumnWidths: E,
|
|
76
|
+
paneLayout: A,
|
|
77
|
+
hasLeftPane: j,
|
|
78
|
+
hasRightPane: M,
|
|
79
|
+
centerOwnsRowHeader: N,
|
|
80
|
+
leftLeadingWidth: P,
|
|
81
|
+
centerLeadingWidth: F,
|
|
82
|
+
rightLeadingWidth: 0,
|
|
83
|
+
leftPaneTotalWidth: I,
|
|
84
|
+
rightPaneTotalWidth: L,
|
|
85
|
+
centerContentWidth: R,
|
|
86
|
+
totalScrollWidth: I + R + L
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
//#endregion
|
|
91
|
+
export { f as createColumnResolver, h as createPaneLayoutResolver };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/detailRow.cjs"),t=require("../controllers/autoHeightMeasurer.cjs"),n=require("../controllers/columnAutosizeRunner.cjs"),r=require("../controllers/debouncedValueStore.cjs"),i=require("../controllers/scrollSyncController.cjs"),a=require("./columnCommands.cjs"),o=require("./columnLayout.cjs"),s=require("../model/gridReducer.cjs"),c=require("../model/gridStore.cjs"),l=require("./rowPipeline.cjs"),u=require("./verticalLayout.cjs"),d=require("./filterPopoverCommands.cjs"),f=require("./rowSelectionCommands.cjs"),p=require("./gridApi.cjs"),m=require("./notifiers.cjs");var h=300,g=h=>{let g=o.createColumnResolver(),_=o.createPaneLayoutResolver(),v=l.createRowPipelineResolver(),y=u.createVerticalLayoutResolver(),b=d.createFilterPopoverDerivedResolver(),x=c.createGridStore(s.createInitialGridUiState(g(h.columnInputs).visibleColumns)),S=x.getState(),C=r.createDebouncedValueStore(v.resolveServerSideQuery({isServerSide:h.serverSide.isServerSide,globalFilterEnabled:h.serverSide.enableGlobalFilter,globalText:S.filters.globalText,columnFilterEnabled:h.serverSide.enableColumnFilter,columnFilters:S.filters.columnFilters,sortingEnabled:h.serverSide.enableSorting,sort:S.sort}),300),w=t.createAutoHeightMeasurer(),T=i.createScrollSyncController(),E=n.createAutoSizeOnDataTrigger();return{store:x,resolveColumns:g,resolvePaneLayout:_,rowPipeline:v,resolveVerticalLayout:y,resolveFilterPopoverDerived:b,columnCommands:a.createColumnCommands(),filterPopoverCommands:d.createFilterPopoverCommands(),rowSelectionCommands:f.createRowSelectionCommands(),gridApi:p.createGridApi(),hoverRowNotifier:m.createHoverRowNotifier(),detailKeysNotifier:m.createDetailKeysNotifier(),stateChangeNotifier:m.createStateChangeNotifier(),autoHeightMeasurer:w,scrollSync:T,serverSideQueryStore:C,autoSizeOnData:E,detailIndexCache:e.createDetailIndexCacheHolder(),dispose:()=>{w.dispose(),T.dispose(),C.dispose()}}};exports.SERVER_SIDE_QUERY_DEBOUNCE_MS=h,exports.createGridEngine=g;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type GridStore } from '../model/gridStore';
|
|
2
|
+
import { type DetailIndexCacheHolder } from '../logic/detailRow';
|
|
3
|
+
import { type AutoHeightMeasurer } from '../controllers/autoHeightMeasurer';
|
|
4
|
+
import { type ScrollSyncController } from '../controllers/scrollSyncController';
|
|
5
|
+
import { type DebouncedValueStore } from '../controllers/debouncedValueStore';
|
|
6
|
+
import { type AutoSizeOnDataTrigger } from '../controllers/columnAutosizeRunner';
|
|
7
|
+
import { type ColumnResolution, type ColumnResolutionInputs, type PaneLayoutInputs, type PaneLayoutResolution } from './columnLayout';
|
|
8
|
+
import { type RowPipelineResolver, type ServerSideQueryResolution } from './rowPipeline';
|
|
9
|
+
import { type VerticalLayoutInputs, type VerticalLayoutResolution } from './verticalLayout';
|
|
10
|
+
import { type ColumnCommands } from './columnCommands';
|
|
11
|
+
import { type FilterPopoverCommands, type FilterPopoverDerived, type FilterPopoverDerivedInputs } from './filterPopoverCommands';
|
|
12
|
+
import { type RowSelectionCommands } from './rowSelectionCommands';
|
|
13
|
+
import { type GridApi } from './gridApi';
|
|
14
|
+
import { type DetailKeysNotifier, type HoverRowNotifier, type StateChangeNotifier } from './notifiers';
|
|
15
|
+
export declare const SERVER_SIDE_QUERY_DEBOUNCE_MS = 300;
|
|
16
|
+
export type GridEngineInit<T> = {
|
|
17
|
+
columnInputs: ColumnResolutionInputs<T>;
|
|
18
|
+
serverSide: {
|
|
19
|
+
isServerSide: boolean;
|
|
20
|
+
enableGlobalFilter: boolean;
|
|
21
|
+
enableColumnFilter: boolean;
|
|
22
|
+
enableSorting: boolean;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export type GridEngine<T> = {
|
|
26
|
+
store: GridStore;
|
|
27
|
+
resolveColumns: (inputs: ColumnResolutionInputs<T>) => ColumnResolution<T>;
|
|
28
|
+
resolvePaneLayout: (inputs: PaneLayoutInputs<T>) => PaneLayoutResolution<T>;
|
|
29
|
+
rowPipeline: RowPipelineResolver<T>;
|
|
30
|
+
resolveVerticalLayout: (inputs: VerticalLayoutInputs<T>) => VerticalLayoutResolution;
|
|
31
|
+
resolveFilterPopoverDerived: (inputs: FilterPopoverDerivedInputs<T>) => FilterPopoverDerived;
|
|
32
|
+
columnCommands: ColumnCommands<T>;
|
|
33
|
+
filterPopoverCommands: FilterPopoverCommands<T>;
|
|
34
|
+
rowSelectionCommands: RowSelectionCommands<T>;
|
|
35
|
+
gridApi: GridApi<T>;
|
|
36
|
+
hoverRowNotifier: HoverRowNotifier;
|
|
37
|
+
detailKeysNotifier: DetailKeysNotifier;
|
|
38
|
+
stateChangeNotifier: StateChangeNotifier<T>;
|
|
39
|
+
autoHeightMeasurer: AutoHeightMeasurer<T>;
|
|
40
|
+
scrollSync: ScrollSyncController;
|
|
41
|
+
serverSideQueryStore: DebouncedValueStore<ServerSideQueryResolution>;
|
|
42
|
+
autoSizeOnData: AutoSizeOnDataTrigger<T>;
|
|
43
|
+
detailIndexCache: DetailIndexCacheHolder;
|
|
44
|
+
dispose: () => void;
|
|
45
|
+
};
|
|
46
|
+
export declare const createGridEngine: <T>(init: GridEngineInit<T>) => GridEngine<T>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { createDetailIndexCacheHolder as e } from "../logic/detailRow.js";
|
|
2
|
+
import { createAutoHeightMeasurer as t } from "../controllers/autoHeightMeasurer.js";
|
|
3
|
+
import { createAutoSizeOnDataTrigger as n } from "../controllers/columnAutosizeRunner.js";
|
|
4
|
+
import { createDebouncedValueStore as r } from "../controllers/debouncedValueStore.js";
|
|
5
|
+
import { createScrollSyncController as i } from "../controllers/scrollSyncController.js";
|
|
6
|
+
import { createColumnCommands as a } from "./columnCommands.js";
|
|
7
|
+
import { createColumnResolver as o, createPaneLayoutResolver as s } from "./columnLayout.js";
|
|
8
|
+
import { createInitialGridUiState as c } from "../model/gridReducer.js";
|
|
9
|
+
import { createGridStore as l } from "../model/gridStore.js";
|
|
10
|
+
import { createRowPipelineResolver as u } from "./rowPipeline.js";
|
|
11
|
+
import { createVerticalLayoutResolver as d } from "./verticalLayout.js";
|
|
12
|
+
import { createFilterPopoverCommands as f, createFilterPopoverDerivedResolver as p } from "./filterPopoverCommands.js";
|
|
13
|
+
import { createRowSelectionCommands as m } from "./rowSelectionCommands.js";
|
|
14
|
+
import { createGridApi as h } from "./gridApi.js";
|
|
15
|
+
import { createDetailKeysNotifier as g, createHoverRowNotifier as _, createStateChangeNotifier as v } from "./notifiers.js";
|
|
16
|
+
//#region src/engine/createGridEngine.ts
|
|
17
|
+
var y = 300, b = (y) => {
|
|
18
|
+
let b = o(), x = s(), S = u(), C = d(), w = p(), T = l(c(b(y.columnInputs).visibleColumns)), E = T.getState(), D = r(S.resolveServerSideQuery({
|
|
19
|
+
isServerSide: y.serverSide.isServerSide,
|
|
20
|
+
globalFilterEnabled: y.serverSide.enableGlobalFilter,
|
|
21
|
+
globalText: E.filters.globalText,
|
|
22
|
+
columnFilterEnabled: y.serverSide.enableColumnFilter,
|
|
23
|
+
columnFilters: E.filters.columnFilters,
|
|
24
|
+
sortingEnabled: y.serverSide.enableSorting,
|
|
25
|
+
sort: E.sort
|
|
26
|
+
}), 300), O = t(), k = i(), A = n();
|
|
27
|
+
return {
|
|
28
|
+
store: T,
|
|
29
|
+
resolveColumns: b,
|
|
30
|
+
resolvePaneLayout: x,
|
|
31
|
+
rowPipeline: S,
|
|
32
|
+
resolveVerticalLayout: C,
|
|
33
|
+
resolveFilterPopoverDerived: w,
|
|
34
|
+
columnCommands: a(),
|
|
35
|
+
filterPopoverCommands: f(),
|
|
36
|
+
rowSelectionCommands: m(),
|
|
37
|
+
gridApi: h(),
|
|
38
|
+
hoverRowNotifier: _(),
|
|
39
|
+
detailKeysNotifier: g(),
|
|
40
|
+
stateChangeNotifier: v(),
|
|
41
|
+
autoHeightMeasurer: O,
|
|
42
|
+
scrollSync: k,
|
|
43
|
+
serverSideQueryStore: D,
|
|
44
|
+
autoSizeOnData: A,
|
|
45
|
+
detailIndexCache: e(),
|
|
46
|
+
dispose: () => {
|
|
47
|
+
O.dispose(), k.dispose(), D.dispose();
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
//#endregion
|
|
52
|
+
export { y as SERVER_SIDE_QUERY_DEBOUNCE_MS, b as createGridEngine };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../model/gridActions.cjs"),t=require("../logic/filtering.cjs"),n=require("../logic/numberFilterCondition.cjs"),r=require("../logic/textFilterCondition.cjs"),i=require("../logic/dateFilterCondition.cjs"),a=require("./memo.cjs"),o=require("../logic/setFilterSelection.cjs"),s=require("../logic/dateFilterTree.cjs");var c=(e,t)=>{let n=new Set(e);return n.add(t),n},l=(e,t)=>{let n=new Set(e);return n.delete(t),n},u=(e,t)=>{let n=new Set(e);for(let e of t)n.add(e);return n},d=(e,t)=>{let n=new Set(e);for(let e of t)n.delete(e);return n},f=()=>{let e=a.createMemo((e,t)=>e?s.normalizeDateSetOptions(t):t),n=a.createMemo((e,t,n)=>e?new Set(t.map(e=>e.value)):n),r=a.createMemo(e=>{let n=t.isSetColumnFilterValue(e)?e:t.isNumberSetColumnFilterValue(e)||t.isTextSetColumnFilterValue(e)||t.isDateSetColumnFilterValue(e)?e.set:null;return n?{mode:n.mode===`exclude`?`exclude`:`include`,values:new Set(n.values)}:null});return t=>{let{openedFilterColumn:i,openedFilterType:a,openedFilterSelectOptions:o,openedFilterAllValues:s,columnFilters:c}=t,l=a===`dateSet`,u=e(l,o),d=n(l,u,s),f=i?c[i.key]:void 0;return{isDateSetFilterColumn:l,openedPopoverSelectOptions:u,openedPopoverAllValues:d,openedSetFilterValue:f,openedSetSelection:r(f),openedColumnCanInvert:!(i?.filterOptions&&i.filterOptions.length>0),isComboFilterColumn:a===`numberSet`||a===`textSet`||a===`dateSet`}}},p=()=>{let a=null,s=()=>{if(a===null)throw Error(`[SpreadsheetGrid] filterPopoverCommands は update 前に呼べません。`);return a},f=(e,n)=>{let{openedFilterColumn:r,openedFilterType:i,columnFilters:a}=s(),o=r?.key===e?i:void 0,c=a[e];if(o===`numberSet`){let e=t.isNumberSetColumnFilterValue(c)?c.condition:null;return!e&&!n?null:{kind:`numberSet`,condition:e,set:n}}if(o===`textSet`){let e=t.isTextSetColumnFilterValue(c)?c.condition:null;return!e&&!n?null:{kind:`textSet`,condition:e,set:n}}if(o===`dateSet`){let e=t.isDateSetColumnFilterValue(c)?c.condition:null;return!e&&!n?null:{kind:`dateSet`,condition:e,set:n}}return null},p=(t,n,r)=>{let{openedFilterColumn:i,derived:a,dispatch:o}=s(),c=i?.key===t&&a.isComboFilterColumn,l=n.mode===`include`?n.values.size:r-n.values.size;if(l>=r){if(c){let n=f(t,null);if(n){o(e.gridActions.setColumnFilter(t,n));return}}o(e.gridActions.clearColumnFilter(t));return}let u=l<=0?{mode:`include`,values:[]}:{mode:n.mode,values:Array.from(n.values)};if(c){let n=f(t,u);if(n){o(e.gridActions.setColumnFilter(t,n));return}}let d={kind:`set`,...u};o(e.gridActions.setColumnFilter(t,d))},m=e=>{let{filterPopoverState:t,derived:n}=s();if(!t)return;let{openedPopoverSelectOptions:r,openedSetSelection:i,openedColumnCanInvert:a,openedPopoverAllValues:u}=n,d=r.length,f;f=o.isSetValueSelected(i,e)?i===null?a?{mode:`exclude`,values:new Set([e])}:{mode:`include`,values:l(u,e)}:i.mode===`include`?{mode:`include`,values:l(i.values,e)}:{mode:`exclude`,values:c(i.values,e)}:i.mode===`include`?{mode:`include`,values:c(i.values,e)}:{mode:`exclude`,values:l(i.values,e)},p(t.columnKey,f,d)},h=(e,t)=>{let{filterPopoverState:n,derived:r}=s();if(!n)return;let i=n.columnKey,{openedPopoverSelectOptions:a,openedSetSelection:o,openedColumnCanInvert:c,openedPopoverAllValues:l}=r,f=a.length;if(e===`all`){p(i,t?{mode:`exclude`,values:new Set}:{mode:`include`,values:new Set},f);return}let m;if(t){if(o===null){p(i,{mode:`exclude`,values:new Set},f);return}m=o.mode===`include`?{mode:`include`,values:u(o.values,e)}:{mode:`exclude`,values:d(o.values,e)}}else m=o===null?c?{mode:`exclude`,values:new Set(e)}:{mode:`include`,values:d(l,e)}:o.mode===`include`?{mode:`include`,values:d(o.values,e)}:{mode:`exclude`,values:u(o.values,e)};p(i,m,f)},g=e=>{let{filterPopoverState:t,derived:n}=s();t&&p(t.columnKey,{mode:`include`,values:new Set(e)},n.openedPopoverSelectOptions.length)},_=()=>{let{filterPopoverState:t,openedFilterType:a,dispatch:o,updateNumberDraft:c,updateTextDraft:l,updateDateDraft:u}=s();t&&(o(e.gridActions.clearColumnFilter(t.columnKey)),a===`numberSet`&&c(n.DEFAULT_NUMBER_FILTER_DRAFT),a===`textSet`&&l(r.DEFAULT_TEXT_FILTER_DRAFT),a===`dateSet`&&u(i.DEFAULT_DATE_FILTER_DRAFT))},v=e=>{let n=s().columnFilters[e];return t.isNumberSetColumnFilterValue(n)||t.isTextSetColumnFilterValue(n)||t.isDateSetColumnFilterValue(n)?n.set:t.isSetColumnFilterValue(n)?{mode:n.mode,values:n.values}:null},y=(t,n)=>{let{filterPopoverState:r,columnFilters:i,dispatch:a}=s();if(!r)return;let o=r.columnKey,c=v(o);if(!t&&!c){i[o]&&a(e.gridActions.clearColumnFilter(o));return}a(e.gridActions.setColumnFilter(o,n(c)))},b=e=>{let{updateNumberDraft:t,openedFilterType:r}=s();if(t(e),r!==`numberSet`)return;let i=n.buildParsedNumberFilterFromDraft(e);y(i!==null,e=>({kind:`numberSet`,condition:i,set:e}))},x=e=>{let{updateTextDraft:t,openedFilterType:n}=s();if(t(e),n!==`textSet`)return;let i=r.buildParsedTextFilterFromDraft(e);y(i!==null,e=>({kind:`textSet`,condition:i,set:e}))},S=e=>{let{updateDateDraft:t,openedFilterType:n}=s();if(t(e),n!==`dateSet`)return;let r=i.buildParsedDateFilterFromDraft(e);y(r!==null,e=>({kind:`dateSet`,condition:r,set:e}))};return{update:e=>{a=e},handleSetFilterValueToggle:m,handleSetFilterSelectAllChange:h,handleSetFilterReplaceSelection:g,clearSetFilterPopoverValue:_,handleNumberConditionDraftChange:b,handleTextConditionDraftChange:x,handleDateConditionDraftChange:S,handleComboConditionClear:()=>{let{openedFilterType:e}=s();if(e===`textSet`){x(r.DEFAULT_TEXT_FILTER_DRAFT);return}if(e===`dateSet`){S(i.DEFAULT_DATE_FILTER_DRAFT);return}b(n.DEFAULT_NUMBER_FILTER_DRAFT)},handleComboSelectionClear:()=>{let{filterPopoverState:t,dispatch:n}=s();if(!t)return;let r=t.columnKey,i=f(r,null);if(i){n(e.gridActions.setColumnFilter(r,i));return}n(e.gridActions.clearColumnFilter(r))},applyFilterPopoverValue:()=>{let{filterPopoverState:t,openedFilterType:r,dispatch:i,closeColumnFilterPopover:a}=s();if(!t)return;let o=r??`text`;if(o===`set`||o===`numberSet`||o===`textSet`||o===`dateSet`){a();return}if(o===`number`){let r=t.numberDraft?n.buildNumberColumnFilterValueFromDraft(t.numberDraft):null;if(!r){i(e.gridActions.clearColumnFilter(t.columnKey)),a();return}i(e.gridActions.setColumnFilter(t.columnKey,r)),a();return}let c=o===`select`?t.draftValue:t.draftValue.trim();if(!c){i(e.gridActions.clearColumnFilter(t.columnKey)),a();return}let l=o===`select`?{kind:`select`,value:c}:o===`date`?{kind:`date`,value:c}:o===`custom`?{kind:`custom`,value:c}:{kind:`text`,value:c};i(e.gridActions.setColumnFilter(t.columnKey,l)),a()},clearFilterPopoverValue:()=>{let{filterPopoverState:t,dispatch:n,closeColumnFilterPopover:r}=s();t&&(n(e.gridActions.clearColumnFilter(t.columnKey)),r())}}};exports.createFilterPopoverCommands=p,exports.createFilterPopoverDerivedResolver=f;
|