@rowsncolumns/spreadsheet-state 29.1.4 → 29.1.7
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/circular-reference.d.ts +31 -0
- package/dist/cjs/api/circular-reference.d.ts.map +1 -0
- package/dist/cjs/api/circular-reference.js +85 -0
- package/dist/cjs/api/copy-paste.d.ts +6 -0
- package/dist/cjs/api/copy-paste.d.ts.map +1 -1
- package/dist/cjs/api/copy-paste.js +24 -15
- package/dist/cjs/api/datatype.d.ts +2 -0
- package/dist/cjs/api/datatype.d.ts.map +1 -1
- package/dist/cjs/api/datatype.js +61 -35
- package/dist/cjs/api/date.d.ts.map +1 -1
- package/dist/cjs/api/date.js +23 -14
- package/dist/cjs/api/decimals.d.ts +10 -0
- package/dist/cjs/api/decimals.d.ts.map +1 -1
- package/dist/cjs/api/decimals.js +34 -11
- package/dist/cjs/api/dependency.d.ts +19 -1
- package/dist/cjs/api/dependency.d.ts.map +1 -1
- package/dist/cjs/api/dependency.js +30 -14
- package/dist/cjs/api/filter-condition.d.ts +58 -0
- package/dist/cjs/api/filter-condition.d.ts.map +1 -0
- package/dist/cjs/api/filter-condition.js +157 -0
- package/dist/cjs/api/formula.d.ts.map +1 -1
- package/dist/cjs/api/formula.js +9 -7
- package/dist/cjs/api/image-embed.d.ts +41 -0
- package/dist/cjs/api/image-embed.d.ts.map +1 -0
- package/dist/cjs/api/image-embed.js +55 -0
- package/dist/cjs/api/immer-utils.d.ts.map +1 -1
- package/dist/cjs/api/immer-utils.js +43 -15
- package/dist/cjs/api/named-range-structural.d.ts +29 -3
- package/dist/cjs/api/named-range-structural.d.ts.map +1 -1
- package/dist/cjs/api/named-range-structural.js +36 -11
- package/dist/cjs/api/parse-html.d.ts.map +1 -1
- package/dist/cjs/api/parse-html.js +11 -5
- package/dist/cjs/api/structural-formula-update.d.ts +20 -1
- package/dist/cjs/api/structural-formula-update.d.ts.map +1 -1
- package/dist/cjs/api/structural-formula-update.js +264 -90
- package/dist/cjs/api/structural-guards.d.ts +11 -0
- package/dist/cjs/api/structural-guards.d.ts.map +1 -1
- package/dist/cjs/api/structural-guards.js +45 -1
- package/dist/cjs/api/structural-table-refs.d.ts +15 -2
- package/dist/cjs/api/structural-table-refs.d.ts.map +1 -1
- package/dist/cjs/api/structural-table-refs.js +79 -35
- package/dist/cjs/commands.d.ts +17 -3
- package/dist/cjs/commands.d.ts.map +1 -1
- package/dist/cjs/components/editors/conditional-format-rule-editor.d.ts.map +1 -1
- package/dist/cjs/components/editors/conditional-format-rule-editor.js +19 -7
- package/dist/cjs/constants.d.ts +4 -1
- package/dist/cjs/constants.d.ts.map +1 -1
- package/dist/cjs/constants.js +4 -0
- package/dist/cjs/helpers/sheet-title.d.ts +2 -1
- package/dist/cjs/helpers/sheet-title.d.ts.map +1 -1
- package/dist/cjs/helpers/sheet-title.js +3 -1
- package/dist/cjs/hooks/use-can-edit-cellrange.d.ts +1 -1
- package/dist/cjs/hooks/use-can-edit-cellrange.d.ts.map +1 -1
- package/dist/cjs/hooks/use-can-edit-cellrange.js +1 -1
- package/dist/cjs/hooks/use-on-calculation-success.d.ts +5 -1
- package/dist/cjs/hooks/use-on-calculation-success.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-calculation-success.js +20 -3
- package/dist/cjs/hooks/use-on-copy.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-copy.js +23 -25
- package/dist/cjs/hooks/use-on-create-sheet.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-create-sheet.js +11 -1
- package/dist/cjs/hooks/use-on-delete.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-delete.js +15 -3
- package/dist/cjs/hooks/use-on-drag-n-drop.d.ts +5 -0
- package/dist/cjs/hooks/use-on-drag-n-drop.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-drag-n-drop.js +6 -5
- package/dist/cjs/hooks/use-on-filter-table.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-filter-table.js +6 -1
- package/dist/cjs/hooks/use-on-find-replace.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-find-replace.js +111 -23
- package/dist/cjs/hooks/use-on-insert-image.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-insert-image.js +20 -33
- package/dist/cjs/hooks/use-on-paste.d.ts +2 -1
- package/dist/cjs/hooks/use-on-paste.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-paste.js +53 -24
- package/dist/cjs/hooks/use-on-rename-sheet.d.ts +3 -1
- package/dist/cjs/hooks/use-on-rename-sheet.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-rename-sheet.js +19 -9
- package/dist/cjs/hooks/use-on-sort-column.d.ts +7 -1
- package/dist/cjs/hooks/use-on-sort-column.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-sort-column.js +25 -8
- package/dist/cjs/hooks/use-on-sort-range.d.ts +16 -2
- package/dist/cjs/hooks/use-on-sort-range.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-sort-range.js +72 -40
- package/dist/cjs/hooks/use-on-sort-table.d.ts +7 -2
- package/dist/cjs/hooks/use-on-sort-table.d.ts.map +1 -1
- package/dist/cjs/hooks/use-on-sort-table.js +25 -4
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts +5 -3
- package/dist/cjs/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/cjs/hooks/use-spreadsheet-state.js +7 -0
- package/dist/cjs/hooks/utils/sort-rows.d.ts +15 -0
- package/dist/cjs/hooks/utils/sort-rows.d.ts.map +1 -1
- package/dist/cjs/hooks/utils/sort-rows.js +16 -0
- package/dist/cjs/index.d.ts +3 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/interface/delete-column.d.ts.map +1 -1
- package/dist/cjs/interface/delete-column.js +254 -101
- package/dist/cjs/interface/delete-row.d.ts.map +1 -1
- package/dist/cjs/interface/delete-row.js +233 -81
- package/dist/cjs/interface/duplicate-sheet.d.ts.map +1 -1
- package/dist/cjs/interface/duplicate-sheet.js +4 -9
- package/dist/cjs/interface/insert-column.d.ts.map +1 -1
- package/dist/cjs/interface/insert-column.js +1 -1
- package/dist/cjs/interface/insert-row.d.ts.map +1 -1
- package/dist/cjs/interface/insert-row.js +1 -1
- package/dist/cjs/interface/new-sheet.d.ts.map +1 -1
- package/dist/cjs/interface/new-sheet.js +6 -13
- package/dist/cjs/sheet-cell.d.ts +9 -0
- package/dist/cjs/sheet-cell.d.ts.map +1 -1
- package/dist/cjs/sheet-cell.js +46 -9
- package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/esm/api/circular-reference.d.ts +31 -0
- package/dist/esm/api/circular-reference.d.ts.map +1 -0
- package/dist/esm/api/circular-reference.js +55 -0
- package/dist/esm/api/copy-paste.d.ts +6 -0
- package/dist/esm/api/copy-paste.d.ts.map +1 -1
- package/dist/esm/api/copy-paste.js +26 -14
- package/dist/esm/api/datatype.d.ts +2 -0
- package/dist/esm/api/datatype.d.ts.map +1 -1
- package/dist/esm/api/datatype.js +61 -35
- package/dist/esm/api/date.d.ts.map +1 -1
- package/dist/esm/api/date.js +23 -14
- package/dist/esm/api/decimals.d.ts +10 -0
- package/dist/esm/api/decimals.d.ts.map +1 -1
- package/dist/esm/api/decimals.js +31 -10
- package/dist/esm/api/dependency.d.ts +19 -1
- package/dist/esm/api/dependency.d.ts.map +1 -1
- package/dist/esm/api/dependency.js +15 -10
- package/dist/esm/api/filter-condition.d.ts +58 -0
- package/dist/esm/api/filter-condition.d.ts.map +1 -0
- package/dist/esm/api/filter-condition.js +146 -0
- package/dist/esm/api/formula.d.ts.map +1 -1
- package/dist/esm/api/formula.js +9 -7
- package/dist/esm/api/image-embed.d.ts +41 -0
- package/dist/esm/api/image-embed.d.ts.map +1 -0
- package/dist/esm/api/image-embed.js +52 -0
- package/dist/esm/api/immer-utils.d.ts.map +1 -1
- package/dist/esm/api/immer-utils.js +43 -14
- package/dist/esm/api/named-range-structural.d.ts +29 -3
- package/dist/esm/api/named-range-structural.d.ts.map +1 -1
- package/dist/esm/api/named-range-structural.js +35 -11
- package/dist/esm/api/parse-html.d.ts.map +1 -1
- package/dist/esm/api/parse-html.js +14 -5
- package/dist/esm/api/structural-formula-update.d.ts +20 -1
- package/dist/esm/api/structural-formula-update.d.ts.map +1 -1
- package/dist/esm/api/structural-formula-update.js +151 -55
- package/dist/esm/api/structural-guards.d.ts +11 -0
- package/dist/esm/api/structural-guards.d.ts.map +1 -1
- package/dist/esm/api/structural-guards.js +31 -0
- package/dist/esm/api/structural-table-refs.d.ts +15 -2
- package/dist/esm/api/structural-table-refs.d.ts.map +1 -1
- package/dist/esm/api/structural-table-refs.js +49 -18
- package/dist/esm/commands.d.ts +17 -3
- package/dist/esm/commands.d.ts.map +1 -1
- package/dist/esm/components/editors/conditional-format-rule-editor.d.ts.map +1 -1
- package/dist/esm/components/editors/conditional-format-rule-editor.js +18 -7
- package/dist/esm/constants.d.ts +4 -1
- package/dist/esm/constants.d.ts.map +1 -1
- package/dist/esm/constants.js +4 -0
- package/dist/esm/helpers/sheet-title.d.ts +2 -1
- package/dist/esm/helpers/sheet-title.d.ts.map +1 -1
- package/dist/esm/helpers/sheet-title.js +3 -1
- package/dist/esm/hooks/use-can-edit-cellrange.d.ts +1 -1
- package/dist/esm/hooks/use-can-edit-cellrange.d.ts.map +1 -1
- package/dist/esm/hooks/use-can-edit-cellrange.js +1 -1
- package/dist/esm/hooks/use-on-calculation-success.d.ts +5 -1
- package/dist/esm/hooks/use-on-calculation-success.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-calculation-success.js +19 -3
- package/dist/esm/hooks/use-on-copy.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-copy.js +17 -17
- package/dist/esm/hooks/use-on-create-sheet.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-create-sheet.js +11 -1
- package/dist/esm/hooks/use-on-delete.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-delete.js +15 -3
- package/dist/esm/hooks/use-on-drag-n-drop.d.ts +5 -0
- package/dist/esm/hooks/use-on-drag-n-drop.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-drag-n-drop.js +7 -4
- package/dist/esm/hooks/use-on-filter-table.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-filter-table.js +13 -2
- package/dist/esm/hooks/use-on-find-replace.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-find-replace.js +111 -23
- package/dist/esm/hooks/use-on-insert-image.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-insert-image.js +15 -25
- package/dist/esm/hooks/use-on-paste.d.ts +2 -1
- package/dist/esm/hooks/use-on-paste.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-paste.js +46 -15
- package/dist/esm/hooks/use-on-rename-sheet.d.ts +3 -1
- package/dist/esm/hooks/use-on-rename-sheet.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-rename-sheet.js +19 -9
- package/dist/esm/hooks/use-on-sort-column.d.ts +7 -1
- package/dist/esm/hooks/use-on-sort-column.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-sort-column.js +18 -1
- package/dist/esm/hooks/use-on-sort-range.d.ts +16 -2
- package/dist/esm/hooks/use-on-sort-range.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-sort-range.js +30 -3
- package/dist/esm/hooks/use-on-sort-table.d.ts +7 -2
- package/dist/esm/hooks/use-on-sort-table.d.ts.map +1 -1
- package/dist/esm/hooks/use-on-sort-table.js +25 -4
- package/dist/esm/hooks/use-spreadsheet-state.d.ts +5 -3
- package/dist/esm/hooks/use-spreadsheet-state.d.ts.map +1 -1
- package/dist/esm/hooks/use-spreadsheet-state.js +7 -0
- package/dist/esm/hooks/utils/sort-rows.d.ts +15 -0
- package/dist/esm/hooks/utils/sort-rows.d.ts.map +1 -1
- package/dist/esm/hooks/utils/sort-rows.js +15 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -0
- package/dist/esm/interface/delete-column.d.ts.map +1 -1
- package/dist/esm/interface/delete-column.js +111 -80
- package/dist/esm/interface/delete-row.d.ts.map +1 -1
- package/dist/esm/interface/delete-row.js +91 -59
- package/dist/esm/interface/duplicate-sheet.d.ts.map +1 -1
- package/dist/esm/interface/duplicate-sheet.js +4 -9
- package/dist/esm/interface/insert-column.d.ts.map +1 -1
- package/dist/esm/interface/insert-column.js +1 -1
- package/dist/esm/interface/insert-row.d.ts.map +1 -1
- package/dist/esm/interface/insert-row.js +1 -1
- package/dist/esm/interface/new-sheet.d.ts.map +1 -1
- package/dist/esm/interface/new-sheet.js +6 -13
- package/dist/esm/sheet-cell.d.ts +9 -0
- package/dist/esm/sheet-cell.d.ts.map +1 -1
- package/dist/esm/sheet-cell.js +46 -7
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-calculation-success.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-calculation-success.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"use-on-calculation-success.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-calculation-success.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAqB1D,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAC7B,UAAU,MAAM,EAChB,aAAa,MAAM,EACnB,QAAQ,OAAO,EAAE,EAAE,KAClB,MAAM,GAAG,SAiBX,CAAC;AAEF,KAAK,4BAA4B,CAAC,CAAC,SAAS,QAAQ,IAAI;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,qBAAqB,EAAE,UAAU,CAC/B,OAAO,kBAAkB,CAC1B,CAAC,uBAAuB,CAAC,CAAC;IAC3B,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAC/D,aAAa,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,6BAA6B,CAAC,CAAC;IAC7E,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C,6EAA6E;IAC7E,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACvD,2FAA2F;IAC3F,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,qKAWpE,4BAA4B,CAAC,CAAC,CAAC,eAUxB,KAAK,CAAC,CAAC,cAAc,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC,GACnE,gBAAgB,CACd,CAAC,cAAc,EAAE,iBAAiB,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,CAC7D,iBACU,OAAO,YACZ,yBAAyB,SAqNxC,CAAC"}
|
|
@@ -3,8 +3,10 @@ import { useGetEffectiveValuesFromRange } from "@rowsncolumns/spreadsheet";
|
|
|
3
3
|
import { isNil, selectionToAddress } from "@rowsncolumns/utils";
|
|
4
4
|
import { produceWithPatches } from "immer";
|
|
5
5
|
import isEqual from "lodash/isEqual";
|
|
6
|
-
import { useCallback } from "react";
|
|
6
|
+
import { useCallback, useRef } from "react";
|
|
7
7
|
import { createSheetDraft, deriveCellFromPrecedents, peekIterable, } from "./../api/immer-utils";
|
|
8
|
+
import { CIRCULAR_REFERENCE_WARNING_TITLE, CircularReferenceTracker, formatCircularReferenceWarning, } from "../api/circular-reference";
|
|
9
|
+
import { useShowError } from "../atoms/error-state.atom";
|
|
8
10
|
import { AWAITING_CALCULATION } from "./../helpers";
|
|
9
11
|
import { LOADING_VALUE, SheetCell } from "./../sheet-cell";
|
|
10
12
|
/**
|
|
@@ -35,10 +37,22 @@ export var arrayResultToA1Ref = function (rowIndex, columnIndex, result) {
|
|
|
35
37
|
return address.includes(":") ? address : "".concat(address, ":").concat(address);
|
|
36
38
|
};
|
|
37
39
|
export var useOnCalculationSuccess = function (_a) {
|
|
38
|
-
var locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getDataValidationById = _a.getDataValidationById, onChangeSheetData = _a.onChangeSheetData, createHistory = _a.createHistory, getPrecedents = _a.getPrecedents, getSheetId = _a.getSheetId;
|
|
40
|
+
var locale = _a.locale, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getDataValidationById = _a.getDataValidationById, onChangeSheetData = _a.onChangeSheetData, createHistory = _a.createHistory, getPrecedents = _a.getPrecedents, getSheetId = _a.getSheetId, getSheetName = _a.getSheetName, getSheetCount = _a.getSheetCount;
|
|
39
41
|
// Allowed values
|
|
40
42
|
var getEffectiveValuesFromRange = useGetEffectiveValuesFromRange();
|
|
41
|
-
|
|
43
|
+
var showError = useShowError();
|
|
44
|
+
// Excel's circular-reference warning fires once per NEW circular cell (the calc reports the
|
|
45
|
+
// batch's circular members on `context.circularReferences`; the cells themselves display 0).
|
|
46
|
+
var circularReferences = useRef(new CircularReferenceTracker());
|
|
47
|
+
return useCallback(function (results, isFullRecalc, context) {
|
|
48
|
+
var _a;
|
|
49
|
+
var freshCircular = circularReferences.current.next(context === null || context === void 0 ? void 0 : context.circularReferences);
|
|
50
|
+
if (freshCircular.length) {
|
|
51
|
+
showError({
|
|
52
|
+
title: CIRCULAR_REFERENCE_WARNING_TITLE,
|
|
53
|
+
message: formatCircularReferenceWarning(freshCircular, getSheetName, ((_a = getSheetCount === null || getSheetCount === void 0 ? void 0 : getSheetCount()) !== null && _a !== void 0 ? _a : 1) > 1),
|
|
54
|
+
});
|
|
55
|
+
}
|
|
42
56
|
var finalIterable = peekIterable(Array.isArray(results) ? results.values() : results);
|
|
43
57
|
var isEmpty = finalIterable.peeked.done === true;
|
|
44
58
|
if (!isEmpty) {
|
|
@@ -184,5 +198,8 @@ export var useOnCalculationSuccess = function (_a) {
|
|
|
184
198
|
onChangeSheetData,
|
|
185
199
|
getPrecedents,
|
|
186
200
|
getEffectiveValuesFromRange,
|
|
201
|
+
showError,
|
|
202
|
+
getSheetName,
|
|
203
|
+
getSheetCount,
|
|
187
204
|
]);
|
|
188
205
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-copy.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-copy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,UAAU,EAIf,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"use-on-copy.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-copy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,10 @@
|
|
|
1
1
|
import { __assign, __read, __spreadArray, __values } from "tslib";
|
|
2
2
|
import { areaInsideArea, cellIdentifier, } from "@rowsncolumns/grid";
|
|
3
|
-
import { getBandedCells, getStringifiedColor,
|
|
4
|
-
import { cellToAddress, getCellUserEnteredValue, getExtendedValueFormula, getStyleId, isNil, iterateCellsInRange, } from "@rowsncolumns/utils";
|
|
3
|
+
import { getBandedCells, getStringifiedColor, MULTIPLE_SELECTIONS_CLIPBOARD_ERROR, } from "@rowsncolumns/spreadsheet";
|
|
4
|
+
import { cellToAddress, escapeHtmlAttribute, escapeHtmlText, getCellUserEnteredValue, getExtendedValueFormula, getStyleId, isNil, iterateCellsInRange, } from "@rowsncolumns/utils";
|
|
5
5
|
import { useCallback, useMemo } from "react";
|
|
6
6
|
import { useShowError } from "../atoms/error-state.atom";
|
|
7
7
|
import { isStyleReference } from "../sheet-cell";
|
|
8
|
-
var escapeHtmlAttribute = function (value) {
|
|
9
|
-
return value
|
|
10
|
-
.replace(/&/g, "&")
|
|
11
|
-
.replace(/"/g, """)
|
|
12
|
-
.replace(/'/g, "'")
|
|
13
|
-
.replace(/</g, "<")
|
|
14
|
-
.replace(/>/g, ">");
|
|
15
|
-
};
|
|
16
8
|
/**
|
|
17
9
|
* Excel/Sheets copy a multi-area selection only when every area spans the same
|
|
18
10
|
* rows (areas sit side by side, left to right) or the same columns (areas stack,
|
|
@@ -101,7 +93,7 @@ export var useOnCopy = function (_a) {
|
|
|
101
93
|
? undefined
|
|
102
94
|
: getCopiedRowsAndColumns(copiedSelections);
|
|
103
95
|
if (!rowsAndColumns) {
|
|
104
|
-
showError({ message:
|
|
96
|
+
showError({ message: MULTIPLE_SELECTIONS_CLIPBOARD_ERROR });
|
|
105
97
|
return false;
|
|
106
98
|
}
|
|
107
99
|
var _0 = __read(rowsAndColumns, 2), rows = _0[0], columns = _0[1];
|
|
@@ -297,23 +289,29 @@ export var useOnCopy = function (_a) {
|
|
|
297
289
|
"text-wrap": wordWrap ? "wrap" : undefined,
|
|
298
290
|
}
|
|
299
291
|
: {};
|
|
300
|
-
// html
|
|
292
|
+
// html. The cell's text is DATA, not markup: a value that literally
|
|
293
|
+
// reads `<b>x</b>` or `<img …>` must arrive in the text/html payload
|
|
294
|
+
// as escaped text so the receiver shows it verbatim (the text/plain
|
|
295
|
+
// payload stays raw). Style values (font family, colors) are
|
|
296
|
+
// interpolated into a quoted attribute and escaped the same way.
|
|
297
|
+
var escapedValue = escapeHtmlText(formattedValue);
|
|
301
298
|
var innerHtml = baselineOffset === "superscript"
|
|
302
|
-
? "<sup>".concat(
|
|
299
|
+
? "<sup>".concat(escapedValue, "</sup>")
|
|
303
300
|
: baselineOffset === "subscript"
|
|
304
|
-
? "<sub>".concat(
|
|
305
|
-
:
|
|
301
|
+
? "<sub>".concat(escapedValue, "</sub>")
|
|
302
|
+
: escapedValue;
|
|
303
|
+
var styleAttr = escapeHtmlAttribute(Object.entries(style)
|
|
304
|
+
.filter(function (_a) {
|
|
305
|
+
var _b = __read(_a, 2), _ = _b[0], v = _b[1];
|
|
306
|
+
return !isNil(v);
|
|
307
|
+
})
|
|
308
|
+
.map(function (_a) {
|
|
309
|
+
var _b = __read(_a, 2), k = _b[0], v = _b[1];
|
|
310
|
+
return "".concat(k, ":").concat(v);
|
|
311
|
+
})
|
|
312
|
+
.join(";"));
|
|
306
313
|
htmlString +=
|
|
307
|
-
"<td".concat(formulaAttr).concat(numberFormatAttr).concat(alignmentAttr, " ").concat(rowspan > 1 ? "rowspan=\"".concat(rowspan, "\"") : "", " ").concat(colspan > 1 ? "colspan=\"".concat(colspan, "\"") : "", " style='").concat(
|
|
308
|
-
.filter(function (_a) {
|
|
309
|
-
var _b = __read(_a, 2), _ = _b[0], v = _b[1];
|
|
310
|
-
return !isNil(v);
|
|
311
|
-
})
|
|
312
|
-
.map(function (_a) {
|
|
313
|
-
var _b = __read(_a, 2), k = _b[0], v = _b[1];
|
|
314
|
-
return "".concat(k, ":").concat(v);
|
|
315
|
-
})
|
|
316
|
-
.join(";"), "'>") +
|
|
314
|
+
"<td".concat(formulaAttr).concat(numberFormatAttr).concat(alignmentAttr, " ").concat(rowspan > 1 ? "rowspan=\"".concat(rowspan, "\"") : "", " ").concat(colspan > 1 ? "colspan=\"".concat(colspan, "\"") : "", " style='").concat(styleAttr, "'>") +
|
|
317
315
|
innerHtml +
|
|
318
316
|
"</td>";
|
|
319
317
|
// json
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-create-sheet.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-create-sheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAKjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACrE,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,KAAK,GAAG,KAAK,EACvB,qKAYC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,kBAIb,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,UAAU,
|
|
1
|
+
{"version":3,"file":"use-on-create-sheet.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-create-sheet.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAKjE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,qBAAqB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACrE,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,aAAa,IAAI,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACrD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,CAAC,SAAS,QAAQ,EAClB,CAAC,SAAS,KAAK,GAAG,KAAK,EACvB,qKAYC,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,kBAIb,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,UAAU,kBAqEjD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isNil } from "@rowsncolumns/utils";
|
|
1
|
+
import { isNil, validateSheetName } from "@rowsncolumns/utils";
|
|
2
2
|
import { useCallback } from "react";
|
|
3
3
|
import { useShowError } from "../atoms/error-state.atom";
|
|
4
4
|
import { sanitizeSheetSpecTitle } from "../helpers/sheet-title";
|
|
@@ -30,6 +30,16 @@ export var useOnCreateNewSheet = function (_a) {
|
|
|
30
30
|
}
|
|
31
31
|
else if (sheetSpec) {
|
|
32
32
|
nextSheetSpec = sanitizeSheetSpecTitle(sheetSpec);
|
|
33
|
+
// A requested title that breaks Excel's worksheet-name rules (illegal character, leading /
|
|
34
|
+
// trailing apostrophe, `History`) is refused with Excel's dialog (rowsncolumns/spreadsheet#939
|
|
35
|
+
// U-01); a title another sheet holds is not a refusal here — `createNewSheet` suffixes it.
|
|
36
|
+
if (typeof nextSheetSpec.title === "string") {
|
|
37
|
+
var validation = validateSheetName(nextSheetSpec.title);
|
|
38
|
+
if (!validation.ok) {
|
|
39
|
+
showError({ title: "Error", message: validation.message });
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
33
43
|
}
|
|
34
44
|
var result = createNewSheet({
|
|
35
45
|
sheetId: sheetId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-delete.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EACV,iBAAiB,EACjB,QAAQ,EACR,mBAAmB,EACnB,KAAK,EACL,SAAS,EACV,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"use-on-delete.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-delete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,KAAK,EACV,iBAAiB,EACjB,QAAQ,EACR,mBAAmB,EACnB,KAAK,EACL,SAAS,EACV,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAInC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAK9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClE,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IACnE,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1D,sBAAsB,CAAC,EAAE,UAAU,CACjC,OAAO,cAAc,CACtB,CAAC,wBAAwB,CAAC,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;IAChE,aAAa,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,eAAe,CAAC,CAAC;IAClE,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/D,cAAc,CAAC,CAAC,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;IACrE,qBAAqB,CAAC,EAAE,UAAU,CAChC,OAAO,kBAAkB,CAC1B,CAAC,uBAAuB,CAAC,CAAC;IAC3B,eAAe,IAAI,MAAM,GAAG,SAAS,CAAC;IACtC,YAAY,CAAC,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,2UAqB9D,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,eAKV,MAAM,cACH,aAAa,cACb,aAAa,CAAC,mBAAmB,CAAC,EAAE,cACrC,SAAS,SAqEzB,CAAC"}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
|
+
import { PROTECTED_SHEET_EDIT_MESSAGE } from "@rowsncolumns/utils";
|
|
1
2
|
import { useCallback } from "react";
|
|
3
|
+
import { useShowError } from "../atoms/error-state.atom";
|
|
2
4
|
import { deleteCells } from "../interface/delete-cells";
|
|
3
|
-
import { useCanEditCellRange } from "./use-can-edit-cellrange";
|
|
5
|
+
import { SHEET_PROTECTION_ERROR_TITLE, useCanEditCellRange, } from "./use-can-edit-cellrange";
|
|
4
6
|
export var useOnDelete = function (_a) {
|
|
5
7
|
var locale = _a.locale, rowCount = _a.rowCount, cellXfsRegistry = _a.cellXfsRegistry, sharedStringRegistry = _a.sharedStringRegistry, getDataValidationById = _a.getDataValidationById, getDependents = _a.getDependents, getDataRowCount = _a.getDataRowCount, onChangeSheetData = _a.onChangeSheetData, onChangeSheets = _a.onChangeSheets, onChangeTables = _a.onChangeTables, onChangeCitations = _a.onChangeCitations, onChangeActiveCell = _a.onChangeActiveCell, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, createHistory = _a.createHistory, isArrayFormula = _a.isArrayFormula, getRowHeight = _a.getRowHeight, tables = _a.tables, generatedNames = _a.generatedNames, onCommand = _a.onCommand;
|
|
6
8
|
var canEditCellRange = useCanEditCellRange();
|
|
9
|
+
var showError = useShowError();
|
|
7
10
|
return useCallback(function (sheetId, activeCell, selections, clearType) {
|
|
8
11
|
if (clearType === void 0) { clearType = "contents"; }
|
|
9
|
-
|
|
10
|
-
|
|
12
|
+
// Excel refuses Delete / Clear over ANY locked cell of a protected sheet — the whole command,
|
|
13
|
+
// not just the active cell — with its protected-sheet dialog (rowsncolumns/spreadsheet#939 U-35).
|
|
14
|
+
var targets = selections.length
|
|
15
|
+
? selections.map(function (selection) { return selection.range; })
|
|
16
|
+
: [activeCell];
|
|
17
|
+
if (targets.some(function (target) { return !canEditCellRange(sheetId, target); })) {
|
|
18
|
+
showError({
|
|
19
|
+
title: SHEET_PROTECTION_ERROR_TITLE,
|
|
20
|
+
message: PROTECTED_SHEET_EDIT_MESSAGE,
|
|
21
|
+
});
|
|
11
22
|
return;
|
|
12
23
|
}
|
|
13
24
|
deleteCells({
|
|
@@ -56,6 +67,7 @@ export var useOnDelete = function (_a) {
|
|
|
56
67
|
createHistory,
|
|
57
68
|
getRowHeight,
|
|
58
69
|
canEditCellRange,
|
|
70
|
+
showError,
|
|
59
71
|
isArrayFormula,
|
|
60
72
|
tables,
|
|
61
73
|
generatedNames,
|
|
@@ -31,6 +31,11 @@ type UseOnDragnDropProps<T extends CellData, S extends Sheet> = {
|
|
|
31
31
|
};
|
|
32
32
|
export type InsertFileOptions = {
|
|
33
33
|
preserveFormatting?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Where an IMAGE file lands. `true` (the default, Excel / Google Sheets): a floating picture
|
|
36
|
+
* anchored at the active cell — movable and resizable. `false`: the picture becomes the active
|
|
37
|
+
* cell's content ("Insert image in cell").
|
|
38
|
+
*/
|
|
34
39
|
insertOverCells?: boolean;
|
|
35
40
|
minRowCount?: number;
|
|
36
41
|
minColumnCount?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-drag-n-drop.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-drag-n-drop.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"use-on-drag-n-drop.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-drag-n-drop.ts"],"names":[],"mappings":"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"}
|
|
@@ -132,8 +132,9 @@ export var useOnDragnDrop = function (_a) {
|
|
|
132
132
|
case 7:
|
|
133
133
|
// Show loading indicator
|
|
134
134
|
showLoader("Reading Image file.");
|
|
135
|
-
return [4 /*yield*/, (onInsertImage === null || onInsertImage === void 0 ? void 0 : onInsertImage(file,
|
|
136
|
-
|
|
135
|
+
return [4 /*yield*/, (onInsertImage === null || onInsertImage === void 0 ? void 0 : onInsertImage(file, sheetId, activeCell, {
|
|
136
|
+
// Floating unless the caller explicitly asked for the in-cell placement.
|
|
137
|
+
insertOverCells: insertOverCells !== false,
|
|
137
138
|
}))];
|
|
138
139
|
case 8:
|
|
139
140
|
_k.sent();
|
|
@@ -167,7 +168,7 @@ export var useOnDragnDrop = function (_a) {
|
|
|
167
168
|
]);
|
|
168
169
|
// File drop handler
|
|
169
170
|
var onDrop = useCallback(function (e) { return __awaiter(void 0, void 0, void 0, function () {
|
|
170
|
-
var files,
|
|
171
|
+
var files, insertInCell;
|
|
171
172
|
return __generator(this, function (_a) {
|
|
172
173
|
if (!enable) {
|
|
173
174
|
return [2 /*return*/];
|
|
@@ -175,9 +176,9 @@ export var useOnDragnDrop = function (_a) {
|
|
|
175
176
|
e.preventDefault();
|
|
176
177
|
files = e.dataTransfer.files;
|
|
177
178
|
if (files.length) {
|
|
178
|
-
|
|
179
|
+
insertInCell = e.shiftKey || e.ctrlKey;
|
|
179
180
|
onInsertFile(files[0], activeSheetId, getActiveCell(), {
|
|
180
|
-
insertOverCells:
|
|
181
|
+
insertOverCells: !insertInCell,
|
|
181
182
|
});
|
|
182
183
|
}
|
|
183
184
|
return [2 /*return*/];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-filter-table.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-filter-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,4BAA4B,CAAC;AAC3E,OAAO,KAAK,EAEV,QAAQ,EACR,UAAU,EACV,qBAAqB,EACrB,aAAa,EACb,cAAc,EAGd,UAAU,EACV,UAAU,EACV,KAAK,EACL,gBAAgB,EAChB,SAAS,EACV,MAAM,2BAA2B,CAAC;AAsBnC,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"use-on-filter-table.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-filter-table.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ import set from "lodash/set";
|
|
|
6
6
|
import { useCallback } from "react";
|
|
7
7
|
import { buildDataValidationExpression, isDataValidationFormulaRule, } from "../api/data-validation";
|
|
8
8
|
import { createFilterSpecs, createFilterSpecsByColumnIndex, } from "../api/filter";
|
|
9
|
+
import { evaluateNumericFilterCondition } from "../api/filter-condition";
|
|
9
10
|
import { formulaToRelativeReference } from "../api/formula";
|
|
10
11
|
import { useShowError } from "../atoms/error-state.atom";
|
|
11
12
|
import { SHEET_PROTECTION_ERROR_TITLE, useCanEditSheet, useCanPerformSheetAction, } from "./use-can-edit-cellrange";
|
|
@@ -445,7 +446,7 @@ getCellConditionalFormat) { return __awaiter(void 0, void 0, void 0, function ()
|
|
|
445
446
|
effectiveValue = getEffectiveValue(sheetId, rowIndex, columnIndex);
|
|
446
447
|
formattedValue = getFormattedValue(sheetId, rowIndex, columnIndex);
|
|
447
448
|
evaluateCondition = function (condition, clause) { return __awaiter(void 0, void 0, void 0, function () {
|
|
448
|
-
var matchesDisplayText, formulaRule, isFormulaRule, baseCellRef, baseFormula, formulaValue;
|
|
449
|
+
var matchesDisplayText, numericResult, formulaRule, isFormulaRule, baseCellRef, baseFormula, formulaValue;
|
|
449
450
|
var _a;
|
|
450
451
|
return __generator(this, function (_b) {
|
|
451
452
|
switch (_b.label) {
|
|
@@ -460,6 +461,10 @@ getCellConditionalFormat) { return __awaiter(void 0, void 0, void 0, function ()
|
|
|
460
461
|
if (matchesDisplayText) {
|
|
461
462
|
return [2 /*return*/, checkFilterCondition(condition, formattedValue !== null && formattedValue !== void 0 ? formattedValue : "")];
|
|
462
463
|
}
|
|
464
|
+
numericResult = evaluateNumericFilterCondition(condition, effectiveValue, locale);
|
|
465
|
+
if (numericResult !== undefined) {
|
|
466
|
+
return [2 /*return*/, numericResult];
|
|
467
|
+
}
|
|
463
468
|
formulaRule = { condition: condition };
|
|
464
469
|
isFormulaRule = isDataValidationFormulaRule(formulaRule);
|
|
465
470
|
baseCellRef = (_a = cellToAddress({ rowIndex: startRowIndex, columnIndex: columnIndex })) !== null && _a !== void 0 ? _a : "A1";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-find-replace.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-find-replace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"use-on-find-replace.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-find-replace.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAwB7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,KAAK,qBAAqB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,kBAAkB,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC5E,sBAAsB,CAAC,EAAE,UAAU,CACjC,OAAO,cAAc,CACtB,CAAC,wBAAwB,CAAC,CAAC;IAC5B,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClE,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAoBF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,4HAQnE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,oBAGV,UAAU,EAAE,aACf,MAAM,eACJ,MAAM,GAAG,SAAS,YACrB,aAAa,SAsN5B,CAAC"}
|
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
import { __read, __values } from "tslib";
|
|
2
|
-
import { isNil, iterateCellsInRange } from "@rowsncolumns/utils";
|
|
2
|
+
import { getCellEffectiveValue, getCellUserEnteredValue, getExtendedValueBool, getExtendedValueFormula, getExtendedValueNumber, getExtendedValueString, isNil, iterateCellsInRange, } from "@rowsncolumns/utils";
|
|
3
3
|
import { produceWithPatches } from "immer";
|
|
4
|
+
import isEqual from "lodash/isEqual";
|
|
4
5
|
import { useCallback } from "react";
|
|
5
6
|
import { createSheetCellIdentifier } from "../api/formula";
|
|
6
7
|
import { createSheetDraft } from "../api/immer-utils";
|
|
7
|
-
import { SheetCell } from "../sheet-cell";
|
|
8
|
+
import { SheetCell, hasExcelTextPrefix, stripExcelTextPrefix, } from "../sheet-cell";
|
|
8
9
|
import { buildSearchRegex } from "./use-search";
|
|
10
|
+
/**
|
|
11
|
+
* The text `text` becomes after replacing every match of `regex` with
|
|
12
|
+
* `replaceWith`, or `undefined` when nothing matches / nothing changes (the
|
|
13
|
+
* cell is then left untouched). `regex` is the `g`-flagged matcher from
|
|
14
|
+
* `buildSearchRegex`, so `lastIndex` is reset before each use.
|
|
15
|
+
*/
|
|
16
|
+
var replaceIn = function (regex, text, replaceWith) {
|
|
17
|
+
regex.lastIndex = 0;
|
|
18
|
+
if (!regex.test(text))
|
|
19
|
+
return undefined;
|
|
20
|
+
regex.lastIndex = 0;
|
|
21
|
+
var next = text.replace(regex, replaceWith !== null && replaceWith !== void 0 ? replaceWith : "");
|
|
22
|
+
return next === text ? undefined : next;
|
|
23
|
+
};
|
|
9
24
|
export var useOnFindReplace = function (_a) {
|
|
10
25
|
var locale = _a.locale, createHistory = _a.createHistory, onChangeSheetData = _a.onChangeSheetData, enqueueCalculation = _a.enqueueCalculation, enqueueStructureChange = _a.enqueueStructureChange, sharedStringRegistry = _a.sharedStringRegistry, onCommand = _a.onCommand;
|
|
11
26
|
return useCallback(function (lookupRanges, searchStr, replaceWith, options) {
|
|
@@ -74,28 +89,101 @@ export var useOnFindReplace = function (_a) {
|
|
|
74
89
|
var currentSheet = createSheetDraft(draft, range.sheetId, rowIndex);
|
|
75
90
|
var cellData = (_e = (_d = (_c = draft[range.sheetId]) === null || _c === void 0 ? void 0 : _c[rowIndex]) === null || _d === void 0 ? void 0 : _d.values) === null || _e === void 0 ? void 0 : _e[columnIndex];
|
|
76
91
|
sheetCell.assign(range.sheetId, { rowIndex: rowIndex, columnIndex: columnIndex }, cellData, { locale: locale });
|
|
77
|
-
//
|
|
78
|
-
// the
|
|
79
|
-
//
|
|
80
|
-
//
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
//
|
|
93
|
-
|
|
94
|
-
|
|
92
|
+
// Excel's Replace edits the cell's STORED content (it runs in
|
|
93
|
+
// "Look in: Formulas" only), so the match text and the write
|
|
94
|
+
// depend on what the cell holds — never on the display alone:
|
|
95
|
+
// - a formula cell is matched on and rewritten in its SOURCE
|
|
96
|
+
// text (`=SUM(A1:A2)` → `=SUM(B1:A2)`); its computed result
|
|
97
|
+
// is not a hit, so the formula is never flattened to a
|
|
98
|
+
// literal;
|
|
99
|
+
// - a text cell is matched on its display (what `useSearch`
|
|
100
|
+
// highlighted) but the replacement runs over the stored
|
|
101
|
+
// string and is written back AS TEXT — `'0123` keeps its
|
|
102
|
+
// quote prefix (`'0124`), a Text-formatted `0123` stays
|
|
103
|
+
// `0124`, and a text whose new content looks numeric is not
|
|
104
|
+
// re-inferred;
|
|
105
|
+
// - a number / boolean / date is matched on its display
|
|
106
|
+
// ("$1,234.50"), the replacement runs over that display and
|
|
107
|
+
// the result is re-entered under the cell's own number
|
|
108
|
+
// format — `$1,235.50` stays the number 1235.5 in currency,
|
|
109
|
+
// `1/15/2025` stays a date serial — and the format itself
|
|
110
|
+
// is left exactly as it was.
|
|
111
|
+
var ue = getCellUserEnteredValue(cellData);
|
|
112
|
+
var ev = getCellEffectiveValue(cellData);
|
|
113
|
+
var formula = getExtendedValueFormula(ue);
|
|
114
|
+
// The legacy model keeps a number's ENTERED string in `ue.sv`
|
|
115
|
+
// ("$1,234.50") and its value in `ev.nv`, so `ue.sv` alone does
|
|
116
|
+
// not make a cell text: a literal is text when it evaluates to
|
|
117
|
+
// a string, carries Excel's `'` prefix, or sits in a Text
|
|
118
|
+
// format. Anything else with a stored string is a typed
|
|
119
|
+
// number / boolean / date.
|
|
120
|
+
var storedText = isNil(formula)
|
|
121
|
+
? getExtendedValueString(ue)
|
|
122
|
+
: undefined;
|
|
123
|
+
var isNumericLiteral = !isNil(getExtendedValueNumber(ev)) ||
|
|
124
|
+
!isNil(getExtendedValueBool(ev));
|
|
125
|
+
var isTextLiteral = !isNil(storedText) &&
|
|
126
|
+
!isNumericLiteral &&
|
|
127
|
+
(!isNil(getExtendedValueString(ev)) ||
|
|
128
|
+
hasExcelTextPrefix(storedText) ||
|
|
129
|
+
sheetCell.isText(sheetCell.getNumberFormat()));
|
|
130
|
+
var next = void 0;
|
|
131
|
+
var writeAsText = false;
|
|
132
|
+
var textPrefix = "";
|
|
133
|
+
if (!isNil(formula)) {
|
|
134
|
+
next = replaceIn(regex, formula, replaceWith);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
var formattedValue = sheetCell.formattedValue;
|
|
138
|
+
if (isNil(formattedValue))
|
|
139
|
+
continue;
|
|
140
|
+
// `g` flag is set by `buildSearchRegex`; reset lastIndex
|
|
141
|
+
// before .test so a stateful regex doesn't skip the
|
|
142
|
+
// first character on a re-run.
|
|
143
|
+
regex.lastIndex = 0;
|
|
144
|
+
if (!regex.test(formattedValue))
|
|
145
|
+
continue;
|
|
146
|
+
if (isTextLiteral) {
|
|
147
|
+
if (hasExcelTextPrefix(storedText)) {
|
|
148
|
+
textPrefix = "'";
|
|
149
|
+
}
|
|
150
|
+
var base = textPrefix
|
|
151
|
+
? stripExcelTextPrefix(storedText)
|
|
152
|
+
: storedText;
|
|
153
|
+
// A needle that appears only in an `@`-pattern's
|
|
154
|
+
// decoration (`"Note: "@`) is not cell content.
|
|
155
|
+
next = replaceIn(regex, base, replaceWith);
|
|
156
|
+
writeAsText = true;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
next = replaceIn(regex, formattedValue, replaceWith);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
if (isNil(next))
|
|
95
163
|
continue;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
164
|
+
if (next === "") {
|
|
165
|
+
sheetCell.setUserEnteredValue("");
|
|
166
|
+
}
|
|
167
|
+
else if (writeAsText) {
|
|
168
|
+
if (textPrefix) {
|
|
169
|
+
// The normal entry path keeps a `'`-prefixed entry as text
|
|
170
|
+
// and preserves the prefix in `ue.sv` for the formula bar.
|
|
171
|
+
sheetCell.setUserEnteredValue("".concat(textPrefix).concat(next));
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
sheetCell.setUserEnteredValue(next, undefined, {
|
|
175
|
+
disableTypeInference: true,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
var numberFormat = sheetCell.getNumberFormat();
|
|
181
|
+
sheetCell.setUserEnteredValue(next);
|
|
182
|
+
if (!isNil(numberFormat) &&
|
|
183
|
+
!isEqual(sheetCell.getNumberFormat(), numberFormat)) {
|
|
184
|
+
sheetCell.setUserEnteredFormat("numberFormat", numberFormat);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
99
187
|
sharedStringRegistry === null || sharedStringRegistry === void 0 ? void 0 : sharedStringRegistry.registerCell(sheetCell);
|
|
100
188
|
currentSheet[rowIndex].values[columnIndex] =
|
|
101
189
|
sheetCell.getCellData();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-on-insert-image.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-insert-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EACV,QAAQ,EAER,KAAK,EACN,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"use-on-insert-image.d.ts","sourceRoot":"","sources":["../../../hooks/use-on-insert-image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EACV,QAAQ,EAER,KAAK,EACN,MAAM,2BAA2B,CAAC;AAanC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,KAAK,qBAAqB,CAAC,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,IAAI;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,kBAAkB,CAAC,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;IAC/D,kBAAkB,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC1D,aAAa,EAAE,MAAM,CAAC,OAAO,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClE,cAAc,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,QAAQ,EAAE,CAAC,SAAS,KAAK,EAAE,kHAQnE,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,iBAIb,IAAI,GAAG,MAAM,WACf,MAAM,cACH,aAAa,YACf,iBAAiB,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,kBA0IhE,CAAC"}
|
|
@@ -1,27 +1,26 @@
|
|
|
1
1
|
import { __assign, __awaiter, __generator, __read, __spreadArray } from "tslib";
|
|
2
2
|
import { useGetSheetDimensions } from "@rowsncolumns/spreadsheet";
|
|
3
3
|
import { getImageDimensionsFromUrl, readImageFileAsDataUri, } from "@rowsncolumns/toolkit";
|
|
4
|
-
import { log
|
|
4
|
+
import { log } from "@rowsncolumns/utils";
|
|
5
5
|
import { produceWithPatches } from "immer";
|
|
6
6
|
import { useCallback } from "react";
|
|
7
7
|
import { createSheetCellIdentifier } from "../api/formula";
|
|
8
|
+
import { createImageEmbed, fitImageToViewport } from "../api/image-embed";
|
|
8
9
|
import { createSheetDraft } from "../api/immer-utils";
|
|
9
10
|
import { SheetCell } from "../sheet-cell";
|
|
10
11
|
export var useOnInsertImage = function (_a) {
|
|
11
12
|
var locale = _a.locale, idCreationStrategy = _a.idCreationStrategy, enqueueCalculation = _a.enqueueCalculation, createHistory = _a.createHistory, onChangeEmbeds = _a.onChangeEmbeds, onChangeSheetData = _a.onChangeSheetData, onCommand = _a.onCommand;
|
|
12
13
|
var getSheetDimensions = useGetSheetDimensions();
|
|
13
14
|
return useCallback(function (fileOrUrl, sheetId, activeCell, options) { return __awaiter(void 0, void 0, void 0, function () {
|
|
14
|
-
var _a, insertOverCells, embedId,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
switch (_h.label) {
|
|
15
|
+
var _a, insertOverCells, embedId, _b, imageUrl, width, height, _c, _d, viewport, _e, finalWidth, finalHeight, recalcCells, saveHistory;
|
|
16
|
+
return __generator(this, function (_f) {
|
|
17
|
+
switch (_f.label) {
|
|
18
18
|
case 0:
|
|
19
19
|
_a = options !== null && options !== void 0 ? options : {}, insertOverCells = _a.insertOverCells, embedId = _a.embedId;
|
|
20
|
-
maxDimension = 800;
|
|
21
20
|
if (!(fileOrUrl instanceof File)) return [3 /*break*/, 2];
|
|
22
21
|
return [4 /*yield*/, readImageFileAsDataUri(fileOrUrl)];
|
|
23
22
|
case 1:
|
|
24
|
-
_c =
|
|
23
|
+
_c = _f.sent();
|
|
25
24
|
return [3 /*break*/, 4];
|
|
26
25
|
case 2:
|
|
27
26
|
_d = [[
|
|
@@ -29,14 +28,12 @@ export var useOnInsertImage = function (_a) {
|
|
|
29
28
|
]];
|
|
30
29
|
return [4 /*yield*/, getImageDimensionsFromUrl(fileOrUrl)];
|
|
31
30
|
case 3:
|
|
32
|
-
_c = __spreadArray.apply(void 0, _d.concat([__read.apply(void 0, [(
|
|
33
|
-
|
|
31
|
+
_c = __spreadArray.apply(void 0, _d.concat([__read.apply(void 0, [(_f.sent())]), false]));
|
|
32
|
+
_f.label = 4;
|
|
34
33
|
case 4:
|
|
35
34
|
_b = __read.apply(void 0, [_c, 3]), imageUrl = _b[0], width = _b[1], height = _b[2];
|
|
36
|
-
|
|
37
|
-
_e =
|
|
38
|
-
finalWidth = Math.min(width, Math.min(sheetWidth, maxDimension));
|
|
39
|
-
finalHeight = finalWidth / ratio;
|
|
35
|
+
viewport = getSheetDimensions === null || getSheetDimensions === void 0 ? void 0 : getSheetDimensions();
|
|
36
|
+
_e = fitImageToViewport(width, height, viewport), finalWidth = _e.widthPixels, finalHeight = _e.heightPixels;
|
|
40
37
|
recalcCells = new Map();
|
|
41
38
|
saveHistory = createHistory();
|
|
42
39
|
// Insert over cells => Embeds
|
|
@@ -45,29 +42,19 @@ export var useOnInsertImage = function (_a) {
|
|
|
45
42
|
// Embeds
|
|
46
43
|
onChangeEmbeds === null || onChangeEmbeds === void 0 ? void 0 : onChangeEmbeds(function (prevEmbeds) {
|
|
47
44
|
var _a = __read(produceWithPatches(prevEmbeds, function (draft) {
|
|
48
|
-
var _a;
|
|
49
45
|
if (!draft) {
|
|
50
46
|
draft = [];
|
|
51
47
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
},
|
|
63
|
-
},
|
|
64
|
-
borderColor: "transparent",
|
|
65
|
-
lockAspectRatio: true,
|
|
66
|
-
spec: {
|
|
67
|
-
type: "image",
|
|
68
|
-
imageUrl: imageUrl,
|
|
69
|
-
},
|
|
70
|
-
};
|
|
48
|
+
// The same floating picture the clipboard paste / file drop create.
|
|
49
|
+
var embed = createImageEmbed({
|
|
50
|
+
sheetId: sheetId,
|
|
51
|
+
anchorCell: activeCell,
|
|
52
|
+
imageUrl: imageUrl,
|
|
53
|
+
width: width,
|
|
54
|
+
height: height,
|
|
55
|
+
viewport: viewport,
|
|
56
|
+
idCreationStrategy: idCreationStrategy,
|
|
57
|
+
});
|
|
71
58
|
if (embedId) {
|
|
72
59
|
var idx = draft.findIndex(function (cur) { return cur.embedId === embedId; });
|
|
73
60
|
if (idx !== -1) {
|