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

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 (256) hide show
  1. package/dist/lib/browser/SheetContainer-V4GCCZTX.mjs +261 -0
  2. package/dist/lib/browser/SheetContainer-V4GCCZTX.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-GNNVBNCX.mjs → chunk-6ZMQVB4Z.mjs} +358 -678
  4. package/dist/lib/browser/chunk-6ZMQVB4Z.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-JRL5LGCE.mjs → chunk-QILRZNE5.mjs} +2 -5
  6. package/dist/lib/browser/chunk-QILRZNE5.mjs.map +7 -0
  7. package/dist/lib/{node-esm/chunk-WUPTZUTX.mjs → browser/chunk-T3NJFTD4.mjs} +4 -14
  8. package/dist/lib/browser/chunk-T3NJFTD4.mjs.map +7 -0
  9. package/dist/lib/browser/{SheetContainer-Y7ZMFBAP.mjs → chunk-U2JHW3L6.mjs} +819 -498
  10. package/dist/lib/browser/chunk-U2JHW3L6.mjs.map +7 -0
  11. package/dist/lib/browser/graph-T27BOBOV.mjs +21 -0
  12. package/dist/lib/browser/graph-T27BOBOV.mjs.map +7 -0
  13. package/dist/lib/browser/index.mjs +58 -55
  14. package/dist/lib/browser/index.mjs.map +3 -3
  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-3ZY7MPWJ.cjs +279 -0
  19. package/dist/lib/node/SheetContainer-3ZY7MPWJ.cjs.map +7 -0
  20. package/dist/lib/node/{chunk-BJ6ZD7MN.cjs → chunk-BNARJ5GM.cjs} +5 -18
  21. package/dist/lib/node/chunk-BNARJ5GM.cjs.map +7 -0
  22. package/dist/lib/node/{chunk-ZRQZFV5T.cjs → chunk-DD6FIXWC.cjs} +359 -679
  23. package/dist/lib/node/chunk-DD6FIXWC.cjs.map +7 -0
  24. package/dist/lib/node/{SheetContainer-KEOKUKAQ.cjs → chunk-OTTD7FBK.cjs} +875 -551
  25. package/dist/lib/node/chunk-OTTD7FBK.cjs.map +7 -0
  26. package/dist/lib/node/{chunk-VJU3NPUJ.cjs → chunk-Q3HBHPRL.cjs} +8 -19
  27. package/dist/lib/node/chunk-Q3HBHPRL.cjs.map +7 -0
  28. package/dist/lib/node/graph-SPKGX7W4.cjs +43 -0
  29. package/dist/lib/node/graph-SPKGX7W4.cjs.map +7 -0
  30. package/dist/lib/node/index.cjs +75 -64
  31. package/dist/lib/node/index.cjs.map +3 -3
  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-PXSJX6XK.mjs +262 -0
  38. package/dist/lib/node-esm/SheetContainer-PXSJX6XK.mjs.map +7 -0
  39. package/dist/lib/node-esm/{SheetContainer-Y7ZMFBAP.mjs → chunk-7HVSOTGA.mjs} +820 -498
  40. package/dist/lib/node-esm/chunk-7HVSOTGA.mjs.map +7 -0
  41. package/dist/lib/{browser/chunk-WUPTZUTX.mjs → node-esm/chunk-BMNA27EX.mjs} +5 -14
  42. package/dist/lib/node-esm/chunk-BMNA27EX.mjs.map +7 -0
  43. package/dist/lib/node-esm/{chunk-GNNVBNCX.mjs → chunk-D6KU5MI7.mjs} +359 -677
  44. package/dist/lib/node-esm/chunk-D6KU5MI7.mjs.map +7 -0
  45. package/dist/lib/node-esm/{chunk-JRL5LGCE.mjs → chunk-IU2L277A.mjs} +4 -5
  46. package/dist/lib/node-esm/chunk-IU2L277A.mjs.map +7 -0
  47. package/dist/lib/node-esm/graph-U67IO4UC.mjs +22 -0
  48. package/dist/lib/node-esm/graph-U67IO4UC.mjs.map +7 -0
  49. package/dist/lib/node-esm/index.mjs +59 -55
  50. package/dist/lib/node-esm/index.mjs.map +3 -3
  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 +7 -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 +4 -5
  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 +5 -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/{components/ComputeGraph → graph}/async-function.d.ts +1 -1
  102. package/dist/types/src/graph/async-function.d.ts.map +1 -0
  103. package/dist/types/src/graph/compute-graph.browser.test.d.ts +2 -0
  104. package/dist/types/src/graph/compute-graph.browser.test.d.ts.map +1 -0
  105. package/dist/types/src/graph/compute-graph.d.ts +81 -0
  106. package/dist/types/src/graph/compute-graph.d.ts.map +1 -0
  107. package/dist/types/src/graph/compute-graph.stories.d.ts +10 -0
  108. package/dist/types/src/graph/compute-graph.stories.d.ts.map +1 -0
  109. package/dist/types/src/graph/compute-node.d.ts +19 -0
  110. package/dist/types/src/graph/compute-node.d.ts.map +1 -0
  111. package/dist/types/src/{components/ComputeGraph/custom.d.ts → graph/custom-function.d.ts} +1 -1
  112. package/dist/types/src/graph/custom-function.d.ts.map +1 -0
  113. package/dist/types/src/graph/edge-function.d.ts.map +1 -0
  114. package/dist/types/src/{model/functions.d.ts → graph/function-defs.d.ts} +1 -1
  115. package/dist/types/src/graph/function-defs.d.ts.map +1 -0
  116. package/dist/types/src/graph/hyperformula.test.d.ts +2 -0
  117. package/dist/types/src/graph/hyperformula.test.d.ts.map +1 -0
  118. package/dist/types/src/graph/index.d.ts +4 -0
  119. package/dist/types/src/graph/index.d.ts.map +1 -0
  120. package/dist/types/src/graph/util.d.ts +2 -0
  121. package/dist/types/src/graph/util.d.ts.map +1 -0
  122. package/dist/types/src/hooks/hooks.stories.d.ts +11 -0
  123. package/dist/types/src/hooks/hooks.stories.d.ts.map +1 -0
  124. package/dist/types/src/hooks/index.d.ts +4 -0
  125. package/dist/types/src/hooks/index.d.ts.map +1 -0
  126. package/dist/types/src/hooks/useComputeGraph.d.ts +7 -0
  127. package/dist/types/src/hooks/useComputeGraph.d.ts.map +1 -0
  128. package/dist/types/src/hooks/useFormattingModel.d.ts +3 -0
  129. package/dist/types/src/hooks/useFormattingModel.d.ts.map +1 -0
  130. package/dist/types/src/hooks/useSheetModel.d.ts +8 -0
  131. package/dist/types/src/hooks/useSheetModel.d.ts.map +1 -0
  132. package/dist/types/src/meta.d.ts +1 -4
  133. package/dist/types/src/meta.d.ts.map +1 -1
  134. package/dist/types/src/model/formatting-model.d.ts +16 -0
  135. package/dist/types/src/model/formatting-model.d.ts.map +1 -0
  136. package/dist/types/src/model/index.d.ts +2 -4
  137. package/dist/types/src/model/index.d.ts.map +1 -1
  138. package/dist/types/src/model/{model.d.ts → sheet-model.d.ts} +9 -48
  139. package/dist/types/src/model/sheet-model.d.ts.map +1 -0
  140. package/dist/types/src/sanity.test.d.ts +2 -0
  141. package/dist/types/src/sanity.test.d.ts.map +1 -0
  142. package/dist/types/src/testing/index.d.ts +2 -0
  143. package/dist/types/src/testing/index.d.ts.map +1 -0
  144. package/dist/types/src/testing/testing.d.ts +9 -0
  145. package/dist/types/src/testing/testing.d.ts.map +1 -0
  146. package/dist/types/src/types.d.ts +12 -2
  147. package/dist/types/src/types.d.ts.map +1 -1
  148. package/dist/vendor/hyperformula.mjs +37145 -0
  149. package/package.json +41 -38
  150. package/src/SheetPlugin.tsx +39 -59
  151. package/src/components/CellEditor/CellEditor.stories.tsx +4 -3
  152. package/src/components/CellEditor/CellEditor.tsx +59 -9
  153. package/src/components/CellEditor/extension.test.ts +3 -3
  154. package/src/components/CellEditor/extension.ts +1 -3
  155. package/src/components/ComputeGraph/ComputeGraphContextProvider.tsx +20 -0
  156. package/src/components/ComputeGraph/index.ts +1 -3
  157. package/src/components/GridSheet/GridSheet.stories.tsx +35 -0
  158. package/src/components/GridSheet/GridSheet.tsx +153 -0
  159. package/src/components/GridSheet/util.ts +108 -0
  160. package/src/components/Sheet/Sheet.stories.tsx +41 -82
  161. package/src/components/Sheet/Sheet.tsx +12 -10
  162. package/src/components/Sheet/grid.ts +3 -3
  163. package/src/components/Sheet/nav.ts +19 -19
  164. package/src/components/Sheet/sheet-context.tsx +10 -80
  165. package/src/components/Sheet/threads.tsx +10 -6
  166. package/src/components/SheetContainer.tsx +2 -2
  167. package/src/components/Toolbar/Toolbar.tsx +1 -2
  168. package/src/components/index.ts +1 -0
  169. package/src/defs/index.ts +6 -0
  170. package/src/{model → defs}/types.test.ts +7 -7
  171. package/src/{model → defs}/types.ts +23 -14
  172. package/src/{model → defs}/util.ts +49 -17
  173. package/src/extensions/compute.stories.tsx +151 -0
  174. package/src/extensions/compute.ts +98 -0
  175. package/src/extensions/index.ts +5 -0
  176. package/src/{components/ComputeGraph → graph}/async-function.ts +3 -1
  177. package/src/graph/compute-graph.browser.test.ts +104 -0
  178. package/src/graph/compute-graph.stories.tsx +92 -0
  179. package/src/graph/compute-graph.ts +290 -0
  180. package/src/graph/compute-node.ts +51 -0
  181. package/src/{components/ComputeGraph/custom.ts → graph/custom-function.ts} +2 -6
  182. package/src/{components/ComputeGraph → graph}/edge-function.ts +2 -1
  183. package/src/graph/hyperformula.test.ts +15 -0
  184. package/src/graph/index.ts +7 -0
  185. package/src/graph/util.ts +8 -0
  186. package/src/hooks/hooks.stories.tsx +50 -0
  187. package/src/hooks/index.ts +7 -0
  188. package/src/hooks/useComputeGraph.ts +20 -0
  189. package/src/hooks/useFormattingModel.ts +11 -0
  190. package/src/hooks/useSheetModel.ts +43 -0
  191. package/src/meta.tsx +1 -5
  192. package/src/{components/Sheet/formatting.ts → model/formatting-model.ts} +20 -13
  193. package/src/model/index.ts +2 -4
  194. package/src/model/{model.ts → sheet-model.ts} +67 -184
  195. package/src/sanity.test.ts +40 -0
  196. package/src/testing/index.ts +5 -0
  197. package/src/testing/testing.tsx +66 -0
  198. package/src/types.ts +14 -12
  199. package/dist/lib/browser/SheetContainer-Y7ZMFBAP.mjs.map +0 -7
  200. package/dist/lib/browser/chunk-GNNVBNCX.mjs.map +0 -7
  201. package/dist/lib/browser/chunk-JRL5LGCE.mjs.map +0 -7
  202. package/dist/lib/browser/chunk-PGKZPKUD.mjs +0 -175
  203. package/dist/lib/browser/chunk-PGKZPKUD.mjs.map +0 -7
  204. package/dist/lib/browser/chunk-VBF7YENS.mjs +0 -8
  205. package/dist/lib/browser/chunk-VBF7YENS.mjs.map +0 -7
  206. package/dist/lib/browser/chunk-WUPTZUTX.mjs.map +0 -7
  207. package/dist/lib/browser/testing.mjs +0 -92
  208. package/dist/lib/browser/testing.mjs.map +0 -7
  209. package/dist/lib/node/SheetContainer-KEOKUKAQ.cjs.map +0 -7
  210. package/dist/lib/node/chunk-57PB2HPY.cjs +0 -40
  211. package/dist/lib/node/chunk-57PB2HPY.cjs.map +0 -7
  212. package/dist/lib/node/chunk-6LWBQAQZ.cjs +0 -202
  213. package/dist/lib/node/chunk-6LWBQAQZ.cjs.map +0 -7
  214. package/dist/lib/node/chunk-BJ6ZD7MN.cjs.map +0 -7
  215. package/dist/lib/node/chunk-VJU3NPUJ.cjs.map +0 -7
  216. package/dist/lib/node/chunk-ZRQZFV5T.cjs.map +0 -7
  217. package/dist/lib/node/testing.cjs +0 -111
  218. package/dist/lib/node/testing.cjs.map +0 -7
  219. package/dist/lib/node-esm/SheetContainer-Y7ZMFBAP.mjs.map +0 -7
  220. package/dist/lib/node-esm/chunk-GNNVBNCX.mjs.map +0 -7
  221. package/dist/lib/node-esm/chunk-JRL5LGCE.mjs.map +0 -7
  222. package/dist/lib/node-esm/chunk-PGKZPKUD.mjs +0 -175
  223. package/dist/lib/node-esm/chunk-PGKZPKUD.mjs.map +0 -7
  224. package/dist/lib/node-esm/chunk-VBF7YENS.mjs +0 -8
  225. package/dist/lib/node-esm/chunk-VBF7YENS.mjs.map +0 -7
  226. package/dist/lib/node-esm/chunk-WUPTZUTX.mjs.map +0 -7
  227. package/dist/lib/node-esm/testing.mjs +0 -92
  228. package/dist/lib/node-esm/testing.mjs.map +0 -7
  229. package/dist/types/src/components/ComputeGraph/async-function.d.ts.map +0 -1
  230. package/dist/types/src/components/ComputeGraph/custom.d.ts.map +0 -1
  231. package/dist/types/src/components/ComputeGraph/edge-function.d.ts.map +0 -1
  232. package/dist/types/src/components/ComputeGraph/graph-context.d.ts +0 -12
  233. package/dist/types/src/components/ComputeGraph/graph-context.d.ts.map +0 -1
  234. package/dist/types/src/components/ComputeGraph/graph.browser.test.d.ts +0 -2
  235. package/dist/types/src/components/ComputeGraph/graph.browser.test.d.ts.map +0 -1
  236. package/dist/types/src/components/ComputeGraph/graph.d.ts +0 -26
  237. package/dist/types/src/components/ComputeGraph/graph.d.ts.map +0 -1
  238. package/dist/types/src/components/Sheet/formatting.d.ts +0 -14
  239. package/dist/types/src/components/Sheet/formatting.d.ts.map +0 -1
  240. package/dist/types/src/model/functions.d.ts.map +0 -1
  241. package/dist/types/src/model/model.browser.test.d.ts +0 -2
  242. package/dist/types/src/model/model.browser.test.d.ts.map +0 -1
  243. package/dist/types/src/model/model.d.ts.map +0 -1
  244. package/dist/types/src/model/types.d.ts.map +0 -1
  245. package/dist/types/src/model/types.test.d.ts.map +0 -1
  246. package/dist/types/src/model/util.d.ts.map +0 -1
  247. package/dist/types/src/testing.d.ts +0 -9
  248. package/dist/types/src/testing.d.ts.map +0 -1
  249. package/src/components/ComputeGraph/graph-context.tsx +0 -50
  250. package/src/components/ComputeGraph/graph.browser.test.ts +0 -49
  251. package/src/components/ComputeGraph/graph.ts +0 -62
  252. package/src/model/model.browser.test.ts +0 -99
  253. package/src/testing.ts +0 -50
  254. /package/dist/types/src/{model → defs}/types.test.d.ts +0 -0
  255. /package/dist/types/src/{components/ComputeGraph → graph}/edge-function.d.ts +0 -0
  256. /package/src/{model/functions.ts → graph/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.c4a728f",
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": {
@@ -79,26 +78,29 @@
79
78
  "re-resizable": "^6.9.17",
80
79
  "react-markdown": "^8.0.5",
81
80
  "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"
81
+ "@dxos/app-framework": "0.6.12-main.c4a728f",
82
+ "@dxos/context": "0.6.12-main.c4a728f",
83
+ "@dxos/client": "0.6.12-main.c4a728f",
84
+ "@dxos/async": "0.6.12-main.c4a728f",
85
+ "@dxos/crypto": "0.6.12-main.c4a728f",
86
+ "@dxos/debug": "0.6.12-main.c4a728f",
87
+ "@dxos/keys": "0.6.12-main.c4a728f",
88
+ "@dxos/echo-schema": "0.6.12-main.c4a728f",
89
+ "@dxos/invariant": "0.6.12-main.c4a728f",
90
+ "@dxos/log": "0.6.12-main.c4a728f",
91
+ "@dxos/plugin-attention": "0.6.12-main.c4a728f",
92
+ "@dxos/plugin-client": "0.6.12-main.c4a728f",
93
+ "@dxos/plugin-graph": "0.6.12-main.c4a728f",
94
+ "@dxos/plugin-markdown": "0.6.12-main.c4a728f",
95
+ "@dxos/plugin-space": "0.6.12-main.c4a728f",
96
+ "@dxos/react-hooks": "0.6.12-main.c4a728f",
97
+ "@dxos/plugin-script": "0.6.12-main.c4a728f",
98
+ "@dxos/react-client": "0.6.12-main.c4a728f",
99
+ "@dxos/plugin-stack": "0.6.12-main.c4a728f",
100
+ "@dxos/react-ui-attention": "0.6.12-main.c4a728f",
101
+ "@dxos/react-ui-editor": "0.6.12-main.c4a728f",
102
+ "@dxos/react-ui-grid": "0.6.12-main.c4a728f",
103
+ "@dxos/util": "0.6.12-main.c4a728f"
102
104
  },
