@fileverse-dev/fortune-react 1.0.2-mod-40 → 1.0.2-mod-41-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.js CHANGED
@@ -184,7 +184,7 @@ function _regenerator() {
184
184
  i = p[t],
185
185
  d = G.p,
186
186
  l = i[2];
187
- r > 3 ? (o = l === n) && (c = i[4] || 3, u = i[5] === e ? i[3] : i[5], i[4] = 3, i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
187
+ r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));
188
188
  }
189
189
  if (o || r > 1) return a;
190
190
  throw y = !0, n;
@@ -796,12 +796,37 @@ var ContentEditable = function ContentEditable(_ref) {
796
796
  };
797
797
 
798
798
  var FormulaSearch = function FormulaSearch(props) {
799
+ var _context$luckysheet_s;
799
800
  var _useContext = React.useContext(WorkbookContext),
800
801
  context = _useContext.context;
802
+ var firstSelection = (_context$luckysheet_s = context.luckysheet_select_save) === null || _context$luckysheet_s === void 0 ? void 0 : _context$luckysheet_s[0];
803
+ var hintRef = React.useRef(null);
804
+ var _useState = React.useState(0),
805
+ _useState2 = _slicedToArray(_useState, 2),
806
+ top = _useState2[0],
807
+ setTop = _useState2[1];
808
+ var calcuatePopUpPlacement = function calcuatePopUpPlacement() {
809
+ var _hintRef$current;
810
+ if (!(firstSelection === null || firstSelection === void 0 ? void 0 : firstSelection.top) || !firstSelection.height_move || !hintRef.current) return;
811
+ var hintHeight = hintRef.current.offsetHeight;
812
+ var inputBottom = firstSelection.top + firstSelection.height_move;
813
+ var availableBelow = window.innerHeight - inputBottom;
814
+ var hintAbove = hintHeight > availableBelow;
815
+ var selectionHeight = (firstSelection === null || firstSelection === void 0 ? void 0 : firstSelection.height_move) || 0;
816
+ var divOffset = ((_hintRef$current = hintRef.current) === null || _hintRef$current === void 0 ? void 0 : _hintRef$current.offsetHeight) || 0;
817
+ setTop(hintAbove ? selectionHeight - (divOffset + 70) : selectionHeight + 4);
818
+ };
819
+ React.useEffect(function () {
820
+ calcuatePopUpPlacement();
821
+ });
801
822
  if (___default['default'].isEmpty(context.functionCandidates)) return null;
802
823
  return /*#__PURE__*/React__default['default'].createElement("div", _objectSpread2(_objectSpread2({}, props), {}, {
824
+ ref: hintRef,
803
825
  id: "luckysheet-formula-search-c",
804
- className: "luckysheet-formula-search-c"
826
+ className: "luckysheet-formula-search-c",
827
+ style: {
828
+ top: top
829
+ }
805
830
  }), context.functionCandidates.map(function (v, index) {
806
831
  return /*#__PURE__*/React__default['default'].createElement("div", {
807
832
  key: v.n,
@@ -813,52 +838,48 @@ var FormulaSearch = function FormulaSearch(props) {
813
838
  justifyContent: "space-between"
814
839
  }
815
840
  }, /*#__PURE__*/React__default['default'].createElement("div", {
816
- className: "luckysheet-formula-search-func"
841
+ className: "luckysheet-formula-search-func text-body-sm"
817
842
  }, v.n), /*#__PURE__*/React__default['default'].createElement("div", {
818
843
  style: {
819
844
  display: "flex",
845
+ justifyContent: "end",
846
+ width: "68px",
847
+ height: "20px",
848
+ alignItems: "center",
820
849
  gap: "4px"
821
850
  }
822
851
  }, v.LOGO && (/*#__PURE__*/React__default['default'].createElement("img", {
823
852
  src: v.LOGO,
824
853
  alt: "Service Logo",
825
- width: 32,
826
- height: 32
854
+ style: {
855
+ width: "20px"
856
+ }
827
857
  })), v.API_KEY && (/*#__PURE__*/React__default['default'].createElement("div", {
828
858
  style: {
829
859
  borderRadius: "4px",
830
- width: "20px",
831
- height: "20px",
832
- backgroundColor: "".concat(localStorage.getItem(v.API_KEY) ? "#177E23" : "#F9A92B")
833
- }
860
+ backgroundColor: "".concat(localStorage.getItem(v.API_KEY) ? "#177E23" : "#e8ebec"),
861
+ width: "16px",
862
+ height: "16px"
863
+ },
864
+ className: "flex justify-center"
834
865
  }, /*#__PURE__*/React__default['default'].createElement(ui.LucideIcon, {
835
866
  name: "Key",
836
867
  style: {
837
- color: "white"
868
+ color: localStorage.getItem(v.API_KEY) ? "white" : "#77818A",
869
+ width: "12px",
870
+ height: "12px"
838
871
  }
839
872
  }))))), /*#__PURE__*/React__default['default'].createElement("div", {
840
- className: "luckysheet-formula-search-detail"
873
+ className: "luckysheet-formula-search-detail mt-1 text-helper-text-sm"
841
874
  }, v.d));
842
875
  }));
843
876
  };
844
877
 
