@fileverse-dev/fortune-react 1.0.2-mod-33 → 1.0.2-mod-28-patch-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { defaultContext, defaultSettings, getSheetIndex, colLocationByIndex, fixPositionOnFrozenCells, colLocation, getFlowdata, isAllowEdit, handleColumnHeaderMouseDown, handleColSizeHandleMouseDown, handleColFreezeHandleMouseDown, handleContextMenu, selectTitlesMap, selectTitlesRange, fixColumnStyleOverflowInFreeze, rowLocationByIndex, rowLocation, handleRowHeaderMouseDown, handleRowSizeHandleMouseDown, handleRowFreezeHandleMouseDown, fixRowStyleOverflowInFreeze, locale, getStyleByCell, getCellValue, createRangeHightlight, isInlineStringCell, getInlineStringHTML, valueShowEs, escapeHTMLTag, escapeScriptTag, moveToEnd, isShowHidenCR, getrangeseleciton, cancelNormalSelected, moveHighlightCell, israngeseleciton, handleFormulaInput, onSearchDialogMoveStart, replaceAll, replace, searchAll, searchNext, normalizeSelection, scrollToHighlightCell, isLinkValid, goToLink, replaceHtml, removeHyperlink, saveHyperlink, createFilterOptions, onImageMoveStart, onImageResizeStart, showComments, setEditingComment, onCommentBoxMoveStart, confirmMessage, getRangeByTxt, getDropdownList, setCellValue, getRangetxt, setConditionRules, mergeBorder, setDropcownValue, handleCellAreaMouseDown, handleCellAreaDoubleClick, selectAll, showLinkCard, getCellRowColumn, getCellHyperlink, handleOverlayMouseMove, handleOverlayMouseUp, handleKeydownForZoom, handleOverlayTouchStart, handleOverlayTouchMove, handleOverlayTouchEnd, insertRowCol, drawArrow, onCellsMoveStart, createDropCellRange, updateContextWithSheetData, updateContextWithCanvas, initFreeze, Canvas, handleGlobalWheel, getDataArr, updateMoreCell, getRegStr, getOptionValue, getSelectRange, applyLocation, updateItem, update, normalizedCellAttr, updateFormat, handleTextSize, handleHorizontalAlign, handleVerticalAlign, handleScreenShot, showImgChooser, insertImage, editComment, deleteComment, showHideComment, showHideAllComments, newComment, handleSum, autoSelectionFormula, handleMerge, handleBorder, handleFreeze, handleSort, createFilter, clearFilter, toolbarItemSelectedFunc, toolbarItemClickHandler, handleTextColor, handleTextBackground, getInlineStringNoStyle, rangeHightlightselected, updateCell, editSheetName, cancelActiveImgItem, MAX_ZOOM_RATIO, MIN_ZOOM_RATIO, addSheet, getFreezeState, toggleFreeze, jfrefreshgrid, handleCopy, deleteRowCol, hideSelected, showSelected, api, removeActiveImage, deleteSelectedCellText, sortSelection, handleLink, handlePasteByClick, deleteSheet, opToPatch, setCaretPosition, orderbydatafiler, getFilterColumnValues, getFilterColumnColors, saveFilter, calcSelectionInfo, patchToOp, filterPatch, inverseRowColOptions, ensureSheetIndex, initSheetIndex, handleGlobalKeyDown, handlePaste, groupValuesRefresh } from '@fileverse-dev/fortune-core';
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';
@@ -801,49 +801,43 @@ var FormulaSearch = function FormulaSearch(props) {
801
801
  justifyContent: "space-between"
802
802
  }
803
803
  }, /*#__PURE__*/React.createElement("div", {
804
- className: "luckysheet-formula-search-func"
804
+ className: "luckysheet-formula-search-func text-body-sm"
805
805
  }, v.n), /*#__PURE__*/React.createElement("div", {
806
806
  style: {
807
807
  display: "flex",
808
+ justifyContent: "end",
809
+ width: "68px",
810
+ height: "20px",
811
+ alignItems: "center",
808
812
  gap: "4px"
809
813
  }
810
814
  }, v.LOGO && (/*#__PURE__*/React.createElement("img", {
811
815
  src: v.LOGO,
812
816
  alt: "Service Logo",
813
- width: 32,
814
- height: 32
817
+ style: {
818
+ width: "20px"
819
+ }
815
820
  })), v.API_KEY && (/*#__PURE__*/React.createElement("div", {
816
821
  style: {
817
822
  borderRadius: "4px",
818
- width: "20px",
819
- height: "20px",
820
- backgroundColor: "".concat(localStorage.getItem(v.API_KEY) ? "#177E23" : "#F9A92B")
821
- }
823
+ backgroundColor: "".concat(localStorage.getItem(v.API_KEY) ? "#177E23" : "#e8ebec"),
824
+ width: "16px",
825
+ height: "16px"
826
+ },
827
+ className: "flex justify-center"
822
828
  }, /*#__PURE__*/React.createElement(LucideIcon, {
823
829
  name: "Key",
824
830
  style: {
825
- color: "white"
831
+ color: localStorage.getItem(v.API_KEY) ? "white" : "#77818A",
832
+ width: "12px",
833
+ height: "12px"
826
834
  }
827
835
  }))))), /*#__PURE__*/React.createElement("div", {
828
- className: "luckysheet-formula-search-detail"
836
+ className: "luckysheet-formula-search-detail mt-1 text-helper-text-sm"
829
837
  }, v.d));
830
838
  }));
831
839
  };
832
840
 
