@fileverse-dev/fortune-react 1.0.2-mod-24 → 1.0.2-mod-25-patch-1

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,9 +1,10 @@
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, indexToColumnChar, sortSelection, handleCopy, deleteRowCol, hideSelected, showSelected, api, removeActiveImage, deleteSelectedCellText, jfrefreshgrid, 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, 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, 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';
5
- import { IconButton, Button as Button$1, TextField, Checkbox, Divider as Divider$2, Table, TableHeader, TableRow, TableHead, TableBody, cn, TableCell } from '@fileverse/ui';
5
+ import { cn, IconButton, Button as Button$1, TextField, Checkbox, Divider as Divider$2, Table, TableHeader, TableRow, TableHead, TableBody, TableCell, Select as Select$1, SelectTrigger, SelectValue, SelectContent, SelectItem as SelectItem$1, LucideIcon } from '@fileverse/ui';
6
6
  import regeneratorRuntime from 'regenerator-runtime';
7
+ import Tippy from '@tippyjs/react';
7
8
 
8
9
  function _arrayLikeToArray(r, a) {
9
10
  (null == a || a > r.length) && (a = r.length);
@@ -1220,7 +1221,8 @@ var Dialog = function Dialog(_ref) {
1220
1221
  onCancel = _ref.onCancel,
1221
1222
  children = _ref.children,
1222
1223
  containerStyle = _ref.containerStyle,
1223
- contentStyle = _ref.contentStyle;
1224
+ contentStyle = _ref.contentStyle,
1225
+ title = _ref.title;
1224
1226
  var _useContext = useContext(WorkbookContext),
1225
1227
  context = _useContext.context;
1226
1228
  var _locale = locale(context),
@@ -1229,8 +1231,12 @@ var Dialog = function Dialog(_ref) {
1229
1231
  className: "fortune-dialog",
1230
1232
  style: containerStyle
1231
1233
  }, /*#__PURE__*/React.createElement("div", {
1232
- className: "flex items-center justify-end border-b color-border-default py-3 px-6"
1233
- }, /*#__PURE__*/React.createElement(IconButton, {
1234
+ className: cn("flex items-center justify-end border-b color-border-default py-3 px-6", {
1235
+ "justify-between": title
1236
+ })
1237
+ }, title && /*#__PURE__*/React.createElement("div", {
1238
+ className: "text-heading-sm"
1239
+ }, title), /*#__PURE__*/React.createElement(IconButton, {
1234
1240
  icon: "X",
1235
1241
  variant: "ghost",
1236
1242
  onClick: onCancel,
@@ -2355,13 +2361,14 @@ function useDialog() {
2355
2361
  var _useContext = useContext(ModalContext),
2356
2362
  showModal = _useContext.showModal,
2357
2363
  hideModal = _useContext.hideModal;
2358
- var showDialog = useCallback(function (content, type) {
2359
- var onOk = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : hideModal;
2360
- var onCancel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : hideModal;
2364
+ var showDialog = useCallback(function (content, type, title) {
2365
+ var onOk = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : hideModal;
2366
+ var onCancel = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : hideModal;
2361
2367
  showModal(/*#__PURE__*/React.createElement(Dialog, {
2362
2368
  type: type,
2363
2369
  onOk: onOk,
2364
- onCancel: onCancel
2370
+ onCancel: onCancel,
2371
+ title: title
2365
2372
  }, content));
2366
2373
  }, [hideModal, showModal]);
2367
2374
  return {
@@ -2875,6 +2882,21 @@ var DataVerification = function DataVerification() {
2875
2882
  }, button.cancel));
2876
2883
  };
2877
2884
 
2885
+ function getDisplayedRangeTxt(context) {
2886
+ var _context$rangeDialog$, _context$rangeDialog;
2887
+ if (context.luckysheet_select_save) {
2888
+ var range = context.luckysheet_select_save[context.luckysheet_select_save.length - 1];
2889
+ return getRangetxt(context, context.currentSheetId, range, context.currentSheetId);
2890
+ }
2891
+ return (_context$rangeDialog$ = (_context$rangeDialog = context.rangeDialog) === null || _context$rangeDialog === void 0 ? void 0 : _context$rangeDialog.rangeTxt) !== null && _context$rangeDialog$ !== void 0 ? _context$rangeDialog$ : "";
2892
+ }
2893
+
2894
+ var datepickerStyles = "\n .datepicker-toggle {\n display: inline-block;\n position: relative;\n width: 100%;\n }\n \n .datepicker-toggle-button {\n opacity: 0.3;\n position: absolute;\n right: 12px;\n top: 50%;\n transform: translateY(-50%);\n width: 16px;\n height: 16px;\n background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjxyZWN0IHg9IjMiIHk9IjQiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgcng9IjIiIHJ5PSIyIj48L3JlY3Q+PGxpbmUgeDE9IjE2IiB5MT0iMiIgeDI9IjE2IiB5Mj0iNiI+PC9saW5lPjxsaW5lIHgxPSI4IiB5MT0iMiIgeDI9IjgiIHkyPSI2Ij48L2xpbmU+PGxpbmUgeDE9IjMiIHkxPSIxMCIgeDI9IjIxIiB5Mj0iMTAiPjwvbGluZT48L3N2Zz4=');\n background-repeat: no-repeat;\n background-position: center;\n pointer-events: none;\n }\n \n .datepicker-input {\n width: 100%;\n padding: 8px 12px;\n border: 1px solid #e2e8f0;\n border-radius: 6px;\n font-size: 14px;\n line-height: 1.5;\n color: #1a202c;\n background-color: #fff;\n cursor: pointer;\n }\n \n .datepicker-input::-webkit-calendar-picker-indicator {\n position: absolute;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n margin: 0;\n padding: 0;\n cursor: pointer;\n opacity: 0;\n }\n \n .datepicker-input:focus {\n outline: none;\n border-color: #4299e1;\n box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.1);\n }\n";
2895
+ if (typeof document !== "undefined") {
2896
+ var styleSheet = document.createElement("style");
2897
+ styleSheet.textContent = datepickerStyles;
2898
+ document.head.appendChild(styleSheet);
2899
+ }
2878
2900
  var ConditionRules = function ConditionRules(_ref) {
2879
2901
  var type = _ref.type;
2880
2902
  var _useContext = useContext(WorkbookContext),
@@ -2888,12 +2910,23 @@ var ConditionRules = function ConditionRules(_ref) {
2888
2910
  protection = _locale.protection,
2889
2911
  generalDialog = _locale.generalDialog;
2890
2912
  var _useState = useState({
2891
- textColor: "#000000",
2892
- cellColor: "#000000"
2913
+ textColor: "#FFFFFF",
2914
+ cellColor: "#D82E2A"
2893
2915
  }),
2894
2916
  _useState2 = _slicedToArray(_useState, 2),
2895
2917
  colorRules = _useState2[0],
2896
2918
  setColorRules = _useState2[1];
2919
+ var dataSelectRange = useCallback(function (selectType) {
2920
+ hideDialog();
2921
+ setContext(function (ctx) {
2922
+ ctx.conditionRules.textColor.color = colorRules.textColor;
2923
+ ctx.conditionRules.cellColor.color = colorRules.cellColor;
2924
+ ctx.rangeDialog.show = true;
2925
+ ctx.rangeDialog.type = selectType;
2926
+ ctx.rangeDialog.rangeTxt = ctx.conditionRules.rulesValue;
2927
+ ctx.rangeDialog.singleSelect = true;
2928
+ });
2929
+ }, [colorRules.cellColor, colorRules.textColor, hideDialog, setContext]);
2897
2930
  var close = useCallback(function (closeType) {
2898
2931
  if (closeType === "confirm") {
2899
2932
  setContext(function (ctx) {
@@ -2962,17 +2995,16 @@ var ConditionRules = function ConditionRules(_ref) {
2962
2995
  ctx.rangeDialog.rangeTxt = "";
2963
2996
  });
2964
2997
  }, []);
2998
+ var titleType = type === "top10_percent" ? "top10" : type === "last10_percent" ? "last10" : type;
2965
2999
  return /*#__PURE__*/React.createElement("div", {
2966
3000
  className: "condition-rules"
3001
+ }, !["aboveAverage", "belowAverage"].includes(type) && (/*#__PURE__*/React.createElement("div", {
3002
+ className: "flex flex-col"
2967
3003
  }, /*#__PURE__*/React.createElement("div", {
2968
- className: "condition-rules-title"
2969
- }, conditionformat["conditionformat_".concat(type)]), /*#__PURE__*/React.createElement("div", {
2970
- className: "conditin-rules-value"
2971
- }, conditionformat["conditionformat_".concat(type, "_title")]), (type === "greaterThan" || type === "lessThan" || type === "equal" || type === "textContains") && (/*#__PURE__*/React.createElement("div", {
2972
- className: "condition-rules-inpbox"
2973
- }, /*#__PURE__*/React.createElement("input", {
2974
- className: "condition-rules-input",
2975
- type: "text",
3004
+ className: "condition-rules-value text-heading-xsm"
3005
+ }, conditionformat["conditionformat_".concat(titleType, "_title")]), (type === "greaterThan" || type === "lessThan" || type === "equal" || type === "textContains") && (/*#__PURE__*/React.createElement("div", {
3006
+ className: "w-full"
3007
+ }, /*#__PURE__*/React.createElement(TextField, {
2976
3008
  value: context.conditionRules.rulesValue,
2977
3009
  onChange: function onChange(e) {
2978
3010
  var value = e.target.value;
@@ -2981,12 +3013,11 @@ var ConditionRules = function ConditionRules(_ref) {
2981
3013
  });
2982
3014
  }
2983
3015
  }))), type === "between" && (/*#__PURE__*/React.createElement("div", {
2984
- className: "condition-rules-between-box"
3016
+ className: "w-full flex gap-2 items-center"
2985
3017
  }, /*#__PURE__*/React.createElement("div", {
2986
- className: "condition-rules-between-inpbox"
2987
- }, /*#__PURE__*/React.createElement("input", {
2988
- className: "condition-rules-between-input",
2989
- type: "text",
3018
+ className: "w-full"
3019
+ }, /*#__PURE__*/React.createElement(TextField, {
3020
+ placeholder: "From",
2990
3021
  value: context.conditionRules.betweenValue.value1,
2991
3022
  onChange: function onChange(e) {
2992
3023
  var value = e.target.value;
@@ -2994,15 +3025,10 @@ var ConditionRules = function ConditionRules(_ref) {
2994
3025
  ctx.conditionRules.betweenValue.value1 = value;
2995
3026
  });
2996
3027
  }
2997
- })), /*#__PURE__*/React.createElement("span", {
2998
- style: {
2999
- margin: "0px 4px"
3000
- }
3001
- }, conditionformat.to), /*#__PURE__*/React.createElement("div", {
3002
- className: "condition-rules-between-inpbox"
3003
- }, /*#__PURE__*/React.createElement("input", {
3004
- className: "condition-rules-between-input",
3005
- type: "text",
3028
+ })), /*#__PURE__*/React.createElement("div", {
3029
+ className: "w-full"
3030
+ }, /*#__PURE__*/React.createElement(TextField, {
3031
+ placeholder: "To",
3006
3032
  value: context.conditionRules.betweenValue.value2,
3007
3033
  onChange: function onChange(e) {
3008
3034
  var value = e.target.value;
@@ -3011,10 +3037,10 @@ var ConditionRules = function ConditionRules(_ref) {
3011
3037
  });
3012
3038
  }
3013
3039
  })))), type === "occurrenceDate" && (/*#__PURE__*/React.createElement("div", {
3014
- className: "condition-rules-inpbox"
3040
+ className: "datepicker-toggle"
3015
3041
  }, /*#__PURE__*/React.createElement("input", {
3016
3042
  type: "date",
3017
- className: "condition-rules-date",
3043
+ className: "datepicker-input",
3018
3044
  value: context.conditionRules.dateValue,
3019
3045
  onChange: function onChange(e) {
3020
3046
  var value = e.target.value;
@@ -3022,50 +3048,101 @@ var ConditionRules = function ConditionRules(_ref) {
3022
3048
  ctx.conditionRules.dateValue = value;
3023
3049
  });
3024
3050
  }
3025
- }))), type === "duplicateValue" && (/*#__PURE__*/React.createElement("select", {
3026
- className: "condition-rules-select",
3027
- onChange: function onChange(e) {
3028
- var value = e.target.value;
3051
+ }), /*#__PURE__*/React.createElement("span", {
3052
+ className: "datepicker-toggle-button"
3053
+ }))), type === "duplicateValue" && (/*#__PURE__*/React.createElement(Select$1, {
3054
+ value: context.conditionRules.repeatValue,
3055
+ onValueChange: function onValueChange(value) {
3029
3056
  setContext(function (ctx) {
3030
3057
  ctx.conditionRules.repeatValue = value;
3031
3058
  });
3032
3059
  }
3033
- }, /*#__PURE__*/React.createElement("option", {
3060
+ }, /*#__PURE__*/React.createElement(SelectTrigger, null, /*#__PURE__*/React.createElement(SelectValue, null)), /*#__PURE__*/React.createElement(SelectContent, {
3061
+ className: "condition-rules-select"
3062
+ }, /*#__PURE__*/React.createElement(SelectItem$1, {
3034
3063
  value: "0"
3035
- }, conditionformat.duplicateValue), /*#__PURE__*/React.createElement("option", {
3064
+ }, conditionformat.duplicateValue), /*#__PURE__*/React.createElement(SelectItem$1, {
3036
3065
  value: "1"
3037
- }, conditionformat.uniqueValue))), (type === "top10" || type === "top10_percent" || type === "last10" || type === "last10_percent") && (/*#__PURE__*/React.createElement("div", {
3066
+ }, conditionformat.uniqueValue)))), (type === "top10" || type === "top10_percent" || type === "last10" || type === "last10_percent") && (/*#__PURE__*/React.createElement("div", {
3038
3067
  className: "condition-rules-project-box"
3039
- }, type === "top10" || type === "top10_percent" ? conditionformat.top : conditionformat.last, /*#__PURE__*/React.createElement("input", {
3040
- className: "condition-rules-project-input",
3068
+ }, type === "top10" || type === "top10_percent" ? conditionformat.top : conditionformat.last, /*#__PURE__*/React.createElement("div", {
3069
+ className: "flex items-center"
3070
+ }, /*#__PURE__*/React.createElement(IconButton, {
3071
+ icon: "Minus",
3072
+ variant: "ghost",
3073
+ className: "!bg-transparent",
3074
+ disabled: Number(context.conditionRules.projectValue) <= 1,
3075
+ onClick: function onClick() {
3076
+ setContext(function (ctx) {
3077
+ var current = Number(ctx.conditionRules.projectValue) || 0;
3078
+ ctx.conditionRules.projectValue = String(Math.max(current - 1, 1));
3079
+ });
3080
+ }
3081
+ }), /*#__PURE__*/React.createElement(TextField, {
3082
+ className: "condition-rules-project-input pr-0",
3041
3083
  type: "number",
3084
+ min: 1,
3085
+ max: type === "top10" || type === "last10" ? 10 : 100,
3042
3086
  value: context.conditionRules.projectValue,
3043
3087
  onChange: function onChange(e) {
3044
3088
  var value = e.target.value;
3045
3089
  setContext(function (ctx) {
3046
3090
  ctx.conditionRules.projectValue = value;
3047
3091
  });
3092
+ },
3093
+ rightIcon: type === "top10" || type === "last10" ? (/*#__PURE__*/React.createElement("span", {
3094
+ className: "color-icon-secondary"
3095
+ }, conditionformat.oneself)) : (/*#__PURE__*/React.createElement("span", {
3096
+ className: "color-icon-secondary"
3097
+ }, "%"))
3098
+ }), /*#__PURE__*/React.createElement(IconButton, {
3099
+ icon: "Plus",
3100
+ variant: "ghost",
3101
+ className: "!bg-transparent",
3102
+ disabled: Number(context.conditionRules.projectValue) >= (type === "top10" || type === "last10" ? 10 : 100),
3103
+ onClick: function onClick() {
3104
+ setContext(function (ctx) {
3105
+ var current = Number(ctx.conditionRules.projectValue) || 0;
3106
+ ctx.conditionRules.projectValue = String(current + 1);
3107
+ });
3108
+ }
3109
+ })))))), /*#__PURE__*/React.createElement("div", {
3110
+ className: "flex flex-col"
3111
+ }, /*#__PURE__*/React.createElement("div", {
3112
+ className: "condition-rules-value text-heading-xsm"
3113
+ }, conditionformat.applyRange), /*#__PURE__*/React.createElement(TextField, {
3114
+ rightIcon: /*#__PURE__*/React.createElement(LucideIcon, {
3115
+ name: "Grid2x2",
3116
+ size: "sm"
3117
+ }),
3118
+ "aria-hidden": "true",
3119
+ readOnly: true,
3120
+ placeholder: conditionformat.selectRange,
3121
+ value: getDisplayedRangeTxt(context),
3122
+ onClick: function onClick() {
3123
+ dataSelectRange("conditionRules".concat(type));
3048
3124
  }
3049
- }), type === "top10" || type === "last10" ? conditionformat.oneself : "%")), /*#__PURE__*/React.createElement("div", {
3050
- className: "condition-rules-set-title"
3125
+ })), /*#__PURE__*/React.createElement("div", {
3126
+ className: "flex flex-col"
3127
+ }, /*#__PURE__*/React.createElement("div", {
3128
+ className: "condition-rules-set-title text-heading-xsm"
3051
3129
  }, "".concat(conditionformat.setAs, "\uFF1A")), /*#__PURE__*/React.createElement("div", {
3052
3130
  className: "condition-rules-setbox"
3053
3131
  }, /*#__PURE__*/React.createElement("div", {
3054
3132
  className: "condition-rules-set"
3055
3133
  }, /*#__PURE__*/React.createElement("div", {
3056
3134
  className: "condition-rules-color"
3057
- }, /*#__PURE__*/React.createElement("input", {
3058
- id: "checkTextColor",
3059
- type: "checkbox",
3060
- className: "condition-rules-check",
3135
+ }, /*#__PURE__*/React.createElement("span", {
3136
+ id: "checkTextColor"
3137
+ }, /*#__PURE__*/React.createElement(Checkbox, {
3061
3138
  checked: context.conditionRules.textColor.check,
3062
- onChange: function onChange(e) {
3139
+ onCheckedChange: function onCheckedChange(e) {
3063
3140
  var checked = e.target.checked;
3064
3141
  setContext(function (ctx) {
3065
3142
  ctx.conditionRules.textColor.check = checked;
3066
3143
  });
3067
3144
  }
3068
- }), /*#__PURE__*/React.createElement("label", {
3145
+ })), /*#__PURE__*/React.createElement("label", {
3069
3146
  htmlFor: "checkTextColor",
3070
3147
  className: "condition-rules-label"
3071
3148
  }, conditionformat.textColor), /*#__PURE__*/React.createElement("input", {
@@ -3082,18 +3159,17 @@ var ConditionRules = function ConditionRules(_ref) {
3082
3159
  className: "condition-rules-set"
3083
3160
  }, /*#__PURE__*/React.createElement("div", {
3084
3161
  className: "condition-rules-color"
3085
- }, /*#__PURE__*/React.createElement("input", {
3086
- id: "checkCellColor",
3087
- type: "checkbox",
3088
- className: "condition-rules-check",
3162
+ }, /*#__PURE__*/React.createElement("span", {
3163
+ id: "checkCellColor"
3164
+ }, /*#__PURE__*/React.createElement(Checkbox, {
3089
3165
  checked: context.conditionRules.cellColor.check,
3090
- onChange: function onChange(e) {
3166
+ onCheckedChange: function onCheckedChange(e) {
3091
3167
  var checked = e.target.checked;
3092
3168
  setContext(function (ctx) {
3093
3169
  ctx.conditionRules.cellColor.check = checked;
3094
3170
  });
3095
3171
  }
3096
- }), /*#__PURE__*/React.createElement("label", {
3172
+ })), /*#__PURE__*/React.createElement("label", {
3097
3173
  htmlFor: "checkCellColor",
3098
3174
  className: "condition-rules-label"
3099
3175
  }, conditionformat.cellColor), /*#__PURE__*/React.createElement("input", {
@@ -3106,23 +3182,32 @@ var ConditionRules = function ConditionRules(_ref) {
3106
3182
  draft.cellColor = value;
3107
3183
  }));
3108
3184
  }
3109
- })))), /*#__PURE__*/React.createElement("div", {
3110
- className: "button-basic button-primary",
3185
+ }))))), /*#__PURE__*/React.createElement(Divider$2, {
3186
+ className: "w-full border-t-[1px]"
3187
+ }), /*#__PURE__*/React.createElement("div", {
3188
+ className: "flex gap-2 justify-end"
3189
+ }, /*#__PURE__*/React.createElement(Button$1, {
3190
+ variant: "secondary",
3191
+ style: {
3192
+ minWidth: "80px"
3193
+ },
3111
3194
  onClick: function onClick() {
3112
- close("confirm");
3195
+ close("close");
3113
3196
  },
3114
3197
  tabIndex: 0
3115
- }, button.confirm), /*#__PURE__*/React.createElement("div", {
3116
- className: "button-basic button-close",
3198
+ }, button.cancel), /*#__PURE__*/React.createElement(Button$1, {
3199
+ variant: "default",
3200
+ style: {
3201
+ minWidth: "80px"
3202
+ },
3117
3203
  onClick: function onClick() {
3118
- close("close");
3204
+ close("confirm");
3119
3205
  },
3120
3206
  tabIndex: 0
3121
- }, button.cancel));
3207
+ }, button.apply)));
3122
3208
  };
3123
3209
 
3124
3210
  var RangeDialog = function RangeDialog() {
3125
- var _context$rangeDialog$, _context$rangeDialog;
3126
3211
  var _useContext = useContext(WorkbookContext),
3127
3212
  context = _useContext.context,
3128
3213
  setContext = _useContext.setContext;
@@ -3131,7 +3216,7 @@ var RangeDialog = function RangeDialog() {
3131
3216
  var _locale = locale(context),
3132
3217
  dataVerification = _locale.dataVerification,
3133
3218
  button = _locale.button;
3134
- var _useState = useState((_context$rangeDialog$ = (_context$rangeDialog = context.rangeDialog) === null || _context$rangeDialog === void 0 ? void 0 : _context$rangeDialog.rangeTxt) !== null && _context$rangeDialog$ !== void 0 ? _context$rangeDialog$ : ""),
3219
+ var _useState = useState(getDisplayedRangeTxt(context)),
3135
3220
  _useState2 = _slicedToArray(_useState, 2),
3136
3221
  rangeTxt2 = _useState2[0],
3137
3222
  setRangeTxt2 = _useState2[1];
@@ -3145,30 +3230,24 @@ var RangeDialog = function RangeDialog() {
3145
3230
  if (rangeDialogType.indexOf("between") >= 0) {
3146
3231
  showDialog(/*#__PURE__*/React.createElement(ConditionRules, {
3147
3232
  type: "between"
3148
- }));
3233
+ }), undefined, locale(context).conditionformat.conditionformat_between);
3149
3234
  return;
3150
3235
  }
3151
3236
  if (rangeDialogType.indexOf("conditionRules") >= 0) {
3152
3237
  var rulesType = rangeDialogType.substring("conditionRules".length, rangeDialogType.length);
3153
3238
  showDialog(/*#__PURE__*/React.createElement(ConditionRules, {
3154
3239
  type: rulesType
3155
- }));
3240
+ }), undefined, locale(context).conditionformat["conditionformat_".concat(rulesType)]);
3156
3241
  return;
3157
3242
  }
3158
3243
  showDialog(/*#__PURE__*/React.createElement(DataVerification, null));
3159
- }, [context.rangeDialog, setContext, showDialog]);
3244
+ }, [setContext, showDialog, context]);
3160
3245
  useEffect(function () {
3161
- setRangeTxt2(function (r) {
3162
- if (context.luckysheet_select_save) {
3163
- var range = context.luckysheet_select_save[context.luckysheet_select_save.length - 1];
3164
- r = getRangetxt(context, context.currentSheetId, range, context.currentSheetId);
3165
- return r;
3166
- }
3167
- return "";
3168
- });
3246
+ setRangeTxt2(getDisplayedRangeTxt(context));
3169
3247
  }, [context, context.luckysheet_select_save]);
