@rowsncolumns/spreadsheet 10.5.2 → 10.5.5
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/dist/cjs/api/selections.d.ts +15 -1
- package/dist/cjs/api/selections.d.ts.map +1 -1
- package/dist/cjs/api/selections.js +12 -2
- package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/cjs/components/canvas-grid/index.js +88 -70
- package/dist/cjs/components/canvas-grid/typings.d.ts +40 -1
- package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell/cell-text-runs.d.ts +10 -3
- package/dist/cjs/components/cell/cell-text-runs.d.ts.map +1 -1
- package/dist/cjs/components/cell/cell-text-runs.js +21 -9
- package/dist/cjs/components/cell/index.d.ts.map +1 -1
- package/dist/cjs/components/cell/index.js +9 -5
- package/dist/cjs/components/cell/line-height.d.ts +22 -0
- package/dist/cjs/components/cell/line-height.d.ts.map +1 -0
- package/dist/cjs/components/cell/line-height.js +32 -0
- package/dist/cjs/components/cell/typings.d.ts +8 -2
- package/dist/cjs/components/cell/typings.d.ts.map +1 -1
- package/dist/cjs/hooks/export-range-tiles.d.ts +81 -0
- package/dist/cjs/hooks/export-range-tiles.d.ts.map +1 -0
- package/dist/cjs/hooks/export-range-tiles.js +171 -0
- package/dist/cjs/hooks/use-cell-renderer.d.ts +6 -1
- package/dist/cjs/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-cell-renderer.js +3 -2
- package/dist/cjs/hooks/use-copy-paste-cut.d.ts +5 -1
- package/dist/cjs/hooks/use-copy-paste-cut.d.ts.map +1 -1
- package/dist/cjs/hooks/use-copy-paste-cut.js +19 -5
- package/dist/cjs/hooks/use-editable.d.ts +8 -1
- package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editable.js +6 -1
- package/dist/cjs/hooks/use-editor-submit.d.ts +7 -1
- package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editor-submit.js +36 -16
- package/dist/cjs/hooks/use-export-range.d.ts +14 -6
- package/dist/cjs/hooks/use-export-range.d.ts.map +1 -1
- package/dist/cjs/hooks/use-export-range.js +240 -158
- package/dist/cjs/hooks/use-grid-children.d.ts +4 -1
- package/dist/cjs/hooks/use-grid-children.d.ts.map +1 -1
- package/dist/cjs/hooks/use-grid-children.js +4 -2
- package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/cjs/hooks/use-keyboard-handler.js +13 -6
- package/dist/cjs/hooks/use-navigate-sheet-range.d.ts.map +1 -1
- package/dist/cjs/hooks/use-navigate-sheet-range.js +5 -2
- package/dist/cjs/hooks/use-resize-observer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-resize-observer.js +43 -11
- package/dist/cjs/hooks/use-selection-renderer.d.ts +5 -1
- package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-renderer.js +8 -2
- package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection.js +4 -2
- package/dist/cjs/hooks/use-sizer.d.ts +8 -2
- package/dist/cjs/hooks/use-sizer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-sizer.js +54 -33
- package/dist/cjs/providers/spreadsheet-provider.d.ts +11 -2
- package/dist/cjs/providers/spreadsheet-provider.d.ts.map +1 -1
- package/dist/cjs/providers/spreadsheet-provider.js +7 -5
- package/dist/cjs/release-date.js +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/api/selections.d.ts +15 -1
- package/dist/esm/api/selections.d.ts.map +1 -1
- package/dist/esm/api/selections.js +11 -2
- package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/esm/components/canvas-grid/index.js +30 -12
- package/dist/esm/components/canvas-grid/typings.d.ts +40 -1
- package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/esm/components/cell/cell-text-runs.d.ts +10 -3
- package/dist/esm/components/cell/cell-text-runs.d.ts.map +1 -1
- package/dist/esm/components/cell/cell-text-runs.js +14 -9
- package/dist/esm/components/cell/index.d.ts.map +1 -1
- package/dist/esm/components/cell/index.js +7 -3
- package/dist/esm/components/cell/line-height.d.ts +22 -0
- package/dist/esm/components/cell/line-height.d.ts.map +1 -0
- package/dist/esm/components/cell/line-height.js +25 -0
- package/dist/esm/components/cell/typings.d.ts +8 -2
- package/dist/esm/components/cell/typings.d.ts.map +1 -1
- package/dist/esm/hooks/export-range-tiles.d.ts +81 -0
- package/dist/esm/hooks/export-range-tiles.d.ts.map +1 -0
- package/dist/esm/hooks/export-range-tiles.js +126 -0
- package/dist/esm/hooks/use-cell-renderer.d.ts +6 -1
- package/dist/esm/hooks/use-cell-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-cell-renderer.js +3 -2
- package/dist/esm/hooks/use-copy-paste-cut.d.ts +5 -1
- package/dist/esm/hooks/use-copy-paste-cut.d.ts.map +1 -1
- package/dist/esm/hooks/use-copy-paste-cut.js +17 -3
- package/dist/esm/hooks/use-editable.d.ts +8 -1
- package/dist/esm/hooks/use-editable.d.ts.map +1 -1
- package/dist/esm/hooks/use-editable.js +6 -1
- package/dist/esm/hooks/use-editor-submit.d.ts +7 -1
- package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/esm/hooks/use-editor-submit.js +24 -6
- package/dist/esm/hooks/use-export-range.d.ts +14 -6
- package/dist/esm/hooks/use-export-range.d.ts.map +1 -1
- package/dist/esm/hooks/use-export-range.js +158 -120
- package/dist/esm/hooks/use-grid-children.d.ts +4 -1
- package/dist/esm/hooks/use-grid-children.d.ts.map +1 -1
- package/dist/esm/hooks/use-grid-children.js +4 -2
- package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/esm/hooks/use-keyboard-handler.js +13 -6
- package/dist/esm/hooks/use-navigate-sheet-range.d.ts.map +1 -1
- package/dist/esm/hooks/use-navigate-sheet-range.js +5 -2
- package/dist/esm/hooks/use-resize-observer.d.ts.map +1 -1
- package/dist/esm/hooks/use-resize-observer.js +38 -9
- package/dist/esm/hooks/use-selection-renderer.d.ts +5 -1
- package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-renderer.js +8 -2
- package/dist/esm/hooks/use-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection.js +4 -2
- package/dist/esm/hooks/use-sizer.d.ts +8 -2
- package/dist/esm/hooks/use-sizer.d.ts.map +1 -1
- package/dist/esm/hooks/use-sizer.js +53 -31
- package/dist/esm/providers/spreadsheet-provider.d.ts +11 -2
- package/dist/esm/providers/spreadsheet-provider.d.ts.map +1 -1
- package/dist/esm/providers/spreadsheet-provider.js +8 -6
- package/dist/esm/release-date.js +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +6 -6
|
@@ -94,7 +94,7 @@ var planEntryFill = function (value, activeCell, selections) {
|
|
|
94
94
|
};
|
|
95
95
|
exports.planEntryFill = planEntryFill;
|
|
96
96
|
var useEditorSubmit = function (_a) {
|
|
97
|
-
var sheetId = _a.sheetId, onChangeActiveSheet = _a.onChangeActiveSheet, setActiveCell = _a.setActiveCell, onChange = _a.onChange, onComplete = _a.onComplete, getCommitValidation = _a.getCommitValidation, showValidationAlert = _a.showValidationAlert, selections = _a.selections, onChangeBatch = _a.onChangeBatch, formulaLocale = _a.formulaLocale;
|
|
97
|
+
var sheetId = _a.sheetId, onChangeActiveSheet = _a.onChangeActiveSheet, setActiveCell = _a.setActiveCell, onChange = _a.onChange, onComplete = _a.onComplete, getCommitValidation = _a.getCommitValidation, showValidationAlert = _a.showValidationAlert, selections = _a.selections, onChangeBatch = _a.onChangeBatch, batchHistory = _a.batchHistory, formulaLocale = _a.formulaLocale;
|
|
98
98
|
var _b = tslib_1.__read((0, formula_mode_atom_1.useFormulaMode)(), 2), formulaMode = _b[0], setFormulaMode = _b[1];
|
|
99
99
|
var _c = tslib_1.__read((0, editing_cell_atom_1.useEditingCell)(), 2), _ = _c[0], setEditingCellCoordinate = _c[1];
|
|
100
100
|
var setActiveEditor = (0, atoms_1.useSetActiveEditor)();
|
|
@@ -124,25 +124,44 @@ var useEditorSubmit = function (_a) {
|
|
|
124
124
|
onComplete === null || onComplete === void 0 ? void 0 : onComplete();
|
|
125
125
|
};
|
|
126
126
|
commit = function () {
|
|
127
|
-
var
|
|
128
|
-
var
|
|
129
|
-
|
|
127
|
+
var _a;
|
|
128
|
+
var writeActiveCell = function () {
|
|
129
|
+
return onChange === null || onChange === void 0 ? void 0 : onChange(editingSheetId, activeCell, value, textFormatRuns, previousValue, isDirty);
|
|
130
|
+
};
|
|
130
131
|
// Ctrl+Enter: the same entry into every other selected cell (formulas shift per cell).
|
|
131
132
|
// Explicit per-cell values — never a read-back of the cell just written — so the spread
|
|
132
|
-
// is correct even when the engine applies `onChange` asynchronously (legacy setState)
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
133
|
+
// is correct even when the engine applies `onChange` asynchronously (legacy setState),
|
|
134
|
+
// and so the writes can share one history batch (the rnc batcher defers them all).
|
|
135
|
+
var fillWrites = (options === null || options === void 0 ? void 0 : options.fillSelection) && onChangeBatch
|
|
136
|
+
? (0, exports.planEntryFill)(value, activeCell, (_a = selectionsRef.current) !== null && _a !== void 0 ? _a : [])
|
|
137
|
+
: [];
|
|
138
|
+
if (fillWrites.length === 0) {
|
|
139
|
+
writeActiveCell();
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
// One gesture, one undo entry: the active cell and every rectangle together.
|
|
143
|
+
var writeAll = function () {
|
|
144
|
+
var e_3, _a;
|
|
145
|
+
writeActiveCell();
|
|
142
146
|
try {
|
|
143
|
-
|
|
147
|
+
for (var fillWrites_1 = tslib_1.__values(fillWrites), fillWrites_1_1 = fillWrites_1.next(); !fillWrites_1_1.done; fillWrites_1_1 = fillWrites_1.next()) {
|
|
148
|
+
var write = fillWrites_1_1.value;
|
|
149
|
+
onChangeBatch === null || onChangeBatch === void 0 ? void 0 : onChangeBatch(editingSheetId, write.range, write.values);
|
|
150
|
+
}
|
|
144
151
|
}
|
|
145
|
-
|
|
152
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
153
|
+
finally {
|
|
154
|
+
try {
|
|
155
|
+
if (fillWrites_1_1 && !fillWrites_1_1.done && (_a = fillWrites_1.return)) _a.call(fillWrites_1);
|
|
156
|
+
}
|
|
157
|
+
finally { if (e_3) throw e_3.error; }
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
if (batchHistory) {
|
|
161
|
+
batchHistory(writeAll);
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
writeAll();
|
|
146
165
|
}
|
|
147
166
|
}
|
|
148
167
|
// Switch to active sheet
|
|
@@ -208,6 +227,7 @@ var useEditorSubmit = function (_a) {
|
|
|
208
227
|
getCommitValidation,
|
|
209
228
|
showValidationAlert,
|
|
210
229
|
onChangeBatch,
|
|
230
|
+
batchHistory,
|
|
211
231
|
formulaLocale,
|
|
212
232
|
]);
|
|
213
233
|
};
|
|
@@ -1,24 +1,32 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ScrollCoords } from "@rowsncolumns/grid";
|
|
2
2
|
import type { Layer } from "konva/lib/Layer";
|
|
3
3
|
import type { CanvasGridMethods, CanvasGridProps, ExportFormats } from "../components/canvas-grid/typings";
|
|
4
4
|
import type { SheetRange } from "../types";
|
|
5
|
+
export type GridDimensions = {
|
|
6
|
+
containerWidth: number;
|
|
7
|
+
containerHeight: number;
|
|
8
|
+
estimatedTotalWidth: number;
|
|
9
|
+
estimatedTotalHeight: number;
|
|
10
|
+
};
|
|
5
11
|
export type UseExportRangeProps = {
|
|
6
12
|
sheetId: number;
|
|
7
13
|
gridLineWidth: number;
|
|
8
14
|
cellBackgroundColor: string;
|
|
15
|
+
/** Frozen row count as the grid sees it (the header row included). */
|
|
16
|
+
frozenRows: number;
|
|
17
|
+
/** Frozen column count as the grid sees it (the header column included). */
|
|
18
|
+
frozenColumns: number;
|
|
9
19
|
getCanvasLayers: () => Layer[] | undefined;
|
|
10
20
|
getRowHeaderCanvasLayer: () => Layer[] | undefined;
|
|
11
21
|
getColumnHeaderCanvasLayer: () => Layer[] | undefined;
|
|
12
22
|
getSheetName: CanvasGridProps["getSheetName"];
|
|
13
|
-
getCellOffsetFromCoords(cell: CellInterface): CellPosition | undefined;
|
|
14
23
|
getR1C1AddressFromSelection: CanvasGridMethods["getR1C1AddressFromSelection"];
|
|
15
24
|
getScrollPosition(): ScrollCoords;
|
|
16
|
-
getViewPort(): ViewPortProps;
|
|
17
25
|
getRowOffset(rowIndex: number): number;
|
|
18
26
|
getColumnOffset(columnIndex: number): number;
|
|
19
27
|
getSheetDimensions(): readonly [number, number];
|
|
20
|
-
|
|
21
|
-
|
|
28
|
+
getGridDimensions(): GridDimensions | undefined;
|
|
29
|
+
scrollTo(scrollCoords: ScrollCoords, immediate?: boolean): void;
|
|
22
30
|
scale?: number;
|
|
23
31
|
onChangeScale?(scale: number): void;
|
|
24
32
|
};
|
|
@@ -32,5 +40,5 @@ export type ExportRangeOutput = {
|
|
|
32
40
|
(range: SheetRange, options: ExportRangeOptions<"clipboard">): Promise<void>;
|
|
33
41
|
(range: SheetRange, options?: ExportRangeOptions): Promise<ArrayBuffer | Blob | void> | undefined;
|
|
34
42
|
};
|
|
35
|
-
export declare const useExportRange: ({ sheetId, gridLineWidth, cellBackgroundColor, getCanvasLayers, getColumnHeaderCanvasLayer, getRowHeaderCanvasLayer, getSheetName,
|
|
43
|
+
export declare const useExportRange: ({ sheetId, gridLineWidth, cellBackgroundColor, frozenRows, frozenColumns, getCanvasLayers, getColumnHeaderCanvasLayer, getRowHeaderCanvasLayer, getSheetName, getR1C1AddressFromSelection, getScrollPosition, getRowOffset, getColumnOffset, getSheetDimensions, getGridDimensions, scrollTo, scale, onChangeScale, }: UseExportRangeProps) => ExportRangeOutput;
|
|
36
44
|
//# sourceMappingURL=use-export-range.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-export-range.d.ts","sourceRoot":"","sources":["../../../hooks/use-export-range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"use-export-range.d.ts","sourceRoot":"","sources":["../../../hooks/use-export-range.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAG7C,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,aAAa,EACd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAU3C,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,KAAK,EAAE,GAAG,SAAS,CAAC;IAC3C,uBAAuB,EAAE,MAAM,KAAK,EAAE,GAAG,SAAS,CAAC;IACnD,0BAA0B,EAAE,MAAM,KAAK,EAAE,GAAG,SAAS,CAAC;IACtD,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;IAC9C,2BAA2B,EAAE,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;IAC9E,iBAAiB,IAAI,YAAY,CAAC;IAClC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC;IACvC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC;IAC7C,kBAAkB,IAAI,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,iBAAiB,IAAI,cAAc,GAAG,SAAS,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,IAAI;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAC5C,OAAO,CAAC,WAAW,GAAG,IAAI,GAAG,IAAI,CAAC,GAClC,SAAS,CAAC;CACf,CAAC;AA2EF,eAAO,MAAM,cAAc,GAAI,uTAmB5B,mBAAmB,KAAG,iBAoPxB,CAAC"}
|
|
@@ -3,54 +3,107 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useExportRange = void 0;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
var grid_1 = require("@rowsncolumns/grid");
|
|
6
|
-
var grid_2 = require("@rowsncolumns/grid");
|
|
7
6
|
var react_1 = require("react");
|
|
7
|
+
var export_range_tiles_1 = require("./export-range-tiles");
|
|
8
8
|
var use_callback_ref_1 = require("./use-callback-ref");
|
|
9
|
+
var use_stable_ref_1 = require("./use-stable-ref");
|
|
10
|
+
/** The export zooms out this far to fit a range in the viewport before it tiles. */
|
|
11
|
+
var MIN_EXPORT_SCALE = 0.25;
|
|
12
|
+
/**
|
|
13
|
+
* Frames to keep waiting for a repaint that never comes (a host that ignores
|
|
14
|
+
* `onChangeScale`, a scroll the grid clamped elsewhere). The capture then goes
|
|
15
|
+
* on from whatever the grid did land on, so the output stays right.
|
|
16
|
+
*/
|
|
17
|
+
var PAINT_WAIT_FRAME_BUDGET = 120;
|
|
18
|
+
/** A scrollbar-driven scroll can settle a hair off the requested offset on sheets taller than the scrollbar can address. */
|
|
19
|
+
var SCROLL_TOLERANCE = 2;
|
|
20
|
+
/**
|
|
21
|
+
* Resolves once the layer has repainted with `ready()` holding and a whole
|
|
22
|
+
* animation frame has then passed without another paint. The grid's canvas is
|
|
23
|
+
* drawn by react-konva's batched draw on the frame after a React commit, and a
|
|
24
|
+
* windowed engine folds the rows of a freshly scrolled-to viewport in a second
|
|
25
|
+
* commit right behind the first — the quiet frame is what lets that second
|
|
26
|
+
* paint land before the copy, instead of a fixed number of frames that may or
|
|
27
|
+
* may not cover it. Paints from before `ready()` held do not count.
|
|
28
|
+
*/
|
|
29
|
+
var waitForPaint = function (layer, ready) {
|
|
30
|
+
return new Promise(function (resolve) {
|
|
31
|
+
var paintedThisFrame = false;
|
|
32
|
+
var paintedWhileReady = false;
|
|
33
|
+
var frames = 0;
|
|
34
|
+
var onDraw = function () {
|
|
35
|
+
paintedThisFrame = true;
|
|
36
|
+
};
|
|
37
|
+
layer.on("draw", onDraw);
|
|
38
|
+
var finish = function () {
|
|
39
|
+
layer.off("draw", onDraw);
|
|
40
|
+
resolve();
|
|
41
|
+
};
|
|
42
|
+
var tick = function () {
|
|
43
|
+
frames += 1;
|
|
44
|
+
if (!ready()) {
|
|
45
|
+
paintedThisFrame = false;
|
|
46
|
+
paintedWhileReady = false;
|
|
47
|
+
}
|
|
48
|
+
else if (paintedThisFrame) {
|
|
49
|
+
paintedThisFrame = false;
|
|
50
|
+
paintedWhileReady = true;
|
|
51
|
+
}
|
|
52
|
+
else if (paintedWhileReady) {
|
|
53
|
+
finish();
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
if (frames >= PAINT_WAIT_FRAME_BUDGET) {
|
|
57
|
+
finish();
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
requestAnimationFrame(tick);
|
|
61
|
+
};
|
|
62
|
+
requestAnimationFrame(tick);
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
var isAtScroll = function (position, target) {
|
|
66
|
+
return Math.abs(position.scrollTop - target.scrollTop) <= SCROLL_TOLERANCE &&
|
|
67
|
+
Math.abs(position.scrollLeft - target.scrollLeft) <= SCROLL_TOLERANCE;
|
|
68
|
+
};
|
|
69
|
+
var getFileExtension = function (fmt) {
|
|
70
|
+
switch (fmt) {
|
|
71
|
+
case "image/jpeg":
|
|
72
|
+
case "image/jpg":
|
|
73
|
+
return ".jpg";
|
|
74
|
+
case "image/webp":
|
|
75
|
+
return ".webp";
|
|
76
|
+
case "image/png":
|
|
77
|
+
default:
|
|
78
|
+
return ".png";
|
|
79
|
+
}
|
|
80
|
+
};
|
|
9
81
|
var useExportRange = function (_a) {
|
|
10
|
-
var sheetId = _a.sheetId, gridLineWidth = _a.gridLineWidth, cellBackgroundColor = _a.cellBackgroundColor,
|
|
82
|
+
var sheetId = _a.sheetId, gridLineWidth = _a.gridLineWidth, cellBackgroundColor = _a.cellBackgroundColor, frozenRows = _a.frozenRows, frozenColumns = _a.frozenColumns, getCanvasLayers = _a.getCanvasLayers, getColumnHeaderCanvasLayer = _a.getColumnHeaderCanvasLayer, getRowHeaderCanvasLayer = _a.getRowHeaderCanvasLayer, getSheetName = _a.getSheetName, getR1C1AddressFromSelection = _a.getR1C1AddressFromSelection, getScrollPosition = _a.getScrollPosition, getRowOffset = _a.getRowOffset, getColumnOffset = _a.getColumnOffset, getSheetDimensions = _a.getSheetDimensions, getGridDimensions = _a.getGridDimensions, scrollTo = _a.scrollTo, scale = _a.scale, onChangeScale = _a.onChangeScale;
|
|
83
|
+
// The capture spans renders; this is how it sees the scale the host applied.
|
|
84
|
+
var scaleRef = (0, use_stable_ref_1.useStableRef)(scale);
|
|
11
85
|
return (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function (range, options) {
|
|
12
86
|
var layers = getCanvasLayers();
|
|
13
|
-
|
|
87
|
+
var layer = layers === null || layers === void 0 ? void 0 : layers[0];
|
|
88
|
+
if (!layer)
|
|
14
89
|
return undefined;
|
|
15
90
|
var _a = options || {}, filename = _a.filename, format = _a.format, includeHeaders = _a.includeHeaders;
|
|
16
91
|
var baseScale = scale !== null && scale !== void 0 ? scale : 1;
|
|
17
|
-
var
|
|
18
|
-
var waitForPaint = function () {
|
|
19
|
-
return new Promise(function (resolve) {
|
|
20
|
-
requestAnimationFrame(function () {
|
|
21
|
-
requestAnimationFrame(function () { return resolve(); });
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
var normalizeRangeStart = function (rangeValue) { return (tslib_1.__assign(tslib_1.__assign({}, rangeValue), { startRowIndex: Math.max(1, rangeValue.startRowIndex), startColumnIndex: Math.max(1, rangeValue.startColumnIndex) })); };
|
|
26
|
-
var isStartInViewport = function (viewport, normalizedRange) {
|
|
27
|
-
return normalizedRange.startRowIndex >= viewport.visibleRowStartIndex &&
|
|
28
|
-
normalizedRange.startRowIndex <= viewport.visibleRowStopIndex &&
|
|
29
|
-
normalizedRange.startColumnIndex >=
|
|
30
|
-
viewport.visibleColumnStartIndex &&
|
|
31
|
-
normalizedRange.startColumnIndex <= viewport.visibleColumnStopIndex;
|
|
32
|
-
};
|
|
33
|
-
var isRangeInViewport = function (viewport, normalizedRange) {
|
|
34
|
-
return normalizedRange.startRowIndex >= viewport.visibleRowStartIndex &&
|
|
35
|
-
normalizedRange.endRowIndex <= viewport.visibleRowStopIndex &&
|
|
36
|
-
normalizedRange.startColumnIndex >=
|
|
37
|
-
viewport.visibleColumnStartIndex &&
|
|
38
|
-
normalizedRange.endColumnIndex <= viewport.visibleColumnStopIndex;
|
|
39
|
-
};
|
|
92
|
+
var normalizedRange = tslib_1.__assign(tslib_1.__assign({}, range), { startRowIndex: Math.max(1, range.startRowIndex), startColumnIndex: Math.max(1, range.startColumnIndex) });
|
|
40
93
|
var exportRangeAsync = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
|
|
41
|
-
var initialScrollCoords, nextScale,
|
|
42
|
-
var
|
|
43
|
-
|
|
44
|
-
|
|
94
|
+
var initialScrollCoords, nextScale, startX, endX, startY, endY, currentWidth, currentHeight, _a, viewWidth, viewHeight, unscaledWidth, unscaledHeight, fitScale, minScale, dimensions, headerWidth, headerHeight, rangeLeft, rangeRight, rangeTop, rangeBottom, scrollAtPlan, stops, sheetName, dpr_1, width, height, finalFileName, canvases_1, tempCanvas_1, tempCtx_1, copyPiece, _loop_1, stops_1, stops_1_1, stop_1, e_1_1, dataURL, anchor, shouldRestoreScale, current;
|
|
95
|
+
var e_1, _b;
|
|
96
|
+
var _c, _d, _e, _f, _g, _h;
|
|
97
|
+
return tslib_1.__generator(this, function (_j) {
|
|
98
|
+
switch (_j.label) {
|
|
45
99
|
case 0:
|
|
46
100
|
initialScrollCoords = getScrollPosition();
|
|
47
101
|
nextScale = baseScale;
|
|
48
|
-
didScroll = false;
|
|
49
102
|
if (onChangeScale) {
|
|
50
|
-
startX = getColumnOffset(
|
|
51
|
-
endX = getColumnOffset(
|
|
52
|
-
startY = getRowOffset(
|
|
53
|
-
endY = getRowOffset(
|
|
103
|
+
startX = getColumnOffset(normalizedRange.startColumnIndex);
|
|
104
|
+
endX = getColumnOffset(normalizedRange.endColumnIndex + 1);
|
|
105
|
+
startY = getRowOffset(normalizedRange.startRowIndex);
|
|
106
|
+
endY = getRowOffset(normalizedRange.endRowIndex + 1);
|
|
54
107
|
currentWidth = Math.max(endX - startX, 0);
|
|
55
108
|
currentHeight = Math.max(endY - startY, 0);
|
|
56
109
|
_a = tslib_1.__read(getSheetDimensions(), 2), viewWidth = _a[0], viewHeight = _a[1];
|
|
@@ -58,124 +111,148 @@ var useExportRange = function (_a) {
|
|
|
58
111
|
unscaledWidth = currentWidth / baseScale;
|
|
59
112
|
unscaledHeight = currentHeight / baseScale;
|
|
60
113
|
fitScale = Math.min(viewWidth / unscaledWidth, viewHeight / unscaledHeight, baseScale);
|
|
61
|
-
minScale = Math.min(
|
|
114
|
+
minScale = Math.min(MIN_EXPORT_SCALE, baseScale);
|
|
62
115
|
nextScale = Math.min(Math.max(fitScale, minScale), baseScale);
|
|
63
116
|
}
|
|
64
117
|
}
|
|
65
|
-
|
|
118
|
+
_j.label = 1;
|
|
66
119
|
case 1:
|
|
67
|
-
|
|
120
|
+
_j.trys.push([1, , 14, 19]);
|
|
68
121
|
if (!(onChangeScale && nextScale !== baseScale)) return [3 /*break*/, 3];
|
|
69
122
|
onChangeScale(nextScale);
|
|
70
|
-
return [4 /*yield*/, waitForPaint()];
|
|
123
|
+
return [4 /*yield*/, waitForPaint(layer, function () { return scaleRef.current === nextScale; })];
|
|
71
124
|
case 2:
|
|
72
|
-
|
|
73
|
-
|
|
125
|
+
_j.sent();
|
|
126
|
+
_j.label = 3;
|
|
74
127
|
case 3:
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
scrollToCell === null || scrollToCell === void 0 ? void 0 : scrollToCell({
|
|
79
|
-
rowIndex: normalizedRange.startRowIndex,
|
|
80
|
-
columnIndex: normalizedRange.startColumnIndex,
|
|
81
|
-
}, grid_1.Align.start);
|
|
82
|
-
didScroll = true;
|
|
83
|
-
return [4 /*yield*/, waitForPaint()];
|
|
84
|
-
case 4:
|
|
85
|
-
_q.sent();
|
|
86
|
-
_q.label = 5;
|
|
87
|
-
case 5:
|
|
88
|
-
viewportAfterStart = getViewPort();
|
|
89
|
-
if (!!isRangeInViewport(viewportAfterStart, normalizedRange)) return [3 /*break*/, 7];
|
|
90
|
-
scrollToCell === null || scrollToCell === void 0 ? void 0 : scrollToCell({
|
|
91
|
-
rowIndex: normalizedRange.endRowIndex,
|
|
92
|
-
columnIndex: normalizedRange.endColumnIndex,
|
|
93
|
-
}, grid_1.Align.end);
|
|
94
|
-
didScroll = true;
|
|
95
|
-
return [4 /*yield*/, waitForPaint()];
|
|
96
|
-
case 6:
|
|
97
|
-
_q.sent();
|
|
98
|
-
_q.label = 7;
|
|
99
|
-
case 7:
|
|
100
|
-
scrollCoords = getScrollPosition();
|
|
101
|
-
tl = getCellOffsetFromCoords({
|
|
102
|
-
rowIndex: normalizedRange.startRowIndex,
|
|
103
|
-
columnIndex: normalizedRange.startColumnIndex,
|
|
104
|
-
});
|
|
105
|
-
br = getCellOffsetFromCoords({
|
|
106
|
-
rowIndex: normalizedRange.endRowIndex,
|
|
107
|
-
columnIndex: normalizedRange.endColumnIndex,
|
|
108
|
-
});
|
|
109
|
-
// @ts-ignore
|
|
110
|
-
tl.x -= scrollCoords.scrollLeft;
|
|
111
|
-
// @ts-ignore
|
|
112
|
-
tl.y -= scrollCoords.scrollTop;
|
|
113
|
-
// @ts-ignore
|
|
114
|
-
br.x -= scrollCoords.scrollLeft;
|
|
115
|
-
// @ts-ignore
|
|
116
|
-
br.y -= scrollCoords.scrollTop;
|
|
117
|
-
sheetName = getSheetName === null || getSheetName === void 0 ? void 0 : getSheetName((_b = range.sheetId) !== null && _b !== void 0 ? _b : sheetId);
|
|
118
|
-
dpr = (0, grid_2.getDevicePixelRatio)();
|
|
119
|
-
baseX = (_c = tl === null || tl === void 0 ? void 0 : tl.x) !== null && _c !== void 0 ? _c : 0;
|
|
120
|
-
baseY = (_d = tl === null || tl === void 0 ? void 0 : tl.y) !== null && _d !== void 0 ? _d : 0;
|
|
121
|
-
baseWidth = ((_e = br === null || br === void 0 ? void 0 : br.x) !== null && _e !== void 0 ? _e : 0) - baseX + ((_f = br === null || br === void 0 ? void 0 : br.width) !== null && _f !== void 0 ? _f : 0) + gridLineWidth;
|
|
122
|
-
baseHeight = ((_g = br === null || br === void 0 ? void 0 : br.y) !== null && _g !== void 0 ? _g : 0) - baseY + ((_h = br === null || br === void 0 ? void 0 : br.height) !== null && _h !== void 0 ? _h : 0) + gridLineWidth;
|
|
128
|
+
dimensions = getGridDimensions();
|
|
129
|
+
if (!dimensions)
|
|
130
|
+
return [2 /*return*/, undefined];
|
|
123
131
|
headerWidth = includeHeaders ? getColumnOffset(1) : 0;
|
|
124
132
|
headerHeight = includeHeaders ? getRowOffset(1) : 0;
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
133
|
+
rangeLeft = getColumnOffset(normalizedRange.startColumnIndex);
|
|
134
|
+
rangeRight = getColumnOffset(normalizedRange.endColumnIndex + 1) +
|
|
135
|
+
gridLineWidth;
|
|
136
|
+
rangeTop = getRowOffset(normalizedRange.startRowIndex);
|
|
137
|
+
rangeBottom = getRowOffset(normalizedRange.endRowIndex + 1) + gridLineWidth;
|
|
138
|
+
scrollAtPlan = getScrollPosition();
|
|
139
|
+
stops = (0, export_range_tiles_1.planExportStops)({
|
|
140
|
+
x: {
|
|
141
|
+
rangeStart: rangeLeft,
|
|
142
|
+
rangeEnd: rangeRight,
|
|
143
|
+
frozenSize: getColumnOffset(frozenColumns),
|
|
144
|
+
viewportSize: dimensions.containerWidth,
|
|
145
|
+
maxScroll: Math.max(0, dimensions.estimatedTotalWidth - dimensions.containerWidth),
|
|
146
|
+
currentScroll: scrollAtPlan.scrollLeft,
|
|
147
|
+
headerSize: headerWidth,
|
|
148
|
+
},
|
|
149
|
+
y: {
|
|
150
|
+
rangeStart: rangeTop,
|
|
151
|
+
rangeEnd: rangeBottom,
|
|
152
|
+
frozenSize: getRowOffset(frozenRows),
|
|
153
|
+
viewportSize: dimensions.containerHeight,
|
|
154
|
+
maxScroll: Math.max(0, dimensions.estimatedTotalHeight - dimensions.containerHeight),
|
|
155
|
+
currentScroll: scrollAtPlan.scrollTop,
|
|
156
|
+
headerSize: headerHeight,
|
|
157
|
+
},
|
|
158
|
+
});
|
|
159
|
+
sheetName = getSheetName === null || getSheetName === void 0 ? void 0 : getSheetName((_c = range.sheetId) !== null && _c !== void 0 ? _c : sheetId);
|
|
160
|
+
dpr_1 = (0, grid_1.getDevicePixelRatio)();
|
|
161
|
+
width = rangeRight - rangeLeft + headerWidth;
|
|
162
|
+
height = rangeBottom - rangeTop + headerHeight;
|
|
163
|
+
finalFileName = filename !== null && filename !== void 0 ? filename : (_d = getR1C1AddressFromSelection === null || getR1C1AddressFromSelection === void 0 ? void 0 : getR1C1AddressFromSelection(normalizedRange, sheetName)) === null || _d === void 0 ? void 0 : _d.substring(1);
|
|
164
|
+
canvases_1 = {
|
|
165
|
+
body: layer.getCanvas()._canvas,
|
|
166
|
+
rowHeader: includeHeaders
|
|
167
|
+
? (_f = (_e = getRowHeaderCanvasLayer()) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.getCanvas()._canvas
|
|
168
|
+
: null,
|
|
169
|
+
columnHeader: includeHeaders
|
|
170
|
+
? (_h = (_g = getColumnHeaderCanvasLayer()) === null || _g === void 0 ? void 0 : _g[0]) === null || _h === void 0 ? void 0 : _h.getCanvas()._canvas
|
|
171
|
+
: null,
|
|
141
172
|
};
|
|
142
|
-
|
|
143
|
-
rowHeaderCanvas = includeHeaders
|
|
144
|
-
? (_m = (_l = getRowHeaderCanvasLayer()) === null || _l === void 0 ? void 0 : _l[0]) === null || _m === void 0 ? void 0 : _m.getCanvas()._canvas
|
|
145
|
-
: null;
|
|
146
|
-
columnHeaderCanvas = includeHeaders
|
|
147
|
-
? (_p = (_o = getColumnHeaderCanvasLayer()) === null || _o === void 0 ? void 0 : _o[0]) === null || _p === void 0 ? void 0 : _p.getCanvas()._canvas
|
|
148
|
-
: null;
|
|
149
|
-
if (!bodyCanvas)
|
|
173
|
+
if (!canvases_1.body)
|
|
150
174
|
return [2 /*return*/, undefined];
|
|
151
|
-
canvas = bodyCanvas;
|
|
152
175
|
tempCanvas_1 = document.createElement("canvas");
|
|
153
|
-
tempCanvas_1.width = width *
|
|
154
|
-
tempCanvas_1.height = height *
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
intermediateCtx = intermediateCanvas.getContext("2d");
|
|
160
|
-
bodySourceX = baseX;
|
|
161
|
-
bodySourceY = baseY;
|
|
162
|
-
if (intermediateCtx) {
|
|
163
|
-
intermediateCtx.drawImage(canvas, bodySourceX * dpr, bodySourceY * dpr, baseWidth * dpr, baseHeight * dpr, destX * dpr, destY * dpr, baseWidth * dpr, baseHeight * dpr);
|
|
176
|
+
tempCanvas_1.width = width * dpr_1;
|
|
177
|
+
tempCanvas_1.height = height * dpr_1;
|
|
178
|
+
tempCtx_1 = tempCanvas_1.getContext("2d");
|
|
179
|
+
if (tempCtx_1) {
|
|
180
|
+
tempCtx_1.fillStyle = cellBackgroundColor;
|
|
181
|
+
tempCtx_1.fillRect(0, 0, tempCanvas_1.width, tempCanvas_1.height);
|
|
164
182
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
183
|
+
copyPiece = function (piece, landed) {
|
|
184
|
+
var source = canvases_1[piece.canvas];
|
|
185
|
+
if (!tempCtx_1 || !source)
|
|
186
|
+
return;
|
|
187
|
+
var sx = (0, export_range_tiles_1.sourceOffset)(piece.x, landed.scrollLeft);
|
|
188
|
+
var sy = (0, export_range_tiles_1.sourceOffset)(piece.y, landed.scrollTop);
|
|
189
|
+
tempCtx_1.drawImage(source, sx * dpr_1, sy * dpr_1, piece.x.size * dpr_1, piece.y.size * dpr_1, piece.x.dest * dpr_1, piece.y.dest * dpr_1, piece.x.size * dpr_1, piece.y.size * dpr_1);
|
|
190
|
+
};
|
|
191
|
+
_loop_1 = function (stop_1) {
|
|
192
|
+
var target, landed, _k, _l, piece;
|
|
193
|
+
var e_2, _m;
|
|
194
|
+
return tslib_1.__generator(this, function (_o) {
|
|
195
|
+
switch (_o.label) {
|
|
196
|
+
case 0:
|
|
197
|
+
target = {
|
|
198
|
+
scrollTop: stop_1.scrollTop,
|
|
199
|
+
scrollLeft: stop_1.scrollLeft,
|
|
200
|
+
};
|
|
201
|
+
if (!!isAtScroll(getScrollPosition(), target)) return [3 /*break*/, 2];
|
|
202
|
+
scrollTo(target, true);
|
|
203
|
+
return [4 /*yield*/, waitForPaint(layer, function () {
|
|
204
|
+
return isAtScroll(getScrollPosition(), target);
|
|
205
|
+
})];
|
|
206
|
+
case 1:
|
|
207
|
+
_o.sent();
|
|
208
|
+
_o.label = 2;
|
|
209
|
+
case 2:
|
|
210
|
+
landed = getScrollPosition();
|
|
211
|
+
try {
|
|
212
|
+
for (_k = (e_2 = void 0, tslib_1.__values(stop_1.pieces)), _l = _k.next(); !_l.done; _l = _k.next()) {
|
|
213
|
+
piece = _l.value;
|
|
214
|
+
copyPiece(piece, landed);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
218
|
+
finally {
|
|
219
|
+
try {
|
|
220
|
+
if (_l && !_l.done && (_m = _k.return)) _m.call(_k);
|
|
221
|
+
}
|
|
222
|
+
finally { if (e_2) throw e_2.error; }
|
|
223
|
+
}
|
|
224
|
+
return [2 /*return*/];
|
|
175
225
|
}
|
|
176
|
-
}
|
|
226
|
+
});
|
|
227
|
+
};
|
|
228
|
+
_j.label = 4;
|
|
229
|
+
case 4:
|
|
230
|
+
_j.trys.push([4, 9, 10, 11]);
|
|
231
|
+
stops_1 = tslib_1.__values(stops), stops_1_1 = stops_1.next();
|
|
232
|
+
_j.label = 5;
|
|
233
|
+
case 5:
|
|
234
|
+
if (!!stops_1_1.done) return [3 /*break*/, 8];
|
|
235
|
+
stop_1 = stops_1_1.value;
|
|
236
|
+
return [5 /*yield**/, _loop_1(stop_1)];
|
|
237
|
+
case 6:
|
|
238
|
+
_j.sent();
|
|
239
|
+
_j.label = 7;
|
|
240
|
+
case 7:
|
|
241
|
+
stops_1_1 = stops_1.next();
|
|
242
|
+
return [3 /*break*/, 5];
|
|
243
|
+
case 8: return [3 /*break*/, 11];
|
|
244
|
+
case 9:
|
|
245
|
+
e_1_1 = _j.sent();
|
|
246
|
+
e_1 = { error: e_1_1 };
|
|
247
|
+
return [3 /*break*/, 11];
|
|
248
|
+
case 10:
|
|
249
|
+
try {
|
|
250
|
+
if (stops_1_1 && !stops_1_1.done && (_b = stops_1.return)) _b.call(stops_1);
|
|
177
251
|
}
|
|
178
|
-
if (
|
|
252
|
+
finally { if (e_1) throw e_1.error; }
|
|
253
|
+
return [7 /*endfinally*/];
|
|
254
|
+
case 11:
|
|
255
|
+
if (!(format === "clipboard")) return [3 /*break*/, 13];
|
|
179
256
|
return [4 /*yield*/, new Promise(function (resolve, reject) {
|
|
180
257
|
tempCanvas_1.toBlob(function (blob) {
|
|
181
258
|
if (!blob) {
|
|
@@ -186,10 +263,10 @@ var useExportRange = function (_a) {
|
|
|
186
263
|
navigator.clipboard.write([item]).then(resolve).catch(reject);
|
|
187
264
|
}, "image/png");
|
|
188
265
|
})];
|
|
189
|
-
case
|
|
190
|
-
|
|
266
|
+
case 12:
|
|
267
|
+
_j.sent();
|
|
191
268
|
return [2 /*return*/, undefined];
|
|
192
|
-
case
|
|
269
|
+
case 13:
|
|
193
270
|
if (format === "blob") {
|
|
194
271
|
return [2 /*return*/, new Promise(function (resolve, reject) {
|
|
195
272
|
tempCanvas_1.toBlob(function (blob) {
|
|
@@ -214,23 +291,27 @@ var useExportRange = function (_a) {
|
|
|
214
291
|
blob === null || blob === void 0 ? void 0 : blob.arrayBuffer().then(resolve);
|
|
215
292
|
});
|
|
216
293
|
})];
|
|
217
|
-
case
|
|
294
|
+
case 14:
|
|
218
295
|
shouldRestoreScale = onChangeScale && nextScale !== baseScale;
|
|
219
|
-
if (!shouldRestoreScale) return [3 /*break*/,
|
|
296
|
+
if (!shouldRestoreScale) return [3 /*break*/, 16];
|
|
220
297
|
onChangeScale(baseScale);
|
|
221
|
-
return [4 /*yield*/, waitForPaint()];
|
|
222
|
-
case
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
case
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
case
|
|
298
|
+
return [4 /*yield*/, waitForPaint(layer, function () { return scaleRef.current === baseScale; })];
|
|
299
|
+
case 15:
|
|
300
|
+
_j.sent();
|
|
301
|
+
_j.label = 16;
|
|
302
|
+
case 16:
|
|
303
|
+
current = getScrollPosition();
|
|
304
|
+
if (!(current.scrollTop !== initialScrollCoords.scrollTop ||
|
|
305
|
+
current.scrollLeft !== initialScrollCoords.scrollLeft)) return [3 /*break*/, 18];
|
|
306
|
+
scrollTo(initialScrollCoords, true);
|
|
307
|
+
return [4 /*yield*/, waitForPaint(layer, function () {
|
|
308
|
+
return isAtScroll(getScrollPosition(), initialScrollCoords);
|
|
309
|
+
})];
|
|
310
|
+
case 17:
|
|
311
|
+
_j.sent();
|
|
312
|
+
_j.label = 18;
|
|
313
|
+
case 18: return [7 /*endfinally*/];
|
|
314
|
+
case 19: return [2 /*return*/];
|
|
234
315
|
}
|
|
235
316
|
});
|
|
236
317
|
}); };
|
|
@@ -239,21 +320,22 @@ var useExportRange = function (_a) {
|
|
|
239
320
|
sheetId,
|
|
240
321
|
gridLineWidth,
|
|
241
322
|
cellBackgroundColor,
|
|
323
|
+
frozenRows,
|
|
324
|
+
frozenColumns,
|
|
242
325
|
getCanvasLayers,
|
|
243
|
-
getCellOffsetFromCoords,
|
|
244
326
|
getSheetName,
|
|
245
327
|
getR1C1AddressFromSelection,
|
|
246
328
|
getScrollPosition,
|
|
247
|
-
getViewPort,
|
|
248
329
|
getColumnHeaderCanvasLayer,
|
|
249
330
|
getRowHeaderCanvasLayer,
|
|
250
331
|
getRowOffset,
|
|
251
332
|
getColumnOffset,
|
|
252
333
|
getSheetDimensions,
|
|
334
|
+
getGridDimensions,
|
|
253
335
|
scrollTo,
|
|
254
|
-
scrollToCell,
|
|
255
336
|
scale,
|
|
256
337
|
onChangeScale,
|
|
338
|
+
scaleRef,
|
|
257
339
|
]));
|
|
258
340
|
};
|
|
259
341
|
exports.useExportRange = useExportRange;
|