833
- function lightenHexColor(hex) {
834
- var amount = 100;
835
- if (hex.startsWith("#")) {
836
- hex = hex.slice(1);
837
- }
838
- var r = parseInt(hex.slice(0, 2), 16);
839
- var g = parseInt(hex.slice(2, 4), 16);
840
- var b = parseInt(hex.slice(4, 6), 16);
841
- r = Math.min(255, r + amount);
842
- g = Math.min(255, g + amount);
843
- b = Math.min(255, b + amount);
844
- var newHex = "#".concat((1 << 24 | r << 16 | g << 8 | b).toString(16).slice(1).toUpperCase());
845
- return newHex;
846
- }
847
841
  var FormulaHint = function FormulaHint(props) {
848
842
  var _useContext = useContext(WorkbookContext),
849
843
  context = _useContext.context;
@@ -858,13 +852,34 @@ var FormulaHint = function FormulaHint(props) {
858
852
  _useState4 = _slicedToArray(_useState3, 2),
859
853
  showAPInput = _useState4[0],
860
854
  setShowAPInput = _useState4[1];
855
+ var _useState5 = useState(!!localStorage.getItem(fn === null || fn === void 0 ? void 0 : fn.API_KEY)),
856
+ _useState6 = _slicedToArray(_useState5, 2),
857
+ isKeyAdded = _useState6[0],
858
+ setApiKeyAdded = _useState6[1];
859
+ var _useState7 = useState(false),
860
+ _useState8 = _slicedToArray(_useState7, 2),
861
+ showFunctionBody = _useState8[0],
862
+ setShouldShowFunctionBody = _useState8[1];
863
+ useEffect(function () {
864
+ if (fn) {
865
+ setApiKeyAdded(!!localStorage.getItem(fn === null || fn === void 0 ? void 0 : fn.API_KEY));
866
+ setAPI_KEY(localStorage.getItem(fn === null || fn === void 0 ? void 0 : fn.API_KEY) || "");
867
+ setShowAPInput(!localStorage.getItem(fn === null || fn === void 0 ? void 0 : fn.API_KEY));
868
+ }
869
+ }, [fn]);
870
+ var apiKeyPlaceholder = {
871
+ ETHERSCAN_API_KEY: "Etherscan API key"
872
+ };
861
873
  if (!fn) return null;
862
874
  return /*#__PURE__*/React.createElement("div", _objectSpread2(_objectSpread2({}, props), {}, {
863
875
  id: "luckysheet-formula-help-c",
864
876
  className: "luckysheet-formula-help-c",
865
877
  style: {
866
- border: "1px solid ".concat(fn.BRAND_COLOR),
867
- backgroundColor: "".concat(fn.BRAND_COLOR ? lightenHexColor(fn.BRAND_COLOR) : "#F8F9FA")
878
+ borderWidth: "1px",
879
+ borderColor: (fn === null || fn === void 0 ? void 0 : fn.BRAND_SECONDARY_COLOR) ? fn === null || fn === void 0 ? void 0 : fn.BRAND_SECONDARY_COLOR : "#F8F9FA",
880
+ backgroundColor: "".concat(fn.BRAND_COLOR ? fn.BRAND_COLOR : "#F8F9FA"),
881
+ width: "340px",
882
+ padding: "0px"
868
883
  }
869
884
  }), /*#__PURE__*/React.createElement("div", {
870
885
  className: "luckysheet-formula-help-close",
@@ -879,17 +894,22 @@ var FormulaHint = function FormulaHint(props) {
879
894
  className: "fa fa-angle-up",
880
895
  "aria-hidden": "true"
881
896
  })), /*#__PURE__*/React.createElement("div", {
882
- className: "luckysheet-formula-help-title formula-title",
897
+ className: "flex roun items-center justify-between",
883
898
  style: {
884
- backgroundColor: "".concat(fn.BRAND_COLOR ? lightenHexColor(fn.BRAND_COLOR) : "#F8F9FA")
899
+ backgroundColor: "".concat(fn.BRAND_COLOR ? fn.BRAND_COLOR : "#F8F9FA"),
900
+ padding: "10px",
901
+ borderRadius: "10px"
885
902
  }
886
903
  }, /*#__PURE__*/React.createElement("div", {
887
- className: "luckysheet-formula-help-title-formula"
888
- }, /*#__PURE__*/React.createElement("span", {
904
+ className: " flex-grow color-text-default"
905
+ }, /*#__PURE__*/React.createElement("code", {
906
+ style: {
907
+ fontWeight: 500
908
+ },
889
909
  className: "luckysheet-arguments-help-function-name"
890
- }, fn.n), /*#__PURE__*/React.createElement("span", {
910
+ }, fn.n), /*#__PURE__*/React.createElement("code", {
891
911
  className: "luckysheet-arguments-paren"
892
- }, "("), /*#__PURE__*/React.createElement("span", {
912
+ }, "("), /*#__PURE__*/React.createElement("code", {
893
913
  className: "luckysheet-arguments-parameter-holder"
894
914
  }, fn.p.map(function (param, i) {
895
915
  var name = param.name;
@@ -899,43 +919,59 @@ var FormulaHint = function FormulaHint(props) {
899
919
  if (param.require === "o") {
900
920
  name = "[".concat(name, "]");
901
921
  }
902
- return /*#__PURE__*/React.createElement("span", {
922
+ return /*#__PURE__*/React.createElement("code", {
903
923
  className: "luckysheet-arguments-help-parameter",
904
924
  dir: "auto",
905
925
  key: name
906
926
  }, name, i !== fn.p.length - 1 && ", ");
907
- })), /*#__PURE__*/React.createElement("span", {
927
+ })), /*#__PURE__*/React.createElement("code", {
908
928
  className: "luckysheet-arguments-paren"
909
929
  }, ")")), /*#__PURE__*/React.createElement("div", {
910
930
  style: {
911
931
  display: "flex",
932
+ justifyContent: "end",
933
+ width: "68px",
934
+ height: "20px",
935
+ alignItems: "center",
912
936
  gap: "4px"
913
937
  }
914
938
  }, fn.LOGO && (/*#__PURE__*/React.createElement("img", {
915
939
  src: fn.LOGO,
916
940
  alt: "Service Logo",
917
- width: 32,
918
- height: 32
941
+ style: {
942
+ width: "20px"
943
+ }
919
944
  })), fn.API_KEY && (/*#__PURE__*/React.createElement("div", {
920
945
  style: {
921
946
  borderRadius: "4px",
922
- width: "20px",
923
- height: "20px",
924
- backgroundColor: "".concat(localStorage.getItem(fn.API_KEY) ? "#177E23" : "#F9A92B")
925
- }
947
+ backgroundColor: "".concat(isKeyAdded ? "#177E23" : "#e8ebec"),
948
+ width: "16px",
949
+ height: "16px"
950
+ },
951
+ className: "flex justify-center"
926
952
  }, /*#__PURE__*/React.createElement(LucideIcon, {
927
953
  name: "Key",
928
954
  style: {
929
- color: "white"
955
+ color: isKeyAdded ? "white" : "#77818A",
956
+ width: "12px",
957
+ height: "12px"
930
958
  }
931
- }))))), /*#__PURE__*/React.createElement("div", {
959
+ }))), /*#__PURE__*/React.createElement("div", {
960
+ onClick: function onClick() {
961
+ setShouldShowFunctionBody(!showFunctionBody);
962
+ }
963
+ }, /*#__PURE__*/React.createElement(LucideIcon, {
964
+ name: "ChevronDown",
965
+ width: 16,
966
+ height: 16
967
+ })))), showFunctionBody && (/*#__PURE__*/React.createElement("div", {
932
968
  className: "luckysheet-formula-help-content",
933
969
  style: {
934
- backgroundColor: "".concat(fn.BRAND_COLOR ? lightenHexColor(fn.BRAND_COLOR) : "#F8F9FA")
970
+ backgroundColor: "".concat(fn.BRAND_COLOR ? fn.BRAND_COLOR : "#F8F9FA")
935
971
  }
936
972
  }, fn.API_KEY && (/*#__PURE__*/React.createElement("div", {
937
973
  style: {
938
- borderLeft: "4px solid ".concat(API_KEY ? "#177E23" : "#fb923c"),
974
+ borderLeft: "4px solid ".concat(isKeyAdded ? "#177E23" : "#fb923c"),
939
975
  backgroundColor: "white",
940
976
  padding: "16px",
941
977
  margin: "4px 4px 0px 4px",
@@ -952,38 +988,40 @@ var FormulaHint = function FormulaHint(props) {
952
988
  }
953
989
  }, /*#__PURE__*/React.createElement("h3", {
954
990
  style: {
955
- fontSize: "14px",
956
- fontWeight: "600",
957
- color: "#1f2937",
958
991
  margin: "0 0 8px 0"
959
- }
960
- }, "API key is required"), /*#__PURE__*/React.createElement(LucideIcon, {
992
+ },
993
+ className: "text-heading-xsm color-text-default"
994
+ }, isKeyAdded ? "API key provided" : "API key is required"), /*#__PURE__*/React.createElement(LucideIcon, {
961
995
  name: "ChevronDown",
962
996
  width: 24,
963
997
  height: 24
964
998
  })), showAPInput && (/*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("p", {
965
999
  style: {
966
- color: "#6b7280",
967
1000
  margin: "0 0 16px 0"
968
- }
969
- }, "This function is require API key. Please paste it below and\n press 'Ok'."), /*#__PURE__*/React.createElement("div", {
970
- style: {
971
- display: "flex",
972
- gap: "12px"
973
- }
1001
+ },
1002
+ className: "text-body-sm color-text-default"
1003
+ }, "This function requires an API key. Please paste it below and\n press 'Ok'."), /*#__PURE__*/React.createElement("div", {
1004
+ className: "w-full"
974
1005
  }, /*#__PURE__*/React.createElement(TextField, {
975
1006
  value: API_KEY,
976
1007
  id: "function-api-key",
977
1008
  type: "text",
978
- placeholder: "API key",
1009
+ placeholder: apiKeyPlaceholder[fn.API_KEY],
979
1010
  onChange: function onChange(e) {
980
1011
  setAPI_KEY(e.target.value);
1012
+ setApiKeyAdded(false);
981
1013
  }
982
- }), /*#__PURE__*/React.createElement(Button$1, {
1014
+ }), /*#__PURE__*/React.createElement("div", {
1015
+ className: "flex justify-end mt-2"
1016
+ }, /*#__PURE__*/React.createElement(Button$1, {
983
1017
  onClick: function onClick() {
984
1018
  localStorage.setItem(fn.API_KEY, API_KEY);
985
- }
986
- }, "Ok")))))), /*#__PURE__*/React.createElement("div", {
1019
+ setApiKeyAdded(true);
1020
+ setShowAPInput(false);
1021
+ },
1022
+ disabled: !API_KEY,
1023
+ className: "min-w-[80px]"
1024
+ }, "Ok"))))))), /*#__PURE__*/React.createElement("div", {
987
1025
  style: {
988
1026
  backgroundColor: "white",
989
1027
  padding: "6px",
@@ -991,13 +1029,20 @@ var FormulaHint = function FormulaHint(props) {
991
1029
  borderRadius: "4px"
992
1030
  }
993
1031
  }, /*#__PURE__*/React.createElement("div", {
994
- className: "luckysheet-formula-help-content-example"
1032
+ className: ""
995
1033
  }, /*#__PURE__*/React.createElement("div", {
996
- className: "luckysheet-arguments-help-section-title example-title"
997
- }, formulaMore.helpExample), /*#__PURE__*/React.createElement("div", {
998
- className: "luckysheet-arguments-help-formula"
1034
+ style: {
1035
+ lineHeight: "16px",
1036
+ fontSize: "12px"
1037
+ },
1038
+ className: "text-body-sm-bold mb-1 color-text-secondary"
1039
+ }, formulaMore.helpExample), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("code", {
1040
+ style: {
1041
+ overflowWrap: "break-word"
1042
+ },
1043
+ className: "example-value-code"
999
1044
  }, /*#__PURE__*/React.createElement("span", {
1000
- className: "luckysheet-arguments-help-function-name example-value"
1045
+ className: "luckysheet-arguments-help-function-name"
1001
1046
  }, fn.n), /*#__PURE__*/React.createElement("span", {
1002
1047
  className: "luckysheet-arguments-paren"
1003
1048
  }, "("), /*#__PURE__*/React.createElement("span", {
@@ -1010,26 +1055,32 @@ var FormulaHint = function FormulaHint(props) {
1010
1055
  }, param.example, i !== fn.p.length - 1 && ", ");
1011
1056
  })), /*#__PURE__*/React.createElement("span", {
1012
1057
  className: "luckysheet-arguments-paren"
1013
- }, ")"))), /*#__PURE__*/React.createElement("div", {
1058
+ }, ")")))), /*#__PURE__*/React.createElement("div", {
1014
1059
  className: "luckysheet-formula-help-content-detail",
1015
1060
  style: {
1016
- paddingBottom: "6px"
1061
+ paddingBottom: "16px"
1017
1062
  }
1018
1063
  }, /*#__PURE__*/React.createElement("div", {
1019
- className: "luckysheet-arguments-help-section"
1064
+ className: ""
1020
1065
  }, /*#__PURE__*/React.createElement("div", {
1021
- className: "luckysheet-arguments-help-section-title luckysheet-arguments-help-parameter-name example-title"
1066
+ style: {
1067
+ lineHeight: "16px",
1068
+ fontSize: "12px",
1069
+ padding: "0px"
1070
+ },
1071
+ className: "text-body-sm-bold mb-1 mt-2 color-text-secondary"
1022
1072
  }, "About"), /*#__PURE__*/React.createElement("span", {
1023
- className: "luckysheet-arguments-help-parameter-content example-value"
1073
+ className: "luckysheet-arguments-help-parameter-content text-helper-text-sm"
1024
1074
  }, fn.d))), /*#__PURE__*/React.createElement("div", {
1075
+ style: {
1076
+ paddingTop: "16px"
1077
+ },
1025
1078
  className: "luckysheet-formula-help-content-param"
1026
1079
  }, fn.p.map(function (param) {
1027
1080
  return /*#__PURE__*/React.createElement("div", {
1028
- className: "luckysheet-arguments-help-section",
1081
+ className: "",
1029
1082
  key: param.name
1030
- }, /*#__PURE__*/React.createElement("div", {
1031
- className: "luckysheet-arguments-help-section-title example-title"
1032
- }, param.name, param.repeat === "y" && (/*#__PURE__*/React.createElement("span", {
1083
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("code", null, param.name, param.repeat === "y" && (/*#__PURE__*/React.createElement("span", {
1033
1084
  className: "luckysheet-arguments-help-argument-info example-value",
1034
1085
  style: {
1035
1086
  marginTop: "2px"
@@ -1039,15 +1090,23 @@ var FormulaHint = function FormulaHint(props) {
1039
1090
  style: {
1040
1091
  marginTop: "2px"
1041
1092
  }
1042
- }, "-[", formulaMore.allowOptionText, "]"))), /*#__PURE__*/React.createElement("span", {
1043
- className: "luckysheet-arguments-help-parameter-content example-value",
1093
+ }, "-[", formulaMore.allowOptionText, "]")))), /*#__PURE__*/React.createElement("span", {
1094
+ className: "luckysheet-arguments-help-parameter-content text-helper-text-sm",
1044
1095
  style: {
1045
1096
  marginTop: "2px"
1046
1097
  }
1047
1098
  }, param.detail));
1048
- })))), /*#__PURE__*/React.createElement("div", {
1049
- className: "luckysheet-formula-help-foot"
1050
- }));
1099
+ }))))), /*#__PURE__*/React.createElement("div", {
1100
+ style: {
1101
+ backgroundColor: "".concat(fn.BRAND_COLOR ? fn.BRAND_COLOR : "#F8F9FA"),
1102
+ padding: "8px",
1103
+ borderBottomLeftRadius: "10px",
1104
+ borderBottomRightRadius: "10px"
1105
+ },
1106
+ className: "w-full"
1107
+ }, /*#__PURE__*/React.createElement("p", {
1108
+ className: "color-text-link text-helper-text-sm"
1109
+ }, "Learn More")));
1051
1110
  };
1052
1111
 
1053
1112
  function usePrevious(value) {
@@ -1193,6 +1252,48 @@ var InputBox = function InputBox() {
1193
1252
  e.stopPropagation();
1194
1253
  }
1195
1254
  }, [getActiveFormula, setContext]);
