@dxos/plugin-sheet 0.6.12-main.5cc132e → 0.6.12-main.7907542

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 (273) hide show
  1. package/dist/lib/browser/SheetContainer-T2QWJOFD.mjs +262 -0
  2. package/dist/lib/browser/SheetContainer-T2QWJOFD.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-WUPTZUTX.mjs → chunk-5ZMVZYGB.mjs} +21 -19
  4. package/dist/lib/browser/chunk-5ZMVZYGB.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-GNNVBNCX.mjs → chunk-GSV5QNLD.mjs} +409 -686
  6. package/dist/lib/browser/chunk-GSV5QNLD.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-JRL5LGCE.mjs → chunk-QILRZNE5.mjs} +2 -5
  8. package/dist/lib/browser/chunk-QILRZNE5.mjs.map +7 -0
  9. package/dist/lib/browser/{SheetContainer-Y7ZMFBAP.mjs → chunk-ZL2V5UJR.mjs} +982 -508
  10. package/dist/lib/browser/chunk-ZL2V5UJR.mjs.map +7 -0
  11. package/dist/lib/browser/graph-M4IQ76QX.mjs +33 -0
  12. package/dist/lib/browser/graph-M4IQ76QX.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +86 -59
  14. package/dist/lib/browser/index.mjs.map +4 -4
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/meta.mjs +1 -1
  17. package/dist/lib/browser/types.mjs +4 -6
  18. package/dist/lib/node/SheetContainer-PV5ET4UJ.cjs +280 -0
  19. package/dist/lib/node/SheetContainer-PV5ET4UJ.cjs.map +7 -0
  20. package/dist/lib/node/{SheetContainer-KEOKUKAQ.cjs → chunk-2K53Z2TU.cjs} +1036 -558
  21. package/dist/lib/node/chunk-2K53Z2TU.cjs.map +7 -0
  22. package/dist/lib/node/{chunk-ZRQZFV5T.cjs → chunk-5XPK2V4A.cjs} +418 -691
  23. package/dist/lib/node/chunk-5XPK2V4A.cjs.map +7 -0
  24. package/dist/lib/node/{chunk-BJ6ZD7MN.cjs → chunk-BNARJ5GM.cjs} +5 -18
  25. package/dist/lib/node/chunk-BNARJ5GM.cjs.map +7 -0
  26. package/dist/lib/node/{chunk-VJU3NPUJ.cjs → chunk-STAVQ2JE.cjs} +25 -24
  27. package/dist/lib/node/chunk-STAVQ2JE.cjs.map +7 -0
  28. package/dist/lib/node/graph-Q3N2X26H.cjs +55 -0
  29. package/dist/lib/node/graph-Q3N2X26H.cjs.map +7 -0
  30. package/dist/lib/node/index.cjs +98 -66
  31. package/dist/lib/node/index.cjs.map +4 -4
  32. package/dist/lib/node/meta.cjs +3 -3
  33. package/dist/lib/node/meta.cjs.map +1 -1
  34. package/dist/lib/node/meta.json +1 -1
  35. package/dist/lib/node/types.cjs +10 -12
  36. package/dist/lib/node/types.cjs.map +2 -2
  37. package/dist/lib/node-esm/SheetContainer-FOZD2WLT.mjs +263 -0
  38. package/dist/lib/node-esm/SheetContainer-FOZD2WLT.mjs.map +7 -0
  39. package/dist/lib/node-esm/{chunk-WUPTZUTX.mjs → chunk-2HAM45RC.mjs} +22 -19
  40. package/dist/lib/node-esm/chunk-2HAM45RC.mjs.map +7 -0
  41. package/dist/lib/node-esm/{chunk-GNNVBNCX.mjs → chunk-5WPZCXNS.mjs} +411 -686
  42. package/dist/lib/node-esm/chunk-5WPZCXNS.mjs.map +7 -0
  43. package/dist/lib/node-esm/{chunk-JRL5LGCE.mjs → chunk-IU2L277A.mjs} +4 -5
  44. package/dist/lib/node-esm/chunk-IU2L277A.mjs.map +7 -0
  45. package/dist/lib/node-esm/{SheetContainer-Y7ZMFBAP.mjs → chunk-QEUCIHIN.mjs} +983 -508
  46. package/dist/lib/node-esm/chunk-QEUCIHIN.mjs.map +7 -0
  47. package/dist/lib/node-esm/graph-SMPUMOV2.mjs +34 -0
  48. package/dist/lib/node-esm/graph-SMPUMOV2.mjs.map +7 -0
  49. package/dist/lib/node-esm/index.mjs +87 -59
  50. package/dist/lib/node-esm/index.mjs.map +4 -4
  51. package/dist/lib/node-esm/meta.json +1 -1
  52. package/dist/lib/node-esm/meta.mjs +2 -1
  53. package/dist/lib/node-esm/types.mjs +5 -6
  54. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  55. package/dist/types/src/components/CellEditor/CellEditor.d.ts +23 -3
  56. package/dist/types/src/components/CellEditor/CellEditor.d.ts.map +1 -1
  57. package/dist/types/src/components/CellEditor/CellEditor.stories.d.ts +2 -2
  58. package/dist/types/src/components/CellEditor/CellEditor.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/CellEditor/extension.d.ts +1 -1
  60. package/dist/types/src/components/CellEditor/extension.d.ts.map +1 -1
  61. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts +11 -0
  62. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -0
  63. package/dist/types/src/components/ComputeGraph/index.d.ts +1 -3
  64. package/dist/types/src/components/ComputeGraph/index.d.ts.map +1 -1
  65. package/dist/types/src/components/GridSheet/GridSheet.d.ts +10 -0
  66. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -0
  67. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +9 -0
  68. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -0
  69. package/dist/types/src/components/GridSheet/util.d.ts +16 -0
  70. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -0
  71. package/dist/types/src/components/Sheet/Sheet.d.ts +1 -1
  72. package/dist/types/src/components/Sheet/Sheet.d.ts.map +1 -1
  73. package/dist/types/src/components/Sheet/Sheet.stories.d.ts +5 -6
  74. package/dist/types/src/components/Sheet/Sheet.stories.d.ts.map +1 -1
  75. package/dist/types/src/components/Sheet/grid.d.ts +2 -2
  76. package/dist/types/src/components/Sheet/grid.d.ts.map +1 -1
  77. package/dist/types/src/components/Sheet/nav.d.ts +3 -3
  78. package/dist/types/src/components/Sheet/nav.d.ts.map +1 -1
  79. package/dist/types/src/components/Sheet/sheet-context.d.ts +6 -7
  80. package/dist/types/src/components/Sheet/sheet-context.d.ts.map +1 -1
  81. package/dist/types/src/components/Sheet/threads.d.ts.map +1 -1
  82. package/dist/types/src/components/SheetContainer.d.ts +1 -1
  83. package/dist/types/src/components/SheetContainer.d.ts.map +1 -1
  84. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
  85. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +1 -1
  86. package/dist/types/src/components/index.d.ts +2 -1
  87. package/dist/types/src/components/index.d.ts.map +1 -1
  88. package/dist/types/src/defs/index.d.ts +3 -0
  89. package/dist/types/src/defs/index.d.ts.map +1 -0
  90. package/dist/types/src/{model → defs}/types.d.ts +8 -3
  91. package/dist/types/src/defs/types.d.ts.map +1 -0
  92. package/dist/types/src/defs/types.test.d.ts.map +1 -0
  93. package/dist/types/src/{model → defs}/util.d.ts +8 -4
  94. package/dist/types/src/defs/util.d.ts.map +1 -0
  95. package/dist/types/src/extensions/compute.d.ts +6 -0
  96. package/dist/types/src/extensions/compute.d.ts.map +1 -0
  97. package/dist/types/src/extensions/compute.stories.d.ts +26 -0
  98. package/dist/types/src/extensions/compute.stories.d.ts.map +1 -0
  99. package/dist/types/src/extensions/index.d.ts +2 -0
  100. package/dist/types/src/extensions/index.d.ts.map +1 -0
  101. package/dist/types/src/graph/compute-graph-registry.d.ts +34 -0
  102. package/dist/types/src/graph/compute-graph-registry.d.ts.map +1 -0
  103. package/dist/types/src/graph/compute-graph.d.ts +64 -0
  104. package/dist/types/src/graph/compute-graph.d.ts.map +1 -0
  105. package/dist/types/src/graph/compute-graph.stories.d.ts +10 -0
  106. package/dist/types/src/graph/compute-graph.stories.d.ts.map +1 -0
  107. package/dist/types/src/graph/compute-graph.test.d.ts +2 -0
  108. package/dist/types/src/graph/compute-graph.test.d.ts.map +1 -0
  109. package/dist/types/src/graph/compute-node.d.ts +26 -0
  110. package/dist/types/src/graph/compute-node.d.ts.map +1 -0
  111. package/dist/types/src/{components/ComputeGraph → graph/functions}/async-function.d.ts +14 -5
  112. package/dist/types/src/graph/functions/async-function.d.ts.map +1 -0
  113. package/dist/types/src/graph/functions/edge-function.d.ts +21 -0
  114. package/dist/types/src/graph/functions/edge-function.d.ts.map +1 -0
  115. package/dist/types/src/{model/functions.d.ts → graph/functions/function-defs.d.ts} +1 -1
  116. package/dist/types/src/graph/functions/function-defs.d.ts.map +1 -0
  117. package/dist/types/src/graph/functions/index.d.ts +4 -0
  118. package/dist/types/src/graph/functions/index.d.ts.map +1 -0
  119. package/dist/types/src/graph/hyperformula.test.d.ts +2 -0
  120. package/dist/types/src/graph/hyperformula.test.d.ts.map +1 -0
  121. package/dist/types/src/graph/index.d.ts +5 -0
  122. package/dist/types/src/graph/index.d.ts.map +1 -0
  123. package/dist/types/src/graph/testing/index.d.ts +3 -0
  124. package/dist/types/src/graph/testing/index.d.ts.map +1 -0
  125. package/dist/types/src/graph/testing/test-builder.d.ts +15 -0
  126. package/dist/types/src/graph/testing/test-builder.d.ts.map +1 -0
  127. package/dist/types/src/graph/testing/test-plugin.d.ts +36 -0
  128. package/dist/types/src/graph/testing/test-plugin.d.ts.map +1 -0
  129. package/dist/types/src/graph/util.d.ts +2 -0
  130. package/dist/types/src/graph/util.d.ts.map +1 -0
  131. package/dist/types/src/hooks/hooks.stories.d.ts +11 -0
  132. package/dist/types/src/hooks/hooks.stories.d.ts.map +1 -0
  133. package/dist/types/src/hooks/index.d.ts +4 -0
  134. package/dist/types/src/hooks/index.d.ts.map +1 -0
  135. package/dist/types/src/hooks/useComputeGraph.d.ts +7 -0
  136. package/dist/types/src/hooks/useComputeGraph.d.ts.map +1 -0
  137. package/dist/types/src/hooks/useFormattingModel.d.ts +3 -0
  138. package/dist/types/src/hooks/useFormattingModel.d.ts.map +1 -0
  139. package/dist/types/src/hooks/useSheetModel.d.ts +8 -0
  140. package/dist/types/src/hooks/useSheetModel.d.ts.map +1 -0
  141. package/dist/types/src/meta.d.ts +1 -4
  142. package/dist/types/src/meta.d.ts.map +1 -1
  143. package/dist/types/src/model/formatting-model.d.ts +16 -0
  144. package/dist/types/src/model/formatting-model.d.ts.map +1 -0
  145. package/dist/types/src/model/index.d.ts +2 -4
  146. package/dist/types/src/model/index.d.ts.map +1 -1
  147. package/dist/types/src/model/{model.d.ts → sheet-model.d.ts} +10 -49
  148. package/dist/types/src/model/sheet-model.d.ts.map +1 -0
  149. package/dist/types/src/model/sheet-model.test.d.ts +2 -0
  150. package/dist/types/src/model/sheet-model.test.d.ts.map +1 -0
  151. package/dist/types/src/sanity.test.d.ts +2 -0
  152. package/dist/types/src/sanity.test.d.ts.map +1 -0
  153. package/dist/types/src/testing/index.d.ts +2 -0
  154. package/dist/types/src/testing/index.d.ts.map +1 -0
  155. package/dist/types/src/testing/testing.d.ts +8 -0
  156. package/dist/types/src/testing/testing.d.ts.map +1 -0
  157. package/dist/types/src/types.d.ts +15 -4
  158. package/dist/types/src/types.d.ts.map +1 -1
  159. package/dist/vendor/hyperformula.mjs +37145 -0
  160. package/package.json +48 -44
  161. package/src/SheetPlugin.tsx +46 -62
  162. package/src/components/CellEditor/CellEditor.stories.tsx +6 -6
  163. package/src/components/CellEditor/CellEditor.tsx +59 -9
  164. package/src/components/CellEditor/extension.test.ts +3 -4
  165. package/src/components/CellEditor/extension.ts +5 -6
  166. package/src/components/ComputeGraph/ComputeGraphContextProvider.tsx +20 -0
  167. package/src/components/ComputeGraph/index.ts +1 -3
  168. package/src/components/GridSheet/GridSheet.stories.tsx +36 -0
  169. package/src/components/GridSheet/GridSheet.tsx +171 -0
  170. package/src/components/GridSheet/util.ts +148 -0
  171. package/src/components/Sheet/Sheet.stories.tsx +48 -88
  172. package/src/components/Sheet/Sheet.tsx +42 -24
  173. package/src/components/Sheet/grid.ts +3 -3
  174. package/src/components/Sheet/nav.ts +19 -19
  175. package/src/components/Sheet/sheet-context.tsx +12 -82
  176. package/src/components/Sheet/threads.tsx +10 -6
  177. package/src/components/SheetContainer.tsx +13 -15
  178. package/src/components/Toolbar/Toolbar.tsx +1 -2
  179. package/src/components/index.ts +1 -0
  180. package/src/defs/index.ts +6 -0
  181. package/src/{model → defs}/types.test.ts +7 -7
  182. package/src/{model → defs}/types.ts +24 -14
  183. package/src/{model → defs}/util.ts +65 -17
  184. package/src/extensions/compute.stories.tsx +151 -0
  185. package/src/extensions/compute.ts +147 -0
  186. package/src/extensions/index.ts +5 -0
  187. package/src/graph/compute-graph-registry.ts +90 -0
  188. package/src/graph/compute-graph.stories.tsx +93 -0
  189. package/src/graph/compute-graph.test.ts +87 -0
  190. package/src/graph/compute-graph.ts +242 -0
  191. package/src/graph/compute-node.ts +63 -0
  192. package/src/{components/ComputeGraph → graph/functions}/async-function.ts +25 -15
  193. package/src/{components/ComputeGraph → graph/functions}/edge-function.ts +16 -14
  194. package/src/graph/functions/index.ts +7 -0
  195. package/src/graph/hyperformula.test.ts +14 -0
  196. package/src/graph/index.ts +8 -0
  197. package/src/graph/testing/index.ts +6 -0
  198. package/src/graph/testing/test-builder.ts +54 -0
  199. package/src/{components/ComputeGraph/custom.ts → graph/testing/test-plugin.ts} +44 -14
  200. package/src/graph/util.ts +8 -0
  201. package/src/hooks/hooks.stories.tsx +50 -0
  202. package/src/hooks/index.ts +7 -0
  203. package/src/hooks/useComputeGraph.ts +28 -0
  204. package/src/hooks/useFormattingModel.ts +11 -0
  205. package/src/hooks/useSheetModel.ts +40 -0
  206. package/src/meta.tsx +1 -5
  207. package/src/{components/Sheet/formatting.ts → model/formatting-model.ts} +20 -13
  208. package/src/model/index.ts +2 -4
  209. package/src/model/sheet-model.test.ts +57 -0
  210. package/src/model/{model.ts → sheet-model.ts} +88 -188
  211. package/src/sanity.test.ts +40 -0
  212. package/src/testing/index.ts +5 -0
  213. package/src/testing/testing.tsx +68 -0
  214. package/src/types.ts +19 -17
  215. package/dist/lib/browser/SheetContainer-Y7ZMFBAP.mjs.map +0 -7
  216. package/dist/lib/browser/chunk-GNNVBNCX.mjs.map +0 -7
  217. package/dist/lib/browser/chunk-JRL5LGCE.mjs.map +0 -7
  218. package/dist/lib/browser/chunk-PGKZPKUD.mjs +0 -175
  219. package/dist/lib/browser/chunk-PGKZPKUD.mjs.map +0 -7
  220. package/dist/lib/browser/chunk-VBF7YENS.mjs +0 -8
  221. package/dist/lib/browser/chunk-VBF7YENS.mjs.map +0 -7
  222. package/dist/lib/browser/chunk-WUPTZUTX.mjs.map +0 -7
  223. package/dist/lib/browser/testing.mjs +0 -92
  224. package/dist/lib/browser/testing.mjs.map +0 -7
  225. package/dist/lib/node/SheetContainer-KEOKUKAQ.cjs.map +0 -7
  226. package/dist/lib/node/chunk-57PB2HPY.cjs +0 -40
  227. package/dist/lib/node/chunk-57PB2HPY.cjs.map +0 -7
  228. package/dist/lib/node/chunk-6LWBQAQZ.cjs +0 -202
  229. package/dist/lib/node/chunk-6LWBQAQZ.cjs.map +0 -7
  230. package/dist/lib/node/chunk-BJ6ZD7MN.cjs.map +0 -7
  231. package/dist/lib/node/chunk-VJU3NPUJ.cjs.map +0 -7
  232. package/dist/lib/node/chunk-ZRQZFV5T.cjs.map +0 -7
  233. package/dist/lib/node/testing.cjs +0 -111
  234. package/dist/lib/node/testing.cjs.map +0 -7
  235. package/dist/lib/node-esm/SheetContainer-Y7ZMFBAP.mjs.map +0 -7
  236. package/dist/lib/node-esm/chunk-GNNVBNCX.mjs.map +0 -7
  237. package/dist/lib/node-esm/chunk-JRL5LGCE.mjs.map +0 -7
  238. package/dist/lib/node-esm/chunk-PGKZPKUD.mjs +0 -175
  239. package/dist/lib/node-esm/chunk-PGKZPKUD.mjs.map +0 -7
  240. package/dist/lib/node-esm/chunk-VBF7YENS.mjs +0 -8
  241. package/dist/lib/node-esm/chunk-VBF7YENS.mjs.map +0 -7
  242. package/dist/lib/node-esm/chunk-WUPTZUTX.mjs.map +0 -7
  243. package/dist/lib/node-esm/testing.mjs +0 -92
  244. package/dist/lib/node-esm/testing.mjs.map +0 -7
  245. package/dist/types/src/components/ComputeGraph/async-function.d.ts.map +0 -1
  246. package/dist/types/src/components/ComputeGraph/custom.d.ts +0 -21
  247. package/dist/types/src/components/ComputeGraph/custom.d.ts.map +0 -1
  248. package/dist/types/src/components/ComputeGraph/edge-function.d.ts +0 -20
  249. package/dist/types/src/components/ComputeGraph/edge-function.d.ts.map +0 -1
  250. package/dist/types/src/components/ComputeGraph/graph-context.d.ts +0 -12
  251. package/dist/types/src/components/ComputeGraph/graph-context.d.ts.map +0 -1
  252. package/dist/types/src/components/ComputeGraph/graph.browser.test.d.ts +0 -2
  253. package/dist/types/src/components/ComputeGraph/graph.browser.test.d.ts.map +0 -1
  254. package/dist/types/src/components/ComputeGraph/graph.d.ts +0 -26
  255. package/dist/types/src/components/ComputeGraph/graph.d.ts.map +0 -1
  256. package/dist/types/src/components/Sheet/formatting.d.ts +0 -14
  257. package/dist/types/src/components/Sheet/formatting.d.ts.map +0 -1
  258. package/dist/types/src/model/functions.d.ts.map +0 -1
  259. package/dist/types/src/model/model.browser.test.d.ts +0 -2
  260. package/dist/types/src/model/model.browser.test.d.ts.map +0 -1
  261. package/dist/types/src/model/model.d.ts.map +0 -1
  262. package/dist/types/src/model/types.d.ts.map +0 -1
  263. package/dist/types/src/model/types.test.d.ts.map +0 -1
  264. package/dist/types/src/model/util.d.ts.map +0 -1
  265. package/dist/types/src/testing.d.ts +0 -9
  266. package/dist/types/src/testing.d.ts.map +0 -1
  267. package/src/components/ComputeGraph/graph-context.tsx +0 -50
  268. package/src/components/ComputeGraph/graph.browser.test.ts +0 -49
  269. package/src/components/ComputeGraph/graph.ts +0 -62
  270. package/src/model/model.browser.test.ts +0 -99
  271. package/src/testing.ts +0 -50
  272. /package/dist/types/src/{model → defs}/types.test.d.ts +0 -0
  273. /package/src/{model/functions.ts → graph/functions/function-defs.ts} +0 -0
