@dxos/plugin-script 0.7.5-main.499c70c → 0.7.5-main.5ae2ba8

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 (276) hide show
  1. package/dist/lib/browser/ScriptContainer-3RFMYKTV.mjs +258 -0
  2. package/dist/lib/browser/ScriptContainer-3RFMYKTV.mjs.map +7 -0
  3. package/dist/lib/browser/artifact-definition-4LWPD3DH.mjs +251 -0
  4. package/dist/lib/browser/artifact-definition-4LWPD3DH.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-K7KY6YMG.mjs → chunk-5SXOHNAK.mjs} +4 -4
  6. package/dist/lib/browser/chunk-5SXOHNAK.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-6MOQ4BP3.mjs +15 -0
  8. package/dist/lib/browser/chunk-6MOQ4BP3.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-FVVCAWNP.mjs +21 -0
  10. package/dist/lib/browser/chunk-FVVCAWNP.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-G2FYNDU4.mjs +475 -0
  12. package/dist/lib/browser/chunk-G2FYNDU4.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-N46LE7FS.mjs +40 -0
  14. package/dist/lib/browser/chunk-N46LE7FS.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-PZPYF7M4.mjs +69 -0
  16. package/dist/lib/browser/chunk-PZPYF7M4.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-VTWBVFBK.mjs +234 -0
  18. package/dist/lib/browser/chunk-VTWBVFBK.mjs.map +7 -0
  19. package/dist/lib/browser/compiler-YY2XSKHQ.mjs +82 -0
  20. package/dist/lib/browser/compiler-YY2XSKHQ.mjs.map +7 -0
  21. package/dist/lib/browser/index.mjs +146 -289
  22. package/dist/lib/browser/index.mjs.map +4 -4
  23. package/dist/lib/browser/intent-resolver-D6FPY5ZA.mjs +45 -0
  24. package/dist/lib/browser/intent-resolver-D6FPY5ZA.mjs.map +7 -0
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/react-surface-G4C2PZ2K.mjs +81 -0
  27. package/dist/lib/browser/react-surface-G4C2PZ2K.mjs.map +7 -0
  28. package/dist/lib/browser/settings-SZCDKHWO.mjs +24 -0
  29. package/dist/lib/browser/settings-SZCDKHWO.mjs.map +7 -0
  30. package/dist/lib/browser/types.mjs +6 -4
  31. package/dist/lib/node/ScriptContainer-G6FZU4AM.cjs +274 -0
  32. package/dist/lib/node/ScriptContainer-G6FZU4AM.cjs.map +7 -0
  33. package/dist/lib/node/artifact-definition-BXQCFPAH.cjs +267 -0
  34. package/dist/lib/node/artifact-definition-BXQCFPAH.cjs.map +7 -0
  35. package/dist/lib/node/{chunk-6LYX73ZT.cjs → chunk-5UH3F7TA.cjs} +11 -8
  36. package/dist/lib/node/chunk-5UH3F7TA.cjs.map +7 -0
  37. package/dist/lib/node/{meta.cjs → chunk-ALY3N6PW.cjs} +12 -8
  38. package/dist/lib/node/chunk-ALY3N6PW.cjs.map +7 -0
  39. package/dist/lib/node/{chunk-PK3OQP5L.cjs → chunk-DJGLGRQV.cjs} +26 -11
  40. package/dist/lib/node/chunk-DJGLGRQV.cjs.map +7 -0
  41. package/dist/lib/node/chunk-ITAJ3WRW.cjs +77 -0
  42. package/dist/lib/node/chunk-ITAJ3WRW.cjs.map +7 -0
  43. package/dist/lib/node/{chunk-4INUJLXL.cjs → chunk-K3ZZWVXS.cjs} +7 -7
  44. package/dist/lib/node/chunk-K3ZZWVXS.cjs.map +7 -0
  45. package/dist/lib/node/chunk-TOXBGIEI.cjs +261 -0
  46. package/dist/lib/node/chunk-TOXBGIEI.cjs.map +7 -0
  47. package/dist/lib/node/chunk-XKYJYY3T.cjs +498 -0
  48. package/dist/lib/node/chunk-XKYJYY3T.cjs.map +7 -0
  49. package/dist/lib/node/compiler-UIBLKJKG.cjs +104 -0
  50. package/dist/lib/node/compiler-UIBLKJKG.cjs.map +7 -0
  51. package/dist/lib/node/index.cjs +138 -278
  52. package/dist/lib/node/index.cjs.map +4 -4
  53. package/dist/lib/node/intent-resolver-NYJFPD5B.cjs +59 -0
  54. package/dist/lib/node/intent-resolver-NYJFPD5B.cjs.map +7 -0
  55. package/dist/lib/node/meta.json +1 -1
  56. package/dist/lib/node/react-surface-EGSE3FMN.cjs +96 -0
  57. package/dist/lib/node/react-surface-EGSE3FMN.cjs.map +7 -0
  58. package/dist/lib/node/settings-SZFSMSKM.cjs +38 -0
  59. package/dist/lib/node/settings-SZFSMSKM.cjs.map +7 -0
  60. package/dist/lib/node/types.cjs +6 -4
  61. package/dist/lib/node/types.cjs.map +2 -2
  62. package/dist/lib/node-esm/ScriptContainer-7FTCFIF3.mjs +259 -0
  63. package/dist/lib/node-esm/ScriptContainer-7FTCFIF3.mjs.map +7 -0
  64. package/dist/lib/node-esm/artifact-definition-KT4DK2LQ.mjs +252 -0
  65. package/dist/lib/node-esm/artifact-definition-KT4DK2LQ.mjs.map +7 -0
  66. package/dist/lib/node-esm/{chunk-OFYGBUNI.mjs → chunk-2AFXX34U.mjs} +4 -4
  67. package/dist/lib/node-esm/chunk-2AFXX34U.mjs.map +7 -0
  68. package/dist/lib/node-esm/chunk-CP5LXTK5.mjs +16 -0
  69. package/dist/lib/node-esm/chunk-CP5LXTK5.mjs.map +7 -0
  70. package/dist/lib/node-esm/chunk-NRICF4KE.mjs +476 -0
  71. package/dist/lib/node-esm/chunk-NRICF4KE.mjs.map +7 -0
  72. package/dist/lib/node-esm/{chunk-SLTZMY34.mjs → chunk-P2V2Y5LV.mjs} +7 -4
  73. package/dist/lib/node-esm/chunk-P2V2Y5LV.mjs.map +7 -0
  74. package/dist/lib/node-esm/chunk-S64WSJQK.mjs +235 -0
  75. package/dist/lib/node-esm/chunk-S64WSJQK.mjs.map +7 -0
  76. package/dist/lib/node-esm/chunk-UNQFIERE.mjs +41 -0
  77. package/dist/lib/node-esm/chunk-UNQFIERE.mjs.map +7 -0
  78. package/dist/lib/node-esm/chunk-YIWRJ25J.mjs +71 -0
  79. package/dist/lib/node-esm/chunk-YIWRJ25J.mjs.map +7 -0
  80. package/dist/lib/node-esm/compiler-XTXFGZJM.mjs +83 -0
  81. package/dist/lib/node-esm/compiler-XTXFGZJM.mjs.map +7 -0
  82. package/dist/lib/node-esm/index.mjs +146 -289
  83. package/dist/lib/node-esm/index.mjs.map +4 -4
  84. package/dist/lib/node-esm/intent-resolver-KLBHSMW4.mjs +46 -0
  85. package/dist/lib/node-esm/intent-resolver-KLBHSMW4.mjs.map +7 -0
  86. package/dist/lib/node-esm/meta.json +1 -1
  87. package/dist/lib/node-esm/react-surface-7YSGHZQM.mjs +82 -0
  88. package/dist/lib/node-esm/react-surface-7YSGHZQM.mjs.map +7 -0
  89. package/dist/lib/node-esm/settings-GR4O2WHZ.mjs +25 -0
  90. package/dist/lib/node-esm/settings-GR4O2WHZ.mjs.map +7 -0
  91. package/dist/lib/node-esm/types.mjs +6 -4
  92. package/dist/types/src/ScriptPlugin.d.ts +1 -3
  93. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  94. package/dist/types/src/capabilities/artifact-definition.d.ts +11 -0
  95. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -0
  96. package/dist/types/src/capabilities/capabilities.d.ts +5 -0
  97. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
  98. package/dist/types/src/capabilities/compiler.d.ts +4 -0
  99. package/dist/types/src/capabilities/compiler.d.ts.map +1 -0
  100. package/dist/types/src/capabilities/index.d.ts +7 -0
  101. package/dist/types/src/capabilities/index.d.ts.map +1 -0
  102. package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
  103. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
  104. package/dist/types/src/capabilities/react-surface.d.ts +4 -0
  105. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  106. package/dist/types/src/capabilities/settings.d.ts +4 -0
  107. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  108. package/dist/types/src/components/DebugPanel/DebugPanel.d.ts +1 -2
  109. package/dist/types/src/components/DebugPanel/DebugPanel.d.ts.map +1 -1
  110. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts +3 -4
  111. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  112. package/dist/types/src/components/ScriptContainer.d.ts +10 -3
  113. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  114. package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts +1 -2
  115. package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts.map +1 -1
  116. package/dist/types/src/components/ScriptSettingsPanel.d.ts +1 -2
  117. package/dist/types/src/components/ScriptSettingsPanel.d.ts.map +1 -1
  118. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +10 -0
  119. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -0
  120. package/dist/types/src/components/{Toolbar/Toolbar.stories.d.ts → ScriptToolbar/ScriptToolbar.stories.d.ts} +1 -1
  121. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.stories.d.ts.map +1 -0
  122. package/dist/types/src/components/ScriptToolbar/index.d.ts +2 -0
  123. package/dist/types/src/components/ScriptToolbar/index.d.ts.map +1 -0
  124. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +4 -3
  125. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  126. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/index.d.ts +2 -2
  128. package/dist/types/src/components/index.d.ts.map +1 -1
  129. package/dist/types/src/events.d.ts +4 -0
  130. package/dist/types/src/events.d.ts.map +1 -0
  131. package/dist/types/src/hooks/deploy.d.ts +48 -0
  132. package/dist/types/src/hooks/deploy.d.ts.map +1 -0
  133. package/dist/types/src/hooks/format.d.ts +25 -0
  134. package/dist/types/src/hooks/format.d.ts.map +1 -0
  135. package/dist/types/src/hooks/index.d.ts +7 -0
  136. package/dist/types/src/hooks/index.d.ts.map +1 -0
  137. package/dist/types/src/hooks/template.d.ts +31 -0
  138. package/dist/types/src/hooks/template.d.ts.map +1 -0
  139. package/dist/types/src/hooks/useToolbarAction.d.ts +14 -0
  140. package/dist/types/src/hooks/useToolbarAction.d.ts.map +1 -0
  141. package/dist/types/src/hooks/useToolbarState.d.ts +10 -0
  142. package/dist/types/src/hooks/useToolbarState.d.ts.map +1 -0
  143. package/dist/types/src/hooks/view.d.ts +33 -0
  144. package/dist/types/src/hooks/view.d.ts.map +1 -0
  145. package/dist/types/src/index.d.ts +2 -5
  146. package/dist/types/src/index.d.ts.map +1 -1
  147. package/dist/types/src/meta.d.ts +2 -2
  148. package/dist/types/src/meta.d.ts.map +1 -1
  149. package/dist/types/src/templates/chess.d.ts +1 -4
  150. package/dist/types/src/templates/chess.d.ts.map +1 -1
  151. package/dist/types/src/templates/discord.d.ts +3 -0
  152. package/dist/types/src/templates/discord.d.ts.map +1 -0
  153. package/dist/types/src/templates/echo.d.ts.map +1 -1
  154. package/dist/types/src/templates/email.d.ts +2 -1
  155. package/dist/types/src/templates/email.d.ts.map +1 -1
  156. package/dist/types/src/templates/forex-effect.d.ts +3 -0
  157. package/dist/types/src/templates/forex-effect.d.ts.map +1 -0
  158. package/dist/types/src/templates/forex.d.ts +1 -4
  159. package/dist/types/src/templates/forex.d.ts.map +1 -1
  160. package/dist/types/src/{templates.d.ts → templates/index.d.ts} +1 -1
  161. package/dist/types/src/templates/index.d.ts.map +1 -0
  162. package/dist/types/src/translations.d.ts +100 -0
  163. package/dist/types/src/translations.d.ts.map +1 -1
  164. package/dist/types/src/types.d.ts +14 -6
  165. package/dist/types/src/types.d.ts.map +1 -1
  166. package/dist/types/tsconfig.tsbuildinfo +1 -1
  167. package/package.json +46 -46
  168. package/src/ScriptPlugin.tsx +80 -91
  169. package/src/capabilities/artifact-definition.ts +224 -0
  170. package/src/capabilities/capabilities.ts +12 -0
  171. package/src/capabilities/compiler.ts +33 -0
  172. package/src/capabilities/index.ts +13 -0
  173. package/src/capabilities/intent-resolver.ts +46 -0
  174. package/src/capabilities/react-surface.tsx +60 -0
  175. package/src/capabilities/settings.ts +14 -0
  176. package/src/compiler/compiler.browser.test.ts +1 -1
  177. package/src/components/DebugPanel/DebugPanel.tsx +2 -2
  178. package/src/components/FrameContainer/FrameContainer.tsx +5 -4
  179. package/src/components/ScriptContainer.tsx +69 -9
  180. package/src/components/ScriptSettings/ScriptSettings.tsx +28 -4
  181. package/src/components/ScriptSettingsPanel.tsx +139 -51
  182. package/src/components/{Toolbar/Toolbar.stories.tsx → ScriptToolbar/ScriptToolbar.stories.tsx} +2 -2
  183. package/src/components/ScriptToolbar/ScriptToolbar.tsx +53 -0
  184. package/src/{bundler → components/ScriptToolbar}/index.ts +1 -1
  185. package/src/components/TypescriptEditor/TypescriptEditor.stories.tsx +2 -0
  186. package/src/components/TypescriptEditor/TypescriptEditor.tsx +75 -10
  187. package/src/components/index.ts +1 -1
  188. package/src/events.ts +11 -0
  189. package/src/hooks/deploy.ts +169 -0
  190. package/src/hooks/format.ts +47 -0
  191. package/src/hooks/index.ts +11 -0
  192. package/src/hooks/template.ts +64 -0
  193. package/src/hooks/useToolbarAction.ts +54 -0
  194. package/src/hooks/useToolbarState.ts +16 -0
  195. package/src/hooks/view.ts +55 -0
  196. package/src/index.ts +2 -7
  197. package/src/meta.ts +4 -2
  198. package/src/templates/chat.ts +4 -4
  199. package/src/templates/chess.ts +42 -35
  200. package/src/templates/discord.ts +103 -0
  201. package/src/templates/echo.ts +5 -1
  202. package/src/templates/email.ts +26 -23
  203. package/src/templates/forex-effect.ts +41 -0
  204. package/src/templates/forex.ts +23 -16
  205. package/src/{templates.ts → templates/index.ts} +20 -5
  206. package/src/translations.ts +26 -0
  207. package/src/types.ts +19 -18
  208. package/dist/lib/browser/AutomationPanel-RFQAQ7NF.mjs +0 -78
  209. package/dist/lib/browser/AutomationPanel-RFQAQ7NF.mjs.map +0 -7
  210. package/dist/lib/browser/ScriptContainer-IJNY7NHA.mjs +0 -415
  211. package/dist/lib/browser/ScriptContainer-IJNY7NHA.mjs.map +0 -7
  212. package/dist/lib/browser/chunk-4UTRJLQ3.mjs +0 -286
  213. package/dist/lib/browser/chunk-4UTRJLQ3.mjs.map +0 -7
  214. package/dist/lib/browser/chunk-C7VBULMK.mjs +0 -18
  215. package/dist/lib/browser/chunk-C7VBULMK.mjs.map +0 -7
  216. package/dist/lib/browser/chunk-K7KY6YMG.mjs.map +0 -7
  217. package/dist/lib/browser/chunk-RQA3EB5K.mjs +0 -26
  218. package/dist/lib/browser/chunk-RQA3EB5K.mjs.map +0 -7
  219. package/dist/lib/browser/meta.mjs +0 -9
  220. package/dist/lib/browser/meta.mjs.map +0 -7
  221. package/dist/lib/node/AutomationPanel-5CJEF4MI.cjs +0 -104
  222. package/dist/lib/node/AutomationPanel-5CJEF4MI.cjs.map +0 -7
  223. package/dist/lib/node/ScriptContainer-D7CCLTCJ.cjs +0 -426
  224. package/dist/lib/node/ScriptContainer-D7CCLTCJ.cjs.map +0 -7
  225. package/dist/lib/node/chunk-4INUJLXL.cjs.map +0 -7
  226. package/dist/lib/node/chunk-6LYX73ZT.cjs.map +0 -7
  227. package/dist/lib/node/chunk-PK3OQP5L.cjs.map +0 -7
  228. package/dist/lib/node/chunk-WPP65EYS.cjs +0 -298
  229. package/dist/lib/node/chunk-WPP65EYS.cjs.map +0 -7
  230. package/dist/lib/node/meta.cjs.map +0 -7
  231. package/dist/lib/node-esm/AutomationPanel-7Y6REBNJ.mjs +0 -79
  232. package/dist/lib/node-esm/AutomationPanel-7Y6REBNJ.mjs.map +0 -7
  233. package/dist/lib/node-esm/ScriptContainer-FURREOFW.mjs +0 -416
  234. package/dist/lib/node-esm/ScriptContainer-FURREOFW.mjs.map +0 -7
  235. package/dist/lib/node-esm/chunk-4SRPREUK.mjs +0 -288
  236. package/dist/lib/node-esm/chunk-4SRPREUK.mjs.map +0 -7
  237. package/dist/lib/node-esm/chunk-H6BBLQ5Q.mjs +0 -27
  238. package/dist/lib/node-esm/chunk-H6BBLQ5Q.mjs.map +0 -7
  239. package/dist/lib/node-esm/chunk-OFYGBUNI.mjs.map +0 -7
  240. package/dist/lib/node-esm/chunk-SLTZMY34.mjs.map +0 -7
  241. package/dist/lib/node-esm/meta.mjs +0 -10
  242. package/dist/lib/node-esm/meta.mjs.map +0 -7
  243. package/dist/types/src/bundler/bundler.d.ts +0 -39
  244. package/dist/types/src/bundler/bundler.d.ts.map +0 -1
  245. package/dist/types/src/bundler/bundler.test.d.ts +0 -2
  246. package/dist/types/src/bundler/bundler.test.d.ts.map +0 -1
  247. package/dist/types/src/bundler/index.d.ts +0 -2
  248. package/dist/types/src/bundler/index.d.ts.map +0 -1
  249. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +0 -17
  250. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +0 -1
  251. package/dist/types/src/components/AutomationPanel/index.d.ts +0 -4
  252. package/dist/types/src/components/AutomationPanel/index.d.ts.map +0 -1
  253. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts +0 -12
  254. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts.map +0 -1
  255. package/dist/types/src/components/ScriptBlock/ScriptBlock.stories.d.ts +0 -6
  256. package/dist/types/src/components/ScriptBlock/ScriptBlock.stories.d.ts.map +0 -1
  257. package/dist/types/src/components/ScriptBlock/index.d.ts +0 -2
  258. package/dist/types/src/components/ScriptBlock/index.d.ts.map +0 -1
  259. package/dist/types/src/components/ScriptEditor.d.ts +0 -9
  260. package/dist/types/src/components/ScriptEditor.d.ts.map +0 -1
  261. package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -23
  262. package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
  263. package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +0 -1
  264. package/dist/types/src/components/Toolbar/index.d.ts +0 -2
  265. package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
  266. package/dist/types/src/templates.d.ts.map +0 -1
  267. package/src/bundler/bundler.test.ts +0 -54
  268. package/src/bundler/bundler.ts +0 -250
  269. package/src/components/AutomationPanel/AutomationPanel.tsx +0 -104
  270. package/src/components/AutomationPanel/index.ts +0 -9
  271. package/src/components/ScriptBlock/ScriptBlock.stories.tsx +0 -55
  272. package/src/components/ScriptBlock/ScriptBlock.tsx +0 -102
  273. package/src/components/ScriptBlock/index.ts +0 -5
  274. package/src/components/ScriptEditor.tsx +0 -193
  275. package/src/components/Toolbar/Toolbar.tsx +0 -177
  276. package/src/components/Toolbar/index.ts +0 -5