1255
+ var selectActiveFormulaOnClick = useCallback(function (e) {
1256
+ var activeFormula = getActiveFormula();
1257
+ var formulaNameDiv = activeFormula === null || activeFormula === void 0 ? void 0 : activeFormula.querySelector(".luckysheet-formula-search-func");
1258
+ if (formulaNameDiv) {
1259
+ var formulaName = formulaNameDiv.textContent;
1260
+ var textEditor = document.getElementById("luckysheet-rich-text-editor");
1261
+ if (textEditor) {
1262
+ var _getrangeseleciton2;
1263
+ var searchTxt = ((_getrangeseleciton2 = getrangeseleciton()) === null || _getrangeseleciton2 === void 0 ? void 0 : _getrangeseleciton2.textContent) || "";
1264
+ var deleteCount = searchTxt.length;
1265
+ textEditor.focus();
1266
+ var selection = window.getSelection();
1267
+ if ((selection === null || selection === void 0 ? void 0 : selection.rangeCount) === 0) return;
1268
+ var range = selection === null || selection === void 0 ? void 0 : selection.getRangeAt(0);
1269
+ if (deleteCount !== 0 && range) {
1270
+ var startOffset = Math.max(range.startOffset - deleteCount, 0);
1271
+ var endOffset = range.startOffset;
1272
+ range.setStart(range.startContainer, startOffset);
1273
+ range.setEnd(range.startContainer, endOffset);
1274
+ range.deleteContents();
1275
+ }
1276
+ var functionStr = "<span dir=\"auto\" class=\"luckysheet-formula-text-func\">".concat(formulaName, "</span>");
1277
+ var lParStr = "<span dir=\"auto\" class=\"luckysheet-formula-text-lpar\">(</span>";
1278
+ var functionNode = new DOMParser().parseFromString(functionStr, "text/html").body.childNodes[0];
1279
+ var lParNode = new DOMParser().parseFromString(lParStr, "text/html").body.childNodes[0];
1280
+ if (range === null || range === void 0 ? void 0 : range.startContainer.parentNode) {
1281
+ range === null || range === void 0 ? void 0 : range.setStart(range.startContainer.parentNode, 1);
1282
+ }
1283
+ range === null || range === void 0 ? void 0 : range.insertNode(lParNode);
1284
+ range === null || range === void 0 ? void 0 : range.insertNode(functionNode);
1285
+ range === null || range === void 0 ? void 0 : range.collapse();
1286
+ selection === null || selection === void 0 ? void 0 : selection.removeAllRanges();
1287
+ if (range) selection === null || selection === void 0 ? void 0 : selection.addRange(range);
1288
+ setContext(function (draftCtx) {
1289
+ draftCtx.functionCandidates = [];
1290
+ draftCtx.functionHint = formulaName;
1291
+ });
1292
+ }
1293
+ e.preventDefault();
1294
+ e.stopPropagation();
1295
+ }
1296
+ }, [getActiveFormula, setContext]);
1196
1297
  var onKeyDown = useCallback(function (e) {
1197
1298
  lastKeyDownEventRef.current = new KeyboardEvent(e.type, e.nativeEvent);
1198
1299
  preText.current = inputRef.current.innerText;
@@ -1312,6 +1413,18 @@ var InputBox = function InputBox() {
1312
1413
  })), document.activeElement === inputRef.current && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(FormulaSearch, {
1313
1414
  style: {
1314
1415
  top: ((firstSelection === null || firstSelection === void 0 ? void 0 : firstSelection.height_move) || 0) + 4
1416
+ },
1417
+ onMouseOver: function onMouseOver(e) {
1418
+ if (document.getElementById("luckysheet-formula-search-c")) {
1419
+ var hoveredItem = e.target.closest(".luckysheet-formula-search-item");
1420
+ if (!hoveredItem) return;
1421
+ clearSearchItemActiveClass();
1422
+ hoveredItem.classList.add("luckysheet-formula-search-item-active");
1423
+ }
1424
+ e.preventDefault();
1425
+ },
1426
+ onClick: function onClick(e) {
1427
+ selectActiveFormulaOnClick(e);
1315
1428
  }
1316
1429
  }), /*#__PURE__*/React.createElement(FormulaHint, {
1317
1430
  style: {
@@ -1792,7 +1905,8 @@ var LinkEditCard = function LinkEditCard(_ref) {
1792
1905
  originType = _ref.originType,
1793
1906
  originAddress = _ref.originAddress,
1794
1907
  isEditing = _ref.isEditing,
1795
- position = _ref.position;
1908
+ position = _ref.position,
1909
+ selectingCellRange = _ref.selectingCellRange;
1796
1910
  var _useContext = useContext(WorkbookContext),
1797
1911
  context = _useContext.context,
1798
1912
  setContext = _useContext.setContext,
@@ -1811,24 +1925,29 @@ var LinkEditCard = function LinkEditCard(_ref) {
1811
1925
  setLinkType = _useState6[1];
1812
1926
  var _locale = locale(context),
1813
1927
  insertLink = _locale.insertLink,
1814
- linkTypeList = _locale.linkTypeList;
1928
+ linkTypeList = _locale.linkTypeList,
1929
+ button = _locale.button;
1930
+ var lastCell = useRef(normalizeSelection(context, [{
1931
+ row: [r, r],
1932
+ column: [c, c]
1933
+ }]));
1934
+ var skipCellRangeSet = useRef(true);
1815
1935
  var isLinkAddressValid = isLinkValid(context, linkType, linkAddress);
1816
- var isButtonDisabled = useMemo(function () {
1817
- if (!linkText.trim()) return true;
1818
- if (linkType === "webpage") {
1819
- return !linkAddress.trim() || !isLinkAddressValid.isValid;
1820
- }
1821
- if (linkType === "sheet") {
1822
- return !linkAddress.trim();
1823
- }
1824
- return false;
1825
- }, [linkText, linkAddress, linkType, isLinkAddressValid.isValid]);
1936
+ var tooltip = /*#__PURE__*/React.createElement("div", {
1937
+ className: "validation-input-tip"
1938
+ }, isLinkAddressValid.tooltip);
1826
1939
  var hideLinkCard = useCallback(function () {
1827
1940
  _.set(refs.globalCache, "linkCard.mouseEnter", false);
1828
1941
  setContext(function (draftCtx) {
1829
1942
  draftCtx.linkCard = undefined;
1830
1943
  });
1831
1944
  }, [refs.globalCache, setContext]);
1945
+ var setRangeModalVisible = useCallback(function (visible) {
1946
+ return setContext(function (draftCtx) {
1947
+ draftCtx.luckysheet_select_save = lastCell.current;
1948
+ if (draftCtx.linkCard != null) draftCtx.linkCard.selectingCellRange = visible;
1949
+ });
1950
+ }, [setContext]);
1832
1951
  var containerEvent = useMemo(function () {
1833
1952
  return {
1834
1953
  onMouseEnter: function onMouseEnter() {
@@ -1854,6 +1973,19 @@ var LinkEditCard = function LinkEditCard(_ref) {
1854
1973
  }
1855
1974
  };
1856
1975
  }, [refs.globalCache]);
1976
+ var renderBottomButton = useCallback(function (onOk, onCancel) {
1977
+ return /*#__PURE__*/React.createElement("div", {
1978
+ className: "button-group"
1979
+ }, /*#__PURE__*/React.createElement("div", {
1980
+ className: "button-basic button-default",
1981
+ onClick: onCancel,
1982
+ tabIndex: 0
1983
+ }, button.cancel), /*#__PURE__*/React.createElement("div", {
1984
+ className: "button-basic button-primary",
1985
+ onClick: onOk,
1986
+ tabIndex: 0
1987
+ }, button.confirm));
1988
+ }, [button]);
1857
1989
  var renderToolbarButton = useCallback(function (iconId, onClick) {
1858
1990
  return /*#__PURE__*/React.createElement("div", {
1859
1991
  className: "fortune-toolbar-button",
@@ -1872,6 +2004,23 @@ var LinkEditCard = function LinkEditCard(_ref) {
1872
2004
  setLinkText(originText);
1873
2005
  setLinkType(originType);
1874
2006
  }, [rc, originAddress, originText, originType]);
2007
+ useLayoutEffect(function () {
2008
+ if (selectingCellRange) {
2009
+ skipCellRangeSet.current = true;
2010
+ }
2011
+ }, [selectingCellRange]);
2012
+ useLayoutEffect(function () {
2013
+ if (skipCellRangeSet.current) {
2014
+ skipCellRangeSet.current = false;
2015
+ return;
2016
+ }
2017
+ if (selectingCellRange) {
2018
+ var len = _.size(context.luckysheet_select_save);
2019
+ if (len > 0) {
2020
+ setLinkAddress(getRangetxt(context, context.currentSheetId, context.luckysheet_select_save[len - 1], ""));
2021
+ }
2022
+ }
2023
+ }, [context, selectingCellRange]);
1875
2024
  if (!isEditing) {
1876
2025
  return /*#__PURE__*/React.createElement("div", _objectSpread2(_objectSpread2({}, containerEvent), {}, {
1877
2026
  onKeyDown: function onKeyDown(e) {
@@ -1912,16 +2061,69 @@ var LinkEditCard = function LinkEditCard(_ref) {
1912
2061
  });
1913
2062
  }));
1914
2063
  }
1915
- return /*#__PURE__*/React.createElement("div", _objectSpread2({
1916
- className: "fortune-link-card",
2064
+ return selectingCellRange ? (/*#__PURE__*/React.createElement("div", _objectSpread2(_objectSpread2({
2065
+ className: "fortune-link-modify-modal range-selection-modal",
2066
+ style: {
2067
+ left: position.cellLeft,
2068
+ top: position.cellBottom + 5
2069
+ }
2070
+ }, _.omit(containerEvent, ["onMouseDown", "onMouseMove", "onMouseUp"])), {}, {
2071
+ onMouseDown: function onMouseDown(e) {
2072
+ var nativeEvent = e.nativeEvent;
2073
+ onRangeSelectionModalMoveStart(context, refs.globalCache, nativeEvent);
2074
+ e.stopPropagation();
2075
+ }
2076
+ }), /*#__PURE__*/React.createElement("div", {
2077
+ className: "modal-icon-close",
2078
+ onClick: function onClick() {
2079
+ return setRangeModalVisible(false);
2080
+ },
2081
+ tabIndex: 0
2082
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
2083
+ name: "close"
2084
+ })), /*#__PURE__*/React.createElement("div", {
2085
+ className: "modal-title"
2086
+ }, insertLink.selectCellRange), /*#__PURE__*/React.createElement("input", _objectSpread2(_objectSpread2({}, containerEvent), {}, {
2087
+ className: "range-selection-input ".concat(!linkAddress || isLinkAddressValid.isValid ? "" : "error-input"),
2088
+ placeholder: insertLink.cellRangePlaceholder,
2089
+ onChange: function onChange(e) {
2090
+ return setLinkAddress(e.target.value);
2091
+ },
2092
+ value: linkAddress
2093
+ })), tooltip, /*#__PURE__*/React.createElement("div", {
2094
+ className: "modal-footer"
2095
+ }, renderBottomButton(function () {
2096
+ if (isLinkAddressValid.isValid) setRangeModalVisible(false);
2097
+ }, function () {
2098
+ setLinkAddress(originAddress);
2099
+ setRangeModalVisible(false);
2100
+ })))) : (/*#__PURE__*/React.createElement("div", _objectSpread2({
2101
+ className: "fortune-link-modify-modal",
1917
2102
  style: {
1918
2103
  left: position.cellLeft + 20,
1919
2104
  top: position.cellBottom
1920
2105
  }
1921
- }, containerEvent), /*#__PURE__*/React.createElement(Select$1, {
2106
+ }, containerEvent), /*#__PURE__*/React.createElement("div", {
2107
+ className: "fortune-link-modify-line"
2108
+ }, /*#__PURE__*/React.createElement("div", {
2109
+ className: "fortune-link-modify-title"
2110
+ }, insertLink.linkText), /*#__PURE__*/React.createElement("input", {
2111
+ className: "fortune-link-modify-input",
2112
+ spellCheck: "false",
2113
+ autoFocus: true,
2114
+ value: linkText,
2115
+ onChange: function onChange(e) {
2116
+ return setLinkText(e.target.value);
2117
+ }
2118
+ })), /*#__PURE__*/React.createElement("div", {
2119
+ className: "fortune-link-modify-line"
2120
+ }, /*#__PURE__*/React.createElement("div", {
2121
+ className: "fortune-link-modify-title"
2122
+ }, insertLink.linkType), /*#__PURE__*/React.createElement("select", {
2123
+ className: "fortune-link-modify-select",
1922
2124
  value: linkType,
1923
- onValueChange: function onValueChange(value) {
1924
- if (value === "sheet") {
2125
+ onChange: function onChange(e) {
2126
+ if (e.target.value === "sheet") {
1925
2127
  if (!linkText) {
1926
2128
  setLinkText(context.luckysheetfile[0].name);
1927
2129
  }
@@ -1929,79 +2131,65 @@ var LinkEditCard = function LinkEditCard(_ref) {
1929
2131
  } else {
1930
2132
  setLinkAddress("");
1931
2133
  }
1932
- setLinkType(value);
1933
- }
1934
- }, /*#__PURE__*/React.createElement(SelectTrigger, {
1935
- className: "fortune-link-type-select"
1936
- }, /*#__PURE__*/React.createElement(SelectValue, null)), /*#__PURE__*/React.createElement(SelectContent, {
1937
- className: "fortune-link-type-dropdown"
1938
- }, linkTypeList.filter(function (type) {
1939
- return type.value !== "cellrange";
1940
- }).map(function (type) {
1941
- return /*#__PURE__*/React.createElement(SelectItem$1, {
2134
+ if (e.target.value === "cellrange") setRangeModalVisible(true);
2135
+ setLinkType(e.target.value);
2136
+ }
2137
+ }, linkTypeList.map(function (type) {
2138
+ return /*#__PURE__*/React.createElement("option", {
1942
2139
  key: type.value,
1943
2140
  value: type.value
1944
2141
  }, type.text);
1945
2142
  }))), /*#__PURE__*/React.createElement("div", {
1946
- className: "fortune-input-with-icon"
1947
- }, /*#__PURE__*/React.createElement("div", {
1948
- className: "input-icon"
1949
- }, /*#__PURE__*/React.createElement(LucideIcon, {
1950
- name: "ALargeSmall"
1951
- })), /*#__PURE__*/React.createElement(TextField, {
1952
- placeholder: "Display text",
1953
- value: linkText,
2143
+ className: "fortune-link-modify-line"
2144
+ }, linkType === "webpage" && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
2145
+ className: "fortune-link-modify-title"
2146
+ }, insertLink.linkAddress), /*#__PURE__*/React.createElement("input", {
2147
+ className: "fortune-link-modify-input ".concat(!linkAddress || isLinkAddressValid.isValid ? "" : "error-input"),
2148
+ spellCheck: "false",
2149
+ value: linkAddress,
1954
2150
  onChange: function onChange(e) {
1955
- return setLinkText(e.target.value);
1956
- },
1957
- className: "fortune-link-input"
1958
- })), linkType === "webpage" && (/*#__PURE__*/React.createElement("div", {
1959
- className: "fortune-input-with-icon"
1960
- }, /*#__PURE__*/React.createElement("div", {
1961
- className: "input-icon"
1962
- }, /*#__PURE__*/React.createElement(SVGIcon, {
1963
- name: "link"
1964
- })), /*#__PURE__*/React.createElement(TextField, {
1965
- placeholder: "Paste URL",
2151
+ return setLinkAddress(e.target.value);
2152
+ }
2153
+ }), tooltip)), linkType === "cellrange" && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
2154
+ className: "fortune-link-modify-title"
2155
+ }, insertLink.linkCell), /*#__PURE__*/React.createElement("input", {
2156
+ className: "fortune-link-modify-input ".concat(!linkAddress || isLinkAddressValid.isValid ? "" : "error-input"),
2157
+ spellCheck: "false",
1966
2158
  value: linkAddress,
1967
2159
  onChange: function onChange(e) {
1968
2160
  return setLinkAddress(e.target.value);
2161
+ }
2162
+ }), /*#__PURE__*/React.createElement("div", {
2163
+ className: "fortune-link-modify-cell-selector",
2164
+ onClick: function onClick() {
2165
+ return setRangeModalVisible(true);
1969
2166
  },
1970
- className: "fortune-link-input ".concat(!linkAddress || isLinkAddressValid.isValid ? "" : "error-input")
1971
- }))), linkType === "sheet" && (/*#__PURE__*/React.createElement("div", {
1972
- className: "fortune-input-with-icon"
1973
- }, /*#__PURE__*/React.createElement("div", {
1974
- className: "input-icon"
2167
+ tabIndex: 0
1975
2168
  }, /*#__PURE__*/React.createElement(SVGIcon, {
1976
- name: "link"
1977
- })), /*#__PURE__*/React.createElement(Select$1, {
1978
- onValueChange: function onValueChange(value) {
1979
- if (!linkText) setLinkText(value);
1980
- setLinkAddress(value);
2169
+ name: "border-all"
2170
+ })), tooltip)), linkType === "sheet" && (/*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
2171
+ className: "fortune-link-modify-title"
2172
+ }, insertLink.linkSheet), /*#__PURE__*/React.createElement("select", {
2173
+ className: "fortune-link-modify-select",
2174
+ onChange: function onChange(e) {
2175
+ if (!linkText) setLinkText(e.target.value);
2176
+ setLinkAddress(e.target.value);
1981
2177
  },
1982
2178
  value: linkAddress
1983
- }, /*#__PURE__*/React.createElement(SelectTrigger, {
1984
- className: "fortune-sheet-select"
1985
- }, /*#__PURE__*/React.createElement(SelectValue, {
1986
- placeholder: "[Sheet name]"
1987
- })), /*#__PURE__*/React.createElement(SelectContent, {
1988
- className: "fortune-sheet-dropdown"
1989
2179
  }, context.luckysheetfile.map(function (sheet) {
1990
- return /*#__PURE__*/React.createElement(SelectItem$1, {
2180
+ return /*#__PURE__*/React.createElement("option", {
1991
2181
  key: sheet.id,
1992
2182
  value: sheet.name
1993
2183
  }, sheet.name);
1994
- }))))), /*#__PURE__*/React.createElement(Button$1, {
1995
- className: "fortune-insert-button",
1996
- disabled: isButtonDisabled,
1997
- onClick: function onClick() {
1998
- if (isButtonDisabled) return;
1999
- _.set(refs.globalCache, "linkCard.mouseEnter", false);
2000
- setContext(function (draftCtx) {
2001
- return saveHyperlink(draftCtx, r, c, linkText, linkType, linkAddress);
2002
- });
2003
- }
2004
- }, "Insert link"));
2184
+ })), tooltip))), /*#__PURE__*/React.createElement("div", {
2185
+ className: "modal-footer"
2186
+ }, renderBottomButton(function () {
2187
+ if (!isLinkAddressValid.isValid) return;
2188
+ _.set(refs.globalCache, "linkCard.mouseEnter", false);
2189
+ setContext(function (draftCtx) {
2190
+ return saveHyperlink(draftCtx, r, c, linkText, linkType, linkAddress);
2191
+ });
2192
+ }, hideLinkCard))));
2005
2193
  };
2006
2194
 
2007
2195
  var FilterOptions = function FilterOptions(_ref) {
@@ -2103,11 +2291,15 @@ var FilterOptions = function FilterOptions(_ref) {
2103
2291
  width: undefined
2104
2292
  }),
2105
2293
  className: "luckysheet-filter-options ".concat(filterParam == null ? "" : "luckysheet-filter-options-active")
2106
- }, /*#__PURE__*/React.createElement(SVGIcon, {
2107
- name: "filter",
2108
- width: 15,
2109
- height: 15
2110
- }));
2294
+ }, filterParam == null ? (/*#__PURE__*/React.createElement("div", {
2295
+ className: "caret down"
2296
+ })) : (/*#__PURE__*/React.createElement(SVGIcon, {
2297
+ name: "filter-fill-white",
2298
+ style: {
2299
+ width: 15,
2300
+ height: 15
2301
+ }
2302
+ })));
2111
2303
  })));
