@rowsncolumns/spreadsheet 10.5.2 → 10.5.3

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.
Files changed (85) hide show
  1. package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
  2. package/dist/cjs/components/canvas-grid/index.js +85 -70
  3. package/dist/cjs/components/canvas-grid/typings.d.ts +18 -1
  4. package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
  5. package/dist/cjs/components/cell/cell-text-runs.d.ts +10 -3
  6. package/dist/cjs/components/cell/cell-text-runs.d.ts.map +1 -1
  7. package/dist/cjs/components/cell/cell-text-runs.js +21 -9
  8. package/dist/cjs/components/cell/index.d.ts.map +1 -1
  9. package/dist/cjs/components/cell/index.js +9 -5
  10. package/dist/cjs/components/cell/line-height.d.ts +22 -0
  11. package/dist/cjs/components/cell/line-height.d.ts.map +1 -0
  12. package/dist/cjs/components/cell/line-height.js +32 -0
  13. package/dist/cjs/components/cell/typings.d.ts +8 -2
  14. package/dist/cjs/components/cell/typings.d.ts.map +1 -1
  15. package/dist/cjs/hooks/export-range-tiles.d.ts +81 -0
  16. package/dist/cjs/hooks/export-range-tiles.d.ts.map +1 -0
  17. package/dist/cjs/hooks/export-range-tiles.js +171 -0
  18. package/dist/cjs/hooks/use-cell-renderer.d.ts +6 -1
  19. package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
  20. package/dist/cjs/hooks/use-cell-renderer.js +3 -2
  21. package/dist/cjs/hooks/use-copy-paste-cut.d.ts +5 -1
  22. package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
  23. package/dist/cjs/hooks/use-copy-paste-cut.js +19 -5
  24. package/dist/cjs/hooks/use-editor-submit.d.ts +7 -1
  25. package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
  26. package/dist/cjs/hooks/use-editor-submit.js +36 -16
  27. package/dist/cjs/hooks/use-export-range.d.ts +14 -6
  28. package/dist/cjs/hooks/use-export-range.d.ts.map +1 -1
  29. package/dist/cjs/hooks/use-export-range.js +240 -158
  30. package/dist/cjs/hooks/use-grid-children.d.ts +4 -1
  31. package/dist/cjs/hooks/use-grid-children.d.ts.map +1 -1
  32. package/dist/cjs/hooks/use-grid-children.js +4 -2
  33. package/dist/cjs/hooks/use-navigate-sheet-range.d.ts.map +1 -1
  34. package/dist/cjs/hooks/use-navigate-sheet-range.js +5 -2
  35. package/dist/cjs/hooks/use-sizer.d.ts +8 -2
  36. package/dist/cjs/hooks/use-sizer.d.ts.map +1 -1
  37. package/dist/cjs/hooks/use-sizer.js +54 -33
  38. package/dist/cjs/providers/spreadsheet-provider.d.ts +11 -2
  39. package/dist/cjs/providers/spreadsheet-provider.d.ts.map +1 -1
  40. package/dist/cjs/providers/spreadsheet-provider.js +7 -5
  41. package/dist/cjs/release-date.js +1 -1
  42. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  43. package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
  44. package/dist/esm/components/canvas-grid/index.js +27 -12
  45. package/dist/esm/components/canvas-grid/typings.d.ts +18 -1
  46. package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
  47. package/dist/esm/components/cell/cell-text-runs.d.ts +10 -3
  48. package/dist/esm/components/cell/cell-text-runs.d.ts.map +1 -1
  49. package/dist/esm/components/cell/cell-text-runs.js +14 -9
  50. package/dist/esm/components/cell/index.d.ts.map +1 -1
  51. package/dist/esm/components/cell/index.js +7 -3
  52. package/dist/esm/components/cell/line-height.d.ts +22 -0
  53. package/dist/esm/components/cell/line-height.d.ts.map +1 -0
  54. package/dist/esm/components/cell/line-height.js +25 -0
  55. package/dist/esm/components/cell/typings.d.ts +8 -2
  56. package/dist/esm/components/cell/typings.d.ts.map +1 -1
  57. package/dist/esm/hooks/export-range-tiles.d.ts +81 -0
  58. package/dist/esm/hooks/export-range-tiles.d.ts.map +1 -0
  59. package/dist/esm/hooks/export-range-tiles.js +126 -0
  60. package/dist/esm/hooks/use-cell-renderer.d.ts +6 -1
  61. package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
  62. package/dist/esm/hooks/use-cell-renderer.js +3 -2
  63. package/dist/esm/hooks/use-copy-paste-cut.d.ts +5 -1
  64. package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
  65. package/dist/esm/hooks/use-copy-paste-cut.js +17 -3
  66. package/dist/esm/hooks/use-editor-submit.d.ts +7 -1
  67. package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
  68. package/dist/esm/hooks/use-editor-submit.js +24 -6
  69. package/dist/esm/hooks/use-export-range.d.ts +14 -6
  70. package/dist/esm/hooks/use-export-range.d.ts.map +1 -1
  71. package/dist/esm/hooks/use-export-range.js +158 -120
  72. package/dist/esm/hooks/use-grid-children.d.ts +4 -1
  73. package/dist/esm/hooks/use-grid-children.d.ts.map +1 -1
  74. package/dist/esm/hooks/use-grid-children.js +4 -2
  75. package/dist/esm/hooks/use-navigate-sheet-range.d.ts.map +1 -1
  76. package/dist/esm/hooks/use-navigate-sheet-range.js +5 -2
  77. package/dist/esm/hooks/use-sizer.d.ts +8 -2
  78. package/dist/esm/hooks/use-sizer.d.ts.map +1 -1
  79. package/dist/esm/hooks/use-sizer.js +53 -31
  80. package/dist/esm/providers/spreadsheet-provider.d.ts +11 -2
  81. package/dist/esm/providers/spreadsheet-provider.d.ts.map +1 -1
  82. package/dist/esm/providers/spreadsheet-provider.js +8 -6
  83. package/dist/esm/release-date.js +1 -1
  84. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  85. package/package.json +6 -6
