@dxos/plugin-script 0.8.4-main.3eb6e50203 → 0.8.4-main.4a85c3132b

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 (269) hide show
  1. package/README.md +15 -13
  2. package/dist/lib/browser/{chunk-BU6CGVU2.mjs → DeploymentDialog-IIOXAS47.mjs} +11 -10
  3. package/dist/lib/browser/DeploymentDialog-IIOXAS47.mjs.map +7 -0
  4. package/dist/lib/browser/{NotebookContainer-UQ4I24R6.mjs → NotebookContainer-VVZOKGRC.mjs} +31 -26
  5. package/dist/lib/browser/NotebookContainer-VVZOKGRC.mjs.map +7 -0
  6. package/dist/lib/browser/ScriptContainer-A5SSIUH6.mjs +93 -0
  7. package/dist/lib/browser/ScriptContainer-A5SSIUH6.mjs.map +7 -0
  8. package/dist/lib/browser/ScriptObjectSettings-HYYC7KXC.mjs +294 -0
  9. package/dist/lib/browser/ScriptObjectSettings-HYYC7KXC.mjs.map +7 -0
  10. package/dist/lib/browser/ScriptPluginSettings-UTWA7CBT.mjs +55 -0
  11. package/dist/lib/browser/ScriptPluginSettings-UTWA7CBT.mjs.map +7 -0
  12. package/dist/lib/browser/ScriptProperties-HREPUE65.mjs +28 -0
  13. package/dist/lib/browser/ScriptProperties-HREPUE65.mjs.map +7 -0
  14. package/dist/lib/browser/TestContainer-D4Y2K2TT.mjs +39 -0
  15. package/dist/lib/browser/TestContainer-D4Y2K2TT.mjs.map +7 -0
  16. package/dist/lib/browser/{blueprint-definition-5RFKE7VK.mjs → blueprint-definition-YMZEJBAZ.mjs} +4 -5
  17. package/dist/lib/browser/blueprint-definition-YMZEJBAZ.mjs.map +7 -0
  18. package/dist/lib/browser/blueprints/index.mjs +3 -3
  19. package/dist/lib/browser/{chunk-3BSF5BIA.mjs → chunk-6IXFDTAI.mjs} +6 -6
  20. package/dist/lib/browser/{chunk-3BSF5BIA.mjs.map → chunk-6IXFDTAI.mjs.map} +3 -3
  21. package/dist/lib/browser/chunk-ATTZUDT7.mjs +67 -0
  22. package/dist/lib/browser/chunk-ATTZUDT7.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-G3XIOLLI.mjs +174 -0
  24. package/dist/lib/browser/chunk-G3XIOLLI.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-4N5TLXEJ.mjs → chunk-J7PGML5B.mjs} +3 -3
  26. package/dist/lib/browser/chunk-J7PGML5B.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-WWCDIB6Z.mjs → chunk-MUEVLYXJ.mjs} +89 -249
  28. package/dist/lib/browser/chunk-MUEVLYXJ.mjs.map +7 -0
  29. package/dist/lib/browser/chunk-PLDBKKYO.mjs +789 -0
  30. package/dist/lib/browser/chunk-PLDBKKYO.mjs.map +7 -0
  31. package/dist/lib/browser/chunk-Q66L5EUR.mjs +20 -0
  32. package/dist/lib/browser/chunk-Q66L5EUR.mjs.map +7 -0
  33. package/dist/lib/browser/{chunk-F3QKSKSF.mjs → chunk-TW27W3EL.mjs} +11 -17
  34. package/dist/lib/browser/chunk-TW27W3EL.mjs.map +7 -0
  35. package/dist/lib/browser/chunk-ZYU2LP6U.mjs +11 -0
  36. package/dist/lib/browser/chunk-ZYU2LP6U.mjs.map +7 -0
  37. package/dist/lib/browser/{compiler-VPUVTFQD.mjs → compiler-53G6ZHQM.mjs} +10 -72
  38. package/dist/lib/browser/compiler-53G6ZHQM.mjs.map +7 -0
  39. package/dist/lib/browser/index.mjs +24 -19
  40. package/dist/lib/browser/index.mjs.map +1 -1
  41. package/dist/lib/browser/meta.json +1 -1
  42. package/dist/lib/browser/{operation-resolver-NYDY7GDT.mjs → operation-resolver-CYEISDDK.mjs} +4 -8
  43. package/dist/lib/browser/operation-resolver-CYEISDDK.mjs.map +7 -0
  44. package/dist/lib/browser/{react-surface-FYOQSC6S.mjs → react-surface-26P6HAFD.mjs} +14 -13
  45. package/dist/lib/browser/react-surface-26P6HAFD.mjs.map +7 -0
  46. package/dist/lib/browser/{settings-5SF77MRH.mjs → settings-76UM7442.mjs} +3 -3
  47. package/dist/lib/browser/templates/index.mjs +1 -1
  48. package/dist/lib/browser/types/index.mjs +2 -2
  49. package/dist/lib/node-esm/{chunk-U6PXM2HT.mjs → DeploymentDialog-ZHPHEV2H.mjs} +11 -10
  50. package/dist/lib/node-esm/DeploymentDialog-ZHPHEV2H.mjs.map +7 -0
  51. package/dist/lib/node-esm/{NotebookContainer-DQGZ6QHI.mjs → NotebookContainer-ZLWTNMQA.mjs} +31 -26
  52. package/dist/lib/node-esm/NotebookContainer-ZLWTNMQA.mjs.map +7 -0
  53. package/dist/lib/node-esm/ScriptContainer-S4UKQAWP.mjs +94 -0
  54. package/dist/lib/node-esm/ScriptContainer-S4UKQAWP.mjs.map +7 -0
  55. package/dist/lib/node-esm/ScriptObjectSettings-C5QBRERY.mjs +295 -0
  56. package/dist/lib/node-esm/ScriptObjectSettings-C5QBRERY.mjs.map +7 -0
  57. package/dist/lib/node-esm/ScriptPluginSettings-MFACDW4R.mjs +56 -0
  58. package/dist/lib/node-esm/ScriptPluginSettings-MFACDW4R.mjs.map +7 -0
  59. package/dist/lib/node-esm/ScriptProperties-FMNIX3KU.mjs +29 -0
  60. package/dist/lib/node-esm/ScriptProperties-FMNIX3KU.mjs.map +7 -0
  61. package/dist/lib/node-esm/TestContainer-AO45YPGV.mjs +40 -0
  62. package/dist/lib/node-esm/TestContainer-AO45YPGV.mjs.map +7 -0
  63. package/dist/lib/node-esm/{blueprint-definition-EYL5GNDC.mjs → blueprint-definition-5MGY6BRQ.mjs} +4 -5
  64. package/dist/lib/node-esm/blueprint-definition-5MGY6BRQ.mjs.map +7 -0
  65. package/dist/lib/node-esm/blueprints/index.mjs +3 -3
  66. package/dist/lib/node-esm/chunk-5BG7OJGQ.mjs +176 -0
  67. package/dist/lib/node-esm/chunk-5BG7OJGQ.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-H46R2RS5.mjs +790 -0
  69. package/dist/lib/node-esm/chunk-H46R2RS5.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-JGN7TDJH.mjs +69 -0
  71. package/dist/lib/node-esm/chunk-JGN7TDJH.mjs.map +7 -0
  72. package/dist/lib/node-esm/{chunk-V37R7KB5.mjs → chunk-QG6ANK4B.mjs} +3 -3
  73. package/dist/lib/node-esm/chunk-QG6ANK4B.mjs.map +7 -0
  74. package/dist/lib/node-esm/{chunk-Y3G5NCTP.mjs → chunk-S7DSCLOW.mjs} +11 -16
  75. package/dist/lib/node-esm/chunk-S7DSCLOW.mjs.map +7 -0
  76. package/dist/lib/node-esm/chunk-TZ2EBTPQ.mjs +22 -0
  77. package/dist/lib/node-esm/chunk-TZ2EBTPQ.mjs.map +7 -0
  78. package/dist/lib/node-esm/chunk-UFBVE33O.mjs +12 -0
  79. package/dist/lib/node-esm/chunk-UFBVE33O.mjs.map +7 -0
  80. package/dist/lib/node-esm/{chunk-KRVL7UYI.mjs → chunk-WWD5LUU6.mjs} +6 -6
  81. package/dist/lib/node-esm/{chunk-KRVL7UYI.mjs.map → chunk-WWD5LUU6.mjs.map} +3 -3
  82. package/dist/lib/node-esm/{chunk-ECRSTVR6.mjs → chunk-ZDJ2FI7E.mjs} +89 -249
  83. package/dist/lib/node-esm/chunk-ZDJ2FI7E.mjs.map +7 -0
  84. package/dist/lib/node-esm/{compiler-WUOSY6MS.mjs → compiler-HHQW7EP3.mjs} +10 -72
  85. package/dist/lib/node-esm/compiler-HHQW7EP3.mjs.map +7 -0
  86. package/dist/lib/node-esm/index.mjs +24 -19
  87. package/dist/lib/node-esm/index.mjs.map +1 -1
  88. package/dist/lib/node-esm/meta.json +1 -1
  89. package/dist/lib/node-esm/{operation-resolver-AJNJXGCE.mjs → operation-resolver-HFFDXWND.mjs} +4 -8
  90. package/dist/lib/node-esm/operation-resolver-HFFDXWND.mjs.map +7 -0
  91. package/dist/lib/node-esm/{react-surface-LREMOVNJ.mjs → react-surface-THCIK266.mjs} +14 -13
  92. package/dist/lib/node-esm/react-surface-THCIK266.mjs.map +7 -0
  93. package/dist/lib/node-esm/{settings-ILI762CY.mjs → settings-CCHDPLFJ.mjs} +3 -3
  94. package/dist/lib/node-esm/templates/index.mjs +1 -1
  95. package/dist/lib/node-esm/types/index.mjs +2 -2
  96. package/dist/types/src/blueprints/index.d.ts +1 -1
  97. package/dist/types/src/blueprints/index.d.ts.map +1 -1
  98. package/dist/types/src/blueprints/script-blueprint.d.ts +3 -21
  99. package/dist/types/src/blueprints/script-blueprint.d.ts.map +1 -1
  100. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
  101. package/dist/types/src/capabilities/artifact-definition/artifact-definition.d.ts +1 -1
  102. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +1 -5
  103. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +1 -1
  105. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/compiler/compiler.d.ts +1 -1
  107. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +1 -1
  108. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +1 -1
  109. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/settings/settings.d.ts +1 -1
  111. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  112. package/dist/types/src/components/NotebookStack/NotebookCell.d.ts.map +1 -1
  113. package/dist/types/src/components/NotebookStack/NotebookStack.stories.d.ts.map +1 -1
  114. package/dist/types/src/components/QueryEditor/QueryEditor.stories.d.ts.map +1 -1
  115. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +3 -2
  116. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  117. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -1
  118. package/dist/types/src/components/TestPanel/index.d.ts +0 -1
  119. package/dist/types/src/components/TestPanel/index.d.ts.map +1 -1
  120. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  121. package/dist/types/src/components/index.d.ts +4 -5
  122. package/dist/types/src/components/index.d.ts.map +1 -1
  123. package/dist/types/src/constants.d.ts +2 -0
  124. package/dist/types/src/constants.d.ts.map +1 -0
  125. package/dist/types/src/{components → containers}/DeploymentDialog/DeploymentDialog.d.ts +0 -2
  126. package/dist/types/src/containers/DeploymentDialog/DeploymentDialog.d.ts.map +1 -0
  127. package/dist/types/src/{components → containers}/DeploymentDialog/DeploymentDialog.stories.d.ts.map +1 -1
  128. package/dist/types/src/containers/DeploymentDialog/index.d.ts +3 -0
  129. package/dist/types/src/containers/DeploymentDialog/index.d.ts.map +1 -0
  130. package/dist/types/src/{components → containers/NotebookContainer}/NotebookContainer.d.ts +2 -3
  131. package/dist/types/src/containers/NotebookContainer/NotebookContainer.d.ts.map +1 -0
  132. package/dist/types/src/containers/NotebookContainer/NotebookContainer.stories.d.ts.map +1 -0
  133. package/dist/types/src/containers/NotebookContainer/index.d.ts +3 -0
  134. package/dist/types/src/containers/NotebookContainer/index.d.ts.map +1 -0
  135. package/dist/types/src/{components → containers/ScriptContainer}/ScriptContainer.d.ts +2 -3
  136. package/dist/types/src/containers/ScriptContainer/ScriptContainer.d.ts.map +1 -0
  137. package/dist/types/src/containers/ScriptContainer/index.d.ts +3 -0
  138. package/dist/types/src/containers/ScriptContainer/index.d.ts.map +1 -0
  139. package/dist/types/src/{components/Settings → containers/ScriptObjectSettings}/ScriptObjectSettings.d.ts +0 -1
  140. package/dist/types/src/containers/ScriptObjectSettings/ScriptObjectSettings.d.ts.map +1 -0
  141. package/dist/types/src/containers/ScriptObjectSettings/index.d.ts +3 -0
  142. package/dist/types/src/containers/ScriptObjectSettings/index.d.ts.map +1 -0
  143. package/dist/types/src/containers/ScriptPluginSettings/ScriptPluginSettings.d.ts.map +1 -0
  144. package/dist/types/src/containers/ScriptPluginSettings/index.d.ts +3 -0
  145. package/dist/types/src/containers/ScriptPluginSettings/index.d.ts.map +1 -0
  146. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts +7 -0
  147. package/dist/types/src/containers/ScriptProperties/ScriptProperties.d.ts.map +1 -0
  148. package/dist/types/src/containers/ScriptProperties/index.d.ts +3 -0
  149. package/dist/types/src/containers/ScriptProperties/index.d.ts.map +1 -0
  150. package/dist/types/src/containers/TestContainer/TestContainer.d.ts.map +1 -0
  151. package/dist/types/src/containers/TestContainer/index.d.ts +3 -0
  152. package/dist/types/src/containers/TestContainer/index.d.ts.map +1 -0
  153. package/dist/types/src/containers/index.d.ts +9 -0
  154. package/dist/types/src/containers/index.d.ts.map +1 -0
  155. package/dist/types/src/hooks/deploy.d.ts +2 -1
  156. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  157. package/dist/types/src/hooks/format.d.ts +1 -0
  158. package/dist/types/src/hooks/format.d.ts.map +1 -1
  159. package/dist/types/src/hooks/template.d.ts +1 -0
  160. package/dist/types/src/hooks/template.d.ts.map +1 -1
  161. package/dist/types/src/index.d.ts +1 -0
  162. package/dist/types/src/index.d.ts.map +1 -1
  163. package/dist/types/src/templates/chess-bot.d.ts.map +1 -1
  164. package/dist/types/src/templates/commentary.d.ts.map +1 -1
  165. package/dist/types/src/types/Notebook.d.ts +12 -4
  166. package/dist/types/src/types/Notebook.d.ts.map +1 -1
  167. package/dist/types/tsconfig.tsbuildinfo +1 -1
  168. package/package.json +74 -74
  169. package/src/blueprints/index.ts +1 -1
  170. package/src/blueprints/script-blueprint.ts +14 -7
  171. package/src/capabilities/blueprint-definition/blueprint-definition.ts +4 -11
  172. package/src/capabilities/operation-resolver/operation-resolver.ts +1 -1
  173. package/src/capabilities/react-surface/react-surface.tsx +13 -11
  174. package/src/components/FrameContainer/FrameContainer.tsx +2 -3
  175. package/src/components/FrameContainer/frame.html +21 -21
  176. package/src/components/NotebookStack/NotebookCell.tsx +7 -9
  177. package/src/components/NotebookStack/NotebookStack.stories.tsx +2 -3
  178. package/src/components/NotebookStack/NotebookStack.tsx +3 -3
  179. package/src/components/QueryEditor/QueryEditor.stories.tsx +16 -14
  180. package/src/components/ScriptToolbar/ScriptToolbar.stories.tsx +4 -5
  181. package/src/components/ScriptToolbar/ScriptToolbar.tsx +7 -7
  182. package/src/components/TestPanel/TestPanel.tsx +6 -6
  183. package/src/components/TestPanel/index.ts +0 -1
  184. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +16 -14
  185. package/src/components/TypescriptEditor/TypescriptEditor.tsx +1 -1
  186. package/src/components/index.ts +4 -9
  187. package/src/constants.ts +7 -0
  188. package/src/{components → containers}/DeploymentDialog/DeploymentDialog.stories.tsx +3 -4
  189. package/src/{components → containers}/DeploymentDialog/DeploymentDialog.tsx +2 -6
  190. package/src/containers/DeploymentDialog/index.ts +7 -0
  191. package/src/{components → containers/NotebookContainer}/NotebookContainer.stories.tsx +7 -7
  192. package/src/{components → containers/NotebookContainer}/NotebookContainer.tsx +36 -39
  193. package/src/containers/NotebookContainer/index.ts +7 -0
  194. package/src/{components → containers/ScriptContainer}/ScriptContainer.tsx +20 -20
  195. package/src/containers/ScriptContainer/index.ts +7 -0
  196. package/src/{components/Settings → containers/ScriptObjectSettings}/ScriptObjectSettings.tsx +3 -21
  197. package/src/containers/ScriptObjectSettings/index.ts +7 -0
  198. package/src/containers/ScriptPluginSettings/index.ts +7 -0
  199. package/src/containers/ScriptProperties/ScriptProperties.tsx +33 -0
  200. package/src/containers/ScriptProperties/index.ts +7 -0
  201. package/src/{components/TestPanel → containers/TestContainer}/TestContainer.tsx +7 -6
  202. package/src/containers/TestContainer/index.ts +7 -0
  203. package/src/containers/index.ts +13 -0
  204. package/src/e2e/deploy.test.ts +1 -1
  205. package/src/hooks/deploy.ts +5 -5
  206. package/src/hooks/format.ts +1 -0
  207. package/src/hooks/template.ts +2 -2
  208. package/src/index.ts +1 -0
  209. package/src/templates/chess-bot.ts +2 -2
  210. package/src/templates/commentary.ts +4 -3
  211. package/src/types/Notebook.ts +4 -4
  212. package/dist/lib/browser/DeploymentDialog-XUAFCNI7.mjs +0 -14
  213. package/dist/lib/browser/DeploymentDialog-XUAFCNI7.mjs.map +0 -7
  214. package/dist/lib/browser/NotebookContainer-UQ4I24R6.mjs.map +0 -7
  215. package/dist/lib/browser/ScriptContainer-NB76645V.mjs +0 -149
  216. package/dist/lib/browser/ScriptContainer-NB76645V.mjs.map +0 -7
  217. package/dist/lib/browser/blueprint-definition-5RFKE7VK.mjs.map +0 -7
  218. package/dist/lib/browser/chunk-4N5TLXEJ.mjs.map +0 -7
  219. package/dist/lib/browser/chunk-BKGEAUUH.mjs +0 -270
  220. package/dist/lib/browser/chunk-BKGEAUUH.mjs.map +0 -7
  221. package/dist/lib/browser/chunk-BU6CGVU2.mjs.map +0 -7
  222. package/dist/lib/browser/chunk-F3QKSKSF.mjs.map +0 -7
  223. package/dist/lib/browser/chunk-I7CSE6T3.mjs +0 -110
  224. package/dist/lib/browser/chunk-I7CSE6T3.mjs.map +0 -7
  225. package/dist/lib/browser/chunk-LYMPME7J.mjs +0 -609
  226. package/dist/lib/browser/chunk-LYMPME7J.mjs.map +0 -7
  227. package/dist/lib/browser/chunk-WWCDIB6Z.mjs.map +0 -7
  228. package/dist/lib/browser/compiler-VPUVTFQD.mjs.map +0 -7
  229. package/dist/lib/browser/operation-resolver-NYDY7GDT.mjs.map +0 -7
  230. package/dist/lib/browser/react-surface-FYOQSC6S.mjs.map +0 -7
  231. package/dist/lib/node-esm/DeploymentDialog-GGWDQMEB.mjs +0 -15
  232. package/dist/lib/node-esm/DeploymentDialog-GGWDQMEB.mjs.map +0 -7
  233. package/dist/lib/node-esm/NotebookContainer-DQGZ6QHI.mjs.map +0 -7
  234. package/dist/lib/node-esm/ScriptContainer-PCNJFUWX.mjs +0 -150
  235. package/dist/lib/node-esm/ScriptContainer-PCNJFUWX.mjs.map +0 -7
  236. package/dist/lib/node-esm/blueprint-definition-EYL5GNDC.mjs.map +0 -7
  237. package/dist/lib/node-esm/chunk-3CKQUF55.mjs +0 -610
  238. package/dist/lib/node-esm/chunk-3CKQUF55.mjs.map +0 -7
  239. package/dist/lib/node-esm/chunk-3QBXN6QC.mjs +0 -271
  240. package/dist/lib/node-esm/chunk-3QBXN6QC.mjs.map +0 -7
  241. package/dist/lib/node-esm/chunk-ECRSTVR6.mjs.map +0 -7
  242. package/dist/lib/node-esm/chunk-SLU3KRV3.mjs +0 -112
  243. package/dist/lib/node-esm/chunk-SLU3KRV3.mjs.map +0 -7
  244. package/dist/lib/node-esm/chunk-U6PXM2HT.mjs.map +0 -7
  245. package/dist/lib/node-esm/chunk-V37R7KB5.mjs.map +0 -7
  246. package/dist/lib/node-esm/chunk-Y3G5NCTP.mjs.map +0 -7
  247. package/dist/lib/node-esm/compiler-WUOSY6MS.mjs.map +0 -7
  248. package/dist/lib/node-esm/operation-resolver-AJNJXGCE.mjs.map +0 -7
  249. package/dist/lib/node-esm/react-surface-LREMOVNJ.mjs.map +0 -7
  250. package/dist/types/src/components/DeploymentDialog/DeploymentDialog.d.ts.map +0 -1
  251. package/dist/types/src/components/DeploymentDialog/index.d.ts +0 -4
  252. package/dist/types/src/components/DeploymentDialog/index.d.ts.map +0 -1
  253. package/dist/types/src/components/NotebookContainer.d.ts.map +0 -1
  254. package/dist/types/src/components/NotebookContainer.stories.d.ts.map +0 -1
  255. package/dist/types/src/components/ScriptContainer.d.ts.map +0 -1
  256. package/dist/types/src/components/Settings/ScriptObjectSettings.d.ts.map +0 -1
  257. package/dist/types/src/components/Settings/ScriptPluginSettings.d.ts.map +0 -1
  258. package/dist/types/src/components/Settings/index.d.ts +0 -3
  259. package/dist/types/src/components/Settings/index.d.ts.map +0 -1
  260. package/dist/types/src/components/TestPanel/TestContainer.d.ts.map +0 -1
  261. package/src/components/DeploymentDialog/index.ts +0 -9
  262. package/src/components/Settings/index.ts +0 -6
  263. /package/dist/lib/browser/{settings-5SF77MRH.mjs.map → settings-76UM7442.mjs.map} +0 -0
  264. /package/dist/lib/node-esm/{settings-ILI762CY.mjs.map → settings-CCHDPLFJ.mjs.map} +0 -0
  265. /package/dist/types/src/{components → containers}/DeploymentDialog/DeploymentDialog.stories.d.ts +0 -0
  266. /package/dist/types/src/{components → containers/NotebookContainer}/NotebookContainer.stories.d.ts +0 -0
  267. /package/dist/types/src/{components/Settings → containers/ScriptPluginSettings}/ScriptPluginSettings.d.ts +0 -0
  268. /package/dist/types/src/{components/TestPanel → containers/TestContainer}/TestContainer.d.ts +0 -0
  269. /package/src/{components/Settings → containers/ScriptPluginSettings}/ScriptPluginSettings.tsx +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/Settings/ScriptObjectSettings.tsx", "../../../src/components/Settings/ScriptPluginSettings.tsx", "../../../src/components/TestPanel/TestPanel.tsx", "../../../src/components/TestPanel/TestContainer.tsx", "../../../src/components/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { Octokit } from '@octokit/core';\nimport React, { type ChangeEvent, useCallback, useState } from 'react';\n\nimport { ToolId } from '@dxos/ai';\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { SettingsOperation } from '@dxos/app-toolkit';\nimport { Blueprint, Template } from '@dxos/blueprints';\nimport { Filter, Obj, Ref } from '@dxos/echo';\nimport { Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { getInvocationUrl } from '@dxos/functions-runtime';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { useQuery } from '@dxos/react-client/echo';\nimport { Button, Clipboard, Input, useAsyncEffect, useControlledState, useTranslation } from '@dxos/react-ui';\nimport { AccessToken } from '@dxos/types';\nimport { kebabize } from '@dxos/util';\n\nimport { meta } from '../../meta';\n\nexport type ScriptObjectSettingsProps = {\n object: Script.Script;\n};\n\nexport const ScriptObjectSettings = ({ object }: ScriptObjectSettingsProps) => {\n return (\n <>\n <Binding object={object} />\n <BlueprintEditor object={object} />\n <Publishing object={object} />\n </>\n );\n};\n\nexport const ScriptProperties = ({ object }: ScriptObjectSettingsProps) => {\n const { t } = useTranslation(meta.id);\n return (\n <Input.Root>\n <Input.Label>{t('description label')}</Input.Label>\n <Input.TextInput\n placeholder={t('description placeholder')}\n value={object.description ?? ''}\n onChange={(event) => {\n Obj.change(object, (o) => {\n o.description = event.target.value;\n });\n }}\n />\n </Input.Root>\n );\n};\n\nconst BlueprintEditor = ({ object }: ScriptObjectSettingsProps) => {\n const { t } = useTranslation(meta.id);\n const db = Obj.getDatabase(object);\n const [fn] = useQuery(db, Filter.type(Function.Function, { source: Ref.make(object) }));\n const blueprints = useQuery(db, Filter.type(Blueprint.Blueprint));\n\n const [creating, setCreating] = useState(false);\n const [instructions, setInstructions] = useState<string>(`You can run the script \"${object.name ?? 'script'}\".`);\n const blueprintKey = `dxos.org/blueprint/${kebabize(object.name ?? 'script')}`;\n const existingBlueprint = blueprints.find((bp) => bp.key === blueprintKey);\n\n useAsyncEffect(async () => {\n if (!existingBlueprint) {\n return;\n }\n const source = await existingBlueprint.instructions.source.load();\n setInstructions(source.content ?? '');\n }, [existingBlueprint]);\n\n const handleSave = useCallback(async () => {\n if (!db) {\n return;\n }\n\n setCreating(true);\n try {\n if (existingBlueprint) {\n const text = await existingBlueprint.instructions.source.load();\n Obj.change(text, (t) => {\n t.content = instructions;\n });\n if (fn?.key) {\n const toolId = ToolId.make(fn.key);\n if (!existingBlueprint.tools?.includes(toolId)) {\n Obj.change(existingBlueprint, (b) => {\n b.tools = [...(b.tools ?? []), toolId];\n });\n }\n }\n } else if (fn?.key) {\n db.add(\n Blueprint.make({\n key: blueprintKey,\n name: object.name ?? 'Script',\n instructions: Template.make({\n source: instructions,\n }),\n tools: [ToolId.make(fn.key)],\n }),\n );\n }\n await db.flush();\n } finally {\n setCreating(false);\n }\n }, [db, existingBlueprint, fn, blueprintKey, object.name, instructions]);\n\n return (\n <div className='flex flex-col gap-4 mlb-cardSpacingBlock'>\n <div>\n <h2>{t('blueprint editor label', { default: 'Blueprint' })}</h2>\n <p className='text-description text-sm'>\n {t('blueprint editor description', {\n default: 'Create a blueprint that exposes this script as a tool.',\n })}\n </p>\n </div>\n <Input.Root>\n <div role='none' className='flex flex-col gap-1'>\n <Input.Label>{t('blueprint instructions label', { default: 'Instructions' })}</Input.Label>\n <Input.TextArea\n placeholder={t('blueprint instructions placeholder', {\n default: 'Describe how this tool should be used.',\n })}\n rows={6}\n value={instructions}\n onChange={(event) => setInstructions(event.target.value)}\n classNames='resize-y'\n />\n </div>\n </Input.Root>\n <div className='flex justify-end gap-2'>\n <Button disabled={(!existingBlueprint && !fn?.key) || creating} onClick={handleSave}>\n {t(creating ? 'creating label' : 'create blueprint label', {\n default: creating ? 'Creating…' : 'Create blueprint',\n })}\n </Button>\n </div>\n </div>\n );\n};\n\nconst Binding = ({ object }: ScriptObjectSettingsProps) => {\n const { t } = useTranslation(meta.id);\n const client = useClient();\n const db = Obj.getDatabase(object);\n const [fn] = useQuery(db, Filter.type(Function.Function, { source: Ref.make(object) }));\n\n const functionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));\n const functionUrl =\n functionId &&\n getInvocationUrl(functionId, client.config.values.runtime?.services?.edge?.url ?? '', {\n spaceId: db?.spaceId,\n });\n\n const [binding, setBinding] = useControlledState(fn?.binding ?? '');\n const handleBindingChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>) => {\n setBinding(event.target.value);\n },\n [setBinding],\n );\n\n const handleBindingBlur = useCallback(() => {\n Obj.change(fn, (f) => {\n f.binding = binding;\n });\n }, [fn, binding]);\n\n if (!fn || !functionUrl) {\n return null;\n }\n\n // TODO(burdon): Use form.\n return (\n <div role='form' className='flex flex-col gap-2 mlb-cardSpacingBlock'>\n <h2>{t('remote function settings heading')}</h2>\n <Input.Root>\n <div role='none' className='flex flex-col gap-1'>\n <Input.Label>{t('function url label')}</Input.Label>\n <div role='none' className='flex gap-1'>\n <Input.TextInput\n disabled\n value={functionUrl}\n onChange={(event) => {\n Obj.change(fn, (f) => {\n f.name = event.target.value;\n });\n }}\n />\n <Clipboard.IconButton value={functionUrl} />\n </div>\n </div>\n </Input.Root>\n <Input.Root>\n <div role='none' className='flex flex-col gap-1'>\n <Input.Label>{t('function binding label')}</Input.Label>\n <Input.TextInput\n placeholder={t('function binding placeholder')}\n value={binding}\n onChange={handleBindingChange}\n onBlur={handleBindingBlur}\n />\n </div>\n </Input.Root>\n </div>\n );\n};\n\n// TODO(burdon): Move to separate tab?\nconst Publishing = ({ object }: ScriptObjectSettingsProps) => {\n const { t } = useTranslation(meta.id);\n const { invokePromise } = useOperationInvoker();\n const db = Obj.getDatabase(object);\n const [githubToken] = useQuery(db, Filter.type(AccessToken.AccessToken, { source: 'github.com' }));\n const gistKey = Obj.getMeta(object).keys.find(({ source }) => source === 'github.com');\n const [gistUrl, setGistUrl] = useState<string | undefined>();\n\n useAsyncEffect(async () => {\n const token = githubToken?.token;\n const gistId = gistKey?.id;\n if (!token || !gistId) {\n setGistUrl(undefined);\n return;\n }\n\n try {\n const octokit = new Octokit({ auth: githubToken.token });\n const response = await octokit.request('GET /gists/{gist_id}', {\n gist_id: gistId,\n });\n setGistUrl(response.data.html_url);\n } catch (err) {\n log.catch(err);\n setGistUrl(undefined);\n }\n }, [githubToken, gistKey]);\n\n const handleOpenTokenManager = useCallback(\n () =>\n invokePromise(SettingsOperation.Open, {\n plugin: 'dxos.org/plugin/token-manager',\n }),\n [invokePromise],\n );\n\n const [publishing, setPublishing] = useState(false);\n const handlePublish = useCallback(async () => {\n setPublishing(true);\n const octokit = new Octokit({ auth: githubToken.token });\n const source = await object.source.load();\n const filename = object.name ? kebabize(object.name) : 'composer-script';\n const files = { [`${filename}.ts`]: { content: source.content } };\n\n try {\n // TODO(wittjosiah): Factor out to intent.\n const meta = Obj.getMeta(object);\n const githubKey = meta.keys.find(({ source }) => source === 'github.com');\n const gistId = githubKey?.id;\n if (gistId) {\n await octokit.request('PATCH /gists/{gist_id}', {\n gist_id: gistId,\n files,\n });\n } else {\n const response = await octokit.request('POST /gists', {\n public: true,\n files,\n });\n const gistId = response.data.id;\n if (gistId) {\n Obj.change(object, (obj) => {\n Obj.getMeta(obj).keys.push({ source: 'github.com', id: gistId });\n });\n }\n }\n } finally {\n setPublishing(false);\n }\n }, [object, githubToken]);\n\n return (\n <div className='flex flex-col gap-4 mlb-cardSpacingBlock'>\n <div>\n <h2>{t('script publish settings label')}</h2>\n <p className='text-description text-sm'>{t('script publish settings description')}</p>\n </div>\n {!githubToken && (\n <div className='flex flex-col gap-2'>\n <span>{t('no github token label')}</span>\n <Button onClick={handleOpenTokenManager}>{t('open token manager label')}</Button>\n </div>\n )}\n {githubToken && (\n <div className='flex justify-end gap-2'>\n {gistUrl && <Clipboard.IconButton value={gistUrl} />}\n <Button disabled={publishing} onClick={handlePublish}>\n {t(publishing ? 'publishing label' : 'publish label')}\n </Button>\n </div>\n )}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useClient } from '@dxos/react-client';\nimport { Button, Select, useTranslation } from '@dxos/react-ui';\nimport { Settings } from '@dxos/react-ui-form';\nimport { type EditorInputMode, EditorInputModes } from '@dxos/ui-editor';\n\nimport { meta } from '../../meta';\nimport { type ScriptSettings } from '../../types';\nimport { getAccessCredential } from '../../util';\n\nexport type ScriptPluginSettingsComponentProps = {\n settings: ScriptSettings;\n onSettingsChange: (fn: (current: ScriptSettings) => ScriptSettings) => void;\n};\n\nexport const ScriptPluginSettings = ({ settings, onSettingsChange }: ScriptPluginSettingsComponentProps) => {\n const { t } = useTranslation(meta.id);\n const client = useClient();\n\n // TODO(burdon): Check token.\n const handleAuthenticate = async () => {\n const { identityKey } = client.halo.identity.get()!;\n await client.halo.writeCredentials([getAccessCredential(identityKey)]);\n };\n\n return (\n <Settings.Root>\n <Settings.Section title={t('settings title', { ns: meta.id })}>\n <Settings.Group>\n {/* TODO(wittjosiah): Hide outside of dev environments. */}\n <Settings.ItemInput title={t('authenticate action label')}>\n <Button onClick={handleAuthenticate}>{t('authenticate button label')}</Button>\n </Settings.ItemInput>\n\n <Settings.ItemInput title={t('editor input mode label')}>\n <Select.Root\n value={settings.editorInputMode ?? 'default'}\n onValueChange={(value) => {\n onSettingsChange((s) => ({ ...s, editorInputMode: value as EditorInputMode }));\n }}\n >\n <Select.TriggerButton placeholder={t('select editor input mode placeholder')} />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {EditorInputModes.map((mode) => (\n <Select.Option key={mode} value={mode}>\n {t(`settings editor input mode ${mode} label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Settings.ItemInput>\n </Settings.Group>\n </Settings.Section>\n </Settings.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { forwardRef, useEffect, useRef, useState } from 'react';\n\nimport { log } from '@dxos/log';\nimport { Avatar, Icon, Input, ScrollArea, type ThemedClassName, Toolbar, useTranslation } from '@dxos/react-ui';\nimport { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';\nimport { errorText, mx } from '@dxos/ui-theme';\n\nimport { meta } from '../../meta';\n\ntype State = 'pending' | 'responding';\n\n/**\n * Request or response.\n */\ntype Message = {\n type: 'request' | 'response';\n text?: string;\n data?: any;\n error?: Error;\n};\n\nexport type TestPanelProps = ThemedClassName<{\n functionUrl?: string;\n}>;\n\n// TODO(burdon): Need persistent history (currently lost when switching tabs)..\nexport const TestPanel = ({ classNames, functionUrl }: TestPanelProps) => {\n const { t } = useTranslation(meta.id);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const [input, setInput] = useState('');\n const [result, setResult] = useState('');\n const [state, setState] = useState<State | null>(null);\n\n // TODO(burdon): Persistent history (thread).\n const [history, setHistory] = useState<Message[]>([]);\n\n const scrollerRef = useRef<HTMLDivElement>(null);\n const handleScroll = () => {\n if (scrollerRef.current) {\n scrollerRef.current.scrollTop = scrollerRef.current.scrollHeight;\n }\n };\n\n const controller = useRef<AbortController>(null);\n useEffect(() => {\n return () => {\n handleStop();\n };\n }, []);\n\n const handleStop = () => {\n controller.current?.abort('stop');\n controller.current = null;\n };\n\n const handleClear = () => {\n handleStop();\n setInput('');\n setResult('');\n setHistory([]);\n inputRef.current?.focus();\n };\n\n const handleResponse = ({\n text,\n data,\n error,\n }: {\n text?: string;\n data?: any;\n error?: Error;\n } = {}) => {\n controller.current = null;\n setHistory((history) => [...history, { type: 'response', text, data, error } satisfies Message]);\n setResult('');\n setState(null);\n handleScroll();\n };\n\n const handleRequest = async (input: string) => {\n // Returns a promise that resolves when a value has been received.\n try {\n setState('pending');\n\n let data = null;\n // Detect JSON input.\n if (input.charAt(0) === '{') {\n try {\n const validJsonString = input.replace(/'/g, '\"').replace(/([{,]\\s*)([a-zA-Z0-9_]+)(\\s*:)/g, '$1\"$2\"$3');\n data = JSON.parse(validJsonString);\n input = JSON.stringify(data, null, 2);\n } catch (err) {\n inputRef.current?.focus();\n return;\n }\n }\n\n setInput('');\n setResult('');\n setHistory((history) => [...history, { type: 'request', text: input }]);\n setTimeout(() => {\n handleScroll();\n });\n\n // Throws DOMException when aborted.\n controller.current = new AbortController();\n const response = await fetch(functionUrl!, {\n signal: controller.current.signal,\n method: 'POST',\n body: input,\n headers: {\n 'Content-Type': data ? 'application/json' : 'text/plain',\n },\n });\n\n // Check for error.\n if (!response.ok) {\n const text = await response.text();\n handleResponse({\n error: new Error(text || response.statusText || String(response.status)),\n });\n return;\n }\n\n // Check for JSON.\n const contentType = response.headers.get('content-type');\n if (contentType === 'application/json') {\n const data = await response.json();\n handleResponse({ data });\n return;\n }\n\n // Text (including streaming).\n setState('responding');\n let text = '';\n const reader = response.body!.getReader();\n const pump = async ({ done, value }: ReadableStreamReadResult<Uint8Array>): Promise<void> => {\n text = text + new TextDecoder().decode(value);\n if (!controller.current || done) {\n handleResponse({ text });\n return;\n }\n\n setResult(text);\n setTimeout(() => {\n handleScroll();\n });\n\n return reader.read().then(pump);\n };\n\n void reader\n .read()\n .then(pump)\n .catch((err) => {\n if (err.name !== 'AbortError') {\n log.catch(err);\n }\n });\n } catch (err: any) {\n if (err !== 'stop') {\n const error = err instanceof Error ? err : new Error(err);\n handleResponse({ error });\n log.catch(err);\n } else {\n handleResponse();\n }\n }\n };\n\n return (\n <div className={mx('flex flex-col bs-full overflow-hidden', classNames)}>\n {/* TODO(burdon): Replace with Thread. */}\n <MessageThread ref={scrollerRef} state={state} result={result} history={history} />\n {/* TODO(burdon): Replace with Form based on the function's input schema. */}\n <Toolbar.Root>\n <Input.Root>\n <Input.TextInput\n ref={inputRef}\n autoFocus\n placeholder={t('function request placeholder')}\n value={input}\n onChange={(ev) => setInput(ev.target.value)}\n onKeyDown={(ev) => ev.key === 'Enter' && handleRequest(input)}\n />\n </Input.Root>\n <Toolbar.IconButton\n icon='ph--play--regular'\n size={4}\n label='Execute'\n iconOnly\n onClick={() => handleRequest(input)}\n />\n <Toolbar.IconButton\n icon={state ? 'ph--stop--regular' : 'ph--trash--regular'}\n size={4}\n label={state ? 'Stop' : 'Clear'}\n iconOnly\n onClick={() => (state ? handleStop() : handleClear())}\n />\n </Toolbar.Root>\n </div>\n );\n};\n\n// TODO(burdon): Replace with thread?\n// TODO(burdon): Button to edit/re-run question.\ntype MessageThreadProps = {\n state: State | null;\n history: Message[];\n result: string;\n};\n\nconst MessageThread = forwardRef<HTMLDivElement, MessageThreadProps>(\n ({ state, history, result }: MessageThreadProps, forwardedRef) => {\n return (\n <ScrollArea.Root orientation='vertical' classNames='bs-full' ref={forwardedRef}>\n <ScrollArea.Viewport classNames='gap-6 p-2'>\n {history.map((message, i) => (\n <div key={i} className='grid grid-cols-[2rem_1fr_2rem]'>\n <div className='p-1'>{message.type === 'response' && <RobotAvatar />}</div>\n <div className='overflow-auto'>\n <MessageItem message={message} />\n </div>\n </div>\n ))}\n\n {result?.length > 0 && (\n <div className='grid grid-cols-[2rem_1fr_2rem]'>\n <div className='p-1'>\n {(state === 'pending' && <Icon icon='ph--spinner--regular' size={6} classNames='animate-spin' />) || (\n <Icon icon='ph--robot--regular' size={6} classNames='animate-[pulse_1s_ease-in-out_infinite]' />\n )}\n </div>\n <div className='overflow-auto'>\n <MessageItem message={{ type: 'response', text: result }} />\n </div>\n </div>\n )}\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n );\n },\n);\n\nconst MessageItem = ({ classNames, message }: ThemedClassName<{ message: Message }>) => {\n const { type, text, data, error } = message;\n const wrapper = 'p-1 pli-2 rounded-md bg-hoverSurface overflow-auto';\n return (\n <div className={mx('flex', type === 'request' ? 'ml-[1rem] justify-end' : 'mr-[1rem]', classNames)}>\n {error && <div className={mx(wrapper, 'whitespace-pre', errorText)}>{String(error)}</div>}\n\n {text !== undefined && (\n <div className={mx(wrapper, type === 'request' && 'bg-primary-400 dark:bg-primary-600')}>\n {text || '\\u00D8'}\n </div>\n )}\n\n {data && (\n <SyntaxHighlighter language='json' className={mx(wrapper, 'text-xs')}>\n {JSON.stringify(data, null, 2)}\n </SyntaxHighlighter>\n )}\n </div>\n );\n};\n\nconst RobotAvatar = () => (\n <Avatar.Root>\n <Avatar.Content size={6} variant='circle' icon='ph--robot--regular' />\n </Avatar.Root>\n);\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { type Script } from '@dxos/functions';\nimport { Layout } from '@dxos/react-ui';\n\nimport { useDeployState, useToolbarState } from '../../hooks';\n\nimport { TestPanel } from './TestPanel';\n\nexport type TestContainerProps = {\n role: string;\n script: Script.Script;\n};\n\nexport const TestContainer = ({ role, script }: TestContainerProps) => {\n const state = useToolbarState();\n useDeployState({ state, script });\n return (\n <Layout.Main role={role}>\n <TestPanel functionUrl={state.value.functionUrl} />\n </Layout.Main>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './NotebookStack';\nexport * from './Settings';\nexport * from './TestPanel';\n\nexport { DEPLOYMENT_DIALOG } from './DeploymentDialog';\n\nexport const ScriptContainer = lazy(() => import('./ScriptContainer'));\nexport const DeploymentDialog = lazy(() => import('./DeploymentDialog'));\nexport const NotebookContainer = lazy(() => import('./NotebookContainer'));\n"],