845
- function lightenHexColor(hex) {
846
- var amount = 100;
847
- if (hex.startsWith("#")) {
848
- hex = hex.slice(1);
849
- }
850
- var r = parseInt(hex.slice(0, 2), 16);
851
- var g = parseInt(hex.slice(2, 4), 16);
852
- var b = parseInt(hex.slice(4, 6), 16);
853
- r = Math.min(255, r + amount);
854
- g = Math.min(255, g + amount);
855
- b = Math.min(255, b + amount);
856
- var newHex = "#".concat((1 << 24 | r << 16 | g << 8 | b).toString(16).slice(1).toUpperCase());
857
- return newHex;
858
- }
859
878
  var FormulaHint = function FormulaHint(props) {
879
+ var _context$luckysheet_s;
860
880
  var _useContext = React.useContext(WorkbookContext),
861
881
  context = _useContext.context;
882
+ var firstSelection = (_context$luckysheet_s = context.luckysheet_select_save) === null || _context$luckysheet_s === void 0 ? void 0 : _context$luckysheet_s[0];
862
883
  var _locale = fortuneCore.locale(context),
863
884
  formulaMore = _locale.formulaMore;
864
885
  var fn = context.formulaCache.functionlistMap[context.functionHint];
@@ -870,13 +891,89 @@ var FormulaHint = function FormulaHint(props) {
870
891
  _useState4 = _slicedToArray(_useState3, 2),
871
892
  showAPInput = _useState4[0],
872
893
  setShowAPInput = _useState4[1];
894
+ var _useState5 = React.useState(!!localStorage.getItem(fn === null || fn === void 0 ? void 0 : fn.API_KEY)),
895
+ _useState6 = _slicedToArray(_useState5, 2),
896
+ isKeyAdded = _useState6[0],
897
+ setApiKeyAdded = _useState6[1];
898
+ var _useState7 = React.useState(true),
899
+ _useState8 = _slicedToArray(_useState7, 2),
900
+ showFunctionBody = _useState8[0],
901
+ setShouldShowFunctionBody = _useState8[1];
902
+ React.useEffect(function () {
903
+ if (fn) {
904
+ setApiKeyAdded(!!localStorage.getItem(fn === null || fn === void 0 ? void 0 : fn.API_KEY));
905
+ setAPI_KEY(localStorage.getItem(fn === null || fn === void 0 ? void 0 : fn.API_KEY) || "");
906
+ setShowAPInput(!localStorage.getItem(fn === null || fn === void 0 ? void 0 : fn.API_KEY));
907
+ }
908
+ }, [fn]);
909
+ var apiKeyPlaceholder = {
910
+ ETHERSCAN_API_KEY: "Etherscan API key"
911
+ };
912
+ var hintRef = React.useRef(null);
913
+ var _useState9 = React.useState(0),
914
+ _useState0 = _slicedToArray(_useState9, 2),
915
+ top = _useState0[0],
916
+ setTop = _useState0[1];
917
+ var calcuatePopUpPlacement = function calcuatePopUpPlacement() {
918
+ var _hintRef$current;
919
+ if (!(firstSelection === null || firstSelection === void 0 ? void 0 : firstSelection.top) || !firstSelection.height_move || !hintRef.current) return;
920
+ var hintHeight = 422;
921
+ var inputBottom = firstSelection.top + firstSelection.height_move;
922
+ var availableBelow = window.innerHeight - inputBottom;
923
+ var hintAbove = hintHeight > availableBelow;
924
+ var selectionHeight = (firstSelection === null || firstSelection === void 0 ? void 0 : firstSelection.height_move) || 0;
925
+ var divOffset = ((_hintRef$current = hintRef.current) === null || _hintRef$current === void 0 ? void 0 : _hintRef$current.offsetHeight) || 0;
926
+ setTop(hintAbove ? selectionHeight - (divOffset + 70) : selectionHeight + 4);
927
+ };
928
+ React.useEffect(function () {
929
+ calcuatePopUpPlacement();
930
+ });
931
+ React.useEffect(function () {
932
+ var el = document.getElementById("function-details");
933
+ var handleWheel;
934
+ if (el) {
935
+ var scrollLockTimeout = null;
936
+ var cache = {
937
+ verticalScrollLock: false,
938
+ horizontalScrollLock: false
939
+ };
940
+ handleWheel = function handleWheel(e) {
941
+ e.preventDefault();
942
+ var step = 40;
943
+ var ratio = 1;
944
+ if (e.deltaY !== 0 && !cache.verticalScrollLock) {
945
+ cache.horizontalScrollLock = true;
946
+ el.scrollTop += (e.deltaY > 0 ? 1 : -1) * step * ratio;
947
+ } else if (e.deltaX !== 0 && !cache.horizontalScrollLock) {
948
+ cache.verticalScrollLock = true;
949
+ el.scrollLeft += (e.deltaX > 0 ? 1 : -1) * step * ratio;
950
+ }
951
+ clearTimeout(scrollLockTimeout);
952
+ scrollLockTimeout = setTimeout(function () {
953
+ cache.verticalScrollLock = false;
954
+ cache.horizontalScrollLock = false;
955
+ }, 50);
956
+ };
957
+ el.addEventListener("wheel", handleWheel, {
958
+ passive: false
959
+ });
960
+ }
961
+ return function () {
962
+ if (el && handleWheel) el.removeEventListener("wheel", handleWheel);
963
+ };
964
+ }, []);
873
965
  if (!fn) return null;
874
966
  return /*#__PURE__*/React__default['default'].createElement("div", _objectSpread2(_objectSpread2({}, props), {}, {
967
+ ref: hintRef,
875
968
  id: "luckysheet-formula-help-c",
876
969
  className: "luckysheet-formula-help-c",
877
970
  style: {
878
- border: "1px solid ".concat(fn.BRAND_COLOR),
879
- backgroundColor: "".concat(fn.BRAND_COLOR ? lightenHexColor(fn.BRAND_COLOR) : "#F8F9FA")
971
+ top: top,
972
+ borderWidth: "1px",
973
+ borderColor: (fn === null || fn === void 0 ? void 0 : fn.BRAND_SECONDARY_COLOR) ? fn === null || fn === void 0 ? void 0 : fn.BRAND_SECONDARY_COLOR : "#F8F9FA",
974
+ backgroundColor: "".concat(fn.BRAND_COLOR ? fn.BRAND_COLOR : "#F8F9FA"),
975
+ width: "340px",
976
+ padding: "0px"
880
977
  }
881
978
  }), /*#__PURE__*/React__default['default'].createElement("div", {
882
979
  className: "luckysheet-formula-help-close",
@@ -891,17 +988,25 @@ var FormulaHint = function FormulaHint(props) {
891
988
  className: "fa fa-angle-up",
892
989
  "aria-hidden": "true"
893
990
  })), /*#__PURE__*/React__default['default'].createElement("div", {
894
- className: "luckysheet-formula-help-title formula-title",
991
+ onClick: function onClick() {
992
+ setShouldShowFunctionBody(!showFunctionBody);
993
+ },
994
+ className: "flex cursor-pointer items-center justify-between",
895
995
  style: {
896
- backgroundColor: "".concat(fn.BRAND_COLOR ? lightenHexColor(fn.BRAND_COLOR) : "#F8F9FA")
996
+ backgroundColor: "".concat(fn.BRAND_COLOR ? fn.BRAND_COLOR : "#F8F9FA"),
997
+ padding: "10px",
998
+ borderRadius: "10px"
897
999
  }
898
1000
  }, /*#__PURE__*/React__default['default'].createElement("div", {
899
- className: "luckysheet-formula-help-title-formula"
900
- }, /*#__PURE__*/React__default['default'].createElement("span", {
1001
+ className: " flex-grow color-text-default"
1002
+ }, /*#__PURE__*/React__default['default'].createElement("code", {
1003
+ style: {
1004
+ fontWeight: 500
1005
+ },
901
1006
  className: "luckysheet-arguments-help-function-name"
902
- }, fn.n), /*#__PURE__*/React__default['default'].createElement("span", {
1007
+ }, fn.n), /*#__PURE__*/React__default['default'].createElement("code", {
903
1008
  className: "luckysheet-arguments-paren"
904
- }, "("), /*#__PURE__*/React__default['default'].createElement("span", {
1009
+ }, "("), /*#__PURE__*/React__default['default'].createElement("code", {
905
1010
  className: "luckysheet-arguments-parameter-holder"
906
1011
  }, fn.p.map(function (param, i) {
907
1012
  var name = param.name;
@@ -911,43 +1016,58 @@ var FormulaHint = function FormulaHint(props) {
911
1016
  if (param.require === "o") {
912
1017
  name = "[".concat(name, "]");
913
1018
  }
914
- return /*#__PURE__*/React__default['default'].createElement("span", {
1019
+ return /*#__PURE__*/React__default['default'].createElement("code", {
915
1020
  className: "luckysheet-arguments-help-parameter",
916
1021
  dir: "auto",
917
1022
  key: name
918
1023
  }, name, i !== fn.p.length - 1 && ", ");
919
- })), /*#__PURE__*/React__default['default'].createElement("span", {
1024
+ })), /*#__PURE__*/React__default['default'].createElement("code", {
920
1025
  className: "luckysheet-arguments-paren"
921
1026
  }, ")")), /*#__PURE__*/React__default['default'].createElement("div", {
922
1027
  style: {
923
1028
  display: "flex",
1029
+ justifyContent: "end",
1030
+ width: "68px",
1031
+ height: "20px",
1032
+ alignItems: "center",
924
1033
  gap: "4px"
925
1034
  }
926
1035
  }, fn.LOGO && (/*#__PURE__*/React__default['default'].createElement("img", {
927
1036
  src: fn.LOGO,
928
1037
  alt: "Service Logo",
929
- width: 32,
930
- height: 32
1038
+ style: {
1039
+ width: "20px"
1040
+ }
931
1041
  })), fn.API_KEY && (/*#__PURE__*/React__default['default'].createElement("div", {
932
1042
  style: {
933
1043
  borderRadius: "4px",
934
- width: "20px",
935
- height: "20px",
936
- backgroundColor: "".concat(localStorage.getItem(fn.API_KEY) ? "#177E23" : "#F9A92B")
937
- }
1044
+ backgroundColor: "".concat(isKeyAdded ? "#177E23" : "#e8ebec"),
1045
+ width: "16px",
1046
+ height: "16px"
1047
+ },
1048
+ className: "flex justify-center"
938
1049
  }, /*#__PURE__*/React__default['default'].createElement(ui.LucideIcon, {
939
1050
  name: "Key",
940
1051
  style: {
941
- color: "white"
1052
+ color: isKeyAdded ? "white" : "#77818A",
1053
+ width: "12px",
1054
+ height: "12px"
942
1055
  }
943
- }))))), /*#__PURE__*/React__default['default'].createElement("div", {
1056
+ }))), /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(ui.LucideIcon, {
1057
+ name: showFunctionBody ? "ChevronUp" : "ChevronDown",
1058
+ width: 16,
1059
+ height: 16
1060
+ })))), showFunctionBody && (/*#__PURE__*/React__default['default'].createElement("div", {
944
1061
  className: "luckysheet-formula-help-content",
1062
+ id: "function-details",
945
1063
  style: {
946
- backgroundColor: "".concat(fn.BRAND_COLOR ? lightenHexColor(fn.BRAND_COLOR) : "#F8F9FA")
1064
+ backgroundColor: "".concat(fn.BRAND_COLOR ? fn.BRAND_COLOR : "#F8F9FA"),
1065
+ maxHeight: "318px",
1066
+ overflowY: "scroll"
947
1067
  }
948
1068
  }, fn.API_KEY && (/*#__PURE__*/React__default['default'].createElement("div", {
949
1069
  style: {
950
- borderLeft: "4px solid ".concat(API_KEY ? "#177E23" : "#fb923c"),
1070
+ borderLeft: "4px solid ".concat(isKeyAdded ? "#177E23" : "#fb923c"),
951
1071
  backgroundColor: "white",
952
1072
  padding: "16px",
953
1073
  margin: "4px 4px 0px 4px",
@@ -964,38 +1084,40 @@ var FormulaHint = function FormulaHint(props) {
964
1084
  }
965
1085
  }, /*#__PURE__*/React__default['default'].createElement("h3", {
966
1086
  style: {
967
- fontSize: "14px",
968
- fontWeight: "600",
969
- color: "#1f2937",
970
1087
  margin: "0 0 8px 0"
971
- }
972
- }, "API key is required"), /*#__PURE__*/React__default['default'].createElement(ui.LucideIcon, {
973
- name: "ChevronDown",
1088
+ },
1089
+ className: "text-heading-xsm color-text-default"
1090
+ }, isKeyAdded ? "API key provided" : "API key is required"), /*#__PURE__*/React__default['default'].createElement(ui.LucideIcon, {
1091
+ name: showAPInput ? "ChevronUp" : "ChevronDown",
974
1092
  width: 24,
975
1093
  height: 24
976
1094
  })), showAPInput && (/*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement("p", {
977
1095
  style: {
978
- color: "#6b7280",
979
1096
  margin: "0 0 16px 0"
980
- }
981
- }, "This function is require API key. Please paste it below and\n press 'Ok'."), /*#__PURE__*/React__default['default'].createElement("div", {
982
- style: {
983
- display: "flex",
984
- gap: "12px"
985
- }
1097
+ },
1098
+ className: "text-body-sm color-text-default"
1099
+ }, "This function requires an API key. Please paste it below and\n press 'Ok'."), /*#__PURE__*/React__default['default'].createElement("div", {
1100
+ className: "w-full"
986
1101
  }, /*#__PURE__*/React__default['default'].createElement(ui.TextField, {
987
1102
  value: API_KEY,
988
1103
  id: "function-api-key",
989
1104
  type: "text",
990
- placeholder: "API key",
1105
+ placeholder: apiKeyPlaceholder[fn.API_KEY],
991
1106
  onChange: function onChange(e) {
992
1107
  setAPI_KEY(e.target.value);
1108
+ setApiKeyAdded(false);
993
1109
  }
994
- }), /*#__PURE__*/React__default['default'].createElement(ui.Button, {
1110
+ }), /*#__PURE__*/React__default['default'].createElement("div", {
1111
+ className: "flex justify-end mt-2"
1112
+ }, /*#__PURE__*/React__default['default'].createElement(ui.Button, {
995
1113
  onClick: function onClick() {
996
1114
  localStorage.setItem(fn.API_KEY, API_KEY);
997
- }
998
- }, "Ok")))))), /*#__PURE__*/React__default['default'].createElement("div", {
1115
+ setApiKeyAdded(true);
1116
+ setShowAPInput(false);
1117
+ },
1118
+ disabled: !API_KEY,
1119
+ className: "min-w-[80px]"
1120
+ }, "Ok"))))))), /*#__PURE__*/React__default['default'].createElement("div", {
999
1121
  style: {
1000
1122
  backgroundColor: "white",
1001
1123
  padding: "6px",
@@ -1003,13 +1125,20 @@ var FormulaHint = function FormulaHint(props) {
1003
1125
  borderRadius: "4px"
1004
1126
  }
1005
1127
  }, /*#__PURE__*/React__default['default'].createElement("div", {
1006
- className: "luckysheet-formula-help-content-example"
1128
+ className: ""
1007
1129
  }, /*#__PURE__*/React__default['default'].createElement("div", {
1008
- className: "luckysheet-arguments-help-section-title example-title"
1009
- }, formulaMore.helpExample), /*#__PURE__*/React__default['default'].createElement("div", {
1010
- className: "luckysheet-arguments-help-formula"
1130
+ style: {
1131
+ lineHeight: "16px",
1132
+ fontSize: "12px"
1133
+ },
1134
+ className: "text-body-sm-bold mb-1 color-text-secondary"
1135
+ }, formulaMore.helpExample), /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement("code", {
1136
+ style: {
1137
+ overflowWrap: "break-word"
1138
+ },
1139
+ className: "example-value-code"
1011
1140
  }, /*#__PURE__*/React__default['default'].createElement("span", {
1012
- className: "luckysheet-arguments-help-function-name example-value"
1141
+ className: "luckysheet-arguments-help-function-name"
1013
1142
  }, fn.n), /*#__PURE__*/React__default['default'].createElement("span", {
1014
1143
  className: "luckysheet-arguments-paren"
1015
1144
  }, "("), /*#__PURE__*/React__default['default'].createElement("span", {
@@ -1022,26 +1151,32 @@ var FormulaHint = function FormulaHint(props) {
1022
1151
  }, param.example, i !== fn.p.length - 1 && ", ");
1023
1152
  })), /*#__PURE__*/React__default['default'].createElement("span", {
1024
1153
  className: "luckysheet-arguments-paren"
1025
- }, ")"))), /*#__PURE__*/React__default['default'].createElement("div", {
1154
+ }, ")")))), /*#__PURE__*/React__default['default'].createElement("div", {
1026
1155
  className: "luckysheet-formula-help-content-detail",
1027
1156
  style: {
1028
- paddingBottom: "6px"
1157
+ paddingBottom: "16px"
1029
1158
  }
1030
1159
  }, /*#__PURE__*/React__default['default'].createElement("div", {
1031
- className: "luckysheet-arguments-help-section"
1160
+ className: ""
1032
1161
  }, /*#__PURE__*/React__default['default'].createElement("div", {
1033
- className: "luckysheet-arguments-help-section-title luckysheet-arguments-help-parameter-name example-title"
1162
+ style: {
1163
+ lineHeight: "16px",
1164
+ fontSize: "12px",
1165
+ padding: "0px"
1166
+ },
1167
+ className: "text-body-sm-bold mb-1 mt-2 color-text-secondary"
1034
1168
  }, "About"), /*#__PURE__*/React__default['default'].createElement("span", {
1035
- className: "luckysheet-arguments-help-parameter-content example-value"
1169
+ className: "luckysheet-arguments-help-parameter-content text-helper-text-sm"
1036
1170
  }, fn.d))), /*#__PURE__*/React__default['default'].createElement("div", {
1171
+ style: {
1172
+ paddingTop: "16px"
1173
+ },
1037
1174
  className: "luckysheet-formula-help-content-param"
1038
1175
  }, fn.p.map(function (param) {
1039
1176
  return /*#__PURE__*/React__default['default'].createElement("div", {
1040
- className: "luckysheet-arguments-help-section",
1177
+ className: "",
1041
1178
  key: param.name
1042
- }, /*#__PURE__*/React__default['default'].createElement("div", {
1043
- className: "luckysheet-arguments-help-section-title example-title"
1044
- }, param.name, param.repeat === "y" && (/*#__PURE__*/React__default['default'].createElement("span", {
1179
+ }, /*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement("code", null, param.name, param.repeat === "y" && (/*#__PURE__*/React__default['default'].createElement("span", {
1045
1180
  className: "luckysheet-arguments-help-argument-info example-value",
1046
1181
  style: {
1047
1182
  marginTop: "2px"
@@ -1051,15 +1186,27 @@ var FormulaHint = function FormulaHint(props) {
1051
1186
  style: {
1052
1187
  marginTop: "2px"
1053
1188
  }
1054
- }, "-[", formulaMore.allowOptionText, "]"))), /*#__PURE__*/React__default['default'].createElement("span", {
1055
- className: "luckysheet-arguments-help-parameter-content example-value",
1189
+ }, "-[", formulaMore.allowOptionText, "]")))), /*#__PURE__*/React__default['default'].createElement("span", {
1190
+ className: "luckysheet-arguments-help-parameter-content text-helper-text-sm",
1056
1191
  style: {
1057
1192
  marginTop: "2px"
1058
1193
  }
1059
1194
  }, param.detail));
1060
- })))), /*#__PURE__*/React__default['default'].createElement("div", {
1061
- className: "luckysheet-formula-help-foot"
1062
- }));
1195
+ }))))), /*#__PURE__*/React__default['default'].createElement("div", {
1196
+ style: {
1197
+ backgroundColor: "".concat(fn.BRAND_COLOR ? fn.BRAND_COLOR : "#F8F9FA"),
1198
+ padding: "8px",
1199
+ borderBottomLeftRadius: "10px",
1200
+ borderBottomRightRadius: "10px"
1201
+ },
1202
+ className: "w-full"
1203
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
1204
+ onClick: function onClick() {
1205
+ var _document$getElementB;
1206
+ (_document$getElementB = document.getElementById("function-button")) === null || _document$getElementB === void 0 ? void 0 : _document$getElementB.click();
1207
+ },
1208
+ className: "color-text-link cursor-pointer text-helper-text-sm"
1209
+ }, "Learn More")));
1063
1210
  };
1064
1211
 