package/package.json CHANGED
@@ -1,11 +1,17 @@
1
1
  {
2
2
  "name": "@dxos/plugin-sheet",
3
- "version": "0.6.12-main.5cc132e",
3
+ "version": "0.6.12-main.7907542",
4
4
  "description": "Braneframe sketch plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
7
7
  "license": "MIT",
8
8
  "author": "DXOS.org",
9
+ "imports": {
10
+ "#hyperformula": {
11
+ "types": "hyperformula",
12
+ "default": "./dist/vendor/hyperformula.mjs"
13
+ }
14
+ },
9
15
  "exports": {
10
16
  ".": {
11
17
  "browser": "./dist/lib/browser/index.mjs",
@@ -23,13 +29,6 @@
23
29
  },
24
30
  "types": "./dist/types/src/meta.d.ts"
25
31
  },
26
- "./testing": {
27
- "browser": "./dist/lib/browser/testing.mjs",
28
- "node": {
29
- "default": "./dist/lib/node/testing.cjs"
30
- },
31
- "types": "./dist/types/src/testing.d.ts"
32
- },
33
32
  "./types": {
34
33
  "browser": "./dist/lib/browser/types.mjs",
35
34
  "node": {
@@ -58,16 +57,17 @@
58
57
  "src"
59
58
  ],
60
59
  "dependencies": {
61
- "@codemirror/autocomplete": "^6.18.0",
62
- "@codemirror/language": "^6.10.2",
60
+ "@codemirror/autocomplete": "^6.18.1",
61
+ "@codemirror/language": "^6.10.3",
63
62
  "@codemirror/state": "^6.4.1",
64
- "@codemirror/view": "^6.29.1",
63
+ "@codemirror/view": "^6.34.1",
65
64
  "@dnd-kit/core": "^6.0.5",
66
65
  "@dnd-kit/modifiers": "^6.0.0",
67
66
  "@dnd-kit/sortable": "^7.0.1",
68
67
  "@dnd-kit/utilities": "^3.2.0",
69
- "@lezer/common": "^1.2.1",
70
- "@lezer/highlight": "^1.2.0",
68
+ "@effect/schema": "^0.75.1",
69
+ "@lezer/common": "^1.2.2",
70
+ "@lezer/highlight": "^1.2.1",
71
71
  "@lezer/lezer": "^1.1.2",
72
72
  "@lezer/lr": "^1.4.2",
73
73
  "@preact/signals-core": "^1.6.0",
@@ -79,26 +79,29 @@
79
79
  "re-resizable": "^6.9.17",
80
80
  "react-markdown": "^8.0.5",
81
81
  "react-resize-detector": "^11.0.1",
82
- "@dxos/app-framework": "0.6.12-main.5cc132e",
83
- "@dxos/async": "0.6.12-main.5cc132e",
84
- "@dxos/client": "0.6.12-main.5cc132e",
85
- "@dxos/crypto": "0.6.12-main.5cc132e",
86
- "@dxos/context": "0.6.12-main.5cc132e",
87
- "@dxos/echo-schema": "0.6.12-main.5cc132e",
88
- "@dxos/debug": "0.6.12-main.5cc132e",
89
- "@dxos/invariant": "0.6.12-main.5cc132e",
90
- "@dxos/keys": "0.6.12-main.5cc132e",
91
- "@dxos/log": "0.6.12-main.5cc132e",
92
- "@dxos/plugin-attention": "0.6.12-main.5cc132e",
93
- "@dxos/plugin-client": "0.6.12-main.5cc132e",
94
- "@dxos/plugin-graph": "0.6.12-main.5cc132e",
95
- "@dxos/plugin-script": "0.6.12-main.5cc132e",
96
- "@dxos/plugin-space": "0.6.12-main.5cc132e",
97
- "@dxos/react-client": "0.6.12-main.5cc132e",
98
- "@dxos/react-ui-attention": "0.6.12-main.5cc132e",
99
- "@dxos/plugin-stack": "0.6.12-main.5cc132e",
100
- "@dxos/react-ui-editor": "0.6.12-main.5cc132e",
101
- "@dxos/util": "0.6.12-main.5cc132e"
82
+ "@dxos/app-framework": "0.6.12-main.7907542",
83
+ "@dxos/async": "0.6.12-main.7907542",
84
+ "@dxos/crypto": "0.6.12-main.7907542",
85
+ "@dxos/client": "0.6.12-main.7907542",
86
+ "@dxos/debug": "0.6.12-main.7907542",
87
+ "@dxos/context": "0.6.12-main.7907542",
88
+ "@dxos/echo-schema": "0.6.12-main.7907542",
89
+ "@dxos/invariant": "0.6.12-main.7907542",
90
+ "@dxos/log": "0.6.12-main.7907542",
91
+ "@dxos/plugin-attention": "0.6.12-main.7907542",
92
+ "@dxos/keys": "0.6.12-main.7907542",
93
+ "@dxos/plugin-client": "0.6.12-main.7907542",
94
+ "@dxos/plugin-markdown": "0.6.12-main.7907542",
95
+ "@dxos/plugin-graph": "0.6.12-main.7907542",
96
+ "@dxos/plugin-script": "0.6.12-main.7907542",
97
+ "@dxos/plugin-space": "0.6.12-main.7907542",
98
+ "@dxos/react-client": "0.6.12-main.7907542",
99
+ "@dxos/react-hooks": "0.6.12-main.7907542",
100
+ "@dxos/react-ui-editor": "0.6.12-main.7907542",
101
+ "@dxos/plugin-stack": "0.6.12-main.7907542",
102
+ "@dxos/react-ui-attention": "0.6.12-main.7907542",
103
+ "@dxos/react-ui-grid": "0.6.12-main.7907542",
104
+ "@dxos/util": "0.6.12-main.7907542"
102
105
  },
103
106
  "devDependencies": {
104
107
  "@lezer/generator": "^1.7.1",
@@ -111,19 +114,20 @@
111
114
  "react": "~18.2.0",
112
115
  "react-dom": "~18.2.0",
113
116
  "vite": "5.4.7",
114
- "@dxos/echo-generator": "0.6.12-main.5cc132e",
115
- "@dxos/random": "0.6.12-main.5cc132e",
116
- "@dxos/react-ui": "0.6.12-main.5cc132e",
117
- "@dxos/react-ui-types": "0.6.12-main.5cc132e",
118
- "@dxos/react-ui-theme": "0.6.12-main.5cc132e",
119
- "@dxos/storybook-utils": "0.6.12-main.5cc132e"
117
+ "@dxos/echo-generator": "0.6.12-main.7907542",
118
+ "@dxos/react-ui-syntax-highlighter": "0.6.12-main.7907542",
119
+ "@dxos/react-ui": "0.6.12-main.7907542",
120
+ "@dxos/random": "0.6.12-main.7907542",
121
+ "@dxos/react-ui-types": "0.6.12-main.7907542",
122
+ "@dxos/react-ui-theme": "0.6.12-main.7907542",
123
+ "@dxos/storybook-utils": "0.6.12-main.7907542"
120
124
  },
121
- "optionalDependencies": {
125
+ "peerDependencies": {
122
126
  "@phosphor-icons/react": "^2.1.5",
123
- "react": "^18.0.0",
124
- "react-dom": "^18.0.0",
125
- "@dxos/react-ui": "0.6.12-main.5cc132e",
126
- "@dxos/react-ui-theme": "0.6.12-main.5cc132e"
127
+ "react": "~18.2.0",
128
+ "react-dom": "~18.2.0",
129
+ "@dxos/react-ui": "0.6.12-main.7907542",
130
+ "@dxos/react-ui-theme": "0.6.12-main.7907542"
127
131
  },
128
132
  "publishConfig": {
129
133
  "access": "public"
@@ -2,78 +2,71 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { type IconProps, GridNine } from '@phosphor-icons/react';
5
+ import { GridNine } from '@phosphor-icons/react';
6
6
  import React from 'react';
7
7
 
8
8
  import { NavigationAction, parseIntentPlugin, resolvePlugin, type PluginDefinition } from '@dxos/app-framework';
9
- import { create } from '@dxos/echo-schema';
9
+ import { invariant } from '@dxos/invariant';
10
10
  import { parseClientPlugin } from '@dxos/plugin-client';
11
- import { type ActionGroup, createExtension, isActionGroup } from '@dxos/plugin-graph';
11
+ import { createExtension, isActionGroup, type ActionGroup } from '@dxos/plugin-graph';
12
12
  import { FunctionType } from '@dxos/plugin-script/types';
13
13
  import { SpaceAction } from '@dxos/plugin-space';
14
14
  import { getSpace, isEchoObject } from '@dxos/react-client/echo';
15
15
 
16
- import {
17
- createComputeGraph,
18
- CustomPlugin,
19
- CustomPluginTranslations,
20
- SheetContainer,
21
- type ComputeGraph,
22
- } from './components';
23
- // TODO(wittjosiah): Refactor. These are not exported from ./components due to depending on ECHO.
24
- import { EdgeFunctionPlugin, EdgeFunctionPluginTranslations } from './components/ComputeGraph/edge-function';
25
- import { ComputeGraphContextProvider } from './components/ComputeGraph/graph-context';
16
+ import { ComputeGraphContextProvider, SheetContainer } from './components';
17
+ import { compareIndexPositions, createSheet } from './defs';
18
+ import { computeGraphFacet } from './extensions';
19
+ import { type ComputeGraphRegistry } from './graph';
20
+ import { useComputeGraph } from './hooks';
26
21
  import meta, { SHEET_PLUGIN } from './meta';
27
- import { compareIndexPositions, SheetModel } from './model';
28
22
  import translations from './translations';
29
- import { createSheet, SheetAction, type SheetPluginProvides, SheetType } from './types';
23
+ import { SheetAction, SheetType, type SheetPluginProvides } from './types';
30
24
 
31
25
  export const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {
32
- let remoteFunctionUrl: string | undefined;
33
-
34
- const graphs = create<Record<string, ComputeGraph>>({});
35
- const setGraph = (key: string, graph: ComputeGraph) => {
36
- graphs[key] = graph;
37
- };
26
+ let computeGraphRegistry: ComputeGraphRegistry | undefined;
38
27
 
39
28
  return {
40
29
  meta,
41
30
  ready: async (plugins) => {
42
31
  const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;
43
- if (!client) {
44
- return;
45
- }
46
-
32
+ invariant(client);
33
+ let remoteFunctionUrl: string | undefined;
47
34
  if (client.config.values.runtime?.services?.edge?.url) {
48
35
  const url = new URL('/functions', client.config.values.runtime?.services?.edge?.url);
49
36
  url.protocol = 'https';
50
37
  remoteFunctionUrl = url.toString();
51
38
  }
39
+
40
+ // Async import removes direct dependency on hyperformula.
41
+ const { ComputeGraphRegistry } = await import('./graph');
42
+ computeGraphRegistry = new ComputeGraphRegistry({ remoteFunctionUrl });
52
43
  },
53
44
  provides: {
54
45
  context: ({ children }) => {
55
- return (
56
- <ComputeGraphContextProvider graphs={graphs} setGraph={setGraph}>
57
- {children}
58
- </ComputeGraphContextProvider>
59
- );
46
+ invariant(computeGraphRegistry);
47
+ return <ComputeGraphContextProvider registry={computeGraphRegistry}>{children}</ComputeGraphContextProvider>;
60
48
  },
61
49
  metadata: {
62
50
  records: {
63
51
  [SheetType.typename]: {
64
- label: (object: any) => (object instanceof SheetType ? object.title : undefined),
52
+ label: (object: any) => (object instanceof SheetType ? object.name : undefined),
65
53
  placeholder: ['sheet title placeholder', { ns: SHEET_PLUGIN }],
66
- icon: (props: IconProps) => <GridNine {...props} />,
67
- iconSymbol: 'ph--grid-nine--regular',
54
+ icon: 'ph--grid-nine--regular',
68
55
  },
69
56
  },
70
57
  },
71
58
  translations,
72
59
  echo: {
73
60
  // TODO(wittjosiah): Factor out to common package/plugin.
74
- // FunctionType is currently registered here in case script plugin isn't enabled.
61
+ // FunctionType is currently registered here in case script plugin isn't enabled.
75
62
  schema: [SheetType, FunctionType],
76
63
  },
64
+ space: {
65
+ onSpaceCreate: {
66
+ label: ['create sheet label', { ns: SHEET_PLUGIN }],
67
+ action: SheetAction.CREATE,
68
+ },
69
+ },
77
70
  graph: {
78
71
  builder: (plugins) => {
79
72
  const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;
@@ -107,8 +100,7 @@ export const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {
107
100
  },
108
101
  properties: {
109
102
  label: ['create sheet label', { ns: SHEET_PLUGIN }],
110
- icon: (props: IconProps) => <GridNine {...props} />,
111
- iconSymbol: 'ph--grid-nine--regular',
103
+ icon: 'ph--grid-nine--regular',
112
104
  testId: 'sheetPlugin.createObject',
113
105
  },
114
106
  },
@@ -117,6 +109,16 @@ export const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {
117
109
  });
118
110
  },
119
111
  },
112
+ markdown: {
113
+ extensions: ({ document: doc }) => {
114
+ invariant(computeGraphRegistry);
115
+ const space = getSpace(doc);
116
+ if (space) {
117
+ const computeGraph = computeGraphRegistry.getOrCreateGraph(space);
118
+ return computeGraphFacet.of(computeGraph);
119
+ }
120
+ },
121
+ },
120
122
  stack: {
121
123
  creators: [
122
124
  {
@@ -134,20 +136,18 @@ export const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {
134
136
  },
135
137
  thread: {
136
138
  predicate: (data) => data instanceof SheetType,
137
- createSort: (sheet) => (anchorA, anchorB) =>
138
- !anchorA || !anchorB ? 0 : compareIndexPositions(sheet, anchorA, anchorB),
139
+ createSort: (sheet) => (indexA, indexB) =>
140
+ !indexA || !indexB ? 0 : compareIndexPositions(sheet, indexA, indexB),
139
141
  },
140
142
  surface: {
141
- component: ({ data, role = 'never' }) => {
142
- // TODO(burdon): Standardize wrapper (with room for toolbar).
143
- const space = isEchoObject(data.object) && getSpace(data.object);
144
- if (space && data.object instanceof SheetType) {
143
+ component: ({ data, role }) => {
144
+ const space = isEchoObject(data.object) ? getSpace(data.object) : undefined;
145
+ const graph = useComputeGraph(space);
146
+ if (graph && data.object instanceof SheetType) {
145
147
  switch (role) {
146
148
  case 'article':
147
149
  case 'section': {
148
- return (
149
- <SheetContainer sheet={data.object} space={space} role={role} remoteFunctionUrl={remoteFunctionUrl} />
150
- );
150
+ return <SheetContainer graph={graph} sheet={data.object} role={role} />;
151
151
  }
152
152
  }
153
153
  }
@@ -159,23 +159,7 @@ export const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {
159
159
  resolver: async (intent) => {
160
160
  switch (intent.action) {
161
161
  case SheetAction.CREATE: {
162
- const space = intent.data?.space;
163
- const sheet = createSheet();
164
- const graph =
165
- graphs[space.id] ??
166
- createComputeGraph(
167
- [
168
- { plugin: EdgeFunctionPlugin, translations: EdgeFunctionPluginTranslations },
169
- // TODO(wittjosiah): Remove. Needed for current test sheet generated data.
170
- { plugin: CustomPlugin, translations: CustomPluginTranslations },
171
- ],
172
- space,
173
- { remoteFunctionUrl },
174
- );
175
- const model = new SheetModel(graph, sheet);
176
- await model.initialize();
177
- await model.destroy();
178
- return { data: sheet };
162
+ return { data: createSheet() };
179
163
  }
180
164
  }
181
165
  },
@@ -4,7 +4,6 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { HyperFormula } from 'hyperformula';
8
7
  import React, { useEffect, useMemo, useState } from 'react';
9
8
 
10
9
  import { Client } from '@dxos/client';
@@ -12,10 +11,12 @@ import { createDocAccessor, type EchoReactiveObject } from '@dxos/client/echo';
12
11
  import { automerge } from '@dxos/react-ui-editor';
13
12
  import { withTheme } from '@dxos/storybook-utils';
14
13
 
14
+ import { HyperFormula } from '#hyperformula';
15
15
  import { CellEditor, type CellEditorProps } from './CellEditor';
16
16
  import { sheetExtension } from './extension';
17
- import { defaultFunctions } from '../../model';
18
- import { createSheet, SheetType } from '../../types';
17
+ import { createSheet } from '../../defs';
18
+ import { defaultFunctions } from '../../graph';
19
+ import { SheetType } from '../../types';
19
20
 
20
21
  export default {
21
22
  title: 'plugin-sheet/CellEditor',
@@ -41,14 +42,13 @@ const AutomergeStory = ({ value, ...props }: StoryProps) => {
41
42
  const [object, setObject] = useState<EchoReactiveObject<SheetType>>();
42
43
  useEffect(() => {
43
44
  setTimeout(async () => {
44
- const client = new Client();
45
+ const client = new Client({ types: [SheetType] });
45
46
  await client.initialize();
46
47
  await client.halo.createIdentity();
47
48
  const space = await client.spaces.create();
48
- client.addTypes([SheetType]);
49
49
 
50
50
  const sheet = createSheet();
51
- sheet.title = 'Test';
51
+ sheet.name = 'Test';
52
52
  sheet.cells[cell] = { value };
53
53
  space.db.add(sheet);
54
54
  setObject(sheet);
@@ -14,10 +14,13 @@ import {
14
14
  preventNewline,
15
15
  useTextEditor,
16
16
  } from '@dxos/react-ui-editor';
17
+ import { type GridEditBox } from '@dxos/react-ui-grid';
18
+
19
+ type EditorKeyEvent = Pick<KeyboardEvent<HTMLInputElement>, 'key'> & { shift?: boolean };
17
20
 
18
21
  export type EditorKeysProps = {
19
- onClose: (value: string | undefined) => void;
20
- onNav?: (value: string | undefined, ev: Pick<KeyboardEvent<HTMLInputElement>, 'key'>) => void;
22
+ onClose: (value: string | undefined, event: EditorKeyEvent) => void;
23
+ onNav?: (value: string | undefined, event: EditorKeyEvent) => void;
21
24
  };
22
25
 
23
26
  export const editorKeys = ({ onNav, onClose }: EditorKeysProps): Extension => {
@@ -57,14 +60,29 @@ export const editorKeys = ({ onNav, onClose }: EditorKeysProps): Extension => {
57
60
  {
58
61
  key: 'Enter',
59
62
  run: (editor) => {
60
- onClose(editor.state.doc.toString());
63
+ onClose(editor.state.doc.toString(), { key: 'Enter' });
64
+ return true;
65
+ },
66
+ shift: (editor) => {
67
+ onClose(editor.state.doc.toString(), { key: 'Enter', shift: true });
68
+ return true;
69
+ },
70
+ },
71
+ {
72
+ key: 'Tab',
73
+ run: (editor) => {
74
+ onClose(editor.state.doc.toString(), { key: 'Tab' });
75
+ return true;
76
+ },
77
+ shift: (editor) => {
78
+ onClose(editor.state.doc.toString(), { key: 'Tab', shift: true });
61
79
  return true;
62
80
  },
63
81
  },
64
82
  {
65
83
  key: 'Escape',
66
84
  run: () => {
67
- onClose(undefined);
85
+ onClose(undefined, { key: 'Escape' });
68
86
  return true;
69
87
  },
70
88
  },
@@ -74,10 +92,35 @@ export const editorKeys = ({ onNav, onClose }: EditorKeysProps): Extension => {
74
92
  export type CellEditorProps = {
75
93
  value?: string;
76
94
  extension?: Extension;
95
+ variant?: keyof typeof editorVariants;
96
+ box?: GridEditBox;
97
+ gridId?: string;
77
98
  } & Pick<UseTextEditorProps, 'autoFocus'> &
78
99
  Pick<DOMAttributes<HTMLInputElement>, 'onBlur' | 'onKeyDown'>;
79
100
 
80
- export const CellEditor = ({ value, extension, autoFocus, onBlur }: CellEditorProps) => {
101
+ const editorVariants = {
102
+ // TODO(thure): remove when legacy is no longer used.
103
+ legacy: {
104
+ root: 'flex w-full',
105
+ editor: 'flex w-full [&>.cm-scroller]:scrollbar-none',
106
+ content: '!px-2 !py-1',
107
+ },
108
+ grid: {
109
+ root: 'absolute z-[1]',
110
+ editor: '[&>.cm-scroller]:scrollbar-none tabular-nums',
111
+ content: '!border !border-transparent !p-0.5',
112
+ },
113
+ };
114
+
115
+ export const CellEditor = ({
116
+ value,
117
+ extension,
118
+ autoFocus,
119
+ onBlur,
120
+ variant = 'legacy',
121
+ box,
122
+ gridId,
123
+ }: CellEditorProps) => {
81
124
  const { themeMode } = useThemeContext();
82
125
  const { parentRef } = useTextEditor(() => {
83
126
  return {
@@ -98,16 +141,23 @@ export const CellEditor = ({ value, extension, autoFocus, onBlur }: CellEditorPr
98
141
  themeMode,
99
142
  slots: {
100
143
  editor: {
101
- className: 'flex w-full [&>.cm-scroller]:scrollbar-none',
144
+ className: editorVariants[variant].editor,
102
145
  },
103
146
  content: {
104
- className: '!px-2 !py-1',
147
+ className: editorVariants[variant].content,
105
148
  },
106
149
  },
107
150
  }),
108
151
  ],
109
152
  };
110
- }, [extension]);
153
+ }, [extension, autoFocus, value, variant, onBlur]);
111
154
 
112
- return <div ref={parentRef} className='flex w-full' />;
155
+ return (
156
+ <div
157
+ ref={parentRef}
158
+ className={editorVariants[variant].root}
159
+ style={box}
160
+ {...(gridId && { 'data-grid': gridId })}
161
+ />
162
+ );
113
163
  };
@@ -4,13 +4,12 @@
4
4
 
5
5
  import { CompletionContext, type CompletionSource } from '@codemirror/autocomplete';
6
6
  import { EditorState } from '@codemirror/state';
7
- // @ts-ignore
8
7
  import { testTree } from '@lezer/generator/test';
9
8
  import { spreadsheet } from 'codemirror-lang-spreadsheet';
10
9
  import { describe, expect, test } from 'vitest';
11
10
 
12
11
  import { sheetExtension } from './extension';
13
- import { defaultFunctions } from '../../model/functions';
12
+ import { defaultFunctions } from '../../graph';
14
13
 
15
14
  describe('formula parser', () => {
16
15
  const {
@@ -36,8 +35,8 @@ describe('formula parser', () => {
36
35
  extensions: sheetExtension({ functions }),
37
36
  });
38
37
 
39
- const [f] = state.languageDataAt<CompletionSource>('autocomplete', text.length);
40
- const result = await f(new CompletionContext(state, text.length, true));
38
+ const [fn] = state.languageDataAt<CompletionSource>('autocomplete', text.length);
39
+ const result = await fn(new CompletionContext(state, text.length, true));
41
40
  expect(result?.options).to.have.length(1);
42
41
  });
43
42
  });
@@ -12,15 +12,16 @@ import {
12
12
  startCompletion,
13
13
  } from '@codemirror/autocomplete';
14
14
  import { HighlightStyle, type Language, syntaxHighlighting } from '@codemirror/language';
15
- import { type Extension, Facet } from '@codemirror/state';
15
+ import { type Extension } from '@codemirror/state';
16
16
  import { type EditorView, ViewPlugin, type ViewUpdate, keymap } from '@codemirror/view';
17
17
  import { type SyntaxNode } from '@lezer/common';
18
18
  import { tags } from '@lezer/highlight';
19
19
  import { spreadsheet } from 'codemirror-lang-spreadsheet';
20
20
 
21
+ import { singleValueFacet } from '@dxos/react-ui-editor/state';
21
22
  import { mx } from '@dxos/react-ui-theme';
22
23
 
23
- import { type FunctionDefinition } from '../../model';
24
+ import { type FunctionDefinition } from '../../graph';
24
25
 
25
26
  /**
26
27
  * https://codemirror.net/examples/styling
@@ -59,7 +60,7 @@ const highlightStyles = HighlightStyle.define([
59
60
  },
60
61
  ]);
61
62
 
62
- const languageFacet = Facet.define<Language>();
63
+ const languageFacet = singleValueFacet<Language>();
63
64
 
64
65
  export type SheetExtensionOptions = {
65
66
  functions?: FunctionDefinition[];
@@ -165,8 +166,6 @@ export const sheetExtension = ({ functions = [] }: SheetExtensionOptions): Exten
165
166
  icons: false,
166
167
  tooltipClass: () =>
167
168
  mx(
168
- // TODO(burdon): Factor out fragments.
169
- // TODO(burdon): Size to make width same as column.
170
169
  '!-left-[1px] !top-[33px] !-m-0 border !border-t-0 [&>ul]:!min-w-[198px]',
171
170
  '[&>ul>li[aria-selected]]:!bg-accentSurface',
172
171
  'border-separator',
@@ -231,7 +230,7 @@ export const rangeExtension = (onInit: (notifier: CellRangeNotifier) => void): E
231
230
 
232
231
  // Find first Range or cell at cursor.
233
232
  activeRange = undefined;
234
- const [language] = view.state.facet(languageFacet);
233
+ const language = view.state.facet(languageFacet);
235
234
  const { topNode } = language.parser.parse(view.state.doc.toString());
236
235
  visitTree(topNode, ({ type, from, to }) => {
237
236
  if (from <= anchor && to >= anchor) {
@@ -0,0 +1,20 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import React, { createContext, type PropsWithChildren } from 'react';
6
+
7
+ import { type ComputeGraphRegistry } from '../../graph';
8
+
9
+ export type ComputeGraphContextType = {
10
+ registry: ComputeGraphRegistry;
11
+ };
12
+
13
+ /**
14
+ * The compute graph context manages a ComputeGraph for each space.
15
+ */
16
+ export const ComputeGraphContext = createContext<ComputeGraphContextType | undefined>(undefined);
17
+
18
+ export const ComputeGraphContextProvider = ({ registry, children }: PropsWithChildren<ComputeGraphContextType>) => {
19
+ return <ComputeGraphContext.Provider value={{ registry }}>{children}</ComputeGraphContext.Provider>;
20
+ };
@@ -2,6 +2,4 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- export * from './async-function';
6
- export * from './custom';
7
- export * from './graph';
5
+ export * from './ComputeGraphContextProvider';
@@ -0,0 +1,36 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { useSpace } from '@dxos/react-client/echo';
8
+ import { withClientProvider } from '@dxos/react-client/testing';
9
+ import { withTheme, withLayout } from '@dxos/storybook-utils';
10
+
11
+ import { GridSheet } from './GridSheet';
12
+ import { useComputeGraph } from '../../hooks';
13
+ import { useTestSheet, withComputeGraphDecorator } from '../../testing';
14
+ import { SheetType } from '../../types';
15
+
16
+ export default {
17
+ title: 'plugin-sheet/GridSheet',
18
+ component: GridSheet,
19
+ decorators: [
20
+ withClientProvider({ types: [SheetType], createSpace: true }),
21
+ withComputeGraphDecorator(),
22
+ withTheme,
23
+ withLayout({ fullscreen: true, tooltips: true }),
24
+ ],
25
+ };
26
+
27
+ export const Basic = () => {
28
+ const space = useSpace();
29
+ const graph = useComputeGraph(space);
30
+ const sheet = useTestSheet(space, graph);
31
+ if (!sheet || !space) {
32
+ return null;
33
+ }
34
+
35
+ return <GridSheet graph={graph} sheet={sheet} />;
36
+ };