3170
3248
  return /*#__PURE__*/React.createElement("div", {
3171
3249
  id: "range-dialog",
3250
+ className: "fortune-dialog",
3172
3251
  onClick: function onClick(e) {
3173
3252
  return e.stopPropagation();
3174
3253
  },
@@ -3186,15 +3265,34 @@ var RangeDialog = function RangeDialog() {
3186
3265
  },
3187
3266
  tabIndex: 0
3188
3267
  }, /*#__PURE__*/React.createElement("div", {
3189
- className: "dialog-title"
3190
- }, dataVerification.selectCellRange), /*#__PURE__*/React.createElement("input", {
3268
+ className: cn("flex items-center justify-between border-b color-border-default py-3 px-6")
3269
+ }, /*#__PURE__*/React.createElement("div", {
3270
+ className: "text-heading-sm"
3271
+ }, dataVerification.selectCellRange), /*#__PURE__*/React.createElement(IconButton, {
3272
+ icon: "X",
3273
+ variant: "ghost",
3274
+ onClick: close,
3275
+ tabIndex: 0
3276
+ })), /*#__PURE__*/React.createElement("div", {
3277
+ className: "px-6 pb-6 pt-4 text-body-sm"
3278
+ }, /*#__PURE__*/React.createElement(TextField, {
3279
+ className: "w-full",
3191
3280
  readOnly: true,
3192
3281
  placeholder: dataVerification.selectCellRange2,
3193
3282
  value: rangeTxt2
3194
- }), /*#__PURE__*/React.createElement("div", {
3195
- className: "button-basic button-primary",
3283
+ })), /*#__PURE__*/React.createElement("div", {
3284
+ className: "px-6 pb-6 flex flex-row gap-2 justify-end"
3285
+ }, /*#__PURE__*/React.createElement(Button$1, {
3286
+ variant: "secondary",
3287
+ style: {
3288
+ minWidth: "80px"
3289
+ },
3290
+ onClick: close,
3291
+ tabIndex: 0
3292
+ }, button.close), /*#__PURE__*/React.createElement(Button$1, {
3293
+ variant: "default",
3196
3294
  style: {
3197
- marginLeft: "6px"
3295
+ minWidth: "80px"
3198
3296
  },
3199
3297
  onClick: function onClick() {
3200
3298
  setContext(function (ctx) {
@@ -3203,13 +3301,7 @@ var RangeDialog = function RangeDialog() {
3203
3301
  close();
3204
3302
  },
3205
3303
  tabIndex: 0
3206
- }, button.confirm), /*#__PURE__*/React.createElement("div", {
3207
- className: "button-basic button-close",
3208
- onClick: function onClick() {
3209
- close();
3210
- },
3211
- tabIndex: 0
3212
- }, button.close));
3304
+ }, button.confirm)));
3213
3305
  };
3214
3306
 