1065
1212
  function usePrevious(value) {
@@ -1157,6 +1304,38 @@ var InputBox = function InputBox() {
1157
1304
  var getActiveFormula = React.useCallback(function () {
1158
1305
  return document.querySelector(".luckysheet-formula-search-item-active");
1159
1306
  }, []);
1307
+ var insertSelectedFormula = React.useCallback(function (formulaName) {
1308
+ var _getrangeseleciton;
1309
+ var textEditor = document.getElementById("luckysheet-rich-text-editor");
1310
+ if (!textEditor) return;
1311
+ var searchTxt = ((_getrangeseleciton = fortuneCore.getrangeseleciton()) === null || _getrangeseleciton === void 0 ? void 0 : _getrangeseleciton.textContent) || "";
1312
+ var deleteCount = searchTxt.length;
1313
+ textEditor.focus();
1314
+ var selection = window.getSelection();
1315
+ if (!selection || selection.rangeCount === 0) return;
1316
+ var range = selection.getRangeAt(0);
1317
+ if (deleteCount !== 0 && range) {
1318
+ var startOffset = Math.max(range.startOffset - deleteCount, 0);
1319
+ var endOffset = range.startOffset;
1320
+ range.setStart(range.startContainer, startOffset);
1321
+ range.setEnd(range.startContainer, endOffset);
1322
+ range.deleteContents();
1323
+ }
1324
+ var funcNode = new DOMParser().parseFromString("<span dir=\"auto\" class=\"luckysheet-formula-text-func\">".concat(formulaName, "</span>"), "text/html").body.firstChild;
1325
+ var parNode = new DOMParser().parseFromString("<span dir=\"auto\" class=\"luckysheet-formula-text-lpar\">(</span>", "text/html").body.firstChild;
1326
+ if (range === null || range === void 0 ? void 0 : range.startContainer.parentNode) {
1327
+ range.setStart(range.startContainer.parentNode, 1);
1328
+ }
1329
+ if (parNode) range.insertNode(parNode);
1330
+ if (funcNode) range.insertNode(funcNode);
1331
+ range.collapse();
1332
+ selection.removeAllRanges();
1333
+ selection.addRange(range);
1334
+ setContext(function (draftCtx) {
1335
+ draftCtx.functionCandidates = [];
1336
+ draftCtx.functionHint = formulaName;
1337
+ });
1338
+ }, [setContext]);
1160
1339
  var clearSearchItemActiveClass = React.useCallback(function () {
1161
1340
  var activeFormula = getActiveFormula();
1162
1341
  if (activeFormula) {
@@ -1164,47 +1343,24 @@ var InputBox = function InputBox() {
1164
1343
  }
1165
1344
  }, [getActiveFormula]);
1166
1345
  var selectActiveFormula = React.useCallback(function (e) {
1167
- var activeFormula = getActiveFormula();
1168
- var formulaNameDiv = activeFormula === null || activeFormula === void 0 ? void 0 : activeFormula.querySelector(".luckysheet-formula-search-func");
1169
- if (formulaNameDiv) {
1170
- var formulaName = formulaNameDiv.textContent;
1171
- var textEditor = document.getElementById("luckysheet-rich-text-editor");
1172
- if (textEditor) {
1173
- var _getrangeseleciton;
1174
- var searchTxt = ((_getrangeseleciton = fortuneCore.getrangeseleciton()) === null || _getrangeseleciton === void 0 ? void 0 : _getrangeseleciton.textContent) || "";
1175
- var deleteCount = searchTxt.length;
1176
- textEditor.focus();
1177
- var selection = window.getSelection();
1178
- if ((selection === null || selection === void 0 ? void 0 : selection.rangeCount) === 0) return;
1179
- var range = selection === null || selection === void 0 ? void 0 : selection.getRangeAt(0);
1180
- if (deleteCount !== 0 && range) {
1181
- var startOffset = Math.max(range.startOffset - deleteCount, 0);
1182
- var endOffset = range.startOffset;
1183
- range.setStart(range.startContainer, startOffset);
1184
- range.setEnd(range.startContainer, endOffset);
1185
- range.deleteContents();
1186
- }
1187
- var functionStr = "<span dir=\"auto\" class=\"luckysheet-formula-text-func\">".concat(formulaName, "</span>");
1188
- var lParStr = "<span dir=\"auto\" class=\"luckysheet-formula-text-lpar\">(</span>";
1189
- var functionNode = new DOMParser().parseFromString(functionStr, "text/html").body.childNodes[0];
1190
- var lParNode = new DOMParser().parseFromString(lParStr, "text/html").body.childNodes[0];
1191
- if (range === null || range === void 0 ? void 0 : range.startContainer.parentNode) {
1192
- range === null || range === void 0 ? void 0 : range.setStart(range.startContainer.parentNode, 1);
1193
- }
1194
- range === null || range === void 0 ? void 0 : range.insertNode(lParNode);
1195
- range === null || range === void 0 ? void 0 : range.insertNode(functionNode);
1196
- range === null || range === void 0 ? void 0 : range.collapse();
1197
- selection === null || selection === void 0 ? void 0 : selection.removeAllRanges();
1198
- if (range) selection === null || selection === void 0 ? void 0 : selection.addRange(range);
1199
- setContext(function (draftCtx) {
1200
- draftCtx.functionCandidates = [];
1201
- draftCtx.functionHint = formulaName;
1202
- });
1203
- }
1346
+ var _getActiveFormula, _getActiveFormula$que;
1347
+ var formulaName = (_getActiveFormula = getActiveFormula()) === null || _getActiveFormula === void 0 ? void 0 : (_getActiveFormula$que = _getActiveFormula.querySelector(".luckysheet-formula-search-func")) === null || _getActiveFormula$que === void 0 ? void 0 : _getActiveFormula$que.textContent;
1348
+ if (formulaName) {
1349
+ insertSelectedFormula(formulaName);
1350
+ e.preventDefault();
1351
+ e.stopPropagation();
1352
+ }
1353
+ }, [getActiveFormula, insertSelectedFormula]);
1354
+ var selectActiveFormulaOnClick = React.useCallback(function (e) {
1355
+ var _getActiveFormula2, _getActiveFormula2$qu;
1356
+ preText.current = inputRef.current.innerText;
1357
+ var formulaName = (_getActiveFormula2 = getActiveFormula()) === null || _getActiveFormula2 === void 0 ? void 0 : (_getActiveFormula2$qu = _getActiveFormula2.querySelector(".luckysheet-formula-search-func")) === null || _getActiveFormula2$qu === void 0 ? void 0 : _getActiveFormula2$qu.textContent;
1358
+ if (formulaName) {
1359
+ insertSelectedFormula(formulaName);
1204
1360
  e.preventDefault();
1205
1361
  e.stopPropagation();
1206
1362
  }
1207
- }, [getActiveFormula, setContext]);
1363
+ }, [getActiveFormula, insertSelectedFormula]);
1208
1364
  var onKeyDown = React.useCallback(function (e) {
1209
1365
  lastKeyDownEventRef.current = new KeyboardEvent(e.type, e.nativeEvent);
1210
1366
  preText.current = inputRef.current.innerText;
@@ -1321,15 +1477,20 @@ var InputBox = function InputBox() {
1321
1477
  onKeyDown: onKeyDown,
1322
1478
  onPaste: onPaste,
1323
1479
  allowEdit: edit ? !isHidenRC : edit
1324
- })), document.activeElement === inputRef.current && (/*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(FormulaSearch, {
1325
- style: {
1326
- top: ((firstSelection === null || firstSelection === void 0 ? void 0 : firstSelection.height_move) || 0) + 4
1327
- }
1328
- }), /*#__PURE__*/React__default['default'].createElement(FormulaHint, {
1329
- style: {
1330
- top: ((firstSelection === null || firstSelection === void 0 ? void 0 : firstSelection.height_move) || 0) + 4
1480
+ })), (context.functionCandidates.length > 0 || context.functionHint) && (/*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(FormulaSearch, {
1481
+ onMouseOver: function onMouseOver(e) {
1482
+ if (document.getElementById("luckysheet-formula-search-c")) {
1483
+ var hoveredItem = e.target.closest(".luckysheet-formula-search-item");
1484
+ if (!hoveredItem) return;
1485
+ clearSearchItemActiveClass();
1486
+ hoveredItem.classList.add("luckysheet-formula-search-item-active");
1487
+ }
1488
+ e.preventDefault();
1489
+ },
1490
+ onMouseDown: function onMouseDown(e) {
1491
+ selectActiveFormulaOnClick(e);
1331
1492
  }
1332
- }))));
1493
+ }), /*#__PURE__*/React__default['default'].createElement(FormulaHint, null))));
1333
1494
  };
1334
1495
 
1335
1496
  var ScrollBar = function ScrollBar(_ref) {
@@ -2459,8 +2620,18 @@ function useDialog() {
2459
2620
  };
2460
2621
  }
2461
2622
 
