@dxos/plugin-script 0.8.0 → 0.8.1-main.a06ad20
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.
- package/dist/lib/browser/{ScriptContainer-3RFMYKTV.mjs → ScriptContainer-P7SZ65VN.mjs} +12 -10
- package/dist/lib/browser/ScriptContainer-P7SZ65VN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-N46LE7FS.mjs → chunk-2H6QBQ5Q.mjs} +2 -2
- package/dist/lib/browser/{chunk-N46LE7FS.mjs.map → chunk-2H6QBQ5Q.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-PZPYF7M4.mjs → chunk-4FWN55UF.mjs} +1 -1
- package/dist/lib/browser/{chunk-PZPYF7M4.mjs.map → chunk-4FWN55UF.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-G2FYNDU4.mjs → chunk-6P4LZSOU.mjs} +74 -7
- package/dist/lib/browser/chunk-6P4LZSOU.mjs.map +7 -0
- package/dist/lib/browser/chunk-NJTRYUO3.mjs +467 -0
- package/dist/lib/browser/chunk-NJTRYUO3.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +11 -10
- package/dist/lib/browser/index.mjs.map +2 -2
- package/dist/lib/browser/{intent-resolver-D6FPY5ZA.mjs → intent-resolver-5BRHMSBN.mjs} +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-G4C2PZ2K.mjs → react-surface-ZLM32TTL.mjs} +5 -7
- package/dist/lib/browser/{react-surface-G4C2PZ2K.mjs.map → react-surface-ZLM32TTL.mjs.map} +1 -1
- package/dist/lib/browser/{settings-SZCDKHWO.mjs → settings-LRHZSUEJ.mjs} +2 -2
- package/dist/lib/browser/types.mjs +1 -1
- package/dist/lib/node/{ScriptContainer-G6FZU4AM.cjs → ScriptContainer-2LYA3N3F.cjs} +21 -18
- package/dist/lib/node/ScriptContainer-2LYA3N3F.cjs.map +7 -0
- package/dist/lib/node/{chunk-DJGLGRQV.cjs → chunk-3ICET6JB.cjs} +6 -6
- package/dist/lib/node/chunk-3ICET6JB.cjs.map +7 -0
- package/dist/lib/node/{chunk-ITAJ3WRW.cjs → chunk-I57SKIAA.cjs} +4 -4
- package/dist/lib/node/{chunk-ITAJ3WRW.cjs.map → chunk-I57SKIAA.cjs.map} +2 -2
- package/dist/lib/node/chunk-M2DJ5RXU.cjs +493 -0
- package/dist/lib/node/chunk-M2DJ5RXU.cjs.map +7 -0
- package/dist/lib/node/{chunk-XKYJYY3T.cjs → chunk-OSRFLW5T.cjs} +77 -11
- package/dist/lib/node/chunk-OSRFLW5T.cjs.map +7 -0
- package/dist/lib/node/index.cjs +16 -15
- package/dist/lib/node/index.cjs.map +2 -2
- package/dist/lib/node/{intent-resolver-NYJFPD5B.cjs → intent-resolver-L4WJAAV3.cjs} +8 -8
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-EGSE3FMN.cjs → react-surface-TQ4OKBUS.cjs} +13 -14
- package/dist/lib/node/{react-surface-EGSE3FMN.cjs.map → react-surface-TQ4OKBUS.cjs.map} +1 -1
- package/dist/lib/node/{settings-SZFSMSKM.cjs → settings-TR2CA4IH.cjs} +7 -7
- package/dist/lib/node/types.cjs +3 -3
- package/dist/lib/node/types.cjs.map +1 -1
- package/dist/lib/node-esm/{ScriptContainer-7FTCFIF3.mjs → ScriptContainer-OYGIGGMK.mjs} +12 -10
- package/dist/lib/node-esm/ScriptContainer-OYGIGGMK.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HZPDX247.mjs +468 -0
- package/dist/lib/node-esm/chunk-HZPDX247.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-YIWRJ25J.mjs → chunk-J5LF4LOZ.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-YIWRJ25J.mjs.map → chunk-J5LF4LOZ.mjs.map} +2 -2
- package/dist/lib/node-esm/{chunk-UNQFIERE.mjs → chunk-N52CCVF5.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-UNQFIERE.mjs.map → chunk-N52CCVF5.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-NRICF4KE.mjs → chunk-YDYGIELP.mjs} +74 -7
- package/dist/lib/node-esm/chunk-YDYGIELP.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +11 -10
- package/dist/lib/node-esm/index.mjs.map +2 -2
- package/dist/lib/node-esm/{intent-resolver-KLBHSMW4.mjs → intent-resolver-HFXJQI5Y.mjs} +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-7YSGHZQM.mjs → react-surface-3NCY6ISW.mjs} +5 -7
- package/dist/lib/node-esm/{react-surface-7YSGHZQM.mjs.map → react-surface-3NCY6ISW.mjs.map} +1 -1
- package/dist/lib/node-esm/{settings-GR4O2WHZ.mjs → settings-Q6B4K7LO.mjs} +2 -2
- package/dist/lib/node-esm/types.mjs +1 -1
- package/dist/types/src/components/DebugPanel/DebugPanel.d.ts +2 -1
- package/dist/types/src/components/DebugPanel/DebugPanel.d.ts.map +1 -1
- package/dist/types/src/components/FrameContainer/FrameContainer.d.ts +2 -1
- package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
- package/dist/types/src/components/LogsPanel/LogsPanel.d.ts +8 -0
- package/dist/types/src/components/LogsPanel/LogsPanel.d.ts.map +1 -0
- package/dist/types/src/components/LogsPanel/index.d.ts +2 -0
- package/dist/types/src/components/LogsPanel/index.d.ts.map +1 -0
- package/dist/types/src/components/ScriptContainer.d.ts +2 -1
- package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
- package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts +2 -1
- package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts.map +1 -1
- package/dist/types/src/components/ScriptSettingsPanel.d.ts +2 -1
- package/dist/types/src/components/ScriptSettingsPanel.d.ts.map +1 -1
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +2 -1
- package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
- package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +2 -1
- package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +2 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/hooks/deploy.d.ts +23 -0
- package/dist/types/src/hooks/deploy.d.ts.map +1 -1
- package/dist/types/src/hooks/view.d.ts +1 -1
- package/dist/types/src/hooks/view.d.ts.map +1 -1
- package/dist/types/src/templates/index.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +3 -3
- package/dist/types/src/translations.d.ts.map +1 -1
- package/package.json +47 -43
- package/src/components/LogsPanel/LogsPanel.tsx +111 -0
- package/src/components/LogsPanel/index.ts +5 -0
- package/src/components/ScriptContainer.tsx +8 -4
- package/src/components/index.ts +1 -0
- package/src/hooks/deploy.ts +3 -3
- package/src/hooks/view.ts +2 -5
- package/src/templates/index.ts +0 -7
- package/src/translations.ts +1 -3
- package/src/types.ts +1 -1
- package/src/vite-env.d.ts +20 -0
- package/dist/lib/browser/ScriptContainer-3RFMYKTV.mjs.map +0 -7
- package/dist/lib/browser/chunk-5SXOHNAK.mjs +0 -240
- package/dist/lib/browser/chunk-5SXOHNAK.mjs.map +0 -7
- package/dist/lib/browser/chunk-G2FYNDU4.mjs.map +0 -7
- package/dist/lib/browser/chunk-VTWBVFBK.mjs +0 -234
- package/dist/lib/browser/chunk-VTWBVFBK.mjs.map +0 -7
- package/dist/lib/node/ScriptContainer-G6FZU4AM.cjs.map +0 -7
- package/dist/lib/node/chunk-DJGLGRQV.cjs.map +0 -7
- package/dist/lib/node/chunk-K3ZZWVXS.cjs +0 -269
- package/dist/lib/node/chunk-K3ZZWVXS.cjs.map +0 -7
- package/dist/lib/node/chunk-TOXBGIEI.cjs +0 -261
- package/dist/lib/node/chunk-TOXBGIEI.cjs.map +0 -7
- package/dist/lib/node/chunk-XKYJYY3T.cjs.map +0 -7
- package/dist/lib/node-esm/ScriptContainer-7FTCFIF3.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2AFXX34U.mjs +0 -241
- package/dist/lib/node-esm/chunk-2AFXX34U.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NRICF4KE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-S64WSJQK.mjs +0 -235
- package/dist/lib/node-esm/chunk-S64WSJQK.mjs.map +0 -7
- /package/dist/lib/browser/{intent-resolver-D6FPY5ZA.mjs.map → intent-resolver-5BRHMSBN.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-SZCDKHWO.mjs.map → settings-LRHZSUEJ.mjs.map} +0 -0
- /package/dist/lib/node/{intent-resolver-NYJFPD5B.cjs.map → intent-resolver-L4WJAAV3.cjs.map} +0 -0
- /package/dist/lib/node/{settings-SZFSMSKM.cjs.map → settings-TR2CA4IH.cjs.map} +0 -0
- /package/dist/lib/node-esm/{intent-resolver-KLBHSMW4.mjs.map → intent-resolver-HFXJQI5Y.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-GR4O2WHZ.mjs.map → settings-Q6B4K7LO.mjs.map} +0 -0
|
@@ -34,6 +34,29 @@ export declare const createDeploy: (state: Partial<DeployState>) => {
|
|
|
34
34
|
target: string;
|
|
35
35
|
}[];
|
|
36
36
|
};
|
|
37
|
+
export declare const useDeployDeps: ({ script }: {
|
|
38
|
+
script: ScriptType;
|
|
39
|
+
}) => {
|
|
40
|
+
space: import("@dxos/client-protocol").Space | undefined;
|
|
41
|
+
fn: import("@dxos/echo-schema").TypedObjectFields<{
|
|
42
|
+
name: typeof import("effect/Schema").NonEmptyString;
|
|
43
|
+
version: typeof import("effect/Schema").String;
|
|
44
|
+
description: import("effect/Schema").optional<typeof import("effect/Schema").String>;
|
|
45
|
+
source: import("effect/Schema").optional<import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").TypedObjectFields<{
|
|
46
|
+
name: import("effect/Schema").optional<typeof import("effect/Schema").String>;
|
|
47
|
+
description: import("effect/Schema").optional<typeof import("effect/Schema").String>;
|
|
48
|
+
changed: import("effect/Schema").optional<typeof import("effect/Schema").Boolean>;
|
|
49
|
+
source: import("@dxos/echo-schema").Ref$<import("@dxos/echo-schema").TypedObjectFields<{
|
|
50
|
+
content: typeof import("effect/Schema").String;
|
|
51
|
+
}, import("@dxos/echo-schema").TypedObjectOptions>>;
|
|
52
|
+
}, import("@dxos/echo-schema").TypedObjectOptions>>>;
|
|
53
|
+
inputSchema: import("effect/Schema").optional<import("effect/Schema").Schema<import("@dxos/echo-schema").JsonSchemaType, import("@dxos/echo-schema").JsonSchemaType, never>>;
|
|
54
|
+
outputSchema: import("effect/Schema").optional<import("effect/Schema").Schema<import("@dxos/echo-schema").JsonSchemaType, import("@dxos/echo-schema").JsonSchemaType, never>>;
|
|
55
|
+
binding: import("effect/Schema").optional<typeof import("effect/Schema").String>;
|
|
56
|
+
}, import("@dxos/echo-schema").TypedObjectOptions>;
|
|
57
|
+
client: import("@dxos/client").Client;
|
|
58
|
+
existingFunctionUrl: string | undefined;
|
|
59
|
+
};
|
|
37
60
|
export declare const useDeployState: ({ state, script }: {
|
|
38
61
|
state: Partial<DeployState>;
|
|
39
62
|
script: ScriptType;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../../src/hooks/deploy.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,UAAU,EAMhB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGxC,MAAM,MAAM,sBAAsB,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,OAAO,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;CA8BvD,CAAC;
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../../src/hooks/deploy.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,KAAK,UAAU,EAMhB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGxC,MAAM,MAAM,sBAAsB,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,eAAO,MAAM,YAAY,UAAW,OAAO,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;CA8BvD,CAAC;AAEF,eAAO,MAAM,aAAa,eAAgB;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE;;;;;;wDAzBO,mBACzD,cACN,mBAAmB;;;;2BAGtB,mBAAmB,cAAc,mBAAmB;;sBAGQ,mBACrD;kBACqB,mBAAkB;;;;;;;CAqBlD,CAAC;AAEF,eAAO,MAAM,cAAc,sBAAuB;IAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,SAepG,CAAC;AAEF,eAAO,MAAM,gBAAgB,sBAAuB;IAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,wBAqEtG,CAAC;AAEF,eAAO,MAAM,cAAc,cAAe;IAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAA;CAAE,wBAMhD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../../src/hooks/view.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../../src/hooks/view.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAEnD,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAE3C,MAAM,MAAM,oBAAoB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AA6BrE,eAAO,MAAM,UAAU,UAAW,OAAO,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAUnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/templates/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/templates/index.ts"],"names":[],"mappings":"AAcA,MAAM,MAAM,QAAQ,GAAG;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,QAAQ,EAwC/B,CAAC"}
|
|
@@ -37,7 +37,7 @@ declare const _default: {
|
|
|
37
37
|
'view group label'?: undefined;
|
|
38
38
|
'view editor label'?: undefined;
|
|
39
39
|
'view split label'?: undefined;
|
|
40
|
-
'view
|
|
40
|
+
'view logs label'?: undefined;
|
|
41
41
|
'template select group label'?: undefined;
|
|
42
42
|
'function panel label'?: undefined;
|
|
43
43
|
} | {
|
|
@@ -76,7 +76,7 @@ declare const _default: {
|
|
|
76
76
|
'view group label': string;
|
|
77
77
|
'view editor label': string;
|
|
78
78
|
'view split label': string;
|
|
79
|
-
'view
|
|
79
|
+
'view logs label': string;
|
|
80
80
|
'template select group label': string;
|
|
81
81
|
'function panel label': string;
|
|
82
82
|
'typename label'?: undefined;
|
|
@@ -117,7 +117,7 @@ declare const _default: {
|
|
|
117
117
|
'view group label': string;
|
|
118
118
|
'view editor label': string;
|
|
119
119
|
'view split label': string;
|
|
120
|
-
'view
|
|
120
|
+
'view logs label': string;
|
|
121
121
|
'template select group label': string;
|
|
122
122
|
'function panel label': string;
|
|
123
123
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,
|
|
1
|
+
{"version":3,"file":"translations.d.ts","sourceRoot":"","sources":["../../../src/translations.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,wBAgDE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/plugin-script",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.1-main.a06ad20",
|
|
4
4
|
"description": "Braneframe notebook plugin",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -40,7 +40,6 @@
|
|
|
40
40
|
"@codemirror/state": "^6.4.1",
|
|
41
41
|
"@codemirror/theme-one-dark": "^6.1.2",
|
|
42
42
|
"@codemirror/view": "^6.34.1",
|
|
43
|
-
"@effect/schema": "^0.75.5",
|
|
44
43
|
"@lezer/common": "^1.2.2",
|
|
45
44
|
"@lezer/highlight": "^1.2.1",
|
|
46
45
|
"@octokit/core": "^4.0.4",
|
|
@@ -54,61 +53,66 @@
|
|
|
54
53
|
"prettier": "^3.2.4",
|
|
55
54
|
"react-syntax-highlighter": "^15.5.0",
|
|
56
55
|
"typescript": "^5.7.2",
|
|
57
|
-
"@dxos/app-framework": "0.8.
|
|
58
|
-
"@dxos/
|
|
59
|
-
"@dxos/
|
|
60
|
-
"@dxos/client": "0.8.
|
|
61
|
-
"@dxos/
|
|
62
|
-
"@dxos/client-protocol": "0.8.
|
|
63
|
-
"@dxos/
|
|
64
|
-
"@dxos/
|
|
65
|
-
"@dxos/echo-schema": "0.8.
|
|
66
|
-
"@dxos/functions": "0.8.
|
|
67
|
-
"@dxos/invariant": "0.8.
|
|
68
|
-
"@dxos/
|
|
69
|
-
"@dxos/
|
|
70
|
-
"@dxos/
|
|
71
|
-
"@dxos/log": "0.8.
|
|
72
|
-
"@dxos/
|
|
73
|
-
"@dxos/
|
|
74
|
-
"@dxos/plugin-
|
|
75
|
-
"@dxos/plugin-explorer": "0.8.
|
|
76
|
-
"@dxos/plugin-
|
|
77
|
-
"@dxos/plugin-
|
|
78
|
-
"@dxos/plugin-
|
|
79
|
-
"@dxos/plugin-
|
|
80
|
-
"@dxos/
|
|
81
|
-
"@dxos/
|
|
82
|
-
"@dxos/react-ui-attention": "0.8.
|
|
83
|
-
"@dxos/
|
|
84
|
-
"@dxos/react-ui-
|
|
85
|
-
"@dxos/react-ui-
|
|
86
|
-
"@dxos/react-
|
|
87
|
-
"@dxos/react-ui-
|
|
88
|
-
"@dxos/
|
|
89
|
-
"@dxos/
|
|
90
|
-
"@dxos/
|
|
91
|
-
"@dxos/
|
|
56
|
+
"@dxos/app-framework": "0.8.1-main.a06ad20",
|
|
57
|
+
"@dxos/assistant": "0.8.1-main.a06ad20",
|
|
58
|
+
"@dxos/async": "0.8.1-main.a06ad20",
|
|
59
|
+
"@dxos/client": "0.8.1-main.a06ad20",
|
|
60
|
+
"@dxos/artifact": "0.8.1-main.a06ad20",
|
|
61
|
+
"@dxos/client-protocol": "0.8.1-main.a06ad20",
|
|
62
|
+
"@dxos/debug": "0.8.1-main.a06ad20",
|
|
63
|
+
"@dxos/compute": "0.8.1-main.a06ad20",
|
|
64
|
+
"@dxos/echo-schema": "0.8.1-main.a06ad20",
|
|
65
|
+
"@dxos/functions": "0.8.1-main.a06ad20",
|
|
66
|
+
"@dxos/invariant": "0.8.1-main.a06ad20",
|
|
67
|
+
"@dxos/echo-protocol": "0.8.1-main.a06ad20",
|
|
68
|
+
"@dxos/keys": "0.8.1-main.a06ad20",
|
|
69
|
+
"@dxos/live-object": "0.8.1-main.a06ad20",
|
|
70
|
+
"@dxos/log": "0.8.1-main.a06ad20",
|
|
71
|
+
"@dxos/local-storage": "0.8.1-main.a06ad20",
|
|
72
|
+
"@dxos/plugin-client": "0.8.1-main.a06ad20",
|
|
73
|
+
"@dxos/plugin-deck": "0.8.1-main.a06ad20",
|
|
74
|
+
"@dxos/plugin-explorer": "0.8.1-main.a06ad20",
|
|
75
|
+
"@dxos/plugin-graph": "0.8.1-main.a06ad20",
|
|
76
|
+
"@dxos/plugin-markdown": "0.8.1-main.a06ad20",
|
|
77
|
+
"@dxos/plugin-space": "0.8.1-main.a06ad20",
|
|
78
|
+
"@dxos/plugin-stack": "0.8.1-main.a06ad20",
|
|
79
|
+
"@dxos/react-client": "0.8.1-main.a06ad20",
|
|
80
|
+
"@dxos/plugin-theme": "0.8.1-main.a06ad20",
|
|
81
|
+
"@dxos/react-ui-attention": "0.8.1-main.a06ad20",
|
|
82
|
+
"@dxos/protocols": "0.8.1-main.a06ad20",
|
|
83
|
+
"@dxos/react-ui-list": "0.8.1-main.a06ad20",
|
|
84
|
+
"@dxos/react-ui-editor": "0.8.1-main.a06ad20",
|
|
85
|
+
"@dxos/react-edge-client": "0.8.1-main.a06ad20",
|
|
86
|
+
"@dxos/react-ui-form": "0.8.1-main.a06ad20",
|
|
87
|
+
"@dxos/react-ui-menu": "0.8.1-main.a06ad20",
|
|
88
|
+
"@dxos/react-ui-stack": "0.8.1-main.a06ad20",
|
|
89
|
+
"@dxos/react-ui-syntax-highlighter": "0.8.1-main.a06ad20",
|
|
90
|
+
"@dxos/rpc": "0.8.1-main.a06ad20",
|
|
91
|
+
"@dxos/rpc-tunnel": "0.8.1-main.a06ad20",
|
|
92
|
+
"@dxos/schema": "0.8.1-main.a06ad20",
|
|
93
|
+
"@dxos/util": "0.8.1-main.a06ad20"
|
|
92
94
|
},
|
|
93
95
|
"devDependencies": {
|
|
94
96
|
"@phosphor-icons/react": "^2.1.5",
|
|
95
97
|
"@types/lodash.get": "^4.4.7",
|
|
96
98
|
"@types/react": "~18.2.0",
|
|
97
99
|
"@types/react-dom": "~18.2.0",
|
|
100
|
+
"effect": "3.13.3",
|
|
98
101
|
"react": "~18.2.0",
|
|
99
102
|
"react-dom": "~18.2.0",
|
|
100
103
|
"vite": "5.4.7",
|
|
101
|
-
"@dxos/random": "0.8.
|
|
102
|
-
"@dxos/react-ui": "0.8.
|
|
103
|
-
"@dxos/
|
|
104
|
-
"@dxos/
|
|
104
|
+
"@dxos/random": "0.8.1-main.a06ad20",
|
|
105
|
+
"@dxos/react-ui-theme": "0.8.1-main.a06ad20",
|
|
106
|
+
"@dxos/storybook-utils": "0.8.1-main.a06ad20",
|
|
107
|
+
"@dxos/react-ui": "0.8.1-main.a06ad20"
|
|
105
108
|
},
|
|
106
109
|
"peerDependencies": {
|
|
107
110
|
"@phosphor-icons/react": "^2.1.5",
|
|
111
|
+
"effect": "3.13.3",
|
|
108
112
|
"react": "~18.2.0",
|
|
109
113
|
"react-dom": "~18.2.0",
|
|
110
|
-
"@dxos/react-ui": "0.8.
|
|
111
|
-
"@dxos/react-ui-theme": "0.8.
|
|
114
|
+
"@dxos/react-ui": "0.8.1-main.a06ad20",
|
|
115
|
+
"@dxos/react-ui-theme": "0.8.1-main.a06ad20"
|
|
112
116
|
},
|
|
113
117
|
"publishConfig": {
|
|
114
118
|
"access": "public"
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2024 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import React, { useCallback, useMemo, useState } from 'react';
|
|
6
|
+
|
|
7
|
+
import { decodeReference } from '@dxos/echo-protocol';
|
|
8
|
+
import { type TraceEvent, type InvocationTraceEvent, type ScriptType } from '@dxos/functions';
|
|
9
|
+
import { useEdgeClient, useQueue } from '@dxos/react-edge-client';
|
|
10
|
+
import { Icon, List, ListItem, useTranslation, type ThemedClassName } from '@dxos/react-ui';
|
|
11
|
+
import { mx } from '@dxos/react-ui-theme';
|
|
12
|
+
|
|
13
|
+
import { useDeployDeps } from '../../hooks';
|
|
14
|
+
import { SCRIPT_PLUGIN } from '../../meta';
|
|
15
|
+
|
|
16
|
+
export type LogsPanelProps = ThemedClassName<{
|
|
17
|
+
script: ScriptType;
|
|
18
|
+
}>;
|
|
19
|
+
|
|
20
|
+
export const LogsPanel = ({ script, classNames }: LogsPanelProps) => {
|
|
21
|
+
const { t } = useTranslation(SCRIPT_PLUGIN);
|
|
22
|
+
// TODO(wittjosiah): Refactor these hooks.
|
|
23
|
+
const { space, existingFunctionUrl } = useDeployDeps({ script });
|
|
24
|
+
const edgeClient = useEdgeClient();
|
|
25
|
+
const invocationTraceQueue = useQueue<InvocationTraceEvent>(edgeClient, space?.properties.invocationTraceQueue?.dxn, {
|
|
26
|
+
pollInterval: 500,
|
|
27
|
+
});
|
|
28
|
+
const [selected, setSelected] = useState<InvocationTraceEvent>();
|
|
29
|
+
const workerDxn = `dxn:worker:${existingFunctionUrl?.split('/').at(-1)}`;
|
|
30
|
+
|
|
31
|
+
if (!invocationTraceQueue) {
|
|
32
|
+
return <div>{t('no invocations message')}</div>;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const handleOpenChange = useCallback((trace: InvocationTraceEvent, open: boolean) => {
|
|
36
|
+
setSelected(open ? trace : undefined);
|
|
37
|
+
}, []);
|
|
38
|
+
|
|
39
|
+
return (
|
|
40
|
+
<List classNames={mx('overflow-y-auto', classNames)}>
|
|
41
|
+
{invocationTraceQueue.items
|
|
42
|
+
.filter((trace) => decodeReference(trace.invocationTarget).dxn?.toString() === workerDxn)
|
|
43
|
+
.map((trace) => (
|
|
44
|
+
<InvocationTraceItem
|
|
45
|
+
key={trace.id}
|
|
46
|
+
trace={trace}
|
|
47
|
+
open={selected?.id === trace.id}
|
|
48
|
+
setOpen={handleOpenChange}
|
|
49
|
+
/>
|
|
50
|
+
))}
|
|
51
|
+
</List>
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const InvocationTraceItem = ({
|
|
56
|
+
trace,
|
|
57
|
+
open,
|
|
58
|
+
setOpen,
|
|
59
|
+
}: {
|
|
60
|
+
trace: InvocationTraceEvent;
|
|
61
|
+
open?: boolean;
|
|
62
|
+
setOpen?: (trace: InvocationTraceEvent, open: boolean) => void;
|
|
63
|
+
}) => {
|
|
64
|
+
const edgeClient = useEdgeClient();
|
|
65
|
+
const eventQueue = useQueue<TraceEvent>(
|
|
66
|
+
edgeClient,
|
|
67
|
+
open ? decodeReference(trace.invocationTraceQueue).dxn : undefined,
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
const handleOpenChange = useCallback(
|
|
71
|
+
(open: boolean) => {
|
|
72
|
+
setOpen?.(trace, open);
|
|
73
|
+
},
|
|
74
|
+
[trace, setOpen],
|
|
75
|
+
);
|
|
76
|
+
|
|
77
|
+
const logs = useMemo(() => eventQueue?.items.flatMap((event) => event.logs), [eventQueue?.items]);
|
|
78
|
+
const heading =
|
|
79
|
+
'bodyText' in trace.input && typeof trace.input.bodyText === 'string'
|
|
80
|
+
? trace.input.bodyText
|
|
81
|
+
: JSON.stringify(trace.input);
|
|
82
|
+
|
|
83
|
+
return (
|
|
84
|
+
<ListItem.Root key={trace.id} collapsible open={open} onOpenChange={handleOpenChange}>
|
|
85
|
+
<div className='flex items-center gap-2'>
|
|
86
|
+
<ListItem.OpenTrigger />
|
|
87
|
+
<ListItem.Endcap classNames='flex items-center justify-center'>
|
|
88
|
+
<Icon icon={trace.outcome === 'success' ? 'ph--check--regular' : 'ph--x--regular'} size={5} />
|
|
89
|
+
</ListItem.Endcap>
|
|
90
|
+
<ListItem.Heading classNames='flex-1 flex items-center gap-2 truncate'>
|
|
91
|
+
<span>{new Date(trace.timestampMs).toLocaleString()}</span>
|
|
92
|
+
<span>{heading}</span>
|
|
93
|
+
</ListItem.Heading>
|
|
94
|
+
</div>
|
|
95
|
+
{logs && (
|
|
96
|
+
<ListItem.CollapsibleContent>
|
|
97
|
+
<div className='flex items-center gap-2'>
|
|
98
|
+
<span>Duration:</span>
|
|
99
|
+
<span>{trace.durationMs}ms</span>
|
|
100
|
+
</div>
|
|
101
|
+
<pre>
|
|
102
|
+
<div>{JSON.stringify(trace.input, null, 2)}</div>
|
|
103
|
+
{logs.map((log, index) => {
|
|
104
|
+
return <div key={index}>{JSON.stringify(log, null, 2)}</div>;
|
|
105
|
+
})}
|
|
106
|
+
</pre>
|
|
107
|
+
</ListItem.CollapsibleContent>
|
|
108
|
+
)}
|
|
109
|
+
</ListItem.Root>
|
|
110
|
+
);
|
|
111
|
+
};
|
|
@@ -12,7 +12,7 @@ import { createDataExtensions, listener, stackItemContentEditorClassNames } from
|
|
|
12
12
|
import { StackItem } from '@dxos/react-ui-stack';
|
|
13
13
|
import { mx } from '@dxos/react-ui-theme';
|
|
14
14
|
|
|
15
|
-
import {
|
|
15
|
+
import { LogsPanel } from './LogsPanel';
|
|
16
16
|
import { ScriptToolbar } from './ScriptToolbar';
|
|
17
17
|
import { TypescriptEditor, type TypescriptEditorProps } from './TypescriptEditor';
|
|
18
18
|
import { useDeployState, useToolbarState } from '../hooks';
|
|
@@ -57,23 +57,27 @@ export const ScriptContainer = ({
|
|
|
57
57
|
const state = useToolbarState({ view: 'editor' });
|
|
58
58
|
useDeployState({ state, script });
|
|
59
59
|
|
|
60
|
+
if (!space) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
|
|
60
64
|
return (
|
|
61
65
|
<StackItem.Content toolbar>
|
|
62
66
|
<ScriptToolbar state={state} role={role} script={script} />
|
|
63
67
|
<div role='none' className={mx('flex flex-col w-full overflow-hidden divide-y divide-separator', classNames)}>
|
|
64
|
-
{state.view !== '
|
|
68
|
+
{state.view !== 'logs' && (
|
|
65
69
|
<TypescriptEditor
|
|
66
70
|
id={script.id}
|
|
67
71
|
env={env}
|
|
68
72
|
initialValue={script.source?.target?.content}
|
|
69
73
|
extensions={extensions}
|
|
70
|
-
className={stackItemContentEditorClassNames(role)}
|
|
74
|
+
className={mx(stackItemContentEditorClassNames(role), 'grow')}
|
|
71
75
|
inputMode={settings.editorInputMode}
|
|
72
76
|
toolbar
|
|
73
77
|
/>
|
|
74
78
|
)}
|
|
75
79
|
|
|
76
|
-
{state.view !== 'editor' && <
|
|
80
|
+
{state.view !== 'editor' && <LogsPanel script={script} classNames='grow' />}
|
|
77
81
|
</div>
|
|
78
82
|
</StackItem.Content>
|
|
79
83
|
);
|
package/src/components/index.ts
CHANGED
package/src/hooks/deploy.ts
CHANGED
|
@@ -64,7 +64,7 @@ export const createDeploy = (state: Partial<DeployState>) => {
|
|
|
64
64
|
};
|
|
65
65
|
};
|
|
66
66
|
|
|
67
|
-
const useDeployDeps = ({
|
|
67
|
+
export const useDeployDeps = ({ script }: { script: ScriptType }) => {
|
|
68
68
|
const space = getSpace(script);
|
|
69
69
|
const [fn] = useQuery(space, Filter.schema(FunctionType, { source: script }));
|
|
70
70
|
const client = useClient();
|
|
@@ -73,7 +73,7 @@ const useDeployDeps = ({ state, script }: { state: Partial<DeployState>; script:
|
|
|
73
73
|
};
|
|
74
74
|
|
|
75
75
|
export const useDeployState = ({ state, script }: { state: Partial<DeployState>; script: ScriptType }) => {
|
|
76
|
-
const { space, client, existingFunctionUrl } = useDeployDeps({
|
|
76
|
+
const { space, client, existingFunctionUrl } = useDeployDeps({ script });
|
|
77
77
|
useEffect(() => {
|
|
78
78
|
if (!existingFunctionUrl) {
|
|
79
79
|
return;
|
|
@@ -90,7 +90,7 @@ export const useDeployState = ({ state, script }: { state: Partial<DeployState>;
|
|
|
90
90
|
};
|
|
91
91
|
|
|
92
92
|
export const useDeployHandler = ({ state, script }: { state: Partial<DeployState>; script: ScriptType }) => {
|
|
93
|
-
const { space, fn, client, existingFunctionUrl } = useDeployDeps({
|
|
93
|
+
const { space, fn, client, existingFunctionUrl } = useDeployDeps({ script });
|
|
94
94
|
const { t } = useTranslation(SCRIPT_PLUGIN);
|
|
95
95
|
|
|
96
96
|
return useCallback(async () => {
|
package/src/hooks/view.ts
CHANGED
|
@@ -6,8 +6,7 @@ import { createMenuAction, createMenuItemGroup } from '@dxos/react-ui-menu';
|
|
|
6
6
|
|
|
7
7
|
import { SCRIPT_PLUGIN } from '../meta';
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
export type ViewType = 'editor' | 'split' | 'debug'; // 'logs';
|
|
9
|
+
export type ViewType = 'editor' | 'split' | 'logs';
|
|
11
10
|
|
|
12
11
|
export type ViewState = { view: ViewType };
|
|
13
12
|
|
|
@@ -16,9 +15,7 @@ export type ViewActionProperties = { type: 'view'; value: ViewType };
|
|
|
16
15
|
const views: Record<ViewType, string> = {
|
|
17
16
|
editor: 'ph--code--regular',
|
|
18
17
|
split: 'ph--square-split-vertical--regular',
|
|
19
|
-
|
|
20
|
-
// TODO(wittjosiah): Replace debug with logs.
|
|
21
|
-
// logs: 'ph--clock-counter-clockwise--regular',
|
|
18
|
+
logs: 'ph--clock-counter-clockwise--regular',
|
|
22
19
|
};
|
|
23
20
|
|
|
24
21
|
const createViewGroupItem = (state: Partial<ViewState>) => {
|
package/src/templates/index.ts
CHANGED
|
@@ -2,19 +2,12 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
// @ts-ignore
|
|
6
5
|
import chat from './chat.ts?raw';
|
|
7
|
-
// @ts-ignore
|
|
8
6
|
import chess from './chess.ts?raw';
|
|
9
|
-
// @ts-ignore
|
|
10
7
|
import discord from './discord.ts?raw';
|
|
11
|
-
// @ts-ignore
|
|
12
8
|
import echo from './echo.ts?raw';
|
|
13
|
-
// @ts-ignore
|
|
14
9
|
import email from './email.ts?raw';
|
|
15
|
-
// @ts-ignore
|
|
16
10
|
import forexEffect from './forex-effect.ts?raw';
|
|
17
|
-
// @ts-ignore
|
|
18
11
|
import forex from './forex.ts?raw';
|
|
19
12
|
|
|
20
13
|
const removeHeader = (str: string) => str.split('\n').slice(4).join('\n');
|
package/src/translations.ts
CHANGED
|
@@ -48,9 +48,7 @@ export default [
|
|
|
48
48
|
'view group label': 'View',
|
|
49
49
|
'view editor label': 'Editor',
|
|
50
50
|
'view split label': 'Split',
|
|
51
|
-
'view
|
|
52
|
-
// TODO(wittjosiah): Replace debug with logs.
|
|
53
|
-
// 'view logs label': 'Logs',
|
|
51
|
+
'view logs label': 'Logs',
|
|
54
52
|
'template select group label': 'Select template',
|
|
55
53
|
'function panel label': 'Debug Function',
|
|
56
54
|
},
|
package/src/types.ts
CHANGED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/// <reference types="vite/client" />
|
|
2
|
+
|
|
3
|
+
//
|
|
4
|
+
// Copyright 2025 DXOS.org
|
|
5
|
+
//
|
|
6
|
+
|
|
7
|
+
declare module '*.txt?raw' {
|
|
8
|
+
const content: string;
|
|
9
|
+
export default content;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
declare module '*.md?raw' {
|
|
13
|
+
const content: string;
|
|
14
|
+
export default content;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
declare module '*?raw' {
|
|
18
|
+
const content: string;
|
|
19
|
+
export default content;
|
|
20
|
+
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/components/ScriptContainer.tsx", "../../../src/components/ScriptToolbar/ScriptToolbar.tsx", "../../../src/components/TypescriptEditor/TypescriptEditor.tsx"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useMemo } from 'react';\n\nimport { type ScriptType } from '@dxos/functions';\nimport { createDocAccessor, getSpace } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { createDataExtensions, listener, stackItemContentEditorClassNames } from '@dxos/react-ui-editor';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { DebugPanel } from './DebugPanel';\nimport { ScriptToolbar } from './ScriptToolbar';\nimport { TypescriptEditor, type TypescriptEditorProps } from './TypescriptEditor';\nimport { useDeployState, useToolbarState } from '../hooks';\nimport { type ScriptSettingsProps } from '../types';\n\nexport type ScriptEditorProps = ThemedClassName<{\n script: ScriptType;\n settings?: ScriptSettingsProps;\n role?: string;\n}> &\n Pick<TypescriptEditorProps, 'env'>;\n\nexport const ScriptContainer = ({\n role,\n classNames,\n script,\n settings = { editorInputMode: 'vscode' },\n env,\n}: ScriptEditorProps) => {\n const identity = useIdentity();\n const space = getSpace(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 state = useToolbarState({ view: 'editor' });\n useDeployState({ state, script });\n\n return (\n <StackItem.Content toolbar>\n <ScriptToolbar state={state} role={role} script={script} />\n <div role='none' className={mx('flex flex-col w-full overflow-hidden divide-y divide-separator', classNames)}>\n {state.view !== 'debug' && (\n <TypescriptEditor\n id={script.id}\n env={env}\n initialValue={script.source?.target?.content}\n extensions={extensions}\n className={stackItemContentEditorClassNames(role)}\n inputMode={settings.editorInputMode}\n toolbar\n />\n )}\n\n {state.view !== 'editor' && <DebugPanel functionUrl={state.functionUrl} />}\n </div>\n </StackItem.Content>\n );\n};\n\nexport default ScriptContainer;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback } from 'react';\n\nimport { type ScriptType } from '@dxos/functions';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { ElevationProvider, type ThemedClassName } from '@dxos/react-ui';\nimport { stackItemContentToolbarClassNames } from '@dxos/react-ui-editor';\nimport { createGapSeparator, MenuProvider, ToolbarMenu, useMenuActions } from '@dxos/react-ui-menu';\n\nimport {\n type ScriptToolbarState,\n createDeploy,\n createFormat,\n createTemplateSelect,\n createView,\n useToolbarAction,\n} from '../../hooks';\n\nexport type ScriptToolbarProps = ThemedClassName<{\n role?: string;\n script: ScriptType;\n state: ScriptToolbarState;\n}>;\n\nconst createToolbar = (state: ScriptToolbarState) => {\n const templateSelect = createTemplateSelect();\n const format = createFormat();\n const gap = createGapSeparator();\n const deploy = createDeploy(state);\n const view = createView(state);\n return {\n nodes: [...templateSelect.nodes, ...format.nodes, ...gap.nodes, ...deploy.nodes, ...view.nodes],\n edges: [...templateSelect.edges, ...format.edges, ...gap.edges, ...deploy.edges, ...view.edges],\n };\n};\n\nexport const ScriptToolbar = ({ script, role, state, classNames }: ScriptToolbarProps) => {\n const handleAction = useToolbarAction({ state, script });\n const toolbarCreator = useCallback(() => createToolbar(state), [state]);\n const menu = useMenuActions(toolbarCreator);\n return (\n <div role='none' className={stackItemContentToolbarClassNames(role)}>\n <ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>\n <MenuProvider {...menu} onAction={handleAction} attendableId={fullyQualifiedId(script)}>\n <ToolbarMenu classNames={classNames} />\n </MenuProvider>\n </ElevationProvider>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { javascript } from '@codemirror/lang-javascript';\nimport { defaultHighlightStyle } from '@codemirror/language';\nimport { Prec } from '@codemirror/state';\nimport { oneDarkHighlightStyle } from '@codemirror/theme-one-dark';\nimport { keymap } from '@codemirror/view';\nimport { tags } from '@lezer/highlight';\nimport { type VirtualTypeScriptEnvironment } from '@typescript/vfs';\nimport { continueKeymap } from '@valtown/codemirror-continue';\nimport { tsSync, tsFacet, tsLinter, tsAutocomplete, tsHover, type HoverInfo } from '@valtown/codemirror-ts';\nimport React from 'react';\n\nimport { type ThemeMode, useThemeContext } from '@dxos/react-ui';\nimport {\n autocomplete,\n createBasicExtensions,\n createThemeExtensions,\n editorFullWidth,\n type EditorInputMode,\n editorMonospace,\n EditorView,\n folding,\n InputModeExtensions,\n useTextEditor,\n type UseTextEditorProps,\n} from '@dxos/react-ui-editor';\nimport { isNonNullable } from '@dxos/util';\n\nexport type TypescriptEditorProps = {\n id: string;\n inputMode?: EditorInputMode;\n env?: VirtualTypeScriptEnvironment;\n toolbar?: boolean;\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 toolbar,\n inputMode = 'vscode',\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 // NOTE: Not using default editor gutter because folding for code works best right beside text.\n EditorView.theme({\n '.cm-gutters': {\n // Match margin from content.\n marginTop: '16px',\n },\n }),\n InputModeExtensions[inputMode],\n folding(),\n // Continues block comments when you hit Enter.\n Prec.high(keymap.of(continueKeymap)),\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\n ? [\n tsFacet.of({ env, path: `/src/${id}.ts` }),\n tsSync(),\n tsLinter(),\n tsHover({ renderTooltip: createTooltipRenderer(themeMode) }),\n ]\n : [],\n ],\n ].filter(isNonNullable),\n selection,\n scrollTo,\n }),\n [id, extensions, themeMode, inputMode, selection, scrollTo],\n );\n\n return (\n <div ref={parentRef} data-toolbar={toolbar ? 'enabled' : 'disabled'} className={className} {...focusAttributes} />\n );\n};\n\nconst createTooltipRenderer = (themeMode: ThemeMode) => {\n const theme = themeMode === 'dark' ? oneDarkHighlightStyle : defaultHighlightStyle;\n\n const classFromKind = (_kind: string) => {\n // E.g., localName, methodName, parameterName, etc.\n const kind = _kind.endsWith('Name') ? 'name' : _kind;\n const validTag = kind in tags;\n if (!validTag) {\n return '';\n }\n\n const tag = tags[kind as keyof typeof tags];\n if (typeof tag === 'function') {\n return '';\n }\n\n return theme.style([tag]) ?? '';\n };\n\n return (info: HoverInfo) => {\n const div = document.createElement('div');\n div.className = 'p-1 rounded border border-separator bg-baseSurface xs:max-w-80 max-w-lg';\n\n if (info.quickInfo?.displayParts) {\n for (const part of info.quickInfo.displayParts) {\n const span = div.appendChild(document.createElement('span'));\n span.className = classFromKind(part.kind);\n span.innerText = part.text;\n }\n }\n\n return { dom: div };\n };\n};\n\nexport default TypescriptEditor;\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "useMemo", "createDocAccessor", "getSpace", "useIdentity", "createDataExtensions", "listener", "stackItemContentEditorClassNames", "StackItem", "mx", "React", "useCallback", "fullyQualifiedId", "ElevationProvider", "stackItemContentToolbarClassNames", "createGapSeparator", "MenuProvider", "ToolbarMenu", "useMenuActions", "createToolbar", "state", "templateSelect", "createTemplateSelect", "format", "createFormat", "gap", "createGapSeparator", "deploy", "createDeploy", "view", "createView", "nodes", "edges", "ScriptToolbar", "script", "role", "classNames", "handleAction", "useToolbarAction", "toolbarCreator", "useCallback", "menu", "useMenuActions", "div", "className", "stackItemContentToolbarClassNames", "ElevationProvider", "elevation", "MenuProvider", "onAction", "attendableId", "fullyQualifiedId", "ToolbarMenu", "javascript", "defaultHighlightStyle", "Prec", "oneDarkHighlightStyle", "keymap", "tags", "continueKeymap", "tsSync", "tsFacet", "tsLinter", "tsAutocomplete", "tsHover", "React", "useThemeContext", "autocomplete", "createBasicExtensions", "createThemeExtensions", "editorFullWidth", "editorMonospace", "EditorView", "folding", "InputModeExtensions", "useTextEditor", "isNonNullable", "TypescriptEditor", "id", "env", "className", "initialValue", "extensions", "scrollTo", "selection", "toolbar", "inputMode", "themeMode", "useThemeContext", "parentRef", "focusAttributes", "useTextEditor", "createBasicExtensions", "highlightActiveLine", "indentWithTab", "lineNumbers", "lineWrapping", "scrollPastEnd", "createThemeExtensions", "syntaxHighlighting", "slots", "content", "editorFullWidth", "EditorView", "theme", "marginTop", "InputModeExtensions", "folding", "Prec", "high", "keymap", "of", "continueKeymap", "editorMonospace", "javascript", "typescript", "autocomplete", "override", "tsAutocomplete", "tsFacet", "path", "tsSync", "tsLinter", "tsHover", "renderTooltip", "createTooltipRenderer", "filter", "isNonNullable", "React", "div", "ref", "data-toolbar", "oneDarkHighlightStyle", "defaultHighlightStyle", "classFromKind", "_kind", "kind", "endsWith", "validTag", "tags", "tag", "style", "info", "document", "createElement", "quickInfo", "displayParts", "part", "span", "appendChild", "innerText", "text", "dom", "ScriptContainer", "role", "classNames", "script", "settings", "editorInputMode", "env", "identity", "useIdentity", "space", "getSpace", "extensions", "useMemo", "listener", "onChange", "text", "source", "target", "content", "changed", "createDataExtensions", "id", "createDocAccessor", "state", "useToolbarState", "view", "useDeployState", "React", "StackItem", "Content", "toolbar", "ScriptToolbar", "div", "className", "mx", "TypescriptEditor", "initialValue", "stackItemContentEditorClassNames", "inputMode", "DebugPanel", "functionUrl"]
|
|
7
|
-
}
|