@dxos/plugin-script 0.7.4 → 0.7.5-main.9cb18ac

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 (101) hide show
  1. package/dist/lib/browser/{AutomationPanel-PMTZROAZ.mjs → AutomationPanel-RFQAQ7NF.mjs} +2 -9
  2. package/dist/lib/browser/AutomationPanel-RFQAQ7NF.mjs.map +7 -0
  3. package/dist/lib/browser/{ScriptContainer-RYZFYCNK.mjs → ScriptContainer-GDVBWFI7.mjs} +16 -26
  4. package/dist/lib/browser/ScriptContainer-GDVBWFI7.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-RQA3EB5K.mjs +26 -0
  6. package/dist/lib/browser/chunk-RQA3EB5K.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +57 -131
  8. package/dist/lib/browser/index.mjs.map +3 -3
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/types.mjs +8 -0
  11. package/dist/lib/node/{AutomationPanel-AAGQREH7.cjs → AutomationPanel-5CJEF4MI.cjs} +12 -13
  12. package/dist/lib/node/AutomationPanel-5CJEF4MI.cjs.map +7 -0
  13. package/dist/lib/node/{ScriptContainer-FZ44UIRC.cjs → ScriptContainer-YWXXNLG6.cjs} +27 -28
  14. package/dist/lib/node/ScriptContainer-YWXXNLG6.cjs.map +7 -0
  15. package/dist/lib/node/chunk-PK3OQP5L.cjs +45 -0
  16. package/dist/lib/node/chunk-PK3OQP5L.cjs.map +7 -0
  17. package/dist/lib/node/index.cjs +61 -132
  18. package/dist/lib/node/index.cjs.map +3 -3
  19. package/dist/lib/node/meta.json +1 -1
  20. package/dist/lib/node/{types/index.cjs → types.cjs} +5 -9
  21. package/dist/lib/node/types.cjs.map +7 -0
  22. package/dist/lib/node-esm/{AutomationPanel-ETQEDY5I.mjs → AutomationPanel-7Y6REBNJ.mjs} +2 -9
  23. package/dist/lib/node-esm/AutomationPanel-7Y6REBNJ.mjs.map +7 -0
  24. package/dist/lib/node-esm/{ScriptContainer-3PKDW34A.mjs → ScriptContainer-BG2PHKEH.mjs} +16 -26
  25. package/dist/lib/node-esm/ScriptContainer-BG2PHKEH.mjs.map +7 -0
  26. package/dist/lib/node-esm/chunk-H6BBLQ5Q.mjs +27 -0
  27. package/dist/lib/node-esm/chunk-H6BBLQ5Q.mjs.map +7 -0
  28. package/dist/lib/node-esm/index.mjs +57 -131
  29. package/dist/lib/node-esm/index.mjs.map +3 -3
  30. package/dist/lib/node-esm/meta.json +1 -1
  31. package/dist/lib/node-esm/types.mjs +9 -0
  32. package/dist/types/src/ScriptPlugin.d.ts.map +1 -1
  33. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts +2 -2
  34. package/dist/types/src/components/AutomationPanel/AutomationPanel.d.ts.map +1 -1
  35. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts +1 -1
  36. package/dist/types/src/components/ScriptBlock/ScriptBlock.d.ts.map +1 -1
  37. package/dist/types/src/components/ScriptBlock/ScriptBlock.stories.d.ts.map +1 -1
  38. package/dist/types/src/components/ScriptEditor.d.ts +1 -1
  39. package/dist/types/src/components/ScriptEditor.d.ts.map +1 -1
  40. package/dist/types/src/components/ScriptSettingsPanel.d.ts +1 -1
  41. package/dist/types/src/components/ScriptSettingsPanel.d.ts.map +1 -1
  42. package/dist/types/src/translations.d.ts +0 -43
  43. package/dist/types/src/translations.d.ts.map +1 -1
  44. package/dist/types/src/types.d.ts +22 -0
  45. package/dist/types/src/types.d.ts.map +1 -0
  46. package/dist/types/tsconfig.tsbuildinfo +1 -0
  47. package/package.json +39 -47
  48. package/src/ScriptPlugin.tsx +43 -95
  49. package/src/components/AutomationPanel/AutomationPanel.tsx +2 -4
  50. package/src/components/FrameContainer/FrameContainer.tsx +1 -1
  51. package/src/components/ScriptBlock/ScriptBlock.stories.tsx +6 -3
  52. package/src/components/ScriptBlock/ScriptBlock.tsx +2 -2
  53. package/src/components/ScriptEditor.tsx +20 -18
  54. package/src/components/ScriptSettingsPanel.tsx +1 -2
  55. package/src/components/Toolbar/Toolbar.tsx +1 -1
  56. package/src/translations.ts +0 -4
  57. package/src/types.ts +38 -0
  58. package/dist/lib/browser/AutomationPanel-PMTZROAZ.mjs.map +0 -7
  59. package/dist/lib/browser/ScriptContainer-RYZFYCNK.mjs.map +0 -7
  60. package/dist/lib/browser/chunk-QFZUFT5G.mjs +0 -48
  61. package/dist/lib/browser/chunk-QFZUFT5G.mjs.map +0 -7
  62. package/dist/lib/browser/chunk-U3OP64V4.mjs +0 -123
  63. package/dist/lib/browser/chunk-U3OP64V4.mjs.map +0 -7
  64. package/dist/lib/browser/edge/index.mjs +0 -19
  65. package/dist/lib/browser/types/index.mjs +0 -12
  66. package/dist/lib/node/AutomationPanel-AAGQREH7.cjs.map +0 -7
  67. package/dist/lib/node/ScriptContainer-FZ44UIRC.cjs.map +0 -7
  68. package/dist/lib/node/chunk-CS25QNKZ.cjs +0 -151
  69. package/dist/lib/node/chunk-CS25QNKZ.cjs.map +0 -7
  70. package/dist/lib/node/chunk-DQYAU2CJ.cjs +0 -67
  71. package/dist/lib/node/chunk-DQYAU2CJ.cjs.map +0 -7
  72. package/dist/lib/node/edge/index.cjs +0 -41
  73. package/dist/lib/node/edge/index.cjs.map +0 -7
  74. package/dist/lib/node/types/index.cjs.map +0 -7
  75. package/dist/lib/node-esm/AutomationPanel-ETQEDY5I.mjs.map +0 -7
  76. package/dist/lib/node-esm/ScriptContainer-3PKDW34A.mjs.map +0 -7
  77. package/dist/lib/node-esm/chunk-36DLLQ6E.mjs +0 -125
  78. package/dist/lib/node-esm/chunk-36DLLQ6E.mjs.map +0 -7
  79. package/dist/lib/node-esm/chunk-GMVPKT6A.mjs +0 -49
  80. package/dist/lib/node-esm/chunk-GMVPKT6A.mjs.map +0 -7
  81. package/dist/lib/node-esm/edge/index.mjs +0 -20
  82. package/dist/lib/node-esm/edge/index.mjs.map +0 -7
  83. package/dist/lib/node-esm/types/index.mjs +0 -13
  84. package/dist/lib/node-esm/types/index.mjs.map +0 -7
  85. package/dist/types/src/edge/functions.d.ts +0 -25
  86. package/dist/types/src/edge/functions.d.ts.map +0 -1
  87. package/dist/types/src/edge/index.d.ts +0 -2
  88. package/dist/types/src/edge/index.d.ts.map +0 -1
  89. package/dist/types/src/types/index.d.ts +0 -3
  90. package/dist/types/src/types/index.d.ts.map +0 -1
  91. package/dist/types/src/types/schema.d.ts +0 -71
  92. package/dist/types/src/types/schema.d.ts.map +0 -1
  93. package/dist/types/src/types/types.d.ts +0 -8
  94. package/dist/types/src/types/types.d.ts.map +0 -1
  95. package/src/edge/functions.ts +0 -116
  96. package/src/edge/index.ts +0 -7
  97. package/src/types/index.ts +0 -6
  98. package/src/types/schema.ts +0 -44
  99. package/src/types/types.ts +0 -29
  100. /package/dist/lib/browser/{edge/index.mjs.map → types.mjs.map} +0 -0
  101. /package/dist/lib/{browser/types/index.mjs.map → node-esm/types.mjs.map} +0 -0