3215
3307
  function useOutsideClick(containerRef, handler, deps, optionalContainerRef) {
@@ -4128,7 +4220,6 @@ var Combo = function Combo(_ref) {
4128
4220
  var openState = useRef(false);
4129
4221
  var triggerRef = useRef(null);
4130
4222
  useOutsideClick(popupRef, function () {
4131
- console.log("Combo useOutsideClick", openState.current);
4132
4223
  setOpen(false);
4133
4224
  openState.current = false;
4134
4225
  }, [], triggerRef);
@@ -4160,10 +4251,8 @@ var Combo = function Combo(_ref) {
4160
4251
  ref: triggerRef,
4161
4252
  className: "fortune-toolbar-combo-button",
4162
4253
  onClick: function onClick(e) {
4163
- console.log("Combo onClick pop ref", popupRef.current, "ll", document.getElementsByClassName("fortune-toolbar-combo-popup"));
4164
4254
  openState.current = !openState.current;
4165
4255
  setOpen(openState.current);
4166
- console.log("Combo onClick", iconId, _onClick, open, openState.current, e, e.target);
4167
4256
  if (_onClick) _onClick(e);else setOpen(openState.current);
4168
4257
  },
4169
4258
  tabIndex: 0,
@@ -4179,7 +4268,7 @@ var Combo = function Combo(_ref) {
4179
4268
  className: "fortune-tooltip"
4180
4269
  }, tooltip)), open && (/*#__PURE__*/React.createElement("div", {
4181
4270
  ref: popupRef,
4182
- className: "fortune-toolbar-combo-popup",
4271
+ className: "fortune-toolbar-combo-popup color-text-default",
4183
4272
  style: popupPosition
4184
4273
  }, children === null || children === void 0 ? void 0 : children(setOpen))));
4185
4274
  };
@@ -4211,209 +4300,10 @@ var Option = function Option(_ref2) {
4211
4300
  }, iconId && /*#__PURE__*/React.createElement(SVGIcon, {
4212
4301
  name: iconId
4213
4302
  }), /*#__PURE__*/React.createElement("div", {
4214
- className: "fortuen-toolbar-text"
4303
+ className: "fortuen-toolbar-text color-text-default text-body-sm"
4215
4304
  }, children));
4216
4305
  };
4217
4306
 
4218
- var FormulaSearch$1 = function FormulaSearch(_ref) {
4219
- var _onCancel = _ref.onCancel;
4220
- var _useContext = useContext(WorkbookContext),
4221
- context = _useContext.context,
4222
- setContext = _useContext.setContext,
4223
- _useContext$refs = _useContext.refs,
4224
- cellInput = _useContext$refs.cellInput,
4225
- globalCache = _useContext$refs.globalCache;
4226
- var _useState = useState(20),
4227
- _useState2 = _slicedToArray(_useState, 2),
4228
- selectedType = _useState2[0],
4229
- setSelectedType = _useState2[1];
4230
- var _useState3 = useState(0),
4231
- _useState4 = _slicedToArray(_useState3, 2),
4232
- selectedFuncIndex = _useState4[0],
4233
- setSelectedFuncIndex = _useState4[1];
4234
- var _useState5 = useState(""),
4235
- _useState6 = _slicedToArray(_useState5, 2),
4236
- searchText = _useState6[0],
4237
- setSearchText = _useState6[1];
4238
- var _locale = locale(context),
4239
- formulaMore = _locale.formulaMore,
4240
- functionlist = _locale.functionlist,
4241
- button = _locale.button;
4242
- var typeList = useMemo(function () {
4243
- return [{
4244
- t: 20,
4245
- n: formulaMore.Crypto
4246
- }, {
4247
- t: 0,
4248
- n: formulaMore.Math
4249
- }, {
4250
- t: 1,
4251
- n: formulaMore.Statistical
4252
- }, {
4253
- t: 2,
4254
- n: formulaMore.Lookup
4255
- }, {
4256
- t: 3,
4257
- n: formulaMore.luckysheet
4258
- }, {
4259
- t: 4,
4260
- n: formulaMore.dataMining
4261
- }, {
4262
- t: 5,
4263
- n: formulaMore.Database
4264
- }, {
4265
- t: 6,
4266
- n: formulaMore.Date
4267
- }, {
4268
- t: 7,
4269
- n: formulaMore.Filter
4270
- }, {
4271
- t: 8,
4272
- n: formulaMore.Financial
4273
- }, {
4274
- t: 9,
4275
- n: formulaMore.Engineering
4276
- }, {
4277
- t: 10,
4278
- n: formulaMore.Logical
4279
- }, {
4280
- t: 11,
4281
- n: formulaMore.Operator
4282
- }, {
4283
- t: 12,
4284
- n: formulaMore.Text
4285
- }, {
4286
- t: 13,
4287
- n: formulaMore.Parser
4288
- }, {
4289
- t: 14,
4290
- n: formulaMore.Array
4291
- }, {
4292
- t: -1,
4293
- n: formulaMore.other
4294
- }];
4295
- }, [formulaMore]);
4296
- var filteredFunctionList = useMemo(function () {
4297
- if (searchText) {
4298
- var list = [];
4299
- var text = _.cloneDeep(searchText.toUpperCase());
4300
- for (var i = 0; i < functionlist.length; i += 1) {
4301
- if (/^[a-zA-Z]+$/.test(text)) {
4302
- if (functionlist[i].n.indexOf(text) !== -1) {
4303
- list.push(functionlist[i]);
4304
- }
4305
- } else if (functionlist[i].a.indexOf(text) !== -1) {
4306
- list.push(functionlist[i]);
4307
- }
4308
- }
4309
- return list;
4310
- }
4311
- return _.filter(functionlist, function (v) {
4312
- return v.t === selectedType;
4313
- });
4314
- }, [functionlist, selectedType, searchText]);
4315
- var onConfirm = useCallback(function () {
4316
- var _context$luckysheet_s;
4317
- 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];
4318
- var row_index = last === null || last === void 0 ? void 0 : last.row_focus;
4319
- var col_index = last === null || last === void 0 ? void 0 : last.column_focus;
4320
- if (!last) {
4321
- row_index = 0;
4322
- col_index = 0;
4323
- } else {
4324
- if (row_index == null) {
4325
- var _last$row = _slicedToArray(last.row, 1);
4326
- row_index = _last$row[0];
4327
- }
4328
- if (col_index == null) {
4329
- var _last$column = _slicedToArray(last.column, 1);
4330
- col_index = _last$column[0];
4331
- }
4332
- }
4333
- 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>");
4334
- setContext(function (ctx) {
4335
- if (cellInput.current != null) {
4336
- ctx.luckysheetCellUpdate = [row_index, col_index];
4337
- globalCache.doNotUpdateCell = true;
4338
- cellInput.current.innerHTML = formulaTxt;
4339
- var spans = cellInput.current.childNodes;
4340
- if (!_.isEmpty(spans)) {
4341
- setCaretPosition(ctx, spans[spans.length - 1], 0, 1);
4342
- }
4343
- ctx.functionHint = filteredFunctionList[selectedFuncIndex].n.toUpperCase();
4344
- ctx.functionCandidates = [];
4345
- if (_.isEmpty(ctx.formulaCache.functionlistMap)) {
4346
- for (var i = 0; i < functionlist.length; i += 1) {
4347
- ctx.formulaCache.functionlistMap[functionlist[i].n] = functionlist[i];
4348
- }
4349
- }
4350
- _onCancel();
4351
- }
4352
- });
4353
- }, [cellInput, context.luckysheet_select_save, filteredFunctionList, globalCache, selectedFuncIndex, setContext, _onCancel, functionlist]);
4354
- var onCancel = useCallback(function () {
4355
- setContext(function (ctx) {
4356
- cancelNormalSelected(ctx);
4357
- if (cellInput.current) {
4358
- cellInput.current.innerHTML = "";
4359
- }
4360
- });
4361
- _onCancel();
4362
- }, [_onCancel, cellInput, setContext]);
4363
- return /*#__PURE__*/React.createElement("div", {
4364
- id: "luckysheet-search-formula"
4365
- }, /*#__PURE__*/React.createElement("div", {
4366
- className: "inpbox"
4367
- }, /*#__PURE__*/React.createElement("div", null, formulaMore.findFunctionTitle, "\uFF1A"), /*#__PURE__*/React.createElement("input", {
4368
- className: "formulaInputFocus",
4369
- id: "searchFormulaListInput",
4370
- placeholder: formulaMore.tipInputFunctionName,
4371
- spellCheck: "false",
4372
- onChange: function onChange(e) {
4373
- return setSearchText(e.target.value);
4374
- }
4375
- })), /*#__PURE__*/React.createElement("div", {
4376
- className: "selbox"
4377
- }, /*#__PURE__*/React.createElement("span", null, formulaMore.selectCategory, "\uFF1A"), /*#__PURE__*/React.createElement("select", {
4378
- id: "formulaTypeSelect",
4379
- onChange: function onChange(e) {
4380
- setSelectedType(parseInt(e.target.value, 10));
4381
- setSelectedFuncIndex(0);
4382
- }
4383
- }, typeList.map(function (v) {
4384
- return /*#__PURE__*/React.createElement("option", {
4385
- key: v.t,
4386
- value: v.t
4387
- }, v.n);
4388
- }))), /*#__PURE__*/React.createElement("div", {
4389
- className: "listbox",
4390
- style: {
4391
- height: 200
4392
- }
4393
- }, /*#__PURE__*/React.createElement("div", null, formulaMore.selectFunctionTitle, "\uFF1A"), /*#__PURE__*/React.createElement("div", {
4394
- className: "formulaList"
4395
- }, filteredFunctionList.map(function (v, index) {
4396
- return /*#__PURE__*/React.createElement("div", {
4397
- className: "listBox".concat(index === selectedFuncIndex ? " on" : ""),
4398
- key: v.n,
4399
- onClick: function onClick() {
4400
- return setSelectedFuncIndex(index);
4401
- },
4402
- tabIndex: 0
4403
- }, /*#__PURE__*/React.createElement("div", null, v.n), /*#__PURE__*/React.createElement("div", null, v.a));
4404
- }))), /*#__PURE__*/React.createElement("div", {
4405
- className: "fortune-dialog-box-button-container"
4406
- }, /*#__PURE__*/React.createElement("div", {
4407
- className: "fortune-message-box-button button-primary",
4408
- onClick: onConfirm,
4409
- tabIndex: 0
4410
- }, button.confirm), /*#__PURE__*/React.createElement("div", {
4411
- className: "fortune-message-box-button button-default",
4412
- onClick: onCancel,
4413
- tabIndex: 0
4414
- }, button.cancel)));
4415
- };
4416
-
4417
4307
  var SplitColumn = function SplitColumn() {
4418
4308
  var _useContext = useContext(WorkbookContext),
4419
4309
  context = _useContext.context,
@@ -4457,7 +4347,7 @@ var SplitColumn = function SplitColumn() {
4457
4347
  }
4458
4348
  }
