@dxos/plugin-sheet 0.7.5-main.9d26e3a → 0.7.5-main.b19bfc8

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 (210) hide show
  1. package/dist/lib/browser/SheetContainer-IMHGS7Z4.mjs +370 -0
  2. package/dist/lib/browser/SheetContainer-IMHGS7Z4.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-A374JPWV.mjs → chunk-AT7F2WDW.mjs} +157 -391
  4. package/dist/lib/browser/chunk-AT7F2WDW.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-FOO6NGBM.mjs +229 -0
  6. package/dist/lib/browser/chunk-FOO6NGBM.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-GAFHJBCU.mjs +18 -0
  8. package/dist/lib/browser/chunk-GAFHJBCU.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-LXHRT3CC.mjs +15 -0
  10. package/dist/lib/browser/chunk-LXHRT3CC.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-Q4XS4YWF.mjs → chunk-OOSRC36N.mjs} +2 -2
  12. package/dist/lib/browser/chunk-OOSRC36N.mjs.map +7 -0
  13. package/dist/lib/browser/compute-graph-registry-EGPD4HEX.mjs +27 -0
  14. package/dist/lib/browser/compute-graph-registry-EGPD4HEX.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +88 -218
  16. package/dist/lib/browser/index.mjs.map +4 -4
  17. package/dist/lib/browser/intent-resolver-6S2RMLQF.mjs +56 -0
  18. package/dist/lib/browser/intent-resolver-6S2RMLQF.mjs.map +7 -0
  19. package/dist/lib/browser/markdown-CFJIWHZX.mjs +26 -0
  20. package/dist/lib/browser/markdown-CFJIWHZX.mjs.map +7 -0
  21. package/dist/lib/browser/meta.json +1 -1
  22. package/dist/lib/browser/react-surface-PHKJZYFB.mjs +52 -0
  23. package/dist/lib/browser/react-surface-PHKJZYFB.mjs.map +7 -0
  24. package/dist/lib/browser/thread-7ZWW5EA7.mjs +17 -0
  25. package/dist/lib/browser/thread-7ZWW5EA7.mjs.map +7 -0
  26. package/dist/lib/browser/types/index.mjs +2 -2
  27. package/dist/lib/node/SheetContainer-NNIZN4AK.cjs +364 -0
  28. package/dist/lib/node/SheetContainer-NNIZN4AK.cjs.map +7 -0
  29. package/dist/lib/node/{chunk-FDEQ2PGJ.cjs → chunk-2KCZUH72.cjs} +198 -428
  30. package/dist/lib/node/chunk-2KCZUH72.cjs.map +7 -0
  31. package/dist/lib/node/{chunk-TQOJ7DG2.cjs → chunk-4LSYTNS4.cjs} +6 -6
  32. package/dist/lib/node/chunk-4LSYTNS4.cjs.map +7 -0
  33. package/dist/lib/node/{chunk-2ZVZI2KJ.cjs → chunk-MLU6KRQN.cjs} +12 -9
  34. package/dist/lib/node/chunk-MLU6KRQN.cjs.map +7 -0
  35. package/dist/lib/node/chunk-P4KSGZSS.cjs +251 -0
  36. package/dist/lib/node/chunk-P4KSGZSS.cjs.map +7 -0
  37. package/dist/lib/node/{meta.cjs → chunk-ZV2RS3QH.cjs} +12 -8
  38. package/dist/lib/node/chunk-ZV2RS3QH.cjs.map +7 -0
  39. package/dist/lib/node/compute-graph-registry-GJK5H264.cjs +53 -0
  40. package/dist/lib/node/compute-graph-registry-GJK5H264.cjs.map +7 -0
  41. package/dist/lib/node/index.cjs +89 -215
  42. package/dist/lib/node/index.cjs.map +4 -4
  43. package/dist/lib/node/intent-resolver-I25V7SBT.cjs +69 -0
  44. package/dist/lib/node/intent-resolver-I25V7SBT.cjs.map +7 -0
  45. package/dist/lib/node/markdown-YTCSW66K.cjs +40 -0
  46. package/dist/lib/node/markdown-YTCSW66K.cjs.map +7 -0
  47. package/dist/lib/node/meta.json +1 -1
  48. package/dist/lib/node/react-surface-HLE6CRA6.cjs +70 -0
  49. package/dist/lib/node/react-surface-HLE6CRA6.cjs.map +7 -0
  50. package/dist/lib/node/thread-DRNYTR6M.cjs +32 -0
  51. package/dist/lib/node/thread-DRNYTR6M.cjs.map +7 -0
  52. package/dist/lib/node/types/index.cjs +30 -30
  53. package/dist/lib/node/types/index.cjs.map +1 -1
  54. package/dist/lib/node-esm/SheetContainer-PGDJKGTZ.mjs +371 -0
  55. package/dist/lib/node-esm/SheetContainer-PGDJKGTZ.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-NYYIDVR7.mjs → chunk-HPAMZ6SP.mjs} +2 -2
  57. package/dist/lib/node-esm/chunk-HPAMZ6SP.mjs.map +7 -0
  58. package/dist/lib/node-esm/chunk-PTOI45NK.mjs +231 -0
  59. package/dist/lib/node-esm/chunk-PTOI45NK.mjs.map +7 -0
  60. package/dist/lib/node-esm/chunk-RTZXXOS2.mjs +20 -0
  61. package/dist/lib/node-esm/chunk-RTZXXOS2.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-SX3S7UKU.mjs +16 -0
  63. package/dist/lib/node-esm/chunk-SX3S7UKU.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-L5PQHVTX.mjs → chunk-ZM7XLUGL.mjs} +157 -391
  65. package/dist/lib/node-esm/chunk-ZM7XLUGL.mjs.map +7 -0
  66. package/dist/lib/node-esm/compute-graph-registry-3F5JCYEN.mjs +28 -0
  67. package/dist/lib/node-esm/compute-graph-registry-3F5JCYEN.mjs.map +7 -0
  68. package/dist/lib/node-esm/index.mjs +88 -218
  69. package/dist/lib/node-esm/index.mjs.map +4 -4
  70. package/dist/lib/node-esm/intent-resolver-IPRSINII.mjs +57 -0
  71. package/dist/lib/node-esm/intent-resolver-IPRSINII.mjs.map +7 -0
  72. package/dist/lib/node-esm/markdown-CGSK44XJ.mjs +27 -0
  73. package/dist/lib/node-esm/markdown-CGSK44XJ.mjs.map +7 -0
  74. package/dist/lib/node-esm/meta.json +1 -1
  75. package/dist/lib/node-esm/react-surface-PFRJ7V5N.mjs +53 -0
  76. package/dist/lib/node-esm/react-surface-PFRJ7V5N.mjs.map +7 -0
  77. package/dist/lib/node-esm/thread-6T5VXPAF.mjs +18 -0
  78. package/dist/lib/node-esm/thread-6T5VXPAF.mjs.map +7 -0
  79. package/dist/lib/node-esm/types/index.mjs +2 -2
  80. package/dist/types/src/SheetPlugin.d.ts +1 -3
  81. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  82. package/dist/types/src/capabilities/capabilities.d.ts +5 -0
  83. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  84. package/dist/types/src/capabilities/compute-graph-registry.d.ts +4 -0
  85. package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -0
  86. package/dist/types/src/capabilities/index.d.ts +12 -0
  87. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  88. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
  89. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
  90. package/dist/types/src/capabilities/markdown.d.ts +6 -0
  91. package/dist/types/src/capabilities/markdown.d.ts.map +1 -0
  92. package/dist/types/src/capabilities/react-surface.d.ts +4 -0
  93. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  94. package/dist/types/src/capabilities/thread.d.ts +6 -0
  95. package/dist/types/src/capabilities/thread.d.ts.map +1 -0
  96. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts +1 -1
  97. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
  98. package/dist/types/src/components/FunctionEditor/FunctionEditor.d.ts +1 -2
  99. package/dist/types/src/components/FunctionEditor/FunctionEditor.d.ts.map +1 -1
  100. package/dist/types/src/components/GridSheet/GridSheet.d.ts +1 -2
  101. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
  102. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +1 -2
  103. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  104. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts +1 -2
  105. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts.map +1 -1
  106. package/dist/types/src/components/RangeList/RangeList.d.ts +1 -2
  107. package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -1
  108. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +1 -2
  109. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
  110. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts +2 -3
  111. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  112. package/dist/types/src/components/SheetContext/SheetContext.d.ts +2 -2
  113. package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
  114. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +7 -0
  115. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -0
  116. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts +6 -0
  117. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -0
  118. package/dist/types/src/components/SheetToolbar/align.d.ts +28 -0
  119. package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -0
  120. package/dist/types/src/components/SheetToolbar/comment.d.ts +23 -0
  121. package/dist/types/src/components/SheetToolbar/comment.d.ts.map +1 -0
  122. package/dist/types/src/components/SheetToolbar/index.d.ts +2 -0
  123. package/dist/types/src/components/SheetToolbar/index.d.ts.map +1 -0
  124. package/dist/types/src/components/SheetToolbar/style.d.ts +26 -0
  125. package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -0
  126. package/dist/types/src/components/SheetToolbar/useToolbarAction.d.ts +8 -0
  127. package/dist/types/src/components/SheetToolbar/useToolbarAction.d.ts.map +1 -0
  128. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts +6 -0
  129. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -0
  130. package/dist/types/src/components/index.d.ts +3 -4
  131. package/dist/types/src/components/index.d.ts.map +1 -1
  132. package/dist/types/src/extensions/compute.stories.d.ts +2 -3
  133. package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
  134. package/dist/types/src/index.d.ts +2 -3
  135. package/dist/types/src/index.d.ts.map +1 -1
  136. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  137. package/dist/types/src/meta.d.ts +2 -2
  138. package/dist/types/src/meta.d.ts.map +1 -1
  139. package/dist/types/src/testing/testing.d.ts +1 -1
  140. package/dist/types/src/testing/testing.d.ts.map +1 -1
  141. package/dist/types/src/types/schema.d.ts +14 -14
  142. package/dist/types/src/types/schema.d.ts.map +1 -1
  143. package/dist/types/src/types/sheet-range-types.d.ts +1 -1
  144. package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
  145. package/dist/types/src/types/types.d.ts +0 -11
  146. package/dist/types/src/types/types.d.ts.map +1 -1
  147. package/dist/types/tsconfig.tsbuildinfo +1 -1
  148. package/package.json +46 -52
  149. package/src/SheetPlugin.tsx +68 -105
  150. package/src/capabilities/capabilities.ts +14 -0
  151. package/src/capabilities/compute-graph-registry.ts +25 -0
  152. package/src/capabilities/index.ts +13 -0
  153. package/src/capabilities/intent-resolver.ts +38 -0
  154. package/src/capabilities/markdown.ts +22 -0
  155. package/src/capabilities/react-surface.tsx +37 -0
  156. package/src/capabilities/thread.ts +14 -0
  157. package/src/components/GridSheet/GridSheet.stories.tsx +2 -0
  158. package/src/components/GridSheet/util.ts +1 -1
  159. package/src/components/SheetContainer/SheetContainer.stories.tsx +28 -22
  160. package/src/components/SheetContainer/SheetContainer.tsx +3 -8
  161. package/src/components/{Toolbar/Toolbar.stories.tsx → SheetToolbar/SheetToolbar.stories.tsx} +4 -8
  162. package/src/components/SheetToolbar/SheetToolbar.tsx +48 -0
  163. package/src/components/SheetToolbar/align.ts +68 -0
  164. package/src/components/SheetToolbar/comment.ts +56 -0
  165. package/src/components/{Toolbar → SheetToolbar}/index.ts +1 -1
  166. package/src/components/SheetToolbar/style.ts +72 -0
  167. package/src/components/SheetToolbar/useToolbarAction.ts +87 -0
  168. package/src/components/SheetToolbar/useToolbarState.ts +17 -0
  169. package/src/components/index.ts +0 -1
  170. package/src/extensions/compute.stories.tsx +2 -2
  171. package/src/index.ts +2 -5
  172. package/src/integrations/thread-ranges.ts +21 -10
  173. package/src/meta.ts +4 -2
  174. package/src/types/sheet-range-types.ts +1 -1
  175. package/src/types/types.ts +0 -26
  176. package/dist/lib/browser/SheetContainer-S4NCLUYL.mjs +0 -290
  177. package/dist/lib/browser/SheetContainer-S4NCLUYL.mjs.map +0 -7
  178. package/dist/lib/browser/chunk-A374JPWV.mjs.map +0 -7
  179. package/dist/lib/browser/chunk-Q4XS4YWF.mjs.map +0 -7
  180. package/dist/lib/browser/chunk-RABELMEQ.mjs +0 -15
  181. package/dist/lib/browser/chunk-RABELMEQ.mjs.map +0 -7
  182. package/dist/lib/browser/meta.mjs +0 -9
  183. package/dist/lib/browser/meta.mjs.map +0 -7
  184. package/dist/lib/node/SheetContainer-TP4GYXZB.cjs +0 -296
  185. package/dist/lib/node/SheetContainer-TP4GYXZB.cjs.map +0 -7
  186. package/dist/lib/node/chunk-2ZVZI2KJ.cjs.map +0 -7
  187. package/dist/lib/node/chunk-FDEQ2PGJ.cjs.map +0 -7
  188. package/dist/lib/node/chunk-TQOJ7DG2.cjs.map +0 -7
  189. package/dist/lib/node/meta.cjs.map +0 -7
  190. package/dist/lib/node-esm/SheetContainer-YB3JBVPZ.mjs +0 -291
  191. package/dist/lib/node-esm/SheetContainer-YB3JBVPZ.mjs.map +0 -7
  192. package/dist/lib/node-esm/chunk-BM2Q3FFC.mjs +0 -17
  193. package/dist/lib/node-esm/chunk-BM2Q3FFC.mjs.map +0 -7
  194. package/dist/lib/node-esm/chunk-L5PQHVTX.mjs.map +0 -7
  195. package/dist/lib/node-esm/chunk-NYYIDVR7.mjs.map +0 -7
  196. package/dist/lib/node-esm/meta.mjs +0 -10
  197. package/dist/lib/node-esm/meta.mjs.map +0 -7
  198. package/dist/types/src/components/SheetObjectSettings.d.ts +0 -7
  199. package/dist/types/src/components/SheetObjectSettings.d.ts.map +0 -1
  200. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -48
  201. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  202. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +0 -7
  203. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +0 -1
  204. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  205. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  206. package/dist/types/src/testing/playwright/playwright.config.d.ts +0 -3
  207. package/dist/types/src/testing/playwright/playwright.config.d.ts.map +0 -1
  208. package/src/components/SheetObjectSettings.tsx +0 -38
  209. package/src/components/Toolbar/Toolbar.tsx +0 -344
  210. /package/src/testing/playwright/{playwright.config.ts → playwright.config.cts} +0 -0
