@gridsheet/react-core 1.4.0 → 2.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. package/README.md +1 -1
  2. package/dist/components/Cell.d.ts +3 -3
  3. package/dist/components/Cell.d.ts.map +1 -1
  4. package/dist/components/ContextMenu.d.ts +19 -2
  5. package/dist/components/ContextMenu.d.ts.map +1 -1
  6. package/dist/components/Editor.d.ts +4 -4
  7. package/dist/components/Editor.d.ts.map +1 -1
  8. package/dist/components/Emitter.d.ts +2 -2
  9. package/dist/components/Emitter.d.ts.map +1 -1
  10. package/dist/components/Fixed.d.ts +3 -3
  11. package/dist/components/Fixed.d.ts.map +1 -1
  12. package/dist/components/FormulaBar.d.ts +1 -2
  13. package/dist/components/FormulaBar.d.ts.map +1 -1
  14. package/dist/components/GridSheet.d.ts +1 -2
  15. package/dist/components/GridSheet.d.ts.map +1 -1
  16. package/dist/components/HeaderCellLeft.d.ts +2 -2
  17. package/dist/components/HeaderCellLeft.d.ts.map +1 -1
  18. package/dist/components/HeaderCellTop.d.ts +2 -2
  19. package/dist/components/HeaderCellTop.d.ts.map +1 -1
  20. package/dist/components/PluginBase.d.ts +4 -4
  21. package/dist/components/PluginBase.d.ts.map +1 -1
  22. package/dist/components/Resizer.d.ts +1 -2
  23. package/dist/components/Resizer.d.ts.map +1 -1
  24. package/dist/components/ScrollHandle.d.ts +9 -0
  25. package/dist/components/ScrollHandle.d.ts.map +1 -0
  26. package/dist/components/SearchBar.d.ts +1 -2
  27. package/dist/components/SearchBar.d.ts.map +1 -1
  28. package/dist/components/StoreObserver.d.ts +11 -0
  29. package/dist/components/StoreObserver.d.ts.map +1 -0
  30. package/dist/components/Tabular.d.ts +3 -3
  31. package/dist/components/Tabular.d.ts.map +1 -1
  32. package/dist/components/hooks.d.ts +2 -0
  33. package/dist/components/hooks.d.ts.map +1 -1
  34. package/dist/components/svg/AddIcon.d.ts +1 -2
  35. package/dist/components/svg/AddIcon.d.ts.map +1 -1
  36. package/dist/components/svg/Base.d.ts +4 -4
  37. package/dist/components/svg/Base.d.ts.map +1 -1
  38. package/dist/components/svg/CloseIcon.d.ts +1 -2
  39. package/dist/components/svg/CloseIcon.d.ts.map +1 -1
  40. package/dist/components/svg/SearchIcon.d.ts +1 -2
  41. package/dist/components/svg/SearchIcon.d.ts.map +1 -1
  42. package/dist/constants.d.ts +3 -2
  43. package/dist/constants.d.ts.map +1 -1
  44. package/dist/formula/evaluator.d.ts +42 -18
  45. package/dist/formula/evaluator.d.ts.map +1 -1
  46. package/dist/formula/functions/__base.d.ts.map +1 -1
  47. package/dist/formula/functions/__utils.d.ts +5 -2
  48. package/dist/formula/functions/__utils.d.ts.map +1 -1
  49. package/dist/formula/functions/abs.d.ts.map +1 -1
  50. package/dist/formula/functions/acos.d.ts.map +1 -1
  51. package/dist/formula/functions/add.d.ts +1 -1
  52. package/dist/formula/functions/add.d.ts.map +1 -1
  53. package/dist/formula/functions/and.d.ts.map +1 -1
  54. package/dist/formula/functions/asin.d.ts.map +1 -1
  55. package/dist/formula/functions/atan.d.ts.map +1 -1
  56. package/dist/formula/functions/atan2.d.ts.map +1 -1
  57. package/dist/formula/functions/average.d.ts.map +1 -1
  58. package/dist/formula/functions/col.d.ts.map +1 -1
  59. package/dist/formula/functions/concat.d.ts.map +1 -1
  60. package/dist/formula/functions/concatenate.d.ts.map +1 -1
  61. package/dist/formula/functions/cos.d.ts.map +1 -1
  62. package/dist/formula/functions/count.d.ts.map +1 -1
  63. package/dist/formula/functions/counta.d.ts.map +1 -1
  64. package/dist/formula/functions/countif.d.ts.map +1 -1
  65. package/dist/formula/functions/divide.d.ts.map +1 -1
  66. package/dist/formula/functions/eq.d.ts.map +1 -1
  67. package/dist/formula/functions/exp.d.ts.map +1 -1
  68. package/dist/formula/functions/gt.d.ts.map +1 -1
  69. package/dist/formula/functions/gte.d.ts.map +1 -1
  70. package/dist/formula/functions/hlookup.d.ts.map +1 -1
  71. package/dist/formula/functions/if.d.ts.map +1 -1
  72. package/dist/formula/functions/iferror.d.ts.map +1 -1
  73. package/dist/formula/functions/index.d.ts +18 -0
  74. package/dist/formula/functions/index.d.ts.map +1 -0
  75. package/dist/formula/functions/len.d.ts.map +1 -1
  76. package/dist/formula/functions/lenb.d.ts.map +1 -1
  77. package/dist/formula/functions/ln.d.ts.map +1 -1
  78. package/dist/formula/functions/log.d.ts.map +1 -1
  79. package/dist/formula/functions/log10.d.ts.map +1 -1
  80. package/dist/formula/functions/lt.d.ts.map +1 -1
  81. package/dist/formula/functions/lte.d.ts.map +1 -1
  82. package/dist/formula/functions/match.d.ts +18 -0
  83. package/dist/formula/functions/match.d.ts.map +1 -0
  84. package/dist/formula/functions/match.test.d.ts +2 -0
  85. package/dist/formula/functions/match.test.d.ts.map +1 -0
  86. package/dist/formula/functions/max.d.ts.map +1 -1
  87. package/dist/formula/functions/min.d.ts.map +1 -1
  88. package/dist/formula/functions/minus.d.ts.map +1 -1
  89. package/dist/formula/functions/mod.d.ts.map +1 -1
  90. package/dist/formula/functions/multiply.d.ts.map +1 -1
  91. package/dist/formula/functions/ne.d.ts.map +1 -1
  92. package/dist/formula/functions/not.d.ts.map +1 -1
  93. package/dist/formula/functions/now.d.ts.map +1 -1
  94. package/dist/formula/functions/or.d.ts.map +1 -1
  95. package/dist/formula/functions/pi.d.ts.map +1 -1
  96. package/dist/formula/functions/power.d.ts.map +1 -1
  97. package/dist/formula/functions/product.d.ts.map +1 -1
  98. package/dist/formula/functions/radians.d.ts.map +1 -1
  99. package/dist/formula/functions/rand.d.ts.map +1 -1
  100. package/dist/formula/functions/round.d.ts.map +1 -1
  101. package/dist/formula/functions/rounddown.d.ts.map +1 -1
  102. package/dist/formula/functions/roundup.d.ts.map +1 -1
  103. package/dist/formula/functions/row.d.ts.map +1 -1
  104. package/dist/formula/functions/sin.d.ts.map +1 -1
  105. package/dist/formula/functions/sqrt.d.ts.map +1 -1
  106. package/dist/formula/functions/sum.d.ts.map +1 -1
  107. package/dist/formula/functions/sumif.d.ts.map +1 -1
  108. package/dist/formula/functions/tan.d.ts.map +1 -1
  109. package/dist/formula/functions/uminus.d.ts.map +1 -1
  110. package/dist/formula/functions/vlookup.d.ts.map +1 -1
  111. package/dist/formula/mapping.d.ts.map +1 -1
  112. package/dist/formula/solver.d.ts +10 -7
  113. package/dist/formula/solver.d.ts.map +1 -1
  114. package/dist/index.d.ts +15 -6
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +10330 -20
  117. package/dist/index.js.map +1 -1
  118. package/dist/lib/autofill.d.ts +2 -2
  119. package/dist/lib/autofill.d.ts.map +1 -1
  120. package/dist/lib/clipboard.d.ts.map +1 -1
  121. package/dist/lib/converters.d.ts +3 -4
  122. package/dist/lib/converters.d.ts.map +1 -1
  123. package/dist/lib/events.d.ts +6 -0
  124. package/dist/lib/events.d.ts.map +1 -0
  125. package/dist/lib/hub.d.ts +72 -0
  126. package/dist/lib/hub.d.ts.map +1 -0
  127. package/dist/lib/input.d.ts +12 -2
  128. package/dist/lib/input.d.ts.map +1 -1
  129. package/dist/lib/operation.d.ts +27 -0
  130. package/dist/lib/operation.d.ts.map +1 -0
  131. package/dist/lib/palette.d.ts +1 -1
  132. package/dist/lib/palette.d.ts.map +1 -1
  133. package/dist/lib/paste.d.ts +4 -0
  134. package/dist/lib/paste.d.ts.map +1 -0
  135. package/dist/lib/reference.d.ts +13 -0
  136. package/dist/lib/reference.d.ts.map +1 -0
  137. package/dist/lib/sheet.d.ts +3 -0
  138. package/dist/lib/sheet.d.ts.map +1 -0
  139. package/dist/lib/structs.d.ts +12 -3
  140. package/dist/lib/structs.d.ts.map +1 -1
  141. package/dist/lib/table.d.ts +152 -91
  142. package/dist/lib/table.d.ts.map +1 -1
  143. package/dist/lib/time.d.ts +1 -0
  144. package/dist/lib/time.d.ts.map +1 -1
  145. package/dist/lib/virtualization.d.ts +3 -2
  146. package/dist/lib/virtualization.d.ts.map +1 -1
  147. package/dist/parsers/core.d.ts +2 -0
  148. package/dist/parsers/core.d.ts.map +1 -1
  149. package/dist/policy/core.d.ts +47 -0
  150. package/dist/policy/core.d.ts.map +1 -0
  151. package/dist/renderers/checkbox.d.ts +2 -2
  152. package/dist/renderers/checkbox.d.ts.map +1 -1
  153. package/dist/renderers/core.d.ts +39 -25
  154. package/dist/renderers/core.d.ts.map +1 -1
  155. package/dist/renderers/thousand_separator.d.ts +2 -3
  156. package/dist/renderers/thousand_separator.d.ts.map +1 -1
  157. package/dist/store/actions.d.ts +141 -49
  158. package/dist/store/actions.d.ts.map +1 -1
  159. package/dist/store/dispatchers.d.ts +13 -0
  160. package/dist/store/dispatchers.d.ts.map +1 -0
  161. package/dist/store/helpers.d.ts +1 -0
  162. package/dist/store/helpers.d.ts.map +1 -1
  163. package/dist/store/index.d.ts +1 -2
  164. package/dist/store/index.d.ts.map +1 -1
  165. package/dist/styles/embedder.d.ts.map +1 -1
  166. package/dist/styles/minified.d.ts +2 -2
  167. package/dist/styles/minified.d.ts.map +1 -1
  168. package/dist/styles/utils.d.ts +52 -0
  169. package/dist/styles/utils.d.ts.map +1 -0
  170. package/dist/types.d.ts +112 -55
  171. package/dist/types.d.ts.map +1 -1
  172. package/dist/utils.d.ts.map +1 -1
  173. package/package.json +7 -10
  174. package/dist/_virtual/_commonjsHelpers.js +0 -7
  175. package/dist/_virtual/_commonjsHelpers.js.map +0 -1
  176. package/dist/_virtual/dayjs.min.js +0 -8
  177. package/dist/_virtual/dayjs.min.js.map +0 -1
  178. package/dist/_virtual/dayjs.min2.js +0 -5
  179. package/dist/_virtual/dayjs.min2.js.map +0 -1
  180. package/dist/_virtual/timezone.js +0 -8
  181. package/dist/_virtual/timezone.js.map +0 -1
  182. package/dist/_virtual/timezone2.js +0 -5
  183. package/dist/_virtual/timezone2.js.map +0 -1
  184. package/dist/_virtual/utc.js +0 -8
  185. package/dist/_virtual/utc.js.map +0 -1
  186. package/dist/_virtual/utc2.js +0 -5
  187. package/dist/_virtual/utc2.js.map +0 -1
  188. package/dist/components/Cell.js +0 -234
  189. package/dist/components/Cell.js.map +0 -1
  190. package/dist/components/ContextMenu.js +0 -297
  191. package/dist/components/ContextMenu.js.map +0 -1
  192. package/dist/components/Editor.js +0 -464
  193. package/dist/components/Editor.js.map +0 -1
  194. package/dist/components/Emitter.js +0 -26
  195. package/dist/components/Emitter.js.map +0 -1
  196. package/dist/components/Fixed.js +0 -17
  197. package/dist/components/Fixed.js.map +0 -1
  198. package/dist/components/FormulaBar.js +0 -150
  199. package/dist/components/FormulaBar.js.map +0 -1
  200. package/dist/components/GridSheet.js +0 -247
  201. package/dist/components/GridSheet.js.map +0 -1
  202. package/dist/components/HeaderCellLeft.js +0 -131
  203. package/dist/components/HeaderCellLeft.js.map +0 -1
  204. package/dist/components/HeaderCellTop.js +0 -132
  205. package/dist/components/HeaderCellTop.js.map +0 -1
  206. package/dist/components/PluginBase.js +0 -35
  207. package/dist/components/PluginBase.js.map +0 -1
  208. package/dist/components/Resizer.js +0 -98
  209. package/dist/components/Resizer.js.map +0 -1
  210. package/dist/components/SearchBar.js +0 -108
  211. package/dist/components/SearchBar.js.map +0 -1
  212. package/dist/components/SheetProvider.d.ts +0 -30
  213. package/dist/components/SheetProvider.d.ts.map +0 -1
  214. package/dist/components/SheetProvider.js +0 -59
  215. package/dist/components/SheetProvider.js.map +0 -1
  216. package/dist/components/StoreInitializer.d.ts +0 -4
  217. package/dist/components/StoreInitializer.d.ts.map +0 -1
  218. package/dist/components/StoreInitializer.js +0 -84
  219. package/dist/components/StoreInitializer.js.map +0 -1
  220. package/dist/components/Tabular.js +0 -317
  221. package/dist/components/Tabular.js.map +0 -1
  222. package/dist/components/Toggle.d.ts +0 -12
  223. package/dist/components/Toggle.d.ts.map +0 -1
  224. package/dist/components/hooks.js +0 -15
  225. package/dist/components/hooks.js.map +0 -1
  226. package/dist/components/svg/Base.js +0 -24
  227. package/dist/components/svg/Base.js.map +0 -1
  228. package/dist/components/svg/CloseIcon.js +0 -13
  229. package/dist/components/svg/CloseIcon.js.map +0 -1
  230. package/dist/components/svg/SearchIcon.js +0 -13
  231. package/dist/components/svg/SearchIcon.js.map +0 -1
  232. package/dist/constants.js +0 -43
  233. package/dist/constants.js.map +0 -1
  234. package/dist/formula/evaluator.js +0 -679
  235. package/dist/formula/evaluator.js.map +0 -1
  236. package/dist/formula/functions/__base.js +0 -20
  237. package/dist/formula/functions/__base.js.map +0 -1
  238. package/dist/formula/functions/__utils.js +0 -145
  239. package/dist/formula/functions/__utils.js.map +0 -1
  240. package/dist/formula/functions/abs.js +0 -24
  241. package/dist/formula/functions/abs.js.map +0 -1
  242. package/dist/formula/functions/abs.spec.d.ts +0 -2
  243. package/dist/formula/functions/abs.spec.d.ts.map +0 -1
  244. package/dist/formula/functions/acos.js +0 -32
  245. package/dist/formula/functions/acos.js.map +0 -1
  246. package/dist/formula/functions/add.js +0 -57
  247. package/dist/formula/functions/add.js.map +0 -1
  248. package/dist/formula/functions/and.js +0 -28
  249. package/dist/formula/functions/and.js.map +0 -1
  250. package/dist/formula/functions/asin.js +0 -32
  251. package/dist/formula/functions/asin.js.map +0 -1
  252. package/dist/formula/functions/atan.js +0 -29
  253. package/dist/formula/functions/atan.js.map +0 -1
  254. package/dist/formula/functions/atan2.js +0 -35
  255. package/dist/formula/functions/atan2.js.map +0 -1
  256. package/dist/formula/functions/average.js +0 -44
  257. package/dist/formula/functions/average.js.map +0 -1
  258. package/dist/formula/functions/col.js +0 -34
  259. package/dist/formula/functions/col.js.map +0 -1
  260. package/dist/formula/functions/col.spec.d.ts +0 -2
  261. package/dist/formula/functions/col.spec.d.ts.map +0 -1
  262. package/dist/formula/functions/concat.js +0 -27
  263. package/dist/formula/functions/concat.js.map +0 -1
  264. package/dist/formula/functions/concatenate.js +0 -28
  265. package/dist/formula/functions/concatenate.js.map +0 -1
  266. package/dist/formula/functions/cos.js +0 -29
  267. package/dist/formula/functions/cos.js.map +0 -1
  268. package/dist/formula/functions/count.js +0 -38
  269. package/dist/formula/functions/count.js.map +0 -1
  270. package/dist/formula/functions/counta.js +0 -38
  271. package/dist/formula/functions/counta.js.map +0 -1
  272. package/dist/formula/functions/countif.js +0 -32
  273. package/dist/formula/functions/countif.js.map +0 -1
  274. package/dist/formula/functions/countif.spec.d.ts +0 -2
  275. package/dist/formula/functions/countif.spec.d.ts.map +0 -1
  276. package/dist/formula/functions/divide.js +0 -33
  277. package/dist/formula/functions/divide.js.map +0 -1
  278. package/dist/formula/functions/eq.js +0 -29
  279. package/dist/formula/functions/eq.js.map +0 -1
  280. package/dist/formula/functions/eq.spec.d.ts +0 -2
  281. package/dist/formula/functions/eq.spec.d.ts.map +0 -1
  282. package/dist/formula/functions/exp.js +0 -29
  283. package/dist/formula/functions/exp.js.map +0 -1
  284. package/dist/formula/functions/gt.js +0 -29
  285. package/dist/formula/functions/gt.js.map +0 -1
  286. package/dist/formula/functions/gte.js +0 -29
  287. package/dist/formula/functions/gte.js.map +0 -1
  288. package/dist/formula/functions/hlookup.js +0 -75
  289. package/dist/formula/functions/hlookup.js.map +0 -1
  290. package/dist/formula/functions/if.js +0 -39
  291. package/dist/formula/functions/if.js.map +0 -1
  292. package/dist/formula/functions/iferror.js +0 -45
  293. package/dist/formula/functions/iferror.js.map +0 -1
  294. package/dist/formula/functions/iferror.spec.d.ts +0 -2
  295. package/dist/formula/functions/iferror.spec.d.ts.map +0 -1
  296. package/dist/formula/functions/len.js +0 -29
  297. package/dist/formula/functions/len.js.map +0 -1
  298. package/dist/formula/functions/lenb.js +0 -29
  299. package/dist/formula/functions/lenb.js.map +0 -1
  300. package/dist/formula/functions/ln.js +0 -32
  301. package/dist/formula/functions/ln.js.map +0 -1
  302. package/dist/formula/functions/log.js +0 -36
  303. package/dist/formula/functions/log.js.map +0 -1
  304. package/dist/formula/functions/log10.js +0 -32
  305. package/dist/formula/functions/log10.js.map +0 -1
  306. package/dist/formula/functions/lt.js +0 -29
  307. package/dist/formula/functions/lt.js.map +0 -1
  308. package/dist/formula/functions/lte.js +0 -29
  309. package/dist/formula/functions/lte.js.map +0 -1
  310. package/dist/formula/functions/max.js +0 -47
  311. package/dist/formula/functions/max.js.map +0 -1
  312. package/dist/formula/functions/min.js +0 -47
  313. package/dist/formula/functions/min.js.map +0 -1
  314. package/dist/formula/functions/minus.js +0 -57
  315. package/dist/formula/functions/minus.js.map +0 -1
  316. package/dist/formula/functions/mod.js +0 -33
  317. package/dist/formula/functions/mod.js.map +0 -1
  318. package/dist/formula/functions/mod.spec.d.ts +0 -2
  319. package/dist/formula/functions/mod.spec.d.ts.map +0 -1
  320. package/dist/formula/functions/multiply.js +0 -27
  321. package/dist/formula/functions/multiply.js.map +0 -1
  322. package/dist/formula/functions/ne.js +0 -29
  323. package/dist/formula/functions/ne.js.map +0 -1
  324. package/dist/formula/functions/not.js +0 -30
  325. package/dist/formula/functions/not.js.map +0 -1
  326. package/dist/formula/functions/now.js +0 -22
  327. package/dist/formula/functions/now.js.map +0 -1
  328. package/dist/formula/functions/or.js +0 -28
  329. package/dist/formula/functions/or.js.map +0 -1
  330. package/dist/formula/functions/pi.js +0 -22
  331. package/dist/formula/functions/pi.js.map +0 -1
  332. package/dist/formula/functions/power.js +0 -27
  333. package/dist/formula/functions/power.js.map +0 -1
  334. package/dist/formula/functions/product.js +0 -40
  335. package/dist/formula/functions/product.js.map +0 -1
  336. package/dist/formula/functions/radians.js +0 -29
  337. package/dist/formula/functions/radians.js.map +0 -1
  338. package/dist/formula/functions/rand.js +0 -22
  339. package/dist/formula/functions/rand.js.map +0 -1
  340. package/dist/formula/functions/round.js +0 -35
  341. package/dist/formula/functions/round.js.map +0 -1
  342. package/dist/formula/functions/rounddown.js +0 -35
  343. package/dist/formula/functions/rounddown.js.map +0 -1
  344. package/dist/formula/functions/roundup.js +0 -35
  345. package/dist/formula/functions/roundup.js.map +0 -1
  346. package/dist/formula/functions/row.js +0 -34
  347. package/dist/formula/functions/row.js.map +0 -1
  348. package/dist/formula/functions/row.spec.d.ts +0 -2
  349. package/dist/formula/functions/row.spec.d.ts.map +0 -1
  350. package/dist/formula/functions/sin.js +0 -29
  351. package/dist/formula/functions/sin.js.map +0 -1
  352. package/dist/formula/functions/sqrt.js +0 -32
  353. package/dist/formula/functions/sqrt.js.map +0 -1
  354. package/dist/formula/functions/sum.js +0 -47
  355. package/dist/formula/functions/sum.js.map +0 -1
  356. package/dist/formula/functions/sum.spec.d.ts +0 -2
  357. package/dist/formula/functions/sum.spec.d.ts.map +0 -1
  358. package/dist/formula/functions/sumif.js +0 -65
  359. package/dist/formula/functions/sumif.js.map +0 -1
  360. package/dist/formula/functions/tan.js +0 -29
  361. package/dist/formula/functions/tan.js.map +0 -1
  362. package/dist/formula/functions/uminus.js +0 -24
  363. package/dist/formula/functions/uminus.js.map +0 -1
  364. package/dist/formula/functions/vlookup.js +0 -75
  365. package/dist/formula/functions/vlookup.js.map +0 -1
  366. package/dist/formula/mapping.js +0 -119
  367. package/dist/formula/mapping.js.map +0 -1
  368. package/dist/formula/solver.js +0 -70
  369. package/dist/formula/solver.js.map +0 -1
  370. package/dist/lib/autofill.js +0 -391
  371. package/dist/lib/autofill.js.map +0 -1
  372. package/dist/lib/clipboard.js +0 -72
  373. package/dist/lib/clipboard.js.map +0 -1
  374. package/dist/lib/converters.js +0 -141
  375. package/dist/lib/converters.js.map +0 -1
  376. package/dist/lib/input.js +0 -52
  377. package/dist/lib/input.js.map +0 -1
  378. package/dist/lib/palette.js +0 -24
  379. package/dist/lib/palette.js.map +0 -1
  380. package/dist/lib/prevention.d.ts +0 -24
  381. package/dist/lib/prevention.d.ts.map +0 -1
  382. package/dist/lib/prevention.js +0 -82
  383. package/dist/lib/prevention.js.map +0 -1
  384. package/dist/lib/structs.js +0 -276
  385. package/dist/lib/structs.js.map +0 -1
  386. package/dist/lib/table.js +0 -1259
  387. package/dist/lib/table.js.map +0 -1
  388. package/dist/lib/time.js +0 -170
  389. package/dist/lib/time.js.map +0 -1
  390. package/dist/lib/virtualization.js +0 -129
  391. package/dist/lib/virtualization.js.map +0 -1
  392. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js +0 -287
  393. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/dayjs.min.js.map +0 -1
  394. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/timezone.js +0 -72
  395. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/timezone.js.map +0 -1
  396. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/utc.js +0 -85
  397. package/dist/node_modules/.pnpm/dayjs@1.11.13/node_modules/dayjs/plugin/utc.js.map +0 -1
  398. package/dist/parsers/core.js +0 -111
  399. package/dist/parsers/core.js.map +0 -1
  400. package/dist/renderers/checkbox.js +0 -20
  401. package/dist/renderers/checkbox.js.map +0 -1
  402. package/dist/renderers/core.js +0 -135
  403. package/dist/renderers/core.js.map +0 -1
  404. package/dist/renderers/thousand_separator.js +0 -17
  405. package/dist/renderers/thousand_separator.js.map +0 -1
  406. package/dist/store/actions.js +0 -762
  407. package/dist/store/actions.js.map +0 -1
  408. package/dist/store/helpers.js +0 -88
  409. package/dist/store/helpers.js.map +0 -1
  410. package/dist/store/index.js +0 -8
  411. package/dist/store/index.js.map +0 -1
  412. package/dist/styles/embedder.js +0 -19
  413. package/dist/styles/embedder.js.map +0 -1
  414. package/dist/styles/minified.js +0 -7
  415. package/dist/styles/minified.js.map +0 -1