2623
+ 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";
2624
+ var injectDatepickerStyles = function injectDatepickerStyles() {
2625
+ if (typeof document !== "undefined") {
2626
+ var styleSheet = document.createElement("style");
2627
+ styleSheet.textContent = datepickerStyles;
2628
+ document.head.appendChild(styleSheet);
2629
+ }
2630
+ };
2631
+
2632
+ injectDatepickerStyles();
2462
2633
  var DataVerification = function DataVerification() {
2463
- var _context$dataVerifica, _context$dataVerifica2, _context$dataVerifica3, _context$dataVerifica4, _context$dataVerifica5, _context$dataVerifica6, _context$dataVerifica7, _context$dataVerifica8, _context$dataVerifica9, _context$dataVerifica0, _context$dataVerifica1, _context$dataVerifica10, _context$dataVerifica11, _context$dataVerifica12, _context$dataVerifica13, _context$dataVerifica14, _context$dataVerifica15, _context$dataVerifica16, _context$dataVerifica17, _context$dataVerifica18, _context$dataVerifica19, _context$dataVerifica20, _context$dataVerifica21, _context$dataVerifica22, _context$dataVerifica23;
2634
+ var _context$dataVerifica, _context$dataVerifica2, _context$dataVerifica3, _context$dataVerifica4, _context$dataVerifica5, _context$dataVerifica6, _context$dataVerifica7, _context$dataVerifica8, _context$dataVerifica9, _context$dataVerifica0, _context$dataVerifica1, _context$dataVerifica10, _context$dataVerifica11;
2464
2635
  var _useContext = React.useContext(WorkbookContext),
2465
2636
  context = _useContext.context,
2466
2637
  setContext = _useContext.setContext;
@@ -2469,15 +2640,11 @@ var DataVerification = function DataVerification() {
2469
2640
  hideDialog = _useDialog.hideDialog;
2470
2641
  var _locale = fortuneCore.locale(context),
2471
2642
  dataVerification = _locale.dataVerification,
2472
- toolbar = _locale.toolbar,
2473
2643
  button = _locale.button,
2474
2644
  generalDialog = _locale.generalDialog;
2475
- var _useState = React.useState(["between", "notBetween", "equal", "notEqualTo", "moreThanThe", "lessThan", "greaterOrEqualTo", "lessThanOrEqualTo"]),
2645
+ var _useState = React.useState(["between", "notBetween", "equal", "notEqualTo", "earlierThan", "noEarlierThan", "laterThan", "noLaterThan"]),
2476
2646
  _useState2 = _slicedToArray(_useState, 1),
2477
- numberCondition = _useState2[0];
2478
- var _useState3 = React.useState(["between", "notBetween", "equal", "notEqualTo", "earlierThan", "noEarlierThan", "laterThan", "noLaterThan"]),
2479
- _useState4 = _slicedToArray(_useState3, 1),
2480
- dateCondition = _useState4[0];
2647
+ dateCondition = _useState2[0];
2481
2648
  var dataSelectRange = React.useCallback(function (type, value) {
2482
2649
  hideDialog();
2483
2650
  setContext(function (ctx) {
@@ -2612,48 +2779,36 @@ var DataVerification = function DataVerification() {
2612
2779
  return /*#__PURE__*/React__default['default'].createElement("div", {
2613
2780
  id: "fortune-data-verification"
2614
2781
  }, /*#__PURE__*/React__default['default'].createElement("div", {
2615
- className: "title"
2616
- }, toolbar.dataVerification), /*#__PURE__*/React__default['default'].createElement("div", {
2617
- className: "box"
2782
+ className: "flex flex-col gap-4"
2618
2783
  }, /*#__PURE__*/React__default['default'].createElement("div", {
2619
- className: "box-item",
2620
- style: {
2621
- borderTop: "1px solid #E1E4E8"
2622
- }
2784
+ className: "flex flex-col"
2623
2785
  }, /*#__PURE__*/React__default['default'].createElement("div", {
2624
- className: "box-item-title"
2625
- }, dataVerification.cellRange), /*#__PURE__*/React__default['default'].createElement("div", {
2626
- className: "data-verification-range"
2627
- }, /*#__PURE__*/React__default['default'].createElement("input", {
2628
- className: "formulaInputFocus",
2629
- spellCheck: "false",
2786
+ className: "text-heading-xsm mb-2"
2787
+ }, dataVerification.cellRange), /*#__PURE__*/React__default['default'].createElement(ui.TextField, {
2788
+ rightIcon: /*#__PURE__*/React__default['default'].createElement(ui.LucideIcon, {
2789
+ name: "Grid2x2",
2790
+ size: "sm"
2791
+ }),
2792
+ "aria-hidden": "true",
2793
+ readOnly: true,
2630
2794
  value: (_context$dataVerifica = context.dataVerification.dataRegulation) === null || _context$dataVerifica === void 0 ? void 0 : _context$dataVerifica.rangeTxt,
2631
2795
  onChange: function onChange(e) {
2632
2796
  var value = e.target.value;
2633
2797
  setContext(function (ctx) {
2634
2798
  ctx.dataVerification.dataRegulation.rangeTxt = value;
2635
2799
  });
2636
- }
2637
- }), /*#__PURE__*/React__default['default'].createElement("i", {
2638
- className: "icon",
2639
- "aria-hidden": "true",
2800
+ },
2640
2801
  onClick: function onClick() {
2641
2802
  hideDialog();
2642
2803
  dataSelectRange("rangeTxt", context.dataVerification.dataRegulation.value1);
2643
- },
2644
- tabIndex: 0
2645
- }, /*#__PURE__*/React__default['default'].createElement(SVGIcon, {
2646
- name: "tab",
2647
- width: 18
2648
- })))), /*#__PURE__*/React__default['default'].createElement("div", {
2649
- className: "box-item"
2804
+ }
2805
+ })), /*#__PURE__*/React__default['default'].createElement("div", {
2806
+ className: "flex flex-col"
2650
2807
  }, /*#__PURE__*/React__default['default'].createElement("div", {
2651
- className: "box-item-title"
2652
- }, dataVerification.verificationCondition), /*#__PURE__*/React__default['default'].createElement("select", {
2653
- className: "data-verification-type-select",
2808
+ className: "text-heading-xsm mb-2"
2809
+ }, dataVerification.verificationCondition), /*#__PURE__*/React__default['default'].createElement(ui.Select, {
2654
2810
  value: context.dataVerification.dataRegulation.type,
2655
- onChange: function onChange(e) {
2656
- var value = e.target.value;
2811
+ onValueChange: function onValueChange(value) {
2657
2812
  setContext(function (ctx) {
2658
2813
  ctx.dataVerification.dataRegulation.type = value;
2659
2814
  if (value === "dropdown" || value === "checkbox") {
@@ -2669,18 +2824,14 @@ var DataVerification = function DataVerification() {
2669
2824
  ctx.dataVerification.dataRegulation.value2 = "";
2670
2825
  });
2671
2826
  }
2672
- }, ["dropdown", "checkbox", "number", "number_integer", "number_decimal", "text_content", "text_length", "date", "validity"].map(function (v) {
2673
- return /*#__PURE__*/React__default['default'].createElement("option", {
2827
+ }, /*#__PURE__*/React__default['default'].createElement(ui.SelectTrigger, null, /*#__PURE__*/React__default['default'].createElement(ui.SelectValue, null)), /*#__PURE__*/React__default['default'].createElement(ui.SelectContent, null, ["dropdown", "checkbox", "date"].map(function (v) {
2828
+ return /*#__PURE__*/React__default['default'].createElement(ui.SelectItem, {
2674
2829
  value: v,
2675
2830
  key: v
2676
2831
  }, dataVerification[v]);
2677
- })), ((_context$dataVerifica2 = context.dataVerification) === null || _context$dataVerifica2 === void 0 ? void 0 : (_context$dataVerifica3 = _context$dataVerifica2.dataRegulation) === null || _context$dataVerifica3 === void 0 ? void 0 : _context$dataVerifica3.type) === "dropdown" && (/*#__PURE__*/React__default['default'].createElement("div", {
2678
- className: "show-box-item"
2679
- }, /*#__PURE__*/React__default['default'].createElement("div", {
2680
- className: "data-verification-range"
2681
- }, /*#__PURE__*/React__default['default'].createElement("input", {
2682
- className: "formulaInputFocus",
2683
- spellCheck: "false",
2832
+ }))), ((_context$dataVerifica2 = context.dataVerification) === null || _context$dataVerifica2 === void 0 ? void 0 : (_context$dataVerifica3 = _context$dataVerifica2.dataRegulation) === null || _context$dataVerifica3 === void 0 ? void 0 : _context$dataVerifica3.type) === "dropdown" && (/*#__PURE__*/React__default['default'].createElement("div", {
2833
+ className: "mt-4"
2834
+ }, /*#__PURE__*/React__default['default'].createElement(ui.TextField, {
2684
2835
  value: context.dataVerification.dataRegulation.value1,
2685
2836
  placeholder: dataVerification.placeholder1,
2686
2837
  onChange: function onChange(e) {
@@ -2689,39 +2840,28 @@ var DataVerification = function DataVerification() {
2689
2840
  ctx.dataVerification.dataRegulation.value1 = value;
2690
2841
  });
2691
2842
  }
2692
- }), /*#__PURE__*/React__default['default'].createElement("i", {
2693
- className: "icon",
2694
- "aria-hidden": "true",
2695
- onClick: function onClick() {
2696
- return dataSelectRange("dropDown", context.dataVerification.dataRegulation.value1);
2697
- },
2698
- tabIndex: 0
2699
- }, /*#__PURE__*/React__default['default'].createElement(SVGIcon, {
2700
- name: "tab",
2701
- width: 18
2702
- }))), /*#__PURE__*/React__default['default'].createElement("div", {
2703
- className: "check"
2704
- }, /*#__PURE__*/React__default['default'].createElement("input", {
2705
- type: "checkbox",
2843
+ }), /*#__PURE__*/React__default['default'].createElement("div", {
2844
+ className: "mt-4 flex items-center"
2845
+ }, /*#__PURE__*/React__default['default'].createElement(ui.Checkbox, {
2846
+ className: "border-2",
2706
2847
  checked: context.dataVerification.dataRegulation.type2 === "true",
2707
- id: "mul",
2708
- onChange: function onChange(e) {
2848
+ onCheckedChange: function onCheckedChange(e) {
2709
2849
  var checked = e.target.checked;
2710
2850
  setContext(function (ctx) {
2711
2851
  ctx.dataVerification.dataRegulation.type2 = "".concat(checked);
2712
2852
  });
2713
2853
  }
2714
- }), /*#__PURE__*/React__default['default'].createElement("label", {
2715
- htmlFor: "mul"
2854
+ }), /*#__PURE__*/React__default['default'].createElement("span", {
2855
+ className: "ml-2"
2716
2856
  }, dataVerification.allowMultiSelect)))), ((_context$dataVerifica4 = context.dataVerification) === null || _context$dataVerifica4 === void 0 ? void 0 : (_context$dataVerifica5 = _context$dataVerifica4.dataRegulation) === null || _context$dataVerifica5 === void 0 ? void 0 : _context$dataVerifica5.type) === "checkbox" && (/*#__PURE__*/React__default['default'].createElement("div", {
2717
- className: "show-box-item"
2857
+ className: "mt-4 space-y-2"
2718
2858
  }, /*#__PURE__*/React__default['default'].createElement("div", {
2719
- className: "check-box"
2720
- }, /*#__PURE__*/React__default['default'].createElement("span", null, dataVerification.selected, " \u2014\u2014 "), /*#__PURE__*/React__default['default'].createElement("input", {
2721
- type: "text",
2722
- className: "data-verification-value1",
2723
- placeholder: dataVerification.placeholder2,
2859
+ className: "flex items-center gap-2"
2860
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
2861
+ className: "data-verification-checkbox-label"
2862
+ }, dataVerification.selected), /*#__PURE__*/React__default['default'].createElement(ui.TextField, {
2724
2863
  value: (_context$dataVerifica6 = context.dataVerification) === null || _context$dataVerifica6 === void 0 ? void 0 : (_context$dataVerifica7 = _context$dataVerifica6.dataRegulation) === null || _context$dataVerifica7 === void 0 ? void 0 : _context$dataVerifica7.value1,
2864
+ placeholder: dataVerification.placeholder2,
2725
2865
  onChange: function onChange(e) {
2726
2866
  var value = e.target.value;
2727
2867
  setContext(function (ctx) {
@@ -2729,129 +2869,41 @@ var DataVerification = function DataVerification() {
2729
2869
  });
2730
2870
  }
2731
2871
  })), /*#__PURE__*/React__default['default'].createElement("div", {
2732
- className: "check-box"
2733
- }, /*#__PURE__*/React__default['default'].createElement("span", null, dataVerification.notSelected, " \u2014\u2014 "), /*#__PURE__*/React__default['default'].createElement("input", {
2734
- type: "text",
2735
- className: "data-verification-value2",
2736
- placeholder: dataVerification.placeholder2,
2872
+ className: "flex items-center gap-2"
2873
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
2874
+ className: "data-verification-checkbox-label"
2875
+ }, dataVerification.notSelected), /*#__PURE__*/React__default['default'].createElement(ui.TextField, {
2737
2876
  value: (_context$dataVerifica8 = context.dataVerification) === null || _context$dataVerifica8 === void 0 ? void 0 : (_context$dataVerifica9 = _context$dataVerifica8.dataRegulation) === null || _context$dataVerifica9 === void 0 ? void 0 : _context$dataVerifica9.value2,
2877
+ placeholder: dataVerification.placeholder2,
2738
2878
  onChange: function onChange(e) {
2739
2879
  var value = e.target.value;
2740
2880
  setContext(function (ctx) {
2741
2881
  ctx.dataVerification.dataRegulation.value2 = value;
2742
2882
  });
2743
2883
  }
2744
- })))), (((_context$dataVerifica0 = context.dataVerification) === null || _context$dataVerifica0 === void 0 ? void 0 : (_context$dataVerifica1 = _context$dataVerifica0.dataRegulation) === null || _context$dataVerifica1 === void 0 ? void 0 : _context$dataVerifica1.type) === "number" || ((_context$dataVerifica10 = context.dataVerification) === null || _context$dataVerifica10 === void 0 ? void 0 : (_context$dataVerifica11 = _context$dataVerifica10.dataRegulation) === null || _context$dataVerifica11 === void 0 ? void 0 : _context$dataVerifica11.type) === "number_integer" || ((_context$dataVerifica12 = context.dataVerification) === null || _context$dataVerifica12 === void 0 ? void 0 : (_context$dataVerifica13 = _context$dataVerifica12.dataRegulation) === null || _context$dataVerifica13 === void 0 ? void 0 : _context$dataVerifica13.type) === "number_decimal" || ((_context$dataVerifica14 = context.dataVerification) === null || _context$dataVerifica14 === void 0 ? void 0 : (_context$dataVerifica15 = _context$dataVerifica14.dataRegulation) === null || _context$dataVerifica15 === void 0 ? void 0 : _context$dataVerifica15.type) === "text_length") && (/*#__PURE__*/React__default['default'].createElement("div", {
2745
- className: "show-box-item"
2746
- }, /*#__PURE__*/React__default['default'].createElement("select", {
2747
- className: "data-verification-type-select",
2748
- value: context.dataVerification.dataRegulation.type2,
2749
- onChange: function onChange(e) {
2750
- var value = e.target.value;
2751
- setContext(function (ctx) {
2752
- ctx.dataVerification.dataRegulation.type2 = value;
2753
- ctx.dataVerification.dataRegulation.value1 = "";
2754
- ctx.dataVerification.dataRegulation.value2 = "";
2755
- });
2756
- }
2757
- }, numberCondition.map(function (v) {
2758
- return /*#__PURE__*/React__default['default'].createElement("option", {
2759
- value: v,
2760
- key: v
2761
- }, dataVerification[v]);
2762
- })), context.dataVerification.dataRegulation.type2 === "between" || context.dataVerification.dataRegulation.type2 === "notBetween" ? (/*#__PURE__*/React__default['default'].createElement("div", {
2763
- className: "input-box"
2764
- }, /*#__PURE__*/React__default['default'].createElement("input", {
2765
- type: "number",
2766
- placeholder: "1",
2767
- value: context.dataVerification.dataRegulation.value1,
2768
- onChange: function onChange(e) {
2769
- var value = e.target.value;
2770
- setContext(function (ctx) {
2771
- ctx.dataVerification.dataRegulation.value1 = value;
2772
- });
2773
- }
2774
- }), /*#__PURE__*/React__default['default'].createElement("span", null, "-"), /*#__PURE__*/React__default['default'].createElement("input", {
2775
- type: "number",
2776
- placeholder: "100",
2777
- value: context.dataVerification.dataRegulation.value2,
2778
- onChange: function onChange(e) {
2779
- var value = e.target.value;
2780
- setContext(function (ctx) {
2781
- ctx.dataVerification.dataRegulation.value2 = value;
2782
- });
2783
- }
2784
- }))) : (/*#__PURE__*/React__default['default'].createElement("div", {
2785
- className: "input-box"
2786
- }, /*#__PURE__*/React__default['default'].createElement("input", {
2787
- type: "number",
2788
- style: {
2789
- width: "100%"
2790
- },
2791
- placeholder: dataVerification.placeholder3,
2792
- value: context.dataVerification.dataRegulation.value1,
2793
- onChange: function onChange(e) {
2794
- var value = e.target.value;
2795
- setContext(function (ctx) {
2796
- ctx.dataVerification.dataRegulation.value1 = value;
2797
- });
2798
- }
2799
- }))))), ((_context$dataVerifica16 = context.dataVerification) === null || _context$dataVerifica16 === void 0 ? void 0 : (_context$dataVerifica17 = _context$dataVerifica16.dataRegulation) === null || _context$dataVerifica17 === void 0 ? void 0 : _context$dataVerifica17.type) === "text_content" && (/*#__PURE__*/React__default['default'].createElement("div", {
2800
- className: "show-box-item"
2801
- }, /*#__PURE__*/React__default['default'].createElement("select", {
2802
- className: "data-verification-type-select",
2803
- value: context.dataVerification.dataRegulation.type2,
2804
- onChange: function onChange(e) {
2805
- var value = e.target.value;
2806
- setContext(function (ctx) {
2807
- ctx.dataVerification.dataRegulation.type2 = value;
2808
- ctx.dataVerification.dataRegulation.value1 = "";
2809
- ctx.dataVerification.dataRegulation.value2 = "";
2810
- });
2811
- }
2812
- }, ["include", "exclude", "equal"].map(function (v) {
2813
- return /*#__PURE__*/React__default['default'].createElement("option", {
2814
- value: v,
2815
- key: v
2816
- }, dataVerification[v]);
2817
- })), /*#__PURE__*/React__default['default'].createElement("div", {
2818
- className: "input-box"
2819
- }, /*#__PURE__*/React__default['default'].createElement("input", {
2820
- type: "text",
2821
- style: {
2822
- width: "100%"
2823
- },
2824
- placeholder: dataVerification.placeholder4,
2825
- value: context.dataVerification.dataRegulation.value1,
2826
- onChange: function onChange(e) {
2827
- var value = e.target.value;
2828
- setContext(function (ctx) {
2829
- ctx.dataVerification.dataRegulation.value1 = value;
2830
- });
2831
- }
2832
- })))), ((_context$dataVerifica18 = context.dataVerification) === null || _context$dataVerifica18 === void 0 ? void 0 : (_context$dataVerifica19 = _context$dataVerifica18.dataRegulation) === null || _context$dataVerifica19 === void 0 ? void 0 : _context$dataVerifica19.type) === "date" && (/*#__PURE__*/React__default['default'].createElement("div", {
2833
- className: "show-box-item"
2834
- }, /*#__PURE__*/React__default['default'].createElement("select", {
2835
- className: "data-verification-type-select",
2884
+ })))), ((_context$dataVerifica0 = context.dataVerification) === null || _context$dataVerifica0 === void 0 ? void 0 : (_context$dataVerifica1 = _context$dataVerifica0.dataRegulation) === null || _context$dataVerifica1 === void 0 ? void 0 : _context$dataVerifica1.type) === "date" && (/*#__PURE__*/React__default['default'].createElement("div", {
2885
+ className: "mt-4"
2886
+ }, /*#__PURE__*/React__default['default'].createElement(ui.Select, {
2836
2887
  value: context.dataVerification.dataRegulation.type2,
2837
- onChange: function onChange(e) {
2838
- var value = e.target.value;
2888
+ onValueChange: function onValueChange(value) {
2839
2889
  setContext(function (ctx) {
2840
2890
  ctx.dataVerification.dataRegulation.type2 = value;
2841
2891
  ctx.dataVerification.dataRegulation.value1 = "";
2842
2892
  ctx.dataVerification.dataRegulation.value2 = "";
2843
2893
  });
2844
2894
  }
2845
- }, dateCondition.map(function (v) {
2846
- return /*#__PURE__*/React__default['default'].createElement("option", {
2895
+ }, /*#__PURE__*/React__default['default'].createElement(ui.SelectTrigger, null, /*#__PURE__*/React__default['default'].createElement(ui.SelectValue, null)), /*#__PURE__*/React__default['default'].createElement(ui.SelectContent, null, dateCondition.map(function (v) {
2896
+ return /*#__PURE__*/React__default['default'].createElement(ui.SelectItem, {
2847
2897
  value: v,
2848
2898
  key: v
2849
2899
  }, dataVerification[v]);
2850
- })), context.dataVerification.dataRegulation.type2 === "between" || context.dataVerification.dataRegulation.type2 === "notBetween" ? (/*#__PURE__*/React__default['default'].createElement("div", {
2851
- className: "input-box"
2900
+ }))), context.dataVerification.dataRegulation.type2 === "between" || context.dataVerification.dataRegulation.type2 === "notBetween" ? (/*#__PURE__*/React__default['default'].createElement("div", {
2901
+ className: "mt-4 flex gap-2 items-center"
2902
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
2903
+ className: "datepicker-toggle"
2852
2904
  }, /*#__PURE__*/React__default['default'].createElement("input", {
2853
2905
  type: "date",
2854
- placeholder: "1",
2906
+ className: "datepicker-input",
2855
2907
  value: context.dataVerification.dataRegulation.value1,
2856
2908
  onChange: function onChange(e) {
2857
2909
  var value = e.target.value;
@@ -2859,9 +2911,13 @@ var DataVerification = function DataVerification() {
2859
2911
  ctx.dataVerification.dataRegulation.value1 = value;
2860
2912
  });
2861
2913
  }
2862
- }), /*#__PURE__*/React__default['default'].createElement("span", null, "-"), /*#__PURE__*/React__default['default'].createElement("input", {
2914
+ }), /*#__PURE__*/React__default['default'].createElement("span", {
2915
+ className: "datepicker-toggle-button"
2916
+ })), /*#__PURE__*/React__default['default'].createElement("span", null, "-"), /*#__PURE__*/React__default['default'].createElement("div", {
2917
+ className: "datepicker-toggle"
2918
+ }, /*#__PURE__*/React__default['default'].createElement("input", {
2863
2919
  type: "date",
2864
- placeholder: "100",
2920
+ className: "datepicker-input",
2865
2921
  value: context.dataVerification.dataRegulation.value2,
2866
2922
  onChange: function onChange(e) {
2867
2923
  var value = e.target.value;
@@ -2869,13 +2925,15 @@ var DataVerification = function DataVerification() {
2869
2925
  ctx.dataVerification.dataRegulation.value2 = value;
2870
2926
  });
2871
2927
  }
2872
- }))) : (/*#__PURE__*/React__default['default'].createElement("div", {
2873
- className: "input-box"
2928
+ }), /*#__PURE__*/React__default['default'].createElement("span", {
2929
+ className: "datepicker-toggle-button"
2930
+ })))) : (/*#__PURE__*/React__default['default'].createElement("div", {
2931
+ className: "mt-4"
2932
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
2933
+ className: "datepicker-toggle"
2874
2934
  }, /*#__PURE__*/React__default['default'].createElement("input", {
2875
2935
  type: "date",
2876
- style: {
2877
- width: "100%"
2878
- },
2936
+ className: "datepicker-input",
2879
2937
  placeholder: dataVerification.placeholder3,
2880
2938
  value: context.dataVerification.dataRegulation.value1,
2881
2939
  onChange: function onChange(e) {
@@ -2884,57 +2942,35 @@ var DataVerification = function DataVerification() {
2884
2942
  ctx.dataVerification.dataRegulation.value1 = value;
2885
2943
  });
2886
2944
  }
2887
- }))))), ((_context$dataVerifica20 = context.dataVerification) === null || _context$dataVerifica20 === void 0 ? void 0 : (_context$dataVerifica21 = _context$dataVerifica20.dataRegulation) === null || _context$dataVerifica21 === void 0 ? void 0 : _context$dataVerifica21.type) === "validity" && (/*#__PURE__*/React__default['default'].createElement("div", {
2888
- className: "show-box-item"
2889
- }, /*#__PURE__*/React__default['default'].createElement("select", {
2890
- className: "data-verification-type-select",
2891
- value: context.dataVerification.dataRegulation.type2,
2892
- onChange: function onChange(e) {
2893
- var value = e.target.value;
2894
- setContext(function (ctx) {
2895
- ctx.dataVerification.dataRegulation.type2 = value;
2896
- ctx.dataVerification.dataRegulation.value1 = "";
2897
- ctx.dataVerification.dataRegulation.value2 = "";
2898
- });
2899
- }
2900
- }, ["identificationNumber", "phoneNumber"].map(function (v) {
2901
- return /*#__PURE__*/React__default['default'].createElement("option", {
2902
- value: v,
2903
- key: v
2904
- }, dataVerification[v]);
2905
- }))))), /*#__PURE__*/React__default['default'].createElement("div", {
2906
- className: "box-item"
2945
+ }), /*#__PURE__*/React__default['default'].createElement("span", {
2946
+ className: "datepicker-toggle-button"
2947
+ }))))))), /*#__PURE__*/React__default['default'].createElement(ui.Divider, {
2948
+ className: "w-full border-t-[1px]"
2949
+ }), /*#__PURE__*/React__default['default'].createElement("div", {
2950
+ className: "flex flex-col gap-2"
2907
2951
  }, ["prohibitInput", "hintShow"].map(function (v) {
2908
2952
  return /*#__PURE__*/React__default['default'].createElement("div", {
2909
- className: "check",
2910
- key: "div".concat(v)
2911
- }, /*#__PURE__*/React__default['default'].createElement("input", {
2912
- type: "checkbox",
2913
- id: v,
2914
- key: "input".concat(v),
2953
+ key: v,
2954
+ className: "flex items-center"
2955
+ }, /*#__PURE__*/React__default['default'].createElement(ui.Checkbox, {
2956
+ className: "border-2",
2915
2957
  checked: context.dataVerification.dataRegulation[v],
2916
- onChange: function onChange() {
2958
+ onCheckedChange: function onCheckedChange(e) {
2959
+ var checked = e.target.checked;
2917
2960
  setContext(function (ctx) {
2918
2961
  var _ctx$dataVerification5;
2919
2962
  var dataRegulation = (_ctx$dataVerification5 = ctx.dataVerification) === null || _ctx$dataVerification5 === void 0 ? void 0 : _ctx$dataVerification5.dataRegulation;
2920
2963
  if (v === "prohibitInput") {
2921
- dataRegulation.prohibitInput = !dataRegulation.prohibitInput;
2964
+ dataRegulation.prohibitInput = checked;
2922
2965
  } else if (v === "hintShow") {
2923
- dataRegulation.hintShow = !dataRegulation.hintShow;
2966
+ dataRegulation.hintShow = checked;
2924
2967
  }
2925
2968
  });
2926
- }
2927
- }), /*#__PURE__*/React__default['default'].createElement("label", {
2928
- htmlFor: v,
2929
- key: "label".concat(v)
2930
- }, dataVerification[v]));
2931
- }), ((_context$dataVerifica22 = context.dataVerification) === null || _context$dataVerifica22 === void 0 ? void 0 : (_context$dataVerifica23 = _context$dataVerifica22.dataRegulation) === null || _context$dataVerifica23 === void 0 ? void 0 : _context$dataVerifica23.hintShow) && (/*#__PURE__*/React__default['default'].createElement("div", {
2932
- className: "input-box"
2933
- }, /*#__PURE__*/React__default['default'].createElement("input", {
2934
- type: "text",
2935
- style: {
2936
- width: "100%"
2937
- },
2969
+ }
2970
+ }), /*#__PURE__*/React__default['default'].createElement("span", {
2971
+ className: "ml-2"
2972
+ }, dataVerification[v]));
2973
+ }), ((_context$dataVerifica10 = context.dataVerification) === null || _context$dataVerifica10 === void 0 ? void 0 : (_context$dataVerifica11 = _context$dataVerifica10.dataRegulation) === null || _context$dataVerifica11 === void 0 ? void 0 : _context$dataVerifica11.hintShow) && (/*#__PURE__*/React__default['default'].createElement("div", null, /*#__PURE__*/React__default['default'].createElement(ui.TextField, {
2938
2974
  placeholder: dataVerification.placeholder5,
2939
2975
  value: context.dataVerification.dataRegulation.hintValue,
2940
2976
  onChange: function onChange(e) {
@@ -2943,25 +2979,37 @@ var DataVerification = function DataVerification() {
2943
2979
  ctx.dataVerification.dataRegulation.hintValue = value;
2944
2980
  });
2945
2981
  }
2946
- }))))), /*#__PURE__*/React__default['default'].createElement("div", {
2947
- className: "button-basic button-primary",
2982
+ }))))), /*#__PURE__*/React__default['default'].createElement(ui.Divider, {
2983
+ className: "w-full border-t-[1px] my-4"
2984
+ }), /*#__PURE__*/React__default['default'].createElement("div", {
2985
+ className: "flex gap-2 justify-between items-center"
2986
+ }, /*#__PURE__*/React__default['default'].createElement(ui.Button, {
2987
+ variant: "secondary",
2988
+ style: {
2989
+ minWidth: "80px"
2990
+ },
2948
2991
  onClick: function onClick() {
2949
- btn("confirm");
2992
+ btn("close");
2993
+ }
2994
+ }, button.cancel), /*#__PURE__*/React__default['default'].createElement("div", {
2995
+ className: "flex gap-2"
2996
+ }, /*#__PURE__*/React__default['default'].createElement(ui.Button, {
2997
+ variant: "secondary",
2998
+ style: {
2999
+ minWidth: "80px"
2950
3000
  },
2951
- tabIndex: 0
2952
- }, button.confirm), /*#__PURE__*/React__default['default'].createElement("div", {
2953
- className: "button-basic button-close",
2954
3001
  onClick: function onClick() {
2955
3002
  btn("delete");
3003
+ }
3004
+ }, dataVerification.deleteVerification), /*#__PURE__*/React__default['default'].createElement(ui.Button, {
3005
+ variant: "default",
3006
+ style: {
3007
+ minWidth: "80px"
2956
3008
  },
2957
- tabIndex: 0
2958
- }, dataVerification.deleteVerification), /*#__PURE__*/React__default['default'].createElement("div", {
2959
- className: "button-basic button-close",
2960
3009
  onClick: function onClick() {
2961
- btn("close");
2962
- },
2963
- tabIndex: 0
2964
- }, button.cancel));
3010
+ btn("confirm");
3011
+ }
3012
+ }, button.confirm))));
2965
3013
  };
