@fileverse-dev/fortune-react 1.0.2-mod-27 → 1.0.2-mod-29

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/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { defaultContext, defaultSettings, getSheetIndex, colLocationByIndex, fixPositionOnFrozenCells, colLocation, getFlowdata, isAllowEdit, handleColumnHeaderMouseDown, handleColSizeHandleMouseDown, handleColFreezeHandleMouseDown, handleContextMenu, selectTitlesMap, selectTitlesRange, fixColumnStyleOverflowInFreeze, rowLocationByIndex, rowLocation, handleRowHeaderMouseDown, handleRowSizeHandleMouseDown, handleRowFreezeHandleMouseDown, fixRowStyleOverflowInFreeze, locale, getStyleByCell, getCellValue, createRangeHightlight, isInlineStringCell, getInlineStringHTML, valueShowEs, escapeHTMLTag, escapeScriptTag, moveToEnd, isShowHidenCR, getrangeseleciton, cancelNormalSelected, moveHighlightCell, israngeseleciton, handleFormulaInput, onSearchDialogMoveStart, replaceAll, replace, searchAll, searchNext, normalizeSelection, scrollToHighlightCell, isLinkValid, getRangetxt, goToLink, replaceHtml, removeHyperlink, onRangeSelectionModalMoveStart, saveHyperlink, createFilterOptions, onImageMoveStart, onImageResizeStart, showComments, setEditingComment, onCommentBoxMoveStart, confirmMessage, getRangeByTxt, getDropdownList, setCellValue, setConditionRules, mergeBorder, setDropcownValue, handleCellAreaMouseDown, handleCellAreaDoubleClick, selectAll, showLinkCard, getCellRowColumn, getCellHyperlink, handleOverlayMouseMove, handleOverlayMouseUp, handleKeydownForZoom, handleOverlayTouchStart, handleOverlayTouchMove, handleOverlayTouchEnd, insertRowCol, drawArrow, onCellsMoveStart, createDropCellRange, updateContextWithSheetData, updateContextWithCanvas, initFreeze, Canvas, handleGlobalWheel, setCaretPosition, getDataArr, updateMoreCell, getRegStr, getOptionValue, getSelectRange, applyLocation, updateItem, update, normalizedCellAttr, updateFormat, handleTextSize, handleHorizontalAlign, handleVerticalAlign, handleScreenShot, showImgChooser, insertImage, editComment, deleteComment, showHideComment, showHideAllComments, newComment, handleSum, autoSelectionFormula, handleMerge, handleBorder, handleFreeze, handleSort, createFilter, clearFilter, toolbarItemSelectedFunc, toolbarItemClickHandler, handleTextColor, handleTextBackground, getInlineStringNoStyle, rangeHightlightselected, updateCell, editSheetName, cancelActiveImgItem, MAX_ZOOM_RATIO, MIN_ZOOM_RATIO, addSheet, getFreezeState, toggleFreeze, jfrefreshgrid, handleCopy, deleteRowCol, hideSelected, showSelected, api, removeActiveImage, deleteSelectedCellText, sortSelection, handleLink, handlePasteByClick, deleteSheet, opToPatch, orderbydatafiler, getFilterColumnValues, getFilterColumnColors, saveFilter, calcSelectionInfo, patchToOp, filterPatch, inverseRowColOptions, ensureSheetIndex, initSheetIndex, handleGlobalKeyDown, handlePaste, groupValuesRefresh } from '@fileverse-dev/fortune-core';
1
+ import { defaultContext, defaultSettings, getSheetIndex, colLocationByIndex, fixPositionOnFrozenCells, colLocation, getFlowdata, isAllowEdit, handleColumnHeaderMouseDown, handleColSizeHandleMouseDown, handleColFreezeHandleMouseDown, handleContextMenu, selectTitlesMap, selectTitlesRange, fixColumnStyleOverflowInFreeze, rowLocationByIndex, rowLocation, handleRowHeaderMouseDown, handleRowSizeHandleMouseDown, handleRowFreezeHandleMouseDown, fixRowStyleOverflowInFreeze, locale, getStyleByCell, getCellValue, createRangeHightlight, isInlineStringCell, getInlineStringHTML, valueShowEs, escapeHTMLTag, escapeScriptTag, moveToEnd, isShowHidenCR, getrangeseleciton, cancelNormalSelected, moveHighlightCell, israngeseleciton, handleFormulaInput, onSearchDialogMoveStart, replaceAll, replace, searchAll, searchNext, normalizeSelection, scrollToHighlightCell, isLinkValid, goToLink, replaceHtml, removeHyperlink, saveHyperlink, createFilterOptions, onImageMoveStart, onImageResizeStart, showComments, setEditingComment, onCommentBoxMoveStart, confirmMessage, getRangeByTxt, getDropdownList, setCellValue, getRangetxt, setConditionRules, mergeBorder, setDropcownValue, handleCellAreaMouseDown, handleCellAreaDoubleClick, selectAll, showLinkCard, getCellRowColumn, getCellHyperlink, handleOverlayMouseMove, handleOverlayMouseUp, handleKeydownForZoom, handleOverlayTouchStart, handleOverlayTouchMove, handleOverlayTouchEnd, insertRowCol, drawArrow, onCellsMoveStart, createDropCellRange, updateContextWithSheetData, updateContextWithCanvas, initFreeze, Canvas, handleGlobalWheel, getDataArr, updateMoreCell, getRegStr, getOptionValue, getSelectRange, applyLocation, updateItem, update, normalizedCellAttr, updateFormat, handleTextSize, handleHorizontalAlign, handleVerticalAlign, handleScreenShot, showImgChooser, insertImage, editComment, deleteComment, showHideComment, showHideAllComments, newComment, handleSum, autoSelectionFormula, handleMerge, handleBorder, handleFreeze, handleSort, createFilter, clearFilter, toolbarItemSelectedFunc, toolbarItemClickHandler, handleTextColor, handleTextBackground, getInlineStringNoStyle, rangeHightlightselected, updateCell, editSheetName, cancelActiveImgItem, MAX_ZOOM_RATIO, MIN_ZOOM_RATIO, addSheet, getFreezeState, toggleFreeze, jfrefreshgrid, handleCopy, deleteRowCol, hideSelected, showSelected, api, removeActiveImage, deleteSelectedCellText, sortSelection, handleLink, handlePasteByClick, deleteSheet, opToPatch, setCaretPosition, orderbydatafiler, getFilterColumnValues, getFilterColumnColors, saveFilter, calcSelectionInfo, patchToOp, filterPatch, inverseRowColOptions, ensureSheetIndex, initSheetIndex, handleGlobalKeyDown, handlePaste, groupValuesRefresh } from '@fileverse-dev/fortune-core';
2
2
  import React, { useContext, useRef, useState, useMemo, useCallback, useEffect, useLayoutEffect, useImperativeHandle } from 'react';