4459
4349
  if (dataCover) {
4460
- showDialog(splitText.splitConfirmToExe, "yesno", function () {
4350
+ showDialog(splitText.splitConfirmToExe, "yesno", undefined, function () {
4461
4351
  hideDialog();
4462
4352
  setContext(function (ctx) {
4463
4353
  updateMoreCell(r, c, dataArr, ctx);
@@ -4780,33 +4670,53 @@ var ConditionalFormat = function ConditionalFormat(_ref) {
4780
4670
  showDialog = _useDialog.showDialog;
4781
4671
  var _locale = locale(context),
4782
4672
  conditionformat = _locale.conditionformat;
4783
- var showSubMenu = useCallback(function (e) {
4784
- var target = e.target;
4785
- var menuItem = target.className === "fortune-toolbar-menu-line" ? target.parentElement : target;
4673
+ var activeSubMenuRef = useRef(null);
4674
+ var updateSubMenuPosition = useCallback(function (subMenu, menuItem) {
4786
4675
  var menuItemRect = menuItem.getBoundingClientRect();
4787
4676
  var workbookContainerRect = refs.workbookContainer.current.getBoundingClientRect();
4788
- var subMenu = menuItem.querySelector(".condition-format-sub-menu");
4789
- if (_.isNil(subMenu)) return;
4790
- var menuItemStyle = window.getComputedStyle(menuItem);
4791
- var menuItemPaddingRight = parseFloat(menuItemStyle.getPropertyValue("padding-right").replace("px", ""));
4792
- if (workbookContainerRect.right - menuItemRect.right < parseFloat(subMenu.style.width.replace("px", ""))) {
4793
- subMenu.style.display = "block";
4794
- subMenu.style.right = "".concat(menuItemRect.width - menuItemPaddingRight, "px");
4677
+ var subMenuWidth = subMenu.offsetWidth;
4678
+ var availableSpace = workbookContainerRect.right - menuItemRect.right;
4679
+ if (availableSpace < subMenuWidth) {
4680
+ subMenu.style.right = "108%";
4795
4681
  } else {
4796
- subMenu.style.display = "block";
4797
- subMenu.style.right = "".concat(-(parseFloat(subMenu.style.width.replace("px", "")) + menuItemPaddingRight), "px");
4682
+ subMenu.style.right = "-100%";
4798
4683
  }
4799
4684
  }, [refs.workbookContainer]);
4685
+ var showSubMenu = useCallback(function (e) {
4686
+ var target = e.target;
4687
+ var menuItem = target.className === "fortune-toolbar-menu-line" ? target.parentElement : target;
4688
+ var subMenu = menuItem.querySelector(".condition-format-sub-menu");
4689
+ if (_.isNil(subMenu)) return;
4690
+ subMenu.style.display = "block";
4691
+ activeSubMenuRef.current = subMenu;
4692
+ updateSubMenuPosition(subMenu, menuItem);
4693
+ }, [updateSubMenuPosition]);
4800
4694
  var hideSubMenu = useCallback(function (e) {
4801
4695
  var target = e.target;
4802
4696
  if (target.className === "condition-format-sub-menu") {
4803
4697
  target.style.display = "none";
4698
+ activeSubMenuRef.current = null;
4804
4699
  return;
4805
4700
  }
4806
4701
  var subMenu = target.className === "condition-format-item" ? target.parentElement : target.querySelector(".condition-format-sub-menu");
4807
4702
  if (_.isNil(subMenu)) return;
4808
4703
  subMenu.style.display = "none";
4704
+ activeSubMenuRef.current = null;
4809
4705
  }, []);
4706
+ useEffect(function () {
4707
+ var handleResize = function handleResize() {
4708
+ if (activeSubMenuRef.current) {
4709
+ var menuItem = activeSubMenuRef.current.parentElement;
4710
+ if (menuItem) {
4711
+ updateSubMenuPosition(activeSubMenuRef.current, menuItem);
4712
+ }
4713
+ }
4714
+ };
4715
+ window.addEventListener("resize", handleResize);
4716
+ return function () {
4717
+ window.removeEventListener("resize", handleResize);
4718
+ };
4719
+ }, [updateSubMenuPosition]);
4810
4720
  var getConditionFormatItem = useCallback(function (name) {
4811
4721
  if (name === "-") {
4812
4722
  return /*#__PURE__*/React.createElement(MenuDivider, {
@@ -4827,8 +4737,7 @@ var ConditionalFormat = function ConditionalFormat(_ref) {
4827
4737
  }), /*#__PURE__*/React.createElement("div", {
4828
4738
  className: "condition-format-sub-menu",
4829
4739
  style: {
4830
- display: "none",
4831
- width: 150
4740
+ display: "none"
4832
4741
  }
4833
4742
  }, [{
4834
4743
  text: "greaterThan",
@@ -4853,13 +4762,13 @@ var ConditionalFormat = function ConditionalFormat(_ref) {
4853
4762
  value: "##"
4854
4763
  }].map(function (v) {
4855
4764
  return /*#__PURE__*/React.createElement("div", {
4856
- className: "condition-format-item",
4765
+ className: "condition-format-item text-body-sm color-text-default",
4857
4766
  key: v.text,
4858
4767
  onClick: function onClick() {
4859
- setOpen(false);
4768
+ setOpen === null || setOpen === void 0 ? void 0 : setOpen(false);
4860
4769
  showDialog(/*#__PURE__*/React.createElement(ConditionRules, {
4861
4770
  type: v.text
4862
- }));
4771
+ }), undefined, conditionformat["conditionformat_".concat(v.text)]);
4863
4772
  },
4864
4773
  tabIndex: 0
4865
4774
  }, conditionformat[v.text], /*#__PURE__*/React.createElement("span", null, v.value));
@@ -4878,8 +4787,7 @@ var ConditionalFormat = function ConditionalFormat(_ref) {
4878
4787
  }), /*#__PURE__*/React.createElement("div", {
4879
4788
  className: "condition-format-sub-menu",
4880
4789
  style: {
4881
- display: "none",
4882
- width: 180
4790
+ display: "none"
4883
4791
  }
4884
4792
  }, [{
4885
4793
  text: "top10",
@@ -4901,13 +4809,13 @@ var ConditionalFormat = function ConditionalFormat(_ref) {
4901
4809
  value: conditionformat.below
4902
4810
  }].map(function (v) {
4903
4811
  return /*#__PURE__*/React.createElement("div", {
4904
- className: "condition-format-item",
4812
+ className: "condition-format-item text-body-sm color-text-default",
4905
4813
  key: v.text,
4906
4814
  onClick: function onClick() {
4907
- setOpen(false);
4815
+ setOpen === null || setOpen === void 0 ? void 0 : setOpen(false);
4908
4816
  showDialog(/*#__PURE__*/React.createElement(ConditionRules, {
4909
4817
  type: v.text
4910
- }));
4818
+ }), undefined, conditionformat["conditionformat_".concat(v.text)]);
4911
4819
  },
4912
4820
  tabIndex: 0
4913
4821
  }, conditionformat[v.text], /*#__PURE__*/React.createElement("span", null, v.value));
@@ -4956,12 +4864,11 @@ var ConditionalFormat = function ConditionalFormat(_ref) {
4956
4864
  }), /*#__PURE__*/React.createElement("div", {
4957
4865
  className: "condition-format-sub-menu",
4958
4866
  style: {
4959
- display: "none",
4960
- width: 150
4867
+ display: "none"
4961
4868
  }
4962
4869
  }, ["deleteSheetRule"].map(function (v) {
4963
4870
  return /*#__PURE__*/React.createElement("div", {
4964
- className: "condition-format-item",
4871
+ className: "condition-format-item text-body-sm color-text-default",
4965
4872
  key: v,
4966
4873
  style: {
4967
4874
  padding: "6px 10px"
@@ -6200,9 +6107,10 @@ var Toolbar = function Toolbar(_ref) {
6200
6107
  }), /*#__PURE__*/React.createElement(MenuDivider, null), /*#__PURE__*/React.createElement(Option, {
6201
6108
  key: "formula",
6202
6109
  onClick: function onClick() {
6203
- showDialog(/*#__PURE__*/React.createElement(FormulaSearch$1, {
6204
- onCancel: hideDialog
6205
- }));
6110
+ var button = document.getElementById("function-button");
6111
+ if (button) {
6112
+ button.click();
6113
+ }
6206
6114
  setOpen(false);
6207
6115
  }
6208
6116
  }, "".concat(formula.find, "...")));
@@ -6527,7 +6435,11 @@ var Toolbar = function Toolbar(_ref) {
6527
6435
  key: name,
6528
6436
  tooltip: toolbar.sortAndFilter
6529
6437
  }, function (setOpen) {
6530
- return /*#__PURE__*/React.createElement(Select, null, _items8.map(function (_ref11, index) {
6438
+ return /*#__PURE__*/React.createElement(Select, {
6439
+ style: {
6440
+ minWidth: "11.25rem"
6441
+ }
6442
+ }, _items8.map(function (_ref11, index) {
6531
6443
  var text = _ref11.text,
6532
6444
  iconId = _ref11.iconId,
6533
6445
  value = _ref11.value,
@@ -6539,10 +6451,13 @@ var Toolbar = function Toolbar(_ref) {
6539
6451
  setOpen(false);
6540
6452
  }
6541
6453
  }, /*#__PURE__*/React.createElement("div", {
6542
- className: "fortune-toolbar-menu-line"
6543
- }, text, /*#__PURE__*/React.createElement(SVGIcon, {
6454
+ className: "fortune-toolbar-menu-line gap-1",
6455
+ style: {
6456
+ justifyContent: "start"
6457
+ }
6458
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
6544
6459
  name: iconId
6545
- })))) : (/*#__PURE__*/React.createElement(MenuDivider, {
6460
+ }), text))) : (/*#__PURE__*/React.createElement(MenuDivider, {
6546
6461
  key: "divider-".concat(index)
6547
6462
  }));
6548
6463
  }));
@@ -7300,132 +7215,18 @@ var Menu = function Menu(_ref) {
7300
7215
  }, children));
7301
7216
  };
7302
7217
 
7303
- var CustomSort = function CustomSort() {
7304
- var _useState = useState([]),
7305
- _useState2 = _slicedToArray(_useState, 2),
7306
- rangeColChar = _useState2[0],
7307
- setRangeColChar = _useState2[1];
7308
- var _useState3 = useState(true),
7309
- _useState4 = _slicedToArray(_useState3, 2),
7310
- ascOrDesc = _useState4[0],
7311
- setAscOrDesc = _useState4[1];
7218
+ var ContextMenu = function ContextMenu() {
7219
+ var _useDialog = useDialog(),
7220
+ showDialog = _useDialog.showDialog;
7221
+ var containerRef = useRef(null);
7312
7222
  var _useContext = useContext(WorkbookContext),
7313
7223
  context = _useContext.context,
7314
- setContext = _useContext.setContext;
7315
- var _useState5 = useState("0"),
7316
- _useState6 = _slicedToArray(_useState5, 2),
7317
- selectedValue = _useState6[0],
7318
- setSelectedValue = _useState6[1];
7319
- var _useState7 = useState(false),
7320
- _useState8 = _slicedToArray(_useState7, 2),
7321
- isTitleChange = _useState8[0],
7322
- setIstitleChange = _useState8[1];
7323
- var _locale = locale(context),
7324
- sort = _locale.sort;
7325
- var _useDialog = useDialog(),
7326
- hideDialog = _useDialog.hideDialog;
7327
- var col_start = context.luckysheet_select_save[0].column[0];
7328
- var col_end = context.luckysheet_select_save[0].column[1];
7329
- var row_start = context.luckysheet_select_save[0].row[0];
7330
- var row_end = context.luckysheet_select_save[0].row[1];
7331
- var sheetIndex = getSheetIndex(context, context.currentSheetId);
7332
- var handleSelectChange = function handleSelectChange(event) {
7333
- setSelectedValue(event.target.value);
7334
- };
7335
- var handleRadioChange = useCallback(function (e) {
7336
- var sortValue = e.target.value;
7337
- setAscOrDesc(sortValue === "asc");
7338
- }, []);
7339
- var handleTitleChange = useCallback(function (e) {
7340
- var value = e.target.checked;
7341
- setIstitleChange(value);
7342
- }, []);
7343
- useEffect(function () {
7344
- var list = [];
7345
- if (isTitleChange) {
7346
- for (var i = col_start; i <= col_end; i += 1) {
7347
- var _context$luckysheetfi, _context$luckysheetfi2;
7348
- var cell = (_context$luckysheetfi = context.luckysheetfile[sheetIndex].data) === null || _context$luckysheetfi === void 0 ? void 0 : (_context$luckysheetfi2 = _context$luckysheetfi[row_start]) === null || _context$luckysheetfi2 === void 0 ? void 0 : _context$luckysheetfi2[i];
7349
- var colHeaderValue = (cell === null || cell === void 0 ? void 0 : cell.m) || (cell === null || cell === void 0 ? void 0 : cell.v);
7350
- if (colHeaderValue) {
7351
- list.push(colHeaderValue);
7352
- } else {
7353
- var ColumnChar = indexToColumnChar(i);
7354
- list.push("".concat(sort.columnOperation, " ").concat(ColumnChar));
7355
- }
7356
- }
7357
- } else {
7358
- for (var _i = col_start; _i <= col_end; _i += 1) {
7359
- var _ColumnChar = indexToColumnChar(_i);
7360
- list.push(_ColumnChar);
7361
- }
7362
- }
7363
- setRangeColChar(list);
7364
- }, [col_end, col_start, context.luckysheetfile, isTitleChange, row_start, sheetIndex, sort.columnOperation]);
7365
- return /*#__PURE__*/React.createElement("div", {
7366
- className: "fortune-sort"
7367
- }, /*#__PURE__*/React.createElement("div", {
7368
- className: "fortune-sort-title"
7369
- }, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("span", null, sort.sortRangeTitle), indexToColumnChar(col_start), row_start + 1, /*#__PURE__*/React.createElement("span", null, sort.sortRangeTitleTo), indexToColumnChar(col_end), row_end + 1)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
7370
- className: "fortune-sort-modal"
7371
- }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("input", {
7372
- type: "checkbox",
7373
- id: "fortune-sort-haveheader",
7374
- onChange: handleTitleChange
7375
- }), /*#__PURE__*/React.createElement("span", null, sort.hasTitle)), /*#__PURE__*/React.createElement("div", {
7376
- className: "fortune-sort-tablec"
7377
- }, /*#__PURE__*/React.createElement("table", {
7378
- cellSpacing: "0"
7379
- }, /*#__PURE__*/React.createElement("tbody", null, /*#__PURE__*/React.createElement("tr", null, /*#__PURE__*/React.createElement("td", {
7380
- style: {
7381
- width: "190px"
7382
- }
7383
- }, sort.sortBy, /*#__PURE__*/React.createElement("select", {
7384
- name: "sort_0",
7385
- onChange: handleSelectChange
7386
- }, rangeColChar.map(function (col, index) {
7387
- return /*#__PURE__*/React.createElement("option", {
7388
- value: index,
7389
- key: index
7390
- }, col);
7391
- }))), /*#__PURE__*/React.createElement("td", null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("input", {
7392
- type: "radio",
7393
- value: "asc",
7394
- defaultChecked: true,
7395
- name: "sort_0",
7396
- onChange: handleRadioChange
7397
- }), /*#__PURE__*/React.createElement("span", null, sort.asc)), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("input", {
7398
- type: "radio",
7399
- value: "desc",
7400
- name: "sort_0",
7401
- onChange: handleRadioChange
7402
- }), /*#__PURE__*/React.createElement("span", null, sort.desc))))))))), /*#__PURE__*/React.createElement("div", {
7403
- className: "fortune-sort-button"
7404
- }, /*#__PURE__*/React.createElement("div", {
7405
- className: "button-basic button-primary",
7406
- onClick: function onClick() {
7407
- setContext(function (draftCtx) {
7408
- sortSelection(draftCtx, ascOrDesc, parseInt(selectedValue, 10));
7409
- draftCtx.contextMenu = {};
7410
- });
7411
- hideDialog();
7412
- },
7413
- tabIndex: 0
7414
- }, sort.confirm)));
7415
- };
7416
-
7417
- var ContextMenu = function ContextMenu() {
7418
- var _useDialog = useDialog(),
7419
- showDialog = _useDialog.showDialog;
7420
- var containerRef = useRef(null);
7421
- var _useContext = useContext(WorkbookContext),
7422
- context = _useContext.context,
7423
- setContext = _useContext.setContext,
7424
- settings = _useContext.settings,
7425
- refs = _useContext.refs;
7426
- var contextMenu = context.contextMenu;
7427
- var _useAlert = useAlert(),
7428
- showAlert = _useAlert.showAlert;
7224
+ setContext = _useContext.setContext,
7225
+ settings = _useContext.settings,
7226
+ refs = _useContext.refs;
7227
+ var contextMenu = context.contextMenu;
7228
+ var _useAlert = useAlert(),
7229
+ showAlert = _useAlert.showAlert;
7429
7230
  var _locale = locale(context),
7430
7231
  rightclick = _locale.rightclick,
7431
7232
  drag = _locale.drag,
@@ -7439,6 +7240,65 @@ var ContextMenu = function ContextMenu() {
7439
7240
  key: "divider-".concat(i)
7440
7241
  });
7441
7242
  }
7243
+ if (name === "freeze-row") {
7244
+ var freezeState = getFreezeState(context);
7245
+ var isFrozen = freezeState.isRowFrozen;
7246
+ var isEntireRowSelected = (selection === null || selection === void 0 ? void 0 : selection.row_select) === true;
7247
+ if (!isEntireRowSelected) return null;
7248
+ return /*#__PURE__*/React.createElement(Menu, {
7249
+ key: "freeze-row",
7250
+ onClick: function onClick() {
7251
+ setContext(function (draftCtx) {
7252
+ if (isFrozen) {
7253
+ toggleFreeze(draftCtx, "unfreeze-row");
7254
+ } else {
7255
+ toggleFreeze(draftCtx, "row");
7256
+ }
7257
+ draftCtx.contextMenu = {};
7258
+ });
7259
+ }
7260
+ }, /*#__PURE__*/React.createElement("div", {
7261
+ className: "context-item"
7262
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
7263
+ name: "freeze-flv",
7264
+ width: 18,
7265
+ height: 18,
7266
+ style: {
7267
+ marginTop: "4px",
7268
+ marginRight: "4px"
7269
+ }
7270
+ }), isFrozen ? "Unfreeze row" : "Freeze to current row"));
7271
+ }
7272
+ if (name === "freeze-column") {
7273
+ var _freezeState = getFreezeState(context);
7274
+ var _isFrozen = _freezeState.isColFrozen;
7275
+ var isEntireColumnSelected = (selection === null || selection === void 0 ? void 0 : selection.column_select) === true;
7276
+ if (!isEntireColumnSelected) return null;
7277
+ return /*#__PURE__*/React.createElement(Menu, {
7278
+ key: "freeze-column",
7279
+ onClick: function onClick() {
7280
+ setContext(function (draftCtx) {
7281
+ if (_isFrozen) {
7282
+ toggleFreeze(draftCtx, "unfreeze-column");
7283
+ } else {
7284
+ toggleFreeze(draftCtx, "column");
7285
+ jfrefreshgrid(draftCtx, null, undefined, false);
7286
+ }
7287
+ draftCtx.contextMenu = {};
7288
+ });
7289
+ }
7290
+ }, /*#__PURE__*/React.createElement("div", {
7291
+ className: "context-item"
7292
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
7293
+ name: "freeze-flv",
7294
+ width: 18,
7295
+ height: 18,
7296
+ style: {
7297
+ marginTop: "4px",
7298
+ marginRight: "4px"
7299
+ }
7300
+ }), /*#__PURE__*/React.createElement("p", null, _isFrozen ? "Unfreeze column" : "Freeze to current column")));
7301
+ }
7442
7302
  if (name === "comment") {
7443
7303
  return /*#__PURE__*/React.createElement(Menu, {
7444
7304
  key: name,
@@ -7557,19 +7417,14 @@ var ContextMenu = function ContextMenu() {
7557
7417
  }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SVGIcon, {
7558
7418
  name: "insert-flv",
7559
7419
  width: 18,
7560
- height: 18,
7561
- style: {
7562
- marginRight: "8px",
7563
- position: "relative",
7564
- top: "3px"
7565
- }
7566
- }), _.startsWith((_context$lang = context.lang) !== null && _context$lang !== void 0 ? _context$lang : "", "zh") && (/*#__PURE__*/React.createElement(React.Fragment, null, rightclick.to, /*#__PURE__*/React.createElement("span", {
7420
+ height: 18
7421
+ }), /*#__PURE__*/React.createElement("div", null, _.startsWith((_context$lang = context.lang) !== null && _context$lang !== void 0 ? _context$lang : "", "zh") && (/*#__PURE__*/React.createElement(React.Fragment, null, rightclick.to, /*#__PURE__*/React.createElement("span", {
7567
7422
  className: "luckysheet-cols-rows-shift-".concat(dir)
7568
7423
  }, rightclick[dir]))), "".concat(rightclick.insert, " "), "1", /*#__PURE__*/React.createElement("span", {
7569
7424
  className: "luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel"
7570
7425
  }, " ".concat(rightclick.column, " ")), !_.startsWith((_context$lang2 = context.lang) !== null && _context$lang2 !== void 0 ? _context$lang2 : "", "zh") && (/*#__PURE__*/React.createElement("span", {
7571
7426
  className: "luckysheet-cols-rows-shift-".concat(dir)
7572
- }, rightclick[dir]))));
7427
+ }, rightclick[dir])))));
7573
7428
  });
7574
7429
  }
7575
7430
  if (name === "insert-row") {
@@ -7605,19 +7460,14 @@ var ContextMenu = function ContextMenu() {
7605
7460
  }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(SVGIcon, {
7606
7461
  name: "insert-flv",
7607
7462
  width: 18,
7608
- height: 18,
7609
- style: {
7610
- marginRight: "8px",
7611
- position: "relative",
7612
- top: "3px"
7613
- }
7614
- }), _.startsWith((_context$lang3 = context.lang) !== null && _context$lang3 !== void 0 ? _context$lang3 : "", "zh") && (/*#__PURE__*/React.createElement(React.Fragment, null, rightclick.to, /*#__PURE__*/React.createElement("span", {
7463
+ height: 18
7464
+ }), /*#__PURE__*/React.createElement("div", null, _.startsWith((_context$lang3 = context.lang) !== null && _context$lang3 !== void 0 ? _context$lang3 : "", "zh") && (/*#__PURE__*/React.createElement(React.Fragment, null, rightclick.to, /*#__PURE__*/React.createElement("span", {
7615
7465
  className: "luckysheet-cols-rows-shift-".concat(dir)
7616
7466
  }, rightclick[dir]))), "".concat(rightclick.insert, " "), "1", /*#__PURE__*/React.createElement("span", {
7617
7467
  className: "luckysheet-cols-rows-shift-word luckysheet-mousedown-cancel"
7618
7468
  }, " ".concat(rightclick.row, " ")), !_.startsWith((_context$lang4 = context.lang) !== null && _context$lang4 !== void 0 ? _context$lang4 : "", "zh") && (/*#__PURE__*/React.createElement("span", {
7619
7469
  className: "luckysheet-cols-rows-shift-".concat(dir)
7620
- }, rightclick[dir]))));
7470
+ }, rightclick[dir])))));
7621
7471
  });
