@dxos/plugin-script 0.8.4-main.72ec0f3 → 0.8.4-main.937b3ca

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 (375) hide show
  1. package/dist/lib/browser/DeploymentDialog-GXNRUXF6.mjs +14 -0
  2. package/dist/lib/browser/{NotebookContainer-RTESC4OV.mjs → NotebookContainer-4MM2VAQF.mjs} +267 -239
  3. package/dist/lib/browser/NotebookContainer-4MM2VAQF.mjs.map +7 -0
  4. package/dist/lib/browser/ScriptContainer-X6GCYZZW.mjs +149 -0
  5. package/dist/lib/browser/ScriptContainer-X6GCYZZW.mjs.map +7 -0
  6. package/dist/lib/browser/app-graph-builder-7VO7AUI6.mjs +68 -0
  7. package/dist/lib/browser/app-graph-builder-7VO7AUI6.mjs.map +7 -0
  8. package/dist/lib/browser/blueprint-definition-OSOUYI7A.mjs +17 -0
  9. package/dist/lib/browser/blueprint-definition-OSOUYI7A.mjs.map +7 -0
  10. package/dist/lib/browser/blueprints/index.mjs +8 -0
  11. package/dist/lib/browser/chunk-3O2DQGCP.mjs +113 -0
  12. package/dist/lib/browser/chunk-3O2DQGCP.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-BTWHM6FH.mjs +270 -0
  14. package/dist/lib/browser/chunk-BTWHM6FH.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-F3QKSKSF.mjs +35 -0
  16. package/dist/lib/browser/chunk-F3QKSKSF.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-I7CSE6T3.mjs +110 -0
  18. package/dist/lib/browser/chunk-I7CSE6T3.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-IQRLM6JK.mjs +137 -0
  20. package/dist/lib/browser/chunk-IQRLM6JK.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-NWSK27QB.mjs +606 -0
  22. package/dist/lib/browser/chunk-NWSK27QB.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-2G2NA6DQ.mjs → chunk-UX4GHJ5E.mjs} +28 -11
  24. package/dist/lib/browser/chunk-UX4GHJ5E.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-5JSNQYZZ.mjs → chunk-WX2NVNFQ.mjs} +236 -196
  26. package/dist/lib/browser/chunk-WX2NVNFQ.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-EB6AXFXO.mjs → chunk-WYR4QHPE.mjs} +1 -1
  28. package/dist/lib/browser/chunk-WYR4QHPE.mjs.map +7 -0
  29. package/dist/lib/browser/compiler-XRBFQFXO.mjs +161 -0
  30. package/dist/lib/browser/compiler-XRBFQFXO.mjs.map +7 -0
  31. package/dist/lib/browser/index.mjs +96 -125
  32. package/dist/lib/browser/index.mjs.map +4 -4
  33. package/dist/lib/browser/meta.json +1 -1
  34. package/dist/lib/browser/operation-resolver-MUNR376F.mjs +82 -0
  35. package/dist/lib/browser/operation-resolver-MUNR376F.mjs.map +7 -0
  36. package/dist/lib/browser/{react-surface-QEQ3QUQA.mjs → react-surface-5TEC66UY.mjs} +53 -42
  37. package/dist/lib/browser/react-surface-5TEC66UY.mjs.map +7 -0
  38. package/dist/lib/browser/settings-R4WKREUJ.mjs +35 -0
  39. package/dist/lib/browser/settings-R4WKREUJ.mjs.map +7 -0
  40. package/dist/lib/browser/templates/index.mjs +1 -1
  41. package/dist/lib/browser/types/index.mjs +9 -5
  42. package/dist/lib/node-esm/{DeploymentDialog-GL5AUWMR.mjs → DeploymentDialog-EVFV2VJT.mjs} +6 -6
  43. package/dist/lib/node-esm/DeploymentDialog-EVFV2VJT.mjs.map +7 -0
  44. package/dist/lib/node-esm/{NotebookContainer-SVD3A3D6.mjs → NotebookContainer-QLW5ZYGS.mjs} +267 -239
  45. package/dist/lib/node-esm/NotebookContainer-QLW5ZYGS.mjs.map +7 -0
  46. package/dist/lib/node-esm/ScriptContainer-3DZ3BMHW.mjs +150 -0
  47. package/dist/lib/node-esm/ScriptContainer-3DZ3BMHW.mjs.map +7 -0
  48. package/dist/lib/node-esm/app-graph-builder-NVE3EVBG.mjs +69 -0
  49. package/dist/lib/node-esm/app-graph-builder-NVE3EVBG.mjs.map +7 -0
  50. package/dist/lib/node-esm/blueprint-definition-NC7NNJGI.mjs +18 -0
  51. package/dist/lib/node-esm/blueprint-definition-NC7NNJGI.mjs.map +7 -0
  52. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  53. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  54. package/dist/lib/node-esm/{chunk-57JA6XL5.mjs → chunk-4F5FJZ36.mjs} +28 -11
  55. package/dist/lib/node-esm/chunk-4F5FJZ36.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-IBV2DR36.mjs → chunk-5HSJPAK7.mjs} +1 -1
  57. package/dist/lib/node-esm/chunk-5HSJPAK7.mjs.map +7 -0
  58. package/dist/lib/node-esm/chunk-KN6SQYUF.mjs +114 -0
  59. package/dist/lib/node-esm/chunk-KN6SQYUF.mjs.map +7 -0
  60. package/dist/lib/node-esm/{chunk-IQTBVH4L.mjs → chunk-MGWKULCD.mjs} +236 -196
  61. package/dist/lib/node-esm/chunk-MGWKULCD.mjs.map +7 -0
  62. package/dist/lib/node-esm/chunk-SLU3KRV3.mjs +112 -0
  63. package/dist/lib/node-esm/chunk-SLU3KRV3.mjs.map +7 -0
  64. package/dist/lib/node-esm/chunk-VWOLKNMO.mjs +271 -0
  65. package/dist/lib/node-esm/chunk-VWOLKNMO.mjs.map +7 -0
  66. package/dist/lib/node-esm/chunk-Y3G5NCTP.mjs +36 -0
  67. package/dist/lib/node-esm/chunk-Y3G5NCTP.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-YEWLTVBT.mjs +138 -0
  69. package/dist/lib/node-esm/chunk-YEWLTVBT.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-ZQGHFNO3.mjs +607 -0
  71. package/dist/lib/node-esm/chunk-ZQGHFNO3.mjs.map +7 -0
  72. package/dist/lib/node-esm/compiler-ORJAXDN7.mjs +162 -0
  73. package/dist/lib/node-esm/compiler-ORJAXDN7.mjs.map +7 -0
  74. package/dist/lib/node-esm/index.mjs +96 -125
  75. package/dist/lib/node-esm/index.mjs.map +4 -4
  76. package/dist/lib/node-esm/meta.json +1 -1
  77. package/dist/lib/node-esm/operation-resolver-CLE4ZCC5.mjs +83 -0
  78. package/dist/lib/node-esm/operation-resolver-CLE4ZCC5.mjs.map +7 -0
  79. package/dist/lib/node-esm/{react-surface-U77YT7VF.mjs → react-surface-O3UDMKOQ.mjs} +53 -42
  80. package/dist/lib/node-esm/react-surface-O3UDMKOQ.mjs.map +7 -0
  81. package/dist/lib/node-esm/settings-OFIMHU7K.mjs +36 -0
  82. package/dist/lib/node-esm/settings-OFIMHU7K.mjs.map +7 -0
  83. package/dist/lib/node-esm/templates/index.mjs +1 -1
  84. package/dist/lib/node-esm/types/index.mjs +9 -5
  85. package/dist/types/src/ScriptPlugin.d.ts +2 -1
  86. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  87. package/dist/types/src/blueprints/index.d.ts +2 -0
  88. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  89. package/dist/types/src/blueprints/script-blueprint.d.ts +22 -0
  90. package/dist/types/src/blueprints/script-blueprint.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  92. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  94. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +12 -0
  96. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/artifact-definition/index.d.ts +3 -0
  98. package/dist/types/src/capabilities/artifact-definition/index.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +9 -0
  100. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  102. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  103. package/dist/types/src/capabilities/compiler/compiler.d.ts +6 -0
  104. package/dist/types/src/capabilities/compiler/compiler.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/compiler/index.d.ts +3 -0
  106. package/dist/types/src/capabilities/compiler/index.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/index.d.ts +6 -7
  108. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  110. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  112. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  114. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  116. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/settings/index.d.ts +7 -0
  118. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/settings/settings.d.ts +9 -0
  120. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  121. package/dist/types/src/compiler/compiler.d.ts +1 -1
  122. package/dist/types/src/compiler/compiler.d.ts.map +1 -1
  123. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +1 -1
  124. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts +4 -3
  125. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  126. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  127. package/dist/types/src/components/NotebookContainer.d.ts +3 -5
  128. package/dist/types/src/components/NotebookContainer.d.ts.map +1 -1
  129. package/dist/types/src/components/NotebookContainer.stories.d.ts +3 -247
  130. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +1 -1
  131. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts +3 -3
  132. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
  133. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts +1 -1
  134. package/dist/types/src/components/NotebookStack/NotebookStack.d.ts.map +1 -1
  135. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts +5 -1
  136. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  137. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts +5 -0
  138. package/dist/types/src/components/QueryEditor/QueryEditor.d.ts.map +1 -0
  139. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts +13 -0
  140. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -0
  141. package/dist/types/src/components/QueryEditor/index.d.ts +2 -0
  142. package/dist/types/src/components/QueryEditor/index.d.ts.map +1 -0
  143. package/dist/types/src/components/ScriptContainer.d.ts +4 -5
  144. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  145. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +2 -2
  146. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  147. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts +5 -1
  148. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  149. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +1 -1
  150. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts +4 -2
  151. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +1 -1
  152. package/dist/types/src/components/TestPanel/TestContainer.d.ts +1 -1
  153. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +1 -1
  154. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +3 -2
  155. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  156. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts +1 -1
  157. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  158. package/dist/types/src/components/index.d.ts +2 -2
  159. package/dist/types/src/components/index.d.ts.map +1 -1
  160. package/dist/types/src/e2e/ai.test.d.ts +2 -0
  161. package/dist/types/src/e2e/ai.test.d.ts.map +1 -0
  162. package/dist/types/src/e2e/deploy.test.d.ts +2 -0
  163. package/dist/types/src/e2e/deploy.test.d.ts.map +1 -0
  164. package/dist/types/src/hooks/deploy.d.ts +10 -27
  165. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  166. package/dist/types/src/hooks/format.d.ts +2 -2
  167. package/dist/types/src/hooks/format.d.ts.map +1 -1
  168. package/dist/types/src/hooks/index.d.ts +1 -0
  169. package/dist/types/src/hooks/index.d.ts.map +1 -1
  170. package/dist/types/src/hooks/template.d.ts +2 -2
  171. package/dist/types/src/hooks/template.d.ts.map +1 -1
  172. package/dist/types/src/hooks/useCompiler.d.ts +7 -0
  173. package/dist/types/src/hooks/useCompiler.d.ts.map +1 -0
  174. package/dist/types/src/hooks/useCreateAndDeployScriptTemplates.d.ts.map +1 -1
  175. package/dist/types/src/hooks/useToolbarState.d.ts +8 -1
  176. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -1
  177. package/dist/types/src/index.d.ts +1 -1
  178. package/dist/types/src/index.d.ts.map +1 -1
  179. package/dist/types/src/meta.d.ts +2 -2
  180. package/dist/types/src/meta.d.ts.map +1 -1
  181. package/dist/types/src/notebook/compute-graph.d.ts +24 -11
  182. package/dist/types/src/notebook/compute-graph.d.ts.map +1 -1
  183. package/dist/types/src/templates/anthropic.d.ts +8 -0
  184. package/dist/types/src/templates/anthropic.d.ts.map +1 -0
  185. package/dist/types/src/templates/chess-bot.d.ts +16 -0
  186. package/dist/types/src/templates/chess-bot.d.ts.map +1 -0
  187. package/dist/types/src/templates/commentary.d.ts +16 -0
  188. package/dist/types/src/templates/commentary.d.ts.map +1 -0
  189. package/dist/types/src/templates/forex-effect.d.ts +4 -1
  190. package/dist/types/src/templates/forex-effect.d.ts.map +1 -1
  191. package/dist/types/src/templates/forex.d.ts +4 -1
  192. package/dist/types/src/templates/forex.d.ts.map +1 -1
  193. package/dist/types/src/templates/index.d.ts +12 -3
  194. package/dist/types/src/templates/index.d.ts.map +1 -1
  195. package/dist/types/src/templates/ping.d.ts +1 -4
  196. package/dist/types/src/templates/ping.d.ts.map +1 -1
  197. package/dist/types/src/testing/simulator.test.d.ts +2 -0
  198. package/dist/types/src/testing/simulator.test.d.ts.map +1 -0
  199. package/dist/types/src/translations.d.ts +2 -0
  200. package/dist/types/src/translations.d.ts.map +1 -1
  201. package/dist/types/src/types/Notebook.d.ts +90 -21
  202. package/dist/types/src/types/Notebook.d.ts.map +1 -1
  203. package/dist/types/src/types/actions.d.ts +30 -44
  204. package/dist/types/src/types/actions.d.ts.map +1 -1
  205. package/dist/types/src/types/capabilities.d.ts +12 -0
  206. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  207. package/dist/types/src/types/events.d.ts +5 -0
  208. package/dist/types/src/types/events.d.ts.map +1 -0
  209. package/dist/types/src/types/index.d.ts +2 -0
  210. package/dist/types/src/types/index.d.ts.map +1 -1
  211. package/dist/types/src/util/deploy.d.ts.map +1 -1
  212. package/dist/types/src/util/functions.d.ts.map +1 -1
  213. package/dist/types/tsconfig.tsbuildinfo +1 -1
  214. package/package.json +113 -87
  215. package/src/ScriptPlugin.tsx +36 -75
  216. package/src/blueprints/index.ts +5 -0
  217. package/src/blueprints/script-blueprint.ts +24 -0
  218. package/src/capabilities/app-graph-builder/app-graph-builder.ts +55 -0
  219. package/src/capabilities/app-graph-builder/index.ts +7 -0
  220. package/src/capabilities/{artifact-definition.ts → artifact-definition/artifact-definition.ts} +97 -94
  221. package/src/capabilities/artifact-definition/index.ts +7 -0
  222. package/src/capabilities/blueprint-definition/blueprint-definition.ts +23 -0
  223. package/src/capabilities/blueprint-definition/index.ts +7 -0
  224. package/src/capabilities/compiler/compiler.ts +103 -0
  225. package/src/capabilities/compiler/index.ts +7 -0
  226. package/src/capabilities/index.ts +6 -10
  227. package/src/capabilities/operation-resolver/index.ts +7 -0
  228. package/src/capabilities/operation-resolver/operation-resolver.ts +74 -0
  229. package/src/capabilities/react-surface/index.ts +7 -0
  230. package/src/capabilities/react-surface/react-surface.tsx +118 -0
  231. package/src/capabilities/settings/index.ts +7 -0
  232. package/src/capabilities/settings/settings.ts +32 -0
  233. package/src/compiler/compiler.ts +10 -3
  234. package/src/components/DeploymentDialog/DeploymentDialog.stories.tsx +27 -23
  235. package/src/components/DeploymentDialog/DeploymentDialog.tsx +22 -42
  236. package/src/components/FrameContainer/FrameContainer.tsx +4 -2
  237. package/src/components/NotebookContainer.stories.tsx +23 -19
  238. package/src/components/NotebookContainer.tsx +54 -47
  239. package/src/components/NotebookStack/NotebookCell.tsx +22 -19
  240. package/src/components/NotebookStack/NotebookStack.stories.tsx +19 -18
  241. package/src/components/NotebookStack/NotebookStack.tsx +4 -4
  242. package/src/components/QueryEditor/QueryEditor.stories.tsx +100 -0
  243. package/src/components/QueryEditor/QueryEditor.tsx +47 -0
  244. package/src/components/QueryEditor/index.ts +5 -0
  245. package/src/components/ScriptContainer.tsx +48 -33
  246. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +38 -15
  247. package/src/components/ScriptToolbar/ScriptToolbar.tsx +14 -17
  248. package/src/components/Settings/ScriptObjectSettings.tsx +44 -32
  249. package/src/components/Settings/ScriptPluginSettings.tsx +8 -3
  250. package/src/components/TestPanel/TestContainer.tsx +5 -5
  251. package/src/components/TestPanel/TestPanel.tsx +1 -1
  252. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +13 -8
  253. package/src/components/TypescriptEditor/TypescriptEditor.tsx +69 -68
  254. package/src/e2e/ai.test.ts +92 -0
  255. package/src/e2e/deploy.test.ts +64 -0
  256. package/src/hooks/deploy.ts +36 -28
  257. package/src/hooks/format.ts +5 -1
  258. package/src/hooks/index.ts +1 -0
  259. package/src/hooks/template.ts +15 -9
  260. package/src/hooks/useCompiler.ts +24 -0
  261. package/src/hooks/useCreateAndDeployScriptTemplates.ts +13 -19
  262. package/src/hooks/useToolbarState.ts +29 -5
  263. package/src/index.ts +1 -1
  264. package/src/meta.ts +2 -2
  265. package/src/notebook/compute-graph.test.ts +20 -8
  266. package/src/notebook/compute-graph.ts +45 -21
  267. package/src/templates/anthropic.ts +42 -0
  268. package/src/templates/chess-bot.ts +58 -0
  269. package/src/templates/commentary.ts +232 -0
  270. package/src/templates/data-generator.ts +1 -1
  271. package/src/templates/forex-effect.ts +22 -27
  272. package/src/templates/forex.ts +7 -6
  273. package/src/templates/index.ts +18 -5
  274. package/src/templates/ping.ts +14 -5
  275. package/src/testing/simulator.test.ts +40 -0
  276. package/src/translations.ts +2 -0
  277. package/src/types/Notebook.ts +10 -10
  278. package/src/types/actions.ts +17 -25
  279. package/src/types/capabilities.ts +17 -0
  280. package/src/types/events.ts +11 -0
  281. package/src/types/index.ts +2 -0
  282. package/src/types/types.ts +1 -1
  283. package/src/util/deploy.ts +23 -29
  284. package/src/util/functions.ts +27 -24
  285. package/src/vite-env.d.ts +2 -0
  286. package/dist/lib/browser/DeploymentDialog-MZX4T77L.mjs +0 -14
  287. package/dist/lib/browser/NotebookContainer-RTESC4OV.mjs.map +0 -7
  288. package/dist/lib/browser/ScriptContainer-T2BAZDJ4.mjs +0 -147
  289. package/dist/lib/browser/ScriptContainer-T2BAZDJ4.mjs.map +0 -7
  290. package/dist/lib/browser/app-graph-builder-2WR2ATTJ.mjs +0 -66
  291. package/dist/lib/browser/app-graph-builder-2WR2ATTJ.mjs.map +0 -7
  292. package/dist/lib/browser/blueprint-definition-6PZWZM2Y.mjs +0 -30
  293. package/dist/lib/browser/blueprint-definition-6PZWZM2Y.mjs.map +0 -7
  294. package/dist/lib/browser/chunk-2G2NA6DQ.mjs.map +0 -7
  295. package/dist/lib/browser/chunk-3IJASGG5.mjs +0 -155
  296. package/dist/lib/browser/chunk-3IJASGG5.mjs.map +0 -7
  297. package/dist/lib/browser/chunk-4M7U2WVT.mjs +0 -304
  298. package/dist/lib/browser/chunk-4M7U2WVT.mjs.map +0 -7
  299. package/dist/lib/browser/chunk-5JSNQYZZ.mjs.map +0 -7
  300. package/dist/lib/browser/chunk-EB6AXFXO.mjs.map +0 -7
  301. package/dist/lib/browser/chunk-GAFCKEII.mjs +0 -646
  302. package/dist/lib/browser/chunk-GAFCKEII.mjs.map +0 -7
  303. package/dist/lib/browser/chunk-LNNCD2H4.mjs +0 -102
  304. package/dist/lib/browser/chunk-LNNCD2H4.mjs.map +0 -7
  305. package/dist/lib/browser/chunk-M6KJPUJK.mjs +0 -111
  306. package/dist/lib/browser/chunk-M6KJPUJK.mjs.map +0 -7
  307. package/dist/lib/browser/chunk-UOQ6NCH3.mjs +0 -15
  308. package/dist/lib/browser/chunk-UOQ6NCH3.mjs.map +0 -7
  309. package/dist/lib/browser/compiler-4KHRSX7J.mjs +0 -86
  310. package/dist/lib/browser/compiler-4KHRSX7J.mjs.map +0 -7
  311. package/dist/lib/browser/intent-resolver-AFJ575VK.mjs +0 -104
  312. package/dist/lib/browser/intent-resolver-AFJ575VK.mjs.map +0 -7
  313. package/dist/lib/browser/react-surface-QEQ3QUQA.mjs.map +0 -7
  314. package/dist/lib/browser/settings-LNLSTZM4.mjs +0 -26
  315. package/dist/lib/browser/settings-LNLSTZM4.mjs.map +0 -7
  316. package/dist/lib/node-esm/NotebookContainer-SVD3A3D6.mjs.map +0 -7
  317. package/dist/lib/node-esm/ScriptContainer-2CE3H3JJ.mjs +0 -148
  318. package/dist/lib/node-esm/ScriptContainer-2CE3H3JJ.mjs.map +0 -7
  319. package/dist/lib/node-esm/app-graph-builder-NCVLUL5R.mjs +0 -67
  320. package/dist/lib/node-esm/app-graph-builder-NCVLUL5R.mjs.map +0 -7
  321. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs +0 -31
  322. package/dist/lib/node-esm/blueprint-definition-5R6YCSZZ.mjs.map +0 -7
  323. package/dist/lib/node-esm/chunk-55JZVM6K.mjs +0 -16
  324. package/dist/lib/node-esm/chunk-55JZVM6K.mjs.map +0 -7
  325. package/dist/lib/node-esm/chunk-57JA6XL5.mjs.map +0 -7
  326. package/dist/lib/node-esm/chunk-HDKR5WCD.mjs +0 -113
  327. package/dist/lib/node-esm/chunk-HDKR5WCD.mjs.map +0 -7
  328. package/dist/lib/node-esm/chunk-IBV2DR36.mjs.map +0 -7
  329. package/dist/lib/node-esm/chunk-IQTBVH4L.mjs.map +0 -7
  330. package/dist/lib/node-esm/chunk-KJKZ4KNO.mjs +0 -647
  331. package/dist/lib/node-esm/chunk-KJKZ4KNO.mjs.map +0 -7
  332. package/dist/lib/node-esm/chunk-NNHWLRHT.mjs +0 -103
  333. package/dist/lib/node-esm/chunk-NNHWLRHT.mjs.map +0 -7
  334. package/dist/lib/node-esm/chunk-RIE676OW.mjs +0 -156
  335. package/dist/lib/node-esm/chunk-RIE676OW.mjs.map +0 -7
  336. package/dist/lib/node-esm/chunk-YRTA4EHU.mjs +0 -305
  337. package/dist/lib/node-esm/chunk-YRTA4EHU.mjs.map +0 -7
  338. package/dist/lib/node-esm/compiler-DU5NQISX.mjs +0 -87
  339. package/dist/lib/node-esm/compiler-DU5NQISX.mjs.map +0 -7
  340. package/dist/lib/node-esm/intent-resolver-A5VVK746.mjs +0 -105
  341. package/dist/lib/node-esm/intent-resolver-A5VVK746.mjs.map +0 -7
  342. package/dist/lib/node-esm/react-surface-U77YT7VF.mjs.map +0 -7
  343. package/dist/lib/node-esm/settings-IUFMOCXY.mjs +0 -27
  344. package/dist/lib/node-esm/settings-IUFMOCXY.mjs.map +0 -7
  345. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  346. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  347. package/dist/types/src/capabilities/artifact-definition.d.ts +0 -11
  348. package/dist/types/src/capabilities/artifact-definition.d.ts.map +0 -1
  349. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  350. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  351. package/dist/types/src/capabilities/capabilities.d.ts +0 -5
  352. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  353. package/dist/types/src/capabilities/compiler.d.ts +0 -4
  354. package/dist/types/src/capabilities/compiler.d.ts.map +0 -1
  355. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  356. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  357. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  358. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  359. package/dist/types/src/capabilities/settings.d.ts +0 -4
  360. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  361. package/dist/types/src/events.d.ts +0 -4
  362. package/dist/types/src/events.d.ts.map +0 -1
  363. package/dist/types/src/templates/chess.d.ts +0 -3
  364. package/dist/types/src/templates/chess.d.ts.map +0 -1
  365. package/src/capabilities/app-graph-builder.ts +0 -65
  366. package/src/capabilities/blueprint-definition.ts +0 -30
  367. package/src/capabilities/capabilities.ts +0 -12
  368. package/src/capabilities/compiler.ts +0 -34
  369. package/src/capabilities/intent-resolver.ts +0 -86
  370. package/src/capabilities/react-surface.tsx +0 -103
  371. package/src/capabilities/settings.ts +0 -21
  372. package/src/events.ts +0 -11
  373. package/src/templates/chess.ts +0 -49
  374. /package/dist/lib/browser/{DeploymentDialog-MZX4T77L.mjs.map → DeploymentDialog-GXNRUXF6.mjs.map} +0 -0
  375. /package/dist/lib/{node-esm/DeploymentDialog-GL5AUWMR.mjs.map → browser/blueprints/index.mjs.map} +0 -0
