@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,56 @@
|
|
|
1
|
+
import type { ColumnFilterUiType, ColumnFilterValue, GridColumn } from '../model/gridTypes.unbound';
|
|
2
|
+
import { type GridUiAction } from '../model/gridActions';
|
|
3
|
+
import { type ColumnFilterSetSelection } from '../logic/setFilterSelection';
|
|
4
|
+
import { type NumberFilterConditionDraft } from '../logic/numberFilterCondition';
|
|
5
|
+
import { type TextFilterConditionDraft } from '../logic/textFilterCondition';
|
|
6
|
+
import { type DateFilterConditionDraft } from '../logic/dateFilterCondition';
|
|
7
|
+
import type { SelectOptionEntry } from '../logic/selectOptions';
|
|
8
|
+
export type FilterPopoverDerivedInputs<T> = {
|
|
9
|
+
openedFilterColumn: GridColumn<T> | null;
|
|
10
|
+
openedFilterType: ColumnFilterUiType | null;
|
|
11
|
+
openedFilterSelectOptions: SelectOptionEntry[];
|
|
12
|
+
openedFilterAllValues: ReadonlySet<string>;
|
|
13
|
+
columnFilters: Record<string, ColumnFilterValue>;
|
|
14
|
+
};
|
|
15
|
+
export type FilterPopoverDerived = {
|
|
16
|
+
isDateSetFilterColumn: boolean;
|
|
17
|
+
openedPopoverSelectOptions: SelectOptionEntry[];
|
|
18
|
+
openedPopoverAllValues: ReadonlySet<string>;
|
|
19
|
+
openedSetFilterValue: ColumnFilterValue | undefined;
|
|
20
|
+
openedSetSelection: ColumnFilterSetSelection | null;
|
|
21
|
+
openedColumnCanInvert: boolean;
|
|
22
|
+
isComboFilterColumn: boolean;
|
|
23
|
+
};
|
|
24
|
+
export declare const createFilterPopoverDerivedResolver: <T>() => (inputs: FilterPopoverDerivedInputs<T>) => FilterPopoverDerived;
|
|
25
|
+
export type FilterPopoverStateLike = {
|
|
26
|
+
columnKey: string;
|
|
27
|
+
draftValue: string;
|
|
28
|
+
numberDraft: NumberFilterConditionDraft | null;
|
|
29
|
+
};
|
|
30
|
+
export type FilterPopoverCommandsArgs<T> = {
|
|
31
|
+
filterPopoverState: FilterPopoverStateLike | null;
|
|
32
|
+
openedFilterColumn: GridColumn<T> | null;
|
|
33
|
+
openedFilterType: ColumnFilterUiType | null;
|
|
34
|
+
columnFilters: Record<string, ColumnFilterValue>;
|
|
35
|
+
derived: FilterPopoverDerived;
|
|
36
|
+
dispatch: (action: GridUiAction) => void;
|
|
37
|
+
closeColumnFilterPopover: () => void;
|
|
38
|
+
updateNumberDraft: (draft: NumberFilterConditionDraft) => void;
|
|
39
|
+
updateTextDraft: (draft: TextFilterConditionDraft) => void;
|
|
40
|
+
updateDateDraft: (draft: DateFilterConditionDraft) => void;
|
|
41
|
+
};
|
|
42
|
+
export type FilterPopoverCommands<T> = {
|
|
43
|
+
update: (args: FilterPopoverCommandsArgs<T>) => void;
|
|
44
|
+
handleSetFilterValueToggle: (value: string) => void;
|
|
45
|
+
handleSetFilterSelectAllChange: (scope: 'all' | string[], nextChecked: boolean) => void;
|
|
46
|
+
handleSetFilterReplaceSelection: (values: string[]) => void;
|
|
47
|
+
clearSetFilterPopoverValue: () => void;
|
|
48
|
+
handleNumberConditionDraftChange: (draft: NumberFilterConditionDraft) => void;
|
|
49
|
+
handleTextConditionDraftChange: (draft: TextFilterConditionDraft) => void;
|
|
50
|
+
handleDateConditionDraftChange: (draft: DateFilterConditionDraft) => void;
|
|
51
|
+
handleComboConditionClear: () => void;
|
|
52
|
+
handleComboSelectionClear: () => void;
|
|
53
|
+
applyFilterPopoverValue: () => void;
|
|
54
|
+
clearFilterPopoverValue: () => void;
|
|
55
|
+
};
|
|
56
|
+
export declare const createFilterPopoverCommands: <T>() => FilterPopoverCommands<T>;
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import { gridActions as e } from "../model/gridActions.js";
|
|
2
|
+
import { isDateSetColumnFilterValue as t, isNumberSetColumnFilterValue as n, isSetColumnFilterValue as r, isTextSetColumnFilterValue as i } from "../logic/filtering.js";
|
|
3
|
+
import { DEFAULT_NUMBER_FILTER_DRAFT as a, buildNumberColumnFilterValueFromDraft as o, buildParsedNumberFilterFromDraft as s } from "../logic/numberFilterCondition.js";
|
|
4
|
+
import { DEFAULT_TEXT_FILTER_DRAFT as c, buildParsedTextFilterFromDraft as l } from "../logic/textFilterCondition.js";
|
|
5
|
+
import { DEFAULT_DATE_FILTER_DRAFT as u, buildParsedDateFilterFromDraft as d } from "../logic/dateFilterCondition.js";
|
|
6
|
+
import { createMemo as f } from "./memo.js";
|
|
7
|
+
import { isSetValueSelected as p } from "../logic/setFilterSelection.js";
|
|
8
|
+
import { normalizeDateSetOptions as m } from "../logic/dateFilterTree.js";
|
|
9
|
+
//#region src/engine/filterPopoverCommands.ts
|
|
10
|
+
var h = (e, t) => {
|
|
11
|
+
let n = new Set(e);
|
|
12
|
+
return n.add(t), n;
|
|
13
|
+
}, g = (e, t) => {
|
|
14
|
+
let n = new Set(e);
|
|
15
|
+
return n.delete(t), n;
|
|
16
|
+
}, _ = (e, t) => {
|
|
17
|
+
let n = new Set(e);
|
|
18
|
+
for (let e of t) n.add(e);
|
|
19
|
+
return n;
|
|
20
|
+
}, v = (e, t) => {
|
|
21
|
+
let n = new Set(e);
|
|
22
|
+
for (let e of t) n.delete(e);
|
|
23
|
+
return n;
|
|
24
|
+
}, y = () => {
|
|
25
|
+
let e = f((e, t) => e ? m(t) : t), a = f((e, t, n) => e ? new Set(t.map((e) => e.value)) : n), o = f((e) => {
|
|
26
|
+
let a = r(e) ? e : n(e) || i(e) || t(e) ? e.set : null;
|
|
27
|
+
return a ? {
|
|
28
|
+
mode: a.mode === "exclude" ? "exclude" : "include",
|
|
29
|
+
values: new Set(a.values)
|
|
30
|
+
} : null;
|
|
31
|
+
});
|
|
32
|
+
return (t) => {
|
|
33
|
+
let { openedFilterColumn: n, openedFilterType: r, openedFilterSelectOptions: i, openedFilterAllValues: s, columnFilters: c } = t, l = r === "dateSet", u = e(l, i), d = a(l, u, s), f = n ? c[n.key] : void 0;
|
|
34
|
+
return {
|
|
35
|
+
isDateSetFilterColumn: l,
|
|
36
|
+
openedPopoverSelectOptions: u,
|
|
37
|
+
openedPopoverAllValues: d,
|
|
38
|
+
openedSetFilterValue: f,
|
|
39
|
+
openedSetSelection: o(f),
|
|
40
|
+
openedColumnCanInvert: !(n?.filterOptions && n.filterOptions.length > 0),
|
|
41
|
+
isComboFilterColumn: r === "numberSet" || r === "textSet" || r === "dateSet"
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
}, b = () => {
|
|
45
|
+
let f = null, m = () => {
|
|
46
|
+
if (f === null) throw Error("[SpreadsheetGrid] filterPopoverCommands は update 前に呼べません。");
|
|
47
|
+
return f;
|
|
48
|
+
}, y = (e, r) => {
|
|
49
|
+
let { openedFilterColumn: a, openedFilterType: o, columnFilters: s } = m(), c = a?.key === e ? o : void 0, l = s[e];
|
|
50
|
+
if (c === "numberSet") {
|
|
51
|
+
let e = n(l) ? l.condition : null;
|
|
52
|
+
return !e && !r ? null : {
|
|
53
|
+
kind: "numberSet",
|
|
54
|
+
condition: e,
|
|
55
|
+
set: r
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (c === "textSet") {
|
|
59
|
+
let e = i(l) ? l.condition : null;
|
|
60
|
+
return !e && !r ? null : {
|
|
61
|
+
kind: "textSet",
|
|
62
|
+
condition: e,
|
|
63
|
+
set: r
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (c === "dateSet") {
|
|
67
|
+
let e = t(l) ? l.condition : null;
|
|
68
|
+
return !e && !r ? null : {
|
|
69
|
+
kind: "dateSet",
|
|
70
|
+
condition: e,
|
|
71
|
+
set: r
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}, b = (t, n, r) => {
|
|
76
|
+
let { openedFilterColumn: i, derived: a, dispatch: o } = m(), s = i?.key === t && a.isComboFilterColumn, c = n.mode === "include" ? n.values.size : r - n.values.size;
|
|
77
|
+
if (c >= r) {
|
|
78
|
+
if (s) {
|
|
79
|
+
let n = y(t, null);
|
|
80
|
+
if (n) {
|
|
81
|
+
o(e.setColumnFilter(t, n));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
o(e.clearColumnFilter(t));
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
let l = c <= 0 ? {
|
|
89
|
+
mode: "include",
|
|
90
|
+
values: []
|
|
91
|
+
} : {
|
|
92
|
+
mode: n.mode,
|
|
93
|
+
values: Array.from(n.values)
|
|
94
|
+
};
|
|
95
|
+
if (s) {
|
|
96
|
+
let n = y(t, l);
|
|
97
|
+
if (n) {
|
|
98
|
+
o(e.setColumnFilter(t, n));
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
let u = {
|
|
103
|
+
kind: "set",
|
|
104
|
+
...l
|
|
105
|
+
};
|
|
106
|
+
o(e.setColumnFilter(t, u));
|
|
107
|
+
}, x = (e) => {
|
|
108
|
+
let { filterPopoverState: t, derived: n } = m();
|
|
109
|
+
if (!t) return;
|
|
110
|
+
let { openedPopoverSelectOptions: r, openedSetSelection: i, openedColumnCanInvert: a, openedPopoverAllValues: o } = n, s = r.length, c;
|
|
111
|
+
c = p(i, e) ? i === null ? a ? {
|
|
112
|
+
mode: "exclude",
|
|
113
|
+
values: /* @__PURE__ */ new Set([e])
|
|
114
|
+
} : {
|
|
115
|
+
mode: "include",
|
|
116
|
+
values: g(o, e)
|
|
117
|
+
} : i.mode === "include" ? {
|
|
118
|
+
mode: "include",
|
|
119
|
+
values: g(i.values, e)
|
|
120
|
+
} : {
|
|
121
|
+
mode: "exclude",
|
|
122
|
+
values: h(i.values, e)
|
|
123
|
+
} : i.mode === "include" ? {
|
|
124
|
+
mode: "include",
|
|
125
|
+
values: h(i.values, e)
|
|
126
|
+
} : {
|
|
127
|
+
mode: "exclude",
|
|
128
|
+
values: g(i.values, e)
|
|
129
|
+
}, b(t.columnKey, c, s);
|
|
130
|
+
}, S = (e, t) => {
|
|
131
|
+
let { filterPopoverState: n, derived: r } = m();
|
|
132
|
+
if (!n) return;
|
|
133
|
+
let i = n.columnKey, { openedPopoverSelectOptions: a, openedSetSelection: o, openedColumnCanInvert: s, openedPopoverAllValues: c } = r, l = a.length;
|
|
134
|
+
if (e === "all") {
|
|
135
|
+
b(i, t ? {
|
|
136
|
+
mode: "exclude",
|
|
137
|
+
values: /* @__PURE__ */ new Set()
|
|
138
|
+
} : {
|
|
139
|
+
mode: "include",
|
|
140
|
+
values: /* @__PURE__ */ new Set()
|
|
141
|
+
}, l);
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
let u;
|
|
145
|
+
if (t) {
|
|
146
|
+
if (o === null) {
|
|
147
|
+
b(i, {
|
|
148
|
+
mode: "exclude",
|
|
149
|
+
values: /* @__PURE__ */ new Set()
|
|
150
|
+
}, l);
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
u = o.mode === "include" ? {
|
|
154
|
+
mode: "include",
|
|
155
|
+
values: _(o.values, e)
|
|
156
|
+
} : {
|
|
157
|
+
mode: "exclude",
|
|
158
|
+
values: v(o.values, e)
|
|
159
|
+
};
|
|
160
|
+
} else u = o === null ? s ? {
|
|
161
|
+
mode: "exclude",
|
|
162
|
+
values: new Set(e)
|
|
163
|
+
} : {
|
|
164
|
+
mode: "include",
|
|
165
|
+
values: v(c, e)
|
|
166
|
+
} : o.mode === "include" ? {
|
|
167
|
+
mode: "include",
|
|
168
|
+
values: v(o.values, e)
|
|
169
|
+
} : {
|
|
170
|
+
mode: "exclude",
|
|
171
|
+
values: _(o.values, e)
|
|
172
|
+
};
|
|
173
|
+
b(i, u, l);
|
|
174
|
+
}, C = (e) => {
|
|
175
|
+
let { filterPopoverState: t, derived: n } = m();
|
|
176
|
+
t && b(t.columnKey, {
|
|
177
|
+
mode: "include",
|
|
178
|
+
values: new Set(e)
|
|
179
|
+
}, n.openedPopoverSelectOptions.length);
|
|
180
|
+
}, w = () => {
|
|
181
|
+
let { filterPopoverState: t, openedFilterType: n, dispatch: r, updateNumberDraft: i, updateTextDraft: o, updateDateDraft: s } = m();
|
|
182
|
+
t && (r(e.clearColumnFilter(t.columnKey)), n === "numberSet" && i(a), n === "textSet" && o(c), n === "dateSet" && s(u));
|
|
183
|
+
}, T = (e) => {
|
|
184
|
+
let a = m().columnFilters[e];
|
|
185
|
+
return n(a) || i(a) || t(a) ? a.set : r(a) ? {
|
|
186
|
+
mode: a.mode,
|
|
187
|
+
values: a.values
|
|
188
|
+
} : null;
|
|
189
|
+
}, E = (t, n) => {
|
|
190
|
+
let { filterPopoverState: r, columnFilters: i, dispatch: a } = m();
|
|
191
|
+
if (!r) return;
|
|
192
|
+
let o = r.columnKey, s = T(o);
|
|
193
|
+
if (!t && !s) {
|
|
194
|
+
i[o] && a(e.clearColumnFilter(o));
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
a(e.setColumnFilter(o, n(s)));
|
|
198
|
+
}, D = (e) => {
|
|
199
|
+
let { updateNumberDraft: t, openedFilterType: n } = m();
|
|
200
|
+
if (t(e), n !== "numberSet") return;
|
|
201
|
+
let r = s(e);
|
|
202
|
+
E(r !== null, (e) => ({
|
|
203
|
+
kind: "numberSet",
|
|
204
|
+
condition: r,
|
|
205
|
+
set: e
|
|
206
|
+
}));
|
|
207
|
+
}, O = (e) => {
|
|
208
|
+
let { updateTextDraft: t, openedFilterType: n } = m();
|
|
209
|
+
if (t(e), n !== "textSet") return;
|
|
210
|
+
let r = l(e);
|
|
211
|
+
E(r !== null, (e) => ({
|
|
212
|
+
kind: "textSet",
|
|
213
|
+
condition: r,
|
|
214
|
+
set: e
|
|
215
|
+
}));
|
|
216
|
+
}, k = (e) => {
|
|
217
|
+
let { updateDateDraft: t, openedFilterType: n } = m();
|
|
218
|
+
if (t(e), n !== "dateSet") return;
|
|
219
|
+
let r = d(e);
|
|
220
|
+
E(r !== null, (e) => ({
|
|
221
|
+
kind: "dateSet",
|
|
222
|
+
condition: r,
|
|
223
|
+
set: e
|
|
224
|
+
}));
|
|
225
|
+
};
|
|
226
|
+
return {
|
|
227
|
+
update: (e) => {
|
|
228
|
+
f = e;
|
|
229
|
+
},
|
|
230
|
+
handleSetFilterValueToggle: x,
|
|
231
|
+
handleSetFilterSelectAllChange: S,
|
|
232
|
+
handleSetFilterReplaceSelection: C,
|
|
233
|
+
clearSetFilterPopoverValue: w,
|
|
234
|
+
handleNumberConditionDraftChange: D,
|
|
235
|
+
handleTextConditionDraftChange: O,
|
|
236
|
+
handleDateConditionDraftChange: k,
|
|
237
|
+
handleComboConditionClear: () => {
|
|
238
|
+
let { openedFilterType: e } = m();
|
|
239
|
+
if (e === "textSet") {
|
|
240
|
+
O(c);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
if (e === "dateSet") {
|
|
244
|
+
k(u);
|
|
245
|
+
return;
|
|
246
|
+
}
|
|
247
|
+
D(a);
|
|
248
|
+
},
|
|
249
|
+
handleComboSelectionClear: () => {
|
|
250
|
+
let { filterPopoverState: t, dispatch: n } = m();
|
|
251
|
+
if (!t) return;
|
|
252
|
+
let r = t.columnKey, i = y(r, null);
|
|
253
|
+
if (i) {
|
|
254
|
+
n(e.setColumnFilter(r, i));
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
n(e.clearColumnFilter(r));
|
|
258
|
+
},
|
|
259
|
+
applyFilterPopoverValue: () => {
|
|
260
|
+
let { filterPopoverState: t, openedFilterType: n, dispatch: r, closeColumnFilterPopover: i } = m();
|
|
261
|
+
if (!t) return;
|
|
262
|
+
let a = n ?? "text";
|
|
263
|
+
if (a === "set" || a === "numberSet" || a === "textSet" || a === "dateSet") {
|
|
264
|
+
i();
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
if (a === "number") {
|
|
268
|
+
let n = t.numberDraft ? o(t.numberDraft) : null;
|
|
269
|
+
if (!n) {
|
|
270
|
+
r(e.clearColumnFilter(t.columnKey)), i();
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
r(e.setColumnFilter(t.columnKey, n)), i();
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
276
|
+
let s = a === "select" ? t.draftValue : t.draftValue.trim();
|
|
277
|
+
if (!s) {
|
|
278
|
+
r(e.clearColumnFilter(t.columnKey)), i();
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
let c = a === "select" ? {
|
|
282
|
+
kind: "select",
|
|
283
|
+
value: s
|
|
284
|
+
} : a === "date" ? {
|
|
285
|
+
kind: "date",
|
|
286
|
+
value: s
|
|
287
|
+
} : a === "custom" ? {
|
|
288
|
+
kind: "custom",
|
|
289
|
+
value: s
|
|
290
|
+
} : {
|
|
291
|
+
kind: "text",
|
|
292
|
+
value: s
|
|
293
|
+
};
|
|
294
|
+
r(e.setColumnFilter(t.columnKey, c)), i();
|
|
295
|
+
},
|
|
296
|
+
clearFilterPopoverValue: () => {
|
|
297
|
+
let { filterPopoverState: t, dispatch: n, closeColumnFilterPopover: r } = m();
|
|
298
|
+
t && (n(e.clearColumnFilter(t.columnKey)), r());
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
};
|
|
302
|
+
//#endregion
|
|
303
|
+
export { b as createFilterPopoverCommands, y as createFilterPopoverDerivedResolver };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../logic/grouping.cjs"),t=require("../logic/detailRow.cjs"),n=require("../model/gridActions.cjs"),r=require("../logic/geometry.cjs"),i=require("../model/gridSelectors.cjs"),a=require("../logic/validation.cjs"),o=require("../logic/verticalGeometry.cjs"),s=require("../logic/rowSelection.cjs"),c=require("../logic/gridState.cjs"),l=require("../logic/scrollTargets.cjs"),u=require("../logic/exportCsv.cjs"),d=require("../logic/exportData.cjs"),f=require("../logic/exportScope.cjs");var p=()=>{let p=null,m=(e,t,n=`auto`)=>{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);(Math.round(a)!==Math.round(e.scrollTop)||Math.round(o)!==Math.round(e.scrollLeft))&&p?.markApiScroll(),e.scrollTo({top:a,left:o,behavior:n})},h=(e,t)=>{let n=p?.scrollContainerRef.current??null,r=p;!n||!r||m(n,{top:e===null?n.scrollTop:o.logicalToPhysicalScrollTop(e,r.verticalScaleFactor),left:t===null?n.scrollLeft:t})},g=(e,t)=>{let n=p?.scrollContainerRef.current??null,r=p;if(!n||!r||r.viewRowCount===0)return null;let i=Math.min(Math.max(e,0),r.viewRowCount-1);return l.computeVerticalScrollTarget({rowTop:r.rowMetrics.rowTop(i),rowHeight:r.rowMetrics.cellHeight(i),headerHeight:r.headerHeight,viewportHeight:n.clientHeight,currentScrollTop:o.physicalToLogicalScrollTop(n.scrollTop,r.verticalScaleFactor),align:t})},_=(e,t)=>{let n=p?.scrollContainerRef.current??null,i=p;if(!n||!i)return null;let a=r.computeSinglePaneColumnExtent(i.paneLayout,e);return!a||a.pane!==`center`?null:l.computeHorizontalScrollTarget({cellLeft:i.leftPaneTotalWidth+i.centerLeadingWidth+a.extent.start,cellWidth:a.extent.width,leftPaneWidth:i.leftPaneTotalWidth,rightPaneWidth:i.rightPaneTotalWidth,viewportWidth:n.clientWidth,currentScrollLeft:n.scrollLeft,align:t})},v=(e,t,n)=>{h(g(e,n),_(t,n))},y=e=>{let t=p;if(!t)return null;let n=e=>t.rowModel.getRow(e),r=t.isRowExportable,a=r?(e,n)=>r(e,{viewRowIndex:n,rowKey:t.rowModel.getRowKey(n)??n}):void 0,o=r?(e,n)=>r(e,{viewRowIndex:n,rowKey:t.resolvedRowKeyGetter(e,n)}):void 0,s=f.normalizeExportScope(e);if(s===`raw`)return t.isServerSide?(console.warn(`SpreadsheetGrid: scope 'raw' は serverSide では未ロード行を取得できないため、'view'(ロード済みビュー行)として扱います。全件エクスポートはサーバ側での実施を推奨します。`),{getRow:n,startRow:0,endRow:t.viewRowCount,columns:t.orderedColumns,isRowIncluded:a}):{getRow:e=>t.rows[e],startRow:0,endRow:t.rows.length,columns:t.orderedColumns,isRowIncluded:o};if(s===`rendered`)return{getRow:n,startRow:t.windowFirstRow,endRow:t.windowLastRow>=t.windowFirstRow?t.windowLastRow+1:t.windowFirstRow,columns:t.orderedColumns,isRowIncluded:a};if(s===`selection`){let e=t.uiState.selection;if(!e)return null;if(e.type===`cell`){let r=i.normalizeCellRange(e.range);return{getRow:n,startRow:r.start.row,endRow:r.end.row+1,columns:t.orderedColumns.slice(r.start.col,r.end.col+1),isRowIncluded:a}}if(e.type===`row`){let r=i.normalizeRowRange(e.startRow,e.endRow);return{getRow:n,startRow:r.startRow,endRow:r.endRow+1,columns:t.orderedColumns,isRowIncluded:a}}let r=i.normalizeColumnRange(e.startCol,e.endCol);return{getRow:n,startRow:0,endRow:t.viewRowCount,columns:t.orderedColumns.slice(r.startCol,r.endCol+1),isRowIncluded:a}}return{getRow:n,startRow:0,endRow:t.viewRowCount,columns:t.orderedColumns,isRowIncluded:a}},b=e=>e.filter(e=>!t.isSyntheticColumnKey(e.key)),x=e=>{let t=y(e?.scope??`view`);return t?u.serializeRowsToCsv({getRow:t.getRow,startRow:t.startRow,endRow:t.endRow,columns:b(t.columns),delimiter:e?.delimiter,includeHeaders:e?.includeHeaders,bom:e?.bom,isRowIncluded:t.isRowIncluded}):e?.bom?``:``},S=e=>{let t=y(e?.scope??`view`);return t?d.buildGridExportData({getRow:t.getRow,startRow:t.startRow,endRow:t.endRow,columns:b(t.columns),isRowIncluded:t.isRowIncluded}):{columns:[],rows:[]}};return{update:e=>{p=e},handle:{scrollToRow:(e,t)=>h(g(e,t?.align??`auto`),null),scrollToCell:(e,t,n)=>v(e,t,n?.align??`auto`),scrollToTop:()=>{let e=p?.scrollContainerRef.current??null;e&&m(e,{top:0,left:e.scrollLeft})},scrollToBottom:()=>{let e=p?.scrollContainerRef.current??null,t=p;!e||!t||m(e,{top:Math.max(t.headerHeight+t.physicalBodyHeight-e.clientHeight,0),left:e.scrollLeft})},getScrollPosition:()=>{let e=p?.scrollContainerRef.current??null;return e?{top:e.scrollTop,left:e.scrollLeft}:null},setScrollPosition:(e,t)=>{let n=p?.scrollContainerRef.current??null;n&&m(n,{top:e.top??n.scrollTop,left:e.left??n.scrollLeft},t?.behavior??`auto`)},getVisibleRowRange:()=>{let e=p;return!e||e.windowLastRow<e.windowFirstRow?null:{startIndex:e.windowFirstRow,endIndex:e.windowLastRow+1}},getActiveCell:()=>{let e=p?.uiState.activeCell;return e?{row:e.row,col:e.col}:null},setActiveCell:(e,t)=>{let r=p;r&&(r.dispatch(n.gridActions.activateCell(e)),e&&t?.scrollIntoView&&v(e.row,e.col,`auto`))},getSelection:()=>p?.uiState.selection??null,selectCell:(e,t,r)=>{let i=p;if(!i)return;let a={row:e,col:t};i.dispatch(n.gridActions.startSelection(a)),i.dispatch(n.gridActions.endSelection()),r?.scrollIntoView&&v(e,t,`auto`)},selectRange:(e,t)=>{let r=p;r&&(r.dispatch(n.gridActions.startSelection(e.start)),r.dispatch(n.gridActions.updateSelection(e.end)),r.dispatch(n.gridActions.endSelection()),t?.scrollIntoView&&v(e.end.row,e.end.col,`auto`))},clearSelection:()=>{p?.dispatch(n.gridActions.clearSelection())},getSelectedRows:()=>{let e=p;if(!e)return[];let t=e.uiState.selection;if(!t)return[];let n=[],r=t=>{let r=e.rowModel.getRow(t);r&&n.push(r)};if(t.type===`cell`){let e=i.normalizeCellRange(t.range);for(let t=e.start.row;t<=e.end.row;t+=1)r(t)}else if(t.type===`row`){let e=i.normalizeRowRange(t.startRow,t.endRow);for(let t=e.startRow;t<=e.endRow;t+=1)r(t)}else for(let t=0;t<e.viewRowCount;t+=1)r(t);return n},exportCsv:e=>x(e),downloadCsv:(e,t)=>{if(typeof document>`u`)return;let n=x({...t,bom:t?.bom??!0}),r=new Blob([n],{type:`text/csv;charset=utf-8;`}),i=URL.createObjectURL(r),a=document.createElement(`a`);a.href=i,a.download=e??`export.csv`,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(i)},getExportData:e=>S(e),getState:()=>{let e=p;return e?c.buildGridState(e.uiState.columnWidths,e.uiState.filters,e.uiState.sort,c.extractColumnState(e.columns)):c.buildGridState({},{globalText:``,columnFilters:{}},[],[])},applyState:e=>{let t=p;if(!t)return;let r=c.migrateGridState(e);t.onColumnsChange&&r.columns&&t.onColumnsChange(c.applyColumnState(t.columns,r.columns,r.columnWidths)),t.dispatch(n.gridActions.resetColumnWidths(r.columnWidths)),t.dispatch(n.gridActions.setAllFilters(r.filters)),t.dispatch(n.gridActions.setSort(r.sort))},getRowSelection:()=>{let e=p;return e?s.rowSelectionToModel(e.uiState.rowSelection):{type:`include`,rowKeys:[]}},setRowSelection:e=>{p?.commitRowSelection(s.rowSelectionFromModel(e))},getSelectedRowKeys:()=>{let e=p;if(!e)return[];let t=e.uiState.rowSelection;if(t.mode===`include`)return Array.from(t.keys);let n=[],r=e.rowModel.getRowCount();for(let i=0;i<r;i+=1){if(!e.rowModel.getRow(i))continue;let r=e.rowModel.getRowKey(i)??i;t.keys.has(r)||n.push(r)}return n},getSelectedRowData:()=>{let e=p;if(!e)return[];let t=e.uiState.rowSelection,n=[],r=e.rowModel.getRowCount();for(let i=0;i<r;i+=1){let r=e.rowModel.getRow(i);r&&s.resolveIsRowSelected(t,e.rowModel.getRowKey(i)??i)&&n.push(r)}return n},getSelectedRowCount:()=>{let e=p;return e?s.countSelectedRows(e.uiState.rowSelection,e.leafRowCount):0},isRowSelected:e=>{let t=p;return t?s.resolveIsRowSelected(t.uiState.rowSelection,e):!1},selectAllRows:()=>{p?.commitRowSelection(s.selectAllRows())},clearRowSelection:()=>{p?.commitRowSelection(s.clearRowSelection())},undo:()=>{p?.undoRows()},redo:()=>{p?.redoRows()},canUndo:()=>p?.canUndoRows()??!1,canRedo:()=>p?.canRedoRows()??!1,clearUndoHistory:()=>{p?.clearUndoHistory()},setGroupCollapsed:(e,t)=>{p?.dispatch(n.gridActions.setGroupCollapsed(e,t))},expandAllGroups:()=>{p?.dispatch(n.gridActions.setCollapsedGroupKeys(new Set))},collapseAllGroups:()=>{let t=p;!t||!t.groupTree||t.dispatch(n.gridActions.setCollapsedGroupKeys(new Set(e.collectAllGroupKeys(t.groupTree))))},getGroupRows:()=>{let t=p;return t?.groupTree?e.collectAllGroupRows(t.groupTree):[]},setDetailRowExpanded:(e,r)=>{let i=p;if(!(!i||!i.detailRowEnabled)){if(r&&i.detailIsExpandable){let n=t.findDetailRowIndex(i.rowModel,e,i.detailIndexCacheRef.current,!i.isServerSide);if(n>=0){let t=i.rowModel.getRow(n);if(t!=null&&!i.detailIsExpandable(t,{rowKey:e,sourceRowIndex:i.rowModel.getSourceIndex(n)}))return}}i.dispatch(n.gridActions.setDetailRowExpanded(e,r))}},getExpandedDetailRowKeys:()=>{let e=p;return e&&e.detailRowEnabled?Array.from(e.uiState.expandedDetailRowKeys):[]},collapseAllDetailRows:()=>{let e=p;!e||!e.detailRowEnabled||e.dispatch(n.gridActions.setExpandedDetailRowKeys(new Set))},moveRow:(e,t)=>{p?.moveRowByKey(e,t)},getInvalidCells:()=>{let e=p;return e?e.isServerSide?(console.warn(`[SpreadsheetGrid] getInvalidCells は serverSide モードでは利用できません(空配列を返します)。`),[]):a.scanInvalidCells(e.rows,e.columns,e.resolvedRowKeyGetter):[]},refreshServerSide:()=>{let e=p;if(e){if(!e.isServerSide){console.warn(`[SpreadsheetGrid] refreshServerSide は clientSide(rows)モードでは何もしません(dataSource 指定時のみ有効です)。`);return}e.serverSideRefresh()}},openFilterManager:()=>{p?.openToolPanel(`filter`)},closeFilterManager:()=>{let e=p;e&&e.activeToolPanelTab===`filter`&&e.closeToolPanel()}},applyScroll:h,verticalTargetFor:g,horizontalTargetFor:_,scrollToCellInternal:v}};exports.createGridApi=p;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { DetailRowOptions, GridColumn, GridRowKey, GridUiState, RowModel, RowSelectionState, ScrollAlign, SpreadsheetGridHandle, SpreadsheetGridProps } from '../model/gridTypes.unbound';
|
|
2
|
+
import { type GridUiAction } from '../model/gridActions';
|
|
3
|
+
import { type GridPaneLayout } from '../logic/geometry';
|
|
4
|
+
import { type RowMetrics } from '../logic/verticalGeometry';
|
|
5
|
+
import { type DetailIndexCache } from '../logic/detailRow';
|
|
6
|
+
import { type GroupTree } from '../logic/grouping';
|
|
7
|
+
import type { ToolPanelTab } from '../controllers/toolPanelController';
|
|
8
|
+
type ReadonlyRef<V> = {
|
|
9
|
+
readonly current: V;
|
|
10
|
+
};
|
|
11
|
+
export type GridApiArgs<T> = {
|
|
12
|
+
scrollContainerRef: ReadonlyRef<HTMLElement | null>;
|
|
13
|
+
dispatch: (action: GridUiAction) => void;
|
|
14
|
+
rowModel: RowModel<T>;
|
|
15
|
+
viewRowCount: number;
|
|
16
|
+
leafRowCount: number;
|
|
17
|
+
groupTree: GroupTree<T> | null;
|
|
18
|
+
rowMetrics: RowMetrics;
|
|
19
|
+
paneLayout: GridPaneLayout<T>;
|
|
20
|
+
orderedColumns: GridColumn<T>[];
|
|
21
|
+
columns: GridColumn<T>[];
|
|
22
|
+
onColumnsChange: ((nextColumns: GridColumn<T>[]) => void) | undefined;
|
|
23
|
+
uiState: GridUiState;
|
|
24
|
+
headerHeight: number;
|
|
25
|
+
verticalScaleFactor: number;
|
|
26
|
+
leftPaneTotalWidth: number;
|
|
27
|
+
rightPaneTotalWidth: number;
|
|
28
|
+
centerLeadingWidth: number;
|
|
29
|
+
windowFirstRow: number;
|
|
30
|
+
windowLastRow: number;
|
|
31
|
+
physicalBodyHeight: number;
|
|
32
|
+
rows: T[];
|
|
33
|
+
isServerSide: boolean;
|
|
34
|
+
serverSideRefresh: () => void;
|
|
35
|
+
resolvedRowKeyGetter: (row: T, sourceRowIndex: number) => GridRowKey;
|
|
36
|
+
isRowExportable: SpreadsheetGridProps<T>['isRowExportable'];
|
|
37
|
+
activeToolPanelTab: ToolPanelTab | null;
|
|
38
|
+
openToolPanel: (tab: ToolPanelTab) => void;
|
|
39
|
+
closeToolPanel: () => void;
|
|
40
|
+
undoRows: () => void;
|
|
41
|
+
redoRows: () => void;
|
|
42
|
+
canUndoRows: () => boolean;
|
|
43
|
+
canRedoRows: () => boolean;
|
|
44
|
+
clearUndoHistory: () => void;
|
|
45
|
+
detailRowEnabled: boolean;
|
|
46
|
+
detailIsExpandable: DetailRowOptions<T>['isExpandable'];
|
|
47
|
+
detailIndexCacheRef: ReadonlyRef<DetailIndexCache>;
|
|
48
|
+
moveRowByKey: (rowKey: GridRowKey, toIndex: number) => void;
|
|
49
|
+
commitRowSelection: (next: RowSelectionState) => void;
|
|
50
|
+
markApiScroll: () => void;
|
|
51
|
+
};
|
|
52
|
+
export type GridApi<T> = {
|
|
53
|
+
update: (args: GridApiArgs<T>) => void;
|
|
54
|
+
handle: SpreadsheetGridHandle<T>;
|
|
55
|
+
applyScroll: (logicalTop: number | null, left: number | null) => void;
|
|
56
|
+
verticalTargetFor: (viewRowIndex: number, align: ScrollAlign) => number | null;
|
|
57
|
+
horizontalTargetFor: (colIndex: number, align: ScrollAlign) => number | null;
|
|
58
|
+
scrollToCellInternal: (viewRowIndex: number, colIndex: number, align: ScrollAlign) => void;
|
|
59
|
+
};
|
|
60
|
+
export declare const createGridApi: <T>() => GridApi<T>;
|
|
61
|
+
export {};
|