7622
7472
  }
7623
7473
  if (name === "delete-column") {
@@ -7879,49 +7729,152 @@ var ContextMenu = function ContextMenu() {
7879
7729
  }
7880
7730
  }), /*#__PURE__*/React.createElement("p", null, rightclick.clearContent)));
7881
7731
  }
7882
- if (name === "orderAZ") {
7883
- return /*#__PURE__*/React.createElement(Menu, {
7884
- key: name,
7885
- onClick: function onClick() {
7886
- setContext(function (draftCtx) {
7887
- sortSelection(draftCtx, true);
7888
- draftCtx.contextMenu = {};
7889
- });
7890
- }
7891
- }, rightclick.orderAZ);
7892
- }
7893
- if (name === "orderZA") {
7894
- return /*#__PURE__*/React.createElement(Menu, {
7895
- key: name,
7896
- onClick: function onClick() {
7897
- setContext(function (draftCtx) {
7898
- sortSelection(draftCtx, false);
7899
- draftCtx.contextMenu = {};
7900
- });
7901
- }
7902
- }, rightclick.orderZA);
7903
- }
7904
7732
  if (name === "sort") {
7905
- return /*#__PURE__*/React.createElement(Menu, {
7733
+ var _locale2 = locale(context),
7734
+ sort = _locale2.sort;
7735
+ return /*#__PURE__*/React.createElement(Tippy, {
7906
7736
  key: name,
7907
- onClick: function onClick() {
7908
- setContext(function (draftCtx) {
7909
- showDialog(/*#__PURE__*/React.createElement(CustomSort, null));
7910
- draftCtx.contextMenu = {};
7911
- });
7737
+ placement: "right-start",
7738
+ interactive: true,
7739
+ interactiveBorder: 50,
7740
+ offset: [0, 0],
7741
+ arrow: false,
7742
+ zIndex: 3000,
7743
+ appendTo: document.body,
7744
+ content: /*#__PURE__*/React.createElement("div", {
7745
+ className: "fortune-toolbar-select",
7746
+ style: {
7747
+ minWidth: "11.25rem"
7748
+ }
7749
+ }, /*#__PURE__*/React.createElement("div", {
7750
+ className: "flex flex-col color-text-default text-body-sm"
7751
+ }, /*#__PURE__*/React.createElement(Menu, {
7752
+ onClick: function onClick() {
7753
+ setContext(function (draftCtx) {
7754
+ sortSelection(draftCtx, true);
7755
+ draftCtx.contextMenu = {};
7756
+ });
7757
+ }
7758
+ }, /*#__PURE__*/React.createElement("div", {
7759
+ className: "context-item p-2 w-full",
7760
+ style: {
7761
+ height: "40px"
7762
+ }
7763
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
7764
+ name: "sort-asc",
7765
+ width: 22,
7766
+ style: {
7767
+ marginRight: "4px"
7768
+ }
7769
+ }), /*#__PURE__*/React.createElement("p", null, sort.asc))), /*#__PURE__*/React.createElement(Menu, {
7770
+ onClick: function onClick() {
7771
+ setContext(function (draftCtx) {
7772
+ sortSelection(draftCtx, false);
7773
+ draftCtx.contextMenu = {};
7774
+ });
7775
+ }
7776
+ }, /*#__PURE__*/React.createElement("div", {
7777
+ className: "context-item p-2 w-full",
7778
+ style: {
7779
+ height: "40px"
7780
+ }
7781
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
7782
+ name: "sort-desc",
7783
+ width: 22,
7784
+ style: {
7785
+ marginRight: "4px"
7786
+ }
7787
+ }), /*#__PURE__*/React.createElement("p", null, sort.desc))))),
7788
+ trigger: "mouseenter focus",
7789
+ hideOnClick: false
7790
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement("div", {
7791
+ className: "flex items-center justify-between w-full"
7792
+ }, /*#__PURE__*/React.createElement("div", {
7793
+ className: "context-item"
7794
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
7795
+ name: "sort-flv",
7796
+ width: 18,
7797
+ height: 18,
7798
+ style: {
7799
+ marginRight: "8px"
7912
7800
  }
7913
- }, rightclick.sortSelection);
7801
+ }), /*#__PURE__*/React.createElement("p", null, rightclick.sortSelection)), /*#__PURE__*/React.createElement(SVGIcon, {
7802
+ name: "rightArrow",
7803
+ width: 18
7804
+ })))));
7914
7805
  }
7915
7806
  if (name === "filter") {
7916
- return /*#__PURE__*/React.createElement(Menu, {
7807
+ var _locale3 = locale(context),
7808
+ filter = _locale3.filter;
7809
+ return /*#__PURE__*/React.createElement(Tippy, {
7917
7810
  key: name,
7918
- onClick: function onClick() {
7919
- setContext(function (draftCtx) {
7920
- createFilter(draftCtx);
7921
- draftCtx.contextMenu = {};
7922
- });
7811
+ placement: "right-start",
7812
+ interactive: true,
7813
+ interactiveBorder: 50,
7814
+ offset: [0, 0],
7815
+ arrow: false,
7816
+ zIndex: 3000,
7817
+ appendTo: document.body,
7818
+ content: /*#__PURE__*/React.createElement("div", {
7819
+ className: "fortune-toolbar-select",
7820
+ style: {
7821
+ minWidth: "11.25rem"
7822
+ }
7823
+ }, /*#__PURE__*/React.createElement("div", {
7824
+ className: "flex flex-col color-text-default text-body-sm"
7825
+ }, /*#__PURE__*/React.createElement(Menu, {
7826
+ onClick: function onClick() {
7827
+ setContext(function (draftCtx) {
7828
+ createFilter(draftCtx);
7829
+ draftCtx.contextMenu = {};
7830
+ });
7831
+ }
7832
+ }, /*#__PURE__*/React.createElement("div", {
7833
+ className: "context-item p-2 w-full",
7834
+ style: {
7835
+ height: "40px"
7836
+ }
7837
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
7838
+ name: "filter",
7839
+ width: 22,
7840
+ style: {
7841
+ marginRight: "4px"
7842
+ }
7843
+ }), /*#__PURE__*/React.createElement("p", null, filter.filter))), /*#__PURE__*/React.createElement(Menu, {
7844
+ onClick: function onClick() {
7845
+ setContext(function (draftCtx) {
7846
+ clearFilter(draftCtx);
7847
+ draftCtx.contextMenu = {};
7848
+ });
7849
+ }
7850
+ }, /*#__PURE__*/React.createElement("div", {
7851
+ className: "context-item p-2 w-full",
7852
+ style: {
7853
+ height: "40px"
7854
+ }
7855
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
7856
+ name: "eraser",
7857
+ width: 22,
7858
+ style: {
7859
+ marginRight: "4px"
7860
+ }
7861
+ }), /*#__PURE__*/React.createElement("p", null, filter.clearFilter))))),
7862
+ trigger: "mouseenter focus",
7863
+ hideOnClick: false
7864
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement("div", {
7865
+ className: "flex items-center justify-between w-full"
7866
+ }, /*#__PURE__*/React.createElement("div", {
7867
+ className: "context-item"
7868
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
7869
+ name: "filter",
7870
+ width: 22,
7871
+ style: {
7872
+ marginRight: "4px"
7923
7873
  }
7924
- }, rightclick.filterSelection);
7874
+ }), /*#__PURE__*/React.createElement("p", null, rightclick.filterSelection)), /*#__PURE__*/React.createElement(SVGIcon, {
7875
+ name: "rightArrow",
7876
+ width: 18
7877
+ })))));
7925
7878
  }
