@rowsncolumns/spreadsheet 10.2.75 → 10.2.76
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/fill-series.d.ts +38 -0
- package/dist/cjs/api/fill-series.d.ts.map +1 -0
- package/dist/cjs/api/fill-series.js +89 -0
- package/dist/cjs/api/spreadsheet-api.d.ts +6 -2
- package/dist/cjs/api/spreadsheet-api.d.ts.map +1 -1
- package/dist/cjs/api/spreadsheet-api.js +9 -3
- package/dist/cjs/atoms/fill-options.atom.d.ts +36 -0
- package/dist/cjs/atoms/fill-options.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/fill-options.atom.js +11 -0
- package/dist/cjs/atoms/fill-series-dialog.atom.d.ts +26 -0
- package/dist/cjs/atoms/fill-series-dialog.atom.d.ts.map +1 -0
- package/dist/cjs/atoms/fill-series-dialog.atom.js +14 -0
- package/dist/cjs/atoms/index.d.ts +2 -0
- package/dist/cjs/atoms/index.d.ts.map +1 -1
- package/dist/cjs/atoms/index.js +2 -0
- package/dist/cjs/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/cjs/components/canvas-grid/index.js +224 -50
- package/dist/cjs/components/canvas-grid/typings.d.ts +13 -4
- package/dist/cjs/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/helpers.d.ts +9 -0
- package/dist/cjs/components/cell-editor/helpers.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/helpers.js +8 -1
- package/dist/cjs/components/cell-editor/helpers.spec.js +14 -0
- package/dist/cjs/components/cell-editor/index.d.ts.map +1 -1
- package/dist/cjs/components/cell-editor/index.js +6 -3
- package/dist/cjs/components/fill-series-dialog/index.d.ts +29 -0
- package/dist/cjs/components/fill-series-dialog/index.d.ts.map +1 -0
- package/dist/cjs/components/fill-series-dialog/index.js +156 -0
- package/dist/cjs/components/selection/fill-options-menu.d.ts +32 -0
- package/dist/cjs/components/selection/fill-options-menu.d.ts.map +1 -0
- package/dist/cjs/components/selection/fill-options-menu.js +65 -0
- package/dist/cjs/components/selection/index.d.ts +1 -1
- package/dist/cjs/components/selection/index.d.ts.map +1 -1
- package/dist/cjs/components/selection/index.js +4 -2
- package/dist/cjs/components/selection/types.d.ts +11 -1
- package/dist/cjs/components/selection/types.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/text-format-selector.d.ts +9 -0
- package/dist/cjs/components/toolbar/text-format-selector.d.ts.map +1 -1
- package/dist/cjs/components/toolbar/text-format-selector.js +15 -3
- package/dist/cjs/hooks/use-editable.d.ts +11 -2
- package/dist/cjs/hooks/use-editable.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editable.js +8 -0
- package/dist/cjs/hooks/use-editor-submit.d.ts +32 -3
- package/dist/cjs/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/cjs/hooks/use-editor-submit.js +111 -2
- package/dist/cjs/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/cjs/hooks/use-keyboard-handler.js +3 -2
- package/dist/cjs/hooks/use-selection-renderer.d.ts +13 -2
- package/dist/cjs/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection-renderer.js +21 -4
- package/dist/cjs/hooks/use-selection.d.ts +54 -4
- package/dist/cjs/hooks/use-selection.d.ts.map +1 -1
- package/dist/cjs/hooks/use-selection.js +232 -37
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/release-date.js +1 -1
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/cjs/types.d.ts +39 -1
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/esm/api/fill-series.d.ts +38 -0
- package/dist/esm/api/fill-series.d.ts.map +1 -0
- package/dist/esm/api/fill-series.js +78 -0
- package/dist/esm/api/spreadsheet-api.d.ts +6 -2
- package/dist/esm/api/spreadsheet-api.d.ts.map +1 -1
- package/dist/esm/api/spreadsheet-api.js +8 -3
- package/dist/esm/atoms/fill-options.atom.d.ts +36 -0
- package/dist/esm/atoms/fill-options.atom.d.ts.map +1 -0
- package/dist/esm/atoms/fill-options.atom.js +5 -0
- package/dist/esm/atoms/fill-series-dialog.atom.d.ts +26 -0
- package/dist/esm/atoms/fill-series-dialog.atom.d.ts.map +1 -0
- package/dist/esm/atoms/fill-series-dialog.atom.js +9 -0
- package/dist/esm/atoms/index.d.ts +2 -0
- package/dist/esm/atoms/index.d.ts.map +1 -1
- package/dist/esm/atoms/index.js +2 -0
- package/dist/esm/components/canvas-grid/index.d.ts.map +1 -1
- package/dist/esm/components/canvas-grid/index.js +167 -6
- package/dist/esm/components/canvas-grid/typings.d.ts +13 -4
- package/dist/esm/components/canvas-grid/typings.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/helpers.d.ts +9 -0
- package/dist/esm/components/cell-editor/helpers.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/helpers.js +6 -0
- package/dist/esm/components/cell-editor/helpers.spec.js +15 -1
- package/dist/esm/components/cell-editor/index.d.ts.map +1 -1
- package/dist/esm/components/cell-editor/index.js +7 -4
- package/dist/esm/components/fill-series-dialog/index.d.ts +29 -0
- package/dist/esm/components/fill-series-dialog/index.d.ts.map +1 -0
- package/dist/esm/components/fill-series-dialog/index.js +151 -0
- package/dist/esm/components/selection/fill-options-menu.d.ts +32 -0
- package/dist/esm/components/selection/fill-options-menu.d.ts.map +1 -0
- package/dist/esm/components/selection/fill-options-menu.js +63 -0
- package/dist/esm/components/selection/index.d.ts +1 -1
- package/dist/esm/components/selection/index.d.ts.map +1 -1
- package/dist/esm/components/selection/index.js +4 -2
- package/dist/esm/components/selection/types.d.ts +11 -1
- package/dist/esm/components/selection/types.d.ts.map +1 -1
- package/dist/esm/components/toolbar/text-format-selector.d.ts +9 -0
- package/dist/esm/components/toolbar/text-format-selector.d.ts.map +1 -1
- package/dist/esm/components/toolbar/text-format-selector.js +14 -2
- package/dist/esm/hooks/use-editable.d.ts +11 -2
- package/dist/esm/hooks/use-editable.d.ts.map +1 -1
- package/dist/esm/hooks/use-editable.js +8 -0
- package/dist/esm/hooks/use-editor-submit.d.ts +32 -3
- package/dist/esm/hooks/use-editor-submit.d.ts.map +1 -1
- package/dist/esm/hooks/use-editor-submit.js +82 -3
- package/dist/esm/hooks/use-keyboard-handler.d.ts.map +1 -1
- package/dist/esm/hooks/use-keyboard-handler.js +3 -2
- package/dist/esm/hooks/use-selection-renderer.d.ts +13 -2
- package/dist/esm/hooks/use-selection-renderer.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection-renderer.js +22 -5
- package/dist/esm/hooks/use-selection.d.ts +54 -4
- package/dist/esm/hooks/use-selection.d.ts.map +1 -1
- package/dist/esm/hooks/use-selection.js +220 -36
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/release-date.js +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/types.d.ts +39 -1
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/spreadsheet.min.css +1 -1
- package/package.json +4 -4
|
@@ -90,6 +90,7 @@ var use_touch_1 = require("../../hooks/use-touch");
|
|
|
90
90
|
var spreadsheet_provider_1 = require("../../providers/spreadsheet-provider");
|
|
91
91
|
var scroll_subscriber_1 = require("../../signals/scroll-subscriber");
|
|
92
92
|
var themes_1 = require("../../themes");
|
|
93
|
+
var fill_series_1 = require("../../api/fill-series");
|
|
93
94
|
var cell_1 = require("../cell");
|
|
94
95
|
var cell_editor_1 = require("../cell-editor");
|
|
95
96
|
var context_menu_1 = require("../context-menu");
|
|
@@ -229,10 +230,13 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
229
230
|
var cellEditorInstance = (0, formula_bar_editor_value_atom_1.useCellEditorInstance)();
|
|
230
231
|
// Paste menu
|
|
231
232
|
var _50 = tslib_1.__read((0, atoms_1.useShowPasteMenu)(), 2), showPasteMenu = _50[0], setShowPasteMenu = _50[1];
|
|
233
|
+
// Auto Fill Options smart tag / right-drag fill menu + Series dialog
|
|
234
|
+
var _51 = tslib_1.__read((0, atoms_1.useFillOptionsState)(), 2), fillOptions = _51[0], setFillOptions = _51[1];
|
|
235
|
+
var openFillSeriesDialog = (0, atoms_1.useOpenFillSeriesDialog)();
|
|
232
236
|
// Shared state
|
|
233
237
|
var formulaMode = (0, atoms_1.useFormulaModeValue)();
|
|
234
238
|
var formulaSelections = (0, formula_selections_atom_1.useFormulaSelections)();
|
|
235
|
-
var
|
|
239
|
+
var _52 = tslib_1.__read((0, editing_cell_atom_1.useEditingCell)(), 2), editingCellCoordinate = _52[0], setEditingCellCoordinate = _52[1];
|
|
236
240
|
var setFormulabarEditorValue = (0, formula_bar_editor_value_atom_1.useSetFormulabarEditorValue)();
|
|
237
241
|
var setFormulaBarTextFormatRuns = (0, formula_bar_editor_value_atom_1.useSetFormulaBarTextFormatRuns)();
|
|
238
242
|
var canSelectCells = (0, formula_selection_state_atom_1.useFormulaCanSelectCells)();
|
|
@@ -240,7 +244,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
240
244
|
var setFormulaState = (0, formula_selection_state_atom_1.useSetFormulaSelectionState)();
|
|
241
245
|
var activeEditor = (0, active_editor_atom_1.useActiveEditor)();
|
|
242
246
|
// Magic fill state
|
|
243
|
-
var
|
|
247
|
+
var _53 = tslib_1.__read((0, magic_fill_state_atom_1.useQuickEditState)(), 2), quickEditValues = _53[0], setQuickEditState = _53[1];
|
|
244
248
|
var setNoteEditorCell = (0, atoms_1.useSetNoteEditorCell)();
|
|
245
249
|
var setPinnedTooltip = (0, atoms_1.useSetPinnedTooltip)();
|
|
246
250
|
var setSpreadsheetApi = (0, spreadsheet_api_atom_1.useSetSpreadsheetApi)();
|
|
@@ -251,7 +255,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
251
255
|
var instanceStore = (0, jotai_1.useStore)({ store: spreadsheet_provider_1.multiInstanceStore });
|
|
252
256
|
// To access closures
|
|
253
257
|
var hoveredCellRef = (0, use_stable_ref_1.useStableRef)(hoveredCell);
|
|
254
|
-
var
|
|
258
|
+
var _54 = tslib_1.__read((0, use_resize_observer_1.useResizeObserver)(), 2), gridContainerRef = _54[0], _55 = _54[1], width = _55.width, height = _55.height;
|
|
255
259
|
var defaultFrozenDims = showHeaders ? 1 : 0;
|
|
256
260
|
var frozenRows = Math.max(defaultFrozenDims, (frozenRowCount !== null && frozenRowCount !== void 0 ? frozenRowCount : 0) + defaultFrozenDims);
|
|
257
261
|
var frozenColumns = Math.max(defaultFrozenDims, (frozenColumnCount !== null && frozenColumnCount !== void 0 ? frozenColumnCount : 0) + defaultFrozenDims);
|
|
@@ -263,9 +267,9 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
263
267
|
var sheetRowCount = Math.min(config_1.MAX_ROW_COUNT + 1, rowCount + 1);
|
|
264
268
|
var sheetColumnCount = Math.min(config_1.MAX_COLUMN_COUNT + 1, columnCount + 1);
|
|
265
269
|
// License key validator
|
|
266
|
-
var
|
|
270
|
+
var _56 = tslib_1.__read((0, use_licensekey_validator_1.useLicenseKeyValidator)({
|
|
267
271
|
licenseKey: licenseKey,
|
|
268
|
-
}), 3), _ =
|
|
272
|
+
}), 3), _ = _56[0], licenseType = _56[1], validatorResult = _56[2];
|
|
269
273
|
var isRestricted = licenseType === "solo";
|
|
270
274
|
// Grid line width
|
|
271
275
|
var gridLineWidth = 1 * scale;
|
|
@@ -1081,11 +1085,11 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
1081
1085
|
* Touch support
|
|
1082
1086
|
* Mainly for scrolling
|
|
1083
1087
|
*/
|
|
1084
|
-
var
|
|
1088
|
+
var _57 = (0, use_touch_1.useTouch)({
|
|
1085
1089
|
scrollTo: scrollTo,
|
|
1086
1090
|
scale: scale,
|
|
1087
1091
|
onChangeScale: onChangeScale,
|
|
1088
|
-
}), onTouchStart =
|
|
1092
|
+
}), onTouchStart = _57.onTouchStart, onDimensionsChange = _57.onDimensionsChange, scrollToTouchDevice = _57.scrollToTouchDevice, onAfterScrollToCell = _57.onAfterScrollToCell;
|
|
1089
1093
|
/**
|
|
1090
1094
|
* Conditional-formatting evaluation window: the padded, tile-quantized
|
|
1091
1095
|
* viewport. The raw viewport lives in a ref (no render per scroll frame);
|
|
@@ -1093,7 +1097,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
1093
1097
|
* `startTransition` so the CF recompute is low-priority and interruptible —
|
|
1094
1098
|
* scrolling never blocks on it.
|
|
1095
1099
|
*/
|
|
1096
|
-
var
|
|
1100
|
+
var _58 = tslib_1.__read((0, react_1.useState)(cf_window_1.CF_INITIAL_WINDOW), 2), cfWindow = _58[0], setCfWindow = _58[1];
|
|
1097
1101
|
var cfWindowRef = (0, react_1.useRef)(null);
|
|
1098
1102
|
var handleViewPortChange = (0, react_1.useCallback)(function (viewport) {
|
|
1099
1103
|
onViewPortChange === null || onViewPortChange === void 0 ? void 0 : onViewPortChange(viewport);
|
|
@@ -1325,14 +1329,14 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
1325
1329
|
tokenizer: defaultTokenizer,
|
|
1326
1330
|
});
|
|
1327
1331
|
// Helper function to convert a selection to readable selection address
|
|
1328
|
-
var
|
|
1332
|
+
var _59 = tslib_1.__read((0, use_create_address_from_selection_1.useCreateAddressFromSelection)({
|
|
1329
1333
|
sheetId: sheetId,
|
|
1330
1334
|
rowCount: rowCount,
|
|
1331
1335
|
columnCount: columnCount,
|
|
1332
1336
|
tables: tables !== null && tables !== void 0 ? tables : undefined,
|
|
1333
1337
|
namedRanges: namedRanges !== null && namedRanges !== void 0 ? namedRanges : undefined,
|
|
1334
1338
|
merges: merges,
|
|
1335
|
-
}), 2), getAddressFromSelection =
|
|
1339
|
+
}), 2), getAddressFromSelection = _59[0], getR1C1AddressFromSelection = _59[1];
|
|
1336
1340
|
/**
|
|
1337
1341
|
* Exports a data region as image
|
|
1338
1342
|
*/
|
|
@@ -1378,7 +1382,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
1378
1382
|
* Get user entered value from a range
|
|
1379
1383
|
* of cells
|
|
1380
1384
|
*/
|
|
1381
|
-
var
|
|
1385
|
+
var _60 = tslib_1.__read((0, use_get_values_from_range_1.useGetValuesFromRange)({
|
|
1382
1386
|
sheetId: sheetId,
|
|
1383
1387
|
getSelectionsFromFormula: getSelectionsFromFormula,
|
|
1384
1388
|
getFormattedValue: getFormattedValue,
|
|
@@ -1386,7 +1390,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
1386
1390
|
getSheetId: getSheetId,
|
|
1387
1391
|
onRequestCalculate: onRequestCalculate,
|
|
1388
1392
|
getValidationSourceValue: getValidationSourceValue,
|
|
1389
|
-
}), 3), getFormattedValuesFromAddress =
|
|
1393
|
+
}), 3), getFormattedValuesFromAddress = _60[0], getEffectiveValuesFromRange = _60[1], getFormattedValuesFromAddressAsync = _60[2];
|
|
1390
1394
|
/**
|
|
1391
1395
|
* Get all formatted values from range as a single 1d array
|
|
1392
1396
|
*/
|
|
@@ -1723,7 +1727,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
1723
1727
|
* O(n)
|
|
1724
1728
|
* Reduces Space Complexity by using `all`
|
|
1725
1729
|
*/
|
|
1726
|
-
var
|
|
1730
|
+
var _61 = tslib_1.__read((0, use_selected_rows_columns_1.useSelectedRowsColumns)({
|
|
1727
1731
|
activeCell: activeCell,
|
|
1728
1732
|
selections: selections,
|
|
1729
1733
|
selectionLeftBound: selectionLeftBound,
|
|
@@ -1731,7 +1735,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
1731
1735
|
rowCount: rowCount,
|
|
1732
1736
|
columnCount: columnCount,
|
|
1733
1737
|
getCellBounds: getCellBounds,
|
|
1734
|
-
}), 6), selectedRows =
|
|
1738
|
+
}), 6), selectedRows = _61[0], selectedColumns = _61[1], selectedRowHeaders = _61[2], selectedColumnHeaders = _61[3], selectedRowHeadersIds = _61[4], selectedColumnHeadersIds = _61[5];
|
|
1735
1739
|
// Named ranges for editor dropdown
|
|
1736
1740
|
var getNamedRanges = (0, use_callback_ref_1.useCallbackRef)((0, react_1.useCallback)(function () {
|
|
1737
1741
|
return namedRanges === null || namedRanges === void 0 ? void 0 : namedRanges.map(function (range) { return ({
|
|
@@ -1801,7 +1805,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
1801
1805
|
* user can select entire column or row when selecting
|
|
1802
1806
|
* header cells
|
|
1803
1807
|
*/
|
|
1804
|
-
var
|
|
1808
|
+
var _62 = (0, use_selection_interceptors_1.useSelectionInterceptors)({
|
|
1805
1809
|
sheetId: sheetId,
|
|
1806
1810
|
rowCount: rowCount,
|
|
1807
1811
|
columnCount: columnCount,
|
|
@@ -1817,7 +1821,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
1817
1821
|
onChangeActiveCell: onChangeActiveCell,
|
|
1818
1822
|
scrollToCell: scrollToCell,
|
|
1819
1823
|
isMergedCell: isMergedCell,
|
|
1820
|
-
}), onMouseDownInterceptor =
|
|
1824
|
+
}), onMouseDownInterceptor = _62.onMouseDownInterceptor, onMouseMoveInterceptor = _62.onMouseMoveInterceptor;
|
|
1821
1825
|
/**
|
|
1822
1826
|
* When user selections full rows
|
|
1823
1827
|
* or columns, we have to ignore
|
|
@@ -1905,7 +1909,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
1905
1909
|
* Enables auto resizing
|
|
1906
1910
|
* rows and columns
|
|
1907
1911
|
*/
|
|
1908
|
-
var
|
|
1912
|
+
var _63 = (0, use_sizer_1.useSizer)({
|
|
1909
1913
|
frozenRows: frozenRows,
|
|
1910
1914
|
frozenColumns: frozenColumns,
|
|
1911
1915
|
scale: scale,
|
|
@@ -1928,7 +1932,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
1928
1932
|
getDataRowCount: getDataRowCount,
|
|
1929
1933
|
fontSize: defaultFontSizePoint,
|
|
1930
1934
|
resizeStrategy: "full",
|
|
1931
|
-
}), getColumnWidth =
|
|
1935
|
+
}), getColumnWidth = _63.getColumnWidth, getRowHeight = _63.getRowHeight, getCellDimensions = _63.getCellDimensions, getCellDimensionsStable = _63.getCellDimensionsStable, getTextDimension = _63.getTextDimension;
|
|
1932
1936
|
/**
|
|
1933
1937
|
* Called when user tries to
|
|
1934
1938
|
* autofit a column or row
|
|
@@ -2001,7 +2005,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2001
2005
|
/**
|
|
2002
2006
|
* Popover cell
|
|
2003
2007
|
*/
|
|
2004
|
-
var
|
|
2008
|
+
var _64 = (0, use_cell_popover_1.useCellPopover)({
|
|
2005
2009
|
sheetId: sheetId,
|
|
2006
2010
|
getCellPopoverContent: getCellPopoverContent !== null && getCellPopoverContent !== void 0 ? getCellPopoverContent : getFormattedValue,
|
|
2007
2011
|
getCellOffsetFromCoords: getCellOffsetFromCoords,
|
|
@@ -2009,7 +2013,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2009
2013
|
isFrozenColumn: isFrozenColumn,
|
|
2010
2014
|
isFrozenRow: isFrozenRow,
|
|
2011
2015
|
onChangeActiveSheet: onChangeActiveSheet,
|
|
2012
|
-
}), popoverComponent =
|
|
2016
|
+
}), popoverComponent = _64.popoverComponent, popoverRange = _64.popoverRange, showCellPopover = _64.showCellPopover, hideCellPopover = _64.hideCellPopover;
|
|
2013
2017
|
/**
|
|
2014
2018
|
* Get tooltip component of a cell
|
|
2015
2019
|
* Only error, invalid values are
|
|
@@ -2051,10 +2055,164 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2051
2055
|
var dataRegionBoundaries = (0, react_1.useMemo)(function () {
|
|
2052
2056
|
return tables === null || tables === void 0 ? void 0 : tables.filter(function (table) { return table.sheetId === sheetId; }).map(function (table) { return table.range; });
|
|
2053
2057
|
}, [tables, sheetId]);
|
|
2058
|
+
/**
|
|
2059
|
+
* True when a source cell of a fill is date-formatted — the fill menu then
|
|
2060
|
+
* adds Fill Days / Weekdays / Months / Years (Excel shows them only for
|
|
2061
|
+
* date sources). Reads the cell's own format first, then the effective
|
|
2062
|
+
* (style-plane) format so rnc-backed cells count too.
|
|
2063
|
+
*/
|
|
2064
|
+
var sourceHasDates = (0, react_1.useCallback)(function (fillSheetId, sources) {
|
|
2065
|
+
var e_11, _a;
|
|
2066
|
+
var _b, _c, _d, _e, _f;
|
|
2067
|
+
var visited = 0;
|
|
2068
|
+
try {
|
|
2069
|
+
for (var sources_1 = tslib_1.__values(sources), sources_1_1 = sources_1.next(); !sources_1_1.done; sources_1_1 = sources_1.next()) {
|
|
2070
|
+
var range = sources_1_1.value.range;
|
|
2071
|
+
for (var r = range.startRowIndex; r <= range.endRowIndex; r++) {
|
|
2072
|
+
for (var c = range.startColumnIndex; c <= range.endColumnIndex; c++) {
|
|
2073
|
+
// Bounded scan: a whole-column source would otherwise cost a full walk.
|
|
2074
|
+
if (++visited > 256)
|
|
2075
|
+
return false;
|
|
2076
|
+
var uf = (_b = getCellData === null || getCellData === void 0 ? void 0 : getCellData(fillSheetId, r, c)) === null || _b === void 0 ? void 0 : _b.userEnteredFormat;
|
|
2077
|
+
var type = (_d = (uf && "numberFormat" in uf ? (_c = uf.numberFormat) === null || _c === void 0 ? void 0 : _c.type : undefined)) !== null && _d !== void 0 ? _d : (_f = (_e = getEffectiveFormat === null || getEffectiveFormat === void 0 ? void 0 : getEffectiveFormat(fillSheetId, r, c)) === null || _e === void 0 ? void 0 : _e.numberFormat) === null || _f === void 0 ? void 0 : _f.type;
|
|
2078
|
+
if (type === "DATE" || type === "DATE_TIME")
|
|
2079
|
+
return true;
|
|
2080
|
+
}
|
|
2081
|
+
}
|
|
2082
|
+
}
|
|
2083
|
+
}
|
|
2084
|
+
catch (e_11_1) { e_11 = { error: e_11_1 }; }
|
|
2085
|
+
finally {
|
|
2086
|
+
try {
|
|
2087
|
+
if (sources_1_1 && !sources_1_1.done && (_a = sources_1.return)) _a.call(sources_1);
|
|
2088
|
+
}
|
|
2089
|
+
finally { if (e_11) throw e_11.error; }
|
|
2090
|
+
}
|
|
2091
|
+
return false;
|
|
2092
|
+
}, [getCellData, getEffectiveFormat]);
|
|
2093
|
+
/**
|
|
2094
|
+
* A fill-handle drag ended: park the gesture so the Auto Fill Options smart
|
|
2095
|
+
* tag (left drag — already filled) or the right-drag fill menu (nothing
|
|
2096
|
+
* filled yet) can re-choose the fill type.
|
|
2097
|
+
*/
|
|
2098
|
+
var handleFillHandleRelease = (0, react_1.useCallback)(function (release) {
|
|
2099
|
+
if (readonly)
|
|
2100
|
+
return;
|
|
2101
|
+
setFillOptions({
|
|
2102
|
+
sheetId: release.sheetId,
|
|
2103
|
+
activeCell: release.activeCell,
|
|
2104
|
+
fillSelection: release.fillSelection,
|
|
2105
|
+
selections: release.selections,
|
|
2106
|
+
fillType: undefined,
|
|
2107
|
+
hasDates: sourceHasDates(release.sheetId, release.selections.length
|
|
2108
|
+
? release.selections
|
|
2109
|
+
: [{ range: (0, grid_1.cellToArea)(release.activeCell) }]),
|
|
2110
|
+
mode: release.button === "right" ? "menu" : "smart-tag",
|
|
2111
|
+
});
|
|
2112
|
+
}, [readonly, setFillOptions, sourceHasDates]);
|
|
2113
|
+
/**
|
|
2114
|
+
* An entry of the fill menu was picked: re-issue the fill from the (still
|
|
2115
|
+
* intact) source with the explicit type. The target is simply overwritten
|
|
2116
|
+
* with the new result — no undo round-trip needed because the source
|
|
2117
|
+
* selection is never touched by a fill.
|
|
2118
|
+
*/
|
|
2119
|
+
var handleChooseFillType = (0, react_1.useCallback)(function (fillType) {
|
|
2120
|
+
if (!fillOptions)
|
|
2121
|
+
return;
|
|
2122
|
+
onFill === null || onFill === void 0 ? void 0 : onFill(fillOptions.sheetId, fillOptions.activeCell, fillOptions.fillSelection, fillOptions.selections, undefined, fillType);
|
|
2123
|
+
setFillOptions(tslib_1.__assign(tslib_1.__assign({}, fillOptions), { fillType: fillType, mode: "smart-tag" }));
|
|
2124
|
+
focusSheet();
|
|
2125
|
+
}, [fillOptions, onFill, setFillOptions, focusSheet]);
|
|
2126
|
+
var handleCloseFillOptions = (0, react_1.useCallback)(function () {
|
|
2127
|
+
// Only the right-drag menu is "cancel on close"; the smart tag stays.
|
|
2128
|
+
if ((fillOptions === null || fillOptions === void 0 ? void 0 : fillOptions.mode) === "menu")
|
|
2129
|
+
setFillOptions(null);
|
|
2130
|
+
}, [fillOptions, setFillOptions]);
|
|
2131
|
+
/**
|
|
2132
|
+
* Run Excel's Series dialog result: the target range's first row (Series
|
|
2133
|
+
* in Columns) / first column (Rows) is the seed line; `stop` may shrink or
|
|
2134
|
+
* extend the target along the axis from the seed's last value.
|
|
2135
|
+
*/
|
|
2136
|
+
var applyFillSeriesSpec = (0, react_1.useCallback)(function (fillSheetId, cell, target, spec) {
|
|
2137
|
+
var seed = (0, fill_series_1.seedRangeForSeriesSpec)(target.range, spec);
|
|
2138
|
+
var fillRange = (0, fill_series_1.fillRangeForSeriesSpec)({
|
|
2139
|
+
target: target.range,
|
|
2140
|
+
seed: seed,
|
|
2141
|
+
spec: spec,
|
|
2142
|
+
getSeedValue: function (r, c) {
|
|
2143
|
+
var value = getEffectiveValue(fillSheetId, r, c);
|
|
2144
|
+
return typeof value === "number" ? value : undefined;
|
|
2145
|
+
},
|
|
2146
|
+
rowCount: rowCount,
|
|
2147
|
+
columnCount: columnCount,
|
|
2148
|
+
});
|
|
2149
|
+
if (!fillRange)
|
|
2150
|
+
return;
|
|
2151
|
+
var fillType = spec.type === "linear"
|
|
2152
|
+
? spec.trend
|
|
2153
|
+
? "LinearTrend"
|
|
2154
|
+
: "FillSeries"
|
|
2155
|
+
: spec.type === "growth"
|
|
2156
|
+
? "GrowthTrend"
|
|
2157
|
+
: spec.type === "date"
|
|
2158
|
+
? spec.dateUnit === "weekday"
|
|
2159
|
+
? "FillWeekdays"
|
|
2160
|
+
: spec.dateUnit === "month"
|
|
2161
|
+
? "FillMonths"
|
|
2162
|
+
: spec.dateUnit === "year"
|
|
2163
|
+
? "FillYears"
|
|
2164
|
+
: "FillDays"
|
|
2165
|
+
: undefined;
|
|
2166
|
+
onFill === null || onFill === void 0 ? void 0 : onFill(fillSheetId, cell, { range: fillRange }, [tslib_1.__assign(tslib_1.__assign({}, target), { range: seed })], undefined, fillType, { series: spec });
|
|
2167
|
+
onChangeSelections === null || onChangeSelections === void 0 ? void 0 : onChangeSelections(fillSheetId, [tslib_1.__assign(tslib_1.__assign({}, target), { range: fillRange })]);
|
|
2168
|
+
}, [getEffectiveValue, onFill, onChangeSelections, rowCount, columnCount]);
|
|
2169
|
+
/** Open the Series dialog for a range (the current selection by default). */
|
|
2170
|
+
var openFillSeriesDialogFor = (0, react_1.useCallback)(function (target, initialIn) {
|
|
2171
|
+
var _a;
|
|
2172
|
+
var selection = (_a = target !== null && target !== void 0 ? target : selections[selections.length - 1]) !== null && _a !== void 0 ? _a : { range: (0, grid_1.cellToArea)(activeCell) };
|
|
2173
|
+
openFillSeriesDialog({
|
|
2174
|
+
sheetId: sheetId,
|
|
2175
|
+
activeCell: activeCell,
|
|
2176
|
+
selection: selection,
|
|
2177
|
+
initialIn: initialIn,
|
|
2178
|
+
onApply: function (spec) {
|
|
2179
|
+
return applyFillSeriesSpec(sheetId, activeCell, selection, spec);
|
|
2180
|
+
},
|
|
2181
|
+
});
|
|
2182
|
+
}, [selections, activeCell, sheetId, openFillSeriesDialog, applyFillSeriesSpec]);
|
|
2183
|
+
/** "Series…" on the right-drag fill menu: the drag's target is the range, its axis the default. */
|
|
2184
|
+
var handleOpenFillSeriesDialog = (0, react_1.useCallback)(function () {
|
|
2185
|
+
var _a;
|
|
2186
|
+
if (!fillOptions)
|
|
2187
|
+
return;
|
|
2188
|
+
var range = fillOptions.fillSelection.range;
|
|
2189
|
+
var source = (_a = fillOptions.selections[0]) === null || _a === void 0 ? void 0 : _a.range;
|
|
2190
|
+
var initialIn = source &&
|
|
2191
|
+
(range.endRowIndex > source.endRowIndex ||
|
|
2192
|
+
range.startRowIndex < source.startRowIndex)
|
|
2193
|
+
? "columns"
|
|
2194
|
+
: "rows";
|
|
2195
|
+
setFillOptions(null);
|
|
2196
|
+
openFillSeriesDialogFor({ range: range }, initialIn);
|
|
2197
|
+
}, [fillOptions, setFillOptions, openFillSeriesDialogFor]);
|
|
2198
|
+
// The smart tag belongs to one fill; moving on (a new active cell) drops it.
|
|
2199
|
+
// Keyed on the cell's coordinates, not the object — a re-created `activeCell`
|
|
2200
|
+
// with the same coordinates must not dismiss it.
|
|
2201
|
+
(0, react_1.useEffect)(function () {
|
|
2202
|
+
setFillOptions(null);
|
|
2203
|
+
}, [activeCell.rowIndex, activeCell.columnIndex, sheetId, setFillOptions]);
|
|
2204
|
+
/**
|
|
2205
|
+
* Fill handle dragged BACK inside the selection (Excel): the dragged-over cells lose their
|
|
2206
|
+
* contents — formats stay unless Ctrl/Cmd was held — through the same `onDelete` path as the
|
|
2207
|
+
* Delete key, so both engines (legacy `useOnDelete`, rnc `delete-cells`) clear identically.
|
|
2208
|
+
*/
|
|
2209
|
+
var handleFillShrink = (0, react_1.useCallback)(function (sheetId, activeCell, clearRange, options) {
|
|
2210
|
+
onDelete === null || onDelete === void 0 ? void 0 : onDelete(sheetId, activeCell, [{ range: clearRange }], (options === null || options === void 0 ? void 0 : options.modifier) === "toggle" ? "all" : "contents");
|
|
2211
|
+
}, [onDelete]);
|
|
2054
2212
|
/**
|
|
2055
2213
|
* Handle grid selections
|
|
2056
2214
|
*/
|
|
2057
|
-
var
|
|
2215
|
+
var _65 = (0, use_selection_1.useSelection)({
|
|
2058
2216
|
sheetId: sheetId,
|
|
2059
2217
|
getDataRowCount: getDataRowCount,
|
|
2060
2218
|
enableDataBoundaryNavigation: enableDataBoundaryNavigation,
|
|
@@ -2082,6 +2240,8 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2082
2240
|
scrollToCell: scrollToCell,
|
|
2083
2241
|
isMergedCell: isMergedCell,
|
|
2084
2242
|
onFill: onFill,
|
|
2243
|
+
onFillHandleRelease: handleFillHandleRelease,
|
|
2244
|
+
onFillShrink: handleFillShrink,
|
|
2085
2245
|
onMoveSelection: onMoveSelection,
|
|
2086
2246
|
isHiddenColumn: isHiddenColumn,
|
|
2087
2247
|
isHiddenRow: isHiddenRow,
|
|
@@ -2089,11 +2249,11 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2089
2249
|
isColumnHeader: isColumnHeader,
|
|
2090
2250
|
isTouchDevice: helpers_1.isTouchDevice,
|
|
2091
2251
|
dataRegionBoundaries: dataRegionBoundaries,
|
|
2092
|
-
}), onMouseDownSelection =
|
|
2252
|
+
}), onMouseDownSelection = _65.onMouseDown, onPointerDownSelection = _65.onPointerDown, onKeyDownSelection = _65.onKeyDown, fillSelection = _65.fillSelection, fillShrink = _65.fillShrink, onFillHandleMouseDown = _65.onFillHandleMouseDown, onFillHandleDoubleClick = _65.onFillHandleDoubleClick, isDragging = _65.isDragging, isFilling = _65.isFilling, isSelectionInProgress = _65.isSelectionInProgress, draggedSelection = _65.draggedSelection, onSelectionMouseDown = _65.onSelectionMouseDown, setActiveCell = _65.setActiveCell, initialDraggedSelection = _65.initialDraggedSelection, updateSelectionStartEndReference = _65.updateSelectionStartEndReference, selectColumn = _65.selectColumn, getContentfulGridRangeAroundCell = _65.getContentfulGridRangeAroundCell, newSelection = _65.newSelection, modifySelection = _65.modifySelection, clearSelections = _65.clearSelections;
|
|
2093
2253
|
/**
|
|
2094
2254
|
* Copy, Paste and Cut hook
|
|
2095
2255
|
*/
|
|
2096
|
-
var
|
|
2256
|
+
var _66 = (0, use_copy_paste_cut_1.useCopyPasteCut)({
|
|
2097
2257
|
activeCell: activeCell,
|
|
2098
2258
|
selections: selections,
|
|
2099
2259
|
sheetId: sheetId,
|
|
@@ -2101,7 +2261,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2101
2261
|
onPaste: onPaste,
|
|
2102
2262
|
onCopy: onCopy,
|
|
2103
2263
|
onCut: onCut,
|
|
2104
|
-
}), copiedSelections =
|
|
2264
|
+
}), copiedSelections = _66.copiedSelections, clearCopiedSelections = _66.clearCopiedSelections, copy = _66.copy, cut = _66.cut, paste = _66.paste, onInternalCopy = _66.onInternalCopy, onInternalCut = _66.onInternalCut, onInternalPaste = _66.onInternalPaste;
|
|
2105
2265
|
/**
|
|
2106
2266
|
* Paste Special dialog (context menu → Paste special…, Ctrl+Alt+V). The
|
|
2107
2267
|
* dialog is host-mounted (`PasteSpecialDialogHost`); its request routes
|
|
@@ -2259,6 +2419,8 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2259
2419
|
onChange: onChange,
|
|
2260
2420
|
getCommitValidation: getCommitValidation,
|
|
2261
2421
|
showValidationAlert: showValidationAlert,
|
|
2422
|
+
selections: selections,
|
|
2423
|
+
onChangeBatch: onChangeBatch,
|
|
2262
2424
|
});
|
|
2263
2425
|
/**
|
|
2264
2426
|
* User cancels editing the cell
|
|
@@ -2426,7 +2588,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2426
2588
|
* Displays Context menu when user right clicks
|
|
2427
2589
|
* the grid
|
|
2428
2590
|
*/
|
|
2429
|
-
var
|
|
2591
|
+
var _67 = (0, use_context_menu_1.useContextMenu)({
|
|
2430
2592
|
getCellCoordsFromOffset: getCellCoordsFromOffset,
|
|
2431
2593
|
getRelativePositionFromOffset: getRelativePositionFromOffset,
|
|
2432
2594
|
isRowHeader: isRowHeader,
|
|
@@ -2435,7 +2597,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2435
2597
|
getCellOffsetFromCoords: getCellOffsetFromCoords,
|
|
2436
2598
|
getScrollPosition: getScrollPosition,
|
|
2437
2599
|
ContextMenuWrapper: ContextMenuWrapper,
|
|
2438
|
-
}), onContextMenu =
|
|
2600
|
+
}), onContextMenu = _67.onContextMenu, contextMenuComponent = _67.contextMenuComponent, onRequestCloseContextMenu = _67.onRequestClose, showContextMenu = _67.showContextMenu;
|
|
2439
2601
|
/**
|
|
2440
2602
|
* Shortcut handlers for formatting
|
|
2441
2603
|
* TODO: Decide on the output
|
|
@@ -2515,7 +2677,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2515
2677
|
/**
|
|
2516
2678
|
* Allow grid to be ediable
|
|
2517
2679
|
*/
|
|
2518
|
-
var
|
|
2680
|
+
var _68 = (0, use_editable_1.useEditable)({
|
|
2519
2681
|
sheetId: sheetId,
|
|
2520
2682
|
enableEditOnEnterKey: enableEditOnEnterKey,
|
|
2521
2683
|
canEdit: canEditCell,
|
|
@@ -2564,11 +2726,11 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2564
2726
|
onCopy: onInternalCopy,
|
|
2565
2727
|
onPaste: onInternalPaste,
|
|
2566
2728
|
onCut: onInternalCut,
|
|
2567
|
-
}), onMouseDownEditable =
|
|
2729
|
+
}), onMouseDownEditable = _68.onMouseDown, onDoubleClickEditable = _68.onDoubleClick, editorComponent = _68.editorComponent, isEditInProgress = _68.isEditInProgress, makeEditable = _68.makeEditable, editCell = _68.editCell, setEditorValue = _68.setEditorValue, hideEditor = _68.hideEditor, getNextFocusableCell = _68.getNextFocusableCell, submitEditor = _68.submitEditor, cancelEditor = _68.cancelEditor, commit = _68.commit;
|
|
2568
2730
|
/**
|
|
2569
2731
|
* Move rows and columns
|
|
2570
2732
|
*/
|
|
2571
|
-
var
|
|
2733
|
+
var _69 = (0, use_move_columns_rows_1.useMoveColumnsAndRows)({
|
|
2572
2734
|
getCellOffsetFromCoords: getCellOffsetFromCoords,
|
|
2573
2735
|
getCellCoordsFromOffset: getCellCoordsFromOffset,
|
|
2574
2736
|
getRelativePositionFromOffset: getRelativePositionFromOffset,
|
|
@@ -2591,11 +2753,11 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2591
2753
|
sheetId: sheetId,
|
|
2592
2754
|
disabled: isRestricted,
|
|
2593
2755
|
HeaderMoveDragComponent: HeaderMoveDragComponent,
|
|
2594
|
-
}), draggableColumns =
|
|
2756
|
+
}), draggableColumns = _69.draggableColumns, draggableRows = _69.draggableRows, isDraggingRowsAndColumns = _69.isDragging;
|
|
2595
2757
|
/**
|
|
2596
2758
|
* Header actions
|
|
2597
2759
|
*/
|
|
2598
|
-
var
|
|
2760
|
+
var _70 = (0, use_header_actions_1.useHeaderActions)({
|
|
2599
2761
|
activeCell: isSelectionInProgress || isFilling || isDragging ? null : hoveredCell,
|
|
2600
2762
|
getScrollPosition: getScrollPosition,
|
|
2601
2763
|
getCellOffsetFromCoords: getCellOffsetFromCoords,
|
|
@@ -2622,7 +2784,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2622
2784
|
selectedRowHeadersIds: selectedRowHeadersIds,
|
|
2623
2785
|
selectedColumnHeadersIds: selectedColumnHeadersIds,
|
|
2624
2786
|
enableResizerOverflow: enableResizerOverflow,
|
|
2625
|
-
}), headerMenuComponent =
|
|
2787
|
+
}), headerMenuComponent = _70.headerMenuComponent, isHeaderMenuInFrozenColumn = _70.isHeaderMenuInFrozenColumn, headerResizer = _70.headerResizer, isDraggingHeader = _70.isDragging;
|
|
2626
2788
|
/**
|
|
2627
2789
|
* Close tooltip
|
|
2628
2790
|
*/
|
|
@@ -2664,7 +2826,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2664
2826
|
/**
|
|
2665
2827
|
* Show basicFilter panels
|
|
2666
2828
|
*/
|
|
2667
|
-
var
|
|
2829
|
+
var _71 = (0, use_filter_1.useFilter)({
|
|
2668
2830
|
sheetId: sheetId,
|
|
2669
2831
|
scale: scale,
|
|
2670
2832
|
theme: theme,
|
|
@@ -2689,9 +2851,9 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2689
2851
|
// Live filter state so the open popup tracks Auto-apply spec changes.
|
|
2690
2852
|
basicFilter: basicFilter,
|
|
2691
2853
|
tables: activeTables,
|
|
2692
|
-
}), showFilter =
|
|
2854
|
+
}), showFilter = _71.showFilter, hideFilter = _71.hideFilter, filterComponent = _71.filterComponent;
|
|
2693
2855
|
// Table resize
|
|
2694
|
-
var
|
|
2856
|
+
var _72 = (0, use_table_resizer_1.useTableResizer)({
|
|
2695
2857
|
sheetId: sheetId,
|
|
2696
2858
|
tables: tables !== null && tables !== void 0 ? tables : undefined,
|
|
2697
2859
|
theme: theme,
|
|
@@ -2702,11 +2864,11 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2702
2864
|
scrollToCell: scrollToCell,
|
|
2703
2865
|
onResizeTable: onResizeTable,
|
|
2704
2866
|
focusSheet: focusSheet,
|
|
2705
|
-
}), tableResizers =
|
|
2867
|
+
}), tableResizers = _72.tableResizers, isResizingTable = _72.isResizingTable;
|
|
2706
2868
|
/**
|
|
2707
2869
|
* Displays resizable/draggable charts
|
|
2708
2870
|
*/
|
|
2709
|
-
var
|
|
2871
|
+
var _73 = (0, use_embeds_charts_1.useEmbedsCharts)({
|
|
2710
2872
|
charts: charts,
|
|
2711
2873
|
embeds: embeds,
|
|
2712
2874
|
slicers: slicers,
|
|
@@ -2743,7 +2905,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2743
2905
|
backgroundColor: cellBackgroundColor,
|
|
2744
2906
|
disabled: isRestricted,
|
|
2745
2907
|
readonly: readonly,
|
|
2746
|
-
}), chartComponents =
|
|
2908
|
+
}), chartComponents = _73.chartComponents, embedComponents = _73.embedComponents, slicerComponents = _73.slicerComponents, onMouseDownCharts = _73.onMouseDown;
|
|
2747
2909
|
/**
|
|
2748
2910
|
* Callback when user clicks Filter icon
|
|
2749
2911
|
* Show Filter dropdown here
|
|
@@ -2873,6 +3035,8 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2873
3035
|
hideCellPopover();
|
|
2874
3036
|
// Hide paste mnenu
|
|
2875
3037
|
setShowPasteMenu(false);
|
|
3038
|
+
// Hide the Auto Fill Options smart tag (its own mousedown never reaches here)
|
|
3039
|
+
setFillOptions(null);
|
|
2876
3040
|
// Remove pinned tooltip
|
|
2877
3041
|
onUnpinTooltip();
|
|
2878
3042
|
}, [
|
|
@@ -2884,6 +3048,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2884
3048
|
setFormulaState,
|
|
2885
3049
|
hideCellPopover,
|
|
2886
3050
|
setShowPasteMenu,
|
|
3051
|
+
setFillOptions,
|
|
2887
3052
|
onUnpinTooltip,
|
|
2888
3053
|
focusSheet,
|
|
2889
3054
|
]);
|
|
@@ -2998,7 +3163,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
2998
3163
|
/**
|
|
2999
3164
|
* Render Cells in the grid
|
|
3000
3165
|
*/
|
|
3001
|
-
var
|
|
3166
|
+
var _74 = tslib_1.__read((0, use_cell_renderer_1.useCellRenderer)({
|
|
3002
3167
|
sheetId: sheetId,
|
|
3003
3168
|
showGridLines: showGridLines,
|
|
3004
3169
|
scale: scale,
|
|
@@ -3064,7 +3229,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
3064
3229
|
onOverflow: handleOverflow,
|
|
3065
3230
|
isComparing: isComparing,
|
|
3066
3231
|
getCellDiff: getCellDiff,
|
|
3067
|
-
}), 4), cellBackgroundRenderer =
|
|
3232
|
+
}), 4), cellBackgroundRenderer = _74[0], cellRenderer = _74[1], cellOverlayRenderer = _74[2], headerCellRenderer = _74[3];
|
|
3068
3233
|
/**
|
|
3069
3234
|
* When user selects a selection for moving
|
|
3070
3235
|
* If its a table, we select the entire column
|
|
@@ -3100,11 +3265,11 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
3100
3265
|
tokenizer: tokenizer,
|
|
3101
3266
|
});
|
|
3102
3267
|
// Selection move: drag a formula reference via its border covers
|
|
3103
|
-
var
|
|
3268
|
+
var _75 = (0, use_selection_move_1.useSelectionMove)({
|
|
3104
3269
|
getCellCoordsFromOffset: getCellCoordsFromOffset,
|
|
3105
3270
|
scrollToCell: scrollToCell,
|
|
3106
3271
|
tokenizer: tokenizer,
|
|
3107
|
-
}), onMouseDownMoveSelection =
|
|
3272
|
+
}), onMouseDownMoveSelection = _75.onMouseDownMoveSelection, isDraggingMoveSelection = _75.isDragging;
|
|
3108
3273
|
/**
|
|
3109
3274
|
* Hide fill handle
|
|
3110
3275
|
* 1. When user is in edit mode
|
|
@@ -3117,9 +3282,9 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
3117
3282
|
/**
|
|
3118
3283
|
* Flashing
|
|
3119
3284
|
*/
|
|
3120
|
-
var
|
|
3285
|
+
var _76 = (0, use_flash_1.useFlash)({
|
|
3121
3286
|
theme: theme,
|
|
3122
|
-
}), flash =
|
|
3287
|
+
}), flash = _76.flash, mark = _76.mark, unmark = _76.unmark, onFlashEnd = _76.onFlashEnd, flashingBorders = _76.flashingBorders;
|
|
3123
3288
|
// Cache hover ids
|
|
3124
3289
|
var cachedHoveredSelectionIds = (0, use_hovered_selection_ids_1.useHoveredSelectionIds)({
|
|
3125
3290
|
selections: selections,
|
|
@@ -3129,9 +3294,12 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
3129
3294
|
/**
|
|
3130
3295
|
* Selection Renderer
|
|
3131
3296
|
*/
|
|
3297
|
+
// The drag-back preview reuses the fill overlay geometry but greys the cells about to be cleared.
|
|
3298
|
+
var fillShrinkOverlay = (0, react_1.useMemo)(function () { return (fillShrink ? { range: fillShrink.clearRange } : undefined); }, [fillShrink]);
|
|
3132
3299
|
var selectionRenderer = (0, use_selection_renderer_1.useSelectionRenderer)({
|
|
3133
3300
|
sheetId: sheetId,
|
|
3134
3301
|
scale: scale,
|
|
3302
|
+
isFillShrink: fillShrink !== undefined,
|
|
3135
3303
|
onSelectionMouseDown: onSelectionElementMouseDown,
|
|
3136
3304
|
onMouseDownResizeHandle: onMouseDownResizeHandle,
|
|
3137
3305
|
onMouseDownMoveSelection: onMouseDownMoveSelection,
|
|
@@ -3160,6 +3328,10 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
3160
3328
|
readonly: readonly,
|
|
3161
3329
|
onSplitTextToColumns: onSplitTextToColumns,
|
|
3162
3330
|
showPasteMenu: showPasteMenu,
|
|
3331
|
+
fillOptions: fillOptions,
|
|
3332
|
+
onChooseFillType: handleChooseFillType,
|
|
3333
|
+
onOpenFillSeriesDialog: handleOpenFillSeriesDialog,
|
|
3334
|
+
onCloseFillOptions: handleCloseFillOptions,
|
|
3163
3335
|
hoveredCell: delayedHoveredCell,
|
|
3164
3336
|
onRemoveQuickEdit: onRemoveQuickEdit,
|
|
3165
3337
|
onAddQuickEdit: onAddQuickEdit,
|
|
@@ -3195,7 +3367,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
3195
3367
|
quickEditValues: quickEditValues,
|
|
3196
3368
|
});
|
|
3197
3369
|
// Hidden column markers
|
|
3198
|
-
var
|
|
3370
|
+
var _77 = tslib_1.__read((0, use_hidden_dimension_markers_1.useHiddenDimensionMarkers)({
|
|
3199
3371
|
sheetId: sheetId,
|
|
3200
3372
|
columnMetadata: columnMetadata,
|
|
3201
3373
|
rowMetadata: rowMetadata,
|
|
@@ -3208,7 +3380,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
3208
3380
|
columnCount: columnCount,
|
|
3209
3381
|
HiddenRowMarkers: HiddenRowMarkers,
|
|
3210
3382
|
HiddenColumnMarkers: HiddenColumnMarkers,
|
|
3211
|
-
}), 4), hiddenColumnMarkers =
|
|
3383
|
+
}), 4), hiddenColumnMarkers = _77[0], frozenHiddenColumnMarkers = _77[1], hiddenRowMarkers = _77[2], frozenHiddenRowMarkers = _77[3];
|
|
3212
3384
|
// Zoom lister
|
|
3213
3385
|
var onMouseWheel = (0, use_scale_listener_1.useScaleListener)({
|
|
3214
3386
|
zoomSpeed: zoomSpeed,
|
|
@@ -3388,7 +3560,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
3388
3560
|
});
|
|
3389
3561
|
// Pivot placeholders
|
|
3390
3562
|
var pivotPlaceholders = (0, react_1.useMemo)(function () {
|
|
3391
|
-
var
|
|
3563
|
+
var e_12, _a;
|
|
3392
3564
|
var _b, _c;
|
|
3393
3565
|
var placeholders = [];
|
|
3394
3566
|
var displayIdx = 0;
|
|
@@ -3404,12 +3576,12 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
3404
3576
|
}
|
|
3405
3577
|
}
|
|
3406
3578
|
}
|
|
3407
|
-
catch (
|
|
3579
|
+
catch (e_12_1) { e_12 = { error: e_12_1 }; }
|
|
3408
3580
|
finally {
|
|
3409
3581
|
try {
|
|
3410
3582
|
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
|
|
3411
3583
|
}
|
|
3412
|
-
finally { if (
|
|
3584
|
+
finally { if (e_12) throw e_12.error; }
|
|
3413
3585
|
}
|
|
3414
3586
|
return placeholders;
|
|
3415
3587
|
}, [pivotTables, sheetId, onRequestEditPivotTable, getCellOffsetFromCoords]);
|
|
@@ -3486,12 +3658,14 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
3486
3658
|
});
|
|
3487
3659
|
// props reference for spreadsheet api
|
|
3488
3660
|
propsReferenceRef.current = props;
|
|
3661
|
+
var openFillSeriesDialogForRef = (0, use_stable_ref_1.useStableRef)(openFillSeriesDialogFor);
|
|
3489
3662
|
// Expose a spreadsheet API
|
|
3490
3663
|
(0, use_isomorphic_layout_effect_1.useIsomorphicLayoutEffect)(function () {
|
|
3491
3664
|
var stableMethods = {
|
|
3492
3665
|
getUserEnteredValue: getUserEnteredStringValueStable,
|
|
3493
3666
|
scrollToCell: scrollToCell,
|
|
3494
3667
|
commit: commit,
|
|
3668
|
+
openFillSeriesDialog: function () { var _a; return (_a = openFillSeriesDialogForRef.current) === null || _a === void 0 ? void 0 : _a.call(openFillSeriesDialogForRef); },
|
|
3495
3669
|
};
|
|
3496
3670
|
setSpreadsheetApi(new spreadsheet_api_1.SpreadsheetApi(propsReferenceRef, stableMethods, store, instanceStore, instanceId));
|
|
3497
3671
|
}, []);
|
|
@@ -3573,7 +3747,7 @@ function CanvasGridComponent(props, forwardedRef) {
|
|
|
3573
3747
|
width === 0 || height === 0 ? (react_1.default.createElement("div", { className: "flex border-solid border-rnc-border border border-t border-b flex-1 justify-center items-center" },
|
|
3574
3748
|
react_1.default.createElement("div", { className: "space-y-2" },
|
|
3575
3749
|
react_1.default.createElement(ui_1.Skeleton, { className: "h-4 w-[250px]" }),
|
|
3576
|
-
react_1.default.createElement(ui_1.Skeleton, { className: "h-4 w-[250px]" })))) : (react_1.default.createElement(grid_5.Grid, { ref: gridRef, overscanCount: overscanCount, rowCount: sheetRowCount, columnCount: sheetColumnCount, rowHeight: rowHeight, columnWidth: columnWidth, itemRenderer: cellRenderer, headerRenderer: headerCellRenderer, selectionRenderer: selectionRenderer, gridLineColor: gridLineColor, gridLineWidth: gridLineWidth, borderStyles: finalBorderStyles, mergedCells: merges, scale: scale, width: width, height: height, frozenColumns: frozenColumns, frozenRows: frozenRows, activeCell: activeCell, selections: formulaMode ? formulaSelections : selections, FillHandle: fill_handle_1.FillHandle, showFillHandle: showFillHandle, fillHandleSize: fillHandleSize, showGridLines: showGridLines, enableCellOverlay: true, enableCellBackground: true, enableSelectionDrag: enableSelectionDrag, showFrozenColumnShadow: showFrozenSeparator, showFrozenRowShadow: showFrozenSeparator, selectionBorderColor: selectionBorderColor, selectionBackgroundColor: selectionBackgroundColor, fillhandleBorderColor: cellBackgroundColor, isDraggingSelection: isDragging, fillSelection: fillSelection, onPointerDown: handlePointerDown, onPointerUp: handlePointerUp, onMouseDown: handleMouseDown, onDoubleClick: handleDoubleClick, onFillHandleMouseDown: onFillHandleMouseDown, onFillHandleDoubleClick: onFillHandleDoubleClick,
|
|
3750
|
+
react_1.default.createElement(ui_1.Skeleton, { className: "h-4 w-[250px]" })))) : (react_1.default.createElement(grid_5.Grid, { ref: gridRef, overscanCount: overscanCount, rowCount: sheetRowCount, columnCount: sheetColumnCount, rowHeight: rowHeight, columnWidth: columnWidth, itemRenderer: cellRenderer, headerRenderer: headerCellRenderer, selectionRenderer: selectionRenderer, gridLineColor: gridLineColor, gridLineWidth: gridLineWidth, borderStyles: finalBorderStyles, mergedCells: merges, scale: scale, width: width, height: height, frozenColumns: frozenColumns, frozenRows: frozenRows, activeCell: activeCell, selections: formulaMode ? formulaSelections : selections, FillHandle: fill_handle_1.FillHandle, showFillHandle: showFillHandle, fillHandleSize: fillHandleSize, showGridLines: showGridLines, enableCellOverlay: true, enableCellBackground: true, enableSelectionDrag: enableSelectionDrag, showFrozenColumnShadow: showFrozenSeparator, showFrozenRowShadow: showFrozenSeparator, selectionBorderColor: selectionBorderColor, selectionBackgroundColor: selectionBackgroundColor, fillhandleBorderColor: cellBackgroundColor, isDraggingSelection: isDragging, fillSelection: fillShrinkOverlay !== null && fillShrinkOverlay !== void 0 ? fillShrinkOverlay : fillSelection, onPointerDown: handlePointerDown, onPointerUp: handlePointerUp, onMouseDown: handleMouseDown, onDoubleClick: handleDoubleClick, onFillHandleMouseDown: onFillHandleMouseDown, onFillHandleDoubleClick: onFillHandleDoubleClick,
|
|
3577
3751
|
// Dimension of fill handle
|
|
3578
3752
|
scrollToCellOffset: 4, scrollbarSize: scrollbarSize, isHiddenCell: isHiddenCell, isHiddenColumn: isHiddenColumn, isHiddenRow: isHiddenRow, visibleRowRanges: visibleRowRanges, isHiddenOverlay: isHiddenOverlay, isHiddenBackground: isHiddenBackground, overlayRenderer: cellOverlayRenderer, backgroundRenderer: cellBackgroundRenderer, shadowSettings: shadowSettings, onScroll: handleScroll, onViewPortChange: handleViewPortChange, autoFocus: autoFocus, snap: scrollSnap, scrollThrottleTimeout: scrollThrottleTimeout, preventBrowserDefaultScroll: preventBrowserDefaultScroll, showHeaders: showHeaders, gridChildren: gridChildren, onTouchStart: onTouchStart, onDimensionsChange: onDimensionsChange, extendScrollSize: helpers_1.isTouchDevice || helpers_1.isFirefox, isTouchDevice: helpers_1.isTouchDevice, frozenShadowThickness: frozenShadowThickness, onAfterScrollToCell: onAfterScrollToCell, estimatedRowHeight: defaultRowHeight, estimatedColumnWidth: defaultColumnWidth, footerHeight: footerHeight, footerComponent: footerComponent, getOverflowBuffer: getOverflowBuffer, getFrozenColumnOverflowCells: getFrozenColumnOverflowCells })),
|
|
3579
3753
|
tooltipComponent,
|