@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.
Files changed (171) hide show
  1. package/dist/cjs/ConnectionStatusTray.d.ts.map +1 -1
  2. package/dist/cjs/ConnectionStatusTray.js +6 -4
  3. package/dist/cjs/ErrorTray.d.ts +5 -0
  4. package/dist/cjs/ErrorTray.d.ts.map +1 -0
  5. package/dist/cjs/ErrorTray.js +34 -0
  6. package/dist/cjs/controls/ArticleCellControls.d.ts +10 -0
  7. package/dist/cjs/controls/ArticleCellControls.d.ts.map +1 -0
  8. package/dist/cjs/controls/ArticleCellControls.js +33 -0
  9. package/dist/cjs/controls/Buttons.d.ts +47 -0
  10. package/dist/cjs/controls/Buttons.d.ts.map +1 -0
  11. package/dist/cjs/controls/Buttons.js +70 -0
  12. package/dist/cjs/controls/NotebookCellControls.d.ts +10 -0
  13. package/dist/cjs/controls/NotebookCellControls.d.ts.map +1 -0
  14. package/dist/cjs/controls/NotebookCellControls.js +27 -0
  15. package/dist/cjs/controls/NotebookToolbar.d.ts +4 -0
  16. package/dist/cjs/controls/NotebookToolbar.d.ts.map +1 -0
  17. package/dist/cjs/controls/NotebookToolbar.js +47 -0
  18. package/dist/cjs/controls/Spinner.d.ts +4 -0
  19. package/dist/cjs/controls/Spinner.d.ts.map +1 -0
  20. package/dist/cjs/controls/Spinner.js +8 -0
  21. package/dist/cjs/controls/index.d.ts +5 -0
  22. package/dist/cjs/controls/index.d.ts.map +1 -0
  23. package/dist/cjs/controls/index.js +20 -0
  24. package/dist/cjs/execute/actions.d.ts +55 -0
  25. package/dist/cjs/execute/actions.d.ts.map +1 -0
  26. package/dist/cjs/execute/actions.js +49 -0
  27. package/dist/cjs/execute/busy.d.ts +74 -0
  28. package/dist/cjs/execute/busy.d.ts.map +1 -0
  29. package/dist/cjs/execute/busy.js +182 -0
  30. package/dist/cjs/execute/hooks.d.ts +62 -0
  31. package/dist/cjs/execute/hooks.d.ts.map +1 -0
  32. package/dist/cjs/execute/hooks.js +308 -0
  33. package/dist/cjs/execute/index.d.ts +7 -0
  34. package/dist/cjs/execute/index.d.ts.map +1 -0
  35. package/dist/cjs/execute/index.js +22 -0
  36. package/dist/cjs/execute/leaf.d.ts +26 -0
  37. package/dist/cjs/execute/leaf.d.ts.map +1 -0
  38. package/dist/cjs/execute/leaf.js +154 -0
  39. package/dist/cjs/execute/provider.d.ts +29 -0
  40. package/dist/cjs/execute/provider.d.ts.map +1 -0
  41. package/dist/cjs/execute/provider.js +126 -0
  42. package/dist/cjs/execute/reducer.d.ts +4 -0
  43. package/dist/cjs/execute/reducer.d.ts.map +1 -0
  44. package/dist/cjs/execute/reducer.js +136 -0
  45. package/dist/cjs/execute/selectors.d.ts +22 -0
  46. package/dist/cjs/execute/selectors.d.ts.map +1 -0
  47. package/dist/cjs/execute/selectors.js +89 -0
  48. package/dist/cjs/execute/types.d.ts +49 -0
  49. package/dist/cjs/execute/types.d.ts.map +1 -0
  50. package/dist/cjs/execute/types.js +2 -0
  51. package/dist/cjs/execute/utils.d.ts +23 -0
  52. package/dist/cjs/execute/utils.d.ts.map +1 -0
  53. package/dist/cjs/execute/utils.js +62 -0
  54. package/dist/cjs/index.d.ts +4 -1
  55. package/dist/cjs/index.d.ts.map +1 -1
  56. package/dist/cjs/index.js +4 -1
  57. package/dist/cjs/jupyter.d.ts.map +1 -1
  58. package/dist/cjs/jupyter.js +19 -17
  59. package/dist/cjs/output.d.ts +1 -1
  60. package/dist/cjs/output.d.ts.map +1 -1
  61. package/dist/cjs/output.js +7 -4
  62. package/dist/cjs/providers.d.ts +1 -48
  63. package/dist/cjs/providers.d.ts.map +1 -1
  64. package/dist/cjs/providers.js +4 -155
  65. package/dist/esm/ConnectionStatusTray.d.ts.map +1 -1
  66. package/dist/esm/ConnectionStatusTray.js +7 -5
  67. package/dist/esm/ErrorTray.d.ts +5 -0
  68. package/dist/esm/ErrorTray.d.ts.map +1 -0
  69. package/dist/esm/ErrorTray.js +30 -0
  70. package/dist/esm/controls/ArticleCellControls.d.ts +10 -0
  71. package/dist/esm/controls/ArticleCellControls.d.ts.map +1 -0
  72. package/dist/esm/controls/ArticleCellControls.js +27 -0
  73. package/dist/esm/controls/Buttons.d.ts +47 -0
  74. package/dist/esm/controls/Buttons.d.ts.map +1 -0
  75. package/dist/esm/controls/Buttons.js +57 -0
  76. package/dist/esm/controls/NotebookCellControls.d.ts +10 -0
  77. package/dist/esm/controls/NotebookCellControls.d.ts.map +1 -0
  78. package/dist/esm/controls/NotebookCellControls.js +21 -0
  79. package/dist/esm/controls/NotebookToolbar.d.ts +4 -0
  80. package/dist/esm/controls/NotebookToolbar.d.ts.map +1 -0
  81. package/dist/esm/controls/NotebookToolbar.js +40 -0
  82. package/dist/esm/controls/Spinner.d.ts +4 -0
  83. package/dist/esm/controls/Spinner.d.ts.map +1 -0
  84. package/dist/esm/controls/Spinner.js +4 -0
  85. package/dist/esm/controls/index.d.ts +5 -0
  86. package/dist/esm/controls/index.d.ts.map +1 -0
  87. package/dist/esm/controls/index.js +4 -0
  88. package/dist/esm/execute/actions.d.ts +55 -0
  89. package/dist/esm/execute/actions.d.ts.map +1 -0
  90. package/dist/esm/execute/actions.js +38 -0
  91. package/dist/esm/execute/busy.d.ts +74 -0
  92. package/dist/esm/execute/busy.d.ts.map +1 -0
  93. package/dist/esm/execute/busy.js +150 -0
  94. package/dist/esm/execute/hooks.d.ts +62 -0
  95. package/dist/esm/execute/hooks.d.ts.map +1 -0
  96. package/dist/esm/execute/hooks.js +277 -0
  97. package/dist/esm/execute/index.d.ts +7 -0
  98. package/dist/esm/execute/index.d.ts.map +1 -0
  99. package/dist/esm/execute/index.js +6 -0
  100. package/dist/esm/execute/leaf.d.ts +26 -0
  101. package/dist/esm/execute/leaf.d.ts.map +1 -0
  102. package/dist/esm/execute/leaf.js +147 -0
  103. package/dist/esm/execute/provider.d.ts +29 -0
  104. package/dist/esm/execute/provider.d.ts.map +1 -0
  105. package/dist/esm/execute/provider.js +99 -0
  106. package/dist/esm/execute/reducer.d.ts +4 -0
  107. package/dist/esm/execute/reducer.d.ts.map +1 -0
  108. package/dist/esm/execute/reducer.js +132 -0
  109. package/dist/esm/execute/selectors.d.ts +22 -0
  110. package/dist/esm/execute/selectors.d.ts.map +1 -0
  111. package/dist/esm/execute/selectors.js +77 -0
  112. package/dist/esm/execute/types.d.ts +49 -0
  113. package/dist/esm/execute/types.d.ts.map +1 -0
  114. package/dist/esm/execute/types.js +1 -0
  115. package/dist/esm/execute/utils.d.ts +23 -0
  116. package/dist/esm/execute/utils.d.ts.map +1 -0
  117. package/dist/esm/execute/utils.js +58 -0
  118. package/dist/esm/index.d.ts +4 -1
  119. package/dist/esm/index.d.ts.map +1 -1
  120. package/dist/esm/index.js +4 -1
  121. package/dist/esm/jupyter.d.ts.map +1 -1
  122. package/dist/esm/jupyter.js +17 -15
  123. package/dist/esm/output.d.ts +1 -1
  124. package/dist/esm/output.d.ts.map +1 -1
  125. package/dist/esm/output.js +8 -5
  126. package/dist/esm/providers.d.ts +1 -48
  127. package/dist/esm/providers.d.ts.map +1 -1
  128. package/dist/esm/providers.js +2 -126
  129. package/dist/types/ConnectionStatusTray.d.ts.map +1 -1
  130. package/dist/types/ErrorTray.d.ts +5 -0
  131. package/dist/types/ErrorTray.d.ts.map +1 -0
  132. package/dist/types/controls/ArticleCellControls.d.ts +10 -0
  133. package/dist/types/controls/ArticleCellControls.d.ts.map +1 -0
  134. package/dist/types/controls/Buttons.d.ts +47 -0
  135. package/dist/types/controls/Buttons.d.ts.map +1 -0
  136. package/dist/types/controls/NotebookCellControls.d.ts +10 -0
  137. package/dist/types/controls/NotebookCellControls.d.ts.map +1 -0
  138. package/dist/types/controls/NotebookToolbar.d.ts +4 -0
  139. package/dist/types/controls/NotebookToolbar.d.ts.map +1 -0
  140. package/dist/types/controls/Spinner.d.ts +4 -0
  141. package/dist/types/controls/Spinner.d.ts.map +1 -0
  142. package/dist/types/controls/index.d.ts +5 -0
  143. package/dist/types/controls/index.d.ts.map +1 -0
  144. package/dist/types/execute/actions.d.ts +55 -0
  145. package/dist/types/execute/actions.d.ts.map +1 -0
  146. package/dist/types/execute/busy.d.ts +74 -0
  147. package/dist/types/execute/busy.d.ts.map +1 -0
  148. package/dist/types/execute/hooks.d.ts +62 -0
  149. package/dist/types/execute/hooks.d.ts.map +1 -0
  150. package/dist/types/execute/index.d.ts +7 -0
  151. package/dist/types/execute/index.d.ts.map +1 -0
  152. package/dist/types/execute/leaf.d.ts +26 -0
  153. package/dist/types/execute/leaf.d.ts.map +1 -0
  154. package/dist/types/execute/provider.d.ts +29 -0
  155. package/dist/types/execute/provider.d.ts.map +1 -0
  156. package/dist/types/execute/reducer.d.ts +4 -0
  157. package/dist/types/execute/reducer.d.ts.map +1 -0
  158. package/dist/types/execute/selectors.d.ts +22 -0
  159. package/dist/types/execute/selectors.d.ts.map +1 -0
  160. package/dist/types/execute/types.d.ts +49 -0
  161. package/dist/types/execute/types.d.ts.map +1 -0
  162. package/dist/types/execute/utils.d.ts +23 -0
  163. package/dist/types/execute/utils.d.ts.map +1 -0
  164. package/dist/types/index.d.ts +4 -1
  165. package/dist/types/index.d.ts.map +1 -1
  166. package/dist/types/jupyter.d.ts.map +1 -1
  167. package/dist/types/output.d.ts +1 -1
  168. package/dist/types/output.d.ts.map +1 -1
  169. package/dist/types/providers.d.ts +1 -48
  170. package/dist/types/providers.d.ts.map +1 -1
  171. package/package.json +9 -8
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectionStatusTray.d.ts","sourceRoot":"","sources":["../../src/ConnectionStatusTray.tsx"],"names":[],"mappings":"AAKA,wBAAgB,oBAAoB,mDAmFnC"}
1
+ {"version":3,"file":"ConnectionStatusTray.d.ts","sourceRoot":"","sources":["../../src/ConnectionStatusTray.tsx"],"names":[],"mappings":"AAMA,wBAAgB,oBAAoB,mDAoFnC"}
@@ -5,16 +5,17 @@ const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
6
  const thebe_react_1 = require("thebe-react");
