@rowsncolumns/ui 15.0.42 → 16.0.0
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/editor/suggestions-dropdown.d.ts +7 -1
- package/dist/cjs/editor/suggestions-dropdown.d.ts.map +1 -1
- package/dist/cjs/editor/suggestions-dropdown.js +9 -8
- package/dist/cjs/editor-pm/helpers.d.ts +3 -1
- package/dist/cjs/editor-pm/helpers.d.ts.map +1 -1
- package/dist/cjs/editor-pm/helpers.js +5 -2
- package/dist/cjs/editor-pm/prosemirror-editor.d.ts +25 -0
- package/dist/cjs/editor-pm/prosemirror-editor.d.ts.map +1 -1
- package/dist/cjs/editor-pm/prosemirror-editor.js +28 -2
- package/dist/cjs/editor-pm/use-editor-change-pm.d.ts +3 -1
- package/dist/cjs/editor-pm/use-editor-change-pm.d.ts.map +1 -1
- package/dist/cjs/editor-pm/use-editor-change-pm.js +3 -2
- package/dist/cjs/function-info/helpers.d.ts +3 -2
- package/dist/cjs/function-info/helpers.d.ts.map +1 -1
- package/dist/cjs/function-info/helpers.js +9 -4
- package/dist/cjs/function-info/index.d.ts +2 -0
- package/dist/cjs/function-info/index.d.ts.map +1 -1
- package/dist/cjs/function-info/index.js +8 -8
- package/dist/esm/editor/suggestions-dropdown.d.ts +7 -1
- package/dist/esm/editor/suggestions-dropdown.d.ts.map +1 -1
- package/dist/esm/editor/suggestions-dropdown.js +8 -5
- package/dist/esm/editor-pm/helpers.d.ts +3 -1
- package/dist/esm/editor-pm/helpers.d.ts.map +1 -1
- package/dist/esm/editor-pm/helpers.js +4 -2
- package/dist/esm/editor-pm/prosemirror-editor.d.ts +25 -0
- package/dist/esm/editor-pm/prosemirror-editor.d.ts.map +1 -1
- package/dist/esm/editor-pm/prosemirror-editor.js +20 -2
- package/dist/esm/editor-pm/use-editor-change-pm.d.ts +3 -1
- package/dist/esm/editor-pm/use-editor-change-pm.d.ts.map +1 -1
- package/dist/esm/editor-pm/use-editor-change-pm.js +3 -2
- package/dist/esm/function-info/helpers.d.ts +3 -2
- package/dist/esm/function-info/helpers.d.ts.map +1 -1
- package/dist/esm/function-info/helpers.js +6 -4
- package/dist/esm/function-info/index.d.ts +2 -0
- package/dist/esm/function-info/index.d.ts.map +1 -1
- package/dist/esm/function-info/index.js +7 -7
- package/package.json +13 -11
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ParsedToken } from "@rowsncolumns/calculator";
|
|
2
2
|
import type { CalculatorFunction } from "@rowsncolumns/common-types";
|
|
3
|
+
import type { FormulaLocale } from "@rowsncolumns/utils";
|
|
3
4
|
import React from "react";
|
|
4
5
|
import { OptionItem } from "../editor-pm/types";
|
|
5
6
|
export type SuggestionsDropdownProps = {
|
|
@@ -20,6 +21,11 @@ export type SuggestionsDropdownProps = {
|
|
|
20
21
|
onSelect(value: OptionItem | CalculatorFunction): void;
|
|
21
22
|
onChangeHighlightedIndex(index: number): void;
|
|
22
23
|
functionDescriptions?: CalculatorFunction[] | null;
|
|
24
|
+
/**
|
|
25
|
+
* The formula locale the editor text (and `functionDescriptions`) are written in — supplies the
|
|
26
|
+
* argument separator the function hint is rendered with. Canonical (`,`) when omitted.
|
|
27
|
+
*/
|
|
28
|
+
formulaLocale?: FormulaLocale;
|
|
23
29
|
};
|
|
24
|
-
export declare const SuggestionsDropdown: React.MemoExoticComponent<({ formulaMode, dropdownStyles, items, functionToken, parameterIndex, highlightedIndex, showFormulaHelp, onHideFormulaHelp, onSelect, onChangeHighlightedIndex, functionDescriptions, }: SuggestionsDropdownProps) => React.JSX.Element>;
|
|
30
|
+
export declare const SuggestionsDropdown: React.MemoExoticComponent<({ formulaMode, dropdownStyles, items, functionToken, parameterIndex, highlightedIndex, showFormulaHelp, onHideFormulaHelp, onSelect, onChangeHighlightedIndex, functionDescriptions, formulaLocale, }: SuggestionsDropdownProps) => React.JSX.Element>;
|
|
25
31
|
//# sourceMappingURL=suggestions-dropdown.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggestions-dropdown.d.ts","sourceRoot":"","sources":["../../../editor/suggestions-dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAA2C,MAAM,OAAO,CAAC;AAShE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAkBhD,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,aAAa,EAAE,WAAW,GAAG,SAAS,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,CAAC,UAAU,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,iBAAiB,CAAC,IAAI,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,kBAAkB,GAAG,IAAI,CAAC;IACvD,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"suggestions-dropdown.d.ts","sourceRoot":"","sources":["../../../editor/suggestions-dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAA2C,MAAM,OAAO,CAAC;AAShE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAkBhD,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,aAAa,EAAE,WAAW,GAAG,SAAS,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,CAAC,UAAU,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,iBAAiB,CAAC,IAAI,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,kBAAkB,GAAG,IAAI,CAAC;IACvD,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;IACnD;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,CAAC;AAKF,eAAO,MAAM,mBAAmB,oOAc3B,wBAAwB,uBAkK5B,CAAC"}
|
|
@@ -4,8 +4,10 @@ import { FunctionInfo } from "../function-info";
|
|
|
4
4
|
import { cn } from "../utils";
|
|
5
5
|
import { StyledCategoryHeader, StyledDropdownItem, StyledDropdownWrapper, } from "./style";
|
|
6
6
|
import { cleanFunctionToken } from "../editor-pm/helpers";
|
|
7
|
+
/** Case fold matching `@rowsncolumns/utils`' dictionaries (Turkish dotted İ folds like I). */
|
|
8
|
+
var foldName = function (name) { return name.toUpperCase().replace(/İ/g, "I"); };
|
|
7
9
|
export var SuggestionsDropdown = memo(function (_a) {
|
|
8
|
-
var formulaMode = _a.formulaMode, dropdownStyles = _a.dropdownStyles, items = _a.items, functionToken = _a.functionToken, parameterIndex = _a.parameterIndex, highlightedIndex = _a.highlightedIndex, _b = _a.showFormulaHelp, showFormulaHelp = _b === void 0 ? true : _b, onHideFormulaHelp = _a.onHideFormulaHelp, onSelect = _a.onSelect, onChangeHighlightedIndex = _a.onChangeHighlightedIndex, functionDescriptions = _a.functionDescriptions;
|
|
10
|
+
var formulaMode = _a.formulaMode, dropdownStyles = _a.dropdownStyles, items = _a.items, functionToken = _a.functionToken, parameterIndex = _a.parameterIndex, highlightedIndex = _a.highlightedIndex, _b = _a.showFormulaHelp, showFormulaHelp = _b === void 0 ? true : _b, onHideFormulaHelp = _a.onHideFormulaHelp, onSelect = _a.onSelect, onChangeHighlightedIndex = _a.onChangeHighlightedIndex, functionDescriptions = _a.functionDescriptions, formulaLocale = _a.formulaLocale;
|
|
9
11
|
var containerRef = useRef(null);
|
|
10
12
|
var itemRefs = useRef(new Map());
|
|
11
13
|
var categorizedItems = useMemo(function () {
|
|
@@ -75,16 +77,15 @@ export var SuggestionsDropdown = memo(function (_a) {
|
|
|
75
77
|
}, [highlightedIndex]);
|
|
76
78
|
// Get active function
|
|
77
79
|
var activeFunction = useMemo(function () {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
: void 0;
|
|
80
|
+
var _a;
|
|
81
|
+
if (!functionToken)
|
|
82
|
+
return void 0;
|
|
83
|
+
var name = foldName(cleanFunctionToken((_a = functionToken.image) !== null && _a !== void 0 ? _a : ""));
|
|
84
|
+
return functionDescriptions === null || functionDescriptions === void 0 ? void 0 : functionDescriptions.find(function (fn) { return foldName(fn.title) === name; });
|
|
84
85
|
}, [functionDescriptions, functionToken]);
|
|
85
86
|
var showFunctionInfo = functionToken && !categorizedItems.length && activeFunction;
|
|
86
87
|
return (React.createElement(StyledDropdownWrapper, { ref: containerRef, style: dropdownStyles, role: "listbox", className: cn("relative", showFunctionInfo && !showFormulaHelp ? "p-0" : undefined, formulaMode ? "w-[340px]" : undefined) },
|
|
87
|
-
Boolean(showFormulaHelp && showFunctionInfo) && (React.createElement(FunctionInfo, { activeFunction: activeFunction, parameterIndex: parameterIndex, onHideFormulaHelp: onHideFormulaHelp })),
|
|
88
|
+
Boolean(showFormulaHelp && showFunctionInfo) && (React.createElement(FunctionInfo, { activeFunction: activeFunction, parameterIndex: parameterIndex, onHideFormulaHelp: onHideFormulaHelp, argumentSeparator: formulaLocale === null || formulaLocale === void 0 ? void 0 : formulaLocale.argumentSeparator })),
|
|
88
89
|
categorizedItems.map(function (_a) {
|
|
89
90
|
var item = _a.item, index = _a.index, header = _a.header, category = _a.category;
|
|
90
91
|
var isNamedRange = category === "namedrange";
|
|
@@ -186,7 +186,9 @@ export declare const getActiveTableToken: (position: number, activeToken: Parsed
|
|
|
186
186
|
* @param tokens
|
|
187
187
|
*/
|
|
188
188
|
export declare const getParameterIndex: (curToken: ParsedToken | undefined, functionToken: ParsedToken | undefined, tokens: ParsedToken[]) => number;
|
|
189
|
-
export declare const getFunctionParameters: (input: string, functionToken: ParsedToken | undefined
|
|
189
|
+
export declare const getFunctionParameters: (input: string, functionToken: ParsedToken | undefined,
|
|
190
|
+
/** The formula locale's argument separator the input was typed with (`,` canonical). */
|
|
191
|
+
argumentSeparator?: string) => {
|
|
190
192
|
parameters: string[];
|
|
191
193
|
ranges: {
|
|
192
194
|
start: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../editor-pm/helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../editor-pm/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -990,8 +990,11 @@ export var getParameterIndex = function (curToken, functionToken, tokens) {
|
|
|
990
990
|
}
|
|
991
991
|
return count;
|
|
992
992
|
};
|
|
993
|
-
export var getFunctionParameters = function (input, functionToken
|
|
993
|
+
export var getFunctionParameters = function (input, functionToken,
|
|
994
|
+
/** The formula locale's argument separator the input was typed with (`,` canonical). */
|
|
995
|
+
argumentSeparator) {
|
|
994
996
|
var _a;
|
|
997
|
+
if (argumentSeparator === void 0) { argumentSeparator = ","; }
|
|
995
998
|
if (!functionToken) {
|
|
996
999
|
return { parameters: [], ranges: [] };
|
|
997
1000
|
}
|
|
@@ -1042,7 +1045,7 @@ export var getFunctionParameters = function (input, functionToken) {
|
|
|
1042
1045
|
for (var i = 0; i <= argsSlice.length; i++) {
|
|
1043
1046
|
var ch = argsSlice[i];
|
|
1044
1047
|
if (i === argsSlice.length ||
|
|
1045
|
-
(ch ===
|
|
1048
|
+
(ch === argumentSeparator &&
|
|
1046
1049
|
paren === 0 &&
|
|
1047
1050
|
brace === 0 &&
|
|
1048
1051
|
bracket === 0 &&
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ParsedToken } from "@rowsncolumns/calculator";
|
|
2
2
|
import type { CalculatorFunction, Mention } from "@rowsncolumns/common-types";
|
|
3
|
+
import { type FormulaLocale } from "@rowsncolumns/utils";
|
|
3
4
|
import React from "react";
|
|
4
5
|
import { Command } from "prosemirror-state";
|
|
5
6
|
import { type RunColorResolver } from "./helpers";
|
|
@@ -44,6 +45,14 @@ export type ProseMirrorEditorProps<M extends Mention = Mention> = RichTextEditor
|
|
|
44
45
|
formulaMode?: boolean;
|
|
45
46
|
isActive?: boolean;
|
|
46
47
|
tokenizer(value: string): ParsedToken[];
|
|
48
|
+
/**
|
|
49
|
+
* The formula locale the editor text is written in (rowsncolumns/spreadsheet#655): the locale's
|
|
50
|
+
* argument separator splits the argument hints, and the function names the host callbacks
|
|
51
|
+
* (`getFunctionParameterSuggestions`, `shouldFetchFunctionParameters`) receive are canonical
|
|
52
|
+
* (English) whatever the user typed. `tokenizer` and `functionDescriptions` are expected to be
|
|
53
|
+
* in the same locale. Canonical syntax when omitted.
|
|
54
|
+
*/
|
|
55
|
+
formulaLocale?: FormulaLocale;
|
|
47
56
|
showDropdown?: boolean;
|
|
48
57
|
dropdownStyles?: React.CSSProperties;
|
|
49
58
|
stickyEditor?: boolean;
|
|
@@ -232,6 +241,14 @@ export declare const ProseMirrorEditorThatMayError: React.NamedExoticComponent<R
|
|
|
232
241
|
* @param value
|
|
233
242
|
*/
|
|
234
243
|
tokenizer(value: string): ParsedToken[];
|
|
244
|
+
/**
|
|
245
|
+
* The formula locale the editor text is written in (rowsncolumns/spreadsheet#655): the locale's
|
|
246
|
+
* argument separator splits the argument hints, and the function names the host callbacks
|
|
247
|
+
* (`getFunctionParameterSuggestions`, `shouldFetchFunctionParameters`) receive are canonical
|
|
248
|
+
* (English) whatever the user typed. `tokenizer` and `functionDescriptions` are expected to be
|
|
249
|
+
* in the same locale. Canonical syntax when omitted.
|
|
250
|
+
*/
|
|
251
|
+
formulaLocale?: FormulaLocale;
|
|
235
252
|
showDropdown?: boolean;
|
|
236
253
|
dropdownStyles?: React.CSSProperties;
|
|
237
254
|
stickyEditor?: boolean;
|
|
@@ -372,6 +389,14 @@ export declare const ProseMirrorEditor: React.ForwardRefExoticComponent<Omit<Ric
|
|
|
372
389
|
* @param value
|
|
373
390
|
*/
|
|
374
391
|
tokenizer(value: string): ParsedToken[];
|
|
392
|
+
/**
|
|
393
|
+
* The formula locale the editor text is written in (rowsncolumns/spreadsheet#655): the locale's
|
|
394
|
+
* argument separator splits the argument hints, and the function names the host callbacks
|
|
395
|
+
* (`getFunctionParameterSuggestions`, `shouldFetchFunctionParameters`) receive are canonical
|
|
396
|
+
* (English) whatever the user typed. `tokenizer` and `functionDescriptions` are expected to be
|
|
397
|
+
* in the same locale. Canonical syntax when omitted.
|
|
398
|
+
*/
|
|
399
|
+
formulaLocale?: FormulaLocale;
|
|
375
400
|
showDropdown?: boolean;
|
|
376
401
|
dropdownStyles?: React.CSSProperties;
|
|
377
402
|
stickyEditor?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prosemirror-editor.d.ts","sourceRoot":"","sources":["../../../editor-pm/prosemirror-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"prosemirror-editor.d.ts","sourceRoot":"","sources":["../../../editor-pm/prosemirror-editor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { __assign, __awaiter, __generator, __read, __rest, __spreadArray, __values } from "tslib";
|
|
2
2
|
import { LoadingIcon, QuestionMarkIcon } from "@rowsncolumns/icons";
|
|
3
|
+
import { canonicalizeFunctionName } from "@rowsncolumns/utils";
|
|
3
4
|
import { addressToCell, getHotkeyKey, isAFormula, isNil, log, } from "@rowsncolumns/utils";
|
|
4
5
|
import React, { forwardRef, memo, useCallback, useImperativeHandle, useMemo, useRef, useState, } from "react";
|
|
5
6
|
import { history, undo, redo } from "prosemirror-history";
|
|
@@ -61,10 +62,34 @@ export var deleteAll = function (state, dispatch) {
|
|
|
61
62
|
*/
|
|
62
63
|
export var ProseMirrorEditorThatMayError = memo(forwardRef(function (_a, forwardedRef) {
|
|
63
64
|
var _b;
|
|
64
|
-
var _c = _a.value, value = _c === void 0 ? "" : _c, isNewValue = _a.isNewValue, formulaMode = _a.formulaMode, onChange = _a.onChange, autoFocus = _a.autoFocus, className = _a.className, onKeyDown = _a.onKeyDown, disabled = _a.disabled, _d = _a.showDropdown, showDropdown = _d === void 0 ? true : _d, _e = _a.persistFocus, persistFocus = _e === void 0 ? true : _e, editorZeroOutline = _a.editorZeroOutline, showFormulaHelp = _a.showFormulaHelp, onHideFormulaHelp = _a.onHideFormulaHelp, onShowFormulaHelp = _a.onShowFormulaHelp, tokenizer = _a.tokenizer, onCancel = _a.onCancel, onSubmit = _a.onSubmit, onFormulaStateChange = _a.onFormulaStateChange, dropdownStyles = _a.dropdownStyles, options = _a.options, isOptionSelected = _a.isOptionSelected, functionDescriptions = _a.functionDescriptions,
|
|
65
|
+
var _c = _a.value, value = _c === void 0 ? "" : _c, isNewValue = _a.isNewValue, formulaMode = _a.formulaMode, onChange = _a.onChange, autoFocus = _a.autoFocus, className = _a.className, onKeyDown = _a.onKeyDown, disabled = _a.disabled, _d = _a.showDropdown, showDropdown = _d === void 0 ? true : _d, _e = _a.persistFocus, persistFocus = _e === void 0 ? true : _e, editorZeroOutline = _a.editorZeroOutline, showFormulaHelp = _a.showFormulaHelp, onHideFormulaHelp = _a.onHideFormulaHelp, onShowFormulaHelp = _a.onShowFormulaHelp, tokenizer = _a.tokenizer, onCancel = _a.onCancel, onSubmit = _a.onSubmit, onFormulaStateChange = _a.onFormulaStateChange, dropdownStyles = _a.dropdownStyles, options = _a.options, isOptionSelected = _a.isOptionSelected, functionDescriptions = _a.functionDescriptions, shouldFetchFunctionParametersProp = _a.shouldFetchFunctionParameters, getFunctionParameterSuggestionsProp = _a.getFunctionParameterSuggestions, formulaLocale = _a.formulaLocale, getMentions = _a.getMentions, getNamedRanges = _a.getNamedRanges, getTableNames = _a.getTableNames, getTableColumnNames = _a.getTableColumnNames, getStructuredProperties = _a.getStructuredProperties, onTeardown = _a.onTeardown, _f = _a.SuggestionsDropdown, SuggestionsDropdown = _f === void 0 ? DefaultSuggestionsDropdown : _f, MentionTagComponent = _a.MentionTagComponent, MentionDropdownItemComponent = _a.MentionDropdownItemComponent, isActive = _a.isActive, _g = _a.stickyEditor, stickyEditor = _g === void 0 ? true : _g, onFocus = _a.onFocus, onBlur = _a.onBlur, onCopy = _a.onCopy, onCut = _a.onCut, onPaste = _a.onPaste, placeholder = _a.placeholder, textFormatRuns = _a.textFormatRuns, resolveRunColor = _a.resolveRunColor, navigationMode = _a.navigationMode, enableContinuousSelection = _a.enableContinuousSelection, cellFontFamily = _a.cellFontFamily, props = __rest(_a, ["value", "isNewValue", "formulaMode", "onChange", "autoFocus", "className", "onKeyDown", "disabled", "showDropdown", "persistFocus", "editorZeroOutline", "showFormulaHelp", "onHideFormulaHelp", "onShowFormulaHelp", "tokenizer", "onCancel", "onSubmit", "onFormulaStateChange", "dropdownStyles", "options", "isOptionSelected", "functionDescriptions", "shouldFetchFunctionParameters", "getFunctionParameterSuggestions", "formulaLocale", "getMentions", "getNamedRanges", "getTableNames", "getTableColumnNames", "getStructuredProperties", "onTeardown", "SuggestionsDropdown", "MentionTagComponent", "MentionDropdownItemComponent", "isActive", "stickyEditor", "onFocus", "onBlur", "onCopy", "onCut", "onPaste", "placeholder", "textFormatRuns", "resolveRunColor", "navigationMode", "enableContinuousSelection", "cellFontFamily"]);
|
|
65
66
|
var editorRef = useRef(null);
|
|
66
67
|
var viewRef = useRef(null);
|
|
67
68
|
var cellFontFamilyRef = useRef(cellFontFamily);
|
|
69
|
+
// The function token is in the editor's locale (`СУММ(`); hosts are asked about the canonical
|
|
70
|
+
// name (`SUM(`) so parameter providers keyed on English names work in every locale.
|
|
71
|
+
var canonicalFunctionImage = useCallback(function (image) {
|
|
72
|
+
if (!formulaLocale || formulaLocale.isCanonical)
|
|
73
|
+
return image;
|
|
74
|
+
var hasParen = image.endsWith("(");
|
|
75
|
+
var name = hasParen ? image.slice(0, -1) : image;
|
|
76
|
+
return canonicalizeFunctionName(name, formulaLocale) + (hasParen ? "(" : "");
|
|
77
|
+
}, [formulaLocale]);
|
|
78
|
+
var needsCanonicalNames = Boolean(formulaLocale && !formulaLocale.isCanonical);
|
|
79
|
+
var shouldFetchFunctionParameters = useMemo(function () {
|
|
80
|
+
return needsCanonicalNames && shouldFetchFunctionParametersProp
|
|
81
|
+
? function (functionName, parameterIndex, parameters) {
|
|
82
|
+
return shouldFetchFunctionParametersProp(canonicalFunctionImage(functionName), parameterIndex, parameters);
|
|
83
|
+
}
|
|
84
|
+
: shouldFetchFunctionParametersProp;
|
|
85
|
+
}, [needsCanonicalNames, shouldFetchFunctionParametersProp, canonicalFunctionImage]);
|
|
86
|
+
var getFunctionParameterSuggestions = useMemo(function () {
|
|
87
|
+
return needsCanonicalNames && getFunctionParameterSuggestionsProp
|
|
88
|
+
? function (functionName, parameterIndex, parameters) {
|
|
89
|
+
return getFunctionParameterSuggestionsProp(canonicalFunctionImage(functionName), parameterIndex, parameters);
|
|
90
|
+
}
|
|
91
|
+
: getFunctionParameterSuggestionsProp;
|
|
92
|
+
}, [needsCanonicalNames, getFunctionParameterSuggestionsProp, canonicalFunctionImage]);
|
|
68
93
|
var _h = __read(useState(), 2), cursorPosition = _h[0], setCursorPosition = _h[1];
|
|
69
94
|
var _j = __read(useState(), 2), tableToken = _j[0], setTableToken = _j[1];
|
|
70
95
|
var _k = __read(useState(), 2), functionToken = _k[0], setFunctionToken = _k[1];
|
|
@@ -281,6 +306,7 @@ export var ProseMirrorEditorThatMayError = memo(forwardRef(function (_a, forward
|
|
|
281
306
|
},
|
|
282
307
|
onChangePreviousToken: setPreviousToken,
|
|
283
308
|
enableContinuousSelection: enableContinuousSelection !== null && enableContinuousSelection !== void 0 ? enableContinuousSelection : isNil(navigationMode),
|
|
309
|
+
argumentSeparator: formulaLocale === null || formulaLocale === void 0 ? void 0 : formulaLocale.argumentSeparator,
|
|
284
310
|
});
|
|
285
311
|
// Initialize editor
|
|
286
312
|
useIsomorphicLayoutEffect(function () {
|
|
@@ -1134,7 +1160,7 @@ export var ProseMirrorEditorThatMayError = memo(forwardRef(function (_a, forward
|
|
|
1134
1160
|
} })),
|
|
1135
1161
|
showDropdownEffective && isDropdownOpen && (React.createElement(ConditionalWrapper, { condition: stickyEditor, wrapper: function (children) { return React.createElement(Portal, { asChild: true }, children); } },
|
|
1136
1162
|
React.createElement(Popper.Content, { side: "bottom", align: "start", className: "z-50", sideOffset: 2 },
|
|
1137
|
-
React.createElement(SuggestionsDropdown, { functionDescriptions: functionDescriptions, formulaMode: formulaMode, dropdownStyles: dropdownStyles, functionToken: functionToken, parameterIndex: parameterIndex, items: items, highlightedIndex: highlightedIndex, onSelect: onSelect, onChangeHighlightedIndex: onChangeHighlightedIndex, showFormulaHelp: showFormulaHelp, onHideFormulaHelp: onHideFormulaHelp })))),
|
|
1163
|
+
React.createElement(SuggestionsDropdown, { functionDescriptions: functionDescriptions, formulaMode: formulaMode, dropdownStyles: dropdownStyles, functionToken: functionToken, parameterIndex: parameterIndex, items: items, highlightedIndex: highlightedIndex, onSelect: onSelect, onChangeHighlightedIndex: onChangeHighlightedIndex, showFormulaHelp: showFormulaHelp, onHideFormulaHelp: onHideFormulaHelp, formulaLocale: formulaLocale })))),
|
|
1138
1164
|
showDropdownEffective && showMentionDropdownEffective && (React.createElement(ConditionalWrapper, { condition: stickyEditor, wrapper: function (children) { return React.createElement(Portal, { asChild: true }, children); } },
|
|
1139
1165
|
React.createElement(Popper.Content, { side: "bottom", align: "start", className: "z-50", sideOffset: 2 },
|
|
1140
1166
|
React.createElement(MentionsDropdown, { mentions: mentions, onSelect: handleInsertMention, highlightedIndex: mentionHighlightedIndex, isFetchingMentions: isFetchingMentions, MentionDropdownItemComponent: MentionDropdownItemComponent }))))));
|
|
@@ -23,7 +23,9 @@ type UseEditorOnChangePMProps = {
|
|
|
23
23
|
end: number;
|
|
24
24
|
}[]): void;
|
|
25
25
|
onChangePreviousToken(token: ParsedToken | undefined): void;
|
|
26
|
+
/** Argument separator of the formula locale the editor text is written in (`,` canonical). */
|
|
27
|
+
argumentSeparator?: string;
|
|
26
28
|
};
|
|
27
|
-
export declare const useEditorOnChangePM: ({ onChange, getView, isActive, enableContinuousSelection, tokenizer, onChangeCursor, onChangeActiveToken, onFormulaStateChange, onSuggestionTokenChange, onTableTokenChange, onChangeFunctionToken, onChangeParameterIndex, onCellPropertyTokenChange, onChangeFunctionParameters, onChangeIsEdgeOfCell, onChangePreviousToken, }: UseEditorOnChangePMProps) => (newState: EditorState) => void;
|
|
29
|
+
export declare const useEditorOnChangePM: ({ onChange, getView, isActive, enableContinuousSelection, tokenizer, onChangeCursor, onChangeActiveToken, onFormulaStateChange, onSuggestionTokenChange, onTableTokenChange, onChangeFunctionToken, onChangeParameterIndex, onCellPropertyTokenChange, onChangeFunctionParameters, onChangeIsEdgeOfCell, onChangePreviousToken, argumentSeparator, }: UseEditorOnChangePMProps) => (newState: EditorState) => void;
|
|
28
30
|
export {};
|
|
29
31
|
//# sourceMappingURL=use-editor-change-pm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-editor-change-pm.d.ts","sourceRoot":"","sources":["../../../editor-pm/use-editor-change-pm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAyBnE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACvE,OAAO,IAAI,UAAU,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACnD,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACxC,oBAAoB,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;IACrE,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9D,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IACzD,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5D,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,oBAAoB,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,yBAAyB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAChE,0BAA0B,CAAC,CACzB,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,GACvC,IAAI,CAAC;IACR,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"use-editor-change-pm.d.ts","sourceRoot":"","sources":["../../../editor-pm/use-editor-change-pm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAyBnE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACvE,OAAO,IAAI,UAAU,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACnD,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACxC,oBAAoB,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;IACrE,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9D,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IACzD,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5D,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,oBAAoB,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,yBAAyB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAChE,0BAA0B,CAAC,CACzB,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,GACvC,IAAI,CAAC;IACR,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5D,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,sVAkBjC,wBAAwB,gBAWV,WAAW,SAsN3B,CAAC"}
|
|
@@ -5,7 +5,7 @@ import { enableCellSelection, extractTextFormatRuns, getActiveFunctionToken, get
|
|
|
5
5
|
import { useCallbackRef } from "@rowsncolumns/grid";
|
|
6
6
|
import { CELL_SUGGESTION_PREFIX } from "../editor/constants";
|
|
7
7
|
export var useEditorOnChangePM = function (_a) {
|
|
8
|
-
var onChange = _a.onChange, getView = _a.getView, isActive = _a.isActive, enableContinuousSelection = _a.enableContinuousSelection, tokenizer = _a.tokenizer, onChangeCursor = _a.onChangeCursor, onChangeActiveToken = _a.onChangeActiveToken, onFormulaStateChange = _a.onFormulaStateChange, onSuggestionTokenChange = _a.onSuggestionTokenChange, onTableTokenChange = _a.onTableTokenChange, onChangeFunctionToken = _a.onChangeFunctionToken, onChangeParameterIndex = _a.onChangeParameterIndex, onCellPropertyTokenChange = _a.onCellPropertyTokenChange, onChangeFunctionParameters = _a.onChangeFunctionParameters, onChangeIsEdgeOfCell = _a.onChangeIsEdgeOfCell, onChangePreviousToken = _a.onChangePreviousToken;
|
|
8
|
+
var onChange = _a.onChange, getView = _a.getView, isActive = _a.isActive, enableContinuousSelection = _a.enableContinuousSelection, tokenizer = _a.tokenizer, onChangeCursor = _a.onChangeCursor, onChangeActiveToken = _a.onChangeActiveToken, onFormulaStateChange = _a.onFormulaStateChange, onSuggestionTokenChange = _a.onSuggestionTokenChange, onTableTokenChange = _a.onTableTokenChange, onChangeFunctionToken = _a.onChangeFunctionToken, onChangeParameterIndex = _a.onChangeParameterIndex, onCellPropertyTokenChange = _a.onCellPropertyTokenChange, onChangeFunctionParameters = _a.onChangeFunctionParameters, onChangeIsEdgeOfCell = _a.onChangeIsEdgeOfCell, onChangePreviousToken = _a.onChangePreviousToken, argumentSeparator = _a.argumentSeparator;
|
|
9
9
|
var lastSeenCursorTokenRef = useRef(undefined);
|
|
10
10
|
useEffect(function () {
|
|
11
11
|
if (!isActive) {
|
|
@@ -95,7 +95,7 @@ export var useEditorOnChangePM = function (_a) {
|
|
|
95
95
|
}
|
|
96
96
|
// Get function parameters
|
|
97
97
|
var parameterIndex = getParameterIndex(tokenForFunction, functionToken, tokens);
|
|
98
|
-
var _h = getFunctionParameters(line, functionToken), parameters = _h.parameters, ranges = _h.ranges;
|
|
98
|
+
var _h = getFunctionParameters(line, functionToken, argumentSeparator), parameters = _h.parameters, ranges = _h.ranges;
|
|
99
99
|
// Cursor position to show cell suggestion
|
|
100
100
|
onChangeCursor(canSelectCells ? cursorPos : undefined);
|
|
101
101
|
// Active token
|
|
@@ -154,5 +154,6 @@ export var useEditorOnChangePM = function (_a) {
|
|
|
154
154
|
onChangeParameterIndex,
|
|
155
155
|
onCellPropertyTokenChange,
|
|
156
156
|
onChangeFunctionParameters,
|
|
157
|
+
argumentSeparator,
|
|
157
158
|
]));
|
|
158
159
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Tokenizes function syntax
|
|
2
|
+
* Tokenizes function syntax. `argumentSeparator` is the locale's argument separator the syntax
|
|
3
|
+
* was written with (`,` for the canonical catalog, `;` for a `localizeFunctionSyntax` result).
|
|
3
4
|
* @param syntax
|
|
4
5
|
*/
|
|
5
|
-
export declare const tokenizeFunctionSyntax: (syntax: string) => {
|
|
6
|
+
export declare const tokenizeFunctionSyntax: (syntax: string, argumentSeparator?: string) => {
|
|
6
7
|
functionOpen: string;
|
|
7
8
|
parameters: string[];
|
|
8
9
|
functionClose: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../function-info/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../function-info/helpers.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,MAAM,EAAE,0BAAuB;;;;CAoB7E,CAAC"}
|
|
@@ -1,16 +1,21 @@
|
|
|
1
|
+
var escapeForRegExp = function (value) {
|
|
2
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
3
|
+
};
|
|
1
4
|
/**
|
|
2
|
-
* Tokenizes function syntax
|
|
5
|
+
* Tokenizes function syntax. `argumentSeparator` is the locale's argument separator the syntax
|
|
6
|
+
* was written with (`,` for the canonical catalog, `;` for a `localizeFunctionSyntax` result).
|
|
3
7
|
* @param syntax
|
|
4
8
|
*/
|
|
5
|
-
export var tokenizeFunctionSyntax = function (syntax) {
|
|
9
|
+
export var tokenizeFunctionSyntax = function (syntax, argumentSeparator) {
|
|
10
|
+
if (argumentSeparator === void 0) { argumentSeparator = ","; }
|
|
6
11
|
var openParen = "(";
|
|
7
12
|
var closeParen = ")";
|
|
8
13
|
var index = syntax.indexOf(openParen) + 1;
|
|
9
14
|
var functionOpen = syntax.substr(0, index);
|
|
10
15
|
var parameters = syntax
|
|
11
16
|
.substr(index, syntax.length - index - 1)
|
|
12
|
-
// https://regex101.com/r/ymosUf/1 : Exclude
|
|
13
|
-
.split(
|
|
17
|
+
// https://regex101.com/r/ymosUf/1 : Exclude the separator inside square braces
|
|
18
|
+
.split(new RegExp("".concat(escapeForRegExp(argumentSeparator), "\\s*(?=[^)^\\]^}]*(?:\\(|\\[|\\{|$))"), "gi"))
|
|
14
19
|
.map(function (a) { return a.trim(); });
|
|
15
20
|
return {
|
|
16
21
|
functionOpen: functionOpen,
|
|
@@ -5,6 +5,8 @@ type FunctionInfoProps = {
|
|
|
5
5
|
parameterIndex?: number;
|
|
6
6
|
showFormulaHelp?: boolean;
|
|
7
7
|
onHideFormulaHelp?(): void;
|
|
8
|
+
/** Argument separator of the syntax being shown (the formula locale's; `,` by default). */
|
|
9
|
+
argumentSeparator?: string;
|
|
8
10
|
};
|
|
9
11
|
export declare const FunctionInfo: React.FC<FunctionInfoProps>;
|
|
10
12
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../function-info/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAkB,MAAM,OAAO,CAAC;AAOvC,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,IAAI,IAAI,CAAC;CAC5B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../function-info/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAkB,MAAM,OAAO,CAAC;AAOvC,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,IAAI,IAAI,CAAC;IAC3B,2FAA2F;IAC3F,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAUF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAyEpD,CAAC"}
|
|
@@ -6,16 +6,16 @@ import { tokenizeFunctionSyntax } from "./helpers";
|
|
|
6
6
|
import { StyledFunctionParameterTitle, StyledFunctionSubtitle } from "./style";
|
|
7
7
|
var ACTIVE_COLOR = "#008000";
|
|
8
8
|
export var FunctionInfo = function (_a) {
|
|
9
|
-
var activeFunction = _a.activeFunction, _b = _a.parameterIndex, parameterIndex = _b === void 0 ? 0 : _b, onHideFormulaHelp = _a.onHideFormulaHelp;
|
|
10
|
-
var
|
|
9
|
+
var activeFunction = _a.activeFunction, _b = _a.parameterIndex, parameterIndex = _b === void 0 ? 0 : _b, onHideFormulaHelp = _a.onHideFormulaHelp, _c = _a.argumentSeparator, argumentSeparator = _c === void 0 ? "," : _c;
|
|
10
|
+
var _d = activeFunction !== null && activeFunction !== void 0 ? activeFunction : {}, syntax = _d.syntax, example = _d.example, description = _d.description, parameters = _d.parameters;
|
|
11
11
|
/**
|
|
12
12
|
* It can happen that formula list does not contain
|
|
13
13
|
* parameters, but syntax has
|
|
14
14
|
* Use syntax
|
|
15
15
|
*/
|
|
16
16
|
var paramLen = useMemo(function () {
|
|
17
|
-
return tokenizeFunctionSyntax(syntax !== null && syntax !== void 0 ? syntax : "").parameters.length;
|
|
18
|
-
}, [syntax]);
|
|
17
|
+
return tokenizeFunctionSyntax(syntax !== null && syntax !== void 0 ? syntax : "", argumentSeparator).parameters.length;
|
|
18
|
+
}, [syntax, argumentSeparator]);
|
|
19
19
|
var paramIndex = Math.min(parameterIndex, paramLen - 1);
|
|
20
20
|
/**
|
|
21
21
|
* If Function is not documented,
|
|
@@ -26,7 +26,7 @@ export var FunctionInfo = function (_a) {
|
|
|
26
26
|
return (React.createElement("div", { className: "break-words text-rnc-foreground" },
|
|
27
27
|
React.createElement("div", { className: "py-1 px-2 text-sm rounded-t-sm place-items-center flex bg-rnc-accent -mt-1 font-formula" },
|
|
28
28
|
React.createElement("div", { className: "flex-1" },
|
|
29
|
-
React.createElement(TokenizedFunction, { syntax: syntax, parameterIndex: paramIndex })),
|
|
29
|
+
React.createElement(TokenizedFunction, { syntax: syntax, parameterIndex: paramIndex, argumentSeparator: argumentSeparator })),
|
|
30
30
|
React.createElement(IconButton, { onClick: onHideFormulaHelp, title: "Hide formula suggestions for this cell" },
|
|
31
31
|
React.createElement(CrossCircledIcon, null))),
|
|
32
32
|
React.createElement(Separator, { orientation: "horizontal", color: "$gray7" }),
|
|
@@ -50,16 +50,16 @@ export var FunctionInfo = function (_a) {
|
|
|
50
50
|
* @param param0
|
|
51
51
|
*/
|
|
52
52
|
var TokenizedFunction = function (_a) {
|
|
53
|
-
var syntax = _a.syntax, parameterIndex = _a.parameterIndex;
|
|
53
|
+
var syntax = _a.syntax, parameterIndex = _a.parameterIndex, argumentSeparator = _a.argumentSeparator;
|
|
54
54
|
if (!syntax) {
|
|
55
55
|
return null;
|
|
56
56
|
}
|
|
57
|
-
var _b = tokenizeFunctionSyntax(syntax), functionOpen = _b.functionOpen, parameters = _b.parameters, functionClose = _b.functionClose;
|
|
57
|
+
var _b = tokenizeFunctionSyntax(syntax, argumentSeparator), functionOpen = _b.functionOpen, parameters = _b.parameters, functionClose = _b.functionClose;
|
|
58
58
|
var paramLen = parameters.length;
|
|
59
59
|
return (React.createElement(React.Fragment, null,
|
|
60
60
|
React.createElement("span", null, functionOpen),
|
|
61
61
|
parameters.map(function (param, i) {
|
|
62
|
-
var sep = i < paramLen - 1 ? ", " : "";
|
|
62
|
+
var sep = i < paramLen - 1 ? "".concat(argumentSeparator, " ") : "";
|
|
63
63
|
return (React.createElement(React.Fragment, { key: i },
|
|
64
64
|
React.createElement("span", { style: {
|
|
65
65
|
color: parameterIndex === i ? ACTIVE_COLOR : void 0,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ParsedToken } from "@rowsncolumns/calculator";
|
|
2
2
|
import type { CalculatorFunction } from "@rowsncolumns/common-types";
|
|
3
|
+
import type { FormulaLocale } from "@rowsncolumns/utils";
|
|
3
4
|
import React from "react";
|
|
4
5
|
import { OptionItem } from "../editor-pm/types";
|
|
5
6
|
export type SuggestionsDropdownProps = {
|
|
@@ -20,6 +21,11 @@ export type SuggestionsDropdownProps = {
|
|
|
20
21
|
onSelect(value: OptionItem | CalculatorFunction): void;
|
|
21
22
|
onChangeHighlightedIndex(index: number): void;
|
|
22
23
|
functionDescriptions?: CalculatorFunction[] | null;
|
|
24
|
+
/**
|
|
25
|
+
* The formula locale the editor text (and `functionDescriptions`) are written in — supplies the
|
|
26
|
+
* argument separator the function hint is rendered with. Canonical (`,`) when omitted.
|
|
27
|
+
*/
|
|
28
|
+
formulaLocale?: FormulaLocale;
|
|
23
29
|
};
|
|
24
|
-
export declare const SuggestionsDropdown: React.MemoExoticComponent<({ formulaMode, dropdownStyles, items, functionToken, parameterIndex, highlightedIndex, showFormulaHelp, onHideFormulaHelp, onSelect, onChangeHighlightedIndex, functionDescriptions, }: SuggestionsDropdownProps) => React.JSX.Element>;
|
|
30
|
+
export declare const SuggestionsDropdown: React.MemoExoticComponent<({ formulaMode, dropdownStyles, items, functionToken, parameterIndex, highlightedIndex, showFormulaHelp, onHideFormulaHelp, onSelect, onChangeHighlightedIndex, functionDescriptions, formulaLocale, }: SuggestionsDropdownProps) => React.JSX.Element>;
|
|
25
31
|
//# sourceMappingURL=suggestions-dropdown.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suggestions-dropdown.d.ts","sourceRoot":"","sources":["../../../editor/suggestions-dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAA2C,MAAM,OAAO,CAAC;AAShE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAkBhD,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,aAAa,EAAE,WAAW,GAAG,SAAS,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,CAAC,UAAU,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,iBAAiB,CAAC,IAAI,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,kBAAkB,GAAG,IAAI,CAAC;IACvD,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"suggestions-dropdown.d.ts","sourceRoot":"","sources":["../../../editor/suggestions-dropdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAA2C,MAAM,OAAO,CAAC;AAShE,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAkBhD,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,aAAa,EAAE,WAAW,GAAG,SAAS,CAAC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,CAAC,UAAU,GAAG,kBAAkB,CAAC,EAAE,CAAC;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,iBAAiB,CAAC,IAAI,IAAI,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,kBAAkB,GAAG,IAAI,CAAC;IACvD,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,oBAAoB,CAAC,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAAC;IACnD;;;OAGG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,CAAC;AAKF,eAAO,MAAM,mBAAmB,oOAc3B,wBAAwB,uBAkK5B,CAAC"}
|
|
@@ -4,7 +4,9 @@ import { FunctionInfo } from "../function-info";
|
|
|
4
4
|
import { cn } from "../utils";
|
|
5
5
|
import { StyledCategoryHeader, StyledDropdownItem, StyledDropdownWrapper, } from "./style";
|
|
6
6
|
import { cleanFunctionToken } from "../editor-pm/helpers";
|
|
7
|
-
|
|
7
|
+
/** Case fold matching `@rowsncolumns/utils`' dictionaries (Turkish dotted İ folds like I). */
|
|
8
|
+
const foldName = (name) => name.toUpperCase().replace(/İ/g, "I");
|
|
9
|
+
export const SuggestionsDropdown = memo(({ formulaMode, dropdownStyles, items, functionToken, parameterIndex, highlightedIndex, showFormulaHelp = true, onHideFormulaHelp, onSelect, onChangeHighlightedIndex, functionDescriptions, formulaLocale, }) => {
|
|
8
10
|
const containerRef = useRef(null);
|
|
9
11
|
const itemRefs = useRef(new Map());
|
|
10
12
|
const categorizedItems = useMemo(() => {
|
|
@@ -74,13 +76,14 @@ export const SuggestionsDropdown = memo(({ formulaMode, dropdownStyles, items, f
|
|
|
74
76
|
}, [highlightedIndex]);
|
|
75
77
|
// Get active function
|
|
76
78
|
const activeFunction = useMemo(() => {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
79
|
+
if (!functionToken)
|
|
80
|
+
return void 0;
|
|
81
|
+
const name = foldName(cleanFunctionToken(functionToken.image ?? ""));
|
|
82
|
+
return functionDescriptions?.find((fn) => foldName(fn.title) === name);
|
|
80
83
|
}, [functionDescriptions, functionToken]);
|
|
81
84
|
const showFunctionInfo = functionToken && !categorizedItems.length && activeFunction;
|
|
82
85
|
return (React.createElement(StyledDropdownWrapper, { ref: containerRef, style: dropdownStyles, role: "listbox", className: cn("relative", showFunctionInfo && !showFormulaHelp ? "p-0" : undefined, formulaMode ? "w-[340px]" : undefined) },
|
|
83
|
-
Boolean(showFormulaHelp && showFunctionInfo) && (React.createElement(FunctionInfo, { activeFunction: activeFunction, parameterIndex: parameterIndex, onHideFormulaHelp: onHideFormulaHelp })),
|
|
86
|
+
Boolean(showFormulaHelp && showFunctionInfo) && (React.createElement(FunctionInfo, { activeFunction: activeFunction, parameterIndex: parameterIndex, onHideFormulaHelp: onHideFormulaHelp, argumentSeparator: formulaLocale?.argumentSeparator })),
|
|
84
87
|
categorizedItems.map(({ item, index, header, category }) => {
|
|
85
88
|
const isNamedRange = category === "namedrange";
|
|
86
89
|
const isFunction = category === "function";
|
|
@@ -186,7 +186,9 @@ export declare const getActiveTableToken: (position: number, activeToken: Parsed
|
|
|
186
186
|
* @param tokens
|
|
187
187
|
*/
|
|
188
188
|
export declare const getParameterIndex: (curToken: ParsedToken | undefined, functionToken: ParsedToken | undefined, tokens: ParsedToken[]) => number;
|
|
189
|
-
export declare const getFunctionParameters: (input: string, functionToken: ParsedToken | undefined
|
|
189
|
+
export declare const getFunctionParameters: (input: string, functionToken: ParsedToken | undefined,
|
|
190
|
+
/** The formula locale's argument separator the input was typed with (`,` canonical). */
|
|
191
|
+
argumentSeparator?: string) => {
|
|
190
192
|
parameters: string[];
|
|
191
193
|
ranges: {
|
|
192
194
|
start: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../editor-pm/helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../editor-pm/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -932,7 +932,9 @@ export const getParameterIndex = (curToken, functionToken, tokens) => {
|
|
|
932
932
|
}
|
|
933
933
|
return count;
|
|
934
934
|
};
|
|
935
|
-
export const getFunctionParameters = (input, functionToken
|
|
935
|
+
export const getFunctionParameters = (input, functionToken,
|
|
936
|
+
/** The formula locale's argument separator the input was typed with (`,` canonical). */
|
|
937
|
+
argumentSeparator = ",") => {
|
|
936
938
|
if (!functionToken) {
|
|
937
939
|
return { parameters: [], ranges: [] };
|
|
938
940
|
}
|
|
@@ -983,7 +985,7 @@ export const getFunctionParameters = (input, functionToken) => {
|
|
|
983
985
|
for (let i = 0; i <= argsSlice.length; i++) {
|
|
984
986
|
const ch = argsSlice[i];
|
|
985
987
|
if (i === argsSlice.length ||
|
|
986
|
-
(ch ===
|
|
988
|
+
(ch === argumentSeparator &&
|
|
987
989
|
paren === 0 &&
|
|
988
990
|
brace === 0 &&
|
|
989
991
|
bracket === 0 &&
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ParsedToken } from "@rowsncolumns/calculator";
|
|
2
2
|
import type { CalculatorFunction, Mention } from "@rowsncolumns/common-types";
|
|
3
|
+
import { type FormulaLocale } from "@rowsncolumns/utils";
|
|
3
4
|
import React from "react";
|
|
4
5
|
import { Command } from "prosemirror-state";
|
|
5
6
|
import { type RunColorResolver } from "./helpers";
|
|
@@ -44,6 +45,14 @@ export type ProseMirrorEditorProps<M extends Mention = Mention> = RichTextEditor
|
|
|
44
45
|
formulaMode?: boolean;
|
|
45
46
|
isActive?: boolean;
|
|
46
47
|
tokenizer(value: string): ParsedToken[];
|
|
48
|
+
/**
|
|
49
|
+
* The formula locale the editor text is written in (rowsncolumns/spreadsheet#655): the locale's
|
|
50
|
+
* argument separator splits the argument hints, and the function names the host callbacks
|
|
51
|
+
* (`getFunctionParameterSuggestions`, `shouldFetchFunctionParameters`) receive are canonical
|
|
52
|
+
* (English) whatever the user typed. `tokenizer` and `functionDescriptions` are expected to be
|
|
53
|
+
* in the same locale. Canonical syntax when omitted.
|
|
54
|
+
*/
|
|
55
|
+
formulaLocale?: FormulaLocale;
|
|
47
56
|
showDropdown?: boolean;
|
|
48
57
|
dropdownStyles?: React.CSSProperties;
|
|
49
58
|
stickyEditor?: boolean;
|
|
@@ -232,6 +241,14 @@ export declare const ProseMirrorEditorThatMayError: React.NamedExoticComponent<R
|
|
|
232
241
|
* @param value
|
|
233
242
|
*/
|
|
234
243
|
tokenizer(value: string): ParsedToken[];
|
|
244
|
+
/**
|
|
245
|
+
* The formula locale the editor text is written in (rowsncolumns/spreadsheet#655): the locale's
|
|
246
|
+
* argument separator splits the argument hints, and the function names the host callbacks
|
|
247
|
+
* (`getFunctionParameterSuggestions`, `shouldFetchFunctionParameters`) receive are canonical
|
|
248
|
+
* (English) whatever the user typed. `tokenizer` and `functionDescriptions` are expected to be
|
|
249
|
+
* in the same locale. Canonical syntax when omitted.
|
|
250
|
+
*/
|
|
251
|
+
formulaLocale?: FormulaLocale;
|
|
235
252
|
showDropdown?: boolean;
|
|
236
253
|
dropdownStyles?: React.CSSProperties;
|
|
237
254
|
stickyEditor?: boolean;
|
|
@@ -372,6 +389,14 @@ export declare const ProseMirrorEditor: React.ForwardRefExoticComponent<Omit<Ric
|
|
|
372
389
|
* @param value
|
|
373
390
|
*/
|
|
374
391
|
tokenizer(value: string): ParsedToken[];
|
|
392
|
+
/**
|
|
393
|
+
* The formula locale the editor text is written in (rowsncolumns/spreadsheet#655): the locale's
|
|
394
|
+
* argument separator splits the argument hints, and the function names the host callbacks
|
|
395
|
+
* (`getFunctionParameterSuggestions`, `shouldFetchFunctionParameters`) receive are canonical
|
|
396
|
+
* (English) whatever the user typed. `tokenizer` and `functionDescriptions` are expected to be
|
|
397
|
+
* in the same locale. Canonical syntax when omitted.
|
|
398
|
+
*/
|
|
399
|
+
formulaLocale?: FormulaLocale;
|
|
375
400
|
showDropdown?: boolean;
|
|
376
401
|
dropdownStyles?: React.CSSProperties;
|
|
377
402
|
stickyEditor?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prosemirror-editor.d.ts","sourceRoot":"","sources":["../../../editor-pm/prosemirror-editor.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"prosemirror-editor.d.ts","sourceRoot":"","sources":["../../../editor-pm/prosemirror-editor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { LoadingIcon, QuestionMarkIcon } from "@rowsncolumns/icons";
|
|
2
|
+
import { canonicalizeFunctionName } from "@rowsncolumns/utils";
|
|
2
3
|
import { addressToCell, getHotkeyKey, isAFormula, isNil, log, } from "@rowsncolumns/utils";
|
|
3
4
|
import React, { forwardRef, memo, useCallback, useImperativeHandle, useMemo, useRef, useState, } from "react";
|
|
4
5
|
import { history, undo, redo } from "prosemirror-history";
|
|
@@ -58,10 +59,26 @@ export const deleteAll = (state, dispatch) => {
|
|
|
58
59
|
* ProseMirror editor component for rich text and formula editing.
|
|
59
60
|
* Supports syntax highlighting, autocomplete, and keyboard shortcuts.
|
|
60
61
|
*/
|
|
61
|
-
export const ProseMirrorEditorThatMayError = memo(forwardRef(({ value = "", isNewValue, formulaMode, onChange, autoFocus, className, onKeyDown, disabled, showDropdown = true, persistFocus = true, editorZeroOutline, showFormulaHelp, onHideFormulaHelp, onShowFormulaHelp, tokenizer, onCancel, onSubmit, onFormulaStateChange, dropdownStyles, options, isOptionSelected, functionDescriptions, shouldFetchFunctionParameters, getFunctionParameterSuggestions, getMentions, getNamedRanges, getTableNames, getTableColumnNames, getStructuredProperties, onTeardown, SuggestionsDropdown = DefaultSuggestionsDropdown, MentionTagComponent, MentionDropdownItemComponent, isActive, stickyEditor = true, onFocus, onBlur, onCopy, onCut, onPaste, placeholder, textFormatRuns, resolveRunColor, navigationMode, enableContinuousSelection, cellFontFamily, ...props }, forwardedRef) => {
|
|
62
|
+
export const ProseMirrorEditorThatMayError = memo(forwardRef(({ value = "", isNewValue, formulaMode, onChange, autoFocus, className, onKeyDown, disabled, showDropdown = true, persistFocus = true, editorZeroOutline, showFormulaHelp, onHideFormulaHelp, onShowFormulaHelp, tokenizer, onCancel, onSubmit, onFormulaStateChange, dropdownStyles, options, isOptionSelected, functionDescriptions, shouldFetchFunctionParameters: shouldFetchFunctionParametersProp, getFunctionParameterSuggestions: getFunctionParameterSuggestionsProp, formulaLocale, getMentions, getNamedRanges, getTableNames, getTableColumnNames, getStructuredProperties, onTeardown, SuggestionsDropdown = DefaultSuggestionsDropdown, MentionTagComponent, MentionDropdownItemComponent, isActive, stickyEditor = true, onFocus, onBlur, onCopy, onCut, onPaste, placeholder, textFormatRuns, resolveRunColor, navigationMode, enableContinuousSelection, cellFontFamily, ...props }, forwardedRef) => {
|
|
62
63
|
const editorRef = useRef(null);
|
|
63
64
|
const viewRef = useRef(null);
|
|
64
65
|
const cellFontFamilyRef = useRef(cellFontFamily);
|
|
66
|
+
// The function token is in the editor's locale (`СУММ(`); hosts are asked about the canonical
|
|
67
|
+
// name (`SUM(`) so parameter providers keyed on English names work in every locale.
|
|
68
|
+
const canonicalFunctionImage = useCallback((image) => {
|
|
69
|
+
if (!formulaLocale || formulaLocale.isCanonical)
|
|
70
|
+
return image;
|
|
71
|
+
const hasParen = image.endsWith("(");
|
|
72
|
+
const name = hasParen ? image.slice(0, -1) : image;
|
|
73
|
+
return canonicalizeFunctionName(name, formulaLocale) + (hasParen ? "(" : "");
|
|
74
|
+
}, [formulaLocale]);
|
|
75
|
+
const needsCanonicalNames = Boolean(formulaLocale && !formulaLocale.isCanonical);
|
|
76
|
+
const shouldFetchFunctionParameters = useMemo(() => needsCanonicalNames && shouldFetchFunctionParametersProp
|
|
77
|
+
? (functionName, parameterIndex, parameters) => shouldFetchFunctionParametersProp(canonicalFunctionImage(functionName), parameterIndex, parameters)
|
|
78
|
+
: shouldFetchFunctionParametersProp, [needsCanonicalNames, shouldFetchFunctionParametersProp, canonicalFunctionImage]);
|
|
79
|
+
const getFunctionParameterSuggestions = useMemo(() => needsCanonicalNames && getFunctionParameterSuggestionsProp
|
|
80
|
+
? (functionName, parameterIndex, parameters) => getFunctionParameterSuggestionsProp(canonicalFunctionImage(functionName), parameterIndex, parameters)
|
|
81
|
+
: getFunctionParameterSuggestionsProp, [needsCanonicalNames, getFunctionParameterSuggestionsProp, canonicalFunctionImage]);
|
|
65
82
|
const [cursorPosition, setCursorPosition] = useState();
|
|
66
83
|
const [tableToken, setTableToken] = useState();
|
|
67
84
|
const [functionToken, setFunctionToken] = useState();
|
|
@@ -264,6 +281,7 @@ export const ProseMirrorEditorThatMayError = memo(forwardRef(({ value = "", isNe
|
|
|
264
281
|
},
|
|
265
282
|
onChangePreviousToken: setPreviousToken,
|
|
266
283
|
enableContinuousSelection: enableContinuousSelection ?? isNil(navigationMode),
|
|
284
|
+
argumentSeparator: formulaLocale?.argumentSeparator,
|
|
267
285
|
});
|
|
268
286
|
// Initialize editor
|
|
269
287
|
useIsomorphicLayoutEffect(() => {
|
|
@@ -1124,7 +1142,7 @@ export const ProseMirrorEditorThatMayError = memo(forwardRef(({ value = "", isNe
|
|
|
1124
1142
|
} })),
|
|
1125
1143
|
showDropdownEffective && isDropdownOpen && (React.createElement(ConditionalWrapper, { condition: stickyEditor, wrapper: (children) => React.createElement(Portal, { asChild: true }, children) },
|
|
1126
1144
|
React.createElement(Popper.Content, { side: "bottom", align: "start", className: "z-50", sideOffset: 2 },
|
|
1127
|
-
React.createElement(SuggestionsDropdown, { functionDescriptions: functionDescriptions, formulaMode: formulaMode, dropdownStyles: dropdownStyles, functionToken: functionToken, parameterIndex: parameterIndex, items: items, highlightedIndex: highlightedIndex, onSelect: onSelect, onChangeHighlightedIndex: onChangeHighlightedIndex, showFormulaHelp: showFormulaHelp, onHideFormulaHelp: onHideFormulaHelp })))),
|
|
1145
|
+
React.createElement(SuggestionsDropdown, { functionDescriptions: functionDescriptions, formulaMode: formulaMode, dropdownStyles: dropdownStyles, functionToken: functionToken, parameterIndex: parameterIndex, items: items, highlightedIndex: highlightedIndex, onSelect: onSelect, onChangeHighlightedIndex: onChangeHighlightedIndex, showFormulaHelp: showFormulaHelp, onHideFormulaHelp: onHideFormulaHelp, formulaLocale: formulaLocale })))),
|
|
1128
1146
|
showDropdownEffective && showMentionDropdownEffective && (React.createElement(ConditionalWrapper, { condition: stickyEditor, wrapper: (children) => React.createElement(Portal, { asChild: true }, children) },
|
|
1129
1147
|
React.createElement(Popper.Content, { side: "bottom", align: "start", className: "z-50", sideOffset: 2 },
|
|
1130
1148
|
React.createElement(MentionsDropdown, { mentions: mentions, onSelect: handleInsertMention, highlightedIndex: mentionHighlightedIndex, isFetchingMentions: isFetchingMentions, MentionDropdownItemComponent: MentionDropdownItemComponent }))))));
|
|
@@ -23,7 +23,9 @@ type UseEditorOnChangePMProps = {
|
|
|
23
23
|
end: number;
|
|
24
24
|
}[]): void;
|
|
25
25
|
onChangePreviousToken(token: ParsedToken | undefined): void;
|
|
26
|
+
/** Argument separator of the formula locale the editor text is written in (`,` canonical). */
|
|
27
|
+
argumentSeparator?: string;
|
|
26
28
|
};
|
|
27
|
-
export declare const useEditorOnChangePM: ({ onChange, getView, isActive, enableContinuousSelection, tokenizer, onChangeCursor, onChangeActiveToken, onFormulaStateChange, onSuggestionTokenChange, onTableTokenChange, onChangeFunctionToken, onChangeParameterIndex, onCellPropertyTokenChange, onChangeFunctionParameters, onChangeIsEdgeOfCell, onChangePreviousToken, }: UseEditorOnChangePMProps) => (newState: EditorState) => void;
|
|
29
|
+
export declare const useEditorOnChangePM: ({ onChange, getView, isActive, enableContinuousSelection, tokenizer, onChangeCursor, onChangeActiveToken, onFormulaStateChange, onSuggestionTokenChange, onTableTokenChange, onChangeFunctionToken, onChangeParameterIndex, onCellPropertyTokenChange, onChangeFunctionParameters, onChangeIsEdgeOfCell, onChangePreviousToken, argumentSeparator, }: UseEditorOnChangePMProps) => (newState: EditorState) => void;
|
|
28
30
|
export {};
|
|
29
31
|
//# sourceMappingURL=use-editor-change-pm.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-editor-change-pm.d.ts","sourceRoot":"","sources":["../../../editor-pm/use-editor-change-pm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAyBnE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACvE,OAAO,IAAI,UAAU,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACnD,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACxC,oBAAoB,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;IACrE,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9D,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IACzD,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5D,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,oBAAoB,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,yBAAyB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAChE,0BAA0B,CAAC,CACzB,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,GACvC,IAAI,CAAC;IACR,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"use-editor-change-pm.d.ts","sourceRoot":"","sources":["../../../editor-pm/use-editor-change-pm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAyBnE,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAGxC,KAAK,wBAAwB,GAAG;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,aAAa,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACvE,OAAO,IAAI,UAAU,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACnD,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC1D,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,EAAE,CAAC;IACxC,oBAAoB,EAAE,sBAAsB,CAAC,sBAAsB,CAAC,CAAC;IACrE,uBAAuB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC9D,kBAAkB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IACzD,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5D,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,oBAAoB,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD,yBAAyB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAChE,0BAA0B,CAAC,CACzB,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,GACvC,IAAI,CAAC;IACR,qBAAqB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC;IAC5D,8FAA8F;IAC9F,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,sVAkBjC,wBAAwB,gBAWV,WAAW,SAsN3B,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { useCallback, useEffect, useRef } from "react";
|
|
|
4
4
|
import { enableCellSelection, extractTextFormatRuns, getActiveFunctionToken, getActiveSelectionIndex, getActiveSuggestionToken, getActiveTableToken, getActiveToken, getCursorPosition, getFunctionParameters, getParameterIndex, getTokenizationContent, getPreviousToken, hasPropertyReference, isCellToken, isNamedRangeToken, isTableColumnToken, isTableNameToken, resolveCellPropertyToken, serializeEditorValue, getTokenBeforeCaret, isUnknownToken, } from "./helpers";
|
|
5
5
|
import { useCallbackRef } from "@rowsncolumns/grid";
|
|
6
6
|
import { CELL_SUGGESTION_PREFIX } from "../editor/constants";
|
|
7
|
-
export const useEditorOnChangePM = ({ onChange, getView, isActive, enableContinuousSelection, tokenizer, onChangeCursor, onChangeActiveToken, onFormulaStateChange, onSuggestionTokenChange, onTableTokenChange, onChangeFunctionToken, onChangeParameterIndex, onCellPropertyTokenChange, onChangeFunctionParameters, onChangeIsEdgeOfCell, onChangePreviousToken, }) => {
|
|
7
|
+
export const useEditorOnChangePM = ({ onChange, getView, isActive, enableContinuousSelection, tokenizer, onChangeCursor, onChangeActiveToken, onFormulaStateChange, onSuggestionTokenChange, onTableTokenChange, onChangeFunctionToken, onChangeParameterIndex, onCellPropertyTokenChange, onChangeFunctionParameters, onChangeIsEdgeOfCell, onChangePreviousToken, argumentSeparator, }) => {
|
|
8
8
|
const lastSeenCursorTokenRef = useRef(undefined);
|
|
9
9
|
useEffect(() => {
|
|
10
10
|
if (!isActive) {
|
|
@@ -93,7 +93,7 @@ export const useEditorOnChangePM = ({ onChange, getView, isActive, enableContinu
|
|
|
93
93
|
}
|
|
94
94
|
// Get function parameters
|
|
95
95
|
const parameterIndex = getParameterIndex(tokenForFunction, functionToken, tokens);
|
|
96
|
-
const { parameters, ranges } = getFunctionParameters(line, functionToken);
|
|
96
|
+
const { parameters, ranges } = getFunctionParameters(line, functionToken, argumentSeparator);
|
|
97
97
|
// Cursor position to show cell suggestion
|
|
98
98
|
onChangeCursor(canSelectCells ? cursorPos : undefined);
|
|
99
99
|
// Active token
|
|
@@ -152,5 +152,6 @@ export const useEditorOnChangePM = ({ onChange, getView, isActive, enableContinu
|
|
|
152
152
|
onChangeParameterIndex,
|
|
153
153
|
onCellPropertyTokenChange,
|
|
154
154
|
onChangeFunctionParameters,
|
|
155
|
+
argumentSeparator,
|
|
155
156
|
]));
|
|
156
157
|
};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Tokenizes function syntax
|
|
2
|
+
* Tokenizes function syntax. `argumentSeparator` is the locale's argument separator the syntax
|
|
3
|
+
* was written with (`,` for the canonical catalog, `;` for a `localizeFunctionSyntax` result).
|
|
3
4
|
* @param syntax
|
|
4
5
|
*/
|
|
5
|
-
export declare const tokenizeFunctionSyntax: (syntax: string) => {
|
|
6
|
+
export declare const tokenizeFunctionSyntax: (syntax: string, argumentSeparator?: string) => {
|
|
6
7
|
functionOpen: string;
|
|
7
8
|
parameters: string[];
|
|
8
9
|
functionClose: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../function-info/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../function-info/helpers.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,GAAI,QAAQ,MAAM,EAAE,0BAAuB;;;;CAoB7E,CAAC"}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
|
+
const escapeForRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
1
2
|
/**
|
|
2
|
-
* Tokenizes function syntax
|
|
3
|
+
* Tokenizes function syntax. `argumentSeparator` is the locale's argument separator the syntax
|
|
4
|
+
* was written with (`,` for the canonical catalog, `;` for a `localizeFunctionSyntax` result).
|
|
3
5
|
* @param syntax
|
|
4
6
|
*/
|
|
5
|
-
export const tokenizeFunctionSyntax = (syntax) => {
|
|
7
|
+
export const tokenizeFunctionSyntax = (syntax, argumentSeparator = ",") => {
|
|
6
8
|
const openParen = "(";
|
|
7
9
|
const closeParen = ")";
|
|
8
10
|
const index = syntax.indexOf(openParen) + 1;
|
|
9
11
|
const functionOpen = syntax.substr(0, index);
|
|
10
12
|
const parameters = syntax
|
|
11
13
|
.substr(index, syntax.length - index - 1)
|
|
12
|
-
// https://regex101.com/r/ymosUf/1 : Exclude
|
|
13
|
-
.split(
|
|
14
|
+
// https://regex101.com/r/ymosUf/1 : Exclude the separator inside square braces
|
|
15
|
+
.split(new RegExp(`${escapeForRegExp(argumentSeparator)}\\s*(?=[^)^\\]^}]*(?:\\(|\\[|\\{|$))`, "gi"))
|
|
14
16
|
.map((a) => a.trim());
|
|
15
17
|
return {
|
|
16
18
|
functionOpen,
|
|
@@ -5,6 +5,8 @@ type FunctionInfoProps = {
|
|
|
5
5
|
parameterIndex?: number;
|
|
6
6
|
showFormulaHelp?: boolean;
|
|
7
7
|
onHideFormulaHelp?(): void;
|
|
8
|
+
/** Argument separator of the syntax being shown (the formula locale's; `,` by default). */
|
|
9
|
+
argumentSeparator?: string;
|
|
8
10
|
};
|
|
9
11
|
export declare const FunctionInfo: React.FC<FunctionInfoProps>;
|
|
10
12
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../function-info/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAkB,MAAM,OAAO,CAAC;AAOvC,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,IAAI,IAAI,CAAC;CAC5B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../function-info/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,KAAkB,MAAM,OAAO,CAAC;AAOvC,KAAK,iBAAiB,GAAG;IACvB,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,IAAI,IAAI,CAAC;IAC3B,2FAA2F;IAC3F,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAUF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAyEpD,CAAC"}
|
|
@@ -5,7 +5,7 @@ import { Separator } from "../separator";
|
|
|
5
5
|
import { tokenizeFunctionSyntax } from "./helpers";
|
|
6
6
|
import { StyledFunctionParameterTitle, StyledFunctionSubtitle } from "./style";
|
|
7
7
|
const ACTIVE_COLOR = "#008000";
|
|
8
|
-
export const FunctionInfo = ({ activeFunction, parameterIndex = 0, onHideFormulaHelp, }) => {
|
|
8
|
+
export const FunctionInfo = ({ activeFunction, parameterIndex = 0, onHideFormulaHelp, argumentSeparator = ",", }) => {
|
|
9
9
|
const { syntax, example, description, parameters } = activeFunction ?? {};
|
|
10
10
|
/**
|
|
11
11
|
* It can happen that formula list does not contain
|
|
@@ -13,8 +13,8 @@ export const FunctionInfo = ({ activeFunction, parameterIndex = 0, onHideFormula
|
|
|
13
13
|
* Use syntax
|
|
14
14
|
*/
|
|
15
15
|
const paramLen = useMemo(() => {
|
|
16
|
-
return tokenizeFunctionSyntax(syntax ?? "").parameters.length;
|
|
17
|
-
}, [syntax]);
|
|
16
|
+
return tokenizeFunctionSyntax(syntax ?? "", argumentSeparator).parameters.length;
|
|
17
|
+
}, [syntax, argumentSeparator]);
|
|
18
18
|
const paramIndex = Math.min(parameterIndex, paramLen - 1);
|
|
19
19
|
/**
|
|
20
20
|
* If Function is not documented,
|
|
@@ -25,7 +25,7 @@ export const FunctionInfo = ({ activeFunction, parameterIndex = 0, onHideFormula
|
|
|
25
25
|
return (React.createElement("div", { className: "break-words text-rnc-foreground" },
|
|
26
26
|
React.createElement("div", { className: "py-1 px-2 text-sm rounded-t-sm place-items-center flex bg-rnc-accent -mt-1 font-formula" },
|
|
27
27
|
React.createElement("div", { className: "flex-1" },
|
|
28
|
-
React.createElement(TokenizedFunction, { syntax: syntax, parameterIndex: paramIndex })),
|
|
28
|
+
React.createElement(TokenizedFunction, { syntax: syntax, parameterIndex: paramIndex, argumentSeparator: argumentSeparator })),
|
|
29
29
|
React.createElement(IconButton, { onClick: onHideFormulaHelp, title: "Hide formula suggestions for this cell" },
|
|
30
30
|
React.createElement(CrossCircledIcon, null))),
|
|
31
31
|
React.createElement(Separator, { orientation: "horizontal", color: "$gray7" }),
|
|
@@ -47,16 +47,16 @@ export const FunctionInfo = ({ activeFunction, parameterIndex = 0, onHideFormula
|
|
|
47
47
|
* Convert string function to tokens
|
|
48
48
|
* @param param0
|
|
49
49
|
*/
|
|
50
|
-
const TokenizedFunction = ({ syntax, parameterIndex, }) => {
|
|
50
|
+
const TokenizedFunction = ({ syntax, parameterIndex, argumentSeparator, }) => {
|
|
51
51
|
if (!syntax) {
|
|
52
52
|
return null;
|
|
53
53
|
}
|
|
54
|
-
const { functionOpen, parameters, functionClose } = tokenizeFunctionSyntax(syntax);
|
|
54
|
+
const { functionOpen, parameters, functionClose } = tokenizeFunctionSyntax(syntax, argumentSeparator);
|
|
55
55
|
const paramLen = parameters.length;
|
|
56
56
|
return (React.createElement(React.Fragment, null,
|
|
57
57
|
React.createElement("span", null, functionOpen),
|
|
58
58
|
parameters.map((param, i) => {
|
|
59
|
-
const sep = i < paramLen - 1 ?
|
|
59
|
+
const sep = i < paramLen - 1 ? `${argumentSeparator} ` : "";
|
|
60
60
|
return (React.createElement(React.Fragment, { key: i },
|
|
61
61
|
React.createElement("span", { style: {
|
|
62
62
|
color: parameterIndex === i ? ACTIVE_COLOR : void 0,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rowsncolumns/ui",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "16.0.0",
|
|
4
4
|
"author": "Vinay M",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -55,23 +55,25 @@
|
|
|
55
55
|
"tailwind-merge": "^3.3.0"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@rowsncolumns/calculator": ">=7.
|
|
59
|
-
"@rowsncolumns/common-types": ">=5.2.
|
|
60
|
-
"@rowsncolumns/fast-formula-parser": ">=6.2.
|
|
61
|
-
"@rowsncolumns/functions": ">=
|
|
58
|
+
"@rowsncolumns/calculator": ">=7.3.0",
|
|
59
|
+
"@rowsncolumns/common-types": ">=5.2.33",
|
|
60
|
+
"@rowsncolumns/fast-formula-parser": ">=6.2.39",
|
|
61
|
+
"@rowsncolumns/functions": ">=15.0.0",
|
|
62
|
+
"@rowsncolumns/grid": ">=13.2.33",
|
|
62
63
|
"@rowsncolumns/icons": ">=7.2.31",
|
|
63
|
-
"@rowsncolumns/utils": ">=9.
|
|
64
|
+
"@rowsncolumns/utils": ">=9.3.0",
|
|
64
65
|
"@types/lodash": "^4.17.17",
|
|
65
66
|
"react": "^19.1.0",
|
|
66
67
|
"react-dom": "^19.1.0"
|
|
67
68
|
},
|
|
68
69
|
"peerDependencies": {
|
|
69
|
-
"@rowsncolumns/calculator": ">=7.
|
|
70
|
-
"@rowsncolumns/common-types": ">=5.2.
|
|
71
|
-
"@rowsncolumns/fast-formula-parser": ">=6.2.
|
|
72
|
-
"@rowsncolumns/functions": ">=
|
|
70
|
+
"@rowsncolumns/calculator": ">=7.3.0",
|
|
71
|
+
"@rowsncolumns/common-types": ">=5.2.33",
|
|
72
|
+
"@rowsncolumns/fast-formula-parser": ">=6.2.39",
|
|
73
|
+
"@rowsncolumns/functions": ">=15.0.0",
|
|
74
|
+
"@rowsncolumns/grid": ">=13.2.33",
|
|
73
75
|
"@rowsncolumns/icons": ">=7.2.31",
|
|
74
|
-
"@rowsncolumns/utils": ">=9.
|
|
76
|
+
"@rowsncolumns/utils": ">=9.3.0",
|
|
75
77
|
"react": ">=18.0.0",
|
|
76
78
|
"react-dom": ">=18.0.0"
|
|
77
79
|
}
|