2112
2304
  };
2113
2305
 
@@ -3205,7 +3397,6 @@ var ConditionRules = function ConditionRules(_ref) {
3205
3397
  }, /*#__PURE__*/React.createElement("span", {
3206
3398
  id: "checkTextColor"
3207
3399
  }, /*#__PURE__*/React.createElement(Checkbox, {
3208
- className: "border-2",
3209
3400
  checked: context.conditionRules.textColor.check,
3210
3401
  onCheckedChange: function onCheckedChange(e) {
3211
3402
  var checked = e.target.checked;
@@ -3233,7 +3424,6 @@ var ConditionRules = function ConditionRules(_ref) {
3233
3424
  }, /*#__PURE__*/React.createElement("span", {
3234
3425
  id: "checkCellColor"
3235
3426
  }, /*#__PURE__*/React.createElement(Checkbox, {
3236
- className: "border-2",
3237
3427
  checked: context.conditionRules.cellColor.check,
3238
3428
  onCheckedChange: function onCheckedChange(e) {
3239
3429
  var checked = e.target.checked;
@@ -4273,8 +4463,6 @@ var Combo = function Combo(_ref) {
4273
4463
  _onClick = _ref.onClick,
4274
4464
  text = _ref.text,
4275
4465
  iconId = _ref.iconId,
4276
- _ref$showArrow = _ref.showArrow,
4277
- showArrow = _ref$showArrow === void 0 ? true : _ref$showArrow,
4278
4466
  children = _ref.children;
4279
4467
  var style = {
4280
4468
  userSelect: "none"
@@ -4291,9 +4479,12 @@ var Combo = function Combo(_ref) {
4291
4479
  setPopupPosition = _useState4[1];
4292
4480
  var popupRef = useRef(null);
4293
4481
  var buttonRef = useRef(null);
4482
+ var openState = useRef(false);
4483
+ var triggerRef = useRef(null);
4294
4484
  useOutsideClick(popupRef, function () {
4295
4485
  setOpen(false);
4296
- });
4486
+ openState.current = false;
4487
+ }, [], triggerRef);
4297
4488
  useLayoutEffect(function () {
4298
4489
  if (!popupRef.current) {
4299
4490
  return;
@@ -4319,43 +4510,27 @@ var Combo = function Combo(_ref) {
4319
4510
  ref: buttonRef,
4320
4511
  className: "fortune-toolbar-combo"
4321
4512
  }, /*#__PURE__*/React.createElement("div", {
4513
+ ref: triggerRef,
4322
4514
  className: "fortune-toolbar-combo-button",
4323
4515
  onClick: function onClick(e) {
4324
- if (_onClick) {
4325
- _onClick(e);
4326
- if (!showArrow) setOpen(!open);
4327
- } else {
4328
- setOpen(!open);
4329
- }
4516
+ openState.current = !openState.current;
4517
+ setOpen(openState.current);
4518
+ if (_onClick) _onClick(e);else setOpen(openState.current);
4330
4519
  },
4331
4520
  tabIndex: 0,
4332
4521
  "data-tips": tooltip,
4333
4522
  role: "button",
4334
- "aria-label": "".concat(tooltip, ": ").concat(text !== undefined ? text : ""),
4523
+ "aria-label": tooltip,
4335
4524
  style: style
4336
4525
  }, iconId ? (/*#__PURE__*/React.createElement(SVGIcon, {
4337
4526
  name: iconId
4338
4527
  })) : (/*#__PURE__*/React.createElement("span", {
4339
4528
  className: "fortune-toolbar-combo-text"
4340
- }, text !== undefined ? text : ""))), showArrow && (/*#__PURE__*/React.createElement("div", {
4341
- className: "fortune-toolbar-combo-arrow",
4342
- onClick: function onClick() {
4343
- return setOpen(!open);
4344
- },
4345
- tabIndex: 0,
4346
- "data-tips": tooltip,
4347
- role: "button",
4348
- "aria-label": tooltip,
4349
- style: style
4350
- }, /*#__PURE__*/React.createElement(LucideIcon, {
4351
- name: "ChevronDown",
4352
- width: 14,
4353
- height: 14
4354
- }))), tooltip && /*#__PURE__*/React.createElement("div", {
4529
+ }, text))), tooltip && /*#__PURE__*/React.createElement("div", {
4355
4530
  className: "fortune-tooltip"
4356
4531
  }, tooltip)), open && (/*#__PURE__*/React.createElement("div", {
4357
4532
  ref: popupRef,
4358
- className: "fortune-toolbar-combo-popup",
4533
+ className: "fortune-toolbar-combo-popup color-text-default",
4359
4534
  style: popupPosition
4360
4535
  }, children === null || children === void 0 ? void 0 : children(setOpen))));
4361
4536
  };
@@ -5118,6 +5293,215 @@ var CustomColor = function CustomColor(_ref) {
5118
5293
  }));
5119
5294
  };
5120
5295
 
5296
+ var size = [{
5297
+ Text: "1",
5298
+ value: "Thin",
5299
+ strokeDasharray: "1,0",
5300
+ strokeWidth: "1"
5301
+ }, {
5302
+ Text: "2",
5303
+ value: "Hair",
5304
+ strokeDasharray: "1,5",
5305
+ strokeWidth: "1"
5306
+ }, {
5307
+ Text: "3",
5308
+ value: "Dotted",
5309
+ strokeDasharray: "2,5",
5310
+ strokeWidth: "2"
5311
+ }, {
5312
+ Text: "4",
5313
+ value: "Dashed",
5314
+ strokeDasharray: "5,5",
5315
+ strokeWidth: "2"
5316
+ }, {
5317
+ Text: "5",
5318
+ value: "DashDot",
5319
+ strokeDasharray: "20,5,5,10,5,5",
5320
+ strokeWidth: "2"
5321
+ }, {
5322
+ Text: "6",
5323
+ value: "DashDotDot",
5324
+ strokeDasharray: "20,5,5,5,5,10,5,5,5,5",
5325
+ strokeWidth: "2"
5326
+ }, {
5327
+ Text: "8",
5328
+ value: "Medium",
5329
+ strokeDasharray: "2,0",
5330
+ strokeWidth: "2"
5331
+ }, {
5332
+ Text: "9",
5333
+ value: "MediumDashed",
5334
+ strokeDasharray: "3,5",
5335
+ strokeWidth: "3"
5336
+ }, {
5337
+ Text: "10",
5338
+ value: "MediumDashDot",
5339
+ strokeDasharray: "20,5,5,10,5,5",
5340
+ strokeWidth: "3"
5341
+ }, {
5342
+ Text: "11",
5343
+ value: "MediumDashDotDot",
5344
+ strokeDasharray: "5,5,5,5,20,5,5,5,5,10",
5345
+ strokeWidth: "3"
5346
+ }, {
5347
+ Text: "13",
5348
+ value: "Thick",
5349
+ strokeDasharray: "2,0",
5350
+ strokeWidth: "3"
5351
+ }];
5352
+ var CustomBorder = function CustomBorder(_ref) {
5353
+ var onPick = _ref.onPick;
5354
+ var _useContext = useContext(WorkbookContext),
5355
+ context = _useContext.context,
5356
+ refs = _useContext.refs;
5357
+ var _locale = locale(context),
5358
+ border = _locale.border;
5359
+ var _useState = useState("#000000"),
5360
+ _useState2 = _slicedToArray(_useState, 2),
5361
+ changeColor = _useState2[0],
5362
+ setchangeColor = _useState2[1];
5363
+ var _useState3 = useState("1"),
5364
+ _useState4 = _slicedToArray(_useState3, 2),
5365
+ changeStyle = _useState4[0],
5366
+ setchangeStyle = _useState4[1];
5367
+ var colorRef = useRef(null);
5368
+ var styleRef = useRef(null);
5369
+ var colorPreviewRef = useRef(null);
5370
+ var _useState5 = useState(""),
5371
+ _useState6 = _slicedToArray(_useState5, 2),
5372
+ previewWith = _useState6[0],
5373
+ setPreviewWith = _useState6[1];
5374
+ var _useState7 = useState(""),
5375
+ _useState8 = _slicedToArray(_useState7, 2),
5376
+ previewdasharry = _useState8[0],
5377
+ setPreviewdasharray = _useState8[1];
5378
+ var showBorderSubMenu = useCallback(function (e) {
5379
+ var target = e.target;
5380
+ var menuItemRect = target.getBoundingClientRect();
5381
+ var subMenuItem = target.querySelector(".fortune-border-select-menu");
5382
+ if (_.isNil(subMenuItem)) return;
5383
+ subMenuItem.style.display = "block";
5384
+ var workbookContainerRect = refs.workbookContainer.current.getBoundingClientRect();
5385
+ if (workbookContainerRect.width - menuItemRect.right > parseFloat(subMenuItem.style.width.replace("px", ""))) {
5386
+ subMenuItem.style.left = "".concat(menuItemRect === null || menuItemRect === void 0 ? void 0 : menuItemRect.width, "px");
5387
+ } else {
5388
+ subMenuItem.style.left = "-".concat(subMenuItem.style.width);
5389
+ }
5390
+ }, [refs.workbookContainer]);
5391
+ var hideBorderSubMenu = useCallback(function () {
5392
+ styleRef.current.style.display = "none";
5393
+ colorRef.current.style.display = "none";
5394
+ }, []);
5395
+ var changePreviewStyle = useCallback(function (width, dasharray) {
5396
+ setPreviewWith(width);
5397
+ setPreviewdasharray(dasharray);
5398
+ }, []);
5399
+ return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
5400
+ className: "fortune-border-select-option",
5401
+ key: "borderColor",
5402
+ onMouseEnter: function onMouseEnter(e) {
5403
+ showBorderSubMenu(e);
5404
+ },
5405
+ onMouseLeave: function onMouseLeave() {
5406
+ hideBorderSubMenu();
5407
+ }
5408
+ }, /*#__PURE__*/React.createElement("div", {
5409
+ className: "fortune-toolbar-menu-line"
5410
+ }, border.borderColor, /*#__PURE__*/React.createElement(SVGIcon, {
5411
+ name: "rightArrow",
5412
+ style: {
5413
+ width: "14px"
5414
+ }
5415
+ })), /*#__PURE__*/React.createElement("div", {
5416
+ ref: colorPreviewRef,
5417
+ className: "fortune-border-color-preview",
5418
+ style: {
5419
+ backgroundColor: changeColor
5420
+ }
5421
+ }), /*#__PURE__*/React.createElement("div", {
5422
+ ref: colorRef,
5423
+ className: "fortune-border-select-menu",
5424
+ style: {
5425
+ display: "none",
5426
+ width: "166px"
5427
+ }
5428
+ }, /*#__PURE__*/React.createElement(CustomColor, {
5429
+ onCustomPick: function onCustomPick(color) {
5430
+ onPick(color, changeStyle);
5431
+ colorPreviewRef.current.style.backgroundColor = changeColor;
5432
+ setchangeColor(color);
5433
+ },
5434
+ onColorPick: function onColorPick(color) {
5435
+ onPick(color, changeStyle);
5436
+ setchangeColor(color);
5437
+ }
5438
+ }))), /*#__PURE__*/React.createElement("div", {
5439
+ className: "fortune-border-select-option",
5440
+ key: "borderStyle",
5441
+ onMouseEnter: function onMouseEnter(e) {
5442
+ showBorderSubMenu(e);
5443
+ },
5444
+ onMouseLeave: function onMouseLeave() {
5445
+ hideBorderSubMenu();
5446
+ }
5447
+ }, /*#__PURE__*/React.createElement("div", {
5448
+ className: "fortune-toolbar-menu-line"
5449
+ }, border.borderStyle, /*#__PURE__*/React.createElement(SVGIcon, {
5450
+ name: "rightArrow",
5451
+ style: {
5452
+ width: "14px"
5453
+ }
5454
+ })), /*#__PURE__*/React.createElement("div", {
5455
+ className: "fortune-border-style-preview"
5456
+ }, /*#__PURE__*/React.createElement("svg", {
5457
+ width: "90"
5458
+ }, /*#__PURE__*/React.createElement("g", {
5459
+ fill: "none",
5460
+ stroke: "black",
5461
+ strokeWidth: previewWith
5462
+ }, /*#__PURE__*/React.createElement("path", {
5463
+ strokeDasharray: previewdasharry,
5464
+ d: "M0 0 l90 0"
5465
+ })))), /*#__PURE__*/React.createElement("div", {
5466
+ ref: styleRef,
5467
+ className: "fortune-border-select-menu fortune-toolbar-select",
5468
+ style: {
5469
+ display: "none",
5470
+ width: "110px"
5471
+ }
5472
+ }, /*#__PURE__*/React.createElement("div", {
5473
+ className: "fortune-border-style-picker-menu fortune-border-style-reset",
5474
+ onClick: function onClick() {
5475
+ onPick(changeColor, "1");
5476
+ changePreviewStyle("1", "1,0");
5477
+ },
5478
+ tabIndex: 0
5479
+ }, border.borderDefault), /*#__PURE__*/React.createElement("div", {
5480
+ className: "fortune-boder-style-picker"
5481
+ }, size.map(function (items, i) {
5482
+ return /*#__PURE__*/React.createElement("div", {
5483
+ key: i,
5484
+ className: "fortune-border-style-picker-menu",
5485
+ onClick: function onClick() {
5486
+ onPick(changeColor, items.Text);
5487
+ setchangeStyle(items.Text);
5488
+ changePreviewStyle(items.strokeWidth, items.strokeDasharray);
5489
+ },
5490
+ tabIndex: 0
5491
+ }, /*#__PURE__*/React.createElement("svg", {
5492
+ height: "10",
5493
+ width: "90"
5494
+ }, /*#__PURE__*/React.createElement("g", {
5495
+ fill: "none",
5496
+ stroke: "black",
5497
+ strokeWidth: items.strokeWidth
5498
+ }, /*#__PURE__*/React.createElement("path", {
5499
+ strokeDasharray: items.strokeDasharray,
5500
+ d: "M0 5 l85 0"
5501
+ }))));
5502
+ })))));
5503
+ };
5504
+
5121
5505
  var FormatSearch = function FormatSearch(_ref) {
5122
5506
  var type = _ref.type,
5123
5507
  _onCancel = _ref.onCancel;
@@ -5400,7 +5784,6 @@ var Toolbar = function Toolbar(_ref) {
5400
5784
  }), /*#__PURE__*/React.createElement(Combo, {
5401
5785
  iconId: name,
5402
5786
  tooltip: tooltip,
5403
- showArrow: false,
5404
5787
  onClick: function onClick() {
5405
5788
  var color = name === "font-color" ? refs.globalCache.recentTextColor : refs.globalCache.recentBackgroundColor;
5406
5789
  if (color) pick(color);
@@ -5433,8 +5816,7 @@ var Toolbar = function Toolbar(_ref) {
5433
5816
  return /*#__PURE__*/React.createElement(Combo, {
5434
5817
  text: currentFmt,
5435
5818
  key: name,
5436
- tooltip: tooltip,
5437
- showArrow: false
5819
+ tooltip: tooltip
5438
5820
  }, function (setOpen) {
5439
5821
  return /*#__PURE__*/React.createElement(Select, null, defaultFormat.map(function (_ref2, ii) {
5440
5822
  var text = _ref2.text,
@@ -5518,8 +5900,7 @@ var Toolbar = function Toolbar(_ref) {
5518
5900
  return /*#__PURE__*/React.createElement(Combo, {
5519
5901
  text: current,
5520
5902
  key: name,
5521
- tooltip: tooltip,
5522
- showArrow: false
5903
+ tooltip: tooltip
5523
5904
  }, function (setOpen) {
5524
5905
  return /*#__PURE__*/React.createElement(Select, null, fontarray.map(function (o) {
5525
5906
  return /*#__PURE__*/React.createElement(Option, {
@@ -5541,8 +5922,7 @@ var Toolbar = function Toolbar(_ref) {
5541
5922
  return /*#__PURE__*/React.createElement(Combo, {
5542
5923
  text: cell ? normalizedCellAttr(cell, "fs", context.defaultFontSize) : context.defaultFontSize.toString(),
5543
5924
  key: name,
5544
- tooltip: tooltip,
5545
- showArrow: false
5925
+ tooltip: tooltip
5546
5926
  }, function (setOpen) {
5547
5927
  return /*#__PURE__*/React.createElement(Select, null, [9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72].map(function (num) {
5548
5928
  return /*#__PURE__*/React.createElement(Option, {
@@ -5577,8 +5957,7 @@ var Toolbar = function Toolbar(_ref) {
5577
5957
  return "".concat(item.value) === "".concat(cell === null || cell === void 0 ? void 0 : cell.ht);
5578
5958
  })) === null || _$find === void 0 ? void 0 : _$find.title) || "align-left",
5579
5959
  key: name,
5580
- tooltip: toolbar.horizontalAlign,
5581
- showArrow: false
5960
+ tooltip: toolbar.horizontalAlign
5582
5961
  }, function (setOpen) {
5583
5962
  return /*#__PURE__*/React.createElement(Select, null, items.map(function (_ref3) {
5584
5963
  var text = _ref3.text,
@@ -5619,8 +5998,7 @@ var Toolbar = function Toolbar(_ref) {
5619
5998
  return "".concat(item.value) === "".concat(cell === null || cell === void 0 ? void 0 : cell.vt);
5620
5999
  })) === null || _$find2 === void 0 ? void 0 : _$find2.title) || "align-top",
5621
6000
  key: name,
5622
- tooltip: toolbar.verticalAlign,
5623
- showArrow: false
6001
+ tooltip: toolbar.verticalAlign
5624
6002
  }, function (setOpen) {
5625
6003
  return /*#__PURE__*/React.createElement(Select, null, _items.map(function (_ref4) {
5626
6004
  var text = _ref4.text,
@@ -5745,8 +6123,7 @@ var Toolbar = function Toolbar(_ref) {
5745
6123
  return /*#__PURE__*/React.createElement(Combo, {
5746
6124
  iconId: "locationCondition",
5747
6125
  key: name,
5748
- tooltip: findAndReplace.location,
5749
- showArrow: false
6126
+ tooltip: findAndReplace.location
5750
6127
  }, function (setOpen) {
5751
6128
  return /*#__PURE__*/React.createElement(Select, null, _items2.map(function (_ref5) {
5752
6129
  var text = _ref5.text,
@@ -5831,8 +6208,7 @@ var Toolbar = function Toolbar(_ref) {
5831
6208
  return /*#__PURE__*/React.createElement(Combo, {
5832
6209
  iconId: "conditionFormat",
5833
6210
  key: name,
5834
- tooltip: toolbar.conditionalFormat,
5835
- showArrow: false
6211
+ tooltip: toolbar.conditionalFormat
5836
6212
  }, function (setOpen) {
5837
6213
  return /*#__PURE__*/React.createElement(ConditionalFormat, {
5838
6214
  items: _items3,
@@ -5929,8 +6305,7 @@ var Toolbar = function Toolbar(_ref) {
5929
6305
  return /*#__PURE__*/React.createElement(Combo, {
5930
6306
  iconId: name,
5931
6307
  key: name,
5932
- tooltip: tooltip,
5933
- showArrow: false
6308
+ tooltip: tooltip
5934
6309
  }, function (setOpen) {
5935
6310
  return /*#__PURE__*/React.createElement(Select, null, itemData.map(function (_ref6) {
5936
6311
  var key = _ref6.key,
@@ -5969,7 +6344,6 @@ var Toolbar = function Toolbar(_ref) {
5969
6344
  iconId: "formula-sum",
5970
6345
  key: name,
5971
6346
  tooltip: toolbar.autoSum,
5972
- showArrow: false,
5973
6347
  onClick: function onClick() {
5974
6348
  return setContext(function (ctx) {
5975
6349
  handleSum(ctx, refs.cellInput.current, refs.fxInput.current, refs.globalCache);
@@ -6041,13 +6415,12 @@ var Toolbar = function Toolbar(_ref) {
6041
6415
  setOpen(false);
6042
6416
  }
6043
6417
  }, /*#__PURE__*/React.createElement("div", {
6418
+ className: "fortune-toolbar-menu-line"
6419
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
6420
+ name: value,
6044
6421
  style: {
6045
- display: "flex",
6046
- alignItems: "center",
6047
- gap: 6
6422
+ marginRight: 4
6048
6423
  }
6049
- }, /*#__PURE__*/React.createElement(SVGIcon, {
6050
- name: value
6051
6424
  }), text));
6052
6425
  }));
6053
6426
  });
@@ -6065,6 +6438,9 @@ var Toolbar = function Toolbar(_ref) {
6065
6438
  }, {
6066
6439
  text: border.borderRight,
6067
6440
  value: "border-right"
6441
+ }, {
6442
+ text: "",
6443
+ value: "divider"
6068
6444
  }, {
6069
6445
  text: border.borderNone,
6070
6446
  value: "border-none"
@@ -6074,6 +6450,9 @@ var Toolbar = function Toolbar(_ref) {
6074
6450
  }, {
6075
6451
  text: border.borderOutside,
6076
6452
  value: "border-outside"
6453
+ }, {
6454
+ text: "",
6455
+ value: "divider"
6077
6456
  }, {
6078
6457
  text: border.borderInside,
6079
6458
  value: "border-inside"
@@ -6086,35 +6465,44 @@ var Toolbar = function Toolbar(_ref) {
6086
6465
  }, {
6087
6466
  text: border.borderSlash,
6088
6467
  value: "border-slash"
6468
+ }, {
6469
+ text: "",
6470
+ value: "divider"
6089
6471
  }];
6090
6472
  return /*#__PURE__*/React.createElement(Combo, {
6091
6473
  iconId: "border-all",
6092
6474
  key: name,
6093
6475
  tooltip: tooltip,
6094
6476
  text: "\u8FB9\u6846\u8BBE\u7F6E",
6095
- showArrow: false,
6096
6477
  onClick: function onClick() {
6097
6478
  return setContext(function (ctx) {
6098
6479
  handleBorder(ctx, "border-all", customColor, customStyle);
6099
6480
  });
6100
6481
  }
6101
6482
  }, function (setOpen) {
6102
- return /*#__PURE__*/React.createElement("div", {
6103
- className: "fortune-toolbar-select fortune-border-grid"
6104
- }, _items4.map(function (_ref9) {
6105
- var value = _ref9.value;
6106
- return /*#__PURE__*/React.createElement("div", {
6483
+ return /*#__PURE__*/React.createElement(Select, null, _items4.map(function (_ref9, ii) {
6484
+ var text = _ref9.text,
6485
+ value = _ref9.value;
6486
+ return value !== "divider" ? (/*#__PURE__*/React.createElement(Option, {
6107
6487
  key: value,
6108
- className: "fortune-border-grid-item",
6109
6488
  onClick: function onClick() {
6110
6489
  setContext(function (ctx) {
6111
6490
  handleBorder(ctx, value, customColor, customStyle);
6112
6491
  });
6113
6492
  setOpen(false);
6114
6493
  }
6115
- }, /*#__PURE__*/React.createElement(SVGIcon, {
6494
+ }, /*#__PURE__*/React.createElement("div", {
6495
+ className: "fortune-toolbar-menu-line"
6496
+ }, text, /*#__PURE__*/React.createElement(SVGIcon, {
6116
6497
  name: value
6498
+ })))) : (/*#__PURE__*/React.createElement(MenuDivider, {
6499
+ key: ii
6117
6500
  }));
6501
+ }), /*#__PURE__*/React.createElement(CustomBorder, {
6502
+ onPick: function onPick(color, style) {
6503
+ setcustomColor(color);
6504
+ setcustomStyle(style);
6505
+ }
6118
6506
  }));
6119
6507
  });
6120
6508
  }
@@ -6136,7 +6524,6 @@ var Toolbar = function Toolbar(_ref) {
6136
6524
  iconId: "freeze-row-col",
6137
6525
  key: name,
6138
6526
  tooltip: tooltip,
6139
- showArrow: false,
6140
6527
  onClick: function onClick() {
6141
6528
  return setContext(function (ctx) {
6142
6529
  handleFreeze(ctx, "freeze-row-col");
@@ -6183,8 +6570,7 @@ var Toolbar = function Toolbar(_ref) {
6183
6570
  return /*#__PURE__*/React.createElement(Combo, {
6184
6571
  iconId: _curr.iconId,
6185
6572
  key: name,
6186
- tooltip: toolbar.textWrap,
6187
- showArrow: false
6573
+ tooltip: toolbar.textWrap
6188
6574
  }, function (setOpen) {
6189
6575
  return /*#__PURE__*/React.createElement(Select, null, _items6.map(function (_ref1) {
6190
6576
  var text = _ref1.text,
@@ -6241,8 +6627,7 @@ var Toolbar = function Toolbar(_ref) {
6241
6627
  return /*#__PURE__*/React.createElement(Combo, {
6242
6628
  iconId: _curr2.iconId,
6243
6629
  key: name,
6244
- tooltip: toolbar.textRotate,
6245
- showArrow: false
6630
+ tooltip: toolbar.textRotate
6246
6631
  }, function (setOpen) {
6247
6632
  return /*#__PURE__*/React.createElement(Select, null, _items7.map(function (_ref10) {
6248
6633
  var text = _ref10.text,
@@ -6310,8 +6695,7 @@ var Toolbar = function Toolbar(_ref) {
6310
6695
  return /*#__PURE__*/React.createElement(Combo, {
6311
6696
  iconId: "filter",
6312
6697
  key: name,
6313
- tooltip: toolbar.sortAndFilter,
6314
- showArrow: false
6698
+ tooltip: toolbar.sortAndFilter
6315
6699
  }, function (setOpen) {
6316
6700
  return /*#__PURE__*/React.createElement(Select, {
6317
6701
  style: {
@@ -6334,9 +6718,7 @@ var Toolbar = function Toolbar(_ref) {
6334
6718
  justifyContent: "start"
6335
6719
  }
6336
6720
  }, /*#__PURE__*/React.createElement(SVGIcon, {
6337
- name: iconId,
6338
- width: 24,
6339
- height: 18
6721
+ name: iconId
6340
6722
  }), text))) : (/*#__PURE__*/React.createElement(MenuDivider, {
6341
6723
  key: "divider-".concat(index)
6342
6724
  }));
@@ -6361,7 +6743,7 @@ var Toolbar = function Toolbar(_ref) {
6361
6743
  className: "fortune-toolbar",
6362
6744
  "aria-label": toolbar.toolbar
6363
6745
  }, settings.customToolbarItems.filter(function (n) {
6364
- return n.key === "import-export";
6746
+ return n.key !== "templates";
6365
6747
  }).map(function (n) {
6366
6748
  return /*#__PURE__*/React.createElement(CustomButton, {
6367
6749
  tooltip: n.tooltip,
@@ -6398,18 +6780,6 @@ var Toolbar = function Toolbar(_ref) {
6398
6780
  icon: n.icon,
6399
6781
  iconName: n.iconName
6400
6782
  }, n.children);
6401
- }), /*#__PURE__*/React.createElement(Divider, {
6402
- key: "customDivider"
6403
- }), settings.customToolbarItems.filter(function (n) {
6404
- return n.key !== "templates" && n.key !== "import-export";
6405
- }).map(function (n) {
6406
- return /*#__PURE__*/React.createElement(CustomButton, {
6407
- tooltip: n.tooltip,
6408
- onClick: n.onClick,
6409
- key: n.key,
6410
- icon: n.icon,
6411
- iconName: n.iconName
6412
- }, n.children);
6413
6783
  }));
6414
6784
  };
6415
6785
 
@@ -7654,8 +8024,7 @@ var ContextMenu = function ContextMenu() {
7654
8024
  }
7655
8025
  }, /*#__PURE__*/React.createElement(SVGIcon, {
7656
8026
  name: "sort-asc",
7657
- width: 24,
7658
- height: 18,
8027
+ width: 22,
7659
8028
  style: {
7660
8029
  marginRight: "4px"
7661
8030
  }
@@ -7673,8 +8042,7 @@ var ContextMenu = function ContextMenu() {
7673
8042
  }
7674
8043
  }, /*#__PURE__*/React.createElement(SVGIcon, {
7675
8044
  name: "sort-desc",
7676
- width: 24,
7677
- height: 18,
8045
+ width: 22,
7678
8046
  style: {
7679
8047
  marginRight: "4px"
7680
8048
  }
@@ -7730,7 +8098,7 @@ var ContextMenu = function ContextMenu() {
7730
8098
  }
7731
8099
  }, /*#__PURE__*/React.createElement(SVGIcon, {
7732
8100
  name: "filter",
7733
- width: 24,
8101
+ width: 22,
7734
8102
  style: {
7735
8103
  marginRight: "4px"
7736
8104
  }
@@ -7748,11 +8116,9 @@ var ContextMenu = function ContextMenu() {
7748
8116
  }
7749
8117
  }, /*#__PURE__*/React.createElement(SVGIcon, {
7750
8118
  name: "eraser",
7751
- width: 24,
7752
- height: 22,
8119
+ width: 22,
7753
8120
  style: {
7754
- marginRight: "4px",
7755
- marginLeft: "2px"
8121
+ marginRight: "4px"
7756
8122
  }
7757
8123
  }), /*#__PURE__*/React.createElement("p", null, filter.clearFilter))))),
7758
8124
  trigger: "mouseenter focus",
@@ -7763,7 +8129,7 @@ var ContextMenu = function ContextMenu() {
7763
8129
  className: "context-item"
7764
8130
  }, /*#__PURE__*/React.createElement(SVGIcon, {
7765
8131
  name: "filter",
7766
- width: 24,
8132
+ width: 22,
7767
8133
  style: {
7768
8134
  marginRight: "4px"
7769
8135
  }
@@ -10187,24 +10553,23 @@ function generateAPIs(context, setContext, handleUndo, handleRedo, settings, cel
10187
10553
  var SelectItem = function SelectItem(_ref) {
10188
10554
  var item = _ref.item,
10189
10555
  isChecked = _ref.isChecked,
10190
- onChange = _ref.onChange,
10556
+ _onChange = _ref.onChange,
10191
10557
  isItemVisible = _ref.isItemVisible;
10192
10558
  var checked = useMemo(function () {
10193
10559
  return isChecked(item.key);
10194
10560
  }, [isChecked, item.key]);
10195
10561
  return isItemVisible(item) ? (/*#__PURE__*/React.createElement("div", {
10196
10562
  className: "select-item"
10197
- }, /*#__PURE__*/React.createElement("div", {
10198
- className: "flex items-center gap-2"
10199
- }, /*#__PURE__*/React.createElement(Checkbox, {
10200
- className: "border-2",
10563
+ }, /*#__PURE__*/React.createElement("input", {
10564
+ className: "filter-checkbox",
10565
+ type: "checkbox",
10201
10566
  checked: checked,
10202
- onCheckedChange: function onCheckedChange(e) {
10203
- onChange(item, e.target.checked);
10567
+ onChange: function onChange() {
10568
+ _onChange(item, !checked);
10204
10569
  }
10205
- }), /*#__PURE__*/React.createElement("span", null, item.text)), /*#__PURE__*/React.createElement("span", {
10570
+ }), /*#__PURE__*/React.createElement("div", null, item.text), /*#__PURE__*/React.createElement("span", {
10206
10571
  className: "count"
10207
- }, "".concat(item.rows.length)))) : null;
10572
+ }, "( ".concat(item.rows.length, " )")))) : null;
10208
10573
  };
10209
10574
  var _DateSelectTreeItem = function DateSelectTreeItem(_ref2) {
10210
10575
  var item = _ref2.item,
@@ -10213,7 +10578,7 @@ var _DateSelectTreeItem = function DateSelectTreeItem(_ref2) {
10213
10578
  initialExpand = _ref2.initialExpand,
10214
10579
  onExpand = _ref2.onExpand,
10215
10580
  isChecked = _ref2.isChecked,
10216
- onChange = _ref2.onChange,
10581
+ _onChange2 = _ref2.onChange,
10217
10582
  isItemVisible = _ref2.isItemVisible;
10218
10583
  var _useState = useState(initialExpand(item.key)),
10219
10584
  _useState2 = _slicedToArray(_useState, 2),
@@ -10222,43 +10587,39 @@ var _DateSelectTreeItem = function DateSelectTreeItem(_ref2) {
10222
10587
  var checked = useMemo(function () {
10223
10588
  return isChecked(item.key);
10224
10589
  }, [isChecked, item.key]);
10225
- return isItemVisible(item) ? (/*#__PURE__*/React.createElement("div", {
10226
- className: "flex flex-col gap-2"
10227
- }, /*#__PURE__*/React.createElement("div", {
10590
+ return isItemVisible(item) ? (/*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
10228
10591
  className: "select-item",
10229
10592
  style: {
10230
10593
  marginLeft: -2 + depth * 20
10231
10594
  },
10232
- tabIndex: 0
10233
- }, /*#__PURE__*/React.createElement("div", {
10234
- className: "flex items-center gap-2",
10235
- style: {
10236
- flex: 1
10595
+ onClick: function onClick() {
10596
+ onExpand === null || onExpand === void 0 ? void 0 : onExpand(item.key, !expand);
10597
+ setExpand(!expand);
10237
10598
  },
10238
- onClick: function onClick(e) {
10239
- return e.stopPropagation();
10240
- }
10599
+ tabIndex: 0
10241
10600
  }, _.isEmpty(item.children) ? (/*#__PURE__*/React.createElement("div", {
10242
10601
  style: {
10243
10602
  width: 10
10244
10603
  }
10245
- })) : (/*#__PURE__*/React.createElement(LucideIcon, {
10246
- name: expand ? "ChevronDown" : "ChevronRight",
10247
- className: "cursor-pointer",
10248
- size: "sm",
10249
- onClick: function onClick() {
10250
- onExpand === null || onExpand === void 0 ? void 0 : onExpand(item.key, !expand);
10251
- setExpand(!expand);
10604
+ })) : (/*#__PURE__*/React.createElement("div", {
10605
+ className: "filter-caret ".concat(expand ? "down" : "right"),
10606
+ style: {
10607
+ cursor: "pointer"
10252
10608
  }
10253
- })), /*#__PURE__*/React.createElement(Checkbox, {
10254
- className: "border-2",
10609
+ })), /*#__PURE__*/React.createElement("input", {
10610
+ className: "filter-checkbox",
10611
+ type: "checkbox",
10255
10612
  checked: checked,
10256
- onCheckedChange: function onCheckedChange(e) {
10257
- onChange(item, e.target.checked);
10258
- }
10259
- }), /*#__PURE__*/React.createElement("span", null, item.text)), /*#__PURE__*/React.createElement("span", {
10613
+ onChange: function onChange() {
10614
+ _onChange2(item, !checked);
10615
+ },
10616
+ onClick: function onClick(e) {
10617
+ return e.stopPropagation();
10618
+ },
10619
+ tabIndex: 0
10620
+ }), /*#__PURE__*/React.createElement("div", null, item.text), /*#__PURE__*/React.createElement("span", {
10260
10621
  className: "count"
10261
- }, "".concat(item.rows.length))), expand && item.children.map(function (v) {
10622
+ }, "( ".concat(item.rows.length, " )"))), expand && item.children.map(function (v) {
10262
10623
  return /*#__PURE__*/React.createElement(_DateSelectTreeItem, _objectSpread2({
10263
10624
  key: v.key,
10264
10625
  item: v,
@@ -10267,7 +10628,7 @@ var _DateSelectTreeItem = function DateSelectTreeItem(_ref2) {
10267
10628
  initialExpand: initialExpand,
10268
10629
  onExpand: onExpand,
10269
10630
  isChecked: isChecked,
10270
- onChange: onChange,
10631
+ onChange: _onChange2,
10271
10632
  isItemVisible: isItemVisible
10272
10633
  }));
10273
10634
  }))) : null;
@@ -10316,7 +10677,8 @@ var FilterMenu = function FilterMenu() {
10316
10677
  startCol = _ref4.startCol,
10317
10678
  endRow = _ref4.endRow,
10318
10679
  endCol = _ref4.endCol,
10319
- col = _ref4.col;
10680
+ col = _ref4.col,
10681
+ listBoxMaxHeight = _ref4.listBoxMaxHeight;
10320
10682
  var _locale = locale(context),
10321
10683
  filter = _locale.filter;
10322
10684
  var _useState3 = useState({
@@ -10391,6 +10753,25 @@ var FilterMenu = function FilterMenu() {
10391
10753
  }));
10392
10754
  }, 300);
10393
10755
  }, [data.flattenValues]);
10756
+ var selectAll = useCallback(function () {
10757
+ setDatesUncheck([]);
10758
+ setValuesUncheck([]);
10759
+ hiddenRows.current = [];
10760
+ }, []);
10761
+ var clearAll = useCallback(function () {
10762
+ setDatesUncheck(_.keys(data.dateRowMap));
10763
+ setValuesUncheck(_.keys(data.valueRowMap));
10764
+ hiddenRows.current = data.visibleRows;
10765
+ }, [data.dateRowMap, data.valueRowMap, data.visibleRows]);
10766
+ var inverseSelect = useCallback(function () {
10767
+ setDatesUncheck(produce(function (draft) {
10768
+ return _.xor(draft, _.keys(data.dateRowMap));
10769
+ }));
10770
+ setValuesUncheck(produce(function (draft) {
10771
+ return _.xor(draft, _.keys(data.valueRowMap));
10772
+ }));
10773
+ hiddenRows.current = _.xor(hiddenRows.current, data.visibleRows);
10774
+ }, [data.dateRowMap, data.valueRowMap, data.visibleRows]);
10394
10775
  var onColorSelectChange = useCallback(function (key, color, checked) {
10395
10776
  setFilterColors(produce(function (draft) {
10396
10777
  var colorData = _.find(_.get(draft, key), function (v) {
@@ -10520,12 +10901,11 @@ var FilterMenu = function FilterMenu() {
10520
10901
  ref: containerRef,
10521
10902
  style: {
10522
10903
  left: filterContextMenu.x,
10523
- top: filterContextMenu.y,
10524
- minWidth: "280px !important"
10904
+ top: filterContextMenu.y
10525
10905
  }
10526
10906
  }, (_settings$filterConte = settings.filterContextMenu) === null || _settings$filterConte === void 0 ? void 0 : _settings$filterConte.map(function (name, i) {
10527
10907
  if (name === "|") {
10528
- return /*#__PURE__*/React.createElement(Divider$2, {
10908
+ return /*#__PURE__*/React.createElement(Divider$1, {
10529
10909
  key: "divider-".concat(i)
10530
10910
  });
10531
10911
  }
@@ -10535,16 +10915,7 @@ var FilterMenu = function FilterMenu() {
10535
10915
  onClick: function onClick() {
10536
10916
  return sortData(true);
10537
10917
  }
10538
- }, /*#__PURE__*/React.createElement("div", {
10539
- className: "context-item w-full"
10540
- }, /*#__PURE__*/React.createElement(SVGIcon, {
10541
- name: "sort-asc",
10542
- width: 24,
10543
- height: 18,
10544
- style: {
10545
- marginRight: "4px"
10546
- }
10547
- }), /*#__PURE__*/React.createElement("p", null, filter.sortByAsc)));
10918
+ }, filter.sortByAsc);
10548
10919
  }
10549
10920
  if (name === "sort-by-desc") {
10550
10921
  return /*#__PURE__*/React.createElement(Menu, {
@@ -10552,16 +10923,7 @@ var FilterMenu = function FilterMenu() {
10552
10923
  onClick: function onClick() {
10553
10924
  return sortData(false);
10554
10925
  }
10555
- }, /*#__PURE__*/React.createElement("div", {
10556
- className: "context-item w-full"
10557
- }, /*#__PURE__*/React.createElement(SVGIcon, {
10558
- name: "sort-desc",
10559
- width: 24,
10560
- height: 18,
10561
- style: {
10562
- marginRight: "4px"
10563
- }
10564
- }), /*#__PURE__*/React.createElement("p", null, filter.sortByDesc)));
10926
+ }, filter.sortByDesc);
10565
10927
  }
10566
10928
  if (name === "filter-by-color") {
10567
10929
  return /*#__PURE__*/React.createElement("div", {
@@ -10589,22 +10951,72 @@ var FilterMenu = function FilterMenu() {
10589
10951
  className: "filter-caret right"
10590
10952
  }))));
10591
10953
  }
10954
+ if (name === "filter-by-condition") {
10955
+ return /*#__PURE__*/React.createElement("div", {
10956
+ key: "name"
10957
+ }, /*#__PURE__*/React.createElement(Menu, {
10958
+ onClick: function onClick() {}
10959
+ }, /*#__PURE__*/React.createElement("div", {
10960
+ className: "filter-caret right"
10961
+ }), filter.filterByCondition), /*#__PURE__*/React.createElement("div", {
10962
+ className: "luckysheet-\\${menuid}-bycondition",
10963
+ style: {
10964
+ display: "none"
10965
+ }
10966
+ }, /*#__PURE__*/React.createElement("div", {
10967
+ className: "luckysheet-flat-menu-button luckysheet-mousedown-cancel",
10968
+ id: "luckysheet-\\${menuid}-selected"
10969
+ }, /*#__PURE__*/React.createElement("span", {
10970
+ className: "luckysheet-mousedown-cancel",
10971
+ "data-value": "null",
10972
+ "data-type": "0"
10973
+ }, filter.filiterInputNone), /*#__PURE__*/React.createElement("div", {
10974
+ className: "luckysheet-mousedown-cancel"
10975
+ }, /*#__PURE__*/React.createElement("i", {
10976
+ className: "fa fa-sort",
10977
+ "aria-hidden": "true"
10978
+ })))));
10979
+ }
10592
10980
  if (name === "filter-by-value") {
10593
10981
  return /*#__PURE__*/React.createElement("div", {
10594
10982
  key: name
10983
+ }, /*#__PURE__*/React.createElement(Menu, {
10984
+ onClick: function onClick() {}
10595
10985
  }, /*#__PURE__*/React.createElement("div", {
10596
- className: "luckysheet-filter-byvalue flex flex-col gap-2 mt-2"
10986
+ className: "filter-caret right"
10987
+ }), filter.filterByValues), /*#__PURE__*/React.createElement("div", {
10988
+ className: "luckysheet-filter-byvalue"
10597
10989
  }, /*#__PURE__*/React.createElement("div", {
10990
+ className: "fortune-menuitem-row byvalue-btn-row"
10991
+ }, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", {
10992
+ className: "fortune-byvalue-btn",
10993
+ onClick: selectAll,
10994
+ tabIndex: 0
10995
+ }, filter.filterValueByAllBtn), " - ", /*#__PURE__*/React.createElement("span", {
10996
+ className: "fortune-byvalue-btn",
10997
+ onClick: clearAll,
10998
+ tabIndex: 0
10999
+ }, filter.filterValueByClearBtn), " - ", /*#__PURE__*/React.createElement("span", {
11000
+ className: "fortune-byvalue-btn",
11001
+ onClick: inverseSelect,
11002
+ tabIndex: 0
11003
+ }, filter.filterValueByInverseBtn)), /*#__PURE__*/React.createElement("div", {
11004
+ className: "byvalue-filter-icon"
11005
+ }, /*#__PURE__*/React.createElement(SVGIcon, {
11006
+ name: "filter-fill",
11007
+ style: {
11008
+ width: 20,
11009
+ height: 20
11010
+ }
11011
+ }))), /*#__PURE__*/React.createElement("div", {
10598
11012
  className: "filtermenu-input-container"
10599
- }, /*#__PURE__*/React.createElement(TextField, {
10600
- leftIcon: /*#__PURE__*/React.createElement(LucideIcon, {
10601
- name: "Search",
10602
- size: "sm"
10603
- }),
11013
+ }, /*#__PURE__*/React.createElement("input", {
11014
+ type: "text",
10604
11015
  onKeyDown: function onKeyDown(e) {
10605
11016
  return e.stopPropagation();
10606
11017
  },
10607
11018
  placeholder: filter.filterValueByTip,
11019
+ className: "luckysheet-mousedown-cancel",
10608
11020
  id: "luckysheet-\\${menuid}-byvalue-input",
10609
11021
  value: searchText,
10610
11022
  onChange: function onChange(e) {
@@ -10612,7 +11024,10 @@ var FilterMenu = function FilterMenu() {
10612
11024
  searchValues(e.target.value);
10613
11025
  }
10614
11026
  })), /*#__PURE__*/React.createElement("div", {
10615
- id: "luckysheet-filter-byvalue-select"
11027
+ id: "luckysheet-filter-byvalue-select",
11028
+ style: {
11029
+ maxHeight: listBoxMaxHeight
11030
+ }
10616
11031
  }, /*#__PURE__*/React.createElement(DateSelectTree, {
10617
11032
  dates: data.dates,
10618
11033
  onExpand: onExpand,
@@ -10634,37 +11049,6 @@ var FilterMenu = function FilterMenu() {
10634
11049
  return v.match(item.key) != null;
10635
11050
  }) > -1;
10636
11051
  }
10637
- }), /*#__PURE__*/React.createElement(SelectItem, {
10638
- item: {
10639
- key: "all",
10640
- text: filter.filterValueByAllBtn,
10641
- value: "",
10642
- mask: "",
10643
- rows: data.values.filter(function (v) {
10644
- return showValues.includes(v.text);
10645
- }).flatMap(function (v) {
10646
- return v.rows;
10647
- })
10648
- },
10649
- isChecked: function isChecked() {
10650
- var allDatesChecked = datesUncheck.length === 0;
10651
- var allValuesChecked = valuesUncheck.length === 0;
10652
- return allDatesChecked && allValuesChecked;
10653
- },
10654
- onChange: function onChange(item, checked) {
10655
- if (checked) {
10656
- setDatesUncheck([]);
10657
- setValuesUncheck([]);
10658
- hiddenRows.current = [];
10659
- } else {
10660
- setDatesUncheck(_.keys(data.dateRowMap));
10661
- setValuesUncheck(_.keys(data.valueRowMap));
10662
- hiddenRows.current = data.visibleRows;
10663
- }
10664
- },
10665
- isItemVisible: function isItemVisible() {
10666
- return true;
10667
- }
10668
11052
  }), data.values.map(function (v) {
10669
11053
  return /*#__PURE__*/React.createElement(SelectItem, {
10670
11054
  key: v.key,
@@ -10674,17 +11058,14 @@ var FilterMenu = function FilterMenu() {
10674
11058
  },
10675
11059
  onChange: function onChange(item, checked) {
10676
11060
  var rows = hiddenRows.current;
10677
- if (checked) {
10678
- hiddenRows.current = _.without.apply(_, [rows].concat(_toConsumableArray(item.rows)));
10679
- setValuesUncheck(produce(function (draft) {
11061
+ hiddenRows.current = checked ? _.without.apply(_, [rows].concat(_toConsumableArray(item.rows))) : _.concat(rows, item.rows);
11062
+ setValuesUncheck(produce(function (draft) {
11063
+ if (checked) {
10680
11064
  _.pull(draft, item.key);
10681
- }));
10682
- } else {
10683
- hiddenRows.current = _.concat(rows, item.rows);
10684
- setValuesUncheck(produce(function (draft) {
11065
+ } else {
10685
11066
  draft.push(item.key);
10686
- }));
10687
- }
11067
+ }
11068
+ }));
10688
11069
  },
10689
11070
  isItemVisible: function isItemVisible(item) {
10690
11071
  return showValues.length === data.flattenValues.length ? true : _.includes(showValues, item.text);
@@ -10693,49 +11074,40 @@ var FilterMenu = function FilterMenu() {
10693
11074
  }))));
10694
11075
  }
10695
11076
  return null;
10696
- }), /*#__PURE__*/React.createElement("div", {
10697
- className: "fortune-menuitem-row mt-2"
10698
- }, /*#__PURE__*/React.createElement(Button$1, {
10699
- variant: "ghost",
10700
- style: {
10701
- minWidth: "80px"
10702
- },
11077
+ }), /*#__PURE__*/React.createElement(Divider$1, null), /*#__PURE__*/React.createElement("div", {
11078
+ className: "fortune-menuitem-row"
11079
+ }, /*#__PURE__*/React.createElement("div", {
11080
+ className: "button-basic button-primary",
10703
11081
  onClick: function onClick() {
11082
+ if (col == null) return;
10704
11083
  setContext(function (draftCtx) {
10705
- clearFilter(draftCtx);
11084
+ var rowHidden = _.reduce(hiddenRows.current, function (pre, curr) {
11085
+ pre[curr] = 0;
11086
+ return pre;
11087
+ }, {});
11088
+ saveFilter(draftCtx, hiddenRows.current.length > 0, rowHidden, {}, startRow, endRow, col, startCol, endCol);
11089
+ hiddenRows.current = [];
11090
+ draftCtx.filterContextMenu = undefined;
10706
11091
  });
10707
11092
  },
10708
11093
  tabIndex: 0
10709
- }, filter.clearFilter), /*#__PURE__*/React.createElement(Button$1, {
10710
- variant: "secondary",
10711
- style: {
10712
- minWidth: "80px"
10713
- },
11094
+ }, filter.filterConform), /*#__PURE__*/React.createElement("div", {
11095
+ className: "button-basic button-default",
10714
11096
  onClick: function onClick() {
10715
11097
  setContext(function (draftCtx) {
10716
11098
  draftCtx.filterContextMenu = undefined;
10717
11099
  });
10718
11100
  },
10719
11101
  tabIndex: 0
10720
- }, filter.filterCancel), /*#__PURE__*/React.createElement(Button$1, {
10721
- variant: "default",
10722
- style: {
10723
- minWidth: "80px"
10724
- },
11102
+ }, filter.filterCancel), /*#__PURE__*/React.createElement("div", {
11103
+ className: "button-basic button-danger",
10725
11104
  onClick: function onClick() {
10726
- if (col == null) return;
10727
11105
  setContext(function (draftCtx) {
10728
- var rowHidden = _.reduce(hiddenRows.current, function (pre, curr) {
10729
- pre[curr] = 0;
10730
- return pre;
10731
- }, {});
10732
- saveFilter(draftCtx, hiddenRows.current.length > 0, rowHidden, {}, startRow, endRow, col, startCol, endCol);
10733
- hiddenRows.current = [];
10734
- draftCtx.filterContextMenu = undefined;
11106
+ clearFilter(draftCtx);
10735
11107
  });
10736
11108
  },
10737
11109
  tabIndex: 0
10738
- }, filter.filterConfirm))), showSubMenu && (/*#__PURE__*/React.createElement("div", {
11110
+ }, filter.clearFilter))), showSubMenu && (/*#__PURE__*/React.createElement("div", {
10739
11111
  ref: subMenuRef,
10740
11112
  className: "luckysheet-filter-bycolor-submenu",
10741
11113
  style: subMenuPos,
@@ -10775,7 +11147,7 @@ var FilterMenu = function FilterMenu() {
10775
11147
  });
10776
11148
  },
10777
11149
  tabIndex: 0
10778
- }, filter.filterConfirm))))));
11150
+ }, filter.filterConform))))));
10779
11151
  };
10780
11152
 
10781
11153
  var SheetHiddenButton = function SheetHiddenButton(_ref) {