7
7
  const providers_1 = require("./providers");
8
+ const execute_1 = require("./execute");
8
9
  function ConnectionStatusTray() {
9
10
  const { thebe } = (0, providers_1.useComputeOptions)();
10
11
  const { connecting, ready: serverReady, error: serverError, events } = (0, thebe_react_1.useThebeServer)();
11
- const { starting, ready: sessionReady, error: sessionError } = (0, thebe_react_1.useThebeSession)();
12
+ const { slug, ready: scopeReady, state } = (0, execute_1.useExecutionScope)();
12
13
  const [show, setShow] = (0, react_1.useState)(false);
13
14
  const [unsub, setUnsub] = (0, react_1.useState)();
14
15
  const [status, setStatus] = (0, react_1.useState)('[client] Connecting...');
15
- const error = serverError || sessionError;
16
- const ready = serverReady && sessionReady;
17
- const busy = connecting || starting;
16
+ const error = serverError; // TODO scope bulding error handling || sessionError;
17
+ const ready = serverReady && scopeReady;
18
+ const busy = connecting || (0, execute_1.selectAreExecutionScopesBuilding)(state, slug);
18
19
  const handleStatus = (event, data) => {
19
20
  setStatus(`[${data.subject}]: ${data.message}`);
20
21
  };
@@ -40,6 +41,7 @@ function ConnectionStatusTray() {
40
41
  }
41
42
  }, [thebe, busy, ready, error]);