5
- "mappings": "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",
6
- "names": ["Octokit", "React", "useCallback", "useState", "ToolId", "useOperationInvoker", "SettingsOperation", "Blueprint", "Template", "Filter", "Obj", "Ref", "Function", "getUserFunctionIdInMetadata", "getInvocationUrl", "log", "useClient", "useQuery", "Button", "Clipboard", "Input", "useAsyncEffect", "useControlledState", "useTranslation", "AccessToken", "kebabize", "ScriptObjectSettings", "object", "Binding", "BlueprintEditor", "Publishing", "ScriptProperties", "t", "useTranslation", "meta", "id", "Input", "Root", "Label", "TextInput", "placeholder", "value", "description", "onChange", "event", "Obj", "change", "o", "target", "db", "getDatabase", "fn", "useQuery", "Filter", "type", "Function", "source", "Ref", "make", "blueprints", "Blueprint", "creating", "setCreating", "useState", "instructions", "setInstructions", "name", "blueprintKey", "kebabize", "existingBlueprint", "find", "bp", "key", "useAsyncEffect", "load", "content", "handleSave", "useCallback", "text", "toolId", "ToolId", "tools", "includes", "b", "add", "Template", "flush", "div", "className", "h2", "default", "p", "role", "TextArea", "rows", "classNames", "Button", "disabled", "onClick", "client", "useClient", "functionId", "getUserFunctionIdInMetadata", "getMeta", "functionUrl", "getInvocationUrl", "config", "values", "runtime", "services", "edge", "url", "spaceId", "binding", "setBinding", "useControlledState", "handleBindingChange", "handleBindingBlur", "f", "Clipboard", "IconButton", "onBlur", "invokePromise", "useOperationInvoker", "githubToken", "AccessToken", "gistKey", "keys", "gistUrl", "setGistUrl", "token", "gistId", "undefined", "octokit", "Octokit", "auth", "response", "request", "gist_id", "data", "html_url", "err", "log", "catch", "handleOpenTokenManager", "SettingsOperation", "Open", "plugin", "publishing", "setPublishing", "handlePublish", "filename", "files", "githubKey", "public", "obj", "push", "span", "React", "useClient", "Button", "Select", "useTranslation", "Settings", "EditorInputModes", "ScriptPluginSettings", "settings", "onSettingsChange", "t", "useTranslation", "meta", "id", "client", "useClient", "handleAuthenticate", "identityKey", "halo", "identity", "get", "writeCredentials", "getAccessCredential", "React", "Settings", "Root", "Section", "title", "ns", "Group", "ItemInput", "Button", "onClick", "Select", "value", "editorInputMode", "onValueChange", "s", "TriggerButton", "placeholder", "Portal", "Content", "Viewport", "EditorInputModes", "map", "mode", "Option", "key", "Arrow", "React", "forwardRef", "useEffect", "useRef", "useState", "log", "Avatar", "Icon", "Input", "ScrollArea", "Toolbar", "useTranslation", "SyntaxHighlighter", "errorText", "mx", "TestPanel", "classNames", "functionUrl", "t", "useTranslation", "meta", "id", "inputRef", "useRef", "input", "setInput", "useState", "result", "setResult", "state", "setState", "history", "setHistory", "scrollerRef", "handleScroll", "current", "scrollTop", "scrollHeight", "controller", "useEffect", "handleStop", "abort", "handleClear", "focus", "handleResponse", "text", "data", "error", "type", "handleRequest", "charAt", "validJsonString", "replace", "JSON", "parse", "stringify", "err", "setTimeout", "AbortController", "response", "fetch", "signal", "method", "body", "headers", "ok", "Error", "statusText", "String", "status", "contentType", "get", "json", "reader", "getReader", "pump", "done", "value", "TextDecoder", "decode", "read", "then", "catch", "name", "log", "React", "div", "className", "mx", "MessageThread", "ref", "Toolbar", "Root", "Input", "TextInput", "autoFocus", "placeholder", "onChange", "ev", "target", "onKeyDown", "key", "IconButton", "icon", "size", "label", "iconOnly", "onClick", "forwardRef", "forwardedRef", "ScrollArea", "orientation", "Viewport", "map", "message", "i", "RobotAvatar", "MessageItem", "length", "Icon", "wrapper", "errorText", "undefined", "SyntaxHighlighter", "language", "Avatar", "Content", "variant", "React", "Layout", "TestContainer", "role", "script", "state", "useToolbarState", "useDeployState", "React", "Layout", "Main", "TestPanel", "functionUrl", "value", "lazy", "ScriptContainer", "lazy", "DeploymentDialog", "NotebookContainer"]
7
- }
@@ -1,271 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- TypescriptEditor
4
- } from "./chunk-SLU3KRV3.mjs";
5
- import {
6
- meta
7
- } from "./chunk-5HSJPAK7.mjs";
8
-
9
- // src/components/NotebookStack/NotebookMenu.tsx
10
- import React from "react";
11
- import { DropdownMenu, useTranslation } from "@dxos/react-ui";
12
- var NotebookMenu = ({ cell, onCellInsert, onCellDelete }) => {
13
- const { t } = useTranslation(meta.id);
14
- return /* @__PURE__ */ React.createElement(DropdownMenu.Portal, null, /* @__PURE__ */ React.createElement(DropdownMenu.Content, null, /* @__PURE__ */ React.createElement(DropdownMenu.Viewport, null, /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
15
- onClick: () => onCellInsert?.("script", cell?.id)
16
- }, t("notebook cell insert script label")), /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
17
- onClick: () => onCellInsert?.("prompt", cell?.id)
18
- }, t("notebook cell insert prompt label")), /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
19
- onClick: () => onCellInsert?.("query", cell?.id)
20
- }, t("notebook cell insert query label")), /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
21
- onClick: () => onCellInsert?.("markdown", cell?.id)
22
- }, t("notebook cell insert markdown label")), cell && onCellDelete && /* @__PURE__ */ React.createElement(DropdownMenu.Item, {
23
- onClick: () => onCellDelete?.(cell.id)
24
- }, t("notebook cell delete label"))), /* @__PURE__ */ React.createElement(DropdownMenu.Arrow, null)));
25
- };
26
-
27
- // src/components/NotebookStack/NotebookStack.tsx
28
- import React3 from "react";
29
- import { DropdownMenu as DropdownMenu2, IconButton, useTranslation as useTranslation3 } from "@dxos/react-ui";
30
- import { Stack, StackItem } from "@dxos/react-ui-stack";
31
-
32
- // src/components/NotebookStack/NotebookCell.tsx
33
- import React2, { useCallback, useMemo } from "react";
34
- import { Surface } from "@dxos/app-framework/ui";
35
- import { Obj } from "@dxos/echo";
36
- import { createDocAccessor } from "@dxos/echo-db";
37
- import { invariant } from "@dxos/invariant";
38
- import { TemplateEditor } from "@dxos/plugin-assistant";
39
- import { useThemeContext, useTranslation as useTranslation2 } from "@dxos/react-ui";
40
- import { QueryEditor } from "@dxos/react-ui-components";
41
- import { EditorContent } from "@dxos/react-ui-editor";
42
- import { createBasicExtensions, createDataExtensions, createMarkdownExtensions, createThemeExtensions, decorateMarkdown } from "@dxos/ui-editor";
43
- import { mx } from "@dxos/ui-theme";
44
- import { isNonNullable } from "@dxos/util";
45
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-script/src/components/NotebookStack/NotebookCell.tsx";
46
- var editorStyles = "p-2 pis-3";
47
- var valueStyles = "p-1 pis-3";
48
- var NotebookCell = ({ db, graph, dragging, cell, promptResults, env }) => {
49
- const { t } = useTranslation2(meta.id);
50
- const extensions = useMemo(() => {
51
- return cell.source?.target ? [
52
- createDataExtensions({
53
- id: cell.id,
54
- text: createDocAccessor(cell.source.target, [
55
- "content"
56
- ])
57
- })
58
- ].filter(isNonNullable) : [];
59
- }, [
60
- cell.source?.target
61
- ]);
62
- const explorerGraph = cell.graph?.target;
63
- const handleQueryChange = useCallback((value) => {
64
- invariant(cell.source?.target, void 0, {
65
- F: __dxlog_file,
66
- L: 63,
67
- S: void 0,
68
- A: [
69
- "cell.source?.target",
70
- ""
71
- ]
72
- });
73
- Obj.change(cell.source.target, (s) => {
74
- s.content = value;
75
- });
76
- }, [
77
- cell
78
- ]);
79
- switch (cell.type) {
80
- case "markdown":
81
- if (!cell.source?.target) {
82
- return null;
83
- }
84
- return /* @__PURE__ */ React2.createElement(NotebookTextEditor, {
85
- id: cell.id,
86
- classNames: editorStyles,
87
- initialValue: cell.source.target.content,
88
- extensions
89
- });
90
- case "script":
91
- if (!cell.source?.target) {
92
- return null;
93
- }
94
- return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(TypescriptEditor, {
95
- id: cell.id,
96
- role: "section",
97
- classNames: editorStyles,
98
- initialValue: cell.source.target.content,
99
- extensions,
100
- env,
101
- options: {
102
- placeholder: t("notebook cell placeholder"),
103
- highlightActiveLine: false,
104
- lineNumbers: false
105
- }
106
- }), /* @__PURE__ */ React2.createElement(NotebookCellValue, {
107
- cell,
108
- graph
109
- }));
110
- case "query":
111
- if (!cell.source?.target) {
112
- return null;
113
- }
114
- return /* @__PURE__ */ React2.createElement("div", {
115
- className: mx("bs-full overflow-hidden grid", explorerGraph && !dragging && "grid-rows-[min-content_1fr]")
116
- }, /* @__PURE__ */ React2.createElement(QueryEditor, {
117
- id: cell.id,
118
- classNames: [
119
- editorStyles,
120
- "border-be border-subduedSeparator"
121
- ],
122
- db,
123
- value: cell.source.target.content,
124
- onChange: handleQueryChange
125
- }), explorerGraph && !dragging && /* @__PURE__ */ React2.createElement(Surface.Surface, {
126
- role: "section",
127
- limit: 1,
128
- data: {
129
- subject: explorerGraph
130
- }
131
- }));
132
- // TODO(burdon): Use streaming response from Chat.
133
- case "prompt":
134
- if (!cell.prompt?.target) {
135
- return null;
136
- }
137
- return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(TemplateEditor, {
138
- id: cell.id,
139
- template: cell.prompt.target.instructions,
140
- lineNumbers: false,
141
- classNames: editorStyles
142
- }), /* @__PURE__ */ React2.createElement(NotebookPromptResult, {
143
- cell,
144
- promptResults
145
- }));
146
- default:
147
- return null;
148
- }
149
- };
150
- var NotebookCellValue = ({ cell, graph }) => {
151
- const name = graph?.getExpressions()[cell.id]?.name;
152
- const value = graph?.getValue(cell.id);
153
- if (value == null) {
154
- return null;
155
- }
156
- return /* @__PURE__ */ React2.createElement("div", {
157
- className: mx("flex is-full bg-groupSurface border-bs border-subduedSeparator text-description font-mono", valueStyles)
158
- }, name && /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("span", {
159
- className: "text-successText"
160
- }, name), /* @__PURE__ */ React2.createElement("span", {
161
- className: "text-description"
162
- }, "\xA0=\xA0")), /* @__PURE__ */ React2.createElement("span", null, value));
163
- };
164
- var NotebookPromptResult = ({ cell, promptResults }) => {
165
- if (!cell.prompt) {
166
- return null;
167
- }
168
- const value = promptResults?.[cell.prompt.dxn.toString()];
169
- if (value == null) {
170
- return null;
171
- }
172
- return /* @__PURE__ */ React2.createElement("div", {
173
- className: mx("flex is-full bg-groupSurface text-description border-bs border-subduedSeparator", valueStyles)
174
- }, /* @__PURE__ */ React2.createElement(NotebookTextEditor, {
175
- readOnly: true,
176
- value
177
- }));
178
- };
179
- var NotebookTextEditor = ({ extensions: extensionsProp, readOnly, ...props }) => {
180
- const { t } = useTranslation2(meta.id);
181
- const { themeMode } = useThemeContext();
182
- const extensions = useMemo(() => {
183
- return [
184
- createBasicExtensions({
185
- placeholder: t("notebook markdown placeholder"),
186
- readOnly
187
- }),
188
- createThemeExtensions({
189
- themeMode,
190
- syntaxHighlighting: true
191
- }),
192
- createMarkdownExtensions(),
193
- decorateMarkdown(),
194
- extensionsProp
195
- ].filter(isNonNullable);
196
- }, [
197
- extensionsProp
198
- ]);
199
- return /* @__PURE__ */ React2.createElement(EditorContent, {
200
- ...props,
201
- extensions,
202
- selectionEnd: true
203
- });
204
- };
205
-
206
- // src/components/NotebookStack/NotebookStack.tsx
207
- var minSectionHeight = "min-bs-[16rem]";
208
- var NotebookStack = ({ classNames, notebook, onRearrange, ...props }) => {
209
- return /* @__PURE__ */ React3.createElement(Stack, {
210
- classNames,
211
- orientation: "vertical",
212
- size: "contain",
213
- rail: true,
214
- onRearrange
215
- }, notebook?.cells.map((cell, i) => /* @__PURE__ */ React3.createElement(NotebookSection, {
216
- key: i,
217
- cell,
218
- ...props
219
- })));
220
- };
221
- var NotebookSection = ({ cell, db, env, promptResults, onCellInsert, onCellDelete, ...props }) => {
222
- const { t } = useTranslation3(meta.id);
223
- const resizable = cell.type === "query";
224
- return /* @__PURE__ */ React3.createElement(StackItem.Root, {
225
- role: "section",
226
- item: cell,
227
- draggable: true,
228
- classNames: resizable && minSectionHeight
229
- }, /* @__PURE__ */ React3.createElement(StackItem.Heading, {
230
- classNames: "bs-full p-1 justify-between attention-surface"
231
- }, /* @__PURE__ */ React3.createElement(StackItem.DragHandle, {
232
- asChild: true
233
- }, /* @__PURE__ */ React3.createElement(IconButton, {
234
- variant: "ghost",
235
- icon: "ph--dots-six-vertical--regular",
236
- iconOnly: true,
237
- label: "Drag handle"
238
- })), /* @__PURE__ */ React3.createElement(DropdownMenu2.Root, null, /* @__PURE__ */ React3.createElement(DropdownMenu2.Trigger, {
239
- asChild: true
240
- }, /* @__PURE__ */ React3.createElement(IconButton, {
241
- variant: "ghost",
242
- icon: "ph--dots-three--regular",
243
- iconOnly: true,
244
- label: t("notebook cell insert label")
245
- })), /* @__PURE__ */ React3.createElement(NotebookMenu, {
246
- cell,
247
- onCellInsert,
248
- onCellDelete
249
- })), resizable && /* @__PURE__ */ React3.createElement(StackItem.ResizeHandle, null)), /* @__PURE__ */ React3.createElement(StackItem.DragPreview, null, ({ item: cell2 }) => /* @__PURE__ */ React3.createElement(StackItem.Content, {
250
- classNames: "overflow-visible bg-groupSurface border border-subduedSeparator"
251
- }, /* @__PURE__ */ React3.createElement(NotebookCell, {
252
- db,
253
- cell: cell2,
254
- env,
255
- dragging: true
256
- }))), /* @__PURE__ */ React3.createElement(StackItem.Content, {
257
- classNames: "overflow-visible"
258
- }, /* @__PURE__ */ React3.createElement(NotebookCell, {
259
- db,
260
- cell,
261
- env,
262
- promptResults,
263
- ...props
264
- })));
265
- };
266
-
267
- export {
268
- NotebookMenu,
269
- NotebookStack
270
- };
271
- //# sourceMappingURL=chunk-3QBXN6QC.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/NotebookStack/NotebookMenu.tsx", "../../../src/components/NotebookStack/NotebookStack.tsx", "../../../src/components/NotebookStack/NotebookCell.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DropdownMenu, useTranslation } from '@dxos/react-ui';\n\nimport { meta } from '../../meta';\nimport { type Notebook } from '../../types';\n\nexport type NotebookMenuProps = {\n cell?: Notebook.Cell;\n onCellInsert?: (type: Notebook.CellType, after: string | undefined) => void;\n onCellDelete?: (id: string) => void;\n};\n\n// TODO(burdon): Better way to organize menu?\nexport const NotebookMenu = ({ cell, onCellInsert, onCellDelete }: NotebookMenuProps) => {\n const { t } = useTranslation(meta.id);\n return (\n <DropdownMenu.Portal>\n <DropdownMenu.Content>\n <DropdownMenu.Viewport>\n <DropdownMenu.Item onClick={() => onCellInsert?.('script', cell?.id)}>\n {t('notebook cell insert script label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onCellInsert?.('prompt', cell?.id)}>\n {t('notebook cell insert prompt label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onCellInsert?.('query', cell?.id)}>\n {t('notebook cell insert query label')}\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onCellInsert?.('markdown', cell?.id)}>\n {t('notebook cell insert markdown label')}\n </DropdownMenu.Item>\n {cell && onCellDelete && (\n <DropdownMenu.Item onClick={() => onCellDelete?.(cell.id)}>\n {t('notebook cell delete label')}\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { DropdownMenu, IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';\nimport { Stack, StackItem, type StackProps } from '@dxos/react-ui-stack';\n\nimport { meta } from '../../meta';\nimport { type Notebook } from '../../types';\nimport { type TypescriptEditorProps } from '../TypescriptEditor';\n\nimport { NotebookCell, type NotebookCellProps } from './NotebookCell';\nimport { NotebookMenu } from './NotebookMenu';\n\nconst minSectionHeight = 'min-bs-[16rem]';\n\nexport type NotebookStackProps = ThemedClassName<\n {\n notebook?: Notebook.Notebook;\n onRearrange?: StackProps['onRearrange'];\n } & (Pick<NotebookSectionProps, 'db' | 'graph' | 'promptResults' | 'onCellInsert' | 'onCellDelete'> &\n Pick<TypescriptEditorProps, 'env'>)\n>;\n\n// TODO(burdon): Option for narrow rail (with compact buttons that align with first button in toolbar).\nexport const NotebookStack = ({ classNames, notebook, onRearrange, ...props }: NotebookStackProps) => {\n return (\n <Stack classNames={classNames} orientation='vertical' size='contain' rail onRearrange={onRearrange}>\n {notebook?.cells.map((cell, i) => (\n <NotebookSection key={i} cell={cell} {...props} />\n ))}\n </Stack>\n );\n};\n\ntype NotebookSectionProps = NotebookCellProps;\n\nconst NotebookSection = ({\n cell,\n db,\n env,\n promptResults,\n onCellInsert,\n onCellDelete,\n ...props\n}: NotebookSectionProps) => {\n const { t } = useTranslation(meta.id);\n const resizable = cell.type === 'query';\n\n return (\n <StackItem.Root role='section' item={cell} draggable classNames={resizable && minSectionHeight}>\n <StackItem.Heading classNames='bs-full p-1 justify-between attention-surface'>\n <StackItem.DragHandle asChild>\n <IconButton variant='ghost' icon='ph--dots-six-vertical--regular' iconOnly label='Drag handle' />\n </StackItem.DragHandle>\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n variant='ghost'\n icon='ph--dots-three--regular'\n iconOnly\n label={t('notebook cell insert label')}\n />\n </DropdownMenu.Trigger>\n <NotebookMenu cell={cell} onCellInsert={onCellInsert} onCellDelete={onCellDelete} />\n </DropdownMenu.Root>\n {resizable && <StackItem.ResizeHandle />}\n </StackItem.Heading>\n\n {/* TODO(burdon): Move drag preview to outer stack (uniformly). */}\n <StackItem.DragPreview>\n {({ item: cell }) => (\n <StackItem.Content classNames='overflow-visible bg-groupSurface border border-subduedSeparator'>\n <NotebookCell db={db} cell={cell} env={env} dragging />\n </StackItem.Content>\n )}\n </StackItem.DragPreview>\n\n <StackItem.Content classNames='overflow-visible'>\n <NotebookCell db={db} cell={cell} env={env} promptResults={promptResults} {...props} />\n </StackItem.Content>\n </StackItem.Root>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Surface } from '@dxos/app-framework/ui';\nimport { type Database, Obj } from '@dxos/echo';\nimport { createDocAccessor } from '@dxos/echo-db';\nimport { invariant } from '@dxos/invariant';\nimport { TemplateEditor } from '@dxos/plugin-assistant';\nimport { useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { QueryEditor, type QueryEditorProps } from '@dxos/react-ui-components';\nimport { EditorContent, type EditorContentProps } from '@dxos/react-ui-editor';\nimport {\n type BasicExtensionsOptions,\n createBasicExtensions,\n createDataExtensions,\n createMarkdownExtensions,\n createThemeExtensions,\n decorateMarkdown,\n} from '@dxos/ui-editor';\nimport { mx } from '@dxos/ui-theme';\nimport { isNonNullable } from '@dxos/util';\n\nimport { meta } from '../../meta';\nimport { type ComputeGraph } from '../../notebook';\nimport { type Notebook } from '../../types';\nimport { TypescriptEditor, type TypescriptEditorProps } from '../TypescriptEditor';\n\nimport { type NotebookMenuProps } from './NotebookMenu';\n\nconst editorStyles = 'p-2 pis-3';\nconst valueStyles = 'p-1 pis-3';\n\nexport type NotebookCellProps = {\n db?: Database.Database;\n graph?: ComputeGraph;\n dragging?: boolean;\n cell: Notebook.Cell;\n promptResults?: Record<string, string>;\n} & (Pick<NotebookMenuProps, 'onCellInsert' | 'onCellDelete'> & Pick<TypescriptEditorProps, 'env'>);\n\n// TODO(burdon): Show evaluation errors.\nexport const NotebookCell = ({ db, graph, dragging, cell, promptResults, env }: NotebookCellProps) => {\n const { t } = useTranslation(meta.id);\n\n const extensions = useMemo(() => {\n return cell.source?.target\n ? [\n createDataExtensions({\n id: cell.id,\n text: createDocAccessor(cell.source.target, ['content']),\n }),\n ].filter(isNonNullable)\n : [];\n }, [cell.source?.target]);\n\n const explorerGraph = cell.graph?.target;\n\n const handleQueryChange = useCallback<NonNullable<QueryEditorProps['onChange']>>(\n (value: string) => {\n invariant(cell.source?.target);\n Obj.change(cell.source.target, (s) => {\n s.content = value;\n });\n },\n [cell],\n );\n\n switch (cell.type) {\n case 'markdown':\n if (!cell.source?.target) {\n return null;\n }\n\n return (\n <NotebookTextEditor\n id={cell.id}\n classNames={editorStyles}\n initialValue={cell.source.target.content}\n extensions={extensions}\n />\n );\n\n case 'script':\n if (!cell.source?.target) {\n return null;\n }\n\n return (\n <>\n <TypescriptEditor\n id={cell.id}\n role='section'\n classNames={editorStyles}\n initialValue={cell.source.target.content}\n extensions={extensions}\n env={env}\n options={{\n placeholder: t('notebook cell placeholder'),\n highlightActiveLine: false,\n lineNumbers: false,\n }}\n />\n <NotebookCellValue cell={cell} graph={graph} />\n </>\n );\n\n case 'query':\n if (!cell.source?.target) {\n return null;\n }\n\n // TODO(burdon): Remove app-framework deps (via render prop).\n return (\n <div\n className={mx('bs-full overflow-hidden grid', explorerGraph && !dragging && 'grid-rows-[min-content_1fr]')}\n >\n <QueryEditor\n id={cell.id}\n classNames={[editorStyles, 'border-be border-subduedSeparator']}\n db={db}\n value={cell.source.target.content}\n onChange={handleQueryChange}\n />\n {explorerGraph && !dragging && <Surface.Surface role='section' limit={1} data={{ subject: explorerGraph }} />}\n </div>\n );\n\n // TODO(burdon): Use streaming response from Chat.\n case 'prompt':\n if (!cell.prompt?.target) {\n return null;\n }\n\n return (\n <>\n <TemplateEditor\n id={cell.id}\n template={cell.prompt.target.instructions}\n lineNumbers={false}\n classNames={editorStyles}\n />\n <NotebookPromptResult cell={cell} promptResults={promptResults} />\n </>\n );\n\n default:\n return null;\n }\n};\n\nconst NotebookCellValue = ({ cell, graph }: NotebookCellProps) => {\n const name = graph?.getExpressions()[cell.id]?.name;\n const value = graph?.getValue(cell.id);\n if (value == null) {\n return null;\n }\n\n return (\n <div\n className={mx(\n 'flex is-full bg-groupSurface border-bs border-subduedSeparator text-description font-mono',\n valueStyles,\n )}\n >\n {name && (\n <>\n <span className='text-successText'>{name}</span>\n <span className='text-description'>&nbsp;=&nbsp;</span>\n </>\n )}\n <span>{value}</span>\n </div>\n );\n};\n\nconst NotebookPromptResult = ({ cell, promptResults }: NotebookCellProps) => {\n if (!cell.prompt) {\n return null;\n }\n\n const value = promptResults?.[cell.prompt.dxn.toString()];\n if (value == null) {\n return null;\n }\n\n return (\n <div className={mx('flex is-full bg-groupSurface text-description border-bs border-subduedSeparator', valueStyles)}>\n <NotebookTextEditor readOnly value={value} />\n </div>\n );\n};\n\nconst NotebookTextEditor = ({\n extensions: extensionsProp,\n readOnly,\n ...props\n}: EditorContentProps & Pick<BasicExtensionsOptions, 'readOnly'>) => {\n const { t } = useTranslation(meta.id);\n const { themeMode } = useThemeContext();\n const extensions = useMemo(() => {\n return [\n createBasicExtensions({\n placeholder: t('notebook markdown placeholder'),\n readOnly,\n }),\n createThemeExtensions({ themeMode, syntaxHighlighting: true }),\n createMarkdownExtensions(),\n decorateMarkdown(),\n extensionsProp,\n ].filter(isNonNullable);\n }, [extensionsProp]);\n\n return <EditorContent {...props} extensions={extensions} selectionEnd />;\n};\n"],
5
- "mappings": "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",
6
- "names": ["React", "DropdownMenu", "useTranslation", "NotebookMenu", "cell", "onCellInsert", "onCellDelete", "t", "useTranslation", "meta", "id", "DropdownMenu", "Portal", "Content", "Viewport", "Item", "onClick", "Arrow", "React", "DropdownMenu", "IconButton", "useTranslation", "Stack", "StackItem", "React", "useCallback", "useMemo", "Surface", "Obj", "createDocAccessor", "invariant", "TemplateEditor", "useThemeContext", "useTranslation", "QueryEditor", "EditorContent", "createBasicExtensions", "createDataExtensions", "createMarkdownExtensions", "createThemeExtensions", "decorateMarkdown", "mx", "isNonNullable", "editorStyles", "valueStyles", "NotebookCell", "db", "graph", "dragging", "cell", "promptResults", "env", "t", "useTranslation", "meta", "id", "extensions", "useMemo", "source", "target", "createDataExtensions", "text", "createDocAccessor", "filter", "isNonNullable", "explorerGraph", "handleQueryChange", "useCallback", "value", "invariant", "Obj", "change", "s", "content", "type", "React", "NotebookTextEditor", "classNames", "initialValue", "TypescriptEditor", "role", "options", "placeholder", "highlightActiveLine", "lineNumbers", "NotebookCellValue", "div", "className", "mx", "QueryEditor", "onChange", "Surface", "limit", "data", "subject", "prompt", "TemplateEditor", "template", "instructions", "NotebookPromptResult", "name", "getExpressions", "getValue", "span", "dxn", "toString", "readOnly", "extensionsProp", "props", "themeMode", "useThemeContext", "createBasicExtensions", "createThemeExtensions", "syntaxHighlighting", "createMarkdownExtensions", "decorateMarkdown", "EditorContent", "selectionEnd", "minSectionHeight", "NotebookStack", "classNames", "notebook", "onRearrange", "props", "React", "Stack", "orientation", "size", "rail", "cells", "map", "cell", "i", "NotebookSection", "key", "db", "env", "promptResults", "onCellInsert", "onCellDelete", "t", "useTranslation", "meta", "id", "resizable", "type", "StackItem", "Root", "role", "item", "draggable", "Heading", "DragHandle", "asChild", "IconButton", "variant", "icon", "iconOnly", "label", "DropdownMenu", "Trigger", "NotebookMenu", "ResizeHandle", "DragPreview", "Content", "NotebookCell", "dragging"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/util/deploy.ts", "../../../src/util/functions.ts", "../../../src/hooks/deploy.ts", "../../../src/hooks/useToolbarState.ts", "../../../src/hooks/useCompiler.ts", "../../../src/hooks/format.ts", "../../../src/hooks/template.ts", "../../../src/hooks/useCreateAndDeployScriptTemplates.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Client } from '@dxos/client';\nimport { Obj, Ref } from '@dxos/echo';\nimport { Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { bundleFunction } from '@dxos/functions-runtime/bundler';\nimport { FunctionsServiceClient, incrementSemverPatch } from '@dxos/functions-runtime/edge';\nimport { log } from '@dxos/log';\nimport { FunctionRuntimeKind } from '@dxos/protocols';\nimport { type Space } from '@dxos/react-client/echo';\n\nexport const isScriptDeployed = ({ script, fn }: { script: Script.Script; fn: any }): boolean => {\n const existingFunctionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));\n return Boolean(existingFunctionId) && !script.changed;\n};\n\ntype DeployScriptProps = {\n script: Script.Script;\n client: Client;\n space: Space;\n fn?: Function.Function;\n existingFunctionId?: string;\n};\n\ntype DeployScriptResult = { success: boolean; error?: Error; functionId?: string };\n\n/**\n * Deploy a script to a space, handling bundling and uploading to the FaaS infrastructure.\n */\nexport const deployScript = async ({\n script,\n client,\n space,\n fn,\n existingFunctionId,\n}: DeployScriptProps): Promise<DeployScriptResult> => {\n const validationError = validateDeployInputs(script, space);\n if (validationError) {\n return { success: false, error: validationError };\n }\n\n try {\n const buildResult = await bundleFunction({\n source: script.source!.target!.content,\n });\n if ('error' in buildResult) {\n throw buildResult.error || new Error('Bundle creation failed');\n }\n\n const functionsServiceClient = FunctionsServiceClient.fromClient(client);\n const newFunction = await functionsServiceClient.deploy({\n // TODO(dmaretskyi): Space key or identity key.\n ownerPublicKey: space.key,\n version: fn ? incrementSemverPatch(fn.version) : '0.0.1',\n functionId: existingFunctionId,\n entryPoint: buildResult.entryPoint,\n assets: buildResult.assets,\n runtime: FunctionRuntimeKind.enums.WORKER_LOADER,\n });\n\n const storedFunction = createOrUpdateFunctionInSpace(space, fn, script, newFunction);\n Obj.change(script, (s) => {\n s.changed = false;\n });\n\n return { success: true, functionId: getUserFunctionIdInMetadata(Obj.getMeta(storedFunction)) };\n } catch (err: any) {\n log.catch(err);\n return { success: false, error: err };\n }\n};\n\n/**\n * Validate inputs for script deployment.\n */\nconst validateDeployInputs = (script: Script.Script, space: Space): Error | null => {\n if (!script.source || !space) {\n return new Error('Script source or space not available');\n }\n return null;\n};\n\nconst createOrUpdateFunctionInSpace = (\n space: Space,\n fn: Function.Function | undefined,\n script: Script.Script,\n newFunction: Function.Function,\n): Function.Function => {\n if (fn) {\n Function.setFrom(fn, newFunction);\n return fn;\n } else {\n Obj.change(newFunction, (f) => {\n f.source = Ref.make(script);\n });\n return space.db.add(newFunction);\n }\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Obj } from '@dxos/echo';\nimport { type Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { getInvocationUrl } from '@dxos/functions-runtime';\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type Credential } from '@dxos/protocols/proto/dxos/halo/credentials';\nimport { getSpace } from '@dxos/react-client/echo';\n/**\n * Get the function URL for a given script and client configuration\n */\nexport const getFunctionUrl = ({\n script,\n fn,\n edgeUrl,\n}: {\n script: Script.Script;\n fn: any;\n edgeUrl: string;\n}): string | undefined => {\n const space = getSpace(script);\n const existingFunctionId = fn && getUserFunctionIdInMetadata(Obj.getMeta(fn));\n\n if (!existingFunctionId) {\n return undefined;\n }\n\n return getInvocationUrl(existingFunctionId, edgeUrl, {\n spaceId: space?.id,\n });\n};\n\nexport const updateFunctionMetadata = (\n script: Script.Script,\n storedFunction: Function.Function,\n meta: any,\n functionId: string,\n) => {\n Obj.change(storedFunction, (f) => {\n if (script.description !== undefined && script.description.trim() !== '') {\n f.description = script.description;\n } else if (meta.description) {\n f.description = meta.description;\n } else {\n log.verbose('no description in function metadata', { functionId });\n }\n\n if (meta.inputSchema) {\n f.inputSchema = meta.inputSchema;\n } else {\n log.verbose('no input schema in function metadata', { functionId });\n }\n\n if (meta.outputSchema) {\n f.outputSchema = meta.outputSchema;\n } else {\n log.verbose('no output schema in function metadata', { functionId });\n }\n\n if (meta.key) {\n f.key = meta.key;\n } else {\n log.verbose('no key in function metadata', { functionId });\n }\n });\n};\n\nexport const getAccessCredential = (identityKey: PublicKey): Credential => {\n return {\n issuer: identityKey,\n issuanceDate: new Date(),\n subject: {\n id: identityKey,\n assertion: {\n '@type': 'dxos.halo.credentials.ServiceAccess',\n serverName: 'hub.dxos.network',\n serverKey: identityKey,\n identityKey,\n capabilities: ['composer:beta'],\n },\n },\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect, useMemo } from 'react';\n\nimport { Obj, Query, Ref } from '@dxos/echo';\nimport { Function, type Script, getUserFunctionIdInMetadata } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { type Client, useClient } from '@dxos/react-client';\nimport { type Space, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { type TFunction } from '@dxos/react-ui';\nimport { createMenuAction } from '@dxos/react-ui-menu';\nimport { errorMessageColors } from '@dxos/ui-theme';\n\nimport { meta } from '../meta';\nimport { deployScript, getFunctionUrl, isScriptDeployed } from '../util';\n\nexport type DeployActionProperties = { type: 'deploy' } | { type: 'copy' };\n\nexport type DeployState = {\n deploying: boolean;\n deployed: boolean;\n functionUrl: string;\n error: string;\n};\n\nimport { type ScriptToolbarStateStore } from './useToolbarState';\n\nexport type CreateDeployOptions = {\n state: ScriptToolbarStateStore;\n script: Script.Script;\n fn: Function.Function;\n space?: Space;\n existingFunctionId?: string;\n client: Client;\n t: TFunction;\n};\n\nexport const createDeploy = ({ state, script, space, fn, client, existingFunctionId, t }: CreateDeployOptions) => {\n const { value } = state;\n\n // TODO(wittjosiah): Should this be an action?\n const errorItem = createMenuAction('error', () => {}, {\n label: value.error ?? ['no error label', { ns: meta.id }],\n icon: 'ph--warning-circle--regular',\n hidden: !value.error,\n classNames: value.error && errorMessageColors,\n });\n\n const deployAction = createMenuAction<DeployActionProperties>(\n 'deploy',\n async () => {\n if (!script.source || !space) {\n return;\n }\n\n state.set('error', undefined);\n state.set('deploying', true);\n\n const result = await deployScript({ script, client, space, fn, existingFunctionId });\n\n if (!result.success) {\n log.catch(result.error);\n state.set('error', t('upload failed label'));\n }\n\n state.set('deploying', false);\n },\n {\n type: 'deploy',\n label: [value.deploying ? 'publishing label' : 'deploy label', { ns: meta.id }],\n icon: value.deploying ? 'ph--spinner-gap--regular' : 'ph--cloud-arrow-up--regular',\n disabled: value.deploying,\n classNames: value.deploying ? '[&_svg]:animate-spin' : '',\n },\n );\n\n const copyAction = createMenuAction<DeployActionProperties>(\n 'copy',\n async () => {\n if (value.functionUrl) {\n await navigator.clipboard.writeText(value.functionUrl);\n }\n },\n {\n type: 'copy',\n label: ['copy link label', { ns: meta.id }],\n icon: 'ph--link--regular',\n disabled: !value.functionUrl,\n },\n );\n\n return {\n nodes: [errorItem, deployAction, copyAction],\n edges: [\n { source: 'root', target: 'error' },\n { source: 'root', target: 'deploy' },\n { source: 'root', target: 'copy' },\n ],\n };\n};\n\nexport const useDeployState = ({ state, script }: { state: ScriptToolbarStateStore; script: Script.Script }) => {\n const { space, client, fn, existingFunctionId } = useDeployDeps({ script });\n useEffect(() => {\n if (!existingFunctionId) {\n return;\n }\n\n state.set(\n 'functionUrl',\n getFunctionUrl({\n script,\n fn,\n edgeUrl: client.config.values.runtime?.services?.edge?.url ?? '',\n }),\n );\n }, [existingFunctionId, space, fn, script, client.config.values.runtime?.services?.edge?.url, state]);\n\n useEffect(() => {\n state.set('deployed', isScriptDeployed({ script, fn }));\n }, [script.changed, existingFunctionId, fn, script, state]);\n};\n\nexport const useDeployDeps = ({ script }: { script: Script.Script }) => {\n const client = useClient();\n const space = getSpace(script);\n const [fn] = useQuery(space?.db, Query.type(Function.Function, { source: Ref.make(script) }));\n const existingFunctionId = useMemo(() => fn && getUserFunctionIdInMetadata(Obj.getMeta(fn)), [fn]);\n return { client, space, fn, existingFunctionId };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport { useMemo } from 'react';\n\nimport { Capabilities } from '@dxos/app-framework';\nimport { useCapability } from '@dxos/app-framework/ui';\n\nimport { type DeployState } from './deploy';\n\nexport type ScriptToolbarState = Partial<DeployState>;\n\nexport type ScriptToolbarStateStore = {\n atom: Atom.Writable<ScriptToolbarState>;\n get value(): ScriptToolbarState;\n update: (updater: (current: ScriptToolbarState) => ScriptToolbarState) => void;\n set: <K extends keyof ScriptToolbarState>(key: K, value: ScriptToolbarState[K]) => void;\n};\n\nexport const useToolbarState = (initialState: ScriptToolbarState = {}): ScriptToolbarStateStore => {\n const registry = useCapability(Capabilities.AtomRegistry);\n const atom = useMemo(() => Atom.make<ScriptToolbarState>(initialState), []);\n\n return useMemo(\n () => ({\n atom,\n get value() {\n return registry.get(atom);\n },\n update: (updater: (current: ScriptToolbarState) => ScriptToolbarState) => {\n registry.set(atom, updater(registry.get(atom)));\n },\n set: <K extends keyof ScriptToolbarState>(key: K, v: ScriptToolbarState[K]) => {\n registry.set(atom, { ...registry.get(atom), [key]: v });\n },\n }),\n [atom, registry],\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCapabilities, usePluginManager } from '@dxos/app-framework/ui';\nimport { runAndForwardErrors } from '@dxos/effect';\nimport { useAsyncEffect } from '@dxos/react-ui';\n\nimport type { Compiler } from '../compiler';\nimport { ScriptEvents } from '../types';\nimport { ScriptCapabilities } from '../types';\n\n/**\n * Asynchronously sets up the compiler and returns it.\n * @returns The compiler instance or undefined if it is not ready.\n */\nexport const useCompiler = (): Compiler | undefined => {\n const manager = usePluginManager();\n useAsyncEffect(async () => {\n await manager.activate(ScriptEvents.SetupCompiler).pipe(runAndForwardErrors);\n }, [manager]);\n const [compiler] = useCapabilities(ScriptCapabilities.Compiler);\n return compiler;\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { format } from 'prettier';\nimport prettierPluginEstree from 'prettier/plugins/estree';\nimport prettierPluginTypescript from 'prettier/plugins/typescript';\n\nimport { Obj } from '@dxos/echo';\nimport { type Script } from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { createMenuAction } from '@dxos/react-ui-menu';\n\nimport { meta } from '../meta';\n\nexport type FormatActionProperties = { type: 'format' };\n\nexport const createFormat = (script: Script.Script) => {\n const formatAction = createMenuAction(\n 'format',\n async () => {\n if (!script.source) {\n return;\n }\n\n try {\n const formatted = await format(script.source.target!.content, {\n parser: 'typescript',\n plugins: [prettierPluginEstree, prettierPluginTypescript],\n semi: true,\n singleQuote: true,\n });\n Obj.change(script.source.target!, (s) => {\n s.content = formatted;\n });\n } catch (err: any) {\n // TODO(wittjosiah): Show error in UI.\n log.catch(err);\n }\n },\n {\n label: ['format label', { ns: meta.id }],\n icon: 'ph--magic-wand--regular',\n },\n );\n\n return {\n nodes: [formatAction],\n edges: [\n {\n source: 'root',\n target: 'format',\n },\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Obj } from '@dxos/echo';\nimport { FUNCTIONS_PRESET_META_KEY, type Script } from '@dxos/functions';\nimport { createMenuAction } from '@dxos/react-ui-menu';\n\nimport { templates } from '../templates';\n\nexport type TemplateActionProperties = { type: 'template'; value: string };\n\nconst createTemplateSelectActions = (script: Script.Script) => {\n return templates.map((template) => {\n return createMenuAction<TemplateActionProperties>(\n `template--${template.id}`,\n () => {\n Obj.change(script, (s) => {\n s.name = template.name;\n const meta = Obj.getMeta(s);\n const oldPresetIndex = meta.keys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);\n if (oldPresetIndex >= 0) {\n meta.keys.splice(oldPresetIndex, 1);\n }\n if ('presetId' in template) {\n meta.keys.push({ source: FUNCTIONS_PRESET_META_KEY, id: template.presetId });\n }\n });\n if (script.source?.target) {\n Obj.change(script.source.target, (s) => {\n s.content = template.source;\n });\n }\n },\n {\n label: template.name,\n value: template.id,\n type: 'template',\n },\n );\n });\n};\n\nexport const createTemplateSelect = (script: Script.Script) => {\n const templateSelectActions = createTemplateSelectActions(script);\n return {\n nodes: [...templateSelectActions],\n edges: [\n { source: 'root', target: 'template-select' },\n ...templateSelectActions.map((action) => ({ source: 'template-select', target: action.id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useCallback, useState } from 'react';\n\nimport { useOperationInvoker } from '@dxos/app-framework/ui';\nimport { Obj } from '@dxos/echo';\nimport { Script } from '@dxos/functions';\nimport { invariant } from '@dxos/invariant';\nimport { SpaceOperation } from '@dxos/plugin-space/types';\nimport { useClient } from '@dxos/react-client';\nimport { type Space } from '@dxos/react-client/echo';\n\nimport { type Template } from '../templates';\nimport { ScriptOperation } from '../types';\nimport { deployScript } from '../util';\n\ntype DeploymentStatus = 'idle' | 'pending' | 'success' | 'error';\n\n/**\n * Hook for creating and deploying multiple script templates concurrently.\n *\n * Takes a space and an array of script template IDs, then provides a callback\n * function that creates each script from its template and deploys it to the space.\n * All creation / deployment operations run concurrently for improved performance.\n */\nexport const useCreateAndDeployScriptTemplates = (space: Space | undefined, scriptTemplates: Template[]) => {\n const { invokePromise } = useOperationInvoker();\n const client = useClient();\n const [status, setStatus] = useState<DeploymentStatus>('idle');\n const [error, setError] = useState<Error | undefined>(undefined);\n\n const handleCreateAndDeployScripts = useCallback(async () => {\n invariant(space);\n setStatus('pending');\n setError(undefined);\n\n const deploymentResults = await Promise.all(\n scriptTemplates.map(async (template) => {\n const createResult = await invokePromise(ScriptOperation.CreateScript, {\n db: space.db,\n initialTemplateId: template.id as any,\n });\n invariant(Obj.instanceOf(Script.Script, createResult.data?.object));\n await invokePromise(SpaceOperation.AddObject, { target: space.db, object: createResult.data.object });\n\n return deployScript({ space, client, script: createResult.data.object });\n }),\n );\n\n const hasErrors = deploymentResults.some((result) => !result.success);\n setStatus(hasErrors ? 'error' : 'success');\n }, [space, invokePromise, client, scriptTemplates]);\n\n // TODO(burdon): Return onCreateAndDeployScripts.\n return { handleCreateAndDeployScripts, status, error };\n};\n"],
5
- "mappings": "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",
6
- "names": ["Obj", "Ref", "Function", "getUserFunctionIdInMetadata", "bundleFunction", "FunctionsServiceClient", "incrementSemverPatch", "log", "FunctionRuntimeKind", "isScriptDeployed", "script", "fn", "existingFunctionId", "getMeta", "Boolean", "changed", "deployScript", "client", "space", "validationError", "validateDeployInputs", "success", "error", "buildResult", "source", "target", "content", "Error", "functionsServiceClient", "fromClient", "newFunction", "deploy", "ownerPublicKey", "key", "version", "functionId", "entryPoint", "assets", "runtime", "enums", "WORKER_LOADER", "storedFunction", "createOrUpdateFunctionInSpace", "change", "s", "err", "catch", "setFrom", "f", "make", "db", "add", "Obj", "getUserFunctionIdInMetadata", "getInvocationUrl", "log", "getSpace", "getFunctionUrl", "script", "fn", "edgeUrl", "space", "existingFunctionId", "getMeta", "undefined", "spaceId", "id", "updateFunctionMetadata", "storedFunction", "meta", "functionId", "change", "f", "description", "trim", "verbose", "inputSchema", "outputSchema", "key", "getAccessCredential", "identityKey", "issuer", "issuanceDate", "Date", "subject", "assertion", "serverName", "serverKey", "capabilities", "useEffect", "useMemo", "Obj", "Query", "Ref", "Function", "getUserFunctionIdInMetadata", "log", "useClient", "getSpace", "useQuery", "createMenuAction", "errorMessageColors", "createDeploy", "state", "script", "space", "fn", "client", "existingFunctionId", "t", "value", "errorItem", "createMenuAction", "label", "error", "ns", "meta", "id", "icon", "hidden", "classNames", "errorMessageColors", "deployAction", "source", "set", "undefined", "result", "deployScript", "success", "log", "catch", "type", "deploying", "disabled", "copyAction", "functionUrl", "navigator", "clipboard", "writeText", "nodes", "edges", "target", "useDeployState", "useDeployDeps", "useEffect", "getFunctionUrl", "edgeUrl", "config", "values", "runtime", "services", "edge", "url", "isScriptDeployed", "changed", "useClient", "getSpace", "useQuery", "db", "Query", "Function", "Ref", "make", "useMemo", "getUserFunctionIdInMetadata", "Obj", "getMeta", "Atom", "useMemo", "Capabilities", "useCapability", "useToolbarState", "initialState", "registry", "useCapability", "Capabilities", "AtomRegistry", "atom", "useMemo", "Atom", "make", "value", "get", "update", "updater", "set", "key", "v", "useCapabilities", "usePluginManager", "runAndForwardErrors", "useAsyncEffect", "useCompiler", "manager", "usePluginManager", "useAsyncEffect", "activate", "ScriptEvents", "SetupCompiler", "pipe", "runAndForwardErrors", "compiler", "useCapabilities", "ScriptCapabilities", "Compiler", "format", "prettierPluginEstree", "prettierPluginTypescript", "Obj", "log", "createMenuAction", "createFormat", "script", "formatAction", "createMenuAction", "source", "formatted", "format", "target", "content", "parser", "plugins", "prettierPluginEstree", "prettierPluginTypescript", "semi", "singleQuote", "Obj", "change", "s", "err", "log", "catch", "label", "ns", "meta", "id", "icon", "nodes", "edges", "Obj", "FUNCTIONS_PRESET_META_KEY", "createMenuAction", "createTemplateSelectActions", "script", "templates", "map", "template", "createMenuAction", "id", "Obj", "change", "s", "name", "meta", "getMeta", "oldPresetIndex", "keys", "findIndex", "key", "source", "FUNCTIONS_PRESET_META_KEY", "splice", "push", "presetId", "target", "content", "label", "value", "type", "createTemplateSelect", "templateSelectActions", "nodes", "edges", "action", "useCallback", "useState", "useOperationInvoker", "Obj", "Script", "invariant", "SpaceOperation", "useClient", "useCreateAndDeployScriptTemplates", "space", "scriptTemplates", "invokePromise", "useOperationInvoker", "client", "useClient", "status", "setStatus", "useState", "error", "setError", "undefined", "handleCreateAndDeployScripts", "useCallback", "invariant", "deploymentResults", "Promise", "all", "map", "template", "createResult", "ScriptOperation", "CreateScript", "db", "initialTemplateId", "id", "Obj", "instanceOf", "Script", "data", "object", "SpaceOperation", "AddObject", "target", "deployScript", "script", "hasErrors", "some", "result", "success"]
7
- }
@@ -1,112 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
-
3
- // src/components/TypescriptEditor/TypescriptEditor.tsx
4
- import { autocompletion, completionKeymap } from "@codemirror/autocomplete";
5
- import { javascript } from "@codemirror/lang-javascript";
6
- import { HighlightStyle } from "@codemirror/language";
7
- import { lintKeymap } from "@codemirror/lint";
8
- import { Prec } from "@codemirror/state";
9
- import { keymap } from "@codemirror/view";
10
- import { tags } from "@lezer/highlight";
11
- import { continueKeymap } from "@valtown/codemirror-continue";
12
- import { tsAutocomplete, tsFacet, tsHover, tsLinter, tsSync } from "@valtown/codemirror-ts";
13
- import React, { memo } from "react";
14
- import { useThemeContext } from "@dxos/react-ui";
15
- import { useTextEditor } from "@dxos/react-ui-editor";
16
- import { Domino } from "@dxos/ui";
17
- import { InputModeExtensions, createBasicExtensions, createThemeExtensions, defaultStyles } from "@dxos/ui-editor";
18
- import { mx } from "@dxos/ui-theme";
19
- import { isNonNullable } from "@dxos/util";
20
- var TypescriptEditor = /* @__PURE__ */ memo(({ classNames, id, role = "article", inputMode = "vscode", env, options, initialValue, extensions, scrollTo, selection }) => {
21
- const { themeMode } = useThemeContext();
22
- const { parentRef, focusAttributes } = useTextEditor(() => ({
23
- id,
24
- initialValue,
25
- selection,
26
- scrollTo,
27
- extensions: [
28
- extensions,
29
- createBasicExtensions({
30
- highlightActiveLine: true,
31
- indentWithTab: true,
32
- lineNumbers: true,
33
- lineWrapping: false,
34
- scrollPastEnd: role !== "section",
35
- search: true,
36
- ...options
37
- }),
38
- createThemeExtensions({
39
- monospace: true,
40
- themeMode,
41
- syntaxHighlighting: true
42
- }),
43
- InputModeExtensions[inputMode],
44
- javascript({
45
- typescript: true
46
- }),
47
- autocompletion({
48
- override: env ? [
49
- tsAutocomplete()
50
- ] : void 0
51
- }),
52
- // Continues block comments when pressing Enter.
53
- Prec.high(keymap.of(continueKeymap)),
54
- keymap.of(completionKeymap),
55
- keymap.of(lintKeymap),
56
- // https://github.com/val-town/codemirror-ts
57
- env && [
58
- // TODO(burdon): Fix type.
59
- tsFacet.of({
60
- env,
61
- path: `./src/${id}.ts`
62
- }),
63
- tsSync(),
64
- tsLinter(),
65
- tsHover({
66
- renderTooltip: createTooltipRenderer(themeMode)
67
- })
68
- ]
69
- ].filter(isNonNullable)
70
- }), [
71
- themeMode,
72
- id,
73
- extensions,
74
- inputMode,
75
- selection,
76
- scrollTo,
77
- env
78
- ]);
79
- return /* @__PURE__ */ React.createElement("div", {
80
- ref: parentRef,
81
- className: mx(classNames),
82
- ...focusAttributes
83
- });
84
- });
85
- var createTooltipRenderer = (themeMode) => {
86
- const theme = HighlightStyle.define(themeMode === "dark" ? defaultStyles.dark : defaultStyles.light);
87
- const classFromKind = (_kind) => {
88
- const kind = _kind.endsWith("Name") ? "name" : _kind;
89
- const validTag = kind in tags;
90
- if (!validTag) {
91
- return "";
92
- }
93
- const tag = tags[kind];
94
- if (typeof tag === "function") {
95
- return "";
96
- }
97
- return theme.style([
98
- tag
99
- ]) ?? "";
100
- };
101
- return (info) => {
102
- const children = info.quickInfo?.displayParts?.map(({ kind, text }) => Domino.of("span").classNames(classFromKind(kind)).text(text)) ?? [];
103
- return {
104
- dom: Domino.of("div").classNames("xs:max-is-80 max-is-lg p-1 bg-baseSurface rounded border border-separator").children(...children).root
105
- };
106
- };
107
- };
108
-
109
- export {
110
- TypescriptEditor
111
- };
112
- //# sourceMappingURL=chunk-SLU3KRV3.mjs.map