@rowsncolumns/spreadsheet-state 28.0.73 → 28.0.74
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/advanced-filter.d.ts +72 -0
- package/dist/cjs/api/advanced-filter.d.ts.map +1 -0
- package/dist/cjs/api/advanced-filter.js +0 -0
- package/dist/cjs/api/goal-seek.d.ts +29 -0
- package/dist/cjs/api/goal-seek.d.ts.map +1 -0
- package/dist/cjs/api/goal-seek.js +131 -0
- package/dist/cjs/api/immer-utils.d.ts.map +1 -1
- package/dist/cjs/api/immer-utils.js +1 -0
- package/dist/cjs/api/paint-format.d.ts +41 -0
- package/dist/cjs/api/paint-format.d.ts.map +1 -0
- package/dist/cjs/api/paint-format.js +115 -0
- package/dist/cjs/api/split-text.d.ts +12 -0
- package/dist/cjs/api/split-text.d.ts.map +1 -1
- package/dist/cjs/api/split-text.js +41 -0
- package/dist/cjs/api/subtotal.d.ts +85 -0
- package/dist/cjs/api/subtotal.d.ts.map +1 -0
- package/dist/cjs/api/subtotal.js +250 -0
- package/dist/cjs/commands.d.ts +8 -0
- package/dist/cjs/commands.d.ts.map +1 -1
- package/dist/cjs/components/editors/data-validation-rule-editor.d.ts.map +1 -1
- package/dist/cjs/components/editors/data-validation-rule-editor.js +83 -16
- package/dist/cjs/hooks/use-calculation-worker.d.ts.map +1 -1
- package/dist/cjs/hooks/use-calculation-worker.js +1 -0
- package/dist/cjs/hooks/use-on-advanced-filter.d.ts +21 -0
- package/dist/cjs/hooks/use-on-advanced-filter.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-advanced-filter.js +42 -0
- package/dist/cjs/hooks/use-on-goal-seek.d.ts +30 -0
- package/dist/cjs/hooks/use-on-goal-seek.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-goal-seek.js +140 -0
- package/dist/cjs/hooks/use-on-import-excel.d.ts +10 -1
- package/dist/cjs/hooks/use-on-import-excel.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-import-excel.js +8 -4
- package/dist/cjs/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-merge-unmerge-cells.js +53 -34
- package/dist/cjs/hooks/use-on-subtotal.d.ts +26 -0
- package/dist/cjs/hooks/use-on-subtotal.d.ts.map +1 -0
- package/dist/cjs/hooks/use-on-subtotal.js +53 -0
- package/dist/cjs/hooks/use-paint-format.d.ts +19 -3
- package/dist/cjs/hooks/use-paint-format.d.ts.map +1 -1
- package/dist/cjs/hooks/use-paint-format.js +85 -31
- package/dist/cjs/hooks/use-sheet-properties.d.ts +2 -0
- package/dist/cjs/hooks/use-sheet-properties.d.ts.map +1 -1
- package/dist/cjs/hooks/use-sheet-properties.js +4 -0
- package/dist/cjs/hooks/use-split-text-to-columns.d.ts +2 -1
- package/dist/cjs/hooks/use-split-text-to-columns.d.ts.map +1 -1
- package/dist/cjs/hooks/use-split-text-to-columns.js +3 -2
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts +50 -36
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/cjs/hooks/use-spreadsheet-state.js +97 -18
- package/dist/cjs/index.d.ts +8 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/interface/change-batch-stream.d.ts.map +1 -1
- package/dist/cjs/interface/change-batch-stream.js +12 -6
- package/dist/cjs/interface/change-batch.d.ts.map +1 -1
- package/dist/cjs/interface/change-batch.js +17 -9
- package/dist/cjs/interface/change-formatting.d.ts.map +1 -1
- package/dist/cjs/interface/change-formatting.js +30 -11
- package/dist/cjs/interface/split-text.d.ts +2 -1
- package/dist/cjs/interface/split-text.d.ts.map +1 -1
- package/dist/cjs/interface/split-text.js +7 -3
- package/dist/cjs/interface/spreadsheet-interface.d.ts.map +1 -1
- package/dist/cjs/interface/spreadsheet-interface.js +2 -2
- package/dist/cjs/sheet-cell.d.ts.map +1 -1
- package/dist/cjs/sheet-cell.js +7 -0
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/api/advanced-filter.d.ts +72 -0
- package/dist/esm/api/advanced-filter.d.ts.map +1 -0
- package/dist/esm/api/advanced-filter.js +0 -0
- package/dist/esm/api/goal-seek.d.ts +29 -0
- package/dist/esm/api/goal-seek.d.ts.map +1 -0
- package/dist/esm/api/goal-seek.js +108 -0
- package/dist/esm/api/immer-utils.d.ts.map +1 -1
- package/dist/esm/api/immer-utils.js +1 -0
- package/dist/esm/api/paint-format.d.ts +41 -0
- package/dist/esm/api/paint-format.d.ts.map +1 -0
- package/dist/esm/api/paint-format.js +77 -0
- package/dist/esm/api/split-text.d.ts +12 -0
- package/dist/esm/api/split-text.d.ts.map +1 -1
- package/dist/esm/api/split-text.js +28 -0
- package/dist/esm/api/subtotal.d.ts +85 -0
- package/dist/esm/api/subtotal.d.ts.map +1 -0
- package/dist/esm/api/subtotal.js +181 -0
- package/dist/esm/commands.d.ts +8 -0
- package/dist/esm/commands.d.ts.map +1 -1
- package/dist/esm/components/editors/data-validation-rule-editor.d.ts.map +1 -1
- package/dist/esm/components/editors/data-validation-rule-editor.js +52 -4
- package/dist/esm/hooks/use-calculation-worker.d.ts.map +1 -1
- package/dist/esm/hooks/use-calculation-worker.js +1 -0
- package/dist/esm/hooks/use-on-advanced-filter.d.ts +21 -0
- package/dist/esm/hooks/use-on-advanced-filter.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-advanced-filter.js +41 -0
- package/dist/esm/hooks/use-on-goal-seek.d.ts +30 -0
- package/dist/esm/hooks/use-on-goal-seek.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-goal-seek.js +82 -0
- package/dist/esm/hooks/use-on-import-excel.d.ts +10 -1
- package/dist/esm/hooks/use-on-import-excel.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-import-excel.js +8 -4
- package/dist/esm/hooks/use-on-merge-unmerge-cells.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-merge-unmerge-cells.js +13 -13
- package/dist/esm/hooks/use-on-subtotal.d.ts +26 -0
- package/dist/esm/hooks/use-on-subtotal.d.ts.map +1 -0
- package/dist/esm/hooks/use-on-subtotal.js +48 -0
- package/dist/esm/hooks/use-paint-format.d.ts +19 -3
- package/dist/esm/hooks/use-paint-format.d.ts.map +1 -1
- package/dist/esm/hooks/use-paint-format.js +71 -29
- package/dist/esm/hooks/use-sheet-properties.d.ts +2 -0
- package/dist/esm/hooks/use-sheet-properties.d.ts.map +1 -1
- package/dist/esm/hooks/use-sheet-properties.js +4 -0
- package/dist/esm/hooks/use-split-text-to-columns.d.ts +2 -1
- package/dist/esm/hooks/use-split-text-to-columns.d.ts.map +1 -1
- package/dist/esm/hooks/use-split-text-to-columns.js +3 -2
- package/dist/esm/hooks/use-spreadsheet-state.d.ts +50 -36
- package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/esm/hooks/use-spreadsheet-state.js +88 -16
- package/dist/esm/index.d.ts +8 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +8 -0
- package/dist/esm/interface/change-batch-stream.d.ts.map +1 -1
- package/dist/esm/interface/change-batch-stream.js +12 -6
- package/dist/esm/interface/change-batch.d.ts.map +1 -1
- package/dist/esm/interface/change-batch.js +15 -9
- package/dist/esm/interface/change-formatting.d.ts.map +1 -1
- package/dist/esm/interface/change-formatting.js +28 -11
- package/dist/esm/interface/split-text.d.ts +2 -1
- package/dist/esm/interface/split-text.d.ts.map +1 -1
- package/dist/esm/interface/split-text.js +6 -3
- package/dist/esm/interface/spreadsheet-interface.d.ts.map +1 -1
- package/dist/esm/interface/spreadsheet-interface.js +2 -2
- package/dist/esm/sheet-cell.d.ts.map +1 -1
- package/dist/esm/sheet-cell.js +7 -0
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +18 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-import-excel.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-import-excel.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"use-on-import-excel.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-import-excel.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ import { produce, produceWithPatches } from "immer";
|
|
|
5
5
|
import { useCallback, useState } from "react";
|
|
6
6
|
import { SheetCell } from "../sheet-cell";
|
|
7
7
|
const TIMEOUT_FONT_LOAD = 5000;
|
|
8
|
-
export const useOnImportExcelFile = ({ enableExcelImportHistory = false, onChangeSheetData, onChangeSheets, onChangeTables, onChangeEmbeds, onChangeNamedRanges, onChangeSharedStrings, onChangeConditionalFormats, onChangeDataValidations, onChangeCellXfs, onChangeCharts, onRequestFonts, onChangeTheme, onCreateDataValidationRule, onClearHistory, onChangeHistory, onChangeSlicers, onChangePivotTables, evaluateConditionalFormatting, evaluateDataValidations, clearRangeCache, onConfirm, onPrompt, }) => {
|
|
8
|
+
export const useOnImportExcelFile = ({ enableExcelImportHistory = false, onChangeSheetData, onChangeSheets, onChangeTables, onChangeEmbeds, onChangeNamedRanges, onChangeSharedStrings, onChangeConditionalFormats, onChangeDataValidations, onChangeCellXfs, onChangeCharts, onRequestFonts, onChangeTheme, onChangeNamedCellStyles, onCreateDataValidationRule, onClearHistory, onChangeHistory, onChangeSlicers, onChangePivotTables, evaluateConditionalFormatting, evaluateDataValidations, clearRangeCache, onConfirm, onPrompt, }) => {
|
|
9
9
|
const [isImportingExcelfile, setIsImporting] = useState(false);
|
|
10
10
|
const [showLoader, hideLoader] = useLoadingIndicator();
|
|
11
11
|
const getViewPort = useGetViewPort();
|
|
@@ -229,7 +229,7 @@ export const useOnImportExcelFile = ({ enableExcelImportHistory = false, onChang
|
|
|
229
229
|
const { observable, sendMessage } = createExcelImportWorker(file, minRowCount, minColumnCount);
|
|
230
230
|
let requiresRecalc = false;
|
|
231
231
|
let iterativeCalculationOptions;
|
|
232
|
-
let
|
|
232
|
+
let sourceUse1904 = false;
|
|
233
233
|
let isPromptingForPassword = false;
|
|
234
234
|
let isPasswordProtected = false;
|
|
235
235
|
// Set import
|
|
@@ -345,7 +345,7 @@ export const useOnImportExcelFile = ({ enableExcelImportHistory = false, onChang
|
|
|
345
345
|
requiresRecalc = response.requiresRecalc ?? false;
|
|
346
346
|
iterativeCalculationOptions =
|
|
347
347
|
response.iterativeCalculationOptions ?? undefined;
|
|
348
|
-
|
|
348
|
+
sourceUse1904 = response.use1904 ?? false;
|
|
349
349
|
}
|
|
350
350
|
if (response.responseType === ResponseType.GET_SHEETS_SUCCESS) {
|
|
351
351
|
onChangeSheets(response.sheets);
|
|
@@ -357,6 +357,9 @@ export const useOnImportExcelFile = ({ enableExcelImportHistory = false, onChang
|
|
|
357
357
|
if (response.theme) {
|
|
358
358
|
onChangeTheme?.(response.theme);
|
|
359
359
|
}
|
|
360
|
+
if (response.namedCellStyles) {
|
|
361
|
+
onChangeNamedCellStyles?.(response.namedCellStyles);
|
|
362
|
+
}
|
|
360
363
|
}
|
|
361
364
|
if (response.responseType === ResponseType.GET_CONDITIONAL_FORMATTING) {
|
|
362
365
|
showLoader("Loading conditional formatting");
|
|
@@ -555,7 +558,8 @@ export const useOnImportExcelFile = ({ enableExcelImportHistory = false, onChang
|
|
|
555
558
|
resolve({
|
|
556
559
|
requiresRecalc,
|
|
557
560
|
iterativeCalculationOptions,
|
|
558
|
-
use1904,
|
|
561
|
+
use1904: false,
|
|
562
|
+
sourceUse1904,
|
|
559
563
|
success: true,
|
|
560
564
|
isPasswordProtected,
|
|
561
565
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-merge-unmerge-cells.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-merge-unmerge-cells.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,SAAS,EAGV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,KAAK,EACN,MAAM,2BAA2B,CAAC;AAOnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAO9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,KAAK,2BAA2B,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC/D,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,kBAAkB,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC3E,kBAAkB,EAAE,CAAC,SAAS,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC9D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,iKAWzE,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC;4BASrB,MAAM,cACH,aAAa,cACb,aAAa,CAAC,mBAAmB,CAAC,EAAE,cACpC,SAAS;
|
|
1
|
+
{"version":3,"file":"use-on-merge-unmerge-cells.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-merge-unmerge-cells.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,SAAS,EAGV,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,KAAK,EACN,MAAM,2BAA2B,CAAC;AAOnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAO9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,KAAK,2BAA2B,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC/D,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,kBAAkB,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC3E,kBAAkB,EAAE,CAAC,SAAS,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAC9D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,iKAWzE,2BAA2B,CAAC,CAAC,EAAE,CAAC,CAAC;4BASrB,MAAM,cACH,aAAa,cACb,aAAa,CAAC,mBAAmB,CAAC,EAAE,cACpC,SAAS;8BAqRZ,MAAM,cACH,aAAa,qBACN,aAAa,CAAC,mBAAmB,CAAC,EAAE;CA4I5D,CAAC"}
|
|
@@ -51,6 +51,13 @@ export const useOnMergeUnMergeCells = ({ locale, merges, cellXfsRegistry, shared
|
|
|
51
51
|
});
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
+
else if (selections.length > 1) {
|
|
55
|
+
// A multi-area selection merges each area on its own (Excel's Merge & Center on a
|
|
56
|
+
// Ctrl-selection). The format painter tiles a source block's merges through this path.
|
|
57
|
+
for (const sel of selections) {
|
|
58
|
+
newMerges.push(sel.range);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
54
61
|
else {
|
|
55
62
|
newMerges.push(range);
|
|
56
63
|
}
|
|
@@ -136,22 +143,15 @@ export const useOnMergeUnMergeCells = ({ locale, merges, cellXfsRegistry, shared
|
|
|
136
143
|
// Keep track of master cells
|
|
137
144
|
// Merging cells only keeps the upper-left value and discards other values.
|
|
138
145
|
const masterCells = new Set();
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
masterCells.add(cellIdentifier(rowIndex, range.startColumnIndex));
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
else if (direction === Direction.Down) {
|
|
145
|
-
for (let columnIndex = range.startColumnIndex; columnIndex <= range.endColumnIndex; columnIndex++) {
|
|
146
|
-
masterCells.add(cellIdentifier(range.startRowIndex, columnIndex));
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
masterCells.add(cellIdentifier(range.startRowIndex, range.startColumnIndex));
|
|
146
|
+
for (const merge of newMerges) {
|
|
147
|
+
masterCells.add(cellIdentifier(merge.startRowIndex, merge.startColumnIndex));
|
|
151
148
|
}
|
|
152
149
|
// Create a cell
|
|
153
150
|
const sheetCell = new SheetCell();
|
|
154
|
-
|
|
151
|
+
const mergedCells = newMerges.flatMap((merge) => [
|
|
152
|
+
...iterateCellsInRange(merge),
|
|
153
|
+
]);
|
|
154
|
+
for (const [rowIndex, columnIndex] of mergedCells) {
|
|
155
155
|
const cellId = cellIdentifier(rowIndex, columnIndex);
|
|
156
156
|
if (masterCells.has(cellId)) {
|
|
157
157
|
continue;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { GridRange } from "@rowsncolumns/common-types";
|
|
2
|
+
import { type SubtotalOptions, type SubtotalPlan, type SubtotalPlanExecutor } from "../api/subtotal";
|
|
3
|
+
import type { useSheetProperties } from "./use-sheet-properties";
|
|
4
|
+
export type { SubtotalOptions, SubtotalPlan };
|
|
5
|
+
export type UseOnSubtotalProps = {
|
|
6
|
+
getEffectiveValue: ReturnType<typeof useSheetProperties>["getEffectiveValue"];
|
|
7
|
+
getFormattedValue: ReturnType<typeof useSheetProperties>["getFormattedValue"];
|
|
8
|
+
getFormulaValue: ReturnType<typeof useSheetProperties>["getFormulaValue"];
|
|
9
|
+
getRowOutlineLevel: ReturnType<typeof useSheetProperties>["getRowOutlineLevel"];
|
|
10
|
+
onDeleteRow: SubtotalPlanExecutor["onDeleteRow"];
|
|
11
|
+
onInsertRow: SubtotalPlanExecutor["onInsertRow"];
|
|
12
|
+
onChangeBatch: (sheetId: number, ranges: GridRange, values: (string | null)[][]) => void;
|
|
13
|
+
onGroupRows: SubtotalPlanExecutor["onGroupRows"];
|
|
14
|
+
onUngroupRows: SubtotalPlanExecutor["onUngroupRows"];
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Excel's Data → Outline → Subtotal, composed over the existing row
|
|
18
|
+
* insert / batch write / row grouping callbacks so both engines execute it
|
|
19
|
+
* through the same streamed commands (see `planSubtotals` for the layout).
|
|
20
|
+
* Groups on the DISPLAYED value of the group column (Excel compares what the
|
|
21
|
+
* cells show). "Replace current subtotals" also resets the range's outline
|
|
22
|
+
* before regrouping, so re-applying keeps Excel's three levels. Returns the
|
|
23
|
+
* applied plan, or `undefined` when the range is protected or has no data rows.
|
|
24
|
+
*/
|
|
25
|
+
export declare const useOnSubtotal: ({ getEffectiveValue, getFormattedValue, getFormulaValue, getRowOutlineLevel, onDeleteRow, onInsertRow, onChangeBatch, onGroupRows, onUngroupRows, }: UseOnSubtotalProps) => (sheetId: number, options: SubtotalOptions) => SubtotalPlan | undefined;
|
|
26
|
+
//# sourceMappingURL=use-on-subtotal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-on-subtotal.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-subtotal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAG5D,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAC1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC;AAE9C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,iBAAiB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E,iBAAiB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E,eAAe,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAC1E,kBAAkB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAChF,WAAW,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACjD,WAAW,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACjD,aAAa,EAAE,CACb,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,EAAE,KACxB,IAAI,CAAC;IACV,WAAW,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACjD,aAAa,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC;CACtD,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa,GAAI,qJAU3B,kBAAkB,eAIP,MAAM,WAAW,eAAe,KAAG,YAAY,GAAG,SAoC/D,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { applySubtotalPlan, planSubtotals, } from "../api/subtotal";
|
|
3
|
+
import { useCanEditCellRange } from "./use-can-edit-cellrange";
|
|
4
|
+
/**
|
|
5
|
+
* Excel's Data → Outline → Subtotal, composed over the existing row
|
|
6
|
+
* insert / batch write / row grouping callbacks so both engines execute it
|
|
7
|
+
* through the same streamed commands (see `planSubtotals` for the layout).
|
|
8
|
+
* Groups on the DISPLAYED value of the group column (Excel compares what the
|
|
9
|
+
* cells show). "Replace current subtotals" also resets the range's outline
|
|
10
|
+
* before regrouping, so re-applying keeps Excel's three levels. Returns the
|
|
11
|
+
* applied plan, or `undefined` when the range is protected or has no data rows.
|
|
12
|
+
*/
|
|
13
|
+
export const useOnSubtotal = ({ getEffectiveValue, getFormattedValue, getFormulaValue, getRowOutlineLevel, onDeleteRow, onInsertRow, onChangeBatch, onGroupRows, onUngroupRows, }) => {
|
|
14
|
+
const canEditCellRange = useCanEditCellRange();
|
|
15
|
+
return useCallback((sheetId, options) => {
|
|
16
|
+
if (!canEditCellRange(sheetId, options.range)) {
|
|
17
|
+
console.debug("This range is protected, users cannot edit this cell range.");
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const plan = planSubtotals(options, {
|
|
21
|
+
getValue: (rowIndex, columnIndex) => getFormattedValue(sheetId, rowIndex, columnIndex) ??
|
|
22
|
+
getEffectiveValue(sheetId, rowIndex, columnIndex),
|
|
23
|
+
getFormula: (rowIndex, columnIndex) => getFormulaValue(sheetId, rowIndex, columnIndex),
|
|
24
|
+
getOutlineLevel: (rowIndex) => getRowOutlineLevel(sheetId, rowIndex),
|
|
25
|
+
});
|
|
26
|
+
if (!plan)
|
|
27
|
+
return undefined;
|
|
28
|
+
applySubtotalPlan(sheetId, plan, {
|
|
29
|
+
onDeleteRow,
|
|
30
|
+
onInsertRow,
|
|
31
|
+
onChangeBatch,
|
|
32
|
+
onGroupRows,
|
|
33
|
+
onUngroupRows,
|
|
34
|
+
});
|
|
35
|
+
return plan;
|
|
36
|
+
}, [
|
|
37
|
+
canEditCellRange,
|
|
38
|
+
getEffectiveValue,
|
|
39
|
+
getFormattedValue,
|
|
40
|
+
getFormulaValue,
|
|
41
|
+
getRowOutlineLevel,
|
|
42
|
+
onDeleteRow,
|
|
43
|
+
onInsertRow,
|
|
44
|
+
onChangeBatch,
|
|
45
|
+
onGroupRows,
|
|
46
|
+
onUngroupRows,
|
|
47
|
+
]);
|
|
48
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CellInterface, SelectionArea } from "@rowsncolumns/common-types";
|
|
2
|
-
import type { SelectionAttributes, SheetRange } from "@rowsncolumns/spreadsheet";
|
|
1
|
+
import type { CellInterface, GridRange, SelectionArea } from "@rowsncolumns/common-types";
|
|
2
|
+
import type { CellFormat, SelectionAttributes, SheetRange } from "@rowsncolumns/spreadsheet";
|
|
3
3
|
import type { useOnChangeFormatting } from "./use-on-change-formatting";
|
|
4
4
|
import type { useSheetProperties } from "./use-sheet-properties";
|
|
5
5
|
import type { useSheetState } from "./use-sheet-state";
|
|
@@ -7,8 +7,24 @@ export type UsePaintFormatProps = {
|
|
|
7
7
|
onChangeSelections: ReturnType<typeof useSheetState>["onChangeSelections"];
|
|
8
8
|
onChangeFormatting: ReturnType<typeof useOnChangeFormatting>["onChangeFormatting"];
|
|
9
9
|
getEffectiveFormat: ReturnType<typeof useSheetProperties>["getEffectiveFormat"];
|
|
10
|
+
/**
|
|
11
|
+
* The merges of a sheet (absolute ranges). When provided, the painter carries the merges that
|
|
12
|
+
* lie fully inside the source block and tiles them onto the target (Sheets / Excel parity).
|
|
13
|
+
*/
|
|
14
|
+
getMerges?: (sheetId: number) => GridRange[] | null | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Replace the merges inside `targetRange` with `merges` (already tiled, absolute). The
|
|
17
|
+
* spreadsheet-state wiring unmerges the target then merges each range in one step.
|
|
18
|
+
*/
|
|
19
|
+
onPaintMerges?: (sheetId: number, activeCell: CellInterface, targetRange: GridRange, merges: GridRange[]) => void;
|
|
20
|
+
/**
|
|
21
|
+
* The table-banding / alternating-colour formats the grid paints on a sheet (keyed by
|
|
22
|
+
* `cellIdentifier`). When provided, the captured pattern carries the visible stripe colours as
|
|
23
|
+
* static fills, like Sheets.
|
|
24
|
+
*/
|
|
25
|
+
getBandedCells?: (sheetId: number) => Map<string, CellFormat> | undefined;
|
|
10
26
|
};
|
|
11
|
-
export declare const usePaintFormat: ({ getEffectiveFormat, onChangeFormatting, onChangeSelections, }: UsePaintFormatProps) => {
|
|
27
|
+
export declare const usePaintFormat: ({ getEffectiveFormat, onChangeFormatting, onChangeSelections, getMerges, onPaintMerges, getBandedCells, }: UsePaintFormatProps) => {
|
|
12
28
|
isPaintFormatActive: boolean;
|
|
13
29
|
onSavePaintFormat: (sheetId: number, activeCell: CellInterface, selections: SelectionArea<SelectionAttributes>[]) => void;
|
|
14
30
|
onApplyPaintFormat: (sheetId: number, activeCell: CellInterface, selections?: SelectionArea<SelectionAttributes>[]) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-paint-format.d.ts","sourceRoot":"","sources":["../../../hooks/use-paint-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"use-paint-format.d.ts","sourceRoot":"","sources":["../../../hooks/use-paint-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,aAAa,EACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EACV,UAAU,EACV,mBAAmB,EACnB,UAAU,EACX,MAAM,2BAA2B,CAAC;AAUnC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,MAAM,mBAAmB,GAAG;IAChC,kBAAkB,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC3E,kBAAkB,EAAE,UAAU,CAC5B,OAAO,qBAAqB,CAC7B,CAAC,oBAAoB,CAAC,CAAC;IACxB,kBAAkB,EAAE,UAAU,CAC5B,OAAO,kBAAkB,CAC1B,CAAC,oBAAoB,CAAC,CAAC;IACxB;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,EAAE,GAAG,IAAI,GAAG,SAAS,CAAC;IAChE;;;OAGG;IACH,aAAa,CAAC,EAAE,CACd,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,aAAa,EACzB,WAAW,EAAE,SAAS,EACtB,MAAM,EAAE,SAAS,EAAE,KAChB,IAAI,CAAC;IACV;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC;CAC3E,CAAC;AAaF,eAAO,MAAM,cAAc,GAAI,2GAO5B,mBAAmB;;iCA4EP,MAAM,cACH,aAAa,cACb,aAAa,CAAC,mBAAmB,CAAC,EAAE;kCAkBvC,MAAM,cACH,aAAa,eACZ,aAAa,CAAC,mBAAmB,CAAC,EAAE;oCAkF/B,UAAU,oBAIV,UAAU;CAmCjC,CAAC"}
|
|
@@ -1,26 +1,64 @@
|
|
|
1
1
|
import { selectionFromActiveCell } from "@rowsncolumns/grid";
|
|
2
2
|
import { useCallback, useState } from "react";
|
|
3
|
+
import { collectPaintMerges, getBandedCellFormat, layerBandedFormat, tilePaintMerges, } from "../api/paint-format";
|
|
3
4
|
// A paint-format target spanning at least this many rows/cols is a header-click
|
|
4
5
|
// full-column/row selection, not an intentional drag — bound it to the pattern.
|
|
5
6
|
const UNBOUNDED_PAINT_SPAN = 10_000;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
const EMPTY_PATTERN = {
|
|
8
|
+
formats: [],
|
|
9
|
+
merges: [],
|
|
10
|
+
rows: 0,
|
|
11
|
+
cols: 0,
|
|
12
|
+
};
|
|
13
|
+
export const usePaintFormat = ({ getEffectiveFormat, onChangeFormatting, onChangeSelections, getMerges, onPaintMerges, getBandedCells, }) => {
|
|
14
|
+
const [pattern, setPattern] = useState(EMPTY_PATTERN);
|
|
15
|
+
const paintFormats = pattern.formats;
|
|
16
|
+
/**
|
|
17
|
+
* Capture the visible look of `range`: the effective format of every cell layered over the
|
|
18
|
+
* table stripe the grid paints beneath it, plus the merges fully inside the range.
|
|
19
|
+
*/
|
|
20
|
+
const capturePattern = useCallback((sheetId, ranges) => {
|
|
21
|
+
const bandedCells = getBandedCells?.(sheetId);
|
|
22
|
+
const formats = [];
|
|
23
|
+
for (const range of ranges) {
|
|
24
|
+
for (let rowIndex = range.startRowIndex; rowIndex <= range.endRowIndex; rowIndex++) {
|
|
15
25
|
const rowFormats = [];
|
|
16
|
-
for (let columnIndex =
|
|
17
|
-
rowFormats.push(getEffectiveFormat(sheetId, rowIndex, columnIndex));
|
|
26
|
+
for (let columnIndex = range.startColumnIndex; columnIndex <= range.endColumnIndex; columnIndex++) {
|
|
27
|
+
rowFormats.push(layerBandedFormat(getEffectiveFormat(sheetId, rowIndex, columnIndex), getBandedCellFormat(bandedCells, rowIndex, columnIndex)));
|
|
18
28
|
}
|
|
19
|
-
|
|
29
|
+
formats.push(rowFormats);
|
|
20
30
|
}
|
|
21
31
|
}
|
|
22
|
-
|
|
23
|
-
|
|
32
|
+
// Merges travel with a single-block source only; a multi-area capture has no single
|
|
33
|
+
// tiling origin (the format rows are stacked, as before).
|
|
34
|
+
const source = ranges.length === 1 ? ranges[0] : undefined;
|
|
35
|
+
const merges = source
|
|
36
|
+
? collectPaintMerges(getMerges?.(sheetId), source)
|
|
37
|
+
: [];
|
|
38
|
+
return {
|
|
39
|
+
formats,
|
|
40
|
+
merges,
|
|
41
|
+
rows: formats.length,
|
|
42
|
+
cols: formats[0]?.length ?? 0,
|
|
43
|
+
};
|
|
44
|
+
}, [getEffectiveFormat, getBandedCells, getMerges]);
|
|
45
|
+
/**
|
|
46
|
+
* Replace the target's merges with the pattern's, tiled with the pattern's period.
|
|
47
|
+
*/
|
|
48
|
+
const applyPatternMerges = useCallback((sheetId, activeCell, current, targets) => {
|
|
49
|
+
if (!current.merges.length || !onPaintMerges)
|
|
50
|
+
return;
|
|
51
|
+
for (const target of targets) {
|
|
52
|
+
const tiled = tilePaintMerges(current.merges, current.rows, current.cols, target);
|
|
53
|
+
onPaintMerges(sheetId, activeCell, target, tiled);
|
|
54
|
+
}
|
|
55
|
+
}, [onPaintMerges]);
|
|
56
|
+
const onSavePaintFormat = useCallback((sheetId, activeCell, selections) => {
|
|
57
|
+
const finalSelections = selections.length
|
|
58
|
+
? selections
|
|
59
|
+
: selectionFromActiveCell(activeCell);
|
|
60
|
+
setPattern(capturePattern(sheetId, finalSelections.map((sel) => sel.range)));
|
|
61
|
+
}, [capturePattern]);
|
|
24
62
|
// Applies a saved paintFormat
|
|
25
63
|
const onApplyPaintFormat = useCallback((sheetId, activeCell, selections) => {
|
|
26
64
|
/**
|
|
@@ -32,9 +70,7 @@ export const usePaintFormat = ({ getEffectiveFormat, onChangeFormatting, onChang
|
|
|
32
70
|
// `changeFormatting` repeats the grid via its rolling indices). Only
|
|
33
71
|
// header-click full-column/row targets are bounded to the pattern so a paint
|
|
34
72
|
// never enumerates an entire 1M-row column.
|
|
35
|
-
const clampEnd = (start, end, span) => end - start >= UNBOUNDED_PAINT_SPAN
|
|
36
|
-
? Math.min(end, start + span)
|
|
37
|
-
: end;
|
|
73
|
+
const clampEnd = (start, end, span) => end - start >= UNBOUNDED_PAINT_SPAN ? Math.min(end, start + span) : end;
|
|
38
74
|
const newSelections = selections?.length
|
|
39
75
|
? selections.map((sel) => ({
|
|
40
76
|
...sel,
|
|
@@ -58,6 +94,8 @@ export const usePaintFormat = ({ getEffectiveFormat, onChangeFormatting, onChang
|
|
|
58
94
|
onChangeFormatting(sheetId, activeCell, newSelections, paintFormats, {
|
|
59
95
|
replace: true,
|
|
60
96
|
});
|
|
97
|
+
// Merges tile with the same period as the formats.
|
|
98
|
+
applyPatternMerges(sheetId, activeCell, pattern, newSelections.map((sel) => sel.range));
|
|
61
99
|
/**
|
|
62
100
|
* User has made selections. lets preserve it
|
|
63
101
|
*/
|
|
@@ -65,8 +103,14 @@ export const usePaintFormat = ({ getEffectiveFormat, onChangeFormatting, onChang
|
|
|
65
103
|
onChangeSelections?.(sheetId, newSelections);
|
|
66
104
|
}
|
|
67
105
|
// Reset paintformats
|
|
68
|
-
|
|
69
|
-
}, [
|
|
106
|
+
setPattern(EMPTY_PATTERN);
|
|
107
|
+
}, [
|
|
108
|
+
pattern,
|
|
109
|
+
paintFormats,
|
|
110
|
+
onChangeSelections,
|
|
111
|
+
onChangeFormatting,
|
|
112
|
+
applyPatternMerges,
|
|
113
|
+
]);
|
|
70
114
|
/**
|
|
71
115
|
* Copy formatting from a source range to target range
|
|
72
116
|
*/
|
|
@@ -79,24 +123,22 @@ export const usePaintFormat = ({ getEffectiveFormat, onChangeFormatting, onChang
|
|
|
79
123
|
* Sheet range to paste to
|
|
80
124
|
*/
|
|
81
125
|
targetSheetRange) => {
|
|
82
|
-
const
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
for (let columnIndex = sourceSheetRange.startColumnIndex; columnIndex <= sourceSheetRange.endColumnIndex; columnIndex++) {
|
|
86
|
-
rowFormats.push(getEffectiveFormat(sourceSheetRange.sheetId, rowIndex, columnIndex));
|
|
87
|
-
}
|
|
88
|
-
paintFormats.push(rowFormats);
|
|
89
|
-
}
|
|
126
|
+
const captured = capturePattern(sourceSheetRange.sheetId, [
|
|
127
|
+
sourceSheetRange,
|
|
128
|
+
]);
|
|
90
129
|
// Apply
|
|
91
130
|
const activeCell = {
|
|
92
131
|
rowIndex: targetSheetRange.startRowIndex,
|
|
93
132
|
columnIndex: targetSheetRange.startColumnIndex,
|
|
94
133
|
};
|
|
95
134
|
// Copy formatting
|
|
96
|
-
onChangeFormatting(targetSheetRange.sheetId, activeCell, [{ range: targetSheetRange }],
|
|
135
|
+
onChangeFormatting(targetSheetRange.sheetId, activeCell, [{ range: targetSheetRange }], captured.formats, {
|
|
97
136
|
replace: true,
|
|
98
137
|
});
|
|
99
|
-
|
|
138
|
+
applyPatternMerges(targetSheetRange.sheetId, activeCell, captured, [
|
|
139
|
+
targetSheetRange,
|
|
140
|
+
]);
|
|
141
|
+
}, [onChangeFormatting, capturePattern, applyPatternMerges]);
|
|
100
142
|
return {
|
|
101
143
|
isPaintFormatActive: paintFormats.length > 0,
|
|
102
144
|
onSavePaintFormat,
|
|
@@ -49,6 +49,7 @@ export type UseSheetPropertiesProps<T extends CellData, S extends Sheet> = {
|
|
|
49
49
|
getPrecedents?: (cell: FormulaPosition) => FormulaPrecedents;
|
|
50
50
|
};
|
|
51
51
|
export declare const useSheetProperties: <T extends CellData = CellData, S extends Sheet = Sheet>({ conditionalFormats, sheetData, sheets, activeSheetId, dataValidations, protectFormulas, getEffectiveStructuredValue, cellXfs, cellXfsRegistry, cellStyles, sharedStrings, locale, use1904, lenientGrouping, getPrecedents, }: UseSheetPropertiesProps<T, S>) => {
|
|
52
|
+
getFormulaValue: (sheetId: number, rowIndex: number, columnIndex: number) => string | undefined;
|
|
52
53
|
getDataRowCount: (sheetId?: number) => number | undefined;
|
|
53
54
|
getNonEmptyRowCount: (sheetId: number) => number | undefined;
|
|
54
55
|
getNonEmptyColumnCount: (sheetId: number, rowIndex: number) => number | undefined;
|
|
@@ -87,6 +88,7 @@ export declare const useSheetProperties: <T extends CellData = CellData, S exten
|
|
|
87
88
|
getFormulasFromRange: (sheetRange: SheetRange, hiddenDimensionStategy?: HIDDEN_DIMENSION_STRATEGY) => (string | undefined)[];
|
|
88
89
|
isHiddenRow: (sheetId: number, rowIndex: number) => boolean;
|
|
89
90
|
isHiddenByFilterRow: (sheetId: number, rowIndex: number) => boolean;
|
|
91
|
+
getRowOutlineLevel: (sheetId: number, rowIndex: number) => number;
|
|
90
92
|
getSheetRowCount: (sheetId: number) => number;
|
|
91
93
|
getSheetColumnCount: (sheetId: number) => number;
|
|
92
94
|
getColumnWidth: (sheetId: number, columnIndex: number) => number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-sheet-properties.d.ts","sourceRoot":"","sources":["../../../hooks/use-sheet-properties.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAGjE,OAAO,KAAK,EACV,eAAe,EACf,QAAQ,EACR,UAAU,EACV,qBAAqB,EACrB,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,EACL,UAAU,EAEX,MAAM,2BAA2B,CAAC;AA+BnC,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAe7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,UAAU,CAAC;AAElB,KAAK,iBAAiB,GAAG,CAAC,QAAQ,GAAG,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC;AAEnE,KAAK,eAAe,GAAG;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IACzE,kBAAkB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAC7C,MAAM,EAAE,CAAC,EAAE,CAAC;IACZ,SAAS,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,wBAAwB,EAAE,CAAC;IAC7C,eAAe,CAAC,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACrD,2BAA2B,EAAE,mBAAmB,CAC9C,CAAC,EACD,CAAC,CACF,CAAC,6BAA6B,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC/C,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;OAIG;IACH,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrC,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,iBAAiB,CAAC;CAC9D,CAAC;AAoEF,eAAO,MAAM,kBAAkB,GAC7B,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAC7B,CAAC,SAAS,KAAK,GAAG,KAAK,EACvB,gOAgBC,uBAAuB,CAAC,CAAC,EAAE,CAAC,CAAC;;
|
|
1
|
+
{"version":3,"file":"use-sheet-properties.d.ts","sourceRoot":"","sources":["../../../hooks/use-sheet-properties.ts"],"names":[],"mappings":"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"}
|
|
@@ -226,6 +226,8 @@ export const useSheetProperties = ({ conditionalFormats, sheetData, sheets, acti
|
|
|
226
226
|
const metaData = sheetMetaDataById.get(sheetId)?.rowMetadata?.[rowIndex];
|
|
227
227
|
return Boolean(metaData?.hiddenByUser || metaData?.hiddenByFilter);
|
|
228
228
|
}, [sheetMetaDataById]);
|
|
229
|
+
// Outline (row grouping) level, 0 when the row is not grouped
|
|
230
|
+
const getRowOutlineLevel = useCallback((sheetId, rowIndex) => sheetMetaDataById.get(sheetId)?.rowMetadata?.[rowIndex]?.outlineLevel ?? 0, [sheetMetaDataById]);
|
|
229
231
|
// Hidden by filter row
|
|
230
232
|
const isHiddenByFilterRow = useCallback((sheetId, rowIndex) => {
|
|
231
233
|
const metaData = sheetMetaDataById.get(sheetId)?.rowMetadata?.[rowIndex];
|
|
@@ -867,6 +869,7 @@ export const useSheetProperties = ({ conditionalFormats, sheetData, sheets, acti
|
|
|
867
869
|
return columnarData;
|
|
868
870
|
}, [getEffectiveValue, getFormattedValue]));
|
|
869
871
|
return {
|
|
872
|
+
getFormulaValue,
|
|
870
873
|
getDataRowCount,
|
|
871
874
|
getNonEmptyRowCount,
|
|
872
875
|
getNonEmptyColumnCount,
|
|
@@ -898,6 +901,7 @@ export const useSheetProperties = ({ conditionalFormats, sheetData, sheets, acti
|
|
|
898
901
|
getFormulasFromRange,
|
|
899
902
|
isHiddenRow,
|
|
900
903
|
isHiddenByFilterRow,
|
|
904
|
+
getRowOutlineLevel,
|
|
901
905
|
getSheetRowCount,
|
|
902
906
|
getSheetColumnCount,
|
|
903
907
|
getColumnWidth,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { CellInterface, SelectionArea } from "@rowsncolumns/common-types";
|
|
2
2
|
import type { CellData, SelectionAttributes, Sheet } from "@rowsncolumns/spreadsheet";
|
|
3
|
+
import type { SplitTextOptions } from "../api/split-text";
|
|
3
4
|
import type { useCalculation } from "./use-calculation";
|
|
4
5
|
import type { useSheetProperties } from "./use-sheet-properties";
|
|
5
6
|
import type { useSheetState } from "./use-sheet-state";
|
|
@@ -15,5 +16,5 @@ export type UseSplitTextToColumnsProps<T extends CellData, S extends Sheet> = {
|
|
|
15
16
|
onChangeSelections: ReturnType<typeof useSheetState>["onChangeSelections"];
|
|
16
17
|
onCommand?: OnCommand;
|
|
17
18
|
};
|
|
18
|
-
export declare const useSplitTextToColumns: <T extends CellData, S extends Sheet>({ locale, getFormattedValue, onChangeSheetData, enqueueCalculation, createHistory, onChangeSelections, onCommand, }: UseSplitTextToColumnsProps<T, S>) => (sheetId: number, activeCell: CellInterface, selections?: SelectionArea<SelectionAttributes>[], delimiter?: string) => void;
|
|
19
|
+
export declare const useSplitTextToColumns: <T extends CellData, S extends Sheet>({ locale, getFormattedValue, onChangeSheetData, enqueueCalculation, createHistory, onChangeSelections, onCommand, }: UseSplitTextToColumnsProps<T, S>) => (sheetId: number, activeCell: CellInterface, selections?: SelectionArea<SelectionAttributes>[], delimiter?: string, options?: SplitTextOptions) => void;
|
|
19
20
|
//# sourceMappingURL=use-split-text-to-columns.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-split-text-to-columns.d.ts","sourceRoot":"","sources":["../../../hooks/use-split-text-to-columns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,KAAK,EACN,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"use-split-text-to-columns.d.ts","sourceRoot":"","sources":["../../../hooks/use-split-text-to-columns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EACV,QAAQ,EACR,mBAAmB,EACnB,KAAK,EACN,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC9E,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClE,kBAAkB,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC3E,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,qHAQxE,0BAA0B,CAAC,CAAC,EAAE,CAAC,CAAC,eAGpB,MAAM,cACH,aAAa,eACZ,aAAa,CAAC,mBAAmB,CAAC,EAAE,gCAEvC,gBAAgB,SA+B/B,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useCallback } from "react";
|
|
2
2
|
import { splitText } from "../interface/split-text";
|
|
3
3
|
export const useSplitTextToColumns = ({ locale, getFormattedValue, onChangeSheetData, enqueueCalculation, createHistory, onChangeSelections, onCommand, }) => {
|
|
4
|
-
return useCallback((sheetId, activeCell, selections, delimiter = ",") => {
|
|
4
|
+
return useCallback((sheetId, activeCell, selections, delimiter = ",", options) => {
|
|
5
5
|
splitText({
|
|
6
6
|
locale,
|
|
7
7
|
getFormattedValue,
|
|
@@ -9,7 +9,7 @@ export const useSplitTextToColumns = ({ locale, getFormattedValue, onChangeSheet
|
|
|
9
9
|
onChangeSheetData,
|
|
10
10
|
createHistory,
|
|
11
11
|
onChangeSelections,
|
|
12
|
-
})(sheetId, activeCell, selections, delimiter);
|
|
12
|
+
})(sheetId, activeCell, selections, delimiter, options);
|
|
13
13
|
// Stream the semantic command so an engine consumer re-splits + recomputes.
|
|
14
14
|
onCommand?.({
|
|
15
15
|
command: "split-text-to-columns",
|
|
@@ -17,6 +17,7 @@ export const useSplitTextToColumns = ({ locale, getFormattedValue, onChangeSheet
|
|
|
17
17
|
activeCell,
|
|
18
18
|
selections: selections ?? [],
|
|
19
19
|
delimiter,
|
|
20
|
+
columnBreaks: options?.columnBreaks,
|
|
20
21
|
});
|
|
21
22
|
}, [
|
|
22
23
|
locale,
|