42
43
  const host = (thebe === null || thebe === void 0 ? void 0 : thebe.useBinder) ? 'Binder' : (thebe === null || thebe === void 0 ? void 0 : thebe.useJupyterLite) ? 'JupyterLite' : 'Local Server';
44
+ // TODO radix ui toast!
43
45
  if (show && error) {
44
46
  return ((0, jsx_runtime_1.jsxs)("div", { className: "fixed p-3 text-sm text-gray-700 bg-white border rounded shadow-lg bottom-2 sm:right-2 max-w-[90%] md:max-w-[300px] min-w-0", children: [(0, jsx_runtime_1.jsxs)("div", { className: "mb-2 font-semibold text-center", children: ["\u26D4\uFE0F Error connecting to ", host, " \u26D4\uFE0F"] }), (0, jsx_runtime_1.jsx)("div", { className: "my-1 max-h-[15rem] mono overflow-hidden text-ellipsis", children: error }), (0, jsx_runtime_1.jsx)("div", { className: "flex justify-end", children: (0, jsx_runtime_1.jsx)("div", { className: "text-xs cursor-pointer hover:underline", role: "button", onClick: () => setShow(false), children: "dismiss" }) })] }));
45
47
  }
@@ -0,0 +1,5 @@
1
+ import type { IThebeNotebookError } from 'thebe-react';
2
+ export declare function ErrorTray({ errors }: {
3
+ errors: IThebeNotebookError[];
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=ErrorTray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorTray.d.ts","sourceRoot":"","sources":["../../src/ErrorTray.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAgDvD,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,mBAAmB,EAAE,CAAA;CAAE,2CAStE"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorTray = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ const thebe_react_1 = require("thebe-react");
7
+ function ErrorDecoration({ children, idx }) {
8
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "relative py-3 mx-2 my-8 border rounded", children: [(0, jsx_runtime_1.jsx)("div", { className: "absolute z-10 flex items-center bg-white -top-3 -left-2", children: idx && (0, jsx_runtime_1.jsxs)("div", { className: "ml-1 text-sm text-gray-500", children: ["cell #: ", idx] }) }), (0, jsx_runtime_1.jsx)("div", { className: "mx-3", children: children })] }));
9
+ }
10
+ function ErrorTrayMessage({ errors }) {
11
+ const { core } = (0, thebe_react_1.useThebeLoader)();
12
+ const [cells, setCells] = (0, react_1.useState)([]);
13
+ const [refs, setRefs] = (0, react_1.useState)([]);
14
+ (0, react_1.useEffect)(() => {
15
+ if (!core)
16
+ return;
17
+ const cs = errors.map(() => new core.PassiveCellRenderer('any'));
18
+ setRefs(errors.map((_, idx) => (node) => {
19
+ var _a;
20
+ if (node) {
21
+ cs[idx].attachToDOM(node);
22
+ cs[idx].render((_a = errors[idx].error) !== null && _a !== void 0 ? _a : []);
23
+ }
24
+ }));
25
+ setCells(cells);
26
+ }, [core, errors]);
27
+ if (!core)
28
+ return null;
29
+ return ((0, jsx_runtime_1.jsx)("div", { children: errors.map((error, idx) => ((0, jsx_runtime_1.jsx)("div", { className: "min-w-[400px]", children: (0, jsx_runtime_1.jsx)(ErrorDecoration, { idx: error.index, children: (0, jsx_runtime_1.jsx)("div", { className: "z-100", ref: refs[idx] }, error.id) }) }))) }));
30
+ }
31
+ function ErrorTray({ errors }) {
32
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "relative px-4 pt-3 mt-8 text-sm text-red-600 border border-red-400 rounded border-1", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("span", { className: "font-bold", children: "Error" }), " - a page refresh may resolve this."] }), (0, jsx_runtime_1.jsx)(ErrorTrayMessage, { errors: errors })] }));
33
+ }
34
+ exports.ErrorTray = ErrorTray;
@@ -0,0 +1,10 @@
1
+ export declare function ArticleStatusBadge({ id }: {
2
+ id: string;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ export declare function ArticleRunNotebook({ id }: {
5
+ id: string;
6
+ }): import("react/jsx-runtime").JSX.Element | null;
7
+ export declare function ArticleResetNotebook({ id }: {
8
+ id: string;
9
+ }): import("react/jsx-runtime").JSX.Element | null;
10
+ //# sourceMappingURL=ArticleCellControls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ArticleCellControls.d.ts","sourceRoot":"","sources":["../../../src/controls/ArticleCellControls.tsx"],"names":[],"mappings":"AAMA,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,2CAmBxD;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,kDAYxD;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,EAAE,EAAE;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,kDAY1D"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ArticleResetNotebook = exports.ArticleRunNotebook = exports.ArticleStatusBadge = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const thebe_react_1 = require("thebe-react");
6
+ const hooks_1 = require("../execute/hooks");
7
+ const Buttons_1 = require("./Buttons");
8
+ const execute_1 = require("../execute");
9
+ function ArticleStatusBadge({ id }) {
10
+ const { connect, connecting } = (0, thebe_react_1.useThebeServer)();
11
+ const { slug, state, start, ready, executionCount } = (0, hooks_1.useNotebookExecution)(id);
12
+ const building = (0, execute_1.selectAreExecutionScopesBuilding)(state, slug);
13
+ const handleStart = () => {
14
+ connect();
15
+ start();
16
+ };
17
+ return ((0, jsx_runtime_1.jsx)(Buttons_1.SpinnerStatusButton, { ready: ready, busy: building || connecting, modified: executionCount != null, onClick: handleStart }));
18
+ }
19
+ exports.ArticleStatusBadge = ArticleStatusBadge;
20
+ function ArticleRunNotebook({ id }) {
21
+ const { ready, cellIsExecuting, notebookIsBusy, execute } = (0, hooks_1.useNotebookExecution)(id);
22
+ if (!ready)
23
+ return null;
24
+ return ((0, jsx_runtime_1.jsx)(Buttons_1.Run, { ready: ready, executing: cellIsExecuting, disabled: notebookIsBusy, onClick: execute, title: "Run the notebook that creates this figure" }));
25
+ }
26
+ exports.ArticleRunNotebook = ArticleRunNotebook;
27
+ function ArticleResetNotebook({ id }) {
28
+ const { ready, notebookIsResetting, notebookIsBusy, reset } = (0, hooks_1.useNotebookExecution)(id);
29
+ if (!ready)
30
+ return null;
31
+ return ((0, jsx_runtime_1.jsx)(Buttons_1.Reset, { ready: ready, resetting: notebookIsResetting, disabled: notebookIsBusy, onClick: reset, title: "Reset the figure to its original state and restart the kernel" }));
32
+ }
33
+ exports.ArticleResetNotebook = ArticleResetNotebook;
@@ -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,70 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Launch = exports.Clear = exports.Reset = exports.ReRun = exports.Power = exports.Run = exports.SpinnerStatusButton = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const PlayCircleIcon_1 = __importDefault(require("@heroicons/react/24/outline/PlayCircleIcon"));
9
+ const ArrowPathIcon_1 = __importDefault(require("@heroicons/react/24/outline/ArrowPathIcon"));
10
+ const MinusCircleIcon_1 = __importDefault(require("@heroicons/react/24/outline/MinusCircleIcon"));
11
+ const ArrowTopRightOnSquareIcon_1 = __importDefault(require("@heroicons/react/24/outline/ArrowTopRightOnSquareIcon"));
12
+ const ArrowUturnLeftIcon_1 = __importDefault(require("@heroicons/react/24/outline/ArrowUturnLeftIcon"));
13
+ const BoltIcon_1 = __importDefault(require("@heroicons/react/24/outline/BoltIcon"));
14
+ const PowerIcon_1 = __importDefault(require("@heroicons/react/24/outline/PowerIcon"));
15
+ const BoltIcon_2 = __importDefault(require("@heroicons/react/24/solid/BoltIcon"));
16
+ const classnames_1 = __importDefault(require("classnames"));
17
+ const Spinner_1 = require("./Spinner");
18
+ function SpinnerStatusButton({ ready, busy, modified, onClick, }) {
19
+ let title = 'Enable compute to make this figure interactive';
20
+ if (ready) {
21
+ title = modified ? 'The figure has been modified' : "The figure is in it's original state";
22
+ }
23
+ let icon = (0, jsx_runtime_1.jsx)(PowerIcon_1.default, { className: "w-6 h-6" });
24
+ if (ready) {
25
+ if (modified) {
26
+ icon = (0, jsx_runtime_1.jsx)(BoltIcon_1.default, { className: "w-6 h-6 text-green-600" });
27
+ }
28
+ else {
29
+ icon = (0, jsx_runtime_1.jsx)(BoltIcon_2.default, { className: "w-6 h-6 text-green-600" });
30
+ }
31
+ }
32
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "relative flex text-sm", children: [(0, jsx_runtime_1.jsx)("button", { className: (0, classnames_1.default)('cursor-pointer text-gray-700 dark:text-white active:text-green-700 hover:opacity-100', {
33
+ 'opacity-10': busy,
34
+ 'opacity-70': !busy,
35
+ }), disabled: ready, title: title, "aria-label": `status`, onClick: onClick !== null && onClick !== void 0 ? onClick : (() => ({})), children: icon }), busy && ((0, jsx_runtime_1.jsx)("span", { className: "absolute top-0 left-0 z-10 w-[22px] h-[22px] opacity-100", children: (0, jsx_runtime_1.jsx)(Spinner_1.Spinner, { size: 24 }) }))] }));
36
+ }
37
+ exports.SpinnerStatusButton = SpinnerStatusButton;
38
+ function SpinnerButton({ ready, icon, busy, disabled, title, onClick, }) {
39
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "relative flex text-sm", children: [(0, jsx_runtime_1.jsx)("button", { className: (0, classnames_1.default)('cursor-pointer text-gray-700 dark:text-white active:text-green-700 hover:opacity-100', {
40
+ 'opacity-10 hover:opacity-10': busy,
41
+ 'opacity-70': !busy,
42
+ }), 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 && ((0, jsx_runtime_1.jsx)("span", { className: "absolute top-0 left-0 z-10 w-[22px] h-[22px] opacity-100", children: (0, jsx_runtime_1.jsx)(Spinner_1.Spinner, { size: 24 }) }))] }));
43
+ }
44
+ function Run({ ready, executing, disabled, title, onClick, }) {
45
+ return ((0, jsx_runtime_1.jsx)(SpinnerButton, { ready: ready, busy: executing, disabled: disabled, title: title !== null && title !== void 0 ? title : 'run all cells', onClick: onClick, icon: (0, jsx_runtime_1.jsx)(PlayCircleIcon_1.default, { className: "inline-block w-6 h-6 align-top" }) }));
46
+ }
47
+ exports.Run = Run;
48
+ function Power({ ready, executing, disabled, title, onClick, }) {
49
+ return ((0, jsx_runtime_1.jsx)(SpinnerButton, { ready: ready, busy: executing, disabled: disabled, title: title !== null && title !== void 0 ? title : 'enable compute', onClick: onClick, icon: (0, jsx_runtime_1.jsx)(PowerIcon_1.default, { className: "inline-block w-6 h-6 align-top dark:text-white" }) }));
50
+ }
51
+ exports.Power = Power;
52
+ function ReRun({ ready, executing, disabled, title, onClick, }) {
53
+ return ((0, jsx_runtime_1.jsx)(SpinnerButton, { ready: ready, busy: executing, disabled: disabled, title: title !== null && title !== void 0 ? title : 'run all cells', onClick: onClick, icon: (0, jsx_runtime_1.jsx)(ArrowPathIcon_1.default, { className: "inline-block w-6 h-6 align-top" }) }));
54
+ }
55
+ exports.ReRun = ReRun;
56
+ function Reset({ ready, resetting, disabled, title, onClick, }) {
57
+ return ((0, jsx_runtime_1.jsx)(SpinnerButton, { ready: ready, busy: resetting, disabled: disabled, title: title !== null && title !== void 0 ? title : 'reset notebook', onClick: onClick, icon: (0, jsx_runtime_1.jsx)(ArrowUturnLeftIcon_1.default, { className: "inline-block w-6 h-6 align-top" }) }));
58
+ }
59
+ exports.Reset = Reset;
60
+ function Clear({ ready, disabled, title, onClick, }) {
61
+ return ((0, jsx_runtime_1.jsx)("button", { className: (0, classnames_1.default)('flex text-gray-700 dark:text-white opacity-70 ', {
62
+ 'cursor-not-allowed': disabled || !ready,
63
+ 'active:text-green-700 hover:opacity-100 cursor-pointer': !disabled,
64
+ }), disabled: disabled || !ready, onClick: () => onClick(), title: title !== null && title !== void 0 ? title : 'clear', "aria-label": title !== null && title !== void 0 ? title : 'clear', children: (0, jsx_runtime_1.jsx)(MinusCircleIcon_1.default, { className: "inline-block w-6 h-6 align-top" }) }));
65
+ }
66
+ exports.Clear = Clear;
67
+ function Launch({ ready, disabled, title, onClick, }) {
68
+ return ((0, jsx_runtime_1.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: (0, jsx_runtime_1.jsx)(ArrowTopRightOnSquareIcon_1.default, { className: "inline-block w-6 h-6 align-top" }) }));
69
+ }
70
+ exports.Launch = Launch;
@@ -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,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NotebookClearCell = exports.NotebookRunCellSpinnerOnly = exports.NotebookRunCell = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const hooks_1 = require("../execute/hooks");
6
+ const Buttons_1 = require("./Buttons");
7
+ function NotebookRunCell({ id }) {
8
+ const { ready, cellIsExecuting, notebookIsBusy, execute } = (0, hooks_1.useCellExecution)(id);
9
+ if (!ready)
10
+ return null;
11
+ return ((0, jsx_runtime_1.jsx)(Buttons_1.Run, { ready: ready, executing: cellIsExecuting, disabled: notebookIsBusy, onClick: execute }));
12
+ }
13
+ exports.NotebookRunCell = NotebookRunCell;
14
+ function NotebookRunCellSpinnerOnly({ id }) {
15
+ const { ready, cellIsExecuting } = (0, hooks_1.useCellExecution)(id);
16
+ if (!ready || !cellIsExecuting)
17
+ return null;
18
+ return ((0, jsx_runtime_1.jsx)(Buttons_1.Run, { ready: ready, executing: cellIsExecuting, disabled: true, onClick: () => ({}), title: "executing cell..." }));
19
+ }
20
+ exports.NotebookRunCellSpinnerOnly = NotebookRunCellSpinnerOnly;
21
+ function NotebookClearCell({ id }) {
22
+ const { ready, notebookIsBusy, clear } = (0, hooks_1.useCellExecution)(id);
23
+ if (!ready)
24
+ return null;
25
+ return ((0, jsx_runtime_1.jsx)(Buttons_1.Clear, { ready: ready, disabled: notebookIsBusy, onClick: clear, title: "Clear cell outputs" }));
26
+ }
27
+ exports.NotebookClearCell = NotebookClearCell;
@@ -0,0 +1,4 @@
1
+ export declare function NotebookToolbar({ showLaunch }: {
2
+ showLaunch?: boolean;
3
+ }): import("react/jsx-runtime").JSX.Element | null;
4
+ //# sourceMappingURL=NotebookToolbar.d.ts.map
@@ -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,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.NotebookToolbar = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const execute_1 = require("../execute");
9
+ const thebe_react_1 = require("thebe-react");
10
+ const PowerIcon_1 = __importDefault(require("@heroicons/react/24/outline/PowerIcon"));
11
+ const Spinner_1 = require("./Spinner");
12
+ const Buttons_1 = require("./Buttons");
13
+ const classnames_1 = __importDefault(require("classnames"));
14
+ function NotebookToolbar({ showLaunch = false }) {
15
+ const { slug, ready, state, start, resetAll, clearAll, execute } = (0, execute_1.useExecutionScope)();
16
+ const busy = (0, execute_1.useBusyScope)();
17
+ const { connecting, connect, ready: serverReady, server, error: serverError } = (0, thebe_react_1.useThebeServer)();
18
+ const computable = (0, execute_1.selectIsComputable)(state, slug);
19
+ const handleStart = () => {
20
+ connect();
21
+ start(slug);
22
+ };
23
+ const handleReset = () => resetAll(slug);
24
+ const handleClear = () => clearAll(slug);
25
+ const handleRun = () => execute(slug);
26
+ const handleLaunch = () => {
27
+ if (!serverReady || !(server === null || server === void 0 ? void 0 : server.settings))
28
+ return;
29
+ window.open(`${server.settings.baseUrl}?token=${server.settings.token}`, '_blank');
30
+ };
31
+ const building = (0, execute_1.selectAreExecutionScopesBuilding)(state, slug);
32
+ const status = (0, execute_1.selectExecutionScopeStatus)(state, slug);
33
+ const error = !!serverError; // TODO broader build & session errors
34
+ let title = 'Connect to a compute server';
35
+ if (error) {
36
+ title = 'Error connecting to compute server';
37
+ }
38
+ else if (building) {
39
+ title = status;
40
+ }
41
+ if (computable)
42
+ return ((0, jsx_runtime_1.jsx)("div", { className: "sticky top-[60px] flex justify-end w-full z-20 pointer-events-none", children: (0, jsx_runtime_1.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 && ((0, jsx_runtime_1.jsxs)("div", { className: "rounded", children: [(0, jsx_runtime_1.jsx)("button", { className: (0, classnames_1.default)('flex text-center rounded-full cursor-pointer text-stone-800 dark:text-white hover:opacity-100 opacity-60', {
43
+ 'opacity-10 text-stone-100 dark:text-stone-700': connecting || building,
44
+ }), onClick: handleStart, disabled: building, "aria-label": "start compute environment", children: (0, jsx_runtime_1.jsx)(PowerIcon_1.default, { className: "inline-block w-6 h-6 align-top", title: "enable compute" }) }), (connecting || building) && !error && ((0, jsx_runtime_1.jsx)("span", { className: "absolute top-1 left-1 z-10 w-[22px] h-[22px] opacity-100", title: title, children: (0, jsx_runtime_1.jsx)(Spinner_1.Spinner, { size: 24 }) }))] })), ready && ((0, jsx_runtime_1.jsx)(Buttons_1.Run, { ready: ready, executing: busy.page(slug, 'execute'), onClick: handleRun, title: "Run all cells" })), ready && ((0, jsx_runtime_1.jsx)(Buttons_1.Reset, { ready: ready, resetting: busy.page(slug, 'reset'), onClick: handleReset, title: "Reset notebook and restart kernel" })), ready && ((0, jsx_runtime_1.jsx)(Buttons_1.Clear, { ready: ready, disabled: busy.page(slug, 'execute') || busy.page(slug, 'reset'), onClick: handleClear, title: "Clear all cells" })), showLaunch && ready && ((0, jsx_runtime_1.jsx)(Buttons_1.Launch, { ready: ready, disabled: false, onClick: handleLaunch, title: "Launch notebook in Jupyter" }))] }) }));
45
+ return null;
46
+ }
47
+ exports.NotebookToolbar = NotebookToolbar;
@@ -0,0 +1,4 @@
1
+ export declare function Spinner({ size }: {
2
+ size: number;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=Spinner.d.ts.map
@@ -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,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Spinner = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ function Spinner({ size }) {
6
+ return ((0, jsx_runtime_1.jsxs)("div", { role: "status", children: [(0, jsx_runtime_1.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: [(0, jsx_runtime_1.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" }), (0, jsx_runtime_1.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" })] }), (0, jsx_runtime_1.jsx)("span", { className: "sr-only", children: "Loading..." })] }));
7
+ }
8
+ exports.Spinner = Spinner;
@@ -0,0 +1,5 @@
1
+ export * from './Buttons';
2
+ export * from './NotebookCellControls';
3
+ export * from './NotebookToolbar';
4
+ export * from './Spinner';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -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,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Buttons"), exports);
18
+ __exportStar(require("./NotebookCellControls"), exports);
19
+ __exportStar(require("./NotebookToolbar"), exports);
20
+ __exportStar(require("./Spinner"), exports);
@@ -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,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isAddSessionPayload = exports.isAddNotebookPayload = exports.isAddMdastPayload = exports.isEnableScopePayload = exports.isBuildStatusPayload = exports.isDoubleSlugPayload = exports.isSlugPayload = exports.isNavigatePayload = void 0;
4
+ function isNavigatePayload(payload) {
5
+ const maybePayload = payload;
6
+ return (typeof maybePayload.slug === 'string' &&
7
+ typeof maybePayload.mdast === 'object' &&
8
+ Array.isArray(maybePayload.dependencies) &&
9
+ Array.isArray(maybePayload.computables));
10
+ }
11
+ exports.isNavigatePayload = isNavigatePayload;
12
+ function isSlugPayload(payload) {
13
+ return typeof payload.slug === 'string';
14
+ }
15
+ exports.isSlugPayload = isSlugPayload;
16
+ function isDoubleSlugPayload(payload) {
17
+ const maybePayload = payload;
18
+ return typeof maybePayload.pageSlug === 'string' && typeof maybePayload.notebookSlug === 'string';
19
+ }
20
+ exports.isDoubleSlugPayload = isDoubleSlugPayload;
21
+ function isBuildStatusPayload(payload) {
22
+ return typeof payload.status === 'string' && isSlugPayload(payload);
23
+ }
24
+ exports.isBuildStatusPayload = isBuildStatusPayload;
25
+ function isEnableScopePayload(payload) {
26
+ const maybePayload = payload;
27
+ return (typeof maybePayload.renderingSlug === 'string' && typeof maybePayload.scopeSlug === 'string');
28
+ }
29
+ exports.isEnableScopePayload = isEnableScopePayload;
30
+ function isAddMdastPayload(payload) {
31
+ const maybePayload = payload;
32
+ return typeof maybePayload.slug === 'string' && typeof maybePayload.mdast === 'object';
33
+ }
34
+ exports.isAddMdastPayload = isAddMdastPayload;
35
+ function isAddNotebookPayload(payload) {
36
+ const maybePayload = payload;
37
+ return (typeof maybePayload.pageSlug === 'string' &&
38
+ typeof maybePayload.notebookSlug === 'string' &&
39
+ typeof maybePayload.notebook === 'object' &&
40
+ typeof maybePayload.rendermime === 'object');
41
+ }
42
+ exports.isAddNotebookPayload = isAddNotebookPayload;
43
+ function isAddSessionPayload(payload) {
44
+ const maybePayload = payload;
45
+ return (typeof maybePayload.pageSlug === 'string' &&
46
+ typeof maybePayload.notebookSlug === 'string' &&
47
+ typeof maybePayload.session === 'object');
48
+ }
49
+ exports.isAddSessionPayload = isAddSessionPayload;
@@ -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"}