2966
3014
 
2967
3015
  function getDisplayedRangeTxt(context) {
@@ -2973,12 +3021,7 @@ function getDisplayedRangeTxt(context) {
2973
3021
  return (_context$rangeDialog$ = (_context$rangeDialog = context.rangeDialog) === null || _context$rangeDialog === void 0 ? void 0 : _context$rangeDialog.rangeTxt) !== null && _context$rangeDialog$ !== void 0 ? _context$rangeDialog$ : "";
2974
3022
  }
2975
3023
 
2976
- 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";
2977
- if (typeof document !== "undefined") {
2978
- var styleSheet = document.createElement("style");
2979
- styleSheet.textContent = datepickerStyles;
2980
- document.head.appendChild(styleSheet);
2981
- }
3024
+ injectDatepickerStyles();
2982
3025
  var ConditionRules = function ConditionRules(_ref) {
2983
3026
  var type = _ref.type;
2984
3027
  var _useContext = React.useContext(WorkbookContext),
@@ -3299,7 +3342,8 @@ var RangeDialog = function RangeDialog() {
3299
3342
  showDialog = _useDialog.showDialog;
3300
3343
  var _locale = fortuneCore.locale(context),
3301
3344
  dataVerification = _locale.dataVerification,
3302
- button = _locale.button;
3345
+ button = _locale.button,
3346
+ toolbar = _locale.toolbar;
3303
3347
  var _useState = React.useState(getDisplayedRangeTxt(context)),
3304
3348
  _useState2 = _slicedToArray(_useState, 2),
3305
3349
  rangeTxt2 = _useState2[0],
@@ -3324,7 +3368,7 @@ var RangeDialog = function RangeDialog() {
3324
3368
  }), undefined, fortuneCore.locale(context).conditionformat["conditionformat_".concat(rulesType)]);
3325
3369
  return;
3326
3370
  }
