Skip to content

Commit ba22d7d

Browse files
authored
Merge pull request #3124 from ibdafna/classic_nb_resize
Add event listener for resize events
2 parents bb432ec + 6a0ed07 commit ba22d7d

File tree

9 files changed

+72
-8
lines changed

9 files changed

+72
-8
lines changed

Diff for: examples/web1/webpack.config.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var path = require('path');
2+
var webpack = require('webpack');
23

34
module.exports = {
45
mode: 'development',
@@ -14,5 +15,13 @@ module.exports = {
1415
// jquery-ui loads some images
1516
{ test: /\.(jpg|png|gif)$/, use: 'file-loader' }
1617
]
17-
}
18+
},
19+
plugins: [
20+
new webpack.DefinePlugin({
21+
// Needed for Blueprint. See https://github.com/palantir/blueprint/issues/4393
22+
'process.env': '{}',
23+
// Needed for various packages using cwd(), like the path polyfill
24+
process: { cwd: () => '/' }
25+
})
26+
]
1827
};

Diff for: examples/web2/webpack.config.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var path = require('path');
2+
var webpack = require('webpack');
23

34
module.exports = {
45
mode: 'development',
@@ -57,5 +58,13 @@ module.exports = {
5758
}
5859
}
5960
]
60-
}
61+
},
62+
plugins: [
63+
new webpack.DefinePlugin({
64+
// Needed for Blueprint. See https://github.com/palantir/blueprint/issues/4393
65+
'process.env': '{}',
66+
// Needed for various packages using cwd(), like the path polyfill
67+
process: { cwd: () => '/' }
68+
})
69+
]
6170
};

Diff for: examples/web3/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
"@jupyter-widgets/controls": "^4.0.0-alpha.3",
1919
"@jupyter-widgets/html-manager": "^0.21.0-alpha.3",
2020
"@jupyterlab/services": "^6.0.0",
21-
"@lumino/widgets": "^1.11.1",
2221
"codemirror": "^5.48.0",
2322
"font-awesome": "^4.7.0",
2423
"http-server": "^0.12.3"

Diff for: examples/web3/src/index.ts

+1-3
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import 'codemirror/lib/codemirror.css';
33
import 'codemirror/mode/python/python';
44
import 'font-awesome/css/font-awesome.css';
55
import { WidgetManager } from './manager';
6-
import * as luminoWidget from '@lumino/widgets';
76

87
import {
98
KernelManager,
@@ -62,8 +61,7 @@ document.addEventListener('DOMContentLoaded', async function(event) {
6261
if (widgetData !== undefined && widgetData.version_major === 2) {
6362
const model = await manager.get_model(widgetData.model_id);
6463
if (model !== undefined) {
65-
const view = await manager.create_view(model);
66-
luminoWidget.Widget.attach(view.luminoWidget, widgetarea);
64+
manager.display_view(manager.create_view(model), widgetarea);
6765
}
6866
}
6967
}

Diff for: examples/web3/webpack.config.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
const postcss = require('postcss');
22
var path = require('path');
3+
var webpack = require('webpack');
34

45
module.exports = {
56
mode: 'development',
@@ -88,5 +89,13 @@ module.exports = {
8889
}
8990
}
9091
]
91-
}
92+
},
93+
plugins: [
94+
new webpack.DefinePlugin({
95+
// Needed for Blueprint. See https://github.com/palantir/blueprint/issues/4393
96+
'process.env': '{}',
97+
// Needed for various packages using cwd(), like the path polyfill
98+
process: { cwd: () => '/' }
99+
})
100+
]
92101
};

Diff for: examples/web4/webpack.config.js

+9
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
var path = require('path');
2+
var webpack = require('webpack');
23

34
module.exports = {
45
mode: 'development',
@@ -57,4 +58,12 @@ module.exports = {
5758
},
5859
],
5960
},
61+
plugins: [
62+
new webpack.DefinePlugin({
63+
// Needed for Blueprint. See https://github.com/palantir/blueprint/issues/4393
64+
'process.env': '{}',
65+
// Needed for various packages using cwd(), like the path polyfill
66+
process: { cwd: () => '/' }
67+
})
68+
]
6069
};

Diff for: packages/html-manager/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
"@jupyterlab/outputarea": "^3.0.0",
4545
"@jupyterlab/rendermime": "^3.0.0",
4646
"@jupyterlab/rendermime-interfaces": "^3.0.0",
47+
"@lumino/messaging": "^1.3.3",
4748
"@lumino/widgets": "^1.11.1",
4849
"ajv": "^8.6.0",
4950
"jquery": "^3.1.1"

Diff for: packages/html-manager/src/htmlmanager.ts

+20-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import * as widgets from '@jupyter-widgets/controls';
55
import * as base from '@jupyter-widgets/base';
66
import * as outputWidgets from './output';
77
import { ManagerBase } from '@jupyter-widgets/base-manager';
8+
import { MessageLoop } from '@lumino/messaging';
89

910
import * as LuminoWidget from '@lumino/widgets';
1011
import {
@@ -32,6 +33,16 @@ export class HTMLManager extends ManagerBase {
3233
},
3334
0
3435
);
36+
37+
this._viewList = new Set<DOMWidgetView>();
38+
window.addEventListener('resize', () => {
39+
this._viewList.forEach(view => {
40+
MessageLoop.postMessage(
41+
view.luminoWidget,
42+
LuminoWidget.Widget.ResizeMessage.UnknownSize
43+
);
44+
});
45+
});
3546
}
3647
/**
3748
* Display the specified view. Element where the view is displayed
@@ -41,7 +52,13 @@ export class HTMLManager extends ManagerBase {
4152
view: Promise<DOMWidgetView> | DOMWidgetView,
4253
el: HTMLElement
4354
): Promise<void> {
44-
LuminoWidget.Widget.attach((await view).luminoWidget, el);
55+
const v = await view;
56+
LuminoWidget.Widget.attach(v.luminoWidget, el);
57+
58+
this._viewList.add(v);
59+
v.once('remove', () => {
60+
this._viewList.delete(v);
61+
});
4562
}
4663

4764
/**
@@ -118,4 +135,6 @@ export class HTMLManager extends ManagerBase {
118135
loader:
119136
| ((moduleName: string, moduleVersion: string) => Promise<any>)
120137
| undefined;
138+
139+
private _viewList: Set<DOMWidgetView>;
121140
}

Diff for: widgetsnbextension/src/extension.js

+11
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ var mngr = require('./manager');
1919
require('./save_state');
2020
require('./embed_widgets');
2121
var LuminoWidget = require('@lumino/widgets');
22+
var LuminoMessaging = require('@lumino/messaging');
2223

2324
/**
2425
* Create a widget manager for a kernel instance.
@@ -73,6 +74,16 @@ function register_events(Jupyter, events, outputarea) {
7374
* method when a view is removed from the page.
7475
*/
7576
var views = {};
77+
78+
window.addEventListener('resize', () => {
79+
Object.keys(views).forEach(viewKey => {
80+
LuminoMessaging.MessageLoop.postMessage(
81+
views[viewKey].luminoWidget,
82+
LuminoWidget.Widget.ResizeMessage.UnknownSize
83+
);
84+
});
85+
});
86+
7687
var removeView = function(event, data) {
7788
var output = data.cell ? data.cell.output_area : data.output_area;
7889
var viewids = output ? output._jupyterWidgetViews : void 0;

0 commit comments

Comments
 (0)