3
3
  import produce, { applyPatches, enablePatches, produceWithPatches } from 'immer';
4
4
  import _ from 'lodash';
@@ -1792,8 +1792,7 @@ var LinkEditCard = function LinkEditCard(_ref) {
1792
1792
  originType = _ref.originType,
1793
1793
  originAddress = _ref.originAddress,
1794
1794
  isEditing = _ref.isEditing,
1795
- position = _ref.position,
1796
- selectingCellRange = _ref.selectingCellRange;
1795
+ position = _ref.position;
1797
1796
  var _useContext = useContext(WorkbookContext),
1798
1797
  context = _useContext.context,
1799
1798
  setContext = _useContext.setContext,
@@ -1812,29 +1811,24 @@ var LinkEditCard = function LinkEditCard(_ref) {
1812
1811
  setLinkType = _useState6[1];
1813
1812
  var _locale = locale(context),
1814
1813
  insertLink = _locale.insertLink,
1815
- linkTypeList = _locale.linkTypeList,
1816
- button = _locale.button;
1817
- var lastCell = useRef(normalizeSelection(context, [{
1818
- row: [r, r],
1819
- column: [c, c]
1820
- }]));
1821
- var skipCellRangeSet = useRef(true);
1814
+ linkTypeList = _locale.linkTypeList;
1822
1815
  var isLinkAddressValid = isLinkValid(context, linkType, linkAddress);
1823
- var tooltip = /*#__PURE__*/React.createElement("div", {
1824
- className: "validation-input-tip"
1825
- }, isLinkAddressValid.tooltip);
1816
+ var isButtonDisabled = useMemo(function () {
1817
+ if (!linkText.trim()) return true;
1818
+ if (linkType === "webpage") {
1819
+ return !linkAddress.trim() || !isLinkAddressValid.isValid;
1820
+ }
1821
+ if (linkType === "sheet") {
1822
+ return !linkAddress.trim();
1823
+ }
1824
+ return false;
1825
+ }, [linkText, linkAddress, linkType, isLinkAddressValid.isValid]);
1826
1826
  var hideLinkCard = useCallback(function () {
1827
1827
  _.set(refs.globalCache, "linkCard.mouseEnter", false);
1828
1828
  setContext(function (draftCtx) {
1829
1829
  draftCtx.linkCard = undefined;
1830
1830
  });
1831
1831
  }, [refs.globalCache, setContext]);
1832
- var setRangeModalVisible = useCallback(function (visible) {
1833
- return setContext(function (draftCtx) {
1834
- draftCtx.luckysheet_select_save = lastCell.current;
1835
- if (draftCtx.linkCard != null) draftCtx.linkCard.selectingCellRange = visible;
1836
- });
1837
- }, [setContext]);
1838
1832
  var containerEvent = useMemo(function () {
1839
1833
  return {
1840
1834
  onMouseEnter: function onMouseEnter() {
@@ -1860,19 +1854,6 @@ var LinkEditCard = function LinkEditCard(_ref) {
1860
1854
  }
1861
1855
  };
1862
1856
  }, [refs.globalCache]);
1863
- var renderBottomButton = useCallback(function (onOk, onCancel) {
1864
- return /*#__PURE__*/React.createElement("div", {
1865
- className: "button-group"
1866
- }, /*#__PURE__*/React.createElement("div", {
1867
- className: "button-basic button-default",
1868
- onClick: onCancel,
1869
- tabIndex: 0
1870
- }, button.cancel), /*#__PURE__*/React.createElement("div", {
1871
- className: "button-basic button-primary",
1872
- onClick: onOk,
1873
- tabIndex: 0
1874
- }, button.confirm));
1875
- }, [button]);
1876
1857
  var renderToolbarButton = useCallback(function (iconId, onClick) {
1877
1858
  return /*#__PURE__*/React.createElement("div", {
1878
1859
  className: "fortune-toolbar-button",
@@ -1891,23 +1872,6 @@ var LinkEditCard = function LinkEditCard(_ref) {
1891
1872
  setLinkText(originText);
1892
1873
  setLinkType(originType);
1893
1874
  }, [rc, originAddress, originText, originType]);
1894
- useLayoutEffect(function () {
1895
- if (selectingCellRange) {
1896
- skipCellRangeSet.current = true;
1897
- }
1898
- }, [selectingCellRange]);
1899
- useLayoutEffect(function () {
1900
- if (skipCellRangeSet.current) {
1901
- skipCellRangeSet.current = false;
1902
- return;
1903
- }
1904
- if (selectingCellRange) {
1905
- var len = _.size(context.luckysheet_select_save);
1906
- if (len > 0) {
1907
- setLinkAddress(getRangetxt(context, context.currentSheetId, context.luckysheet_select_save[len - 1], ""));
1908
- }
1909
- }
1910
- }, [context, selectingCellRange]);
1911
1875
  if (!isEditing) {
1912
1876
  return /*#__PURE__*/React.createElement("div", _objectSpread2(_objectSpread2({}, containerEvent), {}, {
1913
1877
  onKeyDown: function onKeyDown(e) {
@@ -1948,69 +1912,16 @@ var LinkEditCard = function LinkEditCard(_ref) {
1948
1912
  });
1949
1913
  }));
1950
1914
  }
1951
- return selectingCellRange ? (/*#__PURE__*/React.createElement("div", _objectSpread2(_objectSpread2({
1952
- className: "fortune-link-modify-modal range-selection-modal",
1953
- style: {
1954
- left: position.cellLeft,
1955
- top: position.cellBottom + 5
1956
- }
1957
- }, _.omit(containerEvent, ["onMouseDown", "onMouseMove", "onMouseUp"])), {}, {
1958
- onMouseDown: function onMouseDown(e) {
1959
- var nativeEvent = e.nativeEvent;
1960
- onRangeSelectionModalMoveStart(context, refs.globalCache, nativeEvent);
1961
- e.stopPropagation();
1962
- }
1963
- }), /*#__PURE__*/React.createElement("div", {
1964
- className: "modal-icon-close",
1965
- onClick: function onClick() {
1966
- return setRangeModalVisible(false);
1967
- },
1968
- tabIndex: 0
1969
- }, /*#__PURE__*/React.createElement(SVGIcon, {
1970
- name: "close"
1971
- })), /*#__PURE__*/React.createElement("div", {
1972
- className: "modal-title"
1973
- }, insertLink.selectCellRange), /*#__PURE__*/React.createElement("input", _objectSpread2(_objectSpread2({}, containerEvent), {}, {
1974
- className: "range-selection-input ".concat(!linkAddress || isLinkAddressValid.isValid ? "" : "error-input"),
1975
- placeholder: insertLink.cellRangePlaceholder,
1976
- onChange: function onChange(e) {
1977
- return setLinkAddress(e.target.value);
1978
- },
1979
- value: linkAddress
1980
- })), tooltip, /*#__PURE__*/React.createElement("div", {
1981
- className: "modal-footer"
1982
- }, renderBottomButton(function () {
1983
- if (isLinkAddressValid.isValid) setRangeModalVisible(false);
1984
- }, function () {
1985
- setLinkAddress(originAddress);
1986
- setRangeModalVisible(false);
1987
- })))) : (/*#__PURE__*/React.createElement("div", _objectSpread2({
1988
- className: "fortune-link-modify-modal",
1915
+ return /*#__PURE__*/React.createElement("div", _objectSpread2({
1916
+ className: "fortune-link-card",
1989
1917
  style: {
1990
1918
  left: position.cellLeft + 20,
1991
1919
  top: position.cellBottom
1992
1920
  }
1993
- }, containerEvent), /*#__PURE__*/React.createElement("div", {
1994
- className: "fortune-link-modify-line"
1995
- }, /*#__PURE__*/React.createElement("div", {
1996
- className: "fortune-link-modify-title"
1997
- }, insertLink.linkText), /*#__PURE__*/React.createElement("input", {
1998
- className: "fortune-link-modify-input",
1999
- spellCheck: "false",
2000
- autoFocus: true,
2001
- value: linkText,
2002
- onChange: function onChange(e) {
2003
- return setLinkText(e.target.value);
2004
- }
2005
- })), /*#__PURE__*/React.createElement("div", {
2006
- className: "fortune-link-modify-line"
2007
- }, /*#__PURE__*/React.createElement("div", {
2008
- className: "fortune-link-modify-title"
2009
- }, insertLink.linkType), /*#__PURE__*/React.createElement("select", {
2010
- className: "fortune-link-modify-select",
1921
+ }, containerEvent), /*#__PURE__*/React.createElement(Select$1, {
2011
1922
  value: linkType,
2012
- onChange: function onChange(e) {
2013
- if (e.target.value === "sheet") {
1923
+ onValueChange: function onValueChange(value) {
1924
+ if (value === "sheet") {
2014
1925
  if (!linkText) {
2015
1926
  setLinkText(context.luckysheetfile[0].name);
2016
1927
  }
@@ -2018,65 +1929,79 @@ var LinkEditCard = function LinkEditCard(_ref) {
2018
1929
  } else {
2019
1930
  setLinkAddress("");
2020
1931
  }
2021
- if (e.target.value === "cellrange") setRangeModalVisible(true);
2022
- setLinkType(e.target.value);
2023
- }
2024
- }, linkTypeList.map(function (type) {
2025
- return /*#__PURE__*/React.createElement("option", {
1932
+ setLinkType(value);
1933
+ }
1934
+ }, /*#__PURE__*/React.createElement(SelectTrigger, {
1935
+ className: "fortune-link-type-select"
1936
+ }, /*#__PURE__*/React.createElement(SelectValue, null)), /*#__PURE__*/React.createElement(SelectContent, {
1937
+ className: "fortune-link-type-dropdown"
1938
+ }, linkTypeList.filter(function (type) {
1939
+ return type.value !== "cellrange";
1940
+ }).map(function (type) {
1941
+ return /*#__PURE__*/React.createElement(SelectItem$1, {
2026
1942
  key: type.value,
2027
1943
  value: type.value
2028
1944
  }, type.text);
2029
1945
  }))), /*#__PURE__*/React.createElement("div", {
2030
- className: "fortune-link-modify-line"
2031
- }, linkType === "webpage" && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
2032
- className: "fortune-link-modify-title"
2033
- }, insertLink.linkAddress), /*#__PURE__*/React.createElement("input", {
2034
- className: "fortune-link-modify-input ".concat(!linkAddress || isLinkAddressValid.isValid ? "" : "error-input"),
2035
- spellCheck: "false",
2036
- value: linkAddress,
1946
+ className: "fortune-input-with-icon"
1947
+ }, /*#__PURE__*/React.createElement("div", {
1948
+ className: "input-icon"
1949
+ }, /*#__PURE__*/React.createElement(LucideIcon, {
1950
+ name: "ALargeSmall"
1951
+ })), /*#__PURE__*/React.createElement(TextField, {
1952
+ placeholder: "Display text",
1953
+ value: linkText,
2037
1954
  onChange: function onChange(e) {
2038
- return setLinkAddress(e.target.value);
2039
- }
2040
- }), tooltip)), linkType === "cellrange" && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
2041
- className: "fortune-link-modify-title"
2042
- }, insertLink.linkCell), /*#__PURE__*/React.createElement("input", {
2043
- className: "fortune-link-modify-input ".concat(!linkAddress || isLinkAddressValid.isValid ? "" : "error-input"),
2044
- spellCheck: "false",
1955
+ return setLinkText(e.target.value);
1956
+ },
1957
+ className: "fortune-link-input"
1958
+ })), linkType === "webpage" && (/*#__PURE__*/React.createElement("div", {
1959
+ className: "fortune-input-with-icon"
1960
+ }, /*#__PURE__*/React.createElement("div", {
1961
+ className: "input-icon"
1962
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
1963
+ name: "link"
1964
+ })), /*#__PURE__*/React.createElement(TextField, {
1965
+ placeholder: "Paste URL",
2045
1966
  value: linkAddress,
2046
1967
  onChange: function onChange(e) {
2047
1968
  return setLinkAddress(e.target.value);
2048
- }
2049
- }), /*#__PURE__*/React.createElement("div", {
2050
- className: "fortune-link-modify-cell-selector",
2051
- onClick: function onClick() {
2052
- return setRangeModalVisible(true);
2053
1969
  },
2054
- tabIndex: 0
1970
+ className: "fortune-link-input ".concat(!linkAddress || isLinkAddressValid.isValid ? "" : "error-input")
1971
+ }))), linkType === "sheet" && (/*#__PURE__*/React.createElement("div", {
1972
+ className: "fortune-input-with-icon"
1973
+ }, /*#__PURE__*/React.createElement("div", {
1974
+ className: "input-icon"
2055
1975
  }, /*#__PURE__*/React.createElement(SVGIcon, {
2056
- name: "border-all"
2057
- })), tooltip)), linkType === "sheet" && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
2058
- className: "fortune-link-modify-title"
2059
- }, insertLink.linkSheet), /*#__PURE__*/React.createElement("select", {
2060
- className: "fortune-link-modify-select",
2061
- onChange: function onChange(e) {
2062
- if (!linkText) setLinkText(e.target.value);
2063
- setLinkAddress(e.target.value);
1976
+ name: "link"
1977
+ })), /*#__PURE__*/React.createElement(Select$1, {
1978
+ onValueChange: function onValueChange(value) {
1979
+ if (!linkText) setLinkText(value);
1980
+ setLinkAddress(value);
2064
1981
  },
2065
1982
  value: linkAddress
1983
+ }, /*#__PURE__*/React.createElement(SelectTrigger, {
1984
+ className: "fortune-sheet-select"
1985
+ }, /*#__PURE__*/React.createElement(SelectValue, {
1986
+ placeholder: "[Sheet name]"
1987
+ })), /*#__PURE__*/React.createElement(SelectContent, {
1988
+ className: "fortune-sheet-dropdown"
2066
1989
  }, context.luckysheetfile.map(function (sheet) {
2067
- return /*#__PURE__*/React.createElement("option", {
1990
+ return /*#__PURE__*/React.createElement(SelectItem$1, {
2068
1991
  key: sheet.id,
2069
1992
  value: sheet.name
2070
1993
  }, sheet.name);
2071
- })), tooltip))), /*#__PURE__*/React.createElement("div", {
2072
- className: "modal-footer"
2073
- }, renderBottomButton(function () {
2074
- if (!isLinkAddressValid.isValid) return;
2075
- _.set(refs.globalCache, "linkCard.mouseEnter", false);
2076
- setContext(function (draftCtx) {
2077
- return saveHyperlink(draftCtx, r, c, linkText, linkType, linkAddress);
2078
- });
2079
- }, hideLinkCard))));
1994
+ }))))), /*#__PURE__*/React.createElement(Button$1, {
1995
+ className: "fortune-insert-button",
1996
+ disabled: isButtonDisabled,
1997
+ onClick: function onClick() {
1998
+ if (isButtonDisabled) return;
1999
+ _.set(refs.globalCache, "linkCard.mouseEnter", false);
2000
+ setContext(function (draftCtx) {
2001
+ return saveHyperlink(draftCtx, r, c, linkText, linkType, linkAddress);
2002
+ });
2003
+ }
2004
+ }, "Insert link"));
2080
2005
  };
