Skip to content

Commit e1ac265

Browse files
committed
auto attach LeetCodeNotebookHeader to leetcode notebook
1 parent c791516 commit e1ac265

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

src/index.ts

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ import {
44
ILayoutRestorer
55
} from '@jupyterlab/application';
66
import { ICommandPalette, WidgetTracker } from '@jupyterlab/apputils';
7-
import { IDocumentManager } from '@jupyterlab/docmanager';
7+
import {
8+
IDocumentManager,
9+
IDocumentWidgetOpener
10+
} from '@jupyterlab/docmanager';
811
import { NotebookPanel } from '@jupyterlab/notebook';
912

1013
import { LeetCodeMainWidget, LeetCodeHeaderWidget } from './widget';
@@ -18,12 +21,13 @@ const plugin: JupyterFrontEndPlugin<void> = {
1821
id: PLUGIN_ID,
1922
description: 'Integrate LeetCode into beloved Jupyter.',
2023
autoStart: true,
21-
requires: [ICommandPalette, IDocumentManager],
24+
requires: [ICommandPalette, IDocumentManager, IDocumentWidgetOpener],
2225
optional: [ILayoutRestorer],
2326
activate: (
2427
app: JupyterFrontEnd,
2528
palette: ICommandPalette,
2629
docManager: IDocumentManager,
30+
docWidgetOpener: IDocumentWidgetOpener,
2731
restorer: ILayoutRestorer | null
2832
) => {
2933
let leetcodeWidget: LeetCodeMainWidget;
@@ -45,28 +49,26 @@ const plugin: JupyterFrontEndPlugin<void> = {
4549
}
4650
});
4751
palette.addItem({ command, category: 'LeetCode' });
48-
49-
const addHeaderCommand = 'leetcode-widget:add-header';
50-
app.commands.addCommand(addHeaderCommand, {
51-
label: 'Add Header to LeetCode Widget',
52-
caption: 'Add Header to LeetCode Widget',
53-
execute: () => {
54-
const main = app.shell.currentWidget;
55-
if (main instanceof NotebookPanel) {
56-
const widget = new LeetCodeHeaderWidget(main);
57-
widget.node.style.minHeight = '20px';
58-
main.contentHeader.addWidget(widget);
59-
}
60-
}
61-
});
62-
palette.addItem({ command: addHeaderCommand, category: 'LeetCode' });
63-
6452
const tracker = new WidgetTracker<LeetCodeMainWidget>({
6553
namespace: 'leetcode-widget'
6654
});
6755
if (restorer) {
6856
restorer.restore(tracker, { command, name: () => 'leetcode' });
6957
}
58+
59+
docWidgetOpener.opened.connect((sender, widget) => {
60+
if (widget instanceof NotebookPanel) {
61+
widget.revealed.then(() => {
62+
if (widget.model?.metadata?.leetcode_question_info) {
63+
const header = new LeetCodeHeaderWidget(widget);
64+
header.node.style.minHeight = '20px';
65+
if (widget.contentHeader.widgets.every(w => w.id !== header.id)) {
66+
widget.contentHeader.addWidget(header);
67+
}
68+
}
69+
});
70+
}
71+
});
7072
}
7173
};
7274

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy