@fileverse-dev/fortune-core 1.0.2-mod-11 → 1.0.2-mod-12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import _, { isPlainObject } from 'lodash';
1
+ import _ from 'lodash';
2
2
  import { FUNCTION_LOCALE } from '@fileverse-dev/formulajs/crypto-constants';
3
3
  import numeral from 'numeral';
4
4
  import dayjs from 'dayjs';
@@ -8995,6 +8995,7 @@ var en = {
8995
8995
  moreFormats: "More formats",
8996
8996
  "border-all": "Border All",
8997
8997
  "merge-all": "Merge All Cell",
8998
+ format: "Format",
8998
8999
  font: "Font",
8999
9000
  "font-size": "Font size",
9000
9001
  bold: "Bold (Ctrl+B)",
@@ -9124,7 +9125,30 @@ var en = {
9124
9125
  tipInputNumberLimit: "The increase range is limited to 1-100",
9125
9126
  tipRowHeightLimit: "Row height must be between 0 ~ 545",
9126
9127
  tipColumnWidthLimit: "The column width must be between 0 ~ 2038",
9127
- pageInfoFull: "Total ${total},${totalPage} page,All data displayed"
9128
+ pageInfoFull: "Total ${total},${totalPage} page,All data displayed",
9129
+ sheetIsFocused: "Sheet focus lock enabled.",
9130
+ sheetNotFocused: "Sheet focus lock disabled.",
9131
+ sheetSrIntro: "To toggle sheet focus to assist with toolbar and other non-sheet navigation, use Shift, Control, F.",
9132
+ currentCellInput: "Current cell input",
9133
+ newSheet: "New sheet",
9134
+ sheetOptions: "Sheet options",
9135
+ Dropdown: "Dropdown",
9136
+ zoomIn: "Zoom in",
9137
+ zoomOut: "Zoom out",
9138
+ toggleSheetFocusShortcut: "Toggle sheet focus lock: Shift, Control, F.",
9139
+ selectRangeShortcut: "Select range: Shift, arrow keys.",
9140
+ autoFillDownShortcut: "Auto-fill selection down from first cell: Control or Meta key, D.",
9141
+ autoFillRightShortcut: "Auto-fill selection right from first cell: Control or Meta key, R.",
9142
+ boldTextShortcut: "Bold text: Control or Meta key, B.",
9143
+ copyShortcut: "Copy: Control or Meta key, C.",
9144
+ pasteShortcut: "Paste: Control or Meta key, V.",
9145
+ undoShortcut: "Undo: Control or Meta key, Z.",
9146
+ redoShortcut: "Redo: Control or Meta key, Shift, Z.",
9147
+ deleteCellContentShortcut: "Delete cell content: Delete or Backspace.",
9148
+ confirmCellEditShortcut: "Confirm cell edit and move down: Enter.",
9149
+ moveRightShortcut: "Move right: Tab.",
9150
+ moveLeftShortcut: "Move left: Shift, Tab.",
9151
+ shortcuts: "Keyboard Shortcuts"
9128
9152
  },
9129
9153
  currencyDetail: [{
9130
9154
  name: "RMB",
@@ -9721,7 +9745,7 @@ var en = {
9721
9745
  }, {
9722
9746
  name: "Indian Rupee",
9723
9747
  pos: "before",
9724
- value: "?"
9748
+ value: ""
9725
9749
  }, {
9726
9750
  name: "Indonesian Rupiah",
9727
9751
  pos: "before",
@@ -9751,6 +9775,19 @@ var en = {
9751
9775
  pos: "before",
9752
9776
  value: "FCFA"
9753
9777
  }],
9778
+ numberFmtList: [{
9779
+ name: "Volts",
9780
+ pos: "after",
9781
+ value: "V"
9782
+ }, {
9783
+ name: "Ampere",
9784
+ pos: "after",
9785
+ value: "A"
9786
+ }, {
9787
+ name: "Ohms",
9788
+ pos: "after",
9789
+ value: "Ω"
9790
+ }],
9754
9791
  defaultFmt: function defaultFmt(currency) {
9755
9792
  return [{
9756
9793
  text: "Auto",
@@ -19531,6 +19568,7 @@ var zh = {
19531
19568
  moreFormats: "更多格式",
19532
19569
  "border-all": "所有边框",
19533
19570
  "merge-all": "全部合并单元格",
19571
+ format: "格式",
19534
19572
  font: "字体",
19535
19573
  "font-size": "字号",
19536
19574
  bold: "粗体 (Ctrl+B)",
@@ -19660,7 +19698,30 @@ var zh = {
19660
19698
  tipInputNumberLimit: "增加范围限制在1-100",
19661
19699
  tipRowHeightLimit: "行高必须在0 ~ 545之间",
19662
19700
  tipColumnWidthLimit: "列宽必须在0 ~ 2038之间",
19663
- pageInfoFull: "共${total}条,${totalPage}页,已显示全部数据"
19701
+ pageInfoFull: "共${total}条,${totalPage}页,已显示全部数据",
19702
+ sheetIsFocused: "已启用工作表焦点锁定。",
19703
+ sheetNotFocused: "工作表焦点锁定已禁用。",
19704
+ sheetSrIntro: "要切换工作表焦点以辅助工具栏和其他非工作表导航,请使用 Shift、Control、F。",
19705
+ currentCellInput: "当前单元格输入",
19706
+ newSheet: "新表",
19707
+ sheetOptions: "图纸选项",
19708
+ Dropdown: "下拉菜单",
19709
+ zoomIn: "放大",
19710
+ zoomOut: "缩小",
19711
+ toggleSheetFocusShortcut: "切换表格焦点锁定: Shift, Control, F。",
19712
+ selectRangeShortcut: "选择范围: Shift, 方向键。",
19713
+ autoFillDownShortcut: "从首个单元格向下自动填充: Control 或 Meta 键, D。",
19714
+ autoFillRightShortcut: "从首个单元格向右自动填充: Control 或 Meta 键, R。",
19715
+ boldTextShortcut: "加粗文本: Control 或 Meta 键, B。",
19716
+ copyShortcut: "复制: Control 或 Meta 键, C。",
19717
+ pasteShortcut: "粘贴: Control 或 Meta 键, V。",
19718
+ undoShortcut: "撤销: Control 或 Meta 键, Z。",
19719
+ redoShortcut: "重做: Control 或 Meta 键, Shift, Z。",
19720
+ deleteCellContentShortcut: "删除单元格内容: Delete 或 Backspace。",
19721
+ confirmCellEditShortcut: "确认编辑并向下移动: Enter。",
19722
+ moveRightShortcut: "向右移动: Tab。",
19723
+ moveLeftShortcut: "向左移动: Shift, Tab。",
19724
+ shortcuts: "键盘快捷键"
19664
19725
  },
19665
19726
  currencyDetail: [{
19666
19727
  name: "人民币",
@@ -20287,6 +20348,19 @@ var zh = {
20287
20348
  pos: "before",
20288
20349
  value: "FCFA"
20289
20350
  }],
20351
+ numberFmtList: [{
20352
+ name: "Volts",
20353
+ pos: "after",
20354
+ value: "V"
20355
+ }, {
20356
+ name: "Ampere",
20357
+ pos: "after",
20358
+ value: "A"
20359
+ }, {
20360
+ name: "Ohms",
20361
+ pos: "after",
20362
+ value: "Ω"
20363
+ }],
20290
20364
  defaultFmt: function defaultFmt(currency) {
20291
20365
  return [{
20292
20366
  text: "自动",
@@ -30095,6 +30169,7 @@ var es = {
30095
30169
  numberDecrease: "Menos decimales",
30096
30170
  numberIncrease: "Más decimales",
30097
30171
  moreFormats: "Más formatos",
30172
+ format: "Formato",
30098
30173
  font: "Fuente",
30099
30174
  "font-size": "Tamaño Fuente",
30100
30175
  bold: "Negrita (Ctrl+B)",
@@ -30212,7 +30287,30 @@ var es = {
30212
30287
  tipInputNumberLimit: "El rango de aumento está limitado a 1-100",
30213
30288
  tipRowHeightLimit: "La altura de la fila debe estar entre 0 ~ 545",
30214
30289
  tipColumnWidthLimit: "El ancho de la columna debe estar entre 0 ~ 2038",
30215
- pageInfoFull: "Total ${total},página ${totalPage},Se muestran todos los datos"
30290
+ pageInfoFull: "Total ${total},página ${totalPage},Se muestran todos los datos",
30291
+ sheetIsFocused: "Bloqueo de enfoque de hoja habilitado.",
30292
+ sheetNotFocused: "Bloqueo de enfoque de hoja desactivado.",
30293
+ sheetSrIntro: "Para alternar el foco de la hoja para ayudar con la barra de herramientas y otra navegación que no sea de hoja, use Mayús, Control, F.",
30294
+ currentCellInput: "Entrada de celda actual",
30295
+ newSheet: "Nueva hoja",
30296
+ sheetOptions: "Opciones de hoja",
30297
+ Dropdown: "Menú desplegable",
30298
+ zoomIn: "Dar un golpe de zoom",
30299
+ zoomOut: "alejar",
30300
+ toggleSheetFocusShortcut: "Alternar bloqueo de enfoque de hoja: Shift, Control, F.",
30301
+ selectRangeShortcut: "Seleccionar rango: Shift, teclas de flecha.",
30302
+ autoFillDownShortcut: "Autocompletar selección hacia abajo desde la primera celda: Control o Meta, D.",
30303
+ autoFillRightShortcut: "Autocompletar selección hacia la derecha desde la primera celda: Control o Meta, R.",
30304
+ boldTextShortcut: "Texto en negrita: Control o Meta, B.",
30305
+ copyShortcut: "Copiar: Control o Meta, C.",
30306
+ pasteShortcut: "Pegar: Control o Meta, V.",
30307
+ undoShortcut: "Deshacer: Control o Meta, Z.",
30308
+ redoShortcut: "Rehacer: Control o Meta, Shift, Z.",
30309
+ deleteCellContentShortcut: "Eliminar contenido de celda: Delete o Backspace.",
30310
+ confirmCellEditShortcut: "Confirmar edición de celda y mover hacia abajo: Enter.",
30311
+ moveRightShortcut: "Mover a la derecha: Tab.",
30312
+ moveLeftShortcut: "Mover a la izquierda: Shift, Tab.",
30313
+ shortcuts: "Atajos de teclado"
30216
30314
  },
30217
30315
  currencyDetail: {
30218
30316
  RMB: "RMB",
@@ -30373,6 +30471,19 @@ var es = {
30373
30471
  ChileanPeso: "Chilean Peso",
30374
30472
  CFAFrancBEAC: "CFA Franc BEAC"
30375
30473
  },
30474
+ numberFmtList: [{
30475
+ name: "Volts",
30476
+ pos: "after",
30477
+ value: "V"
30478
+ }, {
30479
+ name: "Ampere",
30480
+ pos: "after",
30481
+ value: "A"
30482
+ }, {
30483
+ name: "Ohms",
30484
+ pos: "after",
30485
+ value: "Ω"
30486
+ }],
30376
30487
  defaultFmt: function defaultFmt(currency) {
30377
30488
  return [{
30378
30489
  text: "Automático",
@@ -40121,6 +40232,7 @@ var hi = {
40121
40232
  "number-decrease": "दशमलव स्थान घटाएँ",
40122
40233
  "number-increase": "दशमलव स्थान बढ़ाएँ",
40123
40234
  moreFormats: "अधिक फॉर्मेट",
40235
+ format: "प्रारूप",
40124
40236
  "border-all": "सभी सीमाएँ",
40125
40237
  "merge-all": "सभी सेल मिलाएँ",
40126
40238
  font: "फ़ॉन्ट",
@@ -40252,7 +40364,30 @@ var hi = {
40252
40364
  tipInputNumberLimit: "वृद्धि सीमा 1-100 तक सीमित है",
40253
40365
  tipRowHeightLimit: "पंक्ति की ऊँचाई 0 ~ 545 के बीच होनी चाहिए",
40254
40366
  tipColumnWidthLimit: "कॉलम की चौड़ाई 0 ~ 2038 के बीच होनी चाहिए",
40255
- pageInfoFull: "कुल ${total},${totalPage} पृष्ठ,सभी डेटा प्रदर्शित"
40367
+ pageInfoFull: "कुल ${total},${totalPage} पृष्ठ,सभी डेटा प्रदर्शित",
40368
+ sheetIsFocused: "शीट फोकस लॉक सक्षम।",
40369
+ sheetNotFocused: "शीट फ़ोकस लॉक अक्षम किया गया.",
40370
+ sheetSrIntro: "टूलबार और अन्य गैर-शीट नेविगेशन में सहायता के लिए शीट फ़ोकस को टॉगल करने के लिए, Shift, Control, F का उपयोग करें।",
40371
+ currentCellInput: "वर्तमान सेल इनपुट",
40372
+ newSheet: "नई शीट",
40373
+ sheetOptions: "शीट विकल्प",
40374
+ Dropdown: "ड्रॉप डाउन",
40375
+ zoomIn: "ज़ूम इन",
40376
+ zoomOut: "ज़ूम आउट",
40377
+ toggleSheetFocusShortcut: "Alternar bloqueo de enfoque de hoja: Shift, Control, F.",
40378
+ selectRangeShortcut: "Seleccionar rango: Shift, teclas de flecha.",
40379
+ autoFillDownShortcut: "Autocompletar selección hacia abajo desde la primera celda: Control o Meta, D.",
40380
+ autoFillRightShortcut: "Autocompletar selección hacia la derecha desde la primera celda: Control o Meta, R.",
40381
+ boldTextShortcut: "Texto en negrita: Control o Meta, B.",
40382
+ copyShortcut: "Copiar: Control o Meta, C.",
40383
+ pasteShortcut: "Pegar: Control o Meta, V.",
40384
+ undoShortcut: "Deshacer: Control o Meta, Z.",
40385
+ redoShortcut: "Rehacer: Control o Meta, Shift, Z.",
40386
+ deleteCellContentShortcut: "Eliminar contenido de celda: Delete o Backspace.",
40387
+ confirmCellEditShortcut: "Confirmar edición de celda y mover hacia abajo: Enter.",
40388
+ moveRightShortcut: "Mover a la derecha: Tab.",
40389
+ moveLeftShortcut: "Mover a la izquierda: Shift, Tab.",
40390
+ shortcuts: "कुंजीपटल अल्प मार्ग"
40256
40391
  },
40257
40392
  currencyDetail: [{
40258
40393
  name: "चीनी युआन",
@@ -40879,6 +41014,19 @@ var hi = {
40879
41014
  pos: "before",
40880
41015
  value: "FCFA"
40881
41016
  }],
41017
+ numberFmtList: [{
41018
+ name: "Volts",
41019
+ pos: "after",
41020
+ value: "V"
41021
+ }, {
41022
+ name: "Ampere",
41023
+ pos: "after",
41024
+ value: "A"
41025
+ }, {
41026
+ name: "Ohms",
41027
+ pos: "after",
41028
+ value: "Ω"
41029
+ }],
40882
41030
  defaultFmt: function defaultFmt(currency) {
40883
41031
  return [{
40884
41032
  text: "स्वचालित",
@@ -50655,6 +50803,7 @@ var zh_tw = {
50655
50803
  numberDecrease: "减少小數位數",
50656
50804
  numberIncrease: "新增小數位數",
50657
50805
  moreFormats: "更多格式",
50806
+ format: "格式",
50658
50807
  font: "字體",
50659
50808
  "font-size": "字型大小",
50660
50809
  bold: "粗體(Ctrl+B)",
@@ -50773,7 +50922,30 @@ var zh_tw = {
50773
50922
  tipInputNumberLimit: "新增範圍限制在1-100",
50774
50923
  tipRowHeightLimit: "行高必須在0 ~ 545之間",
50775
50924
  tipColumnWidthLimit: "列寬必須在0 ~ 2038之間",
50776
- pageInfoFull: "共${total}條,${totalPage}頁,已顯示全部數據"
50925
+ pageInfoFull: "共${total}條,${totalPage}頁,已顯示全部數據",
50926
+ sheetIsFocused: "已啟用工作表焦點鎖定。",
50927
+ sheetNotFocused: "工作表焦點鎖定已停用。",
50928
+ sheetSrIntro: "若要切換工作表焦點以輔助工具列和其他非工作表導航,請使用 Shift、Control、F。",
50929
+ currentCellInput: "目前儲存格輸入",
50930
+ newSheet: "新表",
50931
+ sheetOptions: "圖紙選項",
50932
+ Dropdown: "下拉式選單",
50933
+ zoomIn: "放大",
50934
+ zoomOut: "縮小",
50935
+ toggleSheetFocusShortcut: "切換工作表焦點鎖定: Shift, Control, F。",
50936
+ selectRangeShortcut: "選擇範圍: Shift, 方向鍵。",
50937
+ autoFillDownShortcut: "從第一個儲存格向下自動填充: Control 或 Meta 鍵, D。",
50938
+ autoFillRightShortcut: "從第一個儲存格向右自動填充: Control 或 Meta 鍵, R。",
50939
+ boldTextShortcut: "加粗文字: Control 或 Meta 鍵, B。",
50940
+ copyShortcut: "複製: Control 或 Meta 鍵, C。",
50941
+ pasteShortcut: "貼上: Control 或 Meta 鍵, V。",
50942
+ undoShortcut: "復原: Control 或 Meta 鍵, Z。",
50943
+ redoShortcut: "重做: Control 或 Meta 鍵, Shift, Z。",
50944
+ deleteCellContentShortcut: "刪除儲存格內容: Delete 或 Backspace。",
50945
+ confirmCellEditShortcut: "確認編輯並向下移動: Enter。",
50946
+ moveRightShortcut: "向右移動: Tab。",
50947
+ moveLeftShortcut: "向左移動: Shift, Tab。",
50948
+ shortcuts: "鍵盤快速鍵"
50777
50949
  },
50778
50950
  currencyDetail: {
50779
50951
  RMB: "人民幣",
@@ -50934,6 +51106,19 @@ var zh_tw = {
50934
51106
  ChileanPeso: "智利比索",
50935
51107
  CFAFrancBEAC: "中非金融合作法郎"
50936
51108
  },
51109
+ numberFmtList: [{
51110
+ name: "Volts",
51111
+ pos: "after",
51112
+ value: "V"
51113
+ }, {
51114
+ name: "Ampere",
51115
+ pos: "after",
51116
+ value: "A"
51117
+ }, {
51118
+ name: "Ohms",
51119
+ pos: "after",
51120
+ value: "Ω"
51121
+ }],
50937
51122
  defaultFmt: function defaultFmt(currency) {
50938
51123
  return [{
50939
51124
  text: "自動",
@@ -53135,6 +53320,7 @@ function getCellTextInfo(cell, renderCtx, sheetCtx, option, ctx) {
53135
53320
  }
53136
53321
  } else {
53137
53322
  value = value.toString();
53323
+ var parsedTextHeight = 0;
53138
53324
  while (_i5 <= value.length) {
53139
53325
  var str = value.substring(anchor, _i5);
53140
53326
  var _measureText3 = getMeasureText(str, renderCtx, sheetCtx);
@@ -53230,6 +53416,8 @@ function getCellTextInfo(cell, renderCtx, sheetCtx, option, ctx) {
53230
53416
  });
53231
53417
  splitIndex += 1;
53232
53418
  spaceOrTwoByte = null;
53419
+ parsedTextHeight += preTextHeight;
53420
+ if (parsedTextHeight >= cellHeight) break;
53233
53421
  } else {
53234
53422
  spaceOrTwoByte = null;
53235
53423
  anchor = _i5 - 1;
@@ -53246,6 +53434,8 @@ function getCellTextInfo(cell, renderCtx, sheetCtx, option, ctx) {
53246
53434
  fs: fontSize
53247
53435
  });
53248
53436
  splitIndex += 1;
53437
+ parsedTextHeight += preTextHeight;
53438
+ if (parsedTextHeight >= cellHeight) break;
53249
53439
  }
53250
53440
  } else if (_i5 === value.length) {
53251
53441
  if (_.isNil(text_all_split[splitIndex])) {
@@ -53625,9 +53815,9 @@ function isRealNum(val) {
53625
53815
  }
53626
53816
  return !Number.isNaN(Number(val));
53627
53817
  }
53628
- function checkDateTime(str) {
53629
- var reg1 = /^(\d{4})-(\d{1,2})-(\d{1,2})(\s(\d{1,2}):(\d{1,2})(:(\d{1,2}))?)?$/;
53630
- var reg2 = /^(\d{4})\/(\d{1,2})\/(\d{1,2})(\s(\d{1,2}):(\d{1,2})(:(\d{1,2}))?)?$/;
53818
+ function checkDateTime(str, format) {
53819
+ var reg1 = format === "24" ? /^(\d{4})-(\d{1,2})-(\d{1,2})(\s(\d{1,2}):(\d{1,2})(:(\d{1,2}))?)?$/ : /^(\d{4})-(\d{1,2})-(\d{1,2})(\s(\d{1,2}):(\d{1,2})(:(\d{1,2}))?)?\s?(AM|PM)?$/;
53820
+ var reg2 = format === "24" ? /^(\d{4})\/(\d{1,2})\/(\d{1,2})(\s(\d{1,2}):(\d{1,2})(:(\d{1,2}))?)?$/ : /^(\d{4})\/(\d{1,2})\/(\d{1,2})(\s(\d{1,2}):(\d{1,2})(:(\d{1,2}))?)?\s?(AM|PM)?$/;
53631
53821
  if (!reg1.test(str) && !reg2.test(str)) {
53632
53822
  return false;
53633
53823
  }
@@ -53654,10 +53844,11 @@ function checkDateTime(str) {
53654
53844
  return true;
53655
53845
  }
53656
53846
  function isdatetime(s) {
53847
+ var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "24";
53657
53848
  if (s === null || s.toString().length < 5) {
53658
53849
  return false;
53659
53850
  }
53660
- if (checkDateTime(s)) {
53851
+ if (checkDateTime(s, format)) {
53661
53852
  return true;
53662
53853
  }
53663
53854
  return false;
@@ -53787,6 +53978,8 @@ function hasPartMC(ctx, cfg, r1, r2, c1, c2) {
53787
53978
  return ret;
53788
53979
  }
53789
53980
 
53981
+ var JAN_1_1900 = 1;
53982
+ var DEC_31_9999 = 2958465;
53790
53983
  var SSF = {};
53791
53984
  var make_ssf = function make_ssf(SSF) {
53792
53985
  SSF.version = "0.11.2";
@@ -53944,8 +54137,44 @@ var make_ssf = function make_ssf(SSF) {
53944
54137
  var q = Math.floor(sgn * P / Q);
53945
54138
  return [q, sgn * P - q * Q, Q];
53946
54139
  }
54140
+ function convert_to_seconds(timeStr) {
54141
+ var hours, minutes;
54142
+ if (timeStr.includes("AM") || timeStr.includes("PM")) {
54143
+ // Handle hh:mm AM/PM format
54144
+ var match = timeStr.match(/^(\d{1,2}):(\d{2})\s?(AM|PM)$/i);
54145
+ if (!match) return NaN;
54146
+ hours = parseInt(match[1], 10);
54147
+ minutes = parseInt(match[2], 10);
54148
+ var period = match[3].toUpperCase();
54149
+ if (hours < 1 || hours > 12 || minutes < 0 || minutes >= 60) {
54150
+ return NaN;
54151
+ }
54152
+
54153
+ // Convert to 24-hour format
54154
+ if (period === "PM" && hours !== 12) {
54155
+ hours += 12;
54156
+ } else if (period === "AM" && hours === 12) {
54157
+ hours = 0;
54158
+ }
54159
+ } else {
54160
+ // Handle hh:mm format
54161
+ var _timeStr$split$map = timeStr.split(":").map(Number),
54162
+ _timeStr$split$map2 = _slicedToArray(_timeStr$split$map, 2),
54163
+ hourPart = _timeStr$split$map2[0],
54164
+ minutePart = _timeStr$split$map2[1];
54165
+ hours = hourPart;
54166
+ minutes = minutePart;
54167
+ if (isNaN(hours) || isNaN(minutes) || hours < 0 || hours > 23 || minutes < 0 || minutes >= 60) {
54168
+ return NaN;
54169
+ }
54170
+ }
54171
+
54172
+ // Convert to seconds
54173
+ return hours * 3600 + minutes * 60;
54174
+ }
53947
54175
  function parse_date_code(v, opts, b2) {
53948
- if (v > 2958465 || v < 0) return null;
54176
+ var _v$includes;
54177
+ if (v > DEC_31_9999 || v < JAN_1_1900) return null;
53949
54178
  var date = v | 0,
53950
54179
  time = Math.floor(86400 * (v - date)),
53951
54180
  dow = 0;
@@ -53988,6 +54217,9 @@ var make_ssf = function make_ssf(SSF) {
53988
54217
  if (date < 60) dow = (dow + 6) % 7;
53989
54218
  if (b2) dow = fix_hijri(d, dout);
53990
54219
  }
54220
+ if ((v === null || v === void 0 ? void 0 : (_v$includes = v.includes) === null || _v$includes === void 0 ? void 0 : _v$includes.call(v, ':')) && isNaN(time)) {
54221
+ time = convert_to_seconds(v);
54222
+ }
53991
54223
  out.y = dout[0];
53992
54224
  out.m = dout[1];
53993
54225
  out.d = dout[2];
@@ -54891,7 +55123,7 @@ var make_ssf = function make_ssf(SSF) {
54891
55123
  break;
54892
55124
  default:
54893
55125
  // if ("¤฿BsBr₵₡₫ƒFtRs.₭kr£₤Lm₥₦₱PQRSkRp৲৳R$S/.〒₮₩¥NT¥zł₴₪៛руб€$,$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt);
54894
- if ("¤฿BsBr₵₡₫ƒFtRs.₭kr£₤Lm₥₦₱PQRSkRp৲৳R$S/.〒₮₩¥NT¥zł₴₪៛руб€₹$,$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP$¥LekdinAf$dhAflRial?£BirrKzMOPPGKRsGsB/R$ррlevkrKMzBsPNuFBuKPkrRD$NfkCFA?CVEGMDFrCDHTGNAfLFdjKGSFGGHSRielKCFknKshLSLL£LtRFRONArRfMWKRMMURsMROS/KMDLMTnRC$kr€GELCHFSLLSCRDbSZLSDGSOSSomFCFPTShT$VUVQUGXгрнsomWSTNT$FtDramRpZMWFCFA".indexOf(c) === -1) throw new Error("unrecognized character " + c + " in " + fmt);
55126
+ if ("Ω¤฿BsBr₵₡₫ƒFtRs.₭kr£₤Lm₥₦₱PQRSkRp৲৳R$S/.〒₮₩¥NT¥zł₴₪៛руб€₹$,$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP$¥LekdinAf$dhAflRial?£BirrKzMOPPGKRsGsB/R$ррlevkrKMzBsPNuFBuKPkrRD$NfkCFA?CVEGMDFrCDHTGNAfLFdjKGSFGGHSRielKCFknKshLSLL£LtRFRONArRfMWKRMMURsMROS/KMDLMTnRC$kr€GELCHFSLLSCRDbSZLSDGSOSSomFCFPTShT$VUVQUGXгрнsomWSTNT$FtDramRpZMWFCFA".indexOf(c) === -1) throw new Error("unrecognized character " + c + " in " + fmt);
54895
55127
  out[out.length] = {
54896
55128
  t: "t",
54897
55129
  v: c
@@ -55566,7 +55798,7 @@ function genarate(value) {
55566
55798
  t: "n"
55567
55799
  };
55568
55800
  v = parseFloat(value);
55569
- } else if (isdatetime(value) && (value.toString().indexOf(".") > -1 || value.toString().indexOf(":") > -1 || value.toString().length < 16)) {
55801
+ } else if (isdatetime(value, "24") && (value.toString().indexOf(".") > -1 || value.toString().indexOf(":") > -1 || value.toString().length < 16)) {
55570
55802
  v = datenum_local(parseDate(value.toString().replace(/-/g, "/")));
55571
55803
  if (v.toString().indexOf(".") > -1) {
55572
55804
  if (value.toString().length > 18) {
@@ -55581,6 +55813,21 @@ function genarate(value) {
55581
55813
  }
55582
55814
  ct.t = "d";
55583
55815
  m = SSF.format(ct.fa, v);
55816
+ } else if (isdatetime(value, "12") && (value.toString().indexOf(".") > -1 || value.toString().indexOf(":") > -1 || value.toString().length < 20)) {
55817
+ v = datenum_local(parseDate(value.toString().replace(/-/g, "/").replace(/(AM|PM)/gi, " $1").replace(/ +/g, " ")));
55818
+ if (v.toString().indexOf(".") > -1) {
55819
+ if (value.toString().length > 20) {
55820
+ ct.fa = "yyyy-MM-dd hh:mm:ss AM/PM";
55821
+ } else if (value.toString().length > 13) {
55822
+ ct.fa = "yyyy-MM-dd hh:mm AM/PM";
55823
+ } else {
55824
+ ct.fa = "yyyy-MM-dd";
55825
+ }
55826
+ } else {
55827
+ ct.fa = "yyyy-MM-dd";
55828
+ }
55829
+ ct.t = "d";
55830
+ m = SSF.format(ct.fa, v);
55584
55831
  } else {
55585
55832
  m = value;
55586
55833
  ct.fa = "General";
@@ -55680,6 +55927,203 @@ function colLocation(x, visibleCol) {
55680
55927
  return colLocationByIndex(col_index, visibleCol);
55681
55928
  }
55682
55929
 
55930
+ function setFormulaCellInfo(ctx, formulaCell, data) {
55931
+ var key = "r".concat(formulaCell.r, "c").concat(formulaCell.c, "i").concat(formulaCell.id);
55932
+ var calc_funcStr = getcellFormula(ctx, formulaCell.r, formulaCell.c, formulaCell.id, data);
55933
+ if (_.isNil(calc_funcStr)) {
55934
+ var _ctx$formulaCache$for;
55935
+ (_ctx$formulaCache$for = ctx.formulaCache.formulaCellInfoMap) === null || _ctx$formulaCache$for === void 0 ? true : delete _ctx$formulaCache$for[key];
55936
+ return;
55937
+ }
55938
+ var txt1 = calc_funcStr.toUpperCase();
55939
+ var isOffsetFunc = txt1.indexOf("INDIRECT(") > -1 || txt1.indexOf("OFFSET(") > -1 || txt1.indexOf("INDEX(") > -1;
55940
+ var formulaDependency = [];
55941
+ if (isOffsetFunc) {
55942
+ isFunctionRange(ctx, calc_funcStr, null, null, formulaCell.id, null, function (str_nb) {
55943
+ var range = getcellrange(ctx, _.trim(str_nb), formulaCell.id, data);
55944
+ if (!_.isNil(range)) {
55945
+ formulaDependency.push(range);
55946
+ }
55947
+ });
55948
+ } else if (!(calc_funcStr.substring(0, 2) === '="' && calc_funcStr.substring(calc_funcStr.length - 1, 1) === '"')) {
55949
+ var point = 0;
55950
+ var squote = -1;
55951
+ var dquote = -1;
55952
+ var formulaTextArray = [];
55953
+ var sq_end_array = [];
55954
+ var calc_funcStr_length = calc_funcStr.length;
55955
+ for (var j = 0; j < calc_funcStr_length; j += 1) {
55956
+ var char = calc_funcStr.charAt(j);
55957
+ if (char === "'" && dquote === -1) {
55958
+ if (squote === -1) {
55959
+ if (point !== j) {
55960
+ formulaTextArray.push.apply(formulaTextArray, _toConsumableArray(calc_funcStr.substring(point, j).split(/==|!=|<>|<=|>=|[,()=+-/*%&^><]/)));
55961
+ }
55962
+ squote = j;
55963
+ point = j;
55964
+ } else {
55965
+ if (j < calc_funcStr_length - 1 && calc_funcStr.charAt(j + 1) === "'") {
55966
+ j += 1;
55967
+ } else {
55968
+ point = j + 1;
55969
+ formulaTextArray.push(calc_funcStr.substring(squote, point));
55970
+ sq_end_array.push(formulaTextArray.length - 1);
55971
+ squote = -1;
55972
+ }
55973
+ }
55974
+ } else if (char === '"' && squote === -1) {
55975
+ if (dquote === -1) {
55976
+ if (point !== j) {
55977
+ formulaTextArray.push.apply(formulaTextArray, _toConsumableArray(calc_funcStr.substring(point, j).split(/==|!=|<>|<=|>=|[,()=+-/*%&^><]/)));
55978
+ }
55979
+ dquote = j;
55980
+ point = j;
55981
+ } else {
55982
+ if (j < calc_funcStr_length - 1 && calc_funcStr.charAt(j + 1) === '"') {
55983
+ j += 1;
55984
+ } else {
55985
+ point = j + 1;
55986
+ formulaTextArray.push(calc_funcStr.substring(dquote, point));
55987
+ dquote = -1;
55988
+ }
55989
+ }
55990
+ }
55991
+ }
55992
+ if (point !== calc_funcStr_length) {
55993
+ formulaTextArray.push.apply(formulaTextArray, _toConsumableArray(calc_funcStr.substring(point, calc_funcStr_length).split(/==|!=|<>|<=|>=|[,()=+-/*%&^><]/)));
55994
+ }
55995
+ for (var _j = sq_end_array.length - 1; _j >= 0; _j -= 1) {
55996
+ if (sq_end_array[_j] !== formulaTextArray.length - 1) {
55997
+ formulaTextArray[sq_end_array[_j]] += formulaTextArray[sq_end_array[_j] + 1];
55998
+ formulaTextArray.splice(sq_end_array[_j] + 1, 1);
55999
+ }
56000
+ }
56001
+ for (var _j2 = 0; _j2 < formulaTextArray.length; _j2 += 1) {
56002
+ var t = formulaTextArray[_j2];
56003
+ if (t.length <= 1) {
56004
+ continue;
56005
+ }
56006
+ if (t.substring(0, 1) === '"' && t.substring(t.length - 1, 1) === '"' || !iscelldata(t)) {
56007
+ continue;
56008
+ }
56009
+ var range = getcellrange(ctx, _.trim(t), formulaCell.id, data);
56010
+ if (_.isNil(range)) {
56011
+ continue;
56012
+ }
56013
+ formulaDependency.push(range);
56014
+ }
56015
+ }
56016
+ var item = {
56017
+ formulaDependency: formulaDependency,
56018
+ calc_funcStr: calc_funcStr,
56019
+ key: key,
56020
+ r: formulaCell.r,
56021
+ c: formulaCell.c,
56022
+ id: formulaCell.id,
56023
+ parents: {},
56024
+ chidren: {},
56025
+ color: "w"
56026
+ };
56027
+ if (!ctx.formulaCache.formulaCellInfoMap) ctx.formulaCache.formulaCellInfoMap = {};
56028
+ ctx.formulaCache.formulaCellInfoMap[key] = item;
56029
+ }
56030
+ function executeAffectedFormulas(ctx, formulaRunList, calcChains) {
56031
+ var calcChainSet = new Set();
56032
+ calcChains.forEach(function (item) {
56033
+ calcChainSet.add("".concat(item.r, "_").concat(item.c, "_").concat(item.id));
56034
+ });
56035
+ for (var i = 0; i < formulaRunList.length; i += 1) {
56036
+ var formulaCell = formulaRunList[i];
56037
+ if (formulaCell.level === Math.max) {
56038
+ continue;
56039
+ }
56040
+ var calc_funcStr = formulaCell.calc_funcStr;
56041
+ var v = execfunction(ctx, calc_funcStr, formulaCell.r, formulaCell.c, formulaCell.id, calcChainSet);
56042
+ ctx.groupValuesRefreshData.push({
56043
+ r: formulaCell.r,
56044
+ c: formulaCell.c,
56045
+ v: v[1],
56046
+ f: v[2],
56047
+ spe: v[3],
56048
+ id: formulaCell.id
56049
+ });
56050
+ ctx.formulaCache.execFunctionGlobalData["".concat(formulaCell.r, "_").concat(formulaCell.c, "_").concat(formulaCell.id)] = {
56051
+ v: v[1],
56052
+ f: v[2]
56053
+ };
56054
+ }
56055
+ }
56056
+ function getFormulaRunList(updateValueArray, formulaCellInfoMap) {
56057
+ var formulaRunList = [];
56058
+ var stack = updateValueArray;
56059
+ var existsFormulaRunList = {};
56060
+ var _loop = function _loop() {
56061
+ var formulaObject = stack.pop();
56062
+ if (_.isNil(formulaObject) || formulaObject.key in existsFormulaRunList) {
56063
+ return 0; // continue
56064
+ }
56065
+ if (formulaObject.color === "b") {
56066
+ formulaObject.color = "w";
56067
+ formulaRunList.push(formulaObject);
56068
+ existsFormulaRunList[formulaObject.key] = 1;
56069
+ return 0; // continue
56070
+ }
56071
+ var cacheStack = [];
56072
+ Object.keys(formulaObject.parents).forEach(function (parentKey) {
56073
+ var parentFormulaObject = formulaCellInfoMap[parentKey];
56074
+ if (!_.isNil(parentFormulaObject)) {
56075
+ cacheStack.push(parentFormulaObject);
56076
+ }
56077
+ });
56078
+ if (cacheStack.length === 0) {
56079
+ formulaRunList.push(formulaObject);
56080
+ existsFormulaRunList[formulaObject.key] = 1;
56081
+ } else {
56082
+ formulaObject.color = "b";
56083
+ stack.push(formulaObject);
56084
+ stack = stack.concat(cacheStack);
56085
+ }
56086
+ },
56087
+ _ret;
56088
+ while (stack.length > 0) {
56089
+ _ret = _loop();
56090
+ if (_ret === 0) continue;
56091
+ }
56092
+ formulaRunList.reverse();
56093
+ return formulaRunList;
56094
+ }
56095
+ var arrayMatch = function arrayMatch(arrayMatchCache, formulaDependency, _formulaCellInfoMap, _updateValueObjects, func) {
56096
+ for (var a = 0; a < formulaDependency.length; a += 1) {
56097
+ var range = formulaDependency[a];
56098
+ var cacheKey = "r".concat(range.row[0]).concat(range.row[1], "c").concat(range.column[0]).concat(range.column[1], "id").concat(range.sheetId);
56099
+ if (cacheKey in arrayMatchCache) {
56100
+ var amc = arrayMatchCache[cacheKey];
56101
+ amc.forEach(function (item) {
56102
+ func(item.key, item.r, item.c, item.sheetId);
56103
+ });
56104
+ } else {
56105
+ var functionArr = [];
56106
+ for (var r = range.row[0]; r <= range.row[1]; r += 1) {
56107
+ for (var c = range.column[0]; c <= range.column[1]; c += 1) {
56108
+ var key = "r".concat(r, "c").concat(c, "i").concat(range.sheetId);
56109
+ func(key, r, c, range.sheetId);
56110
+ if (_formulaCellInfoMap && key in _formulaCellInfoMap || _updateValueObjects && key in _updateValueObjects) {
56111
+ functionArr.push({
56112
+ key: key,
56113
+ r: r,
56114
+ c: c,
56115
+ sheetId: range.sheetId
56116
+ });
56117
+ }
56118
+ }
56119
+ }
56120
+ if (_formulaCellInfoMap || _updateValueObjects) {
56121
+ arrayMatchCache[cacheKey] = functionArr;
56122
+ }
56123
+ }
56124
+ }
56125
+ };
56126
+
55683
56127
  var functionHTMLIndex = 0;
55684
56128
  var rangeIndexes = [];
55685
56129
  var operatorPriority = {
@@ -55701,6 +56145,9 @@ var sheetNameRegexp = "(".concat(simpleSheetName, "|").concat(quotedSheetName, "
55701
56145
  var rowColumnRegexp = "[$]?[A-Za-z]+[$]?[0-9]+";
55702
56146
  var rowColumnWithSheetName = "(?:".concat(sheetNameRegexp, ")?(").concat(rowColumnRegexp, ")");
55703
56147
  var LABEL_EXTRACT_REGEXP = new RegExp("^".concat(rowColumnWithSheetName, "(?:[:]").concat(rowColumnWithSheetName, ")?$"));
56148
+ function isFormula(value) {
56149
+ return _.isString(value) && value.slice(0, 1) === "=" && value.length > 1;
56150
+ }
55704
56151
  var FormulaCache = /*#__PURE__*/function () {
55705
56152
  function FormulaCache() {
55706
56153
  _classCallCheck(this, FormulaCache);
@@ -55727,11 +56174,13 @@ var FormulaCache = /*#__PURE__*/function () {
55727
56174
  this.functionlistMap = void 0;
55728
56175
  this.execFunctionExist = void 0;
55729
56176
  this.execFunctionGlobalData = void 0;
56177
+ this.formulaCellInfoMap = void 0;
55730
56178
  var that = this;
55731
56179
  this.data_parm_index = 0;
55732
56180
  this.selectingRangeIndex = -1;
55733
56181
  this.functionlistMap = {};
55734
56182
  this.execFunctionGlobalData = {};
56183
+ this.formulaCellInfoMap = null;
55735
56184
  this.cellTextToIndexList = {};
55736
56185
  this.parser = new Parser();
55737
56186
  this.parser.on("callCellValue", function (cellCoord, options, done) {
@@ -55792,6 +56241,38 @@ var FormulaCache = /*#__PURE__*/function () {
55792
56241
  }
55793
56242
  return cell === null || cell === void 0 ? void 0 : cell.v;
55794
56243
  }
56244
+ }, {
56245
+ key: "updateFormulaCache",
56246
+ value: function updateFormulaCache(ctx, history, type, data) {
56247
+ function requestUpdate(value) {
56248
+ if (value instanceof Object) {
56249
+ if (!_.isNil(value.r) && !_.isNil(value.c)) {
56250
+ var _history$options;
56251
+ setFormulaCellInfo(ctx, {
56252
+ r: value.r,
56253
+ c: value.c,
56254
+ id: value.id || ((_history$options = history.options) === null || _history$options === void 0 ? void 0 : _history$options.id) || ctx.currentSheetId
56255
+ }, data);
56256
+ }
56257
+ }
56258
+ }
56259
+ var changesHistory = type === "undo" ? history.inversePatches : history.patches;
56260
+ changesHistory.forEach(function (patch) {
56261
+ var _patch$value;
56262
+ if (isFormula((_patch$value = patch.value) === null || _patch$value === void 0 ? void 0 : _patch$value.f) || patch.value === null || patch.path[5] === "f") {
56263
+ requestUpdate({
56264
+ r: patch.path[3],
56265
+ c: patch.path[4]
56266
+ });
56267
+ } else if (Array.isArray(patch.value)) {
56268
+ patch.value.forEach(function (value) {
56269
+ requestUpdate(value);
56270
+ });
56271
+ } else {
56272
+ requestUpdate(patch.value);
56273
+ }
56274
+ });
56275
+ }
55795
56276
  }]);
55796
56277
  }();
55797
56278
  function parseElement(eleString) {
@@ -55856,14 +56337,14 @@ function addToCellIndexList(ctx, txt, infoObj) {
55856
56337
  ctx.formulaCache.cellTextToIndexList["".concat(txt, "_").concat(infoObj.sheetId)] = infoObj;
55857
56338
  }
55858
56339
  }
55859
- function getcellrange(ctx, txt, formulaId) {
56340
+ function getcellrange(ctx, txt, formulaId, data) {
55860
56341
  if (_.isNil(txt) || txt.length === 0) {
55861
56342
  return null;
55862
56343
  }
55863
- var flowdata = getFlowdata(ctx, formulaId);
56344
+ var flowdata = data || getFlowdata(ctx, formulaId);
55864
56345
  var sheettxt = "";
55865
56346
  var rangetxt = "";
55866
- var sheetId = null;
56347
+ var sheetId;
55867
56348
  var sheetdata = null;
55868
56349
  var luckysheetfile = ctx.luckysheetfile;
55869
56350
  if (txt.indexOf("!") > -1) {
@@ -55927,8 +56408,8 @@ function getcellrange(ctx, txt, formulaId) {
55927
56408
  return null;
55928
56409
  }
55929
56410
  var rangetxtArr = rangetxt.split(":");
55930
- var row = [];
55931
- var col = [];
56411
+ var row = [-1, -1];
56412
+ var col = [-1, -1];
55932
56413
  row[0] = parseInt(rangetxtArr[0].replace(/[^0-9]/g, ""), 10) - 1;
55933
56414
  row[1] = parseInt(rangetxtArr[1].replace(/[^0-9]/g, ""), 10) - 1;
55934
56415
  if (Number.isNaN(row[0])) {
@@ -56240,7 +56721,7 @@ function delFunctionGroup(ctx, r, c, id) {
56240
56721
  var calcChain = file.calcChain;
56241
56722
  if (!_.isNil(calcChain)) {
56242
56723
  var modified = false;
56243
- var calcChainClone = _.cloneDeep(calcChain);
56724
+ var calcChainClone = calcChain.slice();
56244
56725
  for (var _i4 = 0; _i4 < calcChainClone.length; _i4 += 1) {
56245
56726
  var calc = calcChainClone[_i4];
56246
56727
  if (calc.r === r && calc.c === c && calc.id === id) {
@@ -56256,7 +56737,7 @@ function delFunctionGroup(ctx, r, c, id) {
56256
56737
  var dynamicArray = file.dynamicArray;
56257
56738
  if (!_.isNil(dynamicArray)) {
56258
56739
  var _modified = false;
56259
- var dynamicArrayClone = _.cloneDeep(dynamicArray);
56740
+ var dynamicArrayClone = dynamicArray.slice();
56260
56741
  for (var _i5 = 0; _i5 < dynamicArrayClone.length; _i5 += 1) {
56261
56742
  var _calc = dynamicArrayClone[_i5];
56262
56743
  if (_calc.r === r && _calc.c === c && (_.isNil(_calc.id) || _calc.id === id)) {
@@ -56424,6 +56905,13 @@ function groupValuesRefresh(ctx) {
56424
56905
  ctx.groupValuesRefreshData = [];
56425
56906
  }
56426
56907
  }
56908
+ function setFormulaCellInfoMap(ctx, calcChains, data) {
56909
+ if (_.isNil(calcChains)) return;
56910
+ for (var _i1 = 0; _i1 < calcChains.length; _i1 += 1) {
56911
+ var formulaCell = calcChains[_i1];
56912
+ setFormulaCellInfo(ctx, formulaCell, data);
56913
+ }
56914
+ }
56427
56915
  function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
56428
56916
  var isForce = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
56429
56917
  if (_.isNil(data)) {
@@ -56444,168 +56932,32 @@ function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
56444
56932
  ctx.formulaCache.execFunctionGlobalData["".concat(origin_r, "_").concat(origin_c, "_").concat(id)] = _cellCache$[0];
56445
56933
  }
56446
56934
  var calcChains = getAllFunctionGroup(ctx);
56447
- var formulaObjects = {};
56448
- var sheets = ctx.luckysheetfile;
56449
- var sheetData = {};
56450
- for (var _i1 = 0; _i1 < sheets.length; _i1 += 1) {
56451
- var sheet = sheets[_i1];
56452
- sheetData[sheet.id] = sheet.data;
56453
- }
56454
- var updateValueOjects = {};
56455
- var updateValueArray = [];
56935
+ var updateValueObjects = {};
56456
56936
  if (_.isNil(ctx.formulaCache.execFunctionExist)) {
56457
56937
  var key = "r".concat(origin_r, "c").concat(origin_c, "i").concat(id);
56458
- updateValueOjects[key] = 1;
56938
+ updateValueObjects[key] = 1;
56459
56939
  } else {
56460
56940
  for (var x = 0; x < ctx.formulaCache.execFunctionExist.length; x += 1) {
56461
56941
  var cell = ctx.formulaCache.execFunctionExist[x];
56462
56942
  var _key = "r".concat(cell.r, "c").concat(cell.c, "i").concat(cell.i);
56463
- updateValueOjects[_key] = 1;
56943
+ updateValueObjects[_key] = 1;
56464
56944
  }
56465
56945
  }
56466
- var arrayMatchCache = {};
56467
- var arrayMatch = function arrayMatch(formulaArray, _formulaObjects, _updateValueOjects, func) {
56468
- for (var a = 0; a < formulaArray.length; a += 1) {
56469
- var range = formulaArray[a];
56470
- var cacheKey = "r".concat(range.row[0]).concat(range.row[1], "c").concat(range.column[0]).concat(range.column[1], "id").concat(range.sheetId);
56471
- if (cacheKey in arrayMatchCache) {
56472
- var amc = arrayMatchCache[cacheKey];
56473
- amc.forEach(function (item) {
56474
- func(item.key, item.r, item.c, item.sheetId);
56475
- });
56476
- } else {
56477
- var functionArr = [];
56478
- for (var r = range.row[0]; r <= range.row[1]; r += 1) {
56479
- for (var c = range.column[0]; c <= range.column[1]; c += 1) {
56480
- var _key2 = "r".concat(r, "c").concat(c, "i").concat(range.sheetId);
56481
- func(_key2, r, c, range.sheetId);
56482
- if (_formulaObjects && _key2 in _formulaObjects || _updateValueOjects && _key2 in _updateValueOjects) {
56483
- functionArr.push({
56484
- key: _key2,
56485
- r: r,
56486
- c: c,
56487
- sheetId: range.sheetId
56488
- });
56489
- }
56490
- }
56491
- }
56492
- if (_formulaObjects || _updateValueOjects) {
56493
- arrayMatchCache[cacheKey] = functionArr;
56494
- }
56495
- }
56496
- }
56497
- };
56498
- var _loop = function _loop() {
56499
- var formulaCell = calcChains[_i10];
56500
- var key = "r".concat(formulaCell.r, "c").concat(formulaCell.c, "i").concat(formulaCell.id);
56501
- var calc_funcStr = getcellFormula(ctx, formulaCell.r, formulaCell.c, formulaCell.id);
56502
- if (_.isNil(calc_funcStr)) {
56503
- return 1; // continue
56504
- }
56505
- var txt1 = calc_funcStr.toUpperCase();
56506
- var isOffsetFunc = txt1.indexOf("INDIRECT(") > -1 || txt1.indexOf("OFFSET(") > -1 || txt1.indexOf("INDEX(") > -1;
56507
- var formulaArray = [];
56508
- if (isOffsetFunc) {
56509
- isFunctionRange(ctx, calc_funcStr, null, null, formulaCell.id, null, function (str_nb) {
56510
- var range = getcellrange(ctx, _.trim(str_nb), formulaCell.id);
56511
- if (!_.isNil(range)) {
56512
- formulaArray.push(range);
56513
- }
56514
- });
56515
- } else if (!(calc_funcStr.substring(0, 2) === '="' && calc_funcStr.substring(calc_funcStr.length - 1, 1) === '"')) {
56516
- var point = 0;
56517
- var squote = -1;
56518
- var dquote = -1;
56519
- var formulaTextArray = [];
56520
- var sq_end_array = [];
56521
- var calc_funcStr_length = calc_funcStr.length;
56522
- for (var j = 0; j < calc_funcStr_length; j += 1) {
56523
- var char = calc_funcStr.charAt(j);
56524
- if (char === "'" && dquote === -1) {
56525
- if (squote === -1) {
56526
- if (point !== j) {
56527
- formulaTextArray.push.apply(formulaTextArray, _toConsumableArray(calc_funcStr.substring(point, j).split(/==|!=|<>|<=|>=|[,()=+-/*%&^><]/)));
56528
- }
56529
- squote = j;
56530
- point = j;
56531
- } else {
56532
- if (j < calc_funcStr_length - 1 && calc_funcStr.charAt(j + 1) === "'") {
56533
- j += 1;
56534
- } else {
56535
- point = j + 1;
56536
- formulaTextArray.push(calc_funcStr.substring(squote, point));
56537
- sq_end_array.push(formulaTextArray.length - 1);
56538
- squote = -1;
56539
- }
56540
- }
56541
- }
56542
- if (char === '"' && squote === -1) {
56543
- if (dquote === -1) {
56544
- if (point !== j) {
56545
- formulaTextArray.push.apply(formulaTextArray, _toConsumableArray(calc_funcStr.substring(point, j).split(/==|!=|<>|<=|>=|[,()=+-/*%&^><]/)));
56546
- }
56547
- dquote = j;
56548
- point = j;
56549
- } else {
56550
- if (j < calc_funcStr_length - 1 && calc_funcStr.charAt(j + 1) === '"') {
56551
- j += 1;
56552
- } else {
56553
- point = j + 1;
56554
- formulaTextArray.push(calc_funcStr.substring(dquote, point));
56555
- dquote = -1;
56556
- }
56557
- }
56558
- }
56559
- }
56560
- if (point !== calc_funcStr_length) {
56561
- formulaTextArray.push.apply(formulaTextArray, _toConsumableArray(calc_funcStr.substring(point, calc_funcStr_length).split(/==|!=|<>|<=|>=|[,()=+-/*%&^><]/)));
56562
- }
56563
- for (var _j = sq_end_array.length - 1; _j >= 0; _j -= 1) {
56564
- if (sq_end_array[_j] !== formulaTextArray.length - 1) {
56565
- formulaTextArray[sq_end_array[_j]] += formulaTextArray[sq_end_array[_j] + 1];
56566
- formulaTextArray.splice(sq_end_array[_j] + 1, 1);
56567
- }
56568
- }
56569
- for (var _j2 = 0; _j2 < formulaTextArray.length; _j2 += 1) {
56570
- var t = formulaTextArray[_j2];
56571
- if (t.length <= 1) {
56572
- continue;
56573
- }
56574
- if (t.substring(0, 1) === '"' && t.substring(t.length - 1, 1) === '"' || !iscelldata(t)) {
56575
- continue;
56576
- }
56577
- var range = getcellrange(ctx, _.trim(t), formulaCell.id);
56578
- if (_.isNil(range)) {
56579
- continue;
56580
- }
56581
- formulaArray.push(range);
56582
- }
56583
- }
56584
- var item = {
56585
- formulaArray: formulaArray,
56586
- calc_funcStr: calc_funcStr,
56587
- key: key,
56588
- r: formulaCell.r,
56589
- c: formulaCell.c,
56590
- id: formulaCell.id,
56591
- parents: {},
56592
- chidren: {},
56593
- color: "w"
56594
- };
56595
- formulaObjects[key] = item;
56596
- };
56597
- for (var _i10 = 0; _i10 < calcChains.length; _i10 += 1) {
56598
- if (_loop()) continue;
56946
+ if (!ctx.formulaCache.formulaCellInfoMap || _.isEmpty(ctx.formulaCache.formulaCellInfoMap)) {
56947
+ ctx.formulaCache.formulaCellInfoMap = {};
56948
+ setFormulaCellInfoMap(ctx, calcChains, data);
56599
56949
  }
56600
- Object.keys(formulaObjects).forEach(function (key) {
56601
- var formulaObject = formulaObjects[key];
56602
- arrayMatch(formulaObject.formulaArray, formulaObjects, updateValueOjects, function (childKey) {
56603
- if (childKey in formulaObjects) {
56604
- var childFormulaObject = formulaObjects[childKey];
56605
- formulaObject.chidren[childKey] = 1;
56950
+ var formulaCellInfoMap = ctx.formulaCache.formulaCellInfoMap;
56951
+ var updateValueArray = [];
56952
+ var arrayMatchCache = {};
56953
+ Object.keys(formulaCellInfoMap).forEach(function (key) {
56954
+ var formulaObject = formulaCellInfoMap[key];
56955
+ arrayMatch(arrayMatchCache, formulaObject.formulaDependency, formulaCellInfoMap, updateValueObjects, function (childKey) {
56956
+ if (childKey in formulaCellInfoMap) {
56957
+ var childFormulaObject = formulaCellInfoMap[childKey];
56606
56958
  childFormulaObject.parents[key] = 1;
56607
56959
  }
56608
- if (!isForce && childKey in updateValueOjects) {
56960
+ if (!isForce && childKey in updateValueObjects) {
56609
56961
  updateValueArray.push(formulaObject);
56610
56962
  }
56611
56963
  });
@@ -56613,65 +56965,8 @@ function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
56613
56965
  updateValueArray.push(formulaObject);
56614
56966
  }
56615
56967
  });
56616
- var formulaRunList = [];
56617
- var stack = updateValueArray;
56618
- var existsFormulaRunList = {};
56619
- var _loop2 = function _loop2() {
56620
- var formulaObject = stack.pop();
56621
- if (_.isNil(formulaObject) || formulaObject.key in existsFormulaRunList) {
56622
- return 0; // continue
56623
- }
56624
- if (formulaObject.color === "b") {
56625
- formulaRunList.push(formulaObject);
56626
- existsFormulaRunList[formulaObject.key] = 1;
56627
- return 0; // continue
56628
- }
56629
- var cacheStack = [];
56630
- Object.keys(formulaObject.parents).forEach(function (parentKey) {
56631
- var parentFormulaObject = formulaObjects[parentKey];
56632
- if (!_.isNil(parentFormulaObject)) {
56633
- cacheStack.push(parentFormulaObject);
56634
- }
56635
- });
56636
- if (cacheStack.length === 0) {
56637
- formulaRunList.push(formulaObject);
56638
- existsFormulaRunList[formulaObject.key] = 1;
56639
- } else {
56640
- formulaObject.color = "b";
56641
- stack.push(formulaObject);
56642
- stack = stack.concat(cacheStack);
56643
- }
56644
- },
56645
- _ret;
56646
- while (stack.length > 0) {
56647
- _ret = _loop2();
56648
- if (_ret === 0) continue;
56649
- }
56650
- formulaRunList.reverse();
56651
- var calcChainSet = new Set();
56652
- calcChains.forEach(function (item) {
56653
- calcChainSet.add("".concat(item.r, "_").concat(item.c, "_").concat(item.id));
56654
- });
56655
- for (var _i11 = 0; _i11 < formulaRunList.length; _i11 += 1) {
56656
- var formulaCell = formulaRunList[_i11];
56657
- if (formulaCell.level === Math.max) {
56658
- continue;
56659
- }
56660
- var calc_funcStr = formulaCell.calc_funcStr;
56661
- var v = execfunction(ctx, calc_funcStr, formulaCell.r, formulaCell.c, formulaCell.id, calcChainSet);
56662
- ctx.groupValuesRefreshData.push({
56663
- r: formulaCell.r,
56664
- c: formulaCell.c,
56665
- v: v[1],
56666
- f: v[2],
56667
- spe: v[3],
56668
- id: formulaCell.id
56669
- });
56670
- ctx.formulaCache.execFunctionGlobalData["".concat(formulaCell.r, "_").concat(formulaCell.c, "_").concat(formulaCell.id)] = {
56671
- v: v[1],
56672
- f: v[2]
56673
- };
56674
- }
56968
+ var formulaRunList = getFormulaRunList(updateValueArray, formulaCellInfoMap);
56969
+ executeAffectedFormulas(ctx, formulaRunList, calcChains);
56675
56970
  ctx.formulaCache.execFunctionExist = undefined;
56676
56971
  }
56677
56972
  function findrangeindex(ctx, v, vp) {
@@ -56685,26 +56980,26 @@ function findrangeindex(ctx, v, vp) {
56685
56980
  var vplen = vp_a.length;
56686
56981
  var vlen = v_a.length;
56687
56982
  if (vplen === vlen) {
56688
- var _i12 = pfri[0];
56689
- var p = vp_a[_i12];
56690
- var n = v_a[_i12];
56983
+ var _i10 = pfri[0];
56984
+ var p = vp_a[_i10];
56985
+ var n = v_a[_i10];
56691
56986
  if (_.isNil(p)) {
56692
- if (vp_a.length <= _i12) {
56987
+ if (vp_a.length <= _i10) {
56693
56988
  pfri = [vp_a.length - 1, vp_a.length - 1];
56694
- } else if (v_a.length <= _i12) {
56989
+ } else if (v_a.length <= _i10) {
56695
56990
  pfri = [v_a.length - 1, v_a.length - 1];
56696
56991
  }
56697
56992
  return pfri;
56698
56993
  }
56699
56994
  if (p.length === n.length) {
56700
- if (!_.isNil(vp_a[_i12 + 1]) && !_.isNil(v_a[_i12 + 1]) && vp_a[_i12 + 1].length < v_a[_i12 + 1].length) {
56995
+ if (!_.isNil(vp_a[_i10 + 1]) && !_.isNil(v_a[_i10 + 1]) && vp_a[_i10 + 1].length < v_a[_i10 + 1].length) {
56701
56996
  pfri[0] += 1;
56702
56997
  pfri[1] = 1;
56703
56998
  }
56704
56999
  return pfri;
56705
57000
  }
56706
57001
  if (p.length > n.length) {
56707
- if (!_.isNil(p) && !_.isNil(v_a[_i12 + 1]) && v_a[_i12 + 1].substring(0, 1) === '"' && (p.indexOf("{") > -1 || p.indexOf("}") > -1)) {
57002
+ if (!_.isNil(p) && !_.isNil(v_a[_i10 + 1]) && v_a[_i10 + 1].substring(0, 1) === '"' && (p.indexOf("{") > -1 || p.indexOf("}") > -1)) {
56708
57003
  pfri[0] += 1;
56709
57004
  pfri[1] = 1;
56710
57005
  }
@@ -56717,34 +57012,34 @@ function findrangeindex(ctx, v, vp) {
56717
57012
  return pfri;
56718
57013
  }
56719
57014
  } else if (vplen > vlen) {
56720
- var _i13 = pfri[0];
56721
- var _p = vp_a[_i13];
56722
- var _n = v_a[_i13];
57015
+ var _i11 = pfri[0];
57016
+ var _p = vp_a[_i11];
57017
+ var _n = v_a[_i11];
56723
57018
  if (_.isNil(_n)) {
56724
- if (v_a[_i13 - 1].indexOf("{") > -1) {
57019
+ if (v_a[_i11 - 1].indexOf("{") > -1) {
56725
57020
  pfri[0] -= 1;
56726
- var start = v_a[_i13 - 1].search("{");
57021
+ var start = v_a[_i11 - 1].search("{");
56727
57022
  pfri[1] += start;
56728
57023
  } else {
56729
57024
  pfri[0] = 0;
56730
57025
  pfri[1] = 0;
56731
57026
  }
56732
57027
  } else if (_p.length === _n.length) {
56733
- if (!_.isNil(v_a[_i13 + 1]) && (v_a[_i13 + 1].substring(0, 1) === '"' || v_a[_i13 + 1].substring(0, 1) === "{" || v_a[_i13 + 1].substring(0, 1) === "}")) {
57028
+ if (!_.isNil(v_a[_i11 + 1]) && (v_a[_i11 + 1].substring(0, 1) === '"' || v_a[_i11 + 1].substring(0, 1) === "{" || v_a[_i11 + 1].substring(0, 1) === "}")) {
56734
57029
  pfri[0] += 1;
56735
57030
  pfri[1] = 1;
56736
- } else if (!_.isNil(_p) && _p.length > 2 && _p.substring(0, 1) === '"' && _p.substring(_p.length - 1, 1) === '"') ; else if (!_.isNil(v_a[_i13]) && v_a[_i13] === '")') {
57031
+ } else if (!_.isNil(_p) && _p.length > 2 && _p.substring(0, 1) === '"' && _p.substring(_p.length - 1, 1) === '"') ; else if (!_.isNil(v_a[_i11]) && v_a[_i11] === '")') {
56737
57032
  pfri[1] = 1;
56738
- } else if (!_.isNil(v_a[_i13]) && v_a[_i13] === '"}') {
57033
+ } else if (!_.isNil(v_a[_i11]) && v_a[_i11] === '"}') {
56739
57034
  pfri[1] = 1;
56740
- } else if (!_.isNil(v_a[_i13]) && v_a[_i13] === "{)") {
57035
+ } else if (!_.isNil(v_a[_i11]) && v_a[_i11] === "{)") {
56741
57036
  pfri[1] = 1;
56742
57037
  } else {
56743
57038
  pfri[1] = _n.length;
56744
57039
  }
56745
57040
  return pfri;
56746
57041
  } else if (_p.length > _n.length) {
56747
- if (!_.isNil(v_a[_i13 + 1]) && (v_a[_i13 + 1].substring(0, 1) === '"' || v_a[_i13 + 1].substring(0, 1) === "{" || v_a[_i13 + 1].substring(0, 1) === "}")) {
57042
+ if (!_.isNil(v_a[_i11 + 1]) && (v_a[_i11 + 1].substring(0, 1) === '"' || v_a[_i11 + 1].substring(0, 1) === "{" || v_a[_i11 + 1].substring(0, 1) === "}")) {
56748
57043
  pfri[0] += 1;
56749
57044
  pfri[1] = 1;
56750
57045
  }
@@ -56754,9 +57049,9 @@ function findrangeindex(ctx, v, vp) {
56754
57049
  }
56755
57050
  return pfri;
56756
57051
  } else if (vplen < vlen) {
56757
- var _i14 = pfri[0];
56758
- var _p2 = vp_a[_i14];
56759
- var _n2 = v_a[_i14];
57052
+ var _i12 = pfri[0];
57053
+ var _p2 = vp_a[_i12];
57054
+ var _n2 = v_a[_i12];
56760
57055
  if (_.isNil(_p2)) {
56761
57056
  pfri[0] = v_a.length - 1;
56762
57057
  if (!_.isNil(_n2)) {
@@ -56765,9 +57060,9 @@ function findrangeindex(ctx, v, vp) {
56765
57060
  pfri[1] = 1;
56766
57061
  }
56767
57062
  } else if (_p2.length === _n2.length) {
56768
- if (vp_a[_i14 + 1] != null && (vp_a[_i14 + 1].substring(0, 1) === '"' || vp_a[_i14 + 1].substring(0, 1) === "{" || vp_a[_i14 + 1].substring(0, 1) === "}")) {
57063
+ if (vp_a[_i12 + 1] != null && (vp_a[_i12 + 1].substring(0, 1) === '"' || vp_a[_i12 + 1].substring(0, 1) === "{" || vp_a[_i12 + 1].substring(0, 1) === "}")) {
56769
57064
  pfri[1] = _n2.length;
56770
- } else if (!_.isNil(v_a[_i14 + 1]) && v_a[_i14 + 1].substring(0, 1) === '"' && (v_a[_i14 + 1].substring(0, 1) === "{" || v_a[_i14 + 1].substring(0, 1) === "}")) {
57065
+ } else if (!_.isNil(v_a[_i12 + 1]) && v_a[_i12 + 1].substring(0, 1) === '"' && (v_a[_i12 + 1].substring(0, 1) === "{" || v_a[_i12 + 1].substring(0, 1) === "}")) {
56771
57066
  pfri[0] += 1;
56772
57067
  pfri[1] = 1;
56773
57068
  } else if (!_.isNil(_n2) && _n2.substring(0, 1) === '"' && _n2.substring(_n2.length - 1, 1) === '"' && _p2.substring(0, 1) === '"' && _p2.substring(_p2.length - 1, 1) === ")") {
@@ -56777,7 +57072,7 @@ function findrangeindex(ctx, v, vp) {
56777
57072
  } else {
56778
57073
  pfri[0] = pfri[0] + vlen - vplen;
56779
57074
  if (v_a.length > vp_a.length) {
56780
- pfri[1] = v_a[_i14 + 1].length;
57075
+ pfri[1] = v_a[_i12 + 1].length;
56781
57076
  } else {
56782
57077
  pfri[1] = 1;
56783
57078
  }
@@ -56786,17 +57081,17 @@ function findrangeindex(ctx, v, vp) {
56786
57081
  } else if (_p2.length > _n2.length) {
56787
57082
  if (!_.isNil(_p2) && _p2.substring(0, 1) === '"') {
56788
57083
  pfri[1] = _n2.length;
56789
- } else if (_.isNil(v_a[_i14 + 1]) && /{.*?}/.test(v_a[_i14 + 1])) {
57084
+ } else if (_.isNil(v_a[_i12 + 1]) && /{.*?}/.test(v_a[_i12 + 1])) {
56790
57085
  pfri[0] += 1;
56791
- pfri[1] = v_a[_i14 + 1].length;
56792
- } else if (!_.isNil(_p2) && v_a[_i14 + 1].substring(0, 1) === '"' && (_p2.indexOf("{") > -1 || _p2.indexOf("}") > -1)) {
57086
+ pfri[1] = v_a[_i12 + 1].length;
57087
+ } else if (!_.isNil(_p2) && v_a[_i12 + 1].substring(0, 1) === '"' && (_p2.indexOf("{") > -1 || _p2.indexOf("}") > -1)) {
56793
57088
  pfri[0] += 1;
56794
57089
  pfri[1] = 1;
56795
57090
  } else if (!_.isNil(_p2) && (_p2.indexOf("{") > -1 || _p2.indexOf("}") > -1)) ; else if (!_.isNil(_p2) && !_.startsWith(_p2[0], "=") && _.startsWith(_n2, "=")) {
56796
57091
  return [vlen - 1, v_a[vlen - 1].length];
56797
57092
  } else {
56798
57093
  pfri[0] = pfri[0] + vlen - vplen - 1;
56799
- pfri[1] = v_a[(_i14 || 1) - 1].length;
57094
+ pfri[1] = v_a[(_i12 || 1) - 1].length;
56800
57095
  }
56801
57096
  return pfri;
56802
57097
  } else if (_p2.length < _n2.length) {
@@ -56818,7 +57113,7 @@ function createRangeHightlight(ctx, inputInnerHtmlStr) {
56818
57113
  if (rangeIndex === ignoreRangeIndex) return;
56819
57114
  var cellrange = getcellrange(ctx, ele.textContent || "");
56820
57115
  if (rangeIndex === ctx.formulaCache.selectingRangeIndex || cellrange == null) return;
56821
- if (cellrange.sheetId === ctx.currentSheetId || cellrange.sheetId === -1 && ctx.formulaCache.rangetosheet === ctx.currentSheetId) {
57116
+ if (cellrange.sheetId === ctx.currentSheetId || !cellrange.sheetId && ctx.formulaCache.rangetosheet === ctx.currentSheetId) {
56822
57117
  var rect = seletedHighlistByindex(ctx, cellrange.row[0], cellrange.row[1], cellrange.column[0], cellrange.column[1]);
56823
57118
  if (rect) {
56824
57119
  formulaRanges.push(_objectSpread2(_objectSpread2({
@@ -56870,8 +57165,8 @@ function searchFunction(ctx, searchtxt) {
56870
57165
  var s = [];
56871
57166
  var t = [];
56872
57167
  var result_i = 0;
56873
- for (var _i15 = 0; _i15 < functionlist.length; _i15 += 1) {
56874
- var item = functionlist[_i15];
57168
+ for (var _i13 = 0; _i13 < functionlist.length; _i13 += 1) {
57169
+ var item = functionlist[_i13];
56875
57170
  var n = item.n;
56876
57171
  if (n === searchtxt) {
56877
57172
  f.unshift(item);
@@ -56933,8 +57228,8 @@ function helpFunctionExe($editer, currSelection, ctx) {
56933
57228
  var _locale2 = locale(ctx),
56934
57229
  functionlist = _locale2.functionlist;
56935
57230
  if (_.isEmpty(ctx.formulaCache.functionlistMap)) {
56936
- for (var _i16 = 0; _i16 < functionlist.length; _i16 += 1) {
56937
- ctx.formulaCache.functionlistMap[functionlist[_i16].n] = functionlist[_i16];
57231
+ for (var _i14 = 0; _i14 < functionlist.length; _i14 += 1) {
57232
+ ctx.formulaCache.functionlistMap[functionlist[_i14].n] = functionlist[_i14];
56938
57233
  }
56939
57234
  }
56940
57235
  if (!currSelection) {
@@ -58101,17 +58396,19 @@ function setConditionRules(ctx, protection, generalDialog, conditionformat, rule
58101
58396
  var v = rules.rulesValue;
58102
58397
  var rangeArr = getRangeByTxt(ctx, v);
58103
58398
  if (rangeArr.length > 1) {
58104
- var r1 = rangeArr[0].row[0];
58105
- var r2 = rangeArr[0].row[1];
58106
- var c1 = rangeArr[0].column[0];
58107
- var c2 = rangeArr[0].column[1];
58399
+ var _rangeArr$, _rangeArr$2, _rangeArr$3, _rangeArr$4;
58400
+ var r1 = (_rangeArr$ = rangeArr[0]) === null || _rangeArr$ === void 0 ? void 0 : _rangeArr$.row[0];
58401
+ var r2 = (_rangeArr$2 = rangeArr[0]) === null || _rangeArr$2 === void 0 ? void 0 : _rangeArr$2.row[1];
58402
+ var c1 = (_rangeArr$3 = rangeArr[0]) === null || _rangeArr$3 === void 0 ? void 0 : _rangeArr$3.column[0];
58403
+ var c2 = (_rangeArr$4 = rangeArr[0]) === null || _rangeArr$4 === void 0 ? void 0 : _rangeArr$4.column[1];
58108
58404
  if (r1 === r2 && c1 === c2) {
58405
+ var _rangeArr$5, _rangeArr$6;
58109
58406
  var d = getFlowdata(ctx);
58110
- if (!d) return;
58407
+ if (!d || _.isNil(r1) || _.isNil(c1)) return;
58111
58408
  v = getCellValue(r1, c1, d);
58112
58409
  conditionRange.push({
58113
- row: rangeArr[0].row,
58114
- column: rangeArr[0].column
58410
+ row: rangeArr === null || rangeArr === void 0 ? void 0 : (_rangeArr$5 = rangeArr[0]) === null || _rangeArr$5 === void 0 ? void 0 : _rangeArr$5.row,
58411
+ column: rangeArr === null || rangeArr === void 0 ? void 0 : (_rangeArr$6 = rangeArr[0]) === null || _rangeArr$6 === void 0 ? void 0 : _rangeArr$6.column
58115
58412
  });
58116
58413
  conditionValue.push(v);
58117
58414
  } else {
@@ -58133,17 +58430,19 @@ function setConditionRules(ctx, protection, generalDialog, conditionformat, rule
58133
58430
  return;
58134
58431
  }
58135
58432
  if (rangeArr1.length === 1) {
58136
- var _r = rangeArr1[0].row[0];
58137
- var _r2 = rangeArr1[0].row[1];
58138
- var _c = rangeArr1[0].column[0];
58139
- var _c2 = rangeArr1[0].column[1];
58433
+ var _rangeArr1$, _rangeArr1$2, _rangeArr1$3, _rangeArr1$4;
58434
+ var _r = (_rangeArr1$ = rangeArr1[0]) === null || _rangeArr1$ === void 0 ? void 0 : _rangeArr1$.row[0];
58435
+ var _r2 = (_rangeArr1$2 = rangeArr1[0]) === null || _rangeArr1$2 === void 0 ? void 0 : _rangeArr1$2.row[1];
58436
+ var _c = (_rangeArr1$3 = rangeArr1[0]) === null || _rangeArr1$3 === void 0 ? void 0 : _rangeArr1$3.column[0];
58437
+ var _c2 = (_rangeArr1$4 = rangeArr1[0]) === null || _rangeArr1$4 === void 0 ? void 0 : _rangeArr1$4.column[1];
58140
58438
  if (_r === _r2 && _c === _c2) {
58439
+ var _rangeArr1$5, _rangeArr1$6;
58141
58440
  var _d = getFlowdata(ctx);
58142
- if (!_d) return;
58441
+ if (!_d || _.isNil(_r) || _.isNil(_c)) return;
58143
58442
  v1 = getCellValue(_r, _c, _d);
58144
58443
  conditionRange.push({
58145
- row: rangeArr1[0].row,
58146
- column: rangeArr1[0].column
58444
+ row: rangeArr1 === null || rangeArr1 === void 0 ? void 0 : (_rangeArr1$5 = rangeArr1[0]) === null || _rangeArr1$5 === void 0 ? void 0 : _rangeArr1$5.row,
58445
+ column: rangeArr1 === null || rangeArr1 === void 0 ? void 0 : (_rangeArr1$6 = rangeArr1[0]) === null || _rangeArr1$6 === void 0 ? void 0 : _rangeArr1$6.column
58147
58446
  });
58148
58447
  conditionValue.push(v1);
58149
58448
  } else {
@@ -58163,17 +58462,19 @@ function setConditionRules(ctx, protection, generalDialog, conditionformat, rule
58163
58462
  return;
58164
58463
  }
58165
58464
  if (rangeArr2.length === 1) {
58166
- var _r3 = rangeArr2[0].row[0];
58167
- var _r4 = rangeArr2[0].row[1];
58168
- var _c3 = rangeArr2[0].column[0];
58169
- var _c4 = rangeArr2[0].column[1];
58465
+ var _rangeArr2$, _rangeArr2$2, _rangeArr2$3, _rangeArr2$4;
58466
+ var _r3 = (_rangeArr2$ = rangeArr2[0]) === null || _rangeArr2$ === void 0 ? void 0 : _rangeArr2$.row[0];
58467
+ var _r4 = (_rangeArr2$2 = rangeArr2[0]) === null || _rangeArr2$2 === void 0 ? void 0 : _rangeArr2$2.row[1];
58468
+ var _c3 = (_rangeArr2$3 = rangeArr2[0]) === null || _rangeArr2$3 === void 0 ? void 0 : _rangeArr2$3.column[0];
58469
+ var _c4 = (_rangeArr2$4 = rangeArr2[0]) === null || _rangeArr2$4 === void 0 ? void 0 : _rangeArr2$4.column[1];
58170
58470
  if (_r3 === _r4 && _c3 === _c4) {
58471
+ var _rangeArr2$5, _rangeArr2$6;
58171
58472
  var _d2 = getFlowdata(ctx);
58172
- if (!_d2) return;
58473
+ if (!_d2 || _.isNil(_r3) || _.isNil(_c3)) return;
58173
58474
  v2 = getCellValue(_r3, _c3, _d2);
58174
58475
  conditionRange.push({
58175
- row: rangeArr2[0].row,
58176
- column: rangeArr2[0].column
58476
+ row: rangeArr2 === null || rangeArr2 === void 0 ? void 0 : (_rangeArr2$5 = rangeArr2[0]) === null || _rangeArr2$5 === void 0 ? void 0 : _rangeArr2$5.row,
58477
+ column: rangeArr2 === null || rangeArr2 === void 0 ? void 0 : (_rangeArr2$6 = rangeArr2[0]) === null || _rangeArr2$6 === void 0 ? void 0 : _rangeArr2$6.column
58177
58478
  });
58178
58479
  } else {
58179
58480
  ctx.warnDialog = conditionformat.onlySingleCell;
@@ -58574,7 +58875,7 @@ function compute(ctx, ruleArr, d) {
58574
58875
  if (_.isNil(_cell7) || _.isNil(_cell7.v) || isRealNull(_cell7.v)) {
58575
58876
  continue;
58576
58877
  }
58577
- if (_cell7.v >= vSmall && _cell7.v <= vBig) {
58878
+ if (typeof _cell7.v === "number" && _cell7.v >= vSmall && _cell7.v <= vBig) {
58578
58879
  if ("".concat(_r1, "_").concat(_c1) in computeMap) {
58579
58880
  computeMap["".concat(_r1, "_").concat(_c1)].textColor = textColor;
58580
58881
  computeMap["".concat(_r1, "_").concat(_c1)].cellColor = cellColor;
@@ -59296,14 +59597,15 @@ function dataRangeSelection(ctx, cache, rangT, type, value) {
59296
59597
  ctx.rangeDialog.type = type;
59297
59598
  ctx.rangeDialog.rangeTxt = value;
59298
59599
  if (ctx.luckysheet_select_save && !!rangT) {
59299
- var _ctx$formulaRangeSele, _ctx$formulaRangeSele2;
59600
+ var _range$, _range$2, _ctx$formulaRangeSele, _ctx$formulaRangeSele2;
59300
59601
  var last = ctx.luckysheet_select_save[ctx.luckysheet_select_save.length - 1];
59301
59602
  var row_index = last.row_focus;
59302
59603
  var col_index = last.column_focus;
59303
59604
  ctx.luckysheetCellUpdate = [row_index, col_index];
59304
59605
  var range = getRangeByTxt(ctx, rangT);
59305
- var r = range[0].row;
59306
- var c = range[0].column;
59606
+ var r = (_range$ = range[0]) === null || _range$ === void 0 ? void 0 : _range$.row;
59607
+ var c = (_range$2 = range[0]) === null || _range$2 === void 0 ? void 0 : _range$2.column;
59608
+ if (_.isNil(r) || _.isNil(c)) return;
59307
59609
  var row_pre = rowLocationByIndex(r[0], ctx.visibledatarow)[0];
59308
59610
  var row = rowLocationByIndex(r[1], ctx.visibledatarow)[1];
59309
59611
  var col_pre = colLocationByIndex(c[0], ctx.visibledatacolumn)[0];
@@ -59323,9 +59625,9 @@ function getDropdownList(ctx, txt) {
59323
59625
  var list = [];
59324
59626
  if (iscelldata(txt)) {
59325
59627
  var range = getcellrange(ctx, txt);
59326
- var index = getSheetIndex(ctx, range.sheetId);
59628
+ var index = getSheetIndex(ctx, (range === null || range === void 0 ? void 0 : range.sheetId) || ctx.currentSheetId);
59327
59629
  var d = ctx.luckysheetfile[index].data;
59328
- if (!d) return [];
59630
+ if (!d || !range) return [];
59329
59631
  for (var r = range.row[0]; r <= range.row[1]; r += 1) {
59330
59632
  for (var c = range.column[0]; c <= range.column[1]; c += 1) {
59331
59633
  if (!d[r]) {
@@ -59899,18 +60201,18 @@ function setDropcownValue(ctx, value, arr) {
59899
60201
  jfrefreshgrid(ctx, null, undefined);
59900
60202
  }
59901
60203
  function confirmMessage(ctx, generalDialog, dataVerification) {
59902
- var _ctx$dataVerification0, _ctx$dataVerification1;
60204
+ var _ctx$dataVerification0, _ctx$dataVerification1, _range, _range2, _range3, _range4;
59903
60205
  var range = getRangeByTxt(ctx, (_ctx$dataVerification0 = ctx.dataVerification) === null || _ctx$dataVerification0 === void 0 ? void 0 : (_ctx$dataVerification1 = _ctx$dataVerification0.dataRegulation) === null || _ctx$dataVerification1 === void 0 ? void 0 : _ctx$dataVerification1.rangeTxt);
59904
60206
  if (range.length === 0) {
59905
60207
  ctx.warnDialog = generalDialog.noSeletionError;
59906
60208
  return false;
59907
60209
  }
59908
- var str = range[range.length - 1].row[0];
59909
- var edr = range[range.length - 1].row[1];
59910
- var stc = range[range.length - 1].column[0];
59911
- var edc = range[range.length - 1].column[1];
60210
+ var str = (_range = range[range.length - 1]) === null || _range === void 0 ? void 0 : _range.row[0];
60211
+ var edr = (_range2 = range[range.length - 1]) === null || _range2 === void 0 ? void 0 : _range2.row[1];
60212
+ var stc = (_range3 = range[range.length - 1]) === null || _range3 === void 0 ? void 0 : _range3.column[0];
60213
+ var edc = (_range4 = range[range.length - 1]) === null || _range4 === void 0 ? void 0 : _range4.column[1];
59912
60214
  var d = getFlowdata(ctx);
59913
- if (!d) return false;
60215
+ if (!d || _.isNil(str) || _.isNil(edr) || _.isNil(stc) || _.isNil(edc)) return false;
59914
60216
  if (str < 0) {
59915
60217
  str = 0;
59916
60218
  }
@@ -60500,7 +60802,6 @@ function updateCell(ctx, r, c, $input, value, canvas) {
60500
60802
  delete curv.ct.s;
60501
60803
  curv.ct.t = "g";
60502
60804
  curv.ct.fa = "General";
60503
- curv.tb = "1";
60504
60805
  value = "";
60505
60806
  } else if (isCurInline) {
60506
60807
  if (!_.isPlainObject(curv)) {
@@ -60511,7 +60812,6 @@ function updateCell(ctx, r, c, $input, value, canvas) {
60511
60812
  if (!curv.ct) {
60512
60813
  curv.ct = {};
60513
60814
  curv.ct.fa = "General";
60514
- curv.tb = "1";
60515
60815
  }
60516
60816
  curv.ct.t = "inlineStr";
60517
60817
  curv.ct.s = convertSpanToShareString($input.querySelectorAll("span"), curv);
@@ -60560,7 +60860,7 @@ function updateCell(ctx, r, c, $input, value, canvas) {
60560
60860
  var dynamicArrayItem = null;
60561
60861
  if (_.isPlainObject(curv)) {
60562
60862
  if (!isCurInline) {
60563
- if (_.isString(value) && value.slice(0, 1) === "=" && value.length > 1) {
60863
+ if (isFormula(value)) {
60564
60864
  var _d$r;
60565
60865
  var v = execfunction(ctx, value, r, c, undefined, undefined, true);
60566
60866
  curv = _.cloneDeep((d === null || d === void 0 ? void 0 : (_d$r = d[r]) === null || _d$r === void 0 ? void 0 : _d$r[c]) || {});
@@ -60582,7 +60882,7 @@ function updateCell(ctx, r, c, $input, value, canvas) {
60582
60882
  }
60583
60883
  } else if (_.isPlainObject(value)) {
60584
60884
  var valueFunction = value.f;
60585
- if (_.isString(valueFunction) && valueFunction.slice(0, 1) === "=" && valueFunction.length > 1) {
60885
+ if (isFormula(valueFunction)) {
60586
60886
  var _d$r2;
60587
60887
  var _v2 = execfunction(ctx, valueFunction, r, c, undefined, undefined, true);
60588
60888
  curv = _.cloneDeep((d === null || d === void 0 ? void 0 : (_d$r2 = d[r]) === null || _d$r2 === void 0 ? void 0 : _d$r2[c]) || {});
@@ -60626,7 +60926,7 @@ function updateCell(ctx, r, c, $input, value, canvas) {
60626
60926
  }
60627
60927
  value = curv;
60628
60928
  } else {
60629
- if (_.isString(value) && value.slice(0, 1) === "=" && value.length > 1) {
60929
+ if (isFormula(value)) {
60630
60930
  var _v4 = execfunction(ctx, value, r, c, undefined, undefined, true);
60631
60931
  value = {
60632
60932
  v: _v4[1],
@@ -60645,7 +60945,7 @@ function updateCell(ctx, r, c, $input, value, canvas) {
60645
60945
  }
60646
60946
  } else if (_.isPlainObject(value)) {
60647
60947
  var _valueFunction = value.f;
60648
- if (_.isString(_valueFunction) && _valueFunction.slice(0, 1) === "=" && _valueFunction.length > 1) {
60948
+ if (isFormula(_valueFunction)) {
60649
60949
  var _v5 = execfunction(ctx, _valueFunction, r, c, undefined, undefined, true);
60650
60950
  var _v6 = _slicedToArray(_v5, 3);
60651
60951
  value.v = _v6[1];
@@ -60703,6 +61003,11 @@ function updateCell(ctx, r, c, $input, value, canvas) {
60703
61003
  afterUpdateCell === null || afterUpdateCell === void 0 ? void 0 : afterUpdateCell(r, c, oldValue, newValue);
60704
61004
  });
60705
61005
  }
61006
+ setFormulaCellInfo(ctx, {
61007
+ r: r,
61008
+ c: c,
61009
+ id: ctx.currentSheetId
61010
+ });
60706
61011
  ctx.formulaCache.execFunctionGlobalData = null;
60707
61012
  }
60708
61013
  function getOrigincell(ctx, r, c, i) {
@@ -61100,6 +61405,8 @@ var clipboard = /*#__PURE__*/function () {
61100
61405
  });
61101
61406
  document.execCommand("selectAll");
61102
61407
  document.execCommand("copy");
61408
+ var plainText = ele.innerText || ele.textContent || "";
61409
+ sessionStorage.setItem("localClipboard", plainText);
61103
61410
  setTimeout(function () {
61104
61411
  var _ele, _previouslyFocusedEle;
61105
61412
  (_ele = ele) === null || _ele === void 0 ? void 0 : _ele.blur();
@@ -61385,7 +61692,7 @@ function pasteHandlerOfPaintModel(ctx, copyRange) {
61385
61692
  }
61386
61693
  dataVerification["".concat(h, "_").concat(c)] = c_dataVerification["".concat(c_r1 + h - mth, "_").concat(c_c1 + c - mtc)];
61387
61694
  }
61388
- if (isPlainObject(x[c]) && x[c].mc) {
61695
+ if (_.isPlainObject(x[c]) && x[c].mc) {
61389
61696
  if (x[c].mc.rs) {
61390
61697
  delete cfg.merge["".concat(x[c].mc.r, "_").concat(x[c].mc.c)];
61391
61698
  }
@@ -61395,7 +61702,7 @@ function pasteHandlerOfPaintModel(ctx, copyRange) {
61395
61702
  if (copyData[h - mth] != null && copyData[h - mth][c - mtc] != null) {
61396
61703
  value = copyData[h - mth][c - mtc];
61397
61704
  }
61398
- if (isPlainObject(x[c])) {
61705
+ if (_.isPlainObject(x[c])) {
61399
61706
  if (x[c].ct && x[c].ct.t === "inlineStr" && value) {
61400
61707
  delete value.ct;
61401
61708
  } else {
@@ -62646,25 +62953,21 @@ function deleteSelectedCellText(ctx) {
62646
62953
  var _r4 = selection[_s].row[1];
62647
62954
  var _c3 = selection[_s].column[0];
62648
62955
  var _c4 = selection[_s].column[1];
62649
- for (var r = _r3; r <= _r4; r += 1) {
62650
- for (var c = _c3; c <= _c4; c += 1) {
62651
- if (_.isPlainObject(d[r][c])) {
62652
- var cell = d[r][c];
62653
- delete cell.m;
62654
- delete cell.v;
62655
- if (cell.f != null) {
62656
- delete cell.f;
62657
- delFunctionGroup(ctx, r, c, ctx.currentSheetId);
62658
- delete cell.spl;
62956
+ var sheetIndex = getSheetIndex(ctx, ctx.currentSheetId);
62957
+ if (sheetIndex !== null && ctx.luckysheetfile[sheetIndex].data) {
62958
+ var _ctx$luckysheetfile$s;
62959
+ var _ref = (_ctx$luckysheetfile$s = ctx.luckysheetfile[sheetIndex]) !== null && _ctx$luckysheetfile$s !== void 0 ? _ctx$luckysheetfile$s : {},
62960
+ _ref$data = _ref.data,
62961
+ data = _ref$data === void 0 ? [] : _ref$data;
62962
+ for (var r = _r3; r <= _r4; r += 1) {
62963
+ for (var c = _c3; c <= _c4; c += 1) {
62964
+ if (!data[r]) data[r] = [];
62965
+ if (data[r] && data[r][c]) {
62966
+ data[r][c] = {};
62659
62967
  }
62660
- if (cell.ct != null && cell.ct.t === "inlineStr") {
62661
- delete cell.ct;
62968
+ if (hyperlinkMap && hyperlinkMap["".concat(r, "_").concat(c)]) {
62969
+ delete hyperlinkMap["".concat(r, "_").concat(c)];
62662
62970
  }
62663
- } else {
62664
- d[r][c] = null;
62665
- }
62666
- if (hyperlinkMap && hyperlinkMap["".concat(r, "_").concat(c)]) {
62667
- delete hyperlinkMap["".concat(r, "_").concat(c)];
62668
62971
  }
62669
62972
  }
62670
62973
  }
@@ -62673,7 +62976,6 @@ function deleteSelectedCellText(ctx) {
62673
62976
  return "success";
62674
62977
  }
62675
62978
  function selectIsOverlap(ctx, range) {
62676
- console.log("selectIsOverlap", ctx, range);
62677
62979
  return false;
62678
62980
  }
62679
62981
  function selectAll(ctx) {
@@ -62818,7 +63120,7 @@ function defaultContext(refs) {
62818
63120
  defaultrowNum: 84,
62819
63121
  addDefaultRows: 50,
62820
63122
  fullscreenmode: true,
62821
- devicePixelRatio: (globalThis || window).devicePixelRatio,
63123
+ devicePixelRatio: (typeof globalThis !== "undefined" ? globalThis : window).devicePixelRatio,
62822
63124
  contextMenu: {},
62823
63125
  sheetTabContextMenu: {},
62824
63126
  currentSheetId: "",
@@ -63038,6 +63340,7 @@ function defaultContext(refs) {
63038
63340
  defaultFontSize: 10,
63039
63341
  luckysheetPaintModelOn: false,
63040
63342
  luckysheetPaintSingle: false,
63343
+ sheetFocused: true,
63041
63344
  defaultCell: {
63042
63345
  bl: 0,
63043
63346
  ct: {
@@ -65649,6 +65952,7 @@ function insertRowCol(ctx, op) {
65649
65952
  }
65650
65953
  }
65651
65954
  refreshLocalMergeData(merge_new, file);
65955
+ ctx.formulaCache.formulaCellInfoMap = null;
65652
65956
  }
65653
65957
  function deleteRowCol(ctx, op) {
65654
65958
  var type = op.type;
@@ -66376,6 +66680,7 @@ function deleteRowCol(ctx, op) {
66376
66680
  file.dataVerification = newDataVerification;
66377
66681
  file.hyperlink = newHyperlink;
66378
66682
  refreshLocalMergeData(merge_new, file);
66683
+ ctx.formulaCache.formulaCellInfoMap = null;
66379
66684
  if (file.id === ctx.currentSheetId) {
66380
66685
  ctx.config = cfg;
66381
66686
  }
@@ -66666,12 +66971,22 @@ function copySheet(ctx, sheetId) {
66666
66971
  sheetOrderList[ctx.luckysheetfile[ctx.luckysheetfile.length - 1].id] = order;
66667
66972
  setSheetOrder(ctx, sheetOrderList);
66668
66973
  }
66669
- function calculateSheetFromula(ctx, id) {
66974
+ function calculateSheetFromula(ctx, id, range) {
66670
66975
  var index$1 = getSheetIndex(ctx, id);
66671
66976
  if (!ctx.luckysheetfile[index$1].data) return;
66672
- for (var r = 0; r < ctx.luckysheetfile[index$1].data.length; r += 1) {
66673
- for (var c = 0; c < ctx.luckysheetfile[index$1].data[r].length; c += 1) {
66977
+ if (!range) {
66978
+ range = {
66979
+ row: [0, ctx.luckysheetfile[index$1].data.length - 1],
66980
+ column: [0, ctx.luckysheetfile[index$1].data[0].length - 1]
66981
+ };
66982
+ }
66983
+ var rowCount = range.row[1] - range.row[0] + 1;
66984
+ var columnCount = range.column[1] - range.column[0] + 1;
66985
+ for (var _r = 0; _r < rowCount; _r += 1) {
66986
+ for (var _c = 0; _c < columnCount; _c += 1) {
66674
66987
  var _ctx$luckysheetfile$i, _ctx$luckysheetfile$i2;
66988
+ var r = range.row[0] + _r;
66989
+ var c = range.column[0] + _c;
66675
66990
  if (!((_ctx$luckysheetfile$i = ctx.luckysheetfile[index$1].data[r][c]) === null || _ctx$luckysheetfile$i === void 0 ? void 0 : _ctx$luckysheetfile$i.f)) {
66676
66991
  continue;
66677
66992
  }
@@ -66681,6 +66996,15 @@ function calculateSheetFromula(ctx, id) {
66681
66996
  }
66682
66997
  }
66683
66998
  }
66999
+ function calculateFormula(ctx, id, range) {
67000
+ if (id) {
67001
+ calculateSheetFromula(ctx, id, range);
67002
+ return;
67003
+ }
67004
+ _.forEach(ctx.luckysheetfile, function (sheet_obj) {
67005
+ calculateSheetFromula(ctx, sheet_obj.id, range);
67006
+ });
67007
+ }
66684
67008
 
66685
67009
  function storeSheetParam(ctx) {
66686
67010
  var index = getSheetIndex(ctx, ctx.currentSheetId);
@@ -66825,6 +67149,11 @@ function updateSheet(ctx, newData) {
66825
67149
  for (var i = 0; i < data.length; i += 1) {
66826
67150
  for (var j = 0; j < data[i].length; j += 1) {
66827
67151
  expandedData[i][j] = data[i][j];
67152
+ setFormulaCellInfo(ctx, {
67153
+ r: i,
67154
+ c: j,
67155
+ id: newDatum.id
67156
+ }, data);
66828
67157
  }
66829
67158
  }
66830
67159
  newDatum.data = expandedData;
@@ -66834,7 +67163,16 @@ function updateSheet(ctx, newData) {
66834
67163
  ctx.luckysheetfile[index] = newDatum;
66835
67164
  }
66836
67165
  } else if (newDatum.celldata != null) {
67166
+ var _newDatum$celldata;
66837
67167
  initSheetData(ctx, index, newDatum);
67168
+ var _index = getSheetIndex(ctx, newDatum.id);
67169
+ (_newDatum$celldata = newDatum.celldata) === null || _newDatum$celldata === void 0 ? void 0 : _newDatum$celldata.forEach(function (d) {
67170
+ setFormulaCellInfo(ctx, {
67171
+ r: d.r,
67172
+ c: d.c,
67173
+ id: newDatum.id
67174
+ }, ctx.luckysheetfile[_index].data);
67175
+ });
66838
67176
  }
66839
67177
  });
66840
67178
  }
@@ -67128,6 +67466,11 @@ function runExecFunction(ctx, range, index, data) {
67128
67466
  for (var s = 0; s < range.length; s += 1) {
67129
67467
  for (var r = range[s].row[0]; r <= range[s].row[1]; r += 1) {
67130
67468
  for (var c = range[s].column[0]; c <= range[s].column[1]; c += 1) {
67469
+ setFormulaCellInfo(ctx, {
67470
+ r: r,
67471
+ c: c,
67472
+ id: index
67473
+ }, data);
67131
67474
  ctx.formulaCache.execFunctionExist.push({
67132
67475
  r: r,
67133
67476
  c: c,
@@ -67432,7 +67775,7 @@ function goToLink(ctx, r, c, linkType, linkAddress, scrollbarX, scrollbarY) {
67432
67775
  scrollbarX.scrollLeft = col_pre;
67433
67776
  scrollbarY.scrollLeft = row_pre;
67434
67777
  ctx.luckysheet_select_save = normalizeSelection(ctx, [range]);
67435
- changeSheet(ctx, range.sheetId);
67778
+ changeSheet(ctx, range.sheetId || ctx.currentSheetId);
67436
67779
  }
67437
67780
  ctx.linkCard = undefined;
67438
67781
  }
@@ -68411,6 +68754,13 @@ function autoSelectionFormula(ctx, cellInput, fxInput, formula, cache) {
68411
68754
  });
68412
68755
  if (!isfalse) {
68413
68756
  ctx.formulaCache.execFunctionExist.reverse();
68757
+ ctx.formulaCache.execFunctionExist.forEach(function (formulaCell) {
68758
+ setFormulaCellInfo(ctx, {
68759
+ r: formulaCell.r,
68760
+ c: formulaCell.c,
68761
+ id: ctx.currentSheetId
68762
+ }, flowdata);
68763
+ });
68414
68764
  execFunctionGroup(ctx, null, null, null, null, flowdata);
68415
68765
  ctx.formulaCache.execFunctionGlobalData = null;
68416
68766
  }
@@ -68788,7 +69138,9 @@ function handleBorder(ctx, type, borderColor, borderStyle) {
68788
69138
  function handleMerge(ctx, type) {
68789
69139
  var allowEdit = isAllowEdit(ctx);
68790
69140
  if (!allowEdit) return;
68791
- if (selectIsOverlap(ctx)) ;
69141
+ if (selectIsOverlap()) {
69142
+ return;
69143
+ }
68792
69144
  if (ctx.config.merge != null) {
68793
69145
  var has_PartMC = false;
68794
69146
  if (!ctx.luckysheet_select_save) return;
@@ -76271,7 +76623,7 @@ var index = /*#__PURE__*/Object.freeze({
76271
76623
  hideSheet: hideSheet,
76272
76624
  showSheet: showSheet,
76273
76625
  copySheet: copySheet,
76274
- calculateSheetFromula: calculateSheetFromula,
76626
+ calculateFormula: calculateFormula,
76275
76627
  addSheet: addSheet$1,
76276
76628
  deleteSheet: deleteSheet$1,
76277
76629
  updateSheet: updateSheet$1,
@@ -76379,7 +76731,7 @@ function handleCopy(ctx) {
76379
76731
  isSameCol = false;
76380
76732
  }
76381
76733
  }
76382
- if (!isSameRow && !isSameCol || selectIsOverlap(ctx)) {
76734
+ if (!isSameRow && !isSameCol || selectIsOverlap()) {
76383
76735
  return;
76384
76736
  }
76385
76737
  }
@@ -76577,6 +76929,72 @@ function handleWithCtrlOrMetaKey(ctx, cache, e, cellInput, fxInput, handleUndo,
76577
76929
  return;
76578
76930
  } else if (e.code === "KeyA") {
76579
76931
  selectAll(ctx);
76932
+ } else if (e.code === "KeyD") {
76933
+ if (!ctx.luckysheet_select_save || ctx.luckysheet_select_save.length === 0) {
76934
+ return;
76935
+ }
76936
+ e.preventDefault();
76937
+ e.stopPropagation();
76938
+ var selectedRange = ctx.luckysheet_select_save[0];
76939
+ var row = selectedRange.row,
76940
+ column = selectedRange.column;
76941
+ if (!row || !column) return;
76942
+ if (!isAllowEdit(ctx)) return;
76943
+ for (var col = column[0]; col <= column[1]; col += 1) {
76944
+ var _flowdata$row$;
76945
+ var sourceCell = flowdata === null || flowdata === void 0 ? void 0 : (_flowdata$row$ = flowdata[row[0]]) === null || _flowdata$row$ === void 0 ? void 0 : _flowdata$row$[col];
76946
+ if (!sourceCell) continue;
76947
+ var sourceValue = sourceCell.v;
76948
+ var sourceFormula = sourceCell.f;
76949
+ var _loop = function _loop(r) {
76950
+ if (sourceFormula) {
76951
+ var newFormula = sourceFormula.replace(/(\$?[A-Z]+)(\$?)(\d+)/g, function (match, colRef, dollar, rowNum) {
76952
+ return dollar ? match : "".concat(colRef).concat(parseInt(rowNum, 10) + (r - row[0]));
76953
+ });
76954
+ updateCell(ctx, r, col, null, newFormula);
76955
+ } else {
76956
+ updateCell(ctx, r, col, null, sourceValue);
76957
+ }
76958
+ };
76959
+ for (var r = row[0] + 1; r <= row[1]; r += 1) {
76960
+ _loop(r);
76961
+ }
76962
+ }
76963
+ jfrefreshgrid(ctx, null, undefined);
76964
+ } else if (e.code === "KeyR") {
76965
+ if (!ctx.luckysheet_select_save || ctx.luckysheet_select_save.length === 0) {
76966
+ return;
76967
+ }
76968
+ e.preventDefault();
76969
+ e.stopPropagation();
76970
+ var _selectedRange = ctx.luckysheet_select_save[0];
76971
+ var _row = _selectedRange.row,
76972
+ _column = _selectedRange.column;
76973
+ if (!_row || !_column) return;
76974
+ if (!isAllowEdit(ctx)) return;
76975
+ for (var _r = _row[0]; _r <= _row[1]; _r += 1) {
76976
+ var _flowdata$_r;
76977
+ var _sourceCell = flowdata === null || flowdata === void 0 ? void 0 : (_flowdata$_r = flowdata[_r]) === null || _flowdata$_r === void 0 ? void 0 : _flowdata$_r[_column[0]];
76978
+ if (!_sourceCell) continue;
76979
+ var _sourceValue = _sourceCell.v;
76980
+ var _sourceFormula = _sourceCell.f;
76981
+ var _loop2 = function _loop2(c) {
76982
+ if (_sourceFormula) {
76983
+ var newFormula = _sourceFormula.replace(/(\$?[A-Z]+)(\$?)(\d+)/g, function (match, colRef, dollar, rowNum) {
76984
+ if (dollar) return match;
76985
+ var colIndex = colRef.charCodeAt(0) - 65 + (c - _column[0]);
76986
+ return "".concat(String.fromCharCode(65 + colIndex)).concat(rowNum);
76987
+ });
76988
+ updateCell(ctx, _r, c, null, newFormula);
76989
+ } else {
76990
+ updateCell(ctx, _r, c, null, _sourceValue);
76991
+ }
76992
+ };
76993
+ for (var c = _column[0] + 1; c <= _column[1]; c += 1) {
76994
+ _loop2(c);
76995
+ }
76996
+ }
76997
+ jfrefreshgrid(ctx, null, undefined);
76580
76998
  }
76581
76999
  e.preventDefault();
76582
77000
  }
@@ -76637,6 +77055,27 @@ function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUndo, hand
76637
77055
  if (ctx.luckysheetCellUpdate.length > 0 && kstr !== "Enter" && kstr !== "Tab" && kstr !== "ArrowUp" && kstr !== "ArrowDown" && kstr !== "ArrowLeft" && kstr !== "ArrowRight") {
76638
77056
  return;
76639
77057
  }
77058
+ if (e.ctrlKey && e.shiftKey && kstr === "F") {
77059
+ ctx.sheetFocused = !ctx.sheetFocused;
77060
+ e.preventDefault();
77061
+ if (ctx.sheetFocused) {
77062
+ var selectedCell = document.querySelector(".luckysheet-cell-input");
77063
+ if (selectedCell) {
77064
+ selectedCell.setAttribute("tabindex", "-1");
77065
+ selectedCell.focus();
77066
+ }
77067
+ } else {
77068
+ var toolbar = document.querySelector(".fortune-toolbar");
77069
+ if (toolbar) {
77070
+ toolbar.setAttribute("tabindex", "-1");
77071
+ toolbar.focus();
77072
+ }
77073
+ }
77074
+ return;
77075
+ }
77076
+ if (!ctx.sheetFocused) {
77077
+ return;
77078
+ }
76640
77079
  if (kstr === "Enter") {
76641
77080
  if (!allowEdit) return;
76642
77081
  handleGlobalEnter(ctx, cellInput, e, canvas);
@@ -76677,7 +77116,7 @@ function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUndo, hand
76677
77116
  handleShiftWithArrowKey(ctx, e);
76678
77117
  } else if (kstr === "Escape") {
76679
77118
  ctx.contextMenu = {};
76680
- } else if (kstr === "Delete" || kstr === "Backspace") {
77119
+ } else if (kstr.toLowerCase() === "delete" || kstr.toLowerCase() === "backspace") {
76681
77120
  if (!allowEdit) return;
76682
77121
  if (ctx.activeImg != null) {
76683
77122
  removeActiveImage(ctx);
@@ -78486,6 +78925,11 @@ function postPasteCut(ctx, source, target, RowlChange) {
78486
78925
  ctx.formulaCache.execFunctionExist = [];
78487
78926
  for (var r = source.range.row[0]; r <= source.range.row[1]; r += 1) {
78488
78927
  for (var c = source.range.column[0]; c <= source.range.column[1]; c += 1) {
78928
+ setFormulaCellInfo(ctx, {
78929
+ r: r,
78930
+ c: c,
78931
+ id: source.sheetId
78932
+ });
78489
78933
  if ("".concat(r, "_").concat(c, "_").concat(source.sheetId) in execF_rc) {
78490
78934
  continue;
78491
78935
  }
@@ -78499,6 +78943,11 @@ function postPasteCut(ctx, source, target, RowlChange) {
78499
78943
  }
78500
78944
  for (var _r = target.range.row[0]; _r <= target.range.row[1]; _r += 1) {
78501
78945
  for (var _c = target.range.column[0]; _c <= target.range.column[1]; _c += 1) {
78946
+ setFormulaCellInfo(ctx, {
78947
+ r: _r,
78948
+ c: _c,
78949
+ id: source.sheetId
78950
+ });
78502
78951
  if ("".concat(_r, "_").concat(_c, "_").concat(target.sheetId) in execF_rc) {
78503
78952
  continue;
78504
78953
  }
@@ -79824,4 +80273,4 @@ function handlePasteByClick(ctx, clipboardData, triggerType) {
79824
80273
  } else ;
79825
80274
  }
79826
80275
 
79827
- export { CFSplitRange, Canvas, FormulaCache, MAX_ZOOM_RATIO, MIN_ZOOM_RATIO, addSheet, index as api, applyLocation, attrToCssName, autoSelectionFormula, calcSelectionInfo, cancelActiveImgItem, cancelFunctionrangeSelected, cancelNormalSelected, cancelPaintModel, cellFocus, cfSplitRange, changeSheet, chatatABC, checkCF, checkCellIsLocked, checkProtectionAllSelected, checkProtectionFormatCells, checkProtectionSelectLockedOrUnLockedCells, checkboxChange, clearFilter, clearMeasureTextCache, colHasMerged, colLocation, colLocationByIndex, colors, columnCharToIndex, commentBoxProps, compute, computeRowlenArr, confirmMessage, convertCssToStyleList, convertSpanToShareString, copy, createDropCellRange, createFilter, createFilterOptions, createFormulaRangeSelect, createRangeHightlight, dataRangeSelection, datenum_local, defaultContext, defaultFont, defaultSettings, defaultStyle, delFunctionGroup, deleteCellInSave, deleteComment, deleteRowCol, deleteSelectedCellText, deleteSheet, diff, drawArrow, drawLineInfo, dropCellCache, editComment, editSheetName, ensureSheetIndex, error, escapeHTMLTag, escapeScriptTag, execFunctionGroup, execfunction, expandRowsAndColumns, extractFormulaCellOps, filterPatch, fixColumnStyleOverflowInFreeze, fixPositionOnFrozenCells, fixRowStyleOverflowInFreeze, functionCopy, functionHTMLGenerate, functionStrChange, genarate, generateRandomId, generateRandomSheetName, getAllFunctionGroup, getArrowCanvasSize, getBorderInfoCompute, getBorderInfoComputeRange, getCellHyperlink, getCellRowColumn, getCellTextInfo, getCellTopRightPostion, getCellValue, getColMerge, getColorGradation, getCommentBoxByRC, getCommentBoxPosition, getComputeMap, getCurrentRules, getDataArr, getDataBySelectionNoCopy, getDropdownList, getFailureText, getFilterColumnColors, getFilterColumnValues, getFlattenedRange, getFlowdata, getFontSet, getFontStyleByCell, getFrozenHandleLeft, getFrozenHandleTop, getHintText, getHistoryRules, getInlineStringHTML, getInlineStringNoStyle, getMeasureText, getNowDateTime, getNullData, getOptionValue, getOrigincell, getQKBorder, getRange, getRangeArr, getRangeByTxt, getRangetxt, getRealCellValue, getRegExpStr, getRegStr, getRowMerge, getSearchIndexArr, getSelectRange, getSheetByIndex, getSheetIdByName, getSheetIndex, getStyleByCell, getTypeItemHide, getcellFormula, getcellrange, getdatabyselection, getrangeseleciton, goToLink, groupValuesRefresh, handleArrowKey, handleBold, handleBorder, handleCellAreaDoubleClick, handleCellAreaMouseDown, handleClearFormat, handleColFreezeHandleMouseDown, handleColSizeHandleMouseDown, handleColumnHeaderMouseDown, handleContextMenu, handleCopy, handleCurrencyFormat, handleFormatPainter, handleFormulaInput, handleFreeze, handleGlobalEnter, handleGlobalKeyDown, handleGlobalWheel, handleHorizontalAlign, handleItalic, handleKeydownForZoom, handleLink, handleMerge, handleNumberDecrease, handleNumberIncrease, handleOverlayMouseMove, handleOverlayMouseUp, handleOverlayTouchEnd, handleOverlayTouchMove, handleOverlayTouchStart, handlePaste, handlePasteByClick, handlePercentageFormat, handleRowFreezeHandleMouseDown, handleRowHeaderMouseDown, handleRowSizeHandleMouseDown, handleScreenShot, handleSort, handleStrikeThrough, handleSum, handleTextBackground, handleTextColor, handleTextSize, handleUnderline, handleVerticalAlign, handleWithCtrlOrMetaKey, hasChinaword, hasPartMC, hideCRCount, hideDropCellSelection, hideSelected, imageProps, indexToColumnChar, initFreeze, initSheetIndex, inlineStyleAffectAttribute, inlineStyleAffectCssName, insertImage, insertRowCol, insertUpdateFunctionGroup, inverseRowColOptions, isAllSelectedCellsInStatus, isAllowEdit, isInlineStringCT, isInlineStringCell, isLinkValid, isRealNull, isRealNum, isShowHidenCR, isSupportBoundingBox, is_date, iscelldata, isdatatype, isdatatypemulti, isdatetime, israngeseleciton, jfrefreshgrid, labelFilterOptionState, locale, luckysheetUpdateCell, mergeBorder, mergeCells, mergeMoveMain, mousePosition, moveHighlightCell, moveHighlightRange, moveToEnd, newComment, normalizeSelection, normalizedAttr, normalizedCellAttr, onCellsMove, onCellsMoveEnd, onCellsMoveStart, onCommentBoxMove, onCommentBoxMoveEnd, onCommentBoxMoveStart, onCommentBoxResize, onCommentBoxResizeEnd, onCommentBoxResizeStart, onDropCellSelect, onDropCellSelectEnd, onFormulaRangeDragEnd, onImageMove, onImageMoveEnd, onImageMoveStart, onImageResize, onImageResizeEnd, onImageResizeStart, onRangeSelectionModalMove, onRangeSelectionModalMoveEnd, onRangeSelectionModalMoveStart, onSearchDialogMove, onSearchDialogMoveEnd, onSearchDialogMoveStart, opToPatch, orderbydata, orderbydatafiler, overShowComment, pasteHandlerOfPaintModel, patchToOp, rangeDrag, rangeDragColumn, rangeDragRow, rangeHightlightselected, rangeSetValue, rangeValueToHtml, removeActiveImage, removeEditingComment, removeHyperlink, replace, replaceAll, replaceHtml, rgbToHex, rowHasMerged, rowLocation, rowLocationByIndex, saveFilter, saveHyperlink, saveImage, scrollToFrozenRowCol, scrollToHighlightCell, searchAll, searchNext, selectAll, selectIsOverlap, selectTextContent, selectTextContentCross, selectTitlesMap, selectTitlesRange, selectionCache, selectionCopyShow, seletedHighlistByindex, setCaretPosition, setCellValue, setConditionRules, setDropcownValue, setEditingComment, showComments, showDropCellSelection, showHideAllComments, showHideComment, showImgChooser, showLinkCard, showSelected, sortDataRange, sortSelection, storeSheetParamALL, toolbarItemClickHandler, toolbarItemSelectedFunc, update, updateCell, updateContextWithCanvas, updateContextWithSheetData, updateDropCell, updateFormat, updateFormatCell, updateInlineStringFormat, updateInlineStringFormatOutside, updateItem, updateMoreCell, updateSheet, validateCellData, validateIdCard, valueIsError, valueShowEs };
80276
+ export { CFSplitRange, Canvas, FormulaCache, MAX_ZOOM_RATIO, MIN_ZOOM_RATIO, addSheet, index as api, applyLocation, attrToCssName, autoSelectionFormula, calcSelectionInfo, cancelActiveImgItem, cancelFunctionrangeSelected, cancelNormalSelected, cancelPaintModel, cellFocus, cfSplitRange, changeSheet, chatatABC, checkCF, checkCellIsLocked, checkProtectionAllSelected, checkProtectionFormatCells, checkProtectionSelectLockedOrUnLockedCells, checkboxChange, clearFilter, clearMeasureTextCache, colHasMerged, colLocation, colLocationByIndex, colors, columnCharToIndex, commentBoxProps, compute, computeRowlenArr, confirmMessage, convertCssToStyleList, convertSpanToShareString, copy, createDropCellRange, createFilter, createFilterOptions, createFormulaRangeSelect, createRangeHightlight, dataRangeSelection, datenum_local, defaultContext, defaultFont, defaultSettings, defaultStyle, delFunctionGroup, deleteCellInSave, deleteComment, deleteRowCol, deleteSelectedCellText, deleteSheet, diff, drawArrow, drawLineInfo, dropCellCache, editComment, editSheetName, ensureSheetIndex, error, escapeHTMLTag, escapeScriptTag, execFunctionGroup, execfunction, expandRowsAndColumns, extractFormulaCellOps, filterPatch, fixColumnStyleOverflowInFreeze, fixPositionOnFrozenCells, fixRowStyleOverflowInFreeze, functionCopy, functionHTMLGenerate, functionStrChange, genarate, generateRandomId, generateRandomSheetName, getAllFunctionGroup, getArrowCanvasSize, getBorderInfoCompute, getBorderInfoComputeRange, getCellHyperlink, getCellRowColumn, getCellTextInfo, getCellTopRightPostion, getCellValue, getColMerge, getColorGradation, getCommentBoxByRC, getCommentBoxPosition, getComputeMap, getCurrentRules, getDataArr, getDataBySelectionNoCopy, getDropdownList, getFailureText, getFilterColumnColors, getFilterColumnValues, getFlattenedRange, getFlowdata, getFontSet, getFontStyleByCell, getFrozenHandleLeft, getFrozenHandleTop, getHintText, getHistoryRules, getInlineStringHTML, getInlineStringNoStyle, getMeasureText, getNowDateTime, getNullData, getOptionValue, getOrigincell, getQKBorder, getRange, getRangeArr, getRangeByTxt, getRangetxt, getRealCellValue, getRegExpStr, getRegStr, getRowMerge, getSearchIndexArr, getSelectRange, getSheetByIndex, getSheetIdByName, getSheetIndex, getStyleByCell, getTypeItemHide, getcellFormula, getcellrange, getdatabyselection, getrangeseleciton, goToLink, groupValuesRefresh, handleArrowKey, handleBold, handleBorder, handleCellAreaDoubleClick, handleCellAreaMouseDown, handleClearFormat, handleColFreezeHandleMouseDown, handleColSizeHandleMouseDown, handleColumnHeaderMouseDown, handleContextMenu, handleCopy, handleCurrencyFormat, handleFormatPainter, handleFormulaInput, handleFreeze, handleGlobalEnter, handleGlobalKeyDown, handleGlobalWheel, handleHorizontalAlign, handleItalic, handleKeydownForZoom, handleLink, handleMerge, handleNumberDecrease, handleNumberIncrease, handleOverlayMouseMove, handleOverlayMouseUp, handleOverlayTouchEnd, handleOverlayTouchMove, handleOverlayTouchStart, handlePaste, handlePasteByClick, handlePercentageFormat, handleRowFreezeHandleMouseDown, handleRowHeaderMouseDown, handleRowSizeHandleMouseDown, handleScreenShot, handleSort, handleStrikeThrough, handleSum, handleTextBackground, handleTextColor, handleTextSize, handleUnderline, handleVerticalAlign, handleWithCtrlOrMetaKey, hasChinaword, hasPartMC, hideCRCount, hideDropCellSelection, hideSelected, imageProps, indexToColumnChar, initFreeze, initSheetIndex, inlineStyleAffectAttribute, inlineStyleAffectCssName, insertImage, insertRowCol, insertUpdateFunctionGroup, inverseRowColOptions, isAllSelectedCellsInStatus, isAllowEdit, isFormula, isFunctionRange, isInlineStringCT, isInlineStringCell, isLinkValid, isRealNull, isRealNum, isShowHidenCR, isSupportBoundingBox, is_date, iscelldata, isdatatype, isdatatypemulti, isdatetime, israngeseleciton, jfrefreshgrid, labelFilterOptionState, locale, luckysheetUpdateCell, mergeBorder, mergeCells, mergeMoveMain, mousePosition, moveHighlightCell, moveHighlightRange, moveToEnd, newComment, normalizeSelection, normalizedAttr, normalizedCellAttr, onCellsMove, onCellsMoveEnd, onCellsMoveStart, onCommentBoxMove, onCommentBoxMoveEnd, onCommentBoxMoveStart, onCommentBoxResize, onCommentBoxResizeEnd, onCommentBoxResizeStart, onDropCellSelect, onDropCellSelectEnd, onFormulaRangeDragEnd, onImageMove, onImageMoveEnd, onImageMoveStart, onImageResize, onImageResizeEnd, onImageResizeStart, onRangeSelectionModalMove, onRangeSelectionModalMoveEnd, onRangeSelectionModalMoveStart, onSearchDialogMove, onSearchDialogMoveEnd, onSearchDialogMoveStart, opToPatch, orderbydata, orderbydatafiler, overShowComment, pasteHandlerOfPaintModel, patchToOp, rangeDrag, rangeDragColumn, rangeDragRow, rangeHightlightselected, rangeSetValue, rangeValueToHtml, removeActiveImage, removeEditingComment, removeHyperlink, replace, replaceAll, replaceHtml, rgbToHex, rowHasMerged, rowLocation, rowLocationByIndex, saveFilter, saveHyperlink, saveImage, scrollToFrozenRowCol, scrollToHighlightCell, searchAll, searchNext, selectAll, selectIsOverlap, selectTextContent, selectTextContentCross, selectTitlesMap, selectTitlesRange, selectionCache, selectionCopyShow, seletedHighlistByindex, setCaretPosition, setCellValue, setConditionRules, setDropcownValue, setEditingComment, setFormulaCellInfoMap, showComments, showDropCellSelection, showHideAllComments, showHideComment, showImgChooser, showLinkCard, showSelected, sortDataRange, sortSelection, storeSheetParamALL, toolbarItemClickHandler, toolbarItemSelectedFunc, update, updateCell, updateContextWithCanvas, updateContextWithSheetData, updateDropCell, updateFormat, updateFormatCell, updateInlineStringFormat, updateInlineStringFormatOutside, updateItem, updateMoreCell, updateSheet, validateCellData, validateIdCard, valueIsError, valueShowEs };