2081
2006
 
2082
2007
  var FilterOptions = function FilterOptions(_ref) {
@@ -4453,205 +4378,6 @@ var Option = function Option(_ref2) {
4453
4378
  }, children));
4454
4379
  };
4455
4380
 
4456
- var FormulaSearch$1 = function FormulaSearch(_ref) {
4457
- var _onCancel = _ref.onCancel;
4458
- var _useContext = useContext(WorkbookContext),
4459
- context = _useContext.context,
4460
- setContext = _useContext.setContext,
4461
- _useContext$refs = _useContext.refs,
4462
- cellInput = _useContext$refs.cellInput,
4463
- globalCache = _useContext$refs.globalCache;
4464
- var _useState = useState(20),
4465
- _useState2 = _slicedToArray(_useState, 2),
4466
- selectedType = _useState2[0],
4467
- setSelectedType = _useState2[1];
4468
- var _useState3 = useState(0),
4469
- _useState4 = _slicedToArray(_useState3, 2),
4470
- selectedFuncIndex = _useState4[0],
4471
- setSelectedFuncIndex = _useState4[1];
4472
- var _useState5 = useState(""),
4473
- _useState6 = _slicedToArray(_useState5, 2),
4474
- searchText = _useState6[0],
4475
- setSearchText = _useState6[1];
4476
- var _locale = locale(context),
4477
- formulaMore = _locale.formulaMore,
4478
- functionlist = _locale.functionlist,
4479
- button = _locale.button;
4480
- var typeList = useMemo(function () {
4481
- return [{
4482
- t: 20,
4483
- n: formulaMore.Crypto
4484
- }, {
4485
- t: 0,
4486
- n: formulaMore.Math
4487
- }, {
4488
- t: 1,
4489
- n: formulaMore.Statistical
4490
- }, {
4491
- t: 2,
4492
- n: formulaMore.Lookup
4493
- }, {
4494
- t: 3,
4495
- n: formulaMore.luckysheet
4496
- }, {
4497
- t: 4,
4498
- n: formulaMore.dataMining
4499
- }, {
4500
- t: 5,
4501
- n: formulaMore.Database
4502
- }, {
4503
- t: 6,
4504
- n: formulaMore.Date
4505
- }, {
4506
- t: 7,
4507
- n: formulaMore.Filter
4508
- }, {
4509
- t: 8,
4510
- n: formulaMore.Financial
4511
- }, {
4512
- t: 9,
4513
- n: formulaMore.Engineering
4514
- }, {
4515
- t: 10,
4516
- n: formulaMore.Logical
4517
- }, {
4518
- t: 11,
4519
- n: formulaMore.Operator
4520
- }, {
4521
- t: 12,
4522
- n: formulaMore.Text
4523
- }, {
4524
- t: 13,
4525
- n: formulaMore.Parser
4526
- }, {
4527
- t: 14,
4528
- n: formulaMore.Array
4529
- }, {
4530
- t: -1,
4531
- n: formulaMore.other
4532
- }];
4533
- }, [formulaMore]);
4534
- var filteredFunctionList = useMemo(function () {
4535
- if (searchText) {
4536
- var list = [];
4537
- var text = _.cloneDeep(searchText.toUpperCase());
4538
- for (var i = 0; i < functionlist.length; i += 1) {
4539
- if (/^[a-zA-Z]+$/.test(text)) {
4540
- if (functionlist[i].n.indexOf(text) !== -1) {
4541
- list.push(functionlist[i]);
4542
- }
4543
- } else if (functionlist[i].a.indexOf(text) !== -1) {
4544
- list.push(functionlist[i]);
4545
- }
4546
- }
4547
- return list;
4548
- }
4549
- return _.filter(functionlist, function (v) {
4550
- return v.t === selectedType;
4551
- });
4552
- }, [functionlist, selectedType, searchText]);
4553
- var onConfirm = useCallback(function () {
4554
- var _context$luckysheet_s;
4555
- var last = (_context$luckysheet_s = context.luckysheet_select_save) === null || _context$luckysheet_s === void 0 ? void 0 : _context$luckysheet_s[context.luckysheet_select_save.length - 1];
4556
- var row_index = last === null || last === void 0 ? void 0 : last.row_focus;
4557
- var col_index = last === null || last === void 0 ? void 0 : last.column_focus;
4558
- if (!last) {
4559
- row_index = 0;
4560
- col_index = 0;
4561
- } else {
4562
- if (row_index == null) {
4563
- var _last$row = _slicedToArray(last.row, 1);
4564
- row_index = _last$row[0];
4565
- }
4566
- if (col_index == null) {
4567
- var _last$column = _slicedToArray(last.column, 1);
4568
- col_index = _last$column[0];
4569
- }
4570
- }
4571
- var formulaTxt = "<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span><span dir=\"auto\" class=\"luckysheet-formula-text-color\">".concat(filteredFunctionList[selectedFuncIndex].n.toUpperCase(), "</span><span dir=\"auto\" class=\"luckysheet-formula-text-color\">(</span>");
4572
- setContext(function (ctx) {
4573
- if (cellInput.current != null) {
4574
- ctx.luckysheetCellUpdate = [row_index, col_index];
4575
- globalCache.doNotUpdateCell = true;
4576
- cellInput.current.innerHTML = formulaTxt;
4577
- var spans = cellInput.current.childNodes;
4578
- if (!_.isEmpty(spans)) {
4579
- setCaretPosition(ctx, spans[spans.length - 1], 0, 1);
4580
- }
4581
- ctx.functionHint = filteredFunctionList[selectedFuncIndex].n.toUpperCase();
4582
- ctx.functionCandidates = [];
4583
- if (_.isEmpty(ctx.formulaCache.functionlistMap)) {
4584
- for (var i = 0; i < functionlist.length; i += 1) {
4585
- ctx.formulaCache.functionlistMap[functionlist[i].n] = functionlist[i];
4586
- }
4587
- }
4588
- _onCancel();
4589
- }
4590
- });
4591
- }, [cellInput, context.luckysheet_select_save, filteredFunctionList, globalCache, selectedFuncIndex, setContext, _onCancel, functionlist]);
4592
- var onCancel = useCallback(function () {
4593
- setContext(function (ctx) {
4594
- cancelNormalSelected(ctx);
4595
- if (cellInput.current) {
4596
- cellInput.current.innerHTML = "";
4597
- }
4598
- });
4599
- _onCancel();
4600
- }, [_onCancel, cellInput, setContext]);
4601
- return /*#__PURE__*/React.createElement("div", {
4602
- id: "luckysheet-search-formula"
4603
- }, /*#__PURE__*/React.createElement("div", {
4604
- className: "inpbox"
4605
- }, /*#__PURE__*/React.createElement("div", null, formulaMore.findFunctionTitle, "\uFF1A"), /*#__PURE__*/React.createElement("input", {
4606
- className: "formulaInputFocus",
4607
- id: "searchFormulaListInput",
4608
- placeholder: formulaMore.tipInputFunctionName,
4609
- spellCheck: "false",
4610
- onChange: function onChange(e) {
4611
- return setSearchText(e.target.value);
4612
- }
4613
- })), /*#__PURE__*/React.createElement("div", {
4614
- className: "selbox"
4615
- }, /*#__PURE__*/React.createElement("span", null, formulaMore.selectCategory, "\uFF1A"), /*#__PURE__*/React.createElement("select", {
4616
- id: "formulaTypeSelect",
4617
- onChange: function onChange(e) {
4618
- setSelectedType(parseInt(e.target.value, 10));
4619
- setSelectedFuncIndex(0);
4620
- }
4621
- }, typeList.map(function (v) {
4622
- return /*#__PURE__*/React.createElement("option", {
4623
- key: v.t,
4624
- value: v.t
4625
- }, v.n);
4626
- }))), /*#__PURE__*/React.createElement("div", {
4627
- className: "listbox",
4628
- style: {
4629
- height: 200
4630
- }
4631
- }, /*#__PURE__*/React.createElement("div", null, formulaMore.selectFunctionTitle, "\uFF1A"), /*#__PURE__*/React.createElement("div", {
4632
- className: "formulaList"
4633
- }, filteredFunctionList.map(function (v, index) {
4634
- return /*#__PURE__*/React.createElement("div", {
4635
- className: "listBox".concat(index === selectedFuncIndex ? " on" : ""),
4636
- key: v.n,
4637
- onClick: function onClick() {
4638
- return setSelectedFuncIndex(index);
4639
- },
4640
- tabIndex: 0
4641
- }, /*#__PURE__*/React.createElement("div", null, v.n), /*#__PURE__*/React.createElement("div", null, v.a));
4642
- }))), /*#__PURE__*/React.createElement("div", {
4643
- className: "fortune-dialog-box-button-container"
4644
- }, /*#__PURE__*/React.createElement("div", {
4645
- className: "fortune-message-box-button button-primary",
4646
- onClick: onConfirm,
4647
- tabIndex: 0
4648
- }, button.confirm), /*#__PURE__*/React.createElement("div", {
4649
- className: "fortune-message-box-button button-default",
4650
- onClick: onCancel,
4651
- tabIndex: 0
4652
- }, button.cancel)));
4653
- };
4654
-
4655
4381
  var SplitColumn = function SplitColumn() {
4656
4382
  var _useContext = useContext(WorkbookContext),
4657
4383
  context = _useContext.context,
@@ -6455,9 +6181,10 @@ var Toolbar = function Toolbar(_ref) {
6455
6181
  }), /*#__PURE__*/React.createElement(MenuDivider, null), /*#__PURE__*/React.createElement(Option, {
6456
6182
  key: "formula",
6457
6183
  onClick: function onClick() {
6458
- showDialog(/*#__PURE__*/React.createElement(FormulaSearch$1, {
6459
- onCancel: hideDialog
6460
- }));
6184
+ var button = document.getElementById("function-button");
6185
+ if (button) {
6186
+ button.click();
6187
+ }
6461
6188
  setOpen(false);
6462
6189
  }
6463
6190
  }, "".concat(formula.find, "...")));