@@ -1,44 +1,98 @@
1
- import { Align } from "@rowsncolumns/grid";
2
1
  import { getDevicePixelRatio } from "@rowsncolumns/grid";
3
2
  import { useCallback } from "react";
3
+ import { planExportStops, sourceOffset, } from "./export-range-tiles";
4
4
  import { useCallbackRef } from "./use-callback-ref";
5
- export const useExportRange = ({ sheetId, gridLineWidth, cellBackgroundColor, getCanvasLayers, getColumnHeaderCanvasLayer, getRowHeaderCanvasLayer, getSheetName, getCellOffsetFromCoords, getR1C1AddressFromSelection, getScrollPosition, getViewPort, getRowOffset, getColumnOffset, getSheetDimensions, scrollTo, scrollToCell, scale, onChangeScale, }) => {
5
+ import { useStableRef } from "./use-stable-ref";
6
+ /** The export zooms out this far to fit a range in the viewport before it tiles. */
7
+ const MIN_EXPORT_SCALE = 0.25;
8
+ /**
9
+ * Frames to keep waiting for a repaint that never comes (a host that ignores
10
+ * `onChangeScale`, a scroll the grid clamped elsewhere). The capture then goes
11
+ * on from whatever the grid did land on, so the output stays right.
12
+ */
13
+ const PAINT_WAIT_FRAME_BUDGET = 120;
14
+ /** A scrollbar-driven scroll can settle a hair off the requested offset on sheets taller than the scrollbar can address. */
15
+ const SCROLL_TOLERANCE = 2;
16
+ /**
17
+ * Resolves once the layer has repainted with `ready()` holding and a whole
18
+ * animation frame has then passed without another paint. The grid's canvas is
19
+ * drawn by react-konva's batched draw on the frame after a React commit, and a
20
+ * windowed engine folds the rows of a freshly scrolled-to viewport in a second
21
+ * commit right behind the first — the quiet frame is what lets that second
22
+ * paint land before the copy, instead of a fixed number of frames that may or
23
+ * may not cover it. Paints from before `ready()` held do not count.
24
+ */
25
+ const waitForPaint = (layer, ready) => new Promise((resolve) => {
26
+ let paintedThisFrame = false;
27
+ let paintedWhileReady = false;
28
+ let frames = 0;
29
+ const onDraw = () => {
30
+ paintedThisFrame = true;
31
+ };
32
+ layer.on("draw", onDraw);
33
+ const finish = () => {
34
+ layer.off("draw", onDraw);
35
+ resolve();
36
+ };
37
+ const tick = () => {
38
+ frames += 1;
39
+ if (!ready()) {
40
+ paintedThisFrame = false;
41
+ paintedWhileReady = false;
42
+ }
43
+ else if (paintedThisFrame) {
44
+ paintedThisFrame = false;
45
+ paintedWhileReady = true;
46
+ }
47
+ else if (paintedWhileReady) {
48
+ finish();
49
+ return;
50
+ }
51
+ if (frames >= PAINT_WAIT_FRAME_BUDGET) {
52
+ finish();
53
+ return;
54
+ }
55
+ requestAnimationFrame(tick);
56
+ };
57
+ requestAnimationFrame(tick);
58
+ });
59
+ const isAtScroll = (position, target) => Math.abs(position.scrollTop - target.scrollTop) <= SCROLL_TOLERANCE &&
60
+ Math.abs(position.scrollLeft - target.scrollLeft) <= SCROLL_TOLERANCE;
61
+ const getFileExtension = (fmt) => {
62
+ switch (fmt) {
63
+ case "image/jpeg":
64
+ case "image/jpg":
65
+ return ".jpg";
66
+ case "image/webp":
67
+ return ".webp";
68
+ case "image/png":
69
+ default:
70
+ return ".png";
71
+ }
72
+ };
73
+ export const useExportRange = ({ sheetId, gridLineWidth, cellBackgroundColor, frozenRows, frozenColumns, getCanvasLayers, getColumnHeaderCanvasLayer, getRowHeaderCanvasLayer, getSheetName, getR1C1AddressFromSelection, getScrollPosition, getRowOffset, getColumnOffset, getSheetDimensions, getGridDimensions, scrollTo, scale, onChangeScale, }) => {
74
+ // The capture spans renders; this is how it sees the scale the host applied.
75
+ const scaleRef = useStableRef(scale);
6
76
  return useCallbackRef(useCallback((range, options) => {
7
77
  const layers = getCanvasLayers();
8
- if (!layers?.length)
78
+ const layer = layers?.[0];
79
+ if (!layer)
9
80
  return undefined;
10
81
  const { filename, format, includeHeaders } = options || {};
11
82
  const baseScale = scale ?? 1;
12
- const minExportScale = 0.25;
13
- const waitForPaint = () => new Promise((resolve) => {
14
- requestAnimationFrame(() => {
15
- requestAnimationFrame(() => resolve());
16
- });
17
- });
18
- const normalizeRangeStart = (rangeValue) => ({
19
- ...rangeValue,
20
- startRowIndex: Math.max(1, rangeValue.startRowIndex),
21
- startColumnIndex: Math.max(1, rangeValue.startColumnIndex),
22
- });
23
- const isStartInViewport = (viewport, normalizedRange) => normalizedRange.startRowIndex >= viewport.visibleRowStartIndex &&
24
- normalizedRange.startRowIndex <= viewport.visibleRowStopIndex &&
25
- normalizedRange.startColumnIndex >=
26
- viewport.visibleColumnStartIndex &&
27
- normalizedRange.startColumnIndex <= viewport.visibleColumnStopIndex;
28
- const isRangeInViewport = (viewport, normalizedRange) => normalizedRange.startRowIndex >= viewport.visibleRowStartIndex &&
29
- normalizedRange.endRowIndex <= viewport.visibleRowStopIndex &&
30
- normalizedRange.startColumnIndex >=
31
- viewport.visibleColumnStartIndex &&
32
- normalizedRange.endColumnIndex <= viewport.visibleColumnStopIndex;
83
+ const normalizedRange = {
84
+ ...range,
85
+ startRowIndex: Math.max(1, range.startRowIndex),
86
+ startColumnIndex: Math.max(1, range.startColumnIndex),
87
+ };
33
88
  const exportRangeAsync = async () => {
34
89
  const initialScrollCoords = getScrollPosition();
35
90
  let nextScale = baseScale;
36
- let didScroll = false;
37
91
  if (onChangeScale) {
38
- const startX = getColumnOffset(range.startColumnIndex);
39
- const endX = getColumnOffset(range.endColumnIndex + 1);
40
- const startY = getRowOffset(range.startRowIndex);
41
- const endY = getRowOffset(range.endRowIndex + 1);
92
+ const startX = getColumnOffset(normalizedRange.startColumnIndex);
93
+ const endX = getColumnOffset(normalizedRange.endColumnIndex + 1);
94
+ const startY = getRowOffset(normalizedRange.startRowIndex);
95
+ const endY = getRowOffset(normalizedRange.endRowIndex + 1);
42
96
  const currentWidth = Math.max(endX - startX, 0);
43
97
  const currentHeight = Math.max(endY - startY, 0);
44
98
  const [viewWidth, viewHeight] = getSheetDimensions();
@@ -46,112 +100,93 @@ export const useExportRange = ({ sheetId, gridLineWidth, cellBackgroundColor, ge
46
100
  const unscaledWidth = currentWidth / baseScale;
47
101
  const unscaledHeight = currentHeight / baseScale;
48
102
  const fitScale = Math.min(viewWidth / unscaledWidth, viewHeight / unscaledHeight, baseScale);
49
- const minScale = Math.min(minExportScale, baseScale);
103
+ const minScale = Math.min(MIN_EXPORT_SCALE, baseScale);
50
104
  nextScale = Math.min(Math.max(fitScale, minScale), baseScale);
51
105
  }
52
106
  }
53
107
  try {
54
108
  if (onChangeScale && nextScale !== baseScale) {
55
109
  onChangeScale(nextScale);
56
- await waitForPaint();
57
- }
58
- const normalizedRange = normalizeRangeStart(range);
59
- const viewport = getViewPort();
60
- if (!isStartInViewport(viewport, normalizedRange)) {
61
- scrollToCell?.({
62
- rowIndex: normalizedRange.startRowIndex,
63
- columnIndex: normalizedRange.startColumnIndex,
64
- }, Align.start);
65
- didScroll = true;
66
- await waitForPaint();
67
- }
68
- const viewportAfterStart = getViewPort();
69
- if (!isRangeInViewport(viewportAfterStart, normalizedRange)) {
70
- scrollToCell?.({
71
- rowIndex: normalizedRange.endRowIndex,
72
- columnIndex: normalizedRange.endColumnIndex,
73
- }, Align.end);
74
- didScroll = true;
75
- await waitForPaint();
110
+ await waitForPaint(layer, () => scaleRef.current === nextScale);
76
111
  }
77
- const scrollCoords = getScrollPosition();
78
- const tl = getCellOffsetFromCoords({
79
- rowIndex: normalizedRange.startRowIndex,
80
- columnIndex: normalizedRange.startColumnIndex,
81
- });
82
- const br = getCellOffsetFromCoords({
83
- rowIndex: normalizedRange.endRowIndex,
84
- columnIndex: normalizedRange.endColumnIndex,
112
+ // Measured after the zoom so every offset is at the export scale.
113
+ const dimensions = getGridDimensions();
114
+ if (!dimensions)
115
+ return undefined;
116
+ const headerWidth = includeHeaders ? getColumnOffset(1) : 0;
117
+ const headerHeight = includeHeaders ? getRowOffset(1) : 0;
118
+ const rangeLeft = getColumnOffset(normalizedRange.startColumnIndex);
119
+ const rangeRight = getColumnOffset(normalizedRange.endColumnIndex + 1) +
120
+ gridLineWidth;
121
+ const rangeTop = getRowOffset(normalizedRange.startRowIndex);
122
+ const rangeBottom = getRowOffset(normalizedRange.endRowIndex + 1) + gridLineWidth;
123
+ const scrollAtPlan = getScrollPosition();
124
+ const stops = planExportStops({
125
+ x: {
126
+ rangeStart: rangeLeft,
127
+ rangeEnd: rangeRight,
128
+ frozenSize: getColumnOffset(frozenColumns),
129
+ viewportSize: dimensions.containerWidth,
130
+ maxScroll: Math.max(0, dimensions.estimatedTotalWidth - dimensions.containerWidth),
131
+ currentScroll: scrollAtPlan.scrollLeft,
132
+ headerSize: headerWidth,
133
+ },
134
+ y: {
135
+ rangeStart: rangeTop,
136
+ rangeEnd: rangeBottom,
137
+ frozenSize: getRowOffset(frozenRows),
138
+ viewportSize: dimensions.containerHeight,
139
+ maxScroll: Math.max(0, dimensions.estimatedTotalHeight - dimensions.containerHeight),
140
+ currentScroll: scrollAtPlan.scrollTop,
141
+ headerSize: headerHeight,
142
+ },
85
143
  });
86
- // @ts-ignore
87
- tl.x -= scrollCoords.scrollLeft;
88
- // @ts-ignore
89
- tl.y -= scrollCoords.scrollTop;
90
- // @ts-ignore
91
- br.x -= scrollCoords.scrollLeft;
92
- // @ts-ignore
93
- br.y -= scrollCoords.scrollTop;
94
144
  const sheetName = getSheetName?.(range.sheetId ?? sheetId);
95
145
  const dpr = getDevicePixelRatio();
96
- const baseX = tl?.x ?? 0;
97
- const baseY = tl?.y ?? 0;
98
- const baseWidth = (br?.x ?? 0) - baseX + (br?.width ?? 0) + gridLineWidth;
99
- const baseHeight = (br?.y ?? 0) - baseY + (br?.height ?? 0) + gridLineWidth;
100
- const headerWidth = includeHeaders ? getColumnOffset(1) : 0;
101
- const headerHeight = includeHeaders ? getRowOffset(1) : 0;
102
- const destX = headerWidth;
103
- const destY = headerHeight;
104
- const width = baseWidth + headerWidth;
105
- const height = baseHeight + headerHeight;
146
+ const width = rangeRight - rangeLeft + headerWidth;
147
+ const height = rangeBottom - rangeTop + headerHeight;
106
148
  const finalFileName = filename ??
107
149
  getR1C1AddressFromSelection?.(normalizedRange, sheetName)?.substring(1);
108
- const getFileExtension = (fmt) => {
109
- switch (fmt) {
110
- case "image/jpeg":
111
- case "image/jpg":
112
- return ".jpg";
113
- case "image/webp":
114
- return ".webp";
115
- case "image/png":
116
- default:
117
- return ".png";
118
- }
150
+ const canvases = {
151
+ body: layer.getCanvas()._canvas,
152
+ rowHeader: includeHeaders
153
+ ? getRowHeaderCanvasLayer()?.[0]?.getCanvas()._canvas
154
+ : null,
155
+ columnHeader: includeHeaders
156
+ ? getColumnHeaderCanvasLayer()?.[0]?.getCanvas()._canvas
157
+ : null,
119
158
  };
120
- const bodyCanvas = layers[0]?.getCanvas()._canvas;
121
- const rowHeaderCanvas = includeHeaders
122
- ? getRowHeaderCanvasLayer()?.[0]?.getCanvas()._canvas
123
- : null;
124
- const columnHeaderCanvas = includeHeaders
125
- ? getColumnHeaderCanvasLayer()?.[0]?.getCanvas()._canvas
126
- : null;
127
- if (!bodyCanvas)
159
+ if (!canvases.body)
128
160
  return undefined;
129
- const canvas = bodyCanvas;
130
161
  const tempCanvas = document.createElement("canvas");
131
162
  tempCanvas.width = width * dpr;
132
163
  tempCanvas.height = height * dpr;
133
164
  const tempCtx = tempCanvas.getContext("2d");
134
- const intermediateCanvas = document.createElement("canvas");
135
- intermediateCanvas.width = width * dpr;
136
- intermediateCanvas.height = height * dpr;
137
- const intermediateCtx = intermediateCanvas.getContext("2d");
138
- const bodySourceX = baseX;
139
- const bodySourceY = baseY;
140
- if (intermediateCtx) {
141
- intermediateCtx.drawImage(canvas, bodySourceX * dpr, bodySourceY * dpr, baseWidth * dpr, baseHeight * dpr, destX * dpr, destY * dpr, baseWidth * dpr, baseHeight * dpr);
142
- }
143
165
  if (tempCtx) {
144
166
  tempCtx.fillStyle = cellBackgroundColor;
145
167
  tempCtx.fillRect(0, 0, tempCanvas.width, tempCanvas.height);
146
- tempCtx.drawImage(intermediateCanvas, 0, 0);
147
- if (includeHeaders) {
148
- if (columnHeaderCanvas) {
149
- tempCtx.drawImage(columnHeaderCanvas, baseX * dpr, 0, baseWidth * dpr, headerHeight * dpr, destX * dpr, 0, baseWidth * dpr, headerHeight * dpr);
150
- }
151
- if (rowHeaderCanvas) {
152
- tempCtx.drawImage(rowHeaderCanvas, 0, baseY * dpr, headerWidth * dpr, baseHeight * dpr, 0, destY * dpr, headerWidth * dpr, baseHeight * dpr);
153
- }
168
+ }
169
+ const copyPiece = (piece, landed) => {
170
+ const source = canvases[piece.canvas];
171
+ if (!tempCtx || !source)
172
+ return;
173
+ const sx = sourceOffset(piece.x, landed.scrollLeft);
174
+ const sy = sourceOffset(piece.y, landed.scrollTop);
175
+ tempCtx.drawImage(source, sx * dpr, sy * dpr, piece.x.size * dpr, piece.y.size * dpr, piece.x.dest * dpr, piece.y.dest * dpr, piece.x.size * dpr, piece.y.size * dpr);
176
+ };
177
+ for (const stop of stops) {
178
+ const target = {
179
+ scrollTop: stop.scrollTop,
180
+ scrollLeft: stop.scrollLeft,
181
+ };
182
+ if (!isAtScroll(getScrollPosition(), target)) {
183
+ scrollTo(target, true);
184
+ await waitForPaint(layer, () => isAtScroll(getScrollPosition(), target));
154
185
  }
186
+ // Copy from where the grid actually landed, not where it was sent.
187
+ const landed = getScrollPosition();
188
+ for (const piece of stop.pieces)
189
+ copyPiece(piece, landed);
155
190
  }
156
191
  if (format === "clipboard") {
157
192
  await new Promise((resolve, reject) => {
@@ -195,11 +230,13 @@ export const useExportRange = ({ sheetId, gridLineWidth, cellBackgroundColor, ge
195
230
  const shouldRestoreScale = onChangeScale && nextScale !== baseScale;
196
231
  if (shouldRestoreScale) {
197
232
  onChangeScale(baseScale);
198
- await waitForPaint();
233
+ await waitForPaint(layer, () => scaleRef.current === baseScale);
199
234
  }
200
- if (didScroll || shouldRestoreScale) {
201
- scrollTo?.(initialScrollCoords, true);
202
- await waitForPaint();
235
+ const current = getScrollPosition();
236
+ if (current.scrollTop !== initialScrollCoords.scrollTop ||
237
+ current.scrollLeft !== initialScrollCoords.scrollLeft) {
238
+ scrollTo(initialScrollCoords, true);
239
+ await waitForPaint(layer, () => isAtScroll(getScrollPosition(), initialScrollCoords));
203
240
  }
204
241
  }
205
242
  };
@@ -208,20 +245,21 @@ export const useExportRange = ({ sheetId, gridLineWidth, cellBackgroundColor, ge
208
245
  sheetId,
209
246
  gridLineWidth,
210
247
  cellBackgroundColor,
248
+ frozenRows,
249
+ frozenColumns,
211
250
  getCanvasLayers,
212
- getCellOffsetFromCoords,
213
251
  getSheetName,
214
252
  getR1C1AddressFromSelection,
215
253
  getScrollPosition,
216
- getViewPort,
217
254
  getColumnHeaderCanvasLayer,
218
255
  getRowHeaderCanvasLayer,
219
256
  getRowOffset,
220
257
  getColumnOffset,
221
258
  getSheetDimensions,
259
+ getGridDimensions,
222
260
  scrollTo,
223
- scrollToCell,
224
261
  scale,
225
262
  onChangeScale,
263
+ scaleRef,
226
264
  ]));
227
265
  };
@@ -1,5 +1,6 @@
1
1
  import type { GridChildrenProps } from "@rowsncolumns/grid";
2
2
  import React from "react";
3
+ import type { CanvasGridProps } from "../components/canvas-grid/typings";
3
4
  import type { SheetCoordinate, SheetRange } from "../types";
4
5
  import type { useEmbedsCharts } from "./use-embeds-charts";
5
6
  type UseGridChildrenProps = {
@@ -18,12 +19,14 @@ type UseGridChildrenProps = {
18
19
  isHeaderMenuInFrozenColumn?: boolean;
19
20
  popoverComponent: React.JSX.Element | null | undefined;
20
21
  cellExpandComponent: React.JSX.Element | null | undefined;
22
+ /** Trace precedents / dependents arrows; they scroll with the body. */
23
+ arrowComponents?: CanvasGridProps["arrowComponents"];
21
24
  popoverRange?: SheetRange | SheetCoordinate;
22
25
  gridLineWidth?: number;
23
26
  frozenColumns: number;
24
27
  frozenRows: number;
25
28
  };
26
- export declare const useGridChildren: ({ stickyEditor, editorComponent, chartComponents, embedComponents, slicerComponents, pivotPlaceholders, tableResizers, hiddenColumnMarkers, frozenHiddenColumnMarkers, hiddenRowMarkers, frozenHiddenRowMarkers, gridLineWidth, frozenColumns, frozenRows, headerMenuComponent, isHeaderMenuInFrozenColumn, popoverRange, popoverComponent, cellExpandComponent, }: UseGridChildrenProps) => (props: GridChildrenProps) => React.JSX.Element;
29
+ export declare const useGridChildren: ({ stickyEditor, editorComponent, chartComponents, embedComponents, slicerComponents, pivotPlaceholders, tableResizers, hiddenColumnMarkers, frozenHiddenColumnMarkers, hiddenRowMarkers, frozenHiddenRowMarkers, gridLineWidth, frozenColumns, frozenRows, headerMenuComponent, isHeaderMenuInFrozenColumn, popoverRange, popoverComponent, cellExpandComponent, arrowComponents, }: UseGridChildrenProps) => (props: GridChildrenProps) => React.JSX.Element;
27
30
  export declare const StyledGridChildren: ({ className, elevate, ...props }: React.HTMLAttributes<HTMLDivElement> & {
28
31
  elevate?: boolean;
29
32
  }) => React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"use-grid-children.d.ts","sourceRoot":"","sources":["../../../hooks/use-grid-children.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,KAAsB,MAAM,OAAO,CAAC;AAI3C,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,KAAK,oBAAoB,GAAG;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3C,eAAe,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACvE,eAAe,EACX,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,iBAAiB,CAAC,GACrD,IAAI,GACJ,SAAS,CAAC;IACd,gBAAgB,EACZ,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,kBAAkB,CAAC,GACtD,IAAI,GACJ,SAAS,CAAC;IACd,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IACtD,mBAAmB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,yBAAyB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAChE,gBAAgB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IACvD,sBAAsB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7D,mBAAmB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,gBAAgB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IACvD,mBAAmB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,YAAY,CAAC,EAAE,UAAU,GAAG,eAAe,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,oWAoB7B,oBAAoB,aAiBX,iBAAiB,sBAyI5B,CAAC;AA+BF,eAAO,MAAM,kBAAkB,GAAI,kCAIhC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,sBAS9D,CAAC"}
1
+ {"version":3,"file":"use-grid-children.d.ts","sourceRoot":"","sources":["../../../hooks/use-grid-children.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,KAAsB,MAAM,OAAO,CAAC;AAG3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEzE,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,KAAK,oBAAoB,GAAG;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3C,eAAe,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,iBAAiB,CAAC,CAAC;IACvE,eAAe,EACX,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,iBAAiB,CAAC,GACrD,IAAI,GACJ,SAAS,CAAC;IACd,gBAAgB,EACZ,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,kBAAkB,CAAC,GACtD,IAAI,GACJ,SAAS,CAAC;IACd,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IACtD,mBAAmB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,yBAAyB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAChE,gBAAgB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IACvD,sBAAsB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC7D,mBAAmB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,gBAAgB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IACvD,mBAAmB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,uEAAuE;IACvE,eAAe,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACrD,YAAY,CAAC,EAAE,UAAU,GAAG,eAAe,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,qXAqB7B,oBAAoB,aAiBX,iBAAiB,sBA2I5B,CAAC;AA+BF,eAAO,MAAM,kBAAkB,GAAI,kCAIhC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,sBAS9D,CAAC"}
@@ -2,7 +2,7 @@ import { cn } from "@rowsncolumns/ui";
2
2
  import React, { useCallback } from "react";
3
3
  import { useEditingCellCoordinate } from "../atoms";
4
4
  import { isSheetRange } from "../helpers";
5
- export const useGridChildren = ({ stickyEditor, editorComponent, chartComponents, embedComponents, slicerComponents, pivotPlaceholders, tableResizers, hiddenColumnMarkers, frozenHiddenColumnMarkers, hiddenRowMarkers, frozenHiddenRowMarkers, gridLineWidth = 1, frozenColumns, frozenRows, headerMenuComponent, isHeaderMenuInFrozenColumn, popoverRange, popoverComponent, cellExpandComponent, }) => {
5
+ export const useGridChildren = ({ stickyEditor, editorComponent, chartComponents, embedComponents, slicerComponents, pivotPlaceholders, tableResizers, hiddenColumnMarkers, frozenHiddenColumnMarkers, hiddenRowMarkers, frozenHiddenRowMarkers, gridLineWidth = 1, frozenColumns, frozenRows, headerMenuComponent, isHeaderMenuInFrozenColumn, popoverRange, popoverComponent, cellExpandComponent, arrowComponents, }) => {
6
6
  const editingCellCoordinate = useEditingCellCoordinate();
7
7
  // Quite a bit of logic for non sticky editor
8
8
  // Remove if majority dont use this
@@ -42,7 +42,8 @@ export const useGridChildren = ({ stickyEditor, editorComponent, chartComponents
42
42
  slicerComponents?.body,
43
43
  pivotPlaceholders,
44
44
  popoverPlacement === "body" ? popoverComponent : null,
45
- cellExpandComponent)),
45
+ cellExpandComponent,
46
+ arrowComponents)),
46
47
  React.createElement(StyledGridChildren, { style: {
47
48
  left: frozenColumnWidth + gridLineWidth,
48
49
  } },
@@ -104,6 +105,7 @@ export const useGridChildren = ({ stickyEditor, editorComponent, chartComponents
104
105
  popoverComponent,
105
106
  popoverPlacement,
106
107
  cellExpandComponent,
108
+ arrowComponents,
107
109
  ]);
108
110
  };
109
111
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"use-navigate-sheet-range.d.ts","sourceRoot":"","sources":["../../../hooks/use-navigate-sheet-range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EACV,eAAe,EACf,KAAK,EACL,UAAU,EACX,MAAM,2BAA2B,CAAC;AAMnC,MAAM,MAAM,uBAAuB,GAAG;IACpC,mBAAmB,EAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAC5D,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC1D,aAAa,EAAE,CACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,EACrB,YAAY,CAAC,EAAE,OAAO,EACtB,KAAK,CAAC,EAAE,KAAK,KACV,IAAI,CAAC;IACV,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,oEAKrC,uBAAuB,kBAGP,UAAU,YAAY,eAAe,SAsCvD,CAAC"}
1
+ {"version":3,"file":"use-navigate-sheet-range.d.ts","sourceRoot":"","sources":["../../../hooks/use-navigate-sheet-range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,KAAK,EACV,eAAe,EACf,KAAK,EACL,UAAU,EACX,MAAM,2BAA2B,CAAC;AAMnC,MAAM,MAAM,uBAAuB,GAAG;IACpC,mBAAmB,EAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;IAC5D,kBAAkB,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC;IAC1D,aAAa,EAAE,CACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,EACrB,YAAY,CAAC,EAAE,OAAO,EACtB,KAAK,CAAC,EAAE,KAAK,KACV,IAAI,CAAC;IACV,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,oEAKrC,uBAAuB,kBAGP,UAAU,YAAY,eAAe,SA4CvD,CAAC"}
@@ -14,8 +14,11 @@ export const useNavigateToSheetRange = ({ onChangeActiveSheet, onChangeSelection
14
14
  };
15
15
  // Switch to new sheet
16
16
  onChangeActiveSheet?.(sheetRange.sheetId);
17
- if (allowSelection && !isSheetRangeACell(sheetRange)) {
18
- onChangeSelections?.(sheetRange.sheetId, [{ range: sheetRange }]);
17
+ // A single-cell target clears the selection, as a click on that cell
18
+ // does; leaving the previous range selected would send the next
19
+ // paste there instead of to the cell the user navigated to.
20
+ if (allowSelection) {
21
+ onChangeSelections?.(sheetRange.sheetId, isSheetRangeACell(sheetRange) ? [] : [{ range: sheetRange }]);
19
22
  }
20
23
  // Set active cell
21
24
  if (allowSelection) {
@@ -1,4 +1,4 @@
1
- import type { HiddenType, ViewPortProps } from "@rowsncolumns/grid";
1
+ import type { HiddenType, LineHeightMode, ViewPortProps } from "@rowsncolumns/grid";
2
2
  import type { CanvasGridProps } from "../components/canvas-grid/typings";
3
3
  import type { AXIS, Color, TextFormatRun } from "../types";
4
4
  type GetColumnWidthOptions = {
@@ -41,6 +41,12 @@ export interface UseSizerProps {
41
41
  fontSize?: number;
42
42
  fontWeight?: string;
43
43
  fontStyle?: string;
44
+ /**
45
+ * Where the height of one line of text comes from — the font's own
46
+ * metrics (default) or the legacy `fontSize * 1.2` box. Must match the
47
+ * painter's `lineHeightMode` or wrapped rows clip (#1141).
48
+ */
49
+ lineHeightMode?: LineHeightMode;
44
50
  /**
45
51
  * Strategy used to calculate column width
46
52
  * lazy = visible rows
@@ -144,7 +150,7 @@ export interface GetCellDimensionsOptions {
144
150
  * TODO
145
151
  * Dynamically resize columns after user has scrolled down/view port changed ?
146
152
  */
147
- export declare const useSizer: ({ getTextFormat, getTextFormatRuns, initialVisibleRows, initialVisibleColumns, cellVerticalSpacing, cellHorizontalSpacing, minColumnDimension, minRowDimension, resizeStrategy, rowCount, columnCount, getDataRowCount, fontFamily, fontSize, fontWeight, fontStyle, frozenRows, frozenColumns, scale, isHiddenRow, isHiddenColumn, getTextValue, getSpacing, getViewPort, shouldWrapCell, columnWidth, getActualCellWidth, }: UseSizerProps) => {
153
+ export declare const useSizer: ({ getTextFormat, getTextFormatRuns, initialVisibleRows, initialVisibleColumns, cellVerticalSpacing, cellHorizontalSpacing, minColumnDimension, minRowDimension, resizeStrategy, rowCount, columnCount, getDataRowCount, fontFamily, fontSize, fontWeight, fontStyle, lineHeightMode, frozenRows, frozenColumns, scale, isHiddenRow, isHiddenColumn, getTextValue, getSpacing, getViewPort, shouldWrapCell, columnWidth, getActualCellWidth, }: UseSizerProps) => {
148
154
  getColumnWidth: (sheetId: number, columnIndex: number, options?: GetColumnWidthOptions) => number;
149
155
  getTextDimension: (sheetId: number, rowIndex: number, columnIndex: number, formattedValue: string | undefined, customTextFormat?: TextFormat) => {
150
156
  width: number;
@@ -1 +1 @@
1
- {"version":3,"file":"use-sizer.d.ts","sourceRoot":"","sources":["../../../hooks/use-sizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-sizer.d.ts","sourceRoot":"","sources":["../../../hooks/use-sizer.ts"],"names":[],"mappings":"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"}