@gen3/workspaces 0.12.52 → 0.12.53
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/dts/components/TierSelectorLanding.d.ts.map +1 -1
- package/dist/dts/components/TierSelectorLanding.js +5 -4
- package/dist/dts/components/TierSelectorLanding.js.map +1 -1
- package/dist/dts/components/UpgradeActionsPanel.d.ts.map +1 -1
- package/dist/dts/components/UpgradeActionsPanel.js +4 -4
- package/dist/dts/components/UpgradeActionsPanel.js.map +1 -1
- package/dist/dts/components/WorkspaceTierCard.d.ts +1 -1
- package/dist/dts/components/WorkspaceTierCard.d.ts.map +1 -1
- package/dist/dts/components/WorkspaceTierCard.js +2 -2
- package/dist/dts/components/WorkspaceTierCard.js.map +1 -1
- package/dist/dts/components/WorkspaceTierCard.stories.d.ts +1 -1
- package/dist/dts/components/types.d.ts +1 -0
- package/dist/dts/components/types.d.ts.map +1 -1
- package/dist/dts/providers/MicroContainerReduxProvider.d.ts +2 -1
- package/dist/dts/providers/MicroContainerReduxProvider.d.ts.map +1 -1
- package/dist/dts/providers/MicroContainerReduxProvider.js +2 -2
- package/dist/dts/providers/MicroContainerReduxProvider.js.map +1 -1
- package/dist/dts/providers/useJEGWorkspaceResourceMonitor.d.ts +1 -1
- package/dist/dts/providers/useJEGWorkspaceResourceMonitor.d.ts.map +1 -1
- package/dist/dts/providers/useJEGWorkspaceResourceMonitor.js +5 -3
- package/dist/dts/providers/useJEGWorkspaceResourceMonitor.js.map +1 -1
- package/dist/dts/server/workspaceAssetsHandler.d.ts.map +1 -1
- package/dist/dts/server/workspaceAssetsHandler.js +3 -0
- package/dist/dts/server/workspaceAssetsHandler.js.map +1 -1
- package/dist/dts/types.d.ts +1 -1
- package/dist/dts/types.d.ts.map +1 -1
- package/dist/dts/workspace/WorkspaceCenter.d.ts.map +1 -1
- package/dist/dts/workspace/WorkspaceCenter.js +3 -2
- package/dist/dts/workspace/WorkspaceCenter.js.map +1 -1
- package/dist/dts/workspace/WorkspaceLayout/WorkspaceToolbar.d.ts.map +1 -1
- package/dist/dts/workspace/WorkspaceLayout/WorkspaceToolbar.js +2 -2
- package/dist/dts/workspace/WorkspaceLayout/WorkspaceToolbar.js.map +1 -1
- package/dist/dts/workspace/tiers/FreeWorkspace.d.ts.map +1 -1
- package/dist/dts/workspace/tiers/FreeWorkspace.js +29 -18
- package/dist/dts/workspace/tiers/FreeWorkspace.js.map +1 -1
- package/dist/dts/workspace/tiers/RemoteComputeWorkspace.d.ts.map +1 -1
- package/dist/dts/workspace/tiers/RemoteComputeWorkspace.js +31 -19
- package/dist/dts/workspace/tiers/RemoteComputeWorkspace.js.map +1 -1
- package/dist/dts/workspace/tiers/types.d.ts +2 -0
- package/dist/dts/workspace/tiers/types.d.ts.map +1 -1
- package/dist/index/cjs/index.js +113 -95
- package/dist/index/cjs/index.js.map +1 -1
- package/dist/index/esm/index.js +114 -96
- package/dist/index/esm/index.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/server/cjs/server.js +4 -1
- package/dist/server/cjs/server.js.map +1 -1
- package/dist/server/esm/server.js +4 -1
- package/dist/server/esm/server.js.map +1 -1
- package/package.json +10 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FreeWorkspace.js","sourceRoot":"","sources":["../../../../src/workspace/tiers/FreeWorkspace.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AASlD,MAAM,aAAa,GAAG,CAAC,EACrB,YAAY,GAAG,4BAA4B,EAC3C,OAAO,EACP,OAAO,GACY,EAAE,EAAE;IACvB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAC;IACzD,MAAM,mBAAmB,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAElE,MAAM,GAAG,GAAG,GAAG,YAAY,iBAAiB,CAAC;IAE7C,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACnC,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,aAAa,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,0BAA0B;IAC1B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,CAAC;YAClC,mBAAmB,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,GAAG,EAAE;YACV,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC;gBAChC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACpC,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,
|
|
1
|
+
{"version":3,"file":"FreeWorkspace.js","sourceRoot":"","sources":["../../../../src/workspace/tiers/FreeWorkspace.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteComputeWorkspace.d.ts","sourceRoot":"","sources":["../../../../src/workspace/tiers/RemoteComputeWorkspace.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAM5D,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAG5D,MAAM,MAAM,2BAA2B,GAAG;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"RemoteComputeWorkspace.d.ts","sourceRoot":"","sources":["../../../../src/workspace/tiers/RemoteComputeWorkspace.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAM5D,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAG5D,MAAM,MAAM,2BAA2B,GAAG;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,sBAAsB,6GAsV3B,CAAC;AAEF,eAAe,sBAAsB,CAAC"}
|
|
@@ -54,45 +54,52 @@ const RemoteComputeWorkspace = React.memo(React.forwardRef(({ assetBaseUrl = '/a
|
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
56
|
}, []);
|
|
57
|
-
// Handle setting up iframe event listeners
|
|
57
|
+
// Handle setting up iframe event listeners for activity detection.
|
|
58
|
+
// Tries same-origin contentDocument access first; falls back to
|
|
59
|
+
// focus/blur heuristics when the iframe is cross-origin.
|
|
58
60
|
useEffect(() => {
|
|
59
61
|
if (!jupyterReady)
|
|
60
62
|
return;
|
|
61
63
|
const updateUserActivity = () => {
|
|
62
|
-
const timestamp = Date.now();
|
|
63
64
|
if (broadcastChannelRef.current) {
|
|
64
65
|
broadcastChannelRef.current.postMessage({
|
|
65
66
|
type: 'activity-update',
|
|
66
|
-
timestamp,
|
|
67
|
+
timestamp: Date.now(),
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
70
|
};
|
|
70
71
|
const iframe = iframeRef.current;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
72
|
+
let usedDirectListeners = false;
|
|
73
|
+
if (iframe?.contentWindow) {
|
|
74
|
+
try {
|
|
75
|
+
const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
|
|
76
|
+
if (iframeDoc) {
|
|
77
|
+
iframeDoc.addEventListener('mousedown', updateUserActivity);
|
|
78
|
+
iframeDoc.addEventListener('keypress', updateUserActivity);
|
|
79
|
+
iframeDoc.addEventListener('scroll', updateUserActivity);
|
|
80
|
+
iframeDoc.addEventListener('touchstart', updateUserActivity);
|
|
81
|
+
usedDirectListeners = true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// cross-origin — fall through to focus/blur fallback
|
|
82
86
|
}
|
|
83
87
|
}
|
|
84
|
-
|
|
85
|
-
|
|
88
|
+
// Fallback: treat iframe receiving focus as user activity.
|
|
89
|
+
// This fires when the user clicks into the iframe even if we
|
|
90
|
+
// cannot attach listeners to its document directly.
|
|
91
|
+
if (!usedDirectListeners) {
|
|
92
|
+
window.addEventListener('blur', updateUserActivity);
|
|
93
|
+
window.addEventListener('focus', updateUserActivity);
|
|
86
94
|
}
|
|
87
95
|
return () => {
|
|
88
|
-
if (iframe?.contentWindow) {
|
|
96
|
+
if (usedDirectListeners && iframe?.contentWindow) {
|
|
89
97
|
try {
|
|
90
98
|
const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
|
|
91
99
|
if (iframeDoc) {
|
|
92
100
|
iframeDoc.removeEventListener('mousedown', updateUserActivity);
|
|
93
101
|
iframeDoc.removeEventListener('keypress', updateUserActivity);
|
|
94
102
|
iframeDoc.removeEventListener('scroll', updateUserActivity);
|
|
95
|
-
iframeDoc.removeEventListener('click', updateUserActivity);
|
|
96
103
|
iframeDoc.removeEventListener('touchstart', updateUserActivity);
|
|
97
104
|
}
|
|
98
105
|
}
|
|
@@ -100,6 +107,10 @@ const RemoteComputeWorkspace = React.memo(React.forwardRef(({ assetBaseUrl = '/a
|
|
|
100
107
|
// Ignore cleanup errors
|
|
101
108
|
}
|
|
102
109
|
}
|
|
110
|
+
if (!usedDirectListeners) {
|
|
111
|
+
window.removeEventListener('blur', updateUserActivity);
|
|
112
|
+
window.removeEventListener('focus', updateUserActivity);
|
|
113
|
+
}
|
|
103
114
|
};
|
|
104
115
|
}, [jupyterReady]);
|
|
105
116
|
/* ---- Wait for JupyterLite app inside the iframe --------------- */
|
|
@@ -217,7 +228,8 @@ const RemoteComputeWorkspace = React.memo(React.forwardRef(({ assetBaseUrl = '/a
|
|
|
217
228
|
}
|
|
218
229
|
return (_jsxs("div", { className: "w-full flex flex-col grow", children: [loading && !loadError && (_jsx("div", { role: "status", "aria-label": "Connecting to remote workspace", className: "w-full h-full pointer-events-none flex items-center justify-center", children: _jsxs("div", { className: "pointer-events-auto flex flex-col items-center gap-3 rounded-xl border border-slate-200 bg-white p-6 shadow-xl dark:border-slate-700 dark:bg-slate-900", children: [_jsx(Loader, { size: 24 }), _jsx(Text, { size: "sm", c: "dimmed", mt: 4, children: "Connecting to Remote Gateway..." }), _jsx(Button, { variant: "default", size: "xs", mt: "sm", onClick: handleRetry, children: "Taking too long? Reload" })] }) })), loadError && (_jsx("div", { children: _jsxs(Card, { withBorder: true, shadow: "sm", padding: "md", w: "100%", maw: 448, children: [_jsx(Text, { fw: 600, c: "primary", children: "Remote workspace failed to load" }), _jsx(Text, { size: "sm", c: "dimmed", mt: 4, children: "Unable to connect to the Jupyter Gateway. Check the browser console for details." }), _jsx(Button, { variant: "default", size: "xs", mt: "sm", onClick: handleRetry, children: "Retry" })] }) })), _jsx("div", { className: "w-full flex flex-col grow", children: _jsx("iframe", { ref: iframeRef, src: `${normalizedBase}/lab/index.html`, width: "100%", height: "100%", title: "Remote Jupyter Workspace", sandbox: "allow-scripts allow-same-origin allow-forms allow-popups allow-downloads allow-modals allow-storage-access-by-user-activation", allow: "clipboard-read; clipboard-write; cross-origin-isolated", className: "min-h-0 flex-1 border-0", onLoad: () => {
|
|
219
230
|
setLoading(false);
|
|
220
|
-
|
|
231
|
+
// jupyterReady is set by the polling effect once the
|
|
232
|
+
// JupyterLite app reports status === 'ready'
|
|
221
233
|
}, onError: () => {
|
|
222
234
|
setLoadError(true);
|
|
223
235
|
onError?.(new Error('Unable to load remote Jupyter workspace.'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteComputeWorkspace.js","sourceRoot":"","sources":["../../../../src/workspace/tiers/RemoteComputeWorkspace.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EACZ,WAAW,EACX,SAAS,EACT,mBAAmB,EACnB,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,wBAAwB,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,6CAA6C,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAgBlD;;GAEG;AACH,MAAM,sBAAsB,GAAG,KAAK,CAAC,IAAI,CACvC,KAAK,CAAC,UAAU,CACd,CACE,EACE,YAAY,GAAG,8BAA8B,EAC7C,QAAQ,EACR,WAAW,EACX,MAAM,EACN,YAAY,GAAG,kBAAkB,EACjC,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,EAClB,OAAO,GAAG,GAAG,EAAE,GAAE,CAAC,GACU,EAC9B,GAAG,EACH,EAAE;IACF,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,MAAM,CAA2B,IAAI,CAAC,CAAC;IACzD,MAAM,mBAAmB,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAClE,MAAM,EAAE,MAAM,EAAE,GAAG,6BAA6B,EAAE,CAAC;IAEnD,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEvD,6CAA6C;IAC7C,IAAI,kBAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,kBAAkB,GAAG,0BAA0B,CAAC;YAC9C,QAAQ;YACR,WAAW;YACX,MAAM;YACN,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,gCAAgC;YAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7D,kBAAkB,GAAG,cAAc,QAAQ,IAAI,YAAY,QAAQ,CAAC;IACtE,CAAC;IAED,+BAA+B;IAC/B,gDAAgD;IAChD,mEAAmE;IACnE,qEAAqE;IACrE,kDAAkD;IAClD,IAAI;IAEJ,0BAA0B;IAC1B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,CAAC;YAClC,mBAAmB,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,GAAG,EAAE;YACV,IAAI,mBAAmB,CAAC,OAAO,EAAE,CAAC;gBAChC,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACpC,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;YACrC,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,
|
|
1
|
+
{"version":3,"file":"RemoteComputeWorkspace.js","sourceRoot":"","sources":["../../../../src/workspace/tiers/RemoteComputeWorkspace.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ interface LabelAndDescription {
|
|
|
7
7
|
export interface TierToolbarConfiguration extends LabelAndDescription {
|
|
8
8
|
showStop: boolean;
|
|
9
9
|
showStatus: boolean;
|
|
10
|
+
tierLabel?: string;
|
|
10
11
|
}
|
|
11
12
|
export interface SettingsPanelConfiguration {
|
|
12
13
|
showKernels: boolean;
|
|
@@ -29,6 +30,7 @@ export interface FreeWorkspaceTierConfiguration extends WorkspaceTierInformation
|
|
|
29
30
|
export interface RemoteComputeWorkspaceTierConfiguration extends WorkspaceTierInformation {
|
|
30
31
|
baseUrl?: string;
|
|
31
32
|
type: Extract<WorkspaceTier, 'remote'>;
|
|
33
|
+
startTimeLimit?: number;
|
|
32
34
|
}
|
|
33
35
|
export type RemoteComputeWorkspaceHandle = {
|
|
34
36
|
/** Attach a running kernel to the notebook open in the iframe. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/workspace/tiers/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/workspace/tiers/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAyB,SAAQ,mBAAmB;IACnE,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,wBAAwB,CAAC;IAClC,YAAY,EAAE,8BAA8B,CAAC;IAC7C,QAAQ,EAAE,0BAA0B,CAAC;CACtC;AAED,MAAM,WAAW,8BAA+B,SAAQ,wBAAwB;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,uCAAwC,SAAQ,wBAAwB;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,kEAAkE;IAClE,YAAY,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,qEAAqE;IACrE,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC"}
|
package/dist/index/cjs/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var bs = require('react-icons/bs');
|
|
|
14
14
|
var md = require('react-icons/md');
|
|
15
15
|
var lodash = require('lodash');
|
|
16
16
|
|
|
17
|
-
const WorkspaceTierCard = ({ label, description, tier, features = [], tooltip = 'Launch workspace', buttonLabel = 'Launch', onSelectTier, baseColor })=>{
|
|
17
|
+
const WorkspaceTierCard = ({ label, description, tier, tierLabel = undefined, features = [], tooltip = 'Launch workspace', buttonLabel = 'Launch', onSelectTier, baseColor })=>{
|
|
18
18
|
const handleClick = React.useCallback(()=>onSelectTier(tier), [
|
|
19
19
|
onSelectTier,
|
|
20
20
|
tier
|
|
@@ -49,7 +49,7 @@ const WorkspaceTierCard = ({ label, description, tier, features = [], tooltip =
|
|
|
49
49
|
color: "primary.4",
|
|
50
50
|
size: "lg",
|
|
51
51
|
fw: 500,
|
|
52
|
-
children: tier
|
|
52
|
+
children: tierLabel ?? (tier === 'remote' ? 'paid' : 'free')
|
|
53
53
|
})
|
|
54
54
|
})
|
|
55
55
|
}),
|
|
@@ -115,10 +115,10 @@ const WorkspaceTierCard = ({ label, description, tier, features = [], tooltip =
|
|
|
115
115
|
};
|
|
116
116
|
|
|
117
117
|
const DEFAULT_CLASSNAMES = {
|
|
118
|
-
root: 'mx-auto w-full max-w-7xl p-6 md:p-
|
|
119
|
-
background: 'relative overflow-hidden md:p-
|
|
118
|
+
root: 'mx-auto w-full h-full overflow-auto max-w-7xl p-6 sm:p-2 md:p-4 lg:p-8',
|
|
119
|
+
background: 'relative overflow-hidden sm:p-2 md:p-4 lg:p-8',
|
|
120
120
|
label: 'text-md uppercase tracking-[0.28em] text-primary',
|
|
121
|
-
description: '
|
|
121
|
+
description: 'font-black leading-tight text-primary md:text-3xl sm:text-2xl xs:text-lg mt-4 mb-4',
|
|
122
122
|
additionalDescription: 'max-w-2xl text-md font-medium text-base-contrast',
|
|
123
123
|
button: 'mt-10 flex w-full items-center justify-center rounded-md bg-primary px-8 py-3 text-sm font-semibold text-primary-contrast shadow-sm hover:bg-primary focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary'
|
|
124
124
|
};
|
|
@@ -129,36 +129,43 @@ const TierSelectorLanding = ({ cards, onSelectTier, classNames, label = 'Gen3 Ju
|
|
|
129
129
|
const mergedClassnames = React.useMemo(()=>frontend.mergeDefaultTailwindClassnames(DEFAULT_CLASSNAMES, classNames ?? {}), [
|
|
130
130
|
classNames
|
|
131
131
|
]);
|
|
132
|
-
return /*#__PURE__*/ jsxRuntime.jsx(
|
|
132
|
+
return /*#__PURE__*/ jsxRuntime.jsx(core.Container, {
|
|
133
|
+
size: "xl",
|
|
133
134
|
className: mergedClassnames.root,
|
|
134
|
-
children: /*#__PURE__*/ jsxRuntime.jsxs(
|
|
135
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(core.Stack, {
|
|
136
|
+
gap: "lg",
|
|
135
137
|
className: mergedClassnames.background,
|
|
136
138
|
children: [
|
|
137
|
-
/*#__PURE__*/ jsxRuntime.
|
|
138
|
-
|
|
139
|
-
children:
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
]
|
|
154
|
-
})
|
|
139
|
+
/*#__PURE__*/ jsxRuntime.jsxs(core.Stack, {
|
|
140
|
+
gap: "xs",
|
|
141
|
+
children: [
|
|
142
|
+
/*#__PURE__*/ jsxRuntime.jsx(core.Text, {
|
|
143
|
+
className: mergedClassnames.label,
|
|
144
|
+
children: label
|
|
145
|
+
}),
|
|
146
|
+
/*#__PURE__*/ jsxRuntime.jsx(core.Text, {
|
|
147
|
+
className: mergedClassnames.description,
|
|
148
|
+
children: description
|
|
149
|
+
}),
|
|
150
|
+
additionalDescriptions.map((desc)=>/*#__PURE__*/ jsxRuntime.jsx(core.Text, {
|
|
151
|
+
className: mergedClassnames.additionalDescription,
|
|
152
|
+
children: desc
|
|
153
|
+
}, desc.slice(0, 20)))
|
|
154
|
+
]
|
|
155
155
|
}),
|
|
156
|
-
/*#__PURE__*/ jsxRuntime.jsx(
|
|
157
|
-
|
|
156
|
+
/*#__PURE__*/ jsxRuntime.jsx(core.SimpleGrid, {
|
|
157
|
+
cols: {
|
|
158
|
+
base: 2,
|
|
159
|
+
sm: 2,
|
|
160
|
+
md: 2,
|
|
161
|
+
lg: 3
|
|
162
|
+
},
|
|
163
|
+
spacing: "md",
|
|
158
164
|
role: "list",
|
|
159
165
|
"aria-label": "Workspace tier selection",
|
|
160
166
|
children: Object.values(cards).map((card)=>/*#__PURE__*/ jsxRuntime.jsx(WorkspaceTierCard, {
|
|
161
167
|
tier: card.tier,
|
|
168
|
+
tierLabel: card.tierLabel,
|
|
162
169
|
onSelectTier: onSelectTier,
|
|
163
170
|
label: card.label,
|
|
164
171
|
description: card.description,
|
|
@@ -198,49 +205,60 @@ const FreeWorkspace = ({ assetBaseUrl = '/api/workspace-assets/free', onReady, o
|
|
|
198
205
|
}
|
|
199
206
|
};
|
|
200
207
|
}, []);
|
|
201
|
-
// Handle setting up iframe event listeners
|
|
208
|
+
// Handle setting up iframe event listeners for activity detection.
|
|
209
|
+
// Tries same-origin contentDocument access first; falls back to
|
|
210
|
+
// focus/blur heuristics when the iframe is cross-origin.
|
|
202
211
|
React.useEffect(()=>{
|
|
203
212
|
if (!jupyterReady) return;
|
|
204
213
|
const updateUserActivity = ()=>{
|
|
205
|
-
const timestamp = Date.now();
|
|
206
214
|
if (broadcastChannelRef.current) {
|
|
207
215
|
broadcastChannelRef.current.postMessage({
|
|
208
216
|
type: 'activity-update',
|
|
209
|
-
timestamp
|
|
217
|
+
timestamp: Date.now()
|
|
210
218
|
});
|
|
211
219
|
}
|
|
212
220
|
};
|
|
213
221
|
const iframe = iframeRef.current;
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
222
|
+
let usedDirectListeners = false;
|
|
223
|
+
if (iframe?.contentWindow) {
|
|
224
|
+
try {
|
|
225
|
+
const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
|
|
226
|
+
if (iframeDoc) {
|
|
227
|
+
iframeDoc.addEventListener('mousedown', updateUserActivity);
|
|
228
|
+
iframeDoc.addEventListener('keypress', updateUserActivity);
|
|
229
|
+
iframeDoc.addEventListener('scroll', updateUserActivity);
|
|
230
|
+
iframeDoc.addEventListener('touchstart', updateUserActivity);
|
|
231
|
+
usedDirectListeners = true;
|
|
232
|
+
}
|
|
233
|
+
} catch {
|
|
234
|
+
// cross-origin — fall through to focus/blur fallback
|
|
225
235
|
}
|
|
226
|
-
}
|
|
227
|
-
|
|
236
|
+
}
|
|
237
|
+
// Fallback: treat iframe receiving focus as user activity.
|
|
238
|
+
// This fires when the user clicks into the iframe even if we
|
|
239
|
+
// cannot attach listeners to its document directly.
|
|
240
|
+
if (!usedDirectListeners) {
|
|
241
|
+
window.addEventListener('blur', updateUserActivity);
|
|
242
|
+
window.addEventListener('focus', updateUserActivity);
|
|
228
243
|
}
|
|
229
244
|
return ()=>{
|
|
230
|
-
if (iframe?.contentWindow) {
|
|
245
|
+
if (usedDirectListeners && iframe?.contentWindow) {
|
|
231
246
|
try {
|
|
232
247
|
const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
|
|
233
248
|
if (iframeDoc) {
|
|
234
249
|
iframeDoc.removeEventListener('mousedown', updateUserActivity);
|
|
235
250
|
iframeDoc.removeEventListener('keypress', updateUserActivity);
|
|
236
251
|
iframeDoc.removeEventListener('scroll', updateUserActivity);
|
|
237
|
-
iframeDoc.removeEventListener('click', updateUserActivity);
|
|
238
252
|
iframeDoc.removeEventListener('touchstart', updateUserActivity);
|
|
239
253
|
}
|
|
240
254
|
} catch {
|
|
241
255
|
// Ignore cleanup errors
|
|
242
256
|
}
|
|
243
257
|
}
|
|
258
|
+
if (!usedDirectListeners) {
|
|
259
|
+
window.removeEventListener('blur', updateUserActivity);
|
|
260
|
+
window.removeEventListener('focus', updateUserActivity);
|
|
261
|
+
}
|
|
244
262
|
};
|
|
245
263
|
}, [
|
|
246
264
|
jupyterReady
|
|
@@ -685,6 +703,7 @@ const notifyUser = (title, message, status = 0)=>{
|
|
|
685
703
|
[1]: 'utility.2',
|
|
686
704
|
[2]: 'utility.4'
|
|
687
705
|
};
|
|
706
|
+
notifications.notifications.clean();
|
|
688
707
|
notifications.notifications.show({
|
|
689
708
|
title,
|
|
690
709
|
message,
|
|
@@ -708,7 +727,7 @@ const workspaceShutdownAlertLimit = 30000; // 5 minutes: 5 * 60 * 1000 TODO Figu
|
|
|
708
727
|
/**
|
|
709
728
|
* Monitors resource usage.
|
|
710
729
|
* Handles state changes and polls for workspace status using the JEG APIs
|
|
711
|
-
*/ const useJEGWorkspaceResourceMonitor = (workspaceId = null, monitorWorkspace)=>{
|
|
730
|
+
*/ const useJEGWorkspaceResourceMonitor = (workspaceId = null, monitorWorkspace, startTimeLimit = MAXIMUM_START_TIME_IN_MINUTES)=>{
|
|
712
731
|
// start with default polling interval of 1 second
|
|
713
732
|
const [pollingInterval, setPollingInterval] = React.useState(frontend.convertSecondsToMilliseconds(1));
|
|
714
733
|
const [error, setError] = React.useState(null);
|
|
@@ -872,8 +891,8 @@ const workspaceShutdownAlertLimit = 30000; // 5 minutes: 5 * 60 * 1000 TODO Figu
|
|
|
872
891
|
activeStatus
|
|
873
892
|
]);
|
|
874
893
|
React.useEffect(()=>{
|
|
875
|
-
// time out if exceeding maximum start
|
|
876
|
-
if (requestedStatus === core$1.RequestedWorkspaceStatus.Launch && core$1.isTimeGreaterThan(requestedStatusTimestamp,
|
|
894
|
+
// time out if exceeding maximum start time
|
|
895
|
+
if (requestedStatus === core$1.RequestedWorkspaceStatus.Launch && core$1.isTimeGreaterThan(requestedStatusTimestamp, startTimeLimit)) {
|
|
877
896
|
if (workspaceId) terminateWorkspace(encodeURIComponent(workspaceId));
|
|
878
897
|
dispatch(core$1.setJEGRequestedWorkspaceStatus(core$1.RequestedWorkspaceStatus.Terminate));
|
|
879
898
|
setError('Workspace failed to start. Shutting down');
|
|
@@ -884,7 +903,8 @@ const workspaceShutdownAlertLimit = 30000; // 5 minutes: 5 * 60 * 1000 TODO Figu
|
|
|
884
903
|
dispatch,
|
|
885
904
|
workspaceStatusData,
|
|
886
905
|
workspaceId,
|
|
887
|
-
terminateWorkspace
|
|
906
|
+
terminateWorkspace,
|
|
907
|
+
startTimeLimit
|
|
888
908
|
]);
|
|
889
909
|
};
|
|
890
910
|
|
|
@@ -901,10 +921,10 @@ const useMicroContainerReduxContext = ()=>{
|
|
|
901
921
|
}
|
|
902
922
|
return context;
|
|
903
923
|
};
|
|
904
|
-
function MicroContainerReduxProvider({ children, identifierTag, enabled }) {
|
|
924
|
+
function MicroContainerReduxProvider({ children, identifierTag, enabled, startTimeLimit = undefined }) {
|
|
905
925
|
const tag = identifierTag ?? (process.env.NEXT_PUBLIC_MICRO_CONTAINER_TAG || '');
|
|
906
926
|
const value = useMicroContainerRedux(tag, enabled);
|
|
907
|
-
useJEGWorkspaceResourceMonitor(value.containerHash);
|
|
927
|
+
useJEGWorkspaceResourceMonitor(value.containerHash, true, startTimeLimit);
|
|
908
928
|
return /*#__PURE__*/ jsxRuntime.jsx(MicroContainerReduxProviderContext.Provider, {
|
|
909
929
|
value: value,
|
|
910
930
|
children: children
|
|
@@ -1178,49 +1198,60 @@ const MicroContainerReduxPanel = ({ compact = false })=>{
|
|
|
1178
1198
|
}
|
|
1179
1199
|
};
|
|
1180
1200
|
}, []);
|
|
1181
|
-
// Handle setting up iframe event listeners
|
|
1201
|
+
// Handle setting up iframe event listeners for activity detection.
|
|
1202
|
+
// Tries same-origin contentDocument access first; falls back to
|
|
1203
|
+
// focus/blur heuristics when the iframe is cross-origin.
|
|
1182
1204
|
React.useEffect(()=>{
|
|
1183
1205
|
if (!jupyterReady) return;
|
|
1184
1206
|
const updateUserActivity = ()=>{
|
|
1185
|
-
const timestamp = Date.now();
|
|
1186
1207
|
if (broadcastChannelRef.current) {
|
|
1187
1208
|
broadcastChannelRef.current.postMessage({
|
|
1188
1209
|
type: 'activity-update',
|
|
1189
|
-
timestamp
|
|
1210
|
+
timestamp: Date.now()
|
|
1190
1211
|
});
|
|
1191
1212
|
}
|
|
1192
1213
|
};
|
|
1193
1214
|
const iframe = iframeRef.current;
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1215
|
+
let usedDirectListeners = false;
|
|
1216
|
+
if (iframe?.contentWindow) {
|
|
1217
|
+
try {
|
|
1218
|
+
const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
|
|
1219
|
+
if (iframeDoc) {
|
|
1220
|
+
iframeDoc.addEventListener('mousedown', updateUserActivity);
|
|
1221
|
+
iframeDoc.addEventListener('keypress', updateUserActivity);
|
|
1222
|
+
iframeDoc.addEventListener('scroll', updateUserActivity);
|
|
1223
|
+
iframeDoc.addEventListener('touchstart', updateUserActivity);
|
|
1224
|
+
usedDirectListeners = true;
|
|
1225
|
+
}
|
|
1226
|
+
} catch {
|
|
1227
|
+
// cross-origin — fall through to focus/blur fallback
|
|
1205
1228
|
}
|
|
1206
|
-
}
|
|
1207
|
-
|
|
1229
|
+
}
|
|
1230
|
+
// Fallback: treat iframe receiving focus as user activity.
|
|
1231
|
+
// This fires when the user clicks into the iframe even if we
|
|
1232
|
+
// cannot attach listeners to its document directly.
|
|
1233
|
+
if (!usedDirectListeners) {
|
|
1234
|
+
window.addEventListener('blur', updateUserActivity);
|
|
1235
|
+
window.addEventListener('focus', updateUserActivity);
|
|
1208
1236
|
}
|
|
1209
1237
|
return ()=>{
|
|
1210
|
-
if (iframe?.contentWindow) {
|
|
1238
|
+
if (usedDirectListeners && iframe?.contentWindow) {
|
|
1211
1239
|
try {
|
|
1212
1240
|
const iframeDoc = iframe.contentDocument || iframe.contentWindow.document;
|
|
1213
1241
|
if (iframeDoc) {
|
|
1214
1242
|
iframeDoc.removeEventListener('mousedown', updateUserActivity);
|
|
1215
1243
|
iframeDoc.removeEventListener('keypress', updateUserActivity);
|
|
1216
1244
|
iframeDoc.removeEventListener('scroll', updateUserActivity);
|
|
1217
|
-
iframeDoc.removeEventListener('click', updateUserActivity);
|
|
1218
1245
|
iframeDoc.removeEventListener('touchstart', updateUserActivity);
|
|
1219
1246
|
}
|
|
1220
1247
|
} catch {
|
|
1221
1248
|
// Ignore cleanup errors
|
|
1222
1249
|
}
|
|
1223
1250
|
}
|
|
1251
|
+
if (!usedDirectListeners) {
|
|
1252
|
+
window.removeEventListener('blur', updateUserActivity);
|
|
1253
|
+
window.removeEventListener('focus', updateUserActivity);
|
|
1254
|
+
}
|
|
1224
1255
|
};
|
|
1225
1256
|
}, [
|
|
1226
1257
|
jupyterReady
|
|
@@ -1416,7 +1447,8 @@ const MicroContainerReduxPanel = ({ compact = false })=>{
|
|
|
1416
1447
|
className: "min-h-0 flex-1 border-0",
|
|
1417
1448
|
onLoad: ()=>{
|
|
1418
1449
|
setLoading(false);
|
|
1419
|
-
|
|
1450
|
+
// jupyterReady is set by the polling effect once the
|
|
1451
|
+
// JupyterLite app reports status === 'ready'
|
|
1420
1452
|
},
|
|
1421
1453
|
onError: ()=>{
|
|
1422
1454
|
setLoadError(true);
|
|
@@ -2155,27 +2187,11 @@ const UpgradeActionsPanel = ({ currentTier, onUpgradeToRemote, onRequestQuotaInc
|
|
|
2155
2187
|
/*#__PURE__*/ jsxRuntime.jsxs("div", {
|
|
2156
2188
|
className: "space-y-2 p-4 pt-0",
|
|
2157
2189
|
children: [
|
|
2158
|
-
/*#__PURE__*/ jsxRuntime.
|
|
2159
|
-
children:
|
|
2160
|
-
|
|
2161
|
-
|
|
2162
|
-
|
|
2163
|
-
children: [
|
|
2164
|
-
/*#__PURE__*/ jsxRuntime.jsx("p", {
|
|
2165
|
-
className: "text-md font-bold text-base-contrast-max",
|
|
2166
|
-
children: "Current Tier"
|
|
2167
|
-
}),
|
|
2168
|
-
/*#__PURE__*/ jsxRuntime.jsx(core.Badge, {
|
|
2169
|
-
color: "primary.3",
|
|
2170
|
-
children: currentTier
|
|
2171
|
-
})
|
|
2172
|
-
]
|
|
2173
|
-
}),
|
|
2174
|
-
/*#__PURE__*/ jsxRuntime.jsx("p", {
|
|
2175
|
-
className: "mt-1 text-sm text-base-contrast-max",
|
|
2176
|
-
children: currentTier === 'free' ? 'Upgrade to remote kernels for long-running jobs and larger memory footprints.' : 'Remote compute is active. You can request expanded quota for larger workloads.'
|
|
2177
|
-
})
|
|
2178
|
-
]
|
|
2190
|
+
/*#__PURE__*/ jsxRuntime.jsx(core.Stack, {
|
|
2191
|
+
children: /*#__PURE__*/ jsxRuntime.jsx("p", {
|
|
2192
|
+
className: "my-1 text-sm text-base-contrast-max",
|
|
2193
|
+
children: currentTier === 'free' ? 'Upgrade to remote kernels for long-running jobs and larger memory footprints.' : 'Remote compute is active. You can request expanded quota for larger workloads.'
|
|
2194
|
+
})
|
|
2179
2195
|
}),
|
|
2180
2196
|
currentTier === 'free' && /*#__PURE__*/ jsxRuntime.jsx(core.Button, {
|
|
2181
2197
|
onClick: onUpgradeToRemote,
|
|
@@ -2322,7 +2338,7 @@ const WorkspaceToolbar = /*#__PURE__*/ React.forwardRef(({ toolbarConfiguration
|
|
|
2322
2338
|
const workspaceTier = core$1.useCoreSelector((state)=>core$1.selectWorkspaceTier(state));
|
|
2323
2339
|
const workspaceStatus = core$1.useCoreSelector((state)=>core$1.selectJEGActiveWorkspaceStatus(state));
|
|
2324
2340
|
const isFullscreen = core$1.useCoreSelector((state)=>core$1.selectWorkspaceFullscreen(state));
|
|
2325
|
-
const { showStatus, showStop } = toolbarConfiguration || {};
|
|
2341
|
+
const { showStatus, showStop, tierLabel } = toolbarConfiguration || {};
|
|
2326
2342
|
const coreDispatch = core$1.useCoreDispatch();
|
|
2327
2343
|
const toggleFullscreen = React.useCallback(()=>{
|
|
2328
2344
|
coreDispatch(core$1.setWorkspaceFullscreen(!isFullscreen));
|
|
@@ -2375,8 +2391,8 @@ const WorkspaceToolbar = /*#__PURE__*/ React.forwardRef(({ toolbarConfiguration
|
|
|
2375
2391
|
children: toolbarConfiguration?.description
|
|
2376
2392
|
}),
|
|
2377
2393
|
/*#__PURE__*/ jsxRuntime.jsx(core.Badge, {
|
|
2378
|
-
"aria-label": `Workspace tier: ${workspaceTier}`,
|
|
2379
|
-
children: workspaceTier
|
|
2394
|
+
"aria-label": `Workspace tier: ${tierLabel ?? workspaceTier}`,
|
|
2395
|
+
children: tierLabel ?? workspaceTier
|
|
2380
2396
|
})
|
|
2381
2397
|
]
|
|
2382
2398
|
})
|
|
@@ -3975,7 +3991,7 @@ const WorkspaceCenter = ({ workspaces, landingPage, tierConfiguration })=>{
|
|
|
3975
3991
|
]);
|
|
3976
3992
|
if (!workspaceTier) {
|
|
3977
3993
|
return /*#__PURE__*/ jsxRuntime.jsx("div", {
|
|
3978
|
-
className: "w-full bg-base-lightest ",
|
|
3994
|
+
className: "w-full h-full overflow-hidden bg-base-lightest ",
|
|
3979
3995
|
children: /*#__PURE__*/ jsxRuntime.jsx(TierSelectorLanding, {
|
|
3980
3996
|
cards: workspaces,
|
|
3981
3997
|
onSelectTier: handleSelectTier,
|
|
@@ -3993,9 +4009,11 @@ const WorkspaceCenter = ({ workspaces, landingPage, tierConfiguration })=>{
|
|
|
3993
4009
|
});
|
|
3994
4010
|
}
|
|
3995
4011
|
if (workspaceTier === 'remote') {
|
|
4012
|
+
const config = tierConfiguration.remote;
|
|
3996
4013
|
return /*#__PURE__*/ jsxRuntime.jsx(frontend.ProtectedContent, {
|
|
3997
4014
|
children: /*#__PURE__*/ jsxRuntime.jsx(MicroContainerReduxProvider, {
|
|
3998
4015
|
enabled: true,
|
|
4016
|
+
startTimeLimit: config?.startTimeLimit,
|
|
3999
4017
|
children: /*#__PURE__*/ jsxRuntime.jsx(WorkspaceLayout, {
|
|
4000
4018
|
tierConfiguration: tierConfiguration.remote,
|
|
4001
4019
|
children: /*#__PURE__*/ jsxRuntime.jsx(RemoteComputeWorkspace, {
|