@fileverse-dev/fortune-core 1.0.26 → 2.0.0

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/index.esm.js +80254 -0
  2. package/dist/index.js +80600 -0
  3. package/{es → dist/packages/core/src}/api/cell.d.ts +10 -10
  4. package/{lib → dist/packages/core/src}/api/common.d.ts +66 -71
  5. package/{es → dist/packages/core/src}/api/errors.d.ts +2 -2
  6. package/{es → dist/packages/core/src}/api/index.d.ts +9 -9
  7. package/{es → dist/packages/core/src}/api/merge.d.ts +5 -5
  8. package/{lib → dist/packages/core/src}/api/range.d.ts +22 -22
  9. package/{lib → dist/packages/core/src}/api/rowcol.d.ts +14 -14
  10. package/{lib → dist/packages/core/src}/api/sheet.d.ts +10 -10
  11. package/{lib → dist/packages/core/src}/api/workbook.d.ts +15 -15
  12. package/{lib → dist/packages/core/src}/canvas.d.ts +46 -46
  13. package/{es → dist/packages/core/src}/context.d.ts +197 -198
  14. package/{es → dist/packages/core/src}/events/copy.d.ts +2 -2
  15. package/{lib → dist/packages/core/src}/events/index.d.ts +4 -4
  16. package/{lib → dist/packages/core/src}/events/keyboard.d.ts +6 -6
  17. package/{es → dist/packages/core/src}/events/mouse.d.ts +22 -22
  18. package/{es → dist/packages/core/src}/events/paste.d.ts +3 -3
  19. package/{lib → dist/packages/core/src}/index.d.ts +10 -10
  20. package/{lib → dist/packages/core/src}/locale/en.d.ts +992 -992
  21. package/{lib → dist/packages/core/src}/locale/es.d.ts +1134 -1134
  22. package/{lib → dist/packages/core/src}/locale/hi.d.ts +1030 -1030
  23. package/{lib → dist/packages/core/src}/locale/index.d.ts +1049 -1049
  24. package/{es → dist/packages/core/src}/locale/zh.d.ts +1048 -1048
  25. package/{lib → dist/packages/core/src}/locale/zh_tw.d.ts +1187 -1187
  26. package/{lib → dist/packages/core/src}/modules/ConditionFormat.d.ts +17 -17
  27. package/{lib → dist/packages/core/src}/modules/border.d.ts +3 -3
  28. package/{lib → dist/packages/core/src}/modules/cell.d.ts +32 -32
  29. package/{es → dist/packages/core/src}/modules/clipboard.d.ts +3 -3
  30. package/{es → dist/packages/core/src}/modules/color.d.ts +1 -1
  31. package/{lib → dist/packages/core/src}/modules/comment.d.ts +97 -97
  32. package/{es → dist/packages/core/src}/modules/conditionalFormat.d.ts +2 -2
  33. package/{es → dist/packages/core/src}/modules/cursor.d.ts +3 -3
  34. package/{es → dist/packages/core/src}/modules/dataVerification.d.ts +11 -11
  35. package/{es → dist/packages/core/src}/modules/dropCell.d.ts +10 -10
  36. package/{lib → dist/packages/core/src}/modules/filter.d.ts +45 -45
  37. package/{es → dist/packages/core/src}/modules/format.d.ts +6 -6
  38. package/{lib → dist/packages/core/src}/modules/formula.d.ts +54 -54
  39. package/{es → dist/packages/core/src}/modules/freeze.d.ts +5 -5
  40. package/{es → dist/packages/core/src}/modules/hyperlink.d.ts +21 -21
  41. package/{lib → dist/packages/core/src}/modules/iframe.d.ts +12 -12
  42. package/{es → dist/packages/core/src}/modules/image.d.ts +31 -31
  43. package/{es → dist/packages/core/src}/modules/index.d.ts +36 -36
  44. package/{lib → dist/packages/core/src}/modules/inline-string.d.ts +36 -36
  45. package/{es → dist/packages/core/src}/modules/location.d.ts +6 -6
  46. package/{es → dist/packages/core/src}/modules/locationCondition.d.ts +21 -21
  47. package/{es → dist/packages/core/src}/modules/merge.d.ts +3 -3
  48. package/{es → dist/packages/core/src}/modules/mobile.d.ts +5 -5
  49. package/{lib → dist/packages/core/src}/modules/moveCells.d.ts +5 -5
  50. package/{lib → dist/packages/core/src}/modules/protection.d.ts +5 -5
  51. package/{lib → dist/packages/core/src}/modules/refresh.d.ts +3 -3
  52. package/{es → dist/packages/core/src}/modules/rowcol.d.ts +19 -19
  53. package/{lib → dist/packages/core/src}/modules/screenshot.d.ts +2 -2
  54. package/{es → dist/packages/core/src}/modules/searchReplace.d.ts +36 -36
  55. package/{lib → dist/packages/core/src}/modules/selection.d.ts +46 -46
  56. package/{es → dist/packages/core/src}/modules/sheet.d.ts +10 -10
  57. package/{es → dist/packages/core/src}/modules/sort.d.ts +7 -7
  58. package/{es → dist/packages/core/src}/modules/splitColumn.d.ts +5 -5
  59. package/{es → dist/packages/core/src}/modules/text.d.ts +10 -10
  60. package/{lib → dist/packages/core/src}/modules/toolbar.d.ts +32 -32
  61. package/{es → dist/packages/core/src}/modules/validation.d.ts +19 -19
  62. package/{es → dist/packages/core/src}/modules/zoom.d.ts +3 -3
  63. package/{es → dist/packages/core/src}/settings.d.ts +100 -100
  64. package/{es → dist/packages/core/src}/types.d.ts +371 -376
  65. package/{es → dist/packages/core/src}/utils/freeze.d.ts +7 -7
  66. package/{es → dist/packages/core/src}/utils/index.d.ts +18 -19
  67. package/{lib → dist/packages/core/src}/utils/patch.d.ts +37 -37
  68. package/dist/packages/react/src/components/ChangeColor/index.d.ts +7 -0
  69. package/dist/packages/react/src/components/ConditionFormat/ConditionRules.d.ts +6 -0
  70. package/dist/packages/react/src/components/ConditionFormat/index.d.ts +7 -0
  71. package/dist/packages/react/src/components/ContextMenu/Divider.d.ts +3 -0
  72. package/dist/packages/react/src/components/ContextMenu/FilterMenu.d.ts +3 -0
  73. package/dist/packages/react/src/components/ContextMenu/Menu.d.ts +8 -0
  74. package/dist/packages/react/src/components/ContextMenu/SheetTab.d.ts +4 -0
  75. package/dist/packages/react/src/components/ContextMenu/index.d.ts +5 -0
  76. package/dist/packages/react/src/components/CustomSort/index.d.ts +4 -0
  77. package/dist/packages/react/src/components/DataVerification/DropdownList.d.ts +4 -0
  78. package/dist/packages/react/src/components/DataVerification/RangeDialog.d.ts +4 -0
  79. package/dist/packages/react/src/components/DataVerification/getDisplayedRangeTxt.d.ts +2 -0
  80. package/dist/packages/react/src/components/DataVerification/index.d.ts +4 -0
  81. package/dist/packages/react/src/components/Dialog/index.d.ts +15 -0
  82. package/dist/packages/react/src/components/DuneChartsInputModal/DuneChartsInputModal.d.ts +11 -0
  83. package/dist/packages/react/src/components/DunePreview/DunePreview.d.ts +13 -0
  84. package/dist/packages/react/src/components/FilterOption/index.d.ts +5 -0
  85. package/dist/packages/react/src/components/FormatSearch/index.d.ts +6 -0
  86. package/dist/packages/react/src/components/FormulaSearch/index.d.ts +5 -0
  87. package/dist/packages/react/src/components/FxEditor/NameBox.d.ts +3 -0
  88. package/dist/packages/react/src/components/FxEditor/index.d.ts +4 -0
  89. package/dist/packages/react/src/components/IFrameBoxs/iFrameBoxs.d.ts +4 -0
  90. package/dist/packages/react/src/components/ImgBoxs/index.d.ts +3 -0
  91. package/dist/packages/react/src/components/LinkEidtCard/index.d.ts +5 -0
  92. package/dist/packages/react/src/components/LocationCondition/index.d.ts +3 -0
  93. package/dist/packages/react/src/components/MessageBox/index.d.ts +9 -0
  94. package/dist/packages/react/src/components/NotationBoxes/index.d.ts +3 -0
  95. package/dist/packages/react/src/components/ResetColumnWidth/index.d.ts +2 -0
  96. package/dist/packages/react/src/components/SVGDefines.d.ts +5 -0
  97. package/dist/packages/react/src/components/SVGIcon.d.ts +9 -0
  98. package/dist/packages/react/src/components/SearchReplace/index.d.ts +6 -0
  99. package/dist/packages/react/src/components/Sheet/index.d.ts +8 -0
  100. package/dist/packages/react/src/components/SheetList/SheetHiddenButton.d.ts +8 -0
  101. package/dist/packages/react/src/components/SheetList/SheetListItem.d.ts +9 -0
  102. package/dist/packages/react/src/components/SheetList/index.d.ts +4 -0
  103. package/dist/packages/react/src/components/SheetOverlay/ColumnHeader.d.ts +3 -0
  104. package/dist/packages/react/src/components/SheetOverlay/ContentEditable.d.ts +11 -0
  105. package/dist/packages/react/src/components/SheetOverlay/FormulaHint/index.d.ts +4 -0
  106. package/dist/packages/react/src/components/SheetOverlay/FormulaSearch/constant.d.ts +63 -0
  107. package/dist/packages/react/src/components/SheetOverlay/FormulaSearch/index.d.ts +4 -0
  108. package/dist/packages/react/src/components/SheetOverlay/InputBox.d.ts +3 -0
  109. package/dist/packages/react/src/components/SheetOverlay/RowHeader.d.ts +3 -0
  110. package/dist/packages/react/src/components/SheetOverlay/ScrollBar/index.d.ts +7 -0
  111. package/dist/packages/react/src/components/SheetOverlay/index.d.ts +4 -0
  112. package/dist/packages/react/src/components/SheetTab/SheetItem.d.ts +8 -0
  113. package/dist/packages/react/src/components/SheetTab/index.d.ts +4 -0
  114. package/dist/packages/react/src/components/SplitColumn/index.d.ts +3 -0
  115. package/dist/packages/react/src/components/Toolbar/Button.d.ts +12 -0
  116. package/dist/packages/react/src/components/Toolbar/ColorPicker.d.ts +6 -0
  117. package/dist/packages/react/src/components/Toolbar/Combo.d.ts +12 -0
  118. package/dist/packages/react/src/components/Toolbar/CustomBorder.d.ts +7 -0
  119. package/dist/packages/react/src/components/Toolbar/CustomButton.d.ts +11 -0
  120. package/dist/packages/react/src/components/Toolbar/CustomColor.d.ts +8 -0
  121. package/dist/packages/react/src/components/Toolbar/CustomIcon.d.ts +9 -0
  122. package/dist/packages/react/src/components/Toolbar/Divider.d.ts +4 -0
  123. package/dist/packages/react/src/components/Toolbar/MoreItemsContainer.d.ts +6 -0
  124. package/dist/packages/react/src/components/Toolbar/Select.d.ts +14 -0
  125. package/dist/packages/react/src/components/Toolbar/index.d.ts +10 -0
  126. package/dist/packages/react/src/components/Workbook/api.d.ts +1177 -0
  127. package/dist/packages/react/src/components/Workbook/index.d.ts +1185 -0
  128. package/dist/packages/react/src/components/ZoomControl/index.d.ts +4 -0
  129. package/dist/packages/react/src/components/index.d.ts +4 -0
  130. package/dist/packages/react/src/constants.d.ts +1 -0
  131. package/dist/packages/react/src/context/index.d.ts +25 -0
  132. package/dist/packages/react/src/context/modal.d.ts +10 -0
  133. package/dist/packages/react/src/hooks/useAlert.d.ts +4 -0
  134. package/dist/packages/react/src/hooks/useDialog.d.ts +5 -0
  135. package/dist/packages/react/src/hooks/useOutsideClick.d.ts +2 -0
  136. package/dist/packages/react/src/hooks/usePrevious.d.ts +2 -0
  137. package/dist/packages/react/src/index.d.ts +1 -0
  138. package/dist/packages/react/src/utils/datepickerStyles.d.ts +2 -0
  139. package/dist/stories/API.stories.d.ts +1210 -0
  140. package/dist/stories/Collabration.stories.d.ts +2359 -0
  141. package/dist/stories/Features.stories.d.ts +9430 -0
  142. package/dist/stories/data/cell.d.ts +983 -0
  143. package/dist/stories/data/dataVerification.d.ts +131 -0
  144. package/dist/stories/data/empty.d.ts +10 -0
  145. package/dist/stories/data/formula.d.ts +362 -0
  146. package/dist/stories/data/freeze.d.ts +34 -0
  147. package/dist/stories/data/protected.d.ts +40 -0
  148. package/dist/stories/utils.d.ts +1 -0
  149. package/package.json +6 -7
  150. package/es/api/cell.js +0 -204
  151. package/es/api/common.d.ts +0 -71
  152. package/es/api/common.js +0 -79
  153. package/es/api/errors.js +0 -2
  154. package/es/api/index.js +0 -8
  155. package/es/api/merge.js +0 -15
  156. package/es/api/range.d.ts +0 -22
  157. package/es/api/range.js +0 -123
  158. package/es/api/rowcol.d.ts +0 -14
  159. package/es/api/rowcol.js +0 -207
  160. package/es/api/sheet.d.ts +0 -10
  161. package/es/api/sheet.js +0 -128
  162. package/es/api/workbook.d.ts +0 -15
  163. package/es/api/workbook.js +0 -85
  164. package/es/canvas.d.ts +0 -46
  165. package/es/canvas.js +0 -1350
  166. package/es/context.js +0 -381
  167. package/es/events/copy.js +0 -78
  168. package/es/events/index.d.ts +0 -4
  169. package/es/events/index.js +0 -4
  170. package/es/events/keyboard.d.ts +0 -6
  171. package/es/events/keyboard.js +0 -332
  172. package/es/events/mouse.js +0 -1725
  173. package/es/events/paste.js +0 -1378
  174. package/es/index.d.ts +0 -10
  175. package/es/index.js +0 -10
  176. package/es/locale/en.d.ts +0 -992
  177. package/es/locale/en.js +0 -10564
  178. package/es/locale/es.d.ts +0 -1134
  179. package/es/locale/es.js +0 -10010
  180. package/es/locale/hi.d.ts +0 -1030
  181. package/es/locale/hi.js +0 -10550
  182. package/es/locale/index.d.ts +0 -1049
  183. package/es/locale/index.js +0 -23
  184. package/es/locale/zh.js +0 -10568
  185. package/es/locale/zh_tw.d.ts +0 -1187
  186. package/es/locale/zh_tw.js +0 -10072
  187. package/es/modules/ConditionFormat.d.ts +0 -17
  188. package/es/modules/ConditionFormat.js +0 -1258
  189. package/es/modules/border.d.ts +0 -3
  190. package/es/modules/border.js +0 -1240
  191. package/es/modules/cell.d.ts +0 -32
  192. package/es/modules/cell.js +0 -1055
  193. package/es/modules/clipboard.js +0 -36
  194. package/es/modules/color.js +0 -1
  195. package/es/modules/comment.d.ts +0 -97
  196. package/es/modules/comment.js +0 -597
  197. package/es/modules/conditionalFormat.js +0 -441
  198. package/es/modules/cursor.js +0 -62
  199. package/es/modules/dataVerification.js +0 -701
  200. package/es/modules/dropCell.js +0 -2267
  201. package/es/modules/filter.d.ts +0 -45
  202. package/es/modules/filter.js +0 -434
  203. package/es/modules/format.js +0 -323
  204. package/es/modules/formula.d.ts +0 -54
  205. package/es/modules/formula.js +0 -2301
  206. package/es/modules/freeze.js +0 -148
  207. package/es/modules/hyperlink.js +0 -216
  208. package/es/modules/iframe.d.ts +0 -12
  209. package/es/modules/iframe.js +0 -220
  210. package/es/modules/image.js +0 -253
  211. package/es/modules/index.js +0 -36
  212. package/es/modules/inline-string.d.ts +0 -36
  213. package/es/modules/inline-string.js +0 -437
  214. package/es/modules/location.js +0 -46
  215. package/es/modules/locationCondition.js +0 -218
  216. package/es/modules/merge.js +0 -216
  217. package/es/modules/mobile.js +0 -33
  218. package/es/modules/moveCells.d.ts +0 -5
  219. package/es/modules/moveCells.js +0 -348
  220. package/es/modules/protection.d.ts +0 -5
  221. package/es/modules/protection.js +0 -96
  222. package/es/modules/refresh.d.ts +0 -3
  223. package/es/modules/refresh.js +0 -34
  224. package/es/modules/rowcol.js +0 -1922
  225. package/es/modules/screenshot.d.ts +0 -2
  226. package/es/modules/screenshot.js +0 -90
  227. package/es/modules/searchReplace.js +0 -388
  228. package/es/modules/selection.d.ts +0 -46
  229. package/es/modules/selection.js +0 -1674
  230. package/es/modules/sheet.js +0 -237
  231. package/es/modules/sort.js +0 -134
  232. package/es/modules/splitColumn.js +0 -126
  233. package/es/modules/ssf.js +0 -1533
  234. package/es/modules/text.js +0 -1207
  235. package/es/modules/toolbar.d.ts +0 -32
  236. package/es/modules/toolbar.js +0 -970
  237. package/es/modules/validation.js +0 -190
  238. package/es/modules/zoom.js +0 -29
  239. package/es/settings.js +0 -36
  240. package/es/types.js +0 -1
  241. package/es/utils/freeze.js +0 -86
  242. package/es/utils/index.js +0 -198
  243. package/es/utils/patch.d.ts +0 -37
  244. package/es/utils/patch.js +0 -381
  245. package/lib/api/cell.d.ts +0 -10
  246. package/lib/api/cell.js +0 -215
  247. package/lib/api/common.js +0 -88
  248. package/lib/api/errors.d.ts +0 -2
  249. package/lib/api/errors.js +0 -8
  250. package/lib/api/index.d.ts +0 -9
  251. package/lib/api/index.js +0 -101
  252. package/lib/api/merge.d.ts +0 -5
  253. package/lib/api/merge.js +0 -22
  254. package/lib/api/range.js +0 -138
  255. package/lib/api/rowcol.js +0 -222
  256. package/lib/api/sheet.js +0 -145
  257. package/lib/api/workbook.js +0 -98
  258. package/lib/canvas.js +0 -1356
  259. package/lib/context.d.ts +0 -198
  260. package/lib/context.js +0 -393
  261. package/lib/events/copy.d.ts +0 -2
  262. package/lib/events/copy.js +0 -85
  263. package/lib/events/index.js +0 -49
  264. package/lib/events/keyboard.js +0 -342
  265. package/lib/events/mouse.d.ts +0 -22
  266. package/lib/events/mouse.js +0 -1744
  267. package/lib/events/paste.d.ts +0 -3
  268. package/lib/events/paste.js +0 -1386
  269. package/lib/index.js +0 -109
  270. package/lib/locale/en.js +0 -10570
  271. package/lib/locale/es.js +0 -10016
  272. package/lib/locale/hi.js +0 -10556
  273. package/lib/locale/index.js +0 -29
  274. package/lib/locale/zh.d.ts +0 -1048
  275. package/lib/locale/zh.js +0 -10574
  276. package/lib/locale/zh_tw.js +0 -10078
  277. package/lib/modules/ConditionFormat.js +0 -1273
  278. package/lib/modules/border.js +0 -1248
  279. package/lib/modules/cell.js +0 -1085
  280. package/lib/modules/clipboard.d.ts +0 -3
  281. package/lib/modules/clipboard.js +0 -42
  282. package/lib/modules/color.d.ts +0 -1
  283. package/lib/modules/color.js +0 -7
  284. package/lib/modules/comment.js +0 -625
  285. package/lib/modules/conditionalFormat.d.ts +0 -2
  286. package/lib/modules/conditionalFormat.js +0 -447
  287. package/lib/modules/cursor.d.ts +0 -3
  288. package/lib/modules/cursor.js +0 -70
  289. package/lib/modules/dataVerification.d.ts +0 -11
  290. package/lib/modules/dataVerification.js +0 -716
  291. package/lib/modules/dropCell.d.ts +0 -10
  292. package/lib/modules/dropCell.js +0 -2283
  293. package/lib/modules/filter.js +0 -448
  294. package/lib/modules/format.d.ts +0 -6
  295. package/lib/modules/format.js +0 -334
  296. package/lib/modules/formula.js +0 -2330
  297. package/lib/modules/freeze.d.ts +0 -5
  298. package/lib/modules/freeze.js +0 -158
  299. package/lib/modules/hyperlink.d.ts +0 -21
  300. package/lib/modules/hyperlink.js +0 -232
  301. package/lib/modules/iframe.js +0 -236
  302. package/lib/modules/image.d.ts +0 -31
  303. package/lib/modules/image.js +0 -272
  304. package/lib/modules/index.d.ts +0 -36
  305. package/lib/modules/index.js +0 -401
  306. package/lib/modules/inline-string.js +0 -452
  307. package/lib/modules/location.d.ts +0 -6
  308. package/lib/modules/location.js +0 -57
  309. package/lib/modules/locationCondition.d.ts +0 -21
  310. package/lib/modules/locationCondition.js +0 -229
  311. package/lib/modules/merge.d.ts +0 -3
  312. package/lib/modules/merge.js +0 -223
  313. package/lib/modules/mobile.d.ts +0 -5
  314. package/lib/modules/mobile.js +0 -41
  315. package/lib/modules/moveCells.js +0 -357
  316. package/lib/modules/protection.js +0 -106
  317. package/lib/modules/refresh.js +0 -40
  318. package/lib/modules/rowcol.d.ts +0 -19
  319. package/lib/modules/rowcol.js +0 -1935
  320. package/lib/modules/screenshot.js +0 -96
  321. package/lib/modules/searchReplace.d.ts +0 -36
  322. package/lib/modules/searchReplace.js +0 -402
  323. package/lib/modules/selection.js +0 -1703
  324. package/lib/modules/sheet.d.ts +0 -10
  325. package/lib/modules/sheet.js +0 -250
  326. package/lib/modules/sort.d.ts +0 -7
  327. package/lib/modules/sort.js +0 -143
  328. package/lib/modules/splitColumn.d.ts +0 -5
  329. package/lib/modules/splitColumn.js +0 -136
  330. package/lib/modules/ssf.js +0 -1539
  331. package/lib/modules/text.d.ts +0 -10
  332. package/lib/modules/text.js +0 -1221
  333. package/lib/modules/toolbar.js +0 -1003
  334. package/lib/modules/validation.d.ts +0 -19
  335. package/lib/modules/validation.js +0 -205
  336. package/lib/modules/zoom.d.ts +0 -3
  337. package/lib/modules/zoom.js +0 -36
  338. package/lib/settings.d.ts +0 -100
  339. package/lib/settings.js +0 -42
  340. package/lib/types.d.ts +0 -376
  341. package/lib/types.js +0 -5
  342. package/lib/utils/freeze.d.ts +0 -7
  343. package/lib/utils/freeze.js +0 -92
  344. package/lib/utils/index.d.ts +0 -19
  345. package/lib/utils/index.js +0 -258
  346. package/lib/utils/patch.js +0 -392
@@ -1,2301 +0,0 @@
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
- }