@@ -10286,7 +10013,7 @@ var MoreItemsContaier = function MoreItemsContaier(_ref) {
10286
10013
  }, children);
10287
10014
  };
10288
10015
 
10289
- function generateAPIs(context, setContext, handleUndo, handleRedo, settings, cellInput, scrollbarX, scrollbarY) {
10016
+ function generateAPIs(context, setContext, handleUndo, handleRedo, settings, cellInput, scrollbarX, scrollbarY, globalCache) {
10290
10017
  return {
10291
10018
  applyOp: function applyOp(ops) {
10292
10019
  setContext(function (ctx_) {
@@ -10587,6 +10314,50 @@ function generateAPIs(context, setContext, handleUndo, handleRedo, settings, cel
10587
10314
  },
10588
10315
  celldataToData: function celldataToData(celldata, rowCount, colCount) {
10589
10316
  return api.celldataToData(celldata, rowCount, colCount);
10317
+ },
10318
+ insertFunction: function insertFunction(selectedFuncIndex, filteredFunctionList, callback) {
10319
+ var _context$luckysheet_s2;
10320
+ var last = (_context$luckysheet_s2 = context.luckysheet_select_save) === null || _context$luckysheet_s2 === void 0 ? void 0 : _context$luckysheet_s2[context.luckysheet_select_save.length - 1];
10321
+ var row_index = last === null || last === void 0 ? void 0 : last.row_focus;
10322
+ var col_index = last === null || last === void 0 ? void 0 : last.column_focus;
10323
+ if (!last) {
10324
+ row_index = 0;
10325
+ col_index = 0;
10326
+ } else {
10327
+ if (row_index == null) {
10328
+ var _last$row2 = _slicedToArray(last.row, 1);
10329
+ row_index = _last$row2[0];
10330
+ }
10331
+ if (col_index == null) {
10332
+ var _last$column2 = _slicedToArray(last.column, 1);
10333
+ col_index = _last$column2[0];
10334
+ }
10335
+ }
10336
+ var formulaTxt = "<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span><span dir=\"auto\" class=\"luckysheet-formula-text-color\">".concat(filteredFunctionList[selectedFuncIndex].n.toUpperCase(), "</span><span dir=\"auto\" class=\"luckysheet-formula-text-color\">(</span>");
10337
+ var _locale2 = locale(context),
10338
+ functionlist = _locale2.functionlist;
10339
+ setContext(function (ctx) {
10340
+ if (cellInput != null && globalCache != null) {
10341
+ ctx.luckysheetCellUpdate = [row_index, col_index];
10342
+ globalCache.doNotUpdateCell = true;
10343
+ cellInput.innerHTML = formulaTxt;
10344
+ var spans = cellInput.childNodes;
10345
+ if (!_.isEmpty(spans)) {
10346
+ setCaretPosition(ctx, spans[spans.length - 1], 0, 1);
10347
+ }
10348
+ ctx.functionHint = filteredFunctionList[selectedFuncIndex].n.toUpperCase();
10349
+ ctx.functionCandidates = [];
10350
+ if (_.isEmpty(ctx.formulaCache.functionlistMap)) {
10351
+ for (var i = 0; i < functionlist.length; i += 1) {
10352
+ ctx.formulaCache.functionlistMap[functionlist[i].n] = functionlist[i];
10353
+ }
10354
+ }
10355
+ callback === null || callback === void 0 ? void 0 : callback();
10356
+ }
10357
+ });
10358
+ },
10359
+ getLocaleContext: function getLocaleContext() {
10360
+ return locale(context);
10590
10361
  }
10591
10362
  };
10592
10363
  }
@@ -11794,8 +11565,8 @@ var Workbook = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
11794
11565
  };
11795
11566
  }, [onPaste]);
11796
11567
  useImperativeHandle(ref, function () {
11797
- return generateAPIs(context, setContextWithProduce, handleUndo, handleRedo, mergedSettings, cellInput.current, scrollbarX.current, scrollbarY.current);
11798
- }, [context, setContextWithProduce, handleUndo, handleRedo, mergedSettings]);
11568
+ return generateAPIs(context, setContextWithProduce, handleUndo, handleRedo, mergedSettings, cellInput.current, scrollbarX.current, scrollbarY.current, globalCache.current);
11569
+ }, [context, setContextWithProduce, handleUndo, handleRedo, mergedSettings, globalCache]);
11799
11570
  var i = getSheetIndex(context, context.currentSheetId);
11800
11571
  if (i == null) {
11801
11572
  return null;