@dxos/plugin-script 0.7.4-staging.f7e8224 → 0.7.5-labs.071a3e2

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 (267) hide show
  1. package/dist/lib/browser/{AutomationPanel-PMTZROAZ.mjs → AutomationPanel-J3SZ5L3Y.mjs} +4 -11
  2. package/dist/lib/browser/AutomationPanel-J3SZ5L3Y.mjs.map +7 -0
  3. package/dist/lib/browser/ScriptContainer-LGW52UAJ.mjs +688 -0
  4. package/dist/lib/browser/ScriptContainer-LGW52UAJ.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-2UXYECEH.mjs +236 -0
  6. package/dist/lib/browser/chunk-2UXYECEH.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-K7KY6YMG.mjs → chunk-45LXDWNF.mjs} +2 -2
  8. package/dist/lib/browser/chunk-6MOQ4BP3.mjs +15 -0
  9. package/dist/lib/browser/chunk-6MOQ4BP3.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-FVVCAWNP.mjs +21 -0
  11. package/dist/lib/browser/chunk-FVVCAWNP.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-N46LE7FS.mjs +40 -0
  13. package/dist/lib/browser/chunk-N46LE7FS.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-4UTRJLQ3.mjs → chunk-SDHKTS6H.mjs} +2 -51
  15. package/dist/lib/browser/{chunk-4UTRJLQ3.mjs.map → chunk-SDHKTS6H.mjs.map} +4 -4
  16. package/dist/lib/browser/chunk-VIX22OMB.mjs +60 -0
  17. package/dist/lib/browser/chunk-VIX22OMB.mjs.map +7 -0
  18. package/dist/lib/browser/compiler-K3FNRDDN.mjs +84 -0
  19. package/dist/lib/browser/compiler-K3FNRDDN.mjs.map +7 -0
  20. package/dist/lib/browser/index.mjs +109 -357
  21. package/dist/lib/browser/index.mjs.map +4 -4
  22. package/dist/lib/browser/intent-resolver-CMKQTLBG.mjs +45 -0
  23. package/dist/lib/browser/intent-resolver-CMKQTLBG.mjs.map +7 -0
  24. package/dist/lib/browser/meta.json +1 -1
  25. package/dist/lib/browser/react-surface-XACNR5NR.mjs +65 -0
  26. package/dist/lib/browser/react-surface-XACNR5NR.mjs.map +7 -0
  27. package/dist/lib/browser/settings-SZCDKHWO.mjs +24 -0
  28. package/dist/lib/browser/settings-SZCDKHWO.mjs.map +7 -0
  29. package/dist/lib/browser/types.mjs +10 -0
  30. package/dist/lib/node/{AutomationPanel-AAGQREH7.cjs → AutomationPanel-4M55FURO.cjs} +16 -17
  31. package/dist/lib/node/AutomationPanel-4M55FURO.cjs.map +7 -0
  32. package/dist/lib/node/ScriptContainer-UI2MDBYG.cjs +692 -0
  33. package/dist/lib/node/ScriptContainer-UI2MDBYG.cjs.map +7 -0
  34. package/dist/lib/node/{chunk-6LYX73ZT.cjs → chunk-5UH3F7TA.cjs} +11 -8
  35. package/dist/lib/node/chunk-5UH3F7TA.cjs.map +7 -0
  36. package/dist/lib/node/chunk-73345ZL6.cjs +264 -0
  37. package/dist/lib/node/chunk-73345ZL6.cjs.map +7 -0
  38. package/dist/lib/node/{meta.cjs → chunk-ALY3N6PW.cjs} +12 -8
  39. package/dist/lib/node/chunk-ALY3N6PW.cjs.map +7 -0
  40. package/dist/lib/node/chunk-DJGLGRQV.cjs +60 -0
  41. package/dist/lib/node/chunk-DJGLGRQV.cjs.map +7 -0
  42. package/dist/lib/node/{chunk-4INUJLXL.cjs → chunk-IID7WUQS.cjs} +6 -6
  43. package/dist/lib/node/chunk-PKT5DD3O.cjs +70 -0
  44. package/dist/lib/node/chunk-PKT5DD3O.cjs.map +7 -0
  45. package/dist/lib/node/{chunk-WPP65EYS.cjs → chunk-T4TXCRN5.cjs} +6 -44
  46. package/dist/lib/node/chunk-T4TXCRN5.cjs.map +7 -0
  47. package/dist/lib/node/compiler-P2HQB22H.cjs +104 -0
  48. package/dist/lib/node/compiler-P2HQB22H.cjs.map +7 -0
  49. package/dist/lib/node/index.cjs +106 -346
  50. package/dist/lib/node/index.cjs.map +4 -4
  51. package/dist/lib/node/intent-resolver-V5ASU5DW.cjs +59 -0
  52. package/dist/lib/node/intent-resolver-V5ASU5DW.cjs.map +7 -0
  53. package/dist/lib/node/meta.json +1 -1
  54. package/dist/lib/node/react-surface-Y3RD5FW7.cjs +84 -0
  55. package/dist/lib/node/react-surface-Y3RD5FW7.cjs.map +7 -0
  56. package/dist/lib/node/settings-SZFSMSKM.cjs +38 -0
  57. package/dist/lib/node/settings-SZFSMSKM.cjs.map +7 -0
  58. package/dist/lib/node/{types/index.cjs → types.cjs} +6 -8
  59. package/dist/lib/node/types.cjs.map +7 -0
  60. package/dist/lib/node-esm/{AutomationPanel-ETQEDY5I.mjs → AutomationPanel-W6SKG35R.mjs} +4 -11
  61. package/dist/lib/node-esm/AutomationPanel-W6SKG35R.mjs.map +7 -0
  62. package/dist/lib/node-esm/ScriptContainer-F7SNP53Z.mjs +689 -0
  63. package/dist/lib/node-esm/ScriptContainer-F7SNP53Z.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-OFYGBUNI.mjs → chunk-CGF7EOGD.mjs} +2 -2
  65. package/dist/lib/node-esm/chunk-CP5LXTK5.mjs +16 -0
  66. package/dist/lib/node-esm/chunk-CP5LXTK5.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-4SRPREUK.mjs → chunk-G76M6O46.mjs} +2 -51
  68. package/dist/lib/node-esm/{chunk-4SRPREUK.mjs.map → chunk-G76M6O46.mjs.map} +4 -4
  69. package/dist/lib/node-esm/chunk-NBAL5DXN.mjs +62 -0
  70. package/dist/lib/node-esm/chunk-NBAL5DXN.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-SLTZMY34.mjs → chunk-P2V2Y5LV.mjs} +7 -4
  72. package/dist/lib/node-esm/chunk-P2V2Y5LV.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-PRGBYF4B.mjs +237 -0
  74. package/dist/lib/node-esm/chunk-PRGBYF4B.mjs.map +7 -0
  75. package/dist/lib/node-esm/chunk-UNQFIERE.mjs +41 -0
  76. package/dist/lib/node-esm/chunk-UNQFIERE.mjs.map +7 -0
  77. package/dist/lib/node-esm/compiler-PDN46H4Y.mjs +85 -0
  78. package/dist/lib/node-esm/compiler-PDN46H4Y.mjs.map +7 -0
  79. package/dist/lib/node-esm/index.mjs +109 -357
  80. package/dist/lib/node-esm/index.mjs.map +4 -4
  81. package/dist/lib/node-esm/intent-resolver-75BHFRUK.mjs +46 -0
  82. package/dist/lib/node-esm/intent-resolver-75BHFRUK.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/react-surface-PKUVZH4S.mjs +66 -0
  85. package/dist/lib/node-esm/react-surface-PKUVZH4S.mjs.map +7 -0
  86. package/dist/lib/node-esm/settings-GR4O2WHZ.mjs +25 -0
  87. package/dist/lib/node-esm/settings-GR4O2WHZ.mjs.map +7 -0
  88. package/dist/lib/node-esm/types.mjs +11 -0
  89. package/dist/types/src/ScriptPlugin.d.ts +1 -3
  90. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  91. package/dist/types/src/capabilities/capabilities.d.ts +5 -0
  92. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/compiler.d.ts +4 -0
  94. package/dist/types/src/capabilities/compiler.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/index.d.ts +6 -0
  96. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
  98. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/react-surface.d.ts +4 -0
  100. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/settings.d.ts +4 -0
  102. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  103. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +2 -2
  104. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  105. package/dist/types/src/components/ScriptContainer.d.ts +10 -2
  106. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  107. package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts.map +1 -1
  108. package/dist/types/src/components/ScriptSettingsPanel.d.ts +1 -1
  109. package/dist/types/src/components/ScriptSettingsPanel.d.ts.map +1 -1
  110. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +11 -0
  111. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -0
  112. package/dist/types/src/components/{Toolbar/Toolbar.stories.d.ts → ScriptToolbar/ScriptToolbar.stories.d.ts} +1 -1
  113. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -0
  114. package/dist/types/src/components/ScriptToolbar/index.d.ts +2 -0
  115. package/dist/types/src/components/ScriptToolbar/index.d.ts.map +1 -0
  116. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +4 -2
  117. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  118. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  119. package/dist/types/src/components/index.d.ts +1 -1
  120. package/dist/types/src/components/index.d.ts.map +1 -1
  121. package/dist/types/src/hooks/deploy.d.ts +48 -0
  122. package/dist/types/src/hooks/deploy.d.ts.map +1 -0
  123. package/dist/types/src/hooks/format.d.ts +25 -0
  124. package/dist/types/src/hooks/format.d.ts.map +1 -0
  125. package/dist/types/src/hooks/index.d.ts +7 -0
  126. package/dist/types/src/hooks/index.d.ts.map +1 -0
  127. package/dist/types/src/hooks/template.d.ts +31 -0
  128. package/dist/types/src/hooks/template.d.ts.map +1 -0
  129. package/dist/types/src/hooks/useToolbarAction.d.ts +14 -0
  130. package/dist/types/src/hooks/useToolbarAction.d.ts.map +1 -0
  131. package/dist/types/src/hooks/useToolbarState.d.ts +10 -0
  132. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -0
  133. package/dist/types/src/hooks/view.d.ts +33 -0
  134. package/dist/types/src/hooks/view.d.ts.map +1 -0
  135. package/dist/types/src/index.d.ts +2 -4
  136. package/dist/types/src/index.d.ts.map +1 -1
  137. package/dist/types/src/meta.d.ts +2 -2
  138. package/dist/types/src/meta.d.ts.map +1 -1
  139. package/dist/types/src/templates/echo.d.ts.map +1 -1
  140. package/dist/types/src/templates/email.d.ts +2 -1
  141. package/dist/types/src/templates/email.d.ts.map +1 -1
  142. package/dist/types/src/templates/forex-effect.d.ts +6 -0
  143. package/dist/types/src/templates/forex-effect.d.ts.map +1 -0
  144. package/dist/types/src/templates/forex.d.ts +1 -1
  145. package/dist/types/src/templates/forex.d.ts.map +1 -1
  146. package/dist/types/src/{templates.d.ts → templates/index.d.ts} +1 -1
  147. package/dist/types/src/templates/index.d.ts.map +1 -0
  148. package/dist/types/src/translations.d.ts +54 -0
  149. package/dist/types/src/translations.d.ts.map +1 -1
  150. package/dist/types/src/types.d.ts +30 -0
  151. package/dist/types/src/types.d.ts.map +1 -0
  152. package/dist/types/tsconfig.tsbuildinfo +1 -0
  153. package/package.json +46 -55
  154. package/src/ScriptPlugin.tsx +57 -145
  155. package/src/bundler/bundler.test.ts +4 -3
  156. package/src/capabilities/capabilities.ts +12 -0
  157. package/src/capabilities/compiler.ts +33 -0
  158. package/src/capabilities/index.ts +12 -0
  159. package/src/capabilities/intent-resolver.ts +46 -0
  160. package/src/capabilities/react-surface.tsx +54 -0
  161. package/src/capabilities/settings.ts +14 -0
  162. package/src/compiler/compiler.browser.test.ts +1 -1
  163. package/src/components/AutomationPanel/AutomationPanel.tsx +2 -4
  164. package/src/components/FrameContainer/FrameContainer.tsx +1 -1
  165. package/src/components/ScriptContainer.tsx +69 -9
  166. package/src/components/ScriptSettings/ScriptSettings.tsx +28 -4
  167. package/src/components/ScriptSettingsPanel.tsx +139 -52
  168. package/src/components/{Toolbar/Toolbar.stories.tsx → ScriptToolbar/ScriptToolbar.stories.tsx} +2 -2
  169. package/src/components/ScriptToolbar/ScriptToolbar.tsx +53 -0
  170. package/src/components/{Toolbar → ScriptToolbar}/index.ts +1 -1
  171. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +2 -0
  172. package/src/components/TypescriptEditor/TypescriptEditor.tsx +73 -8
  173. package/src/hooks/deploy.ts +158 -0
  174. package/src/hooks/format.ts +47 -0
  175. package/src/hooks/index.ts +11 -0
  176. package/src/hooks/template.ts +64 -0
  177. package/src/hooks/useToolbarAction.ts +54 -0
  178. package/src/hooks/useToolbarState.ts +16 -0
  179. package/src/hooks/view.ts +52 -0
  180. package/src/index.ts +2 -6
  181. package/src/meta.ts +4 -2
  182. package/src/templates/echo.ts +5 -1
  183. package/src/templates/email.ts +26 -23
  184. package/src/templates/forex-effect.ts +42 -0
  185. package/src/templates/forex.ts +21 -13
  186. package/src/{templates.ts → templates/index.ts} +12 -5
  187. package/src/translations.ts +20 -1
  188. package/src/types.ts +39 -0
  189. package/dist/lib/browser/AutomationPanel-PMTZROAZ.mjs.map +0 -7
  190. package/dist/lib/browser/ScriptContainer-RYZFYCNK.mjs +0 -425
  191. package/dist/lib/browser/ScriptContainer-RYZFYCNK.mjs.map +0 -7
  192. package/dist/lib/browser/chunk-C7VBULMK.mjs +0 -18
  193. package/dist/lib/browser/chunk-C7VBULMK.mjs.map +0 -7
  194. package/dist/lib/browser/chunk-QFZUFT5G.mjs +0 -48
  195. package/dist/lib/browser/chunk-QFZUFT5G.mjs.map +0 -7
  196. package/dist/lib/browser/chunk-U3OP64V4.mjs +0 -123
  197. package/dist/lib/browser/chunk-U3OP64V4.mjs.map +0 -7
  198. package/dist/lib/browser/edge/index.mjs +0 -19
  199. package/dist/lib/browser/meta.mjs +0 -9
  200. package/dist/lib/browser/types/index.mjs +0 -12
  201. package/dist/lib/browser/types/index.mjs.map +0 -7
  202. package/dist/lib/node/AutomationPanel-AAGQREH7.cjs.map +0 -7
  203. package/dist/lib/node/ScriptContainer-FZ44UIRC.cjs +0 -427
  204. package/dist/lib/node/ScriptContainer-FZ44UIRC.cjs.map +0 -7
  205. package/dist/lib/node/chunk-6LYX73ZT.cjs.map +0 -7
  206. package/dist/lib/node/chunk-CS25QNKZ.cjs +0 -151
  207. package/dist/lib/node/chunk-CS25QNKZ.cjs.map +0 -7
  208. package/dist/lib/node/chunk-DQYAU2CJ.cjs +0 -67
  209. package/dist/lib/node/chunk-DQYAU2CJ.cjs.map +0 -7
  210. package/dist/lib/node/chunk-WPP65EYS.cjs.map +0 -7
  211. package/dist/lib/node/edge/index.cjs +0 -41
  212. package/dist/lib/node/edge/index.cjs.map +0 -7
  213. package/dist/lib/node/meta.cjs.map +0 -7
  214. package/dist/lib/node/types/index.cjs.map +0 -7
  215. package/dist/lib/node-esm/AutomationPanel-ETQEDY5I.mjs.map +0 -7
  216. package/dist/lib/node-esm/ScriptContainer-3PKDW34A.mjs +0 -426
  217. package/dist/lib/node-esm/ScriptContainer-3PKDW34A.mjs.map +0 -7
  218. package/dist/lib/node-esm/chunk-36DLLQ6E.mjs +0 -125
  219. package/dist/lib/node-esm/chunk-36DLLQ6E.mjs.map +0 -7
  220. package/dist/lib/node-esm/chunk-GMVPKT6A.mjs +0 -49
  221. package/dist/lib/node-esm/chunk-GMVPKT6A.mjs.map +0 -7
  222. package/dist/lib/node-esm/chunk-SLTZMY34.mjs.map +0 -7
  223. package/dist/lib/node-esm/edge/index.mjs +0 -20
  224. package/dist/lib/node-esm/edge/index.mjs.map +0 -7
  225. package/dist/lib/node-esm/meta.mjs +0 -10
  226. package/dist/lib/node-esm/meta.mjs.map +0 -7
  227. package/dist/lib/node-esm/types/index.mjs +0 -13
  228. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  229. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts +0 -12
  230. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts.map +0 -1
  231. package/dist/types/src/components/ScriptBlock/ScriptBlock.stories.d.ts +0 -6
  232. package/dist/types/src/components/ScriptBlock/ScriptBlock.stories.d.ts.map +0 -1
  233. package/dist/types/src/components/ScriptBlock/index.d.ts +0 -2
  234. package/dist/types/src/components/ScriptBlock/index.d.ts.map +0 -1
  235. package/dist/types/src/components/ScriptEditor.d.ts +0 -9
  236. package/dist/types/src/components/ScriptEditor.d.ts.map +0 -1
  237. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -23
  238. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  239. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +0 -1
  240. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  241. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  242. package/dist/types/src/edge/functions.d.ts +0 -25
  243. package/dist/types/src/edge/functions.d.ts.map +0 -1
  244. package/dist/types/src/edge/index.d.ts +0 -2
  245. package/dist/types/src/edge/index.d.ts.map +0 -1
  246. package/dist/types/src/templates.d.ts.map +0 -1
  247. package/dist/types/src/types/index.d.ts +0 -3
  248. package/dist/types/src/types/index.d.ts.map +0 -1
  249. package/dist/types/src/types/schema.d.ts +0 -71
  250. package/dist/types/src/types/schema.d.ts.map +0 -1
  251. package/dist/types/src/types/types.d.ts +0 -8
  252. package/dist/types/src/types/types.d.ts.map +0 -1
  253. package/src/components/ScriptBlock/ScriptBlock.stories.tsx +0 -52
  254. package/src/components/ScriptBlock/ScriptBlock.tsx +0 -102
  255. package/src/components/ScriptBlock/index.ts +0 -5
  256. package/src/components/ScriptEditor.tsx +0 -191
  257. package/src/components/Toolbar/Toolbar.tsx +0 -177
  258. package/src/edge/functions.ts +0 -116
  259. package/src/edge/index.ts +0 -7
  260. package/src/types/index.ts +0 -6
  261. package/src/types/schema.ts +0 -44
  262. package/src/types/types.ts +0 -29
  263. /package/dist/lib/browser/{chunk-K7KY6YMG.mjs.map → chunk-45LXDWNF.mjs.map} +0 -0
  264. /package/dist/lib/browser/{edge/index.mjs.map → types.mjs.map} +0 -0
  265. /package/dist/lib/node/{chunk-4INUJLXL.cjs.map → chunk-IID7WUQS.cjs.map} +0 -0
  266. /package/dist/lib/node-esm/{chunk-OFYGBUNI.mjs.map → chunk-CGF7EOGD.mjs.map} +0 -0
  267. /package/dist/lib/{browser/meta.mjs.map → node-esm/types.mjs.map} +0 -0
