Skip to content

Commit 1af0cff

Browse files
author
Alan
committed
Use jupyterlab/mathjax-extension for typesetting.
1 parent dfedfa6 commit 1af0cff

File tree

7 files changed

+105
-43
lines changed

7 files changed

+105
-43
lines changed

examples/web1/webpack.config.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ module.exports = {
1010
path: path.resolve(__dirname, 'built'),
1111
},
1212
module: {
13-
rules: [{ test: /\.css$/i, use: ['style-loader', 'css-loader'] }],
13+
rules: [
14+
{ test: /\.css$/i, use: ['style-loader', 'css-loader'] },
15+
{ test: /\.svg$/, type: 'asset/resource' },
16+
],
1417
},
1518
};

packages/controls/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
},
3838
"dependencies": {
3939
"@jupyter-widgets/base": "^6.0.11",
40+
"@jupyterlab/mathjax-extension": "^4.4.9",
4041
"@lumino/algorithm": "^1 || ^2",
4142
"@lumino/domutils": "^1 || ^2",
4243
"@lumino/messaging": "^1 || ^2",
@@ -53,7 +54,6 @@
5354
"@types/d3-format": "^3.0.1",
5455
"@types/expect.js": "^0.3.29",
5556
"@types/jquery": "^3.5.16",
56-
"@types/mathjax": "^0.0.37",
5757
"@types/mocha": "^9.0.0",
5858
"@types/node": "^17.0.2",
5959
"chai": "^4.0.0",

packages/controls/src/utils.ts

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
// Copyright (c) Jupyter Development Team.
22
// Distributed under the terms of the Modified BSD License.
3-
3+
import { MathJaxTypesetter } from '@jupyterlab/mathjax-extension';
44
export { uuid, resolvePromisesDict } from '@jupyter-widgets/base';
55

6+
const typesetter = new MathJaxTypesetter();
67
/**
7-
* Apply MathJax rendering to an element, and optionally set its text.
8-
*
9-
* If MathJax is not available, make no changes.
8+
* Apply MathJax rendering to an element, if `text` is provided it will replace element.textContent.
109
*
1110
* Parameters
1211
* ----------
@@ -17,9 +16,7 @@ export function typeset(element: HTMLElement, text?: string): void {
1716
if (text !== void 0) {
1817
element.textContent = text;
1918
}
20-
if ((window as any).MathJax !== void 0) {
21-
MathJax!.Hub!.Queue(['Typeset', MathJax.Hub, element]);
22-
}
19+
typesetter.typeset(element);
2320
}
2421

2522
/**

packages/controls/src/widget_description.ts

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -66,18 +66,7 @@ export class DescriptionView extends DOMWidgetView {
6666
}
6767

6868
typeset(element: HTMLElement, text?: string): void {
69-
this.displayed.then(() => {
70-
const widget_manager: any = this.model.widget_manager;
71-
const latexTypesetter = widget_manager._rendermime?.latexTypesetter;
72-
if (latexTypesetter) {
73-
if (text !== void 0) {
74-
element.textContent = text;
75-
}
76-
latexTypesetter.typeset(element);
77-
} else {
78-
return typeset(element, text);
79-
}
80-
});
69+
this.displayed.then(() => typeset(element, text));
8170
}
8271

8372
updateDescription(): void {

packages/controls/test/webpack.conf.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ module.exports = {
1717
generator: { filename: '[name].[ext]' },
1818
},
1919
{ test: /\.ipynb$/, type: 'json' },
20+
{ test: /\.svg$/, type: 'asset/resource' },
2021
],
2122
},
2223
mode: 'development',

packages/controls/tsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"compilerOptions": {
44
"outDir": "lib",
55
"rootDir": "src",
6-
"types": ["mathjax", "node"]
6+
"types": ["node"]
77
},
88
"include": ["src/**/*"],
99
"references": [

yarn.lock

Lines changed: 93 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -856,6 +856,7 @@ __metadata:
856856
resolution: "@jupyter-widgets/controls@workspace:packages/controls"
857857
dependencies:
858858
"@jupyter-widgets/base": ^6.0.11
859+
"@jupyterlab/mathjax-extension": ^4.4.9
859860
"@jupyterlab/services": ^6.0.0 || ^7.0.0
860861
"@lumino/algorithm": ^1 || ^2
861862
"@lumino/domutils": ^1 || ^2
@@ -866,7 +867,6 @@ __metadata:
866867
"@types/d3-format": ^3.0.1
867868
"@types/expect.js": ^0.3.29
868869
"@types/jquery": ^3.5.16
869-
"@types/mathjax": ^0.0.37
870870
"@types/mocha": ^9.0.0
871871
"@types/node": ^17.0.2
872872
chai: ^4.0.0
@@ -1136,7 +1136,7 @@ __metadata:
11361136
languageName: node
11371137
linkType: hard
11381138

1139-
"@jupyterlab/application@npm:^3.0.0 || ^4.0.0":
1139+
"@jupyterlab/application@npm:^3.0.0 || ^4.0.0, @jupyterlab/application@npm:^4.4.9":
11401140
version: 4.4.9
11411141
resolution: "@jupyterlab/application@npm:4.4.9"
11421142
dependencies:
@@ -1578,6 +1578,18 @@ __metadata:
15781578
languageName: node
15791579
linkType: hard
15801580

1581+
"@jupyterlab/mathjax-extension@npm:^4.4.9":
1582+
version: 4.4.9
1583+
resolution: "@jupyterlab/mathjax-extension@npm:4.4.9"
1584+
dependencies:
1585+
"@jupyterlab/application": ^4.4.9
1586+
"@jupyterlab/rendermime": ^4.4.9
1587+
"@lumino/coreutils": ^2.2.1
1588+
mathjax-full: ^3.2.2
1589+
checksum: 33155cb0cfd9e81e44262ddd19c699cf84d9487c0280df0939611a91463e8cc359475c4f43e3952d2a4d83c830011e133253f23de27f39b154f60e1513b2232d
1590+
languageName: node
1591+
linkType: hard
1592+
15811593
"@jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0, @jupyterlab/nbformat@npm:^3.0.0 || ^4.0.0-alpha.21 || ^4.0.0, @jupyterlab/nbformat@npm:^4.4.9":
15821594
version: 4.4.9
15831595
resolution: "@jupyterlab/nbformat@npm:4.4.9"
@@ -3664,9 +3676,9 @@ __metadata:
36643676
linkType: hard
36653677

36663678
"@types/emscripten@npm:^1.39.6":
3667-
version: 1.41.2
3668-
resolution: "@types/emscripten@npm:1.41.2"
3669-
checksum: b0321eb7211f23801e886a7fbbd12e105b357eea5bb32ab13617d8cd04946a48a80b34ee7fe075344e76859753af2279969f7a322dda23bfd328bcfdf339a100
3679+
version: 1.41.4
3680+
resolution: "@types/emscripten@npm:1.41.4"
3681+
checksum: e7776acdfe3e95d43ff301eadf8cb21df0eb16395db02e1c4aa1646f01a53e2be5e375935f16123ac4432c5e720db395497a8ef45cf20ef962fa67e3456e556b
36703682
languageName: node
36713683
linkType: hard
36723684

@@ -3789,13 +3801,6 @@ __metadata:
37893801
languageName: node
37903802
linkType: hard
37913803

3792-
"@types/mathjax@npm:^0.0.37":
3793-
version: 0.0.37
3794-
resolution: "@types/mathjax@npm:0.0.37"
3795-
checksum: 8fe8f0dac3271a848dc0070c49ec8604c53abdc0a442308e357f215ed4d68102ed5e57e2f989cde447ebcf929efd2bc64b5a986b159c5cb50963546aa20d1a81
3796-
languageName: node
3797-
linkType: hard
3798-
37993804
"@types/minimatch@npm:*, @types/minimatch@npm:^3.0.3":
38003805
version: 3.0.5
38013806
resolution: "@types/minimatch@npm:3.0.5"
@@ -4569,6 +4574,13 @@ __metadata:
45694574
languageName: node
45704575
linkType: hard
45714576

4577+
"@xmldom/xmldom@npm:0.9.8":
4578+
version: 0.9.8
4579+
resolution: "@xmldom/xmldom@npm:0.9.8"
4580+
checksum: f8d16ad3c8083312575850fa4f2c13a2b884a37021dbb0146c6b2575bd3ddbf4c900530b49a55a7f62088ecf9809173fd7138985e7e58ddab786578970e09c59
4581+
languageName: node
4582+
linkType: hard
4583+
45724584
"@xtuc/ieee754@npm:^1.2.0":
45734585
version: 1.2.0
45744586
resolution: "@xtuc/ieee754@npm:1.2.0"
@@ -5696,9 +5708,9 @@ __metadata:
56965708
linkType: hard
56975709

56985710
"caniuse-lite@npm:^1, caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30000792, caniuse-lite@npm:^1.0.30000805, caniuse-lite@npm:^1.0.30001746":
5699-
version: 1.0.30001750
5700-
resolution: "caniuse-lite@npm:1.0.30001750"
5701-
checksum: 4a50a24ceed75cde8a8cd8b370a8c044463c26cc171eb30d1e738cd55b328c599b6e2602ec79e3e9d3b15d56e3cc980f02dd2f82784f91410544fa49c6d09cad
5711+
version: 1.0.30001751
5712+
resolution: "caniuse-lite@npm:1.0.30001751"
5713+
checksum: d11e25c44e40c21e7b7492a25c9fd60f4c04e94aa265573f7c487666f5e1b5ca3ed09d09560336f959237063616255cb294d415511bb6cf0486eb2cb6a3a4318
57025714
languageName: node
57035715
linkType: hard
57045716

@@ -6083,6 +6095,13 @@ __metadata:
60836095
languageName: node
60846096
linkType: hard
60856097

6098+
"commander@npm:13.1.0":
6099+
version: 13.1.0
6100+
resolution: "commander@npm:13.1.0"
6101+
checksum: 8ca2fcb33caf2aa06fba3722d7a9440921331d54019dabf906f3603313e7bf334b009b862257b44083ff65d5a3ab19e83ad73af282bd5319f01dc228bdf87ef0
6102+
languageName: node
6103+
linkType: hard
6104+
60866105
"commander@npm:^10.0.1":
60876106
version: 10.0.1
60886107
resolution: "commander@npm:10.0.1"
@@ -7627,6 +7646,13 @@ __metadata:
76277646
languageName: node
76287647
linkType: hard
76297648

7649+
"esm@npm:^3.2.25":
7650+
version: 3.2.25
7651+
resolution: "esm@npm:3.2.25"
7652+
checksum: 978aabe2de83541c105605a6d60a26ed8e627ef6bb0a7605fe15a95bbdea6b8348bd045255cb22219c054dd09a81a94823df00843d9e97f42419c92015ce3a64
7653+
languageName: node
7654+
linkType: hard
7655+
76307656
"espree@npm:^9.6.0, espree@npm:^9.6.1":
76317657
version: 9.6.1
76327658
resolution: "espree@npm:9.6.1"
@@ -11108,6 +11134,18 @@ __metadata:
1110811134
languageName: node
1110911135
linkType: hard
1111011136

11137+
"mathjax-full@npm:^3.2.2":
11138+
version: 3.2.2
11139+
resolution: "mathjax-full@npm:3.2.2"
11140+
dependencies:
11141+
esm: ^3.2.25
11142+
mhchemparser: ^4.1.0
11143+
mj-context-menu: ^0.6.1
11144+
speech-rule-engine: ^4.0.6
11145+
checksum: 6fbccb9338e1fbf686202d924666d79ac9eb658157c1c8102ba018672188978c4cacfb1b6f65adf7d2d51dc79535ff3e32ba86b15e66d3011dda2ab99562d90d
11146+
languageName: node
11147+
linkType: hard
11148+
1111111149
"media-typer@npm:0.3.0":
1111211150
version: 0.3.0
1111311151
resolution: "media-typer@npm:0.3.0"
@@ -11169,6 +11207,13 @@ __metadata:
1116911207
languageName: node
1117011208
linkType: hard
1117111209

11210+
"mhchemparser@npm:^4.1.0":
11211+
version: 4.2.1
11212+
resolution: "mhchemparser@npm:4.2.1"
11213+
checksum: 6dd7e3926befc74d26cf7b44b9e5ff7295e142bffc48a60bd225d5a30d525354afb70d23fc4fdb8f46178099ab98a66a57a6131dcb0f410264cfd2b9ad4af4b7
11214+
languageName: node
11215+
linkType: hard
11216+
1117211217
"micromatch@npm:^4.0.2, micromatch@npm:^4.0.4, micromatch@npm:^4.0.5, micromatch@npm:^4.0.8":
1117311218
version: 4.0.8
1117411219
resolution: "micromatch@npm:4.0.8"
@@ -11470,6 +11515,13 @@ __metadata:
1147011515
languageName: node
1147111516
linkType: hard
1147211517

11518+
"mj-context-menu@npm:^0.6.1":
11519+
version: 0.6.1
11520+
resolution: "mj-context-menu@npm:0.6.1"
11521+
checksum: 7a036026538662cac9619b760fade98681618c3ddf417cb36eddb7c28a937baf257c56fd0b6318738419e738ba01a00bcb3790b324885fd6edbae03fb0a2c986
11522+
languageName: node
11523+
linkType: hard
11524+
1147311525
"mkdirp-infer-owner@npm:^2.0.0":
1147411526
version: 2.0.0
1147511527
resolution: "mkdirp-infer-owner@npm:2.0.0"
@@ -11773,8 +11825,8 @@ __metadata:
1177311825
linkType: hard
1177411826

1177511827
"node-gyp@npm:latest":
11776-
version: 11.4.2
11777-
resolution: "node-gyp@npm:11.4.2"
11828+
version: 11.5.0
11829+
resolution: "node-gyp@npm:11.5.0"
1177811830
dependencies:
1177911831
env-paths: ^2.2.0
1178011832
exponential-backoff: ^3.1.1
@@ -11788,14 +11840,14 @@ __metadata:
1178811840
which: ^5.0.0
1178911841
bin:
1179011842
node-gyp: bin/node-gyp.js
11791-
checksum: d8041cee7ec60c86fb2961d77c12a2d083a481fb28b08e6d9583153186c0e7766044dc30bdb1f3ac01ddc5763b83caeed3d1ea35787ec4ffd8cc4aeedfc34f2b
11843+
checksum: 6cc29b9d454d9a684c8fe299668db618875bb4282e37717ca5b79689cc5ce99cd553c70944bb367979f2eba40ad6a50afaf7b12a6b214172edc7377384efa051
1179211844
languageName: node
1179311845
linkType: hard
1179411846

1179511847
"node-releases@npm:^2.0.21":
11796-
version: 2.0.23
11797-
resolution: "node-releases@npm:2.0.23"
11798-
checksum: dc3194ffdf04975f8525a5e175c03f5a95cecd7607b6b0e80d28aaa03900706d920722b5f2ae2e8e28e029e6ae75f0d0f7eae87e8ee2a363c704785e3118f13d
11848+
version: 2.0.25
11849+
resolution: "node-releases@npm:2.0.25"
11850+
checksum: 9a23149cf3f6778e62440b1f26f91927aff06c3606a29996f3d196c7c0f5e31c17c24c324b5ef1f571cebef6b5a8db9adce9c09381ca271bc6422aac91463f75
1179911851
languageName: node
1180011852
linkType: hard
1180111853

@@ -15037,6 +15089,19 @@ __metadata:
1503715089
languageName: node
1503815090
linkType: hard
1503915091

15092+
"speech-rule-engine@npm:^4.0.6":
15093+
version: 4.1.2
15094+
resolution: "speech-rule-engine@npm:4.1.2"
15095+
dependencies:
15096+
"@xmldom/xmldom": 0.9.8
15097+
commander: 13.1.0
15098+
wicked-good-xpath: 1.3.0
15099+
bin:
15100+
sre: bin/sre
15101+
checksum: 437e70f6f6a08b35d5339467427d6a74eecf6c1f4a74e551b2c18ad2315c1f6a89ecb801d02c49e92b30df709a3a8e08ad75ae1095c0224c2cd0fddf5f982de9
15102+
languageName: node
15103+
linkType: hard
15104+
1504015105
"split2@npm:^3.0.0":
1504115106
version: 3.2.2
1504215107
resolution: "split2@npm:3.2.2"
@@ -16798,6 +16863,13 @@ __metadata:
1679816863
languageName: node
1679916864
linkType: hard
1680016865

16866+
"wicked-good-xpath@npm:1.3.0":
16867+
version: 1.3.0
16868+
resolution: "wicked-good-xpath@npm:1.3.0"
16869+
checksum: 1aa84bd57426aa07f95d7eca0b0410e841b8e7a35248c9404fa235eaf6a0932c811a96cbdc763c3df18ab76c7644fd8e807d8f185146154d3fc6baf554dcc7e3
16870+
languageName: node
16871+
linkType: hard
16872+
1680116873
"wide-align@npm:^1.1.5":
1680216874
version: 1.1.5
1680316875
resolution: "wide-align@npm:1.1.5"

0 commit comments

Comments
 (0)