@svgrid/grid 3.0.2 → 3.0.4
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/README.md +2 -1
- package/dist/GridMenus.svelte +44 -2
- package/dist/SvChartMenu.svelte +69 -0
- package/dist/SvChartMenu.svelte.d.ts +11 -0
- package/dist/SvChartPanes.svelte +113 -0
- package/dist/SvChartPanes.svelte.d.ts +20 -0
- package/dist/SvGrid.controller.svelte.d.ts +110 -39
- package/dist/SvGrid.controller.svelte.js +655 -200
- package/dist/SvGrid.css +105 -2
- package/dist/SvGrid.svelte +386 -514
- package/dist/SvGrid.types.d.ts +210 -9
- package/dist/SvGridCellEditor.svelte +17 -0
- package/dist/SvGridChart.svelte +2257 -329
- package/dist/SvGridChart.svelte.d.ts +6 -106
- package/dist/SvGridChart.types.d.ts +338 -0
- package/dist/SvGridChart.types.js +1 -0
- package/dist/SvGridChartBuilder.svelte +323 -0
- package/dist/SvGridChartBuilder.svelte.d.ts +34 -0
- package/dist/SvGridChartPanel.svelte +221 -275
- package/dist/SvGridChartPickers.svelte +417 -0
- package/dist/SvGridChartPickers.svelte.d.ts +70 -0
- package/dist/SvGridChartView.svelte +13 -14
- package/dist/SvModal.svelte +7 -1
- package/dist/SvModal.svelte.d.ts +5 -0
- package/dist/ai.d.ts +40 -8
- package/dist/ai.js +135 -24
- package/dist/aria.d.ts +11 -0
- package/dist/build-api.js +108 -22
- package/dist/cdn/GridMenus-7kbpnnBW.js +635 -0
- package/dist/cdn/GridMenus-BL7ZgQvU.js +636 -0
- package/dist/cdn/SvChartMenu-Bl6PBbkT.js +58 -0
- package/dist/cdn/SvChartMenu-FBSMINA6.js +59 -0
- package/dist/cdn/{SvDateRangeInput-DMLKmGEc.js → SvDateRangeInput-BeU_TkbQ.js} +15 -14
- package/dist/cdn/{SvDateRangeInput-CaOuMs8O.js → SvDateRangeInput-yX8vzleW.js} +38 -37
- package/dist/cdn/{SvDateTimePicker-sonaH0oh.js → SvDateTimePicker-DQwt4UAs.js} +139 -180
- package/dist/cdn/SvDateTimePicker-vNU6bZ-q.js +775 -0
- package/dist/cdn/{SvGridCellEditor-CjEJMJKc.js → SvGridCellEditor-B1p-vCK5.js} +188 -178
- package/dist/cdn/{SvGridCellEditor-BWnTi2N7.js → SvGridCellEditor-D_0q4xAu.js} +98 -88
- package/dist/cdn/SvGridChart-C3EWAZaM.js +3574 -0
- package/dist/cdn/SvGridChart-DzLkSwCH.js +3572 -0
- package/dist/cdn/SvGridChartBuilder-BE2T1ykB.js +783 -0
- package/dist/cdn/SvGridChartBuilder-CfII62sZ.js +784 -0
- package/dist/cdn/SvGridChartPanel-CCX5_Wgd.js +675 -0
- package/dist/cdn/SvGridChartPanel-xf4sWVTo.js +699 -0
- package/dist/cdn/SvGridChartView-CfuXmY5I.js +48 -0
- package/dist/cdn/SvGridChartView-DYwabQWj.js +47 -0
- package/dist/cdn/SvMenuList-CLN8OuIK.js +452 -0
- package/dist/cdn/SvMenuList-DkGhNKjf.js +451 -0
- package/dist/cdn/SvModal-BAE-pjZX.js +396 -0
- package/dist/cdn/SvModal-CIZWCcad.js +397 -0
- package/dist/cdn/chart-Dz7SqMXH.js +4341 -0
- package/dist/cdn/chart-export-BXqueeWJ.js +135 -0
- package/dist/cdn/chart-export-pdf-DONFUnNY.js +110 -0
- package/dist/cdn/chart-panel-messages-CUbf2R4i.js +1052 -0
- package/dist/cdn/chart-panel-messages-CmNrMdsr.js +1053 -0
- package/dist/cdn/chart-summary-BJW_tg_X.js +138 -0
- package/dist/cdn/chart-trend-CaN9mDEV.js +50 -0
- package/dist/cdn/chart-validate-HcOVFAfJ.js +188 -0
- package/dist/cdn/{column-resize-DsfNXMom.js → column-resize-DpmOLfRp.js} +3 -3
- package/dist/cdn/{date-format-BnnHlqGw.js → date-format-CtquV-p3.js} +583 -603
- package/dist/cdn/{date-format-BNii4zeD.js → date-format-D6KFzU_W.js} +347 -367
- package/dist/cdn/dismissable-DAHetSNk.js +44 -0
- package/dist/cdn/editor-contract-LXgQJAgd.js +22 -0
- package/dist/cdn/focus-trap-BBOQYBma.js +65 -0
- package/dist/cdn/{row-resize-BRcimkUT.js → row-resize-niQCp040.js} +44 -36
- package/dist/cdn/{src-DNbz94Ct.js → src-BKhZ6eXd.js} +10227 -9787
- package/dist/cdn/{src-BJ2opd0j.js → src-V1uu8iE9.js} +6568 -6128
- package/dist/cdn/svgrid.js +26 -15
- package/dist/cdn/svgrid.svelte-external.js +26 -15
- package/dist/chart-axes.d.ts +53 -0
- package/dist/chart-axes.js +351 -0
- package/dist/chart-cartesian.d.ts +88 -0
- package/dist/chart-cartesian.js +1862 -0
- package/dist/chart-decimate.d.ts +51 -0
- package/dist/chart-decimate.js +199 -0
- package/dist/chart-export-pdf.d.ts +47 -0
- package/dist/chart-export-pdf.js +187 -0
- package/dist/chart-export.d.ts +2 -1
- package/dist/chart-export.js +18 -3
- package/dist/chart-financial.d.ts +91 -0
- package/dist/chart-financial.js +175 -0
- package/dist/chart-flow.d.ts +10 -0
- package/dist/chart-flow.js +298 -0
- package/dist/chart-format.d.ts +18 -0
- package/dist/chart-format.js +65 -0
- package/dist/chart-grid.d.ts +8 -0
- package/dist/chart-grid.js +190 -0
- package/dist/chart-hierarchy.d.ts +17 -0
- package/dist/chart-hierarchy.js +146 -0
- package/dist/chart-indicators.d.ts +115 -0
- package/dist/chart-indicators.js +389 -0
- package/dist/chart-messages.d.ts +95 -0
- package/dist/chart-messages.js +92 -0
- package/dist/chart-motion.d.ts +16 -0
- package/dist/chart-motion.js +141 -0
- package/dist/chart-panel-messages.d.ts +265 -0
- package/dist/chart-panel-messages.js +285 -0
- package/dist/chart-pivot.d.ts +87 -0
- package/dist/chart-pivot.js +156 -0
- package/dist/chart-polar.d.ts +25 -0
- package/dist/chart-polar.js +700 -0
- package/dist/chart-samples.d.ts +16 -0
- package/dist/chart-samples.js +153 -0
- package/dist/chart-scale.d.ts +113 -0
- package/dist/chart-scale.js +405 -0
- package/dist/chart-stats.d.ts +111 -0
- package/dist/chart-stats.js +419 -0
- package/dist/chart-stream.d.ts +45 -0
- package/dist/chart-stream.js +91 -0
- package/dist/chart-summary.d.ts +27 -0
- package/dist/chart-summary.js +205 -0
- package/dist/chart-sync.svelte.d.ts +32 -0
- package/dist/chart-sync.svelte.js +23 -0
- package/dist/chart-table.d.ts +35 -0
- package/dist/chart-table.js +165 -0
- package/dist/chart-trend.d.ts +19 -0
- package/dist/chart-trend.js +61 -0
- package/dist/chart-types.d.ts +1456 -0
- package/dist/chart-types.js +6 -0
- package/dist/chart-validate.d.ts +43 -0
- package/dist/chart-validate.js +272 -0
- package/dist/chart-zoom.d.ts +40 -0
- package/dist/chart-zoom.js +145 -0
- package/dist/chart.d.ts +186 -865
- package/dist/chart.js +460 -2204
- package/dist/clipboard.d.ts +1 -0
- package/dist/clipboard.js +137 -18
- package/dist/column-resize.d.ts +3 -0
- package/dist/column-resize.js +4 -1
- package/dist/columns.js +3 -0
- package/dist/command-context.d.ts +19 -0
- package/dist/command-context.js +116 -0
- package/dist/core.d.ts +7 -0
- package/dist/createPopoverSelect.svelte.d.ts +2 -2
- package/dist/editing.d.ts +2 -8
- package/dist/editing.js +262 -33
- package/dist/fill-patterns.d.ts +0 -5
- package/dist/fill-patterns.js +56 -2
- package/dist/grid-messages.d.ts +10 -3
- package/dist/grid-messages.js +5 -0
- package/dist/history.d.ts +83 -0
- package/dist/history.js +133 -0
- package/dist/index.d.ts +24 -6
- package/dist/index.js +20 -2
- package/dist/keyboard-handlers.js +88 -31
- package/dist/keyboard.d.ts +55 -0
- package/dist/keyboard.js +132 -0
- package/dist/menus.d.ts +3 -1
- package/dist/menus.js +7 -2
- package/dist/merges.d.ts +97 -0
- package/dist/merges.js +147 -0
- package/dist/row-resize.d.ts +3 -0
- package/dist/row-resize.js +14 -0
- package/dist/scroll-sync.d.ts +1 -0
- package/dist/scroll-sync.js +24 -0
- package/dist/selection.d.ts +16 -0
- package/dist/selection.js +108 -16
- package/dist/shortcut-registry.d.ts +145 -0
- package/dist/shortcut-registry.js +44 -0
- package/dist/svgrid-wrapper.types.d.ts +213 -22
- package/dist/virtualization/virtualizer.js +38 -17
- package/package.json +6 -1
- package/src/GridMenus.svelte +44 -2
- package/src/SvChartMenu.svelte +69 -0
- package/src/SvChartPanes.svelte +113 -0
- package/src/SvChartPanes.test.ts +66 -0
- package/src/SvGrid.controller.svelte.ts +629 -172
- package/src/SvGrid.css +105 -2
- package/src/SvGrid.svelte +386 -514
- package/src/SvGrid.types.ts +188 -8
- package/src/SvGridCellEditor.svelte +17 -0
- package/src/SvGridChart.svelte +2257 -329
- package/src/SvGridChart.test.ts +1419 -1
- package/src/SvGridChart.types.ts +336 -0
- package/src/SvGridChartBuilder.svelte +323 -0
- package/src/SvGridChartPanel.svelte +221 -275
- package/src/SvGridChartPickers.svelte +417 -0
- package/src/SvGridChartView.svelte +13 -14
- package/src/SvModal.svelte +7 -1
- package/src/SvModal.test.ts +9 -0
- package/src/ai.test.ts +57 -2
- package/src/ai.ts +166 -22
- package/src/aria.d.ts +11 -0
- package/src/build-api.coverage.test.ts +184 -0
- package/src/build-api.ts +107 -18
- package/src/chart-axes.test.ts +573 -0
- package/src/chart-axes.ts +342 -0
- package/src/chart-cartesian.ts +1863 -0
- package/src/chart-decimate.test.ts +249 -0
- package/src/chart-decimate.ts +186 -0
- package/src/chart-export-pdf.test.ts +91 -0
- package/src/chart-export-pdf.ts +207 -0
- package/src/chart-export.test.ts +14 -0
- package/src/chart-export.ts +13 -3
- package/src/chart-financial.ts +208 -0
- package/src/chart-flow.ts +286 -0
- package/src/chart-format.ts +67 -0
- package/src/chart-grid.ts +179 -0
- package/src/chart-hierarchy.ts +135 -0
- package/src/chart-indicators.test.ts +443 -0
- package/src/chart-indicators.ts +384 -0
- package/src/chart-messages.test.ts +21 -0
- package/src/chart-messages.ts +184 -0
- package/src/chart-motion.test.ts +71 -0
- package/src/chart-motion.ts +148 -0
- package/src/chart-panel-messages.test.ts +29 -0
- package/src/chart-panel-messages.ts +550 -0
- package/src/chart-pivot.test.ts +54 -0
- package/src/chart-pivot.ts +225 -0
- package/src/chart-polar.ts +674 -0
- package/src/chart-samples.ts +106 -0
- package/src/chart-scale.ts +394 -0
- package/src/chart-series-types.test.ts +714 -0
- package/src/chart-stats.ts +409 -0
- package/src/chart-stream.test.ts +75 -0
- package/src/chart-stream.ts +114 -0
- package/src/chart-summary.test.ts +90 -0
- package/src/chart-summary.ts +197 -0
- package/src/chart-sync.svelte.ts +41 -0
- package/src/chart-table.test.ts +76 -0
- package/src/chart-table.ts +178 -0
- package/src/chart-trend.ts +47 -0
- package/src/chart-types.ts +1309 -0
- package/src/chart-validate.test.ts +100 -0
- package/src/chart-validate.ts +247 -0
- package/src/chart-zoom.test.ts +137 -0
- package/src/chart-zoom.ts +124 -0
- package/src/chart.coverage.test.ts +81 -0
- package/src/chart.test.ts +56 -3
- package/src/chart.ts +557 -2784
- package/src/clipboard.test.ts +151 -0
- package/src/clipboard.ts +145 -16
- package/src/column-resize.ts +7 -1
- package/src/columns.ts +2 -0
- package/src/command-context.test.ts +200 -0
- package/src/command-context.ts +137 -0
- package/src/core.ts +7 -0
- package/src/editing.test.ts +281 -3
- package/src/editing.ts +256 -38
- package/src/fill-patterns.test.ts +35 -0
- package/src/fill-patterns.ts +56 -2
- package/src/grid-messages.ts +16 -3
- package/src/history.test.ts +196 -0
- package/src/history.ts +162 -0
- package/src/icon-seam.test.ts +3 -2
- package/src/index.ts +150 -2
- package/src/keyboard-handlers.coverage.test.ts +126 -6
- package/src/keyboard-handlers.ts +91 -30
- package/src/keyboard-shortcuts.seam.test.ts +200 -0
- package/src/keyboard.test.ts +124 -1
- package/src/keyboard.ts +142 -0
- package/src/menus.test.ts +26 -0
- package/src/menus.ts +10 -3
- package/src/merges.test.ts +112 -0
- package/src/merges.ts +168 -0
- package/src/pivot.grid.test.ts +40 -5
- package/src/row-resize.test.ts +44 -0
- package/src/row-resize.ts +17 -0
- package/src/scroll-sync.test.ts +42 -1
- package/src/scroll-sync.ts +25 -0
- package/src/selection.multi-range.test.ts +34 -0
- package/src/selection.test.ts +30 -2
- package/src/selection.ts +111 -19
- package/src/shortcut-registry.test.ts +97 -0
- package/src/shortcut-registry.ts +181 -0
- package/src/svgrid-wrapper.types.ts +184 -13
- package/src/svgrid.behavior.test.ts +135 -0
- package/src/svgrid.charting.test.ts +513 -3
- package/src/svgrid.context-menu.test.ts +31 -0
- package/src/svgrid.new-features.wrapper.test.ts +10 -3
- package/src/virtualization/virtualizer.ts +39 -17
- package/dist/cdn/GridMenus-DyFA-QxA.js +0 -602
- package/dist/cdn/GridMenus-M2XP9t0_.js +0 -603
- package/dist/cdn/SvDateTimePicker-CCbDZNZB.js +0 -816
- package/dist/cdn/SvGridChart-DAb9RbRs.js +0 -1480
- package/dist/cdn/SvGridChart-Yl-IXZFO.js +0 -1481
- package/dist/cdn/SvGridChartPanel-DayQpDsR.js +0 -834
- package/dist/cdn/SvGridChartPanel-aqf8n-vJ.js +0 -810
- package/dist/cdn/SvGridChartView-CxfakxR0.js +0 -56
- package/dist/cdn/SvGridChartView-Dm_YEx9L.js +0 -55
- package/dist/cdn/chart-CKJRCPOk.js +0 -1652
package/src/build-api.ts
CHANGED
|
@@ -26,6 +26,44 @@ import {
|
|
|
26
26
|
columnDefMatchesId,
|
|
27
27
|
} from "./cell-values";
|
|
28
28
|
import { hasAdvancedFilterEngine } from "./advanced-filter.svelte";
|
|
29
|
+
import { undoHistory, redoHistory } from "./history";
|
|
30
|
+
import { buildCommandContext } from "./command-context";
|
|
31
|
+
|
|
32
|
+
type OrientedRange = {
|
|
33
|
+
from: { row: number; col: number }
|
|
34
|
+
to: { row: number; col: number }
|
|
35
|
+
highlight: { row: number; col: number }
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* The selection as the user made it: committed ranges first, the active one
|
|
40
|
+
* last, each keeping its anchor as `from` and its focus as `to`. The active
|
|
41
|
+
* cell is the highlight of the range it sits in and of no other, which is
|
|
42
|
+
* how Handsontable reports it and what a range-aware paste needs to know.
|
|
43
|
+
*/
|
|
44
|
+
function selectedRanges(ctx: any): OrientedRange[] {
|
|
45
|
+
type Point = { rowIndex: number; colIndex: number } | null
|
|
46
|
+
type Range = { anchor: Point; focus: Point }
|
|
47
|
+
const committed: Range[] = ctx.selectionRanges ?? []
|
|
48
|
+
const active: Range = ctx.selectionRange ?? { anchor: null, focus: null }
|
|
49
|
+
const cursor = ctx.grid.getState().activeCell as Point
|
|
50
|
+
const toRange = (r: Range): OrientedRange | null => {
|
|
51
|
+
if (!r.anchor || !r.focus) return null
|
|
52
|
+
const from = { row: r.anchor.rowIndex, col: r.anchor.colIndex }
|
|
53
|
+
const to = { row: r.focus.rowIndex, col: r.focus.colIndex }
|
|
54
|
+
const inside =
|
|
55
|
+
cursor &&
|
|
56
|
+
cursor.rowIndex >= Math.min(from.row, to.row) && cursor.rowIndex <= Math.max(from.row, to.row) &&
|
|
57
|
+
cursor.colIndex >= Math.min(from.col, to.col) && cursor.colIndex <= Math.max(from.col, to.col)
|
|
58
|
+
const highlight = inside ? { row: cursor!.rowIndex, col: cursor!.colIndex } : from
|
|
59
|
+
return { from, to, highlight }
|
|
60
|
+
}
|
|
61
|
+
const out: OrientedRange[] = []
|
|
62
|
+
for (const r of committed) { const o = toRange(r); if (o) out.push(o) }
|
|
63
|
+
const last = toRange(active)
|
|
64
|
+
if (last) out.push(last)
|
|
65
|
+
return out
|
|
66
|
+
}
|
|
29
67
|
|
|
30
68
|
export function createGridApi<
|
|
31
69
|
TFeatures extends TableFeatures = TableFeatures,
|
|
@@ -129,12 +167,28 @@ export function createGridApi<
|
|
|
129
167
|
ctx.setActiveCell(active.anchor.rowIndex, active.anchor.colIndex);
|
|
130
168
|
},
|
|
131
169
|
getSelected() {
|
|
170
|
+
// Rectangles only. With cell selection off none is ever recorded and
|
|
171
|
+
// this stays [], which is how `selectable={false}` is observable from
|
|
172
|
+
// the API; the focused cell is `getActiveCell()`, not a selection.
|
|
132
173
|
return ctx
|
|
133
174
|
.getSelectionRects()
|
|
134
175
|
.map((r: { minRow: number; minCol: number; maxRow: number; maxCol: number }) =>
|
|
135
176
|
[r.minRow, r.minCol, r.maxRow, r.maxCol] as [number, number, number, number],
|
|
136
177
|
);
|
|
137
178
|
},
|
|
179
|
+
getSelectedLast() {
|
|
180
|
+
const all = selectedRanges(ctx);
|
|
181
|
+
const last = all[all.length - 1];
|
|
182
|
+
return last ? [last.from.row, last.from.col, last.to.row, last.to.col] : undefined;
|
|
183
|
+
},
|
|
184
|
+
getSelectedRange() {
|
|
185
|
+
const all = selectedRanges(ctx);
|
|
186
|
+
return all.length ? all : undefined;
|
|
187
|
+
},
|
|
188
|
+
getSelectedRangeLast() {
|
|
189
|
+
const all = selectedRanges(ctx);
|
|
190
|
+
return all[all.length - 1];
|
|
191
|
+
},
|
|
138
192
|
openChart() {
|
|
139
193
|
ctx.chartPanelOpen = true;
|
|
140
194
|
},
|
|
@@ -151,6 +205,21 @@ export function createGridApi<
|
|
|
151
205
|
configureChart(config) {
|
|
152
206
|
if (ctx.chartingEnabled) ctx.applyChartConfig(config);
|
|
153
207
|
},
|
|
208
|
+
saveChart(name) {
|
|
209
|
+
if (ctx.chartingEnabled) ctx.saveChart(name);
|
|
210
|
+
},
|
|
211
|
+
applySavedChart(name) {
|
|
212
|
+
return ctx.chartingEnabled ? ctx.applySavedChart(name) : false;
|
|
213
|
+
},
|
|
214
|
+
removeSavedChart(name) {
|
|
215
|
+
if (ctx.chartingEnabled) ctx.removeSavedChart(name);
|
|
216
|
+
},
|
|
217
|
+
getSavedCharts() {
|
|
218
|
+
return ctx.chartingEnabled ? ctx.getSavedCharts() : [];
|
|
219
|
+
},
|
|
220
|
+
setChartExplainHandler(handler) {
|
|
221
|
+
ctx.chartExplainHandler = handler ?? null;
|
|
222
|
+
},
|
|
154
223
|
setChartAiHandler(handler) {
|
|
155
224
|
ctx.chartAiHandler = handler ?? null;
|
|
156
225
|
},
|
|
@@ -351,6 +420,11 @@ export function createGridApi<
|
|
|
351
420
|
clearFilter(columnId) {
|
|
352
421
|
ctx.clearColumnFilter(columnId);
|
|
353
422
|
},
|
|
423
|
+
openContextMenu(event, rowIndex, colIndex) {
|
|
424
|
+
const columnId = ctx.allColumns[colIndex]?.id;
|
|
425
|
+
if (columnId == null) return;
|
|
426
|
+
ctx.openContextMenu(event, rowIndex, colIndex, columnId);
|
|
427
|
+
},
|
|
354
428
|
refreshEditorOptions(columnId) {
|
|
355
429
|
// Async `editorOptions` are cached per column (or per column+row for a
|
|
356
430
|
// per-row source) so opening an editor twice does not refetch. This
|
|
@@ -556,6 +630,30 @@ export function createGridApi<
|
|
|
556
630
|
autosizeColumn(columnId: string) {
|
|
557
631
|
ctx.autosizeColumn(columnId);
|
|
558
632
|
},
|
|
633
|
+
getRowHeight(rowIndex: number) {
|
|
634
|
+
const own = ctx.rowResizeHeightPx(rowIndex);
|
|
635
|
+
if (own != null) return own;
|
|
636
|
+
const declared = ctx.props.rowHeight;
|
|
637
|
+
return typeof declared === "function" ? declared(rowIndex) : (declared ?? 30);
|
|
638
|
+
},
|
|
639
|
+
setRowHeight(rowIndex: number, height: number | null) {
|
|
640
|
+
ctx.setRowResizeHeight(rowIndex, height);
|
|
641
|
+
},
|
|
642
|
+
setColumnCollapsed(columnId: string, collapsed: boolean) {
|
|
643
|
+
ctx.setColumnCollapsed(columnId, collapsed);
|
|
644
|
+
},
|
|
645
|
+
isColumnCollapsed(columnId: string) {
|
|
646
|
+
return !!ctx.collapsedColumns[columnId];
|
|
647
|
+
},
|
|
648
|
+
setRowCollapsed(rowIndex: number, collapsed: boolean) {
|
|
649
|
+
ctx.setRowCollapsed(rowIndex, collapsed);
|
|
650
|
+
},
|
|
651
|
+
getMergedCells() {
|
|
652
|
+
return (ctx.props.mergedCells ?? []).map((m: { rowIndex: number; colIndex: number; rowSpan: number; colSpan: number }) => ({ ...m }));
|
|
653
|
+
},
|
|
654
|
+
isRowCollapsed(rowIndex: number) {
|
|
655
|
+
return ctx.isRowCollapsed(rowIndex);
|
|
656
|
+
},
|
|
559
657
|
autosizeAllColumns() {
|
|
560
658
|
ctx.autosizeAllColumns();
|
|
561
659
|
},
|
|
@@ -598,24 +696,12 @@ export function createGridApi<
|
|
|
598
696
|
ctx.grid.setExpanded(() => ({}));
|
|
599
697
|
},
|
|
600
698
|
// ---- Undo / redo (history + pointer)
|
|
601
|
-
undo() {
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
ctx.historyVersion += 1
|
|
608
|
-
return true
|
|
609
|
-
},
|
|
610
|
-
redo() {
|
|
611
|
-
if (ctx.historyPtr >= ctx.history.length - 1) return false
|
|
612
|
-
const step = ctx.history[ctx.historyPtr + 1]
|
|
613
|
-
if (!step) return false
|
|
614
|
-
ctx.applyHistoryStep(step, 'redo')
|
|
615
|
-
ctx.historyPtr += 1
|
|
616
|
-
ctx.historyVersion += 1
|
|
617
|
-
return true
|
|
618
|
-
},
|
|
699
|
+
undo() { return undoHistory(ctx) },
|
|
700
|
+
redo() { return redoHistory(ctx) },
|
|
701
|
+
// Built fresh per call rather than memoized: it is a handful of getters
|
|
702
|
+
// over `ctx`, and a caller that holds one keeps reading live state
|
|
703
|
+
// anyway, so caching would only add a slot to keep in sync.
|
|
704
|
+
getCommandContext() { return buildCommandContext(ctx, false) },
|
|
619
705
|
canUndo() { void ctx.historyVersion; return ctx.historyPtr >= 0 },
|
|
620
706
|
canRedo() { void ctx.historyVersion; return ctx.historyPtr < ctx.history.length - 1 },
|
|
621
707
|
clearHistory() { ctx.history = []; ctx.historyPtr = -1; ctx.historyVersion += 1 },
|
|
@@ -769,6 +855,8 @@ export function createGridApi<
|
|
|
769
855
|
},
|
|
770
856
|
charts: ctx.getChartsState(),
|
|
771
857
|
chartActive: ctx.activeChartIndex,
|
|
858
|
+
// Only when there is one, for the same snapshot-churn reason.
|
|
859
|
+
...(ctx.savedCharts.length ? { savedCharts: ctx.getSavedCharts() } : {}),
|
|
772
860
|
}
|
|
773
861
|
: {}),
|
|
774
862
|
};
|
|
@@ -818,6 +906,7 @@ export function createGridApi<
|
|
|
818
906
|
if ("advancedFilter" in state) {
|
|
819
907
|
ctx.advancedFilter = state.advancedFilter ?? null;
|
|
820
908
|
}
|
|
909
|
+
if (Array.isArray(state.savedCharts) && ctx.chartingEnabled) ctx.applySavedCharts(state.savedCharts);
|
|
821
910
|
if ((state.chart || state.charts) && ctx.chartingEnabled) {
|
|
822
911
|
if (Array.isArray(state.charts) && state.charts.length) {
|
|
823
912
|
ctx.applyChartsState(state.charts, state.chartActive);
|