@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.
Files changed (118) hide show
  1. package/dist/lib/browser/{ScriptContainer-3RFMYKTV.mjs → ScriptContainer-P7SZ65VN.mjs} +12 -10
  2. package/dist/lib/browser/ScriptContainer-P7SZ65VN.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-N46LE7FS.mjs → chunk-2H6QBQ5Q.mjs} +2 -2
  4. package/dist/lib/browser/{chunk-N46LE7FS.mjs.map → chunk-2H6QBQ5Q.mjs.map} +1 -1
  5. package/dist/lib/browser/{chunk-PZPYF7M4.mjs → chunk-4FWN55UF.mjs} +1 -1
  6. package/dist/lib/browser/{chunk-PZPYF7M4.mjs.map → chunk-4FWN55UF.mjs.map} +2 -2
  7. package/dist/lib/browser/{chunk-G2FYNDU4.mjs → chunk-6P4LZSOU.mjs} +74 -7
  8. package/dist/lib/browser/chunk-6P4LZSOU.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-NJTRYUO3.mjs +467 -0
  10. package/dist/lib/browser/chunk-NJTRYUO3.mjs.map +7 -0
  11. package/dist/lib/browser/index.mjs +11 -10
  12. package/dist/lib/browser/index.mjs.map +2 -2
  13. package/dist/lib/browser/{intent-resolver-D6FPY5ZA.mjs → intent-resolver-5BRHMSBN.mjs} +3 -3
  14. package/dist/lib/browser/meta.json +1 -1
  15. package/dist/lib/browser/{react-surface-G4C2PZ2K.mjs → react-surface-ZLM32TTL.mjs} +5 -7
  16. package/dist/lib/browser/{react-surface-G4C2PZ2K.mjs.map → react-surface-ZLM32TTL.mjs.map} +1 -1
  17. package/dist/lib/browser/{settings-SZCDKHWO.mjs → settings-LRHZSUEJ.mjs} +2 -2
  18. package/dist/lib/browser/types.mjs +1 -1
  19. package/dist/lib/node/{ScriptContainer-G6FZU4AM.cjs → ScriptContainer-2LYA3N3F.cjs} +21 -18
  20. package/dist/lib/node/ScriptContainer-2LYA3N3F.cjs.map +7 -0
  21. package/dist/lib/node/{chunk-DJGLGRQV.cjs → chunk-3ICET6JB.cjs} +6 -6
  22. package/dist/lib/node/chunk-3ICET6JB.cjs.map +7 -0
  23. package/dist/lib/node/{chunk-ITAJ3WRW.cjs → chunk-I57SKIAA.cjs} +4 -4
  24. package/dist/lib/node/{chunk-ITAJ3WRW.cjs.map → chunk-I57SKIAA.cjs.map} +2 -2
  25. package/dist/lib/node/chunk-M2DJ5RXU.cjs +493 -0
  26. package/dist/lib/node/chunk-M2DJ5RXU.cjs.map +7 -0
  27. package/dist/lib/node/{chunk-XKYJYY3T.cjs → chunk-OSRFLW5T.cjs} +77 -11
  28. package/dist/lib/node/chunk-OSRFLW5T.cjs.map +7 -0
  29. package/dist/lib/node/index.cjs +16 -15
  30. package/dist/lib/node/index.cjs.map +2 -2
  31. package/dist/lib/node/{intent-resolver-NYJFPD5B.cjs → intent-resolver-L4WJAAV3.cjs} +8 -8
  32. package/dist/lib/node/meta.json +1 -1
  33. package/dist/lib/node/{react-surface-EGSE3FMN.cjs → react-surface-TQ4OKBUS.cjs} +13 -14
  34. package/dist/lib/node/{react-surface-EGSE3FMN.cjs.map → react-surface-TQ4OKBUS.cjs.map} +1 -1
  35. package/dist/lib/node/{settings-SZFSMSKM.cjs → settings-TR2CA4IH.cjs} +7 -7
  36. package/dist/lib/node/types.cjs +3 -3
  37. package/dist/lib/node/types.cjs.map +1 -1
  38. package/dist/lib/node-esm/{ScriptContainer-7FTCFIF3.mjs → ScriptContainer-OYGIGGMK.mjs} +12 -10
  39. package/dist/lib/node-esm/ScriptContainer-OYGIGGMK.mjs.map +7 -0
  40. package/dist/lib/node-esm/chunk-HZPDX247.mjs +468 -0
  41. package/dist/lib/node-esm/chunk-HZPDX247.mjs.map +7 -0
  42. package/dist/lib/node-esm/{chunk-YIWRJ25J.mjs → chunk-J5LF4LOZ.mjs} +1 -1
  43. package/dist/lib/node-esm/{chunk-YIWRJ25J.mjs.map → chunk-J5LF4LOZ.mjs.map} +2 -2
  44. package/dist/lib/node-esm/{chunk-UNQFIERE.mjs → chunk-N52CCVF5.mjs} +2 -2
  45. package/dist/lib/node-esm/{chunk-UNQFIERE.mjs.map → chunk-N52CCVF5.mjs.map} +1 -1
  46. package/dist/lib/node-esm/{chunk-NRICF4KE.mjs → chunk-YDYGIELP.mjs} +74 -7
  47. package/dist/lib/node-esm/chunk-YDYGIELP.mjs.map +7 -0
  48. package/dist/lib/node-esm/index.mjs +11 -10
  49. package/dist/lib/node-esm/index.mjs.map +2 -2
  50. package/dist/lib/node-esm/{intent-resolver-KLBHSMW4.mjs → intent-resolver-HFXJQI5Y.mjs} +3 -3
  51. package/dist/lib/node-esm/meta.json +1 -1
  52. package/dist/lib/node-esm/{react-surface-7YSGHZQM.mjs → react-surface-3NCY6ISW.mjs} +5 -7
  53. package/dist/lib/node-esm/{react-surface-7YSGHZQM.mjs.map → react-surface-3NCY6ISW.mjs.map} +1 -1
  54. package/dist/lib/node-esm/{settings-GR4O2WHZ.mjs → settings-Q6B4K7LO.mjs} +2 -2
  55. package/dist/lib/node-esm/types.mjs +1 -1
  56. package/dist/types/src/components/DebugPanel/DebugPanel.d.ts +2 -1
  57. package/dist/types/src/components/DebugPanel/DebugPanel.d.ts.map +1 -1
  58. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts +2 -1
  59. package/dist/types/src/components/FrameContainer/FrameContainer.d.ts.map +1 -1
  60. package/dist/types/src/components/LogsPanel/LogsPanel.d.ts +8 -0
  61. package/dist/types/src/components/LogsPanel/LogsPanel.d.ts.map +1 -0
  62. package/dist/types/src/components/LogsPanel/index.d.ts +2 -0
  63. package/dist/types/src/components/LogsPanel/index.d.ts.map +1 -0
  64. package/dist/types/src/components/ScriptContainer.d.ts +2 -1
  65. package/dist/types/src/components/ScriptContainer.d.ts.map +1 -1
  66. package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts +2 -1
  67. package/dist/types/src/components/ScriptSettings/ScriptSettings.d.ts.map +1 -1
  68. package/dist/types/src/components/ScriptSettingsPanel.d.ts +2 -1
  69. package/dist/types/src/components/ScriptSettingsPanel.d.ts.map +1 -1
  70. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts +2 -1
  71. package/dist/types/src/components/ScriptToolbar/ScriptToolbar.d.ts.map +1 -1
  72. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts +2 -1
  73. package/dist/types/src/components/TypescriptEditor/TypescriptEditor.d.ts.map +1 -1
  74. package/dist/types/src/components/index.d.ts +2 -1
  75. package/dist/types/src/components/index.d.ts.map +1 -1
  76. package/dist/types/src/hooks/deploy.d.ts +23 -0
  77. package/dist/types/src/hooks/deploy.d.ts.map +1 -1
  78. package/dist/types/src/hooks/view.d.ts +1 -1
  79. package/dist/types/src/hooks/view.d.ts.map +1 -1
  80. package/dist/types/src/templates/index.d.ts.map +1 -1
  81. package/dist/types/src/translations.d.ts +3 -3
  82. package/dist/types/src/translations.d.ts.map +1 -1
  83. package/package.json +47 -43
  84. package/src/components/LogsPanel/LogsPanel.tsx +111 -0
  85. package/src/components/LogsPanel/index.ts +5 -0
  86. package/src/components/ScriptContainer.tsx +8 -4
  87. package/src/components/index.ts +1 -0
  88. package/src/hooks/deploy.ts +3 -3
  89. package/src/hooks/view.ts +2 -5
  90. package/src/templates/index.ts +0 -7
  91. package/src/translations.ts +1 -3
  92. package/src/types.ts +1 -1
  93. package/src/vite-env.d.ts +20 -0
  94. package/dist/lib/browser/ScriptContainer-3RFMYKTV.mjs.map +0 -7
  95. package/dist/lib/browser/chunk-5SXOHNAK.mjs +0 -240
  96. package/dist/lib/browser/chunk-5SXOHNAK.mjs.map +0 -7
  97. package/dist/lib/browser/chunk-G2FYNDU4.mjs.map +0 -7
  98. package/dist/lib/browser/chunk-VTWBVFBK.mjs +0 -234
  99. package/dist/lib/browser/chunk-VTWBVFBK.mjs.map +0 -7
  100. package/dist/lib/node/ScriptContainer-G6FZU4AM.cjs.map +0 -7
  101. package/dist/lib/node/chunk-DJGLGRQV.cjs.map +0 -7
  102. package/dist/lib/node/chunk-K3ZZWVXS.cjs +0 -269
  103. package/dist/lib/node/chunk-K3ZZWVXS.cjs.map +0 -7
  104. package/dist/lib/node/chunk-TOXBGIEI.cjs +0 -261
  105. package/dist/lib/node/chunk-TOXBGIEI.cjs.map +0 -7
  106. package/dist/lib/node/chunk-XKYJYY3T.cjs.map +0 -7
  107. package/dist/lib/node-esm/ScriptContainer-7FTCFIF3.mjs.map +0 -7
  108. package/dist/lib/node-esm/chunk-2AFXX34U.mjs +0 -241
  109. package/dist/lib/node-esm/chunk-2AFXX34U.mjs.map +0 -7
  110. package/dist/lib/node-esm/chunk-NRICF4KE.mjs.map +0 -7
  111. package/dist/lib/node-esm/chunk-S64WSJQK.mjs +0 -235
  112. package/dist/lib/node-esm/chunk-S64WSJQK.mjs.map +0 -7
  113. /package/dist/lib/browser/{intent-resolver-D6FPY5ZA.mjs.map → intent-resolver-5BRHMSBN.mjs.map} +0 -0
  114. /package/dist/lib/browser/{settings-SZCDKHWO.mjs.map → settings-LRHZSUEJ.mjs.map} +0 -0
  115. /package/dist/lib/node/{intent-resolver-NYJFPD5B.cjs.map → intent-resolver-L4WJAAV3.cjs.map} +0 -0
  116. /package/dist/lib/node/{settings-SZFSMSKM.cjs.map → settings-TR2CA4IH.cjs.map} +0 -0
  117. /package/dist/lib/node-esm/{intent-resolver-KLBHSMW4.mjs.map → intent-resolver-HFXJQI5Y.mjs.map} +0 -0
  118. /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;AAUF,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
