@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,150 @@
|
|
|
1
|
+
import { getCellValue as e } from "../utils/permissions.js";
|
|
2
|
+
//#region src/logic/columnAutosize.ts
|
|
3
|
+
var t = 21, n = 4, r = 41, i = 13, a = 600, o = 60, s = 16, c = null, l = () => c || (typeof document > "u" ? null : (c = document.createElement("canvas").getContext("2d"), c)), u = "system-ui, sans-serif", d = (e) => {
|
|
4
|
+
let t = u, n = 13, r = "400";
|
|
5
|
+
if (e && typeof window < "u") {
|
|
6
|
+
let i = window.getComputedStyle(e);
|
|
7
|
+
i.fontFamily && (t = i.fontFamily);
|
|
8
|
+
let a = Number.parseFloat(i.fontSize);
|
|
9
|
+
Number.isFinite(a) && a > 0 && (n = a), i.fontWeight && (r = i.fontWeight);
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
cellFont: `${r} ${n}px ${t}`,
|
|
13
|
+
headerFont: `${a} ${i}px ${t}`
|
|
14
|
+
};
|
|
15
|
+
}, f = (e, t, n) => Math.min(Math.max(e, t), n), p = (e) => e >= 4352 && e <= 4447 || e >= 11904 && e <= 12350 || e >= 12353 && e <= 13311 || e >= 13312 && e <= 19903 || e >= 19968 && e <= 40959 || e >= 40960 && e <= 42191 || e >= 44032 && e <= 55203 || e >= 63744 && e <= 64255 || e >= 65072 && e <= 65103 || e >= 65280 && e <= 65376 || e >= 65504 && e <= 65510 || e >= 127744 && e <= 129791 || e >= 131072 && e <= 262141, m = (e) => {
|
|
16
|
+
let t = 0;
|
|
17
|
+
for (let n of e) {
|
|
18
|
+
let e = n.codePointAt(0) ?? 0;
|
|
19
|
+
t += p(e) ? 2 : 1;
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
}, h = (t, n) => {
|
|
23
|
+
let r = e(t, n);
|
|
24
|
+
return n.valueFormatter ? n.valueFormatter({
|
|
25
|
+
value: r,
|
|
26
|
+
row: t,
|
|
27
|
+
column: n
|
|
28
|
+
}) : String(r ?? "");
|
|
29
|
+
}, g = (e) => {
|
|
30
|
+
if (!e || typeof document > "u") return null;
|
|
31
|
+
let t = document.createElement("div");
|
|
32
|
+
return t.setAttribute("aria-hidden", "true"), t.style.cssText = "position:absolute;top:-99999px;left:-99999px;visibility:hidden;pointer-events:none;width:auto;height:auto;contain:layout style;", e.appendChild(t), t;
|
|
33
|
+
}, _ = (e) => {
|
|
34
|
+
let t = document.createElement("div");
|
|
35
|
+
return t.className = "ssg-body-cell", t.style.cssText = "display:inline-block;position:static;top:auto;left:auto;width:auto;height:auto;white-space:nowrap;overflow:visible;", t.textContent = e, t;
|
|
36
|
+
}, v = (e) => e.suppressAutoSize === !0 || e.autoHeight === !0;
|
|
37
|
+
function y(i) {
|
|
38
|
+
let a = i.map(() => []), c = i.map(() => []), u = i.map(() => Infinity), p = i.map(() => 0);
|
|
39
|
+
return {
|
|
40
|
+
collect: (t) => {
|
|
41
|
+
for (let n = 0; n < i.length; n += 1) {
|
|
42
|
+
if (v(i[n])) continue;
|
|
43
|
+
let r = i[n].estimateCellWidth;
|
|
44
|
+
if (r) {
|
|
45
|
+
let e = r(t, i[n]);
|
|
46
|
+
e > p[n] && (p[n] = e);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
let o = String(e(t, i[n]) ?? "");
|
|
50
|
+
if (o === "") continue;
|
|
51
|
+
let l = a[n], d = c[n];
|
|
52
|
+
if (l.length === s && 2 * o.length <= u[n]) continue;
|
|
53
|
+
let f = m(o);
|
|
54
|
+
if (l.length < s) {
|
|
55
|
+
if (l.push(t), d.push(f), l.length === s) {
|
|
56
|
+
let e = d[0];
|
|
57
|
+
for (let t = 1; t < s; t += 1) d[t] < e && (e = d[t]);
|
|
58
|
+
u[n] = e;
|
|
59
|
+
}
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (f <= u[n]) continue;
|
|
63
|
+
let h = 0;
|
|
64
|
+
for (let e = 1; e < s; e += 1) d[e] < d[h] && (h = e);
|
|
65
|
+
l[h] = t, d[h] = f;
|
|
66
|
+
let g = d[0];
|
|
67
|
+
for (let e = 1; e < s; e += 1) d[e] < g && (g = d[e]);
|
|
68
|
+
u[n] = g;
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
finalize: ({ gridRoot: e, currentWidths: s }) => {
|
|
72
|
+
let c = l();
|
|
73
|
+
if (!c || i.length === 0) return {};
|
|
74
|
+
let { cellFont: u, headerFont: m } = d(e), y = {}, b = g(e);
|
|
75
|
+
try {
|
|
76
|
+
let e = null;
|
|
77
|
+
if (b) {
|
|
78
|
+
let t = [];
|
|
79
|
+
for (let e = 0; e < i.length; e += 1) {
|
|
80
|
+
if (v(i[e])) {
|
|
81
|
+
t.push([]);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (i[e].estimateCellWidth) {
|
|
85
|
+
t.push([]);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
let n = a[e], r = [];
|
|
89
|
+
for (let t = 0; t < n.length; t += 1) {
|
|
90
|
+
let a = h(n[t], i[e]);
|
|
91
|
+
if (a === "") continue;
|
|
92
|
+
let o = _(a);
|
|
93
|
+
b.appendChild(o), r.push(o);
|
|
94
|
+
}
|
|
95
|
+
t.push(r);
|
|
96
|
+
}
|
|
97
|
+
e = t.map((e) => {
|
|
98
|
+
let t = 0;
|
|
99
|
+
for (let n = 0; n < e.length; n += 1) {
|
|
100
|
+
let r = e[n].offsetWidth;
|
|
101
|
+
r > t && (t = r);
|
|
102
|
+
}
|
|
103
|
+
return t;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
for (let l = 0; l < i.length; l += 1) {
|
|
107
|
+
let d = i[l];
|
|
108
|
+
if (v(d)) continue;
|
|
109
|
+
c.font = m;
|
|
110
|
+
let g = d.title || d.key, _ = c.measureText(g).width + n + r, b;
|
|
111
|
+
if (d.estimateCellWidth) b = p[l] > 0 ? p[l] + t : 0;
|
|
112
|
+
else if (e) b = e[l];
|
|
113
|
+
else {
|
|
114
|
+
c.font = u;
|
|
115
|
+
let e = 0, r = a[l];
|
|
116
|
+
for (let t = 0; t < r.length; t += 1) {
|
|
117
|
+
let n = h(r[t], d);
|
|
118
|
+
if (n === "") continue;
|
|
119
|
+
let i = c.measureText(n).width;
|
|
120
|
+
i > e && (e = i);
|
|
121
|
+
}
|
|
122
|
+
b = e > 0 ? e + n + t : 0;
|
|
123
|
+
}
|
|
124
|
+
let x = Math.ceil(f(Math.max(_, b), d.minWidth ?? o, d.maxWidth ?? Infinity));
|
|
125
|
+
s[d.key] !== x && (y[d.key] = x);
|
|
126
|
+
}
|
|
127
|
+
} finally {
|
|
128
|
+
b && b.parentNode && b.parentNode.removeChild(b);
|
|
129
|
+
}
|
|
130
|
+
return y;
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function b() {
|
|
135
|
+
return l() !== null;
|
|
136
|
+
}
|
|
137
|
+
function x({ columns: e, getRow: t, viewRowCount: n, gridRoot: r, currentWidths: i }) {
|
|
138
|
+
if (e.length === 0 || l() === null) return {};
|
|
139
|
+
let a = y(e);
|
|
140
|
+
for (let e = 0; e < n; e += 1) {
|
|
141
|
+
let n = t(e);
|
|
142
|
+
n && a.collect(n);
|
|
143
|
+
}
|
|
144
|
+
return a.finalize({
|
|
145
|
+
gridRoot: r,
|
|
146
|
+
currentWidths: i
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
//#endregion
|
|
150
|
+
export { b as canMeasureAutosize, x as computeAutosizedColumnWidths, y as createColumnWidthAccumulator };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./geometry.cjs");var t=50,n=t=>t.flex!=null&&t.flex>0&&e.getColumnPane(t)===`center`,r=(e,t)=>{let n=new Map,r=e,i=t;for(;;){let e=r.reduce((e,t)=>e+t.flex,0);if(r.length===0||e<=0)break;let t=null;for(let a of r){let r=i*a.flex/e;if(r<a.min){n.set(a.key,a.min),i-=a.min,t=a.key;break}if(r>a.max){n.set(a.key,a.max),i-=a.max,t=a.key;break}}if(t!==null){r=r.filter(e=>e.key!==t);continue}let a=0;r.forEach((t,o)=>{if(o===r.length-1)n.set(t.key,i-a);else{let r=i*t.flex/e;n.set(t.key,r),a+=r}});break}return n},i=(t,n,i)=>{let a=[],o=0;for(let r of t){let t=n[r.key];if(t!=null){o+=t;continue}let i=r.flex;if(i!=null&&i>0&&e.getColumnPane(r)===`center`){a.push({key:r.key,flex:i,min:r.minWidth??50,max:r.maxWidth??1/0});continue}o+=r.width}if(a.length===0)return{};let s=i-o;return Object.fromEntries(r(a,s))};exports.DEFAULT_FLEX_MIN_WIDTH=t,exports.computeCenterFlexWidths=i,exports.isFlexingColumn=n;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GridColumn } from '../model/gridTypes.unbound';
|
|
2
|
+
export declare const DEFAULT_FLEX_MIN_WIDTH = 50;
|
|
3
|
+
export declare const isFlexingColumn: <T>(column: GridColumn<T>) => boolean;
|
|
4
|
+
export declare const computeCenterFlexWidths: <T>(centerColumns: GridColumn<T>[], columnWidths: Record<string, number>, availableWidth: number) => Record<string, number>;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { getColumnPane as e } from "./geometry.js";
|
|
2
|
+
//#region src/logic/columnFlex.ts
|
|
3
|
+
var t = 50, n = (t) => t.flex != null && t.flex > 0 && e(t) === "center", r = (e, t) => {
|
|
4
|
+
let n = /* @__PURE__ */ new Map(), r = e, i = t;
|
|
5
|
+
for (;;) {
|
|
6
|
+
let e = r.reduce((e, t) => e + t.flex, 0);
|
|
7
|
+
if (r.length === 0 || e <= 0) break;
|
|
8
|
+
let t = null;
|
|
9
|
+
for (let a of r) {
|
|
10
|
+
let r = i * a.flex / e;
|
|
11
|
+
if (r < a.min) {
|
|
12
|
+
n.set(a.key, a.min), i -= a.min, t = a.key;
|
|
13
|
+
break;
|
|
14
|
+
}
|
|
15
|
+
if (r > a.max) {
|
|
16
|
+
n.set(a.key, a.max), i -= a.max, t = a.key;
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
if (t !== null) {
|
|
21
|
+
r = r.filter((e) => e.key !== t);
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
let a = 0;
|
|
25
|
+
r.forEach((t, o) => {
|
|
26
|
+
if (o === r.length - 1) n.set(t.key, i - a);
|
|
27
|
+
else {
|
|
28
|
+
let r = i * t.flex / e;
|
|
29
|
+
n.set(t.key, r), a += r;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
return n;
|
|
35
|
+
}, i = (t, n, i) => {
|
|
36
|
+
let a = [], o = 0;
|
|
37
|
+
for (let r of t) {
|
|
38
|
+
let t = n[r.key];
|
|
39
|
+
if (t != null) {
|
|
40
|
+
o += t;
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
let i = r.flex;
|
|
44
|
+
if (i != null && i > 0 && e(r) === "center") {
|
|
45
|
+
a.push({
|
|
46
|
+
key: r.key,
|
|
47
|
+
flex: i,
|
|
48
|
+
min: r.minWidth ?? 50,
|
|
49
|
+
max: r.maxWidth ?? Infinity
|
|
50
|
+
});
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
o += r.width;
|
|
54
|
+
}
|
|
55
|
+
if (a.length === 0) return {};
|
|
56
|
+
let s = i - o;
|
|
57
|
+
return Object.fromEntries(r(a, s));
|
|
58
|
+
};
|
|
59
|
+
//#endregion
|
|
60
|
+
export { t as DEFAULT_FLEX_MIN_WIDTH, i as computeCenterFlexWidths, n as isFlexingColumn };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t,n)=>{let r=!1,i=e.map(e=>{let i=n[e.key]??e.width,a=t.get(e.key);if(!a)return i===e.width?e:{...e,width:i};let o=a.pinned??void 0,s=i!==a.width,c=(e.pinned??void 0)!==o,l=e.visible!==!1!=(a.visible!==!1);return(s||c||l)&&(r=!0),{...e,width:a.width,pinned:a.pinned,visible:a.visible}}),a=new Map(i.map(e=>[e.key,e])),o=[];for(let e of t.keys()){let t=a.get(e);t&&o.push(t)}let s=i.filter(e=>!t.has(e.key)),c=[...o,...s],l=c.some((t,n)=>e[n].key!==t.key);return!r&&!l?null:c};exports.buildResetColumns=e;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { GridColumn, GridColumnPinned } from '../model/gridTypes.unbound';
|
|
2
|
+
export type InitialColumnState = {
|
|
3
|
+
width: number;
|
|
4
|
+
pinned: GridColumnPinned | undefined;
|
|
5
|
+
visible: boolean | undefined;
|
|
6
|
+
};
|
|
7
|
+
export declare const buildResetColumns: <T>(columns: GridColumn<T>[], snapshot: Map<string, InitialColumnState>, resolvedWidths: Record<string, number>) => GridColumn<T>[] | null;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//#region src/logic/columnReset.ts
|
|
2
|
+
var e = (e, t, n) => {
|
|
3
|
+
let r = !1, i = e.map((e) => {
|
|
4
|
+
let i = n[e.key] ?? e.width, a = t.get(e.key);
|
|
5
|
+
if (!a) return i === e.width ? e : {
|
|
6
|
+
...e,
|
|
7
|
+
width: i
|
|
8
|
+
};
|
|
9
|
+
let o = a.pinned ?? void 0, s = i !== a.width, c = (e.pinned ?? void 0) !== o, l = e.visible !== !1 != (a.visible !== !1);
|
|
10
|
+
return (s || c || l) && (r = !0), {
|
|
11
|
+
...e,
|
|
12
|
+
width: a.width,
|
|
13
|
+
pinned: a.pinned,
|
|
14
|
+
visible: a.visible
|
|
15
|
+
};
|
|
16
|
+
}), a = new Map(i.map((e) => [e.key, e])), o = [];
|
|
17
|
+
for (let e of t.keys()) {
|
|
18
|
+
let t = a.get(e);
|
|
19
|
+
t && o.push(t);
|
|
20
|
+
}
|
|
21
|
+
let s = i.filter((e) => !t.has(e.key)), c = [...o, ...s], l = c.some((t, n) => e[n].key !== t.key);
|
|
22
|
+
return !r && !l ? null : c;
|
|
23
|
+
};
|
|
24
|
+
//#endregion
|
|
25
|
+
export { e as buildResetColumns };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=(e,t)=>e.findIndex(e=>e.key===t),t=(e,t,n)=>{if(!e)return!1;if(e.type===`row`)return t>=e.startRow&&t<=e.endRow;if(e.type===`col`)return n>=e.startCol&&n<=e.endCol;let{start:r,end:i}=e.range,a=Math.min(r.row,i.row),o=Math.max(r.row,i.row),s=Math.min(r.col,i.col),c=Math.max(r.col,i.col);return t>=a&&t<=o&&n>=s&&n<=c},n=(e,t)=>{if(!e)return!1;if(e.type===`row`)return t>=e.startRow&&t<=e.endRow;if(e.type===`cell`){let{start:n,end:r}=e.range,i=Math.min(n.row,r.row),a=Math.max(n.row,r.row);return t>=i&&t<=a}return!1};exports.isContextMenuCellSelected=t,exports.isContextMenuRowSelected=n,exports.resolveContextMenuColIndex=e;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { GridColumn, GridSelection } from '../model/gridTypes.unbound';
|
|
2
|
+
export declare const resolveContextMenuColIndex: <T>(orderedColumns: GridColumn<T>[], columnKey: string) => number;
|
|
3
|
+
export declare const isContextMenuCellSelected: (selection: GridSelection, rowIndex: number, colIndex: number) => boolean;
|
|
4
|
+
export declare const isContextMenuRowSelected: (selection: GridSelection, rowIndex: number) => boolean;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
//#region src/logic/contextMenuTarget.ts
|
|
2
|
+
var e = (e, t) => e.findIndex((e) => e.key === t), t = (e, t, n) => {
|
|
3
|
+
if (!e) return !1;
|
|
4
|
+
if (e.type === "row") return t >= e.startRow && t <= e.endRow;
|
|
5
|
+
if (e.type === "col") return n >= e.startCol && n <= e.endCol;
|
|
6
|
+
let { start: r, end: i } = e.range, a = Math.min(r.row, i.row), o = Math.max(r.row, i.row), s = Math.min(r.col, i.col), c = Math.max(r.col, i.col);
|
|
7
|
+
return t >= a && t <= o && n >= s && n <= c;
|
|
8
|
+
}, n = (e, t) => {
|
|
9
|
+
if (!e) return !1;
|
|
10
|
+
if (e.type === "row") return t >= e.startRow && t <= e.endRow;
|
|
11
|
+
if (e.type === "cell") {
|
|
12
|
+
let { start: n, end: r } = e.range, i = Math.min(n.row, r.row), a = Math.max(n.row, r.row);
|
|
13
|
+
return t >= i && t <= a;
|
|
14
|
+
}
|
|
15
|
+
return !1;
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
export { t as isContextMenuCellSelected, n as isContextMenuRowSelected, e as resolveContextMenuColIndex };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});function e(...e){return e.filter(Boolean).join(` `)}exports.cx=e;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function cx(...classNames: Array<string | false | null | undefined>): string;
|
package/dist/logic/cx.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./dateFilterPresets.cjs"),t=require("./filtering.cjs");var n={operator:`range`,value1:``,value2:``,preset:null},r=[{value:`range`,label:`範囲`},{value:`onOrAfter`,label:`以降`},{value:`onOrBefore`,label:`以前`},{value:`equals`,label:`に等しい`},{value:`notEquals`,label:`に等しくない`},{value:`blank`,label:`空白`},{value:`notBlank`,label:`空白でない`}],i=e.BUILTIN_DATE_FILTER_PRESET_OPTIONS,a=e=>e===`blank`||e===`notBlank`?0:e===`range`?2:1,o=e=>{let t=e.trim();return/^\d{4}-\d{2}-\d{2}$/.test(t)?t:null},s=e=>e===null||e instanceof Date?e===null?``:t.toDateKey(e)??``:e.trim()===``?``:t.toDateKey(e)??``,c=e=>{if(e.preset!==null)return{mode:`preset`,preset:e.preset};if(e.operator===`blank`||e.operator===`notBlank`)return{mode:e.operator};if(e.operator===`range`){let t=o(e.value1),n=o(e.value2);return t!==null&&n!==null?t<=n?{mode:`range`,from:t,to:n}:{mode:`range`,from:n,to:t}:t===null?n===null?null:{mode:`onOrBefore`,value:n}:{mode:`onOrAfter`,value:t}}let t=o(e.value1);return t===null?null:{mode:e.operator,value:t}},l=(t,n)=>{switch(t.mode){case`range`:return`${t.from} 〜 ${t.to}`;case`onOrAfter`:return`${t.value} 以降`;case`onOrBefore`:return`${t.value} 以前`;case`equals`:return`${t.value} に等しい`;case`notEquals`:return`${t.value} に等しくない`;case`blank`:return`(空白)`;case`notBlank`:return`(空白でない)`;case`preset`:return e.dateFilterPresetLabel(t.preset,n)}},u=e=>{if(!e)return n;switch(e.mode){case`preset`:return{...n,preset:e.preset};case`range`:return{operator:`range`,value1:e.from,value2:e.to,preset:null};case`blank`:case`notBlank`:return{operator:e.mode,value1:``,value2:``,preset:null};default:return{operator:e.mode,value1:e.value,value2:``,preset:null}}},d=(e,n,r,i)=>n?e.filter(e=>t.matchesParsedDateFilter(n,e.value,r,i)):e;exports.DATE_FILTER_OPERATOR_OPTIONS=r,exports.DATE_FILTER_PRESET_OPTIONS=i,exports.DEFAULT_DATE_FILTER_DRAFT=n,exports.buildParsedDateFilterFromDraft=c,exports.dateFilterOperandCount=a,exports.filterOptionsByDateCondition=d,exports.formatParsedDateFilter=l,exports.normalizeFilterDateInputValue=s,exports.parsedDateFilterToConditionDraft=u;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { DateFilterPreset, ParsedDateFilter } from '../model/gridTypes.unbound';
|
|
2
|
+
import { type NormalizedDateFilterPreset } from './dateFilterPresets';
|
|
3
|
+
export type DateFilterOperator = 'range' | 'onOrAfter' | 'onOrBefore' | 'equals' | 'notEquals' | 'blank' | 'notBlank';
|
|
4
|
+
export type DateFilterConditionDraft = {
|
|
5
|
+
operator: DateFilterOperator;
|
|
6
|
+
value1: string;
|
|
7
|
+
value2: string;
|
|
8
|
+
preset: string | null;
|
|
9
|
+
};
|
|
10
|
+
export declare const DEFAULT_DATE_FILTER_DRAFT: DateFilterConditionDraft;
|
|
11
|
+
export declare const DATE_FILTER_OPERATOR_OPTIONS: ReadonlyArray<{
|
|
12
|
+
value: DateFilterOperator;
|
|
13
|
+
label: string;
|
|
14
|
+
}>;
|
|
15
|
+
export declare const DATE_FILTER_PRESET_OPTIONS: ReadonlyArray<{
|
|
16
|
+
value: DateFilterPreset;
|
|
17
|
+
label: string;
|
|
18
|
+
}>;
|
|
19
|
+
export declare const dateFilterOperandCount: (operator: DateFilterOperator) => 0 | 1 | 2;
|
|
20
|
+
export declare const normalizeFilterDateInputValue: (value: string | Date | null) => string;
|
|
21
|
+
export declare const buildParsedDateFilterFromDraft: (draft: DateFilterConditionDraft) => ParsedDateFilter | null;
|
|
22
|
+
export declare const formatParsedDateFilter: (parsed: ParsedDateFilter, presets?: readonly NormalizedDateFilterPreset[]) => string;
|
|
23
|
+
export declare const parsedDateFilterToConditionDraft: (parsed: ParsedDateFilter | null | undefined) => DateFilterConditionDraft;
|
|
24
|
+
export declare const filterOptionsByDateCondition: <O extends {
|
|
25
|
+
value: string;
|
|
26
|
+
}>(options: O[], condition: ParsedDateFilter | null, now: Date, presets?: readonly NormalizedDateFilterPreset[]) => O[];
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { BUILTIN_DATE_FILTER_PRESET_OPTIONS as e, dateFilterPresetLabel as t } from "./dateFilterPresets.js";
|
|
2
|
+
import { matchesParsedDateFilter as n, toDateKey as r } from "./filtering.js";
|
|
3
|
+
//#region src/logic/dateFilterCondition.ts
|
|
4
|
+
var i = {
|
|
5
|
+
operator: "range",
|
|
6
|
+
value1: "",
|
|
7
|
+
value2: "",
|
|
8
|
+
preset: null
|
|
9
|
+
}, a = [
|
|
10
|
+
{
|
|
11
|
+
value: "range",
|
|
12
|
+
label: "範囲"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
value: "onOrAfter",
|
|
16
|
+
label: "以降"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
value: "onOrBefore",
|
|
20
|
+
label: "以前"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
value: "equals",
|
|
24
|
+
label: "に等しい"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
value: "notEquals",
|
|
28
|
+
label: "に等しくない"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
value: "blank",
|
|
32
|
+
label: "空白"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
value: "notBlank",
|
|
36
|
+
label: "空白でない"
|
|
37
|
+
}
|
|
38
|
+
], o = e, s = (e) => e === "blank" || e === "notBlank" ? 0 : e === "range" ? 2 : 1, c = (e) => {
|
|
39
|
+
let t = e.trim();
|
|
40
|
+
return /^\d{4}-\d{2}-\d{2}$/.test(t) ? t : null;
|
|
41
|
+
}, l = (e) => e === null || e instanceof Date ? e === null ? "" : r(e) ?? "" : e.trim() === "" ? "" : r(e) ?? "", u = (e) => {
|
|
42
|
+
if (e.preset !== null) return {
|
|
43
|
+
mode: "preset",
|
|
44
|
+
preset: e.preset
|
|
45
|
+
};
|
|
46
|
+
if (e.operator === "blank" || e.operator === "notBlank") return { mode: e.operator };
|
|
47
|
+
if (e.operator === "range") {
|
|
48
|
+
let t = c(e.value1), n = c(e.value2);
|
|
49
|
+
return t !== null && n !== null ? t <= n ? {
|
|
50
|
+
mode: "range",
|
|
51
|
+
from: t,
|
|
52
|
+
to: n
|
|
53
|
+
} : {
|
|
54
|
+
mode: "range",
|
|
55
|
+
from: n,
|
|
56
|
+
to: t
|
|
57
|
+
} : t === null ? n === null ? null : {
|
|
58
|
+
mode: "onOrBefore",
|
|
59
|
+
value: n
|
|
60
|
+
} : {
|
|
61
|
+
mode: "onOrAfter",
|
|
62
|
+
value: t
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
let t = c(e.value1);
|
|
66
|
+
return t === null ? null : {
|
|
67
|
+
mode: e.operator,
|
|
68
|
+
value: t
|
|
69
|
+
};
|
|
70
|
+
}, d = (e, n) => {
|
|
71
|
+
switch (e.mode) {
|
|
72
|
+
case "range": return `${e.from} 〜 ${e.to}`;
|
|
73
|
+
case "onOrAfter": return `${e.value} 以降`;
|
|
74
|
+
case "onOrBefore": return `${e.value} 以前`;
|
|
75
|
+
case "equals": return `${e.value} に等しい`;
|
|
76
|
+
case "notEquals": return `${e.value} に等しくない`;
|
|
77
|
+
case "blank": return "(空白)";
|
|
78
|
+
case "notBlank": return "(空白でない)";
|
|
79
|
+
case "preset": return t(e.preset, n);
|
|
80
|
+
}
|
|
81
|
+
}, f = (e) => {
|
|
82
|
+
if (!e) return i;
|
|
83
|
+
switch (e.mode) {
|
|
84
|
+
case "preset": return {
|
|
85
|
+
...i,
|
|
86
|
+
preset: e.preset
|
|
87
|
+
};
|
|
88
|
+
case "range": return {
|
|
89
|
+
operator: "range",
|
|
90
|
+
value1: e.from,
|
|
91
|
+
value2: e.to,
|
|
92
|
+
preset: null
|
|
93
|
+
};
|
|
94
|
+
case "blank":
|
|
95
|
+
case "notBlank": return {
|
|
96
|
+
operator: e.mode,
|
|
97
|
+
value1: "",
|
|
98
|
+
value2: "",
|
|
99
|
+
preset: null
|
|
100
|
+
};
|
|
101
|
+
default: return {
|
|
102
|
+
operator: e.mode,
|
|
103
|
+
value1: e.value,
|
|
104
|
+
value2: "",
|
|
105
|
+
preset: null
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}, p = (e, t, r, i) => t ? e.filter((e) => n(t, e.value, r, i)) : e;
|
|
109
|
+
//#endregion
|
|
110
|
+
export { a as DATE_FILTER_OPERATOR_OPTIONS, o as DATE_FILTER_PRESET_OPTIONS, i as DEFAULT_DATE_FILTER_DRAFT, u as buildParsedDateFilterFromDraft, s as dateFilterOperandCount, p as filterOptionsByDateCondition, d as formatParsedDateFilter, l as normalizeFilterDateInputValue, f as parsedDateFilterToConditionDraft };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=[{value:`today`,label:`今日`},{value:`thisMonth`,label:`今月`},{value:`last30days`,label:`過去 30 日`}],t=t=>e.some(e=>e.value===t),n=t=>e.find(e=>e.value===t)?.label??t,r=t=>t===!1?[]:t===void 0?e.map(({value:e,label:t})=>({id:e,label:t})):t.map(e=>typeof e==`string`?{id:e,label:n(e)}:{id:e.id,label:e.label,resolve:e.resolve}),i=(e,r)=>{let i=r?.find(t=>t.id===e)?.label;return i===void 0?t(e)?n(e):e:i};exports.BUILTIN_DATE_FILTER_PRESET_OPTIONS=e,exports.dateFilterPresetLabel=i,exports.isBuiltinDateFilterPreset=t,exports.normalizeDateFilterPresets=r;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DateFilterPreset, DateFilterPresetOption, DateFilterPresetRange } from '../model/gridTypes.unbound';
|
|
2
|
+
export type NormalizedDateFilterPreset = {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
resolve?: (now: Date) => DateFilterPresetRange;
|
|
6
|
+
};
|
|
7
|
+
export declare const BUILTIN_DATE_FILTER_PRESET_OPTIONS: ReadonlyArray<{
|
|
8
|
+
value: DateFilterPreset;
|
|
9
|
+
label: string;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const isBuiltinDateFilterPreset: (id: string) => id is DateFilterPreset;
|
|
12
|
+
export declare const normalizeDateFilterPresets: (option: false | readonly DateFilterPresetOption[] | undefined) => NormalizedDateFilterPreset[];
|
|
13
|
+
export declare const dateFilterPresetLabel: (id: string, presets?: readonly NormalizedDateFilterPreset[]) => string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/logic/dateFilterPresets.ts
|
|
2
|
+
var e = [
|
|
3
|
+
{
|
|
4
|
+
value: "today",
|
|
5
|
+
label: "今日"
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
value: "thisMonth",
|
|
9
|
+
label: "今月"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
value: "last30days",
|
|
13
|
+
label: "過去 30 日"
|
|
14
|
+
}
|
|
15
|
+
], t = (t) => e.some((e) => e.value === t), n = (t) => e.find((e) => e.value === t)?.label ?? t, r = (t) => t === !1 ? [] : t === void 0 ? e.map(({ value: e, label: t }) => ({
|
|
16
|
+
id: e,
|
|
17
|
+
label: t
|
|
18
|
+
})) : t.map((e) => typeof e == "string" ? {
|
|
19
|
+
id: e,
|
|
20
|
+
label: n(e)
|
|
21
|
+
} : {
|
|
22
|
+
id: e.id,
|
|
23
|
+
label: e.label,
|
|
24
|
+
resolve: e.resolve
|
|
25
|
+
}), i = (e, r) => {
|
|
26
|
+
let i = r?.find((t) => t.id === e)?.label;
|
|
27
|
+
return i === void 0 ? t(e) ? n(e) : e : i;
|
|
28
|
+
};
|
|
29
|
+
//#endregion
|
|
30
|
+
export { e as BUILTIN_DATE_FILTER_PRESET_OPTIONS, i as dateFilterPresetLabel, t as isBuiltinDateFilterPreset, r as normalizeDateFilterPresets };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./filtering.cjs");var t=/^\d{4}-\d{2}-\d{2}$/,n=n=>{let r=new Set;for(let t of n)r.add(e.toDateSetKey(t.value));let i=[],a=[],o=!1;for(let e of r)e===``?o=!0:t.test(e)?i.push(e):a.push(e);i.sort(),a.sort();let s=i.map(e=>({label:e,value:e}));for(let e of a)s.push({label:e,value:e});return o&&s.push({label:`(空白)`,value:``}),s},r=(e,n)=>{let r=new Map,i=[];for(let n of e){if(!t.test(n.value)){i.push(n);continue}let e=n.value.slice(0,4),a=n.value.slice(0,7),o=r.get(e);o||(o=new Map,r.set(e,o));let s=o.get(a);s||(s=[],o.set(a,s)),s.push(n.value)}let a=[];for(let[e,t]of r){let r=`y:${e}`,i=[];for(let e of t.values())i.push(...e);let o=n.has(r);if(a.push({type:`group`,key:r,label:`${e} 年`,depth:0,leafKeys:i,expanded:o}),o)for(let[e,r]of t){let t=`m:${e}`,i=n.has(t);if(a.push({type:`group`,key:t,label:`${Number(e.slice(5,7))} 月`,depth:1,leafKeys:[...r],expanded:i}),i)for(let e of r)a.push({type:`leaf`,key:e,label:`${Number(e.slice(8,10))} 日`,depth:2,leafKeys:[e],expanded:!1})}}for(let e of i)a.push({type:`leaf`,key:e.value,label:e.label,depth:0,leafKeys:[e.value],expanded:!1});return a};exports.buildDateTreeRows=r,exports.normalizeDateSetOptions=n;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type DateSetOption = {
|
|
2
|
+
label: string;
|
|
3
|
+
value: string;
|
|
4
|
+
};
|
|
5
|
+
export declare const normalizeDateSetOptions: (rawOptions: ReadonlyArray<{
|
|
6
|
+
label: string;
|
|
7
|
+
value: string;
|
|
8
|
+
}>) => DateSetOption[];
|
|
9
|
+
export type DateTreeRow = {
|
|
10
|
+
type: 'group' | 'leaf';
|
|
11
|
+
key: string;
|
|
12
|
+
label: string;
|
|
13
|
+
depth: 0 | 1 | 2;
|
|
14
|
+
leafKeys: string[];
|
|
15
|
+
expanded: boolean;
|
|
16
|
+
};
|
|
17
|
+
export declare const buildDateTreeRows: (options: ReadonlyArray<DateSetOption>, expandedKeys: ReadonlySet<string>) => DateTreeRow[];
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { toDateSetKey as e } from "./filtering.js";
|
|
2
|
+
//#region src/logic/dateFilterTree.ts
|
|
3
|
+
var t = /^\d{4}-\d{2}-\d{2}$/, n = (n) => {
|
|
4
|
+
let r = /* @__PURE__ */ new Set();
|
|
5
|
+
for (let t of n) r.add(e(t.value));
|
|
6
|
+
let i = [], a = [], o = !1;
|
|
7
|
+
for (let e of r) e === "" ? o = !0 : t.test(e) ? i.push(e) : a.push(e);
|
|
8
|
+
i.sort(), a.sort();
|
|
9
|
+
let s = i.map((e) => ({
|
|
10
|
+
label: e,
|
|
11
|
+
value: e
|
|
12
|
+
}));
|
|
13
|
+
for (let e of a) s.push({
|
|
14
|
+
label: e,
|
|
15
|
+
value: e
|
|
16
|
+
});
|
|
17
|
+
return o && s.push({
|
|
18
|
+
label: "(空白)",
|
|
19
|
+
value: ""
|
|
20
|
+
}), s;
|
|
21
|
+
}, r = (e, n) => {
|
|
22
|
+
let r = /* @__PURE__ */ new Map(), i = [];
|
|
23
|
+
for (let n of e) {
|
|
24
|
+
if (!t.test(n.value)) {
|
|
25
|
+
i.push(n);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
let e = n.value.slice(0, 4), a = n.value.slice(0, 7), o = r.get(e);
|
|
29
|
+
o || (o = /* @__PURE__ */ new Map(), r.set(e, o));
|
|
30
|
+
let s = o.get(a);
|
|
31
|
+
s || (s = [], o.set(a, s)), s.push(n.value);
|
|
32
|
+
}
|
|
33
|
+
let a = [];
|
|
34
|
+
for (let [e, t] of r) {
|
|
35
|
+
let r = `y:${e}`, i = [];
|
|
36
|
+
for (let e of t.values()) i.push(...e);
|
|
37
|
+
let o = n.has(r);
|
|
38
|
+
if (a.push({
|
|
39
|
+
type: "group",
|
|
40
|
+
key: r,
|
|
41
|
+
label: `${e} 年`,
|
|
42
|
+
depth: 0,
|
|
43
|
+
leafKeys: i,
|
|
44
|
+
expanded: o
|
|
45
|
+
}), o) for (let [e, r] of t) {
|
|
46
|
+
let t = `m:${e}`, i = n.has(t);
|
|
47
|
+
if (a.push({
|
|
48
|
+
type: "group",
|
|
49
|
+
key: t,
|
|
50
|
+
label: `${Number(e.slice(5, 7))} 月`,
|
|
51
|
+
depth: 1,
|
|
52
|
+
leafKeys: [...r],
|
|
53
|
+
expanded: i
|
|
54
|
+
}), i) for (let e of r) a.push({
|
|
55
|
+
type: "leaf",
|
|
56
|
+
key: e,
|
|
57
|
+
label: `${Number(e.slice(8, 10))} 日`,
|
|
58
|
+
depth: 2,
|
|
59
|
+
leafKeys: [e],
|
|
60
|
+
expanded: !1
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
for (let e of i) a.push({
|
|
65
|
+
type: "leaf",
|
|
66
|
+
key: e.value,
|
|
67
|
+
label: e.label,
|
|
68
|
+
depth: 0,
|
|
69
|
+
leafKeys: [e.value],
|
|
70
|
+
expanded: !1
|
|
71
|
+
});
|
|
72
|
+
return a;
|
|
73
|
+
};
|
|
74
|
+
//#endregion
|
|
75
|
+
export { r as buildDateTreeRows, n as normalizeDateSetOptions };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./filtering.cjs");var t=[`日`,`月`,`火`,`水`,`木`,`金`,`土`],n=[`1月`,`2月`,`3月`,`4月`,`5月`,`6月`,`7月`,`8月`,`9月`,`10月`,`11月`,`12月`],r=(t,n)=>{let r=new Date(t,n,1).getDay(),i=[];for(let a=0;a<42;a+=1){let o=new Date(t,n,1-r+a);i.push({key:e.formatDateKey(o),day:o.getDate(),inCurrentMonth:o.getMonth()===n})}return i},i=e=>e===``?``:e.replaceAll(`-`,`/`),a=(e,t)=>`${e}年 ${t+1}月`,o=e=>e-e%12,s=e=>{let t=o(e),n=[];for(let e=0;e<12;e+=1)n.push(t+e);return n};exports.CALENDAR_DOW_LABELS=t,exports.CALENDAR_MONTH_LABELS=n,exports.buildCalendarDayCells=r,exports.buildYearGrid=s,exports.formatCalendarTitle=a,exports.formatFilterDateDisplay=i,exports.yearGridStart=o;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type CalendarDayCell = {
|
|
2
|
+
key: string;
|
|
3
|
+
day: number;
|
|
4
|
+
inCurrentMonth: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare const CALENDAR_DOW_LABELS: ReadonlyArray<string>;
|
|
7
|
+
export declare const CALENDAR_MONTH_LABELS: ReadonlyArray<string>;
|
|
8
|
+
export declare const buildCalendarDayCells: (year: number, monthIndex: number) => CalendarDayCell[];
|
|
9
|
+
export declare const formatFilterDateDisplay: (key: string) => string;
|
|
10
|
+
export declare const formatCalendarTitle: (year: number, monthIndex: number) => string;
|
|
11
|
+
export declare const yearGridStart: (year: number) => number;
|
|
12
|
+
export declare const buildYearGrid: (year: number) => number[];
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { formatDateKey as e } from "./filtering.js";
|
|
2
|
+
//#region src/logic/datePickerCalendar.ts
|
|
3
|
+
var t = [
|
|
4
|
+
"日",
|
|
5
|
+
"月",
|
|
6
|
+
"火",
|
|
7
|
+
"水",
|
|
8
|
+
"木",
|
|
9
|
+
"金",
|
|
10
|
+
"土"
|
|
11
|
+
], n = [
|
|
12
|
+
"1月",
|
|
13
|
+
"2月",
|
|
14
|
+
"3月",
|
|
15
|
+
"4月",
|
|
16
|
+
"5月",
|
|
17
|
+
"6月",
|
|
18
|
+
"7月",
|
|
19
|
+
"8月",
|
|
20
|
+
"9月",
|
|
21
|
+
"10月",
|
|
22
|
+
"11月",
|
|
23
|
+
"12月"
|
|
24
|
+
], r = (t, n) => {
|
|
25
|
+
let r = new Date(t, n, 1).getDay(), i = [];
|
|
26
|
+
for (let a = 0; a < 42; a += 1) {
|
|
27
|
+
let o = new Date(t, n, 1 - r + a);
|
|
28
|
+
i.push({
|
|
29
|
+
key: e(o),
|
|
30
|
+
day: o.getDate(),
|
|
31
|
+
inCurrentMonth: o.getMonth() === n
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return i;
|
|
35
|
+
}, i = (e) => e === "" ? "" : e.replaceAll("-", "/"), a = (e, t) => `${e}年 ${t + 1}月`, o = (e) => e - e % 12, s = (e) => {
|
|
36
|
+
let t = o(e), n = [];
|
|
37
|
+
for (let e = 0; e < 12; e += 1) n.push(t + e);
|
|
38
|
+
return n;
|
|
39
|
+
};
|
|
40
|
+
//#endregion
|
|
41
|
+
export { t as CALENDAR_DOW_LABELS, n as CALENDAR_MONTH_LABELS, r as buildCalendarDayCells, s as buildYearGrid, a as formatCalendarTitle, i as formatFilterDateDisplay, o as yearGridStart };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require("./grouping.cjs"),require("./rowReorder.cjs");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)=>{if(typeof t.closest!=`function`)return!1;let n=t.closest(`[data-ssg-detail]`);return n!==null&&n!==e&&e.contains(n)},s=()=>({indexByKey:new Map,unresolvedFor:null,unresolved:new Set}),c=()=>{let e={current:s(),reset:()=>{e.current=s()}};return e},l=(e,t,n,r)=>{let i=e.getRowCount(),a=n.indexByKey.get(t);if(a!==void 0&&a>=0&&a<i&&e.getRowKey(a)===t)return a;if(!r)return-1;for(let r=0;r<i;r+=1)if(e.getRowKey(r)===t)return n.indexByKey.set(t,r),r;return-1},u=({expandedKeys:e,rowModel:t,height:n,isExpandable:r,cache:i,allowScan:a})=>{if(e.size===0||n<=0)return[];let o=t.getRowCount(),s=new Map,c=null;for(let n of e){let e=i.indexByKey.get(n);if(e!==void 0&&e>=0&&e<o&&t.getRowKey(e)===n){s.set(n,e);continue}i.unresolvedFor===t&&i.unresolved.has(n)||(c??=new Set).add(n)}if(c&&c.size>0){if(a)for(let e=0;e<o&&c.size>0;e+=1){let n=t.getRowKey(e);c.has(n)&&(i.indexByKey.set(n,e),s.set(n,e),c.delete(n))}if(c.size>0){i.unresolvedFor!==t&&(i.unresolvedFor=t,i.unresolved.clear());for(let e of c)i.unresolved.add(e)}}let l=[];for(let[e,i]of s){let a=t.getRow(i);a!==void 0&&(r&&!r(a,{rowKey:e,sourceRowIndex:t.getSourceIndex(i)})||l.push({index:i,height:n}))}return l.sort((e,t)=>e.index-t.index),l},d=(e,t,n)=>{e.indexByKey.set(t,n),e.unresolved.delete(t)},f=(e,t,n,r)=>{let i=[],a=e;for(let o of r){if(o.index<e)continue;if(o.index>t)break;let r=n.rowTop(a),s=n.rowTop(o.index)+n.cellHeight(o.index);i.push({top:r,height:s-r}),a=o.index+1}return a<=t&&i.push({top:n.rowTop(a),height:n.rowsHeight(a,t)}),i};exports.DEFAULT_DETAIL_ROW_HEIGHT=n,exports.DETAIL_TOGGLE_COLUMN_KEY=e,exports.DETAIL_TOGGLE_COLUMN_WIDTH=t,exports.createDetailIndexCache=s,exports.createDetailIndexCacheHolder=c,exports.findDetailRowIndex=l,exports.isFocusInsideDetailCard=a,exports.isInsideDetailCard=i,exports.isInsideDetailCardOf=o,exports.isSyntheticColumnKey=r,exports.resolveDetailRowExtras=u,exports.seedDetailIndexCache=d,exports.splitRowBandByDetail=f;
|