3327
- showDialog(/*#__PURE__*/React__default['default'].createElement(DataVerification, null));
3371
+ showDialog(/*#__PURE__*/React__default['default'].createElement(DataVerification, null), undefined, toolbar.dataVerification);
3328
3372
  }, [setContext, showDialog, context]);
3329
3373
  React.useEffect(function () {
3330
3374
  setRangeTxt2(getDisplayedRangeTxt(context));
@@ -3513,7 +3557,7 @@ var DropDownList = function DropDownList() {
3513
3557
  arr.splice(index, 1);
3514
3558
  }
3515
3559
  setSelected(arr);
3516
- fortuneCore.setDropcownValue(ctx, v, arr);
3560
+ fortuneCore.setDropdownValue(ctx, v, arr);
3517
3561
  });
3518
3562
  },
3519
3563
  tabIndex: 0
@@ -3528,6 +3572,118 @@ var DropDownList = function DropDownList() {
3528
3572
  }));
3529
3573
  };
3530
3574
 
3575
+ var IframeBoxs = function IframeBoxs() {
3576
+ var _context$insertedIfra;
3577
+ var _useContext = React.useContext(WorkbookContext),
3578
+ context = _useContext.context,
3579
+ setContext = _useContext.setContext,
3580
+ refs = _useContext.refs;
3581
+ var containerRef = React.useRef(null);
3582
+ React.useEffect(function () {
3583
+ var handleClickOutside = function handleClickOutside(e) {
3584
+ if (!containerRef.current) return;
3585
+ var iframeBoxes = containerRef.current.querySelectorAll(".luckysheet-modal-dialog-iframe");
3586
+ var clickedInsideSomeIframe = Array.from(iframeBoxes).some(function (el) {
3587
+ return el.contains(e.target);
3588
+ });
3589
+ if (!clickedInsideSomeIframe && context.activeIframe !== undefined) {
3590
+ setContext(function (ctx) {
3591
+ ctx.activeIframe = undefined;
3592
+ });
3593
+ }
3594
+ };
3595
+ document.addEventListener("mousedown", handleClickOutside);
3596
+ return function () {
3597
+ document.removeEventListener("mousedown", handleClickOutside);
3598
+ };
3599
+ }, [context.activeIframe, setContext]);
3600
+ return /*#__PURE__*/React__default['default'].createElement("div", {
3601
+ id: "fortune-iframe-boxes",
3602
+ ref: containerRef
3603
+ }, (_context$insertedIfra = context.insertedIframes) === null || _context$insertedIfra === void 0 ? void 0 : _context$insertedIfra.map(function (frame) {
3604
+ var isActive = frame.id === context.activeIframe;
3605
+ var style = {
3606
+ width: frame.width * context.zoomRatio,
3607
+ height: frame.height * context.zoomRatio,
3608
+ left: frame.left * context.zoomRatio,
3609
+ top: frame.top * context.zoomRatio,
3610
+ position: "absolute",
3611
+ padding: 0,
3612
+ zIndex: isActive ? 300 : 200
3613
+ };
3614
+ return /*#__PURE__*/React__default['default'].createElement("div", {
3615
+ key: frame.id,
3616
+ id: isActive ? "fortune-modal-dialog-activeIframe" : frame.id,
3617
+ className: "luckysheet-modal-dialog luckysheet-modal-dialog-iframe",
3618
+ style: style,
3619
+ onClick: function onClick(e) {
3620
+ if (!isActive) {
3621
+ setContext(function (ctx) {
3622
+ ctx.activeIframe = frame.id;
3623
+ });
3624
+ }
3625
+ e.stopPropagation();
3626
+ },
3627
+ onMouseDown: function onMouseDown(e) {
3628
+ if (isActive) {
3629
+ fortuneCore.onIframeMoveStart(context, refs.globalCache, e.nativeEvent);
3630
+ }
3631
+ e.stopPropagation();
3632
+ }
3633
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
3634
+ className: "luckysheet-modal-dialog-content",
3635
+ style: {
3636
+ width: "100%",
3637
+ height: "100%",
3638
+ overflow: "hidden"
3639
+ }
3640
+ }, /*#__PURE__*/React__default['default'].createElement("iframe", {
3641
+ title: "iframe-".concat(frame.id),
3642
+ src: frame.src,
3643
+ style: {
3644
+ width: "100%",
3645
+ height: "100%",
3646
+ border: "none",
3647
+ pointerEvents: "none"
3648
+ }
3649
+ })), /*#__PURE__*/React__default['default'].createElement("div", {
3650
+ className: "luckysheet-modal-dialog-border"
3651
+ }), isActive && (/*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement("div", {
3652
+ className: "luckysheet-modal-dialog-resize"
3653
+ }, ["lt", "mt", "lm", "rm", "rt", "lb", "mb", "rb"].map(function (dir) {
3654
+ return /*#__PURE__*/React__default['default'].createElement("div", {
3655
+ key: dir,
3656
+ className: "luckysheet-modal-dialog-resize-item luckysheet-modal-dialog-resize-item-".concat(dir),
3657
+ "data-type": dir,
3658
+ style: {
3659
+ zIndex: 300,
3660
+ position: "absolute"
3661
+ },
3662
+ onMouseDown: function onMouseDown(e) {
3663
+ fortuneCore.onIframeResizeStart(context, refs.globalCache, e.nativeEvent, dir);
3664
+ e.stopPropagation();
3665
+ }
3666
+ });
3667
+ })), /*#__PURE__*/React__default['default'].createElement("div", {
3668
+ className: "luckysheet-modal-dialog-controll"
3669
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
3670
+ className: "luckysheet-modal-controll-btn luckysheet-modal-controll-del",
3671
+ role: "button",
3672
+ tabIndex: 0,
3673
+ title: "Delete",
3674
+ onClick: function onClick() {
3675
+ setContext(function (ctx) {
3676
+ var _ctx$insertedIframes;
3677
+ ctx.insertedIframes = ctx === null || ctx === void 0 ? void 0 : (_ctx$insertedIframes = ctx.insertedIframes) === null || _ctx$insertedIframes === void 0 ? void 0 : _ctx$insertedIframes.filter(function (f) {
3678
+ return f.id !== frame.id;
3679
+ });
3680
+ ctx.activeIframe = undefined;
3681
+ });
3682
+ }
3683
+ }, "DELETE")))));
3684
+ }));
3685
+ };
3686
+
3531
3687
  var SheetOverlay = function SheetOverlay() {
3532
3688
  var _refs$cellArea$curren, _refs$cellArea$curren2, _context$luckysheet_s, _context$luckysheet_s2, _context$luckysheet_s3, _context$luckysheet_s4, _context$luckysheet_s5, _context$luckysheet_s6, _context$presences$le, _context$presences, _context$linkCard, _context$rangeDialog;
3533
3689
  var _useContext = React.useContext(WorkbookContext),
@@ -3970,7 +4126,7 @@ var SheetOverlay = function SheetOverlay() {
3970
4126
  id: "luckysheet-multipleRange-show"
3971
4127
  }), /*#__PURE__*/React__default['default'].createElement("div", {
3972
4128
  id: "luckysheet-dynamicArray-hightShow"
3973
- }), /*#__PURE__*/React__default['default'].createElement(ImgBoxs, null), /*#__PURE__*/React__default['default'].createElement("div", {
4129
+ }), /*#__PURE__*/React__default['default'].createElement(ImgBoxs, null), /*#__PURE__*/React__default['default'].createElement(IframeBoxs, null), /*#__PURE__*/React__default['default'].createElement("div", {
3974
4130
  id: "luckysheet-dataVerification-dropdown-btn",
3975
4131
  onClick: function onClick() {
3976
4132
  setContext(function (ctx) {
@@ -3983,8 +4139,9 @@ var SheetOverlay = function SheetOverlay() {
3983
4139
  display: "none"
3984
4140
  }
3985
4141
  }, /*#__PURE__*/React__default['default'].createElement(SVGIcon, {
3986
- name: "combo-arrow",
3987
- width: 16
4142
+ name: "caret-down-fill",
4143
+ width: 16,
4144
+ height: 16
3988
4145
  })), context.dataVerificationDropDownList && /*#__PURE__*/React__default['default'].createElement(DropDownList, null), /*#__PURE__*/React__default['default'].createElement("div", {
3989
4146
  id: "luckysheet-dataVerification-showHintBox",
3990
4147
  className: "luckysheet-mousedown-cancel",
@@ -4218,6 +4375,9 @@ var Sheet = function Sheet(_ref) {
4218
4375
  }
4219
4376
  }, [context, refs.canvas, refs.globalCache.freezen, setContext, sheet.id]);
4220
4377
  var onWheel = React.useCallback(function (e) {
4378
+ var el = document.getElementById("function-details");
4379
+ var isMouseOver = el === null || el === void 0 ? void 0 : el.matches(":hover");
4380
+ if (el && isMouseOver) return;
4221
4381
  setContext(function (draftCtx) {
4222
4382
  fortuneCore.handleGlobalWheel(draftCtx, e, refs.globalCache, refs.scrollbarX.current, refs.scrollbarY.current);
4223
4383
  });
@@ -4303,6 +4463,9 @@ var Combo = function Combo(_ref) {
4303
4463
  setPopupPosition = _useState4[1];
4304
4464
  var popupRef = React.useRef(null);
4305
4465
  var buttonRef = React.useRef(null);
4466
+ var isLucideIcon = React.useMemo(function () {
4467
+ return (iconId === null || iconId === void 0 ? void 0 : iconId.startsWith("align-")) || ["text-overflow", "text-wrap", "text-clip"].includes(iconId);
4468
+ }, [iconId]);
4306
4469
  useOutsideClick(popupRef, function () {
4307
4470
  setOpen(false);
4308
4471
  });
@@ -4330,7 +4493,7 @@ var Combo = function Combo(_ref) {
4330
4493
  }, /*#__PURE__*/React__default['default'].createElement("div", {
4331
4494
  ref: buttonRef,
4332
4495
  className: "fortune-toolbar-combo"
4333
- }, /*#__PURE__*/React__default['default'].createElement("div", {
4496
+ }, !isLucideIcon ? (/*#__PURE__*/React__default['default'].createElement("div", {
4334
4497
  className: "fortune-toolbar-combo-button",
4335
4498
  onClick: function onClick(e) {
4336
4499
  if (_onClick) {
@@ -4349,7 +4512,13 @@ var Combo = function Combo(_ref) {
4349
4512
  name: iconId
4350
4513
  })) : (/*#__PURE__*/React__default['default'].createElement("span", {
4351
4514
  className: "fortune-toolbar-combo-text"
4352
- }, text !== undefined ? text : ""))), showArrow && (/*#__PURE__*/React__default['default'].createElement("div", {
4515
+ }, text !== undefined ? text : "")))) : (/*#__PURE__*/React__default['default'].createElement(ui.IconButton, {
4516
+ icon: getIcon(iconId),
4517
+ variant: "ghost",
4518
+ onClick: function onClick() {
4519
+ return setOpen(!open);
4520
+ }
4521
+ })), showArrow && (/*#__PURE__*/React__default['default'].createElement("div", {
4353
4522
  className: "fortune-toolbar-combo-arrow",
4354
4523
  onClick: function onClick() {
4355
4524
  return setOpen(!open);
@@ -5254,6 +5423,121 @@ var FormatSearch = function FormatSearch(_ref) {
5254
5423
  }, button.cancel)));
5255
5424
  };
5256
5425
 
5426
+ var DuneChartsInputModal = function DuneChartsInputModal(_ref) {
5427
+ var isOpen = _ref.isOpen,
5428
+ onClose = _ref.onClose,
5429
+ onSubmit = _ref.onSubmit,
5430
+ icon = _ref.icon,
5431
+ _ref$submitText = _ref.submitText,
5432
+ submitText = _ref$submitText === void 0 ? "Submit" : _ref$submitText,
5433
+ _ref$placeholder = _ref.placeholder,
5434
+ placeholder = _ref$placeholder === void 0 ? "Enter a value..." : _ref$placeholder;
5435
+ var _useState = React.useState(""),
5436
+ _useState2 = _slicedToArray(_useState, 2),
5437
+ url = _useState2[0],
5438
+ setUrl = _useState2[1];
5439
+ var _useState3 = React.useState(false),
5440
+ _useState4 = _slicedToArray(_useState3, 2),
5441
+ showError = _useState4[0],
5442
+ setShowError = _useState4[1];
5443
+ var inputRef = React.useRef(null);
5444
+ React.useEffect(function () {
5445
+ if (isOpen && inputRef.current) {
5446
+ var timer = setTimeout(function () {
5447
+ var _inputRef$current;
5448
+ (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
5449
+ }, 100);
5450
+ return function () {
5451
+ return clearTimeout(timer);
5452
+ };
5453
+ }
5454
+ return undefined;
5455
+ }, [isOpen]);
5456
+ if (!isOpen) return null;
5457
+ var handleSubmit = function handleSubmit() {
5458
+ var trimmed = url.trim();
5459
+ if (trimmed && fortuneCore.sanitizeDuneUrl(trimmed)) {
5460
+ onSubmit(trimmed);
5461
+ setUrl("");
5462
+ setShowError(false);
5463
+ onClose();
5464
+ } else {
5465
+ setShowError(true);
5466
+ }
5467
+ };
5468
+ var handleKeyDown = function handleKeyDown(e) {
5469
+ e.stopPropagation();
5470
+ if (e.key === "Enter") {
5471
+ handleSubmit();
5472
+ }
5473
+ };
5474
+ return /*#__PURE__*/React__default['default'].createElement("div", {
5475
+ className: "custom-overlay",
5476
+ onClick: onClose
5477
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
5478
+ className: "input-modal",
5479
+ style: {
5480
+ transformOrigin: "top center"
5481
+ },
5482
+ onClick: function onClick(e) {
5483
+ return e.stopPropagation();
5484
+ },
5485
+ onKeyDown: handleKeyDown
5486
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
5487
+ className: "modal-header"
5488
+ }, /*#__PURE__*/React__default['default'].createElement(SVGIcon, {
5489
+ name: icon
5490
+ }), /*#__PURE__*/React__default['default'].createElement("input", {
5491
+ ref: inputRef,
5492
+ className: "modal-input",
5493
+ type: "text",
5494
+ placeholder: placeholder,
5495
+ value: url,
5496
+ onChange: function onChange(e) {
5497
+ setUrl(e.target.value);
5498
+ setShowError(false);
5499
+ },
5500
+ onKeyDown: handleKeyDown
5501
+ })), showError && (/*#__PURE__*/React__default['default'].createElement("div", {
5502
+ className: "modal-error-message"
5503
+ }, /*#__PURE__*/React__default['default'].createElement(SVGIcon, {
5504
+ style: {
5505
+ width: "14px",
5506
+ height: "14px"
5507
+ },
5508
+ name: "circle-alert"
5509
+ }), /*#__PURE__*/React__default['default'].createElement("span", null, "Please make sure the URL is a valid Dune chart link"))), url.length > 0 && !showError && (/*#__PURE__*/React__default['default'].createElement("div", {
5510
+ className: "modal-footer"
5511
+ }, /*#__PURE__*/React__default['default'].createElement(ui.Button, {
5512
+ onClick: handleSubmit,
5513
+ className: "modal-button"
5514
+ }, submitText)))));
5515
+ };
5516
+
5517
+ var getIcon = function getIcon(title) {
5518
+ switch (title) {
5519
+ case "align-left":
5520
+ return "AlignLeft";
5521
+ case "align-center":
5522
+ return "AlignCenter";
5523
+ case "align-right":
5524
+ return "AlignRight";
5525
+ case "align-top":
5526
+ return "ArrowUpFromLine";
5527
+ case "align-middle":
5528
+ return "AlignVerticalMiddle";
5529
+ case "align-bottom":
5530
+ return "ArrowDownFromLine";
5531
+ case "text-overflow":
5532
+ return "TextOverflow";
5533
+ case "text-wrap":
5534
+ return "WrapText";
5535
+ case "text-clip":
5536
+ return "TextClip";
5537
+ default:
5538
+ return "";
5539
+ }
5540
+ };
5257
5541
  var Toolbar = function Toolbar(_ref) {
5258
5542
  var _context$luckysheet_s, _flowdata$row, _settings$customToolb;
5259
5543
  var setMoreItems = _ref.setMoreItems,
@@ -5275,6 +5559,10 @@ var Toolbar = function Toolbar(_ref) {
5275
5559
  _useState4 = _slicedToArray(_useState3, 2),
5276
5560
  itemLocations = _useState4[0],
5277
5561
  setItemLocations = _useState4[1];
5562
+ var _useState5 = React.useState(false),
5563
+ _useState6 = _slicedToArray(_useState5, 2),
5564
+ showDuneModal = _useState6[0],
5565
+ setShowDuneModal = _useState6[1];
5278
5566
  var _useDialog = useDialog(),
5279
5567
  showDialog = _useDialog.showDialog,
5280
5568
  hideDialog = _useDialog.hideDialog;
@@ -5305,14 +5593,12 @@ var Toolbar = function Toolbar(_ref) {
5305
5593
  var sheetWidth = context.luckysheetTableContentHW[0];
5306
5594
  var currency = settings.currency;
5307
5595
  var defaultFormat = defaultFmt(currency);
5308
- var _useState5 = React.useState("#000000"),
5309
- _useState6 = _slicedToArray(_useState5, 2),
5310
- customColor = _useState6[0],
5311
- setcustomColor = _useState6[1];
5312
- var _useState7 = React.useState("1"),
5313
- _useState8 = _slicedToArray(_useState7, 2),
5314
- customStyle = _useState8[0],
5315
- setcustomStyle = _useState8[1];
5596
+ var _useState7 = React.useState("#000000"),
5597
+ _useState8 = _slicedToArray(_useState7, 1),
5598
+ customColor = _useState8[0];
5599
+ var _useState9 = React.useState("1"),
5600
+ _useState0 = _slicedToArray(_useState9, 1),
5601
+ customStyle = _useState0[0];
5316
5602
  var showSubMenu = React.useCallback(function (e, className) {
5317
5603
  var target = e.target;
5318
5604
  var menuItem = target.className === "fortune-toolbar-menu-line" ? target.parentElement : target;
@@ -5592,27 +5878,38 @@ var Toolbar = function Toolbar(_ref) {
5592
5878
  tooltip: toolbar.horizontalAlign,
5593
5879
  showArrow: false
5594
5880
  }, function (setOpen) {
5595
- return /*#__PURE__*/React__default['default'].createElement(Select, null, items.map(function (_ref3) {
5596
- var text = _ref3.text,
5597
- title = _ref3.title;
5598
- return /*#__PURE__*/React__default['default'].createElement(Option, {
5881
+ return /*#__PURE__*/React__default['default'].createElement(Select, {
5882
+ style: {
5883
+ minWidth: "fit-content",
5884
+ display: "flex",
5885
+ flexDirection: "row",
5886
+ alignItems: "center",
5887
+ justifyContent: "center",
5888
+ gap: 4
5889
+ }
5890
+ }, items.map(function (_ref3) {
5891
+ var _$find2;
5892
+ var title = _ref3.title;
5893
+ return /*#__PURE__*/React__default['default'].createElement(ui.IconButton, {
5599
5894
  key: title,
5895
+ isActive: ((_$find2 = ___default['default'].find(items, function (item) {
5896
+ return "".concat(item.value) === "".concat(cell === null || cell === void 0 ? void 0 : cell.ht);
5897
+ })) === null || _$find2 === void 0 ? void 0 : _$find2.title) === title,
5898
+ icon: getIcon(title),
5899
+ variant: "ghost",
5600
5900
  onClick: function onClick() {
5601
5901
  setContext(function (ctx) {
5602
5902
  fortuneCore.handleHorizontalAlign(ctx, refs.cellInput.current, title.replace("align-", ""));
5603
5903
  });
5604
5904
  setOpen(false);
5605
- }
5606
- }, /*#__PURE__*/React__default['default'].createElement("div", {
5607
- className: "fortune-toolbar-menu-line"
5608
- }, text, /*#__PURE__*/React__default['default'].createElement(SVGIcon, {
5609
- name: title
5610
- })));
5905
+ },
5906
+ tabIndex: 0
5907
+ });
5611
5908
  }));
5612
5909
  });
5613
5910
  }
5614
5911
  if (name === "vertical-align") {
5615
- var _$find2;
5912
+ var _$find3;
5616
5913
  var _items = [{
5617
5914
  title: "align-top",
5618
5915
  text: align.top,
@@ -5627,29 +5924,40 @@ var Toolbar = function Toolbar(_ref) {
5627
5924
  value: 2
5628
5925
  }];
5629
5926
  return /*#__PURE__*/React__default['default'].createElement(Combo, {
5630
- iconId: ((_$find2 = ___default['default'].find(_items, function (item) {
5927
+ iconId: ((_$find3 = ___default['default'].find(_items, function (item) {
5631
5928
  return "".concat(item.value) === "".concat(cell === null || cell === void 0 ? void 0 : cell.vt);
5632
- })) === null || _$find2 === void 0 ? void 0 : _$find2.title) || "align-top",
5929
+ })) === null || _$find3 === void 0 ? void 0 : _$find3.title) || "align-top",
5633
5930
  key: name,
5634
5931
  tooltip: toolbar.verticalAlign,
5635
5932
  showArrow: false
5636
5933
  }, function (setOpen) {
5637
- return /*#__PURE__*/React__default['default'].createElement(Select, null, _items.map(function (_ref4) {
5638
- var text = _ref4.text,
5639
- title = _ref4.title;
5640
- return /*#__PURE__*/React__default['default'].createElement(Option, {
5934
+ return /*#__PURE__*/React__default['default'].createElement(Select, {
5935
+ style: {
5936
+ minWidth: "fit-content",
5937
+ display: "flex",
5938
+ flexDirection: "row",
5939
+ alignItems: "center",
5940
+ justifyContent: "center",
5941
+ gap: 4
5942
+ }
5943
+ }, _items.map(function (_ref4) {
5944
+ var _$find4;
5945
+ var title = _ref4.title;
5946
+ return /*#__PURE__*/React__default['default'].createElement(ui.IconButton, {
5641
5947
  key: title,
5948
+ isActive: ((_$find4 = ___default['default'].find(_items, function (item) {
5949
+ return "".concat(item.value) === "".concat(cell === null || cell === void 0 ? void 0 : cell.vt);
5950
+ })) === null || _$find4 === void 0 ? void 0 : _$find4.title) === title,
5951
+ icon: getIcon(title),
5952
+ variant: "ghost",
5642
5953
  onClick: function onClick() {
5643
5954
  setContext(function (ctx) {
5644
5955
  fortuneCore.handleVerticalAlign(ctx, refs.cellInput.current, title.replace("align-", ""));
5645
5956
  });
5646
5957
  setOpen(false);
5647
- }
5648
- }, /*#__PURE__*/React__default['default'].createElement("div", {
5649
- className: "fortune-toolbar-menu-line"
5650
- }, text, /*#__PURE__*/React__default['default'].createElement(SVGIcon, {
5651
- name: title
5652
- })));
5958
+ },
5959
+ tabIndex: 0
5960
+ });
5653
5961
  }));
5654
5962
  });
5655
5963
  }
@@ -5724,7 +6032,7 @@ var Toolbar = function Toolbar(_ref) {
5724
6032
  key: name,
5725
6033
  onClick: function onClick() {
5726
6034
  if (context.allowEdit === false) return;
5727
- showDialog(/*#__PURE__*/React__default['default'].createElement(DataVerification, null));
6035
+ showDialog(/*#__PURE__*/React__default['default'].createElement(DataVerification, null), undefined, toolbar.dataVerification);
5728
6036
  }
5729
6037
  });
5730
6038
  }
@@ -6198,12 +6506,23 @@ var Toolbar = function Toolbar(_ref) {
6198
6506
  tooltip: toolbar.textWrap,
6199
6507
  showArrow: false
6200
6508
  }, function (setOpen) {
6201
- return /*#__PURE__*/React__default['default'].createElement(Select, null, _items6.map(function (_ref1) {
6202
- var text = _ref1.text,
6203
- iconId = _ref1.iconId,
6509
+ return /*#__PURE__*/React__default['default'].createElement(Select, {
6510
+ style: {
6511
+ minWidth: "fit-content",
6512
+ display: "flex",
6513
+ flexDirection: "row",
6514
+ alignItems: "center",
6515
+ justifyContent: "center",
6516
+ gap: 4
6517
+ }
6518
+ }, _items6.map(function (_ref1) {
6519
+ var iconId = _ref1.iconId,
6204
6520
  value = _ref1.value;
6205
- return /*#__PURE__*/React__default['default'].createElement(Option, {
6521
+ return /*#__PURE__*/React__default['default'].createElement(ui.IconButton, {
6206
6522
  key: value,
6523
+ isActive: _curr.value === value,
6524
+ icon: getIcon(iconId),
6525
+ variant: "ghost",
6207
6526
  onClick: function onClick() {
6208
6527
  setContext(function (ctx) {
6209
6528
  var d = fortuneCore.getFlowdata(ctx);
@@ -6211,12 +6530,9 @@ var Toolbar = function Toolbar(_ref) {
6211
6530
  fortuneCore.updateFormat(ctx, refs.cellInput.current, d, "tb", value);
6212
6531
  });
6213
6532
  setOpen(false);
6214
- }
6215
- }, /*#__PURE__*/React__default['default'].createElement("div", {
6216
- className: "fortune-toolbar-menu-line"
6217
- }, text, /*#__PURE__*/React__default['default'].createElement(SVGIcon, {
6218
- name: iconId
6219
- })));
6533
+ },
6534
+ tabIndex: 0
6535
+ });
6220
6536
  }));
6221
6537
  });
6222
6538
  }
@@ -6367,7 +6683,7 @@ var Toolbar = function Toolbar(_ref) {
6367
6683
  });
6368
6684
  }
6369
6685
  });
6370
- }, [toolbar, cell, setContext, refs.cellInput, refs.fxInput, refs.globalCache, defaultFormat, align, handleUndo, handleRedo, flowdata, formula, showDialog, hideDialog, merge, border, freezen, screenshot, sort, textWrap, rotation, filter, splitText, findAndReplace, context.luckysheet_select_save, context.defaultFontSize, context.allowEdit, comment, fontarray, hideSubMenu, showSubMenu, refs.canvas, customColor, customStyle, toolbarFormat.moreCurrency]);
6686
+ }, [toolbar, cell, setContext, refs.cellInput, refs.fxInput, refs.globalCache, defaultFormat, align, handleUndo, handleRedo, flowdata, formula, showDuneModal, merge, border, freezen, screenshot, sort, textWrap, rotation, filter, splitText, findAndReplace, context.luckysheet_select_save, context.defaultFontSize, context.allowEdit, comment, fontarray, hideSubMenu, showSubMenu, refs.canvas, customColor, customStyle, toolbarFormat.moreCurrency]);
6371
6687
  return /*#__PURE__*/React__default['default'].createElement("div", {
6372
6688
  ref: containerRef,
6373
6689
  className: "fortune-toolbar",
@@ -6422,7 +6738,29 @@ var Toolbar = function Toolbar(_ref) {
6422
6738
  icon: n.icon,
6423
6739
  iconName: n.iconName
6424
6740
  }, n.children);
6425
- }));
6741
+ }), /*#__PURE__*/React__default['default'].createElement(Button, {
6742
+ iconId: "dune-logo",
6743
+ tooltip: "Insert Dune Chart",
6744
+ key: "dune-charts",
6745
+ onClick: function onClick() {
6746
+ if (context.allowEdit === false) return;
6747
+ setShowDuneModal(true);
6748
+ }
6749
+ }), showDuneModal && (/*#__PURE__*/React__default['default'].createElement(DuneChartsInputModal, {
6750
+ isOpen: showDuneModal,
6751
+ onSubmit: function onSubmit(url) {
6752
+ setContext(function (draftCtx) {
6753
+ fortuneCore.insertDuneChart(draftCtx, url);
6754
+ });
6755
+ setShowDuneModal(false);
6756
+ },
6757
+ onClose: function onClose() {
6758
+ return setShowDuneModal(false);
6759
+ },
6760
+ icon: "dune-logo",
6761
+ placeholder: "Add Dune chart link to embed",
6762
+ submitText: "Embed Dune chart"
6763
+ })));
6426
6764
  };