@@ -0,0 +1,688 @@
1
+ import {
2
+ Bundler
3
+ } from "./chunk-SDHKTS6H.mjs";
4
+ import {
5
+ templates
6
+ } from "./chunk-VIX22OMB.mjs";
7
+ import {
8
+ DebugPanel
9
+ } from "./chunk-45LXDWNF.mjs";
10
+ import {
11
+ SCRIPT_PLUGIN
12
+ } from "./chunk-FVVCAWNP.mjs";
13
+
14
+ // packages/plugins/experimental/plugin-script/src/components/ScriptContainer.tsx
15
+ import React3, { useMemo as useMemo3 } from "react";
16
+ import { createDocAccessor, getSpace as getSpace2 } from "@dxos/react-client/echo";
17
+ import { useIdentity } from "@dxos/react-client/halo";
18
+ import { createDataExtensions, listener, stackItemContentEditorClassNames } from "@dxos/react-ui-editor";
19
+ import { StackItem } from "@dxos/react-ui-stack";
20
+ import { mx } from "@dxos/react-ui-theme";
21
+
22
+ // packages/plugins/experimental/plugin-script/src/components/ScriptToolbar/ScriptToolbar.tsx
23
+ import React, { useCallback as useCallback5 } from "react";
24
+ import { fullyQualifiedId } from "@dxos/react-client/echo";
25
+ import { ElevationProvider } from "@dxos/react-ui";
26
+ import { stackItemContentToolbarClassNames } from "@dxos/react-ui-editor";
27
+ import { createGapSeparator, MenuProvider, ToolbarMenu, useMenuActions } from "@dxos/react-ui-menu";
28
+
29
+ // packages/plugins/experimental/plugin-script/src/hooks/deploy.ts
30
+ import { useCallback, useEffect, useMemo } from "react";
31
+ import { FunctionType, getInvocationUrl, getUserFunctionUrlInMetadata, incrementSemverPatch, setUserFunctionUrlInMetadata, uploadWorkerFunction } from "@dxos/functions";
32
+ import { log } from "@dxos/log";
33
+ import { useClient } from "@dxos/react-client";
34
+ import { Filter, create, getMeta, getSpace, makeRef, useQuery } from "@dxos/react-client/echo";
35
+ import { useTranslation } from "@dxos/react-ui";
36
+ import { createMenuAction } from "@dxos/react-ui-menu";
37
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/hooks/deploy.ts";
38
+ var createDeploy = (state) => {
39
+ const errorItem = createMenuAction("error", {
40
+ label: state.error ?? [
41
+ "no error label",
42
+ {
43
+ ns: SCRIPT_PLUGIN
44
+ }
45
+ ],
46
+ icon: "ph--warning-circle--regular",
47
+ hidden: !state.error
48
+ });
49
+ const deployAction = createMenuAction("deploy", {
50
+ type: "deploy",
51
+ label: [
52
+ state.deploying ? "pending label" : "deploy label",
53
+ {
54
+ ns: SCRIPT_PLUGIN
55
+ }
56
+ ],
57
+ icon: state.deploying ? "ph--spinner-gap--regular" : "ph--cloud-arrow-up--regular",
58
+ disabled: state.deploying,
59
+ classNames: state.deploying ? "[&_svg]:animate-spin" : ""
60
+ });
61
+ const copyAction = createMenuAction("copy", {
62
+ type: "copy",
63
+ label: [
64
+ "copy link label",
65
+ {
66
+ ns: SCRIPT_PLUGIN
67
+ }
68
+ ],
69
+ icon: "ph--link--regular",
70
+ disabled: !state.functionUrl
71
+ });
72
+ return {
73
+ nodes: [
74
+ errorItem,
75
+ deployAction,
76
+ copyAction
77
+ ],
78
+ edges: [
79
+ {
80
+ source: "root",
81
+ target: "error"
82
+ },
83
+ {
84
+ source: "root",
85
+ target: "deploy"
86
+ },
87
+ {
88
+ source: "root",
89
+ target: "copy"
90
+ }
91
+ ]
92
+ };
93
+ };
94
+ var useDeployDeps = ({ state, script }) => {
95
+ const space = getSpace(script);
96
+ const [fn] = useQuery(space, Filter.schema(FunctionType, {
97
+ source: script
98
+ }));
99
+ const client = useClient();
100
+ const existingFunctionUrl = useMemo(() => fn && getUserFunctionUrlInMetadata(getMeta(fn)), [
101
+ fn
102
+ ]);
103
+ return {
104
+ space,
105
+ fn,
106
+ client,
107
+ existingFunctionUrl
108
+ };
109
+ };
110
+ var useDeployState = ({ state, script }) => {
111
+ const { space, client, existingFunctionUrl } = useDeployDeps({
112
+ state,
113
+ script
114
+ });
115
+ useEffect(() => {
116
+ if (!existingFunctionUrl) {
117
+ return;
118
+ }
119
+ state.functionUrl = getInvocationUrl(existingFunctionUrl, client.config.values.runtime?.services?.edge?.url ?? "", {
120
+ spaceId: space?.id
121
+ });
122
+ }, [
123
+ existingFunctionUrl,
124
+ space
125
+ ]);
126
+ useEffect(() => {
127
+ state.deployed = Boolean(existingFunctionUrl) && !script.changed;
128
+ }, [
129
+ script.changed,
130
+ existingFunctionUrl
131
+ ]);
132
+ };
133
+ var useDeployHandler = ({ state, script }) => {
134
+ const { space, fn, client, existingFunctionUrl } = useDeployDeps({
135
+ state,
136
+ script
137
+ });
138
+ const { t } = useTranslation(SCRIPT_PLUGIN);
139
+ return useCallback(async () => {
140
+ if (!script.source || !space) {
141
+ return;
142
+ }
143
+ state.error = void 0;
144
+ state.deploying = true;
145
+ try {
146
+ const existingFunctionId = existingFunctionUrl?.split("/").at(-1);
147
+ const bundler = new Bundler({
148
+ platform: "browser",
149
+ sandboxedModules: [],
150
+ remoteModules: {}
151
+ });
152
+ const buildResult = await bundler.bundle(script.source.target.content);
153
+ if (buildResult.error || !buildResult.bundle) {
154
+ throw buildResult.error;
155
+ }
156
+ const { functionId, version, meta } = await uploadWorkerFunction({
157
+ client,
158
+ spaceId: space.id,
159
+ version: fn ? incrementSemverPatch(fn.version) : "0.0.1",
160
+ functionId: existingFunctionId,
161
+ source: buildResult.bundle
162
+ });
163
+ if (functionId === void 0 || version === void 0) {
164
+ throw new Error(`Upload didn't return expected data: functionId=${functionId}, version=${version}`);
165
+ }
166
+ log.info("function uploaded", {
167
+ functionId,
168
+ version
169
+ }, {
170
+ F: __dxlog_file,
171
+ L: 124,
172
+ S: void 0,
173
+ C: (f, a) => f(...a)
174
+ });
175
+ if (fn) {
176
+ fn.version = version;
177
+ }
178
+ const deployedFunction = fn ?? space.db.add(create(FunctionType, {
179
+ name: functionId,
180
+ version,
181
+ source: makeRef(script)
182
+ }));
183
+ script.changed = false;
184
+ deployedFunction.description = script.description;
185
+ if (meta.inputSchema) {
186
+ deployedFunction.inputSchema = meta.inputSchema;
187
+ } else {
188
+ log.verbose("no input schema in function metadata", {
189
+ functionId
190
+ }, {
191
+ F: __dxlog_file,
192
+ L: 138,
193
+ S: void 0,
194
+ C: (f, a) => f(...a)
195
+ });
196
+ }
197
+ setUserFunctionUrlInMetadata(getMeta(deployedFunction), `/${space.id}/${functionId}`);
198
+ state.view = "split";
199
+ } catch (err) {
200
+ log.catch(err, void 0, {
201
+ F: __dxlog_file,
202
+ L: 145,
203
+ S: void 0,
204
+ C: (f, a) => f(...a)
205
+ });
206
+ state.error = t("upload failed label");
207
+ }
208
+ state.deploying = false;
209
+ }, [
210
+ fn,
211
+ client,
212
+ t,
213
+ existingFunctionUrl,
214
+ script,
215
+ script.name,
216
+ script.source,
217
+ space?.id ?? null
218
+ ]);
219
+ };
220
+ var useCopyHandler = ({ state }) => useCallback(async () => {
221
+ if (!state.functionUrl) {
222
+ return;
223
+ }
224
+ await navigator.clipboard.writeText(state.functionUrl);
225
+ }, [
226
+ state.functionUrl
227
+ ]);
228
+
229
+ // packages/plugins/experimental/plugin-script/src/hooks/format.ts
230
+ import { format } from "prettier";
231
+ import prettierPluginEstree from "prettier/plugins/estree";
232
+ import prettierPluginTypescript from "prettier/plugins/typescript";
233
+ import { useCallback as useCallback2 } from "react";
234
+ import { log as log2 } from "@dxos/log";
235
+ import { createMenuAction as createMenuAction2 } from "@dxos/react-ui-menu";
236
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/hooks/format.ts";
237
+ var createFormat = () => {
238
+ const formatAction = createMenuAction2("format", {
239
+ label: [
240
+ "format label",
241
+ {
242
+ ns: SCRIPT_PLUGIN
243
+ }
244
+ ],
245
+ icon: "ph--magic-wand--regular"
246
+ });
247
+ return {
248
+ nodes: [
249
+ formatAction
250
+ ],
251
+ edges: [
252
+ {
253
+ source: "root",
254
+ target: "format"
255
+ }
256
+ ]
257
+ };
258
+ };
259
+ var useFormatHandler = ({ script }) => useCallback2(async () => {
260
+ if (!script.source) {
261
+ return;
262
+ }
263
+ try {
264
+ script.source.target.content = await format(script.source.target.content, {
265
+ parser: "typescript",
266
+ plugins: [
267
+ prettierPluginEstree,
268
+ prettierPluginTypescript
269
+ ],
270
+ semi: true,
271
+ singleQuote: true
272
+ });
273
+ } catch (err) {
274
+ log2.catch(err, void 0, {
275
+ F: __dxlog_file2,
276
+ L: 45,
277
+ S: void 0,
278
+ C: (f, a) => f(...a)
279
+ });
280
+ }
281
+ }, [
282
+ script.source
283
+ ]);
284
+
285
+ // packages/plugins/experimental/plugin-script/src/hooks/template.ts
286
+ import { useCallback as useCallback3 } from "react";
287
+ import { FUNCTIONS_PRESET_META_KEY } from "@dxos/functions";
288
+ import { getMeta as getMeta2 } from "@dxos/live-object";
289
+ import { createMenuItemGroup, createMenuAction as createMenuAction3 } from "@dxos/react-ui-menu";
290
+ var createTemplateSelectGroup = () => {
291
+ return createMenuItemGroup("template-select", {
292
+ label: [
293
+ "template select group label",
294
+ {
295
+ ns: SCRIPT_PLUGIN
296
+ }
297
+ ],
298
+ variant: "dropdownMenu"
299
+ });
300
+ };
301
+ var createTemplateSelectActions = () => {
302
+ return templates.map((template) => {
303
+ return createMenuAction3(`template--${template.id}`, {
304
+ label: template.name,
305
+ value: template.id,
306
+ type: "template"
307
+ });
308
+ });
309
+ };
310
+ var createTemplateSelect = () => {
311
+ const templateSelectGroup = createTemplateSelectGroup();
312
+ const templateSelectActions = createTemplateSelectActions();
313
+ return {
314
+ nodes: [
315
+ templateSelectGroup,
316
+ ...templateSelectActions
317
+ ],
318
+ edges: [
319
+ {
320
+ source: "root",
321
+ target: "template-select"
322
+ },
323
+ ...templateSelectActions.map((action) => ({
324
+ source: "template-select",
325
+ target: action.id
326
+ }))
327
+ ]
328
+ };
329
+ };
330
+ var useTemplateSelectHandler = ({ script }) => {
331
+ return useCallback3((templateId) => {
332
+ const template = templates.find((template2) => template2.id === templateId);
333
+ if (template) {
334
+ script.name = template.name;
335
+ script.source.target.content = template.source;
336
+ const metaKeys = getMeta2(script).keys;
337
+ const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);
338
+ if (oldPresetIndex >= 0) {
339
+ metaKeys.splice(oldPresetIndex, 1);
340
+ }
341
+ if (template.presetId) {
342
+ metaKeys.push({
343
+ source: FUNCTIONS_PRESET_META_KEY,
344
+ id: template.presetId
345
+ });
346
+ }
347
+ }
348
+ }, [
349
+ script
350
+ ]);
351
+ };
352
+
353
+ // packages/plugins/experimental/plugin-script/src/hooks/view.ts
354
+ import { createMenuAction as createMenuAction4, createMenuItemGroup as createMenuItemGroup2 } from "@dxos/react-ui-menu";
355
+ var views = {
356
+ editor: "ph--code--regular",
357
+ split: "ph--square-split-vertical--regular",
358
+ debug: "ph--bug--regular"
359
+ };
360
+ var createViewGroupItem = (state) => {
361
+ return createMenuItemGroup2("view", {
362
+ label: [
363
+ "view group label",
364
+ {
365
+ ns: SCRIPT_PLUGIN
366
+ }
367
+ ],
368
+ variant: "dropdownMenu",
369
+ applyActive: true,
370
+ value: state.view
371
+ });
372
+ };
373
+ var createViewActions = (state) => {
374
+ return Object.entries(views).map(([viewType, icon]) => {
375
+ return createMenuAction4(`view--${viewType}`, {
376
+ type: "view",
377
+ value: viewType,
378
+ label: [
379
+ `view ${viewType} label`,
380
+ {
381
+ ns: SCRIPT_PLUGIN
382
+ }
383
+ ],
384
+ icon,
385
+ checked: state.view === viewType
386
+ });
387
+ });
388
+ };
389
+ var createView = (state) => {
390
+ const viewGroupItem = createViewGroupItem(state);
391
+ const viewActions = createViewActions(state);
392
+ return {
393
+ nodes: [
394
+ viewGroupItem,
395
+ ...viewActions
396
+ ],
397
+ edges: [
398
+ {
399
+ source: "root",
400
+ target: "view"
401
+ },
402
+ ...viewActions.map((action) => ({
403
+ source: "view",
404
+ target: action.id
405
+ }))
406
+ ]
407
+ };
408
+ };
409
+
410
+ // packages/plugins/experimental/plugin-script/src/hooks/useToolbarAction.ts
411
+ import { useCallback as useCallback4 } from "react";
412
+ import { log as log3 } from "@dxos/log";
413
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/experimental/plugin-script/src/hooks/useToolbarAction.ts";
414
+ var useToolbarAction = (props) => {
415
+ const handleTemplateSelect = useTemplateSelectHandler(props);
416
+ const handleFormat = useFormatHandler(props);
417
+ const handleDeploy = useDeployHandler(props);
418
+ const handleCopy = useCopyHandler(props);
419
+ return useCallback4((action) => {
420
+ switch (action.properties.type) {
421
+ case "template":
422
+ handleTemplateSelect(action.properties.value);
423
+ break;
424
+ case "view":
425
+ props.state.view = action.properties.value;
426
+ break;
427
+ case "format":
428
+ void handleFormat();
429
+ break;
430
+ case "deploy":
431
+ void handleDeploy();
432
+ break;
433
+ case "copy":
434
+ void handleCopy();
435
+ break;
436
+ default:
437
+ log3.error("Unknown action type", action, {
438
+ F: __dxlog_file3,
439
+ L: 49,
440
+ S: void 0,
441
+ C: (f, a) => f(...a)
442
+ });
443
+ }
444
+ }, [
445
+ handleTemplateSelect,
446
+ handleFormat,
447
+ handleDeploy,
448
+ handleCopy
449
+ ]);
450
+ };
451
+
452
+ // packages/plugins/experimental/plugin-script/src/hooks/useToolbarState.ts
453
+ import { useMemo as useMemo2 } from "react";
454
+ import { create as create2 } from "@dxos/live-object";
455
+ var useToolbarState = (initialState = {}) => {
456
+ return useMemo2(() => create2(initialState), []);
457
+ };
458
+
459
+ // packages/plugins/experimental/plugin-script/src/components/ScriptToolbar/ScriptToolbar.tsx
460
+ var createToolbar = (state) => {
461
+ const templateSelect = createTemplateSelect();
462
+ const format2 = createFormat();
463
+ const gap = createGapSeparator();
464
+ const deploy = createDeploy(state);
465
+ const view = createView(state);
466
+ return {
467
+ nodes: [
468
+ ...templateSelect.nodes,
469
+ ...format2.nodes,
470
+ ...gap.nodes,
471
+ ...deploy.nodes,
472
+ ...view.nodes
473
+ ],
474
+ edges: [
475
+ ...templateSelect.edges,
476
+ ...format2.edges,
477
+ ...gap.edges,
478
+ ...deploy.edges,
479
+ ...view.edges
480
+ ]
481
+ };
482
+ };
483
+ var ScriptToolbar = ({ script, role, state, classNames }) => {
484
+ const handleAction = useToolbarAction({
485
+ state,
486
+ script
487
+ });
488
+ const toolbarCreator = useCallback5(() => createToolbar(state), [
489
+ state
490
+ ]);
491
+ const menu = useMenuActions(toolbarCreator);
492
+ return /* @__PURE__ */ React.createElement("div", {
493
+ role: "none",
494
+ className: stackItemContentToolbarClassNames(role)
495
+ }, /* @__PURE__ */ React.createElement(ElevationProvider, {
496
+ elevation: role === "section" ? "positioned" : "base"
497
+ }, /* @__PURE__ */ React.createElement(MenuProvider, {
498
+ ...menu,
499
+ onAction: handleAction,
500
+ attendableId: fullyQualifiedId(script)
501
+ }, /* @__PURE__ */ React.createElement(ToolbarMenu, {
502
+ classNames
503
+ }))));
504
+ };
505
+
506
+ // packages/plugins/experimental/plugin-script/src/components/TypescriptEditor/TypescriptEditor.tsx
507
+ import { javascript } from "@codemirror/lang-javascript";
508
+ import { defaultHighlightStyle } from "@codemirror/language";
509
+ import { Prec } from "@codemirror/state";
510
+ import { oneDarkHighlightStyle } from "@codemirror/theme-one-dark";
511
+ import { keymap } from "@codemirror/view";
512
+ import { tags } from "@lezer/highlight";
513
+ import { continueKeymap } from "@valtown/codemirror-continue";
514
+ import { tsSync, tsFacet, tsLinter, tsAutocomplete, tsHover } from "@valtown/codemirror-ts";
515
+ import React2 from "react";
516
+ import { useThemeContext } from "@dxos/react-ui";
517
+ import { autocomplete, createBasicExtensions, createThemeExtensions, editorFullWidth, editorMonospace, EditorView, folding, InputModeExtensions, useTextEditor } from "@dxos/react-ui-editor";
518
+ import { nonNullable } from "@dxos/util";
519
+ var TypescriptEditor = ({ id, env, className, initialValue, extensions, scrollTo, selection, toolbar, inputMode = "vscode" }) => {
520
+ const { themeMode } = useThemeContext();
521
+ const { parentRef, focusAttributes } = useTextEditor(() => ({
522
+ id,
523
+ initialValue,
524
+ extensions: [
525
+ extensions,
526
+ createBasicExtensions({
527
+ highlightActiveLine: true,
528
+ indentWithTab: true,
529
+ lineNumbers: true,
530
+ lineWrapping: false,
531
+ scrollPastEnd: true
532
+ }),
533
+ createThemeExtensions({
534
+ themeMode,
535
+ syntaxHighlighting: true,
536
+ slots: {
537
+ content: {
538
+ className: editorFullWidth
539
+ }
540
+ }
541
+ }),
542
+ // NOTE: Not using default editor gutter because folding for code works best right beside text.
543
+ EditorView.theme({
544
+ ".cm-gutters": {
545
+ // Match margin from content.
546
+ marginTop: "16px"
547
+ }
548
+ }),
549
+ InputModeExtensions[inputMode],
550
+ folding(),
551
+ // Continues block comments when you hit Enter.
552
+ Prec.high(keymap.of(continueKeymap)),
553
+ // TODO(burdon): Factor out.
554
+ [
555
+ editorMonospace,
556
+ javascript({
557
+ typescript: true
558
+ }),
559
+ // https://github.com/val-town/codemirror-ts
560
+ autocomplete({
561
+ override: env ? [
562
+ tsAutocomplete()
563
+ ] : []
564
+ }),
565
+ env ? [
566
+ tsFacet.of({
567
+ env,
568
+ path: `/src/${id}.ts`
569
+ }),
570
+ tsSync(),
571
+ tsLinter(),
572
+ tsHover({
573
+ renderTooltip: createTooltipRenderer(themeMode)
574
+ })
575
+ ] : []
576
+ ]
577
+ ].filter(nonNullable),
578
+ selection,
579
+ scrollTo
580
+ }), [
581
+ id,
582
+ extensions,
583
+ themeMode,
584
+ inputMode,
585
+ selection,
586
+ scrollTo
587
+ ]);
588
+ return /* @__PURE__ */ React2.createElement("div", {
589
+ ref: parentRef,
590
+ "data-toolbar": toolbar ? "enabled" : "disabled",
591
+ className,
592
+ ...focusAttributes
593
+ });
594
+ };
595
+ var createTooltipRenderer = (themeMode) => {
596
+ const theme = themeMode === "dark" ? oneDarkHighlightStyle : defaultHighlightStyle;
597
+ const classFromKind = (_kind) => {
598
+ const kind = _kind.endsWith("Name") ? "name" : _kind;
599
+ const validTag = kind in tags;
600
+ if (!validTag) {
601
+ return "";
602
+ }
603
+ const tag = tags[kind];
604
+ if (typeof tag === "function") {
605
+ return "";
606
+ }
607
+ return theme.style([
608
+ tag
609
+ ]) ?? "";
610
+ };
611
+ return (info) => {
612
+ const div = document.createElement("div");
613
+ div.className = "p-1 rounded border border-separator bg-baseSurface xs:max-w-80 max-w-lg";
614
+ if (info.quickInfo?.displayParts) {
615
+ for (const part of info.quickInfo.displayParts) {
616
+ const span = div.appendChild(document.createElement("span"));
617
+ span.className = classFromKind(part.kind);
618
+ span.innerText = part.text;
619
+ }
620
+ }
621
+ return {
622
+ dom: div
623
+ };
624
+ };
625
+ };
626
+
627
+ // packages/plugins/experimental/plugin-script/src/components/ScriptContainer.tsx
628
+ var ScriptContainer = ({ role, classNames, script, settings = {
629
+ editorInputMode: "vscode"
630
+ }, env }) => {
631
+ const identity = useIdentity();
632
+ const space = getSpace2(script);
633
+ const extensions = useMemo3(() => [
634
+ listener({
635
+ onChange: (text) => {
636
+ if (script.source.target && script.source.target.content !== text) {
637
+ script.changed = true;
638
+ }
639
+ }
640
+ }),
641
+ createDataExtensions({
642
+ id: script.id,
643
+ text: script.source.target && createDocAccessor(script.source.target, [
644
+ "content"
645
+ ]),
646
+ space,
647
+ identity
648
+ })
649
+ ], [
650
+ script,
651
+ script.source.target,
652
+ space,
653
+ identity
654
+ ]);
655
+ const state = useToolbarState({
656
+ view: "editor"
657
+ });
658
+ useDeployState({
659
+ state,
660
+ script
661
+ });
662
+ return /* @__PURE__ */ React3.createElement(StackItem.Content, {
663
+ toolbar: true
664
+ }, /* @__PURE__ */ React3.createElement(ScriptToolbar, {
665
+ state,
666
+ role,
667
+ script
668
+ }), /* @__PURE__ */ React3.createElement("div", {
669
+ role: "none",
670
+ className: mx("flex flex-col w-full overflow-hidden divide-y divide-separator", classNames)
671
+ }, state.view !== "debug" && /* @__PURE__ */ React3.createElement(TypescriptEditor, {
672
+ id: script.id,
673
+ env,
674
+ initialValue: script.source?.target?.content,
675
+ extensions,
676
+ className: stackItemContentEditorClassNames(role),
677
+ inputMode: settings.editorInputMode,
678
+ toolbar: true
679
+ }), state.view !== "editor" && /* @__PURE__ */ React3.createElement(DebugPanel, {
680
+ functionUrl: state.functionUrl
681
+ })));
682
+ };
683
+ var ScriptContainer_default = ScriptContainer;
684
+ export {
685
+ ScriptContainer,
686
+ ScriptContainer_default as default
687
+ };
688
+ //# sourceMappingURL=ScriptContainer-LGW52UAJ.mjs.map