@@ -1,193 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- import { format } from 'prettier';
6
- import prettierPluginEstree from 'prettier/plugins/estree';
7
- import prettierPluginTypescript from 'prettier/plugins/typescript';
8
- import React, { useCallback, useMemo, useState } from 'react';
9
-
10
- import {
11
- FUNCTIONS_PRESET_META_KEY,
12
- FunctionType,
13
- type ScriptType,
14
- getInvocationUrl,
15
- getUserFunctionUrlInMetadata,
16
- setUserFunctionUrlInMetadata,
17
- uploadWorkerFunction,
18
- incrementSemverPatch,
19
- } from '@dxos/functions';
20
- import { log } from '@dxos/log';
21
- import { useClient } from '@dxos/react-client';
22
- import { create, createDocAccessor, Filter, getMeta, getSpace, makeRef, useQuery } from '@dxos/react-client/echo';
23
- import { useIdentity } from '@dxos/react-client/halo';
24
- import { useTranslation, type ThemedClassName } from '@dxos/react-ui';
25
- import { createDataExtensions, listener } from '@dxos/react-ui-editor';
26
- import { mx } from '@dxos/react-ui-theme';
27
-
28
- import { DebugPanel } from './DebugPanel';
29
- import { type TemplateSelectProps, Toolbar, type ViewType } from './Toolbar';
30
- import { TypescriptEditor, type TypescriptEditorProps } from './TypescriptEditor';
31
- import { Bundler } from '../bundler';
32
- import { SCRIPT_PLUGIN } from '../meta';
33
- import { templates } from '../templates';
34
-
35
- export type ScriptEditorProps = ThemedClassName<{
36
- script: ScriptType;
37
- }> &
38
- Pick<TypescriptEditorProps, 'env'>;
39
-
40
- export const ScriptEditor = ({ classNames, script, env }: ScriptEditorProps) => {
41
- const { t } = useTranslation(SCRIPT_PLUGIN);
42
- const client = useClient();
43
- const identity = useIdentity();
44
- const space = getSpace(script);
45
- const [fn] = useQuery(space, Filter.schema(FunctionType, { source: script }));
46
-
47
- const extensions = useMemo(
48
- () => [
49
- listener({
50
- onChange: (text) => {
51
- if (script.source && script.source.target?.content !== text) {
52
- script.changed = true;
53
- }
54
- },
55
- }),
56
- createDataExtensions({
57
- id: script.id,
58
- text: script.source && createDocAccessor(script.source.target!, ['content']),
59
- space,
60
- identity,
61
- }),
62
- ],
63
- [script, script.source, space, identity],
64
- );
65
-
66
- const [view, setView] = useState<ViewType>('editor');
67
- const existingFunctionUrl = fn && getUserFunctionUrlInMetadata(getMeta(fn));
68
- const [error, setError] = useState<string>();
69
-
70
- const handleFormat = useCallback(async () => {
71
- if (!script.source) {
72
- return;
73
- }
74
-
75
- try {
76
- script.source.target!.content = await format(script.source.target!.content, {
77
- parser: 'typescript',
78
- plugins: [prettierPluginEstree, prettierPluginTypescript],
79
- semi: true,
80
- singleQuote: true,
81
- });
82
- } catch (err: any) {
83
- // TODO(wittjosiah): Show error in UI.
84
- log.catch(err);
85
- }
86
- }, [script.source]);
87
-
88
- const handleTemplateChange: TemplateSelectProps['onTemplateSelect'] = (id) => {
89
- const template = templates.find((template) => template.id === id);
90
- if (template) {
91
- script.name = template.name;
92
- script.source!.target!.content = template.source;
93
- const metaKeys = getMeta(script).keys;
94
- const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);
95
- if (oldPresetIndex >= 0) {
96
- metaKeys.splice(oldPresetIndex, 1);
97
- }
98
- if (template.presetId) {
99
- metaKeys.push({ source: FUNCTIONS_PRESET_META_KEY, id: template.presetId });
100
- }
101
- }
102
- };
103
-
104
- const handleDeploy = useCallback(async () => {
105
- if (!script.source || !identity || !space) {
106
- return;
107
- }
108
-
109
- setError(undefined);
110
-
111
- try {
112
- const existingFunctionId = existingFunctionUrl?.split('/').at(-1);
113
-
114
- const bundler = new Bundler({ platform: 'browser', sandboxedModules: [], remoteModules: {} });
115
- const buildResult = await bundler.bundle(script.source.target!.content);
116
- if (buildResult.error || !buildResult.bundle) {
117
- throw buildResult.error;
118
- }
119
-
120
- const { functionId, version, meta } = await uploadWorkerFunction({
121
- client,
122
- spaceId: space.id,
123
- version: fn ? incrementSemverPatch(fn.version) : '0.0.1',
124
- functionId: existingFunctionId,
125
- source: buildResult.bundle,
126
- });
127
- if (functionId === undefined || version === undefined) {
128
- throw new Error(`Upload didn't return expected data: functionId=${functionId}, version=${version}`);
129
- }
130
-
131
- log.info('function uploaded', { functionId, version });
132
- if (fn) {
133
- fn.version = version;
134
- }
135
-
136
- const deployedFunction =
137
- fn ?? space.db.add(create(FunctionType, { name: functionId, version, source: makeRef(script) }));
138
-
139
- script.changed = false;
140
-
141
- if (meta.inputSchema) {
142
- deployedFunction.inputSchema = meta.inputSchema;
143
- } else {
144
- log.verbose('no input schema in function metadata', { functionId });
145
- }
146
-
147
- setUserFunctionUrlInMetadata(getMeta(deployedFunction), `/${space.id}/${functionId}`);
148
-
149
- setView('split');
150
- } catch (err: any) {
151
- log.catch(err);
152
- setError(t('upload failed label'));
153
- }
154
- }, [fn, existingFunctionUrl, script, script.name, script.source, space?.id ?? null]);
155
-
156
- const functionUrl = useMemo(() => {
157
- if (!existingFunctionUrl) {
158
- return;
159
- }
160
-
161
- return getInvocationUrl(existingFunctionUrl, client.config.values.runtime?.services?.edge?.url ?? '', {
162
- spaceId: space?.id,
163
- });
164
- }, [existingFunctionUrl, space]);
165
-
166
- return (
167
- <div role='none' className={mx('flex flex-col w-full overflow-hidden divide-y divide-separator', classNames)}>
168
- <Toolbar
169
- deployed={Boolean(existingFunctionUrl) && !script.changed}
170
- functionUrl={functionUrl}
171
- error={error}
172
- view={view}
173
- templates={templates}
174
- onDeploy={handleDeploy}
175
- onFormat={handleFormat}
176
- onViewChange={setView}
177
- onTemplateSelect={handleTemplateChange}
178
- />
179
-
180
- {view !== 'preview' && (
181
- <TypescriptEditor
182
- id={script.id}
183
- env={env}
184
- initialValue={script.source?.target?.content}
185
- extensions={extensions}
186
- className='flex is-full bs-full overflow-hidden ch-focus-ring-inset-over-all'
187
- />
188
- )}
189
-
190
- {view !== 'editor' && <DebugPanel functionUrl={functionUrl} />}
191
- </div>
192
- );
193
- };
@@ -1,177 +0,0 @@
1
- //
2
- // Copyright 2024 DXOS.org
3
- //
4
-
5
- import React, { useState } from 'react';
6
-
7
- import {
8
- ElevationProvider,
9
- Icon,
10
- Select,
11
- type ThemedClassName,
12
- ToggleGroup,
13
- ToggleGroupItem,
14
- type ToolbarButtonProps,
15
- Toolbar as NaturalToolbar,
16
- Tooltip,
17
- useTranslation,
18
- } from '@dxos/react-ui';
19
-
20
- import { SCRIPT_PLUGIN } from '../../meta';
21
- import { type Template } from '../../templates';
22
-
23
- export type ToolbarProps = ThemedClassName<
24
- {
25
- deployed?: boolean;
26
- error?: string;
27
- functionUrl?: string;
28
- onDeploy?: () => Promise<void>;
29
- onFormat?: () => Promise<void>;
30
- } & TemplateSelectProps &
31
- ViewSelectorProps
32
- >;
33
-
34
- export const Toolbar = ({
35
- classNames,
36
- deployed,
37
- error,
38
- functionUrl,
39
- view,
40
- templates,
41
- onDeploy,
42
- onFormat,
43
- onViewChange,
44
- onTemplateSelect,
45
- }: ToolbarProps) => {
46
- const { t } = useTranslation(SCRIPT_PLUGIN);
47
- const [pending, setPending] = useState(false);
48
-
49
- const handleCopyLink = async () => {
50
- if (!functionUrl) {
51
- return;
52
- }
53
-
54
- await navigator.clipboard.writeText(functionUrl);
55
- };
56
-
57
- const handleDeploy = async () => {
58
- if (!pending) {
59
- setPending(true);
60
- await onDeploy?.();
61
- setPending(false);
62
- }
63
- };
64
-
65
- // TODO(burdon): Factor out common toolbar components with sheet/editor?
66
- return (
67
- <ElevationProvider elevation='positioned'>
68
- <NaturalToolbar.Root classNames={['p-1', classNames]} style={{ contain: 'layout' }}>
69
- {templates && <TemplateSelect templates={templates} onTemplateSelect={onTemplateSelect} />}
70
- {onFormat && <ToolbarIconButton icon='ph--magic-wand--regular' text={t('format label')} onClick={onFormat} />}
71
-
72
- <div role='separator' className='grow' />
73
-
74
- {error ? (
75
- <Tooltip.Root>
76
- <Tooltip.Trigger>
77
- <Icon icon='ph--warning-circle--regular' size={4} />
78
- </Tooltip.Trigger>
79
- <Tooltip.Portal>
80
- <Tooltip.Content>
81
- <Tooltip.Arrow />
82
- {error}
83
- </Tooltip.Content>
84
- </Tooltip.Portal>
85
- </Tooltip.Root>
86
- ) : null}
87
-
88
- {functionUrl && deployed && (
89
- <ToolbarIconButton icon='ph--link--regular' text={t('copy link label')} onClick={handleCopyLink} />
90
- )}
91
-
92
- {onDeploy && (
93
- <ToolbarIconButton
94
- icon={pending ? 'ph--spinner-gap--regular' : 'ph--cloud-arrow-up--regular'}
95
- classNames={[pending && 'animate-spin']}
96
- text={pending ? t('pending label') : t('deploy label')}
97
- onClick={handleDeploy}
98
- />
99
- )}
100
-
101
- <ViewSelector view={view} onViewChange={onViewChange} />
102
- </NaturalToolbar.Root>
103
- </ElevationProvider>
104
- );
105
- };
106
-
107
- const ToolbarIconButton = ({
108
- icon,
109
- text,
110
- classNames,
111
- disabled,
112
- onClick,
113
- }: { icon: string; text: string } & Pick<ToolbarButtonProps, 'classNames' | 'disabled' | 'onClick'>) => {
114
- return (
115
- <Tooltip.Root>
116
- <Tooltip.Trigger asChild>
117
- <NaturalToolbar.Button variant='ghost' disabled={disabled} onClick={onClick}>
118
- <Icon icon={icon} size={4} classNames={classNames} />
119
- </NaturalToolbar.Button>
120
- </Tooltip.Trigger>
121
- <Tooltip.Portal>
122
- <Tooltip.Content>
123
- <Tooltip.Arrow />
124
- {text}
125
- </Tooltip.Content>
126
- </Tooltip.Portal>
127
- </Tooltip.Root>
128
- );
129
- };
130
-
131
- export type ViewType = 'editor' | 'split' | 'preview';
132
-
133
- export type TemplateSelectProps = {
134
- templates?: Template[];
135
- onTemplateSelect?: (id: string) => void;
136
- };
137
-
138
- export const TemplateSelect = ({ templates = [], onTemplateSelect }: TemplateSelectProps) => {
139
- return (
140
- <Select.Root value={''} onValueChange={onTemplateSelect}>
141
- <Select.TriggerButton />
142
- <Select.Portal>
143
- <Select.Content>
144
- <Select.Viewport>
145
- <Select.Option value={''}>Template</Select.Option>
146
- {templates.map(({ id, name }) => (
147
- <Select.Option key={id} value={id}>
148
- {name}
149
- </Select.Option>
150
- ))}
151
- </Select.Viewport>
152
- </Select.Content>
153
- </Select.Portal>
154
- </Select.Root>
155
- );
156
- };
157
-
158
- export type ViewSelectorProps = {
159
- view?: ViewType;
160
- onViewChange?: (view: ViewType) => void;
161
- };
162
-
163
- export const ViewSelector = ({ view, onViewChange }: ViewSelectorProps) => {
164
- return (
165
- <ToggleGroup type='single' value={view} onValueChange={(value) => onViewChange?.(value as ViewType)}>
166
- <ToggleGroupItem value='editor' classNames='bg-transparent text-subdued'>
167
- <Icon icon='ph--code--regular' size={4} />
168
- </ToggleGroupItem>
169
- <ToggleGroupItem value='split' classNames='bg-transparent text-subdued'>
170
- <Icon icon='ph--square-split-vertical--regular' size={4} />
171
- </ToggleGroupItem>
172
- <ToggleGroupItem value='preview' classNames='bg-transparent text-subdued'>
173
- <Icon icon='ph--eye--regular' size={4} />
174
- </ToggleGroupItem>
175
- </ToggleGroup>
176
- );
177
- };
@@ -1,5 +0,0 @@
1
- //
2
- // Copyright 2023 DXOS.org
3
- //
4
-
5
- export * from './Toolbar';