@dxos/plugin-sheet 0.8.4-main.f9ba587 → 0.8.4-staging.60fe92afc8

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 (395) hide show
  1. package/LICENSE +102 -5
  2. package/PLUGIN.mdl +359 -0
  3. package/dist/lib/neutral/RangeList-HYB5S6KQ.mjs +46 -0
  4. package/dist/lib/neutral/RangeList-HYB5S6KQ.mjs.map +7 -0
  5. package/dist/lib/neutral/SheetArticle-5AJRM3V3.mjs +33 -0
  6. package/dist/lib/neutral/SheetArticle-5AJRM3V3.mjs.map +7 -0
  7. package/dist/lib/neutral/SheetPlugin.mjs +63 -0
  8. package/dist/lib/neutral/SheetPlugin.mjs.map +7 -0
  9. package/dist/lib/neutral/SheetPlugin.node.mjs +27 -0
  10. package/dist/lib/neutral/SheetPlugin.node.mjs.map +7 -0
  11. package/dist/lib/neutral/SheetPlugin.workerd.mjs +21 -0
  12. package/dist/lib/neutral/SheetPlugin.workerd.mjs.map +7 -0
  13. package/dist/lib/neutral/anchor-sort-2POWTKTD.mjs +22 -0
  14. package/dist/lib/neutral/anchor-sort-2POWTKTD.mjs.map +7 -0
  15. package/dist/lib/neutral/app-graph-builder-2QP6GYB2.mjs +67 -0
  16. package/dist/lib/neutral/app-graph-builder-2QP6GYB2.mjs.map +7 -0
  17. package/dist/lib/neutral/capabilities/index.mjs +29 -0
  18. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  19. package/dist/lib/neutral/chunk-BGR7FVNF.mjs +8 -0
  20. package/dist/lib/neutral/chunk-BGR7FVNF.mjs.map +7 -0
  21. package/dist/lib/{browser/chunk-7HQX4NQP.mjs → neutral/chunk-ERHMBRSU.mjs} +16 -16
  22. package/dist/lib/neutral/chunk-ERHMBRSU.mjs.map +7 -0
  23. package/dist/lib/neutral/chunk-FQHTXKMF.mjs +34 -0
  24. package/dist/lib/neutral/chunk-FQHTXKMF.mjs.map +7 -0
  25. package/dist/lib/neutral/chunk-HEN74ZWI.mjs +83 -0
  26. package/dist/lib/neutral/chunk-HEN74ZWI.mjs.map +7 -0
  27. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  28. package/dist/lib/neutral/chunk-KUWATEHB.mjs +374 -0
  29. package/dist/lib/neutral/chunk-KUWATEHB.mjs.map +7 -0
  30. package/dist/lib/neutral/chunk-S2UNH6VD.mjs +10 -0
  31. package/dist/lib/neutral/chunk-S2UNH6VD.mjs.map +7 -0
  32. package/dist/lib/neutral/comment-config-WGXXX5FG.mjs +22 -0
  33. package/dist/lib/neutral/comment-config-WGXXX5FG.mjs.map +7 -0
  34. package/dist/lib/neutral/components/index.mjs +1552 -0
  35. package/dist/lib/neutral/components/index.mjs.map +7 -0
  36. package/dist/lib/neutral/compute-graph-registry-YYINTFC2.mjs +26 -0
  37. package/dist/lib/neutral/compute-graph-registry-YYINTFC2.mjs.map +7 -0
  38. package/dist/lib/neutral/containers/index.mjs +11 -0
  39. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  40. package/dist/lib/neutral/create-object-TDQQ24IB.mjs +31 -0
  41. package/dist/lib/neutral/create-object-TDQQ24IB.mjs.map +7 -0
  42. package/dist/lib/neutral/drop-axis-WSWFOLQN.mjs +23 -0
  43. package/dist/lib/neutral/drop-axis-WSWFOLQN.mjs.map +7 -0
  44. package/dist/lib/{node-esm/types → neutral}/index.mjs +22 -13
  45. package/dist/lib/neutral/insert-axis-6UQJTIWC.mjs +16 -0
  46. package/dist/lib/neutral/insert-axis-6UQJTIWC.mjs.map +7 -0
  47. package/dist/lib/neutral/markdown-extension-HTJDICGT.mjs +28 -0
  48. package/dist/lib/neutral/markdown-extension-HTJDICGT.mjs.map +7 -0
  49. package/dist/lib/neutral/meta.json +1 -0
  50. package/dist/lib/neutral/meta.mjs +8 -0
  51. package/dist/lib/neutral/meta.mjs.map +7 -0
  52. package/dist/lib/neutral/navigation-resolver-FXEZYO7G.mjs +14 -0
  53. package/dist/lib/neutral/navigation-resolver-FXEZYO7G.mjs.map +7 -0
  54. package/dist/lib/neutral/operation-handler-TB6LFV2H.mjs +13 -0
  55. package/dist/lib/neutral/operation-handler-TB6LFV2H.mjs.map +7 -0
  56. package/dist/lib/neutral/operations/index.mjs +8 -0
  57. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  58. package/dist/lib/neutral/plugin.mjs +16 -0
  59. package/dist/lib/neutral/plugin.mjs.map +7 -0
  60. package/dist/lib/neutral/react-surface-4H3PC4WG.mjs +44 -0
  61. package/dist/lib/neutral/react-surface-4H3PC4WG.mjs.map +7 -0
  62. package/dist/lib/neutral/restore-axis-AMMVTPS3.mjs +16 -0
  63. package/dist/lib/neutral/restore-axis-AMMVTPS3.mjs.map +7 -0
  64. package/dist/lib/neutral/scroll-to-anchor-FK2CXCQR.mjs +33 -0
  65. package/dist/lib/neutral/scroll-to-anchor-FK2CXCQR.mjs.map +7 -0
  66. package/dist/lib/neutral/state-HPA27MX2.mjs +29 -0
  67. package/dist/lib/neutral/state-HPA27MX2.mjs.map +7 -0
  68. package/dist/lib/neutral/testing/index.mjs +103 -0
  69. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  70. package/dist/lib/neutral/translations.mjs +56 -0
  71. package/dist/lib/neutral/translations.mjs.map +7 -0
  72. package/dist/lib/{browser → neutral}/types/index.mjs +8 -12
  73. package/dist/lib/neutral/types/index.mjs.map +7 -0
  74. package/dist/lib/neutral/undo-mappings-3FQLSTCZ.mjs +31 -0
  75. package/dist/lib/neutral/undo-mappings-3FQLSTCZ.mjs.map +7 -0
  76. package/dist/types/src/SheetPlugin.d.ts +3 -1
  77. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  78. package/dist/types/src/SheetPlugin.node.d.ts +4 -0
  79. package/dist/types/src/SheetPlugin.node.d.ts.map +1 -0
  80. package/dist/types/src/SheetPlugin.test.d.ts +2 -0
  81. package/dist/types/src/SheetPlugin.test.d.ts.map +1 -0
  82. package/dist/types/src/SheetPlugin.workerd.d.ts +4 -0
  83. package/dist/types/src/SheetPlugin.workerd.d.ts.map +1 -0
  84. package/dist/types/src/capabilities/anchor-sort.d.ts +4 -4
  85. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
  86. package/dist/types/src/capabilities/app-graph-builder.d.ts +6 -0
  87. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  88. package/dist/types/src/capabilities/comment-config.d.ts +6 -0
  89. package/dist/types/src/capabilities/comment-config.d.ts.map +1 -0
  90. package/dist/types/src/capabilities/compute-graph-registry.d.ts +9 -2
  91. package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -1
  92. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  93. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/index.d.ts +19 -11
  95. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  96. package/dist/types/src/capabilities/markdown-extension.d.ts +5 -0
  97. package/dist/types/src/capabilities/markdown-extension.d.ts.map +1 -0
  98. package/dist/types/src/capabilities/navigation-resolver.d.ts +6 -0
  99. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +1 -0
  100. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  101. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  102. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  103. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/state.d.ts +6 -0
  105. package/dist/types/src/capabilities/state.d.ts.map +1 -0
  106. package/dist/types/src/capabilities/undo-mappings.d.ts +5 -0
  107. package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -0
  108. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts +1 -1
  109. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
  110. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts +9 -4
  111. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts.map +1 -1
  112. package/dist/types/src/components/Sheet/Sheet.d.ts +17 -0
  113. package/dist/types/src/components/Sheet/Sheet.d.ts.map +1 -0
  114. package/dist/types/src/components/Sheet/index.d.ts +2 -0
  115. package/dist/types/src/components/Sheet/index.d.ts.map +1 -0
  116. package/dist/types/src/components/SheetContent/SheetCellEditor.stories.d.ts +16 -0
  117. package/dist/types/src/components/SheetContent/SheetCellEditor.stories.d.ts.map +1 -0
  118. package/dist/types/src/components/SheetContent/SheetContent.d.ts +6 -0
  119. package/dist/types/src/components/SheetContent/SheetContent.d.ts.map +1 -0
  120. package/dist/types/src/components/SheetContent/SheetContent.stories.d.ts +93 -0
  121. package/dist/types/src/components/SheetContent/SheetContent.stories.d.ts.map +1 -0
  122. package/dist/types/src/components/SheetContent/index.d.ts +2 -0
  123. package/dist/types/src/components/SheetContent/index.d.ts.map +1 -0
  124. package/dist/types/src/components/{GridSheet → SheetContent}/util.d.ts +2 -2
  125. package/dist/types/src/components/SheetContent/util.d.ts.map +1 -0
  126. package/dist/types/src/components/{SheetContext/SheetContext.d.ts → SheetRoot/SheetRoot.d.ts} +9 -7
  127. package/dist/types/src/components/SheetRoot/SheetRoot.d.ts.map +1 -0
  128. package/dist/types/src/components/SheetRoot/index.d.ts +2 -0
  129. package/dist/types/src/components/SheetRoot/index.d.ts.map +1 -0
  130. package/dist/types/src/components/SheetStatusbar/SheetStatusbar.d.ts +6 -0
  131. package/dist/types/src/components/SheetStatusbar/SheetStatusbar.d.ts.map +1 -0
  132. package/dist/types/src/components/SheetStatusbar/index.d.ts +2 -0
  133. package/dist/types/src/components/SheetStatusbar/index.d.ts.map +1 -0
  134. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +5 -6
  135. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
  136. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts +92 -4
  137. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/SheetToolbar/align.d.ts +14 -21
  139. package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -1
  140. package/dist/types/src/components/SheetToolbar/style.d.ts +14 -20
  141. package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -1
  142. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts +14 -1
  143. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -1
  144. package/dist/types/src/components/index.d.ts +1 -4
  145. package/dist/types/src/components/index.d.ts.map +1 -1
  146. package/dist/types/src/containers/RangeList/RangeList.d.ts +7 -0
  147. package/dist/types/src/containers/RangeList/RangeList.d.ts.map +1 -0
  148. package/dist/types/src/containers/RangeList/index.d.ts +2 -0
  149. package/dist/types/src/containers/RangeList/index.d.ts.map +1 -0
  150. package/dist/types/src/containers/SheetArticle/SheetArticle.d.ts +12 -0
  151. package/dist/types/src/containers/SheetArticle/SheetArticle.d.ts.map +1 -0
  152. package/dist/types/src/containers/SheetArticle/SheetArticle.stories.d.ts +92 -0
  153. package/dist/types/src/containers/SheetArticle/SheetArticle.stories.d.ts.map +1 -0
  154. package/dist/types/src/containers/SheetArticle/index.d.ts +2 -0
  155. package/dist/types/src/containers/SheetArticle/index.d.ts.map +1 -0
  156. package/dist/types/src/containers/index.d.ts +4 -0
  157. package/dist/types/src/containers/index.d.ts.map +1 -0
  158. package/dist/types/src/extensions/compute.d.ts +2 -2
  159. package/dist/types/src/extensions/compute.d.ts.map +1 -1
  160. package/dist/types/src/extensions/compute.stories.d.ts +10 -13
  161. package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
  162. package/dist/types/src/extensions/editor/index.d.ts +1 -1
  163. package/dist/types/src/extensions/editor/index.d.ts.map +1 -1
  164. package/dist/types/src/extensions/editor/{extension.d.ts → sheet-extension.d.ts} +2 -2
  165. package/dist/types/src/extensions/editor/sheet-extension.d.ts.map +1 -0
  166. package/dist/types/src/extensions/editor/sheet-extension.test.d.ts +2 -0
  167. package/dist/types/src/extensions/editor/sheet-extension.test.d.ts.map +1 -0
  168. package/dist/types/src/index.d.ts +3 -2
  169. package/dist/types/src/index.d.ts.map +1 -1
  170. package/dist/types/src/integrations/thread-ranges.d.ts +1 -3
  171. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  172. package/dist/types/src/meta.d.ts +2 -3
  173. package/dist/types/src/meta.d.ts.map +1 -1
  174. package/dist/types/src/model/sheet-model.d.ts +31 -7
  175. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  176. package/dist/types/src/model/testing.d.ts +2 -2
  177. package/dist/types/src/model/testing.d.ts.map +1 -1
  178. package/dist/types/src/model/useSheetModel.d.ts +3 -3
  179. package/dist/types/src/model/useSheetModel.d.ts.map +1 -1
  180. package/dist/types/src/operations/drop-axis.d.ts +5 -0
  181. package/dist/types/src/operations/drop-axis.d.ts.map +1 -0
  182. package/dist/types/src/operations/index.d.ts +3 -0
  183. package/dist/types/src/operations/index.d.ts.map +1 -0
  184. package/dist/types/src/operations/insert-axis.d.ts +5 -0
  185. package/dist/types/src/operations/insert-axis.d.ts.map +1 -0
  186. package/dist/types/src/operations/restore-axis.d.ts +5 -0
  187. package/dist/types/src/operations/restore-axis.d.ts.map +1 -0
  188. package/dist/types/src/operations/scroll-to-anchor.d.ts +5 -0
  189. package/dist/types/src/operations/scroll-to-anchor.d.ts.map +1 -0
  190. package/dist/types/src/paths.d.ts +3 -0
  191. package/dist/types/src/paths.d.ts.map +1 -0
  192. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -1
  193. package/dist/types/src/playwright/sheet-manager.d.ts +1 -1
  194. package/dist/types/src/playwright/sheet-manager.d.ts.map +1 -1
  195. package/dist/types/src/plugin.d.ts +4 -0
  196. package/dist/types/src/plugin.d.ts.map +1 -0
  197. package/dist/types/src/serializer.d.ts +3 -3
  198. package/dist/types/src/serializer.d.ts.map +1 -1
  199. package/dist/types/src/testing/data.d.ts +2 -2
  200. package/dist/types/src/testing/data.d.ts.map +1 -1
  201. package/dist/types/src/testing/testing.d.ts +28 -4
  202. package/dist/types/src/testing/testing.d.ts.map +1 -1
  203. package/dist/types/src/translations.d.ts +74 -36
  204. package/dist/types/src/translations.d.ts.map +1 -1
  205. package/dist/types/src/types/Sheet.d.ts +75 -0
  206. package/dist/types/src/types/Sheet.d.ts.map +1 -0
  207. package/dist/types/src/types/SheetCapabilities.d.ts +16 -0
  208. package/dist/types/src/types/SheetCapabilities.d.ts.map +1 -0
  209. package/dist/types/src/types/SheetOperation.d.ts +45 -0
  210. package/dist/types/src/types/SheetOperation.d.ts.map +1 -0
  211. package/dist/types/src/types/index.d.ts +3 -1
  212. package/dist/types/src/types/index.d.ts.map +1 -1
  213. package/dist/types/src/types/sheet-range-types.d.ts +2 -2
  214. package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
  215. package/dist/types/src/types/types.d.ts +3 -78
  216. package/dist/types/src/types/types.d.ts.map +1 -1
  217. package/dist/types/src/types/util.d.ts +11 -11
  218. package/dist/types/src/types/util.d.ts.map +1 -1
  219. package/dist/types/tsconfig.tsbuildinfo +1 -1
  220. package/package.json +133 -97
  221. package/src/SheetPlugin.node.ts +21 -0
  222. package/src/SheetPlugin.test.ts +30 -0
  223. package/src/SheetPlugin.tsx +55 -68
  224. package/src/SheetPlugin.workerd.ts +18 -0
  225. package/src/capabilities/anchor-sort.ts +20 -15
  226. package/src/capabilities/app-graph-builder.ts +63 -0
  227. package/src/capabilities/comment-config.ts +28 -0
  228. package/src/capabilities/compute-graph-registry.ts +34 -20
  229. package/src/capabilities/create-object.ts +33 -0
  230. package/src/capabilities/index.ts +22 -8
  231. package/src/capabilities/markdown-extension.ts +31 -0
  232. package/src/capabilities/navigation-resolver.ts +16 -0
  233. package/src/capabilities/operation-handler.ts +16 -0
  234. package/src/capabilities/react-surface.tsx +38 -28
  235. package/src/capabilities/state.ts +29 -0
  236. package/src/capabilities/undo-mappings.ts +30 -0
  237. package/src/components/ComputeGraph/ComputeGraphContextProvider.tsx +2 -2
  238. package/src/components/ComputeGraph/compute-graph.stories.tsx +38 -29
  239. package/src/components/Sheet/Sheet.tsx +20 -0
  240. package/src/components/Sheet/index.ts +5 -0
  241. package/src/components/SheetContent/SheetCellEditor.stories.tsx +95 -0
  242. package/src/components/SheetContent/SheetContent.stories.tsx +60 -0
  243. package/src/components/{GridSheet/GridSheet.tsx → SheetContent/SheetContent.tsx} +100 -69
  244. package/src/components/{RangeList → SheetContent}/index.ts +1 -1
  245. package/src/components/{GridSheet → SheetContent}/util.ts +23 -16
  246. package/src/components/{SheetContext/SheetContext.tsx → SheetRoot/SheetRoot.tsx} +55 -42
  247. package/src/components/{GridSheet → SheetRoot}/index.ts +1 -1
  248. package/src/components/{FunctionEditor/FunctionEditor.tsx → SheetStatusbar/SheetStatusbar.tsx} +20 -7
  249. package/src/components/{FunctionEditor → SheetStatusbar}/index.ts +1 -1
  250. package/src/components/SheetToolbar/SheetToolbar.stories.tsx +20 -14
  251. package/src/components/SheetToolbar/SheetToolbar.tsx +62 -56
  252. package/src/components/SheetToolbar/align.ts +50 -24
  253. package/src/components/SheetToolbar/style.ts +52 -22
  254. package/src/components/SheetToolbar/useToolbarState.ts +22 -5
  255. package/src/components/index.ts +1 -7
  256. package/src/containers/RangeList/RangeList.tsx +65 -0
  257. package/src/containers/RangeList/index.ts +5 -0
  258. package/src/containers/SheetArticle/SheetArticle.stories.tsx +110 -0
  259. package/src/containers/SheetArticle/SheetArticle.tsx +57 -0
  260. package/src/containers/SheetArticle/index.ts +5 -0
  261. package/src/containers/index.ts +8 -0
  262. package/src/extensions/compute.stories.tsx +50 -36
  263. package/src/extensions/compute.ts +4 -5
  264. package/src/extensions/editor/index.ts +1 -1
  265. package/src/extensions/editor/{extension.test.ts → sheet-extension.test.ts} +2 -2
  266. package/src/extensions/editor/{extension.ts → sheet-extension.ts} +18 -15
  267. package/src/index.ts +3 -2
  268. package/src/integrations/thread-ranges.ts +22 -63
  269. package/src/meta.ts +22 -8
  270. package/src/model/sheet-model.test.ts +35 -6
  271. package/src/model/sheet-model.ts +89 -57
  272. package/src/model/testing.ts +5 -5
  273. package/src/model/useSheetModel.ts +4 -3
  274. package/src/operations/drop-axis.ts +26 -0
  275. package/src/operations/index.ts +12 -0
  276. package/src/operations/insert-axis.ts +19 -0
  277. package/src/operations/restore-axis.ts +19 -0
  278. package/src/operations/scroll-to-anchor.ts +30 -0
  279. package/src/paths.ts +11 -0
  280. package/src/playwright/playwright.config.ts +1 -1
  281. package/src/playwright/sheet-manager.ts +1 -1
  282. package/src/playwright/sheet.spec.ts +5 -4
  283. package/src/plugin.ts +11 -0
  284. package/src/sanity.test.ts +10 -4
  285. package/src/serializer.ts +4 -12
  286. package/src/testing/data.ts +2 -2
  287. package/src/testing/testing.tsx +13 -7
  288. package/src/translations.ts +43 -34
  289. package/src/types/Sheet.ts +97 -0
  290. package/src/types/SheetCapabilities.ts +26 -0
  291. package/src/types/SheetOperation.ts +84 -0
  292. package/src/types/index.ts +4 -1
  293. package/src/types/sheet-range-types.ts +5 -5
  294. package/src/types/types.ts +6 -51
  295. package/src/types/util.ts +18 -45
  296. package/src/vite-env.d.ts +10 -0
  297. package/dist/lib/browser/SheetContainer-6IWQKRJC.mjs +0 -351
  298. package/dist/lib/browser/SheetContainer-6IWQKRJC.mjs.map +0 -7
  299. package/dist/lib/browser/anchor-sort-VHURGBOY.mjs +0 -24
  300. package/dist/lib/browser/anchor-sort-VHURGBOY.mjs.map +0 -7
  301. package/dist/lib/browser/chunk-6AKBCBL4.mjs +0 -18
  302. package/dist/lib/browser/chunk-6AKBCBL4.mjs.map +0 -7
  303. package/dist/lib/browser/chunk-7HQX4NQP.mjs.map +0 -7
  304. package/dist/lib/browser/chunk-KJWZUQVA.mjs +0 -15
  305. package/dist/lib/browser/chunk-KJWZUQVA.mjs.map +0 -7
  306. package/dist/lib/browser/chunk-SI4X5GUR.mjs +0 -892
  307. package/dist/lib/browser/chunk-SI4X5GUR.mjs.map +0 -7
  308. package/dist/lib/browser/chunk-ULWNSP4B.mjs +0 -847
  309. package/dist/lib/browser/chunk-ULWNSP4B.mjs.map +0 -7
  310. package/dist/lib/browser/compute-graph-registry-VG7VP7IV.mjs +0 -30
  311. package/dist/lib/browser/compute-graph-registry-VG7VP7IV.mjs.map +0 -7
  312. package/dist/lib/browser/index.mjs +0 -153
  313. package/dist/lib/browser/index.mjs.map +0 -7
  314. package/dist/lib/browser/intent-resolver-WOJGZMSV.mjs +0 -56
  315. package/dist/lib/browser/intent-resolver-WOJGZMSV.mjs.map +0 -7
  316. package/dist/lib/browser/markdown-VXMIPUQC.mjs +0 -26
  317. package/dist/lib/browser/markdown-VXMIPUQC.mjs.map +0 -7
  318. package/dist/lib/browser/meta.json +0 -1
  319. package/dist/lib/browser/react-surface-DAHMBIQW.mjs +0 -53
  320. package/dist/lib/browser/react-surface-DAHMBIQW.mjs.map +0 -7
  321. package/dist/lib/node-esm/SheetContainer-SW55KKOT.mjs +0 -352
  322. package/dist/lib/node-esm/SheetContainer-SW55KKOT.mjs.map +0 -7
  323. package/dist/lib/node-esm/anchor-sort-CTJGOPET.mjs +0 -25
  324. package/dist/lib/node-esm/anchor-sort-CTJGOPET.mjs.map +0 -7
  325. package/dist/lib/node-esm/chunk-3K5VNYOF.mjs +0 -20
  326. package/dist/lib/node-esm/chunk-3K5VNYOF.mjs.map +0 -7
  327. package/dist/lib/node-esm/chunk-6SK5LJ5S.mjs +0 -16
  328. package/dist/lib/node-esm/chunk-6SK5LJ5S.mjs.map +0 -7
  329. package/dist/lib/node-esm/chunk-CADTJFAS.mjs +0 -893
  330. package/dist/lib/node-esm/chunk-CADTJFAS.mjs.map +0 -7
  331. package/dist/lib/node-esm/chunk-Q6UYC4G5.mjs +0 -236
  332. package/dist/lib/node-esm/chunk-Q6UYC4G5.mjs.map +0 -7
  333. package/dist/lib/node-esm/chunk-VEGX32AT.mjs +0 -848
  334. package/dist/lib/node-esm/chunk-VEGX32AT.mjs.map +0 -7
  335. package/dist/lib/node-esm/compute-graph-registry-3K3Q2A5T.mjs +0 -31
  336. package/dist/lib/node-esm/compute-graph-registry-3K3Q2A5T.mjs.map +0 -7
  337. package/dist/lib/node-esm/index.mjs +0 -154
  338. package/dist/lib/node-esm/index.mjs.map +0 -7
  339. package/dist/lib/node-esm/intent-resolver-PZRXBNIJ.mjs +0 -57
  340. package/dist/lib/node-esm/intent-resolver-PZRXBNIJ.mjs.map +0 -7
  341. package/dist/lib/node-esm/markdown-4VPQJZNZ.mjs +0 -27
  342. package/dist/lib/node-esm/markdown-4VPQJZNZ.mjs.map +0 -7
  343. package/dist/lib/node-esm/meta.json +0 -1
  344. package/dist/lib/node-esm/react-surface-Z7TVWQ4V.mjs +0 -54
  345. package/dist/lib/node-esm/react-surface-Z7TVWQ4V.mjs.map +0 -7
  346. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  347. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  348. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  349. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  350. package/dist/types/src/capabilities/markdown.d.ts +0 -6
  351. package/dist/types/src/capabilities/markdown.d.ts.map +0 -1
  352. package/dist/types/src/components/FunctionEditor/FunctionEditor.d.ts +0 -3
  353. package/dist/types/src/components/FunctionEditor/FunctionEditor.d.ts.map +0 -1
  354. package/dist/types/src/components/FunctionEditor/index.d.ts +0 -2
  355. package/dist/types/src/components/FunctionEditor/index.d.ts.map +0 -1
  356. package/dist/types/src/components/GridSheet/GridSheet.d.ts +0 -3
  357. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +0 -1
  358. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +0 -7
  359. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +0 -1
  360. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts +0 -25
  361. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts.map +0 -1
  362. package/dist/types/src/components/GridSheet/index.d.ts +0 -2
  363. package/dist/types/src/components/GridSheet/index.d.ts.map +0 -1
  364. package/dist/types/src/components/GridSheet/util.d.ts.map +0 -1
  365. package/dist/types/src/components/RangeList/RangeList.d.ts +0 -7
  366. package/dist/types/src/components/RangeList/RangeList.d.ts.map +0 -1
  367. package/dist/types/src/components/RangeList/index.d.ts +0 -2
  368. package/dist/types/src/components/RangeList/index.d.ts.map +0 -1
  369. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +0 -11
  370. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +0 -1
  371. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts +0 -8
  372. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +0 -1
  373. package/dist/types/src/components/SheetContainer/index.d.ts +0 -3
  374. package/dist/types/src/components/SheetContainer/index.d.ts.map +0 -1
  375. package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +0 -1
  376. package/dist/types/src/components/SheetContext/index.d.ts +0 -2
  377. package/dist/types/src/components/SheetContext/index.d.ts.map +0 -1
  378. package/dist/types/src/extensions/editor/extension.d.ts.map +0 -1
  379. package/dist/types/src/extensions/editor/extension.test.d.ts +0 -2
  380. package/dist/types/src/extensions/editor/extension.test.d.ts.map +0 -1
  381. package/dist/types/src/types/schema.d.ts +0 -37
  382. package/dist/types/src/types/schema.d.ts.map +0 -1
  383. package/src/capabilities/capabilities.ts +0 -14
  384. package/src/capabilities/intent-resolver.ts +0 -38
  385. package/src/capabilities/markdown.ts +0 -22
  386. package/src/components/GridSheet/GridSheet.stories.tsx +0 -53
  387. package/src/components/GridSheet/SheetCellEditor.stories.tsx +0 -93
  388. package/src/components/RangeList/RangeList.tsx +0 -60
  389. package/src/components/SheetContainer/SheetContainer.stories.tsx +0 -89
  390. package/src/components/SheetContainer/SheetContainer.tsx +0 -36
  391. package/src/components/SheetContainer/index.ts +0 -7
  392. package/src/components/SheetContext/index.ts +0 -5
  393. package/src/types/schema.ts +0 -61
  394. /package/dist/lib/{browser/types/index.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  395. /package/dist/lib/{node-esm/types → neutral}/index.mjs.map +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/schema.ts", "../../../src/types/sheet-range-types.ts", "../../../src/types/types.ts", "../../../src/model/sheet-model.ts", "../../../src/model/useSheetModel.ts", "../../../src/types/util.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\n\nexport const CellValue = Schema.Struct({\n // TODO(burdon): How to store dates (datetime, date, time), percentages, etc.\n // Consider import/export; natural access for other plugins. Special handling for currency (precision).\n // TODO(burdon): Automerge (long string) or short string or number.\n value: Schema.Any,\n});\n\nexport type CellValue = Schema.Schema.Type<typeof CellValue>;\n\n// TODO(burdon): IMPORTANT: Reconcile with Field definition.\nexport const Range = Schema.Struct({\n range: Schema.String,\n key: Schema.String,\n value: Schema.String,\n});\n\nexport type Range = Schema.Schema.Type<typeof Range>;\n\n// TODO(burdon): Visibility, locked, frozen, etc.\nexport const RowColumnMeta = Schema.Struct({\n size: Schema.optional(Schema.Number),\n});\n\n// TODO(burdon): Reconcile col/column (across packages).\n// TODO(burdon): Index to all updates when rows/columns are inserted/deleted.\nexport const SheetType = Schema.Struct({\n name: Schema.optional(Schema.String),\n\n // Sparse map of cells referenced by index.\n cells: Schema.mutable(Schema.Record({ key: Schema.String, value: Schema.mutable(CellValue) })),\n\n // Ordered row indices.\n rows: Schema.mutable(Schema.Array(Schema.String)),\n\n // Ordered column indices.\n columns: Schema.mutable(Schema.Array(Schema.String)),\n\n // Row metadata referenced by index.\n rowMeta: Schema.mutable(Schema.Record({ key: Schema.String, value: Schema.mutable(RowColumnMeta) })),\n\n // Column metadata referenced by index.\n columnMeta: Schema.mutable(Schema.Record({ key: Schema.String, value: Schema.mutable(RowColumnMeta) })),\n\n // Cell formatting referenced by indexed range.\n ranges: Schema.mutable(Schema.Array(Range)),\n}).pipe(\n Type.Obj({\n typename: 'dxos.org/type/Sheet',\n version: '0.1.0',\n }),\n);\n\nexport interface SheetType extends Schema.Schema.Type<typeof SheetType> {}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type ClassNameValue } from '@dxos/react-ui';\n\nimport { type SheetType } from '../types';\n\nexport const alignKey = 'alignment';\nexport type AlignKey = typeof alignKey;\nexport type AlignValue = 'start' | 'center' | 'end';\n\nexport const commentKey = 'comment';\nexport type CommentKey = typeof commentKey;\nexport type CommentValue = string;\n\nexport const styleKey = 'style';\nexport type StyleKey = typeof styleKey;\nexport type StyleValue = 'highlight' | 'softwrap';\n\n// TODO(burdon): Reconcile with plugin-table.\nexport const cellClassNameForRange = ({ key, value }: SheetType['ranges'][number]): ClassNameValue => {\n switch (key) {\n case alignKey:\n switch (value) {\n case 'start':\n return 'text-start';\n case 'center':\n return 'text-center';\n case 'end':\n return 'text-end';\n default:\n return undefined;\n }\n\n case commentKey:\n return 'bg-gridComment';\n\n case styleKey:\n switch (value) {\n case 'highlight':\n return '!bg-gridHighlight';\n case 'softwrap':\n return '!whitespace-normal';\n default:\n return undefined;\n }\n\n default:\n return undefined;\n }\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { type CellValue, RowColumnMeta, SheetType } from './schema';\nimport { SHEET_PLUGIN } from '../meta';\nimport { SheetModel } from '../model';\n\nexport type SheetSize = {\n rows: number;\n columns: number;\n};\n\nexport type CreateSheetOptions = {\n name?: string;\n cells?: Record<string, CellValue>;\n} & Partial<SheetSize>;\n\nexport namespace SheetAction {\n const SHEET_ACTION = `${SHEET_PLUGIN}/action`;\n\n export class Create extends Schema.TaggedClass<Create>()(`${SHEET_ACTION}/create`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: SheetType,\n }),\n }) {}\n\n // TODO(wittjosiah): Factor out. This is `DxGridAxis` from `@dxos/react-ui-grid`.\n const Axis = Schema.Union(Schema.Literal('row'), Schema.Literal('col'));\n\n export class InsertAxis extends Schema.TaggedClass<InsertAxis>()(`${SHEET_ACTION}/axis-insert`, {\n input: Schema.Struct({\n // TODO(wittjosiah): Schema.instanceOf(SheetModel) throws when running tests.\n model: Schema.Any.pipe(Schema.filter((model) => model instanceof SheetModel)) as Schema.Schema<SheetModel>,\n axis: Axis,\n index: Schema.Number,\n count: Schema.optional(Schema.Number),\n }),\n output: Schema.Void,\n }) {}\n\n export const RestoreAxis = Schema.Struct({\n axis: Axis,\n axisIndex: Schema.String,\n index: Schema.Number,\n axisMeta: RowColumnMeta,\n values: Schema.Array(Schema.Any),\n });\n\n export type RestoreAxis = Schema.Schema.Type<typeof RestoreAxis>;\n\n export class DropAxis extends Schema.TaggedClass<DropAxis>()(`${SHEET_ACTION}/axis-drop`, {\n input: Schema.Struct({\n // TODO(wittjosiah): Schema.instanceOf(SheetModel) throws when running tests.\n model: Schema.Any.pipe(Schema.filter((model) => model instanceof SheetModel)) as Schema.Schema<SheetModel>,\n axis: Axis,\n axisIndex: Schema.String,\n deletionData: Schema.optional(RestoreAxis),\n }),\n output: Schema.Void,\n }) {}\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Event } from '@dxos/async';\nimport {\n addressFromA1Notation,\n addressToA1Notation,\n createSheetName,\n isFormula,\n type CellAddress,\n type CellRange,\n type CellScalarValue,\n type ComputeGraph,\n type ComputeNode,\n type ComputeNodeEvent,\n DetailedCellError,\n ExportedCellChange,\n type SimpleCellRange,\n type SimpleCellAddress,\n type SimpleDate,\n type SimpleDateTime,\n} from '@dxos/compute';\nimport { Resource } from '@dxos/context';\nimport { Obj } from '@dxos/echo';\nimport { FormatEnum, TypeEnum } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport {\n MAX_COLS,\n MAX_ROWS,\n ReadonlyException,\n addressFromIndex,\n addressToIndex,\n initialize,\n insertIndices,\n mapFormulaIndicesToRefs,\n mapFormulaRefsToIndices,\n} from '../types';\nimport { type SheetAction, type CellValue, type SheetType } from '../types';\n\n// TODO(burdon): Move to compute.\n// Map sheet types to system types.\n// https://hyperformula.handsontable.com/guide/types-of-values.html\n// - https://github.com/handsontable/hyperformula/blob/master/src/Cell.ts (CellValueType)\n// - https://github.com/handsontable/hyperformula/blob/master/src/interpreter/InterpreterValue.ts (NumberType)\nconst typeMap: Record<string, { type: TypeEnum; format?: FormatEnum }> = {\n BOOLEAN: { type: TypeEnum.Boolean },\n NUMBER_RAW: { type: TypeEnum.Number },\n NUMBER_PERCENT: { type: TypeEnum.Number, format: FormatEnum.Percent },\n NUMBER_CURRENCY: { type: TypeEnum.Number, format: FormatEnum.Currency },\n NUMBER_DATETIME: { type: TypeEnum.String, format: FormatEnum.DateTime },\n NUMBER_DATE: { type: TypeEnum.String, format: FormatEnum.Date },\n NUMBER_TIME: { type: TypeEnum.String, format: FormatEnum.Time },\n};\n\nconst getTopLeft = (range: CellRange): CellAddress => {\n const to = range.to ?? range.from;\n return { row: Math.min(range.from.row, to.row), col: Math.min(range.from.col, to.col) };\n};\n\nconst toSimpleCellAddress = (sheet: number, cell: CellAddress): SimpleCellAddress => ({\n sheet,\n row: cell.row,\n col: cell.col,\n});\n\nconst toModelRange = (sheet: number, range: CellRange): SimpleCellRange => ({\n start: toSimpleCellAddress(sheet, range.from),\n end: toSimpleCellAddress(sheet, range.to ?? range.from),\n});\n\nexport type SheetModelOptions = {\n readonly?: boolean;\n};\n\n/**\n * Spreadsheet data model.\n *\n * [ComputeGraphContext] > [SheetContext]:[SheetModel] > [Sheet.Root]\n */\n// TODO(burdon): Factor out commonality with ComputeNode. Factor out HF.\nexport class SheetModel extends Resource {\n public readonly id = `model-${PublicKey.random().truncate()}`;\n\n // Wraps compute node.\n public readonly update = new Event<ComputeNodeEvent>();\n\n private _node?: ComputeNode;\n\n constructor(\n private readonly _graph: ComputeGraph,\n private readonly _sheet: SheetType,\n private readonly _options: SheetModelOptions = {},\n ) {\n super();\n }\n\n get graph() {\n return this._graph;\n }\n\n get sheet() {\n return this._sheet;\n }\n\n get readonly() {\n return this._options.readonly;\n }\n\n get bounds() {\n return {\n rows: this._sheet.rows.length,\n columns: this._sheet.columns.length,\n };\n }\n\n /**\n * Initialize sheet and engine.\n */\n protected override async _open(): Promise<void> {\n log('initialize', { id: this.id });\n initialize(this._sheet);\n\n this._graph.update.on((event) => {\n if (event.type === 'functionsUpdated') {\n this.reset();\n }\n });\n\n // TODO(burdon): SheetModel should extend ComputeNode and be constructed via the graph.\n this._node = this._graph.getOrCreateNode(\n createSheetName({ type: Obj.getTypename(this._sheet)!, id: this._sheet.id }),\n );\n await this._node.open();\n\n // Listen for model updates (e.g., async calculations).\n const unsubscribe = this._node.update.on((event) => this.update.emit(event));\n this._ctx.onDispose(unsubscribe);\n\n this.reset();\n }\n\n /**\n * Update engine.\n * NOTE: This resets the undo history.\n * @deprecated\n */\n reset(): void {\n invariant(this._node);\n this._node.graph.hf.clearSheet(this._node.sheetId);\n Object.entries(this._sheet.cells).forEach(([key, { value }]) => {\n invariant(this._node);\n const { col, row } = addressFromIndex(this._sheet, key);\n if (isFormula(value)) {\n const binding = this._graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(this._sheet, value));\n if (binding) {\n value = this._graph.mapFormulaToNative(binding);\n } else {\n // If binding is not found, render the cell as empty.\n // This prevents the cell from momentarily rendering an error while the binding is being loaded.\n value = '';\n }\n }\n\n this._node.graph.hf.setCellContents({ sheet: this._node.sheetId, row, col }, value);\n });\n }\n\n /**\n * Recalculate formulas.\n * NOTE: This resets the undo history.\n * https://hyperformula.handsontable.com/guide/volatile-functions.html#volatile-actions\n * @deprecated\n */\n // TODO(burdon): Remove.\n recalculate(): void {\n this._node?.graph.hf.rebuildAndRecalculate();\n }\n\n insertRows(i: number, n = 1): string[] {\n const idx = insertIndices(this._sheet.rows, i, n, MAX_ROWS);\n this.reset();\n return idx;\n }\n\n insertColumns(i: number, n = 1): string[] {\n const idx = insertIndices(this._sheet.columns, i, n, MAX_COLS);\n this.reset();\n return idx;\n }\n\n dropRow(rowIndex: string): SheetAction.RestoreAxis {\n const range = {\n from: addressFromIndex(this._sheet, `${this._sheet.columns[0]}@${rowIndex}`),\n to: addressFromIndex(this._sheet, `${this._sheet.columns[this._sheet.columns.length - 1]}@${rowIndex}`),\n };\n const values = this.getCellValues(range).flat();\n const index = this._sheet.rows.indexOf(rowIndex);\n this.clear(range);\n this._sheet.rows.splice(index, 1);\n delete this._sheet.rowMeta[rowIndex];\n this.reset();\n return { axis: 'row', index, axisIndex: rowIndex, axisMeta: this._sheet.rowMeta[rowIndex], values };\n }\n\n dropColumn(colIndex: string): SheetAction.RestoreAxis {\n const range = {\n from: addressFromIndex(this._sheet, `${colIndex}@${this._sheet.rows[0]}`),\n to: addressFromIndex(this._sheet, `${colIndex}@${this._sheet.rows[this._sheet.rows.length - 1]}`),\n };\n const values = this.getCellValues(range).flat();\n const index = this._sheet.columns.indexOf(colIndex);\n this.clear(range);\n this._sheet.columns.splice(index, 1);\n delete this._sheet.columnMeta[colIndex];\n this.reset();\n return { axis: 'col', index, axisIndex: colIndex, axisMeta: this._sheet.rowMeta[colIndex], values };\n }\n\n restoreRow({ index, axisIndex, axisMeta, values }: SheetAction.RestoreAxis): void {\n this._sheet.rows.splice(index, 0, axisIndex);\n values.forEach((value, col) => {\n if (value) {\n this._sheet.cells[`${this._sheet.columns[col]}@${axisIndex}`] = { value };\n }\n });\n if (axisMeta) {\n this._sheet.rowMeta[axisIndex] = axisMeta;\n }\n this.reset();\n }\n\n restoreColumn({ index, axisIndex, axisMeta, values }: SheetAction.RestoreAxis): void {\n this._sheet.columns.splice(index, 0, axisIndex);\n values.forEach((value, row) => {\n if (value) {\n this._sheet.cells[`${axisIndex}@${this._sheet.rows[row]}`] = { value };\n }\n });\n if (axisMeta) {\n this._sheet.columnMeta[axisIndex] = axisMeta;\n }\n this.reset();\n }\n\n //\n // Undoable actions.\n // TODO(burdon): Group undoable methods; consistently update hf/sheet.\n //\n\n /**\n * Clear range of values.\n */\n clear(range: CellRange): void {\n invariant(this._node);\n const topLeft = getTopLeft(range);\n const values = this._iterRange(range, () => null);\n this._node.graph.hf.setCellContents(toSimpleCellAddress(this._node.sheetId, topLeft), values);\n this._iterRange(range, (cell) => {\n const idx = addressToIndex(this._sheet, cell);\n delete this._sheet.cells[idx];\n });\n }\n\n cut(range: CellRange): void {\n invariant(this._node);\n this._node.graph.hf.cut(toModelRange(this._node.sheetId, range));\n this._iterRange(range, (cell) => {\n const idx = addressToIndex(this._sheet, cell);\n delete this._sheet.cells[idx];\n });\n }\n\n copy(range: CellRange): void {\n invariant(this._node);\n this._node.graph.hf.copy(toModelRange(this._node.sheetId, range));\n }\n\n paste(cell: CellAddress): void {\n invariant(this._node);\n if (!this._node.graph.hf.isClipboardEmpty()) {\n const changes = this._node.graph.hf.paste(toSimpleCellAddress(this._node.sheetId, cell));\n for (const change of changes) {\n if (change instanceof ExportedCellChange) {\n const { address, newValue } = change;\n const idx = addressToIndex(this._sheet, { row: address.row, col: address.col });\n this._sheet.cells[idx] = { value: newValue };\n }\n }\n }\n }\n\n // TODO(burdon): Display undo/redo state.\n undo(): void {\n invariant(this._node);\n if (this._node.graph.hf.isThereSomethingToUndo()) {\n this._node.graph.hf.undo();\n // this.update.emit();\n }\n }\n\n redo(): void {\n invariant(this._node);\n if (this._node.graph.hf.isThereSomethingToRedo()) {\n this._node.graph.hf.redo();\n // this.update.emit();\n }\n }\n\n /**\n * Get value from sheet.\n */\n getCellValue(cell: CellAddress): CellScalarValue {\n const idx = addressToIndex(this._sheet, cell);\n return this._sheet.cells[idx]?.value ?? null;\n }\n\n /**\n * Get value as a string for editing.\n */\n getCellText(cell: CellAddress): string | undefined {\n const value = this.getCellValue(cell);\n if (value == null) {\n return undefined;\n }\n\n if (isFormula(value)) {\n return this._graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(this._sheet, value));\n } else {\n return String(value);\n }\n }\n\n /**\n * Get array of raw values from sheet.\n */\n getCellValues(range: CellRange): CellScalarValue[][] {\n return this._iterRange(range, (cell) => this.getCellValue(cell));\n }\n\n /**\n * Gets the regular or computed value from the engine.\n */\n getValue(cell: CellAddress): CellScalarValue {\n // Applies rounding and post-processing.\n invariant(this._node);\n const address = toSimpleCellAddress(this._node.sheetId, cell);\n const value = this._node.graph.hf.getCellValue(address);\n if (value instanceof DetailedCellError) {\n // TODO(wittjosiah): Error details should be shown in cell `title`.\n log.warn('cell error', { cell, error: value });\n return value.toString();\n }\n\n return value;\n }\n\n /**\n * Get value type.\n */\n getValueDescription(cell: CellAddress): { type: TypeEnum; format?: FormatEnum } | undefined {\n invariant(this._node);\n const addr = toSimpleCellAddress(this._node.sheetId, cell);\n const type = this._node.graph.hf.getCellValueDetailedType(addr);\n return typeMap[type];\n }\n\n /**\n * Sets the value, updating the sheet and engine.\n */\n setValue(cell: CellAddress, value: CellScalarValue): void {\n invariant(this._node);\n if (this._options.readonly) {\n throw new ReadonlyException();\n }\n\n // Reallocate if > current bounds.\n let refresh = false;\n if (cell.row >= this._sheet.rows.length) {\n insertIndices(this._sheet.rows, cell.row, 1, MAX_ROWS);\n refresh = true;\n }\n if (cell.col >= this._sheet.columns.length) {\n insertIndices(this._sheet.columns, cell.col, 1, MAX_COLS);\n refresh = true;\n }\n\n if (refresh) {\n // TODO(burdon): Remove.\n this.reset();\n }\n\n // Insert into engine.\n this._node.graph.hf.setCellContents({ sheet: this._node.sheetId, row: cell.row, col: cell.col }, [\n [isFormula(value) ? this._graph.mapFormulaToNative(value) : value],\n ]);\n\n // Insert into sheet.\n const idx = addressToIndex(this._sheet, cell);\n if (value === undefined || value === null) {\n delete this._sheet.cells[idx];\n } else {\n if (isFormula(value)) {\n value = this._graph.mapFunctionBindingToId(mapFormulaRefsToIndices(this._sheet, value));\n }\n\n this._sheet.cells[idx] = { value };\n }\n }\n\n /**\n * Sets values from a simple map.\n */\n setValues(values: Record<string, CellValue>): void {\n Object.entries(values).forEach(([key, { value }]) => {\n this.setValue(addressFromA1Notation(key), value);\n });\n }\n\n /**\n * Iterate range.\n */\n private _iterRange(range: CellRange, cb: (cell: CellAddress) => CellScalarValue | void): CellScalarValue[][] {\n const to = range.to ?? range.from;\n const rowRange = [Math.min(range.from.row, to.row), Math.max(range.from.row, to.row)];\n const columnRange = [Math.min(range.from.col, to.col), Math.max(range.from.col, to.col)];\n const rows: CellScalarValue[][] = [];\n for (let row = rowRange[0]; row <= rowRange[1]; row++) {\n const rowCells: CellScalarValue[] = [];\n for (let column = columnRange[0]; column <= columnRange[1]; column++) {\n const value = cb({ row, col: column });\n if (value !== undefined) {\n rowCells.push(value);\n }\n }\n\n rows.push(rowCells);\n }\n\n return rows;\n }\n\n // TODO(burdon): Delete index.\n private _deleteIndices(indices: string[], i: number, n: number): void {\n throw new Error('Not implemented');\n }\n\n // TODO(burdon): Move. Cannot use fractional without changing. Switch back to using unique IDs?\n private _moveIndices(indices: string[], i: number, j: number, n: number): void {\n throw new Error('Not implemented');\n }\n\n /**\n * Map from indices to A1 notation.\n */\n mapFormulaIndicesToRefs(formula: string): string {\n invariant(isFormula(formula));\n return formula.replace(/([a-zA-Z0-9]+)@([a-zA-Z0-9]+)/g, (idx) => {\n return addressToA1Notation(addressFromIndex(this._sheet, idx));\n });\n }\n\n //\n // Values\n //\n\n /**\n * https://hyperformula.handsontable.com/guide/date-and-time-handling.html#example\n * https://hyperformula.handsontable.com/api/interfaces/configparams.html#nulldate\n * NOTE: TODAY() is number of FULL days since nullDate. It will typically be -1 days from NOW().\n */\n toLocalDate(num: number): Date {\n const { year, month, day, hours, minutes, seconds } = this.toDateTime(num);\n return new Date(year, month - 1, day, hours, minutes, seconds);\n }\n\n toDateTime(num: number): SimpleDateTime {\n invariant(this._node);\n return this._node.graph.hf.numberToDateTime(num) as SimpleDateTime;\n }\n\n toDate(num: number): SimpleDate {\n invariant(this._node);\n return this._node.graph.hf.numberToDate(num) as SimpleDate;\n }\n\n toTime(num: number): SimpleDate {\n invariant(this._node);\n return this._node.graph.hf.numberToTime(num) as SimpleDate;\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { type ComputeGraph } from '@dxos/compute';\n\nimport { SheetModel } from '../model';\nimport { type SheetType } from '../types';\n\nexport type UseSheetModelOptions = {\n readonly?: boolean;\n};\n\nexport const useSheetModel = (\n graph?: ComputeGraph,\n sheet?: SheetType,\n { readonly }: UseSheetModelOptions = {},\n): SheetModel | undefined => {\n const [model, setModel] = useState<SheetModel>();\n useEffect(() => {\n if (!graph || !sheet) {\n return;\n }\n\n let model: SheetModel | undefined;\n const t = setTimeout(async () => {\n model = new SheetModel(graph, sheet, { readonly });\n await model.open();\n setModel(model);\n });\n\n return () => {\n clearTimeout(t);\n void model?.close();\n };\n }, [graph, sheet, readonly]);\n\n return model;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport {\n addressFromA1Notation,\n addressToA1Notation,\n isFormula,\n type CellAddress,\n type CellRange,\n type CompleteCellRange,\n} from '@dxos/compute';\nimport { randomBytes } from '@dxos/crypto';\nimport { Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\n\nimport { type CreateSheetOptions, type SheetSize, SheetType } from '../types';\n\nexport const MAX_ROWS = 500;\nexport const MAX_COLS = 676; // 26^2;\n\nexport const DEFAULT_ROWS = 50;\nexport const DEFAULT_COLS = 26;\n\n// TODO(burdon): Factor out from dxos/protocols to new common package.\nexport class ApiError extends Error {}\n\nexport class ReadonlyException extends ApiError {}\n\nexport class RangeException extends ApiError {\n constructor(n: number) {\n super();\n }\n}\n\n/**\n * With a string length of 8, the chance of a collision is 0.02% for a sheet with 10,000 strings.\n */\nexport const createIndex = (length = 8): string => {\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charactersLength = characters.length;\n const randomBuffer = randomBytes(length);\n return Array.from(randomBuffer, (byte) => characters[byte % charactersLength]).join('');\n};\n\nexport const createIndices = (length: number): string[] => Array.from({ length }).map(() => createIndex());\n\nexport const insertIndices = (indices: string[], i: number, n: number, max: number) => {\n if (i + n > max) {\n throw new RangeException(i + n);\n }\n\n const idx = createIndices(n);\n indices.splice(i, 0, ...idx);\n return idx;\n};\n\nexport const initialize = (\n sheet: SheetType,\n { rows = DEFAULT_ROWS, columns = DEFAULT_COLS }: Partial<SheetSize> = {},\n) => {\n if (!sheet.rows.length) {\n insertIndices(sheet.rows, 0, rows, MAX_ROWS);\n }\n if (!sheet.columns.length) {\n insertIndices(sheet.columns, 0, columns, MAX_COLS);\n }\n};\n\nexport const createSheet = ({ name, cells, ...size }: CreateSheetOptions = {}): SheetType => {\n const sheet = Obj.make(SheetType, {\n name,\n cells: {},\n rows: [],\n columns: [],\n rowMeta: {},\n columnMeta: {},\n ranges: [],\n });\n\n initialize(sheet, size);\n\n if (cells) {\n Object.entries(cells).forEach(([key, { value }]) => {\n const idx = addressToIndex(sheet, addressFromA1Notation(key));\n if (isFormula(value)) {\n value = mapFormulaRefsToIndices(sheet, value);\n }\n\n sheet.cells[idx] = { value };\n });\n }\n\n return sheet;\n};\n\n/**\n * E.g., \"A1\" => \"CA2@CB3\".\n */\nexport const addressToIndex = (sheet: SheetType, cell: CellAddress): string => {\n return `${sheet.columns[cell.col]}@${sheet.rows[cell.row]}`;\n};\n\n/**\n * E.g., \"CA2@CB3\" => \"A1\".\n */\nexport const addressFromIndex = (sheet: SheetType, idx: string): CellAddress => {\n const [column, row] = idx.split('@');\n return {\n col: sheet.columns.indexOf(column),\n row: sheet.rows.indexOf(row),\n };\n};\n\n/**\n * E.g., \"A1:B2\" => \"CA2@CB3:CC4@CD5\".\n */\nexport const rangeToIndex = (sheet: SheetType, range: CellRange): string => {\n return [range.from, range.to ?? range.from].map((cell) => addressToIndex(sheet, cell)).join(':');\n};\n\n/**\n * E.g., \"CA2@CB3:CC4@CD5\" => \"A1:B2\".\n */\nexport const rangeFromIndex = (sheet: SheetType, idx: string): CompleteCellRange => {\n const [from, to] = idx.split(':').map((index) => addressFromIndex(sheet, index));\n return { from, to };\n};\n\n/**\n * Compares the positions of two cell indexes in a sheet.\n * Sorts primarily by row, then by column if rows are equal.\n */\nexport const compareIndexPositions = (sheet: SheetType, indexA: string, indexB: string): number => {\n const { row: rowA, col: columnA } = addressFromIndex(sheet, indexA);\n const { row: rowB, col: columnB } = addressFromIndex(sheet, indexB);\n\n // Sort by row first, then by column.\n if (rowA !== rowB) {\n return rowA - rowB;\n } else {\n return columnA - columnB;\n }\n};\n\n// TODO(burdon): Tests.\n\n/**\n * Map from A1 notation to indices.\n */\nexport const mapFormulaRefsToIndices = (sheet: SheetType, formula: string): string => {\n invariant(isFormula(formula));\n return formula.replace(/([a-zA-Z]+)([0-9]+)/g, (match) => {\n return addressToIndex(sheet, addressFromA1Notation(match));\n });\n};\n\n/**\n * Map from indices to A1 notation.\n */\nexport const mapFormulaIndicesToRefs = (sheet: SheetType, formula: string): string => {\n invariant(isFormula(formula));\n return formula.replace(/([a-zA-Z0-9]+)@([a-zA-Z0-9]+)/g, (idx) => {\n return addressToA1Notation(addressFromIndex(sheet, idx));\n });\n};\n"],
5
- "mappings": "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",
6
- "names": ["Schema", "Type", "CellValue", "Schema", "Struct", "value", "Any", "Range", "range", "String", "key", "RowColumnMeta", "size", "optional", "Number", "SheetType", "name", "cells", "mutable", "Record", "rows", "Array", "columns", "rowMeta", "columnMeta", "ranges", "pipe", "Type", "Obj", "typename", "version", "alignKey", "commentKey", "styleKey", "cellClassNameForRange", "key", "value", "undefined", "Schema", "Event", "addressFromA1Notation", "addressToA1Notation", "createSheetName", "isFormula", "DetailedCellError", "ExportedCellChange", "Resource", "Obj", "FormatEnum", "TypeEnum", "invariant", "PublicKey", "log", "typeMap", "BOOLEAN", "type", "TypeEnum", "Boolean", "NUMBER_RAW", "Number", "NUMBER_PERCENT", "format", "FormatEnum", "Percent", "NUMBER_CURRENCY", "Currency", "NUMBER_DATETIME", "String", "DateTime", "NUMBER_DATE", "Date", "NUMBER_TIME", "Time", "getTopLeft", "range", "to", "from", "row", "Math", "min", "col", "toSimpleCellAddress", "sheet", "cell", "toModelRange", "start", "end", "SheetModel", "Resource", "_graph", "_sheet", "_options", "id", "PublicKey", "random", "truncate", "update", "Event", "graph", "readonly", "bounds", "rows", "length", "columns", "_open", "log", "initialize", "on", "event", "reset", "_node", "getOrCreateNode", "createSheetName", "Obj", "getTypename", "open", "unsubscribe", "emit", "_ctx", "onDispose", "invariant", "hf", "clearSheet", "sheetId", "Object", "entries", "cells", "forEach", "key", "value", "addressFromIndex", "isFormula", "binding", "mapFunctionBindingFromId", "mapFormulaIndicesToRefs", "mapFormulaToNative", "setCellContents", "recalculate", "rebuildAndRecalculate", "insertRows", "i", "n", "idx", "insertIndices", "MAX_ROWS", "insertColumns", "MAX_COLS", "dropRow", "rowIndex", "values", "getCellValues", "flat", "index", "indexOf", "clear", "splice", "rowMeta", "axis", "axisIndex", "axisMeta", "dropColumn", "colIndex", "columnMeta", "restoreRow", "restoreColumn", "topLeft", "_iterRange", "addressToIndex", "cut", "copy", "paste", "isClipboardEmpty", "changes", "change", "ExportedCellChange", "address", "newValue", "undo", "isThereSomethingToUndo", "redo", "isThereSomethingToRedo", "getCellValue", "getCellText", "undefined", "getValue", "DetailedCellError", "warn", "error", "toString", "getValueDescription", "addr", "getCellValueDetailedType", "setValue", "ReadonlyException", "refresh", "mapFunctionBindingToId", "mapFormulaRefsToIndices", "setValues", "addressFromA1Notation", "cb", "rowRange", "max", "columnRange", "rowCells", "column", "push", "_deleteIndices", "indices", "Error", "_moveIndices", "j", "formula", "replace", "addressToA1Notation", "toLocalDate", "num", "year", "month", "day", "hours", "minutes", "seconds", "toDateTime", "numberToDateTime", "toDate", "numberToDate", "toTime", "numberToTime", "useEffect", "useState", "useSheetModel", "graph", "sheet", "readonly", "model", "setModel", "useState", "useEffect", "t", "setTimeout", "SheetModel", "open", "clearTimeout", "close", "SheetAction", "SHEET_ACTION", "SHEET_PLUGIN", "Create", "Schema", "TaggedClass", "input", "Struct", "name", "optional", "String", "output", "object", "SheetType", "Axis", "Union", "Literal", "InsertAxis", "model", "Any", "pipe", "filter", "SheetModel", "axis", "index", "Number", "count", "Void", "RestoreAxis", "axisIndex", "axisMeta", "RowColumnMeta", "values", "Array", "DropAxis", "deletionData", "addressFromA1Notation", "addressToA1Notation", "isFormula", "randomBytes", "Obj", "invariant", "MAX_ROWS", "MAX_COLS", "DEFAULT_ROWS", "DEFAULT_COLS", "ApiError", "Error", "ReadonlyException", "RangeException", "n", "createIndex", "length", "characters", "charactersLength", "randomBuffer", "randomBytes", "Array", "from", "byte", "join", "createIndices", "map", "insertIndices", "indices", "i", "max", "idx", "splice", "initialize", "sheet", "rows", "columns", "createSheet", "name", "cells", "size", "Obj", "make", "SheetType", "rowMeta", "columnMeta", "ranges", "Object", "entries", "forEach", "key", "value", "addressToIndex", "addressFromA1Notation", "isFormula", "mapFormulaRefsToIndices", "cell", "col", "row", "addressFromIndex", "column", "split", "indexOf", "rangeToIndex", "range", "to", "rangeFromIndex", "index", "compareIndexPositions", "indexA", "indexB", "rowA", "columnA", "rowB", "columnB", "formula", "invariant", "replace", "match", "mapFormulaIndicesToRefs", "addressToA1Notation"]
7
- }
@@ -1,236 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
-
3
- // src/extensions/compute.ts
4
- import { syntaxTree } from "@codemirror/language";
5
- import { RangeSetBuilder, StateEffect, StateField } from "@codemirror/state";
6
- import { Decoration, EditorView, ViewPlugin, WidgetType } from "@codemirror/view";
7
- import { debounce } from "@dxos/async";
8
- import { createSheetName } from "@dxos/compute";
9
- import { invariant } from "@dxos/invariant";
10
- import { documentId, singleValueFacet } from "@dxos/react-ui-editor";
11
- var updateAllDecorations = StateEffect.define();
12
- var computeGraphFacet = singleValueFacet();
13
-
14
- // src/extensions/editor/extension.ts
15
- import { acceptCompletion, autocompletion, completionStatus, startCompletion } from "@codemirror/autocomplete";
16
- import { HighlightStyle, syntaxHighlighting } from "@codemirror/language";
17
- import { ViewPlugin as ViewPlugin2, keymap } from "@codemirror/view";
18
- import { tags } from "@lezer/highlight";
19
- import { spreadsheet } from "codemirror-lang-spreadsheet";
20
- import { RANGE_NOTATION } from "@dxos/compute";
21
- import { singleValueFacet as singleValueFacet2 } from "@dxos/react-ui-editor";
22
- import { mx } from "@dxos/react-ui-theme";
23
- var highlightStyles = HighlightStyle.define([
24
- // Function.
25
- {
26
- tag: tags.name,
27
- class: "text-accentText"
28
- },
29
- // Range.
30
- {
31
- tag: tags.tagName,
32
- class: "text-pinkText"
33
- },
34
- // Values.
35
- {
36
- tag: tags.number,
37
- class: "text-tealText"
38
- },
39
- {
40
- tag: tags.bool,
41
- class: "text-tealText"
42
- },
43
- {
44
- tag: tags.string,
45
- class: "text-tealText"
46
- },
47
- // Error.
48
- {
49
- tag: tags.invalid,
50
- class: "text-unAccent"
51
- }
52
- ]);
53
- var languageFacet = singleValueFacet2();
54
- var sheetExtension = ({ debug, functions = [] }) => {
55
- const { extension, language } = spreadsheet({
56
- idiom: "en-US",
57
- decimalSeparator: "."
58
- });
59
- const createCompletion = (name) => {
60
- const { section = "Custom", description, syntax } = functions.find((value) => value.name === name) ?? {};
61
- return {
62
- section,
63
- label: name,
64
- info: () => {
65
- if (!description && !syntax) {
66
- return null;
67
- }
68
- const root = document.createElement("div");
69
- root.className = "flex flex-col gap-2 text-sm";
70
- const title = document.createElement("h2");
71
- title.innerText = name;
72
- title.className = "text-lg font-mono text-accentText";
73
- root.appendChild(title);
74
- if (description) {
75
- const info = document.createElement("p");
76
- info.innerText = description;
77
- info.className = "text-subdued";
78
- root.appendChild(info);
79
- }
80
- if (syntax) {
81
- const detail = document.createElement("pre");
82
- detail.innerText = syntax;
83
- detail.className = "whitespace-pre-wrap text-greenText";
84
- root.appendChild(detail);
85
- }
86
- return root;
87
- },
88
- apply: (view, completion, from, to) => {
89
- const insertParens = to === view.state.doc.toString().length;
90
- view.dispatch(view.state.update({
91
- changes: {
92
- from,
93
- to,
94
- insert: completion.label + (insertParens ? "()" : "")
95
- },
96
- selection: {
97
- anchor: from + completion.label.length + 1
98
- }
99
- }));
100
- }
101
- };
102
- };
103
- return [
104
- extension,
105
- languageFacet.of(language),
106
- language.data.of({
107
- autocomplete: (context) => {
108
- if (context.state.doc.toString()[0] !== "=") {
109
- return null;
110
- }
111
- const match = context.matchBefore(/\w*/);
112
- if (!match || match.from === match.to) {
113
- return null;
114
- }
115
- const text = match.text.toUpperCase();
116
- if (!context.explicit && match.text.length < 2) {
117
- return null;
118
- }
119
- return {
120
- from: match.from,
121
- options: functions?.filter(({ name }) => name.startsWith(text)).map(({ name }) => createCompletion(name)) ?? []
122
- };
123
- }
124
- }),
125
- syntaxHighlighting(highlightStyles),
126
- autocompletion({
127
- aboveCursor: false,
128
- defaultKeymap: true,
129
- activateOnTyping: true,
130
- closeOnBlur: !debug,
131
- icons: false,
132
- tooltipClass: () => mx("!-left-[1px] !top-[33px] !-m-0 border !border-t-0 [&>ul]:!min-w-[198px]", "[&>ul>li[aria-selected]]:!bg-accentSurface", "border-separator")
133
- }),
134
- keymap.of([
135
- {
136
- key: "Tab",
137
- run: (view) => {
138
- return completionStatus(view.state) === "active" ? acceptCompletion(view) : startCompletion(view);
139
- }
140
- }
141
- ])
142
- ];
143
- };
144
- var rangeExtension = ({ onInit, onStateChange }) => {
145
- let view;
146
- let activeRange;
147
- const notifier = {
148
- setRange: (range) => {
149
- if (activeRange) {
150
- view.dispatch(view.state.update({
151
- changes: {
152
- ...activeRange,
153
- insert: range.toString()
154
- },
155
- selection: {
156
- anchor: activeRange.from + range.length
157
- }
158
- }));
159
- }
160
- view.focus();
161
- }
162
- };
163
- return ViewPlugin2.fromClass(class {
164
- constructor(_view) {
165
- view = _view;
166
- onInit?.(notifier);
167
- }
168
- update(view2) {
169
- const { anchor } = view2.state.selection.ranges[0];
170
- activeRange = void 0;
171
- const language = view2.state.facet(languageFacet);
172
- const { topNode } = language.parser.parse(view2.state.doc.toString());
173
- visitTree(topNode, ({ type, from, to }) => {
174
- if (from <= anchor && to >= anchor) {
175
- switch (type.name) {
176
- case "Function":
177
- activeRange = {
178
- from: to,
179
- to
180
- };
181
- break;
182
- case "CloseParen":
183
- activeRange = {
184
- from,
185
- to: from
186
- };
187
- break;
188
- case "RangeToken":
189
- case "CellToken":
190
- activeRange = {
191
- from,
192
- to
193
- };
194
- return true;
195
- }
196
- }
197
- return false;
198
- });
199
- if (!activeRange && view2.state.doc.toString()[0] === "=") {
200
- const str = view2.state.doc.sliceString(1);
201
- if (RANGE_NOTATION.test(str)) {
202
- activeRange = {
203
- from: 1,
204
- to: str.length + 1
205
- };
206
- } else {
207
- activeRange = {
208
- from: str.length + 1,
209
- to: str.length + 1
210
- };
211
- }
212
- }
213
- onStateChange?.({
214
- activeRange: activeRange ? view2.state.doc.sliceString(activeRange.from, activeRange.to) : void 0
215
- });
216
- }
217
- });
218
- };
219
- var visitTree = (node, callback) => {
220
- if (callback(node)) {
221
- return true;
222
- }
223
- for (let child = node.firstChild; child !== null; child = child.nextSibling) {
224
- if (visitTree(child, callback)) {
225
- return true;
226
- }
227
- }
228
- return false;
229
- };
230
-
231
- export {
232
- computeGraphFacet,
233
- sheetExtension,
234
- rangeExtension
235
- };
236
- //# sourceMappingURL=chunk-Q6UYC4G5.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/extensions/compute.ts", "../../../src/extensions/editor/extension.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { syntaxTree } from '@codemirror/language';\nimport {\n type EditorState,\n type Extension,\n type RangeSet,\n RangeSetBuilder,\n StateEffect,\n StateField,\n type Transaction,\n} from '@codemirror/state';\nimport { Decoration, EditorView, ViewPlugin, WidgetType } from '@codemirror/view';\n\nimport { type CleanupFn, debounce } from '@dxos/async';\nimport {\n createSheetName,\n type CellAddress,\n type CellScalarValue,\n type ComputeGraph,\n type ComputeNode,\n} from '@dxos/compute';\nimport { invariant } from '@dxos/invariant';\nimport { documentId, singleValueFacet } from '@dxos/react-ui-editor';\n\nconst LANGUAGE_TAG = 'dx';\n\n// TODO(burdon): Create marker just for our decorator?\nconst updateAllDecorations = StateEffect.define<void>();\n\nexport const computeGraphFacet = singleValueFacet<ComputeGraph>();\n\nexport type ComputeOptions = {};\n\nexport const compute = (options: ComputeOptions = {}): Extension => {\n let computeNode: ComputeNode | undefined;\n\n const update = (state: EditorState, current?: RangeSet<Decoration>) => {\n const builder = new RangeSetBuilder<Decoration>();\n if (computeNode) {\n computeNode.clear();\n syntaxTree(state).iterate({\n enter: (node) => {\n switch (node.name) {\n case 'FencedCode': {\n const cursor = state.selection.main.head;\n if (state.readOnly || cursor < node.from || cursor > node.to) {\n const info = node.node.getChild('CodeInfo');\n if (info) {\n const type = state.sliceDoc(info.from, info.to);\n const text = node.node.getChild('CodeText');\n if (type === LANGUAGE_TAG && text) {\n const formula = state.sliceDoc(text.from, text.to);\n\n const iter = current?.iter(node.node.from);\n if (iter?.value && iter?.value.spec.formula === formula) {\n // Add existing widget.\n builder.add(node.from, node.to, iter.value);\n } else {\n // TODO(burdon): Create ordered list of cells on each decoration run.\n const cell: CellAddress = { col: node.node.from, row: 0 };\n invariant(computeNode);\n // NOTE: This triggers re-render (below).\n computeNode.setValue(cell, formula);\n const value = computeNode.getValue(cell);\n builder.add(\n node.from,\n node.to,\n Decoration.replace({\n widget: new ComputeWidget(formula, value),\n formula,\n }),\n );\n }\n }\n }\n }\n\n break;\n }\n }\n },\n });\n }\n\n return builder.finish();\n };\n\n return [\n ViewPlugin.fromClass(\n class {\n // Graph subscription.\n private _subscription?: CleanupFn;\n constructor(view: EditorView) {\n const id = view.state.facet(documentId);\n const computeGraph = view.state.facet(computeGraphFacet);\n if (id && computeGraph) {\n queueMicrotask(async () => {\n computeNode = computeGraph.getOrCreateNode(createSheetName({ type: '', id }));\n await computeNode.open();\n\n // Trigger re-render if values updated.\n // TODO(burdon): Trigger only if formula value updated (currently triggered during render).\n this._subscription = computeNode.update.on(\n debounce(({ type, ...rest }) => {\n if (type === 'valuesUpdated') {\n view.dispatch({\n effects: updateAllDecorations.of(),\n });\n }\n }, 250),\n );\n });\n }\n }\n\n destroy() {\n this._subscription?.();\n void computeNode?.close();\n computeNode = undefined;\n }\n },\n ),\n\n StateField.define<RangeSet<Decoration>>({\n create: (state) => update(state),\n update: (rangeSet: RangeSet<Decoration>, tr: Transaction) => update(tr.state, rangeSet),\n provide: (field) => EditorView.decorations.from(field),\n }),\n ];\n};\n\n// TODO(burdon): Click to edit.\nclass ComputeWidget extends WidgetType {\n constructor(\n private readonly formula: string,\n private readonly value: CellScalarValue,\n ) {\n super();\n }\n\n override toDOM(_view: EditorView): HTMLDivElement {\n const div = document.createElement('div');\n div.setAttribute('title', this.formula);\n div.innerText = String(this.value);\n return div;\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport {\n type Completion,\n type CompletionContext,\n type CompletionResult,\n acceptCompletion,\n autocompletion,\n completionStatus,\n startCompletion,\n} from '@codemirror/autocomplete';\nimport { HighlightStyle, type Language, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\nimport { type EditorView, ViewPlugin, type ViewUpdate, keymap } from '@codemirror/view';\nimport { type SyntaxNode } from '@lezer/common';\nimport { tags } from '@lezer/highlight';\nimport { spreadsheet } from 'codemirror-lang-spreadsheet';\n\nimport { type FunctionDefinition } from '@dxos/compute';\nimport { RANGE_NOTATION } from '@dxos/compute';\nimport { singleValueFacet } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\n/**\n * https://codemirror.net/examples/styling\n * https://lezer.codemirror.net/docs/ref/#highlight\n * https://github.com/luizzappa/codemirror-lang-spreadsheet/blob/main/src/index.ts#L28 (mapping)\n */\n// TODO(burdon): Define light/dark.\nconst highlightStyles = HighlightStyle.define([\n // Function.\n {\n tag: tags.name,\n class: 'text-accentText',\n },\n // Range.\n {\n tag: tags.tagName,\n class: 'text-pinkText',\n },\n // Values.\n {\n tag: tags.number,\n class: 'text-tealText',\n },\n {\n tag: tags.bool,\n class: 'text-tealText',\n },\n {\n tag: tags.string,\n class: 'text-tealText',\n },\n // Error.\n {\n tag: tags.invalid,\n class: 'text-unAccent',\n },\n]);\n\nconst languageFacet = singleValueFacet<Language>();\n\nexport type SheetExtensionOptions = {\n debug?: boolean;\n functions?: FunctionDefinition[];\n};\n\n/**\n * Spreadsheet formula extension and parser.\n * https://github.com/luizzappa/codemirror-lang-spreadsheet\n * https://github.com/luizzappa/codemirror-app-spreadsheet/blob/master/src/editor.ts\n * https://github.com/codemirror/lang-example\n * https://hyperformula.handsontable.com/guide/key-concepts.html#grammar\n */\nexport const sheetExtension = ({ debug, functions = [] }: SheetExtensionOptions): Extension => {\n const { extension, language } = spreadsheet({ idiom: 'en-US', decimalSeparator: '.' });\n\n const createCompletion = (name: string) => {\n const { section = 'Custom', description, syntax } = functions.find((value) => value.name === name) ?? {};\n\n return {\n section,\n label: name,\n info: () => {\n if (!description && !syntax) {\n return null;\n }\n\n // TODO(burdon): Standardize color styles.\n const root = document.createElement('div');\n root.className = 'flex flex-col gap-2 text-sm';\n\n const title = document.createElement('h2');\n title.innerText = name;\n title.className = 'text-lg font-mono text-accentText';\n root.appendChild(title);\n\n if (description) {\n const info = document.createElement('p');\n info.innerText = description;\n info.className = 'text-subdued';\n root.appendChild(info);\n }\n\n if (syntax) {\n const detail = document.createElement('pre');\n detail.innerText = syntax;\n detail.className = 'whitespace-pre-wrap text-greenText';\n root.appendChild(detail);\n }\n\n return root;\n },\n apply: (view, completion, from, to) => {\n const insertParens = to === view.state.doc.toString().length;\n view.dispatch(\n view.state.update({\n changes: {\n from,\n to,\n insert: completion.label + (insertParens ? '()' : ''),\n },\n selection: {\n anchor: from + completion.label.length + 1,\n },\n }),\n );\n },\n } satisfies Completion;\n };\n\n return [\n extension,\n languageFacet.of(language),\n language.data.of({\n autocomplete: (context: CompletionContext): CompletionResult | null => {\n if (context.state.doc.toString()[0] !== '=') {\n return null;\n }\n const match = context.matchBefore(/\\w*/);\n if (!match || match.from === match.to) {\n return null;\n }\n\n const text = match.text.toUpperCase();\n if (!context.explicit && match.text.length < 2) {\n return null;\n }\n\n return {\n from: match.from,\n options:\n functions?.filter(({ name }) => name.startsWith(text)).map(({ name }) => createCompletion(name)) ?? [],\n };\n },\n }),\n\n syntaxHighlighting(highlightStyles),\n autocompletion({\n aboveCursor: false,\n defaultKeymap: true,\n activateOnTyping: true,\n closeOnBlur: !debug,\n icons: false,\n tooltipClass: () =>\n mx(\n '!-left-[1px] !top-[33px] !-m-0 border !border-t-0 [&>ul]:!min-w-[198px]',\n '[&>ul>li[aria-selected]]:!bg-accentSurface',\n 'border-separator',\n ),\n }),\n keymap.of([\n {\n key: 'Tab',\n run: (view) => {\n return completionStatus(view.state) === 'active' ? acceptCompletion(view) : startCompletion(view);\n },\n },\n ]),\n\n // Parsing.\n // StateField.define({\n // create: (state) => {},\n // update: (value, tr) => {\n // log.info('update');\n // syntaxTree(tr.state).iterate({\n // enter: ({ type, from, to }) => {\n // log.info('node', { type: type.name, from, to });\n // },\n // });\n // },\n // }),\n ];\n};\n\nexport type SelectionRange = { from: number; to: number };\n\nexport interface RangeController {\n setRange(range: string): void;\n}\n\nexport type RangeExtensionOptions = {\n /**\n * Provides controller callback when extension is initialized.\n */\n onInit?: (controller: RangeController) => void;\n /**\n * Called when the active range changes.\n * @param state The current state.\n * @param state.activeRange undefined if no range is active, otherwise a possibly partially defined range.\n */\n onStateChange?: (state: { activeRange: string | undefined }) => void;\n};\n\n/**\n * Tracks the currently active cell within a formula and provides a callback to modify it.\n */\nexport const rangeExtension = ({ onInit, onStateChange }: RangeExtensionOptions): Extension => {\n let view: EditorView;\n let activeRange: SelectionRange | undefined;\n\n // Called externally to provide current range.\n const notifier: RangeController = {\n setRange: (range: string) => {\n if (activeRange) {\n view.dispatch(\n view.state.update({\n changes: { ...activeRange, insert: range.toString() },\n selection: { anchor: activeRange.from + range.length },\n }),\n );\n }\n\n view.focus();\n },\n };\n\n return ViewPlugin.fromClass(\n class {\n constructor(_view: EditorView) {\n view = _view;\n onInit?.(notifier);\n }\n\n update(view: ViewUpdate) {\n const { anchor } = view.state.selection.ranges[0];\n\n // Find first Range or cell at cursor.\n activeRange = undefined;\n const language = view.state.facet(languageFacet);\n const { topNode } = language.parser.parse(view.state.doc.toString());\n visitTree(topNode, ({ type, from, to }) => {\n if (from <= anchor && to >= anchor) {\n switch (type.name) {\n case 'Function':\n // Mark but keep looking.\n activeRange = { from: to, to };\n break;\n\n case 'CloseParen':\n // Mark but keep looking.\n activeRange = { from, to: from };\n break;\n\n case 'RangeToken':\n case 'CellToken':\n activeRange = { from, to };\n return true;\n }\n }\n\n return false;\n });\n\n // Allow start of formula.\n if (!activeRange && view.state.doc.toString()[0] === '=') {\n const str = view.state.doc.sliceString(1);\n if (RANGE_NOTATION.test(str)) {\n activeRange = { from: 1, to: str.length + 1 };\n } else {\n activeRange = { from: str.length + 1, to: str.length + 1 };\n }\n }\n\n onStateChange?.({\n activeRange: activeRange ? view.state.doc.sliceString(activeRange.from, activeRange.to) : undefined,\n });\n }\n },\n );\n};\n\n/**\n * Lezer parse result visitor.\n */\nconst visitTree = (node: SyntaxNode, callback: (node: SyntaxNode) => boolean): boolean => {\n if (callback(node)) {\n return true;\n }\n\n for (let child = node.firstChild; child !== null; child = child.nextSibling) {\n if (visitTree(child, callback)) {\n return true;\n }\n }\n\n return false;\n};\n"],
5
- "mappings": "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",
6
- "names": ["syntaxTree", "RangeSetBuilder", "StateEffect", "StateField", "Decoration", "EditorView", "ViewPlugin", "WidgetType", "debounce", "createSheetName", "invariant", "documentId", "singleValueFacet", "updateAllDecorations", "StateEffect", "define", "computeGraphFacet", "singleValueFacet", "acceptCompletion", "autocompletion", "completionStatus", "startCompletion", "HighlightStyle", "syntaxHighlighting", "ViewPlugin", "keymap", "tags", "spreadsheet", "RANGE_NOTATION", "singleValueFacet", "mx", "highlightStyles", "HighlightStyle", "define", "tag", "tags", "name", "class", "tagName", "number", "bool", "string", "invalid", "languageFacet", "singleValueFacet", "sheetExtension", "debug", "functions", "extension", "language", "spreadsheet", "idiom", "decimalSeparator", "createCompletion", "section", "description", "syntax", "find", "value", "label", "info", "root", "document", "createElement", "className", "title", "innerText", "appendChild", "detail", "apply", "view", "completion", "from", "to", "insertParens", "state", "doc", "toString", "length", "dispatch", "update", "changes", "insert", "selection", "anchor", "of", "data", "autocomplete", "context", "match", "matchBefore", "text", "toUpperCase", "explicit", "options", "filter", "startsWith", "map", "syntaxHighlighting", "autocompletion", "aboveCursor", "defaultKeymap", "activateOnTyping", "closeOnBlur", "icons", "tooltipClass", "mx", "keymap", "key", "run", "completionStatus", "acceptCompletion", "startCompletion", "rangeExtension", "onInit", "onStateChange", "activeRange", "notifier", "setRange", "range", "focus", "ViewPlugin", "fromClass", "_view", "ranges", "undefined", "facet", "topNode", "parser", "parse", "visitTree", "type", "str", "sliceString", "RANGE_NOTATION", "test", "node", "callback", "child", "firstChild", "nextSibling"]
7
- }