@@ -1,14 +1,6 @@
1
1
  import {
2
2
  DebugPanel
3
3
  } from "./chunk-K7KY6YMG.mjs";
4
- import {
5
- getInvocationUrl,
6
- getUserFunctionUrlInMetadata
7
- } from "./chunk-U3OP64V4.mjs";
8
- import {
9
- FunctionType,
10
- ScriptType
11
- } from "./chunk-QFZUFT5G.mjs";
12
4
  import {
13
5
  SCRIPT_PLUGIN
14
6
  } from "./chunk-C7VBULMK.mjs";
@@ -16,6 +8,7 @@ import {
16
8
  // packages/plugins/experimental/plugin-script/src/components/AutomationPanel/AutomationPanel.tsx
17
9
  import React, { useMemo, useState } from "react";
18
10
  import { failUndefined } from "@dxos/debug";
11
+ import { FunctionType, ScriptType, getInvocationUrl, getUserFunctionUrlInMetadata } from "@dxos/functions";
19
12
  import { useClient } from "@dxos/react-client";
20
13
  import { Filter, getMeta, getSpace, useQuery } from "@dxos/react-client/echo";
21
14
  import { Select, useTranslation } from "@dxos/react-ui";
@@ -82,4 +75,4 @@ export {
82
75
  AutomationPanel,
83
76
  AutomationPanel_default as default
84
77
  };
85
- //# sourceMappingURL=AutomationPanel-PMTZROAZ.mjs.map
78
+ //# sourceMappingURL=AutomationPanel-RFQAQ7NF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/AutomationPanel/AutomationPanel.tsx", "../../../src/components/AutomationPanel/index.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useMemo, useState } from 'react';\n\nimport { failUndefined } from '@dxos/debug';\nimport { FunctionType, ScriptType, getInvocationUrl, getUserFunctionUrlInMetadata } from '@dxos/functions';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, getMeta, getSpace, type ReactiveEchoObject, useQuery } from '@dxos/react-client/echo';\nimport { Select, useTranslation } from '@dxos/react-ui';\n\nimport { SCRIPT_PLUGIN } from '../../meta';\nimport { DebugPanel } from '../DebugPanel';\n\nexport interface AutomationPanelProps {\n subject: ReactiveEchoObject<any>;\n}\n\nexport const AutomationPanel = ({ subject }: AutomationPanelProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const space = getSpace(subject);\n\n // TODO(dmaretskyi): Parametric query.\n const functions = useQuery(\n space ?? undefined,\n subject instanceof ScriptType\n ? Filter.schema(FunctionType, { source: subject })\n : Filter.schema(FunctionType, (fn) => fn.binding != null),\n {},\n [subject],\n );\n\n const [selectedFunction, setSelectedFunction] = useState<FunctionType | null>(null);\n const chatFunction = subject instanceof ScriptType ? functions[0] : selectedFunction;\n\n return (\n <div className='h-full flex flex-col'>\n {!(subject instanceof ScriptType) && (\n <BindingSelect\n selectedFunction={selectedFunction}\n setSelectedFunction={setSelectedFunction}\n functions={functions}\n />\n )}\n {chatFunction && <ChatPanel fn={chatFunction} subject={subject} />}\n {subject instanceof ScriptType && functions.length === 0 && <div className='p-1'>{t('not deployed')}</div>}\n </div>\n );\n};\n\nexport interface ChatPanelProps {\n fn: FunctionType;\n subject: ReactiveEchoObject<any>;\n}\n\nconst ChatPanel = ({ fn, subject }: ChatPanelProps) => {\n const client = useClient();\n const space = getSpace(fn);\n const existingFunctionUrl = getUserFunctionUrlInMetadata(getMeta(fn));\n const functionUrl = useMemo(() => {\n if (!existingFunctionUrl) {\n return;\n }\n\n return getInvocationUrl(existingFunctionUrl, client.config.values.runtime?.services?.edge?.url ?? '', {\n spaceId: space?.id,\n subjectId: subject?.id,\n });\n }, [existingFunctionUrl, space, subject]);\n\n return <DebugPanel functionUrl={functionUrl} classNames='flex-1' />;\n};\n\nexport interface BindingSelectProps {\n selectedFunction: FunctionType | null;\n setSelectedFunction: (fn: FunctionType) => void;\n functions: FunctionType[];\n}\n\nconst BindingSelect = ({ selectedFunction, setSelectedFunction, functions }: BindingSelectProps) => {\n return (\n <Select.Root\n value={selectedFunction?.id}\n onValueChange={(id) => setSelectedFunction(functions.find((fn) => fn.id === id) ?? failUndefined())}\n >\n <Select.TriggerButton placeholder='Select value' />\n <Select.Portal>\n <Select.Content>\n <Select.ScrollUpButton />\n <Select.Viewport>\n {functions.map(({ id, binding }) => (\n <Select.Option key={id} value={id}>\n {binding}\n </Select.Option>\n ))}\n </Select.Viewport>\n <Select.ScrollDownButton />\n <Select.Arrow />\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { AutomationPanel } from './AutomationPanel';\n\nexport * from './AutomationPanel';\n\nexport default AutomationPanel;\n"],
5
+ "mappings": ";;;;;;;;AAIA,OAAOA,SAASC,SAASC,gBAAgB;AAEzC,SAASC,qBAAqB;AAC9B,SAASC,cAAcC,YAAYC,kBAAkBC,oCAAoC;AACzF,SAASC,iBAAiB;AAC1B,SAASC,QAAQC,SAASC,UAAmCC,gBAAgB;AAC7E,SAASC,QAAQC,sBAAsB;AAShC,IAAMC,kBAAkB,CAAC,EAAEC,QAAO,MAAwB;AAC/D,QAAM,EAAEC,EAAC,IAAKC,eAAeC,aAAAA;AAC7B,QAAMC,QAAQC,SAASL,OAAAA;AAGvB,QAAMM,YAAYC,SAChBH,SAASI,QACTR,mBAAmBS,aACfC,OAAOC,OAAOC,cAAc;IAAEC,QAAQb;EAAQ,CAAA,IAC9CU,OAAOC,OAAOC,cAAc,CAACE,OAAOA,GAAGC,WAAW,IAAA,GACtD,CAAC,GACD;IAACf;GAAQ;AAGX,QAAM,CAACgB,kBAAkBC,mBAAAA,IAAuBC,SAA8B,IAAA;AAC9E,QAAMC,eAAenB,mBAAmBS,aAAaH,UAAU,CAAA,IAAKU;AAEpE,SACE,sBAAA,cAACI,OAAAA;IAAIC,WAAU;KACZ,EAAErB,mBAAmBS,eACpB,sBAAA,cAACa,eAAAA;IACCN;IACAC;IACAX;MAGHa,gBAAgB,sBAAA,cAACI,WAAAA;IAAUT,IAAIK;IAAcnB;MAC7CA,mBAAmBS,cAAcH,UAAUkB,WAAW,KAAK,sBAAA,cAACJ,OAAAA;IAAIC,WAAU;KAAOpB,EAAE,cAAA,CAAA,CAAA;AAG1F;AAOA,IAAMsB,YAAY,CAAC,EAAET,IAAId,QAAO,MAAkB;AAChD,QAAMyB,SAASC,UAAAA;AACf,QAAMtB,QAAQC,SAASS,EAAAA;AACvB,QAAMa,sBAAsBC,6BAA6BC,QAAQf,EAAAA,CAAAA;AACjE,QAAMgB,cAAcC,QAAQ,MAAA;AAC1B,QAAI,CAACJ,qBAAqB;AACxB;IACF;AAEA,WAAOK,iBAAiBL,qBAAqBF,OAAOQ,OAAOC,OAAOC,SAASC,UAAUC,MAAMC,OAAO,IAAI;MACpGC,SAASnC,OAAOoC;MAChBC,WAAWzC,SAASwC;IACtB,CAAA;EACF,GAAG;IAACb;IAAqBvB;IAAOJ;GAAQ;AAExC,SAAO,sBAAA,cAAC0C,YAAAA;IAAWZ;IAA0Ba,YAAW;;AAC1D;AAQA,IAAMrB,gBAAgB,CAAC,EAAEN,kBAAkBC,qBAAqBX,UAAS,MAAsB;AAC7F,SACE,sBAAA,cAACsC,OAAOC,MAAI;IACVC,OAAO9B,kBAAkBwB;IACzBO,eAAe,CAACP,OAAOvB,oBAAoBX,UAAU0C,KAAK,CAAClC,OAAOA,GAAG0B,OAAOA,EAAAA,KAAOS,cAAAA,CAAAA;KAEnF,sBAAA,cAACL,OAAOM,eAAa;IAACC,aAAY;MAClC,sBAAA,cAACP,OAAOQ,QAAM,MACZ,sBAAA,cAACR,OAAOS,SAAO,MACb,sBAAA,cAACT,OAAOU,gBAAc,IAAA,GACtB,sBAAA,cAACV,OAAOW,UAAQ,MACbjD,UAAUkD,IAAI,CAAC,EAAEhB,IAAIzB,QAAO,MAC3B,sBAAA,cAAC6B,OAAOa,QAAM;IAACC,KAAKlB;IAAIM,OAAON;KAC5BzB,OAAAA,CAAAA,CAAAA,GAIP,sBAAA,cAAC6B,OAAOe,kBAAgB,IAAA,GACxB,sBAAA,cAACf,OAAOgB,OAAK,IAAA,CAAA,CAAA,CAAA;AAKvB;;;AC/FA,IAAA,0BAAeC;",
6
+ "names": ["React", "useMemo", "useState", "failUndefined", "FunctionType", "ScriptType", "getInvocationUrl", "getUserFunctionUrlInMetadata", "useClient", "Filter", "getMeta", "getSpace", "useQuery", "Select", "useTranslation", "AutomationPanel", "subject", "t", "useTranslation", "SCRIPT_PLUGIN", "space", "getSpace", "functions", "useQuery", "undefined", "ScriptType", "Filter", "schema", "FunctionType", "source", "fn", "binding", "selectedFunction", "setSelectedFunction", "useState", "chatFunction", "div", "className", "BindingSelect", "ChatPanel", "length", "client", "useClient", "existingFunctionUrl", "getUserFunctionUrlInMetadata", "getMeta", "functionUrl", "useMemo", "getInvocationUrl", "config", "values", "runtime", "services", "edge", "url", "spaceId", "id", "subjectId", "DebugPanel", "classNames", "Select", "Root", "value", "onValueChange", "find", "failUndefined", "TriggerButton", "placeholder", "Portal", "Content", "ScrollUpButton", "Viewport", "map", "Option", "key", "ScrollDownButton", "Arrow", "AutomationPanel"]
7
+ }
@@ -5,17 +5,6 @@ import {
5
5
  import {
6
6
  DebugPanel
7
7
  } from "./chunk-K7KY6YMG.mjs";
8
- import {
9
- FUNCTIONS_PRESET_META_KEY,
10
- getInvocationUrl,
11
- getUserFunctionUrlInMetadata,
12
- incrementSemverPatch,
13
- setUserFunctionUrlInMetadata,
14
- uploadWorkerFunction
15
- } from "./chunk-U3OP64V4.mjs";
16
- import {
17
- FunctionType
18
- } from "./chunk-QFZUFT5G.mjs";
19
8
  import {
20
9
  SCRIPT_PLUGIN
21
10
  } from "./chunk-C7VBULMK.mjs";
@@ -31,9 +20,10 @@ import { format } from "prettier";
31
20
  import prettierPluginEstree from "prettier/plugins/estree";
32
21
  import prettierPluginTypescript from "prettier/plugins/typescript";
33
22
  import React3, { useCallback, useMemo, useState as useState2 } from "react";
23
+ import { FUNCTIONS_PRESET_META_KEY, FunctionType, getInvocationUrl, getUserFunctionUrlInMetadata, setUserFunctionUrlInMetadata, uploadWorkerFunction, incrementSemverPatch } from "@dxos/functions";
34
24
  import { log } from "@dxos/log";
35
25
  import { useClient } from "@dxos/react-client";
36
- import { create, createDocAccessor, Filter, getMeta, getSpace, useQuery } from "@dxos/react-client/echo";
26
+ import { create, createDocAccessor, Filter, getMeta, getSpace, makeRef, useQuery } from "@dxos/react-client/echo";
37
27
  import { useIdentity } from "@dxos/react-client/halo";
38
28
  import { useTranslation as useTranslation2 } from "@dxos/react-ui";
39
29
  import { createDataExtensions, listener } from "@dxos/react-ui-editor";
@@ -59,7 +49,7 @@ var Toolbar = ({ classNames, deployed, error, functionUrl, view, templates: temp
59
49
  }
60
50
  };
61
51
  return /* @__PURE__ */ React.createElement(ElevationProvider, {
62
- elevation: "chrome"
52
+ elevation: "positioned"
63
53
  }, /* @__PURE__ */ React.createElement(NaturalToolbar.Root, {
64
54
  classNames: [
65
55
  "p-1",
@@ -231,14 +221,14 @@ var ScriptEditor = ({ classNames, script, env }) => {
231
221
  const extensions = useMemo(() => [
232
222
  listener({
233
223
  onChange: (text) => {
234
- if (script.source && script.source?.content !== text) {
224
+ if (script.source.target && script.source.target.content !== text) {
235
225
  script.changed = true;
236
226
  }
237
227
  }
238
228
  }),
239
229
  createDataExtensions({
240
230
  id: script.id,
241
- text: script.source && createDocAccessor(script.source, [
231
+ text: script.source.target && createDocAccessor(script.source.target, [
242
232
  "content"
243
233
  ]),
244
234
  space,
@@ -246,7 +236,7 @@ var ScriptEditor = ({ classNames, script, env }) => {
246
236
  })
247
237
  ], [
248
238
  script,
249
- script.source,
239
+ script.source.target,
250
240
  space,
251
241
  identity
252
242
  ]);
@@ -258,7 +248,7 @@ var ScriptEditor = ({ classNames, script, env }) => {
258
248
  return;
259
249
  }
260
250
  try {
261
- script.source.content = await format(script.source.content, {
251
+ script.source.target.content = await format(script.source.target.content, {
262
252
  parser: "typescript",
263
253
  plugins: [
264
254
  prettierPluginEstree,
@@ -270,7 +260,7 @@ var ScriptEditor = ({ classNames, script, env }) => {
270
260
  } catch (err) {
271
261
  log.catch(err, void 0, {
272
262
  F: __dxlog_file,
273
- L: 83,
263
+ L: 84,
274
264
  S: void 0,
275
265
  C: (f, a) => f(...a)
276
266
  });
@@ -282,7 +272,7 @@ var ScriptEditor = ({ classNames, script, env }) => {
282
272
  const template = templates.find((template2) => template2.id === id);
283
273
  if (template) {
284
274
  script.name = template.name;
285
- script.source.content = template.source;
275
+ script.source.target.content = template.source;
286
276
  const metaKeys = getMeta(script).keys;
287
277
  const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);
288
278
  if (oldPresetIndex >= 0) {
@@ -308,7 +298,7 @@ var ScriptEditor = ({ classNames, script, env }) => {
308
298
  sandboxedModules: [],
309
299
  remoteModules: {}
310
300
  });
311
- const buildResult = await bundler.bundle(script.source.content);
301
+ const buildResult = await bundler.bundle(script.source.target.content);
312
302
  if (buildResult.error || !buildResult.bundle) {
313
303
  throw buildResult.error;
314
304
  }
@@ -327,7 +317,7 @@ var ScriptEditor = ({ classNames, script, env }) => {
327
317
  version
328
318
  }, {
329
319
  F: __dxlog_file,
330
- L: 130,
320
+ L: 131,
331
321
  S: void 0,
332
322
  C: (f, a) => f(...a)
333
323
  });
@@ -337,7 +327,7 @@ var ScriptEditor = ({ classNames, script, env }) => {
337
327
  const deployedFunction = fn ?? space.db.add(create(FunctionType, {
338
328
  name: functionId,
339
329
  version,
340
- source: script
330
+ source: makeRef(script)
341
331
  }));
342
332
  script.changed = false;
343
333
  if (meta.inputSchema) {
@@ -347,7 +337,7 @@ var ScriptEditor = ({ classNames, script, env }) => {
347
337
  functionId
348
338
  }, {
349
339
  F: __dxlog_file,
350
- L: 142,
340
+ L: 144,
351
341
  S: void 0,
352
342
  C: (f, a) => f(...a)
353
343
  });
@@ -357,7 +347,7 @@ var ScriptEditor = ({ classNames, script, env }) => {
357
347
  } catch (err) {
358
348
  log.catch(err, void 0, {
359
349
  F: __dxlog_file,
360
- L: 149,
350
+ L: 151,
361
351
  S: void 0,
362
352
  C: (f, a) => f(...a)
363
353
  });
@@ -398,7 +388,7 @@ var ScriptEditor = ({ classNames, script, env }) => {
398
388
  }), view !== "preview" && /* @__PURE__ */ React3.createElement(TypescriptEditor, {
399
389
  id: script.id,
400
390
  env,
401
- initialValue: script.source?.content,
391
+ initialValue: script.source?.target?.content,
402
392
  extensions,
403
393
  className: "flex is-full bs-full overflow-hidden ch-focus-ring-inset-over-all"
404
394
  }), view !== "editor" && /* @__PURE__ */ React3.createElement(DebugPanel, {
@@ -422,4 +412,4 @@ var ScriptContainer_default = ScriptContainer;
422
412
  export {
423
413
  ScriptContainer_default as default
424
414
  };
425
- //# sourceMappingURL=ScriptContainer-RYZFYCNK.mjs.map
415
+ //# sourceMappingURL=ScriptContainer-GDVBWFI7.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ScriptContainer.tsx", "../../../src/components/ScriptEditor.tsx", "../../../src/components/Toolbar/Toolbar.tsx", "../../../src/components/TypescriptEditor/TypescriptEditor.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { useAttendableAttributes } from '@dxos/react-ui-attention';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { ScriptEditor, type ScriptEditorProps } from './ScriptEditor';\n\nconst ScriptContainer = ({ script, ...props }: ScriptEditorProps) => {\n const attendableAttrs = useAttendableAttributes(fullyQualifiedId(script));\n return (\n <div role='none' className={mx('flex row-span-2 w-full overflow-hidden attention-surface')} {...attendableAttrs}>\n <ScriptEditor {...props} script={script} />\n </div>\n );\n};\n\nexport default ScriptContainer;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { format } from 'prettier';\nimport prettierPluginEstree from 'prettier/plugins/estree';\nimport prettierPluginTypescript from 'prettier/plugins/typescript';\nimport React, { useCallback, useMemo, useState } from 'react';\n\nimport {\n FUNCTIONS_PRESET_META_KEY,\n FunctionType,\n type ScriptType,\n getInvocationUrl,\n getUserFunctionUrlInMetadata,\n setUserFunctionUrlInMetadata,\n uploadWorkerFunction,\n incrementSemverPatch,\n} from '@dxos/functions';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { create, createDocAccessor, Filter, getMeta, getSpace, makeRef, useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useTranslation, type ThemedClassName } from '@dxos/react-ui';\nimport { createDataExtensions, listener } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { DebugPanel } from './DebugPanel';\nimport { type TemplateSelectProps, Toolbar, type ViewType } from './Toolbar';\nimport { TypescriptEditor, type TypescriptEditorProps } from './TypescriptEditor';\nimport { Bundler } from '../bundler';\nimport { SCRIPT_PLUGIN } from '../meta';\nimport { templates } from '../templates';\n\nexport type ScriptEditorProps = ThemedClassName<{\n script: ScriptType;\n}> &\n Pick<TypescriptEditorProps, 'env'>;\n\nexport const ScriptEditor = ({ classNames, script, env }: ScriptEditorProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const client = useClient();\n const identity = useIdentity();\n const space = getSpace(script);\n const [fn] = useQuery(space, Filter.schema(FunctionType, { source: script }));\n\n const extensions = useMemo(\n () => [\n listener({\n onChange: (text) => {\n if (script.source.target && script.source.target.content !== text) {\n script.changed = true;\n }\n },\n }),\n createDataExtensions({\n id: script.id,\n text: script.source.target && createDocAccessor(script.source.target, ['content']),\n space,\n identity,\n }),\n ],\n [script, script.source.target, space, identity],\n );\n\n const [view, setView] = useState<ViewType>('editor');\n const existingFunctionUrl = fn && getUserFunctionUrlInMetadata(getMeta(fn));\n const [error, setError] = useState<string>();\n\n const handleFormat = useCallback(async () => {\n if (!script.source) {\n return;\n }\n\n try {\n script.source.target!.content = await format(script.source.target!.content, {\n parser: 'typescript',\n plugins: [prettierPluginEstree, prettierPluginTypescript],\n semi: true,\n singleQuote: true,\n });\n } catch (err: any) {\n // TODO(wittjosiah): Show error in UI.\n log.catch(err);\n }\n }, [script.source]);\n\n const handleTemplateChange: TemplateSelectProps['onTemplateSelect'] = (id) => {\n const template = templates.find((template) => template.id === id);\n if (template) {\n script.name = template.name;\n script.source!.target!.content = template.source;\n const metaKeys = getMeta(script).keys;\n const oldPresetIndex = metaKeys.findIndex((key) => key.source === FUNCTIONS_PRESET_META_KEY);\n if (oldPresetIndex >= 0) {\n metaKeys.splice(oldPresetIndex, 1);\n }\n if (template.presetId) {\n metaKeys.push({ source: FUNCTIONS_PRESET_META_KEY, id: template.presetId });\n }\n }\n };\n\n const handleDeploy = useCallback(async () => {\n if (!script.source || !identity || !space) {\n return;\n }\n\n setError(undefined);\n\n try {\n const existingFunctionId = existingFunctionUrl?.split('/').at(-1);\n\n const bundler = new Bundler({ platform: 'browser', sandboxedModules: [], remoteModules: {} });\n const buildResult = await bundler.bundle(script.source.target!.content);\n if (buildResult.error || !buildResult.bundle) {\n throw buildResult.error;\n }\n\n const { functionId, version, meta } = await uploadWorkerFunction({\n client,\n spaceId: space.id,\n version: fn ? incrementSemverPatch(fn.version) : '0.0.1',\n functionId: existingFunctionId,\n source: buildResult.bundle,\n });\n if (functionId === undefined || version === undefined) {\n throw new Error(`Upload didn't return expected data: functionId=${functionId}, version=${version}`);\n }\n\n log.info('function uploaded', { functionId, version });\n if (fn) {\n fn.version = version;\n }\n\n const deployedFunction =\n fn ?? space.db.add(create(FunctionType, { name: functionId, version, source: makeRef(script) }));\n\n script.changed = false;\n\n if (meta.inputSchema) {\n deployedFunction.inputSchema = meta.inputSchema;\n } else {\n log.verbose('no input schema in function metadata', { functionId });\n }\n\n setUserFunctionUrlInMetadata(getMeta(deployedFunction), `/${space.id}/${functionId}`);\n\n setView('split');\n } catch (err: any) {\n log.catch(err);\n setError(t('upload failed label'));\n }\n }, [fn, existingFunctionUrl, script, script.name, script.source, space?.id ?? null]);\n\n const functionUrl = useMemo(() => {\n if (!existingFunctionUrl) {\n return;\n }\n\n return getInvocationUrl(existingFunctionUrl, client.config.values.runtime?.services?.edge?.url ?? '', {\n spaceId: space?.id,\n });\n }, [existingFunctionUrl, space]);\n\n return (\n <div role='none' className={mx('flex flex-col w-full overflow-hidden divide-y divide-separator', classNames)}>\n <Toolbar\n deployed={Boolean(existingFunctionUrl) && !script.changed}\n functionUrl={functionUrl}\n error={error}\n view={view}\n templates={templates}\n onDeploy={handleDeploy}\n onFormat={handleFormat}\n onViewChange={setView}\n onTemplateSelect={handleTemplateChange}\n />\n\n {view !== 'preview' && (\n <TypescriptEditor\n id={script.id}\n env={env}\n initialValue={script.source?.target?.content}\n extensions={extensions}\n className='flex is-full bs-full overflow-hidden ch-focus-ring-inset-over-all'\n />\n )}\n\n {view !== 'editor' && <DebugPanel functionUrl={functionUrl} />}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useState } from 'react';\n\nimport {\n ElevationProvider,\n Icon,\n Select,\n type ThemedClassName,\n ToggleGroup,\n ToggleGroupItem,\n type ToolbarButtonProps,\n Toolbar as NaturalToolbar,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\n\nimport { SCRIPT_PLUGIN } from '../../meta';\nimport { type Template } from '../../templates';\n\nexport type ToolbarProps = ThemedClassName<\n {\n deployed?: boolean;\n error?: string;\n functionUrl?: string;\n onDeploy?: () => Promise<void>;\n onFormat?: () => Promise<void>;\n } & TemplateSelectProps &\n ViewSelectorProps\n>;\n\nexport const Toolbar = ({\n classNames,\n deployed,\n error,\n functionUrl,\n view,\n templates,\n onDeploy,\n onFormat,\n onViewChange,\n onTemplateSelect,\n}: ToolbarProps) => {\n const { t } = useTranslation(SCRIPT_PLUGIN);\n const [pending, setPending] = useState(false);\n\n const handleCopyLink = async () => {\n if (!functionUrl) {\n return;\n }\n\n await navigator.clipboard.writeText(functionUrl);\n };\n\n const handleDeploy = async () => {\n if (!pending) {\n setPending(true);\n await onDeploy?.();\n setPending(false);\n }\n };\n\n // TODO(burdon): Factor out common toolbar components with sheet/editor?\n return (\n <ElevationProvider elevation='positioned'>\n <NaturalToolbar.Root classNames={['p-1', classNames]} style={{ contain: 'layout' }}>\n {templates && <TemplateSelect templates={templates} onTemplateSelect={onTemplateSelect} />}\n {onFormat && <ToolbarIconButton icon='ph--magic-wand--regular' text={t('format label')} onClick={onFormat} />}\n\n <div role='separator' className='grow' />\n\n {error ? (\n <Tooltip.Root>\n <Tooltip.Trigger>\n <Icon icon='ph--warning-circle--regular' size={4} />\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n <Tooltip.Arrow />\n {error}\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n ) : null}\n\n {functionUrl && deployed && (\n <ToolbarIconButton icon='ph--link--regular' text={t('copy link label')} onClick={handleCopyLink} />\n )}\n\n {onDeploy && (\n <ToolbarIconButton\n icon={pending ? 'ph--spinner-gap--regular' : 'ph--cloud-arrow-up--regular'}\n classNames={[pending && 'animate-spin']}\n text={pending ? t('pending label') : t('deploy label')}\n onClick={handleDeploy}\n />\n )}\n\n <ViewSelector view={view} onViewChange={onViewChange} />\n </NaturalToolbar.Root>\n </ElevationProvider>\n );\n};\n\nconst ToolbarIconButton = ({\n icon,\n text,\n classNames,\n disabled,\n onClick,\n}: { icon: string; text: string } & Pick<ToolbarButtonProps, 'classNames' | 'disabled' | 'onClick'>) => {\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n <NaturalToolbar.Button variant='ghost' disabled={disabled} onClick={onClick}>\n <Icon icon={icon} size={4} classNames={classNames} />\n </NaturalToolbar.Button>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content>\n <Tooltip.Arrow />\n {text}\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\nexport type ViewType = 'editor' | 'split' | 'preview';\n\nexport type TemplateSelectProps = {\n templates?: Template[];\n onTemplateSelect?: (id: string) => void;\n};\n\nexport const TemplateSelect = ({ templates = [], onTemplateSelect }: TemplateSelectProps) => {\n return (\n <Select.Root value={''} onValueChange={onTemplateSelect}>\n <Select.TriggerButton />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n <Select.Option value={''}>Template</Select.Option>\n {templates.map(({ id, name }) => (\n <Select.Option key={id} value={id}>\n {name}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n );\n};\n\nexport type ViewSelectorProps = {\n view?: ViewType;\n onViewChange?: (view: ViewType) => void;\n};\n\nexport const ViewSelector = ({ view, onViewChange }: ViewSelectorProps) => {\n return (\n <ToggleGroup type='single' value={view} onValueChange={(value) => onViewChange?.(value as ViewType)}>\n <ToggleGroupItem value='editor' classNames='bg-transparent text-subdued'>\n <Icon icon='ph--code--regular' size={4} />\n </ToggleGroupItem>\n <ToggleGroupItem value='split' classNames='bg-transparent text-subdued'>\n <Icon icon='ph--square-split-vertical--regular' size={4} />\n </ToggleGroupItem>\n <ToggleGroupItem value='preview' classNames='bg-transparent text-subdued'>\n <Icon icon='ph--eye--regular' size={4} />\n </ToggleGroupItem>\n </ToggleGroup>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { javascript } from '@codemirror/lang-javascript';\nimport { type VirtualTypeScriptEnvironment } from '@typescript/vfs';\nimport { tsSync, tsFacet, tsLinter, tsAutocomplete, tsHover } from '@valtown/codemirror-ts';\nimport React from 'react';\n\nimport { useThemeContext } from '@dxos/react-ui';\nimport {\n autocomplete,\n createBasicExtensions,\n createThemeExtensions,\n editorFullWidth,\n editorGutter,\n editorMonospace,\n InputModeExtensions,\n useTextEditor,\n type UseTextEditorProps,\n} from '@dxos/react-ui-editor';\nimport { nonNullable } from '@dxos/util';\n\nexport type TypescriptEditorProps = {\n id: string;\n env?: VirtualTypeScriptEnvironment;\n} & Pick<UseTextEditorProps, 'className' | 'initialValue' | 'extensions' | 'scrollTo' | 'selection'>;\n\nexport const TypescriptEditor = ({\n id,\n env,\n className,\n initialValue,\n extensions,\n scrollTo,\n selection,\n}: TypescriptEditorProps) => {\n const { themeMode } = useThemeContext();\n const { parentRef, focusAttributes } = useTextEditor(\n () => ({\n id,\n initialValue,\n extensions: [\n extensions,\n createBasicExtensions({\n highlightActiveLine: true,\n indentWithTab: true,\n lineNumbers: true,\n lineWrapping: false,\n scrollPastEnd: true,\n }),\n createThemeExtensions({\n themeMode,\n syntaxHighlighting: true,\n slots: {\n content: { className: editorFullWidth },\n },\n }),\n editorGutter,\n // TODO(burdon): Factor out.\n [\n editorMonospace,\n javascript({ typescript: true }),\n // https://github.com/val-town/codemirror-ts\n autocomplete({ override: env ? [tsAutocomplete()] : [] }),\n env ? [tsFacet.of({ env, path: `/src/${id}.ts` }), tsSync(), tsLinter(), tsHover()] : [],\n InputModeExtensions.vscode,\n ],\n ].filter(nonNullable),\n selection,\n scrollTo,\n }),\n [id, extensions, themeMode, selection, scrollTo],\n );\n\n return <div ref={parentRef} className={className} {...focusAttributes} />;\n};\n\nexport default TypescriptEditor;\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "fullyQualifiedId", "useAttendableAttributes", "mx", "format", "prettierPluginEstree", "prettierPluginTypescript", "React", "useCallback", "useMemo", "useState", "FUNCTIONS_PRESET_META_KEY", "FunctionType", "getInvocationUrl", "getUserFunctionUrlInMetadata", "setUserFunctionUrlInMetadata", "uploadWorkerFunction", "incrementSemverPatch", "log", "useClient", "create", "createDocAccessor", "Filter", "getMeta", "getSpace", "makeRef", "useQuery", "useIdentity", "useTranslation", "createDataExtensions", "listener", "mx", "React", "useState", "ElevationProvider", "Icon", "Select", "ToggleGroup", "ToggleGroupItem", "Toolbar", "NaturalToolbar", "Tooltip", "useTranslation", "Toolbar", "classNames", "deployed", "error", "functionUrl", "view", "templates", "onDeploy", "onFormat", "onViewChange", "onTemplateSelect", "t", "useTranslation", "SCRIPT_PLUGIN", "pending", "setPending", "useState", "handleCopyLink", "navigator", "clipboard", "writeText", "handleDeploy", "ElevationProvider", "elevation", "NaturalToolbar", "Root", "style", "contain", "TemplateSelect", "ToolbarIconButton", "icon", "text", "onClick", "div", "role", "className", "Tooltip", "Trigger", "Icon", "size", "Portal", "Content", "Arrow", "ViewSelector", "disabled", "asChild", "Button", "variant", "Select", "value", "onValueChange", "TriggerButton", "Viewport", "Option", "map", "id", "name", "key", "ToggleGroup", "type", "ToggleGroupItem", "javascript", "tsSync", "tsFacet", "tsLinter", "tsAutocomplete", "tsHover", "React", "useThemeContext", "autocomplete", "createBasicExtensions", "createThemeExtensions", "editorFullWidth", "editorGutter", "editorMonospace", "InputModeExtensions", "useTextEditor", "nonNullable", "TypescriptEditor", "id", "env", "className", "initialValue", "extensions", "scrollTo", "selection", "themeMode", "useThemeContext", "parentRef", "focusAttributes", "useTextEditor", "createBasicExtensions", "highlightActiveLine", "indentWithTab", "lineNumbers", "lineWrapping", "scrollPastEnd", "createThemeExtensions", "syntaxHighlighting", "slots", "content", "editorFullWidth", "editorGutter", "editorMonospace", "javascript", "typescript", "autocomplete", "override", "tsAutocomplete", "tsFacet", "of", "path", "tsSync", "tsLinter", "tsHover", "InputModeExtensions", "vscode", "filter", "nonNullable", "React", "div", "ref", "ScriptEditor", "classNames", "script", "env", "t", "useTranslation", "SCRIPT_PLUGIN", "client", "useClient", "identity", "useIdentity", "space", "getSpace", "fn", "useQuery", "Filter", "schema", "FunctionType", "source", "extensions", "useMemo", "listener", "onChange", "text", "target", "content", "changed", "createDataExtensions", "id", "createDocAccessor", "view", "setView", "useState", "existingFunctionUrl", "getUserFunctionUrlInMetadata", "getMeta", "error", "setError", "handleFormat", "useCallback", "format", "parser", "plugins", "prettierPluginEstree", "prettierPluginTypescript", "semi", "singleQuote", "err", "log", "catch", "handleTemplateChange", "template", "templates", "find", "name", "metaKeys", "keys", "oldPresetIndex", "findIndex", "key", "FUNCTIONS_PRESET_META_KEY", "splice", "presetId", "push", "handleDeploy", "undefined", "existingFunctionId", "split", "at", "bundler", "Bundler", "platform", "sandboxedModules", "remoteModules", "buildResult", "bundle", "functionId", "version", "meta", "uploadWorkerFunction", "spaceId", "incrementSemverPatch", "Error", "info", "deployedFunction", "db", "add", "create", "makeRef", "inputSchema", "verbose", "setUserFunctionUrlInMetadata", "functionUrl", "getInvocationUrl", "config", "values", "runtime", "services", "edge", "url", "React", "div", "role", "className", "mx", "Toolbar", "deployed", "Boolean", "onDeploy", "onFormat", "onViewChange", "onTemplateSelect", "TypescriptEditor", "initialValue", "DebugPanel", "ScriptContainer", "script", "props", "attendableAttrs", "useAttendableAttributes", "fullyQualifiedId", "React", "div", "role", "className", "mx", "ScriptEditor"]
7
+ }
@@ -0,0 +1,26 @@
1
+ import {
2
+ SCRIPT_PLUGIN
3
+ } from "./chunk-C7VBULMK.mjs";
4
+
5
+ // packages/plugins/experimental/plugin-script/src/types.ts
6
+ import { S } from "@dxos/echo-schema";
7
+ import { ScriptType } from "@dxos/functions";
8
+ var ScriptAction;
9
+ (function(ScriptAction2) {
10
+ const SCRIPT_ACTION = `${SCRIPT_PLUGIN}/action`;
11
+ class Create extends S.TaggedClass()(`${SCRIPT_ACTION}/create`, {
12
+ input: S.Struct({
13
+ name: S.optional(S.String)
14
+ }),
15
+ output: S.Struct({
16
+ object: ScriptType
17
+ })
18
+ }) {
19
+ }
20
+ ScriptAction2.Create = Create;
21
+ })(ScriptAction || (ScriptAction = {}));
22
+
23
+ export {
24
+ ScriptAction
25
+ };
26
+ //# sourceMappingURL=chunk-RQA3EB5K.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n IntentResolverProvides,\n MetadataRecordsProvides,\n SettingsProvides,\n SurfaceProvides,\n TranslationsProvides,\n} from '@dxos/app-framework';\nimport { S } from '@dxos/echo-schema';\nimport { ScriptType } from '@dxos/functions';\nimport { type SchemaProvides } from '@dxos/plugin-space';\n\nimport { SCRIPT_PLUGIN } from './meta';\n\nexport namespace ScriptAction {\n const SCRIPT_ACTION = `${SCRIPT_PLUGIN}/action`;\n\n export class Create extends S.TaggedClass<Create>()(`${SCRIPT_ACTION}/create`, {\n input: S.Struct({\n name: S.optional(S.String),\n }),\n output: S.Struct({\n object: ScriptType,\n }),\n }) {}\n}\n\nexport type ScriptSettingsProps = {};\n\nexport type ScriptPluginProvides = IntentResolverProvides &\n MetadataRecordsProvides &\n SchemaProvides &\n SettingsProvides<ScriptSettingsProps> &\n SurfaceProvides &\n TranslationsProvides;\n"],
5
+ "mappings": ";;;;;AAWA,SAASA,SAAS;AAClB,SAASC,kBAAkB;;UAKVC,eAAAA;AACf,QAAMC,gBAAgB,GAAGC,aAAAA;EAElB,MAAMC,eAAeC,EAAEC,YAAW,EAAW,GAAGJ,aAAAA,WAAwB;IAC7EK,OAAOF,EAAEG,OAAO;MACdC,MAAMJ,EAAEK,SAASL,EAAEM,MAAM;IAC3B,CAAA;IACAC,QAAQP,EAAEG,OAAO;MACfK,QAAQC;IACV,CAAA;EACF,CAAA,EAAA;EAAI;gBAPSV,SAAAA;AAQf,GAXiBH,iBAAAA,eAAAA,CAAAA,EAAAA;",
6
+ "names": ["S", "ScriptType", "ScriptAction", "SCRIPT_ACTION", "SCRIPT_PLUGIN", "Create", "S", "TaggedClass", "input", "Struct", "name", "optional", "String", "output", "object", "ScriptType"]
7
+ }
@@ -1,17 +1,11 @@
1
+ import {
2
+ ScriptAction
3
+ } from "./chunk-RQA3EB5K.mjs";
1
4
  import {
2
5
  Bundler,
3
6
  initializeBundler,
4
7
  templates
5
8
  } from "./chunk-4UTRJLQ3.mjs";
6
- import {
7
- getInvocationUrl,
8
- getUserFunctionUrlInMetadata
9
- } from "./chunk-U3OP64V4.mjs";
10
- import {
11
- FunctionType,
12
- ScriptAction,
13
- ScriptType
14
- } from "./chunk-QFZUFT5G.mjs";
15
9
  import {
16
10
  SCRIPT_PLUGIN,
17
11
  meta_default
@@ -20,13 +14,10 @@ import {
20
14
  // packages/plugins/experimental/plugin-script/src/ScriptPlugin.tsx
21
15
  import wasmUrl from "esbuild-wasm/esbuild.wasm?url";
22
16
  import React3 from "react";
23
- import { NavigationAction, parseIntentPlugin, resolvePlugin } from "@dxos/app-framework";
24
- import { create } from "@dxos/live-object";
25
- import { parseClientPlugin } from "@dxos/plugin-client";
26
- import { createExtension, isActionGroup } from "@dxos/plugin-graph";
17
+ import { createIntent, createResolver, createSurface } from "@dxos/app-framework";
18
+ import { FunctionType as FunctionType2, ScriptType } from "@dxos/functions";
19
+ import { create, makeRef, RefArray } from "@dxos/live-object";
27
20
  import { TextType } from "@dxos/plugin-markdown/types";
28
- import { SpaceAction } from "@dxos/plugin-space";
29
- import { loadObjectReferences } from "@dxos/react-client/echo";
30
21
 
31
22
  // packages/plugins/experimental/plugin-script/src/compiler/compiler.ts
32
23
  import { createDefaultMapFromCDN, createSystem, createVirtualTypeScriptEnvironment } from "@typescript/vfs";
@@ -122,6 +113,7 @@ var ScriptSettings = ({ settings }) => {
122
113
 
123
114
  // packages/plugins/experimental/plugin-script/src/components/ScriptSettingsPanel.tsx
124
115
  import React2, { useCallback } from "react";
116
+ import { FunctionType, getInvocationUrl, getUserFunctionUrlInMetadata } from "@dxos/functions";
125
117
  import { useClient as useClient2 } from "@dxos/react-client";
126
118
  import { Filter, getMeta, getSpace, useQuery } from "@dxos/react-client/echo";
127
119
  import { Button as Button2, Icon, Input, useControlledValue, useTranslation as useTranslation2 } from "@dxos/react-ui";
@@ -197,16 +189,13 @@ var ScriptSettingsPanel = ({ script }) => {
197
189
  };
198
190
 
199
191
  // packages/plugins/experimental/plugin-script/src/components/index.ts
200
- var AutomationPanel = lazy(() => import("./AutomationPanel-PMTZROAZ.mjs"));
201
- var ScriptContainer = lazy(() => import("./ScriptContainer-RYZFYCNK.mjs"));
192
+ var AutomationPanel = lazy(() => import("./AutomationPanel-RFQAQ7NF.mjs"));
193
+ var ScriptContainer = lazy(() => import("./ScriptContainer-GDVBWFI7.mjs"));
202
194
 
203
195
  // packages/plugins/experimental/plugin-script/src/translations.ts
204
196
  var translations_default = [
205
197
  {
206
198
  "en-US": {
207
- [ScriptType.typename]: {
208
- "typename label": "Script"
209
- },
210
199
  [SCRIPT_PLUGIN]: {
211
200
  "plugin name": "Scripts",
212
201
  "object title placeholder": "New script",
@@ -254,7 +243,7 @@ var ScriptPlugin = () => {
254
243
  metadata: {
255
244
  records: {
256
245
  [ScriptType.typename]: {
257
- createObject: ScriptAction.CREATE,
246
+ createObject: (props) => createIntent(ScriptAction.Create, props),
258
247
  placeholder: [
259
248
  "object title placeholder",
260
249
  {
@@ -263,8 +252,8 @@ var ScriptPlugin = () => {
263
252
  ],
264
253
  icon: "ph--code--regular",
265
254
  // TODO(wittjosiah): Move out of metadata.
266
- loadReferences: (script) => loadObjectReferences(script, (script2) => [
267
- script2.source
255
+ loadReferences: async (script) => await RefArray.loadAll([
256
+ script.source
268
257
  ])
269
258
  }
270
259
  }
@@ -275,118 +264,57 @@ var ScriptPlugin = () => {
275
264
  ScriptType
276
265
  ],
277
266
  system: [
278
- FunctionType
267
+ FunctionType2
279
268
  ]
280
269
  },
281
- graph: {
282
- builder: (plugins) => {
283
- const client = resolvePlugin(plugins, parseClientPlugin)?.provides.client;
284
- const dispatch = resolvePlugin(plugins, parseIntentPlugin)?.provides.intent.dispatch;
285
- if (!client || !dispatch) {
286
- return [];
287
- }
288
- return createExtension({
289
- id: ScriptAction.CREATE,
290
- filter: (node) => isActionGroup(node) && node.id.startsWith(SpaceAction.ADD_OBJECT),
291
- actions: ({ node }) => {
292
- const id = node.id.split("/").at(-1);
293
- const [spaceId, objectId] = id?.split(":") ?? [];
294
- const space = client.spaces.get().find((space2) => space2.id === spaceId);
295
- const object = objectId && space?.db.getObjectById(objectId);
296
- const target = objectId ? object : space;
297
- if (!target) {
298
- return;
299
- }
300
- return [
301
- {
302
- id: `${SCRIPT_PLUGIN}/create/${node.id}`,
303
- data: async () => {
304
- await dispatch([
305
- {
306
- plugin: SCRIPT_PLUGIN,
307
- action: ScriptAction.CREATE
308
- },
309
- {
310
- action: SpaceAction.ADD_OBJECT,
311
- data: {
312
- target
313
- }
314
- },
315
- {
316
- action: NavigationAction.OPEN
317
- }
318
- ]);
319
- },
320
- properties: {
321
- label: [
322
- "create object label",
323
- {
324
- ns: SCRIPT_PLUGIN
325
- }
326
- ],
327
- icon: "ph--code--regular",
328
- testId: "scriptPlugin.createObject"
329
- }
330
- }
331
- ];
332
- }
333
- });
334
- }
335
- },
336
270
  surface: {
337
- component: ({ data, role }) => {
338
- switch (role) {
339
- case "settings": {
340
- return data.plugin === meta_default.id ? /* @__PURE__ */ React3.createElement(ScriptSettings, {
341
- settings: {}
342
- }) : null;
343
- }
344
- case "article": {
345
- if (data.object instanceof ScriptType) {
346
- return /* @__PURE__ */ React3.createElement(ScriptContainer, {
347
- script: data.object,
348
- env: compiler.environment
349
- });
350
- }
351
- break;
352
- }
353
- case "complementary--automation": {
354
- if (data.subject instanceof ScriptType) {
355
- return {
356
- node: /* @__PURE__ */ React3.createElement(AutomationPanel, {
357
- subject: data.subject
358
- }),
359
- disposition: "hoist"
360
- };
361
- }
362
- break;
363
- }
364
- case "complementary--settings": {
365
- if (data.subject instanceof ScriptType) {
366
- return /* @__PURE__ */ React3.createElement(ScriptSettingsPanel, {
367
- script: data.subject
368
- });
369
- }
370
- break;
371
- }
372
- }
373
- return null;
374
- }
271
+ definitions: () => [
272
+ createSurface({
273
+ id: `${SCRIPT_PLUGIN}/settings`,
274
+ role: "settings",
275
+ filter: (data) => data.subject === SCRIPT_PLUGIN,
276
+ component: () => /* @__PURE__ */ React3.createElement(ScriptSettings, {
277
+ settings: {}
278
+ })
279
+ }),
280
+ createSurface({
281
+ id: `${SCRIPT_PLUGIN}/article`,
282
+ role: "article",
283
+ filter: (data) => data.subject instanceof ScriptType,
284
+ component: ({ data }) => /* @__PURE__ */ React3.createElement(ScriptContainer, {
285
+ script: data.subject,
286
+ env: compiler.environment
287
+ })
288
+ }),
289
+ createSurface({
290
+ id: `${SCRIPT_PLUGIN}/automation`,
291
+ role: "complementary--automation",
292
+ disposition: "hoist",
293
+ filter: (data) => data.subject instanceof ScriptType,
294
+ component: ({ data }) => /* @__PURE__ */ React3.createElement(AutomationPanel, {
295
+ subject: data.subject
296
+ })
297
+ }),
298
+ createSurface({
299
+ id: `${SCRIPT_PLUGIN}/settings-panel`,
300
+ role: "complementary--settings",
301
+ filter: (data) => data.subject instanceof ScriptType,
302
+ component: ({ data }) => /* @__PURE__ */ React3.createElement(ScriptSettingsPanel, {
303
+ script: data.subject
304
+ })
305
+ })
306
+ ]
375
307
  },
376
308
  intent: {
377
- resolver: (intent) => {
378
- switch (intent.action) {
379
- case ScriptAction.CREATE: {
380
- return {
381
- data: create(ScriptType, {
382
- source: create(TextType, {
383
- content: templates[0].source
384
- })
385
- })
386
- };
387
- }
309
+ resolvers: () => createResolver(ScriptAction.Create, ({ name }) => ({
310
+ data: {
311
+ object: create(ScriptType, {
312
+ source: makeRef(create(TextType, {
313
+ content: templates[0].source
314
+ }))
315
+ })
388
316
  }
389
- }
317
+ }))
390
318
  }
391
319
  }
392
320
  };
@@ -398,13 +326,11 @@ export {
398
326
  AutomationPanel,
399
327
  Bundler,
400
328
  Compiler,
401
- FunctionType,
402
329
  ScriptAction,
403
330
  ScriptContainer,
404
331
  ScriptPlugin,
405
332
  ScriptSettings,
406
333
  ScriptSettingsPanel,
407
- ScriptType,
408
334
  src_default as default,
409
335
  initializeBundler
410
336
  };