@datalayer/core 1.0.24 → 1.1.41
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/README.md +35 -24
- package/lib/api/constants.d.ts +3 -0
- package/lib/api/constants.js +3 -0
- package/lib/api/index.d.ts +0 -8
- package/lib/api/index.js +0 -8
- package/lib/cli-login.js +167 -0
- package/lib/client/base.d.ts +0 -3
- package/lib/client/base.js +0 -2
- package/lib/client/index.d.ts +10 -98
- package/lib/client/index.js +12 -21
- package/lib/components/avatars/UserAvatar.d.ts +16 -0
- package/lib/components/avatars/UserAvatar.js +47 -0
- package/lib/components/avatars/index.d.ts +1 -0
- package/lib/components/avatars/index.js +1 -0
- package/lib/components/billing/BillableAccountSelect.js +4 -0
- package/lib/components/billing/index.js +4 -0
- package/lib/components/checkout/StripeCheckout.js +48 -2
- package/lib/components/context/index.d.ts +0 -1
- package/lib/components/context/index.js +0 -1
- package/lib/components/display/DisplayHandle.d.ts +12 -0
- package/lib/components/display/DisplayHandle.js +11 -0
- package/lib/components/display/LiveRelativeTime.d.ts +1 -10
- package/lib/components/display/LiveRelativeTime.js +5 -16
- package/lib/components/display/index.d.ts +1 -0
- package/lib/components/display/index.js +1 -0
- package/lib/components/flashes/index.d.ts +0 -1
- package/lib/components/flashes/index.js +0 -1
- package/lib/components/index.d.ts +2 -0
- package/lib/components/index.js +2 -0
- package/lib/components/principal/Principal.d.ts +7 -0
- package/lib/components/principal/Principal.js +153 -16
- package/lib/components/principal/PrincipalAvatar.d.ts +1 -1
- package/lib/components/principal/PrincipalAvatar.js +4 -28
- package/lib/components/principal/PrincipalBadge.js +4 -4
- package/lib/components/principal/PrincipalDetailsOverlay.d.ts +4 -2
- package/lib/components/principal/PrincipalDetailsOverlay.js +27 -7
- package/lib/components/principal/PrincipalSwitcherMenu.js +76 -39
- package/lib/components/progress/index.d.ts +0 -1
- package/lib/components/progress/index.js +0 -1
- package/lib/components/sharing/ShareAccessComponent.d.ts +3 -2
- package/lib/components/sharing/ShareAccessComponent.js +180 -133
- package/lib/components/sharing/SharingEditor.js +4 -0
- package/lib/components/snippets/index.d.ts +1 -1
- package/lib/components/snippets/index.js +1 -1
- package/lib/components/students/StudentResultCircle.d.ts +21 -0
- package/lib/components/students/StudentResultCircle.js +59 -0
- package/lib/components/students/index.d.ts +1 -1
- package/lib/components/students/index.js +1 -1
- package/lib/components/time/LiveRelativeTime.d.ts +14 -0
- package/lib/components/time/LiveRelativeTime.js +43 -0
- package/lib/components/time/index.d.ts +1 -0
- package/lib/components/time/index.js +9 -0
- package/lib/components/timeline/Timeline.d.ts +20 -0
- package/lib/components/timeline/Timeline.js +90 -0
- package/lib/components/timeline/index.d.ts +1 -0
- package/lib/components/timeline/index.js +9 -0
- package/lib/components/tokens/index.d.ts +1 -1
- package/lib/components/tokens/index.js +1 -1
- package/lib/components/toolbars/index.d.ts +1 -3
- package/lib/components/toolbars/index.js +1 -3
- package/lib/hooks/cacheConverters.d.ts +21 -0
- package/lib/hooks/cacheConverters.js +110 -0
- package/lib/hooks/index.d.ts +0 -2
- package/lib/hooks/index.js +0 -2
- package/lib/hooks/useCache.d.ts +65 -36
- package/lib/hooks/useCache.js +424 -65
- package/lib/hooks/useDatalayer.js +3 -1
- package/lib/hooks/useIAM.js +1 -3
- package/lib/hooks/useLocationHandles.d.ts +3 -1
- package/lib/hooks/useLocationHandles.js +2 -1
- package/lib/hooks/usePrincipalStore.d.ts +2 -2
- package/lib/hooks/usePrincipalStore.js +97 -14
- package/lib/hooks/useProjectStore.d.ts +1 -1
- package/lib/hooks/useSelectedPrincipal.js +1 -1
- package/lib/hooks/useUser.js +19 -2
- package/lib/index.d.ts +1 -6
- package/lib/index.js +1 -13
- package/lib/main.js +3 -3
- package/lib/mocks/index.js +1 -1
- package/lib/mocks/models/index.d.ts +0 -1
- package/lib/mocks/models/index.js +0 -1
- package/lib/models/Datasource.d.ts +2 -2
- package/lib/models/IAM.d.ts +1 -1
- package/lib/models/IAMToken.d.ts +1 -1
- package/lib/models/School.d.ts +12 -3
- package/lib/models/Secret.d.ts +2 -2
- package/lib/models/Student.d.ts +13 -3
- package/lib/models/Usage.d.ts +11 -1
- package/lib/models/UserDTO.d.ts +2 -2
- package/lib/models/index.d.ts +0 -30
- package/lib/models/index.js +0 -30
- package/lib/routes/index.d.ts +1 -0
- package/lib/routes/index.js +1 -0
- package/lib/routes/publicPaths.d.ts +23 -0
- package/lib/routes/publicPaths.js +74 -0
- package/lib/state/State.d.ts +0 -12
- package/lib/state/State.js +0 -12
- package/lib/state/substates/CoreState.js +1 -1
- package/lib/state/substates/LayoutState.d.ts +12 -1
- package/lib/state/substates/index.d.ts +0 -7
- package/lib/state/substates/index.js +0 -7
- package/lib/utils/Date.d.ts +7 -0
- package/lib/utils/Date.js +43 -10
- package/lib/utils/Handles.js +3 -1
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/views/api-keys/APIKeyEdit.d.ts +8 -0
- package/lib/views/{iam-tokens/IAMTokenEdit.js → api-keys/APIKeyEdit.js} +31 -31
- package/lib/views/api-keys/APIKeyNew.d.ts +8 -0
- package/lib/views/api-keys/APIKeyNew.js +143 -0
- package/lib/views/api-keys/APIKeys.d.ts +12 -0
- package/lib/views/api-keys/APIKeys.js +128 -0
- package/lib/views/api-keys/APIKeysStandalone.d.ts +2 -0
- package/lib/views/api-keys/APIKeysStandalone.js +117 -0
- package/lib/views/api-keys/index.d.ts +3 -0
- package/lib/{mocks/jupyter → views/api-keys}/index.js +3 -1
- package/lib/views/datasources/DatasourceDetail.d.ts +1 -1
- package/lib/views/datasources/DatasourceNew.d.ts +1 -1
- package/lib/views/datasources/Datasources.d.ts +1 -1
- package/lib/views/datasources/Datasources.js +12 -3
- package/lib/views/iam/SignInSimple.d.ts +37 -1
- package/lib/views/iam/SignInSimple.js +110 -12
- package/package.json +5 -3
- package/lib/App.css +0 -47
- package/lib/App.d.ts +0 -3
- package/lib/App.js +0 -21
- package/lib/api/runtimes/checkpoints.d.ts +0 -122
- package/lib/api/runtimes/checkpoints.js +0 -118
- package/lib/api/runtimes/environments.d.ts +0 -9
- package/lib/api/runtimes/environments.js +0 -29
- package/lib/api/runtimes/healthz.d.ts +0 -15
- package/lib/api/runtimes/healthz.js +0 -44
- package/lib/api/runtimes/index.d.ts +0 -12
- package/lib/api/runtimes/index.js +0 -16
- package/lib/api/runtimes/runtimes.d.ts +0 -138
- package/lib/api/runtimes/runtimes.js +0 -230
- package/lib/api/runtimes/snapshots.d.ts +0 -38
- package/lib/api/runtimes/snapshots.js +0 -82
- package/lib/api/spacer/documents.d.ts +0 -12
- package/lib/api/spacer/documents.js +0 -43
- package/lib/api/spacer/healthz.d.ts +0 -15
- package/lib/api/spacer/healthz.js +0 -44
- package/lib/api/spacer/index.d.ts +0 -15
- package/lib/api/spacer/index.js +0 -19
- package/lib/api/spacer/items.d.ts +0 -25
- package/lib/api/spacer/items.js +0 -55
- package/lib/api/spacer/lexicals.d.ts +0 -34
- package/lib/api/spacer/lexicals.js +0 -89
- package/lib/api/spacer/notebooks.d.ts +0 -34
- package/lib/api/spacer/notebooks.js +0 -89
- package/lib/api/spacer/spaces.d.ts +0 -84
- package/lib/api/spacer/spaces.js +0 -170
- package/lib/api/spacer/users.d.ts +0 -9
- package/lib/api/spacer/users.js +0 -29
- package/lib/client/mixins/RuntimesMixin.d.ts +0 -93
- package/lib/client/mixins/RuntimesMixin.js +0 -229
- package/lib/client/mixins/SpacerMixin.d.ts +0 -210
- package/lib/client/mixins/SpacerMixin.js +0 -615
- package/lib/client/utils/spacerUtils.d.ts +0 -18
- package/lib/client/utils/spacerUtils.js +0 -32
- package/lib/collaboration/DatalayerCollaboration.d.ts +0 -13
- package/lib/collaboration/DatalayerCollaboration.js +0 -28
- package/lib/collaboration/DatalayerCollaborationProvider.d.ts +0 -60
- package/lib/collaboration/DatalayerCollaborationProvider.js +0 -163
- package/lib/collaboration/index.d.ts +0 -2
- package/lib/collaboration/index.js +0 -6
- package/lib/components/context/SpaceSelect.d.ts +0 -2
- package/lib/components/context/SpaceSelect.js +0 -42
- package/lib/components/flashes/FlashDisclaimer.d.ts +0 -2
- package/lib/components/flashes/FlashDisclaimer.js +0 -17
- package/lib/components/icons/ArtifactIcon.d.ts +0 -10
- package/lib/components/icons/ArtifactIcon.js +0 -58
- package/lib/components/icons/index.d.ts +0 -1
- package/lib/components/icons/index.js +0 -5
- package/lib/components/nbgrader/NbGradesDetails.d.ts +0 -5
- package/lib/components/nbgrader/NbGradesDetails.js +0 -14
- package/lib/components/nbgrader/index.d.ts +0 -1
- package/lib/components/nbgrader/index.js +0 -5
- package/lib/components/progress/CreditsIndicator.d.ts +0 -33
- package/lib/components/progress/CreditsIndicator.js +0 -23
- package/lib/components/runtimes/RuntimeCellVariables.d.ts +0 -39
- package/lib/components/runtimes/RuntimeCellVariables.js +0 -172
- package/lib/components/runtimes/RuntimeCellVariablesDialog.d.ts +0 -37
- package/lib/components/runtimes/RuntimeCellVariablesDialog.js +0 -101
- package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +0 -57
- package/lib/components/runtimes/RuntimeLauncherDialog.js +0 -275
- package/lib/components/runtimes/RuntimePickerBase.d.ts +0 -69
- package/lib/components/runtimes/RuntimePickerBase.js +0 -122
- package/lib/components/runtimes/RuntimePickerCell.d.ts +0 -34
- package/lib/components/runtimes/RuntimePickerCell.js +0 -104
- package/lib/components/runtimes/RuntimePickerNotebook.d.ts +0 -42
- package/lib/components/runtimes/RuntimePickerNotebook.js +0 -232
- package/lib/components/runtimes/RuntimeReservationControl.d.ts +0 -47
- package/lib/components/runtimes/RuntimeReservationControl.js +0 -42
- package/lib/components/runtimes/RuntimeSimplePicker.d.ts +0 -38
- package/lib/components/runtimes/RuntimeSimplePicker.js +0 -155
- package/lib/components/runtimes/RuntimeTransfer.d.ts +0 -16
- package/lib/components/runtimes/RuntimeTransfer.js +0 -5
- package/lib/components/runtimes/RuntimeUtils.d.ts +0 -17
- package/lib/components/runtimes/RuntimeUtils.js +0 -178
- package/lib/components/runtimes/RuntimeVariables.d.ts +0 -38
- package/lib/components/runtimes/RuntimeVariables.js +0 -75
- package/lib/components/runtimes/index.d.ts +0 -11
- package/lib/components/runtimes/index.js +0 -15
- package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +0 -33
- package/lib/components/snapshots/SandboxSnapshotMenu.js +0 -169
- package/lib/components/snapshots/index.d.ts +0 -1
- package/lib/components/snapshots/index.js +0 -5
- package/lib/components/snippets/SnippetDialog.d.ts +0 -42
- package/lib/components/snippets/SnippetDialog.js +0 -42
- package/lib/components/students/StudentItemStatus.d.ts +0 -7
- package/lib/components/students/StudentItemStatus.js +0 -66
- package/lib/components/tokens/SpaceVariantToken.d.ts +0 -5
- package/lib/components/tokens/SpaceVariantToken.js +0 -23
- package/lib/components/toolbars/AssignmentEditorToolbar.d.ts +0 -4
- package/lib/components/toolbars/AssignmentEditorToolbar.js +0 -18
- package/lib/components/toolbars/DocumentEditorToolbar.d.ts +0 -2
- package/lib/components/toolbars/DocumentEditorToolbar.js +0 -12
- package/lib/components/toolbars/NotebookEditorToolbar.d.ts +0 -29
- package/lib/components/toolbars/NotebookEditorToolbar.js +0 -30
- package/lib/examples/CellExample.d.ts +0 -6
- package/lib/examples/CellExample.js +0 -20
- package/lib/examples/NotebookExample.d.ts +0 -6
- package/lib/examples/NotebookExample.js +0 -19
- package/lib/examples/lexical-theme.css +0 -436
- package/lib/examples/notebooks/IPyWidgetsExample.ipynb.json +0 -101
- package/lib/examples/notebooks/IPyWidgetsExampleWithState.ipynb.json +0 -112
- package/lib/examples/notebooks/Lite.ipynb.json +0 -128
- package/lib/examples/notebooks/Matplotlib.ipynb.json +0 -137
- package/lib/examples/notebooks/NotebookExample1.ipynb.json +0 -126
- package/lib/examples/notebooks/NotebookExample2.ipynb.json +0 -48
- package/lib/examples/notebooks/NotebookOutputs.ipynb.json +0 -49
- package/lib/examples/notebooks/NotebookToCExample.ipynb.json +0 -102
- package/lib/examples/notebooks/PyGWalker.ipynb.json +0 -55
- package/lib/hooks/useCellOutputshot.d.ts +0 -4
- package/lib/hooks/useCellOutputshot.js +0 -25
- package/lib/hooks/useProjects.d.ts +0 -628
- package/lib/hooks/useProjects.js +0 -190
- package/lib/hooks/useRuntimes.d.ts +0 -5
- package/lib/hooks/useRuntimes.js +0 -34
- package/lib/mocks/models/CourseMock.d.ts +0 -6
- package/lib/mocks/models/CourseMock.js +0 -29
- package/lib/mocks/models/SpaceMock.d.ts +0 -6
- package/lib/mocks/models/SpaceMock.js +0 -25
- package/lib/models/Assignment.d.ts +0 -7
- package/lib/models/Assignment.js +0 -5
- package/lib/models/Cell.d.ts +0 -8
- package/lib/models/Cell.js +0 -5
- package/lib/models/CodeBlock.d.ts +0 -10
- package/lib/models/CodeBlock.js +0 -5
- package/lib/models/CodeSandboxSnapshot.d.ts +0 -92
- package/lib/models/CodeSandboxSnapshot.js +0 -13
- package/lib/models/CodeSandboxSnapshotDTO.d.ts +0 -173
- package/lib/models/CodeSandboxSnapshotDTO.js +0 -139
- package/lib/models/CodefeedBlocks.d.ts +0 -7
- package/lib/models/CodefeedBlocks.js +0 -5
- package/lib/models/Content.d.ts +0 -5
- package/lib/models/Content.js +0 -5
- package/lib/models/Course.d.ts +0 -17
- package/lib/models/Course.js +0 -5
- package/lib/models/Dataset.d.ts +0 -16
- package/lib/models/Dataset.js +0 -5
- package/lib/models/Document.d.ts +0 -8
- package/lib/models/Document.js +0 -5
- package/lib/models/Environment.d.ts +0 -86
- package/lib/models/Environment.js +0 -5
- package/lib/models/EnvironmentDTO.d.ts +0 -125
- package/lib/models/EnvironmentDTO.js +0 -88
- package/lib/models/Exercise.d.ts +0 -16
- package/lib/models/Exercise.js +0 -5
- package/lib/models/Item.d.ts +0 -20
- package/lib/models/Item.js +0 -5
- package/lib/models/ItemDTO.d.ts +0 -74
- package/lib/models/ItemDTO.js +0 -186
- package/lib/models/ItemType.d.ts +0 -2
- package/lib/models/ItemType.js +0 -5
- package/lib/models/Lesson.d.ts +0 -5
- package/lib/models/Lesson.js +0 -5
- package/lib/models/LexicalDTO.d.ts +0 -155
- package/lib/models/LexicalDTO.js +0 -157
- package/lib/models/Library.d.ts +0 -10
- package/lib/models/Library.js +0 -5
- package/lib/models/Notebook.d.ts +0 -11
- package/lib/models/Notebook.js +0 -5
- package/lib/models/NotebookDTO.d.ts +0 -96
- package/lib/models/NotebookDTO.js +0 -153
- package/lib/models/Page.d.ts +0 -41
- package/lib/models/Page.js +0 -25
- package/lib/models/PageTag.d.ts +0 -19
- package/lib/models/PageTag.js +0 -94
- package/lib/models/ProjectDTO.d.ts +0 -89
- package/lib/models/ProjectDTO.js +0 -131
- package/lib/models/Runtime.d.ts +0 -123
- package/lib/models/Runtime.js +0 -18
- package/lib/models/RuntimeDTO.d.ts +0 -191
- package/lib/models/RuntimeDTO.js +0 -204
- package/lib/models/Space.d.ts +0 -35
- package/lib/models/Space.js +0 -66
- package/lib/models/SpaceDTO.d.ts +0 -334
- package/lib/models/SpaceDTO.js +0 -244
- package/lib/models/SpaceItem.d.ts +0 -10
- package/lib/models/SpaceItem.js +0 -5
- package/lib/models/SpaceMember.d.ts +0 -6
- package/lib/models/SpaceMember.js +0 -5
- package/lib/models/StudentItem.d.ts +0 -21
- package/lib/models/StudentItem.js +0 -5
- package/lib/services/DatalayerServiceManager.d.ts +0 -22
- package/lib/services/DatalayerServiceManager.js +0 -69
- package/lib/services/index.d.ts +0 -4
- package/lib/services/index.js +0 -7
- package/lib/services/reconnectToRuntime.d.ts +0 -32
- package/lib/services/reconnectToRuntime.js +0 -59
- package/lib/state/substates/CellState.d.ts +0 -12
- package/lib/state/substates/CellState.js +0 -22
- package/lib/state/substates/DocumentState.d.ts +0 -10
- package/lib/state/substates/DocumentState.js +0 -14
- package/lib/state/substates/GradeState.d.ts +0 -10
- package/lib/state/substates/GradeState.js +0 -14
- package/lib/state/substates/JupyterLabState.d.ts +0 -16
- package/lib/state/substates/JupyterLabState.js +0 -17
- package/lib/state/substates/NbformatState.d.ts +0 -13
- package/lib/state/substates/NbformatState.js +0 -16
- package/lib/state/substates/RuntimesState.d.ts +0 -79
- package/lib/state/substates/RuntimesState.js +0 -180
- package/lib/state/substates/SpaceState.d.ts +0 -11
- package/lib/state/substates/SpaceState.js +0 -16
- package/lib/stateful/index.d.ts +0 -2
- package/lib/stateful/index.js +0 -6
- package/lib/stateful/jupyter/exec/Python.d.ts +0 -5
- package/lib/stateful/jupyter/exec/Python.js +0 -100
- package/lib/stateful/jupyter/exec/Snippets.d.ts +0 -105
- package/lib/stateful/jupyter/exec/Snippets.js +0 -101
- package/lib/stateful/jupyter/exec/index.d.ts +0 -2
- package/lib/stateful/jupyter/exec/index.js +0 -6
- package/lib/stateful/jupyter/index.d.ts +0 -2
- package/lib/stateful/jupyter/index.js +0 -6
- package/lib/stateful/jupyter/kernelsHandler.d.ts +0 -8
- package/lib/stateful/jupyter/kernelsHandler.js +0 -39
- package/lib/stateful/runtimes/actions.d.ts +0 -102
- package/lib/stateful/runtimes/actions.js +0 -249
- package/lib/stateful/runtimes/apis.d.ts +0 -273
- package/lib/stateful/runtimes/apis.js +0 -5
- package/lib/stateful/runtimes/index.d.ts +0 -5
- package/lib/stateful/runtimes/index.js +0 -9
- package/lib/stateful/runtimes/settings.d.ts +0 -15
- package/lib/stateful/runtimes/settings.js +0 -31
- package/lib/stateful/runtimes/snapshots.d.ts +0 -25
- package/lib/stateful/runtimes/snapshots.js +0 -150
- package/lib/stateful/runtimes/utils.d.ts +0 -7
- package/lib/stateful/runtimes/utils.js +0 -14
- package/lib/utils/Cells.d.ts +0 -2
- package/lib/utils/Cells.js +0 -28
- package/lib/views/iam-tokens/IAMTokenEdit.d.ts +0 -6
- package/lib/views/iam-tokens/IAMTokenNew.d.ts +0 -8
- package/lib/views/iam-tokens/IAMTokenNew.js +0 -118
- package/lib/views/iam-tokens/IAMTokens.d.ts +0 -12
- package/lib/views/iam-tokens/IAMTokens.js +0 -87
- package/lib/views/iam-tokens/Tokens.d.ts +0 -2
- package/lib/views/iam-tokens/Tokens.js +0 -85
- package/lib/views/iam-tokens/index.d.ts +0 -3
- package/lib/views/iam-tokens/index.js +0 -7
- /package/lib/{mocks/jupyter/index.d.ts → cli-login.d.ts} +0 -0
- /package/lib/utils/{logger.d.ts → Logger.d.ts} +0 -0
- /package/lib/utils/{logger.js → Logger.js} +0 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
4
|
+
* Distributed under the terms of the Modified BSD License.
|
|
5
|
+
*/
|
|
6
|
+
import { useMemo } from 'react';
|
|
7
|
+
import { useTheme, Tooltip } from '@primer/react';
|
|
8
|
+
import { Box } from '@datalayer/primer-addons';
|
|
9
|
+
/**
|
|
10
|
+
* A small green/yellow/red/neutral result circle with an explanatory tooltip.
|
|
11
|
+
*
|
|
12
|
+
* Standalone component reused across the course progress and report views so
|
|
13
|
+
* the meaning of the green (success) / red (failure) / empty (no result yet)
|
|
14
|
+
* status is discoverable on hover and focus.
|
|
15
|
+
*/
|
|
16
|
+
export const StudentResultCircle = (props) => {
|
|
17
|
+
const { status, label } = props;
|
|
18
|
+
const { theme } = useTheme();
|
|
19
|
+
const okColor = useMemo(() => theme?.colorSchemes.light.colors.success.muted, [theme]);
|
|
20
|
+
const nokColor = useMemo(() => theme?.colorSchemes.light.colors.severe.muted, [theme]);
|
|
21
|
+
const partialColor = useMemo(() => theme?.colorSchemes.light.colors.attention.muted, [theme]);
|
|
22
|
+
const isNone = status === 'none';
|
|
23
|
+
return (_jsx(Tooltip, { text: label, "aria-label": label, children: _jsx(Box, { as: "button", type: "button", "aria-label": label, onClick: event => {
|
|
24
|
+
event.preventDefault();
|
|
25
|
+
event.stopPropagation();
|
|
26
|
+
}, onMouseDown: event => {
|
|
27
|
+
event.preventDefault();
|
|
28
|
+
event.stopPropagation();
|
|
29
|
+
}, sx: {
|
|
30
|
+
display: 'inline-block',
|
|
31
|
+
flex: 'none',
|
|
32
|
+
appearance: 'none',
|
|
33
|
+
p: 0,
|
|
34
|
+
bg: 'transparent',
|
|
35
|
+
cursor: 'default',
|
|
36
|
+
lineHeight: 0,
|
|
37
|
+
border: 'none',
|
|
38
|
+
outline: 'none',
|
|
39
|
+
}, children: _jsx(Box, { as: "span", role: "img", "aria-hidden": true, sx: {
|
|
40
|
+
display: 'inline-block',
|
|
41
|
+
flex: 'none',
|
|
42
|
+
width: '14px',
|
|
43
|
+
height: '14px',
|
|
44
|
+
borderRadius: 3,
|
|
45
|
+
ml: 1,
|
|
46
|
+
pointerEvents: 'auto',
|
|
47
|
+
boxSizing: 'border-box',
|
|
48
|
+
backgroundColor: isNone
|
|
49
|
+
? 'transparent'
|
|
50
|
+
: status === 'pass'
|
|
51
|
+
? okColor
|
|
52
|
+
: status === 'partial'
|
|
53
|
+
? partialColor
|
|
54
|
+
: nokColor,
|
|
55
|
+
border: isNone ? '1px solid' : 'none',
|
|
56
|
+
borderColor: isNone ? 'border.default' : 'transparent',
|
|
57
|
+
} }) }) }));
|
|
58
|
+
};
|
|
59
|
+
export default StudentResultCircle;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export * from './
|
|
1
|
+
export * from './StudentResultCircle';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type ILiveRelativeTimeProps = {
|
|
2
|
+
value?: Date | string | number;
|
|
3
|
+
refreshIntervalMs?: number;
|
|
4
|
+
fallback?: string;
|
|
5
|
+
showTooltip?: boolean;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Display a live-updating relative time label (e.g. "5m ago", "in 2m").
|
|
9
|
+
*
|
|
10
|
+
* When `showTooltip` is true, a Primer tooltip shows ISO + localized datetime
|
|
11
|
+
* details with timezone information.
|
|
12
|
+
*/
|
|
13
|
+
export declare function LiveRelativeTime({ value, refreshIntervalMs, fallback, showTooltip, }: ILiveRelativeTimeProps): JSX.Element;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/*
|
|
3
|
+
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
4
|
+
* Distributed under the terms of the Modified BSD License.
|
|
5
|
+
*/
|
|
6
|
+
/*
|
|
7
|
+
* Copyright (c) 2023-2026 Datalayer, Inc.
|
|
8
|
+
* Distributed under the terms of the Modified BSD License.
|
|
9
|
+
*/
|
|
10
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
11
|
+
import { Tooltip } from '@primer/react';
|
|
12
|
+
import { formatDateTimeDetails, formatRelativeTime } from '../../utils/index.js';
|
|
13
|
+
/**
|
|
14
|
+
* Display a live-updating relative time label (e.g. "5m ago", "in 2m").
|
|
15
|
+
*
|
|
16
|
+
* When `showTooltip` is true, a Primer tooltip shows ISO + localized datetime
|
|
17
|
+
* details with timezone information.
|
|
18
|
+
*/
|
|
19
|
+
export function LiveRelativeTime({ value, refreshIntervalMs = 30_000, fallback = '—', showTooltip = true, }) {
|
|
20
|
+
const [now, setNow] = useState(() => new Date());
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
const timer = window.setInterval(() => {
|
|
23
|
+
setNow(new Date());
|
|
24
|
+
}, refreshIntervalMs);
|
|
25
|
+
return () => window.clearInterval(timer);
|
|
26
|
+
}, [refreshIntervalMs]);
|
|
27
|
+
const label = useMemo(() => formatRelativeTime(value, now), [value, now]);
|
|
28
|
+
const tooltip = useMemo(() => formatDateTimeDetails(value), [value]);
|
|
29
|
+
const content = (_jsx("button", { type: "button", "aria-label": tooltip || 'Date and time details', style: {
|
|
30
|
+
border: 'none',
|
|
31
|
+
background: 'transparent',
|
|
32
|
+
padding: 0,
|
|
33
|
+
margin: 0,
|
|
34
|
+
font: 'inherit',
|
|
35
|
+
color: 'inherit',
|
|
36
|
+
cursor: 'inherit',
|
|
37
|
+
lineHeight: 'inherit',
|
|
38
|
+
}, children: label ?? fallback }));
|
|
39
|
+
if (!showTooltip || !tooltip) {
|
|
40
|
+
return content;
|
|
41
|
+
}
|
|
42
|
+
return _jsx(Tooltip, { text: tooltip, children: content });
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './LiveRelativeTime';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/*
|
|
6
|
+
* Copyright (c) 2023-2026 Datalayer, Inc.
|
|
7
|
+
* Distributed under the terms of the Modified BSD License.
|
|
8
|
+
*/
|
|
9
|
+
export * from './LiveRelativeTime.js';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export type TimelineStatus = 'done' | 'current' | 'pending' | 'failed' | 'neutral';
|
|
3
|
+
export type TimelineItem = {
|
|
4
|
+
id: string;
|
|
5
|
+
title: string;
|
|
6
|
+
timestamp?: string;
|
|
7
|
+
status?: TimelineStatus;
|
|
8
|
+
subtitle?: ReactNode;
|
|
9
|
+
};
|
|
10
|
+
export type TimelineProps = {
|
|
11
|
+
items: TimelineItem[];
|
|
12
|
+
renderTimestamp?: (value?: string) => ReactNode;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Horizontal metro-style timeline with connected markers and labels.
|
|
16
|
+
*
|
|
17
|
+
* The first item is rendered on the left. Pass items in the desired order
|
|
18
|
+
* (for example: newest to oldest).
|
|
19
|
+
*/
|
|
20
|
+
export declare const Timeline: ({ items, renderTimestamp }: TimelineProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from '@primer/react';
|
|
3
|
+
const statusStyles = {
|
|
4
|
+
done: {
|
|
5
|
+
dotBackground: 'success.emphasis',
|
|
6
|
+
dotBorder: 'success.emphasis',
|
|
7
|
+
lineColor: 'success.muted',
|
|
8
|
+
titleColor: 'fg.default',
|
|
9
|
+
},
|
|
10
|
+
current: {
|
|
11
|
+
dotBackground: 'attention.emphasis',
|
|
12
|
+
dotBorder: 'attention.emphasis',
|
|
13
|
+
lineColor: 'attention.muted',
|
|
14
|
+
titleColor: 'fg.default',
|
|
15
|
+
},
|
|
16
|
+
pending: {
|
|
17
|
+
dotBackground: 'canvas.default',
|
|
18
|
+
dotBorder: 'border.default',
|
|
19
|
+
lineColor: 'border.default',
|
|
20
|
+
titleColor: 'fg.muted',
|
|
21
|
+
},
|
|
22
|
+
failed: {
|
|
23
|
+
dotBackground: 'danger.emphasis',
|
|
24
|
+
dotBorder: 'danger.emphasis',
|
|
25
|
+
lineColor: 'danger.muted',
|
|
26
|
+
titleColor: 'danger.fg',
|
|
27
|
+
},
|
|
28
|
+
neutral: {
|
|
29
|
+
dotBackground: 'accent.emphasis',
|
|
30
|
+
dotBorder: 'accent.emphasis',
|
|
31
|
+
lineColor: 'accent.muted',
|
|
32
|
+
titleColor: 'fg.default',
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Horizontal metro-style timeline with connected markers and labels.
|
|
37
|
+
*
|
|
38
|
+
* The first item is rendered on the left. Pass items in the desired order
|
|
39
|
+
* (for example: newest to oldest).
|
|
40
|
+
*/
|
|
41
|
+
export const Timeline = ({ items, renderTimestamp }) => {
|
|
42
|
+
if (!items.length) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return (_jsx(Box, { sx: {
|
|
46
|
+
overflowX: 'auto',
|
|
47
|
+
pb: 1,
|
|
48
|
+
}, children: _jsx(Box, { sx: {
|
|
49
|
+
display: 'flex',
|
|
50
|
+
alignItems: 'stretch',
|
|
51
|
+
minWidth: 'max-content',
|
|
52
|
+
}, children: items.map((item, index) => {
|
|
53
|
+
const status = item.status || 'neutral';
|
|
54
|
+
const style = statusStyles[status];
|
|
55
|
+
const hasNext = index < items.length - 1;
|
|
56
|
+
return (_jsxs(Box, { sx: {
|
|
57
|
+
display: 'flex',
|
|
58
|
+
flexDirection: 'column',
|
|
59
|
+
minWidth: 220,
|
|
60
|
+
flex: hasNext ? '0 0 220px' : '0 0 auto',
|
|
61
|
+
pr: hasNext ? 0 : 1,
|
|
62
|
+
}, children: [_jsxs(Box, { sx: {
|
|
63
|
+
display: 'flex',
|
|
64
|
+
alignItems: 'center',
|
|
65
|
+
minHeight: 28,
|
|
66
|
+
mb: 2,
|
|
67
|
+
}, children: [_jsx(Box, { sx: {
|
|
68
|
+
width: 16,
|
|
69
|
+
height: 16,
|
|
70
|
+
borderRadius: '50%',
|
|
71
|
+
border: '2px solid',
|
|
72
|
+
borderColor: style.dotBorder,
|
|
73
|
+
bg: style.dotBackground,
|
|
74
|
+
boxShadow: 'inset 0 0 0 1px rgba(255,255,255,0.2)',
|
|
75
|
+
} }), hasNext ? (_jsx(Box, { sx: {
|
|
76
|
+
flex: 1,
|
|
77
|
+
height: 4,
|
|
78
|
+
ml: 2,
|
|
79
|
+
mr: 2,
|
|
80
|
+
borderRadius: 999,
|
|
81
|
+
bg: style.lineColor,
|
|
82
|
+
} })) : null] }), _jsx(Text, { as: "p", sx: { fontWeight: 600, color: style.titleColor, mb: 1 }, children: item.title }), _jsx(Text, { as: "p", sx: {
|
|
83
|
+
fontSize: 0,
|
|
84
|
+
color: 'fg.muted',
|
|
85
|
+
mb: item.subtitle ? 1 : 0,
|
|
86
|
+
}, children: renderTimestamp
|
|
87
|
+
? renderTimestamp(item.timestamp)
|
|
88
|
+
: item.timestamp || 'n/a' }), item.subtitle ? (_jsx(Text, { as: "p", sx: { fontSize: 0, color: 'fg.subtle' }, children: item.subtitle })) : null] }, item.id));
|
|
89
|
+
}) }) }));
|
|
90
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './Timeline';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a raw code sandbox snapshot payload into its client shape.
|
|
3
|
+
*
|
|
4
|
+
* @param s - The raw snapshot payload from the API.
|
|
5
|
+
* @returns The converted snapshot object.
|
|
6
|
+
*/
|
|
7
|
+
export declare function asCodeSandboxSnapshot(s: any): any;
|
|
8
|
+
/**
|
|
9
|
+
* Convert a raw page payload into its client shape.
|
|
10
|
+
*
|
|
11
|
+
* @param s - The raw page payload from the API.
|
|
12
|
+
* @returns The converted page object.
|
|
13
|
+
*/
|
|
14
|
+
export declare const asPage: (s: any) => any;
|
|
15
|
+
/**
|
|
16
|
+
* Convert a raw space payload into its client shape.
|
|
17
|
+
*
|
|
18
|
+
* @param raw_space - The raw space payload from the API.
|
|
19
|
+
* @returns The converted space object.
|
|
20
|
+
*/
|
|
21
|
+
export declare const asSpace: (raw_space: any) => any;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Local response converters for the core cache hook.
|
|
7
|
+
*
|
|
8
|
+
* The rich content models (Space, Page, CodeSandboxSnapshot) live in the
|
|
9
|
+
* runtime/content package (`@datalayer/agent-runtimes`). The core cache still
|
|
10
|
+
* fetches this data over raw HTTP, so these converters are kept here with
|
|
11
|
+
* loosened (structural) types to preserve runtime behaviour without depending
|
|
12
|
+
* on the content models.
|
|
13
|
+
*
|
|
14
|
+
* @module hooks/cacheConverters
|
|
15
|
+
*/
|
|
16
|
+
import { asUser } from '../models/index.js';
|
|
17
|
+
import { asArray } from '../utils/index.js';
|
|
18
|
+
/**
|
|
19
|
+
* Convert a raw code sandbox snapshot payload into its client shape.
|
|
20
|
+
*
|
|
21
|
+
* @param s - The raw snapshot payload from the API.
|
|
22
|
+
* @returns The converted snapshot object.
|
|
23
|
+
*/
|
|
24
|
+
export function asCodeSandboxSnapshot(s) {
|
|
25
|
+
const { uid, updated_at, format_version, ...others } = s;
|
|
26
|
+
return {
|
|
27
|
+
...others,
|
|
28
|
+
id: uid,
|
|
29
|
+
updatedAt: new Date(updated_at),
|
|
30
|
+
formatVersion: format_version,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Convert a raw page payload into its client shape.
|
|
35
|
+
*
|
|
36
|
+
* @param s - The raw page payload from the API.
|
|
37
|
+
* @returns The converted page object.
|
|
38
|
+
*/
|
|
39
|
+
export const asPage = (s) => {
|
|
40
|
+
return {
|
|
41
|
+
id: s.uid,
|
|
42
|
+
type: 'page',
|
|
43
|
+
variant: s.variant_s,
|
|
44
|
+
name: s.name_t,
|
|
45
|
+
description: s.description_t,
|
|
46
|
+
theme: s.theme_s,
|
|
47
|
+
nbformat: s.nbformat_s ? JSON.parse(s.nbformat_s) : undefined,
|
|
48
|
+
screenCapture: s.screen_capture_cdn_url_s || s.screen_capture_s,
|
|
49
|
+
tags: s.tags_ss ?? [],
|
|
50
|
+
creator: s.creator ? asUser(s.creator) : undefined,
|
|
51
|
+
creatorId: s.creator_uid,
|
|
52
|
+
kernelSnapshot: s.kernel_snapshot
|
|
53
|
+
? asCodeSandboxSnapshot(s.kernel_snapshot)
|
|
54
|
+
: undefined,
|
|
55
|
+
kernelSnapshotId: s.kernel_snapshot_uid,
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Convert a raw space payload into its client shape.
|
|
60
|
+
*
|
|
61
|
+
* @param raw_space - The raw space payload from the API.
|
|
62
|
+
* @returns The converted space object.
|
|
63
|
+
*/
|
|
64
|
+
export const asSpace = (raw_space) => {
|
|
65
|
+
const sharedOwnerUserUids = asArray(raw_space?.shared_owner_user_uids_ss ||
|
|
66
|
+
raw_space?.shared_ower_user_uids_ss ||
|
|
67
|
+
[]).filter((uid) => typeof uid === 'string' && uid.length > 0);
|
|
68
|
+
const organizationHandle = raw_space?.organization?.handle;
|
|
69
|
+
const owner = raw_space?.owner
|
|
70
|
+
? asUser(raw_space.owner)
|
|
71
|
+
: {
|
|
72
|
+
id: '',
|
|
73
|
+
handle: '',
|
|
74
|
+
email: '',
|
|
75
|
+
firstName: '',
|
|
76
|
+
lastName: '',
|
|
77
|
+
initials: '',
|
|
78
|
+
displayName: '',
|
|
79
|
+
roles: [],
|
|
80
|
+
iamProviders: [],
|
|
81
|
+
setRoles: () => { },
|
|
82
|
+
unsubscribedFromOutbounds: false,
|
|
83
|
+
onboarding: {},
|
|
84
|
+
events: [],
|
|
85
|
+
settings: {},
|
|
86
|
+
};
|
|
87
|
+
let members = [];
|
|
88
|
+
if (raw_space.members) {
|
|
89
|
+
members = asArray(raw_space.members).map((m) => asUser(m));
|
|
90
|
+
}
|
|
91
|
+
const space = {
|
|
92
|
+
id: raw_space.uid,
|
|
93
|
+
handle: raw_space.handle_s,
|
|
94
|
+
type: 'space',
|
|
95
|
+
variant: raw_space.variant_s,
|
|
96
|
+
name: raw_space.name_t,
|
|
97
|
+
description: raw_space.description_t,
|
|
98
|
+
public: raw_space.public_b,
|
|
99
|
+
members,
|
|
100
|
+
creationDate: new Date(raw_space.creation_ts_dt),
|
|
101
|
+
owner,
|
|
102
|
+
organization: organizationHandle
|
|
103
|
+
? { handle: organizationHandle }
|
|
104
|
+
: undefined,
|
|
105
|
+
sharedOwnerUserUids,
|
|
106
|
+
// Preserve raw Solr fields so consumers can access dynamic fields.
|
|
107
|
+
...raw_space,
|
|
108
|
+
};
|
|
109
|
+
return space;
|
|
110
|
+
};
|
package/lib/hooks/index.d.ts
CHANGED
|
@@ -20,12 +20,10 @@ export * from './useNavigate';
|
|
|
20
20
|
export * from './useParams';
|
|
21
21
|
export * from './useOnClickOutside';
|
|
22
22
|
export * from './useRef';
|
|
23
|
-
export * from './useRuntimes';
|
|
24
23
|
export * from './useScreencapture';
|
|
25
24
|
export * from './useToast';
|
|
26
25
|
export * from './useUpload';
|
|
27
26
|
export * from './useUser';
|
|
28
|
-
export * from './useProjects';
|
|
29
27
|
export * from './useProjectStore';
|
|
30
28
|
export * from './useMobile';
|
|
31
29
|
export * from './useUsageRefreshStore';
|
package/lib/hooks/index.js
CHANGED
|
@@ -25,12 +25,10 @@ export * from './useNavigate.js';
|
|
|
25
25
|
export * from './useParams.js';
|
|
26
26
|
export * from './useOnClickOutside.js';
|
|
27
27
|
export * from './useRef.js';
|
|
28
|
-
export * from './useRuntimes.js';
|
|
29
28
|
export * from './useScreencapture.js';
|
|
30
29
|
export * from './useToast.js';
|
|
31
30
|
export * from './useUpload.js';
|
|
32
31
|
export * from './useUser.js';
|
|
33
|
-
export * from './useProjects.js';
|
|
34
32
|
export * from './useProjectStore.js';
|
|
35
33
|
export * from './useMobile.js';
|
|
36
34
|
export * from './useUsageRefreshStore.js';
|