7926
7879
  if (name === "image") {
7927
7880
  return /*#__PURE__*/React.createElement(Menu, {
@@ -7945,8 +7898,45 @@ var ContextMenu = function ContextMenu() {
7945
7898
  }
7946
7899
  }, rightclick.link);
7947
7900
  }
7901
+ if (name === "conditionFormat") {
7902
+ var closeContextMenu = function closeContextMenu() {
7903
+ return setContext(function (ctx) {
7904
+ ctx.contextMenu = {};
7905
+ });
7906
+ };
7907
+ return /*#__PURE__*/React.createElement(Tippy, {
7908
+ key: name,
7909
+ placement: "right-start",
7910
+ interactive: true,
7911
+ interactiveBorder: 50,
7912
+ offset: [0, 0],
7913
+ arrow: false,
7914
+ zIndex: 3000,
7915
+ appendTo: document.body,
7916
+ content: /*#__PURE__*/React.createElement("div", {
7917
+ style: {
7918
+ minWidth: 220
7919
+ }
7920
+ }, /*#__PURE__*/React.createElement(ConditionalFormat, {
7921
+ items: ["highlightCellRules", "itemSelectionRules", "-", "deleteRule"],
7922
+ setOpen: closeContextMenu
7923
+ })),
7924
+ trigger: "mouseenter focus",
7925
+ hideOnClick: false
7926
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Menu, null, /*#__PURE__*/React.createElement("div", {
7927
+ className: "flex items-center justify-between w-full"
7928
+ }, /*#__PURE__*/React.createElement("div", {
7929
+ className: "flex items-center gap-2"
7930
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
7931
+ name: "conditionFormat",
7932
+ width: 18
7933
+ }), /*#__PURE__*/React.createElement("p", null, rightclick.conditionFormat || "Conditional Format")), /*#__PURE__*/React.createElement(SVGIcon, {
7934
+ name: "rightArrow",
7935
+ width: 18
7936
+ })))));
7937
+ }
7948
7938
  return null;
