@myst-theme/jupyter 0.3.3 → 0.3.4
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/ConnectionStatusTray.d.ts.map +1 -1
- package/dist/cjs/ConnectionStatusTray.js +6 -4
- package/dist/cjs/ErrorTray.d.ts +5 -0
- package/dist/cjs/ErrorTray.d.ts.map +1 -0
- package/dist/cjs/ErrorTray.js +34 -0
- package/dist/cjs/controls/ArticleCellControls.d.ts +10 -0
- package/dist/cjs/controls/ArticleCellControls.d.ts.map +1 -0
- package/dist/cjs/controls/ArticleCellControls.js +33 -0
- package/dist/cjs/controls/Buttons.d.ts +47 -0
- package/dist/cjs/controls/Buttons.d.ts.map +1 -0
- package/dist/cjs/controls/Buttons.js +70 -0
- package/dist/cjs/controls/NotebookCellControls.d.ts +10 -0
- package/dist/cjs/controls/NotebookCellControls.d.ts.map +1 -0
- package/dist/cjs/controls/NotebookCellControls.js +27 -0
- package/dist/cjs/controls/NotebookToolbar.d.ts +4 -0
- package/dist/cjs/controls/NotebookToolbar.d.ts.map +1 -0
- package/dist/cjs/controls/NotebookToolbar.js +47 -0
- package/dist/cjs/controls/Spinner.d.ts +4 -0
- package/dist/cjs/controls/Spinner.d.ts.map +1 -0
- package/dist/cjs/controls/Spinner.js +8 -0
- package/dist/cjs/controls/index.d.ts +5 -0
- package/dist/cjs/controls/index.d.ts.map +1 -0
- package/dist/cjs/controls/index.js +20 -0
- package/dist/cjs/execute/actions.d.ts +55 -0
- package/dist/cjs/execute/actions.d.ts.map +1 -0
- package/dist/cjs/execute/actions.js +49 -0
- package/dist/cjs/execute/busy.d.ts +74 -0
- package/dist/cjs/execute/busy.d.ts.map +1 -0
- package/dist/cjs/execute/busy.js +182 -0
- package/dist/cjs/execute/hooks.d.ts +62 -0
- package/dist/cjs/execute/hooks.d.ts.map +1 -0
- package/dist/cjs/execute/hooks.js +308 -0
- package/dist/cjs/execute/index.d.ts +7 -0
- package/dist/cjs/execute/index.d.ts.map +1 -0
- package/dist/cjs/execute/index.js +22 -0
- package/dist/cjs/execute/leaf.d.ts +26 -0
- package/dist/cjs/execute/leaf.d.ts.map +1 -0
- package/dist/cjs/execute/leaf.js +154 -0
- package/dist/cjs/execute/provider.d.ts +29 -0
- package/dist/cjs/execute/provider.d.ts.map +1 -0
- package/dist/cjs/execute/provider.js +126 -0
- package/dist/cjs/execute/reducer.d.ts +4 -0
- package/dist/cjs/execute/reducer.d.ts.map +1 -0
- package/dist/cjs/execute/reducer.js +136 -0
- package/dist/cjs/execute/selectors.d.ts +22 -0
- package/dist/cjs/execute/selectors.d.ts.map +1 -0
- package/dist/cjs/execute/selectors.js +89 -0
- package/dist/cjs/execute/types.d.ts +49 -0
- package/dist/cjs/execute/types.d.ts.map +1 -0
- package/dist/cjs/execute/types.js +2 -0
- package/dist/cjs/execute/utils.d.ts +23 -0
- package/dist/cjs/execute/utils.d.ts.map +1 -0
- package/dist/cjs/execute/utils.js +62 -0
- package/dist/cjs/index.d.ts +4 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +4 -1
- package/dist/cjs/jupyter.d.ts.map +1 -1
- package/dist/cjs/jupyter.js +19 -17
- package/dist/cjs/output.d.ts +1 -1
- package/dist/cjs/output.d.ts.map +1 -1
- package/dist/cjs/output.js +7 -4
- package/dist/cjs/providers.d.ts +1 -48
- package/dist/cjs/providers.d.ts.map +1 -1
- package/dist/cjs/providers.js +4 -155
- package/dist/esm/ConnectionStatusTray.d.ts.map +1 -1
- package/dist/esm/ConnectionStatusTray.js +7 -5
- package/dist/esm/ErrorTray.d.ts +5 -0
- package/dist/esm/ErrorTray.d.ts.map +1 -0
- package/dist/esm/ErrorTray.js +30 -0
- package/dist/esm/controls/ArticleCellControls.d.ts +10 -0
- package/dist/esm/controls/ArticleCellControls.d.ts.map +1 -0
- package/dist/esm/controls/ArticleCellControls.js +27 -0
- package/dist/esm/controls/Buttons.d.ts +47 -0
- package/dist/esm/controls/Buttons.d.ts.map +1 -0
- package/dist/esm/controls/Buttons.js +57 -0
- package/dist/esm/controls/NotebookCellControls.d.ts +10 -0
- package/dist/esm/controls/NotebookCellControls.d.ts.map +1 -0
- package/dist/esm/controls/NotebookCellControls.js +21 -0
- package/dist/esm/controls/NotebookToolbar.d.ts +4 -0
- package/dist/esm/controls/NotebookToolbar.d.ts.map +1 -0
- package/dist/esm/controls/NotebookToolbar.js +40 -0
- package/dist/esm/controls/Spinner.d.ts +4 -0
- package/dist/esm/controls/Spinner.d.ts.map +1 -0
- package/dist/esm/controls/Spinner.js +4 -0
- package/dist/esm/controls/index.d.ts +5 -0
- package/dist/esm/controls/index.d.ts.map +1 -0
- package/dist/esm/controls/index.js +4 -0
- package/dist/esm/execute/actions.d.ts +55 -0
- package/dist/esm/execute/actions.d.ts.map +1 -0
- package/dist/esm/execute/actions.js +38 -0
- package/dist/esm/execute/busy.d.ts +74 -0
- package/dist/esm/execute/busy.d.ts.map +1 -0
- package/dist/esm/execute/busy.js +150 -0
- package/dist/esm/execute/hooks.d.ts +62 -0
- package/dist/esm/execute/hooks.d.ts.map +1 -0
- package/dist/esm/execute/hooks.js +277 -0
- package/dist/esm/execute/index.d.ts +7 -0
- package/dist/esm/execute/index.d.ts.map +1 -0
- package/dist/esm/execute/index.js +6 -0
- package/dist/esm/execute/leaf.d.ts +26 -0
- package/dist/esm/execute/leaf.d.ts.map +1 -0
- package/dist/esm/execute/leaf.js +147 -0
- package/dist/esm/execute/provider.d.ts +29 -0
- package/dist/esm/execute/provider.d.ts.map +1 -0
- package/dist/esm/execute/provider.js +99 -0
- package/dist/esm/execute/reducer.d.ts +4 -0
- package/dist/esm/execute/reducer.d.ts.map +1 -0
- package/dist/esm/execute/reducer.js +132 -0
- package/dist/esm/execute/selectors.d.ts +22 -0
- package/dist/esm/execute/selectors.d.ts.map +1 -0
- package/dist/esm/execute/selectors.js +77 -0
- package/dist/esm/execute/types.d.ts +49 -0
- package/dist/esm/execute/types.d.ts.map +1 -0
- package/dist/esm/execute/types.js +1 -0
- package/dist/esm/execute/utils.d.ts +23 -0
- package/dist/esm/execute/utils.d.ts.map +1 -0
- package/dist/esm/execute/utils.js +58 -0
- package/dist/esm/index.d.ts +4 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +4 -1
- package/dist/esm/jupyter.d.ts.map +1 -1
- package/dist/esm/jupyter.js +17 -15
- package/dist/esm/output.d.ts +1 -1
- package/dist/esm/output.d.ts.map +1 -1
- package/dist/esm/output.js +8 -5
- package/dist/esm/providers.d.ts +1 -48
- package/dist/esm/providers.d.ts.map +1 -1
- package/dist/esm/providers.js +2 -126
- package/dist/types/ConnectionStatusTray.d.ts.map +1 -1
- package/dist/types/ErrorTray.d.ts +5 -0
- package/dist/types/ErrorTray.d.ts.map +1 -0
- package/dist/types/controls/ArticleCellControls.d.ts +10 -0
- package/dist/types/controls/ArticleCellControls.d.ts.map +1 -0
- package/dist/types/controls/Buttons.d.ts +47 -0
- package/dist/types/controls/Buttons.d.ts.map +1 -0
- package/dist/types/controls/NotebookCellControls.d.ts +10 -0
- package/dist/types/controls/NotebookCellControls.d.ts.map +1 -0
- package/dist/types/controls/NotebookToolbar.d.ts +4 -0
- package/dist/types/controls/NotebookToolbar.d.ts.map +1 -0
- package/dist/types/controls/Spinner.d.ts +4 -0
- package/dist/types/controls/Spinner.d.ts.map +1 -0
- package/dist/types/controls/index.d.ts +5 -0
- package/dist/types/controls/index.d.ts.map +1 -0
- package/dist/types/execute/actions.d.ts +55 -0
- package/dist/types/execute/actions.d.ts.map +1 -0
- package/dist/types/execute/busy.d.ts +74 -0
- package/dist/types/execute/busy.d.ts.map +1 -0
- package/dist/types/execute/hooks.d.ts +62 -0
- package/dist/types/execute/hooks.d.ts.map +1 -0
- package/dist/types/execute/index.d.ts +7 -0
- package/dist/types/execute/index.d.ts.map +1 -0
- package/dist/types/execute/leaf.d.ts +26 -0
- package/dist/types/execute/leaf.d.ts.map +1 -0
- package/dist/types/execute/provider.d.ts +29 -0
- package/dist/types/execute/provider.d.ts.map +1 -0
- package/dist/types/execute/reducer.d.ts +4 -0
- package/dist/types/execute/reducer.d.ts.map +1 -0
- package/dist/types/execute/selectors.d.ts +22 -0
- package/dist/types/execute/selectors.d.ts.map +1 -0
- package/dist/types/execute/types.d.ts +49 -0
- package/dist/types/execute/types.d.ts.map +1 -0
- package/dist/types/execute/utils.d.ts +23 -0
- package/dist/types/execute/utils.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/jupyter.d.ts.map +1 -1
- package/dist/types/output.d.ts +1 -1
- package/dist/types/output.d.ts.map +1 -1
- package/dist/types/providers.d.ts +1 -48
- package/dist/types/providers.d.ts.map +1 -1
- package/package.json +9 -8
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export declare function SpinnerStatusButton({ ready, busy, modified, onClick, }: {
|
|
2
|
+
ready: boolean;
|
|
3
|
+
modified: boolean;
|
|
4
|
+
busy: boolean;
|
|
5
|
+
onClick?: () => void;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export declare function Run({ ready, executing, disabled, title, onClick, }: {
|
|
8
|
+
ready: boolean;
|
|
9
|
+
executing: boolean;
|
|
10
|
+
title?: string;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
onClick: () => void;
|
|
13
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare function Power({ ready, executing, disabled, title, onClick, }: {
|
|
15
|
+
ready: boolean;
|
|
16
|
+
executing: boolean;
|
|
17
|
+
title?: string;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
onClick: () => void;
|
|
20
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare function ReRun({ ready, executing, disabled, title, onClick, }: {
|
|
22
|
+
ready: boolean;
|
|
23
|
+
executing: boolean;
|
|
24
|
+
title?: string;
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
onClick: () => void;
|
|
27
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
export declare function Reset({ ready, resetting, disabled, title, onClick, }: {
|
|
29
|
+
ready: boolean;
|
|
30
|
+
resetting: boolean;
|
|
31
|
+
title?: string;
|
|
32
|
+
disabled?: boolean;
|
|
33
|
+
onClick: () => void;
|
|
34
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
35
|
+
export declare function Clear({ ready, disabled, title, onClick, }: {
|
|
36
|
+
ready: boolean;
|
|
37
|
+
disabled?: boolean;
|
|
38
|
+
title?: string;
|
|
39
|
+
onClick: () => void;
|
|
40
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
41
|
+
export declare function Launch({ ready, disabled, title, onClick, }: {
|
|
42
|
+
ready: boolean;
|
|
43
|
+
disabled?: boolean;
|
|
44
|
+
title?: string;
|
|
45
|
+
onClick: () => void;
|
|
46
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
47
|
+
//# sourceMappingURL=Buttons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Buttons.d.ts","sourceRoot":"","sources":["../../../src/controls/Buttons.tsx"],"names":[],"mappings":"AAWA,wBAAgB,mBAAmB,CAAC,EAClC,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,OAAO,GACR,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB,2CAuCA;AA2CD,wBAAgB,GAAG,CAAC,EAClB,KAAK,EACL,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,GACR,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,2CAWA;AAED,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,GACR,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,2CAWA;AAED,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,GACR,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,2CAWA;AAED,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,SAAS,EACT,QAAQ,EACR,KAAK,EACL,OAAO,GACR,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,2CAWA;AAED,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,OAAO,GACR,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,2CAeA;AAED,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,OAAO,GACR,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,2CAYA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import PlayCircleIcon from '@heroicons/react/24/outline/PlayCircleIcon';
|
|
3
|
+
import ArrowPathIcon from '@heroicons/react/24/outline/ArrowPathIcon';
|
|
4
|
+
import MinusCircleIcon from '@heroicons/react/24/outline/MinusCircleIcon';
|
|
5
|
+
import ArrowTopRightOnSquareIcon from '@heroicons/react/24/outline/ArrowTopRightOnSquareIcon';
|
|
6
|
+
import ArrowUturnLeft from '@heroicons/react/24/outline/ArrowUturnLeftIcon';
|
|
7
|
+
import Bolt from '@heroicons/react/24/outline/BoltIcon';
|
|
8
|
+
import PowerIcon from '@heroicons/react/24/outline/PowerIcon';
|
|
9
|
+
import BoltIconSolid from '@heroicons/react/24/solid/BoltIcon';
|
|
10
|
+
import classNames from 'classnames';
|
|
11
|
+
import { Spinner } from './Spinner';
|
|
12
|
+
export function SpinnerStatusButton({ ready, busy, modified, onClick, }) {
|
|
13
|
+
let title = 'Enable compute to make this figure interactive';
|
|
14
|
+
if (ready) {
|
|
15
|
+
title = modified ? 'The figure has been modified' : "The figure is in it's original state";
|
|
16
|
+
}
|
|
17
|
+
let icon = _jsx(PowerIcon, { className: "w-6 h-6" });
|
|
18
|
+
if (ready) {
|
|
19
|
+
if (modified) {
|
|
20
|
+
icon = _jsx(Bolt, { className: "w-6 h-6 text-green-600" });
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
icon = _jsx(BoltIconSolid, { className: "w-6 h-6 text-green-600" });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return (_jsxs("div", { className: "relative flex text-sm", children: [_jsx("button", { className: classNames('cursor-pointer text-gray-700 dark:text-white active:text-green-700 hover:opacity-100', {
|
|
27
|
+
'opacity-10': busy,
|
|
28
|
+
'opacity-70': !busy,
|
|
29
|
+
}), disabled: ready, title: title, "aria-label": `status`, onClick: onClick !== null && onClick !== void 0 ? onClick : (() => ({})), children: icon }), busy && (_jsx("span", { className: "absolute top-0 left-0 z-10 w-[22px] h-[22px] opacity-100", children: _jsx(Spinner, { size: 24 }) }))] }));
|
|
30
|
+
}
|
|
31
|
+
function SpinnerButton({ ready, icon, busy, disabled, title, onClick, }) {
|
|
32
|
+
return (_jsxs("div", { className: "relative flex text-sm", children: [_jsx("button", { className: classNames('cursor-pointer text-gray-700 dark:text-white active:text-green-700 hover:opacity-100', {
|
|
33
|
+
'opacity-10 hover:opacity-10': busy,
|
|
34
|
+
'opacity-70': !busy,
|
|
35
|
+
}), disabled: disabled || !ready || busy, onClick: () => onClick(), title: title !== null && title !== void 0 ? title : 'run all cells', "aria-label": title !== null && title !== void 0 ? title : 'run all cells', children: icon }), busy && (_jsx("span", { className: "absolute top-0 left-0 z-10 w-[22px] h-[22px] opacity-100", children: _jsx(Spinner, { size: 24 }) }))] }));
|
|
36
|
+
}
|
|
37
|
+
export function Run({ ready, executing, disabled, title, onClick, }) {
|
|
38
|
+
return (_jsx(SpinnerButton, { ready: ready, busy: executing, disabled: disabled, title: title !== null && title !== void 0 ? title : 'run all cells', onClick: onClick, icon: _jsx(PlayCircleIcon, { className: "inline-block w-6 h-6 align-top" }) }));
|
|
39
|
+
}
|
|
40
|
+
export function Power({ ready, executing, disabled, title, onClick, }) {
|
|
41
|
+
return (_jsx(SpinnerButton, { ready: ready, busy: executing, disabled: disabled, title: title !== null && title !== void 0 ? title : 'enable compute', onClick: onClick, icon: _jsx(PowerIcon, { className: "inline-block w-6 h-6 align-top dark:text-white" }) }));
|
|
42
|
+
}
|
|
43
|
+
export function ReRun({ ready, executing, disabled, title, onClick, }) {
|
|
44
|
+
return (_jsx(SpinnerButton, { ready: ready, busy: executing, disabled: disabled, title: title !== null && title !== void 0 ? title : 'run all cells', onClick: onClick, icon: _jsx(ArrowPathIcon, { className: "inline-block w-6 h-6 align-top" }) }));
|
|
45
|
+
}
|
|
46
|
+
export function Reset({ ready, resetting, disabled, title, onClick, }) {
|
|
47
|
+
return (_jsx(SpinnerButton, { ready: ready, busy: resetting, disabled: disabled, title: title !== null && title !== void 0 ? title : 'reset notebook', onClick: onClick, icon: _jsx(ArrowUturnLeft, { className: "inline-block w-6 h-6 align-top" }) }));
|
|
48
|
+
}
|
|
49
|
+
export function Clear({ ready, disabled, title, onClick, }) {
|
|
50
|
+
return (_jsx("button", { className: classNames('flex text-gray-700 dark:text-white opacity-70 ', {
|
|
51
|
+
'cursor-not-allowed': disabled || !ready,
|
|
52
|
+
'active:text-green-700 hover:opacity-100 cursor-pointer': !disabled,
|
|
53
|
+
}), disabled: disabled || !ready, onClick: () => onClick(), title: title !== null && title !== void 0 ? title : 'clear', "aria-label": title !== null && title !== void 0 ? title : 'clear', children: _jsx(MinusCircleIcon, { className: "inline-block w-6 h-6 align-top" }) }));
|
|
54
|
+
}
|
|
55
|
+
export function Launch({ ready, disabled, title, onClick, }) {
|
|
56
|
+
return (_jsx("button", { className: "flex items-center text-gray-700 cursor-pointer dark:text-white active:text-green-700 opacity-70 hover:opacity-100", disabled: disabled || !ready, onClick: () => onClick(), title: title !== null && title !== void 0 ? title : 'launch in jupyter', "aria-label": title !== null && title !== void 0 ? title : 'launch in jupyter', children: _jsx(ArrowTopRightOnSquareIcon, { className: "inline-block w-6 h-6 align-top" }) }));
|
|
57
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function NotebookRunCell({ id }: {
|
|
2
|
+
id: string;
|
|
3
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
4
|
+
export declare function NotebookRunCellSpinnerOnly({ id }: {
|
|
5
|
+
id: string;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
7
|
+
export declare function NotebookClearCell({ id }: {
|
|
8
|
+
id: string;
|
|
9
|
+
}): import("react/jsx-runtime").JSX.Element | null;
|
|
10
|
+
//# sourceMappingURL=NotebookCellControls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotebookCellControls.d.ts","sourceRoot":"","sources":["../../../src/controls/NotebookCellControls.tsx"],"names":[],"mappings":"AAGA,wBAAgB,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,kDAMrD;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,kDAYhE;AAED,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,kDAMvD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useCellExecution } from '../execute/hooks';
|
|
3
|
+
import { Clear, Run } from './Buttons';
|
|
4
|
+
export function NotebookRunCell({ id }) {
|
|
5
|
+
const { ready, cellIsExecuting, notebookIsBusy, execute } = useCellExecution(id);
|
|
6
|
+
if (!ready)
|
|
7
|
+
return null;
|
|
8
|
+
return (_jsx(Run, { ready: ready, executing: cellIsExecuting, disabled: notebookIsBusy, onClick: execute }));
|
|
9
|
+
}
|
|
10
|
+
export function NotebookRunCellSpinnerOnly({ id }) {
|
|
11
|
+
const { ready, cellIsExecuting } = useCellExecution(id);
|
|
12
|
+
if (!ready || !cellIsExecuting)
|
|
13
|
+
return null;
|
|
14
|
+
return (_jsx(Run, { ready: ready, executing: cellIsExecuting, disabled: true, onClick: () => ({}), title: "executing cell..." }));
|
|
15
|
+
}
|
|
16
|
+
export function NotebookClearCell({ id }) {
|
|
17
|
+
const { ready, notebookIsBusy, clear } = useCellExecution(id);
|
|
18
|
+
if (!ready)
|
|
19
|
+
return null;
|
|
20
|
+
return (_jsx(Clear, { ready: ready, disabled: notebookIsBusy, onClick: clear, title: "Clear cell outputs" }));
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotebookToolbar.d.ts","sourceRoot":"","sources":["../../../src/controls/NotebookToolbar.tsx"],"names":[],"mappings":"AAaA,wBAAgB,eAAe,CAAC,EAAE,UAAkB,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,kDA6F/E"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useExecutionScope, selectIsComputable, selectAreExecutionScopesBuilding, selectExecutionScopeStatus, useBusyScope, } from '../execute';
|
|
3
|
+
import { useThebeServer } from 'thebe-react';
|
|
4
|
+
import PowerIcon from '@heroicons/react/24/outline/PowerIcon';
|
|
5
|
+
import { Spinner } from './Spinner';
|
|
6
|
+
import { Clear, Launch, Reset, Run } from './Buttons';
|
|
7
|
+
import classNames from 'classnames';
|
|
8
|
+
export function NotebookToolbar({ showLaunch = false }) {
|
|
9
|
+
const { slug, ready, state, start, resetAll, clearAll, execute } = useExecutionScope();
|
|
10
|
+
const busy = useBusyScope();
|
|
11
|
+
const { connecting, connect, ready: serverReady, server, error: serverError } = useThebeServer();
|
|
12
|
+
const computable = selectIsComputable(state, slug);
|
|
13
|
+
const handleStart = () => {
|
|
14
|
+
connect();
|
|
15
|
+
start(slug);
|
|
16
|
+
};
|
|
17
|
+
const handleReset = () => resetAll(slug);
|
|
18
|
+
const handleClear = () => clearAll(slug);
|
|
19
|
+
const handleRun = () => execute(slug);
|
|
20
|
+
const handleLaunch = () => {
|
|
21
|
+
if (!serverReady || !(server === null || server === void 0 ? void 0 : server.settings))
|
|
22
|
+
return;
|
|
23
|
+
window.open(`${server.settings.baseUrl}?token=${server.settings.token}`, '_blank');
|
|
24
|
+
};
|
|
25
|
+
const building = selectAreExecutionScopesBuilding(state, slug);
|
|
26
|
+
const status = selectExecutionScopeStatus(state, slug);
|
|
27
|
+
const error = !!serverError; // TODO broader build & session errors
|
|
28
|
+
let title = 'Connect to a compute server';
|
|
29
|
+
if (error) {
|
|
30
|
+
title = 'Error connecting to compute server';
|
|
31
|
+
}
|
|
32
|
+
else if (building) {
|
|
33
|
+
title = status;
|
|
34
|
+
}
|
|
35
|
+
if (computable)
|
|
36
|
+
return (_jsx("div", { className: "sticky top-[60px] flex justify-end w-full z-20 pointer-events-none", children: _jsxs("div", { className: "flex p-1 m-1 space-x-1 border rounded-full shadow pointer-events-auto border-stone-300 bg-white/80 dark:bg-stone-900/80 backdrop-blur", children: [!ready && (_jsxs("div", { className: "rounded", children: [_jsx("button", { className: classNames('flex text-center rounded-full cursor-pointer text-stone-800 dark:text-white hover:opacity-100 opacity-60', {
|
|
37
|
+
'opacity-10 text-stone-100 dark:text-stone-700': connecting || building,
|
|
38
|
+
}), onClick: handleStart, disabled: building, "aria-label": "start compute environment", children: _jsx(PowerIcon, { className: "inline-block w-6 h-6 align-top", title: "enable compute" }) }), (connecting || building) && !error && (_jsx("span", { className: "absolute top-1 left-1 z-10 w-[22px] h-[22px] opacity-100", title: title, children: _jsx(Spinner, { size: 24 }) }))] })), ready && (_jsx(Run, { ready: ready, executing: busy.page(slug, 'execute'), onClick: handleRun, title: "Run all cells" })), ready && (_jsx(Reset, { ready: ready, resetting: busy.page(slug, 'reset'), onClick: handleReset, title: "Reset notebook and restart kernel" })), ready && (_jsx(Clear, { ready: ready, disabled: busy.page(slug, 'execute') || busy.page(slug, 'reset'), onClick: handleClear, title: "Clear all cells" })), showLaunch && ready && (_jsx(Launch, { ready: ready, disabled: false, onClick: handleLaunch, title: "Launch notebook in Jupyter" }))] }) }));
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/controls/Spinner.tsx"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,2CAsBjD"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export function Spinner({ size }) {
|
|
3
|
+
return (_jsxs("div", { role: "status", children: [_jsxs("svg", { "aria-hidden": "true", className: `w-[${size}px] h-[${size}px] mr-2 text-gray-200 animate-spin dark:text-gray-600 fill-green-600`, viewBox: "0 0 100 101", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [_jsx("path", { d: "M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z", fill: "currentColor" }), _jsx("path", { d: "M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z", fill: "currentFill" })] }), _jsx("span", { className: "sr-only", children: "Loading..." })] }));
|
|
4
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/controls/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Dependency, SourceFileKind } from 'myst-common';
|
|
2
|
+
import type { Root } from 'mdast';
|
|
3
|
+
import type { BuildStatus, Computable } from './types';
|
|
4
|
+
import type { IRenderMimeRegistry, ThebeNotebook, ThebeSession } from 'thebe-core';
|
|
5
|
+
export declare function isNavigatePayload(payload: unknown): payload is NavigatePayload;
|
|
6
|
+
interface NavigatePayload {
|
|
7
|
+
kind: SourceFileKind;
|
|
8
|
+
slug: string;
|
|
9
|
+
mdast: Root;
|
|
10
|
+
dependencies: Dependency[];
|
|
11
|
+
computables: Computable[];
|
|
12
|
+
}
|
|
13
|
+
export declare function isSlugPayload(payload: unknown): payload is SlugPayload;
|
|
14
|
+
interface SlugPayload {
|
|
15
|
+
slug: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function isDoubleSlugPayload(payload: unknown): payload is DoubleSlugPayload;
|
|
18
|
+
interface DoubleSlugPayload {
|
|
19
|
+
pageSlug: string;
|
|
20
|
+
notebookSlug: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function isBuildStatusPayload(payload: unknown): payload is BuildStatusPayload;
|
|
23
|
+
interface BuildStatusPayload {
|
|
24
|
+
slug: string;
|
|
25
|
+
status: BuildStatus;
|
|
26
|
+
}
|
|
27
|
+
export declare function isEnableScopePayload(payload: unknown): payload is EnableScopePayload;
|
|
28
|
+
interface EnableScopePayload {
|
|
29
|
+
renderingSlug: string;
|
|
30
|
+
scopeSlug: string;
|
|
31
|
+
}
|
|
32
|
+
export declare function isAddMdastPayload(payload: unknown): payload is AddMdastPayload;
|
|
33
|
+
interface AddMdastPayload {
|
|
34
|
+
slug: string;
|
|
35
|
+
mdast: Root;
|
|
36
|
+
}
|
|
37
|
+
export declare function isAddNotebookPayload(payload: unknown): payload is AddNotebookPayload;
|
|
38
|
+
interface AddNotebookPayload {
|
|
39
|
+
pageSlug: string;
|
|
40
|
+
notebookSlug: string;
|
|
41
|
+
notebook: ThebeNotebook;
|
|
42
|
+
rendermime: IRenderMimeRegistry;
|
|
43
|
+
}
|
|
44
|
+
export declare function isAddSessionPayload(payload: unknown): payload is AddSessionPayload;
|
|
45
|
+
interface AddSessionPayload {
|
|
46
|
+
pageSlug: string;
|
|
47
|
+
notebookSlug: string;
|
|
48
|
+
session: ThebeSession;
|
|
49
|
+
}
|
|
50
|
+
export interface ExecuteScopeAction {
|
|
51
|
+
type: 'NAVIGATE' | 'REQUEST_BUILD' | 'BUILD_STATUS' | 'CLEAR_BUILD' | 'ADD_MDAST' | 'ADD_NOTEBOOK' | 'ADD_SESSION' | 'SET_FIRST_EXECUTION' | 'SET_RENDERING_READY';
|
|
52
|
+
payload: NavigatePayload | SlugPayload | DoubleSlugPayload | BuildStatusPayload | AddMdastPayload | AddNotebookPayload | AddSessionPayload;
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
55
|
+
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../../../src/execute/actions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC9D,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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export function isNavigatePayload(payload) {
|
|
2
|
+
const maybePayload = payload;
|
|
3
|
+
return (typeof maybePayload.slug === 'string' &&
|
|
4
|
+
typeof maybePayload.mdast === 'object' &&
|
|
5
|
+
Array.isArray(maybePayload.dependencies) &&
|
|
6
|
+
Array.isArray(maybePayload.computables));
|
|
7
|
+
}
|
|
8
|
+
export function isSlugPayload(payload) {
|
|
9
|
+
return typeof payload.slug === 'string';
|
|
10
|
+
}
|
|
11
|
+
export function isDoubleSlugPayload(payload) {
|
|
12
|
+
const maybePayload = payload;
|
|
13
|
+
return typeof maybePayload.pageSlug === 'string' && typeof maybePayload.notebookSlug === 'string';
|
|
14
|
+
}
|
|
15
|
+
export function isBuildStatusPayload(payload) {
|
|
16
|
+
return typeof payload.status === 'string' && isSlugPayload(payload);
|
|
17
|
+
}
|
|
18
|
+
export function isEnableScopePayload(payload) {
|
|
19
|
+
const maybePayload = payload;
|
|
20
|
+
return (typeof maybePayload.renderingSlug === 'string' && typeof maybePayload.scopeSlug === 'string');
|
|
21
|
+
}
|
|
22
|
+
export function isAddMdastPayload(payload) {
|
|
23
|
+
const maybePayload = payload;
|
|
24
|
+
return typeof maybePayload.slug === 'string' && typeof maybePayload.mdast === 'object';
|
|
25
|
+
}
|
|
26
|
+
export function isAddNotebookPayload(payload) {
|
|
27
|
+
const maybePayload = payload;
|
|
28
|
+
return (typeof maybePayload.pageSlug === 'string' &&
|
|
29
|
+
typeof maybePayload.notebookSlug === 'string' &&
|
|
30
|
+
typeof maybePayload.notebook === 'object' &&
|
|
31
|
+
typeof maybePayload.rendermime === 'object');
|
|
32
|
+
}
|
|
33
|
+
export function isAddSessionPayload(payload) {
|
|
34
|
+
const maybePayload = payload;
|
|
35
|
+
return (typeof maybePayload.pageSlug === 'string' &&
|
|
36
|
+
typeof maybePayload.notebookSlug === 'string' &&
|
|
37
|
+
typeof maybePayload.session === 'object');
|
|
38
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type BusyKind = 'execute' | 'reset';
|
|
3
|
+
export interface BusyScopeState {
|
|
4
|
+
execute: {
|
|
5
|
+
[pageSlug: string]: {
|
|
6
|
+
[notebookSlug: string]: {
|
|
7
|
+
[cellId: string]: boolean;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
reset: {
|
|
12
|
+
[pageSlug: string]: {
|
|
13
|
+
[notebookSlug: string]: {
|
|
14
|
+
[cellId: string]: boolean;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface BusyScopeContext {
|
|
20
|
+
state: BusyScopeState;
|
|
21
|
+
dispatch: React.Dispatch<BusyScopeAction>;
|
|
22
|
+
}
|
|
23
|
+
export interface SlugPayload {
|
|
24
|
+
pageSlug: string;
|
|
25
|
+
notebookSlug: string;
|
|
26
|
+
kind: BusyKind;
|
|
27
|
+
}
|
|
28
|
+
export interface CellPayload {
|
|
29
|
+
pageSlug: string;
|
|
30
|
+
notebookSlug: string;
|
|
31
|
+
cellId: string;
|
|
32
|
+
kind: BusyKind;
|
|
33
|
+
}
|
|
34
|
+
export interface NotebookPayload {
|
|
35
|
+
pageSlug: string;
|
|
36
|
+
notebookSlug: string;
|
|
37
|
+
cellIds: string[];
|
|
38
|
+
kind: BusyKind;
|
|
39
|
+
}
|
|
40
|
+
type BusyScopeAction = {
|
|
41
|
+
type: 'SET_CELL_BUSY' | 'CLEAR_CELL_BUSY' | 'SET_NOTEBOOK_BUSY' | 'CLEAR_NOTEBOOK_BUSY';
|
|
42
|
+
payload: SlugPayload | CellPayload | NotebookPayload;
|
|
43
|
+
};
|
|
44
|
+
export declare function reducer(state: BusyScopeState, action: BusyScopeAction): BusyScopeState;
|
|
45
|
+
export declare function BusyScopeProvider({ children }: React.PropsWithChildren): import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
export declare function useBusyScope(): {
|
|
47
|
+
cell: (pageSlug: string, notebookSlug: string, cellId: string, kind: BusyKind) => boolean;
|
|
48
|
+
notebook: (pageSlug: string, notebookSlug: string, kind: BusyKind) => boolean;
|
|
49
|
+
page: (pageSlug: string, kind: BusyKind) => boolean;
|
|
50
|
+
setCell: (pageSlug: string, notebookSlug: string, cellId: string, kind: BusyKind) => void;
|
|
51
|
+
clearCell: (pageSlug: string, notebookSlug: string, cellId: string, kind: BusyKind) => void;
|
|
52
|
+
setNotebook: (pageSlug: string, notebookSlug: string, cellIds: string[], kind: BusyKind) => void;
|
|
53
|
+
clearNotebook: (pageSlug: string, notebookSlug: string, kind: BusyKind) => void;
|
|
54
|
+
};
|
|
55
|
+
export declare function selectCellIsBusy(state: BusyScopeState, pageSlug: string, notebookSlug: string, cellId: string, kind: BusyKind): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* a fast selector relying on the fact that if at least one cell is present, the notebook is busy
|
|
58
|
+
*
|
|
59
|
+
* @param state
|
|
60
|
+
* @param pageSlug
|
|
61
|
+
* @param notebookSlug
|
|
62
|
+
* @returns
|
|
63
|
+
*/
|
|
64
|
+
export declare function selectNotebookIsBusy(state: BusyScopeState, pageSlug: string, notebookSlug: string, kind: BusyKind): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* a fast selector relying on the fact that if at least one notebook is present, the render is busy
|
|
67
|
+
*
|
|
68
|
+
* @param state
|
|
69
|
+
* @param pageSlug
|
|
70
|
+
* @returns
|
|
71
|
+
*/
|
|
72
|
+
export declare function selectPageIsBusy(state: BusyScopeState, pageSlug: string, kind: BusyKind): boolean;
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=busy.d.ts.map
|
|
@@ -0,0 +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,EAAE,eAAe,GAAG,iBAAiB,GAAG,mBAAmB,GAAG,qBAAqB,CAAC;IACxF,OAAO,EAAE,WAAW,GAAG,WAAW,GAAG,eAAe,CAAC;CACtD,CAAC;AAEF,wBAAgB,OAAO,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,GAAG,cAAc,CAmItF;AAED,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,KAAK,CAAC,iBAAiB,2CAStE;AAED,wBAAgB,YAAY;qBASb,MAAM,gBAAgB,MAAM,UAAU,MAAM,QAAQ,QAAQ;yBAK5D,MAAM,gBAAgB,MAAM,QAAQ,QAAQ;qBAK5C,MAAM,QAAQ,QAAQ;wBAKtB,MAAM,gBAAgB,MAAM,UAAU,MAAM,QAAQ,QAAQ;0BAO5D,MAAM,gBAAgB,MAAM,UAAU,MAAM,QAAQ,QAAQ;4BAM5D,MAAM,gBAAgB,MAAM,WAAW,MAAM,EAAE,QAAQ,QAAQ;8BAM/D,MAAM,gBAAgB,MAAM,QAAQ,QAAQ;EAM1D;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,QAAQ,WAGf;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,QAAQ,WAGf;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,WAEvF"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
+
var t = {};
|
|
3
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
+
t[p] = s[p];
|
|
5
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
+
t[p[i]] = s[p[i]];
|
|
9
|
+
}
|
|
10
|
+
return t;
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import React, { useCallback, useReducer } from 'react';
|
|
14
|
+
const BusyScopeContext = React.createContext(undefined);
|
|
15
|
+
function isSlugPayload(payload) {
|
|
16
|
+
return (typeof payload.pageSlug === 'string' &&
|
|
17
|
+
typeof payload.notebookSlug === 'string' &&
|
|
18
|
+
typeof payload.kind === 'string');
|
|
19
|
+
}
|
|
20
|
+
function isCellPayload(payload) {
|
|
21
|
+
return (isSlugPayload(payload) &&
|
|
22
|
+
typeof payload.cellId === 'string' &&
|
|
23
|
+
typeof payload.kind === 'string');
|
|
24
|
+
}
|
|
25
|
+
function isNotebookPayload(payload) {
|
|
26
|
+
return (isSlugPayload(payload) &&
|
|
27
|
+
Array.isArray(payload.cellIds) &&
|
|
28
|
+
payload.cellIds.every((id) => typeof id === 'string') &&
|
|
29
|
+
typeof payload.kind === 'string');
|
|
30
|
+
}
|
|
31
|
+
export function reducer(state, action) {
|
|
32
|
+
var _a, _b, _c, _d, _e;
|
|
33
|
+
switch (action.type) {
|
|
34
|
+
case 'SET_CELL_BUSY': {
|
|
35
|
+
if (!isCellPayload(action.payload)) {
|
|
36
|
+
console.error('SET_CELL_BUSY payload must be a cell payload', action.payload);
|
|
37
|
+
return state;
|
|
38
|
+
}
|
|
39
|
+
const { pageSlug, notebookSlug, cellId, kind } = action.payload;
|
|
40
|
+
if ((_b = (_a = state[kind][pageSlug]) === null || _a === void 0 ? void 0 : _a[notebookSlug]) === null || _b === void 0 ? void 0 : _b[cellId])
|
|
41
|
+
return state;
|
|
42
|
+
return Object.assign(Object.assign({}, state), { [kind]: Object.assign(Object.assign({}, state[kind]), { [pageSlug]: Object.assign(Object.assign({}, state[kind][pageSlug]), { [notebookSlug]: Object.assign(Object.assign({}, (_c = state[kind][pageSlug]) === null || _c === void 0 ? void 0 : _c[notebookSlug]), { [cellId]: true }) }) }) });
|
|
43
|
+
}
|
|
44
|
+
case 'CLEAR_CELL_BUSY': {
|
|
45
|
+
if (!isCellPayload(action.payload)) {
|
|
46
|
+
console.error('CLEAR_CELL_BUSY payload must be a cell payload', action.payload);
|
|
47
|
+
return state;
|
|
48
|
+
}
|
|
49
|
+
const { pageSlug, notebookSlug, cellId, kind } = action.payload;
|
|
50
|
+
const _f = state[kind], _g = pageSlug, renderBusy = _f[_g], otherRenders = __rest(_f, [typeof _g === "symbol" ? _g : _g + ""]);
|
|
51
|
+
if (!renderBusy)
|
|
52
|
+
return state;
|
|
53
|
+
const _h = renderBusy, _j = notebookSlug, notebookBusy = _h[_j], otherNotebooks = __rest(_h, [typeof _j === "symbol" ? _j : _j + ""]);
|
|
54
|
+
if (!notebookBusy)
|
|
55
|
+
return state;
|
|
56
|
+
if (!notebookBusy[cellId])
|
|
57
|
+
return state;
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
59
|
+
const _k = notebookBusy, _l = cellId, cellBusy = _k[_l], otherCells = __rest(_k, [typeof _l === "symbol" ? _l : _l + ""]);
|
|
60
|
+
// remove the render if it's empty
|
|
61
|
+
if (Object.keys(otherCells).length === 0 && Object.keys(otherNotebooks).length === 0) {
|
|
62
|
+
return Object.assign(Object.assign({}, state), { [kind]: otherRenders });
|
|
63
|
+
}
|
|
64
|
+
// remove the notebook if it's empty
|
|
65
|
+
if (Object.keys(otherCells).length === 0) {
|
|
66
|
+
return Object.assign(Object.assign({}, state), { [kind]: Object.assign(Object.assign({}, state[kind]), { [pageSlug]: Object.assign({}, otherNotebooks) }) });
|
|
67
|
+
}
|
|
68
|
+
return Object.assign(Object.assign({}, state), { [kind]: Object.assign(Object.assign({}, state[kind]), { [action.payload.pageSlug]: Object.assign(Object.assign({}, otherNotebooks), { [notebookSlug]: Object.assign({}, otherCells) }) }) });
|
|
69
|
+
}
|
|
70
|
+
case 'SET_NOTEBOOK_BUSY': {
|
|
71
|
+
if (!isNotebookPayload(action.payload)) {
|
|
72
|
+
console.error('SET_NOTEBOOK_BUSY payload must be a notebook payload', action.payload);
|
|
73
|
+
return state;
|
|
74
|
+
}
|
|
75
|
+
const { pageSlug, notebookSlug, cellIds, kind } = action.payload;
|
|
76
|
+
return Object.assign(Object.assign({}, state), { [kind]: Object.assign(Object.assign({}, state[kind]), { [pageSlug]: Object.assign(Object.assign({}, state[kind][pageSlug]), { [notebookSlug]: Object.assign(Object.assign({}, (_d = state[kind][pageSlug]) === null || _d === void 0 ? void 0 : _d[notebookSlug]), cellIds.reduce((acc, cellId) => (Object.assign(Object.assign({}, acc), { [cellId]: true })), {})) }) }) });
|
|
77
|
+
}
|
|
78
|
+
case 'CLEAR_NOTEBOOK_BUSY': {
|
|
79
|
+
if (!isSlugPayload(action.payload)) {
|
|
80
|
+
console.error('CLEAR_NOTEBOOK_BUSY payload must be a notebook payload', action.payload);
|
|
81
|
+
return state;
|
|
82
|
+
}
|
|
83
|
+
const { pageSlug, notebookSlug, kind } = action.payload;
|
|
84
|
+
if (!state[kind][pageSlug])
|
|
85
|
+
return state;
|
|
86
|
+
if (!((_e = state[kind][pageSlug]) === null || _e === void 0 ? void 0 : _e[notebookSlug]))
|
|
87
|
+
return state;
|
|
88
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
89
|
+
const _m = state[kind][pageSlug], _o = notebookSlug, notebookBusy = _m[_o], otherNotebooks = __rest(_m, [typeof _o === "symbol" ? _o : _o + ""]);
|
|
90
|
+
if (Object.keys(otherNotebooks).length === 0) {
|
|
91
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
92
|
+
const _p = state[kind], _q = pageSlug, renderBusy = _p[_q], otherRenders = __rest(_p, [typeof _q === "symbol" ? _q : _q + ""]);
|
|
93
|
+
return Object.assign(Object.assign({}, state), { [kind]: otherRenders });
|
|
94
|
+
}
|
|
95
|
+
return Object.assign(Object.assign({}, state), { [kind]: Object.assign(Object.assign({}, state[kind]), { [pageSlug]: Object.assign({}, otherNotebooks) }) });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return state;
|
|
99
|
+
}
|
|
100
|
+
export function BusyScopeProvider({ children }) {
|
|
101
|
+
const [state, dispatch] = useReducer(reducer, { execute: {}, reset: {} });
|
|
102
|
+
const memo = React.useMemo(() => ({ state, dispatch }), [state]);
|
|
103
|
+
if (typeof window !== 'undefined') {
|
|
104
|
+
window.busyScopeState = memo.state;
|
|
105
|
+
}
|
|
106
|
+
return _jsx(BusyScopeContext.Provider, { value: memo, children: children });
|
|
107
|
+
}
|
|
108
|
+
export function useBusyScope() {
|
|
109
|
+
const context = React.useContext(BusyScopeContext);
|
|
110
|
+
if (context === undefined) {
|
|
111
|
+
throw new Error('useBusyScope must be used within a BusyScopeProvider');
|
|
112
|
+
}
|
|
113
|
+
const { dispatch, state } = context;
|
|
114
|
+
const cell = useCallback((pageSlug, notebookSlug, cellId, kind) => selectCellIsBusy(state, pageSlug, notebookSlug, cellId, kind), [state]);
|
|
115
|
+
const notebook = useCallback((pageSlug, notebookSlug, kind) => selectNotebookIsBusy(state, pageSlug, notebookSlug, kind), [state]);
|
|
116
|
+
const page = useCallback((pageSlug, kind) => selectPageIsBusy(state, pageSlug, kind), [state]);
|
|
117
|
+
const setCell = useCallback((pageSlug, notebookSlug, cellId, kind) => {
|
|
118
|
+
dispatch({ type: 'SET_CELL_BUSY', payload: { pageSlug, notebookSlug, cellId, kind } });
|
|
119
|
+
}, [dispatch]);
|
|
120
|
+
const clearCell = useCallback((pageSlug, notebookSlug, cellId, kind) => dispatch({ type: 'CLEAR_CELL_BUSY', payload: { pageSlug, notebookSlug, cellId, kind } }), [dispatch]);
|
|
121
|
+
const setNotebook = useCallback((pageSlug, notebookSlug, cellIds, kind) => dispatch({ type: 'SET_NOTEBOOK_BUSY', payload: { pageSlug, notebookSlug, cellIds, kind } }), [dispatch]);
|
|
122
|
+
const clearNotebook = useCallback((pageSlug, notebookSlug, kind) => dispatch({ type: 'CLEAR_NOTEBOOK_BUSY', payload: { pageSlug, notebookSlug, kind } }), [dispatch]);
|
|
123
|
+
return { cell, notebook, page, setCell, clearCell, setNotebook, clearNotebook };
|
|
124
|
+
}
|
|
125
|
+
export function selectCellIsBusy(state, pageSlug, notebookSlug, cellId, kind) {
|
|
126
|
+
var _a, _b;
|
|
127
|
+
return !!((_b = (_a = state[kind][pageSlug]) === null || _a === void 0 ? void 0 : _a[notebookSlug]) === null || _b === void 0 ? void 0 : _b[cellId]);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* a fast selector relying on the fact that if at least one cell is present, the notebook is busy
|
|
131
|
+
*
|
|
132
|
+
* @param state
|
|
133
|
+
* @param pageSlug
|
|
134
|
+
* @param notebookSlug
|
|
135
|
+
* @returns
|
|
136
|
+
*/
|
|
137
|
+
export function selectNotebookIsBusy(state, pageSlug, notebookSlug, kind) {
|
|
138
|
+
var _a;
|
|
139
|
+
return !!((_a = state[kind][pageSlug]) === null || _a === void 0 ? void 0 : _a[notebookSlug]);
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* a fast selector relying on the fact that if at least one notebook is present, the render is busy
|
|
143
|
+
*
|
|
144
|
+
* @param state
|
|
145
|
+
* @param pageSlug
|
|
146
|
+
* @returns
|
|
147
|
+
*/
|
|
148
|
+
export function selectPageIsBusy(state, pageSlug, kind) {
|
|
149
|
+
return !!state[kind][pageSlug];
|
|
150
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { IdOrKey } from './types';
|
|
3
|
+
import type { IThebeCell } from 'thebe-core';
|
|
4
|
+
import { SourceFileKind } from 'myst-common';
|
|
5
|
+
export declare function useExecutionScope({ clearOutputsOnExecute, }?: {
|
|
6
|
+
clearOutputsOnExecute?: boolean;
|
|
7
|
+
}): {
|
|
8
|
+
ready: boolean;
|
|
9
|
+
start: (slug: string) => void;
|
|
10
|
+
clearAll: (pageSlug: string) => void;
|
|
11
|
+
resetAll: (pageSlug: string) => void;
|
|
12
|
+
execute: (slug: string) => void;
|
|
13
|
+
slug: string;
|
|
14
|
+
state: import("./types").ExecuteScopeState;
|
|
15
|
+
dispatch: React.Dispatch<import("./actions").ExecuteScopeAction>;
|
|
16
|
+
idkmap: import("./types").IdKeyMap;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* useNotebookExecution a hook to govern notebook execution in the context of a single
|
|
20
|
+
* cell embedded in an article
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
export declare function useNotebookExecution(id: IdOrKey, clearOutputsOnExecute?: boolean): {
|
|
24
|
+
ready: boolean;
|
|
25
|
+
start: () => void;
|
|
26
|
+
clear: () => void;
|
|
27
|
+
reset: () => void;
|
|
28
|
+
execute: () => void;
|
|
29
|
+
cellIsExecuting: boolean;
|
|
30
|
+
notebookIsExecuting: boolean;
|
|
31
|
+
notebookIsResetting: boolean;
|
|
32
|
+
notebookIsBusy: boolean;
|
|
33
|
+
executionCount: number | null | undefined;
|
|
34
|
+
slug: string;
|
|
35
|
+
state: import("./types").ExecuteScopeState;
|
|
36
|
+
dispatch: React.Dispatch<import("./actions").ExecuteScopeAction>;
|
|
37
|
+
idkmap: import("./types").IdKeyMap;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* useCellExecution a hook to govern the execute status and actions for a single cell
|
|
41
|
+
*
|
|
42
|
+
* @param id
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
export declare function useCellExecution(id: IdOrKey): {
|
|
46
|
+
kind: SourceFileKind;
|
|
47
|
+
ready: boolean;
|
|
48
|
+
execute: () => void;
|
|
49
|
+
clear: () => void;
|
|
50
|
+
cellIsExecuting: boolean;
|
|
51
|
+
notebookIsExecuting: boolean;
|
|
52
|
+
notebookIsResetting: boolean;
|
|
53
|
+
notebookIsBusy: boolean;
|
|
54
|
+
cell: IThebeCell | undefined;
|
|
55
|
+
};
|
|
56
|
+
export declare function useIsAComputableCell(id: IdOrKey): {
|
|
57
|
+
slug: string;
|
|
58
|
+
computable: boolean;
|
|
59
|
+
ready: boolean;
|
|
60
|
+
};
|
|
61
|
+
export declare function useReadyToExecute(): boolean;
|
|
62
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/execute/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,KAAK,EAAE,UAAU,EAA0C,MAAM,YAAY,CAAC;AAGrF,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,wBAAgB,iBAAiB,CAAC,EAChC,qBAA6B,GAC9B,GAAE;IAAE,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAAO;;kBAUR,MAAM;yBAsD1B,MAAM;yBAYN,MAAM;oBAxDI,MAAM;;;;;EAgF9B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,qBAAqB,UAAQ;;;;;;;;;;;;;;;EA4G9E;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO;;;;;;;;;;EAiE3C;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO;;;;EAc/C;AAED,wBAAgB,iBAAiB,YAOhC"}
|