@myst-theme/jupyter 0.5.22 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/convertImages.d.ts.map +1 -1
- package/dist/convertImages.js +1 -1
- package/dist/execute/leaf.d.ts.map +1 -1
- package/dist/execute/leaf.js +6 -2
- package/dist/jupyter.d.ts.map +1 -1
- package/dist/jupyter.js +10 -6
- package/dist/plotly.d.ts +12 -0
- package/dist/plotly.d.ts.map +1 -0
- package/dist/plotly.js +37 -0
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convertImages.d.ts","sourceRoot":"","sources":["../src/convertImages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,MAAM,CAAC;AA6B/D,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,cAAc,EAAE,GACxB,OAAO,CAAC,cAAc,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"convertImages.d.ts","sourceRoot":"","sources":["../src/convertImages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,MAAM,CAAC;AA6B/D,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,cAAc,EAAE,GACxB,OAAO,CAAC,cAAc,EAAE,CAAC,CAoC3B"}
|
package/dist/convertImages.js
CHANGED
|
@@ -38,7 +38,7 @@ export function fetchAndEncodeOutputImages(outputs) {
|
|
|
38
38
|
return Promise.all(outputs.map((output) => __awaiter(this, void 0, void 0, function* () {
|
|
39
39
|
if (!('data' in output))
|
|
40
40
|
return output;
|
|
41
|
-
const imageMimetypes = Object.keys(output.data).filter((mimetype) => mimetype !== 'image/svg' && mimetype.startsWith('image/'));
|
|
41
|
+
const imageMimetypes = Object.keys(output.data).filter((mimetype) => mimetype !== 'image/svg' && mimetype !== 'image/svg+xml' && mimetype.startsWith('image/'));
|
|
42
42
|
if (imageMimetypes.length === 0)
|
|
43
43
|
return output;
|
|
44
44
|
// this is an async fetch, so we need to await the result
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaf.d.ts","sourceRoot":"","sources":["../../src/execute/leaf.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"leaf.d.ts","sourceRoot":"","sources":["../../src/execute/leaf.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAY9D,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,GAAG,EACH,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;CAC9C,kDAkBA;AAED,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,YAAY,EACZ,MAAM,EACN,KAAK,EACL,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;CAC9C,QAiDA;AAED,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;CAC9C,QAmFA;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,iBAAiB,CAAC;IACzB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;CAC9C,QA4BA"}
|
package/dist/execute/leaf.js
CHANGED
|
@@ -4,6 +4,7 @@ import { useThebeLoader, useThebeConfig, useThebeServer } from 'thebe-react';
|
|
|
4
4
|
import { notebookFromMdast } from './utils.js';
|
|
5
5
|
import { selectAreAllNotebookScopesBuilt, selectAreAllSessionsStarted, selectNotebookForPage, } from './selectors.js';
|
|
6
6
|
import { useFetchMdast } from 'myst-to-react';
|
|
7
|
+
import { useLoadPlotly } from '../plotly.js';
|
|
7
8
|
export function MdastFetcher({ slug, url, dispatch, }) {
|
|
8
9
|
const { data, error } = useFetchMdast({ remote: true, dataUrl: `${url}.json` });
|
|
9
10
|
useEffect(() => {
|
|
@@ -22,13 +23,16 @@ export function NotebookBuilder({ pageSlug, notebookSlug, idkmap, state, dispatc
|
|
|
22
23
|
const { config } = useThebeConfig();
|
|
23
24
|
const lock = useRef(false); // TODO can be removed if we solve double render from provider
|
|
24
25
|
const scopeHasNotebook = !!((_a = state.pages[pageSlug]) === null || _a === void 0 ? void 0 : _a.scopes[notebookSlug]);
|
|
26
|
+
const { plotly } = useLoadPlotly();
|
|
25
27
|
useEffect(() => {
|
|
26
28
|
var _a;
|
|
27
|
-
if (!core || !config || scopeHasNotebook || lock.current)
|
|
29
|
+
if (!core || !config || !plotly || scopeHasNotebook || lock.current)
|
|
28
30
|
return;
|
|
29
31
|
lock.current = true;
|
|
30
32
|
console.debug(`Jupyter: NotebookBuilder - ${notebookSlug} being added to scope ${pageSlug}`);
|
|
31
33
|
const rendermime = core === null || core === void 0 ? void 0 : core.makeRenderMimeRegistry(config === null || config === void 0 ? void 0 : config.mathjax);
|
|
34
|
+
if (plotly)
|
|
35
|
+
rendermime.addFactory(plotly.rendererFactory, 41);
|
|
32
36
|
const notebook = notebookFromMdast(core, config, pageSlug, notebookSlug, state.mdast[notebookSlug].root, idkmap, rendermime);
|
|
33
37
|
// hook up computable targets
|
|
34
38
|
const computables = (_a = state.pages[pageSlug]) === null || _a === void 0 ? void 0 : _a.computables;
|
|
@@ -42,7 +46,7 @@ export function NotebookBuilder({ pageSlug, notebookSlug, idkmap, state, dispatc
|
|
|
42
46
|
type: 'ADD_NOTEBOOK',
|
|
43
47
|
payload: { pageSlug, notebookSlug, rendermime, notebook },
|
|
44
48
|
});
|
|
45
|
-
}, [core, config, pageSlug, notebookSlug, scopeHasNotebook, lock]);
|
|
49
|
+
}, [core, config, pageSlug, notebookSlug, scopeHasNotebook, lock, plotly]);
|
|
46
50
|
// TODO find a way to check if the all the notebooks are built and do a single dispatch
|
|
47
51
|
// potentilly use a move the loop down into this component
|
|
48
52
|
const allNotebooksAreBuilt = selectAreAllNotebookScopesBuilt(state, pageSlug);
|
package/dist/jupyter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jupyter.d.ts","sourceRoot":"","sources":["../src/jupyter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"jupyter.d.ts","sourceRoot":"","sources":["../src/jupyter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AA4F3C,eAAO,MAAM,cAAc;QACD,MAAM;aAAW,cAAc,EAAE;8CAwD1D,CAAC"}
|
package/dist/jupyter.js
CHANGED
|
@@ -10,6 +10,7 @@ import { useCellExecution } from './execute/index.js';
|
|
|
10
10
|
import { usePlaceholder } from './decoration.js';
|
|
11
11
|
import { MyST } from 'myst-to-react';
|
|
12
12
|
import classNames from 'classnames';
|
|
13
|
+
import { usePlotlyPassively } from './plotly.js';
|
|
13
14
|
function ActiveOutputRenderer({ id, initialData, core, }) {
|
|
14
15
|
var _a;
|
|
15
16
|
const exec = useCellExecution(id);
|
|
@@ -37,15 +38,18 @@ function ActiveOutputRenderer({ id, initialData, core, }) {
|
|
|
37
38
|
return (_jsxs("div", { children: [_jsx("div", { ref: ref, "data-thebe-active-ref": "true", className: classNames('relative', { 'invisible h-0': !executed && placeholder }) }), placeholder && !executed && _jsx(MyST, { ast: placeholder })] }));
|
|
38
39
|
}
|
|
39
40
|
function PassiveOutputRenderer({ id, data, core, }) {
|
|
40
|
-
const
|
|
41
|
+
const rendermime = core.makeRenderMimeRegistry();
|
|
42
|
+
const cell = useRef(new core.PassiveCellRenderer(id, rendermime, undefined));
|
|
41
43
|
const ref = useRef(null);
|
|
44
|
+
const { loaded } = usePlotlyPassively(rendermime, data);
|
|
42
45
|
useEffect(() => {
|
|
43
|
-
var _a;
|
|
44
|
-
if (!ref.current)
|
|
46
|
+
var _a, _b;
|
|
47
|
+
if (!ref.current || !loaded)
|
|
45
48
|
return;
|
|
46
|
-
|
|
47
|
-
cell.current.
|
|
48
|
-
|
|
49
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
50
|
+
cell.current.attachToDOM((_a = ref.current) !== null && _a !== void 0 ? _a : undefined, true);
|
|
51
|
+
cell.current.render((_b = core === null || core === void 0 ? void 0 : core.stripWidgets(data)) !== null && _b !== void 0 ? _b : data);
|
|
52
|
+
}, [ref, loaded]);
|
|
49
53
|
return _jsx("div", { ref: ref, "data-thebe-passive-ref": "true" });
|
|
50
54
|
}
|
|
51
55
|
export const JupyterOutputs = React.memo(({ id, outputs }) => {
|
package/dist/plotly.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IRenderMime, IRenderMimeRegistry } from '@jupyterlab/rendermime';
|
|
2
|
+
import type { IOutput } from '@jupyterlab/nbformat';
|
|
3
|
+
export declare function useLoadPlotly(): {
|
|
4
|
+
plotly: {
|
|
5
|
+
rendererFactory: IRenderMime.IRendererFactory;
|
|
6
|
+
} | undefined;
|
|
7
|
+
};
|
|
8
|
+
export declare function isPlotly(outputs: IOutput[]): boolean;
|
|
9
|
+
export declare function usePlotlyPassively(rendermime: IRenderMimeRegistry, outputs: IOutput[]): {
|
|
10
|
+
loaded: boolean;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=plotly.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plotly.d.ts","sourceRoot":"","sources":["../src/plotly.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,wBAAgB,aAAa;;yBAEN,YAAY,gBAAgB;;EAiBlD;AAID,wBAAgB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAE1C;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,mBAAmB,EAAE,OAAO,EAAE,OAAO,EAAE;;EAoBrF"}
|
package/dist/plotly.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useEffect, useState } from 'react';
|
|
2
|
+
export function useLoadPlotly() {
|
|
3
|
+
const [plotly, setPlotly] = useState();
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
if (plotly)
|
|
6
|
+
return;
|
|
7
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
8
|
+
import('jupyterlab-plotly/lib/plotly-renderer.js').then((module) => {
|
|
9
|
+
console.debug('Jupyter: Adding plotly renderer factory to rendermime registry', {
|
|
10
|
+
module,
|
|
11
|
+
});
|
|
12
|
+
setPlotly(module);
|
|
13
|
+
});
|
|
14
|
+
}, [plotly]);
|
|
15
|
+
return { plotly };
|
|
16
|
+
}
|
|
17
|
+
const PLOTLY_MIMETYPE = 'application/vnd.plotly.v1+json';
|
|
18
|
+
export function isPlotly(outputs) {
|
|
19
|
+
return outputs.some((output) => { var _a; return Object.keys((_a = output.data) !== null && _a !== void 0 ? _a : []).includes(PLOTLY_MIMETYPE); });
|
|
20
|
+
}
|
|
21
|
+
export function usePlotlyPassively(rendermime, outputs) {
|
|
22
|
+
const [loaded, setLoaded] = useState(false);
|
|
23
|
+
const isPlotlyOutput = isPlotly(outputs);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (loaded || !isPlotlyOutput)
|
|
26
|
+
return;
|
|
27
|
+
// eslint-disable-next-line import/no-extraneous-dependencies
|
|
28
|
+
import('jupyterlab-plotly/lib/plotly-renderer.js').then((module) => {
|
|
29
|
+
console.debug('Jupyter: Adding plotly renderer factory to rendermime registry', {
|
|
30
|
+
module,
|
|
31
|
+
});
|
|
32
|
+
rendermime.addFactory(module.rendererFactory, 41);
|
|
33
|
+
setLoaded(true);
|
|
34
|
+
});
|
|
35
|
+
}, [loaded, isPlotlyOutput]);
|
|
36
|
+
return { loaded };
|
|
37
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@myst-theme/jupyter",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -25,16 +25,17 @@
|
|
|
25
25
|
"@curvenote/ansi-to-react": "^7.0.0",
|
|
26
26
|
"@headlessui/react": "^1.7.15",
|
|
27
27
|
"@heroicons/react": "^2.0.18",
|
|
28
|
-
"@myst-theme/providers": "^0.
|
|
28
|
+
"@myst-theme/providers": "^0.6.0",
|
|
29
29
|
"@scienceicons/react": "^0.0.6",
|
|
30
30
|
"buffer": "^6.0.3",
|
|
31
31
|
"classnames": "^2.3.2",
|
|
32
|
+
"jupyterlab-plotly": "^5.18.0",
|
|
32
33
|
"myst-common": "^1.1.18",
|
|
33
34
|
"myst-config": "^1.1.18",
|
|
34
35
|
"myst-frontmatter": "^1.1.18",
|
|
35
36
|
"myst-spec": "^0.0.4",
|
|
36
37
|
"myst-spec-ext": "^1.1.18",
|
|
37
|
-
"myst-to-react": "^0.
|
|
38
|
+
"myst-to-react": "^0.6.0",
|
|
38
39
|
"nanoid": "^4.0.2",
|
|
39
40
|
"nbtx": "^0.2.3",
|
|
40
41
|
"react-syntax-highlighter": "^15.5.0",
|
|
@@ -49,6 +50,5 @@
|
|
|
49
50
|
"@types/react-dom": "^16.8 || ^17.0 || ^18.0",
|
|
50
51
|
"react": "^16.8 || ^17.0 || ^18.0",
|
|
51
52
|
"react-dom": "^16.8 || ^17.0 || ^18.0"
|
|
52
|
-
}
|
|
53
|
-
"devDependencies": {}
|
|
53
|
+
}
|
|
54
54
|
}
|