7949
- }, [context.currentSheetId, context.lang, context.luckysheet_select_save, context.defaultrowlen, context.defaultcollen, rightclick, info, setContext, showAlert, showDialog, drag, generalDialog]);
7939
+ }, [context, setContext, refs.globalCache, rightclick, showAlert, showDialog, drag.noMulti, info.tipRowHeightLimit, info.tipColumnWidthLimit, generalDialog.partiallyError, generalDialog.readOnlyError, generalDialog.dataNullError]);
7950
7940
  useLayoutEffect(function () {
7951
7941
  var _refs$workbookContain;
7952
7942
  if (!containerRef.current) {
@@ -9214,31 +9204,41 @@ var SVGDefines = function SVGDefines(_ref) {
9214
9204
  stroke: "#535A68",
9215
9205
  strokeWidth: "1.5"
9216
9206
  })), /*#__PURE__*/React.createElement("symbol", {
9217
- viewBox: "0 0 1024 1024",
9218
- fill: "#535A68",
9219
- id: "sort-desc"
9207
+ id: "sort-desc",
9208
+ width: "18",
9209
+ height: "18",
9210
+ viewBox: "0 0 18 18",
9211
+ fill: "none"
9220
9212
  }, /*#__PURE__*/React.createElement("path", {
9221
- d: "M839.6 433.8L749 150.5c-1.2-3.9-4.8-6.5-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-0.3 0.9-0.5 1.9-0.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-0.1 2.8-0.4 2.4-0.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7 0.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2z",
9222
- "p-id": "2016"
9213
+ d: "M6.75 12.75C7.16421 12.75 7.5 13.0858 7.5 13.5C7.5 13.9142 7.16421 14.25 6.75 14.25H5.25C4.83579 14.25 4.5 13.9142 4.5 13.5C4.5 13.0858 4.83579 12.75 5.25 12.75H6.75Z",
9214
+ fill: "#363B3F"
9223
9215
  }), /*#__PURE__*/React.createElement("path", {
9224
- d: "M806.8 818.4H677.2v-0.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v0.4L587.7 828.9c-1.1 1.6-1.7 3.4-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43c0.1-5.1-4.1-9.3-9.2-9.3z",
9225
- "p-id": "2017"
9216
+ d: "M9 9.75C9.41421 9.75 9.75 10.0858 9.75 10.5C9.75 10.9142 9.41421 11.25 9 11.25H5.25C4.83579 11.25 4.5 10.9142 4.5 10.5C4.5 10.0858 4.83579 9.75 5.25 9.75H9Z",
9217
+ fill: "#363B3F"
9226
9218
  }), /*#__PURE__*/React.createElement("path", {
9227
- d: "M416 702h-76V172c0-4.4-3.6-8-8-8h-56c-4.4 0-8 3.6-8 8v530h-76c-6.7 0-10.5 7.8-6.3 13l112 141.9c3.2 4.1 9.4 4.1 12.6 0l112-141.9c4.1-5.2 0.4-13-6.3-13z",
9228
- "p-id": "2018"
9229
- })), /*#__PURE__*/React.createElement("svg", {
9230
- viewBox: "0 0 1024 1024",
9231
- fill: "#535A68",
9232
- id: "sort-asc"
9219
+ d: "M11.25 6.75C11.6642 6.75 12 7.08579 12 7.5C12 7.91421 11.6642 8.25 11.25 8.25H5.25C4.83579 8.25 4.5 7.91421 4.5 7.5C4.5 7.08579 4.83579 6.75 5.25 6.75H11.25Z",
9220
+ fill: "#363B3F"
9221
+ }), /*#__PURE__*/React.createElement("path", {
9222
+ d: "M13.5 3.75C13.9142 3.75 14.25 4.08579 14.25 4.5C14.25 4.91421 13.9142 5.25 13.5 5.25H5.25C4.83579 5.25 4.5 4.91421 4.5 4.5C4.5 4.08579 4.83579 3.75 5.25 3.75H13.5Z",
9223
+ fill: "#363B3F"
9224
+ })), /*#__PURE__*/React.createElement("symbol", {
9225
+ id: "sort-asc",
9226
+ width: "18",
9227
+ height: "18",
9228
+ viewBox: "0 0 18 18",
9229
+ fill: "none"
9233
9230
  }, /*#__PURE__*/React.createElement("path", {
9234
- d: "M839.6 433.8L749 150.5c-1.2-3.9-4.8-6.5-8.9-6.5h-77.4c-4.1 0-7.6 2.6-8.9 6.5l-91.3 283.3c-0.3 0.9-0.5 1.9-0.5 2.9 0 5.1 4.2 9.3 9.3 9.3h56.4c4.2 0 7.8-2.8 9-6.8l17.5-61.6h89l17.3 61.5c1.1 4 4.8 6.8 9 6.8h61.2c1 0 1.9-0.1 2.8-0.4 2.4-0.8 4.3-2.4 5.5-4.6 1.1-2.2 1.3-4.7 0.6-7.1zM663.3 325.5l32.8-116.9h6.3l32.1 116.9h-71.2z",
9235
- "p-id": "2263"
9231
+ d: "M13.5 12.75C13.9142 12.75 14.25 13.0858 14.25 13.5C14.25 13.9142 13.9142 14.25 13.5 14.25H5.25C4.83579 14.25 4.5 13.9142 4.5 13.5C4.5 13.0858 4.83579 12.75 5.25 12.75H13.5Z",
9232
+ fill: "#363B3F"
9233
+ }), /*#__PURE__*/React.createElement("path", {
9234
+ d: "M11.25 9.75C11.6642 9.75 12 10.0858 12 10.5C12 10.9142 11.6642 11.25 11.25 11.25H5.25C4.83579 11.25 4.5 10.9142 4.5 10.5C4.5 10.0858 4.83579 9.75 5.25 9.75H11.25Z",
9235
+ fill: "#363B3F"
9236
9236
  }), /*#__PURE__*/React.createElement("path", {
9237
- d: "M806.8 818.4H677.2v-0.4l132.6-188.9c1.1-1.6 1.7-3.4 1.7-5.4v-36.4c0-5.1-4.2-9.3-9.3-9.3h-204c-5.1 0-9.3 4.2-9.3 9.3v43c0 5.1 4.2 9.3 9.3 9.3h122.6v0.4L587.7 828.9c-1.1 1.6-1.7 3.4-1.7 5.4v36.4c0 5.1 4.2 9.3 9.3 9.3h211.4c5.1 0 9.3-4.2 9.3-9.3v-43c0.1-5.1-4.1-9.3-9.2-9.3z",
9238
- "p-id": "2264"
9237
+ d: "M9 6.75C9.41421 6.75 9.75 7.08579 9.75 7.5C9.75 7.91421 9.41421 8.25 9 8.25H5.25C4.83579 8.25 4.5 7.91421 4.5 7.5C4.5 7.08579 4.83579 6.75 5.25 6.75H9Z",
9238
+ fill: "#363B3F"
9239
9239
  }), /*#__PURE__*/React.createElement("path", {
9240
- d: "M310.3 167.1c-3.2-4.1-9.4-4.1-12.6 0L185.7 309c-4.2 5.3-0.4 13 6.3 13h76v530c0 4.4 3.6 8 8 8h56c4.4 0 8-3.6 8-8V322h76c6.7 0 10.5-7.8 6.3-13l-112-141.9z",
9241
- "p-id": "2265"
9240
+ d: "M6.75 3.75C7.16421 3.75 7.5 4.08579 7.5 4.5C7.5 4.91421 7.16421 5.25 6.75 5.25H5.25C4.83579 5.25 4.5 4.91421 4.5 4.5C4.5 4.08579 4.83579 3.75 5.25 3.75H6.75Z",
9241
+ fill: "#363B3F"
9242
9242
  })), /*#__PURE__*/React.createElement("symbol", {
9243
9243
  viewBox: "0 0 1024 1024",
9244
9244
  fill: "#535A68",
@@ -9301,13 +9301,16 @@ var SVGDefines = function SVGDefines(_ref) {
9301
9301
  d: "M4.66663 1.33334C4.66663 0.965149 4.36815 0.666672 3.99996 0.666672C3.63177 0.666672 3.33329 0.965149 3.33329 1.33334V3.33334H1.33329C0.965103 3.33334 0.666626 3.63182 0.666626 4C0.666626 4.36819 0.965103 4.66667 1.33329 4.66667H3.33329V10.6667C3.33329 11.1971 3.54401 11.7058 3.91908 12.0809C4.29415 12.456 4.80286 12.6667 5.33329 12.6667H11.3333V14.6667C11.3333 15.0349 11.6318 15.3333 12 15.3333C12.3681 15.3333 12.6666 15.0349 12.6666 14.6667V12.6667H14.6666C15.0348 12.6667 15.3333 12.3682 15.3333 12C15.3333 11.6318 15.0348 11.3333 14.6666 11.3333H12.6666V5.33334C12.6666 4.8029 12.4559 4.2942 12.0808 3.91912C11.7058 3.54405 11.1971 3.33334 10.6666 3.33334H4.66663V1.33334ZM4.66663 4.66667V10.6667C4.66663 10.8435 4.73686 11.0131 4.86189 11.1381C4.98691 11.2631 5.15648 11.3333 5.33329 11.3333H11.3333V5.33334C11.3333 5.15653 11.2631 4.98696 11.138 4.86193C11.013 4.73691 10.8434 4.66667 10.6666 4.66667H4.66663Z",
9302
9302
  fill: "#363B3F"
9303
9303
  }))), /*#__PURE__*/React.createElement("symbol", {
9304
- viewBox: "0 0 1024 1024",
9305
- fill: "#535A68",
9306
- id: "conditionFormat",
9307
- width: "20"
9304
+ width: "20",
9305
+ height: "24",
9306
+ viewBox: "0 0 16 16",
9307
+ fill: "none",
9308
+ id: "conditionFormat"
9308
9309
  }, /*#__PURE__*/React.createElement("path", {
9309
- d: "M128 128h768v768H128V128z m64 512v128h128v-128H192z m256 0v128h192v-128H448zM192 448v128h128V448H192z m0-192v128h128V256H192z m192 0v128h192V256H384z m320 384v128h128v-128h-128z m0-192v128h128V448h-128z m0-192v128h128V256h-128z",
9310
- "p-id": "1955"
9310
+ "fill-rule": "evenodd",
9311
+ "clip-rule": "evenodd",
9312
+ d: "M11.4661 0.673182C11.7715 0.703436 12.0585 0.838439 12.2773 1.0573C12.5274 1.30735 12.668 1.64638 12.668 2.00001V7.51303C12.7678 7.57076 12.861 7.64098 12.944 7.72396C13.1941 7.97401 13.3346 8.31305 13.3346 8.66667V9.33334C13.3346 9.86377 13.1238 10.3723 12.7487 10.7474C12.3736 11.1225 11.8651 11.3333 11.3346 11.3333H10.0013V13.2669C10.0012 13.7973 9.79038 14.306 9.41536 14.681C9.0403 15.056 8.53167 15.2669 8.0013 15.2669C7.47093 15.2669 6.9623 15.056 6.58724 14.681C6.21223 14.306 6.00137 13.7973 6.0013 13.2669V11.3333H4.66797C4.13754 11.3333 3.62898 11.1225 3.25391 10.7474C2.92577 10.4193 2.72324 9.98901 2.67773 9.53125L2.66797 9.33334V8.66667C2.66797 8.31305 2.80855 7.97401 3.05859 7.72396C3.14158 7.64098 3.23477 7.57076 3.33464 7.51303V2.00001C3.33464 1.64638 3.47521 1.30734 3.72526 1.0573C3.97531 0.807248 4.31435 0.666672 4.66797 0.666672H11.3346L11.4661 0.673182ZM4.0013 8.66667V9.33334L4.00456 9.39909C4.01968 9.55176 4.08719 9.69526 4.19661 9.80469C4.32164 9.92972 4.49116 10 4.66797 10H6.0013C6.35492 10 6.69396 10.1406 6.94401 10.3906C7.19406 10.6407 7.33464 10.9797 7.33464 11.3333V13.2669C7.3347 13.4436 7.40498 13.6133 7.52995 13.7383C7.65496 13.8632 7.82455 13.9336 8.0013 13.9336C8.17805 13.9336 8.34764 13.8632 8.47266 13.7383C8.59762 13.6133 8.6679 13.4436 8.66797 13.2669V11.3333C8.66797 10.9797 8.80855 10.6407 9.05859 10.3906C9.30864 10.1406 9.64768 10 10.0013 10H11.3346C11.5114 10 11.681 9.92972 11.806 9.80469C11.931 9.67967 12.0013 9.51015 12.0013 9.33334V8.66667H4.0013ZM4.66797 7.33334H11.3346V2.00001H10.0013V4C10.0013 4.36819 9.70283 4.66667 9.33463 4.66667C8.96644 4.66667 8.66797 4.36819 8.66797 4V2.00001H7.33464V2.66667C7.33464 3.03486 7.03616 3.33334 6.66797 3.33334C6.29978 3.33334 6.0013 3.03486 6.0013 2.66667V2.00001H4.66797V7.33334Z",
9313
+ fill: "#363B3F"
9311
9314
  })), /*#__PURE__*/React.createElement("symbol", {
9312
9315
  viewBox: "0 0 1024 1024",
9313
9316
  fill: "#535A68",
@@ -9413,19 +9416,29 @@ var SVGDefines = function SVGDefines(_ref) {
9413
9416
  d: "M0.728617 1.71942C0.837856 1.48397 1.07381 1.33333 1.33336 1.33333H14.6667C14.9262 1.33333 15.1622 1.48397 15.2714 1.71942C15.3807 1.95486 15.3433 2.2323 15.1757 2.43048L10 8.55077V14C10 14.2311 9.88039 14.4456 9.68385 14.5671C9.48731 14.6886 9.24188 14.6996 9.03522 14.5963L6.36855 13.263C6.1427 13.15 6.00003 12.9192 6.00003 12.6667V8.55077L0.824316 2.43048C0.656718 2.2323 0.619379 1.95486 0.728617 1.71942ZM2.77023 2.66667L7.17574 7.87618C7.27752 7.99653 7.33336 8.14905 7.33336 8.30667V12.2546L8.6667 12.9213V8.30667C8.6667 8.14905 8.72254 7.99653 8.82432 7.87618L13.2298 2.66667H2.77023Z",
9414
9417
  fill: "#363B3F"
9415
9418
  }))), /*#__PURE__*/React.createElement("symbol", {
9416
- viewBox: "0 0 1024 1024",
9417
- fill: "#535A68",
9418
- id: "filter1"
9419
+ id: "filter1",
9420
+ width: "18",
9421
+ height: "18",
9422
+ viewBox: "0 0 18 18",
9423
+ fill: "none"
9419
9424
  }, /*#__PURE__*/React.createElement("path", {
9420
- d: "M608 864C588.8 864 576 851.2 576 832L576 448c0-6.4 6.4-19.2 12.8-25.6L787.2 256c6.4-6.4 6.4-19.2 0-19.2 0-6.4-6.4-12.8-19.2-12.8L256 224c-12.8 0-19.2 6.4-19.2 12.8 0 6.4-6.4 12.8 6.4 19.2l198.4 166.4C441.6 428.8 448 441.6 448 448l0 256c0 19.2-12.8 32-32 32S384 723.2 384 704L384 460.8 198.4 307.2c-25.6-25.6-32-64-19.2-96C185.6 179.2 217.6 160 256 160L768 160c32 0 64 19.2 76.8 51.2 12.8 32 6.4 70.4-19.2 89.6l-192 160L633.6 832C640 851.2 627.2 864 608 864z",
9421
- "p-id": "43727"
9425
+ d: "M10.0149 1.5C10.4291 1.5 10.7649 1.83579 10.7649 2.25C10.7649 2.66421 10.4291 3 10.0149 3H2.24975L7.66821 8.99121L7.80004 9.15161C8.09041 9.53914 8.24953 10.0121 8.24975 10.5V15.0007L9.74902 15.75L9.74975 10.5C9.75 9.9426 9.95667 9.4046 10.3306 8.99121L11.2439 7.98047L11.2988 7.92627C11.5809 7.67149 12.0156 7.66669 12.3037 7.927C12.6108 8.20473 12.6348 8.67881 12.3572 8.98608L11.4438 9.99683L11.4431 9.99756C11.3186 10.1353 11.2499 10.3143 11.2498 10.5V15.75L11.2468 15.8452C11.2327 16.0677 11.1689 16.2847 11.0601 16.4802C10.9356 16.7036 10.756 16.8914 10.5386 17.0259C10.3211 17.1604 10.0726 17.237 9.81713 17.2485C9.5937 17.2586 9.37132 17.2188 9.16601 17.1321L9.07885 17.0918L7.57885 16.3418C7.32961 16.2172 7.11961 16.0259 6.97314 15.7888C6.84501 15.5814 6.77019 15.3462 6.75341 15.104L6.74975 15V10.5C6.7496 10.3375 6.69633 10.1801 6.5996 10.051L6.55566 9.99756L1.13647 4.00562C0.94211 3.79026 0.81445 3.52231 0.768793 3.23584C0.723182 2.94943 0.760896 2.65567 0.878656 2.39062C0.996448 2.12559 1.18922 1.90053 1.43237 1.74243C1.67547 1.58442 1.95908 1.50014 2.24902 1.5H10.0149Z",
9426
+ fill: "#363B3F"
9427
+ }), /*#__PURE__*/React.createElement("path", {
9428
+ d: "M14.2498 1.5C14.6638 1.50014 14.9998 1.83587 14.9998 2.25V3.75H16.4998C16.9138 3.75014 17.2498 4.08587 17.2498 4.5C17.2498 4.91413 16.9138 5.24986 16.4998 5.25H14.9998V6.75C14.9998 7.16413 14.6638 7.49986 14.2498 7.5C13.8355 7.5 13.4998 7.16421 13.4998 6.75V5.25H11.9998C11.5855 5.25 11.2498 4.91421 11.2498 4.5C11.2498 4.08579 11.5855 3.75 11.9998 3.75H13.4998V2.25C13.4998 1.83579 13.8355 1.5 14.2498 1.5Z",
9429
+ fill: "#363B3F"
9422
9430
  })), /*#__PURE__*/React.createElement("symbol", {
9423
- viewBox: "0 0 1024 1024",
9424
- fill: "#535A68",
9425
- id: "eraser"
9431
+ id: "eraser",
9432
+ width: "18",
9433
+ height: "18",
9434
+ viewBox: "0 0 18 18",
9435
+ fill: "none"
9426
9436
  }, /*#__PURE__*/React.createElement("path", {
9427
- d: "M596.437333 85.333333a42.837333 42.837333 0 0 0-30.549333 13.824l-469.333333 512a42.666667 42.666667 0 0 0 1.28 59.008l170.666666 170.666667A42.496 42.496 0 0 0 298.666667 853.333333h512v-85.333333h-195.669334l311.168-311.168a42.538667 42.538667 0 0 0 0-60.330667l-298.666666-298.666666A43.221333 43.221333 0 0 0 596.437333 85.333333z m-102.144 682.666667H316.330667l-129.28-129.28 268.8-293.205333 230.485333 230.485333-192.042667 192z m252.373334-252.330667l-233.130667-233.130666 85.12-92.842667L835.669333 426.666667 746.666667 515.669333z",
9428
- "p-id": "50819"
9437
+ d: "M9.39746 1.5C9.81167 1.5 10.1475 1.83579 10.1475 2.25C10.1475 2.66421 9.81167 3 9.39746 3H2.24975L7.66821 8.99121L7.80004 9.15161C8.09041 9.53914 8.24953 10.0121 8.24975 10.5V15.0007L9.74902 15.75L9.74975 10.5C9.75 9.94243 9.95719 9.40465 10.3313 8.99121L10.6506 8.63672L10.7048 8.58252C10.9867 8.32757 11.4214 8.32258 11.7097 8.58252C12.0172 8.86008 12.0415 9.33487 11.7639 9.64233L11.4438 9.99683L11.4431 9.99756C11.3186 10.1353 11.2499 10.3143 11.2498 10.5V15.75L11.2468 15.8452C11.2327 16.0677 11.1689 16.2847 11.0601 16.4802C10.9356 16.7036 10.756 16.8914 10.5386 17.0259C10.3211 17.1604 10.0726 17.237 9.81713 17.2485C9.5937 17.2586 9.37132 17.2188 9.16601 17.1321L9.07885 17.0918L7.57885 16.3418C7.32961 16.2172 7.11961 16.0259 6.97314 15.7888C6.84501 15.5814 6.77019 15.3462 6.75341 15.104L6.74975 15V10.5C6.7496 10.3375 6.69633 10.1801 6.5996 10.051L6.55566 9.99756L1.13647 4.00562C0.94211 3.79026 0.81445 3.52231 0.768793 3.23584C0.723182 2.94943 0.760896 2.65567 0.878656 2.39062C0.996448 2.12559 1.18922 1.90053 1.43237 1.74243C1.67547 1.58442 1.95908 1.50014 2.24902 1.5H9.39746Z",
9438
+ fill: "#363B3F"
9439
+ }), /*#__PURE__*/React.createElement("path", {
9440
+ d: "M11.8445 2.09473C12.1191 1.82027 12.5534 1.80323 12.8479 2.04346L12.905 2.09473L14.2498 3.43945L15.5945 2.09473L15.6516 2.04346C15.9462 1.80333 16.3805 1.82019 16.655 2.09473C16.9294 2.36928 16.9464 2.80361 16.7063 3.09814L16.655 3.15527L15.3103 4.5L16.655 5.84473L16.7063 5.90186C16.9464 6.19639 16.9294 6.63072 16.655 6.90527C16.3805 7.17981 15.9462 7.19667 15.6516 6.95654L15.5945 6.90527L14.2498 5.56055L12.905 6.90527C12.6122 7.19812 12.1374 7.19804 11.8445 6.90527C11.5516 6.61238 11.5516 6.13762 11.8445 5.84473L13.1892 4.5L11.8445 3.15527L11.7932 3.09814C11.5529 2.80356 11.5699 2.36931 11.8445 2.09473Z",
9441
+ fill: "#363B3F"
9429
9442
  })), /*#__PURE__*/React.createElement("symbol", {
9430
9443
  viewBox: "0 0 1057 1024",
9431
9444
  fill: "#535A68",
@@ -9479,12 +9492,16 @@ var SVGDefines = function SVGDefines(_ref) {
9479
9492
  fill: "",
9480
9493
  "p-id": "5612"
9481
9494
  })), /*#__PURE__*/React.createElement("symbol", {
9482
- viewBox: "0 0 1024 1024",
9483
- fill: "#A8ABB0",
9495
+ width: "16",
9496
+ height: "24",
9497
+ viewBox: "0 0 16 16",
9498
+ fill: "none",
9484
9499
  id: "rightArrow"
9485
9500
  }, /*#__PURE__*/React.createElement("path", {
9486
- d: "M781.963636 495.709091l-418.909091-323.490909c-20.945455-16.290909-37.236364-9.309091-37.236363 16.290909v646.981818c0 25.6 16.290909 32.581818 37.236363 16.290909l418.909091-323.490909c11.636364-9.309091 11.636364-23.272727 0-32.581818z",
9487
- "p-id": "5380"
9501
+ "fill-rule": "evenodd",
9502
+ "clip-rule": "evenodd",
9503
+ d: "M5.52729 3.52859C5.78764 3.26824 6.20975 3.26824 6.4701 3.52859L10.4701 7.52859C10.7305 7.78894 10.7305 8.21105 10.4701 8.4714L6.4701 12.4714C6.20975 12.7317 5.78764 12.7317 5.52729 12.4714C5.26694 12.2111 5.26694 11.7889 5.52729 11.5286L9.05589 8L5.52729 4.4714C5.26694 4.21105 5.26694 3.78894 5.52729 3.52859Z",
9504
+ fill: "#77818A"
9488
9505
  })), /*#__PURE__*/React.createElement("symbol", {
9489
9506
  viewBox: "0 0 1024 1024",
9490
9507
  id: "downArrow"
@@ -9574,6 +9591,20 @@ var SVGDefines = function SVGDefines(_ref) {
9574
9591
  "clip-rule": "evenodd",
9575
9592
  d: "M3.75 1.5C3.15326 1.5 2.58097 1.73705 2.15901 2.15901C1.73705 2.58097 1.5 3.15326 1.5 3.75V15.75C1.5 16.0533 1.68273 16.3268 1.96299 16.4429C2.24324 16.559 2.56583 16.4948 2.78033 16.2803L5.56066 13.5H14.25C14.8467 13.5 15.419 13.2629 15.841 12.841C16.2629 12.419 16.5 11.8467 16.5 11.25V3.75C16.5 3.15326 16.2629 2.58097 15.841 2.15901C15.419 1.73705 14.8467 1.5 14.25 1.5H3.75ZM3.21967 3.21967C3.36032 3.07902 3.55109 3 3.75 3H14.25C14.4489 3 14.6397 3.07902 14.7803 3.21967C14.921 3.36032 15 3.55109 15 3.75V11.25C15 11.4489 14.921 11.6397 14.7803 11.7803C14.6397 11.921 14.4489 12 14.25 12H5.25C5.05109 12 4.86032 12.079 4.71967 12.2197L3 13.9393V3.75C3 3.55109 3.07902 3.36032 3.21967 3.21967Z",
9576
9593
  fill: "#363B3F"
9594
+ }))), /*#__PURE__*/React.createElement("symbol", {
9595
+ id: "freeze-flv",
9596
+ viewBox: "0 0 24 24"
9597
+ }, /*#__PURE__*/React.createElement("svg", {
9598
+ width: "18",
9599
+ height: "16",
9600
+ viewBox: "0 0 18 16",
9601
+ fill: "none",
9602
+ xmlns: "http://www.w3.org/2000/svg"
9603
+ }, /*#__PURE__*/React.createElement("path", {
9604
+ "fill-rule": "evenodd",
9605
+ "clip-rule": "evenodd",
9606
+ d: "M13.4208 1.58557C13.6061 1.21509 13.4559 0.764586 13.0854 0.579344C12.7149 0.394102 12.2644 0.54427 12.0792 0.914754L11.4375 2.19811L11.1708 1.66475C10.9856 1.29427 10.5351 1.1441 10.1646 1.32934C9.79411 1.51459 9.64394 1.96509 9.82918 2.33557L10.599 3.87516L10.0365 5.00016H7.96353L7.40103 3.87516L8.17083 2.33557C8.35607 1.96509 8.2059 1.51459 7.83541 1.32934C7.46493 1.1441 7.01443 1.29427 6.82918 1.66475L6.5625 2.19811L5.92082 0.914754C5.73558 0.54427 5.28508 0.394102 4.91459 0.579344C4.54411 0.764586 4.39394 1.21509 4.57918 1.58557L5.22086 2.86893L4.63417 2.76226C4.22664 2.68817 3.8362 2.95847 3.7621 3.366C3.688 3.77353 3.95831 4.16397 4.36584 4.23807L6.05939 4.54598L6.66148 5.75016L5.91147 7.25016H4.49999L3.6 6.05018C3.35147 5.71881 2.88137 5.65165 2.55 5.90018C2.21863 6.14871 2.15147 6.61881 2.4 6.95018L2.62499 7.25016H1.5C1.08579 7.25016 0.75 7.58595 0.75 8.00016C0.75 8.41438 1.08579 8.75016 1.5 8.75016H2.62501L2.4 9.05018C2.15147 9.38155 2.21863 9.85165 2.55 10.1002C2.88137 10.3487 3.35147 10.2816 3.6 9.95018L4.50001 8.75016H5.91148L6.66148 10.2502L6.05938 11.4544L4.36584 11.7623C3.95831 11.8364 3.688 12.2268 3.7621 12.6344C3.8362 13.0419 4.22664 13.3122 4.63417 13.2381L5.22085 13.1314L4.57918 14.4148C4.39394 14.7852 4.54411 15.2357 4.91459 15.421C5.28508 15.6062 5.73558 15.4561 5.92082 15.0856L6.5625 13.8022L6.82918 14.3356C7.01443 14.7061 7.46493 14.8562 7.83541 14.671C8.2059 14.4858 8.35607 14.0353 8.17083 13.6648L7.40102 12.1252L7.96352 11.0002H10.0365L10.599 12.1252L9.82918 13.6648C9.64394 14.0353 9.79411 14.4858 10.1646 14.671C10.5351 14.8562 10.9856 14.7061 11.1708 14.3356L11.4375 13.8022L12.0792 15.0856C12.2644 15.4561 12.7149 15.6062 13.0854 15.421C13.4559 15.2358 13.6061 14.7853 13.4208 14.4148L12.7791 13.1314L13.3658 13.2381C13.7734 13.3122 14.1638 13.0419 14.2379 12.6344C14.312 12.2268 14.0417 11.8364 13.6342 11.7623L11.9406 11.4544L11.3385 10.2502L12.0885 8.75018H13.5L14.4 9.95018C14.6485 10.2816 15.1186 10.3487 15.45 10.1002C15.7814 9.85165 15.8485 9.38155 15.6 9.05018L15.375 8.75018H16.5C16.9142 8.75018 17.25 8.4144 17.25 8.00018C17.25 7.58597 16.9142 7.25018 16.5 7.25018H15.375L15.6 6.95018C15.8485 6.61881 15.7814 6.14871 15.45 5.90018C15.1186 5.65165 14.6485 5.71881 14.4 6.05018L13.5 7.25018H12.0885L11.3385 5.75016L11.9406 4.54599L13.6342 4.23807C14.0417 4.16397 14.312 3.77353 14.2379 3.366C14.1638 2.95847 13.7734 2.68817 13.3658 2.76226L12.7791 2.86893L13.4208 1.58557ZM7.96353 6.50016L7.21353 8.00016L7.96354 9.50018H10.0365L10.7865 8.00018L10.0365 6.50016H7.96353Z",
9607
+ fill: "#363B3F"
9577
9608
  }))), /*#__PURE__*/React.createElement("symbol", {
9578
9609
  viewBox: "0 0 1024 1024",
9579
9610
  id: "tab"
@@ -9588,6 +9619,32 @@ var SVGDefines = function SVGDefines(_ref) {
9588
9619
  d: "M844.8 896c25.6 0 51.2-19.2 51.2-51.2v-185.6h-51.2c-44.8 0-83.2-38.4-83.2-83.2s38.4-83.2 83.2-83.2h51.2V313.6c0-25.6-19.2-51.2-51.2-51.2h-134.4c0-70.4-57.6-128-128-128S448 185.6 448 256H313.6c-25.6 0-51.2 19.2-51.2 51.2V448C185.6 448 128 505.6 128 576s57.6 128 128 128v134.4c0 25.6 19.2 51.2 51.2 51.2h185.6v-51.2c0-44.8 38.4-83.2 83.2-83.2 44.8 0 83.2 38.4 83.2 83.2v57.6h185.6zM576 710.4c-70.4 0-128 57.6-128 128H307.2v-185.6H256c-44.8 0-83.2-38.4-83.2-83.2S211.2 492.8 256 492.8h51.2V307.2h185.6V256c0-44.8 38.4-83.2 83.2-83.2 44.8 0 83.2 38.4 83.2 83.2v51.2h185.6V448c-70.4 0-128 57.6-128 128s57.6 128 128 128v140.8H704c6.4-70.4-51.2-134.4-128-134.4z",
9589
9620
  fill: "",
9590
9621
  "p-id": "36983"
9622
+ })), /*#__PURE__*/React.createElement("symbol", {
9623
+ id: "sort-flv",
9624
+ width: "18",
9625
+ height: "18",
9626
+ viewBox: "0 0 18 18",
9627
+ fill: "none"
9628
+ }, /*#__PURE__*/React.createElement("path", {
9629
+ "fill-rule": "evenodd",
9630
+ "clip-rule": "evenodd",
9631
+ d: "M1.71967 11.4697C2.01256 11.1768 2.48744 11.1768 2.78033 11.4697L5.25 13.9393L7.71967 11.4697C8.01256 11.1768 8.48744 11.1768 8.78033 11.4697C9.07322 11.7626 9.07322 12.2374 8.78033 12.5303L5.78033 15.5303C5.48744 15.8232 5.01256 15.8232 4.71967 15.5303L1.71967 12.5303C1.42678 12.2374 1.42678 11.7626 1.71967 11.4697Z",
9632
+ fill: "#363B3F"
9633
+ }), /*#__PURE__*/React.createElement("path", {
9634
+ "fill-rule": "evenodd",
9635
+ "clip-rule": "evenodd",
9636
+ d: "M5.25 2.25C5.66421 2.25 6 2.58579 6 3V15C6 15.4142 5.66421 15.75 5.25 15.75C4.83579 15.75 4.5 15.4142 4.5 15V3C4.5 2.58579 4.83579 2.25 5.25 2.25Z",
9637
+ fill: "#363B3F"
9638
+ }), /*#__PURE__*/React.createElement("path", {
9639
+ "fill-rule": "evenodd",
9640
+ "clip-rule": "evenodd",
9641
+ d: "M12.2197 2.46967C12.5126 2.17678 12.9874 2.17678 13.2803 2.46967L16.2803 5.46967C16.5732 5.76256 16.5732 6.23744 16.2803 6.53033C15.9874 6.82322 15.5126 6.82322 15.2197 6.53033L12.75 4.06066L10.2803 6.53033C9.98744 6.82322 9.51256 6.82322 9.21967 6.53033C8.92678 6.23744 8.92678 5.76256 9.21967 5.46967L12.2197 2.46967Z",
9642
+ fill: "#363B3F"
9643
+ }), /*#__PURE__*/React.createElement("path", {
9644
+ "fill-rule": "evenodd",
9645
+ "clip-rule": "evenodd",
9646
+ d: "M12.75 2.25C13.1642 2.25 13.5 2.58579 13.5 3V15C13.5 15.4142 13.1642 15.75 12.75 15.75C12.3358 15.75 12 15.4142 12 15V3C12 2.58579 12.3358 2.25 12.75 2.25Z",
9647
+ fill: "#363B3F"
9591
9648
  }))));