103
105
  "devDependencies": {
104
106
  "@lezer/generator": "^1.7.1",
@@ -111,19 +113,20 @@
111
113
  "react": "~18.2.0",
112
114
  "react-dom": "~18.2.0",
113
115
  "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"
116
+ "@dxos/random": "0.6.12-main.c4a728f",
117
+ "@dxos/echo-generator": "0.6.12-main.c4a728f",
118
+ "@dxos/react-ui": "0.6.12-main.c4a728f",
119
+ "@dxos/react-ui-syntax-highlighter": "0.6.12-main.c4a728f",
120
+ "@dxos/react-ui-theme": "0.6.12-main.c4a728f",
121
+ "@dxos/react-ui-types": "0.6.12-main.c4a728f",
122
+ "@dxos/storybook-utils": "0.6.12-main.c4a728f"
120
123
  },
121
124
  "optionalDependencies": {
122
125
  "@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"
126
+ "react": "~18.2.0",
127
+ "react-dom": "~18.2.0",
128
+ "@dxos/react-ui": "0.6.12-main.c4a728f",
129
+ "@dxos/react-ui-theme": "0.6.12-main.c4a728f"
127
130
  },
128
131
  "publishConfig": {
129
132
  "access": "public"
@@ -2,78 +2,69 @@
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 { type ComputeGraphRegistry } from './graph';
26
19
  import meta, { SHEET_PLUGIN } from './meta';
27
- import { compareIndexPositions, SheetModel } from './model';
28
20
  import translations from './translations';
29
- import { createSheet, SheetAction, type SheetPluginProvides, SheetType } from './types';
21
+ import { SheetAction, SheetType, type SheetPluginProvides } from './types';
30
22
 
31
23
  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
- };
24
+ let graphRegistry: ComputeGraphRegistry | undefined;
38
25
 