6427
6765
 
6428
6766
  var LocationBox = function LocationBox() {
@@ -9553,6 +9891,74 @@ var SVGDefines = function SVGDefines(_ref) {
9553
9891
  "clip-rule": "evenodd",
9554
9892
  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",
9555
9893
  fill: "#363B3F"
9894
+ })), /*#__PURE__*/React__default['default'].createElement("symbol", {
9895
+ id: "dune-logo",
9896
+ viewBox: "0 0 18 16",
9897
+ fill: "none"
9898
+ }, /*#__PURE__*/React__default['default'].createElement("svg", {
9899
+ width: "18",
9900
+ height: "16",
9901
+ viewBox: "0 0 18 16",
9902
+ fill: "none",
9903
+ xmlns: "http://www.w3.org/2000/svg"
9904
+ }, /*#__PURE__*/React__default['default'].createElement("g", {
9905
+ "clip-path": "url(#clip0_80_246690)"
9906
+ }, /*#__PURE__*/React__default['default'].createElement("path", {
9907
+ d: "M7.99485 15.9875C12.4102 15.9875 15.9896 12.4085 15.9896 7.99373C15.9896 3.57891 12.4102 0 7.99485 0C3.57941 0 0 3.57891 0 7.99373C0 12.4085 3.57941 15.9875 7.99485 15.9875Z",
9908
+ fill: "#F4603E"
9909
+ }), /*#__PURE__*/React__default['default'].createElement("path", {
9910
+ d: "M1.39258 12.5028C1.39258 12.5028 6.67562 10.7723 15.9868 7.73633C15.9868 7.73633 16.4968 12.7082 11.3424 15.3015C11.3424 15.3015 8.80068 16.5197 6.01215 15.7383C6.01215 15.7383 3.23545 15.2142 1.39258 12.5028Z",
9911
+ fill: "#1E1870"
9912
+ })), /*#__PURE__*/React__default['default'].createElement("defs", null, /*#__PURE__*/React__default['default'].createElement("clipPath", {
9913
+ id: "clip0_80_246690"
9914
+ }, /*#__PURE__*/React__default['default'].createElement("rect", {
9915
+ width: "16",
9916
+ height: "16",
9917
+ fill: "white"
9918
+ }))))), /*#__PURE__*/React__default['default'].createElement("symbol", {
9919
+ id: "circle-alert",
9920
+ viewBox: "0 0 14 14",
9921
+ fill: "none"
9922
+ }, /*#__PURE__*/React__default['default'].createElement("svg", {
9923
+ width: "14",
9924
+ height: "14",
9925
+ viewBox: "0 0 14 14",
9926
+ fill: "none",
9927
+ xmlns: "http://www.w3.org/2000/svg"
9928
+ }, /*#__PURE__*/React__default['default'].createElement("g", {
9929
+ "clip-path": "url(#clip0_138_127604)"
9930
+ }, /*#__PURE__*/React__default['default'].createElement("path", {
9931
+ d: "M6.99967 4.0835C7.32184 4.0835 7.58301 4.34466 7.58301 4.66683V7.00016C7.58301 7.32233 7.32184 7.5835 6.99967 7.5835C6.67751 7.5835 6.41634 7.32233 6.41634 7.00016V4.66683C6.41634 4.34466 6.67751 4.0835 6.99967 4.0835Z",
9932
+ fill: "#FB3449"
9933
+ }), /*#__PURE__*/React__default['default'].createElement("path", {
9934
+ d: "M6.99967 8.75016C6.67751 8.75016 6.41634 9.01133 6.41634 9.3335C6.41634 9.65566 6.67751 9.91683 6.99967 9.91683H7.00551C7.32767 9.91683 7.58884 9.65566 7.58884 9.3335C7.58884 9.01133 7.32767 8.75016 7.00551 8.75016H6.99967Z",
9935
+ fill: "#FB3449"
9936
+ }), /*#__PURE__*/React__default['default'].createElement("path", {
9937
+ "fill-rule": "evenodd",
9938
+ "clip-rule": "evenodd",
9939
+ d: "M0.583008 7.00016C0.583008 3.45634 3.45585 0.583496 6.99967 0.583496C10.5435 0.583496 13.4163 3.45634 13.4163 7.00016C13.4163 10.544 10.5435 13.4168 6.99967 13.4168C3.45585 13.4168 0.583008 10.544 0.583008 7.00016ZM6.99967 1.75016C4.10018 1.75016 1.74967 4.10067 1.74967 7.00016C1.74967 9.89966 4.10018 12.2502 6.99967 12.2502C9.89917 12.2502 12.2497 9.89966 12.2497 7.00016C12.2497 4.10067 9.89917 1.75016 6.99967 1.75016Z",
9940
+ fill: "#FB3449"
9941
+ })), /*#__PURE__*/React__default['default'].createElement("defs", null, /*#__PURE__*/React__default['default'].createElement("clipPath", {
9942
+ id: "clip0_138_127604"
9943
+ }, /*#__PURE__*/React__default['default'].createElement("rect", {
9944
+ width: "14",
9945
+ height: "14",
9946
+ fill: "white"
9947
+ }))))), /*#__PURE__*/React__default['default'].createElement("symbol", {
9948
+ id: "caret-down-fill",
9949
+ width: "14",
9950
+ height: "14",
9951
+ viewBox: "0 0 14 14",
9952
+ fill: "none"
9953
+ }, /*#__PURE__*/React__default['default'].createElement("rect", {
9954
+ width: "14",
9955
+ height: "14",
9956
+ rx: "4",
9957
+ fill: "black",
9958
+ "fill-opacity": "0.1"
9959
+ }), /*#__PURE__*/React__default['default'].createElement("path", {
9960
+ d: "M6.64775 8.97978L3.77152 6.10355C3.45654 5.78857 3.67962 5.25 4.12507 5.25H9.87753C10.323 5.25 10.5461 5.78857 10.2311 6.10355L7.35486 8.97978C7.15959 9.17504 6.84301 9.17504 6.64775 8.97978Z",
9961
+ fill: "#363B3F"
9556
9962
  }))));