@@ -5,23 +5,22 @@
5
5
  import React, { useCallback, useMemo } from 'react';
6
6
 
7
7
  import { Surface } from '@dxos/app-framework/react';
8
+ import { type Database, Obj } from '@dxos/echo';
9
+ import { createDocAccessor } from '@dxos/echo-db';
8
10
  import { invariant } from '@dxos/invariant';
9
11
  import { TemplateEditor } from '@dxos/plugin-assistant';
10
- import { createDocAccessor } from '@dxos/react-client/echo';
11
- import { type Space } from '@dxos/react-client/echo';
12
12
  import { useThemeContext, useTranslation } from '@dxos/react-ui';
13
13
  import { QueryEditor, type QueryEditorProps } from '@dxos/react-ui-components';
14
+ import { EditorContent, type EditorContentProps } from '@dxos/react-ui-editor';
14
15
  import {
15
16
  type BasicExtensionsOptions,
16
- EditorContent,
17
- type EditorContentProps,
18
17
  createBasicExtensions,
19
18
  createDataExtensions,
20
19
  createMarkdownExtensions,
21
20
  createThemeExtensions,
22
21
  decorateMarkdown,
23
- } from '@dxos/react-ui-editor';
24
- import { mx } from '@dxos/react-ui-theme';
22
+ } from '@dxos/ui-editor';
23
+ import { mx } from '@dxos/ui-theme';
25
24
  import { isNonNullable } from '@dxos/util';
