@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,38 @@
|
|
|
1
|
+
import type { GridRowKey, RowModel } from '../model/gridTypes.unbound';
|
|
2
|
+
import type { DetailRowExtra, RowMetrics } from './verticalGeometry';
|
|
3
|
+
export declare const DETAIL_TOGGLE_COLUMN_KEY = "__ssg_detail_toggle__";
|
|
4
|
+
export declare const DETAIL_TOGGLE_COLUMN_WIDTH = 28;
|
|
5
|
+
export declare const DEFAULT_DETAIL_ROW_HEIGHT = 200;
|
|
6
|
+
export declare const isSyntheticColumnKey: (key: string) => boolean;
|
|
7
|
+
export declare const isInsideDetailCard: (element: Element | null | undefined) => boolean;
|
|
8
|
+
export declare const isFocusInsideDetailCard: () => boolean;
|
|
9
|
+
export declare const isInsideDetailCardOf: (root: Element, element: Element) => boolean;
|
|
10
|
+
export type DetailIndexCache = {
|
|
11
|
+
indexByKey: Map<GridRowKey, number>;
|
|
12
|
+
unresolvedFor: RowModel<unknown> | null;
|
|
13
|
+
unresolved: Set<GridRowKey>;
|
|
14
|
+
};
|
|
15
|
+
export declare const createDetailIndexCache: () => DetailIndexCache;
|
|
16
|
+
export type DetailIndexCacheHolder = {
|
|
17
|
+
current: DetailIndexCache;
|
|
18
|
+
reset: () => void;
|
|
19
|
+
};
|
|
20
|
+
export declare const createDetailIndexCacheHolder: () => DetailIndexCacheHolder;
|
|
21
|
+
export type ResolveDetailRowExtrasArgs<T> = {
|
|
22
|
+
expandedKeys: ReadonlySet<GridRowKey>;
|
|
23
|
+
rowModel: RowModel<T>;
|
|
24
|
+
height: number;
|
|
25
|
+
isExpandable?: (row: T, ctx: {
|
|
26
|
+
rowKey: GridRowKey;
|
|
27
|
+
sourceRowIndex: number;
|
|
28
|
+
}) => boolean;
|
|
29
|
+
cache: DetailIndexCache;
|
|
30
|
+
allowScan: boolean;
|
|
31
|
+
};
|
|
32
|
+
export declare const findDetailRowIndex: <T>(rowModel: RowModel<T>, rowKey: GridRowKey, cache: DetailIndexCache, allowScan: boolean) => number;
|
|
33
|
+
export declare const resolveDetailRowExtras: <T>({ expandedKeys, rowModel, height, isExpandable, cache, allowScan, }: ResolveDetailRowExtrasArgs<T>) => DetailRowExtra[];
|
|
34
|
+
export declare const seedDetailIndexCache: (cache: DetailIndexCache, rowKey: GridRowKey, viewIndex: number) => void;
|
|
35
|
+
export declare const splitRowBandByDetail: (startRow: number, endRow: number, rowMetrics: RowMetrics, extras: readonly DetailRowExtra[]) => Array<{
|
|
36
|
+
top: number;
|
|
37
|
+
height: number;
|
|
38
|
+
}>;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import "./grouping.js";
|
|
2
|
+
import "./rowReorder.js";
|
|
3
|
+
//#region src/logic/detailRow.ts
|
|
4
|
+
var e = "__ssg_detail_toggle__", t = 28, n = 200, r = (e) => e === "__ssg_group__" || e === "__ssg_detail_toggle__" || e === "__ssg_row_drag_handle__", i = (e) => e != null && typeof e.closest == "function" && e.closest("[data-ssg-detail]") !== null, a = () => typeof document < "u" && i(document.activeElement), o = (e, t) => {
|
|
5
|
+
if (typeof t.closest != "function") return !1;
|
|
6
|
+
let n = t.closest("[data-ssg-detail]");
|
|
7
|
+
return n !== null && n !== e && e.contains(n);
|
|
8
|
+
}, s = () => ({
|
|
9
|
+
indexByKey: /* @__PURE__ */ new Map(),
|
|
10
|
+
unresolvedFor: null,
|
|
11
|
+
unresolved: /* @__PURE__ */ new Set()
|
|
12
|
+
}), c = () => {
|
|
13
|
+
let e = {
|
|
14
|
+
current: s(),
|
|
15
|
+
reset: () => {
|
|
16
|
+
e.current = s();
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
return e;
|
|
20
|
+
}, l = (e, t, n, r) => {
|
|
21
|
+
let i = e.getRowCount(), a = n.indexByKey.get(t);
|
|
22
|
+
if (a !== void 0 && a >= 0 && a < i && e.getRowKey(a) === t) return a;
|
|
23
|
+
if (!r) return -1;
|
|
24
|
+
for (let r = 0; r < i; r += 1) if (e.getRowKey(r) === t) return n.indexByKey.set(t, r), r;
|
|
25
|
+
return -1;
|
|
26
|
+
}, u = ({ expandedKeys: e, rowModel: t, height: n, isExpandable: r, cache: i, allowScan: a }) => {
|
|
27
|
+
if (e.size === 0 || n <= 0) return [];
|
|
28
|
+
let o = t.getRowCount(), s = /* @__PURE__ */ new Map(), c = null;
|
|
29
|
+
for (let n of e) {
|
|
30
|
+
let e = i.indexByKey.get(n);
|
|
31
|
+
if (e !== void 0 && e >= 0 && e < o && t.getRowKey(e) === n) {
|
|
32
|
+
s.set(n, e);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
i.unresolvedFor === t && i.unresolved.has(n) || (c ??= /* @__PURE__ */ new Set()).add(n);
|
|
36
|
+
}
|
|
37
|
+
if (c && c.size > 0) {
|
|
38
|
+
if (a) for (let e = 0; e < o && c.size > 0; e += 1) {
|
|
39
|
+
let n = t.getRowKey(e);
|
|
40
|
+
c.has(n) && (i.indexByKey.set(n, e), s.set(n, e), c.delete(n));
|
|
41
|
+
}
|
|
42
|
+
if (c.size > 0) {
|
|
43
|
+
i.unresolvedFor !== t && (i.unresolvedFor = t, i.unresolved.clear());
|
|
44
|
+
for (let e of c) i.unresolved.add(e);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
let l = [];
|
|
48
|
+
for (let [e, i] of s) {
|
|
49
|
+
let a = t.getRow(i);
|
|
50
|
+
a !== void 0 && (r && !r(a, {
|
|
51
|
+
rowKey: e,
|
|
52
|
+
sourceRowIndex: t.getSourceIndex(i)
|
|
53
|
+
}) || l.push({
|
|
54
|
+
index: i,
|
|
55
|
+
height: n
|
|
56
|
+
}));
|
|
57
|
+
}
|
|
58
|
+
return l.sort((e, t) => e.index - t.index), l;
|
|
59
|
+
}, d = (e, t, n) => {
|
|
60
|
+
e.indexByKey.set(t, n), e.unresolved.delete(t);
|
|
61
|
+
}, f = (e, t, n, r) => {
|
|
62
|
+
let i = [], a = e;
|
|
63
|
+
for (let o of r) {
|
|
64
|
+
if (o.index < e) continue;
|
|
65
|
+
if (o.index > t) break;
|
|
66
|
+
let r = n.rowTop(a), s = n.rowTop(o.index) + n.cellHeight(o.index);
|
|
67
|
+
i.push({
|
|
68
|
+
top: r,
|
|
69
|
+
height: s - r
|
|
70
|
+
}), a = o.index + 1;
|
|
71
|
+
}
|
|
72
|
+
return a <= t && i.push({
|
|
73
|
+
top: n.rowTop(a),
|
|
74
|
+
height: n.rowsHeight(a, t)
|
|
75
|
+
}), i;
|
|
76
|
+
};
|
|
77
|
+
//#endregion
|
|
78
|
+
export { n as DEFAULT_DETAIL_ROW_HEIGHT, e as DETAIL_TOGGLE_COLUMN_KEY, t as DETAIL_TOGGLE_COLUMN_WIDTH, s as createDetailIndexCache, c as createDetailIndexCacheHolder, l as findDetailRowIndex, a as isFocusInsideDetailCard, i as isInsideDetailCard, o as isInsideDetailCardOf, r as isSyntheticColumnKey, u as resolveDetailRowExtras, d as seedDetailIndexCache, f as splitRowBandByDetail };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=e=>e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey,t=e=>e instanceof HTMLElement?e.closest(`input, textarea, select, button, [contenteditable="true"]`)!==null:!1;exports.isPrintableKey=e,exports.shouldIgnoreGridKeydown=t;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
//#region src/logic/domGuards.ts
|
|
2
|
+
var e = (e) => e.key.length === 1 && !e.ctrlKey && !e.metaKey && !e.altKey, t = (e) => e instanceof HTMLElement ? e.closest("input, textarea, select, button, [contenteditable=\"true\"]") !== null : !1;
|
|
3
|
+
//#endregion
|
|
4
|
+
export { e as isPrintableKey, t as shouldIgnoreGridKeydown };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs"),t=require("./checkboxEditor.cjs");var n=e=>{if(e===``)return null;let t=Number(e);return Number.isFinite(t)?t:e},r=e=>`${String(e.getFullYear()).padStart(4,`0`)}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`,i=e=>{if(e instanceof Date)return Number.isNaN(e.getTime())?``:r(e);if(typeof e==`string`&&e.trim()!==``){let t=/^(\d{4}-\d{2}-\d{2})/.exec(e);if(t)return t[1];let n=new Date(e);if(!Number.isNaN(n.getTime()))return r(n)}return``},a=e=>{if(e===``)return null;let t=i(e);return t===``?e:t},o=e=>{if(e.parseClipboardValue)return e.parseClipboardValue;if(e.editor?.type===`number`)return n;if(e.editor?.type===`date`)return a;if(e.editor?.type===`checkbox`){let n=e.editor;return e=>t.parseCheckboxEditorValue(e,n)}return e=>e},s=(e,t,n)=>typeof t==`string`?o(e)(t,n):t,c=(t,n,r,i)=>t.map((t,a)=>a===n?e.setCellValue(t,r,i):t);exports.parseCommittedValue=s,exports.resolveCellParser=o,exports.toDateInputValue=i,exports.writeRowsCell=c;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { GridColumn } from '../model/gridTypes.unbound';
|
|
2
|
+
export declare const toDateInputValue: (value: unknown) => string;
|
|
3
|
+
export declare const resolveCellParser: <T>(column: GridColumn<T>) => ((raw: string, row: T) => unknown);
|
|
4
|
+
export declare const parseCommittedValue: <T>(column: GridColumn<T>, committedValue: unknown, row: T) => unknown;
|
|
5
|
+
export declare const writeRowsCell: <T>(rows: T[], sourceRowIndex: number, column: GridColumn<T>, value: unknown) => T[];
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { setCellValue as e } from "../utils/permissions.js";
|
|
2
|
+
import { parseCheckboxEditorValue as t } from "./checkboxEditor.js";
|
|
3
|
+
//#region src/logic/editorValues.ts
|
|
4
|
+
var n = (e) => {
|
|
5
|
+
if (e === "") return null;
|
|
6
|
+
let t = Number(e);
|
|
7
|
+
return Number.isFinite(t) ? t : e;
|
|
8
|
+
}, r = (e) => `${String(e.getFullYear()).padStart(4, "0")}-${String(e.getMonth() + 1).padStart(2, "0")}-${String(e.getDate()).padStart(2, "0")}`, i = (e) => {
|
|
9
|
+
if (e instanceof Date) return Number.isNaN(e.getTime()) ? "" : r(e);
|
|
10
|
+
if (typeof e == "string" && e.trim() !== "") {
|
|
11
|
+
let t = /^(\d{4}-\d{2}-\d{2})/.exec(e);
|
|
12
|
+
if (t) return t[1];
|
|
13
|
+
let n = new Date(e);
|
|
14
|
+
if (!Number.isNaN(n.getTime())) return r(n);
|
|
15
|
+
}
|
|
16
|
+
return "";
|
|
17
|
+
}, a = (e) => {
|
|
18
|
+
if (e === "") return null;
|
|
19
|
+
let t = i(e);
|
|
20
|
+
return t === "" ? e : t;
|
|
21
|
+
}, o = (e) => {
|
|
22
|
+
if (e.parseClipboardValue) return e.parseClipboardValue;
|
|
23
|
+
if (e.editor?.type === "number") return n;
|
|
24
|
+
if (e.editor?.type === "date") return a;
|
|
25
|
+
if (e.editor?.type === "checkbox") {
|
|
26
|
+
let n = e.editor;
|
|
27
|
+
return (e) => t(e, n);
|
|
28
|
+
}
|
|
29
|
+
return (e) => e;
|
|
30
|
+
}, s = (e, t, n) => typeof t == "string" ? o(e)(t, n) : t, c = (t, n, r, i) => t.map((t, a) => a === n ? e(t, r, i) : t);
|
|
31
|
+
//#endregion
|
|
32
|
+
export { s as parseCommittedValue, o as resolveCellParser, i as toDateInputValue, c as writeRowsCell };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs");var t=(e,t)=>e.includes(t)||e.includes(`"`)||e.includes(`
|
|
2
|
+
`)||e.includes(`\r`)?`"${e.replace(/"/g,`""`)}"`:e,n=(t,n)=>{let r=e.getCellValue(t,n);return n.formatClipboardValue?n.formatClipboardValue(r,t):String(r??``)},r=({getRow:e,startRow:r,endRow:i,columns:a,delimiter:o=`,`,includeHeaders:s=!0,bom:c=!1,isRowIncluded:l})=>{let u=[];s&&u.push(a.map(e=>t(e.title??e.key,o)).join(o));for(let s=r;s<i;s+=1){let r=e(s);if(!r||l&&!l(r,s))continue;let i=a.map(e=>t(n(r,e),o));u.push(i.join(o))}let d=u.join(`\r
|
|
3
|
+
`);return c?`\uFEFF${d}`:d};exports.serializeRowsToCsv=r;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { GridColumn } from '../model/gridTypes.unbound';
|
|
2
|
+
export type SerializeRowsToCsvParams<T> = {
|
|
3
|
+
getRow: (viewIndex: number) => T;
|
|
4
|
+
startRow: number;
|
|
5
|
+
endRow: number;
|
|
6
|
+
columns: GridColumn<T>[];
|
|
7
|
+
delimiter?: string;
|
|
8
|
+
includeHeaders?: boolean;
|
|
9
|
+
bom?: boolean;
|
|
10
|
+
isRowIncluded?: (row: T, rowIndex: number) => boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare const serializeRowsToCsv: <T>({ getRow, startRow, endRow, columns, delimiter, includeHeaders, bom, isRowIncluded, }: SerializeRowsToCsvParams<T>) => string;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { getCellValue as e } from "../utils/permissions.js";
|
|
2
|
+
//#region src/logic/exportCsv.ts
|
|
3
|
+
var t = (e, t) => e.includes(t) || e.includes("\"") || e.includes("\n") || e.includes("\r") ? `"${e.replace(/"/g, "\"\"")}"` : e, n = (t, n) => {
|
|
4
|
+
let r = e(t, n);
|
|
5
|
+
return n.formatClipboardValue ? n.formatClipboardValue(r, t) : String(r ?? "");
|
|
6
|
+
}, r = ({ getRow: e, startRow: r, endRow: i, columns: a, delimiter: o = ",", includeHeaders: s = !0, bom: c = !1, isRowIncluded: l }) => {
|
|
7
|
+
let u = [];
|
|
8
|
+
s && u.push(a.map((e) => t(e.title ?? e.key, o)).join(o));
|
|
9
|
+
for (let s = r; s < i; s += 1) {
|
|
10
|
+
let r = e(s);
|
|
11
|
+
if (!r || l && !l(r, s)) continue;
|
|
12
|
+
let i = a.map((e) => t(n(r, e), o));
|
|
13
|
+
u.push(i.join(o));
|
|
14
|
+
}
|
|
15
|
+
let d = u.join("\r\n");
|
|
16
|
+
return c ? `\uFEFF${d}` : d;
|
|
17
|
+
};
|
|
18
|
+
//#endregion
|
|
19
|
+
export { r as serializeRowsToCsv };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs");var t=({getRow:t,startRow:n,endRow:r,columns:i,isRowIncluded:a})=>{let o=i.map(e=>({key:e.key,title:e.title??e.key})),s=[];for(let o=n;o<r;o+=1){let n=t(o);n&&(a&&!a(n,o)||s.push(i.map(t=>{let r=e.getCellValue(n,t);return{value:r,text:t.formatClipboardValue?t.formatClipboardValue(r,n):String(r??``)}})))}return{columns:o,rows:s}};exports.buildGridExportData=t;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { GridColumn, GridExportData } from '../model/gridTypes.unbound';
|
|
2
|
+
export type BuildGridExportDataParams<T> = {
|
|
3
|
+
getRow: (viewIndex: number) => T;
|
|
4
|
+
startRow: number;
|
|
5
|
+
endRow: number;
|
|
6
|
+
columns: GridColumn<T>[];
|
|
7
|
+
isRowIncluded?: (row: T, rowIndex: number) => boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare const buildGridExportData: <T>({ getRow, startRow, endRow, columns, isRowIncluded, }: BuildGridExportDataParams<T>) => GridExportData;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { getCellValue as e } from "../utils/permissions.js";
|
|
2
|
+
//#region src/logic/exportData.ts
|
|
3
|
+
var t = ({ getRow: t, startRow: n, endRow: r, columns: i, isRowIncluded: a }) => {
|
|
4
|
+
let o = i.map((e) => ({
|
|
5
|
+
key: e.key,
|
|
6
|
+
title: e.title ?? e.key
|
|
7
|
+
})), s = [];
|
|
8
|
+
for (let o = n; o < r; o += 1) {
|
|
9
|
+
let n = t(o);
|
|
10
|
+
n && (a && !a(n, o) || s.push(i.map((t) => {
|
|
11
|
+
let r = e(n, t);
|
|
12
|
+
return {
|
|
13
|
+
value: r,
|
|
14
|
+
text: t.formatClipboardValue ? t.formatClipboardValue(r, n) : String(r ?? "")
|
|
15
|
+
};
|
|
16
|
+
})));
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
columns: o,
|
|
20
|
+
rows: s
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
//#endregion
|
|
24
|
+
export { t as buildGridExportData };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=e=>e===`all`?`view`:e===`visible`?`rendered`:e;exports.normalizeExportScope=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=({anchorTop:e,anchorBottom:t,anchorRight:n,viewportWidth:r,viewportHeight:i,popupWidth:a,popupHeight:o,offsetY:s,viewportMargin:c})=>{let l=Math.max(0,i-c*2),u=Math.min(o,l),d=n-a;d=Math.max(c,d),d=Math.min(d,r-a-c);let f=t+s;return f+u>i-c&&(f=e-u-s),f=Math.min(f,i-c-u),f=Math.max(c,f),{top:f,left:d,maxHeight:l}};exports.computeFilterPopoverPlacement=e;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type FilterPopoverPlacementInput = {
|
|
2
|
+
anchorTop: number;
|
|
3
|
+
anchorBottom: number;
|
|
4
|
+
anchorRight: number;
|
|
5
|
+
viewportWidth: number;
|
|
6
|
+
viewportHeight: number;
|
|
7
|
+
popupWidth: number;
|
|
8
|
+
popupHeight: number;
|
|
9
|
+
offsetY: number;
|
|
10
|
+
viewportMargin: number;
|
|
11
|
+
};
|
|
12
|
+
export type FilterPopoverPlacement = {
|
|
13
|
+
top: number;
|
|
14
|
+
left: number;
|
|
15
|
+
maxHeight: number;
|
|
16
|
+
};
|
|
17
|
+
export declare const computeFilterPopoverPlacement: ({ anchorTop, anchorBottom, anchorRight, viewportWidth, viewportHeight, popupWidth, popupHeight, offsetY, viewportMargin, }: FilterPopoverPlacementInput) => FilterPopoverPlacement;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/logic/filterPopoverLayout.ts
|
|
2
|
+
var e = ({ anchorTop: e, anchorBottom: t, anchorRight: n, viewportWidth: r, viewportHeight: i, popupWidth: a, popupHeight: o, offsetY: s, viewportMargin: c }) => {
|
|
3
|
+
let l = Math.max(0, i - c * 2), u = Math.min(o, l), d = n - a;
|
|
4
|
+
d = Math.max(c, d), d = Math.min(d, r - a - c);
|
|
5
|
+
let f = t + s;
|
|
6
|
+
return f + u > i - c && (f = e - u - s), f = Math.min(f, i - c - u), f = Math.max(c, f), {
|
|
7
|
+
top: f,
|
|
8
|
+
left: d,
|
|
9
|
+
maxHeight: l
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
//#endregion
|
|
13
|
+
export { e as computeFilterPopoverPlacement };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=`data-ssg-filter-keep-open`,t=(e,t)=>!(!e||t?.contains(e)||(e instanceof Element?e:e.parentElement)?.closest(`[data-ssg-filter-keep-open]`));exports.FILTER_POPOVER_KEEP_OPEN_ATTRIBUTE=e,exports.isFilterPopoverOutsideTarget=t;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
//#region src/logic/filterPopoverOutsideClick.ts
|
|
2
|
+
var e = "data-ssg-filter-keep-open", t = (e, t) => !(!e || t?.contains(e) || (e instanceof Element ? e : e.parentElement)?.closest("[data-ssg-filter-keep-open]"));
|
|
3
|
+
//#endregion
|
|
4
|
+
export { e as FILTER_POPOVER_KEEP_OPEN_ATTRIBUTE, t as isFilterPopoverOutsideTarget };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./numberFilterCondition.cjs"),t=require("./textFilterCondition.cjs"),n=require("./dateFilterCondition.cjs");var r=e=>e===``?`(空白)`:`"${e}"`,i=(e,t)=>(e??`include`)===`exclude`?`${t.length} 件を除外`:t.length>0&&t.length<=2?t.map(r).join(`, `):`${t.length} 件を選択`,a=(r,a)=>{switch(r.kind){case`text`:case`date`:return`"${r.value.trim()}" を含む`;case`select`:return`"${r.value}" に一致`;case`number`:return r.raw;case`set`:return i(r.mode,r.values);case`numberSet`:case`textSet`:case`dateSet`:{let o=r.condition?r.kind===`numberSet`?e.formatParsedNumberFilter(r.condition):r.kind===`textSet`?t.formatParsedTextFilter(r.condition):n.formatParsedDateFilter(r.condition,a):null,s=r.set?i(r.set.mode,r.set.values):null;return o&&s?`${o} かつ ${s}`:o??s??`フィルターなし`}case`custom`:return typeof r.value==`string`&&r.value.trim().length>0?`"${r.value.trim()}"`:`カスタム条件`}};exports.describeColumnFilterValue=a;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { ColumnFilterValue } from '../model/gridTypes.unbound';
|
|
2
|
+
import type { NormalizedDateFilterPreset } from './dateFilterPresets';
|
|
3
|
+
export declare const describeColumnFilterValue: (value: ColumnFilterValue, datePresets?: readonly NormalizedDateFilterPreset[]) => string;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { formatParsedNumberFilter as e } from "./numberFilterCondition.js";
|
|
2
|
+
import { formatParsedTextFilter as t } from "./textFilterCondition.js";
|
|
3
|
+
import { formatParsedDateFilter as n } from "./dateFilterCondition.js";
|
|
4
|
+
//#region src/logic/filterSummary.ts
|
|
5
|
+
var r = (e) => e === "" ? "(空白)" : `"${e}"`, i = (e, t) => (e ?? "include") === "exclude" ? `${t.length} 件を除外` : t.length > 0 && t.length <= 2 ? t.map(r).join(", ") : `${t.length} 件を選択`, a = (r, a) => {
|
|
6
|
+
switch (r.kind) {
|
|
7
|
+
case "text":
|
|
8
|
+
case "date": return `"${r.value.trim()}" を含む`;
|
|
9
|
+
case "select": return `"${r.value}" に一致`;
|
|
10
|
+
case "number": return r.raw;
|
|
11
|
+
case "set": return i(r.mode, r.values);
|
|
12
|
+
case "numberSet":
|
|
13
|
+
case "textSet":
|
|
14
|
+
case "dateSet": {
|
|
15
|
+
let o = r.condition ? r.kind === "numberSet" ? e(r.condition) : r.kind === "textSet" ? t(r.condition) : n(r.condition, a) : null, s = r.set ? i(r.set.mode, r.set.values) : null;
|
|
16
|
+
return o && s ? `${o} かつ ${s}` : o ?? s ?? "フィルターなし";
|
|
17
|
+
}
|
|
18
|
+
case "custom": return typeof r.value == "string" && r.value.trim().length > 0 ? `"${r.value.trim()}"` : "カスタム条件";
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
//#endregion
|
|
22
|
+
export { a as describeColumnFilterValue };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../utils/permissions.cjs"),t=require("./dateFilterPresets.cjs");var n=e=>{let t=new Int32Array(e);for(let n=0;n<e;n+=1)t[n]=n;return t},r=e=>e?.kind===`set`,i=e=>e?.kind===`numberSet`,a=e=>e?.kind===`textSet`,o=e=>e?.kind===`dateSet`,s=e=>e==null||String(e).trim()===``,c=e=>{if(!e)return!1;switch(e.kind){case`set`:case`number`:case`custom`:return!0;case`numberSet`:case`textSet`:case`dateSet`:return e.condition!==null||e.set!==null;case`select`:return e.value.length>0;case`text`:case`date`:return e.value.trim().length>0}},l=e=>e==null||typeof e==`string`&&e.trim()===``?NaN:Number(e),u=(e,t)=>{if(e.mode===`blank`||e.mode===`notBlank`)return s(t)===(e.mode===`blank`);let n=l(t);if(!Number.isFinite(n))return!1;if(e.mode===`range`)return n>=e.min&&n<=e.max;switch(e.operator){case`>`:return n>e.value;case`>=`:return n>=e.value;case`<`:return n<e.value;case`<=`:return n<=e.value;case`!=`:return n!==e.value;default:return n===e.value}},d=(e,t)=>{if(e.mode===`blank`||e.mode===`notBlank`)return s(t)===(e.mode===`blank`);let n=String(t??``).toLowerCase(),r=e.value.toLowerCase();switch(e.mode){case`equals`:return n===r;case`startsWith`:return n.startsWith(r);case`endsWith`:return n.endsWith(r);default:return n.includes(r)}},f=e=>String(e).padStart(2,`0`),p=e=>`${e.getFullYear()}-${f(e.getMonth()+1)}-${f(e.getDate())}`,m=e=>{if(e==null)return null;if(e instanceof Date)return Number.isNaN(e.getTime())?null:p(e);let t=String(e).trim();if(!t)return null;let n=t.match(/^(\d{4})[-/](\d{1,2})[-/](\d{1,2})(?:[T ].*)?$/);if(!n)return null;let r=Number(n[2]),i=Number(n[3]);return r<1||r>12||i<1||i>31?null:`${n[1]}-${f(r)}-${f(i)}`},h=e=>{let t=m(e);return t===null?s(e)?``:String(e):t},g=(e,t)=>{let n=p(t);switch(e){case`today`:return{from:n,to:n};case`thisMonth`:{let e=new Date(t.getFullYear(),t.getMonth(),1),n=new Date(t.getFullYear(),t.getMonth()+1,0);return{from:p(e),to:p(n)}}default:return{from:p(new Date(t.getFullYear(),t.getMonth(),t.getDate()-29)),to:n}}},_=e=>e===void 0?null:m(e),v=(e,n,r)=>{if(e.mode!==`preset`)return e;let i=r?.find(t=>t.id===e.preset);if(i?.resolve){let e=i.resolve(n),t=_(e.from),r=_(e.to);return t!==null&&r!==null?t<=r?{mode:`range`,from:t,to:r}:{mode:`range`,from:r,to:t}:t===null?r===null?null:{mode:`onOrBefore`,value:r}:{mode:`onOrAfter`,value:t}}return t.isBuiltinDateFilterPreset(e.preset)?{mode:`range`,...g(e.preset,n)}:null},y=(e,t,n,r)=>{let i=v(e,n,r);if(i===null)return!0;if(i.mode===`blank`||i.mode===`notBlank`)return s(t)===(i.mode===`blank`);let a=m(t);if(a===null)return!1;switch(i.mode){case`range`:return a>=i.from&&a<=i.to;case`onOrAfter`:return a>=i.value;case`onOrBefore`:return a<=i.value;case`notEquals`:return a!==i.value;default:return a===i.value}},b=e=>{let t=e?.kind===`number`?e.parsed:e?.kind===`numberSet`?e.condition:null;return t?.mode===`comparison`||t?.mode===`range`},x=e=>{let t=e.trim();if(!t)return null;let n=t.match(/^(-?\d+(?:\.\d+)?)\s*\.\.\s*(-?\d+(?:\.\d+)?)$/);if(n){let e=Number(n[1]),t=Number(n[2]);return!Number.isFinite(e)||!Number.isFinite(t)?null:{mode:`range`,min:Math.min(e,t),max:Math.max(e,t)}}let r=t.match(/^(<=|>=|=|<|>)?\s*(-?\d+(?:\.\d+)?)$/);return r?{mode:`comparison`,operator:r[1]??`=`,value:Number(r[2])}:null},S=e=>e?.kind===`number`,C=e=>{let t=e.trim();return t?{kind:`number`,raw:t,parsed:x(t)}:null},w=e=>{if(!e)return``;switch(e.kind){case`number`:return e.raw;case`text`:case`date`:case`select`:return e.value;case`set`:case`numberSet`:case`textSet`:case`dateSet`:case`custom`:return``}},T=(e,t)=>{let n=String(t??``).trim();if(!n)return!0;let r=x(n);if(!r)return String(e??``).toLowerCase().includes(n.toLowerCase());if(r.mode===`blank`||r.mode===`notBlank`)return s(e)===(r.mode===`blank`);let i=l(e);if(!Number.isFinite(i))return!1;if(r.mode===`range`)return i>=r.min&&i<=r.max;switch(r.operator){case`>`:return i>r.value;case`>=`:return i>=r.value;case`<`:return i<r.value;case`<=`:return i<=r.value;case`!=`:return i!==r.value;default:return i===r.value}},E=(t,n,r)=>{if(t.mode===`blank`||t.mode===`notBlank`){let r=t.mode===`blank`;return t=>s(e.getCellValue(t,n))===r}if(t.mode===`range`){let{min:i,max:a}=t;return(t,o)=>{let s=r?r[o]:l(e.getCellValue(t,n));return Number.isFinite(s)&&s>=i&&s<=a}}let{operator:i,value:a}=t;return(t,o)=>{let s=r?r[o]:l(e.getCellValue(t,n));if(!Number.isFinite(s))return!1;switch(i){case`>`:return s>a;case`>=`:return s>=a;case`<`:return s<a;case`<=`:return s<=a;case`!=`:return s!==a;default:return s===a}}},D=(t,n)=>{if(t.mode===`blank`||t.mode===`notBlank`){let r=t.mode===`blank`;return t=>s(e.getCellValue(t,n))===r}let r=t.value.toLowerCase(),i=t.mode;return t=>{let a=String(e.getCellValue(t,n)??``).toLowerCase();switch(i){case`equals`:return a===r;case`startsWith`:return a.startsWith(r);case`endsWith`:return a.endsWith(r);default:return a.includes(r)}}},O=(t,n,r)=>{let i=new Set(n);return t===`exclude`?t=>!i.has(String(e.getCellValue(t,r)??``)):t=>i.has(String(e.getCellValue(t,r)??``))},k=(t,n,r)=>{let i=new Set(n);return t===`exclude`?t=>!i.has(h(e.getCellValue(t,r))):t=>i.has(h(e.getCellValue(t,r)))},A=(n,r,i)=>{let a=v(n,i,t.normalizeDateFilterPresets(r.dateFilterPresets));if(a===null)return()=>!0;if(a.mode===`blank`||a.mode===`notBlank`){let t=a.mode===`blank`;return n=>s(e.getCellValue(n,r))===t}if(a.mode===`range`){let{from:t,to:n}=a;return i=>{let a=m(e.getCellValue(i,r));return a!==null&&a>=t&&a<=n}}let{mode:o,value:c}=a;return t=>{let n=m(e.getCellValue(t,r));if(n===null)return!1;switch(o){case`onOrAfter`:return n>=c;case`onOrBefore`:return n<=c;case`notEquals`:return n!==c;default:return n===c}}},j=(t,n,r,i)=>{if(!c(n))return null;let a=n;if(t.filterFn){let e=t.filterFn;return t=>e(t,a)}switch(a.kind){case`set`:return O(a.mode,a.values,t);case`number`:{let n=a.parsed;if(n===null){let n=a.raw.toLowerCase();return r=>String(e.getCellValue(r,t)??``).toLowerCase().includes(n)}return E(n,t,r)}case`numberSet`:case`textSet`:case`dateSet`:{let e=a.kind===`numberSet`?a.condition?E(a.condition,t,r):null:a.kind===`textSet`?a.condition?D(a.condition,t):null:a.condition?A(a.condition,t,i??new Date):null,n=a.set?a.kind===`dateSet`?k(a.set.mode,a.set.values,t):O(a.set.mode,a.set.values,t):null;return e&&n?(t,r)=>e(t,r)&&n(t,r):e??n}case`select`:{let n=a.value;return r=>String(e.getCellValue(r,t)??``)===n}case`text`:case`date`:{let n=a.value.trim().toLowerCase();return r=>String(e.getCellValue(r,t)??``).toLowerCase().includes(n)}case`custom`:{let n=String(a.value??``).trim().toLowerCase();return r=>String(e.getCellValue(r,t)??``).toLowerCase().includes(n)}}},M=(t,n,r)=>{let i=n.length;for(let a=0;a<i;a+=1){let i=e.getCellValue(t,n[a]);if(String(i??``).toLowerCase().includes(r))return!0}return!1},N=(e,t,n,r)=>{let i=r.trim().toLowerCase();if(!i)return t;let a=t.length,o=new Int32Array(a),s=0;for(let r=0;r<a;r+=1){let a=t[r];M(e[a],n,i)&&(o[s]=a,s+=1)}return s===a?t:o.slice(0,s)},P=(e,t,n,r,i,a)=>{let o=[],s=a??new Date;for(let e of n){let t=j(e,r[e.key],i?.get(e.key),s);t&&o.push(t)}if(o.length===0)return t;let c=t.length,l=o.length,u=new Int32Array(c),d=0;for(let n=0;n<c;n+=1){let r=t[n],i=e[r],a=!0;for(let e=0;e<l;e+=1)if(!o[e](i,r)){a=!1;break}a&&(u[d]=r,d+=1)}return d===c?t:u.slice(0,d)};exports.applyNumberFilter=T,exports.buildNumberColumnFilterValue=C,exports.coerceNumberFilterCellValue=l,exports.columnFilterUsesNumericKey=b,exports.columnFilterValueToDraftText=w,exports.createSourceOrder=n,exports.filterOrderByColumns=P,exports.filterOrderByGlobalText=N,exports.formatDateKey=p,exports.isActiveColumnFilterValue=c,exports.isBlankCellValue=s,exports.isDateSetColumnFilterValue=o,exports.isNumberColumnFilterValue=S,exports.isNumberSetColumnFilterValue=i,exports.isSetColumnFilterValue=r,exports.isTextSetColumnFilterValue=a,exports.matchesParsedDateFilter=y,exports.matchesParsedNumberFilter=u,exports.matchesParsedTextFilter=d,exports.parseNumberFilterExpression=x,exports.resolveDateFilterPreset=g,exports.resolveParsedDateFilter=v,exports.rowMatchesGlobalText=M,exports.toDateKey=m,exports.toDateSetKey=h;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ColumnFilterValue, DateFilterPreset, DateSetColumnFilterValue, GridColumn, NumberColumnFilterValue, NumberSetColumnFilterValue, ParsedDateFilter, ParsedNumberFilter, ParsedTextFilter, SetColumnFilterValue, TextSetColumnFilterValue } from '../model/gridTypes.unbound';
|
|
2
|
+
import { type NormalizedDateFilterPreset } from './dateFilterPresets';
|
|
3
|
+
export type RowOrder = Int32Array;
|
|
4
|
+
export declare const createSourceOrder: (rowCount: number) => RowOrder;
|
|
5
|
+
export declare const isSetColumnFilterValue: (value: ColumnFilterValue | undefined) => value is SetColumnFilterValue;
|
|
6
|
+
export declare const isNumberSetColumnFilterValue: (value: ColumnFilterValue | undefined) => value is NumberSetColumnFilterValue;
|
|
7
|
+
export declare const isTextSetColumnFilterValue: (value: ColumnFilterValue | undefined) => value is TextSetColumnFilterValue;
|
|
8
|
+
export declare const isDateSetColumnFilterValue: (value: ColumnFilterValue | undefined) => value is DateSetColumnFilterValue;
|
|
9
|
+
export declare const isBlankCellValue: (cellValue: unknown) => boolean;
|
|
10
|
+
export declare const isActiveColumnFilterValue: (value: ColumnFilterValue | undefined) => boolean;
|
|
11
|
+
export declare const coerceNumberFilterCellValue: (cellValue: unknown) => number;
|
|
12
|
+
export declare const matchesParsedNumberFilter: (parsed: ParsedNumberFilter, cellValue: unknown) => boolean;
|
|
13
|
+
export declare const matchesParsedTextFilter: (parsed: ParsedTextFilter, cellValue: unknown) => boolean;
|
|
14
|
+
export declare const formatDateKey: (date: Date) => string;
|
|
15
|
+
export declare const toDateKey: (cellValue: unknown) => string | null;
|
|
16
|
+
export declare const toDateSetKey: (cellValue: unknown) => string;
|
|
17
|
+
export declare const resolveDateFilterPreset: (preset: DateFilterPreset, now: Date) => {
|
|
18
|
+
from: string;
|
|
19
|
+
to: string;
|
|
20
|
+
};
|
|
21
|
+
export declare const resolveParsedDateFilter: (parsed: ParsedDateFilter, now: Date, presets?: readonly NormalizedDateFilterPreset[]) => Exclude<ParsedDateFilter, {
|
|
22
|
+
mode: "preset";
|
|
23
|
+
}> | null;
|
|
24
|
+
export declare const matchesParsedDateFilter: (parsed: ParsedDateFilter, cellValue: unknown, now: Date, presets?: readonly NormalizedDateFilterPreset[]) => boolean;
|
|
25
|
+
export declare const columnFilterUsesNumericKey: (value: ColumnFilterValue | undefined) => boolean;
|
|
26
|
+
export declare const parseNumberFilterExpression: (rawValue: string) => ParsedNumberFilter | null;
|
|
27
|
+
export declare const isNumberColumnFilterValue: (value: ColumnFilterValue | undefined) => value is NumberColumnFilterValue;
|
|
28
|
+
export declare const buildNumberColumnFilterValue: (rawInput: string) => NumberColumnFilterValue | null;
|
|
29
|
+
export declare const columnFilterValueToDraftText: (value: ColumnFilterValue | undefined) => string;
|
|
30
|
+
export declare const applyNumberFilter: (cellValue: unknown, filterValue: unknown) => boolean;
|
|
31
|
+
export declare const rowMatchesGlobalText: <T>(row: T, columns: GridColumn<T>[], normalizedNeedle: string) => boolean;
|
|
32
|
+
export declare const filterOrderByGlobalText: <T>(rows: T[], order: RowOrder, columns: GridColumn<T>[], globalText: string) => RowOrder;
|
|
33
|
+
export declare const filterOrderByColumns: <T>(rows: T[], order: RowOrder, columns: GridColumn<T>[], columnFilters: Record<string, ColumnFilterValue>, numericKeys?: ReadonlyMap<string, Float64Array>, now?: Date) => RowOrder;
|