9557
9963
  };
9558
9964
 
@@ -10192,6 +10598,9 @@ function generateAPIs(context, setContext, handleUndo, handleRedo, settings, cel
10192
10598
  },
10193
10599
  getLocaleContext: function getLocaleContext() {
10194
10600
  return fortuneCore.locale(context);
10601
+ },
10602
+ getWorkbookContext: function getWorkbookContext() {
10603
+ return context;
10195
10604
  }
10196
10605
  };
10197
10606
  }
@@ -10915,6 +11324,48 @@ var SheetList = function SheetList() {
10915
11324
  }));
10916
11325
  };
10917
11326
 
11327
+ var DunePreview = function DunePreview(_ref) {
11328
+ var url = _ref.url,
11329
+ position = _ref.position,
11330
+ onKeepAsLink = _ref.onKeepAsLink,
11331
+ onEmbed = _ref.onEmbed;
11332
+ var embedUrl = fortuneCore.sanitizeDuneUrl(url);
11333
+ if (!embedUrl) return null;
11334
+ return /*#__PURE__*/React__default['default'].createElement("div", {
11335
+ className: "fortune-dune-preview",
11336
+ style: {
11337
+ left: position.left,
11338
+ top: position.top
11339
+ },
11340
+ onClick: function onClick(e) {
11341
+ return e.stopPropagation();
11342
+ }
11343
+ }, /*#__PURE__*/React__default['default'].createElement("div", {
11344
+ className: "fortune-dune-preview-header"
11345
+ }, /*#__PURE__*/React__default['default'].createElement("span", {
11346
+ className: "fortune-dune-preview-title"
11347
+ }, "Detected Dune chart link")), /*#__PURE__*/React__default['default'].createElement("div", {
11348
+ className: "fortune-dune-preview-content"
11349
+ }, /*#__PURE__*/React__default['default'].createElement("iframe", {
11350
+ src: embedUrl,
11351
+ title: "Dune Chart Preview",
11352
+ style: {
11353
+ width: "100%",
11354
+ height: "100%",
11355
+ border: "none"
11356
+ }
11357
+ })), /*#__PURE__*/React__default['default'].createElement("p", null, "Do you want to insert Dune chart?"), /*#__PURE__*/React__default['default'].createElement("div", {
11358
+ className: "fortune-dune-preview-footer"
11359
+ }, /*#__PURE__*/React__default['default'].createElement(ui.Button, {
11360
+ variant: "ghost",
11361
+ onClick: onKeepAsLink,
11362
+ className: "!w-fit px-0"
11363
+ }, "Keep as Link"), /*#__PURE__*/React__default['default'].createElement(ui.Button, {
11364
+ onClick: onEmbed,
11365
+ className: "!w-fit px-0"
11366
+ }, "Embed")));
11367
+ };
11368
+
10918
11369
  var _excluded = ["onChange", "onOp", "data"];
10919
11370
  produce.enablePatches();
10920
11371
  var triggerGroupValuesRefresh = function triggerGroupValuesRefresh(ctx) {
@@ -11447,7 +11898,25 @@ var Workbook = /*#__PURE__*/React__default['default'].forwardRef(function (_ref,
11447
11898
  style: {
11448
11899
  width: "60px"
11449
11900
  }
11450
- }, formula.count, ": ", calInfo.count)), !!calInfo.numberC && !!calInfo.sum && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.sum, ": ", calInfo.sum)), !!calInfo.numberC && !!calInfo.average && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.average, ": ", calInfo.average)), !!calInfo.numberC && !!calInfo.max && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.max, ": ", calInfo.max)), !!calInfo.numberC && !!calInfo.min && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.min, ": ", calInfo.min)))))));
11901
+ }, formula.count, ": ", calInfo.count)), !!calInfo.numberC && !!calInfo.sum && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.sum, ": ", calInfo.sum)), !!calInfo.numberC && !!calInfo.average && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.average, ": ", calInfo.average)), !!calInfo.numberC && !!calInfo.max && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.max, ": ", calInfo.max)), !!calInfo.numberC && !!calInfo.min && (/*#__PURE__*/React__default['default'].createElement("div", null, formula.min, ": ", calInfo.min)))), context.showDunePreview && (/*#__PURE__*/React__default['default'].createElement(DunePreview, {
11902
+ url: context.showDunePreview.url,
11903
+ position: context.showDunePreview.position,
11904
+ onKeepAsLink: function onKeepAsLink() {
11905
+ setContextWithProduce(function (draftCtx) {
11906
+ draftCtx.showDunePreview = undefined;
11907
+ }, {
11908
+ noHistory: true
11909
+ });
11910
+ },
11911
+ onEmbed: function onEmbed() {
11912
+ setContextWithProduce(function (draftCtx) {
11913
+ fortuneCore.insertDuneChart(draftCtx, context.showDunePreview.url);
11914
+ draftCtx.showDunePreview = undefined;
11915
+ }, {
11916
+ noHistory: true
11917
+ });
11918
+ }
11919
+ })))));
11451
11920
  });
11452
11921
 
11453
11922
  exports.Workbook = Workbook;