39
26
  return {
40
27
  meta,
41
28
  ready: async (plugins) => {
42
29
  const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;
43
- if (!client) {
44
- return;
45
- }
46
-
30
+ invariant(client);
31
+ let remoteFunctionUrl: string | undefined;
47
32
  if (client.config.values.runtime?.services?.edge?.url) {
48
33
  const url = new URL('/functions', client.config.values.runtime?.services?.edge?.url);
49
34
  url.protocol = 'https';
50
35
  remoteFunctionUrl = url.toString();
51
36
  }
37
+
38
+ // Async import removes direct dependency on hyperformula.
39
+ const { createComputeGraphRegistry } = await import('./graph');
40
+ graphRegistry = createComputeGraphRegistry({ remoteFunctionUrl });
52
41
  },
53
42
  provides: {
54
43
  context: ({ children }) => {
55
- return (
56
- <ComputeGraphContextProvider graphs={graphs} setGraph={setGraph}>
57
- {children}
58
- </ComputeGraphContextProvider>
59
- );
44
+ invariant(graphRegistry);
45
+ return <ComputeGraphContextProvider registry={graphRegistry}>{children}</ComputeGraphContextProvider>;
60
46
  },
61
47
  metadata: {
62
48
  records: {
63
49
  [SheetType.typename]: {
64
50
  label: (object: any) => (object instanceof SheetType ? object.title : undefined),
65
51
  placeholder: ['sheet title placeholder', { ns: SHEET_PLUGIN }],
66
- icon: (props: IconProps) => <GridNine {...props} />,
67
- iconSymbol: 'ph--grid-nine--regular',
52
+ icon: 'ph--grid-nine--regular',
68
53
  },
69
54
  },
70
55
  },
71
56
  translations,
72
57
  echo: {
73
58
  // TODO(wittjosiah): Factor out to common package/plugin.
74
- // FunctionType is currently registered here in case script plugin isn't enabled.
59
+ // FunctionType is currently registered here in case script plugin isn't enabled.
75
60
  schema: [SheetType, FunctionType],
76
61
  },
62
+ space: {
63
+ onSpaceCreate: {
64
+ label: ['create sheet label', { ns: SHEET_PLUGIN }],
65
+ action: SheetAction.CREATE,
66
+ },
67
+ },
77
68
  graph: {
78
69
  builder: (plugins) => {
79
70
  const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;
@@ -107,8 +98,7 @@ export const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {
107
98
  },
108
99
  properties: {
109
100
  label: ['create sheet label', { ns: SHEET_PLUGIN }],
110
- icon: (props: IconProps) => <GridNine {...props} />,
111
- iconSymbol: 'ph--grid-nine--regular',
101
+ icon: 'ph--grid-nine--regular',
112
102
  testId: 'sheetPlugin.createObject',
113
103
  },
114
104
  },
@@ -117,6 +107,15 @@ export const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {
117
107
  });
118
108
  },
119
109
  },
