@eclipse-lyra/extension-notebook 0.7.40 → 0.7.42

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/index.js CHANGED
@@ -6,7 +6,7 @@ extensionRegistry.registerExtension({
6
6
  id: pkg.name,
7
7
  name: t.EXT_NOTEBOOK_NAME,
8
8
  description: t.EXT_NOTEBOOK_DESC,
9
- loader: () => import("./notebook-extension-DLfnTq-y.js"),
9
+ loader: () => import("./notebook-extension-Cr-EvTgt.js"),
10
10
  icon: "lyra jupyter",
11
11
  dependencies: []
12
12
  });
@@ -0,0 +1,2 @@
1
+ export declare function registerNotebookCatalog(): void;
2
+ //# sourceMappingURL=notebook-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-catalog.d.ts","sourceRoot":"","sources":["../src/notebook-catalog.ts"],"names":[],"mappings":"AAmCA,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
@@ -0,0 +1,160 @@
1
+ import { html } from "lit";
2
+ import { createJsRuntime, activeEditorSignal, File } from "@eclipse-lyra/core";
3
+ import { registerCatalog } from "@eclipse-lyra/extension-catalog/api";
4
+ import { T as TARGET_NOTEBOOK_KERNELS, i as isNotebookEditorLike } from "./notebook-kernel-api--RBL5TaE.js";
5
+ const NOTEBOOK_CATALOG = {
6
+ label: "Notebooks",
7
+ icon: "lyra jupyter",
8
+ contributionId: "catalog.notebooks",
9
+ items: [
10
+ {
11
+ label: "JavaScript",
12
+ icon: "file-code",
13
+ contributionId: "catalog.notebooks.javascript",
14
+ items: [
15
+ { label: "JavaScript basics", icon: "lyra jupyter", state: { url: new URL("data:application/octet-stream;base64,ewogICJjZWxscyI6IFsKICAgIHsKICAgICAgImNlbGxfdHlwZSI6ICJtYXJrZG93biIsCiAgICAgICJtZXRhZGF0YSI6IHt9LAogICAgICAic291cmNlIjogWwogICAgICAgICIjIEphdmFTY3JpcHQga2VybmVsXG4iLAogICAgICAgICJcbiIsCiAgICAgICAgIlJ1biBjb2RlIGNlbGxzIHdpdGggdGhlICoqSmF2YVNjcmlwdCoqIGtlcm5lbC4gRWFjaCBjZWxsIHJ1bnMgaW4gYSBzaGFyZWQgcnVudGltZS4iCiAgICAgIF0KICAgIH0sCiAgICB7CiAgICAgICJjZWxsX3R5cGUiOiAiY29kZSIsCiAgICAgICJleGVjdXRpb25fY291bnQiOiBudWxsLAogICAgICAibWV0YWRhdGEiOiB7fSwKICAgICAgIm91dHB1dHMiOiBbXSwKICAgICAgInNvdXJjZSI6IFsKICAgICAgICAiY29uc3QgeCA9IDEgKyAyO1xuIiwKICAgICAgICAicmV0dXJuIHg7IgogICAgICBdCiAgICB9LAogICAgewogICAgICAiY2VsbF90eXBlIjogImNvZGUiLAogICAgICAiZXhlY3V0aW9uX2NvdW50IjogbnVsbCwKICAgICAgIm1ldGFkYXRhIjoge30sCiAgICAgICJvdXRwdXRzIjogW10sCiAgICAgICJzb3VyY2UiOiBbCiAgICAgICAgImNvbnN0IGl0ZW1zID0gWydEdWNrREInLCAnUEdsaXRlJywgJ05vdGVib29rcyddO1xuIiwKICAgICAgICAicmV0dXJuIGl0ZW1zLmpvaW4oJywgJyk7IgogICAgICBdCiAgICB9LAogICAgewogICAgICAiY2VsbF90eXBlIjogImNvZGUiLAogICAgICAiZXhlY3V0aW9uX2NvdW50IjogbnVsbCwKICAgICAgIm1ldGFkYXRhIjoge30sCiAgICAgICJvdXRwdXRzIjogW10sCiAgICAgICJzb3VyY2UiOiBbCiAgICAgICAgImNvbnN0IGZpYiA9IChuKSA9PiBuIDw9IDEgPyBuIDogZmliKG4gLSAxKSArIGZpYihuIC0gMik7XG4iLAogICAgICAgICJyZXR1cm4gZmliKDEwKTsiCiAgICAgIF0KICAgIH0KICBdLAogICJtZXRhZGF0YSI6IHsKICAgICJrZXJuZWwiOiAiamF2YXNjcmlwdCIsCiAgICAibGFuZ3VhZ2VfaW5mbyI6IHsKICAgICAgIm5hbWUiOiAicHl0aG9uIgogICAgfQogIH0sCiAgIm5iZm9ybWF0IjogNCwKICAibmJmb3JtYXRfbWlub3IiOiA0Cn0K", import.meta.url).href } }
16
+ ]
17
+ },
18
+ {
19
+ label: "DuckDB",
20
+ icon: "file-code",
21
+ contributionId: "catalog.notebooks.duckdb",
22
+ items: [
23
+ { label: "DuckDB in notebooks", icon: "lyra jupyter", state: { url: new URL("data:application/octet-stream;base64,ewogICJjZWxscyI6IFsKICAgIHsKICAgICAgImNlbGxfdHlwZSI6ICJtYXJrZG93biIsCiAgICAgICJzb3VyY2UiOiBbIiMgRHVja0RCIGluIG5vdGVib29rc1xuXG5Vc2UgdGhlICoqRHVja0RCKioga2VybmVsIHRvIHJ1biBTUUwgaW4gY2VsbHMuIFJlc3VsdHMgYXJlIHNob3duIGFzIHRleHQuIl0sCiAgICAgICJtZXRhZGF0YSI6IHt9CiAgICB9LAogICAgewogICAgICAiY2VsbF90eXBlIjogImNvZGUiLAogICAgICAic291cmNlIjogWyJTRUxFQ1QgJ0R1Y2tEQicgQVMgZW5naW5lLCB2ZXJzaW9uKCkgQVMgdjsiXSwKICAgICAgImV4ZWN1dGlvbl9jb3VudCI6IG51bGwsCiAgICAgICJvdXRwdXRzIjogW10sCiAgICAgICJtZXRhZGF0YSI6IHt9CiAgICB9LAogICAgewogICAgICAiY2VsbF90eXBlIjogImNvZGUiLAogICAgICAic291cmNlIjogWyJDUkVBVEUgT1IgUkVQTEFDRSBURU1QIFRBQkxFIHQgKGlkIElOVCwgbmFtZSBWQVJDSEFSKTtcbklOU0VSVCBJTlRPIHQgVkFMVUVTICgxLCAnYScpLCAoMiwgJ2InKSwgKDMsICdjJyk7XG5TRUxFQ1QgKiBGUk9NIHQ7Il0sCiAgICAgICJleGVjdXRpb25fY291bnQiOiBudWxsLAogICAgICAib3V0cHV0cyI6IFtdLAogICAgICAibWV0YWRhdGEiOiB7fQogICAgfSwKICAgIHsKICAgICAgImNlbGxfdHlwZSI6ICJjb2RlIiwKICAgICAgInNvdXJjZSI6IFsiU0VMRUNUIG5hbWUsIGlkICogMTAgQVMgc2NhbGVkIEZST00gdCBPUkRFUiBCWSBpZCBERVNDOyJdLAogICAgICAiZXhlY3V0aW9uX2NvdW50IjogbnVsbCwKICAgICAgIm91dHB1dHMiOiBbXSwKICAgICAgIm1ldGFkYXRhIjoge30KICAgIH0KICBdLAogICJtZXRhZGF0YSI6IHsgImtlcm5lbCI6ICJkdWNrZGIiIH0sCiAgIm5iZm9ybWF0IjogNCwKICAibmJmb3JtYXRfbWlub3IiOiA0Cn0K", import.meta.url).href } }
24
+ ]
25
+ },
26
+ {
27
+ label: "PGlite",
28
+ icon: "file-code",
29
+ contributionId: "catalog.notebooks.pglite",
30
+ items: [
31
+ { label: "PostgreSQL in notebooks", icon: "lyra jupyter", state: { url: new URL("data:application/octet-stream;base64,ewogICJjZWxscyI6IFsKICAgIHsKICAgICAgImNlbGxfdHlwZSI6ICJtYXJrZG93biIsCiAgICAgICJzb3VyY2UiOiBbIiMgUG9zdGdyZVNRTCAoUEdsaXRlKSBpbiBub3RlYm9va3NcblxuVXNlIHRoZSAqKlBHbGl0ZSoqIGtlcm5lbCB0byBydW4gUG9zdGdyZVNRTCBTUUwgaW4gdGhlIGJyb3dzZXIuIl0sCiAgICAgICJtZXRhZGF0YSI6IHt9CiAgICB9LAogICAgewogICAgICAiY2VsbF90eXBlIjogImNvZGUiLAogICAgICAic291cmNlIjogWyJTRUxFQ1QgJ1BHbGl0ZScgQVMgZW5naW5lLCB2ZXJzaW9uKCkgQVMgdjsiXSwKICAgICAgImV4ZWN1dGlvbl9jb3VudCI6IG51bGwsCiAgICAgICJvdXRwdXRzIjogW10sCiAgICAgICJtZXRhZGF0YSI6IHt9CiAgICB9LAogICAgewogICAgICAiY2VsbF90eXBlIjogImNvZGUiLAogICAgICAic291cmNlIjogWyJDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBkZW1vIChpZCBTRVJJQUwgUFJJTUFSWSBLRVksIGxhYmVsIFRFWFQpO1xuSU5TRVJUIElOVE8gZGVtbyAobGFiZWwpIFZBTFVFUyAoJ2ZpcnN0JyksICgnc2Vjb25kJyksICgndGhpcmQnKTtcblNFTEVDVCAqIEZST00gZGVtbzsiXSwKICAgICAgImV4ZWN1dGlvbl9jb3VudCI6IG51bGwsCiAgICAgICJvdXRwdXRzIjogW10sCiAgICAgICJtZXRhZGF0YSI6IHt9CiAgICB9LAogICAgewogICAgICAiY2VsbF90eXBlIjogImNvZGUiLAogICAgICAic291cmNlIjogWyJTRUxFQ1QgbGFiZWwsIGlkICogMiBBUyBkb3VibGVfaWQgRlJPTSBkZW1vIE9SREVSIEJZIGlkOyJdLAogICAgICAiZXhlY3V0aW9uX2NvdW50IjogbnVsbCwKICAgICAgIm91dHB1dHMiOiBbXSwKICAgICAgIm1ldGFkYXRhIjoge30KICAgIH0KICBdLAogICJtZXRhZGF0YSI6IHsgImtlcm5lbCI6ICJwZ2xpdGUiIH0sCiAgIm5iZm9ybWF0IjogNCwKICAibmJmb3JtYXRfbWlub3IiOiA0Cn0K", import.meta.url).href } }
32
+ ]
33
+ }
34
+ ]
35
+ };
36
+ function registerNotebookCatalog() {
37
+ registerCatalog(NOTEBOOK_CATALOG);
38
+ }
39
+ class JavaScriptNotebookKernel {
40
+ constructor() {
41
+ this.id = "javascript";
42
+ this.label = "JavaScript";
43
+ this.language = "javascript";
44
+ this.runtime = null;
45
+ }
46
+ getRuntime() {
47
+ if (!this.runtime) {
48
+ this.runtime = createJsRuntime();
49
+ }
50
+ return this.runtime;
51
+ }
52
+ async getVersion() {
53
+ return "JavaScript";
54
+ }
55
+ async execute(code) {
56
+ try {
57
+ const result = await this.getRuntime().execute(code);
58
+ if (result === void 0 || result === null) {
59
+ return {};
60
+ }
61
+ return { data: String(result) };
62
+ } catch (err) {
63
+ return { error: err instanceof Error ? err.message : String(err) };
64
+ }
65
+ }
66
+ close() {
67
+ if (this.runtime) {
68
+ this.runtime.close();
69
+ this.runtime = null;
70
+ }
71
+ }
72
+ }
73
+ const javascriptKernelContribution = {
74
+ id: "javascript",
75
+ label: "JavaScript",
76
+ language: "javascript",
77
+ loadKernel: async () => new JavaScriptNotebookKernel()
78
+ };
79
+ const notebookExtension = ({ editorRegistry, commandRegistry, contributionRegistry }) => {
80
+ registerNotebookCatalog();
81
+ contributionRegistry.registerContribution(TARGET_NOTEBOOK_KERNELS, javascriptKernelContribution);
82
+ const INITIAL_NOTEBOOK_CONTENT = {
83
+ cells: [
84
+ {
85
+ cell_type: "markdown",
86
+ source: ["Press the **Run** button in the code cell below to execute it."],
87
+ metadata: {}
88
+ },
89
+ {
90
+ cell_type: "code",
91
+ source: ['return "Hello, World!"'],
92
+ execution_count: null,
93
+ outputs: [],
94
+ metadata: {}
95
+ }
96
+ ],
97
+ metadata: { kernel: "javascript" },
98
+ nbformat: 4,
99
+ nbformat_minor: 4
100
+ };
101
+ commandRegistry.registerHandler("notebook.runCell", {
102
+ ranking: 10,
103
+ canExecute: (context) => {
104
+ const activeEditor = activeEditorSignal.get();
105
+ if (isNotebookEditorLike(activeEditor)) {
106
+ const cellIndex = context.params?.cellIndex;
107
+ if (cellIndex !== void 0) {
108
+ return cellIndex >= 0 && cellIndex < (activeEditor.notebook?.cells.length ?? 0);
109
+ }
110
+ return activeEditor.focusedCellIndex >= 0;
111
+ }
112
+ return false;
113
+ },
114
+ execute: async (context) => {
115
+ const activeEditor = activeEditorSignal.get();
116
+ if (isNotebookEditorLike(activeEditor)) {
117
+ const cellIndex = context.params?.cellIndex ?? activeEditor.focusedCellIndex;
118
+ if (cellIndex >= 0) {
119
+ await activeEditor.executeCell(cellIndex);
120
+ }
121
+ }
122
+ }
123
+ });
124
+ editorRegistry.registerEditorInputHandler({
125
+ editorId: "system.notebooeditor",
126
+ label: "Jupyter Notebook",
127
+ icon: "lyra jupyter",
128
+ lazyInit: () => import("./notebook-runtime-CbWJycgO.js"),
129
+ canHandle: (input) => input instanceof File && input.getName().toLowerCase().endsWith(".ipynb"),
130
+ handle: async (input) => {
131
+ const editorInput = {
132
+ title: input.getWorkspacePath(),
133
+ data: input,
134
+ key: input.getWorkspacePath(),
135
+ icon: "lyra jupyter",
136
+ noOverflow: true,
137
+ state: {}
138
+ };
139
+ editorInput.component = () => html`
140
+ <lyra-notebook-editor .input=${editorInput}></lyra-notebook-editor>`;
141
+ return editorInput;
142
+ },
143
+ ranking: 100
144
+ });
145
+ contributionRegistry.registerContribution("filebrowser.create", {
146
+ label: "Jupyter Notebook",
147
+ icon: "lyra jupyter",
148
+ command: "touch",
149
+ params: {
150
+ path: "notebook.ipynb",
151
+ extension: ".ipynb",
152
+ ask: true,
153
+ contents: JSON.stringify(INITIAL_NOTEBOOK_CONTENT, null, 2)
154
+ }
155
+ });
156
+ };
157
+ export {
158
+ notebookExtension as default
159
+ };
160
+ //# sourceMappingURL=notebook-extension-Cr-EvTgt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notebook-extension-Cr-EvTgt.js","sources":["../src/notebook-catalog.ts","../src/javascript-kernel.ts","../src/notebook-extension.ts"],"sourcesContent":["import type { CatalogContribution } from \"@eclipse-lyra/extension-catalog/api\";\nimport { registerCatalog } from \"@eclipse-lyra/extension-catalog/api\";\n\nconst NOTEBOOK_CATALOG: CatalogContribution = {\n label: \"Notebooks\",\n icon: \"lyra jupyter\",\n contributionId: \"catalog.notebooks\",\n items: [\n {\n label: \"JavaScript\",\n icon: \"file-code\",\n contributionId: \"catalog.notebooks.javascript\",\n items: [\n { label: \"JavaScript basics\", icon: \"lyra jupyter\", state: { url: new URL(\"./catalog/javascript-basics.ipynb\", import.meta.url).href } },\n ],\n },\n {\n label: \"DuckDB\",\n icon: \"file-code\",\n contributionId: \"catalog.notebooks.duckdb\",\n items: [\n { label: \"DuckDB in notebooks\", icon: \"lyra jupyter\", state: { url: new URL(\"./catalog/duckdb-sample.ipynb\", import.meta.url).href } },\n ],\n },\n {\n label: \"PGlite\",\n icon: \"file-code\",\n contributionId: \"catalog.notebooks.pglite\",\n items: [\n { label: \"PostgreSQL in notebooks\", icon: \"lyra jupyter\", state: { url: new URL(\"./catalog/pglite-sample.ipynb\", import.meta.url).href } },\n ],\n },\n ],\n};\n\nexport function registerNotebookCatalog(): void {\n registerCatalog(NOTEBOOK_CATALOG);\n}\n","import { createJsRuntime, type JsRuntime } from '@eclipse-lyra/core';\nimport type { NotebookExecutionResult, NotebookKernel, NotebookKernelContribution } from './notebook-kernel-api';\n\nclass JavaScriptNotebookKernel implements NotebookKernel {\n readonly id = 'javascript';\n readonly label = 'JavaScript';\n readonly language = 'javascript';\n\n private runtime: JsRuntime | null = null;\n\n private getRuntime(): JsRuntime {\n if (!this.runtime) {\n this.runtime = createJsRuntime();\n }\n return this.runtime;\n }\n\n async getVersion(): Promise<string> {\n return 'JavaScript';\n }\n\n async execute(code: string): Promise<NotebookExecutionResult> {\n try {\n const result = await this.getRuntime().execute(code);\n if (result === undefined || result === null) {\n return {};\n }\n return { data: String(result) };\n } catch (err) {\n return { error: err instanceof Error ? err.message : String(err) };\n }\n }\n\n close(): void {\n if (this.runtime) {\n this.runtime.close();\n this.runtime = null;\n }\n }\n}\n\nexport const javascriptKernelContribution: NotebookKernelContribution = {\n id: 'javascript',\n label: 'JavaScript',\n language: 'javascript',\n loadKernel: async (): Promise<NotebookKernel> => new JavaScriptNotebookKernel(),\n};\n","import { html } from \"lit\";\nimport type { EditorInput } from \"@eclipse-lyra/core\";\nimport { File } from \"@eclipse-lyra/core\";\nimport { activeEditorSignal } from \"@eclipse-lyra/core\";\nimport type { ExecutionContext } from \"@eclipse-lyra/core\";\nimport { registerNotebookCatalog } from \"./notebook-catalog\";\nimport { NotebookData, isNotebookEditorLike } from \"./notebook-types\";\nimport { TARGET_NOTEBOOK_KERNELS } from \"./notebook-kernel-api\";\nimport { javascriptKernelContribution } from \"./javascript-kernel\";\n\nexport default ({ editorRegistry, commandRegistry, contributionRegistry }: any) => {\n registerNotebookCatalog();\n contributionRegistry.registerContribution(TARGET_NOTEBOOK_KERNELS, javascriptKernelContribution);\n\n const INITIAL_NOTEBOOK_CONTENT: NotebookData = {\n cells: [\n {\n cell_type: 'markdown',\n source: ['Press the **Run** button in the code cell below to execute it.'],\n metadata: {}\n },\n {\n cell_type: 'code',\n source: ['return \"Hello, World!\"'],\n execution_count: null,\n outputs: [],\n metadata: {}\n }\n ],\n metadata: { kernel: 'javascript' },\n nbformat: 4,\n nbformat_minor: 4\n };\n commandRegistry.registerHandler('notebook.runCell', {\n ranking: 10,\n canExecute: (context: ExecutionContext) => {\n const activeEditor = activeEditorSignal.get();\n if (isNotebookEditorLike(activeEditor)) {\n const cellIndex = context.params?.cellIndex;\n if (cellIndex !== undefined) {\n return cellIndex >= 0 && cellIndex < (activeEditor.notebook?.cells.length ?? 0);\n }\n return activeEditor.focusedCellIndex >= 0;\n }\n return false;\n },\n execute: async (context: ExecutionContext) => {\n const activeEditor = activeEditorSignal.get();\n if (isNotebookEditorLike(activeEditor)) {\n const cellIndex = context.params?.cellIndex ?? activeEditor.focusedCellIndex;\n if (cellIndex >= 0) {\n await activeEditor.executeCell(cellIndex);\n }\n }\n }\n });\n\n editorRegistry.registerEditorInputHandler({\n editorId: \"system.notebooeditor\",\n label: \"Jupyter Notebook\",\n icon: \"lyra jupyter\",\n lazyInit: () => import('./notebook-runtime'),\n canHandle: (input: any) => input instanceof File && input.getName().toLowerCase().endsWith(\".ipynb\"),\n handle: async (input: File) => {\n const editorInput = {\n title: input.getWorkspacePath(),\n data: input,\n key: input.getWorkspacePath(),\n icon: \"lyra jupyter\",\n noOverflow: true,\n state: {},\n } as EditorInput;\n editorInput.component = () => html`\n <lyra-notebook-editor .input=${editorInput}></lyra-notebook-editor>`;\n return editorInput;\n },\n ranking: 100,\n });\n\n contributionRegistry.registerContribution('filebrowser.create', {\n label: 'Jupyter Notebook',\n icon: 'lyra jupyter',\n command: 'touch',\n params: {\n path: \"notebook.ipynb\",\n extension: '.ipynb',\n ask: true,\n contents: JSON.stringify(INITIAL_NOTEBOOK_CONTENT, null, 2)\n }\n });\n};\n\n\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"notebook-extension.d.ts","sourceRoot":"","sources":["../src/notebook-extension.ts"],"names":[],"mappings":"yBASgB,2DAA2D,GAAG;AAA9E,wBA+EE"}
1
+ {"version":3,"file":"notebook-extension.d.ts","sourceRoot":"","sources":["../src/notebook-extension.ts"],"names":[],"mappings":"yBAUgB,2DAA2D,GAAG;AAA9E,wBAgFE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eclipse-lyra/extension-notebook",
3
- "version": "0.7.40",
3
+ "version": "0.7.42",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "exports": {
@@ -11,6 +11,7 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@eclipse-lyra/core": "*",
14
+ "@eclipse-lyra/extension-catalog": "*",
14
15
  "@eclipse-lyra/extension-monaco-editor": "*",
15
16
  "marked": "^12.0.0 || ^16.4.1"
16
17
  },
@@ -1,124 +0,0 @@
1
- import { html } from "lit";
2
- import { createJsRuntime, activeEditorSignal, File } from "@eclipse-lyra/core";
3
- import { T as TARGET_NOTEBOOK_KERNELS, i as isNotebookEditorLike } from "./notebook-kernel-api--RBL5TaE.js";
4
- class JavaScriptNotebookKernel {
5
- constructor() {
6
- this.id = "javascript";
7
- this.label = "JavaScript";
8
- this.language = "javascript";
9
- this.runtime = null;
10
- }
11
- getRuntime() {
12
- if (!this.runtime) {
13
- this.runtime = createJsRuntime();
14
- }
15
- return this.runtime;
16
- }
17
- async getVersion() {
18
- return "JavaScript";
19
- }
20
- async execute(code) {
21
- try {
22
- const result = await this.getRuntime().execute(code);
23
- if (result === void 0 || result === null) {
24
- return {};
25
- }
26
- return { data: String(result) };
27
- } catch (err) {
28
- return { error: err instanceof Error ? err.message : String(err) };
29
- }
30
- }
31
- close() {
32
- if (this.runtime) {
33
- this.runtime.close();
34
- this.runtime = null;
35
- }
36
- }
37
- }
38
- const javascriptKernelContribution = {
39
- id: "javascript",
40
- label: "JavaScript",
41
- language: "javascript",
42
- loadKernel: async () => new JavaScriptNotebookKernel()
43
- };
44
- const notebookExtension = ({ editorRegistry, commandRegistry, contributionRegistry }) => {
45
- contributionRegistry.registerContribution(TARGET_NOTEBOOK_KERNELS, javascriptKernelContribution);
46
- const INITIAL_NOTEBOOK_CONTENT = {
47
- cells: [
48
- {
49
- cell_type: "markdown",
50
- source: ["Press the **Run** button in the code cell below to execute it."],
51
- metadata: {}
52
- },
53
- {
54
- cell_type: "code",
55
- source: ['self.postMessage("Hello, World!")'],
56
- execution_count: null,
57
- outputs: [],
58
- metadata: {}
59
- }
60
- ],
61
- metadata: { kernel: "javascript" },
62
- nbformat: 4,
63
- nbformat_minor: 4
64
- };
65
- commandRegistry.registerHandler("notebook.runCell", {
66
- ranking: 10,
67
- canExecute: (context) => {
68
- const activeEditor = activeEditorSignal.get();
69
- if (isNotebookEditorLike(activeEditor)) {
70
- const cellIndex = context.params?.cellIndex;
71
- if (cellIndex !== void 0) {
72
- return cellIndex >= 0 && cellIndex < (activeEditor.notebook?.cells.length ?? 0);
73
- }
74
- return activeEditor.focusedCellIndex >= 0;
75
- }
76
- return false;
77
- },
78
- execute: async (context) => {
79
- const activeEditor = activeEditorSignal.get();
80
- if (isNotebookEditorLike(activeEditor)) {
81
- const cellIndex = context.params?.cellIndex ?? activeEditor.focusedCellIndex;
82
- if (cellIndex >= 0) {
83
- await activeEditor.executeCell(cellIndex);
84
- }
85
- }
86
- }
87
- });
88
- editorRegistry.registerEditorInputHandler({
89
- editorId: "system.notebooeditor",
90
- label: "Jupyter Notebook",
91
- icon: "lyra jupyter",
92
- lazyInit: () => import("./notebook-runtime-CbWJycgO.js"),
93
- canHandle: (input) => input instanceof File && input.getName().toLowerCase().endsWith(".ipynb"),
94
- handle: async (input) => {
95
- const editorInput = {
96
- title: input.getWorkspacePath(),
97
- data: input,
98
- key: input.getWorkspacePath(),
99
- icon: "lyra jupyter",
100
- noOverflow: true,
101
- state: {}
102
- };
103
- editorInput.component = () => html`
104
- <lyra-notebook-editor .input=${editorInput}></lyra-notebook-editor>`;
105
- return editorInput;
106
- },
107
- ranking: 100
108
- });
109
- contributionRegistry.registerContribution("filebrowser.create", {
110
- label: "Jupyter Notebook",
111
- icon: "lyra jupyter",
112
- command: "touch",
113
- params: {
114
- path: "notebook.ipynb",
115
- extension: ".ipynb",
116
- ask: true,
117
- contents: JSON.stringify(INITIAL_NOTEBOOK_CONTENT, null, 2)
118
- }
119
- });
120
- };
121
- export {
122
- notebookExtension as default
123
- };
124
- //# sourceMappingURL=notebook-extension-DLfnTq-y.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notebook-extension-DLfnTq-y.js","sources":["../src/javascript-kernel.ts","../src/notebook-extension.ts"],"sourcesContent":["import { createJsRuntime, type JsRuntime } from '@eclipse-lyra/core';\nimport type { NotebookExecutionResult, NotebookKernel, NotebookKernelContribution } from './notebook-kernel-api';\n\nclass JavaScriptNotebookKernel implements NotebookKernel {\n readonly id = 'javascript';\n readonly label = 'JavaScript';\n readonly language = 'javascript';\n\n private runtime: JsRuntime | null = null;\n\n private getRuntime(): JsRuntime {\n if (!this.runtime) {\n this.runtime = createJsRuntime();\n }\n return this.runtime;\n }\n\n async getVersion(): Promise<string> {\n return 'JavaScript';\n }\n\n async execute(code: string): Promise<NotebookExecutionResult> {\n try {\n const result = await this.getRuntime().execute(code);\n if (result === undefined || result === null) {\n return {};\n }\n return { data: String(result) };\n } catch (err) {\n return { error: err instanceof Error ? err.message : String(err) };\n }\n }\n\n close(): void {\n if (this.runtime) {\n this.runtime.close();\n this.runtime = null;\n }\n }\n}\n\nexport const javascriptKernelContribution: NotebookKernelContribution = {\n id: 'javascript',\n label: 'JavaScript',\n language: 'javascript',\n loadKernel: async (): Promise<NotebookKernel> => new JavaScriptNotebookKernel(),\n};\n","import { html } from \"lit\";\nimport type { EditorInput } from \"@eclipse-lyra/core\";\nimport { File } from \"@eclipse-lyra/core\";\nimport { activeEditorSignal } from \"@eclipse-lyra/core\";\nimport type { ExecutionContext } from \"@eclipse-lyra/core\";\nimport { NotebookData, isNotebookEditorLike } from \"./notebook-types\";\nimport { TARGET_NOTEBOOK_KERNELS } from \"./notebook-kernel-api\";\nimport { javascriptKernelContribution } from \"./javascript-kernel\";\n\nexport default ({ editorRegistry, commandRegistry, contributionRegistry }: any) => {\n contributionRegistry.registerContribution(TARGET_NOTEBOOK_KERNELS, javascriptKernelContribution);\n\n const INITIAL_NOTEBOOK_CONTENT: NotebookData = {\n cells: [\n {\n cell_type: 'markdown',\n source: ['Press the **Run** button in the code cell below to execute it.'],\n metadata: {}\n },\n {\n cell_type: 'code',\n source: ['self.postMessage(\"Hello, World!\")'],\n execution_count: null,\n outputs: [],\n metadata: {}\n }\n ],\n metadata: { kernel: 'javascript' },\n nbformat: 4,\n nbformat_minor: 4\n };\n commandRegistry.registerHandler('notebook.runCell', {\n ranking: 10,\n canExecute: (context: ExecutionContext) => {\n const activeEditor = activeEditorSignal.get();\n if (isNotebookEditorLike(activeEditor)) {\n const cellIndex = context.params?.cellIndex;\n if (cellIndex !== undefined) {\n return cellIndex >= 0 && cellIndex < (activeEditor.notebook?.cells.length ?? 0);\n }\n return activeEditor.focusedCellIndex >= 0;\n }\n return false;\n },\n execute: async (context: ExecutionContext) => {\n const activeEditor = activeEditorSignal.get();\n if (isNotebookEditorLike(activeEditor)) {\n const cellIndex = context.params?.cellIndex ?? activeEditor.focusedCellIndex;\n if (cellIndex >= 0) {\n await activeEditor.executeCell(cellIndex);\n }\n }\n }\n });\n\n editorRegistry.registerEditorInputHandler({\n editorId: \"system.notebooeditor\",\n label: \"Jupyter Notebook\",\n icon: \"lyra jupyter\",\n lazyInit: () => import('./notebook-runtime'),\n canHandle: (input: any) => input instanceof File && input.getName().toLowerCase().endsWith(\".ipynb\"),\n handle: async (input: File) => {\n const editorInput = {\n title: input.getWorkspacePath(),\n data: input,\n key: input.getWorkspacePath(),\n icon: \"lyra jupyter\",\n noOverflow: true,\n state: {},\n } as EditorInput;\n editorInput.component = () => html`\n <lyra-notebook-editor .input=${editorInput}></lyra-notebook-editor>`;\n return editorInput;\n },\n ranking: 100,\n });\n\n contributionRegistry.registerContribution('filebrowser.create', {\n label: 'Jupyter Notebook',\n icon: 'lyra jupyter',\n command: 'touch',\n params: {\n path: \"notebook.ipynb\",\n extension: '.ipynb',\n ask: true,\n contents: JSON.stringify(INITIAL_NOTEBOOK_CONTENT, null, 2)\n }\n });\n};\n\n\n"],"names":[],"mappings":"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"}