9592
9649
  };
9593
9650
 
@@ -9882,7 +9939,7 @@ var MoreItemsContaier = function MoreItemsContaier(_ref) {
9882
9939
  }, children);
9883
9940
  };
9884
9941
 
9885
- function generateAPIs(context, setContext, handleUndo, handleRedo, settings, cellInput, scrollbarX, scrollbarY) {
9942
+ function generateAPIs(context, setContext, handleUndo, handleRedo, settings, cellInput, scrollbarX, scrollbarY, globalCache) {
9886
9943
  return {
9887
9944
  applyOp: function applyOp(ops) {
9888
9945
  setContext(function (ctx_) {
@@ -10183,6 +10240,50 @@ function generateAPIs(context, setContext, handleUndo, handleRedo, settings, cel
10183
10240
  },
10184
10241
  celldataToData: function celldataToData(celldata, rowCount, colCount) {
10185
10242
  return api.celldataToData(celldata, rowCount, colCount);
10243
+ },
10244
+ insertFunction: function insertFunction(selectedFuncIndex, filteredFunctionList, callback) {
10245
+ var _context$luckysheet_s2;
10246
+ 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];
10247
+ var row_index = last === null || last === void 0 ? void 0 : last.row_focus;
10248
+ var col_index = last === null || last === void 0 ? void 0 : last.column_focus;
10249
+ if (!last) {
10250
+ row_index = 0;
10251
+ col_index = 0;
10252
+ } else {
10253
+ if (row_index == null) {
10254
+ var _last$row2 = _slicedToArray(last.row, 1);
10255
+ row_index = _last$row2[0];
10256
+ }
10257
+ if (col_index == null) {
10258
+ var _last$column2 = _slicedToArray(last.column, 1);
10259
+ col_index = _last$column2[0];
10260
+ }
10261
+ }
10262
+ 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>");
10263
+ var _locale2 = locale(context),
10264
+ functionlist = _locale2.functionlist;
10265
+ setContext(function (ctx) {
10266
+ if (cellInput != null && globalCache != null) {
10267
+ ctx.luckysheetCellUpdate = [row_index, col_index];
10268
+ globalCache.doNotUpdateCell = true;
10269
+ cellInput.innerHTML = formulaTxt;
10270
+ var spans = cellInput.childNodes;
10271
+ if (!_.isEmpty(spans)) {
10272
+ setCaretPosition(ctx, spans[spans.length - 1], 0, 1);
10273
+ }
10274
+ ctx.functionHint = filteredFunctionList[selectedFuncIndex].n.toUpperCase();
10275
+ ctx.functionCandidates = [];
10276
+ if (_.isEmpty(ctx.formulaCache.functionlistMap)) {
10277
+ for (var i = 0; i < functionlist.length; i += 1) {
10278
+ ctx.formulaCache.functionlistMap[functionlist[i].n] = functionlist[i];
10279
+ }
10280
+ }
10281
+ callback === null || callback === void 0 ? void 0 : callback();
10282
+ }
10283
+ });
10284
+ },
10285
+ getLocaleContext: function getLocaleContext() {
10286
+ return locale(context);
10186
10287
  }
10187
10288
  };
10188
10289
  }
@@ -11390,8 +11491,8 @@ var Workbook = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
11390
11491
  };
11391
11492
  }, [onPaste]);
11392
11493
  useImperativeHandle(ref, function () {
11393
- return generateAPIs(context, setContextWithProduce, handleUndo, handleRedo, mergedSettings, cellInput.current, scrollbarX.current, scrollbarY.current);
11394
- }, [context, setContextWithProduce, handleUndo, handleRedo, mergedSettings]);
11494
+ return generateAPIs(context, setContextWithProduce, handleUndo, handleRedo, mergedSettings, cellInput.current, scrollbarX.current, scrollbarY.current, globalCache.current);
11495
+ }, [context, setContextWithProduce, handleUndo, handleRedo, mergedSettings, globalCache]);
11395
11496
  var i = getSheetIndex(context, context.currentSheetId);
11396
11497
  if (i == null) {
11397
11498
  return null;