@myst-theme/jupyter 0.3.8 → 0.4.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/cjs/ErrorTray.d.ts +4 -4
- package/dist/cjs/ErrorTray.d.ts.map +1 -1
- package/dist/cjs/ErrorTray.js +11 -3
- package/dist/cjs/decoration.d.ts +11 -0
- package/dist/cjs/decoration.d.ts.map +1 -0
- package/dist/cjs/decoration.js +39 -0
- package/dist/cjs/embed.d.ts +3 -2
- package/dist/cjs/embed.d.ts.map +1 -1
- package/dist/cjs/embed.js +8 -22
- package/dist/cjs/execute/actions.d.ts +1 -1
- package/dist/cjs/execute/actions.d.ts.map +1 -1
- package/dist/cjs/execute/busy.d.ts +24 -2
- package/dist/cjs/execute/busy.d.ts.map +1 -1
- package/dist/cjs/execute/busy.js +86 -9
- package/dist/cjs/execute/hooks.d.ts +2 -2
- package/dist/cjs/execute/hooks.d.ts.map +1 -1
- package/dist/cjs/execute/hooks.js +14 -6
- package/dist/cjs/execute/provider.d.ts +2 -2
- package/dist/cjs/execute/provider.d.ts.map +1 -1
- package/dist/cjs/execute/provider.js +4 -4
- package/dist/cjs/execute/reducer.js +2 -2
- package/dist/cjs/execute/selectors.d.ts.map +1 -1
- package/dist/cjs/execute/selectors.js +8 -8
- package/dist/cjs/execute/types.d.ts +1 -1
- package/dist/cjs/execute/types.d.ts.map +1 -1
- package/dist/cjs/execute/utils.d.ts.map +1 -1
- package/dist/cjs/execute/utils.js +8 -7
- package/dist/cjs/figure.d.ts +5 -0
- package/dist/cjs/figure.d.ts.map +1 -0
- package/dist/cjs/figure.js +20 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/jupyter.d.ts.map +1 -1
- package/dist/cjs/jupyter.js +20 -6
- package/dist/cjs/output.d.ts +9 -1
- package/dist/cjs/output.d.ts.map +1 -1
- package/dist/cjs/output.js +17 -9
- package/dist/cjs/providers.d.ts +1 -1
- package/dist/cjs/providers.d.ts.map +1 -1
- package/dist/cjs/utils.js +2 -2
- package/dist/esm/ErrorTray.d.ts +4 -4
- package/dist/esm/ErrorTray.d.ts.map +1 -1
- package/dist/esm/ErrorTray.js +11 -3
- package/dist/esm/decoration.d.ts +11 -0
- package/dist/esm/decoration.d.ts.map +1 -0
- package/dist/esm/decoration.js +31 -0
- package/dist/esm/embed.d.ts +3 -2
- package/dist/esm/embed.d.ts.map +1 -1
- package/dist/esm/embed.js +9 -23
- package/dist/esm/execute/actions.d.ts +1 -1
- package/dist/esm/execute/actions.d.ts.map +1 -1
- package/dist/esm/execute/busy.d.ts +24 -2
- package/dist/esm/execute/busy.d.ts.map +1 -1
- package/dist/esm/execute/busy.js +84 -8
- package/dist/esm/execute/hooks.d.ts +2 -2
- package/dist/esm/execute/hooks.d.ts.map +1 -1
- package/dist/esm/execute/hooks.js +13 -5
- package/dist/esm/execute/provider.d.ts +2 -2
- package/dist/esm/execute/provider.d.ts.map +1 -1
- package/dist/esm/execute/provider.js +2 -2
- package/dist/esm/execute/reducer.js +1 -1
- package/dist/esm/execute/selectors.d.ts.map +1 -1
- package/dist/esm/execute/selectors.js +7 -7
- package/dist/esm/execute/types.d.ts +1 -1
- package/dist/esm/execute/types.d.ts.map +1 -1
- package/dist/esm/execute/utils.d.ts.map +1 -1
- package/dist/esm/execute/utils.js +8 -7
- package/dist/esm/figure.d.ts +5 -0
- package/dist/esm/figure.d.ts.map +1 -0
- package/dist/esm/figure.js +16 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/jupyter.d.ts.map +1 -1
- package/dist/esm/jupyter.js +16 -5
- package/dist/esm/output.d.ts +9 -1
- package/dist/esm/output.d.ts.map +1 -1
- package/dist/esm/output.js +15 -8
- package/dist/esm/providers.d.ts +1 -1
- package/dist/esm/providers.d.ts.map +1 -1
- package/dist/esm/utils.js +2 -2
- package/dist/types/ErrorTray.d.ts +4 -4
- package/dist/types/ErrorTray.d.ts.map +1 -1
- package/dist/types/decoration.d.ts +11 -0
- package/dist/types/decoration.d.ts.map +1 -0
- package/dist/types/embed.d.ts +3 -2
- package/dist/types/embed.d.ts.map +1 -1
- package/dist/types/execute/actions.d.ts +1 -1
- package/dist/types/execute/actions.d.ts.map +1 -1
- package/dist/types/execute/busy.d.ts +24 -2
- package/dist/types/execute/busy.d.ts.map +1 -1
- package/dist/types/execute/hooks.d.ts +2 -2
- package/dist/types/execute/hooks.d.ts.map +1 -1
- package/dist/types/execute/provider.d.ts +2 -2
- package/dist/types/execute/provider.d.ts.map +1 -1
- package/dist/types/execute/selectors.d.ts.map +1 -1
- package/dist/types/execute/types.d.ts +1 -1
- package/dist/types/execute/types.d.ts.map +1 -1
- package/dist/types/execute/utils.d.ts.map +1 -1
- package/dist/types/figure.d.ts +5 -0
- package/dist/types/figure.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/jupyter.d.ts.map +1 -1
- package/dist/types/output.d.ts +9 -1
- package/dist/types/output.d.ts.map +1 -1
- package/dist/types/providers.d.ts +1 -1
- package/dist/types/providers.d.ts.map +1 -1
- package/package.json +11 -9
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.selectAreAllSessionsStarted = exports.selectAreAllNotebookScopesBuilt = exports.selectAreAllDependenciesReady = exports.selectSessionsToStart = exports.selectScopeNotebooksToBuild = exports.selectDependenciesToFetch = exports.selectExecutionScopeStatus = exports.selectAreExecutionScopesBuilding = exports.selectAreExecutionScopesReady = exports.selectIsComputable = exports.selectNotebookForPage = exports.selectScopeForPage = void 0;
|
|
4
|
-
const
|
|
4
|
+
const myst_spec_ext_1 = require("myst-spec-ext");
|
|
5
5
|
function selectScopeForPage(state, pageSlug) {
|
|
6
6
|
var _a, _b;
|
|
7
7
|
return (_b = (_a = state.pages[pageSlug]) === null || _a === void 0 ? void 0 : _a.scopes) !== null && _b !== void 0 ? _b : {};
|
|
@@ -43,11 +43,11 @@ function selectDependenciesToFetch(state) {
|
|
|
43
43
|
.reduce((targets, [slug]) => [
|
|
44
44
|
...targets,
|
|
45
45
|
...state.pages[slug].dependencies
|
|
46
|
-
.filter((d) => { var _a; return !state.mdast[(_a = d.slug) !== null && _a !== void 0 ? _a : d.url]; })
|
|
46
|
+
.filter((d) => { var _a; return !state.mdast[((_a = d.slug) !== null && _a !== void 0 ? _a : d.url)]; })
|
|
47
47
|
.map((d) => {
|
|
48
48
|
var _a;
|
|
49
49
|
return ({
|
|
50
|
-
slug: (_a = d.slug) !== null && _a !== void 0 ? _a : d.url,
|
|
50
|
+
slug: ((_a = d.slug) !== null && _a !== void 0 ? _a : d.url),
|
|
51
51
|
url: d.url,
|
|
52
52
|
});
|
|
53
53
|
}),
|
|
@@ -61,13 +61,13 @@ function makeSelectScopeEventStatus(statusName) {
|
|
|
61
61
|
.filter(([, { status }]) => status === statusName)
|
|
62
62
|
.reduce((all, [slug]) => {
|
|
63
63
|
const targets = [];
|
|
64
|
-
if (state.pages[slug].kind ===
|
|
64
|
+
if (state.pages[slug].kind === myst_spec_ext_1.SourceFileKind.Notebook)
|
|
65
65
|
targets.push({ pageSlug: slug, notebookSlug: slug });
|
|
66
66
|
targets.push(...state.pages[slug].dependencies.map((d) => {
|
|
67
67
|
var _a;
|
|
68
68
|
return ({
|
|
69
69
|
pageSlug: slug,
|
|
70
|
-
notebookSlug: (_a = d.slug) !== null && _a !== void 0 ? _a : d.url,
|
|
70
|
+
notebookSlug: ((_a = d.slug) !== null && _a !== void 0 ? _a : d.url),
|
|
71
71
|
});
|
|
72
72
|
}));
|
|
73
73
|
return [...all, ...targets];
|
|
@@ -78,17 +78,17 @@ exports.selectScopeNotebooksToBuild = makeSelectScopeEventStatus('build-notebook
|
|
|
78
78
|
exports.selectSessionsToStart = makeSelectScopeEventStatus('start-session');
|
|
79
79
|
function selectAreAllDependenciesReady(state, slug) {
|
|
80
80
|
var _a;
|
|
81
|
-
return (_a = state.pages[slug]) === null || _a === void 0 ? void 0 : _a.dependencies.every((dep) => { var _a; return !!state.mdast[(_a = dep.slug) !== null && _a !== void 0 ? _a : dep.url]; });
|
|
81
|
+
return (_a = state.pages[slug]) === null || _a === void 0 ? void 0 : _a.dependencies.every((dep) => { var _a; return !!state.mdast[((_a = dep.slug) !== null && _a !== void 0 ? _a : dep.url)]; });
|
|
82
82
|
}
|
|
83
83
|
exports.selectAreAllDependenciesReady = selectAreAllDependenciesReady;
|
|
84
84
|
function selectAreAllNotebookScopesBuilt(state, slug) {
|
|
85
85
|
const rendering = state.pages[slug];
|
|
86
|
-
return rendering === null || rendering === void 0 ? void 0 : rendering.dependencies.every((dep) => { var _a; return !!rendering.scopes[(_a = dep.slug) !== null && _a !== void 0 ? _a : dep.url]; });
|
|
86
|
+
return rendering === null || rendering === void 0 ? void 0 : rendering.dependencies.every((dep) => { var _a; return !!rendering.scopes[((_a = dep.slug) !== null && _a !== void 0 ? _a : dep.url)]; });
|
|
87
87
|
}
|
|
88
88
|
exports.selectAreAllNotebookScopesBuilt = selectAreAllNotebookScopesBuilt;
|
|
89
89
|
function selectAreAllSessionsStarted(state, slug) {
|
|
90
90
|
const rendering = state.pages[slug];
|
|
91
91
|
// TODO is this working??
|
|
92
|
-
return rendering === null || rendering === void 0 ? void 0 : rendering.dependencies.every((dep) => { var _a, _b; return !!((_b = rendering.scopes[(_a = dep.slug) !== null && _a !== void 0 ? _a : dep.url]) === null || _b === void 0 ? void 0 : _b.session); });
|
|
92
|
+
return rendering === null || rendering === void 0 ? void 0 : rendering.dependencies.every((dep) => { var _a, _b; return !!((_b = rendering.scopes[((_a = dep.slug) !== null && _a !== void 0 ? _a : dep.url)]) === null || _b === void 0 ? void 0 : _b.session); });
|
|
93
93
|
}
|
|
94
94
|
exports.selectAreAllSessionsStarted = selectAreAllSessionsStarted;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Root } from 'mdast';
|
|
2
|
-
import type { SourceFileKind, Dependency } from 'myst-
|
|
2
|
+
import type { SourceFileKind, Dependency } from 'myst-spec-ext';
|
|
3
3
|
import type { IRenderMimeRegistry, ThebeNotebook, ThebeSession } from 'thebe-core';
|
|
4
4
|
export type BuildStatus = 'pending' | 'fetching' | 'build-notebooks' | 'wait-for-server' | 'start-session' | 'error';
|
|
5
5
|
export type IdOrKey = string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/execute/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/execute/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEnF,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,UAAU,GACV,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GACf,OAAO,CAAC;AAEZ,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAC7B,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAC5B,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AACxF,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE;QACL,CAAC,IAAI,EAAE,MAAM,GAAG;YACd,IAAI,EAAE,IAAI,CAAC;SACZ,CAAC;KACH,CAAC;IACF,KAAK,EAAE;QACL,CAAC,QAAQ,EAAE,MAAM,GAAG;YAClB,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,cAAc,CAAC;YACrB,UAAU,EAAE,OAAO,CAAC;YACpB,YAAY,EAAE,UAAU,EAAE,CAAC;YAC3B,WAAW,EAAE,UAAU,EAAE,CAAC;YAC1B,KAAK,EAAE,OAAO,CAAC;YACf,MAAM,EAAE;gBACN,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CAAC;aACxC,CAAC;SACH,CAAC;KACH,CAAC;IACF,MAAM,EAAE;QACN,CAAC,QAAQ,EAAE,MAAM,GAAG;YAClB,MAAM,EAAE,WAAW,CAAC;SACrB,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,mBAAmB,CAAC;IAChC,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/execute/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,SAAS,CAAC;AAExD;;;;;;;;;;;;;;;;;GAiBG;AAEH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,EAChB,UAAU,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/execute/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,SAAS,CAAC;AAExD;;;;;;;;;;;;;;;;;GAiBG;AAEH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,QAAQ,EAChB,UAAU,EAAE,mBAAmB,oDAuDhC"}
|
|
@@ -40,20 +40,21 @@ function notebookFromMdast(core, config, pageSlug, notebookSlug, mdast, idkmap,
|
|
|
40
40
|
notebookSlug,
|
|
41
41
|
cellId: block.key,
|
|
42
42
|
};
|
|
43
|
-
idkmap[block.key] = target;
|
|
44
|
-
idkmap[
|
|
45
|
-
|
|
46
|
-
// include block labels to enable lookup by from embedded blocks
|
|
47
|
-
if (block.label)
|
|
48
|
-
idkmap[block.label] = target;
|
|
43
|
+
idkmap[block.key] = target; // can reference from block in notebook views
|
|
44
|
+
idkmap[output.id] = target; // can reference from output in article views
|
|
45
|
+
// include identifiers to enable lookup by (normalized) labels
|
|
49
46
|
if (block.identifier)
|
|
50
47
|
idkmap[block.identifier] = target;
|
|
48
|
+
if (codeCell.identifier)
|
|
49
|
+
idkmap[codeCell.identifier] = target;
|
|
50
|
+
if (output.identifier)
|
|
51
|
+
idkmap[output.identifier] = target;
|
|
51
52
|
return new core.ThebeCodeCell(target.cellId, notebook.id, (_a = codeCell.value) !== null && _a !== void 0 ? _a : '', config, (_b = block.data) !== null && _b !== void 0 ? _b : {}, notebook.rendermime);
|
|
52
53
|
}
|
|
53
54
|
else {
|
|
54
55
|
// assume content - concatenate it
|
|
55
56
|
// TODO inject cell metadata
|
|
56
|
-
const cell = new core.
|
|
57
|
+
const cell = new core.ThebeMarkdownCell(block.key, notebook.id, block.children.reduce((acc, child) => { var _a; return acc + '\n' + ((_a = child.value) !== null && _a !== void 0 ? _a : ''); }, ''), (_c = block.data) !== null && _c !== void 0 ? _c : {}, notebook.rendermime);
|
|
57
58
|
return cell;
|
|
58
59
|
}
|
|
59
60
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"figure.d.ts","sourceRoot":"","sources":["../../src/figure.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,2CAoBrD"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Figure = void 0;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const myst_spec_ext_1 = require("myst-spec-ext");
|
|
6
|
+
const myst_to_react_1 = require("myst-to-react");
|
|
7
|
+
const decoration_1 = require("./decoration");
|
|
8
|
+
function Figure({ node }) {
|
|
9
|
+
var _a, _b, _c, _d, _e, _f;
|
|
10
|
+
const { container: Container } = myst_to_react_1.DEFAULT_RENDERERS;
|
|
11
|
+
const isFromJupyer = ((_a = node.source) === null || _a === void 0 ? void 0 : _a.kind) === myst_spec_ext_1.SourceFileKind.Notebook;
|
|
12
|
+
const output = (_b = node.children) === null || _b === void 0 ? void 0 : _b.find((child) => child.type === 'output');
|
|
13
|
+
if (isFromJupyer && !!output) {
|
|
14
|
+
const placeholder = (_c = node.children) === null || _c === void 0 ? void 0 : _c.find((child) => child.type === 'image' && child.placeholder);
|
|
15
|
+
const others = (_d = node.children) === null || _d === void 0 ? void 0 : _d.filter((child) => !(child.type === 'image' && child.placeholder));
|
|
16
|
+
return ((0, jsx_runtime_1.jsx)(decoration_1.OutputDecoration, { outputId: output.id, placeholder: placeholder, title: (_e = node.source) === null || _e === void 0 ? void 0 : _e.title, url: (_f = node.source) === null || _f === void 0 ? void 0 : _f.url, children: (0, jsx_runtime_1.jsx)(myst_to_react_1.MyST, { ast: others }) }, node.key));
|
|
17
|
+
}
|
|
18
|
+
return (0, jsx_runtime_1.jsx)(Container, { node: node });
|
|
19
|
+
}
|
|
20
|
+
exports.Figure = Figure;
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Embed } from './embed';
|
|
2
2
|
import { Output } from './output';
|
|
3
|
+
import { Figure } from './figure';
|
|
3
4
|
declare const OUTPUT_RENDERERS: {
|
|
4
5
|
output: typeof Output;
|
|
5
6
|
embed: typeof Embed;
|
|
7
|
+
container: typeof Figure;
|
|
6
8
|
};
|
|
7
9
|
export * from './BinderBadge';
|
|
8
10
|
export * from './ErrorTray';
|
package/dist/cjs/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,QAAA,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,QAAA,MAAM,gBAAgB;;;;CAIrB,CAAC;AAEF,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAE3B,eAAe,gBAAgB,CAAC"}
|
package/dist/cjs/index.js
CHANGED
|
@@ -16,9 +16,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
const embed_1 = require("./embed");
|
|
18
18
|
const output_1 = require("./output");
|
|
19
|
+
const figure_1 = require("./figure");
|
|
19
20
|
const OUTPUT_RENDERERS = {
|
|
20
21
|
output: output_1.Output,
|
|
21
22
|
embed: embed_1.Embed,
|
|
23
|
+
container: figure_1.Figure,
|
|
22
24
|
};
|
|
23
25
|
__exportStar(require("./BinderBadge"), exports);
|
|
24
26
|
__exportStar(require("./ErrorTray"), exports);
|
|
@@ -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;AAsF3C,eAAO,MAAM,cAAc;QACD,MAAM;aAAW,cAAc,EAAE;8CAwD1D,CAAC"}
|
package/dist/cjs/jupyter.js
CHANGED
|
@@ -22,6 +22,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
25
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
29
|
exports.JupyterOutputs = void 0;
|
|
27
30
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
@@ -29,17 +32,22 @@ const react_1 = __importStar(require("react"));
|
|
|
29
32
|
const hooks_1 = require("./hooks");
|
|
30
33
|
const nbtx_1 = require("nbtx");
|
|
31
34
|
const convertImages_1 = require("./convertImages");
|
|
32
|
-
const
|
|
35
|
+
const myst_spec_ext_1 = require("myst-spec-ext");
|
|
33
36
|
const providers_1 = require("@myst-theme/providers");
|
|
34
37
|
const thebe_react_1 = require("thebe-react");
|
|
35
38
|
const execute_1 = require("./execute");
|
|
39
|
+
const decoration_1 = require("./decoration");
|
|
40
|
+
const myst_to_react_1 = require("myst-to-react");
|
|
41
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
36
42
|
function ActiveOutputRenderer({ id, initialData, core, }) {
|
|
43
|
+
var _a;
|
|
37
44
|
const exec = (0, execute_1.useCellExecution)(id);
|
|
45
|
+
const placeholder = (0, decoration_1.usePlaceholder)();
|
|
38
46
|
const ref = (0, react_1.useRef)(null);
|
|
39
47
|
(0, react_1.useEffect)(() => {
|
|
40
48
|
var _a, _b, _c;
|
|
41
49
|
if (!ref.current || !(exec === null || exec === void 0 ? void 0 : exec.cell)) {
|
|
42
|
-
console.debug(`Jupyter: No cell ref available for cell ${(_a = exec === null || exec === void 0 ? void 0 : exec.cell) === null || _a === void 0 ? void 0 : _a.id}`);
|
|
50
|
+
console.debug(`Jupyter: No cell ref available for cell ${id}:${(_a = exec === null || exec === void 0 ? void 0 : exec.cell) === null || _a === void 0 ? void 0 : _a.id}`);
|
|
43
51
|
return;
|
|
44
52
|
}
|
|
45
53
|
const verb = exec.cell.isAttachedToDOM ? 'reattaching' : 'attaching';
|
|
@@ -50,12 +58,14 @@ function ActiveOutputRenderer({ id, initialData, core, }) {
|
|
|
50
58
|
});
|
|
51
59
|
exec.cell.attachToDOM(ref.current);
|
|
52
60
|
if (exec.cell.executionCount == null) {
|
|
53
|
-
exec.cell.initOutputs((_c = core === null || core === void 0 ? void 0 : core.stripWidgets(initialData)) !== null && _c !== void 0 ? _c : initialData);
|
|
61
|
+
exec.cell.initOutputs((_c = core === null || core === void 0 ? void 0 : core.stripWidgets(initialData, true, placeholder ? () => '' : undefined)) !== null && _c !== void 0 ? _c : initialData);
|
|
54
62
|
}
|
|
55
63
|
}, [ref === null || ref === void 0 ? void 0 : ref.current, exec === null || exec === void 0 ? void 0 : exec.cell]);
|
|
56
|
-
|
|
64
|
+
const executed = ((_a = exec === null || exec === void 0 ? void 0 : exec.cell) === null || _a === void 0 ? void 0 : _a.executionCount) != null;
|
|
65
|
+
console.debug(`Jupyter: Cell ${id} executed: ${executed}; Show output: ${executed || !placeholder}`);
|
|
66
|
+
return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { ref: ref, "data-thebe-active-ref": "true", className: (0, classnames_1.default)('relative', { 'invisible h-0': !executed && placeholder }) }), placeholder && !executed && (0, jsx_runtime_1.jsx)(myst_to_react_1.MyST, { ast: placeholder })] }));
|
|
57
67
|
}
|
|
58
|
-
function PassiveOutputRenderer({ id, data, core,
|
|
68
|
+
function PassiveOutputRenderer({ id, data, core, }) {
|
|
59
69
|
const cell = (0, react_1.useRef)(new core.PassiveCellRenderer(id, undefined, undefined));
|
|
60
70
|
const ref = (0, react_1.useRef)(null);
|
|
61
71
|
(0, react_1.useEffect)(() => {
|
|
@@ -73,6 +83,7 @@ exports.JupyterOutputs = react_1.default.memo(({ id, outputs }) => {
|
|
|
73
83
|
const { data, error } = (0, hooks_1.useFetchAnyTruncatedContent)(outputs);
|
|
74
84
|
const [fullOutputs, setFullOutputs] = (0, react_1.useState)(null);
|
|
75
85
|
const exec = (0, execute_1.useCellExecution)(id);
|
|
86
|
+
const placeholder = (0, decoration_1.usePlaceholder)();
|
|
76
87
|
(0, react_1.useEffect)(() => {
|
|
77
88
|
if (core)
|
|
78
89
|
return;
|
|
@@ -93,5 +104,8 @@ exports.JupyterOutputs = react_1.default.memo(({ id, outputs }) => {
|
|
|
93
104
|
if (!inCrossRef && (exec === null || exec === void 0 ? void 0 : exec.ready)) {
|
|
94
105
|
return ((0, jsx_runtime_1.jsxs)("div", { children: [!fullOutputs && (0, jsx_runtime_1.jsx)("div", { className: "p-2.5", children: "Fetching full output data..." }), core && fullOutputs && ((0, jsx_runtime_1.jsx)(ActiveOutputRenderer, { id: id, initialData: fullOutputs, core: core }, id))] }));
|
|
95
106
|
}
|
|
96
|
-
|
|
107
|
+
if (placeholder) {
|
|
108
|
+
return (0, jsx_runtime_1.jsx)(myst_to_react_1.MyST, { ast: placeholder });
|
|
109
|
+
}
|
|
110
|
+
return ((0, jsx_runtime_1.jsxs)("div", { children: [!fullOutputs && (0, jsx_runtime_1.jsx)("div", { className: "p-2.5", children: "Loading..." }), fullOutputs && core && ((0, jsx_runtime_1.jsx)(PassiveOutputRenderer, { id: id, data: fullOutputs, core: core, kind: myst_spec_ext_1.SourceFileKind.Notebook }))] }));
|
|
97
111
|
});
|
package/dist/cjs/output.d.ts
CHANGED
|
@@ -3,5 +3,13 @@ import type { MinifiedOutput } from 'nbtx';
|
|
|
3
3
|
export declare const DIRECT_OUTPUT_TYPES: Set<string>;
|
|
4
4
|
export declare const DIRECT_MIME_TYPES: Set<string>;
|
|
5
5
|
export declare function allOutputsAreSafe(outputs: MinifiedOutput[], directOutputTypes: Set<string>, directMimeTypes: Set<string>): boolean;
|
|
6
|
-
export declare function
|
|
6
|
+
export declare function JupyterOutput({ outputId, identifier, data, align, }: {
|
|
7
|
+
outputId: string;
|
|
8
|
+
identifier?: string;
|
|
9
|
+
data: MinifiedOutput[];
|
|
10
|
+
align?: 'left' | 'center' | 'right';
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export declare function Output({ node }: {
|
|
13
|
+
node: GenericNode;
|
|
14
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
15
|
//# sourceMappingURL=output.d.ts.map
|
package/dist/cjs/output.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/output.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/output.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,MAAM,CAAC;AAS/D,eAAO,MAAM,mBAAmB,aAA+B,CAAC;AAEhE,eAAO,MAAM,iBAAiB,aAMb,CAAC;AAElB,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,cAAc,EAAE,EACzB,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,EAC9B,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,WAY7B;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,UAAU,EACV,IAAI,EACJ,KAAK,GACN,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CACrC,2CAqCA;AAED,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,2CASrD"}
|
package/dist/cjs/output.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Output = exports.allOutputsAreSafe = exports.DIRECT_MIME_TYPES = exports.DIRECT_OUTPUT_TYPES = void 0;
|
|
6
|
+
exports.Output = exports.JupyterOutput = exports.allOutputsAreSafe = exports.DIRECT_MIME_TYPES = exports.DIRECT_OUTPUT_TYPES = void 0;
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const nbtx_1 = require("nbtx");
|
|
9
9
|
const classnames_1 = __importDefault(require("classnames"));
|
|
@@ -11,6 +11,8 @@ const safe_1 = require("./safe");
|
|
|
11
11
|
const jupyter_1 = require("./jupyter");
|
|
12
12
|
const react_1 = require("react");
|
|
13
13
|
const execute_1 = require("./execute");
|
|
14
|
+
const decoration_1 = require("./decoration");
|
|
15
|
+
const myst_to_react_1 = require("myst-to-react");
|
|
14
16
|
exports.DIRECT_OUTPUT_TYPES = new Set(['stream', 'error']);
|
|
15
17
|
exports.DIRECT_MIME_TYPES = new Set([
|
|
16
18
|
nbtx_1.KnownCellOutputMimeTypes.TextPlain,
|
|
@@ -32,25 +34,31 @@ function allOutputsAreSafe(outputs, directOutputTypes, directMimeTypes) {
|
|
|
32
34
|
}, true);
|
|
33
35
|
}
|
|
34
36
|
exports.allOutputsAreSafe = allOutputsAreSafe;
|
|
35
|
-
function JupyterOutput({
|
|
36
|
-
const { ready } = (0, execute_1.useCellExecution)(
|
|
37
|
+
function JupyterOutput({ outputId, identifier, data, align, }) {
|
|
38
|
+
const { ready } = (0, execute_1.useCellExecution)(outputId);
|
|
37
39
|
const outputs = data;
|
|
38
40
|
const allSafe = (0, react_1.useMemo)(() => allOutputsAreSafe(outputs, exports.DIRECT_OUTPUT_TYPES, exports.DIRECT_MIME_TYPES), [outputs]);
|
|
41
|
+
const placeholder = (0, decoration_1.usePlaceholder)();
|
|
39
42
|
let component;
|
|
40
43
|
if (allSafe && !ready) {
|
|
41
|
-
|
|
44
|
+
if (placeholder && (!outputs || outputs.length === 0)) {
|
|
45
|
+
if (placeholder) {
|
|
46
|
+
return (0, jsx_runtime_1.jsx)(myst_to_react_1.MyST, { ast: placeholder });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
component = (0, jsx_runtime_1.jsx)(safe_1.SafeOutputs, { keyStub: outputId, outputs: outputs });
|
|
42
50
|
}
|
|
43
51
|
else {
|
|
44
|
-
component = (0, jsx_runtime_1.jsx)(jupyter_1.JupyterOutputs, { id:
|
|
52
|
+
component = (0, jsx_runtime_1.jsx)(jupyter_1.JupyterOutputs, { id: outputId, outputs: outputs });
|
|
45
53
|
}
|
|
46
|
-
return ((0, jsx_runtime_1.jsx)("figure", { id: identifier || undefined, "data-mdast-node-
|
|
54
|
+
return ((0, jsx_runtime_1.jsx)("figure", { id: identifier || undefined, "data-mdast-node-id": outputId, className: (0, classnames_1.default)('max-w-full overflow-y-visible overflow-x-auto m-0 group not-prose relative', {
|
|
47
55
|
'text-left': !align || align === 'left',
|
|
48
56
|
'text-center': align === 'center',
|
|
49
57
|
'text-right': align === 'right',
|
|
50
58
|
}), children: component }));
|
|
51
59
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return ((0, jsx_runtime_1.jsx)(JupyterOutput, {
|
|
60
|
+
exports.JupyterOutput = JupyterOutput;
|
|
61
|
+
function Output({ node }) {
|
|
62
|
+
return ((0, jsx_runtime_1.jsx)(JupyterOutput, { outputId: node.id, identifier: node.identifier, align: node.align, data: node.data }));
|
|
55
63
|
}
|
|
56
64
|
exports.Output = Output;
|
package/dist/cjs/providers.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/providers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/providers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAIlC,wBAAgB,iBAAiB;;;;;;;;;;EAuBhC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,WAAW,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAA;CAAE,WAGhG;AAED,wBAAgB,6BAA6B,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,iBAAiB,2CAalF;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,IAAI,CAAC;CACb,CAAC"}
|
package/dist/cjs/utils.js
CHANGED
|
@@ -51,7 +51,7 @@ function thebeFrontmatterToOptions(fm, githubBadgeUrl, binderBadgeUrl) {
|
|
|
51
51
|
thebeOptions.savedSessionOptions = { enabled: false };
|
|
52
52
|
}
|
|
53
53
|
// handle thebe.local.*
|
|
54
|
-
// as local
|
|
54
|
+
// as local OVERRIDES other binder and server settings, handle these first
|
|
55
55
|
// TODO need to expose NODE_ENV somehow via a loader
|
|
56
56
|
let NODE_ENV = 'development';
|
|
57
57
|
if (typeof window !== 'undefined') {
|
|
@@ -74,7 +74,7 @@ function thebeFrontmatterToOptions(fm, githubBadgeUrl, binderBadgeUrl) {
|
|
|
74
74
|
return thebeOptions;
|
|
75
75
|
// else just fall through & return - TODO return early?
|
|
76
76
|
}
|
|
77
|
-
// handle additional
|
|
77
|
+
// handle additional options
|
|
78
78
|
if (kernelName) {
|
|
79
79
|
thebeOptions.kernelOptions = {
|
|
80
80
|
kernelName: kernelName,
|
package/dist/esm/ErrorTray.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
1
|
+
export declare function ErrorTray({ pageSlug, index }: {
|
|
2
|
+
pageSlug: string;
|
|
3
|
+
index?: string;
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
5
5
|
//# sourceMappingURL=ErrorTray.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorTray.d.ts","sourceRoot":"","sources":["../../src/ErrorTray.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ErrorTray.d.ts","sourceRoot":"","sources":["../../src/ErrorTray.tsx"],"names":[],"mappings":"AAmDA,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,kDAkBlF"}
|
package/dist/esm/ErrorTray.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useEffect, useState } from 'react';
|
|
3
3
|
import { useThebeLoader } from 'thebe-react';
|
|
4
|
+
import { useBusyErrors } from './execute/busy';
|
|
4
5
|
function ErrorDecoration({ children, idx }) {
|
|
5
6
|
return (_jsxs("div", { className: "relative py-3 mx-2 my-8 border rounded", children: [_jsx("div", { className: "absolute z-10 flex items-center bg-white -top-3 -left-2", children: idx && _jsxs("div", { className: "ml-1 text-sm text-gray-500", children: ["cell #: ", idx] }) }), _jsx("div", { className: "mx-3", children: children })] }));
|
|
6
7
|
}
|
|
@@ -23,8 +24,15 @@ function ErrorTrayMessage({ errors }) {
|
|
|
23
24
|
}, [core, errors]);
|
|
24
25
|
if (!core)
|
|
25
26
|
return null;
|
|
26
|
-
return (_jsx("div", { children: errors.map((error, idx) => (_jsx("div", { className: "min-w-[400px]", children: _jsx(ErrorDecoration, { idx: error.index, children: _jsx("div", { className: "z-100", ref: refs[idx] }, error.id) }) }))) }));
|
|
27
|
+
return (_jsx("div", { children: errors.map((error, idx) => (_jsx("div", { className: "not-prose min-w-[400px]", children: _jsx(ErrorDecoration, { idx: error.index, children: _jsx("div", { className: "z-100", ref: refs[idx] }, error.id) }) }))) }));
|
|
27
28
|
}
|
|
28
|
-
export function ErrorTray({
|
|
29
|
-
|
|
29
|
+
export function ErrorTray({ pageSlug, index }) {
|
|
30
|
+
const { items } = useBusyErrors(pageSlug);
|
|
31
|
+
if (!items || items.length === 0)
|
|
32
|
+
return null;
|
|
33
|
+
if (index && index)
|
|
34
|
+
return null;
|
|
35
|
+
return (_jsx("div", { className: "relative px-4 pt-3 mt-8 text-sm text-red-600 border border-red-400 rounded border-1", children: items.map(({ notebookSlug, errors }) => {
|
|
36
|
+
return (_jsxs("div", { children: [_jsxs("div", { children: [_jsx("span", { className: "font-bold", children: "Error" }), " in notebook ", _jsxs("span", { children: ["\"", notebookSlug, "\""] })] }), _jsx(ErrorTrayMessage, { errors: errors })] }));
|
|
37
|
+
}) }));
|
|
30
38
|
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { GenericNode } from 'myst-common';
|
|
3
|
+
export declare function usePlaceholder(): GenericNode | undefined;
|
|
4
|
+
export declare function OutputDecoration({ outputId, placeholder, children, title, url, }: {
|
|
5
|
+
outputId: string;
|
|
6
|
+
placeholder?: GenericNode;
|
|
7
|
+
children?: React.ReactNode;
|
|
8
|
+
title?: string;
|
|
9
|
+
url?: string;
|
|
10
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=decoration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decoration.d.ts","sourceRoot":"","sources":["../../src/decoration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAqB/C,wBAAgB,cAAc,4BAG7B;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,KAA0B,EAC1B,GAAG,GACJ,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,2CAyDA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { SourceFileKind } from 'myst-spec-ext';
|
|
4
|
+
import { useCellExecution } from './execute';
|
|
5
|
+
import { ArticleResetNotebook, ArticleRunNotebook, ArticleStatusBadge, } from './controls/ArticleCellControls';
|
|
6
|
+
import { JupyterIcon } from '@scienceicons/react/24/solid';
|
|
7
|
+
import { useLinkProvider, useBaseurl, withBaseurl } from '@myst-theme/providers';
|
|
8
|
+
const PlaceholderContext = React.createContext({});
|
|
9
|
+
function PlaceholderProvider({ placeholder, children, }) {
|
|
10
|
+
const value = React.useMemo(() => ({ placeholder }), [placeholder]);
|
|
11
|
+
return _jsx(PlaceholderContext.Provider, { value: value, children: children });
|
|
12
|
+
}
|
|
13
|
+
export function usePlaceholder() {
|
|
14
|
+
const context = React.useContext(PlaceholderContext);
|
|
15
|
+
return context.placeholder;
|
|
16
|
+
}
|
|
17
|
+
export function OutputDecoration({ outputId, placeholder, children, title = 'Jupyter Notebook', url, }) {
|
|
18
|
+
const { canCompute, kind } = useCellExecution(outputId);
|
|
19
|
+
const Link = useLinkProvider();
|
|
20
|
+
const baseurl = useBaseurl();
|
|
21
|
+
const showComputeControls = canCompute && kind === SourceFileKind.Article;
|
|
22
|
+
if (showComputeControls) {
|
|
23
|
+
return (_jsxs("div", { className: "mb-4 shadow", children: [_jsx("div", { className: "sticky top-[60px] z-[2] w-full bg-gray-100/80 backdrop-blur dark:bg-neutral-800/80 py-1 px-2", children: _jsxs("div", { className: "flex items-center", children: [_jsxs("div", { className: "flex items-center", children: [_jsx(JupyterIcon, { className: "inline-block w-5 h-5" }), _jsx("span", { className: "ml-2", children: "Source:" }), url && (_jsx(Link, { to: withBaseurl(url, baseurl), className: "ml-2 no-underline text-normal hover:underline", children: title }))] }), _jsx("div", { className: "flex-grow" }), _jsx(ArticleStatusBadge, { id: outputId }), _jsx(ArticleRunNotebook, { id: outputId }), _jsx(ArticleResetNotebook, { id: outputId })] }) }), _jsx(PlaceholderProvider, { placeholder: placeholder, children: children })] }));
|
|
24
|
+
}
|
|
25
|
+
// light
|
|
26
|
+
if (kind === SourceFileKind.Article) {
|
|
27
|
+
return (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex items-center justify-end text-xs", children: [_jsx(JupyterIcon, { className: "inline-block w-3 h-3" }), _jsx("div", { className: "ml-1", children: "Source:" }), url && (_jsx(Link, { to: withBaseurl(url, baseurl), className: "ml-1 no-underline text-normal hover:underline", children: title }))] }), _jsx(PlaceholderProvider, { placeholder: placeholder, children: children })] }));
|
|
28
|
+
}
|
|
29
|
+
// Notebook outputs do not need any decoration
|
|
30
|
+
return _jsx(_Fragment, { children: children });
|
|
31
|
+
}
|
package/dist/esm/embed.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { type GenericNode } from 'myst-common';
|
|
3
|
-
export declare function Embed(node
|
|
2
|
+
export declare function Embed({ node }: {
|
|
3
|
+
node: GenericNode;
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
4
5
|
//# sourceMappingURL=embed.d.ts.map
|
package/dist/esm/embed.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/embed.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../../src/embed.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C,wBAAgB,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,2CAkBpD"}
|
package/dist/esm/embed.js
CHANGED
|
@@ -1,25 +1,11 @@
|
|
|
1
|
-
import { jsx as _jsx
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
function EmbedWithControls({ outputKey, children, title = 'Jupyter Notebook', url, }) {
|
|
9
|
-
const { canCompute, kind } = useCellExecution(outputKey);
|
|
10
|
-
const Link = useLinkProvider();
|
|
11
|
-
const baseurl = useBaseurl();
|
|
12
|
-
const showComputeControls = canCompute && kind === SourceFileKind.Article;
|
|
13
|
-
if (showComputeControls) {
|
|
14
|
-
return (_jsxs("div", { className: "shadow", children: [_jsx("div", { className: "sticky top-[60px] z-[2] w-full bg-gray-100/80 backdrop-blur dark:bg-neutral-800/80 py-1 px-2", children: _jsxs("div", { className: "flex items-center", children: [_jsxs("div", { className: "flex items-center", children: [_jsx(JupyterIcon, { className: "inline-block w-5 h-5" }), _jsx("span", { className: "ml-2", children: "Source:" }), url && (_jsx(Link, { to: withBaseurl(url, baseurl), className: "ml-2 no-underline text-normal hover:underline", children: title }))] }), _jsx("div", { className: "flex-grow" }), _jsx(ArticleStatusBadge, { id: outputKey }), _jsx(ArticleRunNotebook, { id: outputKey }), _jsx(ArticleResetNotebook, { id: outputKey })] }) }), _jsx("div", { className: "mt-2", children: children })] }));
|
|
15
|
-
}
|
|
16
|
-
// light
|
|
17
|
-
return (_jsxs(_Fragment, { children: [children, _jsxs("div", { className: "flex items-center justify-end text-xs", children: [_jsx(JupyterIcon, { className: "inline-block w-3 h-3" }), _jsx("div", { className: "ml-1", children: "Source:" }), url && (_jsx(Link, { to: withBaseurl(url, baseurl), className: "ml-1 no-underline text-normal hover:underline", children: title }))] })] }));
|
|
18
|
-
}
|
|
19
|
-
export function Embed(node, children) {
|
|
20
|
-
var _a, _b;
|
|
21
|
-
const output = select('output', node);
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { JupyterOutput } from './output';
|
|
3
|
+
import { OutputDecoration } from './decoration';
|
|
4
|
+
import { MyST } from 'myst-to-react';
|
|
5
|
+
export function Embed({ node }) {
|
|
6
|
+
var _a, _b, _c;
|
|
7
|
+
const output = (_a = node.children) === null || _a === void 0 ? void 0 : _a.find((child) => child.type === 'output');
|
|
22
8
|
if (!output)
|
|
23
|
-
return _jsx(
|
|
24
|
-
return (_jsx(
|
|
9
|
+
return _jsx(MyST, { ast: node.children });
|
|
10
|
+
return (_jsx(OutputDecoration, { outputId: output.id, title: (_b = node.source) === null || _b === void 0 ? void 0 : _b.title, url: (_c = node.source) === null || _c === void 0 ? void 0 : _c.url, children: _jsx(JupyterOutput, { outputId: output.id, identifier: output.identifier, align: node.align, data: node.data }) }, node.key));
|
|
25
11
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SourceFileKind, Dependency } from 'myst-spec-ext';
|
|
2
2
|
import type { Root } from 'mdast';
|
|
3
3
|
import type { BuildStatus, Computable } from './types';
|
|
4
4
|
import type { IRenderMimeRegistry, ThebeNotebook, ThebeSession } from 'thebe-core';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/execute/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/execute/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEnF,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAQ9E;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,IAAI,CAAC;IACZ,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,WAAW,CAEtE;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,iBAAiB,CAGlF;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,kBAAkB,CAEpF;AAED,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,kBAAkB,CAKpF;AAED,UAAU,kBAAkB;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,eAAe,CAG9E;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,IAAI,CAAC;CACb;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,kBAAkB,CAQpF;AAED,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,aAAa,CAAC;IACxB,UAAU,EAAE,mBAAmB,CAAC;CACjC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,iBAAiB,CAOlF;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EACA,UAAU,GACV,eAAe,GACf,cAAc,GACd,aAAa,GACb,WAAW,GACX,cAAc,GACd,aAAa,GACb,qBAAqB,GACrB,qBAAqB,CAAC;IAC1B,OAAO,EACH,eAAe,GACf,WAAW,GACX,iBAAiB,GACjB,kBAAkB,GAClB,eAAe,GACf,kBAAkB,GAClB,iBAAiB,CAAC;CACvB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import type { IThebeNotebookError } from 'thebe-react';
|
|
2
3
|
export type BusyKind = 'execute' | 'reset';
|
|
3
4
|
export interface BusyScopeState {
|
|
4
5
|
execute: {
|
|
@@ -15,6 +16,11 @@ export interface BusyScopeState {
|
|
|
15
16
|
};
|
|
16
17
|
};
|
|
17
18
|
};
|
|
19
|
+
error: {
|
|
20
|
+
[pageSlug: string]: {
|
|
21
|
+
[notebookSlug: string]: IThebeNotebookError[];
|
|
22
|
+
};
|
|
23
|
+
};
|
|
18
24
|
}
|
|
19
25
|
export interface BusyScopeContext {
|
|
20
26
|
state: BusyScopeState;
|
|
@@ -37,9 +43,14 @@ export interface NotebookPayload {
|
|
|
37
43
|
cellIds: string[];
|
|
38
44
|
kind: BusyKind;
|
|
39
45
|
}
|
|
46
|
+
export interface ErrorPayload {
|
|
47
|
+
pageSlug: string;
|
|
48
|
+
notebookSlug: string;
|
|
49
|
+
errors?: IThebeNotebookError[];
|
|
50
|
+
}
|
|
40
51
|
type BusyScopeAction = {
|
|
41
|
-
type: 'SET_CELL_BUSY' | 'CLEAR_CELL_BUSY' | 'SET_NOTEBOOK_BUSY' | 'CLEAR_NOTEBOOK_BUSY';
|
|
42
|
-
payload: SlugPayload | CellPayload | NotebookPayload;
|
|
52
|
+
type: 'SET_CELL_BUSY' | 'CLEAR_CELL_BUSY' | 'SET_NOTEBOOK_BUSY' | 'CLEAR_NOTEBOOK_BUSY' | 'SET_ERROR' | 'CLEAR_ERROR';
|
|
53
|
+
payload: SlugPayload | CellPayload | NotebookPayload | ErrorPayload;
|
|
43
54
|
};
|
|
44
55
|
export declare function reducer(state: BusyScopeState, action: BusyScopeAction): BusyScopeState;
|
|
45
56
|
export declare function BusyScopeProvider({ children }: React.PropsWithChildren): import("react/jsx-runtime").JSX.Element;
|
|
@@ -51,6 +62,17 @@ export declare function useBusyScope(): {
|
|
|
51
62
|
clearCell: (pageSlug: string, notebookSlug: string, cellId: string, kind: BusyKind) => void;
|
|
52
63
|
setNotebook: (pageSlug: string, notebookSlug: string, cellIds: string[], kind: BusyKind) => void;
|
|
53
64
|
clearNotebook: (pageSlug: string, notebookSlug: string, kind: BusyKind) => void;
|
|
65
|
+
setError: (pageSlug: string, notebookSlug: string, errors: IThebeNotebookError[]) => void;
|
|
66
|
+
clearError: (pageSlug: string, notebookSlug: string) => void;
|
|
67
|
+
};
|
|
68
|
+
interface ErrorItem {
|
|
69
|
+
pageSlug: string;
|
|
70
|
+
notebookSlug: string;
|
|
71
|
+
errors: IThebeNotebookError[];
|
|
72
|
+
}
|
|
73
|
+
export declare function useBusyErrors(pageSlug: string): {
|
|
74
|
+
items: ErrorItem[] | undefined;
|
|
75
|
+
clearErrors: () => void;
|
|
54
76
|
};
|
|
55
77
|
export declare function selectCellIsBusy(state: BusyScopeState, pageSlug: string, notebookSlug: string, cellId: string, kind: BusyKind): boolean;
|
|
56
78
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"busy.d.ts","sourceRoot":"","sources":["../../../src/execute/busy.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAC;AAEvD,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3C,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE;QACP,CAAC,QAAQ,EAAE,MAAM,GAAG;YAClB,CAAC,YAAY,EAAE,MAAM,GAAG;gBACtB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;aAC3B,CAAC;SACH,CAAC;KACH,CAAC;IACF,KAAK,EAAE;QACL,CAAC,QAAQ,EAAE,MAAM,GAAG;YAClB,CAAC,YAAY,EAAE,MAAM,GAAG;gBACtB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;aAC3B,CAAC;SACH,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;CAC3C;AAYD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAUD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;CAChB;AAWD,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAGD,KAAK,eAAe,GAAG;IACrB,IAAI,
|
|
1
|
+
{"version":3,"file":"busy.d.ts","sourceRoot":"","sources":["../../../src/execute/busy.tsx"],"names":[],"mappings":"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"}
|