110
+ markdown: {
111
+ // TODO(burdon): Construct compute node.
112
+ extensions: ({ document }) => {
113
+ return undefined;
114
+ // return [
115
+ // compute(document)
116
+ // ];
117
+ },
118
+ },
120
119
  stack: {
121
120
  creators: [
122
121
  {
@@ -134,20 +133,17 @@ export const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {
134
133
  },
135
134
  thread: {
136
135
  predicate: (data) => data instanceof SheetType,
137
- createSort: (sheet) => (anchorA, anchorB) =>
138
- !anchorA || !anchorB ? 0 : compareIndexPositions(sheet, anchorA, anchorB),
136
+ createSort: (sheet) => (indexA, indexB) =>
137
+ !indexA || !indexB ? 0 : compareIndexPositions(sheet, indexA, indexB),
139
138
  },
140
139
  surface: {
141
- component: ({ data, role = 'never' }) => {
142
- // TODO(burdon): Standardize wrapper (with room for toolbar).
140
+ component: ({ data, role }) => {
143
141
  const space = isEchoObject(data.object) && getSpace(data.object);
144
142
  if (space && data.object instanceof SheetType) {
145
143
  switch (role) {
146
144
  case 'article':
147
145
  case 'section': {
148
- return (
149
- <SheetContainer sheet={data.object} space={space} role={role} remoteFunctionUrl={remoteFunctionUrl} />
150
- );
146
+ return <SheetContainer sheet={data.object} space={space} role={role} />;
151
147
  }
152
148
  }
153
149
  }
@@ -159,23 +155,7 @@ export const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {
159
155
  resolver: async (intent) => {
160
156
  switch (intent.action) {
161
157
  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 };
158
+ return { data: createSheet() };
179
159
  }
180
160
  }
181
161
  },
@@ -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',
@@ -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
  };
@@ -10,7 +10,7 @@ import { spreadsheet } from 'codemirror-lang-spreadsheet';
10
10
  import { describe, expect, test } from 'vitest';
11
11
 
12
12
  import { sheetExtension } from './extension';
13
- import { defaultFunctions } from '../../model/functions';
13
+ import { defaultFunctions } from '../../graph';
14
14
 
15
15
  describe('formula parser', () => {
16
16
  const {
@@ -36,8 +36,8 @@ describe('formula parser', () => {
36
36
  extensions: sheetExtension({ functions }),
37
37
  });
38
38
 
39
- const [f] = state.languageDataAt<CompletionSource>('autocomplete', text.length);
40
- const result = await f(new CompletionContext(state, text.length, true));
39
+ const [fn] = state.languageDataAt<CompletionSource>('autocomplete', text.length);
40
+ const result = await fn(new CompletionContext(state, text.length, true));
41
41
  expect(result?.options).to.have.length(1);
42
42
  });
43
43
  });
@@ -20,7 +20,7 @@ import { spreadsheet } from 'codemirror-lang-spreadsheet';
20
20
 
21
21
  import { mx } from '@dxos/react-ui-theme';
22
22
 
23
- import { type FunctionDefinition } from '../../model';
23
+ import { type FunctionDefinition } from '../../graph';
24
24
 
25
25
  /**
26
26
  * https://codemirror.net/examples/styling
@@ -165,8 +165,6 @@ export const sheetExtension = ({ functions = [] }: SheetExtensionOptions): Exten
165
165
  icons: false,
166
166
  tooltipClass: () =>
167
167
  mx(
168
- // TODO(burdon): Factor out fragments.
169
- // TODO(burdon): Size to make width same as column.
170
168
  '!-left-[1px] !top-[33px] !-m-0 border !border-t-0 [&>ul]:!min-w-[198px]',
171
169
  '[&>ul>li[aria-selected]]:!bg-accentSurface',
172
170
  'border-separator',
@@ -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,35 @@
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, withGraphDecorator } from '../../testing';
14
+
15
+ export default {
16
+ title: 'plugin-sheet/GridSheet',
17
+ component: GridSheet,
18
+ decorators: [
19
+ withClientProvider({ createSpace: true }),
20
+ withGraphDecorator,
21
+ withTheme,
22
+ withLayout({ fullscreen: true, tooltips: true }),
23
+ ],
24
+ };
25
+
26
+ export const Basic = () => {
27
+ const space = useSpace();
28
+ const graph = useComputeGraph(space);
29
+ const sheet = useTestSheet(space, graph);
30
+ if (!sheet || !space) {
31
+ return null;
32
+ }
33
+
34
+ return <GridSheet space={space} sheet={sheet} />;
35
+ };