@myst-theme/jupyter 0.5.9 → 0.5.10
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/controls/Buttons.d.ts.map +1 -1
- package/dist/controls/Buttons.js +4 -29
- package/dist/hooks.d.ts +8 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +41 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/providers.d.ts +1 -1
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +3 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Buttons.d.ts","sourceRoot":"","sources":["../../src/controls/Buttons.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Buttons.d.ts","sourceRoot":"","sources":["../../src/controls/Buttons.tsx"],"names":[],"mappings":"AAwDA,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,2CA6DhG;AAED,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,2CAiBA;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,2CAaA;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,2CAgBA"}
|
package/dist/controls/Buttons.js
CHANGED
|
@@ -3,8 +3,7 @@ import { PlayCircleIcon, ArrowPathIcon, MinusCircleIcon, ArrowTopRightOnSquareIc
|
|
|
3
3
|
import { BoltIcon as BoltIconSolid } from '@heroicons/react/24/solid';
|
|
4
4
|
import classNames from 'classnames';
|
|
5
5
|
import { Spinner } from './Spinner.js';
|
|
6
|
-
import {
|
|
7
|
-
import { useCallback, useState } from 'react';
|
|
6
|
+
import { useLaunchBinder } from '../hooks.js';
|
|
8
7
|
function BinderButton({ icon, label, title, busy, error, className, onClick, }) {
|
|
9
8
|
let iconToShow = icon;
|
|
10
9
|
if (error) {
|
|
@@ -16,15 +15,7 @@ function BinderButton({ icon, label, title, busy, error, className, onClick, })
|
|
|
16
15
|
return (_jsx("button", { className: className, disabled: busy, onClick: onClick, title: title, children: _jsxs("div", { className: "flex items-center h-full", children: [iconToShow, _jsx("span", { children: label })] }) }));
|
|
17
16
|
}
|
|
18
17
|
export function LaunchBinder({ style, location }) {
|
|
19
|
-
const {
|
|
20
|
-
const [autoOpen, setAutoOpen] = useState(false);
|
|
21
|
-
// automatically click the link when the server is ready
|
|
22
|
-
// but only if the connection was initiated in this component by the user
|
|
23
|
-
const autoClick = useCallback((node) => {
|
|
24
|
-
if (node != null && autoOpen) {
|
|
25
|
-
node.click();
|
|
26
|
-
}
|
|
27
|
-
}, [autoOpen]);
|
|
18
|
+
const { connecting, ready, error, autoClickRef, handleStart, getUserServerUrl } = useLaunchBinder();
|
|
28
19
|
let btnStyles = 'flex gap-1 px-2 py-1 font-normal no-underline border rounded bg-slate-200 border-slate-600 hover:bg-slate-800 hover:text-white hover:border-transparent';
|
|
29
20
|
let icon = (_jsx(ArrowTopRightOnSquareIcon, { width: "1rem", height: "1rem", className: "self-center mr-2 transition-transform group-hover:-translate-x-1 shrink-0" }));
|
|
30
21
|
if (style === 'link') {
|
|
@@ -32,26 +23,10 @@ export function LaunchBinder({ style, location }) {
|
|
|
32
23
|
btnStyles =
|
|
33
24
|
'inline-flex items-center mr-2 font-medium no-underline text-gray-900 lg:mr-0 lg:flex';
|
|
34
25
|
}
|
|
35
|
-
const handleStart = () => {
|
|
36
|
-
if (!connect) {
|
|
37
|
-
console.debug("LaunchBinder: Trying to start a connection but connect() isn't defined");
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
40
|
-
setAutoOpen(true);
|
|
41
|
-
connect();
|
|
42
|
-
};
|
|
43
26
|
if (ready) {
|
|
44
27
|
// we expect ?token= to be in the url
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
// add the location to the url pathname
|
|
48
|
-
const url = new URL(userServerUrl);
|
|
49
|
-
if (url.pathname.endsWith('/'))
|
|
50
|
-
url.pathname = url.pathname.slice(0, -1);
|
|
51
|
-
url.pathname = `${url.pathname}/lab/tree${location}`;
|
|
52
|
-
userServerUrl = url.toString();
|
|
53
|
-
}
|
|
54
|
-
return (_jsx("a", { ref: autoClick, className: btnStyles, href: userServerUrl, target: "_blank", rel: "noopener noreferrer", title: "Binder server is available, click to open in a new tab", children: _jsxs("div", { className: "flex items-center h-full", children: [icon, _jsx("span", { children: "Open in Binder" })] }) }));
|
|
28
|
+
const userServerUrl = getUserServerUrl(location);
|
|
29
|
+
return (_jsx("a", { ref: autoClickRef, className: btnStyles, href: userServerUrl, target: "_blank", rel: "noopener noreferrer", title: "Binder server is available, click to open in a new tab", children: _jsxs("div", { className: "flex items-center h-full", children: [icon, _jsx("span", { children: "Open in Binder" })] }) }));
|
|
55
30
|
}
|
|
56
31
|
let label = 'Launch Binder';
|
|
57
32
|
let title = 'Click to start a new compute session';
|
package/dist/hooks.d.ts
CHANGED
|
@@ -15,5 +15,13 @@ export default function useWindowSize(): {
|
|
|
15
15
|
width: number;
|
|
16
16
|
height: number;
|
|
17
17
|
};
|
|
18
|
+
export declare function useLaunchBinder(): {
|
|
19
|
+
connecting: boolean;
|
|
20
|
+
ready: boolean;
|
|
21
|
+
error: string | undefined;
|
|
22
|
+
autoClickRef: (node: HTMLAnchorElement) => void;
|
|
23
|
+
handleStart: () => void;
|
|
24
|
+
getUserServerUrl: (location?: string) => string | undefined;
|
|
25
|
+
};
|
|
18
26
|
export {};
|
|
19
27
|
//# sourceMappingURL=hooks.d.ts.map
|
package/dist/hooks.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,cAAc,EAEf,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,cAAc,EAEf,MAAM,MAAM,CAAC;AAKd,UAAU,WAAW;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AA0BD,wBAAgB,cAAc,CAC5B,OAAO,CAAC,EAAE,MAAM,EAChB,GAAG,CAAC,EAAE,MAAM,GACX;IAAE,IAAI,CAAC,EAAE,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CAQvC;AAuBD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG;IACtE,IAAI,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IACnC,KAAK,EAAE,GAAG,GAAG,SAAS,CAAC;CACxB,CAqCA;AAUD,MAAM,CAAC,OAAO,UAAU,aAAa;;;EAapC;AAED,wBAAgB,eAAe;;;;yBAOpB,iBAAiB;;kCAkBZ,MAAM;EAsBrB"}
|
package/dist/hooks.js
CHANGED
|
@@ -9,7 +9,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
};
|
|
10
10
|
import { default as useSWRImmutable } from 'swr/immutable';
|
|
11
11
|
import { walkOutputs } from 'nbtx';
|
|
12
|
-
import { useState, useLayoutEffect } from 'react';
|
|
12
|
+
import { useState, useLayoutEffect, useCallback } from 'react';
|
|
13
|
+
import { useThebeServer } from 'thebe-react';
|
|
13
14
|
function fetcher(url) {
|
|
14
15
|
return __awaiter(this, void 0, void 0, function* () {
|
|
15
16
|
const resp = yield fetch(url);
|
|
@@ -111,3 +112,42 @@ export default function useWindowSize() {
|
|
|
111
112
|
}, []);
|
|
112
113
|
return windowSize;
|
|
113
114
|
}
|
|
115
|
+
export function useLaunchBinder() {
|
|
116
|
+
const { connect, connecting, ready, server, error } = useThebeServer();
|
|
117
|
+
const [autoOpen, setAutoOpen] = useState(false);
|
|
118
|
+
// automatically click the link when the server is ready
|
|
119
|
+
// but only if the connection was initiated in this component by the user
|
|
120
|
+
const autoClickRef = useCallback((node) => {
|
|
121
|
+
if (node != null && autoOpen) {
|
|
122
|
+
node.click();
|
|
123
|
+
}
|
|
124
|
+
}, [autoOpen]);
|
|
125
|
+
const handleStart = useCallback(() => {
|
|
126
|
+
if (!connect) {
|
|
127
|
+
console.debug("LaunchBinder: Trying to start a connection but connect() isn't defined");
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
setAutoOpen(true);
|
|
131
|
+
connect();
|
|
132
|
+
}, [connect]);
|
|
133
|
+
const getUserServerUrl = useCallback((location) => {
|
|
134
|
+
let userServerUrl = server === null || server === void 0 ? void 0 : server.userServerUrl;
|
|
135
|
+
if (userServerUrl && location) {
|
|
136
|
+
// add the location to the url pathname
|
|
137
|
+
const url = new URL(userServerUrl);
|
|
138
|
+
if (url.pathname.endsWith('/'))
|
|
139
|
+
url.pathname = url.pathname.slice(0, -1);
|
|
140
|
+
url.pathname = `${url.pathname}/lab/tree${location}`;
|
|
141
|
+
userServerUrl = url.toString();
|
|
142
|
+
}
|
|
143
|
+
return userServerUrl;
|
|
144
|
+
}, [server]);
|
|
145
|
+
return {
|
|
146
|
+
connecting,
|
|
147
|
+
ready,
|
|
148
|
+
error,
|
|
149
|
+
autoClickRef,
|
|
150
|
+
handleStart,
|
|
151
|
+
getUserServerUrl,
|
|
152
|
+
};
|
|
153
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,5 +12,7 @@ export * from './ConnectionStatusTray.js';
|
|
|
12
12
|
export * from './providers.js';
|
|
13
13
|
export * from './execute/index.js';
|
|
14
14
|
export * from './controls/index.js';
|
|
15
|
+
export * from './utils.js';
|
|
16
|
+
export { useLaunchBinder } from './hooks.js';
|
|
15
17
|
export default OUTPUT_RENDERERS;
|
|
16
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,QAAA,MAAM,gBAAgB;;;;CAIrB,CAAC;AAEF,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,QAAA,MAAM,gBAAgB;;;;CAIrB,CAAC;AAEF,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAe,gBAAgB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,4 +12,6 @@ export * from './ConnectionStatusTray.js';
|
|
|
12
12
|
export * from './providers.js';
|
|
13
13
|
export * from './execute/index.js';
|
|
14
14
|
export * from './controls/index.js';
|
|
15
|
+
export * from './utils.js';
|
|
16
|
+
export { useLaunchBinder } from './hooks.js';
|
|
15
17
|
export default OUTPUT_RENDERERS;
|
package/dist/providers.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ type ThebeOptionsContextType = {
|
|
|
11
11
|
};
|
|
12
12
|
export declare function ConfiguredThebeServerProvider({ siteManifest, optionOverrideFn, customRepoProviders, children, }: React.PropsWithChildren<{
|
|
13
13
|
siteManifest?: SiteManifest;
|
|
14
|
-
optionOverrideFn?: (opts
|
|
14
|
+
optionOverrideFn?: (opts: ExtendedCoreOptions) => ExtendedCoreOptions;
|
|
15
15
|
customRepoProviders?: RepoProviderSpec[];
|
|
16
16
|
}>): import("react/jsx-runtime").JSX.Element;
|
|
17
17
|
export declare function useCanCompute(article: {
|
package/dist/providers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,KAAK,mBAAmB,EAA6B,MAAM,YAAY,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAqB,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,KAAK,mBAAmB,EAA6B,MAAM,YAAY,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAiCnD,KAAK,uBAAuB,GAAG;IAC7B,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAIF,wBAAgB,6BAA6B,CAAC,EAC5C,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,GACT,EAAE,KAAK,CAAC,iBAAiB,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,mBAAmB,KAAK,mBAAmB,CAAC;IACtE,mBAAmB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC1C,CAAC,2CAqBD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE;IAAE,WAAW,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAA;CAAE,WAGhG;AAED,wBAAgB,eAAe,4BAE9B;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;CACtB,CAAC"}
|
package/dist/providers.js
CHANGED
|
@@ -13,7 +13,9 @@ function makeThebeOptions(siteManifest, optionsOverrideFn = (opts) => opts) {
|
|
|
13
13
|
const githubBadgeUrl = mainProject === null || mainProject === void 0 ? void 0 : mainProject.github;
|
|
14
14
|
const binderBadgeUrl = mainProject === null || mainProject === void 0 ? void 0 : mainProject.binder;
|
|
15
15
|
const optionsFromFrontmatter = thebeFrontmatterToOptions(thebeFrontmatter, githubBadgeUrl, binderBadgeUrl);
|
|
16
|
-
|
|
16
|
+
let options = optionsFromFrontmatter;
|
|
17
|
+
if (options)
|
|
18
|
+
options = optionsOverrideFn(options);
|
|
17
19
|
return {
|
|
18
20
|
options,
|
|
19
21
|
githubBadgeUrl,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@myst-theme/jupyter",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"@curvenote/ansi-to-react": "^7.0.0",
|
|
26
26
|
"@headlessui/react": "^1.7.15",
|
|
27
27
|
"@heroicons/react": "^2.0.18",
|
|
28
|
-
"@myst-theme/providers": "^0.5.
|
|
28
|
+
"@myst-theme/providers": "^0.5.10",
|
|
29
29
|
"@scienceicons/react": "^0.0.6",
|
|
30
30
|
"buffer": "^6.0.3",
|
|
31
31
|
"classnames": "^2.3.2",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"myst-frontmatter": "^1.1.8",
|
|
35
35
|
"myst-spec": "^0.0.4",
|
|
36
36
|
"myst-spec-ext": "^1.1.8",
|
|
37
|
-
"myst-to-react": "^0.5.
|
|
37
|
+
"myst-to-react": "^0.5.10",
|
|
38
38
|
"nanoid": "^4.0.2",
|
|
39
39
|
"nbtx": "^0.2.3",
|
|
40
40
|
"react-syntax-highlighter": "^15.5.0",
|