package/package.json CHANGED
@@ -1,23 +1,19 @@
1
1
  {
2
2
  "name": "@dxos/plugin-sheet",
3
- "version": "0.7.5-main.9d26e3a",
3
+ "version": "0.7.5-main.b19bfc8",
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
9
  "sideEffects": true,
10
+ "type": "module",
10
11
  "exports": {
11
12
  ".": {
12
13
  "types": "./dist/types/src/index.d.ts",
13
14
  "browser": "./dist/lib/browser/index.mjs",
14
15
  "node": "./dist/lib/node-esm/index.mjs"
15
16
  },
16
- "./meta": {
17
- "types": "./dist/types/src/meta.d.ts",
18
- "browser": "./dist/lib/browser/meta.mjs",
19
- "node": "./dist/lib/node-esm/meta.mjs"
20
- },
21
17
  "./types": {
22
18
  "types": "./dist/types/src/types/index.d.ts",
23
19
  "browser": "./dist/lib/browser/types/index.mjs",
@@ -27,9 +23,6 @@
27
23
  "types": "dist/types/src/index.d.ts",
28
24
  "typesVersions": {
29
25
  "*": {
30
- "meta": [
31
- "dist/types/src/meta.d.ts"
32
- ],
33
26
  "types": [
34
27
  "dist/types/src/types.d.ts"
35
28
  ]
@@ -54,7 +47,7 @@
54
47
  "@lezer/lezer": "^1.1.2",
55
48
  "@lezer/lr": "^1.4.2",
56
49
  "@preact/signals-core": "^1.6.0",
57
- "@radix-ui/react-context": "^1.0.0",
50
+ "@radix-ui/react-context": "1.1.1",
58
51
  "@tanstack/react-virtual": "^3.9.0",
59
52
  "codemirror-lang-spreadsheet": "^1.3.0",
60
53
  "date-fns": "^3.3.1",
@@ -62,37 +55,38 @@
62
55
  "re-resizable": "^6.9.17",
63
56
  "react-markdown": "^8.0.5",
64
57
  "react-resize-detector": "^11.0.1",
65
- "@dxos/app-framework": "0.7.5-main.9d26e3a",
66
- "@dxos/async": "0.7.5-main.9d26e3a",
67
- "@dxos/client": "0.7.5-main.9d26e3a",
68
- "@dxos/compute": "0.7.5-main.9d26e3a",
69
- "@dxos/crypto": "0.7.5-main.9d26e3a",
70
- "@dxos/context": "0.7.5-main.9d26e3a",
71
- "@dxos/debug": "0.7.5-main.9d26e3a",
72
- "@dxos/echo-schema": "0.7.5-main.9d26e3a",
73
- "@dxos/invariant": "0.7.5-main.9d26e3a",
74
- "@dxos/functions": "0.7.5-main.9d26e3a",
75
- "@dxos/keys": "0.7.5-main.9d26e3a",
76
- "@dxos/log": "0.7.5-main.9d26e3a",
77
- "@dxos/live-object": "0.7.5-main.9d26e3a",
78
- "@dxos/plugin-attention": "0.7.5-main.9d26e3a",
79
- "@dxos/plugin-client": "0.7.5-main.9d26e3a",
80
- "@dxos/plugin-graph": "0.7.5-main.9d26e3a",
81
- "@dxos/plugin-markdown": "0.7.5-main.9d26e3a",
82
- "@dxos/plugin-script": "0.7.5-main.9d26e3a",
83
- "@dxos/plugin-space": "0.7.5-main.9d26e3a",
84
- "@dxos/plugin-stack": "0.7.5-main.9d26e3a",
85
- "@dxos/plugin-thread": "0.7.5-main.9d26e3a",
86
- "@dxos/react-client": "0.7.5-main.9d26e3a",
87
- "@dxos/react-ui-attention": "0.7.5-main.9d26e3a",
88
- "@dxos/react-ui-editor": "0.7.5-main.9d26e3a",
89
- "@dxos/react-hooks": "0.7.5-main.9d26e3a",
90
- "@dxos/react-ui-form": "0.7.5-main.9d26e3a",
91
- "@dxos/react-ui-grid": "0.7.5-main.9d26e3a",
92
- "@dxos/react-ui-stack": "0.7.5-main.9d26e3a",
93
- "@dxos/react-ui-list": "0.7.5-main.9d26e3a",
94
- "@dxos/schema": "0.7.5-main.9d26e3a",
95
- "@dxos/util": "0.7.5-main.9d26e3a"
58
+ "@dxos/app-framework": "0.7.5-main.b19bfc8",
59
+ "@dxos/client": "0.7.5-main.b19bfc8",
60
+ "@dxos/compute": "0.7.5-main.b19bfc8",
61
+ "@dxos/context": "0.7.5-main.b19bfc8",
62
+ "@dxos/functions": "0.7.5-main.b19bfc8",
63
+ "@dxos/crypto": "0.7.5-main.b19bfc8",
64
+ "@dxos/async": "0.7.5-main.b19bfc8",
65
+ "@dxos/debug": "0.7.5-main.b19bfc8",
66
+ "@dxos/invariant": "0.7.5-main.b19bfc8",
67
+ "@dxos/echo-schema": "0.7.5-main.b19bfc8",
68
+ "@dxos/keys": "0.7.5-main.b19bfc8",
69
+ "@dxos/live-object": "0.7.5-main.b19bfc8",
70
+ "@dxos/log": "0.7.5-main.b19bfc8",
71
+ "@dxos/plugin-attention": "0.7.5-main.b19bfc8",
72
+ "@dxos/plugin-client": "0.7.5-main.b19bfc8",
73
+ "@dxos/plugin-graph": "0.7.5-main.b19bfc8",
74
+ "@dxos/plugin-script": "0.7.5-main.b19bfc8",
75
+ "@dxos/plugin-stack": "0.7.5-main.b19bfc8",
76
+ "@dxos/plugin-space": "0.7.5-main.b19bfc8",
77
+ "@dxos/react-client": "0.7.5-main.b19bfc8",
78
+ "@dxos/plugin-thread": "0.7.5-main.b19bfc8",
79
+ "@dxos/react-ui-attention": "0.7.5-main.b19bfc8",
80
+ "@dxos/react-hooks": "0.7.5-main.b19bfc8",
81
+ "@dxos/plugin-markdown": "0.7.5-main.b19bfc8",
82
+ "@dxos/react-ui-editor": "0.7.5-main.b19bfc8",
83
+ "@dxos/react-ui-form": "0.7.5-main.b19bfc8",
84
+ "@dxos/react-ui-menu": "0.7.5-main.b19bfc8",
85
+ "@dxos/react-ui-list": "0.7.5-main.b19bfc8",
86
+ "@dxos/react-ui-grid": "0.7.5-main.b19bfc8",
87
+ "@dxos/react-ui-stack": "0.7.5-main.b19bfc8",
88
+ "@dxos/schema": "0.7.5-main.b19bfc8",
89
+ "@dxos/util": "0.7.5-main.b19bfc8"
96
90
  },
97
91
  "devDependencies": {
98
92
  "@lezer/generator": "^1.7.1",
@@ -104,21 +98,21 @@
104
98
  "react": "~18.2.0",
105
99
  "react-dom": "~18.2.0",
106
100
  "vite": "5.4.7",
107
- "@dxos/echo-generator": "0.7.5-main.9d26e3a",
108
- "@dxos/lit-grid": "0.7.5-main.9d26e3a",
109
- "@dxos/random": "0.7.5-main.9d26e3a",
110
- "@dxos/react-ui": "0.7.5-main.9d26e3a",
111
- "@dxos/react-ui-syntax-highlighter": "0.7.5-main.9d26e3a",
112
- "@dxos/react-ui-types": "0.7.5-main.9d26e3a",
113
- "@dxos/test-utils": "0.7.5-main.9d26e3a",
114
- "@dxos/react-ui-theme": "0.7.5-main.9d26e3a",
115
- "@dxos/storybook-utils": "0.7.5-main.9d26e3a"
101
+ "@dxos/echo-generator": "0.7.5-main.b19bfc8",
102
+ "@dxos/random": "0.7.5-main.b19bfc8",
103
+ "@dxos/lit-grid": "0.7.5-main.b19bfc8",
104
+ "@dxos/react-ui": "0.7.5-main.b19bfc8",
105
+ "@dxos/react-ui-syntax-highlighter": "0.7.5-main.b19bfc8",
106
+ "@dxos/react-ui-theme": "0.7.5-main.b19bfc8",
107
+ "@dxos/react-ui-types": "0.7.5-main.b19bfc8",
108
+ "@dxos/storybook-utils": "0.7.5-main.b19bfc8",
109
+ "@dxos/test-utils": "0.7.5-main.b19bfc8"
116
110
  },
117
111
  "peerDependencies": {
118
112
  "react": "~18.2.0",
119
113
  "react-dom": "~18.2.0",
120
- "@dxos/react-ui": "0.7.5-main.9d26e3a",
121
- "@dxos/react-ui-theme": "0.7.5-main.9d26e3a"
114
+ "@dxos/react-ui": "0.7.5-main.b19bfc8",
115
+ "@dxos/react-ui-theme": "0.7.5-main.b19bfc8"
122
116
  },
123
117
  "publishConfig": {
124
118
  "access": "public"
@@ -2,119 +2,82 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import React from 'react';
6
-
7
- import { createIntent, createResolver, createSurface, resolvePlugin, type PluginDefinition } from '@dxos/app-framework';
8
- import { type ComputeGraphRegistry } from '@dxos/compute';
5
+ import { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';
9
6
  import { FunctionType } from '@dxos/functions';
10
- import { invariant } from '@dxos/invariant';
11
- import { parseClientPlugin } from '@dxos/plugin-client/types';
12
- import { getSpace } from '@dxos/react-client/echo';
7
+ import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
8
+ import { MarkdownEvents } from '@dxos/plugin-markdown';
9
+ import { SpaceCapabilities, ThreadEvents } from '@dxos/plugin-space';
10
+ import { defineObjectForm } from '@dxos/plugin-space/types';
13
11
 
14
- import { ComputeGraphContextProvider, SheetContainer, SheetObjectSettings } from './components';
15
- import { computeGraphFacet } from './extensions';
16
- import meta, { SHEET_PLUGIN } from './meta';
12
+ import { Markdown, Thread, ReactSurface, IntentResolver, ComputeGraphRegistry } from './capabilities';
13
+ import { meta, SHEET_PLUGIN } from './meta';
17
14
  import { serializer } from './serializer';
18
15
  import translations from './translations';
19
- import { compareIndexPositions, createSheet, SheetAction, SheetType, type SheetPluginProvides } from './types';
20
-
21
- export const SheetPlugin = (): PluginDefinition<SheetPluginProvides> => {
22
- let computeGraphRegistry: ComputeGraphRegistry | undefined;
23
-
24
- return {
25
- meta,
26
- ready: async ({ plugins }) => {
27
- const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;
28
- invariant(client);
29
- let remoteFunctionUrl: string | undefined;
30
- if (client.config.values.runtime?.services?.edge?.url) {
31
- const url = new URL('/functions', client.config.values.runtime?.services?.edge?.url);
32
- url.protocol = 'https';
33
- remoteFunctionUrl = url.toString();
34
- }
16
+ import { SheetAction, SheetType } from './types';
35
17
 
36
- // Async import removes direct dependency on hyperformula.
37
- const { defaultPlugins, ComputeGraphRegistry } = await import('@dxos/compute');
38
- computeGraphRegistry = new ComputeGraphRegistry({ plugins: defaultPlugins, remoteFunctionUrl });
39
- },
40
- provides: {
41
- context: ({ children }) => {
42
- invariant(computeGraphRegistry);
43
- return <ComputeGraphContextProvider registry={computeGraphRegistry}>{children}</ComputeGraphContextProvider>;
44
- },
45
- metadata: {
46
- records: {
47
- [SheetType.typename]: {
48
- createObject: (props: { name?: string }) => createIntent(SheetAction.Create, props),
18
+ export const SheetPlugin = () =>
19
+ definePlugin(meta, [
20
+ defineModule({
21
+ id: `${meta.id}/module/compute-graph-registry`,
22
+ activatesOn: ClientEvents.ClientReady,
23
+ activate: ComputeGraphRegistry,
24
+ }),
25
+ defineModule({
26
+ id: `${meta.id}/module/translations`,
27
+ activatesOn: Events.SetupTranslations,
28
+ activate: () => contributes(Capabilities.Translations, translations),
29
+ }),
30
+ defineModule({
31
+ id: `${meta.id}/module/metadata`,
32
+ activatesOn: Events.SetupMetadata,
33
+ activate: () =>
34
+ contributes(Capabilities.Metadata, {
35
+ id: SheetType.typename,
36
+ metadata: {
49
37
  label: (object: any) => (object instanceof SheetType ? object.name : undefined),
50
38
  placeholder: ['sheet title placeholder', { ns: SHEET_PLUGIN }],
51
39
  icon: 'ph--grid-nine--regular',
52
40
  serializer,
53
41
  },
54
- },
55
- },
56
- translations,
57
- echo: {
58
- schema: [SheetType],
59
- // TODO(wittjosiah): Factor out to common package/plugin.
60
- // FunctionType is currently registered here in case script plugin isn't enabled.
61
- system: [FunctionType],
62
- },
63
- markdown: {
64
- extensions: ({ document: doc }) => {
65
- invariant(computeGraphRegistry);
66
- const space = getSpace(doc);
67
- if (space) {
68
- const computeGraph = computeGraphRegistry.getOrCreateGraph(space);
69
- return computeGraphFacet.of(computeGraph);
70
- }
71
- },
72
- },
73
- thread: {
74
- predicate: (data) => data instanceof SheetType,
75
- createSort: (sheet) => (indexA, indexB) =>
76
- !indexA || !indexB ? 0 : compareIndexPositions(sheet, indexA, indexB),
77
- },
78
- surface: {
79
- definitions: () => [
80
- createSurface({
81
- id: `${SHEET_PLUGIN}/sheet`,
82
- role: ['article', 'section'],
83
- filter: (data): data is { subject: SheetType } =>
84
- data.subject instanceof SheetType && !!getSpace(data.subject),
85
- component: ({ data, role }) => (
86
- <SheetContainer space={getSpace(data.subject)!} sheet={data.subject} role={role} />
87
- ),
88
- }),
89
- createSurface({
90
- id: `${SHEET_PLUGIN}/settings`,
91
- role: 'complementary--settings',
92
- filter: (data): data is { subject: SheetType } => data.subject instanceof SheetType,
93
- component: ({ data }) => <SheetObjectSettings sheet={data.subject} />,
94
- }),
95
- ],
96
- },
97
- intent: {
98
- resolvers: () => [
99
- createResolver(SheetAction.Create, ({ name }) => ({ data: { object: createSheet({ name }) } })),
100
- createResolver(SheetAction.InsertAxis, ({ model, axis, index, count }) => {
101
- const _indices = model[axis === 'col' ? 'insertColumns' : 'insertRows'](index, count);
102
- }),
103
- createResolver(SheetAction.DropAxis, ({ model, axis, axisIndex, deletionData }, undo) => {
104
- if (!undo) {
105
- const undoData = model[axis === 'col' ? 'dropColumn' : 'dropRow'](axisIndex);
106
- return {
107
- undoable: {
108
- message: (translations[0]['en-US'][SHEET_PLUGIN] as any)[`${axis} dropped label`],
109
- data: { ...undoData, model },
110
- },
111
- };
112
- } else if (undo && deletionData) {
113
- model[deletionData.axis === 'col' ? 'restoreColumn' : 'restoreRow'](deletionData);
114
- }
42
+ }),
43
+ }),
44
+ defineModule({
45
+ id: `${meta.id}/module/object-form`,
46
+ activatesOn: ClientEvents.SetupSchema,
47
+ activate: () =>
48
+ contributes(
49
+ SpaceCapabilities.ObjectForm,
50
+ defineObjectForm({
51
+ objectSchema: SheetType,
52
+ getIntent: (props, options) => createIntent(SheetAction.Create, { ...props, space: options.space }),
115
53
  }),
116
- ],
117
- },
118
- },
119
- };
120
- };
54
+ ),
55
+ }),
56
+ // TODO(wittjosiah): Factor out to common package/plugin.
57
+ // FunctionType is currently registered here in case script plugin isn't enabled.
58
+ defineModule({
59
+ id: `${meta.id}/module/schema`,
60
+ activatesOn: ClientEvents.SetupSchema,
61
+ activate: () => contributes(ClientCapabilities.Schema, [FunctionType]),
62
+ }),
63
+ defineModule({
64
+ id: `${meta.id}/module/markdown`,
65
+ activatesOn: MarkdownEvents.SetupExtensions,
66
+ activate: Markdown,
67
+ }),
68
+ defineModule({
69
+ id: `${meta.id}/module/thread`,
70
+ activatesOn: ThreadEvents.SetupThread,
71
+ activate: Thread,
72
+ }),
73
+ defineModule({
74
+ id: `${meta.id}/module/react-surface`,
75
+ activatesOn: Events.SetupReactSurface,
76
+ activate: ReactSurface,
77
+ }),
78
+ defineModule({
79
+ id: `${meta.id}/module/intent-resolver`,
80
+ activatesOn: Events.SetupIntentResolver,
81
+ activate: IntentResolver,
82
+ }),
83
+ ]);
@@ -0,0 +1,14 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { defineCapability } from '@dxos/app-framework';
6
+ import { type ComputeGraphRegistry } from '@dxos/compute';
7
+
8
+ import { SHEET_PLUGIN } from '../meta';
9
+
10
+ export namespace SheetCapabilities {
11
+ export const ComputeGraphRegistry = defineCapability<ComputeGraphRegistry>(
12
+ `${SHEET_PLUGIN}/capability/compute-graph-registry`,
13
+ );
14
+ }
@@ -0,0 +1,25 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { contributes, type PluginsContext } from '@dxos/app-framework';
6
+ import { ClientCapabilities } from '@dxos/plugin-client';
7
+
8
+ import { SheetCapabilities } from './capabilities';
9
+
10
+ export default async (context: PluginsContext) => {
11
+ const client = context.requestCapability(ClientCapabilities.Client);
12
+ let remoteFunctionUrl: string | undefined;
13
+ if (client.config.values.runtime?.services?.edge?.url) {
14
+ const url = new URL('/functions', client.config.values.runtime?.services?.edge?.url);
15
+ url.protocol = 'https';
16
+ remoteFunctionUrl = url.toString();
17
+ }
18
+
19
+ // TODO(wittjosiah): This can probably be a module level import now due to lazy capability loading.
20
+ // Async import removes direct dependency on hyperformula.
21
+ const { defaultPlugins, ComputeGraphRegistry } = await import('@dxos/compute');
22
+ const computeGraphRegistry = new ComputeGraphRegistry({ plugins: defaultPlugins, remoteFunctionUrl });
23
+
24
+ return contributes(SheetCapabilities.ComputeGraphRegistry, computeGraphRegistry);
25
+ };
@@ -0,0 +1,13 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { lazy } from '@dxos/app-framework';
6
+
7
+ export const ComputeGraphRegistry = lazy(() => import('./compute-graph-registry'));
8
+ export const IntentResolver = lazy(() => import('./intent-resolver'));
9
+ export const Markdown = lazy(() => import('./markdown'));
10
+ export const ReactSurface = lazy(() => import('./react-surface'));
11
+ export const Thread = lazy(() => import('./thread'));
12
+
13
+ export * from './capabilities';
@@ -0,0 +1,38 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { contributes, Capabilities, createResolver } from '@dxos/app-framework';
6
+
7
+ import { SHEET_PLUGIN } from '../meta';
8
+ import { createSheet, SheetAction } from '../types';
9
+
10
+ export default () =>
11
+ contributes(Capabilities.IntentResolver, [
12
+ createResolver({
13
+ intent: SheetAction.Create,
14
+ resolve: ({ name }) => ({ data: { object: createSheet({ name }) } }),
15
+ }),
16
+ createResolver({
17
+ intent: SheetAction.InsertAxis,
18
+ resolve: ({ model, axis, index, count }) => {
19
+ const _indices = model[axis === 'col' ? 'insertColumns' : 'insertRows'](index, count);
20
+ },
21
+ }),
22
+ createResolver({
23
+ intent: SheetAction.DropAxis,
24
+ resolve: ({ model, axis, axisIndex, deletionData }, undo) => {
25
+ if (!undo) {
26
+ const undoData = model[axis === 'col' ? 'dropColumn' : 'dropRow'](axisIndex);
27
+ return {
28
+ undoable: {
29
+ message: [`${axis} dropped label`, { ns: SHEET_PLUGIN }],
30
+ data: { ...undoData, model },
31
+ },
32
+ };
33
+ } else if (undo && deletionData) {
34
+ model[deletionData.axis === 'col' ? 'restoreColumn' : 'restoreRow'](deletionData);
35
+ }
36
+ },
37
+ }),
38
+ ]);
@@ -0,0 +1,22 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { contributes, type PluginsContext } from '@dxos/app-framework';
6
+ import { getSpace } from '@dxos/client/echo';
7
+ import { MarkdownCapabilities } from '@dxos/plugin-markdown';
8
+
9
+ import { SheetCapabilities } from './capabilities';
10
+ import { computeGraphFacet } from '../extensions';
11
+
12
+ export default (context: PluginsContext) =>
13
+ contributes(MarkdownCapabilities.Extensions, [
14
+ ({ document: doc }) => {
15
+ const computeGraphRegistry = context.requestCapability(SheetCapabilities.ComputeGraphRegistry);
16
+ const space = getSpace(doc);
17
+ if (space) {
18
+ const computeGraph = computeGraphRegistry.getOrCreateGraph(space);
19
+ return computeGraphFacet.of(computeGraph);
20
+ }
21
+ },
22
+ ]);
@@ -0,0 +1,37 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import React from 'react';
6
+
7
+ import { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';
8
+ import { getSpace } from '@dxos/react-client/echo';
9
+
10
+ import { SheetCapabilities } from './capabilities';
11
+ import { ComputeGraphContextProvider, RangeList, SheetContainer } from '../components';
12
+ import { SHEET_PLUGIN } from '../meta';
13
+ import { SheetType } from '../types';
14
+
15
+ export default () =>
16
+ contributes(Capabilities.ReactSurface, [
17
+ createSurface({
18
+ id: `${SHEET_PLUGIN}/sheet`,
19
+ role: ['article', 'section'],
20
+ filter: (data): data is { subject: SheetType } => data.subject instanceof SheetType && !!getSpace(data.subject),
21
+ component: ({ data, role }) => {
22
+ const computeGraphRegistry = useCapability(SheetCapabilities.ComputeGraphRegistry);
23
+
24
+ return (
25
+ <ComputeGraphContextProvider registry={computeGraphRegistry}>
26
+ <SheetContainer space={getSpace(data.subject)!} sheet={data.subject} role={role} />
27
+ </ComputeGraphContextProvider>
28
+ );
29
+ },
30
+ }),
31
+ createSurface({
32
+ id: `${SHEET_PLUGIN}/settings`,
33
+ role: 'complementary--settings',
34
+ filter: (data): data is { subject: SheetType } => data.subject instanceof SheetType,
35
+ component: ({ data }) => <RangeList sheet={data.subject} />,
36
+ }),
37
+ ]);
@@ -0,0 +1,14 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { contributes } from '@dxos/app-framework';
6
+ import { ThreadCapabilities } from '@dxos/plugin-space';
7
+
8
+ import { compareIndexPositions, SheetType } from '../types';
9
+
10
+ export default () =>
11
+ contributes(ThreadCapabilities.Thread, {
12
+ predicate: (data) => data instanceof SheetType,
13
+ createSort: (sheet) => (indexA, indexB) => (!indexA || !indexB ? 0 : compareIndexPositions(sheet, indexA, indexB)),
14
+ });
@@ -7,6 +7,7 @@ import '@dxos-theme';
7
7
  import { type Meta } from '@storybook/react';
8
8
  import React from 'react';
9
9
 
10
+ import { withPluginManager } from '@dxos/app-framework/testing';
10
11
  import { useSpace } from '@dxos/react-client/echo';
11
12
  import { withClientProvider } from '@dxos/react-client/testing';
12
13
  import { withTheme, withLayout } from '@dxos/storybook-utils';
@@ -41,6 +42,7 @@ const meta: Meta = {
41
42
  withComputeGraphDecorator(),
42
43
  withTheme,
43
44
  withLayout({ fullscreen: true, tooltips: true, classNames: 'grid' }),
45
+ withPluginManager(),
44
46
  ],
45
47
  parameters: { translations },
46
48
  };
@@ -89,7 +89,7 @@ const gridCellGetter = (model: SheetModel) => {
89
89
 
90
90
  export const rowLabelCell = (row: number) => ({
91
91
  value: rowToA1Notation(row),
92
- className: 'text-end !pie-1 text-subdued',
92
+ className: 'text-end pie-1 text-subdued',
93
93
  resizeHandle: 'row',
94
94
  });
95
95
 
@@ -7,10 +7,12 @@ import '@dxos-theme';
7
7
  import { type Meta } from '@storybook/react';
8
8
  import React from 'react';
9
9
 
10
- import { type AnyIntentChain, type IntentContext, IntentProvider } from '@dxos/app-framework';
11
- import { todo } from '@dxos/debug';
12
- import { useSpace, create } from '@dxos/react-client/echo';
10
+ import { Capabilities, contributes, createResolver, IntentPlugin } from '@dxos/app-framework';
11
+ import { withPluginManager } from '@dxos/app-framework/testing';
12
+ import { fullyQualifiedId, useSpace } from '@dxos/react-client/echo';
13
13
  import { withClientProvider } from '@dxos/react-client/testing';
14
+ import { AttendableContainer } from '@dxos/react-ui-attention';
15
+ import { withAttention } from '@dxos/react-ui-attention/testing';
14
16
  import { withTheme, withLayout } from '@dxos/storybook-utils';
15
17
 
16
18
  import { SheetContainer } from './SheetContainer';
@@ -20,22 +22,6 @@ import { SheetAction, SheetType } from '../../types';
20
22
  import { useComputeGraph } from '../ComputeGraph';
21
23
  import { RangeList } from '../RangeList';
22
24
 
23
- // TODO(thure via wittjosiah): stories/components should be written such that the dependency on intents is external and provided via callback and then the story can implement it differently.
24
- const storybookIntentValue = create<IntentContext>({
25
- dispatch: () => todo(),
26
- dispatchPromise: async (intentChain: AnyIntentChain): Promise<any> => {
27
- switch (intentChain.first.action) {
28
- case SheetAction.DropAxis._tag: {
29
- const { model, axis, axisIndex } = intentChain.first.data as SheetAction.DropAxis['input'];
30
- model[axis === 'col' ? 'dropColumn' : 'dropRow'](axisIndex);
31
- }
32
- }
33
- },
34
- undo: () => todo(),
35
- undoPromise: () => todo(),
36
- registerResolver: () => () => {},
37
- });
38
-
39
25
  export const Basic = () => {
40
26
  const space = useSpace();
41
27
  const graph = useComputeGraph(space);
@@ -44,7 +30,11 @@ export const Basic = () => {
44
30
  return null;
45
31
  }
46
32
 
47
- return <SheetContainer space={space} sheet={sheet} role='article' ignoreAttention />;
33
+ return (
34
+ <AttendableContainer id={fullyQualifiedId(sheet)} classNames='contents'>
35
+ <SheetContainer space={space} sheet={sheet} role='article' ignoreAttention />
36
+ </AttendableContainer>
37
+ );
48
38
  };
49
39
 
50
40
  export const Spec = () => {
@@ -56,14 +46,14 @@ export const Spec = () => {
56
46
  }
57
47
 
58
48
  return (
59
- <IntentProvider value={storybookIntentValue}>
49
+ <AttendableContainer id={fullyQualifiedId(sheet)} classNames='contents'>
60
50
  <div role='none' className='grid grid-rows-[66%_33%] grid-cols-1'>
61
51
  <SheetContainer space={space} sheet={sheet} role='article' ignoreAttention />
62
52
  <div role='none' data-testid='grid.range-list'>
63
53
  <RangeList sheet={sheet} />
64
54
  </div>
65
55
  </div>
66
- </IntentProvider>
56
+ </AttendableContainer>
67
57
  );
68
58
  };
69
59
 
@@ -79,6 +69,22 @@ const meta: Meta = {
79
69
  tooltips: true,
80
70
  classNames: 'grid',
81
71
  }),
72
+ withAttention,
73
+ // TODO(wittjosiah): Consider whether we should refactor component so story doesn't need to depend on intents.
74
+ withPluginManager({
75
+ plugins: [IntentPlugin()],
76
+ capabilities: [
77
+ contributes(
78
+ Capabilities.IntentResolver,
79
+ createResolver({
80
+ intent: SheetAction.DropAxis,
81
+ resolve: ({ model, axis, axisIndex }) => {
82
+ model[axis === 'col' ? 'dropColumn' : 'dropRow'](axisIndex);
83
+ },
84
+ }),
85
+ ),
86
+ ],
87
+ }),
82
88
  ],
83
89
  parameters: { translations },
84
90
  };
@@ -4,7 +4,7 @@
4
4
 
5
5
  import React from 'react';
6
6
 
7
- import { type Space } from '@dxos/react-client/echo';
7
+ import { fullyQualifiedId, type Space } from '@dxos/react-client/echo';
8
8
  import { StackItem } from '@dxos/react-ui-stack';
9
9
 
10
10
  import { type SheetType } from '../../types';
@@ -12,7 +12,7 @@ import { useComputeGraph } from '../ComputeGraph';
12
12
  import { FunctionEditor } from '../FunctionEditor';
13
13
  import { GridSheet } from '../GridSheet';
14
14
  import { SheetProvider } from '../SheetContext';
15
- import { Toolbar } from '../Toolbar';
15
+ import { SheetToolbar } from '../SheetToolbar';
16
16
 
17
17
  export const SheetContainer = ({
18
18
  space,
@@ -30,12 +30,7 @@ export const SheetContainer = ({
30
30
  return graph ? (
31
31
  <SheetProvider sheet={sheet} graph={graph} ignoreAttention={ignoreAttention}>
32
32
  <StackItem.Content toolbar statusbar {...(role === 'section' && { classNames: 'aspect-video' })}>
33
- <Toolbar.Root role={role}>
34
- <Toolbar.Styles />
35
- <Toolbar.Alignment />
36
- <Toolbar.Separator />
37
- <Toolbar.Actions />
38
- </Toolbar.Root>
33
+ <SheetToolbar attendableId={fullyQualifiedId(sheet)} />
39
34
  <GridSheet />
40
35
  <FunctionEditor />
41
36
  </StackItem.Content>