Skip to content

Commit 41b87e6

Browse files
committed
Update for ipywidgets 8
1 parent 00b0c17 commit 41b87e6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+720
-712
lines changed

js/package.json

+12-12
Original file line numberDiff line numberDiff line change
@@ -24,33 +24,33 @@
2424
"autogen:shaders": "node ./scripts/generate-shader-utils.js",
2525
"autogen:wrappers": "node ./scripts/generate-wrappers.js",
2626
"build:all": "npm run build:labextension",
27-
"build:bundles": "webpack -d && node ./scripts/post-build.js --debug",
28-
"build:bundles-prod": "webpack -p && node ./scripts/post-build.js",
27+
"build:bundles": "webpack --mode development && node ./scripts/post-build.js --debug",
28+
"build:bundles-prod": "webpack --mode production && node ./scripts/post-build.js",
2929
"build:labextension": "rimraf lab-dist && mkdirp lab-dist && cd lab-dist && npm pack .. && cd .. && jupyter labextension build .",
3030
"clean": "rimraf dist && rimraf ../pythreejs/static && rimraf lab-dist && node ./scripts/clean-generated-files.js",
3131
"prepack": "npm run build:bundles-prod",
3232
"prepare": "npm run autogen",
3333
"update:deps": "update-dependency --minimal --regex \"^(?!@jupyter-widgets|three)\"",
34-
"watch": "webpack -d -w"
34+
"watch": "webpack --mode development -w"
3535
},
3636
"dependencies": {
37-
"@jupyter-widgets/base": "^1.2.5 || ^2.0.0 || ^3.0.0 || ^4.0.0",
37+
"@jupyter-widgets/base": "^6.0.0-rc.0",
3838
"bluebird": "^3.5.5",
39-
"jupyter-dataserializers": "^2.2.0",
39+
"jupyter-dataserializers": "^3.0.0",
4040
"three": "^0.97.0",
41-
"underscore": "^1.8.3"
41+
"underscore": "^1.13.1"
4242
},
4343
"devDependencies": {
4444
"@jupyterlab/builder": "^3.0.0",
45-
"@jupyterlab/buildutils": "^2.0.2",
46-
"eslint": "^6.8.0",
47-
"fs-extra": "^8.1.0",
48-
"glob": "^7.1.4",
45+
"@jupyterlab/buildutils": "^3.2.4",
46+
"eslint": "^8.4.1",
47+
"fs-extra": "^10.0.0",
48+
"glob": "^8.0.3",
4949
"handlebars": "^4.1.2",
5050
"mkdirp": "^1.0.3",
5151
"rimraf": "^3.0.2",
52-
"webpack": "^4.34.0",
53-
"webpack-cli": "^3.3.4"
52+
"webpack": "^5.65.0",
53+
"webpack-cli": "^4.9.1"
5454
},
5555
"jupyterlab": {
5656
"extension": "src/jupyterlab-plugin",

js/scripts/templates/js_wrapper.mustache

+17-19
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,19 @@ var {{ dep.modelName }} = require('{{ dep.requirePath }}').{{ dep.modelName }};
1717
{{/notSuper}}
1818
{{/each}}
1919

20-
var {{ modelName }} = {{ superClass.modelName }}.extend({
20+
class {{ modelName }} extends {{ superClass.modelName }} {
2121
22-
defaults: function() {
22+
defaults() {
2323
return _.extend({{ superClass.modelName }}.prototype.defaults.call(this), {
2424
2525
{{#each properties as |prop propName|}}
2626
{{ propName }}: {{{ prop.defaultJson }}},
2727
{{/each}}
2828

2929
});
30-
},
30+
}
3131

32-
constructThreeObject: function() {
32+
constructThreeObject() {
3333
3434
var result = new THREE.{{ className }}({{#if constructor.args}}
3535
{{#each constructor.args as |arg|}}
@@ -38,9 +38,9 @@ var {{ modelName }} = {{ superClass.modelName }}.extend({
3838
{{/if}});
3939
return Promise.resolve(result);
4040

41-
},
41+
}
4242

43-
createPropertiesArrays: function() {
43+
createPropertiesArrays() {
4444
4545
{{ superClass.modelName }}.prototype.createPropertiesArrays.call(this);
4646
{{#each properties as |prop propName|}}
@@ -70,20 +70,18 @@ var {{ modelName }} = {{ superClass.modelName }}.extend({
7070
{{/if}}
7171
{{/each}}
7272

73-
},
73+
}
74+
}
7475

75-
}, {
76-
77-
model_name: '{{ modelName }}',
78-
79-
{{#if serialized_props }}
80-
serializers: _.extend({
81-
{{#each serialized_props as |serializer propName|}}
82-
{{ propName }}: {{ serializer }},
83-
{{/each}}
84-
}{{#if superClass }}, {{ superClass.modelName }}.serializers){{/if}},
85-
{{/if}}
86-
});
76+
{{ modelName }}.model_name = '{{ modelName }}';
77+
{{#if serialized_props }}
78+
{{ modelName }}.serializers = {
79+
{{#if superClass }}...{{ superClass.modelName }}.serializers,{{/if}}
80+
{{#each serialized_props as |serializer propName|}}
81+
{{ propName }}: {{ serializer }},
82+
{{/each}}
83+
};
84+
{{/if}}
8785

8886
module.exports = {
8987
{{ modelName }}: {{ modelName }},

js/src/_base/Preview.js

+38-39
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,23 @@ var unpackThreeModel = require('./serializers').unpackThreeModel;
1313
var BLACK = new THREE.Color('black');
1414

1515

16-
var PreviewView = RenderableView.extend({
16+
class PreviewView extends RenderableView {
1717

18-
initialize: function() {
18+
initialize() {
1919
RenderableView.prototype.initialize.apply(this, arguments);
2020

2121
this._resetCameraNeeded = true;
2222
this._rebuildNeeded = true;
2323

24-
},
24+
}
2525

26-
render: function() {
26+
render() {
2727
// ensure that model is fully initialized before attempting render
2828
return this.model.initPromise.bind(this).then(this.doRender);
29-
},
29+
}
3030

3131

32-
setupEventListeners: function() {
32+
setupEventListeners() {
3333
RenderableView.prototype.setupEventListeners.call(this);
3434
var child = this.model.get('child');
3535
this.listenTo(child, 'change', this.onChildChanged.bind(this));
@@ -38,17 +38,17 @@ var PreviewView = RenderableView.extend({
3838
// any nested change instead of just rerendering.
3939
this.listenTo(child, 'childchange', this.onChildChanged.bind(this));
4040
}
41-
},
41+
}
4242

43-
onChildChanged: function() {
43+
onChildChanged() {
4444
// Enabling this line will reset the camera
4545
// when any changes are made to the child
4646
//this._resetCameraNeeded = true;
4747

4848
this._rebuildNeeded = true;
49-
},
49+
}
5050

51-
constructScene: function() {
51+
constructScene() {
5252

5353
var obj = this.model.get('child').obj;
5454

@@ -131,9 +131,9 @@ var PreviewView = RenderableView.extend({
131131
// Clear at end to ensure that any changes to obj does not
132132
// cause infinite rebuild chain.
133133
this._rebuildNeeded = false;
134-
},
134+
}
135135

136-
resetCamera: function() {
136+
resetCamera() {
137137
// Compute bounding sphere for entire scene
138138
var sphere = utils.computeBoundingSphere(this.scene);
139139
if (sphere === null) {
@@ -152,14 +152,14 @@ var PreviewView = RenderableView.extend({
152152
// Position light up to the left and behind camera
153153
var dist = 2.5 * (this.camera.position.z - sphere.center.z);
154154
this.pointLight.position.set(-dist, dist, dist);
155-
},
155+
}
156156

157-
clearScene: function() {
157+
clearScene() {
158158
// this.controls.reset();
159159
this.scene.remove.apply(this.scene, this.scene.children.slice());
160-
},
160+
}
161161

162-
setupControls: function() {
162+
setupControls() {
163163
// Allow user to inspect object with mouse/scrollwheel
164164
this.debug('setting up controls');
165165
var control = new OrbitControls(this.camera, this.renderer.domElement);
@@ -168,9 +168,9 @@ var PreviewView = RenderableView.extend({
168168
control.target.set(0, 0, 0);
169169
control.update();
170170
this.controls = [control];
171-
},
171+
}
172172

173-
lazyRendererSetup: function() {
173+
lazyRendererSetup() {
174174
this.camera = new THREE.PerspectiveCamera(60, 1.0);
175175
// aspect is updated by this.updateSize()
176176
// position and lookat target is updated to fit scene
@@ -194,9 +194,9 @@ var PreviewView = RenderableView.extend({
194194
this.enableControls();
195195

196196
this.renderScene();
197-
},
197+
}
198198

199-
renderScene: function() {
199+
renderScene() {
200200
this.debug('renderScene');
201201

202202
if (this.isFrozen) {
@@ -220,24 +220,24 @@ var PreviewView = RenderableView.extend({
220220
if (this.scene.ipymodel) {
221221
this.scene.ipymodel.trigger('afterRender', this.scene, this.renderer, this.camera);
222222
}
223-
},
223+
}
224224

225-
updateSize: function() {
225+
updateSize() {
226226
RenderableView.prototype.updateSize.call(this);
227227
if (this.camera) {
228228
var width = this.model.get('_width');
229229
var height = this.model.get('_height');
230230
this.camera.aspect = width / height;
231231
this.camera.updateProjectionMatrix();
232232
}
233-
},
233+
}
234234

235-
});
235+
}
236236

237237

238-
var PreviewModel = RenderableModel.extend({
238+
class PreviewModel extends RenderableModel {
239239

240-
defaults: function() {
240+
defaults() {
241241
return _.extend(RenderableModel.prototype.defaults.call(this), {
242242
_model_name: 'PreviewModel',
243243
_view_name: 'PreviewView',
@@ -246,34 +246,33 @@ var PreviewModel = RenderableModel.extend({
246246
_wire: false,
247247
child: null,
248248
});
249-
},
249+
}
250250

251-
initialize: function(attributes, options) {
251+
initialize(attributes, options) {
252252
RenderableModel.prototype.initialize.apply(this, arguments);
253253

254254
// Don't listen to child until it is finished it's setup
255255
this.initPromise = this.get('child').initPromise.bind(this).then(function() {
256256
this.setupListeners();
257257
});
258-
},
258+
}
259259

260-
setupListeners: function() {
260+
setupListeners() {
261261
var child = this.get('child');
262262
this.listenTo(child, 'change', this.onChildChanged.bind(this));
263263
this.listenTo(child, 'childchange', this.onChildChanged.bind(this));
264-
},
264+
}
265265

266-
onChildChanged: function(model, options) {
266+
onChildChanged(model, options) {
267267
this.trigger('rerender', this, {});
268-
},
268+
}
269269

270-
}, {
270+
}
271271

272-
serializers: _.extend({
273-
child: { deserialize: unpackThreeModel },
274-
}, RenderableModel.serializers),
275-
276-
});
272+
PreviewModel.serializers = {
273+
...RenderableModel.serializers,
274+
child: { deserialize: unpackThreeModel },
275+
};
277276

278277

279278
module.exports = {

0 commit comments

Comments
 (0)