Skip to content

Commit dd75867

Browse files
committed
update monaco loading
1 parent 0f2d65b commit dd75867

File tree

8 files changed

+53
-43
lines changed

8 files changed

+53
-43
lines changed

src/__tests__/editor/waldiezEditor.spec.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { JupyterLab } from "@jupyterlab/application";
1111
import { IEditorServices } from "@jupyterlab/codeeditor";
1212
import { IFileBrowserFactory } from "@jupyterlab/filebrowser";
1313
import { IRenderMimeRegistry, RenderMimeRegistry } from "@jupyterlab/rendermime";
14+
import { ISettingRegistry, SettingRegistry } from "@jupyterlab/settingregistry";
1415
import { CommandRegistry } from "@lumino/commands";
1516

1617
jest.mock("@jupyterlab/application", () => {
@@ -74,12 +75,16 @@ jest.mock("@jupyterlab/codeeditor");
7475

7576
describe("WaldiezEditor", () => {
7677
let app: jest.Mocked<JupyterLab>;
78+
let settingRegistry: ISettingRegistry;
7779
let rendermime: IRenderMimeRegistry;
7880
let editorServices: IEditorServices;
7981
let fileBrowserFactory: IFileBrowserFactory;
8082

8183
beforeEach(() => {
8284
app = new JupyterLab() as jest.Mocked<JupyterLab>;
85+
settingRegistry = new SettingRegistry({
86+
connector: null as any,
87+
}) as ISettingRegistry;
8388
rendermime = new RenderMimeRegistry();
8489
editorServices = {} as IEditorServices;
8590
fileBrowserFactory = {
@@ -103,6 +108,7 @@ describe("WaldiezEditor", () => {
103108
rendermime,
104109
fileBrowserFactory,
105110
editorServices,
111+
settingRegistry,
106112
name: FACTORY_NAME,
107113
fileTypes: [WALDIEZ_FILE_TYPE],
108114
});

src/__tests__/factory.spec.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@ import { JupyterLab } from "@jupyterlab/application";
99
import { IEditorServices } from "@jupyterlab/codeeditor";
1010
import { IFileBrowserFactory } from "@jupyterlab/filebrowser";
1111
import { IRenderMimeRegistry, RenderMimeRegistry } from "@jupyterlab/rendermime";
12+
import { ISettingRegistry, SettingRegistry } from "@jupyterlab/settingregistry";
1213
import { CommandRegistry } from "@lumino/commands";
1314

15+
jest.mock("@jupyterlab/settingregistry");
1416
jest.mock("@jupyterlab/codeeditor");
1517
jest.mock("@jupyterlab/application", () => {
1618
return {
@@ -31,12 +33,16 @@ jest.mock("../editor", () => {
3133

3234
describe("WaldiezEditorFactory", () => {
3335
let app: jest.Mocked<JupyterLab>;
36+
let settingRegistry: jest.Mocked<ISettingRegistry>;
3437
let editorServices: jest.Mocked<IEditorServices>;
3538
let rendermime: IRenderMimeRegistry;
3639
let fileBrowserFactory: IFileBrowserFactory;
3740

3841
beforeEach(() => {
3942
app = new JupyterLab() as jest.Mocked<JupyterLab>;
43+
settingRegistry = new SettingRegistry({
44+
connector: null as any,
45+
}) as any;
4046
editorServices = {} as jest.Mocked<IEditorServices>;
4147
fileBrowserFactory = {} as jest.Mocked<IFileBrowserFactory>;
4248
rendermime = new RenderMimeRegistry();
@@ -49,6 +55,7 @@ describe("WaldiezEditorFactory", () => {
4955
commands: app.commands,
5056
rendermime,
5157
editorServices,
58+
settingRegistry,
5259
fileBrowserFactory,
5360
name: FACTORY_NAME,
5461
fileTypes: [WALDIEZ_FILE_TYPE],
@@ -61,6 +68,7 @@ describe("WaldiezEditorFactory", () => {
6168
commands: app.commands,
6269
rendermime,
6370
editorServices,
71+
settingRegistry,
6472
fileBrowserFactory,
6573
name: FACTORY_NAME,
6674
fileTypes: [WALDIEZ_FILE_TYPE],

src/__tests__/plugin.spec.ts

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import { JupyterLab } from "@jupyterlab/application";
99
import { IEditorServices } from "@jupyterlab/codeeditor";
1010
import { IMainMenu, MainMenu } from "@jupyterlab/mainmenu";
1111
import { RenderMimeRegistry } from "@jupyterlab/rendermime";
12+
import { ISettingRegistry, SettingRegistry } from "@jupyterlab/settingregistry";
1213

1314
jest.mock("../commands", () => ({
1415
...jest.requireActual("../commands"),
@@ -18,6 +19,7 @@ jest.mock("../commands", () => ({
1819
describe("Waldiez Plugin", () => {
1920
let app: jest.Mocked<JupyterLab>;
2021
let rendermime: RenderMimeRegistry;
22+
let settingRegistry: jest.Mocked<ISettingRegistry>;
2123
let editorServices: jest.Mocked<IEditorServices>;
2224
let mainMenu: IMainMenu;
2325

@@ -36,6 +38,9 @@ describe("Waldiez Plugin", () => {
3638
addWidgetFactory: jest.fn(),
3739
} as any;
3840
rendermime = new RenderMimeRegistry();
41+
settingRegistry = new SettingRegistry({
42+
connector: null as any,
43+
}) as any;
3944
editorServices = {} as jest.Mocked<IEditorServices>;
4045
mainMenu = new MainMenu(app.commands);
4146
});
@@ -67,6 +72,7 @@ describe("Waldiez Plugin", () => {
6772
rendermime,
6873
editorServices,
6974
mockFileBrowserFactory,
75+
settingRegistry,
7076
mockRestorer,
7177
mockLauncher,
7278
mockPalette,
@@ -81,7 +87,13 @@ describe("Waldiez Plugin", () => {
8187

8288
const mockFileBrowserFactory = {};
8389

84-
const result = await plugin.activate(app, rendermime, editorServices, mockFileBrowserFactory);
90+
const result = await plugin.activate(
91+
app,
92+
rendermime,
93+
editorServices,
94+
mockFileBrowserFactory,
95+
settingRegistry,
96+
);
8597

8698
expect(result).toBeDefined();
8799
expect(consoleLogSpy).toHaveBeenCalledWith("JupyterLab extension waldiez is activated!");
@@ -93,7 +105,7 @@ describe("Waldiez Plugin", () => {
93105
it("should register file type correctly", async () => {
94106
const mockFileBrowserFactory = {};
95107

96-
await plugin.activate(app, rendermime, editorServices, mockFileBrowserFactory);
108+
await plugin.activate(app, rendermime, editorServices, mockFileBrowserFactory, settingRegistry);
97109

98110
expect(app.docRegistry.addFileType).toHaveBeenCalledWith({
99111
name: WALDIEZ_FILE_TYPE,
@@ -116,6 +128,7 @@ describe("Waldiez Plugin", () => {
116128
rendermime,
117129
editorServices,
118130
mockFileBrowserFactory,
131+
settingRegistry,
119132
undefined, // restorer
120133
undefined, // launcher
121134
undefined, // palette
@@ -155,6 +168,7 @@ describe("Waldiez Plugin", () => {
155168
rendermime,
156169
editorServices,
157170
mockFileBrowserFactory,
171+
settingRegistry,
158172
mockRestorer,
159173
mockLauncher,
160174
mockPalette,

src/editor/waldiezEditor.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { IFileBrowserFactory } from "@jupyterlab/filebrowser";
1616
import type { ILogPayload } from "@jupyterlab/logconsole";
1717
import { IRenderMimeRegistry } from "@jupyterlab/rendermime";
1818
import { ServerConnection } from "@jupyterlab/services";
19+
import { ISettingRegistry } from "@jupyterlab/settingregistry";
1920
import { CommandRegistry } from "@lumino/commands";
2021
import { Signal } from "@lumino/signaling";
2122
import { SplitPanel } from "@lumino/widgets";
@@ -110,7 +111,13 @@ export class WaldiezEditor extends DocumentWidget<SplitPanel, DocumentModel> {
110111

111112
private async _onContextReady(): Promise<void> {
112113
try {
113-
const waldiezWidget = this._getWaldiezWidget();
114+
const url = new URL(this._serverSettings.baseUrl);
115+
let basePath = url.pathname;
116+
if (!basePath.endsWith("/")) {
117+
basePath += "/";
118+
}
119+
const vsPath = `${basePath}static/vs`;
120+
const waldiezWidget = this._getWaldiezWidget(vsPath);
114121
this.content.addWidget(waldiezWidget);
115122

116123
const payload: ILogPayload = {
@@ -179,7 +186,7 @@ export class WaldiezEditor extends DocumentWidget<SplitPanel, DocumentModel> {
179186
return `${err}`;
180187
}
181188

182-
private _getWaldiezWidget(): EditorWidget {
189+
private _getWaldiezWidget(vsPath?: string): EditorWidget {
183190
const fileContents = this.context.model.toString();
184191
let jsonData = {};
185192
try {
@@ -191,7 +198,7 @@ export class WaldiezEditor extends DocumentWidget<SplitPanel, DocumentModel> {
191198
return new EditorWidget({
192199
flowId: this.id,
193200
jsonData,
194-
vsPath: undefined,
201+
vsPath,
195202
signal: this._signal,
196203
onChange: this._onContentChanged.bind(this),
197204
onRun: this._onRun.bind(this),
@@ -372,6 +379,7 @@ export namespace WaldiezEditor {
372379
export interface IOptions extends DocumentWidget.IOptions<SplitPanel, DocumentModel> {
373380
rendermime: IRenderMimeRegistry;
374381
editorServices: IEditorServices;
382+
settingRegistry: ISettingRegistry;
375383
commands: CommandRegistry;
376384
fileBrowserFactory: IFileBrowserFactory;
377385
}

src/factory.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { IEditorServices } from "@jupyterlab/codeeditor";
88
import { ABCWidgetFactory, DocumentModel, DocumentRegistry } from "@jupyterlab/docregistry";
99
import { IFileBrowserFactory } from "@jupyterlab/filebrowser";
1010
import { IRenderMimeRegistry } from "@jupyterlab/rendermime";
11+
import { ISettingRegistry } from "@jupyterlab/settingregistry";
1112
import { ITranslator } from "@jupyterlab/translation";
1213
import { CommandRegistry } from "@lumino/commands";
1314
import { SplitPanel } from "@lumino/widgets";
@@ -25,6 +26,7 @@ export class WaldiezEditorFactory extends ABCWidgetFactory<WaldiezEditor, Docume
2526
private readonly _commands: CommandRegistry;
2627
private readonly _rendermime: IRenderMimeRegistry;
2728
private readonly _editorServices: IEditorServices;
29+
private readonly _settingRegistry: ISettingRegistry;
2830
private readonly _fileBrowserFactory: IFileBrowserFactory;
2931

3032
/**
@@ -39,6 +41,7 @@ export class WaldiezEditorFactory extends ABCWidgetFactory<WaldiezEditor, Docume
3941
this._commands = options.commands;
4042
this._rendermime = options.rendermime;
4143
this._editorServices = options.editorServices;
44+
this._settingRegistry = options.settingRegistry;
4245
this._fileBrowserFactory = options.fileBrowserFactory;
4346
}
4447

@@ -73,6 +76,7 @@ export class WaldiezEditorFactory extends ABCWidgetFactory<WaldiezEditor, Docume
7376
context,
7477
rendermime: this._rendermime,
7578
editorServices: this._editorServices,
79+
settingRegistry: this._settingRegistry,
7680
content: panel,
7781
commands: this._commands,
7882
fileBrowserFactory: this._fileBrowserFactory,
@@ -91,6 +95,7 @@ export namespace WaldiezEditorFactory {
9195
translator?: ITranslator;
9296
rendermime: IRenderMimeRegistry;
9397
editorServices: IEditorServices;
98+
settingRegistry: ISettingRegistry;
9499
fileBrowserFactory: IFileBrowserFactory;
95100
commands: CommandRegistry;
96101
}

src/plugin.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { IFileBrowserFactory } from "@jupyterlab/filebrowser";
1414
import { ILauncher } from "@jupyterlab/launcher";
1515
import { IMainMenu } from "@jupyterlab/mainmenu";
1616
import { IRenderMimeRegistry } from "@jupyterlab/rendermime";
17+
import { ISettingRegistry } from "@jupyterlab/settingregistry";
1718
import { ITranslator } from "@jupyterlab/translation";
1819

1920
/**
@@ -33,13 +34,14 @@ const plugin: JupyterFrontEndPlugin<WaldiezEditorFactory> = {
3334
id: PLUGIN_ID,
3435
description: WALDIEZ_STRINGS.PLUGIN_DESCRIPTION,
3536
autoStart: true,
36-
requires: [IRenderMimeRegistry, IEditorServices, IFileBrowserFactory],
37+
requires: [IRenderMimeRegistry, IEditorServices, IFileBrowserFactory, ISettingRegistry],
3738
optional: [ILayoutRestorer, ILauncher, ICommandPalette, IMainMenu, ITranslator],
3839
activate: async (
3940
app: JupyterFrontEnd,
4041
rendermime: IRenderMimeRegistry,
4142
editorServices: IEditorServices,
4243
fileBrowserFactory: IFileBrowserFactory,
44+
settingRegistry: ISettingRegistry,
4345
restorer?: ILayoutRestorer,
4446
launcher?: ILauncher,
4547
palette?: ICommandPalette,
@@ -61,6 +63,7 @@ const plugin: JupyterFrontEndPlugin<WaldiezEditorFactory> = {
6163
translator,
6264
rendermime,
6365
editorServices,
66+
settingRegistry,
6467
fileBrowserFactory,
6568
});
6669
if (launcher) {

waldiez_jupyter/handlers/extra_static_files.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,7 @@
2626
REGISTRY_BASE_URL = "https://registry.npmjs.org"
2727
PACKAGE_NAME = "monaco-editor"
2828
DETAILS_JSON = "monaco_details.json"
29-
# 0.53.0 does not seem to play well with @monaco-editor/react
30-
# let's check periodically and change it to None when we are good.
31-
PINNED_VERSION: str | None = "0.54.0"
29+
PINNED_VERSION: str | None = "0.55.1"
3230

3331
LOG = logging.getLogger(__name__)
3432

yarn.lock

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5909,7 +5909,7 @@ __metadata:
59095909

59105910
"@waldiez/react@git+https://github.com/waldiez/waldiez.git#dev":
59115911
version: 0.6.2
5912-
resolution: "@waldiez/react@https://github.com/waldiez/waldiez.git#commit=d3f2ed59f0d8672f7a2512a539ec13dba304a040"
5912+
resolution: "@waldiez/react@https://github.com/waldiez/waldiez.git#commit=ab82ea8eb6573dab6c629c50c234f98e8ee3c758"
59135913
dependencies:
59145914
"@emotion/is-prop-valid": "npm:^1.4.0"
59155915
"@fontsource/fredoka": "npm:^5.2.10"
@@ -5927,7 +5927,6 @@ __metadata:
59275927
marked: "npm:^17.0.1"
59285928
marked-highlight: "npm:^2.2.3"
59295929
microdiff: "npm:^1.5.0"
5930-
monaco-editor: "npm:^0.55.1"
59315930
nanoid: "npm:^5.1.6"
59325931
react-error-boundary: "npm:^6.0.0"
59335932
react-fast-compare: "npm:^3.2.2"
@@ -5941,7 +5940,7 @@ __metadata:
59415940
peerDependencies:
59425941
react: ^18.3.1 || ^19
59435942
react-dom: ^18.3.1 || ^19
5944-
checksum: 10/d05156fde22e9357e55c97ad9d541b13f60bc1bb65a5998b47b4b1990d0097fd7b06349274bc5d8ef005d9d265e8d92cb1d5ef2e310588680823e51fe2e2fb31
5943+
checksum: 10/9fa84de6de1eb48f7b7735f25c9517a0e4ab3b2c01bc900290bf15ca9a8e58708b6ffdb5fad174567c484e6552e137fc4803694afab4e96092494195400783bf
59455944
languageName: node
59465945
linkType: hard
59475946

@@ -8129,18 +8128,6 @@ __metadata:
81298128
languageName: node
81308129
linkType: hard
81318130

8132-
"dompurify@npm:3.2.7":
8133-
version: 3.2.7
8134-
resolution: "dompurify@npm:3.2.7"
8135-
dependencies:
8136-
"@types/trusted-types": "npm:^2.0.7"
8137-
dependenciesMeta:
8138-
"@types/trusted-types":
8139-
optional: true
8140-
checksum: 10/51b7866fb834ee62d6c415f41ece5ce11db7b463f60a822932a1f832573a40b98be7715550298690e7647988fbe086db1098bda9b10548b3166fc975eb9bd849
8141-
languageName: node
8142-
linkType: hard
8143-
81448131
"dompurify@npm:^3.2.5, dompurify@npm:^3.3.0":
81458132
version: 3.3.0
81468133
resolution: "dompurify@npm:3.3.0"
@@ -11908,15 +11895,6 @@ __metadata:
1190811895
languageName: node
1190911896
linkType: hard
1191011897

11911-
"marked@npm:14.0.0":
11912-
version: 14.0.0
11913-
resolution: "marked@npm:14.0.0"
11914-
bin:
11915-
marked: bin/marked.js
11916-
checksum: 10/5f69e58e177bde75fb6145127c939c096d05494c5dff92d73af8a550097d6631c82e919f8a375e3743379a2623418151086b925a902a2be123590b887716f2bb
11917-
languageName: node
11918-
linkType: hard
11919-
1192011898
"marked@npm:^16.2.1":
1192111899
version: 16.4.2
1192211900
resolution: "marked@npm:16.4.2"
@@ -12227,16 +12205,6 @@ __metadata:
1222712205
languageName: node
1222812206
linkType: hard
1222912207

12230-
"monaco-editor@npm:^0.55.1":
12231-
version: 0.55.1
12232-
resolution: "monaco-editor@npm:0.55.1"
12233-
dependencies:
12234-
dompurify: "npm:3.2.7"
12235-
marked: "npm:14.0.0"
12236-
checksum: 10/73836b612a923342001b8cbb459aad0de486c94672fb7cf9d28bdafed9f3b7523d5aba510d9f8e7d24476a5aacf0d3a5c0cdc520ed4764f6f89f8cf5ba8d9329
12237-
languageName: node
12238-
linkType: hard
12239-
1224012208
"motion-dom@npm:^12.23.23":
1224112209
version: 12.23.23
1224212210
resolution: "motion-dom@npm:12.23.23"

0 commit comments

Comments
 (0)