@fileverse-dev/fortune-core 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/{dist/packages/core/src → es}/api/cell.d.ts +10 -10
  2. package/es/api/cell.js +204 -0
  3. package/{dist/packages/core/src → es}/api/common.d.ts +71 -66
  4. package/es/api/common.js +79 -0
  5. package/{dist/packages/core/src → es}/api/errors.d.ts +2 -2
  6. package/es/api/errors.js +2 -0
  7. package/{dist/packages/core/src → es}/api/index.d.ts +9 -9
  8. package/es/api/index.js +8 -0
  9. package/{dist/packages/core/src → es}/api/merge.d.ts +5 -5
  10. package/es/api/merge.js +15 -0
  11. package/{dist/packages/core/src → es}/api/range.d.ts +22 -22
  12. package/es/api/range.js +123 -0
  13. package/{dist/packages/core/src → es}/api/rowcol.d.ts +14 -14
  14. package/es/api/rowcol.js +207 -0
  15. package/{dist/packages/core/src → es}/api/sheet.d.ts +10 -10
  16. package/es/api/sheet.js +128 -0
  17. package/{dist/packages/core/src → es}/api/workbook.d.ts +15 -15
  18. package/es/api/workbook.js +85 -0
  19. package/{dist/packages/core/src → es}/canvas.d.ts +46 -46
  20. package/es/canvas.js +1350 -0
  21. package/{dist/packages/core/src → es}/context.d.ts +198 -197
  22. package/es/context.js +381 -0
  23. package/{dist/packages/core/src → es}/events/copy.d.ts +2 -2
  24. package/es/events/copy.js +78 -0
  25. package/{dist/packages/core/src → es}/events/index.d.ts +4 -4
  26. package/es/events/index.js +4 -0
  27. package/{dist/packages/core/src → es}/events/keyboard.d.ts +6 -6
  28. package/es/events/keyboard.js +360 -0
  29. package/{dist/packages/core/src → es}/events/mouse.d.ts +22 -22
  30. package/es/events/mouse.js +1725 -0
  31. package/{dist/packages/core/src → es}/events/paste.d.ts +4 -3
  32. package/es/events/paste.js +1416 -0
  33. package/{dist/packages/core/src → es}/index.d.ts +10 -10
  34. package/es/index.js +10 -0
  35. package/{dist/packages/core/src → es}/locale/en.d.ts +993 -992
  36. package/es/locale/en.js +10140 -0
  37. package/{dist/packages/core/src → es}/locale/es.d.ts +1134 -1134
  38. package/es/locale/es.js +10010 -0
  39. package/{dist/packages/core/src → es}/locale/hi.d.ts +1030 -1030
  40. package/es/locale/hi.js +10550 -0
  41. package/{dist/packages/core/src → es}/locale/index.d.ts +1049 -1049
  42. package/es/locale/index.js +23 -0
  43. package/{dist/packages/core/src → es}/locale/zh.d.ts +1048 -1048
  44. package/es/locale/zh.js +10568 -0
  45. package/{dist/packages/core/src → es}/locale/zh_tw.d.ts +1187 -1187
  46. package/es/locale/zh_tw.js +10072 -0
  47. package/{dist/packages/core/src → es}/modules/ConditionFormat.d.ts +17 -17
  48. package/es/modules/ConditionFormat.js +1258 -0
  49. package/{dist/packages/core/src → es}/modules/border.d.ts +3 -3
  50. package/es/modules/border.js +1240 -0
  51. package/{dist/packages/core/src → es}/modules/cell.d.ts +32 -32
  52. package/es/modules/cell.js +1092 -0
  53. package/{dist/packages/core/src → es}/modules/clipboard.d.ts +3 -3
  54. package/es/modules/clipboard.js +36 -0
  55. package/{dist/packages/core/src → es}/modules/color.d.ts +1 -1
  56. package/es/modules/color.js +1 -0
  57. package/{dist/packages/core/src → es}/modules/comment.d.ts +97 -97
  58. package/es/modules/comment.js +597 -0
  59. package/{dist/packages/core/src → es}/modules/conditionalFormat.d.ts +2 -2
  60. package/es/modules/conditionalFormat.js +441 -0
  61. package/{dist/packages/core/src → es}/modules/cursor.d.ts +3 -3
  62. package/es/modules/cursor.js +62 -0
  63. package/{dist/packages/core/src → es}/modules/dataVerification.d.ts +11 -11
  64. package/es/modules/dataVerification.js +701 -0
  65. package/{dist/packages/core/src → es}/modules/dropCell.d.ts +10 -10
  66. package/es/modules/dropCell.js +2267 -0
  67. package/{dist/packages/core/src → es}/modules/filter.d.ts +45 -45
  68. package/es/modules/filter.js +434 -0
  69. package/{dist/packages/core/src → es}/modules/format.d.ts +6 -6
  70. package/es/modules/format.js +323 -0
  71. package/{dist/packages/core/src → es}/modules/formula.d.ts +54 -54
  72. package/es/modules/formula.js +2346 -0
  73. package/{dist/packages/core/src → es}/modules/freeze.d.ts +5 -5
  74. package/es/modules/freeze.js +148 -0
  75. package/{dist/packages/core/src → es}/modules/hyperlink.d.ts +21 -21
  76. package/es/modules/hyperlink.js +216 -0
  77. package/{dist/packages/core/src → es}/modules/iframe.d.ts +12 -12
  78. package/es/modules/iframe.js +220 -0
  79. package/{dist/packages/core/src → es}/modules/image.d.ts +31 -31
  80. package/es/modules/image.js +253 -0
  81. package/{dist/packages/core/src → es}/modules/index.d.ts +36 -36
  82. package/es/modules/index.js +36 -0
  83. package/{dist/packages/core/src → es}/modules/inline-string.d.ts +36 -36
  84. package/es/modules/inline-string.js +437 -0
  85. package/{dist/packages/core/src → es}/modules/location.d.ts +6 -6
  86. package/es/modules/location.js +46 -0
  87. package/{dist/packages/core/src → es}/modules/locationCondition.d.ts +21 -21
  88. package/es/modules/locationCondition.js +218 -0
  89. package/{dist/packages/core/src → es}/modules/merge.d.ts +3 -3
  90. package/es/modules/merge.js +216 -0
  91. package/{dist/packages/core/src → es}/modules/mobile.d.ts +5 -5
  92. package/es/modules/mobile.js +33 -0
  93. package/{dist/packages/core/src → es}/modules/moveCells.d.ts +5 -5
  94. package/es/modules/moveCells.js +348 -0
  95. package/{dist/packages/core/src → es}/modules/protection.d.ts +5 -5
  96. package/es/modules/protection.js +96 -0
  97. package/{dist/packages/core/src → es}/modules/refresh.d.ts +3 -3
  98. package/es/modules/refresh.js +34 -0
  99. package/{dist/packages/core/src → es}/modules/rowcol.d.ts +19 -19
  100. package/es/modules/rowcol.js +1922 -0
  101. package/{dist/packages/core/src → es}/modules/screenshot.d.ts +2 -2
  102. package/es/modules/screenshot.js +90 -0
  103. package/{dist/packages/core/src → es}/modules/searchReplace.d.ts +36 -36
  104. package/es/modules/searchReplace.js +388 -0
  105. package/{dist/packages/core/src → es}/modules/selection.d.ts +50 -46
  106. package/es/modules/selection.js +1856 -0
  107. package/{dist/packages/core/src → es}/modules/sheet.d.ts +10 -10
  108. package/es/modules/sheet.js +237 -0
  109. package/{dist/packages/core/src → es}/modules/sort.d.ts +7 -7
  110. package/es/modules/sort.js +134 -0
  111. package/{dist/packages/core/src → es}/modules/splitColumn.d.ts +5 -5
  112. package/es/modules/splitColumn.js +126 -0
  113. package/es/modules/ssf.js +1533 -0
  114. package/{dist/packages/core/src → es}/modules/text.d.ts +10 -10
  115. package/es/modules/text.js +1207 -0
  116. package/{dist/packages/core/src → es}/modules/toolbar.d.ts +32 -32
  117. package/es/modules/toolbar.js +970 -0
  118. package/{dist/packages/core/src → es}/modules/validation.d.ts +19 -19
  119. package/es/modules/validation.js +190 -0
  120. package/{dist/packages/core/src → es}/modules/zoom.d.ts +3 -3
  121. package/es/modules/zoom.js +29 -0
  122. package/{dist/packages/core/src → es}/settings.d.ts +100 -100
  123. package/es/settings.js +36 -0
  124. package/{dist/packages/core/src → es}/types.d.ts +380 -371
  125. package/es/types.js +1 -0
  126. package/{dist/packages/core/src → es}/utils/freeze.d.ts +7 -7
  127. package/es/utils/freeze.js +86 -0
  128. package/{dist/packages/core/src → es}/utils/index.d.ts +19 -18
  129. package/es/utils/index.js +198 -0
  130. package/{dist/packages/core/src → es}/utils/patch.d.ts +37 -37
  131. package/es/utils/patch.js +381 -0
  132. package/lib/api/cell.d.ts +10 -0
  133. package/lib/api/cell.js +215 -0
  134. package/lib/api/common.d.ts +71 -0
  135. package/lib/api/common.js +88 -0
  136. package/lib/api/errors.d.ts +2 -0
  137. package/lib/api/errors.js +8 -0
  138. package/lib/api/index.d.ts +9 -0
  139. package/lib/api/index.js +101 -0
  140. package/lib/api/merge.d.ts +5 -0
  141. package/lib/api/merge.js +22 -0
  142. package/lib/api/range.d.ts +22 -0
  143. package/lib/api/range.js +138 -0
  144. package/lib/api/rowcol.d.ts +14 -0
  145. package/lib/api/rowcol.js +222 -0
  146. package/lib/api/sheet.d.ts +10 -0
  147. package/lib/api/sheet.js +145 -0
  148. package/lib/api/workbook.d.ts +15 -0
  149. package/lib/api/workbook.js +98 -0
  150. package/lib/canvas.d.ts +46 -0
  151. package/lib/canvas.js +1356 -0
  152. package/lib/context.d.ts +198 -0
  153. package/lib/context.js +393 -0
  154. package/lib/events/copy.d.ts +2 -0
  155. package/lib/events/copy.js +85 -0
  156. package/lib/events/index.d.ts +4 -0
  157. package/lib/events/index.js +49 -0
  158. package/lib/events/keyboard.d.ts +6 -0
  159. package/lib/events/keyboard.js +370 -0
  160. package/lib/events/mouse.d.ts +22 -0
  161. package/lib/events/mouse.js +1744 -0
  162. package/lib/events/paste.d.ts +4 -0
  163. package/lib/events/paste.js +1425 -0
  164. package/lib/index.d.ts +10 -0
  165. package/lib/index.js +109 -0
  166. package/lib/locale/en.d.ts +993 -0
  167. package/lib/locale/en.js +10146 -0
  168. package/lib/locale/es.d.ts +1134 -0
  169. package/lib/locale/es.js +10016 -0
  170. package/lib/locale/hi.d.ts +1030 -0
  171. package/lib/locale/hi.js +10556 -0
  172. package/lib/locale/index.d.ts +1049 -0
  173. package/lib/locale/index.js +29 -0
  174. package/lib/locale/zh.d.ts +1048 -0
  175. package/lib/locale/zh.js +10574 -0
  176. package/lib/locale/zh_tw.d.ts +1187 -0
  177. package/lib/locale/zh_tw.js +10078 -0
  178. package/lib/modules/ConditionFormat.d.ts +17 -0
  179. package/lib/modules/ConditionFormat.js +1273 -0
  180. package/lib/modules/border.d.ts +3 -0
  181. package/lib/modules/border.js +1248 -0
  182. package/lib/modules/cell.d.ts +32 -0
  183. package/lib/modules/cell.js +1122 -0
  184. package/lib/modules/clipboard.d.ts +3 -0
  185. package/lib/modules/clipboard.js +42 -0
  186. package/lib/modules/color.d.ts +1 -0
  187. package/lib/modules/color.js +7 -0
  188. package/lib/modules/comment.d.ts +97 -0
  189. package/lib/modules/comment.js +625 -0
  190. package/lib/modules/conditionalFormat.d.ts +2 -0
  191. package/lib/modules/conditionalFormat.js +447 -0
  192. package/lib/modules/cursor.d.ts +3 -0
  193. package/lib/modules/cursor.js +70 -0
  194. package/lib/modules/dataVerification.d.ts +11 -0
  195. package/lib/modules/dataVerification.js +716 -0
  196. package/lib/modules/dropCell.d.ts +10 -0
  197. package/lib/modules/dropCell.js +2283 -0
  198. package/lib/modules/filter.d.ts +45 -0
  199. package/lib/modules/filter.js +448 -0
  200. package/lib/modules/format.d.ts +6 -0
  201. package/lib/modules/format.js +334 -0
  202. package/lib/modules/formula.d.ts +54 -0
  203. package/lib/modules/formula.js +2375 -0
  204. package/lib/modules/freeze.d.ts +5 -0
  205. package/lib/modules/freeze.js +158 -0
  206. package/lib/modules/hyperlink.d.ts +21 -0
  207. package/lib/modules/hyperlink.js +232 -0
  208. package/lib/modules/iframe.d.ts +12 -0
  209. package/lib/modules/iframe.js +236 -0
  210. package/lib/modules/image.d.ts +31 -0
  211. package/lib/modules/image.js +272 -0
  212. package/lib/modules/index.d.ts +36 -0
  213. package/lib/modules/index.js +401 -0
  214. package/lib/modules/inline-string.d.ts +36 -0
  215. package/lib/modules/inline-string.js +452 -0
  216. package/lib/modules/location.d.ts +6 -0
  217. package/lib/modules/location.js +57 -0
  218. package/lib/modules/locationCondition.d.ts +21 -0
  219. package/lib/modules/locationCondition.js +229 -0
  220. package/lib/modules/merge.d.ts +3 -0
  221. package/lib/modules/merge.js +223 -0
  222. package/lib/modules/mobile.d.ts +5 -0
  223. package/lib/modules/mobile.js +41 -0
  224. package/lib/modules/moveCells.d.ts +5 -0
  225. package/lib/modules/moveCells.js +357 -0
  226. package/lib/modules/protection.d.ts +5 -0
  227. package/lib/modules/protection.js +106 -0
  228. package/lib/modules/refresh.d.ts +3 -0
  229. package/lib/modules/refresh.js +40 -0
  230. package/lib/modules/rowcol.d.ts +19 -0
  231. package/lib/modules/rowcol.js +1935 -0
  232. package/lib/modules/screenshot.d.ts +2 -0
  233. package/lib/modules/screenshot.js +96 -0
  234. package/lib/modules/searchReplace.d.ts +36 -0
  235. package/lib/modules/searchReplace.js +402 -0
  236. package/lib/modules/selection.d.ts +50 -0
  237. package/lib/modules/selection.js +1889 -0
  238. package/lib/modules/sheet.d.ts +10 -0
  239. package/lib/modules/sheet.js +250 -0
  240. package/lib/modules/sort.d.ts +7 -0
  241. package/lib/modules/sort.js +143 -0
  242. package/lib/modules/splitColumn.d.ts +5 -0
  243. package/lib/modules/splitColumn.js +136 -0
  244. package/lib/modules/ssf.js +1539 -0
  245. package/lib/modules/text.d.ts +10 -0
  246. package/lib/modules/text.js +1221 -0
  247. package/lib/modules/toolbar.d.ts +32 -0
  248. package/lib/modules/toolbar.js +1003 -0
  249. package/lib/modules/validation.d.ts +19 -0
  250. package/lib/modules/validation.js +205 -0
  251. package/lib/modules/zoom.d.ts +3 -0
  252. package/lib/modules/zoom.js +36 -0
  253. package/lib/settings.d.ts +100 -0
  254. package/lib/settings.js +42 -0
  255. package/lib/types.d.ts +380 -0
  256. package/lib/types.js +5 -0
  257. package/lib/utils/freeze.d.ts +7 -0
  258. package/lib/utils/freeze.js +92 -0
  259. package/lib/utils/index.d.ts +19 -0
  260. package/lib/utils/index.js +258 -0
  261. package/lib/utils/patch.d.ts +37 -0
  262. package/lib/utils/patch.js +392 -0
  263. package/package.json +7 -6
  264. package/dist/index.esm.js +0 -80255
  265. package/dist/index.js +0 -80601
  266. package/dist/packages/react/src/components/ChangeColor/index.d.ts +0 -7
  267. package/dist/packages/react/src/components/ConditionFormat/ConditionRules.d.ts +0 -6
  268. package/dist/packages/react/src/components/ConditionFormat/index.d.ts +0 -7
  269. package/dist/packages/react/src/components/ContextMenu/Divider.d.ts +0 -3
  270. package/dist/packages/react/src/components/ContextMenu/FilterMenu.d.ts +0 -3
  271. package/dist/packages/react/src/components/ContextMenu/Menu.d.ts +0 -8
  272. package/dist/packages/react/src/components/ContextMenu/SheetTab.d.ts +0 -4
  273. package/dist/packages/react/src/components/ContextMenu/index.d.ts +0 -5
  274. package/dist/packages/react/src/components/CustomSort/index.d.ts +0 -4
  275. package/dist/packages/react/src/components/DataVerification/DropdownList.d.ts +0 -4
  276. package/dist/packages/react/src/components/DataVerification/RangeDialog.d.ts +0 -4
  277. package/dist/packages/react/src/components/DataVerification/getDisplayedRangeTxt.d.ts +0 -2
  278. package/dist/packages/react/src/components/DataVerification/index.d.ts +0 -4
  279. package/dist/packages/react/src/components/Dialog/index.d.ts +0 -15
  280. package/dist/packages/react/src/components/DuneChartsInputModal/DuneChartsInputModal.d.ts +0 -11
  281. package/dist/packages/react/src/components/DunePreview/DunePreview.d.ts +0 -13
  282. package/dist/packages/react/src/components/FilterOption/index.d.ts +0 -5
  283. package/dist/packages/react/src/components/FormatSearch/index.d.ts +0 -6
  284. package/dist/packages/react/src/components/FormulaSearch/index.d.ts +0 -5
  285. package/dist/packages/react/src/components/FxEditor/NameBox.d.ts +0 -3
  286. package/dist/packages/react/src/components/FxEditor/index.d.ts +0 -4
  287. package/dist/packages/react/src/components/IFrameBoxs/iFrameBoxs.d.ts +0 -4
  288. package/dist/packages/react/src/components/ImgBoxs/index.d.ts +0 -3
  289. package/dist/packages/react/src/components/LinkEidtCard/index.d.ts +0 -5
  290. package/dist/packages/react/src/components/LocationCondition/index.d.ts +0 -3
  291. package/dist/packages/react/src/components/MessageBox/index.d.ts +0 -9
  292. package/dist/packages/react/src/components/NotationBoxes/index.d.ts +0 -3
  293. package/dist/packages/react/src/components/ResetColumnWidth/index.d.ts +0 -2
  294. package/dist/packages/react/src/components/SVGDefines.d.ts +0 -5
  295. package/dist/packages/react/src/components/SVGIcon.d.ts +0 -9
  296. package/dist/packages/react/src/components/SearchReplace/index.d.ts +0 -6
  297. package/dist/packages/react/src/components/Sheet/index.d.ts +0 -8
  298. package/dist/packages/react/src/components/SheetList/SheetHiddenButton.d.ts +0 -8
  299. package/dist/packages/react/src/components/SheetList/SheetListItem.d.ts +0 -9
  300. package/dist/packages/react/src/components/SheetList/index.d.ts +0 -4
  301. package/dist/packages/react/src/components/SheetOverlay/ColumnHeader.d.ts +0 -3
  302. package/dist/packages/react/src/components/SheetOverlay/ContentEditable.d.ts +0 -11
  303. package/dist/packages/react/src/components/SheetOverlay/FormulaHint/index.d.ts +0 -4
  304. package/dist/packages/react/src/components/SheetOverlay/FormulaSearch/constant.d.ts +0 -63
  305. package/dist/packages/react/src/components/SheetOverlay/FormulaSearch/index.d.ts +0 -4
  306. package/dist/packages/react/src/components/SheetOverlay/InputBox.d.ts +0 -3
  307. package/dist/packages/react/src/components/SheetOverlay/RowHeader.d.ts +0 -3
  308. package/dist/packages/react/src/components/SheetOverlay/ScrollBar/index.d.ts +0 -7
  309. package/dist/packages/react/src/components/SheetOverlay/index.d.ts +0 -4
  310. package/dist/packages/react/src/components/SheetTab/SheetItem.d.ts +0 -8
  311. package/dist/packages/react/src/components/SheetTab/index.d.ts +0 -4
  312. package/dist/packages/react/src/components/SplitColumn/index.d.ts +0 -3
  313. package/dist/packages/react/src/components/Toolbar/Button.d.ts +0 -12
  314. package/dist/packages/react/src/components/Toolbar/ColorPicker.d.ts +0 -6
  315. package/dist/packages/react/src/components/Toolbar/Combo.d.ts +0 -12
  316. package/dist/packages/react/src/components/Toolbar/CustomBorder.d.ts +0 -7
  317. package/dist/packages/react/src/components/Toolbar/CustomButton.d.ts +0 -11
  318. package/dist/packages/react/src/components/Toolbar/CustomColor.d.ts +0 -8
  319. package/dist/packages/react/src/components/Toolbar/CustomIcon.d.ts +0 -9
  320. package/dist/packages/react/src/components/Toolbar/Divider.d.ts +0 -4
  321. package/dist/packages/react/src/components/Toolbar/MoreItemsContainer.d.ts +0 -6
  322. package/dist/packages/react/src/components/Toolbar/Select.d.ts +0 -14
  323. package/dist/packages/react/src/components/Toolbar/index.d.ts +0 -10
  324. package/dist/packages/react/src/components/Workbook/api.d.ts +0 -1177
  325. package/dist/packages/react/src/components/Workbook/index.d.ts +0 -1185
  326. package/dist/packages/react/src/components/ZoomControl/index.d.ts +0 -4
  327. package/dist/packages/react/src/components/index.d.ts +0 -4
  328. package/dist/packages/react/src/constants.d.ts +0 -1
  329. package/dist/packages/react/src/context/index.d.ts +0 -25
  330. package/dist/packages/react/src/context/modal.d.ts +0 -10
  331. package/dist/packages/react/src/hooks/useAlert.d.ts +0 -4
  332. package/dist/packages/react/src/hooks/useDialog.d.ts +0 -5
  333. package/dist/packages/react/src/hooks/useOutsideClick.d.ts +0 -2
  334. package/dist/packages/react/src/hooks/usePrevious.d.ts +0 -2
  335. package/dist/packages/react/src/index.d.ts +0 -1
  336. package/dist/packages/react/src/utils/datepickerStyles.d.ts +0 -2
  337. package/dist/stories/API.stories.d.ts +0 -1210
  338. package/dist/stories/Collabration.stories.d.ts +0 -2359
  339. package/dist/stories/Features.stories.d.ts +0 -9430
  340. package/dist/stories/data/cell.d.ts +0 -983
  341. package/dist/stories/data/dataVerification.d.ts +0 -131
  342. package/dist/stories/data/empty.d.ts +0 -10
  343. package/dist/stories/data/formula.d.ts +0 -362
  344. package/dist/stories/data/freeze.d.ts +0 -34
  345. package/dist/stories/data/protected.d.ts +0 -40
  346. package/dist/stories/utils.d.ts +0 -1