@@ -1,391 +0,0 @@
1
- import dayjs from "../_virtual/dayjs.min.js";
2
- import { complementSelectingArea, zoneToArea, areaShape, areaToZone, concatAreas } from "./structs.js";
3
- import { p2a } from "./converters.js";
4
- import { absolutizeFormula } from "../formula/evaluator.js";
5
- import { TimeDelta } from "./time.js";
6
- const BORDER_AUTOFILL_DRAGGING = "dashed 1px #888888";
7
- const DirectionMapping = {
8
- left: ["horizontal", -1],
9
- right: ["horizontal", 1],
10
- up: ["vertical", -1],
11
- down: ["vertical", 1]
12
- };
13
- class Autofill {
14
- constructor(store, draggingTo) {
15
- const { table, choosing, selectingZone } = store;
16
- this.src = complementSelectingArea(zoneToArea(selectingZone), choosing);
17
- this.direction = this.suggestDirection(draggingTo);
18
- this.dst = this.getDestinationArea(draggingTo);
19
- this.table = table;
20
- }
21
- get applied() {
22
- var _a, _b;
23
- const [orientation, sign] = DirectionMapping[this.direction];
24
- const matrix = this.table.getMatrix({ area: this.src, evaluates: null });
25
- const srcShape = areaShape({ ...this.src, base: 1 });
26
- const dstShape = areaShape({ ...this.dst, base: 1 });
27
- const diff = {};
28
- if (orientation === "horizontal") {
29
- for (let i = 0; i < dstShape.height; i++) {
30
- const patterns = this.getChangePatterns(matrix[i]);
31
- for (let j = 0; j < dstShape.width; j++) {
32
- const baseCell = (_a = matrix[i % srcShape.height]) == null ? void 0 : _a[j % srcShape.width];
33
- const x = sign > 0 ? this.dst.left + j : this.dst.right - j;
34
- const px = sign > 0 ? j % srcShape.width : (srcShape.width - 1 - j % srcShape.width) % srcShape.width;
35
- diff[p2a({ y: this.dst.top + i, x })] = {
36
- ...baseCell,
37
- value: patterns[px].next().value
38
- };
39
- }
40
- }
41
- } else {
42
- for (let i = 0; i < dstShape.width; i++) {
43
- const patterns = this.getChangePatterns(matrix.map((row) => row[i]));
44
- for (let j = 0; j < dstShape.height; j++) {
45
- const baseCell = (_b = matrix[j % srcShape.height]) == null ? void 0 : _b[i % srcShape.width];
46
- const y = sign > 0 ? this.dst.top + j : this.dst.bottom - j;
47
- const py = sign > 0 ? j % srcShape.height : (srcShape.height - 1 - j % srcShape.height) % srcShape.height;
48
- const value = patterns[py].next().value;
49
- diff[p2a({ y, x: this.dst.left + i })] = { ...baseCell, value };
50
- }
51
- }
52
- }
53
- const table = this.table.update({
54
- diff,
55
- operator: "USER",
56
- reflection: {
57
- selectingZone: areaToZone(this.src)
58
- }
59
- });
60
- return table;
61
- }
62
- get wholeArea() {
63
- return concatAreas(this.src, this.dst);
64
- }
65
- getCellStyle(target) {
66
- const { x, y } = target;
67
- const style = {};
68
- const { top, left, bottom, right } = this.src;
69
- switch (this.direction) {
70
- case "left": {
71
- if (this.dst.left <= x && x <= this.dst.right) {
72
- if (top === y) {
73
- style.borderTop = BORDER_AUTOFILL_DRAGGING;
74
- }
75
- if (bottom === y - 1) {
76
- style.borderTop = BORDER_AUTOFILL_DRAGGING;
77
- }
78
- }
79
- if (this.dst.left === x && top <= y && y <= bottom) {
80
- style.borderLeft = BORDER_AUTOFILL_DRAGGING;
81
- }
82
- break;
83
- }
84
- case "right": {
85
- if (this.dst.left <= x && x <= this.dst.right) {
86
- if (top === y) {
87
- style.borderTop = BORDER_AUTOFILL_DRAGGING;
88
- }
89
- if (bottom === y - 1) {
90
- style.borderTop = BORDER_AUTOFILL_DRAGGING;
91
- }
92
- }
93
- if (this.dst.right === x - 1 && top <= y && y <= bottom) {
94
- style.borderLeft = BORDER_AUTOFILL_DRAGGING;
95
- }
96
- break;
97
- }
98
- case "up": {
99
- if (this.dst.top <= y && y <= this.dst.bottom) {
100
- if (left === x) {
101
- style.borderLeft = BORDER_AUTOFILL_DRAGGING;
102
- }
103
- if (right === x - 1) {
104
- style.borderLeft = BORDER_AUTOFILL_DRAGGING;
105
- }
106
- }
107
- if (this.dst.top === y && left <= x && x <= right) {
108
- style.borderTop = BORDER_AUTOFILL_DRAGGING;
109
- }
110
- break;
111
- }
112
- case "down": {
113
- if (this.dst.top <= y && y <= this.dst.bottom) {
114
- if (left === x) {
115
- style.borderLeft = BORDER_AUTOFILL_DRAGGING;
116
- }
117
- if (right === x - 1) {
118
- style.borderLeft = BORDER_AUTOFILL_DRAGGING;
119
- }
120
- }
121
- if (this.dst.bottom === y - 1 && left <= x && x <= right) {
122
- style.borderTop = BORDER_AUTOFILL_DRAGGING;
123
- }
124
- break;
125
- }
126
- }
127
- return style;
128
- }
129
- getDestinationArea(autofillDraggingTo) {
130
- const { x, y } = autofillDraggingTo;
131
- const { top, left, bottom, right } = this.src;
132
- switch (this.direction) {
133
- case "left":
134
- return { top, bottom, left: x, right: left - 1 };
135
- case "right":
136
- return { top, bottom, left: right + 1, right: x };
137
- case "up":
138
- return { left, right, top: y, bottom: top - 1 };
139
- case "down":
140
- return { left, right, top: bottom + 1, bottom: y };
141
- }
142
- return this.src;
143
- }
144
- suggestDirection(draggingTo) {
145
- const { top, left, bottom, right } = this.src;
146
- let horizontal = 0, vertical = 0;
147
- if (draggingTo.x < left) {
148
- horizontal = draggingTo.x - left;
149
- } else if (draggingTo.x > right) {
150
- horizontal = draggingTo.x - right;
151
- }
152
- if (draggingTo.y < top) {
153
- vertical = draggingTo.y - top;
154
- } else if (draggingTo.y > bottom) {
155
- vertical = draggingTo.y - bottom;
156
- }
157
- if (Math.abs(horizontal) > 0 && Math.abs(vertical) > 0) {
158
- if (Math.abs(horizontal) > Math.abs(vertical)) {
159
- return horizontal < 0 ? "left" : "right";
160
- }
161
- return vertical < 0 ? "up" : "down";
162
- }
163
- if (horizontal !== 0) {
164
- return horizontal < 0 ? "left" : "right";
165
- }
166
- if (vertical !== 0) {
167
- return vertical < 0 ? "up" : "down";
168
- }
169
- return "down";
170
- }
171
- getChangePatterns(cells) {
172
- const result = [];
173
- const groups = groupByType(cells);
174
- const [orientation, sign] = DirectionMapping[this.direction];
175
- groups.forEach((group) => {
176
- const lastValue = sign > 0 ? group.last : group.first;
177
- switch (group.kind) {
178
- case "other": {
179
- result.push(pass(group.first));
180
- return;
181
- }
182
- case "formula": {
183
- const value = group.first;
184
- const table = this.table;
185
- function* generateFormula() {
186
- let slide = 0;
187
- const skip = cells.length * sign;
188
- while (true) {
189
- slide += skip;
190
- yield absolutizeFormula({
191
- value,
192
- table,
193
- slideY: orientation === "vertical" ? slide : 0,
194
- slideX: orientation === "horizontal" ? slide : 0
195
- });
196
- }
197
- }
198
- result.push(generateFormula());
199
- return;
200
- }
201
- case "number": {
202
- if (!group.equidistant) {
203
- result.push(pass(group.first), ...group.nexts.map((v) => pass(v)));
204
- return;
205
- }
206
- function* generateNumber() {
207
- let value = lastValue;
208
- const skip = group.numericDelta * sign;
209
- while (true) {
210
- value += skip;
211
- yield value;
212
- }
213
- }
214
- const g = generateNumber();
215
- result.push(g, ...group.nexts.map(() => g));
216
- return;
217
- }
218
- case "date": {
219
- const next = (d) => {
220
- return sign > 0 ? group.timeDelta.add(d) : group.timeDelta.sub(d);
221
- };
222
- if (!group.equidistant) {
223
- result.push(pass(group.first), ...group.nexts.map((v) => pass(v)));
224
- return;
225
- }
226
- function* generateDate() {
227
- let value = lastValue;
228
- while (true) {
229
- value = next(value);
230
- yield new Date(value);
231
- }
232
- }
233
- const g = generateDate();
234
- result.push(g, ...group.nexts.map(() => g));
235
- return;
236
- }
237
- case "string+number": {
238
- if (!group.equidistant) {
239
- result.push(pass(group.first), ...group.nexts.map((v) => pass(v)));
240
- return;
241
- }
242
- function* generateStringNumber() {
243
- const { prefix } = extractStringNumber(group.first);
244
- const { number: lastNumber } = extractStringNumber(lastValue);
245
- let value = lastNumber;
246
- const skip = group.numericDelta * sign;
247
- while (true) {
248
- value += skip;
249
- yield `${prefix}${Math.abs(value)}`;
250
- }
251
- }
252
- const g = generateStringNumber();
253
- result.push(g, ...group.nexts.map(() => g));
254
- return;
255
- }
256
- }
257
- });
258
- return result;
259
- }
260
- }
261
- function* pass(value) {
262
- while (true) {
263
- yield value;
264
- }
265
- }
266
- const StringNumberPattern = new RegExp("(.+?)(\\d+)$");
267
- const extractStringNumber = (value) => {
268
- const match = value.match(StringNumberPattern);
269
- if (match) {
270
- const [, prefix, n] = match;
271
- return { prefix, number: Number(n) };
272
- }
273
- return { prefix: "", number: 0 };
274
- };
275
- class TypedGroup {
276
- constructor(value) {
277
- this.timeDelta = TimeDelta.create();
278
- this.numericDelta = 0;
279
- this.equidistant = true;
280
- this.first = value;
281
- this.nexts = [];
282
- this.kind = this.discriminate(value);
283
- }
284
- discriminate(value) {
285
- const kind = value instanceof Date ? "date" : typeof value;
286
- if (kind === "number" || kind === "date") {
287
- return kind;
288
- }
289
- if (kind === "string" && value[0] === "=") {
290
- return "formula";
291
- } else if (kind === "string" && value.match(StringNumberPattern)) {
292
- return "string+number";
293
- }
294
- return "other";
295
- }
296
- get last() {
297
- if (this.nexts.length === 0) {
298
- return this.first;
299
- }
300
- return this.nexts[this.nexts.length - 1];
301
- }
302
- add(value) {
303
- const kind = this.discriminate(value);
304
- if (this.kind !== kind || kind === "other" || kind === "formula") {
305
- return new TypedGroup(value);
306
- }
307
- if (this.nexts.length === 0) {
308
- switch (kind) {
309
- case "date": {
310
- this.timeDelta = new TimeDelta(value, this.first);
311
- break;
312
- }
313
- case "number": {
314
- this.numericDelta = value - this.first;
315
- break;
316
- }
317
- case "string+number": {
318
- const { prefix: prefix1, number: number1 } = extractStringNumber(this.first);
319
- const { prefix: prefix2, number: number2 } = extractStringNumber(value);
320
- if (prefix1 === prefix2) {
321
- this.numericDelta = number2 - number1;
322
- }
323
- break;
324
- }
325
- }
326
- }
327
- this.nexts.push(value);
328
- }
329
- subdivide() {
330
- if (this.nexts.length === 0) {
331
- return [];
332
- }
333
- const news = [];
334
- let lastGroup = this;
335
- switch (this.kind) {
336
- case "date": {
337
- const eq = this.nexts.every((v, i) => i === 0 || dayjs(v).isSame(this.timeDelta.add(this.nexts[i - 1])));
338
- this.equidistant = eq;
339
- return [];
340
- }
341
- case "number": {
342
- const eq = this.nexts.every((v, i) => i === 0 || v === this.first + this.numericDelta * (i + 1));
343
- this.equidistant = eq;
344
- return [];
345
- }
346
- case "string+number": {
347
- const { prefix: basePrefix } = extractStringNumber(this.first);
348
- for (let i = 0; i < lastGroup.nexts.length; i++) {
349
- const next = lastGroup.nexts[i];
350
- const { prefix, number } = extractStringNumber(next);
351
- if (basePrefix !== prefix) {
352
- const nexts = this.nexts.splice(i, this.nexts.length);
353
- lastGroup = new TypedGroup(nexts.splice(0, 1)[0]);
354
- nexts.forEach(lastGroup.add.bind(lastGroup));
355
- news.push(lastGroup, ...lastGroup.subdivide());
356
- break;
357
- } else {
358
- const { number: firstNumber } = extractStringNumber(lastGroup.first);
359
- if (number !== firstNumber + (i + 1) * lastGroup.numericDelta) {
360
- lastGroup.equidistant = false;
361
- }
362
- }
363
- }
364
- break;
365
- }
366
- }
367
- return news;
368
- }
369
- }
370
- function groupByType(cells) {
371
- var _a, _b;
372
- let group = new TypedGroup((_a = cells[0]) == null ? void 0 : _a.value);
373
- const groups = [group];
374
- for (let i = 1; i < cells.length; i++) {
375
- const value = (_b = cells[i]) == null ? void 0 : _b.value;
376
- const nextGroup = group.add(value);
377
- if (nextGroup) {
378
- groups.push(nextGroup);
379
- group = nextGroup;
380
- }
381
- }
382
- for (let i = groups.length - 1; i >= 0; i--) {
383
- const group2 = groups[i];
384
- groups.splice(i + 1, 0, ...group2.subdivide());
385
- }
386
- return groups;
387
- }
388
- export {
389
- Autofill
390
- };
391
- //# sourceMappingURL=autofill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"autofill.js","sources":["../../lib/autofill.ts"],"sourcesContent":["import React from 'react';\nimport dayjs from 'dayjs';\nimport type { AreaType, CellsByAddressType, CellType, PointType, StoreType } from '../types';\nimport { Table } from './table';\nimport { areaShape, areaToZone, complementSelectingArea, concatAreas, zoneToArea } from './structs';\nimport { p2a } from './converters';\nimport { absolutizeFormula } from '../formula/evaluator';\nimport { TimeDelta } from './time';\n\nconst BORDER_AUTOFILL_DRAGGING = 'dashed 1px #888888';\n\ntype Direction = 'left' | 'right' | 'up' | 'down';\ntype Orientation = 'horizontal' | 'vertical';\nconst DirectionMapping: {\n [key: string]: [Orientation, number];\n} = {\n left: ['horizontal', -1],\n right: ['horizontal', 1],\n up: ['vertical', -1],\n down: ['vertical', 1],\n};\n\nexport class Autofill {\n private readonly src: AreaType;\n private readonly dst: AreaType;\n private readonly direction: Direction;\n private readonly table: Table;\n constructor(store: StoreType, draggingTo: PointType) {\n const { table, choosing, selectingZone } = store;\n this.src = complementSelectingArea(zoneToArea(selectingZone), choosing);\n this.direction = this.suggestDirection(draggingTo);\n this.dst = this.getDestinationArea(draggingTo);\n this.table = table;\n }\n\n public get applied(): Table {\n const [orientation, sign] = DirectionMapping[this.direction];\n const matrix = this.table.getMatrix({ area: this.src, evaluates: null });\n const srcShape = areaShape({ ...this.src, base: 1 });\n const dstShape = areaShape({ ...this.dst, base: 1 });\n\n const diff: CellsByAddressType = {};\n if (orientation === 'horizontal') {\n for (let i = 0; i < dstShape.height; i++) {\n const patterns = this.getChangePatterns(matrix[i]);\n for (let j = 0; j < dstShape.width; j++) {\n const baseCell = matrix[i % srcShape.height]?.[j % srcShape.width];\n const x = sign > 0 ? this.dst.left + j : this.dst.right - j;\n const px = sign > 0 ? j % srcShape.width : (srcShape.width - 1 - (j % srcShape.width)) % srcShape.width;\n diff[p2a({ y: this.dst.top + i, x })] = {\n ...baseCell,\n value: patterns[px].next().value,\n };\n }\n }\n } else {\n for (let i = 0; i < dstShape.width; i++) {\n const patterns = this.getChangePatterns(matrix.map((row) => row[i]));\n for (let j = 0; j < dstShape.height; j++) {\n const baseCell = matrix[j % srcShape.height]?.[i % srcShape.width];\n const y = sign > 0 ? this.dst.top + j : this.dst.bottom - j;\n const py = sign > 0 ? j % srcShape.height : (srcShape.height - 1 - (j % srcShape.height)) % srcShape.height;\n const value = patterns[py].next().value;\n diff[p2a({ y, x: this.dst.left + i })] = { ...baseCell, value };\n }\n }\n }\n const table = this.table.update({\n diff,\n operator: 'USER',\n reflection: {\n selectingZone: areaToZone(this.src),\n },\n });\n return table;\n }\n\n public get wholeArea() {\n return concatAreas(this.src, this.dst);\n }\n\n public getCellStyle(target: PointType) {\n const { x, y } = target;\n const style: React.CSSProperties = {};\n const { top, left, bottom, right } = this.src;\n\n switch (this.direction) {\n case 'left': {\n if (this.dst.left <= x && x <= this.dst.right) {\n if (top === y) {\n style.borderTop = BORDER_AUTOFILL_DRAGGING;\n }\n if (bottom === y - 1) {\n style.borderTop = BORDER_AUTOFILL_DRAGGING;\n }\n }\n if (this.dst.left === x && top <= y && y <= bottom) {\n style.borderLeft = BORDER_AUTOFILL_DRAGGING;\n }\n break;\n }\n case 'right': {\n if (this.dst.left <= x && x <= this.dst.right) {\n if (top === y) {\n style.borderTop = BORDER_AUTOFILL_DRAGGING;\n }\n if (bottom === y - 1) {\n style.borderTop = BORDER_AUTOFILL_DRAGGING;\n }\n }\n if (this.dst.right === x - 1 && top <= y && y <= bottom) {\n style.borderLeft = BORDER_AUTOFILL_DRAGGING;\n }\n break;\n }\n\n case 'up': {\n if (this.dst.top <= y && y <= this.dst.bottom) {\n if (left === x) {\n style.borderLeft = BORDER_AUTOFILL_DRAGGING;\n }\n if (right === x - 1) {\n style.borderLeft = BORDER_AUTOFILL_DRAGGING;\n }\n }\n if (this.dst.top === y && left <= x && x <= right) {\n style.borderTop = BORDER_AUTOFILL_DRAGGING;\n }\n break;\n }\n case 'down': {\n if (this.dst.top <= y && y <= this.dst.bottom) {\n if (left === x) {\n style.borderLeft = BORDER_AUTOFILL_DRAGGING;\n }\n if (right === x - 1) {\n style.borderLeft = BORDER_AUTOFILL_DRAGGING;\n }\n }\n if (this.dst.bottom === y - 1 && left <= x && x <= right) {\n style.borderTop = BORDER_AUTOFILL_DRAGGING;\n }\n break;\n }\n }\n return style;\n }\n\n private getDestinationArea(autofillDraggingTo: PointType): AreaType {\n const { x, y } = autofillDraggingTo;\n const { top, left, bottom, right } = this.src;\n switch (this.direction) {\n case 'left':\n return { top, bottom, left: x, right: left - 1 };\n case 'right':\n return { top, bottom, left: right + 1, right: x };\n case 'up':\n return { left, right, top: y, bottom: top - 1 };\n case 'down':\n return { left, right, top: bottom + 1, bottom: y };\n }\n return this.src;\n }\n\n private suggestDirection(draggingTo: PointType): Direction {\n const { top, left, bottom, right } = this.src;\n let horizontal = 0,\n vertical = 0;\n if (draggingTo.x < left) {\n horizontal = draggingTo.x - left;\n } else if (draggingTo.x > right) {\n horizontal = draggingTo.x - right;\n }\n if (draggingTo.y < top) {\n vertical = draggingTo.y - top;\n } else if (draggingTo.y > bottom) {\n vertical = draggingTo.y - bottom;\n }\n // diagonal\n if (Math.abs(horizontal) > 0 && Math.abs(vertical) > 0) {\n if (Math.abs(horizontal) > Math.abs(vertical)) {\n return horizontal < 0 ? 'left' : 'right';\n }\n return vertical < 0 ? 'up' : 'down';\n }\n if (horizontal !== 0) {\n return horizontal < 0 ? 'left' : 'right';\n }\n if (vertical !== 0) {\n return vertical < 0 ? 'up' : 'down';\n }\n return 'down';\n }\n\n private getChangePatterns(cells: (CellType | null)[]): Generator[] {\n const result: Generator[] = [];\n const groups = groupByType(cells);\n const [orientation, sign] = DirectionMapping[this.direction];\n groups.forEach((group) => {\n const lastValue = sign > 0 ? group.last : group.first;\n switch (group.kind) {\n case 'other': {\n result.push(pass(group.first));\n return;\n }\n case 'formula': {\n const value = group.first;\n const table = this.table;\n\n function* generateFormula() {\n let slide = 0;\n const skip = cells.length * sign;\n while (true) {\n slide += skip;\n yield absolutizeFormula({\n value,\n table,\n slideY: orientation === 'vertical' ? slide : 0,\n slideX: orientation === 'horizontal' ? slide : 0,\n });\n }\n }\n result.push(generateFormula());\n return;\n }\n case 'number': {\n if (!group.equidistant) {\n result.push(pass(group.first), ...group.nexts.map((v) => pass(v)));\n return;\n }\n\n function* generateNumber() {\n let value = lastValue;\n const skip = group.numericDelta * sign;\n while (true) {\n value += skip;\n yield value;\n }\n }\n const g = generateNumber();\n result.push(g, ...group.nexts.map(() => g));\n return;\n }\n case 'date': {\n const next = (d: Date) => {\n return sign > 0 ? group.timeDelta.add(d) : group.timeDelta.sub(d);\n };\n if (!group.equidistant) {\n result.push(pass(group.first), ...group.nexts.map((v) => pass(v)));\n return;\n }\n\n function* generateDate() {\n let value = lastValue as Date;\n while (true) {\n value = next(value);\n yield new Date(value);\n }\n }\n const g = generateDate();\n result.push(g, ...group.nexts.map(() => g));\n return;\n }\n case 'string+number': {\n if (!group.equidistant) {\n result.push(pass(group.first), ...group.nexts.map((v) => pass(v)));\n return;\n }\n\n function* generateStringNumber() {\n const { prefix } = extractStringNumber(group.first as string);\n const { number: lastNumber } = extractStringNumber(lastValue as string);\n let value = lastNumber;\n const skip = group.numericDelta * sign;\n while (true) {\n value += skip;\n yield `${prefix}${Math.abs(value)}`;\n }\n }\n const g = generateStringNumber();\n result.push(g, ...group.nexts.map(() => g));\n return;\n }\n }\n });\n return result;\n }\n}\n\nfunction* pass(value: any) {\n while (true) {\n yield value;\n }\n}\n\ntype GroupKind = 'number' | 'date' | 'string+number' | 'formula' | 'other';\n\nconst StringNumberPattern = new RegExp('(.+?)(\\\\d+)$');\n\nconst extractStringNumber = (value: string) => {\n const match = value.match(StringNumberPattern);\n if (match) {\n const [, prefix, n] = match;\n return { prefix, number: Number(n) };\n }\n return { prefix: '', number: 0 };\n};\n\nclass TypedGroup {\n public timeDelta: TimeDelta = TimeDelta.create();\n public numericDelta: number = 0;\n public kind: GroupKind;\n public nexts: any[];\n public first: any;\n public equidistant = true;\n\n constructor(value: any) {\n this.first = value;\n this.nexts = [];\n this.kind = this.discriminate(value);\n }\n private discriminate(value: any): GroupKind {\n const kind = value instanceof Date ? 'date' : typeof value;\n if (kind === 'number' || kind === 'date') {\n return kind;\n }\n if (kind === 'string' && value[0] === '=') {\n return 'formula';\n } else if (kind === 'string' && value.match(StringNumberPattern)) {\n return 'string+number';\n }\n return 'other';\n }\n\n public get last() {\n if (this.nexts.length === 0) {\n return this.first;\n }\n return this.nexts[this.nexts.length - 1];\n }\n\n public add(value: any): TypedGroup | undefined {\n const kind = this.discriminate(value);\n if (this.kind !== kind || kind === 'other' || kind === 'formula') {\n return new TypedGroup(value);\n }\n if (this.nexts.length === 0) {\n switch (kind) {\n case 'date': {\n this.timeDelta = new TimeDelta(value as Date, this.first as Date);\n break;\n }\n case 'number': {\n this.numericDelta = (value as number) - this.first;\n break;\n }\n case 'string+number': {\n const { prefix: prefix1, number: number1 } = extractStringNumber(this.first as string);\n const { prefix: prefix2, number: number2 } = extractStringNumber(value as string);\n if (prefix1 === prefix2) {\n this.numericDelta = number2 - number1;\n }\n break;\n }\n }\n }\n this.nexts.push(value);\n }\n\n public subdivide() {\n if (this.nexts.length === 0) {\n return [];\n }\n\n const news: TypedGroup[] = [];\n\n let lastGroup: TypedGroup = this;\n switch (this.kind) {\n case 'date': {\n const eq = this.nexts.every((v, i) => i === 0 || dayjs(v).isSame(this.timeDelta.add(this.nexts[i - 1])));\n this.equidistant = eq;\n return [];\n }\n case 'number': {\n const eq = this.nexts.every((v, i) => i === 0 || v === this.first + this.numericDelta * (i + 1));\n this.equidistant = eq;\n return [];\n }\n case 'string+number': {\n const { prefix: basePrefix } = extractStringNumber(this.first as string);\n for (let i = 0; i < lastGroup.nexts.length; i++) {\n const next = lastGroup.nexts[i];\n const { prefix, number } = extractStringNumber(next as string);\n if (basePrefix !== prefix) {\n const nexts = this.nexts.splice(i, this.nexts.length);\n lastGroup = new TypedGroup(nexts.splice(0, 1)[0]);\n nexts.forEach(lastGroup.add.bind(lastGroup));\n news.push(lastGroup, ...lastGroup.subdivide());\n break;\n } else {\n const { number: firstNumber } = extractStringNumber(lastGroup.first as string);\n if (number !== firstNumber + (i + 1) * lastGroup.numericDelta) {\n lastGroup.equidistant = false;\n }\n }\n }\n break;\n }\n }\n\n return news;\n }\n}\n\nfunction groupByType(cells: (CellType | null)[]): TypedGroup[] {\n let group = new TypedGroup(cells[0]?.value);\n const groups: TypedGroup[] = [group];\n\n for (let i = 1; i < cells.length; i++) {\n const value = cells[i]?.value;\n const nextGroup = group.add(value);\n if (nextGroup) {\n groups.push(nextGroup);\n group = nextGroup;\n }\n }\n for (let i = groups.length - 1; i >= 0; i--) {\n const group = groups[i];\n groups.splice(i + 1, 0, ...group.subdivide());\n }\n return groups;\n}\n"],"names":["group"],"mappings":"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"}
@@ -1,72 +0,0 @@
1
- import { zoneToArea } from "./structs.js";
2
- import { solveTable } from "../formula/solver.js";
3
- const clip = (store) => {
4
- const { selectingZone, choosing, editorRef, table } = store;
5
- const { y, x } = choosing;
6
- const selectingArea = zoneToArea(selectingZone);
7
- let area = selectingArea;
8
- if (area.left === -1) {
9
- area = { top: y, left: x, bottom: y, right: x };
10
- }
11
- const input = editorRef.current;
12
- const trimmed = table.trim(area);
13
- const tsv = table2tsv(trimmed);
14
- const html = table2html(trimmed);
15
- if (navigator.clipboard) {
16
- const tsvBlob = new Blob([tsv], { type: "text/plain" });
17
- const htmlBlob = new Blob([html], { type: "text/html" });
18
- navigator.clipboard.write([
19
- new ClipboardItem({
20
- "text/plain": tsvBlob,
21
- "text/html": htmlBlob
22
- })
23
- ]);
24
- } else if (input != null) {
25
- input.value = tsv;
26
- input.focus();
27
- input.select();
28
- document.execCommand("copy");
29
- input.value = "";
30
- input.blur();
31
- }
32
- return area;
33
- };
34
- const table2tsv = (table) => {
35
- const lines = [];
36
- const matrix = solveTable({ table, raise: false });
37
- matrix.forEach((row, i) => {
38
- const y = table.top + i;
39
- const cols = [];
40
- row.forEach((col, j) => {
41
- const x = table.left + j;
42
- const value = table.stringify({ y, x }, col);
43
- if (value.indexOf("\n") !== -1) {
44
- cols.push(`"${value.replace(/"/g, '""')}"`);
45
- } else {
46
- cols.push(value);
47
- }
48
- });
49
- lines.push(cols.join(" "));
50
- });
51
- return lines.join("\n");
52
- };
53
- const table2html = (table) => {
54
- const lines = [];
55
- const matrix = solveTable({ table, raise: false });
56
- matrix.forEach((row, i) => {
57
- const y = table.top + i;
58
- const cols = [];
59
- row.forEach((col, j) => {
60
- const x = table.left + j;
61
- const value = table.stringify({ y, x }, col);
62
- const valueEscaped = value.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/'/g, "&apos;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
63
- cols.push(`<td>${valueEscaped}</td>`);
64
- });
65
- lines.push(`<tr>${cols.join("")}</tr>`);
66
- });
67
- return `<table>${lines.join("")}</table>`;
68
- };
69
- export {
70
- clip
71
- };
72
- //# sourceMappingURL=clipboard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clipboard.js","sources":["../../lib/clipboard.ts"],"sourcesContent":["import type { StoreType, AreaType } from '../types';\n\nimport { zoneToArea } from './structs';\nimport { solveTable } from '../formula/solver';\nimport { Table } from './table';\n\nexport const clip = (store: StoreType): AreaType => {\n const { selectingZone, choosing, editorRef, table } = store;\n const { y, x } = choosing;\n const selectingArea = zoneToArea(selectingZone);\n let area = selectingArea;\n if (area.left === -1) {\n area = { top: y, left: x, bottom: y, right: x };\n }\n const input = editorRef.current;\n const trimmed = table.trim(area);\n const tsv = table2tsv(trimmed);\n const html = table2html(trimmed);\n\n if (navigator.clipboard) {\n const tsvBlob = new Blob([tsv], { type: 'text/plain' });\n const htmlBlob = new Blob([html], { type: 'text/html' });\n\n navigator.clipboard.write([\n new ClipboardItem({\n 'text/plain': tsvBlob,\n 'text/html': htmlBlob,\n }),\n ]);\n } else if (input != null) {\n input.value = tsv;\n input.focus();\n input.select();\n document.execCommand('copy');\n input.value = '';\n input.blur();\n }\n return area;\n};\n\nconst table2tsv = (table: Table): string => {\n const lines: string[] = [];\n const matrix = solveTable({ table, raise: false });\n matrix.forEach((row, i) => {\n const y = table.top + i;\n const cols: string[] = [];\n row.forEach((col, j) => {\n const x = table.left + j;\n const value = table.stringify({ y, x }, col);\n if (value.indexOf('\\n') !== -1) {\n cols.push(`\"${value.replace(/\"/g, '\"\"')}\"`);\n } else {\n cols.push(value);\n }\n });\n lines.push(cols.join('\\t'));\n });\n return lines.join('\\n');\n};\n\nconst table2html = (table: Table): string => {\n const lines: string[] = [];\n const matrix = solveTable({ table, raise: false });\n matrix.forEach((row, i) => {\n const y = table.top + i;\n const cols: string[] = [];\n row.forEach((col, j) => {\n const x = table.left + j;\n const value = table.stringify({ y, x }, col);\n const valueEscaped = value\n .replace(/&/g, '&amp;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&apos;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;');\n cols.push(`<td>${valueEscaped}</td>`);\n });\n lines.push(`<tr>${cols.join('')}</tr>`);\n });\n return `<table>${lines.join('')}</table>`;\n};\n"],"names":[],"mappings":";;AAMa,MAAA,OAAO,CAAC,UAA+B;AAClD,QAAM,EAAE,eAAe,UAAU,WAAW,MAAU,IAAA;AAChD,QAAA,EAAE,GAAG,EAAA,IAAM;AACX,QAAA,gBAAgB,WAAW,aAAa;AAC9C,MAAI,OAAO;AACP,MAAA,KAAK,SAAS,IAAI;AACb,WAAA,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,EAAE;AAAA,EAAA;AAEhD,QAAM,QAAQ,UAAU;AAClB,QAAA,UAAU,MAAM,KAAK,IAAI;AACzB,QAAA,MAAM,UAAU,OAAO;AACvB,QAAA,OAAO,WAAW,OAAO;AAE/B,MAAI,UAAU,WAAW;AACjB,UAAA,UAAU,IAAI,KAAK,CAAC,GAAG,GAAG,EAAE,MAAM,cAAc;AAChD,UAAA,WAAW,IAAI,KAAK,CAAC,IAAI,GAAG,EAAE,MAAM,aAAa;AAEvD,cAAU,UAAU,MAAM;AAAA,MACxB,IAAI,cAAc;AAAA,QAChB,cAAc;AAAA,QACd,aAAa;AAAA,MACd,CAAA;AAAA,IAAA,CACF;AAAA,EAAA,WACQ,SAAS,MAAM;AACxB,UAAM,QAAQ;AACd,UAAM,MAAM;AACZ,UAAM,OAAO;AACb,aAAS,YAAY,MAAM;AAC3B,UAAM,QAAQ;AACd,UAAM,KAAK;AAAA,EAAA;AAEN,SAAA;AACT;AAEA,MAAM,YAAY,CAAC,UAAyB;AAC1C,QAAM,QAAkB,CAAC;AACzB,QAAM,SAAS,WAAW,EAAE,OAAO,OAAO,OAAO;AAC1C,SAAA,QAAQ,CAAC,KAAK,MAAM;AACnB,UAAA,IAAI,MAAM,MAAM;AACtB,UAAM,OAAiB,CAAC;AACpB,QAAA,QAAQ,CAAC,KAAK,MAAM;AAChB,YAAA,IAAI,MAAM,OAAO;AACvB,YAAM,QAAQ,MAAM,UAAU,EAAE,GAAG,KAAK,GAAG;AAC3C,UAAI,MAAM,QAAQ,IAAI,MAAM,IAAI;AAC9B,aAAK,KAAK,IAAI,MAAM,QAAQ,MAAM,IAAI,CAAC,GAAG;AAAA,MAAA,OACrC;AACL,aAAK,KAAK,KAAK;AAAA,MAAA;AAAA,IACjB,CACD;AACD,UAAM,KAAK,KAAK,KAAK,GAAI,CAAC;AAAA,EAAA,CAC3B;AACM,SAAA,MAAM,KAAK,IAAI;AACxB;AAEA,MAAM,aAAa,CAAC,UAAyB;AAC3C,QAAM,QAAkB,CAAC;AACzB,QAAM,SAAS,WAAW,EAAE,OAAO,OAAO,OAAO;AAC1C,SAAA,QAAQ,CAAC,KAAK,MAAM;AACnB,UAAA,IAAI,MAAM,MAAM;AACtB,UAAM,OAAiB,CAAC;AACpB,QAAA,QAAQ,CAAC,KAAK,MAAM;AAChB,YAAA,IAAI,MAAM,OAAO;AACvB,YAAM,QAAQ,MAAM,UAAU,EAAE,GAAG,KAAK,GAAG;AACrC,YAAA,eAAe,MAClB,QAAQ,MAAM,OAAO,EACrB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,QAAQ,EACtB,QAAQ,MAAM,MAAM,EACpB,QAAQ,MAAM,MAAM;AAClB,WAAA,KAAK,OAAO,YAAY,OAAO;AAAA,IAAA,CACrC;AACD,UAAM,KAAK,OAAO,KAAK,KAAK,EAAE,CAAC,OAAO;AAAA,EAAA,CACvC;AACD,SAAO,UAAU,MAAM,KAAK,EAAE,CAAC;AACjC;"}
@@ -1,141 +0,0 @@
1
- import { DEFAULT_ALPHABET_CACHE_SIZE } from "../constants.js";
2
- const ALPHABET = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
3
- const N2C_CACHE = /* @__PURE__ */ new Map();
4
- const C2N_CACHE = /* @__PURE__ */ new Map();
5
- const getColumnLetterFromNumber = (key, cacheSize = DEFAULT_ALPHABET_CACHE_SIZE) => {
6
- const cached = N2C_CACHE.get(--key);
7
- if (cached != null) {
8
- return cached;
9
- }
10
- if (key === 0) {
11
- return "";
12
- }
13
- let num = key;
14
- let result = "";
15
- do {
16
- result = ALPHABET[--num % 26] + result;
17
- num = Math.floor(num / 26);
18
- } while (num > 0);
19
- N2C_CACHE.set(key, result);
20
- const it = N2C_CACHE.keys();
21
- for (let st = it.next(); N2C_CACHE.size > cacheSize; st = it.next()) {
22
- N2C_CACHE.delete(st.value);
23
- }
24
- return result;
25
- };
26
- const getNumberFromColumnLetter = (key, cacheSize = DEFAULT_ALPHABET_CACHE_SIZE) => {
27
- const cached = C2N_CACHE.get(key);
28
- if (cached != null) {
29
- return cached;
30
- }
31
- if (key === "") {
32
- return 0;
33
- }
34
- const alpha = key;
35
- let result = 0;
36
- for (let digit = 0; digit < alpha.length; digit++) {
37
- const a = alpha[alpha.length - digit - 1];
38
- const num = ALPHABET.indexOf(a) + 1;
39
- result += ALPHABET.length ** digit * num;
40
- }
41
- C2N_CACHE.set(key, result);
42
- const it = C2N_CACHE.keys();
43
- for (let st = it.next(); C2N_CACHE.size > cacheSize; st = it.next()) {
44
- C2N_CACHE.delete(st.value);
45
- }
46
- return result;
47
- };
48
- const x2c = (x) => {
49
- if (x === 0) {
50
- return "";
51
- }
52
- const c = getColumnLetterFromNumber(x + 1);
53
- return x < 0 ? `$${c}` : c;
54
- };
55
- const c2x = (col, absolute = false) => {
56
- const n = getNumberFromColumnLetter(col);
57
- return absolute ? -n : n;
58
- };
59
- const y2r = (y) => {
60
- if (y === 0) {
61
- return "";
62
- }
63
- return y < 0 ? `$${y}` : String(y);
64
- };
65
- const r2y = (row, absolute = false) => {
66
- if (typeof row === "string") {
67
- row = parseInt(row, 10);
68
- }
69
- return absolute ? -row : row;
70
- };
71
- const p2a = ({ y, x }) => {
72
- return `${x2c(x)}${y2r(y)}`;
73
- };
74
- const restoreDoubleQuote = (text) => text.replace(/\x00/g, '"');
75
- const tsv2matrix = (tsv) => {
76
- tsv = tsv.replace(/""/g, "\0");
77
- const rows = [[]];
78
- let row = rows[0];
79
- let entering = false;
80
- let word = "";
81
- for (let i = 0; i < tsv.length; i++) {
82
- const s = tsv[i];
83
- if (s === "\n" && !entering) {
84
- row.push(restoreDoubleQuote(word));
85
- word = "";
86
- row = [];
87
- rows.push(row);
88
- continue;
89
- }
90
- if (s === " ") {
91
- row.push(restoreDoubleQuote(word));
92
- word = "";
93
- continue;
94
- }
95
- if (s === '"' && !entering && word === "") {
96
- entering = true;
97
- continue;
98
- }
99
- if (s === '"' && entering) {
100
- entering = false;
101
- continue;
102
- }
103
- word += s;
104
- }
105
- if (word) {
106
- row.push(restoreDoubleQuote(word));
107
- }
108
- return rows;
109
- };
110
- const a2p = (address) => {
111
- const m = address.match(/(\$)?([A-Z]*)(\$)?([0-9]*)/);
112
- if (m == null) {
113
- console.error("invalid address", address);
114
- return { y: 1, x: 1 };
115
- }
116
- const [, absoluteCol, col, absoluteRow, row] = m.slice();
117
- return { y: r2y(row, !!absoluteRow) || 0, x: c2x(col, !!absoluteCol) || 0 };
118
- };
119
- const grantAddressAbsolute = (address, absCol, absRow) => {
120
- const m = address.match(/([A-Z]*)([0-9]*)/);
121
- if (m == null) {
122
- return;
123
- }
124
- const [, col, row] = m.slice();
125
- return `${absCol ? "$" : ""}${col}${absRow ? "$" : ""}${row}`;
126
- };
127
- const stripAddressAbsolute = (address) => {
128
- return address.replace(/\$/g, "");
129
- };
130
- export {
131
- a2p,
132
- c2x,
133
- grantAddressAbsolute,
134
- p2a,
135
- r2y,
136
- stripAddressAbsolute,
137
- tsv2matrix,
138
- x2c,
139
- y2r
140
- };
141
- //# sourceMappingURL=converters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"converters.js","sources":["../../lib/converters.ts"],"sourcesContent":["import type { Address, PointType } from '../types';\nimport { DEFAULT_ALPHABET_CACHE_SIZE } from '../constants';\n\nconst ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n\nconst N2C_CACHE = new Map<number, string>();\nconst C2N_CACHE = new Map<string, number>();\n\nconst getColumnLetterFromNumber = (key: number, cacheSize = DEFAULT_ALPHABET_CACHE_SIZE): string => {\n const cached = N2C_CACHE.get(--key);\n if (cached != null) {\n return cached;\n }\n if (key === 0) {\n return '';\n }\n let num = key;\n let result = '';\n do {\n result = ALPHABET[--num % 26] + result;\n num = Math.floor(num / 26);\n } while (num > 0);\n\n N2C_CACHE.set(key, result);\n const it = N2C_CACHE.keys();\n for (let st = it.next(); N2C_CACHE.size > cacheSize; st = it.next()) {\n // @ts-ignore\n N2C_CACHE.delete(st.value);\n }\n return result;\n};\n\nconst getNumberFromColumnLetter = (key: string, cacheSize = DEFAULT_ALPHABET_CACHE_SIZE): number => {\n const cached = C2N_CACHE.get(key);\n if (cached != null) {\n return cached;\n }\n if (key === '') {\n return 0;\n }\n const alpha = key;\n let result = 0;\n for (let digit = 0; digit < alpha.length; digit++) {\n const a = alpha[alpha.length - digit - 1];\n const num = ALPHABET.indexOf(a) + 1;\n result += ALPHABET.length ** digit * num;\n }\n C2N_CACHE.set(key, result);\n const it = C2N_CACHE.keys();\n for (let st = it.next(); C2N_CACHE.size > cacheSize; st = it.next()) {\n // @ts-ignore\n C2N_CACHE.delete(st.value);\n }\n return result;\n};\n\nexport const x2c = (x: number): string => {\n if (x === 0) {\n return '';\n }\n const c = getColumnLetterFromNumber(x + 1);\n return x < 0 ? `$${c}` : c;\n};\n\nexport const c2x = (col: string, absolute = false): number => {\n const n = getNumberFromColumnLetter(col);\n return absolute ? -n : n;\n};\n\nexport const y2r = (y: number) => {\n if (y === 0) {\n return '';\n }\n return y < 0 ? `$${y}` : String(y);\n};\n\nexport const r2y = (row: number | string, absolute = false) => {\n if (typeof row === 'string') {\n row = parseInt(row, 10);\n }\n return absolute ? -row : row;\n};\n\nexport const p2a = ({ y, x }: PointType) => {\n return `${x2c(x)}${y2r(y)}`;\n};\n\nconst restoreDoubleQuote = (text: string) => text.replace(/\\x00/g, '\"');\n\nexport const tsv2matrix = (tsv: string): string[][] => {\n tsv = tsv.replace(/\"\"/g, '\\x00');\n const rows: string[][] = [[]];\n let row = rows[0];\n let entering = false;\n let word = '';\n for (let i = 0; i < tsv.length; i++) {\n const s = tsv[i];\n if (s === '\\n' && !entering) {\n row.push(restoreDoubleQuote(word));\n word = '';\n row = [];\n rows.push(row);\n continue;\n }\n if (s === '\\t') {\n row.push(restoreDoubleQuote(word));\n word = '';\n continue;\n }\n if (s === '\"' && !entering && word === '') {\n entering = true;\n continue;\n }\n if (s === '\"' && entering) {\n entering = false;\n continue;\n }\n word += s;\n }\n if (word) {\n row.push(restoreDoubleQuote(word));\n }\n return rows;\n};\n\nexport const a2p = (address: Address): PointType => {\n const m = address.match(/(\\$)?([A-Z]*)(\\$)?([0-9]*)/);\n if (m == null) {\n console.error('invalid address', address);\n return { y: 1, x: 1 };\n }\n const [, absoluteCol, col, absoluteRow, row] = m.slice();\n return { y: r2y(row, !!absoluteRow) || 0, x: c2x(col, !!absoluteCol) || 0 };\n};\n\nexport const grantAddressAbsolute = (address: Address, absCol: boolean, absRow: boolean) => {\n const m = address.match(/([A-Z]*)([0-9]*)/);\n if (m == null) {\n return;\n }\n const [, col, row] = m.slice();\n return `${absCol ? '$' : ''}${col}${absRow ? '$' : ''}${row}`;\n};\n\nexport const stripAddressAbsolute = (address: Address) => {\n return address.replace(/\\$/g, '');\n};\n"],"names":[],"mappings":"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"}