@fileverse-dev/fortune-core 1.0.4 → 1.0.6

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