+ {"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,4 +1,4 @@
1
- export type ViewType = 'editor' | 'split' | 'debug';
1
+ export type ViewType = 'editor' | 'split' | 'logs';
2
2
  export type ViewState = {
3
3
  view: ViewType;
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../../../src/hooks/view.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpD,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;AA+BrE,eAAO,MAAM,UAAU,UAAW,OAAO,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;CAUnD,CAAC"}
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":"AAqBA,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"}
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 debug label'?: undefined;
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 debug label': string;
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 debug label': string;
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,wBAkDE"}
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.0",
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.0",
58
- "@dxos/artifact": "0.8.0",
59
- "@dxos/assistant": "0.8.0",
60
- "@dxos/client": "0.8.0",
61
- "@dxos/async": "0.8.0",
62
- "@dxos/client-protocol": "0.8.0",
63
- "@dxos/compute": "0.8.0",
64
- "@dxos/debug": "0.8.0",
65
- "@dxos/echo-schema": "0.8.0",
66
- "@dxos/functions": "0.8.0",
67
- "@dxos/invariant": "0.8.0",
68
- "@dxos/live-object": "0.8.0",
69
- "@dxos/local-storage": "0.8.0",
70
- "@dxos/plugin-client": "0.8.0",
71
- "@dxos/log": "0.8.0",
72
- "@dxos/plugin-deck": "0.8.0",
73
- "@dxos/keys": "0.8.0",
74
- "@dxos/plugin-graph": "0.8.0",
75
- "@dxos/plugin-explorer": "0.8.0",
76
- "@dxos/plugin-markdown": "0.8.0",
77
- "@dxos/plugin-space": "0.8.0",
78
- "@dxos/plugin-stack": "0.8.0",
79
- "@dxos/plugin-theme": "0.8.0",
80
- "@dxos/protocols": "0.8.0",
81
- "@dxos/react-client": "0.8.0",
82
- "@dxos/react-ui-attention": "0.8.0",
83
- "@dxos/react-ui-editor": "0.8.0",
84
- "@dxos/react-ui-form": "0.8.0",
85
- "@dxos/react-ui-menu": "0.8.0",
86
- "@dxos/react-ui-stack": "0.8.0",
87
- "@dxos/react-ui-syntax-highlighter": "0.8.0",
88
- "@dxos/rpc": "0.8.0",
89
- "@dxos/rpc-tunnel": "0.8.0",
90
- "@dxos/schema": "0.8.0",
91
- "@dxos/util": "0.8.0"
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.0",
102
- "@dxos/react-ui": "0.8.0",
103
- "@dxos/react-ui-theme": "0.8.0",
104
- "@dxos/storybook-utils": "0.8.0"
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.0",
111
- "@dxos/react-ui-theme": "0.8.0"
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
+ };
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ export * from './LogsPanel';
@@ -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 { DebugPanel } from './DebugPanel';
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 !== 'debug' && (
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' && <DebugPanel functionUrl={state.functionUrl} />}
80
+ {state.view !== 'editor' && <LogsPanel script={script} classNames='grow' />}
77
81
  </div>
78
82
  </StackItem.Content>
79
83
  );
@@ -5,6 +5,7 @@
5
5
  import { lazy } from 'react';
6
6
 
7
7
  export * from './DebugPanel';
8
+ export * from './LogsPanel';
8
9
  export * from './ScriptSettings';
9
10
  export * from './ScriptSettingsPanel';
10
11
 
@@ -64,7 +64,7 @@ export const createDeploy = (state: Partial<DeployState>) => {
64
64
  };
65
65
  };
66
66
 
67
- const useDeployDeps = ({ state, script }: { state: Partial<DeployState>; script: ScriptType }) => {
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({ state, script });
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({ state, script });
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
- // TODO(wittjosiah): Replace debug with logs.
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
- debug: 'ph--bug--regular',
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>) => {
@@ -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');
@@ -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 debug label': 'Debug',
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
@@ -2,7 +2,7 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { TitleAnnotationId } from '@effect/schema/AST';
5
+ import { TitleAnnotationId } from 'effect/SchemaAST';
6
6
 
7
7
  import { SpaceSchema } from '@dxos/client/echo';
8
8
  import { S } from '@dxos/echo-schema';
@@ -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
- }