26
25
 
27
26
  import { meta } from '../../meta';
@@ -35,7 +34,7 @@ const editorStyles = 'p-2 pis-3';
35
34
  const valueStyles = 'p-1 pis-3';
36
35
 
37
36
  export type NotebookCellProps = {
38
- space?: Space;
37
+ db?: Database.Database;
39
38
  graph?: ComputeGraph;
40
39
  dragging?: boolean;
41
40
  cell: Notebook.Cell;
@@ -43,7 +42,7 @@ export type NotebookCellProps = {
43
42
  } & (Pick<NotebookMenuProps, 'onCellInsert' | 'onCellDelete'> & Pick<TypescriptEditorProps, 'env'>);
44
43
 
45
44
  // TODO(burdon): Show evaluation errors.
46
- export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env }: NotebookCellProps) => {
45
+ export const NotebookCell = ({ db, graph, dragging, cell, promptResults, env }: NotebookCellProps) => {
47
46
  const { t } = useTranslation(meta.id);
48
47
 
49
48
  const extensions = useMemo(() => {
@@ -57,12 +56,14 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
57
56
  : [];
58
57
  }, [cell.source?.target]);
59
58
 
60
- const view = cell.view?.target;
59
+ const explorerGraph = cell.graph?.target;
61
60
 
62
61
  const handleQueryChange = useCallback<NonNullable<QueryEditorProps['onChange']>>(
63
62
  (value: string) => {
64
63
  invariant(cell.source?.target);
65
- cell.source.target.content = value;
64
+ Obj.change(cell.source.target, (s) => {
65
+ s.content = value;
66
+ });
66
67
  },
67
68
  [cell],
68
69
  );
@@ -113,15 +114,17 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
113
114
 
114
115
  // TODO(burdon): Remove app-framework deps (via render prop).
115
116
  return (
116
- <div className={mx('bs-full overflow-hidden grid', view && !dragging && 'grid-rows-[min-content_1fr]')}>
117
+ <div
118
+ className={mx('bs-full overflow-hidden grid', explorerGraph && !dragging && 'grid-rows-[min-content_1fr]')}
119
+ >
117
120
  <QueryEditor
118
121
  id={cell.id}
119
122
  classNames={[editorStyles, 'border-be border-subduedSeparator']}
120
- db={space?.db}
123
+ db={db}
121
124
  value={cell.source.target.content}
122
125
  onChange={handleQueryChange}
123
126
  />
124
- {view && !dragging && <Surface role='section' limit={1} data={{ subject: view }} />}
127
+ {explorerGraph && !dragging && <Surface role='section' limit={1} data={{ subject: explorerGraph }} />}
125
128
  </div>
126
129
  );
127
130
 
@@ -149,7 +152,7 @@ export const NotebookCell = ({ space, graph, dragging, cell, promptResults, env
149
152
  };
150
153
 
151
154
  const NotebookCellValue = ({ cell, graph }: NotebookCellProps) => {
152
- const name = graph?.expressions.value[cell.id]?.name;
155
+ const name = graph?.getExpressions()[cell.id]?.name;
153
156
  const value = graph?.getValue(cell.id);
154
157
  if (value == null) {
155
158
  return null;
@@ -158,7 +161,7 @@ const NotebookCellValue = ({ cell, graph }: NotebookCellProps) => {
158
161
  return (
159
162
  <div
160
163
  className={mx(
161
- 'flex is-full bg-groupSurface border-t border-subduedSeparator text-description font-mono',
164
+ 'flex is-full bg-groupSurface border-bs border-subduedSeparator text-description font-mono',
162
165
  valueStyles,
163
166
  )}
164
167
  >
@@ -184,14 +187,14 @@ const NotebookPromptResult = ({ cell, promptResults }: NotebookCellProps) => {
184
187
  }
185
188
 
186
189
  return (
187
- <div className={mx('flex is-full bg-groupSurface text-description border-t border-subduedSeparator', valueStyles)}>
190
+ <div className={mx('flex is-full bg-groupSurface text-description border-bs border-subduedSeparator', valueStyles)}>
188
191
  <NotebookTextEditor readOnly value={value} />
189
192
  </div>
190
193
  );
191
194
  };
192
195
 
193
196
  const NotebookTextEditor = ({
194
- extensions: extensionsParam,
197
+ extensions: extensionsProp,
195
198
  readOnly,
196
199
  ...props
197
200
  }: EditorContentProps & Pick<BasicExtensionsOptions, 'readOnly'>) => {
@@ -206,9 +209,9 @@ const NotebookTextEditor = ({
206
209
  createThemeExtensions({ themeMode, syntaxHighlighting: true }),
207
210
  createMarkdownExtensions(),
208
211
  decorateMarkdown(),
209
- extensionsParam,
212
+ extensionsProp,
210
213
  ].filter(isNonNullable);
211
- }, [extensionsParam]);
214
+ }, [extensionsProp]);
212
215
 
213
216
  return <EditorContent {...props} extensions={extensions} selectionEnd />;
214
217
  };
@@ -3,12 +3,13 @@
3
3
  //
4
4
 
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import * as Effect from 'effect/Effect';
7
+ import React, { useMemo } from 'react';
6
8
 
7
- import { IntentPlugin, SettingsPlugin } from '@dxos/app-framework';
8
9
  import { withPluginManager } from '@dxos/app-framework/testing';
9
10
  import { AutomationPlugin } from '@dxos/plugin-automation';
10
11
  import { ClientPlugin } from '@dxos/plugin-client';
11
- import { SpacePlugin } from '@dxos/plugin-space';
12
+ import { corePlugins } from '@dxos/plugin-testing';
12
13
  import { withLayout, withTheme } from '@dxos/react-ui/testing';
13
14
 
14
15
  import { createNotebook } from '../../testing';
@@ -16,24 +17,28 @@ import { translations } from '../../translations';
16
17
 
17
18
  import { NotebookStack } from './NotebookStack';
18
19
 
20
+ // TODO(wittjosiah): ECHO objects don't work when passed via Storybook args.
21
+ const NotebookStackStory = () => {
22
+ const notebook = useMemo(() => createNotebook(), []);
23
+ return <NotebookStack notebook={notebook} />;
24
+ };
25
+
19
26
  const meta = {
20
27
  title: 'plugins/plugin-script/NotebookStack',
21
- component: NotebookStack,
28
+ component: NotebookStackStory,
22
29
  decorators: [
23
30
  withTheme,
24
- withLayout({ container: 'column', classNames: 'is-prose' }),
25
- // TODO(burdon): Factor out Surface to avoid dependency on app-framework.
31
+ withLayout({ layout: 'column', classNames: 'is-proseMaxWidth' }),
26
32
  withPluginManager({
27
33
  plugins: [
34
+ ...corePlugins(),
28
35
  ClientPlugin({
29
- onClientInitialized: async ({ client }) => {
30
- await client.halo.createIdentity();
31
- await client.spaces.waitUntilReady();
32
- },
36
+ onClientInitialized: ({ client }) =>
37
+ Effect.gen(function* () {
38
+ yield* Effect.promise(() => client.halo.createIdentity());
39
+ yield* Effect.promise(() => client.spaces.waitUntilReady());
40
+ }),
33
41
  }),
34
- SpacePlugin({}),
35
- SettingsPlugin(),
36
- IntentPlugin(),
37
42
  AutomationPlugin(),
38
43
  ],
39
44
  }),
@@ -41,14 +46,10 @@ const meta = {
41
46
  parameters: {
42
47
  translations,
43
48
  },
44
- } satisfies Meta<typeof NotebookStack>;
49
+ } satisfies Meta<typeof NotebookStackStory>;
45
50
 
46
51
  export default meta;
47
52
 
48
53
  type Story = StoryObj<typeof meta>;
49
54
 
50
- export const Default: Story = {
51
- args: {
52
- notebook: createNotebook(),
53
- },
54
- };
55
+ export const Default: Story = {};
@@ -20,7 +20,7 @@ export type NotebookStackProps = ThemedClassName<
20
20
  {
21
21
  notebook?: Notebook.Notebook;
22
22
  onRearrange?: StackProps['onRearrange'];
23
- } & (Pick<NotebookSectionProps, 'space' | 'graph' | 'promptResults' | 'onCellInsert' | 'onCellDelete'> &
23
+ } & (Pick<NotebookSectionProps, 'db' | 'graph' | 'promptResults' | 'onCellInsert' | 'onCellDelete'> &
24
24
  Pick<TypescriptEditorProps, 'env'>)
25
25
  >;
26
26
 
@@ -39,7 +39,7 @@ type NotebookSectionProps = NotebookCellProps;
39
39
 
40
40
  const NotebookSection = ({
41
41
  cell,
42
- space,
42
+ db,
43
43
  env,
44
44
  promptResults,
45
45
  onCellInsert,
@@ -73,13 +73,13 @@ const NotebookSection = ({
73
73
  <StackItem.DragPreview>
74
74
  {({ item: cell }) => (
75
75
  <StackItem.Content classNames='overflow-visible bg-groupSurface border border-subduedSeparator'>
76
- <NotebookCell space={space} cell={cell} env={env} dragging />
76
+ <NotebookCell db={db} cell={cell} env={env} dragging />
77
77
  </StackItem.Content>
78
78
  )}
79
79
  </StackItem.DragPreview>
80
80
 
81
81
  <StackItem.Content classNames='overflow-visible'>
82
- <NotebookCell space={space} cell={cell} env={env} promptResults={promptResults} {...props} />
82
+ <NotebookCell db={db} cell={cell} env={env} promptResults={promptResults} {...props} />
83
83
  </StackItem.Content>
84
84
  </StackItem.Root>
85
85
  );
@@ -0,0 +1,100 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React, { useCallback, useMemo, useState } from 'react';
7
+
8
+ import { createDocAccessor } from '@dxos/echo-db';
9
+ import { QuerySandbox } from '@dxos/echo-query';
10
+ import { createObject } from '@dxos/react-client/echo';
11
+ import { Toolbar, useAsyncEffect } from '@dxos/react-ui';
12
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
13
+ import { Layout } from '@dxos/react-ui-mosaic';
14
+ import { Json } from '@dxos/react-ui-syntax-highlighter';
15
+ import { createDataExtensions } from '@dxos/ui-editor';
16
+ import { trim } from '@dxos/util';
17
+
18
+ import { QueryEditor, type QueryEditorProps } from './QueryEditor';
19
+
20
+ const SCRIPT = trim`
21
+ Query.select(Filter.type('dxos.org/type/Person'))
22
+ `;
23
+
24
+ const DefaultStory = (props: QueryEditorProps) => {
25
+ const object = useMemo(() => createObject({ content: SCRIPT }), []);
26
+ const [result, setResult] = useState<object | undefined>({});
27
+ const [sandbox, setSandbox] = useState<QuerySandbox>();
28
+
29
+ useAsyncEffect(async () => {
30
+ const sandbox = new QuerySandbox();
31
+ await sandbox.open();
32
+ setSandbox(sandbox);
33
+
34
+ return () => {
35
+ void sandbox.close();
36
+ };
37
+ }, []);
38
+
39
+ const extensions = useMemo(
40
+ () => [
41
+ createDataExtensions({
42
+ id: object.id,
43
+ text: createDocAccessor(object, ['content']),
44
+ }),
45
+ ],
46
+ [],
47
+ );
48
+
49
+ const handleRun = useCallback(async () => {
50
+ try {
51
+ const result = sandbox?.eval(object.content);
52
+
53
+ setResult({
54
+ timestamp: Date.now(),
55
+ result,
56
+ });
57
+ } catch (err) {
58
+ setResult({
59
+ timestamp: Date.now(),
60
+ error: String(err),
61
+ });
62
+ }
63
+ }, [object, sandbox]);
64
+
65
+ return (
66
+ <Layout.Main toolbar>
67
+ {/* <ScriptToolbar script={script} state={{}} /> */}
68
+ <Toolbar.Root>
69
+ <Toolbar.Button onClick={handleRun}>Run</Toolbar.Button>
70
+ </Toolbar.Root>
71
+ <div role='none' className='grid grid-rows-[1fr_min-content] bs-full overflow-hidden text-sm'>
72
+ <QueryEditor {...props} initialValue={object.content} extensions={extensions} />
73
+ <Json data={result} classNames='shrink-0 p-2 border-bs border-subduedSeparator' />
74
+ </div>
75
+ </Layout.Main>
76
+ );
77
+ };
78
+
79
+ const meta = {
80
+ title: 'plugins/plugin-script/QueryEditor',
81
+ component: QueryEditor,
82
+ render: DefaultStory,
83
+ decorators: [
84
+ withTheme,
85
+ withLayout({
86
+ layout: 'column',
87
+ classNames: 'is-proseMaxWidth',
88
+ }),
89
+ ],
90
+ } satisfies Meta<typeof DefaultStory>;
91
+
92
+ export default meta;
93
+
94
+ type Story = StoryObj<typeof meta>;
95
+
96
+ export const Default: Story = {
97
+ args: {
98
+ id: 'test',
99
+ },
100
+ };
@@ -0,0 +1,47 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import React, { useState } from 'react';
6
+ import { ScriptTarget } from 'typescript';
7
+
8
+ import queryApi from '@dxos/echo-query/api.d.ts?raw';
9
+ import { useAsyncEffect } from '@dxos/react-ui';
10
+
11
+ import { Compiler } from '../../compiler';
12
+ import { TypescriptEditor, type TypescriptEditorProps } from '../TypescriptEditor';
13
+
14
+ const GLOBALS = `
15
+ namespace QueryAPI {
16
+ ${queryApi}
17
+ }
18
+
19
+ declare global {
20
+ const Query: typeof QueryAPI.Query;
21
+ const Filter: typeof QueryAPI.Filter;
22
+ const Order: typeof QueryAPI.Order;
23
+ }
24
+
25
+ export {};
26
+ `;
27
+
28
+ export type QueryEditorProps = Omit<TypescriptEditorProps, 'env'>;
29
+
30
+ export const QueryEditor = (props: QueryEditorProps) => {
31
+ const [compiler, setCompiler] = useState<Compiler>();
32
+
33
+ useAsyncEffect(async () => {
34
+ const compiler = new Compiler({
35
+ lib: ['ES5'],
36
+ target: ScriptTarget.ES2022,
37
+ });
38
+ await compiler.initialize(GLOBALS);
39
+ setCompiler(compiler);
40
+ }, []);
41
+
42
+ if (!compiler) {
43
+ return null;
44
+ }
45
+
46
+ return <TypescriptEditor {...props} env={compiler.environment} />;
47
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export * from './QueryEditor';
@@ -4,11 +4,14 @@
4
4
 
5
5
  import React, { useMemo } from 'react';
6
6
 
7
+ import { type SurfaceComponentProps } from '@dxos/app-framework/react';
8
+ import { Obj } from '@dxos/echo';
9
+ import { createDocAccessor } from '@dxos/echo-db';
7
10
  import { type Script } from '@dxos/functions';
8
- import { createDocAccessor, getSpace } from '@dxos/react-client/echo';
11
+ import { getSpace } from '@dxos/react-client/echo';
9
12
  import { useIdentity } from '@dxos/react-client/halo';
10
- import { createDataExtensions, listener, stackItemContentEditorClassNames } from '@dxos/react-ui-editor';
11
- import { StackItem } from '@dxos/react-ui-stack';
13
+ import { Layout } from '@dxos/react-ui-mosaic';
14
+ import { createDataExtensions, listener, stackItemContentEditorClassNames } from '@dxos/ui-editor';
12
15
 
13
16
  import { useDeployState, useToolbarState } from '../hooks';
14
17
  import { type ScriptSettings } from '../types';
@@ -16,42 +19,54 @@ import { type ScriptSettings } from '../types';
16
19
  import { ScriptToolbar } from './ScriptToolbar';
17
20
  import { TypescriptEditor, type TypescriptEditorProps } from './TypescriptEditor';
18
21
 
19
- export type ScriptEditorProps = {
20
- role: string;
21
- script: Script.Script;
22
- settings?: ScriptSettings;
23
- } & Pick<TypescriptEditorProps, 'env'>;
22
+ export type ScriptEditorProps = SurfaceComponentProps<
23
+ Script.Script,
24
+ {
25
+ settings?: ScriptSettings;
26
+ } & Pick<TypescriptEditorProps, 'env'>
27
+ >;
24
28
 
25
- export const ScriptContainer = ({ role, script, settings = { editorInputMode: 'vscode' }, env }: ScriptEditorProps) => {
29
+ export const ScriptContainer = ({
30
+ role,
31
+ subject: script,
32
+ settings = { editorInputMode: 'vscode' },
33
+ env,
34
+ }: ScriptEditorProps) => {
26
35
  const identity = useIdentity();
27
36
  const space = getSpace(script);
28
37
  const state = useToolbarState();
29
- useDeployState({ state, script });
38
+ useDeployState({ script, state });
30
39
 
31
- const extensions = useMemo(
32
- () =>
33
- script.source.target
34
- ? [
35
- listener({
36
- onChange: ({ text }) => {
37
- if (script.source.target?.content !== text) {
38
- script.changed = true;
39
- }
40
- },
41
- }),
42
- createDataExtensions({
43
- id: script.id,
44
- text: createDocAccessor(script.source.target, ['content']),
45
- space,
46
- identity,
47
- }),
48
- ]
49
- : [],
50
- [identity, space, script, script.source.target],
51
- );
40
+ const extensions = useMemo(() => {
41
+ if (!script.source.target) {
42
+ return [];
43
+ }
44
+
45
+ return [
46
+ createDataExtensions({
47
+ id: script.id,
48
+ text: createDocAccessor(script.source.target, ['content']),
49
+ messenger: space,
50
+ identity,
51
+ }),
52
+ listener({
53
+ onChange: ({ text }) => {
54
+ if (script.source.target?.content !== text) {
55
+ Obj.change(script, (s) => {
56
+ s.changed = true;
57
+ });
58
+ }
59
+ },
60
+ }),
61
+ ];
62
+ }, [identity, space, script, script.source.target]);
63
+
64
+ if (!extensions.length) {
65
+ return null;
66
+ }
52
67
 
53
68
  return (
54
- <StackItem.Content toolbar>
69
+ <Layout.Main role={role} toolbar>
55
70
  <ScriptToolbar state={state} role={role} script={script} />
56
71
  <TypescriptEditor
57
72
  id={script.id}
@@ -62,7 +77,7 @@ export const ScriptContainer = ({ role, script, settings = { editorInputMode: 'v
62
77
  inputMode={settings.editorInputMode}
63
78
  toolbar
64
79
  />
65
- </StackItem.Content>
80
+ </Layout.Main>
66
81
  );
67
82
  };
68
83
 
@@ -2,46 +2,69 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
+ import { Atom, Registry } from '@effect-atom/atom-react';
5
6
  import { type Meta, type StoryObj } from '@storybook/react-vite';
7
+ import React, { useMemo } from 'react';
6
8
 
7
- import { IntentPlugin } from '@dxos/app-framework';
9
+ import { OperationPlugin } from '@dxos/app-framework';
8
10
  import { withPluginManager } from '@dxos/app-framework/testing';
9
11
  import { Script } from '@dxos/functions';
10
12
  import { ClientPlugin } from '@dxos/plugin-client';
11
13
  import { withLayout, withTheme } from '@dxos/react-ui/testing';
12
14
 
15
+ import { type ScriptToolbarState, type ScriptToolbarStateStore } from '../../hooks';
13
16
  import { translations } from '../../translations';
14
17
 
15
18
  import { ScriptToolbar } from './ScriptToolbar';
16
19
 
20
+ // Create a mock store for stories.
21
+ const createMockStore = (initialState: ScriptToolbarState = {}): ScriptToolbarStateStore => {
22
+ const registry = Registry.make();
23
+ const atom = Atom.make<ScriptToolbarState>(initialState);
24
+ return {
25
+ atom,
26
+ get value() {
27
+ return registry.get(atom);
28
+ },
29
+ update: (updater) => registry.set(atom, updater(registry.get(atom))),
30
+ set: (key, value) => registry.set(atom, { ...registry.get(atom), [key]: value }),
31
+ };
32
+ };
33
+
34
+ // TODO(wittjosiah): ECHO objects don't work when passed via Storybook args.
35
+ const ScriptToolbarStory = () => {
36
+ const state = useMemo(() => createMockStore(), []);
37
+ const script = useMemo(
38
+ () =>
39
+ Script.make({
40
+ name: 'test',
41
+ description: 'test',
42
+ source: 'test',
43
+ }),
44
+ [],
45
+ );
46
+ return <ScriptToolbar state={state} script={script} />;
47
+ };
48
+
17
49
  const meta = {
18
50
  title: 'plugins/plugin-script/Toolbar',
19
- component: ScriptToolbar,
51
+ component: ScriptToolbarStory,
20
52
  // TODO(wittjosiah): Try to write story which does not depend on plugin manager.
21
53
  decorators: [
22
54
  withTheme,
23
- withLayout({ classNames: 'is-prose' }),
55
+ withLayout({ classNames: 'is-proseMaxWidth' }),
24
56
  withPluginManager({
25
- plugins: [IntentPlugin(), ClientPlugin({})],
57
+ plugins: [OperationPlugin(), ClientPlugin({})],
26
58
  }),
27
59
  ],
28
60
  parameters: {
29
61
  layout: 'centered',
30
62
  translations,
31
63
  },
32
- } satisfies Meta<typeof ScriptToolbar>;
64
+ } satisfies Meta<typeof ScriptToolbarStory>;
33
65
 
34
66
  export default meta;
35
67
 
36
68
  type Story = StoryObj<typeof meta>;
37
69
 
38
- export const Default: Story = {
39
- args: {
40
- state: {},
41
- script: Script.make({
42
- name: 'test',
43
- description: 'test',
44
- source: 'test',
45
- }),
46
- },
47
- };
70
+ export const Default: Story = {};
@@ -12,14 +12,13 @@ import {
12
12
  type ActionGraphProps,
13
13
  MenuProvider,
14
14
  ToolbarMenu,
15
- atomFromSignal,
16
15
  createGapSeparator,
17
16
  useMenuActions,
18
17
  } from '@dxos/react-ui-menu';
19
18
 
20
19
  import {
21
20
  type CreateDeployOptions,
22
- type ScriptToolbarState,
21
+ type ScriptToolbarStateStore,
23
22
  createDeploy,
24
23
  createFormat,
25
24
  createTemplateSelect,
@@ -30,7 +29,7 @@ import { meta } from '../../meta';
30
29
  export type ScriptToolbarProps = {
31
30
  role?: string;
32
31
  script: Script.Script;
33
- state: ScriptToolbarState;
32
+ state: ScriptToolbarStateStore;
34
33
  };
35
34
 
36
35
  export const ScriptToolbar = ({ script, role, state }: ScriptToolbarProps) => {
@@ -49,17 +48,15 @@ export const ScriptToolbar = ({ script, role, state }: ScriptToolbarProps) => {
49
48
  };
50
49
 
51
50
  const createToolbarActions = ({ state, script, ...options }: CreateDeployOptions): Atom.Atom<ActionGraphProps> =>
52
- Atom.make((get) =>
53
- get(
54
- atomFromSignal(() => {
55
- const templateSelect = createTemplateSelect(script);
56
- const format = createFormat(script);
57
- const gap = createGapSeparator();
58
- const deploy = createDeploy({ state, script, ...options });
59
- return {
60
- nodes: [...templateSelect.nodes, ...format.nodes, ...gap.nodes, ...deploy.nodes],
61
- edges: [...templateSelect.edges, ...format.edges, ...gap.edges, ...deploy.edges],
62
- };
63
- }),
64
- ),
65
- );
51
+ Atom.make((get) => {
52
+ // Subscribe to state changes.
53
+ get(state.atom);
54
+ const templateSelect = createTemplateSelect(script);
55
+ const format = createFormat(script);
56
+ const gap = createGapSeparator();
57
+ const deploy = createDeploy({ state, script, ...options });
58
+ return {
59
+ nodes: [...templateSelect.nodes, ...format.nodes, ...gap.nodes, ...deploy.nodes],
60
+ edges: [...templateSelect.edges, ...format.edges, ...gap.edges, ...deploy.edges],
61
+ };
62
+ });