@@ -0,0 +1,2346 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ var __assign = this && this.__assign || function () {
3
+ __assign = Object.assign || function (t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
13
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
14
+ if (ar || !(i in from)) {
15
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
16
+ ar[i] = from[i];
17
+ }
18
+ }
19
+ return to.concat(ar || Array.prototype.slice.call(from));
20
+ };
21
+ import _ from "lodash";
22
+ import { Parser, ERROR_REF } from "@fileverse-dev/formula-parser";
23
+ import { getFlowdata } from "../context";
24
+ import { columnCharToIndex, escapeScriptTag, getSheetIndex, indexToColumnChar, getSheetIdByName, escapeHTMLTag } from "../utils";
25
+ import { getcellFormula, getRangetxt, mergeMoveMain, setCellValue } from "./cell";
26
+ import { error } from "./validation";
27
+ import { moveToEnd } from "./cursor";
28
+ import { locale } from "../locale";
29
+ import { colors } from "./color";
30
+ import { colLocation, mousePosition, rowLocation } from "./location";
31
+ import { cancelFunctionrangeSelected, seletedHighlistByindex } from ".";
32
+ var functionHTMLIndex = 0;
33
+ var rangeIndexes = [];
34
+ var operatorPriority = {
35
+ "^": 0,
36
+ "%": 1,
37
+ "*": 1,
38
+ "/": 1,
39
+ "+": 2,
40
+ "-": 2
41
+ };
42
+ var operatorArr = "==|!=|<>|<=|>=|=|+|-|>|<|/|*|%|&|^".split("|");
43
+ var operatorjson = {};
44
+ for (var i = 0; i < operatorArr.length; i += 1) {
45
+ operatorjson[operatorArr[i].toString()] = 1;
46
+ }
47
+ var simpleSheetName = "[A-Za-z0-9_\xC0-\u02AF]+";
48
+ var quotedSheetName = "'(?:(?!').|'')*'";
49
+ var sheetNameRegexp = "(".concat(simpleSheetName, "|").concat(quotedSheetName, ")!");
50
+ var rowColumnRegexp = "[$]?[A-Za-z]+[$]?[0-9]+";
51
+ var rowColumnWithSheetName = "(?:".concat(sheetNameRegexp, ")?(").concat(rowColumnRegexp, ")");
52
+ var LABEL_EXTRACT_REGEXP = new RegExp("^".concat(rowColumnWithSheetName, "(?:[:]").concat(rowColumnWithSheetName, ")?$"));
53
+ var FormulaCache = function () {
54
+ function FormulaCache() {
55
+ var that = this;
56
+ this.data_parm_index = 0;
57
+ this.selectingRangeIndex = -1;
58
+ this.functionlistMap = {};
59
+ this.execFunctionGlobalData = {};
60
+ this.cellTextToIndexList = {};
61
+ this.parser = new Parser();
62
+ this.parser.on("callCellValue", function (cellCoord, options, done) {
63
+ var _a, _b;
64
+ var context = that.parser.context;
65
+ var id = cellCoord.sheetName == null ? options.sheetId : getSheetIdByName(context, cellCoord.sheetName);
66
+ if (id == null) throw Error(ERROR_REF);
67
+ var flowdata = getFlowdata(context, id);
68
+ var cell = ((_a = context === null || context === void 0 ? void 0 : context.formulaCache.execFunctionGlobalData) === null || _a === void 0 ? void 0 : _a["".concat(cellCoord.row.index, "_").concat(cellCoord.column.index, "_").concat(id)]) || ((_b = flowdata === null || flowdata === void 0 ? void 0 : flowdata[cellCoord.row.index]) === null || _b === void 0 ? void 0 : _b[cellCoord.column.index]);
69
+ var v = that.tryGetCellAsNumber(cell);
70
+ done(v);
71
+ });
72
+ this.parser.on("callRangeValue", function (startCellCoord, endCellCoord, options, done) {
73
+ var _a, _b, _c, _d, _e, _f, _g, _h;
74
+ var context = that.parser.context;
75
+ var id = startCellCoord.sheetName == null ? options.sheetId : getSheetIdByName(context, startCellCoord.sheetName);
76
+ if (id == null) throw Error(ERROR_REF);
77
+ var flowdata = getFlowdata(context, id);
78
+ var fragment = [];
79
+ var startRow = startCellCoord.row.index;
80
+ var endRow = endCellCoord.row.index;
81
+ var startCol = startCellCoord.column.index;
82
+ var endCol = endCellCoord.column.index;
83
+ var emptyRow = startRow === -1 || endRow === -1;
84
+ var emptyCol = startCol === -1 || endCol === -1;
85
+ if (emptyRow) {
86
+ startRow = 0;
87
+ endRow = (_a = flowdata === null || flowdata === void 0 ? void 0 : flowdata.length) !== null && _a !== void 0 ? _a : 0;
88
+ }
89
+ if (emptyCol) {
90
+ startCol = 0;
91
+ endCol = (_b = flowdata === null || flowdata === void 0 ? void 0 : flowdata[0].length) !== null && _b !== void 0 ? _b : 0;
92
+ }
93
+ if (emptyRow && emptyCol) throw Error(ERROR_REF);
94
+ var cryptoDenomination = "";
95
+ var cryptoDecimal = 0;
96
+ for (var row = startRow; row <= endRow; row += 1) {
97
+ var colFragment = [];
98
+ for (var col = startCol; col <= endCol; col += 1) {
99
+ if (_typeof(options) === "object" && row === options.row && col === options.column) {
100
+ continue;
101
+ }
102
+ var cell = ((_c = context === null || context === void 0 ? void 0 : context.formulaCache.execFunctionGlobalData) === null || _c === void 0 ? void 0 : _c["".concat(row, "_").concat(col, "_").concat(id)]) || ((_d = flowdata === null || flowdata === void 0 ? void 0 : flowdata[row]) === null || _d === void 0 ? void 0 : _d[col]);
103
+ var v = that.tryGetCellAsNumber(cell);
104
+ if ((((_e = cell === null || cell === void 0 ? void 0 : cell.m) === null || _e === void 0 ? void 0 : _e.includes("ETH")) || ((_f = cell === null || cell === void 0 ? void 0 : cell.m) === null || _f === void 0 ? void 0 : _f.includes("SOL")) || ((_g = cell === null || cell === void 0 ? void 0 : cell.m) === null || _g === void 0 ? void 0 : _g.includes("BTC"))) && cryptoDenomination !== "Error") {
105
+ var visualString = cell === null || cell === void 0 ? void 0 : cell.m.split(" ");
106
+ if (cryptoDenomination !== "" && cryptoDenomination !== visualString[1]) {
107
+ cryptoDenomination = "Error";
108
+ } else {
109
+ cryptoDenomination = visualString[1];
110
+ }
111
+ cryptoDecimal = visualString[0].includes(".") ? (_h = visualString[0].split(".")[1]) === null || _h === void 0 ? void 0 : _h.length : 0;
112
+ }
113
+ colFragment.push(v);
114
+ }
115
+ fragment.push(colFragment);
116
+ }
117
+ if (cryptoDenomination === "Error") {
118
+ cryptoDenomination = "";
119
+ cryptoDecimal = 0;
120
+ }
121
+ if (fragment) {
122
+ done(fragment, cryptoDenomination, cryptoDecimal);
123
+ }
124
+ });
125
+ }
126
+ FormulaCache.prototype.tryGetCellAsNumber = function (cell) {
127
+ var _a, _b, _c, _d;
128
+ var isCryptoDeno = typeof (cell === null || cell === void 0 ? void 0 : cell.m) === "string" ? ((_a = cell === null || cell === void 0 ? void 0 : cell.m) === null || _a === void 0 ? void 0 : _a.includes("ETH")) || ((_b = cell === null || cell === void 0 ? void 0 : cell.m) === null || _b === void 0 ? void 0 : _b.includes("SOL")) || ((_c = cell === null || cell === void 0 ? void 0 : cell.m) === null || _c === void 0 ? void 0 : _c.includes("BTC")) : false;
129
+ if (isCryptoDeno && typeof (cell === null || cell === void 0 ? void 0 : cell.m) === "string") {
130
+ var splitedNumberString = cell.m.split(" ")[0];
131
+ return Number(splitedNumberString);
132
+ }
133
+ if (((_d = cell === null || cell === void 0 ? void 0 : cell.ct) === null || _d === void 0 ? void 0 : _d.t) === "n") {
134
+ var n = Number(cell === null || cell === void 0 ? void 0 : cell.v);
135
+ return Number.isNaN(n) ? cell.v : n;
136
+ }
137
+ return cell === null || cell === void 0 ? void 0 : cell.v;
138
+ };
139
+ return FormulaCache;
140
+ }();
141
+ export { FormulaCache };
142
+ function parseElement(eleString) {
143
+ return new DOMParser().parseFromString(eleString, "text/html").body.childNodes[0];
144
+ }
145
+ export function iscelldata(txt) {
146
+ var val = txt.split("!");
147
+ var rangetxt;
148
+ if (val.length > 1) {
149
+ rangetxt = val[1];
150
+ } else {
151
+ rangetxt = val[0];
152
+ }
153
+ var realRangeRegex = /^(\$?[A-Za-z]+\$?\d+|\$?[A-Za-z]+):(\$?[A-Za-z]+\$?\d+|\$?[A-Za-z]+)$/;
154
+ if (rangetxt.includes(":") && !realRangeRegex.test(rangetxt)) {
155
+ return false;
156
+ }
157
+ var reg_cell = /^(([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+))$/g;
158
+ var reg_cellRange = /^(((([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+)))|((([a-zA-Z]+)|([$][a-zA-Z]+))))$/g;
159
+ if (rangetxt.indexOf(":") === -1) {
160
+ var row_1 = parseInt(rangetxt.replace(/[^0-9]/g, ""), 10) - 1;
161
+ var col_1 = columnCharToIndex(rangetxt.replace(/[^A-Za-z]/g, ""));
162
+ if (!Number.isNaN(row_1) && !Number.isNaN(col_1) && rangetxt.toString().match(reg_cell)) {
163
+ return true;
164
+ }
165
+ if (!Number.isNaN(row_1)) {
166
+ return false;
167
+ }
168
+ if (!Number.isNaN(col_1)) {
169
+ return false;
170
+ }
171
+ return false;
172
+ }
173
+ reg_cellRange = /^(((([a-zA-Z]+)|([$][a-zA-Z]+))(([0-9]+)|([$][0-9]+)))|((([a-zA-Z]+)|([$][a-zA-Z]+)))|((([0-9]+)|([$][0-9]+s))))$/g;
174
+ var rangetxtArr = rangetxt.split(":");
175
+ var row = [];
176
+ var col = [];
177
+ row[0] = parseInt(rangetxtArr[0].replace(/[^0-9]/g, ""), 10) - 1;
178
+ row[1] = parseInt(rangetxtArr[1].replace(/[^0-9]/g, ""), 10) - 1;
179
+ if (row[0] > row[1]) {
180
+ return false;
181
+ }
182
+ col[0] = columnCharToIndex(rangetxtArr[0].replace(/[^A-Za-z]/g, ""));
183
+ col[1] = columnCharToIndex(rangetxtArr[1].replace(/[^A-Za-z]/g, ""));
184
+ if (col[0] > col[1]) {
185
+ return false;
186
+ }
187
+ if (rangetxtArr[0].toString().match(reg_cellRange) && rangetxtArr[1].toString().match(reg_cellRange)) {
188
+ return true;
189
+ }
190
+ return false;
191
+ }
192
+ function addToCellIndexList(ctx, txt, infoObj) {
193
+ if (_.isNil(txt) || txt.length === 0 || _.isNil(infoObj)) {
194
+ return;
195
+ }
196
+ if (_.isNil(ctx.formulaCache.cellTextToIndexList)) {
197
+ ctx.formulaCache.cellTextToIndexList = {};
198
+ }
199
+ if (txt.indexOf("!") > -1) {
200
+ txt = txt.replace(/\\'/g, "'").replace(/''/g, "'");
201
+ ctx.formulaCache.cellTextToIndexList[txt] = infoObj;
202
+ } else {
203
+ ctx.formulaCache.cellTextToIndexList["".concat(txt, "_").concat(infoObj.sheetId)] = infoObj;
204
+ }
205
+ }
206
+ export function getcellrange(ctx, txt, formulaId) {
207
+ if (_.isNil(txt) || txt.length === 0) {
208
+ return null;
209
+ }
210
+ var flowdata = getFlowdata(ctx, formulaId);
211
+ var sheettxt = "";
212
+ var rangetxt = "";
213
+ var sheetId = null;
214
+ var sheetdata = null;
215
+ var luckysheetfile = ctx.luckysheetfile;
216
+ if (txt.indexOf("!") > -1) {
217
+ if (txt in ctx.formulaCache.cellTextToIndexList) {
218
+ return ctx.formulaCache.cellTextToIndexList[txt];
219
+ }
220
+ var matchRes = txt.match(LABEL_EXTRACT_REGEXP);
221
+ if (matchRes == null) {
222
+ return null;
223
+ }
224
+ var sheettxt1 = matchRes[1],
225
+ starttxt1 = matchRes[2],
226
+ sheettxt2 = matchRes[3],
227
+ starttxt2 = matchRes[4];
228
+ if (sheettxt2 != null && sheettxt1 !== sheettxt2) {
229
+ return null;
230
+ }
231
+ rangetxt = starttxt2 ? "".concat(starttxt1, ":").concat(starttxt2) : starttxt1;
232
+ sheettxt = sheettxt1.replace(/^'|'$/g, "").replace(/\\'/g, "'").replace(/''/g, "'");
233
+ _.forEach(luckysheetfile, function (f) {
234
+ if (sheettxt === f.name) {
235
+ sheetId = f.id;
236
+ sheetdata = f.data;
237
+ return false;
238
+ }
239
+ return true;
240
+ });
241
+ } else {
242
+ var i = formulaId;
243
+ if (_.isNil(i)) {
244
+ i = ctx.currentSheetId;
245
+ }
246
+ if ("".concat(txt, "_").concat(i) in ctx.formulaCache.cellTextToIndexList) {
247
+ return ctx.formulaCache.cellTextToIndexList["".concat(txt, "_").concat(i)];
248
+ }
249
+ var index = getSheetIndex(ctx, i);
250
+ if (_.isNil(index)) {
251
+ return null;
252
+ }
253
+ sheettxt = luckysheetfile[index].name;
254
+ sheetId = luckysheetfile[index].id;
255
+ sheetdata = flowdata;
256
+ rangetxt = txt;
257
+ }
258
+ if (_.isNil(sheetdata)) {
259
+ return null;
260
+ }
261
+ if (rangetxt.indexOf(":") === -1) {
262
+ var row_2 = parseInt(rangetxt.replace(/[^0-9]/g, ""), 10) - 1;
263
+ var col_2 = columnCharToIndex(rangetxt.replace(/[^A-Za-z]/g, ""));
264
+ if (!Number.isNaN(row_2) && !Number.isNaN(col_2)) {
265
+ var item_1 = {
266
+ row: [row_2, row_2],
267
+ column: [col_2, col_2],
268
+ sheetId: sheetId
269
+ };
270
+ addToCellIndexList(ctx, txt, item_1);
271
+ return item_1;
272
+ }
273
+ return null;
274
+ }
275
+ var rangetxtArr = rangetxt.split(":");
276
+ var row = [];
277
+ var col = [];
278
+ row[0] = parseInt(rangetxtArr[0].replace(/[^0-9]/g, ""), 10) - 1;
279
+ row[1] = parseInt(rangetxtArr[1].replace(/[^0-9]/g, ""), 10) - 1;
280
+ if (Number.isNaN(row[0])) {
281
+ row[0] = 0;
282
+ }
283
+ if (Number.isNaN(row[1])) {
284
+ row[1] = sheetdata.length - 1;
285
+ }
286
+ if (row[0] > row[1]) {
287
+ return null;
288
+ }
289
+ col[0] = columnCharToIndex(rangetxtArr[0].replace(/[^A-Za-z]/g, ""));
290
+ col[1] = columnCharToIndex(rangetxtArr[1].replace(/[^A-Za-z]/g, ""));
291
+ if (Number.isNaN(col[0])) {
292
+ col[0] = 0;
293
+ }
294
+ if (Number.isNaN(col[1])) {
295
+ col[1] = sheetdata[0].length - 1;
296
+ }
297
+ if (col[0] > col[1]) {
298
+ return null;
299
+ }
300
+ var item = {
301
+ row: row,
302
+ column: col,
303
+ sheetId: sheetId
304
+ };
305
+ addToCellIndexList(ctx, txt, item);
306
+ return item;
307
+ }
308
+ function calPostfixExpression(cal) {
309
+ if (cal.length === 0) {
310
+ return "";
311
+ }
312
+ var stack = [];
313
+ for (var i = cal.length - 1; i >= 0; i -= 1) {
314
+ var c = cal[i];
315
+ if (c in operatorjson) {
316
+ var s2 = stack.pop();
317
+ var s1 = stack.pop();
318
+ var str = "luckysheet_compareWith(".concat(s1, ",'").concat(c, "', ").concat(s2, ")");
319
+ stack.push(str);
320
+ } else {
321
+ stack.push(c);
322
+ }
323
+ }
324
+ if (stack.length > 0) {
325
+ return stack[0];
326
+ }
327
+ return "";
328
+ }
329
+ function checkSpecialFunctionRange(ctx, function_str, r, c, id, dynamicArray_compute, cellRangeFunction) {
330
+ if (function_str.substring(0, 30) === "luckysheet_getSpecialReference" || function_str.substring(0, 20) === "luckysheet_function.") {
331
+ if (function_str.substring(0, 20) === "luckysheet_function.") {
332
+ var funcName = function_str.split(".")[1];
333
+ if (!_.isNil(funcName)) {
334
+ funcName = funcName.toUpperCase();
335
+ if (funcName !== "INDIRECT" && funcName !== "OFFSET" && funcName !== "INDEX") {
336
+ return;
337
+ }
338
+ }
339
+ }
340
+ try {
341
+ ctx.calculateSheetId = id;
342
+ var str = function_str.split(",")[function_str.split(",").length - 1].split("'")[1].split("'")[0];
343
+ var str_nb = _.trim(str);
344
+ if (iscelldata(str_nb)) {
345
+ if (typeof cellRangeFunction === "function") {
346
+ cellRangeFunction(str_nb);
347
+ }
348
+ }
349
+ } catch (_a) {}
350
+ }
351
+ }
352
+ function isFunctionRange(ctx, txt, r, c, id, dynamicArray_compute, cellRangeFunction) {
353
+ var _a;
354
+ if (txt.substring(0, 1) === "=") {
355
+ txt = txt.substring(1);
356
+ }
357
+ var funcstack = txt.split("");
358
+ var i = 0;
359
+ var str = "";
360
+ var function_str = "";
361
+ var matchConfig = {
362
+ bracket: 0,
363
+ comma: 0,
364
+ squote: 0,
365
+ dquote: 0,
366
+ compare: 0,
367
+ braces: 0
368
+ };
369
+ var cal1 = [];
370
+ var cal2 = [];
371
+ var bracket = [];
372
+ var firstSQ = -1;
373
+ while (i < funcstack.length) {
374
+ var s = funcstack[i];
375
+ if (s === "(" && matchConfig.squote === 0 && matchConfig.dquote === 0 && matchConfig.braces === 0) {
376
+ if (str.length > 0 && bracket.length === 0) {
377
+ str = str.toUpperCase();
378
+ if (str.indexOf(":") > -1) {
379
+ var funcArray = str.split(":");
380
+ function_str += "luckysheet_getSpecialReference(true,'".concat(_.trim(funcArray[0]).replace(/'/g, "\\'"), "', luckysheet_function.").concat(funcArray[1], ".f(#lucky#");
381
+ } else {
382
+ function_str += "luckysheet_function.".concat(str, ".f(");
383
+ }
384
+ bracket.push(1);
385
+ str = "";
386
+ } else if (bracket.length === 0) {
387
+ function_str += "(";
388
+ bracket.push(0);
389
+ str = "";
390
+ } else {
391
+ bracket.push(0);
392
+ str += s;
393
+ }
394
+ } else if (s === ")" && matchConfig.squote === 0 && matchConfig.dquote === 0 && matchConfig.braces === 0) {
395
+ bracket.pop();
396
+ if (bracket.length === 0) {
397
+ var functionS = isFunctionRange(ctx, str, r, c, id, dynamicArray_compute, cellRangeFunction);
398
+ if (functionS.indexOf("#lucky#") > -1) {
399
+ functionS = "".concat(functionS.replace(/#lucky#/g, ""), ")");
400
+ }
401
+ function_str += "".concat(functionS, ")");
402
+ str = "";
403
+ } else {
404
+ str += s;
405
+ }
406
+ } else if (s === "{" && matchConfig.squote === 0 && matchConfig.dquote === 0) {
407
+ str += "{";
408
+ matchConfig.braces += 1;
409
+ } else if (s === "}" && matchConfig.squote === 0 && matchConfig.dquote === 0) {
410
+ str += "}";
411
+ matchConfig.braces -= 1;
412
+ } else if (s === '"' && matchConfig.squote === 0) {
413
+ if (matchConfig.dquote > 0) {
414
+ if (i < funcstack.length - 1 && funcstack[i + 1] === '"') {
415
+ i += 1;
416
+ str += "\x7F";
417
+ } else {
418
+ matchConfig.dquote -= 1;
419
+ str += '"';
420
+ }
421
+ } else {
422
+ matchConfig.dquote += 1;
423
+ str += '"';
424
+ }
425
+ } else if (s === "'" && matchConfig.dquote === 0) {
426
+ str += "'";
427
+ if (matchConfig.squote > 0) {
428
+ if (i < funcstack.length - 1 && funcstack[i + 1] === "'") {
429
+ i += 1;
430
+ str += "'";
431
+ } else {
432
+ matchConfig.squote -= 1;
433
+ }
434
+ } else {
435
+ matchConfig.squote += 1;
436
+ firstSQ = i;
437
+ }
438
+ } else if (s === "," && matchConfig.squote === 0 && matchConfig.dquote === 0 && matchConfig.braces === 0) {
439
+ if (bracket.length <= 1) {
440
+ var functionS = isFunctionRange(ctx, str, r, c, id, dynamicArray_compute, cellRangeFunction);
441
+ if (functionS.indexOf("#lucky#") > -1) {
442
+ functionS = "".concat(functionS.replace(/#lucky#/g, ""), ")");
443
+ }
444
+ function_str += "".concat(functionS, ",");
445
+ str = "";
446
+ } else {
447
+ str += ",";
448
+ }
449
+ } else if (s in operatorjson && matchConfig.squote === 0 && matchConfig.dquote === 0 && matchConfig.braces === 0) {
450
+ var s_next = "";
451
+ var op = operatorPriority;
452
+ if (i + 1 < funcstack.length) {
453
+ s_next = funcstack[i + 1];
454
+ }
455
+ if (s + s_next in operatorjson) {
456
+ if (bracket.length === 0) {
457
+ if (_.trim(str).length > 0) {
458
+ cal2.unshift(isFunctionRange(ctx, _.trim(str), r, c, id, dynamicArray_compute, cellRangeFunction));
459
+ } else if (_.trim(function_str).length > 0) {
460
+ cal2.unshift(_.trim(function_str));
461
+ }
462
+ if (cal1[0] in operatorjson) {
463
+ var stackCeilPri = op[cal1[0]];
464
+ while (cal1.length > 0 && !_.isNil(stackCeilPri)) {
465
+ cal2.unshift(cal1.shift());
466
+ stackCeilPri = op[cal1[0]];
467
+ }
468
+ }
469
+ cal1.unshift(s + s_next);
470
+ function_str = "";
471
+ str = "";
472
+ } else {
473
+ str += s + s_next;
474
+ }
475
+ i += 1;
476
+ } else {
477
+ if (bracket.length === 0) {
478
+ if (_.trim(str).length > 0) {
479
+ cal2.unshift(isFunctionRange(ctx, _.trim(str), r, c, id, dynamicArray_compute, cellRangeFunction));
480
+ } else if (_.trim(function_str).length > 0) {
481
+ cal2.unshift(_.trim(function_str));
482
+ }
483
+ if (cal1[0] in operatorjson) {
484
+ var stackCeilPri = op[cal1[0]];
485
+ stackCeilPri = _.isNil(stackCeilPri) ? 1000 : stackCeilPri;
486
+ var sPri = op[s];
487
+ sPri = _.isNil(sPri) ? 1000 : sPri;
488
+ while (cal1.length > 0 && sPri >= stackCeilPri) {
489
+ cal2.unshift(cal1.shift());
490
+ stackCeilPri = op[cal1[0]];
491
+ stackCeilPri = _.isNil(stackCeilPri) ? 1000 : stackCeilPri;
492
+ }
493
+ }
494
+ cal1.unshift(s);
495
+ function_str = "";
496
+ str = "";
497
+ } else {
498
+ str += s;
499
+ }
500
+ }
501
+ } else {
502
+ if (matchConfig.dquote === 0 && matchConfig.squote === 0) {
503
+ str += _.trim(s);
504
+ } else {
505
+ str += s;
506
+ }
507
+ }
508
+ if (i === funcstack.length - 1) {
509
+ var endstr = "";
510
+ var str_nb = _.trim(str).replace(/'/g, "\\'");
511
+ if (iscelldata(str_nb) && str_nb.substring(0, 1) !== ":") {
512
+ endstr = "luckysheet_getcelldata('".concat(str_nb, "')");
513
+ } else if (str_nb.substring(0, 1) === ":") {
514
+ str_nb = str_nb.substring(1);
515
+ if (iscelldata(str_nb)) {
516
+ endstr = "luckysheet_getSpecialReference(false,".concat(function_str, ",'").concat(str_nb, "')");
517
+ }
518
+ } else {
519
+ str = _.trim(str);
520
+ var regx = /{.*?}/;
521
+ if (regx.test(str) && str.substring(0, 1) !== '"' && str.substring(str.length - 1, 1) !== '"') {
522
+ var arraytxt = (_a = regx.exec(str)) === null || _a === void 0 ? void 0 : _a[0];
523
+ var arraystart = str.search(regx);
524
+ if (arraystart > 0) {
525
+ endstr += str.substring(0, arraystart);
526
+ }
527
+ endstr += "luckysheet_getarraydata('".concat(arraytxt, "')");
528
+ if (arraystart + arraytxt.length < str.length) {
529
+ endstr += str.substring(arraystart + arraytxt.length, str.length);
530
+ }
531
+ } else {
532
+ endstr = str;
533
+ }
534
+ }
535
+ if (endstr.length > 0) {
536
+ cal2.unshift(endstr);
537
+ }
538
+ if (cal1.length > 0) {
539
+ if (function_str.length > 0) {
540
+ cal2.unshift(function_str);
541
+ function_str = "";
542
+ }
543
+ while (cal1.length > 0) {
544
+ cal2.unshift(cal1.shift());
545
+ }
546
+ }
547
+ if (cal2.length > 0) {
548
+ function_str = calPostfixExpression(cal2);
549
+ } else {
550
+ function_str += endstr;
551
+ }
552
+ }
553
+ i += 1;
554
+ }
555
+ checkSpecialFunctionRange(ctx, function_str, r, c, id, dynamicArray_compute, cellRangeFunction);
556
+ return function_str;
557
+ }
558
+ export function getAllFunctionGroup(ctx) {
559
+ var luckysheetfile = ctx.luckysheetfile;
560
+ var ret = [];
561
+ for (var i = 0; i < luckysheetfile.length; i += 1) {
562
+ var file = luckysheetfile[i];
563
+ var calcChain = file.calcChain;
564
+ var dynamicArray_compute = file.dynamicArray_compute;
565
+ if (_.isNil(calcChain)) {
566
+ calcChain = [];
567
+ }
568
+ if (_.isNil(dynamicArray_compute)) {
569
+ dynamicArray_compute = [];
570
+ }
571
+ ret = ret.concat(calcChain);
572
+ for (var j = 0; j < dynamicArray_compute.length; j += 1) {
573
+ var d = dynamicArray_compute[0];
574
+ ret.push({
575
+ r: d.r,
576
+ c: d.c,
577
+ id: d.id
578
+ });
579
+ }
580
+ }
581
+ return ret;
582
+ }
583
+ export function delFunctionGroup(ctx, r, c, id) {
584
+ if (_.isNil(id)) {
585
+ id = ctx.currentSheetId;
586
+ }
587
+ var file = ctx.luckysheetfile[getSheetIndex(ctx, id)];
588
+ var calcChain = file.calcChain;
589
+ if (!_.isNil(calcChain)) {
590
+ var modified = false;
591
+ var calcChainClone = _.cloneDeep(calcChain);
592
+ for (var i = 0; i < calcChainClone.length; i += 1) {
593
+ var calc = calcChainClone[i];
594
+ if (calc.r === r && calc.c === c && calc.id === id) {
595
+ calcChainClone.splice(i, 1);
596
+ modified = true;
597
+ break;
598
+ }
599
+ }
600
+ if (modified) {
601
+ file.calcChain = calcChainClone;
602
+ }
603
+ }
604
+ var dynamicArray = file.dynamicArray;
605
+ if (!_.isNil(dynamicArray)) {
606
+ var modified = false;
607
+ var dynamicArrayClone = _.cloneDeep(dynamicArray);
608
+ for (var i = 0; i < dynamicArrayClone.length; i += 1) {
609
+ var calc = dynamicArrayClone[i];
610
+ if (calc.r === r && calc.c === c && (_.isNil(calc.id) || calc.id === id)) {
611
+ dynamicArrayClone.splice(i, 1);
612
+ modified = true;
613
+ break;
614
+ }
615
+ }
616
+ if (modified) {
617
+ file.dynamicArray = dynamicArrayClone;
618
+ }
619
+ }
620
+ }
621
+ function checkBracketNum(fp) {
622
+ var bra_l = fp.match(/\(/g);
623
+ var bra_r = fp.match(/\)/g);
624
+ var bra_tl_txt = fp.match(/(['"])(?:(?!\1).)*?\1/g);
625
+ var bra_tr_txt = fp.match(/(['"])(?:(?!\1).)*?\1/g);
626
+ var bra_l_len = 0;
627
+ var bra_r_len = 0;
628
+ if (!_.isNil(bra_l)) {
629
+ bra_l_len += bra_l.length;
630
+ }
631
+ if (!_.isNil(bra_r)) {
632
+ bra_r_len += bra_r.length;
633
+ }
634
+ var bra_tl_len = 0;
635
+ var bra_tr_len = 0;
636
+ if (!_.isNil(bra_tl_txt)) {
637
+ for (var i = 0; i < bra_tl_txt.length; i += 1) {
638
+ var bra_tl = bra_tl_txt[i].match(/\(/g);
639
+ if (!_.isNil(bra_tl)) {
640
+ bra_tl_len += bra_tl.length;
641
+ }
642
+ }
643
+ }
644
+ if (!_.isNil(bra_tr_txt)) {
645
+ for (var i = 0; i < bra_tr_txt.length; i += 1) {
646
+ var bra_tr = bra_tr_txt[i].match(/\)/g);
647
+ if (!_.isNil(bra_tr)) {
648
+ bra_tr_len += bra_tr.length;
649
+ }
650
+ }
651
+ }
652
+ bra_l_len -= bra_tl_len;
653
+ bra_r_len -= bra_tr_len;
654
+ if (bra_l_len !== bra_r_len) {
655
+ return false;
656
+ }
657
+ return true;
658
+ }
659
+ export function insertUpdateFunctionGroup(ctx, r, c, id, calcChainSet) {
660
+ if (_.isNil(id)) {
661
+ id = ctx.currentSheetId;
662
+ }
663
+ var luckysheetfile = ctx.luckysheetfile;
664
+ var idx = getSheetIndex(ctx, id);
665
+ if (_.isNil(idx)) {
666
+ return;
667
+ }
668
+ var file = luckysheetfile[idx];
669
+ var calcChain = file.calcChain;
670
+ if (_.isNil(calcChain)) {
671
+ calcChain = [];
672
+ }
673
+ if (calcChainSet) {
674
+ if (calcChainSet.has("".concat(r, "_").concat(c, "_").concat(id))) return;
675
+ } else {
676
+ for (var i = 0; i < calcChain.length; i += 1) {
677
+ var calc = calcChain[i];
678
+ if (calc.r === r && calc.c === c && calc.id === id) {
679
+ return;
680
+ }
681
+ }
682
+ }
683
+ var cc = {
684
+ r: r,
685
+ c: c,
686
+ id: id
687
+ };
688
+ calcChain.push(cc);
689
+ file.calcChain = calcChain;
690
+ ctx.luckysheetfile = luckysheetfile;
691
+ }
692
+ export function execfunction(ctx, txt, r, c, id, calcChainSet, isrefresh, notInsertFunc) {
693
+ if (txt.indexOf(error.r) > -1) {
694
+ return [false, error.r, txt];
695
+ }
696
+ if (!checkBracketNum(txt)) {
697
+ txt += ")";
698
+ }
699
+ if (_.isNil(id)) {
700
+ id = ctx.currentSheetId;
701
+ }
702
+ ctx.calculateSheetId = id;
703
+ ctx.formulaCache.parser.context = ctx;
704
+ var parsedResponse = ctx.formulaCache.parser.parse(txt.substring(1), {
705
+ sheetId: id || ctx.currentSheetId,
706
+ row: r,
707
+ column: c
708
+ });
709
+ var formulaError = parsedResponse.error;
710
+ var result = parsedResponse.result;
711
+ if (Object.prototype.toString.call(result) === "[object Date]" && !_.isNil(result)) {
712
+ result = result.toString();
713
+ }
714
+ if (!_.isNil(r) && !_.isNil(c)) {
715
+ if (isrefresh) {
716
+ var finalResult_1 = result;
717
+ if (ctx.formulaCache.parser.cryptoDenomination && ctx.formulaCache.parser.cryptoDenomination !== "" && (typeof result === "number" || typeof result === "string")) {
718
+ var resultStr = Number(result).toFixed(ctx.formulaCache.parser.cryptoDecimals).toLowerCase();
719
+ finalResult_1 = "".concat(resultStr, " ").concat(ctx.formulaCache.parser.cryptoDenomination);
720
+ }
721
+ execFunctionGroup(ctx, r, c, _.isNil(formulaError) ? finalResult_1 : formulaError, id);
722
+ }
723
+ if (!notInsertFunc) {
724
+ insertUpdateFunctionGroup(ctx, r, c, id, calcChainSet);
725
+ }
726
+ }
727
+ var finalResult = result;
728
+ if (ctx.formulaCache.parser.cryptoDenomination && ctx.formulaCache.parser.cryptoDenomination !== "" && (typeof result === "number" || typeof result === "string")) {
729
+ var resultStr = Number(result).toFixed(ctx.formulaCache.parser.cryptoDecimals).toLowerCase();
730
+ finalResult = "".concat(resultStr, " ").concat(ctx.formulaCache.parser.cryptoDenomination);
731
+ }
732
+ return [true, _.isNil(formulaError) ? finalResult : formulaError, txt];
733
+ }
734
+ function insertUpdateDynamicArray(ctx, dynamicArrayItem) {
735
+ var r = dynamicArrayItem.r,
736
+ c = dynamicArrayItem.c;
737
+ var id = dynamicArrayItem.id;
738
+ if (_.isNil(id)) {
739
+ id = ctx.currentSheetId;
740
+ }
741
+ var luckysheetfile = ctx.luckysheetfile;
742
+ var idx = getSheetIndex(ctx, id);
743
+ if (idx == null) return [];
744
+ var file = luckysheetfile[idx];
745
+ var dynamicArray = file.dynamicArray;
746
+ if (_.isNil(dynamicArray)) {
747
+ dynamicArray = [];
748
+ }
749
+ for (var i = 0; i < dynamicArray.length; i += 1) {
750
+ var calc = dynamicArray[i];
751
+ if (calc.r === r && calc.c === c && calc.id === id) {
752
+ calc.data = dynamicArrayItem.data;
753
+ calc.f = dynamicArrayItem.f;
754
+ return dynamicArray;
755
+ }
756
+ }
757
+ dynamicArray.push(dynamicArrayItem);
758
+ return dynamicArray;
759
+ }
760
+ export function groupValuesRefresh(ctx) {
761
+ var luckysheetfile = ctx.luckysheetfile;
762
+ if (ctx.groupValuesRefreshData.length > 0) {
763
+ for (var i = 0; i < ctx.groupValuesRefreshData.length; i += 1) {
764
+ var item = ctx.groupValuesRefreshData[i];
765
+ var idx = getSheetIndex(ctx, item.id);
766
+ if (idx == null) continue;
767
+ var file = luckysheetfile[idx];
768
+ var data = file.data;
769
+ if (_.isNil(data)) {
770
+ continue;
771
+ }
772
+ var updateValue = {};
773
+ if (!_.isNil(item.spe)) {
774
+ if (item.spe.type === "sparklines") {
775
+ updateValue.spl = item.spe.data;
776
+ } else if (item.spe.type === "dynamicArrayItem") {
777
+ file.dynamicArray = insertUpdateDynamicArray(ctx, item.spe.data);
778
+ }
779
+ }
780
+ updateValue.v = item.v;
781
+ updateValue.f = item.f;
782
+ setCellValue(ctx, item.r, item.c, data, updateValue);
783
+ }
784
+ ctx.groupValuesRefreshData = [];
785
+ }
786
+ }
787
+ export function execFunctionGroup(ctx, origin_r, origin_c, value, id, data, isForce) {
788
+ if (isForce === void 0) {
789
+ isForce = false;
790
+ }
791
+ if (_.isNil(data)) {
792
+ data = getFlowdata(ctx);
793
+ }
794
+ if (_.isNil(ctx.formulaCache.execFunctionGlobalData)) {
795
+ ctx.formulaCache.execFunctionGlobalData = {};
796
+ }
797
+ if (_.isNil(id)) {
798
+ id = ctx.currentSheetId;
799
+ }
800
+ if (!_.isNil(value)) {
801
+ var cellCache = [[{
802
+ v: undefined
803
+ }]];
804
+ setCellValue(ctx, 0, 0, cellCache, value);
805
+ ctx.formulaCache.execFunctionGlobalData["".concat(origin_r, "_").concat(origin_c, "_").concat(id)] = cellCache[0][0];
806
+ }
807
+ var calcChains = getAllFunctionGroup(ctx);
808
+ var formulaObjects = {};
809
+ var sheets = ctx.luckysheetfile;
810
+ var sheetData = {};
811
+ for (var i = 0; i < sheets.length; i += 1) {
812
+ var sheet = sheets[i];
813
+ sheetData[sheet.id] = sheet.data;
814
+ }
815
+ var updateValueOjects = {};
816
+ var updateValueArray = [];
817
+ if (_.isNil(ctx.formulaCache.execFunctionExist)) {
818
+ var key = "r".concat(origin_r, "c").concat(origin_c, "i").concat(id);
819
+ updateValueOjects[key] = 1;
820
+ } else {
821
+ for (var x = 0; x < ctx.formulaCache.execFunctionExist.length; x += 1) {
822
+ var cell = ctx.formulaCache.execFunctionExist[x];
823
+ var key = "r".concat(cell.r, "c").concat(cell.c, "i").concat(cell.i);
824
+ updateValueOjects[key] = 1;
825
+ }
826
+ }
827
+ var arrayMatchCache = {};
828
+ var arrayMatch = function arrayMatch(formulaArray, _formulaObjects, _updateValueOjects, func) {
829
+ for (var a = 0; a < formulaArray.length; a += 1) {
830
+ var range = formulaArray[a];
831
+ var cacheKey = "r".concat(range.row[0]).concat(range.row[1], "c").concat(range.column[0]).concat(range.column[1], "id").concat(range.sheetId);
832
+ if (cacheKey in arrayMatchCache) {
833
+ var amc = arrayMatchCache[cacheKey];
834
+ amc.forEach(function (item) {
835
+ func(item.key, item.r, item.c, item.sheetId);
836
+ });
837
+ } else {
838
+ var functionArr = [];
839
+ for (var r = range.row[0]; r <= range.row[1]; r += 1) {
840
+ for (var c = range.column[0]; c <= range.column[1]; c += 1) {
841
+ var key = "r".concat(r, "c").concat(c, "i").concat(range.sheetId);
842
+ func(key, r, c, range.sheetId);
843
+ if (_formulaObjects && key in _formulaObjects || _updateValueOjects && key in _updateValueOjects) {
844
+ functionArr.push({
845
+ key: key,
846
+ r: r,
847
+ c: c,
848
+ sheetId: range.sheetId
849
+ });
850
+ }
851
+ }
852
+ }
853
+ if (_formulaObjects || _updateValueOjects) {
854
+ arrayMatchCache[cacheKey] = functionArr;
855
+ }
856
+ }
857
+ }
858
+ };
859
+ var _loop_1 = function _loop_1(i) {
860
+ var formulaCell = calcChains[i];
861
+ var key = "r".concat(formulaCell.r, "c").concat(formulaCell.c, "i").concat(formulaCell.id);
862
+ var calc_funcStr = getcellFormula(ctx, formulaCell.r, formulaCell.c, formulaCell.id);
863
+ if (_.isNil(calc_funcStr)) {
864
+ return "continue";
865
+ }
866
+ var txt1 = calc_funcStr.toUpperCase();
867
+ var isOffsetFunc = txt1.indexOf("INDIRECT(") > -1 || txt1.indexOf("OFFSET(") > -1 || txt1.indexOf("INDEX(") > -1;
868
+ var formulaArray = [];
869
+ if (isOffsetFunc) {
870
+ isFunctionRange(ctx, calc_funcStr, null, null, formulaCell.id, null, function (str_nb) {
871
+ var range = getcellrange(ctx, _.trim(str_nb), formulaCell.id);
872
+ if (!_.isNil(range)) {
873
+ formulaArray.push(range);
874
+ }
875
+ });
876
+ } else if (!(calc_funcStr.substring(0, 2) === '="' && calc_funcStr.substring(calc_funcStr.length - 1, 1) === '"')) {
877
+ var point = 0;
878
+ var squote = -1;
879
+ var dquote = -1;
880
+ var formulaTextArray = [];
881
+ var sq_end_array = [];
882
+ var calc_funcStr_length = calc_funcStr.length;
883
+ for (var j = 0; j < calc_funcStr_length; j += 1) {
884
+ var char = calc_funcStr.charAt(j);
885
+ if (char === "'" && dquote === -1) {
886
+ if (squote === -1) {
887
+ if (point !== j) {
888
+ formulaTextArray.push.apply(formulaTextArray, calc_funcStr.substring(point, j).split(/==|!=|<>|<=|>=|[,()=+-/*%&^><]/));
889
+ }
890
+ squote = j;
891
+ point = j;
892
+ } else {
893
+ if (j < calc_funcStr_length - 1 && calc_funcStr.charAt(j + 1) === "'") {
894
+ j += 1;
895
+ } else {
896
+ point = j + 1;
897
+ formulaTextArray.push(calc_funcStr.substring(squote, point));
898
+ sq_end_array.push(formulaTextArray.length - 1);
899
+ squote = -1;
900
+ }
901
+ }
902
+ }
903
+ if (char === '"' && squote === -1) {
904
+ if (dquote === -1) {
905
+ if (point !== j) {
906
+ formulaTextArray.push.apply(formulaTextArray, calc_funcStr.substring(point, j).split(/==|!=|<>|<=|>=|[,()=+-/*%&^><]/));
907
+ }
908
+ dquote = j;
909
+ point = j;
910
+ } else {
911
+ if (j < calc_funcStr_length - 1 && calc_funcStr.charAt(j + 1) === '"') {
912
+ j += 1;
913
+ } else {
914
+ point = j + 1;
915
+ formulaTextArray.push(calc_funcStr.substring(dquote, point));
916
+ dquote = -1;
917
+ }
918
+ }
919
+ }
920
+ }
921
+ if (point !== calc_funcStr_length) {
922
+ formulaTextArray.push.apply(formulaTextArray, calc_funcStr.substring(point, calc_funcStr_length).split(/==|!=|<>|<=|>=|[,()=+-/*%&^><]/));
923
+ }
924
+ for (var j = sq_end_array.length - 1; j >= 0; j -= 1) {
925
+ if (sq_end_array[j] !== formulaTextArray.length - 1) {
926
+ formulaTextArray[sq_end_array[j]] += formulaTextArray[sq_end_array[j] + 1];
927
+ formulaTextArray.splice(sq_end_array[j] + 1, 1);
928
+ }
929
+ }
930
+ for (var j = 0; j < formulaTextArray.length; j += 1) {
931
+ var t = formulaTextArray[j];
932
+ if (t.length <= 1) {
933
+ continue;
934
+ }
935
+ if (t.substring(0, 1) === '"' && t.substring(t.length - 1, 1) === '"' || !iscelldata(t)) {
936
+ continue;
937
+ }
938
+ var range = getcellrange(ctx, _.trim(t), formulaCell.id);
939
+ if (_.isNil(range)) {
940
+ continue;
941
+ }
942
+ formulaArray.push(range);
943
+ }
944
+ }
945
+ var item = {
946
+ formulaArray: formulaArray,
947
+ calc_funcStr: calc_funcStr,
948
+ key: key,
949
+ r: formulaCell.r,
950
+ c: formulaCell.c,
951
+ id: formulaCell.id,
952
+ parents: {},
953
+ chidren: {},
954
+ color: "w"
955
+ };
956
+ formulaObjects[key] = item;
957
+ };
958
+ for (var i = 0; i < calcChains.length; i += 1) {
959
+ _loop_1(i);
960
+ }
961
+ Object.keys(formulaObjects).forEach(function (key) {
962
+ var formulaObject = formulaObjects[key];
963
+ arrayMatch(formulaObject.formulaArray, formulaObjects, updateValueOjects, function (childKey) {
964
+ if (childKey in formulaObjects) {
965
+ var childFormulaObject = formulaObjects[childKey];
966
+ formulaObject.chidren[childKey] = 1;
967
+ childFormulaObject.parents[key] = 1;
968
+ }
969
+ if (!isForce && childKey in updateValueOjects) {
970
+ updateValueArray.push(formulaObject);
971
+ }
972
+ });
973
+ if (isForce) {
974
+ updateValueArray.push(formulaObject);
975
+ }
976
+ });
977
+ var formulaRunList = [];
978
+ var stack = updateValueArray;
979
+ var existsFormulaRunList = {};
980
+ var _loop_2 = function _loop_2() {
981
+ var formulaObject = stack.pop();
982
+ if (_.isNil(formulaObject) || formulaObject.key in existsFormulaRunList) {
983
+ return "continue";
984
+ }
985
+ if (formulaObject.color === "b") {
986
+ formulaRunList.push(formulaObject);
987
+ existsFormulaRunList[formulaObject.key] = 1;
988
+ return "continue";
989
+ }
990
+ var cacheStack = [];
991
+ Object.keys(formulaObject.parents).forEach(function (parentKey) {
992
+ var parentFormulaObject = formulaObjects[parentKey];
993
+ if (!_.isNil(parentFormulaObject)) {
994
+ cacheStack.push(parentFormulaObject);
995
+ }
996
+ });
997
+ if (cacheStack.length === 0) {
998
+ formulaRunList.push(formulaObject);
999
+ existsFormulaRunList[formulaObject.key] = 1;
1000
+ } else {
1001
+ formulaObject.color = "b";
1002
+ stack.push(formulaObject);
1003
+ stack = stack.concat(cacheStack);
1004
+ }
1005
+ };
1006
+ while (stack.length > 0) {
1007
+ _loop_2();
1008
+ }
1009
+ formulaRunList.reverse();
1010
+ var calcChainSet = new Set();
1011
+ calcChains.forEach(function (item) {
1012
+ calcChainSet.add("".concat(item.r, "_").concat(item.c, "_").concat(item.id));
1013
+ });
1014
+ for (var i = 0; i < formulaRunList.length; i += 1) {
1015
+ var formulaCell = formulaRunList[i];
1016
+ if (formulaCell.level === Math.max) {
1017
+ continue;
1018
+ }
1019
+ var calc_funcStr = formulaCell.calc_funcStr;
1020
+ var v = execfunction(ctx, calc_funcStr, formulaCell.r, formulaCell.c, formulaCell.id, calcChainSet);
1021
+ ctx.groupValuesRefreshData.push({
1022
+ r: formulaCell.r,
1023
+ c: formulaCell.c,
1024
+ v: v[1],
1025
+ f: v[2],
1026
+ spe: v[3],
1027
+ id: formulaCell.id
1028
+ });
1029
+ ctx.formulaCache.execFunctionGlobalData["".concat(formulaCell.r, "_").concat(formulaCell.c, "_").concat(formulaCell.id)] = {
1030
+ v: v[1],
1031
+ f: v[2]
1032
+ };
1033
+ }
1034
+ ctx.formulaCache.execFunctionExist = undefined;
1035
+ }
1036
+ function findrangeindex(ctx, v, vp) {
1037
+ var re = /<span.*?>/g;
1038
+ var v_a = v.replace(re, "").split("</span>");
1039
+ var vp_a = vp.replace(re, "").split("</span>");
1040
+ v_a.pop();
1041
+ if (vp_a[vp_a.length - 1] === "") vp_a.pop();
1042
+ var pfri = ctx.formulaCache.functionRangeIndex;
1043
+ if (pfri == null) return [];
1044
+ var vplen = vp_a.length;
1045
+ var vlen = v_a.length;
1046
+ if (vplen === vlen) {
1047
+ var i = pfri[0];
1048
+ var p = vp_a[i];
1049
+ var n = v_a[i];
1050
+ if (_.isNil(p)) {
1051
+ if (vp_a.length <= i) {
1052
+ pfri = [vp_a.length - 1, vp_a.length - 1];
1053
+ } else if (v_a.length <= i) {
1054
+ pfri = [v_a.length - 1, v_a.length - 1];
1055
+ }
1056
+ return pfri;
1057
+ }
1058
+ if (p.length === n.length) {
1059
+ if (!_.isNil(vp_a[i + 1]) && !_.isNil(v_a[i + 1]) && vp_a[i + 1].length < v_a[i + 1].length) {
1060
+ pfri[0] += 1;
1061
+ pfri[1] = 1;
1062
+ }
1063
+ return pfri;
1064
+ }
1065
+ if (p.length > n.length) {
1066
+ if (!_.isNil(p) && !_.isNil(v_a[i + 1]) && v_a[i + 1].substring(0, 1) === '"' && (p.indexOf("{") > -1 || p.indexOf("}") > -1)) {
1067
+ pfri[0] += 1;
1068
+ pfri[1] = 1;
1069
+ }
1070
+ return pfri;
1071
+ }
1072
+ if (p.length < n.length) {
1073
+ if (pfri[1] > n.length) {
1074
+ pfri[1] = n.length;
1075
+ }
1076
+ return pfri;
1077
+ }
1078
+ } else if (vplen > vlen) {
1079
+ var i = pfri[0];
1080
+ var p = vp_a[i];
1081
+ var n = v_a[i];
1082
+ if (_.isNil(n)) {
1083
+ if (v_a[i - 1].indexOf("{") > -1) {
1084
+ pfri[0] -= 1;
1085
+ var start = v_a[i - 1].search("{");
1086
+ pfri[1] += start;
1087
+ } else {
1088
+ pfri[0] = 0;
1089
+ pfri[1] = 0;
1090
+ }
1091
+ } else if (p.length === n.length) {
1092
+ if (!_.isNil(v_a[i + 1]) && (v_a[i + 1].substring(0, 1) === '"' || v_a[i + 1].substring(0, 1) === "{" || v_a[i + 1].substring(0, 1) === "}")) {
1093
+ pfri[0] += 1;
1094
+ pfri[1] = 1;
1095
+ } else if (!_.isNil(p) && p.length > 2 && p.substring(0, 1) === '"' && p.substring(p.length - 1, 1) === '"') {} else if (!_.isNil(v_a[i]) && v_a[i] === '")') {
1096
+ pfri[1] = 1;
1097
+ } else if (!_.isNil(v_a[i]) && v_a[i] === '"}') {
1098
+ pfri[1] = 1;
1099
+ } else if (!_.isNil(v_a[i]) && v_a[i] === "{)") {
1100
+ pfri[1] = 1;
1101
+ } else {
1102
+ pfri[1] = n.length;
1103
+ }
1104
+ return pfri;
1105
+ } else if (p.length > n.length) {
1106
+ if (!_.isNil(v_a[i + 1]) && (v_a[i + 1].substring(0, 1) === '"' || v_a[i + 1].substring(0, 1) === "{" || v_a[i + 1].substring(0, 1) === "}")) {
1107
+ pfri[0] += 1;
1108
+ pfri[1] = 1;
1109
+ }
1110
+ return pfri;
1111
+ } else if (p.length < n.length) {
1112
+ return pfri;
1113
+ }
1114
+ return pfri;
1115
+ } else if (vplen < vlen) {
1116
+ var i = pfri[0];
1117
+ var p = vp_a[i];
1118
+ var n = v_a[i];
1119
+ if (_.isNil(p)) {
1120
+ pfri[0] = v_a.length - 1;
1121
+ if (!_.isNil(n)) {
1122
+ pfri[1] = n.length;
1123
+ } else {
1124
+ pfri[1] = 1;
1125
+ }
1126
+ } else if (p.length === n.length) {
1127
+ if (vp_a[i + 1] != null && (vp_a[i + 1].substring(0, 1) === '"' || vp_a[i + 1].substring(0, 1) === "{" || vp_a[i + 1].substring(0, 1) === "}")) {
1128
+ pfri[1] = n.length;
1129
+ } else if (!_.isNil(v_a[i + 1]) && v_a[i + 1].substring(0, 1) === '"' && (v_a[i + 1].substring(0, 1) === "{" || v_a[i + 1].substring(0, 1) === "}")) {
1130
+ pfri[0] += 1;
1131
+ pfri[1] = 1;
1132
+ } else if (!_.isNil(n) && n.substring(0, 1) === '"' && n.substring(n.length - 1, 1) === '"' && p.substring(0, 1) === '"' && p.substring(p.length - 1, 1) === ")") {
1133
+ pfri[1] = n.length;
1134
+ } else if (!_.isNil(n) && n.substring(0, 1) === "{" && n.substring(n.length - 1, 1) === "}" && p.substring(0, 1) === "{" && p.substring(p.length - 1, 1) === ")") {
1135
+ pfri[1] = n.length;
1136
+ } else {
1137
+ pfri[0] = pfri[0] + vlen - vplen;
1138
+ if (v_a.length > vp_a.length) {
1139
+ pfri[1] = v_a[i + 1].length;
1140
+ } else {
1141
+ pfri[1] = 1;
1142
+ }
1143
+ }
1144
+ return pfri;
1145
+ } else if (p.length > n.length) {
1146
+ if (!_.isNil(p) && p.substring(0, 1) === '"') {
1147
+ pfri[1] = n.length;
1148
+ } else if (_.isNil(v_a[i + 1]) && /{.*?}/.test(v_a[i + 1])) {
1149
+ pfri[0] += 1;
1150
+ pfri[1] = v_a[i + 1].length;
1151
+ } else if (!_.isNil(p) && v_a[i + 1].substring(0, 1) === '"' && (p.indexOf("{") > -1 || p.indexOf("}") > -1)) {
1152
+ pfri[0] += 1;
1153
+ pfri[1] = 1;
1154
+ } else if (!_.isNil(p) && (p.indexOf("{") > -1 || p.indexOf("}") > -1)) {} else if (!_.isNil(p) && !_.startsWith(p[0], "=") && _.startsWith(n, "=")) {
1155
+ return [vlen - 1, v_a[vlen - 1].length];
1156
+ } else {
1157
+ pfri[0] = pfri[0] + vlen - vplen - 1;
1158
+ pfri[1] = v_a[(i || 1) - 1].length;
1159
+ }
1160
+ return pfri;
1161
+ } else if (p.length < n.length) {
1162
+ return pfri;
1163
+ }
1164
+ return pfri;
1165
+ }
1166
+ return null;
1167
+ }
1168
+ export function createFormulaRangeSelect(ctx, select) {
1169
+ ctx.formulaRangeSelect = select;
1170
+ }
1171
+ export function createRangeHightlight(ctx, inputInnerHtmlStr, ignoreRangeIndex) {
1172
+ if (ignoreRangeIndex === void 0) {
1173
+ ignoreRangeIndex = -1;
1174
+ }
1175
+ var $span = parseElement("<div>".concat(inputInnerHtmlStr, "</div>"));
1176
+ var formulaRanges = [];
1177
+ $span.querySelectorAll("span.fortune-formula-functionrange-cell").forEach(function (ele) {
1178
+ var rangeIndex = parseInt(ele.getAttribute("rangeindex") || "0", 10);
1179
+ if (rangeIndex === ignoreRangeIndex) return;
1180
+ var cellrange = getcellrange(ctx, ele.textContent || "");
1181
+ if (rangeIndex === ctx.formulaCache.selectingRangeIndex || cellrange == null) return;
1182
+ if (cellrange.sheetId === ctx.currentSheetId || cellrange.sheetId === -1 && ctx.formulaCache.rangetosheet === ctx.currentSheetId) {
1183
+ var rect = seletedHighlistByindex(ctx, cellrange.row[0], cellrange.row[1], cellrange.column[0], cellrange.column[1]);
1184
+ if (rect) {
1185
+ formulaRanges.push(__assign(__assign({
1186
+ rangeIndex: rangeIndex
1187
+ }, rect), {
1188
+ backgroundColor: colors[rangeIndex]
1189
+ }));
1190
+ }
1191
+ }
1192
+ });
1193
+ ctx.formulaRangeHighlight = formulaRanges;
1194
+ }
1195
+ export function setCaretPosition(ctx, textDom, children, pos) {
1196
+ var _a, _b;
1197
+ try {
1198
+ var el = textDom;
1199
+ var range = document.createRange();
1200
+ var sel = window.getSelection();
1201
+ var mainSpan = document.querySelector(".luckysheet-formula-text-string");
1202
+ var textContent = ((_b = (_a = mainSpan === null || mainSpan === void 0 ? void 0 : mainSpan.firstChild) === null || _a === void 0 ? void 0 : _a.nodeValue) === null || _b === void 0 ? void 0 : _b.trim()) || "";
1203
+ var innerSpan = mainSpan === null || mainSpan === void 0 ? void 0 : mainSpan.querySelector(".fortune-formula-functionrange-cell");
1204
+ if (innerSpan && mainSpan) {
1205
+ textContent += innerSpan.textContent;
1206
+ el.innerHTML = textContent;
1207
+ }
1208
+ range.setStart(el.childNodes[children], pos);
1209
+ range.collapse(true);
1210
+ sel === null || sel === void 0 ? void 0 : sel.removeAllRanges();
1211
+ sel === null || sel === void 0 ? void 0 : sel.addRange(range);
1212
+ el.focus();
1213
+ } catch (err) {
1214
+ console.error(err);
1215
+ moveToEnd(ctx.formulaCache.rangeResizeTo[0]);
1216
+ }
1217
+ }
1218
+ function functionRange(ctx, obj, v, vp) {
1219
+ if (window.getSelection) {
1220
+ var currSelection = window.getSelection();
1221
+ if (!currSelection) return;
1222
+ var fri = findrangeindex(ctx, v, vp);
1223
+ if (_.isNil(fri)) {
1224
+ currSelection.selectAllChildren(obj);
1225
+ currSelection.collapseToEnd();
1226
+ } else {
1227
+ setCaretPosition(ctx, obj.querySelectorAll("span")[fri[0]], 0, fri[1]);
1228
+ }
1229
+ } else if (document.selection) {
1230
+ ctx.formulaCache.functionRangeIndex.moveToElementText(obj);
1231
+ ctx.formulaCache.functionRangeIndex.collapse(false);
1232
+ ctx.formulaCache.functionRangeIndex.select();
1233
+ }
1234
+ }
1235
+ function searchFunction(ctx, searchtxt) {
1236
+ var functionlist = locale(ctx).functionlist;
1237
+ var f = [];
1238
+ var s = [];
1239
+ var t = [];
1240
+ var result_i = 0;
1241
+ for (var i = 0; i < functionlist.length; i += 1) {
1242
+ var item = functionlist[i];
1243
+ var n = item.n;
1244
+ if (n === searchtxt) {
1245
+ f.unshift(item);
1246
+ result_i += 1;
1247
+ } else if (_.startsWith(n, searchtxt)) {
1248
+ s.unshift(item);
1249
+ result_i += 1;
1250
+ } else if (n.indexOf(searchtxt) > -1) {
1251
+ t.unshift(item);
1252
+ result_i += 1;
1253
+ }
1254
+ if (result_i >= 10) {
1255
+ break;
1256
+ }
1257
+ }
1258
+ var list = __spreadArray(__spreadArray(__spreadArray([], f, true), s, true), t, true);
1259
+ if (list.length <= 0) {
1260
+ return;
1261
+ }
1262
+ ctx.functionCandidates = list;
1263
+ }
1264
+ export function getrangeseleciton() {
1265
+ var _a, _b, _c, _d, _e;
1266
+ var currSelection = window.getSelection();
1267
+ if (!currSelection) return null;
1268
+ var anchorNode = currSelection.anchorNode,
1269
+ anchorOffset = currSelection.anchorOffset;
1270
+ if (!anchorNode) return null;
1271
+ if (((_b = (_a = anchorNode.parentNode) === null || _a === void 0 ? void 0 : _a.nodeName) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === "span" && anchorOffset !== 0) {
1272
+ var txt = _.trim(anchorNode.textContent || "");
1273
+ if (txt.length === 0 && anchorNode.parentNode.previousSibling) {
1274
+ var ahr = anchorNode.parentNode.previousSibling;
1275
+ txt = _.trim(ahr.textContent || "");
1276
+ return ahr;
1277
+ }
1278
+ return anchorNode.parentNode;
1279
+ }
1280
+ var anchorElement = anchorNode;
1281
+ if (anchorElement.id === "luckysheet-rich-text-editor" || anchorElement.id === "luckysheet-functionbox-cell") {
1282
+ var txt = _.trim((_c = _.last(anchorElement.querySelectorAll("span"))) === null || _c === void 0 ? void 0 : _c.innerText);
1283
+ if (txt.length === 0 && anchorElement.querySelectorAll("span").length > 1) {
1284
+ var ahr = anchorElement.querySelectorAll("span");
1285
+ txt = _.trim(ahr[ahr.length - 2].innerText);
1286
+ return ahr === null || ahr === void 0 ? void 0 : ahr[0];
1287
+ }
1288
+ return _.last(anchorElement.querySelectorAll("span"));
1289
+ }
1290
+ if (((_d = anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.parentElement) === null || _d === void 0 ? void 0 : _d.id) === "luckysheet-rich-text-editor" || ((_e = anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.parentElement) === null || _e === void 0 ? void 0 : _e.id) === "luckysheet-functionbox-cell" || anchorOffset === 0) {
1291
+ var newAnchorNode = anchorOffset === 0 ? anchorNode === null || anchorNode === void 0 ? void 0 : anchorNode.parentNode : anchorNode;
1292
+ if (newAnchorNode === null || newAnchorNode === void 0 ? void 0 : newAnchorNode.previousSibling) {
1293
+ return newAnchorNode === null || newAnchorNode === void 0 ? void 0 : newAnchorNode.previousSibling;
1294
+ }
1295
+ }
1296
+ return null;
1297
+ }
1298
+ function helpFunctionExe($editer, currSelection, ctx) {
1299
+ var _a;
1300
+ var functionlist = locale(ctx).functionlist;
1301
+ if (_.isEmpty(ctx.formulaCache.functionlistMap)) {
1302
+ for (var i_1 = 0; i_1 < functionlist.length; i_1 += 1) {
1303
+ ctx.formulaCache.functionlistMap[functionlist[i_1].n] = functionlist[i_1];
1304
+ }
1305
+ }
1306
+ if (!currSelection) {
1307
+ return null;
1308
+ }
1309
+ var $prev = currSelection;
1310
+ var $span = $editer.querySelectorAll("span");
1311
+ var currentIndex = _.indexOf((_a = currSelection.parentNode) === null || _a === void 0 ? void 0 : _a.childNodes, currSelection);
1312
+ var i = currentIndex;
1313
+ if ($prev == null) {
1314
+ return null;
1315
+ }
1316
+ var funcName = null;
1317
+ var paramindex = null;
1318
+ if ($span[i].classList.contains("luckysheet-formula-text-func")) {
1319
+ funcName = $span[i].textContent;
1320
+ } else {
1321
+ var $cur = null;
1322
+ var exceptIndex = [-1, -1];
1323
+ while (--i > 0) {
1324
+ $cur = $span[i];
1325
+ if ($cur.classList.contains("luckysheet-formula-text-func") || _.trim($cur.textContent || "").toUpperCase() in ctx.formulaCache.functionlistMap) {
1326
+ funcName = $cur.textContent;
1327
+ paramindex = null;
1328
+ var endstate = true;
1329
+ for (var a = i; a <= currentIndex; a += 1) {
1330
+ if (!paramindex) {
1331
+ paramindex = 0;
1332
+ }
1333
+ if (a >= exceptIndex[0] && a <= exceptIndex[1]) {
1334
+ continue;
1335
+ }
1336
+ $cur = $span[a];
1337
+ if ($cur.classList.contains("luckysheet-formula-text-rpar")) {
1338
+ exceptIndex = [i, a];
1339
+ funcName = null;
1340
+ endstate = false;
1341
+ break;
1342
+ }
1343
+ if ($cur.classList.contains("luckysheet-formula-text-comma")) {
1344
+ paramindex += 1;
1345
+ }
1346
+ }
1347
+ if (endstate) {
1348
+ break;
1349
+ }
1350
+ }
1351
+ }
1352
+ }
1353
+ return funcName;
1354
+ }
1355
+ export function rangeHightlightselected(ctx, $editor) {
1356
+ var currSelection = getrangeseleciton();
1357
+ if (!currSelection) return;
1358
+ var currText = _.trim(currSelection.textContent || "");
1359
+ if (currText === "=") {
1360
+ var functionlist = locale(ctx).functionlist;
1361
+ ctx.defaultCandidates = functionlist.filter(function (d) {
1362
+ return d.t === 20;
1363
+ }).slice(0, 11);
1364
+ var funcName = helpFunctionExe($editor, currSelection, ctx);
1365
+ ctx.functionHint = funcName === null || funcName === void 0 ? void 0 : funcName.toUpperCase();
1366
+ return;
1367
+ }
1368
+ if (currText === null || currText === void 0 ? void 0 : currText.match(/^[a-zA-Z_]+$/)) {
1369
+ ctx.defaultCandidates = [];
1370
+ searchFunction(ctx, currText.toUpperCase());
1371
+ ctx.functionHint = null;
1372
+ } else {
1373
+ var funcName = helpFunctionExe($editor, currSelection, ctx);
1374
+ ctx.functionHint = funcName === null || funcName === void 0 ? void 0 : funcName.toUpperCase();
1375
+ ctx.functionCandidates = [];
1376
+ }
1377
+ }
1378
+ function functionHTML(txt) {
1379
+ if (txt.substr(0, 1) === "=") {
1380
+ txt = txt.substr(1);
1381
+ }
1382
+ var funcstack = txt.split("");
1383
+ var i = 0;
1384
+ var str = "";
1385
+ var function_str = "";
1386
+ var matchConfig = {
1387
+ bracket: 0,
1388
+ comma: 0,
1389
+ squote: 0,
1390
+ dquote: 0,
1391
+ braces: 0
1392
+ };
1393
+ while (i < funcstack.length) {
1394
+ var s = funcstack[i];
1395
+ if (s === "(" && matchConfig.squote === 0 && matchConfig.dquote === 0 && matchConfig.braces === 0) {
1396
+ matchConfig.bracket += 1;
1397
+ if (str.length > 0) {
1398
+ function_str += "<span dir=\"auto\" class=\"luckysheet-formula-text-func\">".concat(str, "</span><span dir=\"auto\" class=\"luckysheet-formula-text-lpar\">(</span>");
1399
+ } else {
1400
+ function_str += '<span dir="auto" class="luckysheet-formula-text-lpar">(</span>';
1401
+ }
1402
+ str = "";
1403
+ } else if (s === ")" && matchConfig.squote === 0 && matchConfig.dquote === 0 && matchConfig.braces === 0) {
1404
+ matchConfig.bracket -= 1;
1405
+ function_str += "".concat(functionHTML(str), "<span dir=\"auto\" class=\"luckysheet-formula-text-rpar\">)</span>");
1406
+ str = "";
1407
+ } else if (s === "{" && matchConfig.squote === 0 && matchConfig.dquote === 0) {
1408
+ str += "{";
1409
+ matchConfig.braces += 1;
1410
+ } else if (s === "}" && matchConfig.squote === 0 && matchConfig.dquote === 0) {
1411
+ str += "}";
1412
+ matchConfig.braces -= 1;
1413
+ } else if (s === '"' && matchConfig.squote === 0) {
1414
+ if (matchConfig.dquote > 0) {
1415
+ if (str.length > 0) {
1416
+ function_str += "".concat(str, "\"</span>");
1417
+ } else {
1418
+ function_str += '"</span>';
1419
+ }
1420
+ matchConfig.dquote -= 1;
1421
+ str = "";
1422
+ } else {
1423
+ matchConfig.dquote += 1;
1424
+ if (str.length > 0) {
1425
+ function_str += "".concat(functionHTML(str), "<span dir=\"auto\" class=\"luckysheet-formula-text-string\">\"");
1426
+ } else {
1427
+ function_str += '<span dir="auto" class="luckysheet-formula-text-string">"';
1428
+ }
1429
+ str = "";
1430
+ }
1431
+ } else if (s === "'" && matchConfig.dquote === 0) {
1432
+ str += "'";
1433
+ matchConfig.squote = matchConfig.squote === 0 ? 1 : 0;
1434
+ } else if (s === "," && matchConfig.squote === 0 && matchConfig.dquote === 0 && matchConfig.braces === 0) {
1435
+ function_str += "".concat(functionHTML(str), "<span dir=\"auto\" class=\"luckysheet-formula-text-comma\">,</span>");
1436
+ str = "";
1437
+ } else if (s === "&" && matchConfig.squote === 0 && matchConfig.dquote === 0 && matchConfig.braces === 0) {
1438
+ if (str.length > 0) {
1439
+ function_str += "".concat(functionHTML(str), "<span dir=\"auto\" class=\"luckysheet-formula-text-calc\">") + "&" + "</span>";
1440
+ str = "";
1441
+ } else {
1442
+ function_str += '<span dir="auto" class="luckysheet-formula-text-calc">' + "&" + "</span>";
1443
+ }
1444
+ } else if (s in operatorjson && matchConfig.squote === 0 && matchConfig.dquote === 0 && matchConfig.braces === 0) {
1445
+ var s_next = "";
1446
+ if (i + 1 < funcstack.length) {
1447
+ s_next = funcstack[i + 1];
1448
+ }
1449
+ var p = i - 1;
1450
+ var s_pre = null;
1451
+ if (p >= 0) {
1452
+ do {
1453
+ s_pre = funcstack[p];
1454
+ p -= 1;
1455
+ } while (p >= 0 && s_pre === " ");
1456
+ }
1457
+ if (s + s_next in operatorjson) {
1458
+ if (str.length > 0) {
1459
+ function_str += "".concat(functionHTML(str), "<span dir=\"auto\" class=\"luckysheet-formula-text-calc\">").concat(s).concat(s_next, "</span>");
1460
+ str = "";
1461
+ } else {
1462
+ function_str += "<span dir=\"auto\" class=\"luckysheet-formula-text-calc\">".concat(s).concat(s_next, "</span>");
1463
+ }
1464
+ i += 1;
1465
+ } else if (!/[^0-9]/.test(s_next) && s === "-" && (s_pre === "(" || _.isNil(s_pre) || s_pre === "," || s_pre === " " || s_pre in operatorjson)) {
1466
+ str += s;
1467
+ } else {
1468
+ if (str.length > 0) {
1469
+ function_str += "".concat(functionHTML(str), "<span dir=\"auto\" class=\"luckysheet-formula-text-calc\">").concat(s, "</span>");
1470
+ str = "";
1471
+ } else {
1472
+ function_str += "<span dir=\"auto\" class=\"luckysheet-formula-text-calc\">".concat(s, "</span>");
1473
+ }
1474
+ }
1475
+ } else {
1476
+ str += s;
1477
+ }
1478
+ if (i === funcstack.length - 1) {
1479
+ if (iscelldata(_.trim(str))) {
1480
+ var rangeIndex = rangeIndexes.length > functionHTMLIndex ? rangeIndexes[functionHTMLIndex] : functionHTMLIndex;
1481
+ function_str += "<span class=\"fortune-formula-functionrange-cell\" rangeindex=\"".concat(rangeIndex, "\" dir=\"auto\" style=\"color:").concat(colors[rangeIndex], ";\">").concat(str, "</span>");
1482
+ functionHTMLIndex += 1;
1483
+ } else if (matchConfig.dquote > 0) {
1484
+ function_str += "".concat(str, "</span>");
1485
+ } else if (str.indexOf("</span>") === -1 && str.length > 0) {
1486
+ var regx = /{.*?}/;
1487
+ if (regx.test(_.trim(str))) {
1488
+ var arraytxt = regx.exec(str)[0];
1489
+ var arraystart = str.search(regx);
1490
+ var alltxt = "";
1491
+ if (arraystart > 0) {
1492
+ alltxt += "<span dir=\"auto\" class=\"luckysheet-formula-text-color\">".concat(str.substr(0, arraystart), "</span>");
1493
+ }
1494
+ alltxt += "<span dir=\"auto\" style=\"color:#959a05\" class=\"luckysheet-formula-text-array\">".concat(arraytxt, "</span>");
1495
+ if (arraystart + arraytxt.length < str.length) {
1496
+ alltxt += "<span dir=\"auto\" class=\"luckysheet-formula-text-color\">".concat(str.substr(arraystart + arraytxt.length, str.length), "</span>");
1497
+ }
1498
+ function_str += alltxt;
1499
+ } else {
1500
+ function_str += "<span dir=\"auto\" class=\"luckysheet-formula-text-color\">".concat(str, "</span>");
1501
+ }
1502
+ }
1503
+ }
1504
+ i += 1;
1505
+ }
1506
+ return function_str;
1507
+ }
1508
+ export function functionHTMLGenerate(txt) {
1509
+ if (txt.length === 0 || txt.substring(0, 1) !== "=") {
1510
+ return txt;
1511
+ }
1512
+ functionHTMLIndex = 0;
1513
+ return "<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span>".concat(functionHTML(txt));
1514
+ }
1515
+ function getRangeIndexes($editor) {
1516
+ var res = [];
1517
+ $editor.querySelectorAll("span.fortune-formula-functionrange-cell").forEach(function (ele) {
1518
+ var indexStr = ele.getAttribute("rangeindex");
1519
+ if (indexStr) {
1520
+ var rangeIndex = parseInt(indexStr, 10);
1521
+ res.push(rangeIndex);
1522
+ }
1523
+ });
1524
+ return res;
1525
+ }
1526
+ export function handleFormulaInput(ctx, $copyTo, $editor, kcode, preText, refreshRangeSelect) {
1527
+ var _a, _b, _c, _d, _e, _f;
1528
+ if (refreshRangeSelect === void 0) {
1529
+ refreshRangeSelect = true;
1530
+ }
1531
+ try {
1532
+ var value1 = void 0;
1533
+ var value1txt = preText !== null && preText !== void 0 ? preText : $editor.innerText;
1534
+ var value = $editor.innerText;
1535
+ value = escapeScriptTag(value);
1536
+ if (value.length > 0 && value.substring(0, 1) === "=" && (kcode !== 229 || value.length === 1)) {
1537
+ if (!refreshRangeSelect) rangeIndexes = getRangeIndexes($editor);
1538
+ value = functionHTMLGenerate(value);
1539
+ if (!refreshRangeSelect && functionHTMLIndex < rangeIndexes.length) refreshRangeSelect = true;
1540
+ value1 = functionHTMLGenerate(value1txt);
1541
+ rangeIndexes = [];
1542
+ if (window.getSelection) {
1543
+ var currSelection = window.getSelection();
1544
+ if (!currSelection) return;
1545
+ if (((_a = currSelection.anchorNode) === null || _a === void 0 ? void 0 : _a.nodeName.toLowerCase()) === "div") {
1546
+ var editorlen = $editor.querySelectorAll("span").length;
1547
+ if (editorlen > 0) ctx.formulaCache.functionRangeIndex = [editorlen - 1, (_b = $editor.querySelectorAll("span").item(editorlen - 1).textContent) === null || _b === void 0 ? void 0 : _b.length];
1548
+ } else {
1549
+ ctx.formulaCache.functionRangeIndex = [_.indexOf((_e = (_d = (_c = currSelection.anchorNode) === null || _c === void 0 ? void 0 : _c.parentNode) === null || _d === void 0 ? void 0 : _d.parentNode) === null || _e === void 0 ? void 0 : _e.childNodes, (_f = currSelection.anchorNode) === null || _f === void 0 ? void 0 : _f.parentNode), currSelection.anchorOffset];
1550
+ }
1551
+ } else {
1552
+ var textRange = document.selection.createRange();
1553
+ ctx.formulaCache.functionRangeIndex = textRange;
1554
+ }
1555
+ $editor.innerHTML = value;
1556
+ if ($copyTo) $copyTo.innerHTML = value;
1557
+ functionRange(ctx, $editor, value, value1);
1558
+ if (refreshRangeSelect) {
1559
+ cancelFunctionrangeSelected(ctx);
1560
+ if (kcode !== 46) {
1561
+ createRangeHightlight(ctx, value);
1562
+ }
1563
+ ctx.formulaCache.rangestart = false;
1564
+ ctx.formulaCache.rangedrag_column_start = false;
1565
+ ctx.formulaCache.rangedrag_row_start = false;
1566
+ rangeHightlightselected(ctx, $editor);
1567
+ }
1568
+ } else if (_.startsWith(value1txt, "=") && !_.startsWith(value, "=")) {
1569
+ if ($copyTo) $copyTo.innerHTML = value;
1570
+ $editor.innerHTML = escapeHTMLTag(value);
1571
+ } else if (!_.startsWith(value1txt, "=")) {
1572
+ if (!$copyTo) return;
1573
+ if ($copyTo.id === "luckysheet-rich-text-editor") {
1574
+ if (!_.startsWith($copyTo.innerHTML, "<span")) {
1575
+ $copyTo.innerHTML = escapeHTMLTag(value);
1576
+ }
1577
+ } else {
1578
+ $copyTo.innerHTML = escapeHTMLTag(value);
1579
+ }
1580
+ }
1581
+ } catch (_error) {
1582
+ console.log(_error);
1583
+ }
1584
+ }
1585
+ function isfreezonFuc(txt) {
1586
+ var row = txt.replace(/[^0-9]/g, "");
1587
+ var col = txt.replace(/[^A-Za-z]/g, "");
1588
+ var row$ = txt.substr(txt.indexOf(row) - 1, 1);
1589
+ var col$ = txt.substr(txt.indexOf(col) - 1, 1);
1590
+ var ret = [false, false];
1591
+ if (row$ === "$") {
1592
+ ret[0] = true;
1593
+ }
1594
+ if (col$ === "$") {
1595
+ ret[1] = true;
1596
+ }
1597
+ return ret;
1598
+ }
1599
+ function functionStrChange_range(txt, type, rc, orient, stindex, step) {
1600
+ var val = txt.split("!");
1601
+ var rangetxt;
1602
+ var prefix = "";
1603
+ if (val.length > 1) {
1604
+ rangetxt = val[1];
1605
+ prefix = "".concat(val[0], "!");
1606
+ } else {
1607
+ rangetxt = val[0];
1608
+ }
1609
+ var r1;
1610
+ var r2;
1611
+ var c1;
1612
+ var c2;
1613
+ var $row0;
1614
+ var $row1;
1615
+ var $col0;
1616
+ var $col1;
1617
+ if (rangetxt.indexOf(":") === -1) {
1618
+ r1 = parseInt(rangetxt.replace(/[^0-9]/g, ""), 10) - 1;
1619
+ r2 = r1;
1620
+ c1 = columnCharToIndex(rangetxt.replace(/[^A-Za-z]/g, ""));
1621
+ c2 = c1;
1622
+ var freezonFuc = isfreezonFuc(rangetxt);
1623
+ $row0 = freezonFuc[0] ? "$" : "";
1624
+ $row1 = $row0;
1625
+ $col0 = freezonFuc[1] ? "$" : "";
1626
+ $col1 = $col0;
1627
+ } else {
1628
+ rangetxt = rangetxt.split(":");
1629
+ r1 = parseInt(rangetxt[0].replace(/[^0-9]/g, ""), 10) - 1;
1630
+ r2 = parseInt(rangetxt[1].replace(/[^0-9]/g, ""), 10) - 1;
1631
+ if (r1 > r2) {
1632
+ return txt;
1633
+ }
1634
+ c1 = columnCharToIndex(rangetxt[0].replace(/[^A-Za-z]/g, ""));
1635
+ c2 = columnCharToIndex(rangetxt[1].replace(/[^A-Za-z]/g, ""));
1636
+ if (c1 > c2) {
1637
+ return txt;
1638
+ }
1639
+ var freezonFuc0 = isfreezonFuc(rangetxt[0]);
1640
+ $row0 = freezonFuc0[0] ? "$" : "";
1641
+ $col0 = freezonFuc0[1] ? "$" : "";
1642
+ var freezonFuc1 = isfreezonFuc(rangetxt[1]);
1643
+ $row1 = freezonFuc1[0] ? "$" : "";
1644
+ $col1 = freezonFuc1[1] ? "$" : "";
1645
+ }
1646
+ if (type === "del") {
1647
+ if (rc === "row") {
1648
+ if (r1 >= stindex && r2 <= stindex + step - 1) {
1649
+ return error.r;
1650
+ }
1651
+ if (r1 > stindex + step - 1) {
1652
+ r1 -= step;
1653
+ } else if (r1 >= stindex) {
1654
+ r1 = stindex;
1655
+ }
1656
+ if (r2 > stindex + step - 1) {
1657
+ r2 -= step;
1658
+ } else if (r2 >= stindex) {
1659
+ r2 = stindex - 1;
1660
+ }
1661
+ if (r1 < 0) {
1662
+ r1 = 0;
1663
+ }
1664
+ if (r2 < r1) {
1665
+ r2 = r1;
1666
+ }
1667
+ } else if (rc === "col") {
1668
+ if (c1 >= stindex && c2 <= stindex + step - 1) {
1669
+ return error.r;
1670
+ }
1671
+ if (c1 > stindex + step - 1) {
1672
+ c1 -= step;
1673
+ } else if (c1 >= stindex) {
1674
+ c1 = stindex;
1675
+ }
1676
+ if (c2 > stindex + step - 1) {
1677
+ c2 -= step;
1678
+ } else if (c2 >= stindex) {
1679
+ c2 = stindex - 1;
1680
+ }
1681
+ if (c1 < 0) {
1682
+ c1 = 0;
1683
+ }
1684
+ if (c2 < c1) {
1685
+ c2 = c1;
1686
+ }
1687
+ }
1688
+ if (r1 === r2 && c1 === c2) {
1689
+ if (!Number.isNaN(r1) && !Number.isNaN(c1)) {
1690
+ return prefix + $col0 + indexToColumnChar(c1) + $row0 + (r1 + 1);
1691
+ }
1692
+ if (!Number.isNaN(r1)) {
1693
+ return prefix + $row0 + (r1 + 1);
1694
+ }
1695
+ if (!Number.isNaN(c1)) {
1696
+ return prefix + $col0 + indexToColumnChar(c1);
1697
+ }
1698
+ return txt;
1699
+ }
1700
+ if (Number.isNaN(c1) && Number.isNaN(c2)) {
1701
+ return "".concat(prefix + $row0 + (r1 + 1), ":").concat($row1).concat(r2 + 1);
1702
+ }
1703
+ if (Number.isNaN(r1) && Number.isNaN(r2)) {
1704
+ return "".concat(prefix + $col0 + indexToColumnChar(c1), ":").concat($col1).concat(indexToColumnChar(c2));
1705
+ }
1706
+ return "".concat(prefix + $col0 + indexToColumnChar(c1) + $row0 + (r1 + 1), ":").concat($col1).concat(indexToColumnChar(c2)).concat($row1).concat(r2 + 1);
1707
+ }
1708
+ if (type === "add") {
1709
+ if (rc === "row") {
1710
+ if (orient === "lefttop") {
1711
+ if (r1 >= stindex) {
1712
+ r1 += step;
1713
+ }
1714
+ if (r2 >= stindex) {
1715
+ r2 += step;
1716
+ }
1717
+ } else if (orient === "rightbottom") {
1718
+ if (r1 > stindex) {
1719
+ r1 += step;
1720
+ }
1721
+ if (r2 > stindex) {
1722
+ r2 += step;
1723
+ }
1724
+ }
1725
+ } else if (rc === "col") {
1726
+ if (orient === "lefttop") {
1727
+ if (c1 >= stindex) {
1728
+ c1 += step;
1729
+ }
1730
+ if (c2 >= stindex) {
1731
+ c2 += step;
1732
+ }
1733
+ } else if (orient === "rightbottom") {
1734
+ if (c1 > stindex) {
1735
+ c1 += step;
1736
+ }
1737
+ if (c2 > stindex) {
1738
+ c2 += step;
1739
+ }
1740
+ }
1741
+ }
1742
+ if (r1 === r2 && c1 === c2) {
1743
+ if (!Number.isNaN(r1) && !Number.isNaN(c1)) {
1744
+ return prefix + $col0 + indexToColumnChar(c1) + $row0 + (r1 + 1);
1745
+ }
1746
+ if (!Number.isNaN(r1)) {
1747
+ return prefix + $row0 + (r1 + 1);
1748
+ }
1749
+ if (!Number.isNaN(c1)) {
1750
+ return prefix + $col0 + indexToColumnChar(c1);
1751
+ }
1752
+ return txt;
1753
+ }
1754
+ if (Number.isNaN(c1) && Number.isNaN(c2)) {
1755
+ return "".concat(prefix + $row0 + (r1 + 1), ":").concat($row1).concat(r2 + 1);
1756
+ }
1757
+ if (Number.isNaN(r1) && Number.isNaN(r2)) {
1758
+ return "".concat(prefix + $col0 + indexToColumnChar(c1), ":").concat($col1).concat(indexToColumnChar(c2));
1759
+ }
1760
+ return "".concat(prefix + $col0 + indexToColumnChar(c1) + $row0 + (r1 + 1), ":").concat($col1).concat(indexToColumnChar(c2)).concat($row1).concat(r2 + 1);
1761
+ }
1762
+ return "";
1763
+ }
1764
+ export function israngeseleciton(ctx, istooltip) {
1765
+ var _a, _b, _c;
1766
+ if (istooltip == null) {
1767
+ istooltip = false;
1768
+ }
1769
+ var currSelection = window.getSelection();
1770
+ if (currSelection == null) return false;
1771
+ var anchor = currSelection.anchorNode;
1772
+ if (!(anchor === null || anchor === void 0 ? void 0 : anchor.textContent)) return false;
1773
+ var anchorOffset = currSelection.anchorOffset;
1774
+ var anchorElement = anchor;
1775
+ var parentElement = anchor.parentNode;
1776
+ if (((_a = anchor === null || anchor === void 0 ? void 0 : anchor.parentNode) === null || _a === void 0 ? void 0 : _a.nodeName.toLowerCase()) === "span" && anchorOffset !== 0) {
1777
+ var txt = _.trim(anchor.textContent);
1778
+ var lasttxt = "";
1779
+ if (txt.length === 0 && anchor.parentNode.previousSibling) {
1780
+ var ahr = anchor.parentNode.previousSibling;
1781
+ txt = _.trim(ahr.textContent || "");
1782
+ lasttxt = txt.substring(txt.length - 1, 1);
1783
+ ctx.formulaCache.rangeSetValueTo = anchor.parentNode;
1784
+ } else {
1785
+ lasttxt = txt.substring(anchorOffset - 1, 1);
1786
+ ctx.formulaCache.rangeSetValueTo = anchor.parentNode;
1787
+ }
1788
+ if (istooltip && (lasttxt === "(" || lasttxt === ",") || !istooltip && (lasttxt === "(" || lasttxt === "," || lasttxt === "=" || lasttxt in operatorjson || lasttxt === "&")) {
1789
+ return true;
1790
+ }
1791
+ } else if (anchorElement.id === "luckysheet-rich-text-editor" || anchorElement.id === "luckysheet-functionbox-cell") {
1792
+ var txt = _.trim((_b = _.last(anchorElement.querySelectorAll("span"))) === null || _b === void 0 ? void 0 : _b.innerText);
1793
+ ctx.formulaCache.rangeSetValueTo = _.last(anchorElement.querySelectorAll("span"));
1794
+ if (txt.length === 0 && anchorElement.querySelectorAll("span").length > 1) {
1795
+ var ahr = anchorElement.querySelectorAll("span");
1796
+ txt = _.trim(ahr[ahr.length - 2].innerText);
1797
+ txt = _.trim(ahr[ahr.length - 2].innerText);
1798
+ ctx.formulaCache.rangeSetValueTo = ahr;
1799
+ }
1800
+ var lasttxt = txt.substring(txt.length - 1, 1);
1801
+ if (istooltip && (lasttxt === "(" || lasttxt === ",") || !istooltip && (lasttxt === "(" || lasttxt === "," || lasttxt === "=" || lasttxt in operatorjson || lasttxt === "&")) {
1802
+ return true;
1803
+ }
1804
+ } else if (parentElement.id === "luckysheet-rich-text-editor" || parentElement.id === "luckysheet-functionbox-cell" || anchorOffset === 0) {
1805
+ if (anchorOffset === 0) {
1806
+ anchor = anchor.parentNode;
1807
+ }
1808
+ if (!anchor) return false;
1809
+ if (((_c = anchor.previousSibling) === null || _c === void 0 ? void 0 : _c.textContent) == null) return false;
1810
+ if (anchor.previousSibling) {
1811
+ var txt = _.trim(anchor.previousSibling.textContent);
1812
+ var lasttxt = txt.substring(txt.length - 1, 1);
1813
+ ctx.formulaCache.rangeSetValueTo = anchor.previousSibling;
1814
+ if (istooltip && (lasttxt === "(" || lasttxt === ",") || !istooltip && (lasttxt === "(" || lasttxt === "," || lasttxt === "=" || lasttxt in operatorjson || lasttxt === "&")) {
1815
+ return true;
1816
+ }
1817
+ }
1818
+ }
1819
+ return false;
1820
+ }
1821
+ export function functionStrChange(txt, type, rc, orient, stindex, step) {
1822
+ if (!txt) {
1823
+ return "";
1824
+ }
1825
+ if (txt.substring(0, 1) === "=") {
1826
+ txt = txt.substring(1);
1827
+ }
1828
+ var funcstack = txt.split("");
1829
+ var i = 0;
1830
+ var str = "";
1831
+ var function_str = "";
1832
+ var matchConfig = {
1833
+ bracket: 0,
1834
+ comma: 0,
1835
+ squote: 0,
1836
+ dquote: 0
1837
+ };
1838
+ while (i < funcstack.length) {
1839
+ var s = funcstack[i];
1840
+ if (s === "(" && matchConfig.dquote === 0) {
1841
+ matchConfig.bracket += 1;
1842
+ if (str.length > 0) {
1843
+ function_str += "".concat(str, "(");
1844
+ } else {
1845
+ function_str += "(";
1846
+ }
1847
+ str = "";
1848
+ } else if (s === ")" && matchConfig.dquote === 0) {
1849
+ matchConfig.bracket -= 1;
1850
+ function_str += "".concat(functionStrChange(str, type, rc, orient, stindex, step), ")");
1851
+ str = "";
1852
+ } else if (s === '"' && matchConfig.squote === 0) {
1853
+ if (matchConfig.dquote > 0) {
1854
+ function_str += "".concat(str, "\"");
1855
+ matchConfig.dquote -= 1;
1856
+ str = "";
1857
+ } else {
1858
+ matchConfig.dquote += 1;
1859
+ str += '"';
1860
+ }
1861
+ } else if (s === "," && matchConfig.dquote === 0) {
1862
+ function_str += "".concat(functionStrChange(str, type, rc, orient, stindex, step), ",");
1863
+ str = "";
1864
+ } else if (s === "&" && matchConfig.dquote === 0) {
1865
+ if (str.length > 0) {
1866
+ function_str += "".concat(functionStrChange(str, type, rc, orient, stindex, step), "&");
1867
+ str = "";
1868
+ } else {
1869
+ function_str += "&";
1870
+ }
1871
+ } else if (s in operatorjson && matchConfig.dquote === 0) {
1872
+ var s_next = "";
1873
+ if (i + 1 < funcstack.length) {
1874
+ s_next = funcstack[i + 1];
1875
+ }
1876
+ var p = i - 1;
1877
+ var s_pre = null;
1878
+ if (p >= 0) {
1879
+ do {
1880
+ s_pre = funcstack[p -= 1];
1881
+ } while (p >= 0 && s_pre === " ");
1882
+ }
1883
+ if (s + s_next in operatorjson) {
1884
+ if (str.length > 0) {
1885
+ function_str += functionStrChange(str, type, rc, orient, stindex, step) + s + s_next;
1886
+ str = "";
1887
+ } else {
1888
+ function_str += s + s_next;
1889
+ }
1890
+ i += 1;
1891
+ } else if (!/[^0-9]/.test(s_next) && s === "-" && (s_pre === "(" || s_pre == null || s_pre === "," || s_pre === " " || s_pre in operatorjson)) {
1892
+ str += s;
1893
+ } else {
1894
+ if (str.length > 0) {
1895
+ function_str += functionStrChange(str, type, rc, orient, stindex, step) + s;
1896
+ str = "";
1897
+ } else {
1898
+ function_str += s;
1899
+ }
1900
+ }
1901
+ } else {
1902
+ str += s;
1903
+ }
1904
+ if (i === funcstack.length - 1) {
1905
+ if (iscelldata(_.trim(str))) {
1906
+ function_str += functionStrChange_range(_.trim(str), type, rc, orient, stindex, step);
1907
+ } else {
1908
+ function_str += _.trim(str);
1909
+ }
1910
+ }
1911
+ i += 1;
1912
+ }
1913
+ return function_str;
1914
+ }
1915
+ export function rangeSetValue(ctx, cellInput, selected, fxInput) {
1916
+ var _a, _b, _c, _d, _e;
1917
+ var $editor = cellInput;
1918
+ var $copyTo = fxInput;
1919
+ if (((_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.id) === "luckysheet-functionbox-cell") {
1920
+ $editor = fxInput;
1921
+ $copyTo = cellInput;
1922
+ }
1923
+ var range = "";
1924
+ var rf = selected.row[0];
1925
+ var cf = selected.column[0];
1926
+ if (ctx.config.merge != null && "".concat(rf, "_").concat(cf) in ctx.config.merge) {
1927
+ range = getRangetxt(ctx, ctx.currentSheetId, {
1928
+ column: [cf, cf],
1929
+ row: [rf, rf]
1930
+ }, ctx.formulaCache.rangetosheet);
1931
+ } else {
1932
+ range = getRangetxt(ctx, ctx.currentSheetId, selected, ctx.formulaCache.rangetosheet);
1933
+ }
1934
+ if (!israngeseleciton(ctx) && (ctx.formulaCache.rangestart || ctx.formulaCache.rangedrag_column_start || ctx.formulaCache.rangedrag_row_start)) {
1935
+ var span = $editor.querySelector("span[rangeindex='".concat(ctx.formulaCache.rangechangeindex, "']"));
1936
+ if (span) {
1937
+ span.innerHTML = range;
1938
+ setCaretPosition(ctx, span, 0, range.length);
1939
+ }
1940
+ } else {
1941
+ var function_str = "<span class=\"fortune-formula-functionrange-cell\" rangeindex=\"".concat(functionHTMLIndex, "\" dir=\"auto\" style=\"color:").concat(colors[functionHTMLIndex], ";\">").concat(range, "</span>");
1942
+ var newEle = parseElement(function_str);
1943
+ var refEle = ctx.formulaCache.rangeSetValueTo;
1944
+ if (refEle && refEle.parentNode) {
1945
+ var leftPar = (_b = document.getElementsByClassName("luckysheet-formula-text-lpar")) === null || _b === void 0 ? void 0 : _b[0];
1946
+ if ((_c = leftPar === null || leftPar === void 0 ? void 0 : leftPar.parentElement) === null || _c === void 0 ? void 0 : _c.classList.contains("luckysheet-formula-text-color")) {
1947
+ (_e = (_d = document.getElementsByClassName("luckysheet-formula-text-lpar")) === null || _d === void 0 ? void 0 : _d[0].parentNode) === null || _e === void 0 ? void 0 : _e.appendChild(newEle);
1948
+ } else {
1949
+ refEle.parentNode.insertBefore(newEle, refEle.nextSibling);
1950
+ }
1951
+ } else {
1952
+ $editor.appendChild(newEle);
1953
+ }
1954
+ ctx.formulaCache.rangechangeindex = functionHTMLIndex;
1955
+ var span = $editor.querySelector("span[rangeindex='".concat(ctx.formulaCache.rangechangeindex, "']"));
1956
+ setCaretPosition(ctx, span, 0, range.length);
1957
+ functionHTMLIndex += 1;
1958
+ }
1959
+ if ($copyTo) $copyTo.innerHTML = $editor.innerHTML;
1960
+ }
1961
+ export function onFormulaRangeDragEnd(ctx) {
1962
+ if (ctx.formulaCache.func_selectedrange) {
1963
+ var _a = ctx.formulaCache.func_selectedrange,
1964
+ left = _a.left_move,
1965
+ top_1 = _a.top_move,
1966
+ width = _a.width_move,
1967
+ height = _a.height_move;
1968
+ if (left != null && top_1 != null && width != null && height != null && (ctx.formulaCache.rangestart || ctx.formulaCache.rangedrag_column_start || ctx.formulaCache.rangedrag_row_start)) ctx.formulaRangeSelect = {
1969
+ rangeIndex: ctx.formulaCache.rangeIndex || 0,
1970
+ left: left,
1971
+ top: top_1,
1972
+ width: width,
1973
+ height: height
1974
+ };
1975
+ }
1976
+ ctx.formulaCache.selectingRangeIndex = -1;
1977
+ }
1978
+ function setRangeSelect(container, left, top, height, width) {
1979
+ var rangeElement = container.querySelector(".fortune-formula-functionrange-select");
1980
+ if (rangeElement == null) return;
1981
+ rangeElement.style.left = "".concat(left, "px");
1982
+ rangeElement.style.top = "".concat(top, "px");
1983
+ rangeElement.style.height = "".concat(height, "px");
1984
+ rangeElement.style.width = "".concat(width, "px");
1985
+ }
1986
+ export function rangeDrag(ctx, e, cellInput, scrollLeft, scrollTop, container, fxInput) {
1987
+ var func_selectedrange = ctx.formulaCache.func_selectedrange;
1988
+ if (!func_selectedrange || func_selectedrange.left == null || func_selectedrange.height == null || func_selectedrange.top == null || func_selectedrange.width == null) return;
1989
+ var rect = container.getBoundingClientRect();
1990
+ var x = e.pageX - rect.left - ctx.rowHeaderWidth + scrollLeft;
1991
+ var y = e.pageY - rect.top - ctx.columnHeaderHeight + scrollTop;
1992
+ var _a = rowLocation(y, ctx.visibledatarow),
1993
+ row_pre = _a[0],
1994
+ row = _a[1],
1995
+ row_index = _a[2];
1996
+ var _b = colLocation(x, ctx.visibledatacolumn),
1997
+ col_pre = _b[0],
1998
+ col = _b[1],
1999
+ col_index = _b[2];
2000
+ var top = 0;
2001
+ var height = 0;
2002
+ var rowseleted = [];
2003
+ if (func_selectedrange.top > row_pre) {
2004
+ top = row_pre;
2005
+ height = func_selectedrange.top + func_selectedrange.height - row_pre;
2006
+ rowseleted = [row_index, func_selectedrange.row[1]];
2007
+ } else if (func_selectedrange.top === row_pre) {
2008
+ top = row_pre;
2009
+ height = func_selectedrange.top + func_selectedrange.height - row_pre;
2010
+ rowseleted = [row_index, func_selectedrange.row[0]];
2011
+ } else {
2012
+ top = func_selectedrange.top;
2013
+ height = row - func_selectedrange.top - 1;
2014
+ rowseleted = [func_selectedrange.row[0], row_index];
2015
+ }
2016
+ var left = 0;
2017
+ var width = 0;
2018
+ var columnseleted = [];
2019
+ if (func_selectedrange.left > col_pre) {
2020
+ left = col_pre;
2021
+ width = func_selectedrange.left + func_selectedrange.width - col_pre;
2022
+ columnseleted = [col_index, func_selectedrange.column[1]];
2023
+ } else if (func_selectedrange.left === col_pre) {
2024
+ left = col_pre;
2025
+ width = func_selectedrange.left + func_selectedrange.width - col_pre;
2026
+ columnseleted = [col_index, func_selectedrange.column[0]];
2027
+ } else {
2028
+ left = func_selectedrange.left;
2029
+ width = col - func_selectedrange.left - 1;
2030
+ columnseleted = [func_selectedrange.column[0], col_index];
2031
+ }
2032
+ var changeparam = mergeMoveMain(ctx, columnseleted, rowseleted, func_selectedrange, top, height, left, width);
2033
+ if (changeparam != null) {
2034
+ columnseleted = changeparam[0], rowseleted = changeparam[1], top = changeparam[2], height = changeparam[3], left = changeparam[4], width = changeparam[5];
2035
+ }
2036
+ func_selectedrange.row = rowseleted;
2037
+ func_selectedrange.column = columnseleted;
2038
+ func_selectedrange.left_move = left;
2039
+ func_selectedrange.width_move = width;
2040
+ func_selectedrange.top_move = top;
2041
+ func_selectedrange.height_move = height;
2042
+ rangeSetValue(ctx, cellInput, {
2043
+ row: rowseleted,
2044
+ column: columnseleted
2045
+ }, fxInput);
2046
+ setRangeSelect(container, left, top, height, width);
2047
+ e.preventDefault();
2048
+ }
2049
+ export function rangeDragColumn(ctx, e, cellInput, scrollLeft, scrollTop, container, fxInput) {
2050
+ var func_selectedrange = ctx.formulaCache.func_selectedrange;
2051
+ if (!func_selectedrange || func_selectedrange.left == null || func_selectedrange.height == null || func_selectedrange.top == null || func_selectedrange.width == null) return;
2052
+ var mouse = mousePosition(e.pageX, e.pageY, ctx);
2053
+ var x = mouse[0] + scrollLeft;
2054
+ var visibledatarow = ctx.visibledatarow;
2055
+ var row_index = visibledatarow.length - 1;
2056
+ var row = visibledatarow[row_index];
2057
+ var row_pre = 0;
2058
+ var _a = colLocation(x, ctx.visibledatacolumn),
2059
+ col_pre = _a[0],
2060
+ col = _a[1],
2061
+ col_index = _a[2];
2062
+ var left = 0;
2063
+ var width = 0;
2064
+ var columnseleted = [];
2065
+ if (func_selectedrange.left > col_pre) {
2066
+ left = col_pre;
2067
+ width = func_selectedrange.left + func_selectedrange.width - col_pre;
2068
+ columnseleted = [col_index, func_selectedrange.column[1]];
2069
+ } else if (func_selectedrange.left === col_pre) {
2070
+ left = col_pre;
2071
+ width = func_selectedrange.left + func_selectedrange.width - col_pre;
2072
+ columnseleted = [col_index, func_selectedrange.column[0]];
2073
+ } else {
2074
+ left = func_selectedrange.left;
2075
+ width = col - func_selectedrange.left - 1;
2076
+ columnseleted = [func_selectedrange.column[0], col_index];
2077
+ }
2078
+ var changeparam = mergeMoveMain(ctx, columnseleted, [0, row_index], func_selectedrange, row_pre, row - row_pre - 1, left, width);
2079
+ if (changeparam != null) {
2080
+ columnseleted = changeparam[0], left = changeparam[4], width = changeparam[5];
2081
+ }
2082
+ func_selectedrange.column = columnseleted;
2083
+ func_selectedrange.left_move = left;
2084
+ func_selectedrange.width_move = width;
2085
+ rangeSetValue(ctx, cellInput, {
2086
+ row: [null, null],
2087
+ column: columnseleted
2088
+ }, fxInput);
2089
+ setRangeSelect(container, left, row_pre, row - row_pre - 1, width);
2090
+ }
2091
+ export function rangeDragRow(ctx, e, cellInput, scrollLeft, scrollTop, container, fxInput) {
2092
+ var func_selectedrange = ctx.formulaCache.func_selectedrange;
2093
+ if (!func_selectedrange || func_selectedrange.left == null || func_selectedrange.height == null || func_selectedrange.top == null || func_selectedrange.width == null) return;
2094
+ var mouse = mousePosition(e.pageX, e.pageY, ctx);
2095
+ var y = mouse[1] + scrollTop;
2096
+ var _a = rowLocation(y, ctx.visibledatarow),
2097
+ row_pre = _a[0],
2098
+ row = _a[1],
2099
+ row_index = _a[2];
2100
+ var visibledatacolumn = ctx.visibledatacolumn;
2101
+ var col_index = visibledatacolumn.length - 1;
2102
+ var col = visibledatacolumn[col_index];
2103
+ var col_pre = 0;
2104
+ var top = 0;
2105
+ var height = 0;
2106
+ var rowseleted = [];
2107
+ if (func_selectedrange.top > row_pre) {
2108
+ top = row_pre;
2109
+ height = func_selectedrange.top + func_selectedrange.height - row_pre;
2110
+ rowseleted = [row_index, func_selectedrange.row[1]];
2111
+ } else if (func_selectedrange.top === row_pre) {
2112
+ top = row_pre;
2113
+ height = func_selectedrange.top + func_selectedrange.height - row_pre;
2114
+ rowseleted = [row_index, func_selectedrange.row[0]];
2115
+ } else {
2116
+ top = func_selectedrange.top;
2117
+ height = row - func_selectedrange.top - 1;
2118
+ rowseleted = [func_selectedrange.row[0], row_index];
2119
+ }
2120
+ var changeparam = mergeMoveMain(ctx, [0, col_index], rowseleted, func_selectedrange, top, height, col_pre, col - col_pre - 1);
2121
+ if (changeparam != null) {
2122
+ rowseleted = changeparam[1], top = changeparam[2], height = changeparam[3];
2123
+ }
2124
+ func_selectedrange.row = rowseleted;
2125
+ func_selectedrange.top_move = top;
2126
+ func_selectedrange.height_move = height;
2127
+ rangeSetValue(ctx, cellInput, {
2128
+ row: rowseleted,
2129
+ column: [null, null]
2130
+ }, fxInput);
2131
+ setRangeSelect(container, col_pre, top, height, col - col_pre - 1);
2132
+ }
2133
+ function updateparam(orient, txt, step) {
2134
+ var val = txt.split("!");
2135
+ var rangetxt;
2136
+ var prefix = "";
2137
+ if (val.length > 1) {
2138
+ rangetxt = val[1];
2139
+ prefix = "".concat(val[0], "!");
2140
+ } else {
2141
+ rangetxt = val[0];
2142
+ }
2143
+ if (rangetxt.indexOf(":") === -1) {
2144
+ var row_3 = parseInt(rangetxt.replace(/[^0-9]/g, ""), 10);
2145
+ var col_3 = columnCharToIndex(rangetxt.replace(/[^A-Za-z]/g, ""));
2146
+ var freezonFuc = isfreezonFuc(rangetxt);
2147
+ var $row = freezonFuc[0] ? "$" : "";
2148
+ var $col = freezonFuc[1] ? "$" : "";
2149
+ if (orient === "u" && !freezonFuc[0]) {
2150
+ row_3 -= step;
2151
+ } else if (orient === "r" && !freezonFuc[1]) {
2152
+ col_3 += step;
2153
+ } else if (orient === "l" && !freezonFuc[1]) {
2154
+ col_3 -= step;
2155
+ } else if (orient === "d" && !freezonFuc[0]) {
2156
+ row_3 += step;
2157
+ }
2158
+ if (!Number.isNaN(row_3) && !Number.isNaN(col_3)) {
2159
+ return prefix + $col + indexToColumnChar(col_3) + $row + row_3;
2160
+ }
2161
+ if (!Number.isNaN(row_3)) {
2162
+ return prefix + $row + row_3;
2163
+ }
2164
+ if (!Number.isNaN(col_3)) {
2165
+ return prefix + $col + indexToColumnChar(col_3);
2166
+ }
2167
+ return txt;
2168
+ }
2169
+ rangetxt = rangetxt.split(":");
2170
+ var row = [];
2171
+ var col = [];
2172
+ row[0] = parseInt(rangetxt[0].replace(/[^0-9]/g, ""), 10);
2173
+ row[1] = parseInt(rangetxt[1].replace(/[^0-9]/g, ""), 10);
2174
+ if (row[0] > row[1]) {
2175
+ return txt;
2176
+ }
2177
+ col[0] = columnCharToIndex(rangetxt[0].replace(/[^A-Za-z]/g, ""));
2178
+ col[1] = columnCharToIndex(rangetxt[1].replace(/[^A-Za-z]/g, ""));
2179
+ if (col[0] > col[1]) {
2180
+ return txt;
2181
+ }
2182
+ var freezonFuc0 = isfreezonFuc(rangetxt[0]);
2183
+ var freezonFuc1 = isfreezonFuc(rangetxt[1]);
2184
+ var $row0 = freezonFuc0[0] ? "$" : "";
2185
+ var $col0 = freezonFuc0[1] ? "$" : "";
2186
+ var $row1 = freezonFuc1[0] ? "$" : "";
2187
+ var $col1 = freezonFuc1[1] ? "$" : "";
2188
+ if (orient === "u") {
2189
+ if (!freezonFuc0[0]) {
2190
+ row[0] -= step;
2191
+ }
2192
+ if (!freezonFuc1[0]) {
2193
+ row[1] -= step;
2194
+ }
2195
+ } else if (orient === "r") {
2196
+ if (!freezonFuc0[1]) {
2197
+ col[0] += step;
2198
+ }
2199
+ if (!freezonFuc1[1]) {
2200
+ col[1] += step;
2201
+ }
2202
+ } else if (orient === "l") {
2203
+ if (!freezonFuc0[1]) {
2204
+ col[0] -= step;
2205
+ }
2206
+ if (!freezonFuc1[1]) {
2207
+ col[1] -= step;
2208
+ }
2209
+ } else if (orient === "d") {
2210
+ if (!freezonFuc0[0]) {
2211
+ row[0] += step;
2212
+ }
2213
+ if (!freezonFuc1[0]) {
2214
+ row[1] += step;
2215
+ }
2216
+ }
2217
+ if (row[0] < 0 || col[0] < 0) {
2218
+ return error.r;
2219
+ }
2220
+ if (Number.isNaN(col[0]) && Number.isNaN(col[1])) {
2221
+ return "".concat(prefix + $row0 + row[0], ":").concat($row1).concat(row[1]);
2222
+ }
2223
+ if (Number.isNaN(row[0]) && Number.isNaN(row[1])) {
2224
+ return "".concat(prefix + $col0 + indexToColumnChar(col[0]), ":").concat($col1).concat(indexToColumnChar(col[1]));
2225
+ }
2226
+ return "".concat(prefix + $col0 + indexToColumnChar(col[0]) + $row0 + row[0], ":").concat($col1).concat(indexToColumnChar(col[1])).concat($row1).concat(row[1]);
2227
+ }
2228
+ function downparam(txt, step) {
2229
+ return updateparam("d", txt, step);
2230
+ }
2231
+ function upparam(txt, step) {
2232
+ return updateparam("u", txt, step);
2233
+ }
2234
+ function leftparam(txt, step) {
2235
+ return updateparam("l", txt, step);
2236
+ }
2237
+ function rightparam(txt, step) {
2238
+ return updateparam("r", txt, step);
2239
+ }
2240
+ export function functionCopy(ctx, txt, mode, step) {
2241
+ if (mode == null) {
2242
+ mode = "down";
2243
+ }
2244
+ if (step == null) {
2245
+ step = 1;
2246
+ }
2247
+ if (txt.substring(0, 1) === "=") {
2248
+ txt = txt.substring(1);
2249
+ }
2250
+ var funcstack = txt.split("");
2251
+ var i = 0;
2252
+ var str = "";
2253
+ var function_str = "";
2254
+ var matchConfig = {
2255
+ bracket: 0,
2256
+ comma: 0,
2257
+ squote: 0,
2258
+ dquote: 0
2259
+ };
2260
+ while (i < funcstack.length) {
2261
+ var s = funcstack[i];
2262
+ if (s === "(" && matchConfig.dquote === 0) {
2263
+ matchConfig.bracket += 1;
2264
+ if (str.length > 0) {
2265
+ function_str += "".concat(str, "(");
2266
+ } else {
2267
+ function_str += "(";
2268
+ }
2269
+ str = "";
2270
+ } else if (s === ")" && matchConfig.dquote === 0) {
2271
+ matchConfig.bracket -= 1;
2272
+ function_str += "".concat(functionCopy(ctx, str, mode, step), ")");
2273
+ str = "";
2274
+ } else if (s === '"' && matchConfig.squote === 0) {
2275
+ if (matchConfig.dquote > 0) {
2276
+ function_str += "".concat(str, "\"");
2277
+ matchConfig.dquote -= 1;
2278
+ str = "";
2279
+ } else {
2280
+ matchConfig.dquote += 1;
2281
+ str += '"';
2282
+ }
2283
+ } else if (s === "," && matchConfig.dquote === 0) {
2284
+ function_str += "".concat(functionCopy(ctx, str, mode, step), ",");
2285
+ str = "";
2286
+ } else if (s === "&" && matchConfig.dquote === 0) {
2287
+ if (str.length > 0) {
2288
+ function_str += "".concat(functionCopy(ctx, str, mode, step), "&");
2289
+ str = "";
2290
+ } else {
2291
+ function_str += "&";
2292
+ }
2293
+ } else if (s in operatorjson && matchConfig.dquote === 0) {
2294
+ var s_next = "";
2295
+ if (i + 1 < funcstack.length) {
2296
+ s_next = funcstack[i + 1];
2297
+ }
2298
+ var p = i - 1;
2299
+ var s_pre = null;
2300
+ if (p >= 0) {
2301
+ do {
2302
+ s_pre = funcstack[p];
2303
+ p -= 1;
2304
+ } while (p >= 0 && s_pre === " ");
2305
+ }
2306
+ if (s + s_next in operatorjson) {
2307
+ if (str.length > 0) {
2308
+ function_str += functionCopy(ctx, str, mode, step) + s + s_next;
2309
+ str = "";
2310
+ } else {
2311
+ function_str += s + s_next;
2312
+ }
2313
+ i += 1;
2314
+ } else if (!/[^0-9]/.test(s_next) && s === "-" && (s_pre === "(" || s_pre == null || s_pre === "," || s_pre === " " || s_pre in operatorjson)) {
2315
+ str += s;
2316
+ } else {
2317
+ if (str.length > 0) {
2318
+ function_str += functionCopy(ctx, str, mode, step) + s;
2319
+ str = "";
2320
+ } else {
2321
+ function_str += s;
2322
+ }
2323
+ }
2324
+ } else {
2325
+ str += s;
2326
+ }
2327
+ if (i === funcstack.length - 1) {
2328
+ if (iscelldata(_.trim(str))) {
2329
+ if (mode === "down") {
2330
+ function_str += downparam(_.trim(str), step);
2331
+ } else if (mode === "up") {
2332
+ function_str += upparam(_.trim(str), step);
2333
+ } else if (mode === "left") {
2334
+ function_str += leftparam(_.trim(str), step);
2335
+ } else if (mode === "right") {
2336
+ function_str += rightparam(_.trim(str), step);
2337
+ }
2338
+ } else {
2339
+ function_str += _.trim(str);
2340
+ }
2341
+ }
2342
+ i += 1;
2343
+ }
2344
+ function_str = function_str.replace(/NaN/g, "");
2345
+ return function_str;
2346
+ }