@datalayer/core 0.0.1 → 0.0.2
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 +176 -7
- package/lib/App.d.ts +3 -0
- package/lib/App.js +4 -0
- package/lib/__tests__/App.test.d.ts +1 -0
- package/lib/__tests__/App.test.js +17 -0
- package/lib/__tests__/hooks.test.d.ts +1 -0
- package/lib/__tests__/hooks.test.js +19 -0
- package/lib/__tests__/index.test.d.ts +1 -0
- package/lib/__tests__/index.test.js +26 -0
- package/lib/__tests__/integration.test.d.ts +1 -0
- package/lib/__tests__/integration.test.js +57 -0
- package/lib/__tests__/utils.test.d.ts +1 -0
- package/lib/__tests__/utils.test.js +59 -0
- package/lib/api/RunApi.d.ts +75 -0
- package/lib/api/RunApi.js +150 -0
- package/lib/api/index.d.ts +2 -0
- package/lib/api/index.js +11 -0
- package/lib/api/runtimes/exec/Python.d.ts +5 -0
- package/lib/api/runtimes/exec/Python.js +105 -0
- package/lib/api/runtimes/exec/Snippets.d.ts +145 -0
- package/lib/api/runtimes/exec/Snippets.js +125 -0
- package/lib/api/runtimes/exec/index.d.ts +2 -0
- package/lib/api/runtimes/exec/index.js +11 -0
- package/lib/api/runtimes/index.d.ts +7 -0
- package/lib/api/runtimes/index.js +16 -0
- package/lib/api/runtimes/kernelsHandler.d.ts +8 -0
- package/lib/api/runtimes/kernelsHandler.js +44 -0
- package/lib/api/runtimes/models.d.ts +59 -0
- package/lib/api/runtimes/models.js +11 -0
- package/lib/api/runtimes/runtimesApi.d.ts +370 -0
- package/lib/api/runtimes/runtimesApi.js +269 -0
- package/lib/api/runtimes/settings.d.ts +15 -0
- package/lib/api/runtimes/settings.js +36 -0
- package/lib/api/runtimes/snapshots.d.ts +25 -0
- package/lib/api/runtimes/snapshots.js +155 -0
- package/lib/api/runtimes/utils.d.ts +7 -0
- package/lib/api/runtimes/utils.js +22 -0
- package/lib/components/avatars/BoringAvatar.d.ts +20 -0
- package/lib/components/avatars/BoringAvatar.js +39 -0
- package/lib/components/avatars/UserProfileAvatar.d.ts +13 -0
- package/lib/components/avatars/UserProfileAvatar.js +37 -0
- package/lib/components/avatars/index.d.ts +2 -0
- package/lib/components/avatars/index.js +11 -0
- package/lib/components/banners/NoAutomationBanner.d.ts +2 -0
- package/lib/components/banners/NoAutomationBanner.js +18 -0
- package/lib/components/banners/index.d.ts +1 -0
- package/lib/components/banners/index.js +10 -0
- package/lib/components/buttons/DownloadCSVButton.d.ts +13 -0
- package/lib/components/buttons/DownloadCSVButton.js +21 -0
- package/lib/components/buttons/DownloadJsonButton.d.ts +16 -0
- package/lib/components/buttons/DownloadJsonButton.js +23 -0
- package/lib/components/buttons/LongActionButton.d.ts +28 -0
- package/lib/components/buttons/LongActionButton.js +29 -0
- package/lib/components/buttons/UploadButton.d.ts +37 -0
- package/lib/components/buttons/UploadButton.js +48 -0
- package/lib/components/buttons/VariantType.d.ts +1 -0
- package/lib/components/buttons/VariantType.js +5 -0
- package/lib/components/buttons/index.d.ts +5 -0
- package/lib/components/buttons/index.js +14 -0
- package/lib/components/checkout/StripeCheckout.d.ts +32 -0
- package/lib/components/checkout/StripeCheckout.js +100 -0
- package/lib/components/checkout/index.d.ts +1 -0
- package/lib/components/checkout/index.js +10 -0
- package/lib/components/confetti/ConfettiSuccess.d.ts +2 -0
- package/lib/components/confetti/ConfettiSuccess.js +17 -0
- package/lib/components/confetti/index.d.ts +1 -0
- package/lib/components/confetti/index.js +10 -0
- package/lib/components/context/OrganizationSelect.d.ts +2 -0
- package/lib/components/context/OrganizationSelect.js +40 -0
- package/lib/components/context/SpaceSelect.d.ts +2 -0
- package/lib/components/context/SpaceSelect.js +48 -0
- package/lib/components/context/index.d.ts +2 -0
- package/lib/components/context/index.js +11 -0
- package/lib/components/display/AvatarSkeleton.d.ts +5 -0
- package/lib/components/display/AvatarSkeleton.js +16 -0
- package/lib/components/display/CenteredSpinner.d.ts +14 -0
- package/lib/components/display/CenteredSpinner.js +25 -0
- package/lib/components/display/CodePreview.d.ts +4 -0
- package/lib/components/display/CodePreview.js +20 -0
- package/lib/components/display/DatalayerBox.d.ts +8 -0
- package/lib/components/display/DatalayerBox.js +33 -0
- package/lib/components/display/HorizontalCenter.d.ts +9 -0
- package/lib/components/display/HorizontalCenter.js +14 -0
- package/lib/components/display/JupyterDialog.d.ts +69 -0
- package/lib/components/display/JupyterDialog.js +120 -0
- package/lib/components/display/Markdown.d.ts +23 -0
- package/lib/components/display/Markdown.js +20 -0
- package/lib/components/display/NavLink.d.ts +9 -0
- package/lib/components/display/NavLink.js +22 -0
- package/lib/components/display/NotebookSkeleton.d.ts +2 -0
- package/lib/components/display/NotebookSkeleton.js +16 -0
- package/lib/components/display/Placeholder.d.ts +2 -0
- package/lib/components/display/Placeholder.js +14 -0
- package/lib/components/display/ToTopBranded.d.ts +2 -0
- package/lib/components/display/ToTopBranded.js +16 -0
- package/lib/components/display/VisuallyHidden.d.ts +5 -0
- package/lib/components/display/VisuallyHidden.js +29 -0
- package/lib/components/display/index.d.ts +12 -0
- package/lib/components/display/index.js +21 -0
- package/lib/components/echarts/EChartsReact.d.ts +11 -0
- package/lib/components/echarts/EChartsReact.js +53 -0
- package/lib/components/echarts/index.d.ts +1 -0
- package/lib/components/echarts/index.js +10 -0
- package/lib/components/flashes/FlashClosable.d.ts +22 -0
- package/lib/components/flashes/FlashClosable.js +69 -0
- package/lib/components/flashes/FlashDisclaimer.d.ts +2 -0
- package/lib/components/flashes/FlashDisclaimer.js +23 -0
- package/lib/components/flashes/FlashGuest.d.ts +2 -0
- package/lib/components/flashes/FlashGuest.js +35 -0
- package/lib/components/flashes/FlashSurveys.d.ts +6 -0
- package/lib/components/flashes/FlashSurveys.js +41 -0
- package/lib/components/flashes/FlashUnauthorized.d.ts +2 -0
- package/lib/components/flashes/FlashUnauthorized.js +23 -0
- package/lib/components/flashes/index.d.ts +6 -0
- package/lib/components/flashes/index.js +15 -0
- package/lib/components/flashes/surveys/Survey2025_1.d.ts +3 -0
- package/lib/components/flashes/surveys/Survey2025_1.js +134 -0
- package/lib/components/flashes/surveys/SurveyProps.d.ts +6 -0
- package/lib/components/flashes/surveys/SurveyProps.js +5 -0
- package/lib/components/flashes/surveys/index.d.ts +2 -0
- package/lib/components/flashes/surveys/index.js +11 -0
- package/lib/components/iam/ExternalTokenSilentLogin.d.ts +5 -0
- package/lib/components/iam/ExternalTokenSilentLogin.js +38 -0
- package/lib/components/iam/index.d.ts +1 -0
- package/lib/components/iam/index.js +10 -0
- package/lib/components/icons/ArtifactIcon.d.ts +10 -0
- package/lib/components/icons/ArtifactIcon.js +63 -0
- package/lib/components/icons/index.d.ts +1 -0
- package/lib/components/icons/index.js +10 -0
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.js +10 -0
- package/lib/components/labels/VisibilityLabel.d.ts +4 -0
- package/lib/components/labels/VisibilityLabel.js +22 -0
- package/lib/components/labels/index.d.ts +1 -0
- package/lib/components/labels/index.js +10 -0
- package/lib/components/landings/StepBlock.d.ts +11 -0
- package/lib/components/landings/StepBlock.js +17 -0
- package/lib/components/landings/index.d.ts +1 -0
- package/lib/components/landings/index.js +10 -0
- package/lib/components/navbar/NavigationVisbilityObserver.d.ts +5 -0
- package/lib/components/navbar/NavigationVisbilityObserver.js +63 -0
- package/lib/components/navbar/SubdomainNavBar.d.ts +81 -0
- package/lib/components/navbar/SubdomainNavBar.js +240 -0
- package/lib/components/navbar/index.d.ts +2 -0
- package/lib/components/navbar/index.js +11 -0
- package/lib/components/nbgrader/NbGradesDetails.d.ts +5 -0
- package/lib/components/nbgrader/NbGradesDetails.js +22 -0
- package/lib/components/nbgrader/index.d.ts +1 -0
- package/lib/components/nbgrader/index.js +10 -0
- package/lib/components/notebooks/JupyterNotebook.d.ts +12 -0
- package/lib/components/notebooks/JupyterNotebook.js +41 -0
- package/lib/components/notebooks/JupyterNotebookToolbar.d.ts +2 -0
- package/lib/components/notebooks/JupyterNotebookToolbar.js +44 -0
- package/lib/components/notebooks/index.d.ts +2 -0
- package/lib/components/notebooks/index.js +11 -0
- package/lib/components/primer/Helper.d.ts +32 -0
- package/lib/components/primer/Helper.js +19 -0
- package/lib/components/primer/Portals.d.ts +9 -0
- package/lib/components/primer/Portals.js +31 -0
- package/lib/components/primer/Styles.d.ts +2 -0
- package/lib/components/primer/Styles.js +16 -0
- package/lib/components/primer/index.d.ts +2 -0
- package/lib/components/primer/index.js +11 -0
- package/lib/components/progress/ConsumptionBar.d.ts +40 -0
- package/lib/components/progress/ConsumptionBar.js +54 -0
- package/lib/components/progress/CreditsIndicator.d.ts +27 -0
- package/lib/components/progress/CreditsIndicator.js +30 -0
- package/lib/components/progress/ProgressBar.d.ts +2 -0
- package/lib/components/progress/ProgressBar.js +26 -0
- package/lib/components/progress/ProgressRing.d.ts +36 -0
- package/lib/components/progress/ProgressRing.js +31 -0
- package/lib/components/progress/Timer.d.ts +9 -0
- package/lib/components/progress/Timer.js +33 -0
- package/lib/components/progress/index.d.ts +5 -0
- package/lib/components/progress/index.js +14 -0
- package/lib/components/runtimes/RuntimeCellVariables.d.ts +39 -0
- package/lib/components/runtimes/RuntimeCellVariables.js +177 -0
- package/lib/components/runtimes/RuntimeCellVariablesDialog.d.ts +37 -0
- package/lib/components/runtimes/RuntimeCellVariablesDialog.js +106 -0
- package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +54 -0
- package/lib/components/runtimes/RuntimeLauncherDialog.js +254 -0
- package/lib/components/runtimes/RuntimePickerBase.d.ts +69 -0
- package/lib/components/runtimes/RuntimePickerBase.js +114 -0
- package/lib/components/runtimes/RuntimePickerCell.d.ts +34 -0
- package/lib/components/runtimes/RuntimePickerCell.js +111 -0
- package/lib/components/runtimes/RuntimePickerNotebook.d.ts +43 -0
- package/lib/components/runtimes/RuntimePickerNotebook.js +173 -0
- package/lib/components/runtimes/RuntimeReservationControl.d.ts +47 -0
- package/lib/components/runtimes/RuntimeReservationControl.js +43 -0
- package/lib/components/runtimes/RuntimeSimplePicker.d.ts +34 -0
- package/lib/components/runtimes/RuntimeSimplePicker.js +161 -0
- package/lib/components/runtimes/RuntimeTransfer.d.ts +16 -0
- package/lib/components/runtimes/RuntimeTransfer.js +5 -0
- package/lib/components/runtimes/RuntimeUtils.d.ts +17 -0
- package/lib/components/runtimes/RuntimeUtils.js +173 -0
- package/lib/components/runtimes/RuntimeVariables.d.ts +38 -0
- package/lib/components/runtimes/RuntimeVariables.js +80 -0
- package/lib/components/runtimes/index.d.ts +11 -0
- package/lib/components/runtimes/index.js +20 -0
- package/lib/components/screenshot/ScreenCapture.d.ts +38 -0
- package/lib/components/screenshot/ScreenCapture.js +179 -0
- package/lib/components/screenshot/ScreenCaptureButton.d.ts +3 -0
- package/lib/components/screenshot/ScreenCaptureButton.js +21 -0
- package/lib/components/screenshot/index.d.ts +2 -0
- package/lib/components/screenshot/index.js +11 -0
- package/lib/components/snapshots/RuntimeSnapshotMenu.d.ts +36 -0
- package/lib/components/snapshots/RuntimeSnapshotMenu.js +169 -0
- package/lib/components/snapshots/index.d.ts +1 -0
- package/lib/components/snapshots/index.js +10 -0
- package/lib/components/snippets/SnippetDialog.d.ts +42 -0
- package/lib/components/snippets/SnippetDialog.js +47 -0
- package/lib/components/snippets/index.d.ts +1 -0
- package/lib/components/snippets/index.js +10 -0
- package/lib/components/storage/ContentsBrowser.d.ts +32 -0
- package/lib/components/storage/ContentsBrowser.js +250 -0
- package/lib/components/storage/ContentsItems.d.ts +58 -0
- package/lib/components/storage/ContentsItems.js +83 -0
- package/lib/components/storage/index.d.ts +2 -0
- package/lib/components/storage/index.js +11 -0
- package/lib/components/students/StudentItemStatus.d.ts +7 -0
- package/lib/components/students/StudentItemStatus.js +49 -0
- package/lib/components/students/index.d.ts +1 -0
- package/lib/components/students/index.js +10 -0
- package/lib/components/subnav/SubNav.d.ts +84 -0
- package/lib/components/subnav/SubNav.js +270 -0
- package/lib/components/subnav/index.d.ts +1 -0
- package/lib/components/subnav/index.js +10 -0
- package/lib/components/tables/DataTable.d.ts +5 -0
- package/lib/components/tables/DataTable.js +24 -0
- package/lib/components/tables/index.d.ts +1 -0
- package/lib/components/tables/index.js +10 -0
- package/lib/components/text-reveal/TextRevealAnimation.d.ts +6 -0
- package/lib/components/text-reveal/TextRevealAnimation.js +55 -0
- package/lib/components/text-reveal/index.d.ts +1 -0
- package/lib/components/text-reveal/index.js +10 -0
- package/lib/components/text-reveal/useTextRevealAnimationLines.d.ts +4 -0
- package/lib/components/text-reveal/useTextRevealAnimationLines.js +52 -0
- package/lib/components/tokens/SpaceVariantToken.d.ts +5 -0
- package/lib/components/tokens/SpaceVariantToken.js +25 -0
- package/lib/components/tokens/index.d.ts +1 -0
- package/lib/components/tokens/index.js +10 -0
- package/lib/components/toolbars/AssignmentEditorToolbar.d.ts +4 -0
- package/lib/components/toolbars/AssignmentEditorToolbar.js +23 -0
- package/lib/components/toolbars/DocumentEditorToolbar.d.ts +2 -0
- package/lib/components/toolbars/DocumentEditorToolbar.js +17 -0
- package/lib/components/toolbars/NotebookEditorToolbar.d.ts +29 -0
- package/lib/components/toolbars/NotebookEditorToolbar.js +35 -0
- package/lib/components/toolbars/index.d.ts +3 -0
- package/lib/components/toolbars/index.js +12 -0
- package/lib/components/users/PeerIndicator.d.ts +18 -0
- package/lib/components/users/PeerIndicator.js +105 -0
- package/lib/components/users/index.d.ts +1 -0
- package/lib/components/users/index.js +10 -0
- package/lib/config/Configuration.d.ts +111 -0
- package/lib/config/Configuration.js +30 -0
- package/lib/config/index.d.ts +2 -0
- package/lib/config/index.js +11 -0
- package/lib/config/integrations/Loom.d.ts +1 -0
- package/lib/config/integrations/Loom.js +21 -0
- package/lib/config/integrations/index.d.ts +1 -0
- package/lib/config/integrations/index.js +10 -0
- package/lib/hooks/assets/OutputshotPlaceholders.d.ts +19 -0
- package/lib/hooks/assets/OutputshotPlaceholders.js +28 -0
- package/lib/hooks/assets/index.d.ts +1 -0
- package/lib/hooks/assets/index.js +10 -0
- package/lib/hooks/index.d.ts +28 -0
- package/lib/hooks/index.js +38 -0
- package/lib/hooks/layouts/LayoutBackdrop.d.ts +2 -0
- package/lib/hooks/layouts/LayoutBackdrop.js +35 -0
- package/lib/hooks/layouts/LayoutScreenshot.d.ts +2 -0
- package/lib/hooks/layouts/LayoutScreenshot.js +48 -0
- package/lib/hooks/layouts/index.d.ts +2 -0
- package/lib/hooks/layouts/index.js +11 -0
- package/lib/hooks/useAIAgents.d.ts +13 -0
- package/lib/hooks/useAIAgents.js +77 -0
- package/lib/hooks/useAuthorization.d.ts +19 -0
- package/lib/hooks/useAuthorization.js +130 -0
- package/lib/hooks/useBackdrop.d.ts +28 -0
- package/lib/hooks/useBackdrop.js +105 -0
- package/lib/hooks/useBackdropJupyterLab.d.ts +15 -0
- package/lib/hooks/useBackdropJupyterLab.js +56 -0
- package/lib/hooks/useCache.d.ts +306 -0
- package/lib/hooks/useCache.js +3103 -0
- package/lib/hooks/useCellOutputshot.d.ts +4 -0
- package/lib/hooks/useCellOutputshot.js +33 -0
- package/lib/hooks/useContainsFocus.d.ts +9 -0
- package/lib/hooks/useContainsFocus.js +48 -0
- package/lib/hooks/useError.d.ts +9 -0
- package/lib/hooks/useError.js +31 -0
- package/lib/hooks/useExternalScript.d.ts +2 -0
- package/lib/hooks/useExternalScript.js +22 -0
- package/lib/hooks/useFocusTrap.d.ts +30 -0
- package/lib/hooks/useFocusTrap.js +53 -0
- package/lib/hooks/useIAM.d.ts +14 -0
- package/lib/hooks/useIAM.js +98 -0
- package/lib/hooks/useId.d.ts +19 -0
- package/lib/hooks/useId.js +105 -0
- package/lib/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
- package/lib/hooks/useIsomorphicLayoutEffect.js +16 -0
- package/lib/hooks/useJupyterLabTheme.d.ts +6 -0
- package/lib/hooks/useJupyterLabTheme.js +29 -0
- package/lib/hooks/useKeyboardEscape.d.ts +1 -0
- package/lib/hooks/useKeyboardEscape.js +23 -0
- package/lib/hooks/useLocationHandles.d.ts +10 -0
- package/lib/hooks/useLocationHandles.js +27 -0
- package/lib/hooks/useNavigate.d.ts +2 -0
- package/lib/hooks/useNavigate.js +29 -0
- package/lib/hooks/useNotebookAIAgent.d.ts +8 -0
- package/lib/hooks/useNotebookAIAgent.js +59 -0
- package/lib/hooks/useOnClickOutside.d.ts +1 -0
- package/lib/hooks/useOnClickOutside.js +34 -0
- package/lib/hooks/useRef.d.ts +10 -0
- package/lib/hooks/useRef.js +22 -0
- package/lib/hooks/useRun.d.ts +21 -0
- package/lib/hooks/useRun.js +85 -0
- package/lib/hooks/useRuntimes.d.ts +5 -0
- package/lib/hooks/useRuntimes.js +39 -0
- package/lib/hooks/useScreenshot.d.ts +21 -0
- package/lib/hooks/useScreenshot.js +65 -0
- package/lib/hooks/useToast.d.ts +42 -0
- package/lib/hooks/useToast.js +143 -0
- package/lib/hooks/useUpload.d.ts +7 -0
- package/lib/hooks/useUpload.js +51 -0
- package/lib/hooks/useUser.d.ts +3 -0
- package/lib/hooks/useUser.js +22 -0
- package/lib/hooks/useVisibilityObserver.d.ts +5 -0
- package/lib/hooks/useVisibilityObserver.js +47 -0
- package/lib/hooks/useWindowSize.d.ts +21 -0
- package/lib/hooks/useWindowSize.js +80 -0
- package/lib/i18n/Labels.d.ts +1 -0
- package/lib/i18n/Labels.js +10 -0
- package/lib/i18n/index.d.ts +1 -0
- package/lib/i18n/index.js +10 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +6 -0
- package/lib/main.d.ts +1 -0
- package/lib/main.js +4 -0
- package/lib/mocks/components/FlashMock.d.ts +2 -0
- package/lib/mocks/components/FlashMock.js +18 -0
- package/lib/mocks/components/index.d.ts +1 -0
- package/lib/mocks/components/index.js +10 -0
- package/lib/mocks/hooks/index.d.ts +1 -0
- package/lib/mocks/hooks/index.js +10 -0
- package/lib/mocks/hooks/rests/index.d.ts +1 -0
- package/lib/mocks/hooks/rests/index.js +10 -0
- package/lib/mocks/hooks/rests/rests.d.ts +22 -0
- package/lib/mocks/hooks/rests/rests.js +37 -0
- package/lib/mocks/hooks/useRunMock.d.ts +6 -0
- package/lib/mocks/hooks/useRunMock.js +83 -0
- package/lib/mocks/index.d.ts +4 -0
- package/lib/mocks/index.js +14 -0
- package/lib/mocks/jupyter/index.d.ts +1 -0
- package/lib/mocks/jupyter/index.js +10 -0
- package/lib/mocks/models/CodeBlockMock.d.ts +1 -0
- package/lib/mocks/models/CodeBlockMock.js +10 -0
- package/lib/mocks/models/CodelineMock.d.ts +1 -0
- package/lib/mocks/models/CodelineMock.js +10 -0
- package/lib/mocks/models/CourseMock.d.ts +6 -0
- package/lib/mocks/models/CourseMock.js +34 -0
- package/lib/mocks/models/InviteMock.d.ts +6 -0
- package/lib/mocks/models/InviteMock.js +27 -0
- package/lib/mocks/models/JupyterLabUserMock.d.ts +2 -0
- package/lib/mocks/models/JupyterLabUserMock.js +17 -0
- package/lib/mocks/models/OrganisationMock.d.ts +5 -0
- package/lib/mocks/models/OrganisationMock.js +24 -0
- package/lib/mocks/models/SchoolMock.d.ts +6 -0
- package/lib/mocks/models/SchoolMock.js +25 -0
- package/lib/mocks/models/SpaceMock.d.ts +6 -0
- package/lib/mocks/models/SpaceMock.js +30 -0
- package/lib/mocks/models/TeamMock.d.ts +5 -0
- package/lib/mocks/models/TeamMock.js +26 -0
- package/lib/mocks/models/UserMock.d.ts +2 -0
- package/lib/mocks/models/UserMock.js +34 -0
- package/lib/mocks/models/index.d.ts +9 -0
- package/lib/mocks/models/index.js +18 -0
- package/lib/mocks/views/ActionMenuMock.d.ts +5 -0
- package/lib/mocks/views/ActionMenuMock.js +17 -0
- package/lib/mocks/views/ChartMock.d.ts +5 -0
- package/lib/mocks/views/ChartMock.js +20 -0
- package/lib/mocks/views/ChartMockOptions.d.ts +92 -0
- package/lib/mocks/views/ChartMockOptions.js +107 -0
- package/lib/mocks/views/DashboardMock.d.ts +2 -0
- package/lib/mocks/views/DashboardMock.js +123 -0
- package/lib/mocks/views/FormMock.d.ts +5 -0
- package/lib/mocks/views/FormMock.js +33 -0
- package/lib/mocks/views/TableMock.d.ts +5 -0
- package/lib/mocks/views/TableMock.js +160 -0
- package/lib/mocks/views/WipMock.d.ts +5 -0
- package/lib/mocks/views/WipMock.js +17 -0
- package/lib/mocks/views/index.d.ts +7 -0
- package/lib/mocks/views/index.js +16 -0
- package/lib/models/AIAgent.d.ts +17 -0
- package/lib/models/AIAgent.js +5 -0
- package/lib/models/Account.d.ts +4 -0
- package/lib/models/Account.js +5 -0
- package/lib/models/Assignment.d.ts +7 -0
- package/lib/models/Assignment.js +5 -0
- package/lib/models/Base.d.ts +16 -0
- package/lib/models/Base.js +5 -0
- package/lib/models/Cell.d.ts +8 -0
- package/lib/models/Cell.js +5 -0
- package/lib/models/CodeBlock.d.ts +10 -0
- package/lib/models/CodeBlock.js +5 -0
- package/lib/models/CodefeedBlocks.d.ts +7 -0
- package/lib/models/CodefeedBlocks.js +5 -0
- package/lib/models/Contact.d.ts +73 -0
- package/lib/models/Contact.js +95 -0
- package/lib/models/ContactEvent.d.ts +10 -0
- package/lib/models/ContactEvent.js +19 -0
- package/lib/models/ContactIAMProvider.d.ts +12 -0
- package/lib/models/ContactIAMProvider.js +20 -0
- package/lib/models/ContactTags.d.ts +23 -0
- package/lib/models/ContactTags.js +73 -0
- package/lib/models/Content.d.ts +5 -0
- package/lib/models/Content.js +5 -0
- package/lib/models/Course.d.ts +17 -0
- package/lib/models/Course.js +5 -0
- package/lib/models/Credits.d.ts +76 -0
- package/lib/models/Credits.js +16 -0
- package/lib/models/Dataset.d.ts +16 -0
- package/lib/models/Dataset.js +5 -0
- package/lib/models/Datasource.d.ts +11 -0
- package/lib/models/Datasource.js +19 -0
- package/lib/models/Dean.d.ts +3 -0
- package/lib/models/Dean.js +5 -0
- package/lib/models/Document.d.ts +8 -0
- package/lib/models/Document.js +5 -0
- package/lib/models/Environment.d.ts +82 -0
- package/lib/models/Environment.js +5 -0
- package/lib/models/Errors.d.ts +6 -0
- package/lib/models/Errors.js +18 -0
- package/lib/models/Exercise.d.ts +16 -0
- package/lib/models/Exercise.js +5 -0
- package/lib/models/GrowthKPI.d.ts +5 -0
- package/lib/models/GrowthKPI.js +14 -0
- package/lib/models/IAMProviderLinked.d.ts +9 -0
- package/lib/models/IAMProviderLinked.js +13 -0
- package/lib/models/IAMProviderPost.d.ts +8 -0
- package/lib/models/IAMProviderPost.js +22 -0
- package/lib/models/IAMProviderUsers.d.ts +49 -0
- package/lib/models/IAMProviderUsers.js +34 -0
- package/lib/models/IAMProvidersSpecs.d.ts +22 -0
- package/lib/models/IAMProvidersSpecs.js +72 -0
- package/lib/models/IAMToken.d.ts +11 -0
- package/lib/models/IAMToken.js +19 -0
- package/lib/models/Inbound.d.ts +25 -0
- package/lib/models/Inbound.js +34 -0
- package/lib/models/Instructor.d.ts +3 -0
- package/lib/models/Instructor.js +5 -0
- package/lib/models/Invite.d.ts +14 -0
- package/lib/models/Invite.js +24 -0
- package/lib/models/Item.d.ts +20 -0
- package/lib/models/Item.js +5 -0
- package/lib/models/ItemType.d.ts +2 -0
- package/lib/models/ItemType.js +5 -0
- package/lib/models/LandingRoles.d.ts +3 -0
- package/lib/models/LandingRoles.js +32 -0
- package/lib/models/Lesson.d.ts +5 -0
- package/lib/models/Lesson.js +5 -0
- package/lib/models/Library.d.ts +10 -0
- package/lib/models/Library.js +5 -0
- package/lib/models/Member.d.ts +3 -0
- package/lib/models/Member.js +5 -0
- package/lib/models/Notebook.d.ts +11 -0
- package/lib/models/Notebook.js +5 -0
- package/lib/models/Organization.d.ts +27 -0
- package/lib/models/Organization.js +41 -0
- package/lib/models/OrganizationMember.d.ts +6 -0
- package/lib/models/OrganizationMember.js +5 -0
- package/lib/models/Outbound.d.ts +41 -0
- package/lib/models/Outbound.js +50 -0
- package/lib/models/Page.d.ts +36 -0
- package/lib/models/Page.js +23 -0
- package/lib/models/PageTag.d.ts +19 -0
- package/lib/models/PageTag.js +26 -0
- package/lib/models/Profile.d.ts +1 -0
- package/lib/models/Profile.js +5 -0
- package/lib/models/Role.d.ts +9 -0
- package/lib/models/Role.js +5 -0
- package/lib/models/RolesOrganization.d.ts +9 -0
- package/lib/models/RolesOrganization.js +63 -0
- package/lib/models/RolesPlatform.d.ts +16 -0
- package/lib/models/RolesPlatform.js +147 -0
- package/lib/models/RolesTeam.d.ts +7 -0
- package/lib/models/RolesTeam.js +39 -0
- package/lib/models/Runtime.d.ts +65 -0
- package/lib/models/Runtime.js +16 -0
- package/lib/models/RuntimeSnapshot.d.ts +92 -0
- package/lib/models/RuntimeSnapshot.js +13 -0
- package/lib/models/School.d.ts +11 -0
- package/lib/models/School.js +5 -0
- package/lib/models/Secret.d.ts +10 -0
- package/lib/models/Secret.js +18 -0
- package/lib/models/Space.d.ts +34 -0
- package/lib/models/Space.js +39 -0
- package/lib/models/SpaceItem.d.ts +10 -0
- package/lib/models/SpaceItem.js +5 -0
- package/lib/models/SpaceMember.d.ts +6 -0
- package/lib/models/SpaceMember.js +5 -0
- package/lib/models/Student.d.ts +6 -0
- package/lib/models/Student.js +5 -0
- package/lib/models/StudentItem.d.ts +21 -0
- package/lib/models/StudentItem.js +5 -0
- package/lib/models/Survey.d.ts +20 -0
- package/lib/models/Survey.js +19 -0
- package/lib/models/Team.d.ts +22 -0
- package/lib/models/Team.js +37 -0
- package/lib/models/TeamMember.d.ts +6 -0
- package/lib/models/TeamMember.js +5 -0
- package/lib/models/URN.d.ts +63 -0
- package/lib/models/URN.js +45 -0
- package/lib/models/Usage.d.ts +46 -0
- package/lib/models/Usage.js +21 -0
- package/lib/models/User.d.ts +71 -0
- package/lib/models/User.js +103 -0
- package/lib/models/UserEvent.d.ts +10 -0
- package/lib/models/UserEvent.js +19 -0
- package/lib/models/UserOnboarding.d.ts +14 -0
- package/lib/models/UserOnboarding.js +24 -0
- package/lib/models/UserSettings.d.ts +16 -0
- package/lib/models/UserSettings.js +32 -0
- package/lib/models/WaitingListFormData.d.ts +6 -0
- package/lib/models/WaitingListFormData.js +5 -0
- package/lib/models/index.d.ts +65 -0
- package/lib/models/index.js +74 -0
- package/lib/routes/Routes.d.ts +3 -0
- package/lib/routes/Routes.js +12 -0
- package/lib/routes/index.d.ts +1 -0
- package/lib/routes/index.js +10 -0
- package/lib/state/State.d.ts +33 -0
- package/lib/state/State.js +49 -0
- package/lib/state/index.d.ts +3 -0
- package/lib/state/index.js +12 -0
- package/lib/state/storage/IAMStorage.d.ts +33 -0
- package/lib/state/storage/IAMStorage.js +81 -0
- package/lib/state/storage/index.d.ts +1 -0
- package/lib/state/storage/index.js +10 -0
- package/lib/state/substates/AIAgentState.d.ts +11 -0
- package/lib/state/substates/AIAgentState.js +45 -0
- package/lib/state/substates/CellState.d.ts +12 -0
- package/lib/state/substates/CellState.js +26 -0
- package/lib/state/substates/CoreState.d.ts +25 -0
- package/lib/state/substates/CoreState.js +93 -0
- package/lib/state/substates/DatasourceState.d.ts +11 -0
- package/lib/state/substates/DatasourceState.js +21 -0
- package/lib/state/substates/DocumentState.d.ts +10 -0
- package/lib/state/substates/DocumentState.js +19 -0
- package/lib/state/substates/GradeState.d.ts +10 -0
- package/lib/state/substates/GradeState.js +19 -0
- package/lib/state/substates/IAMState.d.ts +75 -0
- package/lib/state/substates/IAMState.js +294 -0
- package/lib/state/substates/JupyterLabState.d.ts +16 -0
- package/lib/state/substates/JupyterLabState.js +22 -0
- package/lib/state/substates/LayoutState.d.ts +62 -0
- package/lib/state/substates/LayoutState.js +74 -0
- package/lib/state/substates/NbformatState.d.ts +13 -0
- package/lib/state/substates/NbformatState.js +21 -0
- package/lib/state/substates/OrganizationState.d.ts +11 -0
- package/lib/state/substates/OrganizationState.js +21 -0
- package/lib/state/substates/RuntimesState.d.ts +88 -0
- package/lib/state/substates/RuntimesState.js +183 -0
- package/lib/state/substates/SpaceState.d.ts +11 -0
- package/lib/state/substates/SpaceState.js +21 -0
- package/lib/state/substates/SurveysState.d.ts +14 -0
- package/lib/state/substates/SurveysState.js +103 -0
- package/lib/state/substates/TeamState.d.ts +11 -0
- package/lib/state/substates/TeamState.js +22 -0
- package/lib/state/substates/index.d.ts +15 -0
- package/lib/state/substates/index.js +24 -0
- package/lib/test-setup.d.ts +1 -0
- package/lib/test-setup.js +7 -0
- package/lib/theme/DatalayerTheme.d.ts +37 -0
- package/lib/theme/DatalayerTheme.js +67 -0
- package/lib/theme/DatalayerThemeProvider.d.ts +17 -0
- package/lib/theme/DatalayerThemeProvider.js +74 -0
- package/lib/theme/Palette.d.ts +5 -0
- package/lib/theme/Palette.js +27 -0
- package/lib/theme/index.d.ts +3 -0
- package/lib/theme/index.js +12 -0
- package/lib/utils/Array.d.ts +2 -0
- package/lib/utils/Array.js +21 -0
- package/lib/utils/Avatar.d.ts +9 -0
- package/lib/utils/Avatar.js +39 -0
- package/lib/utils/Browser.d.ts +3 -0
- package/lib/utils/Browser.js +68 -0
- package/lib/utils/Cells.d.ts +2 -0
- package/lib/utils/Cells.js +28 -0
- package/lib/utils/Cookie.d.ts +12 -0
- package/lib/utils/Cookie.js +53 -0
- package/lib/utils/Date.d.ts +2 -0
- package/lib/utils/Date.js +65 -0
- package/lib/utils/Download.d.ts +3 -0
- package/lib/utils/Download.js +53 -0
- package/lib/utils/DownloadFile.d.ts +10 -0
- package/lib/utils/DownloadFile.js +41 -0
- package/lib/utils/Env.d.ts +1 -0
- package/lib/utils/Env.js +12 -0
- package/lib/utils/File.d.ts +7 -0
- package/lib/utils/File.js +21 -0
- package/lib/utils/Format.d.ts +17 -0
- package/lib/utils/Format.js +54 -0
- package/lib/utils/Ids.d.ts +2 -0
- package/lib/utils/Ids.js +17 -0
- package/lib/utils/Jupyter.d.ts +1 -0
- package/lib/utils/Jupyter.js +17 -0
- package/lib/utils/Lazy.d.ts +8 -0
- package/lib/utils/Lazy.js +29 -0
- package/lib/utils/Msc.d.ts +16 -0
- package/lib/utils/Msc.js +28 -0
- package/lib/utils/Name.d.ts +7 -0
- package/lib/utils/Name.js +39 -0
- package/lib/utils/Notebook.d.ts +19 -0
- package/lib/utils/Notebook.js +37 -0
- package/lib/utils/Number.d.ts +1 -0
- package/lib/utils/Number.js +26 -0
- package/lib/utils/Plots.d.ts +16 -0
- package/lib/utils/Plots.js +56 -0
- package/lib/utils/Random.d.ts +1 -0
- package/lib/utils/Random.js +12 -0
- package/lib/utils/Screenshot.d.ts +1 -0
- package/lib/utils/Screenshot.js +32 -0
- package/lib/utils/Scroll.d.ts +2 -0
- package/lib/utils/Scroll.js +36 -0
- package/lib/utils/Sleep.d.ts +2 -0
- package/lib/utils/Sleep.js +13 -0
- package/lib/utils/Snapshot.d.ts +7 -0
- package/lib/utils/Snapshot.js +26 -0
- package/lib/utils/String.d.ts +1 -0
- package/lib/utils/String.js +18 -0
- package/lib/utils/Uri.d.ts +2 -0
- package/lib/utils/Uri.js +31 -0
- package/lib/utils/Validator.d.ts +12 -0
- package/lib/utils/Validator.js +49 -0
- package/lib/utils/WithSuspense.d.ts +2 -0
- package/lib/utils/WithSuspense.js +26 -0
- package/lib/utils/index.d.ts +26 -0
- package/lib/utils/index.js +36 -0
- package/package.json +43 -4
- package/style/base.css +0 -5
- package/style/index.css +0 -7
- package/style/index.js +0 -7
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/*
|
|
6
|
+
* Copyright (c) 2021-2024 Datalayer, Inc.
|
|
7
|
+
*
|
|
8
|
+
* Datalayer License
|
|
9
|
+
*/
|
|
10
|
+
import { useEffect } from 'react';
|
|
11
|
+
import { useAIAgentStore } from '../state';
|
|
12
|
+
import { useAIAgents } from './useAIAgents';
|
|
13
|
+
/**
|
|
14
|
+
* Get the document AI Agent if any.
|
|
15
|
+
*
|
|
16
|
+
* It handles checking the AI Agent is alive so it should only be use once per document.
|
|
17
|
+
*/
|
|
18
|
+
export function useNotebookAIAgent(notebookId) {
|
|
19
|
+
const { getAIAgent } = useAIAgents();
|
|
20
|
+
const { aiAgents, addAIAgent, deleteAIAgent, updateAIAgent } = useAIAgentStore();
|
|
21
|
+
// Check AI Agent is alive.
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
let abortController;
|
|
24
|
+
const refreshAIAgent = async () => {
|
|
25
|
+
abortController = new AbortController();
|
|
26
|
+
try {
|
|
27
|
+
const response = await getAIAgent(notebookId, { signal: abortController.signal });
|
|
28
|
+
if (!response.success) {
|
|
29
|
+
deleteAIAgent(notebookId);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const currentAgent = aiAgents.find(agent => agent.documentId === notebookId);
|
|
33
|
+
const runtimeId = response.agent.runtime?.id;
|
|
34
|
+
if (currentAgent) {
|
|
35
|
+
if (currentAgent.runtimeId !== runtimeId) {
|
|
36
|
+
updateAIAgent(notebookId, runtimeId);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
addAIAgent({
|
|
41
|
+
documentId: notebookId,
|
|
42
|
+
runtimeId,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch (r) {
|
|
47
|
+
deleteAIAgent(notebookId);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const refreshInterval = setInterval(refreshAIAgent, 60_000);
|
|
51
|
+
return () => {
|
|
52
|
+
abortController?.abort('Component unmounted');
|
|
53
|
+
clearInterval(refreshInterval);
|
|
54
|
+
};
|
|
55
|
+
}, [aiAgents, notebookId]);
|
|
56
|
+
const aiAgent = aiAgents.find(aiAgent => aiAgent.documentId === notebookId);
|
|
57
|
+
return aiAgent;
|
|
58
|
+
}
|
|
59
|
+
export default useNotebookAIAgent;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useOnClickOutside(ref: any, handler: any): void;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/*
|
|
6
|
+
* Copyright (c) 2021-2024 Datalayer, Inc.
|
|
7
|
+
*
|
|
8
|
+
* Datalayer License
|
|
9
|
+
*/
|
|
10
|
+
import { useEffect } from 'react';
|
|
11
|
+
export function useOnClickOutside(ref, handler) {
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
const listener = event => {
|
|
14
|
+
// Do nothing if clicking ref's element or descendent elements
|
|
15
|
+
if (!ref.current || ref.current.contains(event.target)) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
handler(event);
|
|
19
|
+
};
|
|
20
|
+
document.addEventListener('mousedown', listener);
|
|
21
|
+
document.addEventListener('touchstart', listener, { passive: true });
|
|
22
|
+
return () => {
|
|
23
|
+
document.removeEventListener('mousedown', listener);
|
|
24
|
+
document.removeEventListener('touchstart', listener);
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
// Add ref and handler to effect dependencies
|
|
28
|
+
// It's worth noting that because passed in handler is a new ...
|
|
29
|
+
// ... function on every render that will cause this effect ...
|
|
30
|
+
// ... callback/cleanup to run every render. It's not a big deal ...
|
|
31
|
+
// ... but to optimize you can wrap handler in useCallback before ...
|
|
32
|
+
// ... passing it into this hook.
|
|
33
|
+
[ref, handler]);
|
|
34
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* There are some situations where we only want to create a new ref if one is not provided to a component
|
|
4
|
+
* or hook as a prop. However, due to the `rules-of-hooks`, we cannot conditionally make a call to `React.useRef`
|
|
5
|
+
* only in the situations where the ref is not provided as a prop.
|
|
6
|
+
* This hook aims to encapsulate that logic, so the consumer doesn't need to be concerned with violating `rules-of-hooks`.
|
|
7
|
+
* @param providedRef The ref to use - if undefined, will use the ref from a call to React.useRef
|
|
8
|
+
* @type TRef The type of the RefObject which should be created.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useProvidedRefOrCreate<TRef>(providedRef?: React.RefObject<TRef>): React.RefObject<TRef>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/*
|
|
6
|
+
* Copyright (c) 2021-2024 Datalayer, Inc.
|
|
7
|
+
*
|
|
8
|
+
* Datalayer License
|
|
9
|
+
*/
|
|
10
|
+
import { useRef } from 'react';
|
|
11
|
+
/**
|
|
12
|
+
* There are some situations where we only want to create a new ref if one is not provided to a component
|
|
13
|
+
* or hook as a prop. However, due to the `rules-of-hooks`, we cannot conditionally make a call to `React.useRef`
|
|
14
|
+
* only in the situations where the ref is not provided as a prop.
|
|
15
|
+
* This hook aims to encapsulate that logic, so the consumer doesn't need to be concerned with violating `rules-of-hooks`.
|
|
16
|
+
* @param providedRef The ref to use - if undefined, will use the ref from a call to React.useRef
|
|
17
|
+
* @type TRef The type of the RefObject which should be created.
|
|
18
|
+
*/
|
|
19
|
+
export function useProvidedRefOrCreate(providedRef) {
|
|
20
|
+
const createdRef = useRef(null);
|
|
21
|
+
return providedRef ?? createdRef;
|
|
22
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { IRequestRunAPIOptions } from '../api';
|
|
2
|
+
export type IRunRequestProps = {
|
|
3
|
+
/**
|
|
4
|
+
* React router login route
|
|
5
|
+
*
|
|
6
|
+
* @default '/login'
|
|
7
|
+
*/
|
|
8
|
+
loginRoute?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Notify user through toast on errors.
|
|
11
|
+
*
|
|
12
|
+
* @default true
|
|
13
|
+
*/
|
|
14
|
+
notifyOnError?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export interface RunRequest extends IRunRequestProps, IRequestRunAPIOptions {
|
|
17
|
+
}
|
|
18
|
+
export declare function useRun(props?: IRunRequestProps): {
|
|
19
|
+
requestRun: <T = any>(request: RunRequest) => Promise<T>;
|
|
20
|
+
};
|
|
21
|
+
export default useRun;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/*
|
|
6
|
+
* Copyright (c) 2021-2024 Datalayer, Inc.
|
|
7
|
+
*
|
|
8
|
+
* Datalayer License
|
|
9
|
+
*/
|
|
10
|
+
import { useLocation } from 'react-router-dom';
|
|
11
|
+
import { useNavigate } from './useNavigate';
|
|
12
|
+
import { useToast } from './useToast';
|
|
13
|
+
import { useRunMock } from './../mocks';
|
|
14
|
+
import { useIAMStore, useCoreStore } from '../state';
|
|
15
|
+
import { requestRunAPI } from '../api';
|
|
16
|
+
export function useRun(props = {}) {
|
|
17
|
+
const { loginRoute = '/login', notifyOnError = true } = props;
|
|
18
|
+
const location = useLocation();
|
|
19
|
+
const coreStore = useCoreStore();
|
|
20
|
+
// Don't remove === true for the test, otherwise it will always be true???
|
|
21
|
+
if (coreStore.configuration.useMock === true) {
|
|
22
|
+
return useRunMock();
|
|
23
|
+
}
|
|
24
|
+
const { enqueueToast } = useToast();
|
|
25
|
+
const iamStore = useIAMStore();
|
|
26
|
+
const navigate = useNavigate();
|
|
27
|
+
const requestRun = async (request) => {
|
|
28
|
+
const { loginRoute: loginRoute_ = loginRoute, notifyOnError: notifyOnError_ = notifyOnError, ...apiRequest } = request;
|
|
29
|
+
const token = apiRequest.token ?? iamStore.token;
|
|
30
|
+
return requestRunAPI({
|
|
31
|
+
...apiRequest,
|
|
32
|
+
token,
|
|
33
|
+
})
|
|
34
|
+
.then(resp => {
|
|
35
|
+
return resp;
|
|
36
|
+
})
|
|
37
|
+
.catch(error => {
|
|
38
|
+
if (error.name === 'RunResponseError') {
|
|
39
|
+
const responseError = error;
|
|
40
|
+
if (responseError.response.status === 401) {
|
|
41
|
+
console.log('Datalayer RUN sent a 401 return code.');
|
|
42
|
+
if (location.pathname !== loginRoute_) {
|
|
43
|
+
iamStore.logout();
|
|
44
|
+
navigate(loginRoute_);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
if (notifyOnError_) {
|
|
49
|
+
if (responseError.warnings) {
|
|
50
|
+
responseError.warnings.forEach(warning => enqueueToast(`${warning}`, { variant: 'warning' }));
|
|
51
|
+
}
|
|
52
|
+
if (responseError.errors) {
|
|
53
|
+
responseError.errors.forEach(error => enqueueToast(`${error}`, { variant: 'error' }));
|
|
54
|
+
}
|
|
55
|
+
if (responseError.message) {
|
|
56
|
+
enqueueToast(`${responseError.message}`, { variant: 'error' });
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
enqueueToast(`API Error`, { variant: 'error' });
|
|
60
|
+
}
|
|
61
|
+
if (responseError.exceptionMessage) {
|
|
62
|
+
enqueueToast(`${responseError.exceptionMessage}`, { variant: 'error' });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
const response = {
|
|
67
|
+
sucess: false,
|
|
68
|
+
message: responseError.message,
|
|
69
|
+
errors: responseError.errors,
|
|
70
|
+
};
|
|
71
|
+
return response;
|
|
72
|
+
}
|
|
73
|
+
// The error is not an RunResponseError...log it and throw it.
|
|
74
|
+
console.log('Error', error);
|
|
75
|
+
if (notifyOnError_) {
|
|
76
|
+
enqueueToast(`${error.message}`, { variant: 'error' });
|
|
77
|
+
}
|
|
78
|
+
throw error;
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
return {
|
|
82
|
+
requestRun
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export default useRun;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/*
|
|
6
|
+
* Copyright (c) 2021-2024 Datalayer, Inc.
|
|
7
|
+
*
|
|
8
|
+
* Datalayer License
|
|
9
|
+
*/
|
|
10
|
+
import { requestJupyterKernelsExtension } from '../api';
|
|
11
|
+
export const useRuntimes = () => {
|
|
12
|
+
// Folder Mounting ----------------------------------------------------------
|
|
13
|
+
const mountLocalFolder = (kernelId) => {
|
|
14
|
+
requestJupyterKernelsExtension(`jump/${kernelId}`)
|
|
15
|
+
.then(data => {
|
|
16
|
+
// console.log('--- Mount Local Folder', data);
|
|
17
|
+
})
|
|
18
|
+
.catch(reason => {
|
|
19
|
+
console.error(`Error while accessing the jupyter server jupyter_kernels extension.\n${reason}`);
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
const unmountLocalFolder = (kernelId) => {
|
|
23
|
+
requestJupyterKernelsExtension(`jump/${kernelId}`, {
|
|
24
|
+
method: 'DELETE'
|
|
25
|
+
})
|
|
26
|
+
.then(data => {
|
|
27
|
+
// console.log('--- Unmount Local Folder', data);
|
|
28
|
+
})
|
|
29
|
+
.catch(reason => {
|
|
30
|
+
console.error(`Error while accessing the jupyter server jupyter_kernels extension.\n${reason}`);
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
// --------------------------------------------------------------------------
|
|
34
|
+
return {
|
|
35
|
+
mountLocalFolder,
|
|
36
|
+
unmountLocalFolder
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
export default useRuntimes;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
type ScreenshotContextType = {
|
|
2
|
+
closeScreenshot: () => void;
|
|
3
|
+
displayScreenshot: (nextScreenshot: any) => void;
|
|
4
|
+
};
|
|
5
|
+
export declare const ScreenshotContext: import("react").Context<ScreenshotContextType>;
|
|
6
|
+
export declare function useScreenshot(): ScreenshotContextType;
|
|
7
|
+
/**
|
|
8
|
+
* The type for the Screenshot context provider.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ScreenshotContextProvider: import("react").Provider<ScreenshotContextType>;
|
|
11
|
+
type IScreenshotProviderProps = {
|
|
12
|
+
children?: JSX.Element | JSX.Element[];
|
|
13
|
+
zIndex?: number;
|
|
14
|
+
disableDarken?: boolean;
|
|
15
|
+
screenshotSurface?: (qfds: any) => JSX.Element;
|
|
16
|
+
};
|
|
17
|
+
export declare function ScreenshotProvider(props: IScreenshotProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export declare namespace ScreenshotProvider {
|
|
19
|
+
var defaultProps: IScreenshotProviderProps;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } 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) 2021-2024 Datalayer, Inc.
|
|
8
|
+
*
|
|
9
|
+
* Datalayer License
|
|
10
|
+
*/
|
|
11
|
+
import { createContext, useState, useContext } from 'react';
|
|
12
|
+
import { LayoutScreenshot } from "./layouts";
|
|
13
|
+
export const ScreenshotContext = createContext({
|
|
14
|
+
closeScreenshot: () => { },
|
|
15
|
+
displayScreenshot: (nextScreenshot) => { },
|
|
16
|
+
});
|
|
17
|
+
export function useScreenshot() {
|
|
18
|
+
const context = useContext(ScreenshotContext);
|
|
19
|
+
if (!context)
|
|
20
|
+
throw new Error('useContext must be inside a provider with a value.');
|
|
21
|
+
return context;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The type for the Screenshot context provider.
|
|
25
|
+
*/
|
|
26
|
+
export const ScreenshotContextProvider = ScreenshotContext.Provider;
|
|
27
|
+
export function ScreenshotProvider(props) {
|
|
28
|
+
const { children, zIndex, disableDarken, screenshotSurface } = props;
|
|
29
|
+
const defaultScreenshotSurface = {
|
|
30
|
+
position: "fixed",
|
|
31
|
+
top: 0,
|
|
32
|
+
left: 0,
|
|
33
|
+
width: '100%',
|
|
34
|
+
height: '100%',
|
|
35
|
+
display: 'flex',
|
|
36
|
+
alignItems: 'center',
|
|
37
|
+
justifyContent: 'center',
|
|
38
|
+
backgroundColor: disableDarken ? 'initial' : 'rgba(0, 0, 0, 0.5)',
|
|
39
|
+
zIndex,
|
|
40
|
+
};
|
|
41
|
+
const [screenshot, setScreenshot] = useState({
|
|
42
|
+
open: false,
|
|
43
|
+
render: (closeScreenshot) => _jsx(_Fragment, {})
|
|
44
|
+
});
|
|
45
|
+
const displayScreenshot = (nextScreenshot) => {
|
|
46
|
+
setScreenshot({
|
|
47
|
+
open: true,
|
|
48
|
+
render: nextScreenshot
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
const closeScreenshot = () => {
|
|
52
|
+
setScreenshot({
|
|
53
|
+
open: false,
|
|
54
|
+
render: (closeScreenshot) => _jsx(_Fragment, {})
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
return (_jsxs(ScreenshotContextProvider, { value: { closeScreenshot, displayScreenshot }, children: [_jsx(LayoutScreenshot, {}), children, screenshot.open &&
|
|
58
|
+
(screenshotSurface ? (screenshotSurface(screenshot.render(closeScreenshot))) : (_jsx("div", { style: defaultScreenshotSurface, children: screenshot.render(closeScreenshot) })))] }));
|
|
59
|
+
}
|
|
60
|
+
ScreenshotProvider.defaultProps = {
|
|
61
|
+
children: undefined,
|
|
62
|
+
disableScreenshot: false,
|
|
63
|
+
zIndex: 9999,
|
|
64
|
+
screenshotSurface: undefined,
|
|
65
|
+
};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type Id } from 'react-toastify';
|
|
2
|
+
import { Notification } from '@jupyterlab/apputils';
|
|
3
|
+
export type ToastProps = {
|
|
4
|
+
/**
|
|
5
|
+
* List of associated actions
|
|
6
|
+
*/
|
|
7
|
+
actions?: Notification.IAction[];
|
|
8
|
+
/**
|
|
9
|
+
* Autoclosing behavior - false (not closing automatically) or number (time in milliseconds before hiding the notification)
|
|
10
|
+
*/
|
|
11
|
+
autoClose?: number | false;
|
|
12
|
+
/**
|
|
13
|
+
* Notification type
|
|
14
|
+
*/
|
|
15
|
+
variant: 'info' | 'success' | 'warning' | 'error';
|
|
16
|
+
};
|
|
17
|
+
export declare const useToast: () => Readonly<{
|
|
18
|
+
/**
|
|
19
|
+
* Emit a message as a toast.
|
|
20
|
+
*
|
|
21
|
+
* @param message Toast message
|
|
22
|
+
* @param options Toast option
|
|
23
|
+
* @returns Toast id
|
|
24
|
+
*/
|
|
25
|
+
enqueueToast: (message: string, options?: ToastProps) => Id;
|
|
26
|
+
/**
|
|
27
|
+
* Dismiss a toast
|
|
28
|
+
*
|
|
29
|
+
* @param id Toast id
|
|
30
|
+
*/
|
|
31
|
+
dismiss: (id?: Id) => void;
|
|
32
|
+
/**
|
|
33
|
+
* Track the progress of an asynchronous task
|
|
34
|
+
* and display a message depending on the outcome.
|
|
35
|
+
*
|
|
36
|
+
* @param promise Asynchronous task
|
|
37
|
+
* @param options Task progress options
|
|
38
|
+
* @returns Toast id
|
|
39
|
+
*/
|
|
40
|
+
trackAsyncTask: (promise: Promise<any>, options: Notification.IPromiseOptions<any>) => string | Promise<any>;
|
|
41
|
+
}>;
|
|
42
|
+
export default useToast;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } 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) 2021-2024 Datalayer, Inc.
|
|
8
|
+
*
|
|
9
|
+
* Datalayer License
|
|
10
|
+
*/
|
|
11
|
+
import React from 'react';
|
|
12
|
+
import { toast } from 'react-toastify';
|
|
13
|
+
import { Notification } from '@jupyterlab/apputils';
|
|
14
|
+
import { Button } from '@primer/react';
|
|
15
|
+
import { isInsideJupyterLab } from '../utils';
|
|
16
|
+
import { DatalayerThemeProvider } from '../theme';
|
|
17
|
+
const TOAST_POSITION = toast.POSITION.BOTTOM_RIGHT;
|
|
18
|
+
const displayType2Class = {
|
|
19
|
+
accent: 'primary',
|
|
20
|
+
link: 'invisible',
|
|
21
|
+
warn: 'danger',
|
|
22
|
+
default: 'default'
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Create a button with customized callback in a toast
|
|
26
|
+
*/
|
|
27
|
+
function ToastButton({ action, closeToast }) {
|
|
28
|
+
const clickHandler = (event) => {
|
|
29
|
+
action.callback(event);
|
|
30
|
+
if (!event.defaultPrevented) {
|
|
31
|
+
closeToast();
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
return (_jsx(Button, { title: action.caption ?? action.label, onClick: clickHandler, variant: displayType2Class[action.displayType ?? 'default'], size: "small", children: action.label }));
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Helper function to construct the notification content
|
|
38
|
+
*
|
|
39
|
+
* @param message Message to print in the notification
|
|
40
|
+
* @param closeHandler Function closing the notification
|
|
41
|
+
* @param actions Toast actions
|
|
42
|
+
*/
|
|
43
|
+
function createContent(message, closeHandler, actions) {
|
|
44
|
+
return (_jsxs(_Fragment, { children: [_jsx("div", { className: "jp-toast-message", children: message.split('\n').map((part, index) => (_jsxs(React.Fragment, { children: [index > 0 ? _jsx("br", {}) : null, part] }, `part-${index}`))) }), (actions?.length ?? 0) > 0 && (_jsxs("div", { className: "jp-toast-buttonBar", children: [_jsx("div", { className: "jp-toast-spacer" }), actions.map((action, idx) => {
|
|
45
|
+
return (_jsx(DatalayerThemeProvider, { children: _jsx(ToastButton, { action: action, closeToast: closeHandler }, 'button-' + idx) }));
|
|
46
|
+
})] }))] }));
|
|
47
|
+
}
|
|
48
|
+
export const useToast = () => {
|
|
49
|
+
// This CANNOT use React hooks as it is used outside React context.
|
|
50
|
+
const insideJupyterLab = isInsideJupyterLab();
|
|
51
|
+
const enqueueToast = (message, options = { variant: 'info' }) => {
|
|
52
|
+
const { actions, autoClose } = options;
|
|
53
|
+
switch (options.variant) {
|
|
54
|
+
case 'info': {
|
|
55
|
+
return insideJupyterLab
|
|
56
|
+
?
|
|
57
|
+
Notification.info(message, {
|
|
58
|
+
autoClose: autoClose ?? 5000,
|
|
59
|
+
actions
|
|
60
|
+
})
|
|
61
|
+
: toast.info(({ closeToast }) => createContent(message, () => {
|
|
62
|
+
if (closeToast)
|
|
63
|
+
closeToast();
|
|
64
|
+
}, actions), { autoClose, position: TOAST_POSITION });
|
|
65
|
+
}
|
|
66
|
+
case 'success': {
|
|
67
|
+
return insideJupyterLab
|
|
68
|
+
? Notification.success(message, {
|
|
69
|
+
autoClose: autoClose ?? 5000,
|
|
70
|
+
actions
|
|
71
|
+
})
|
|
72
|
+
: toast.success(({ closeToast }) => createContent(message, () => {
|
|
73
|
+
if (closeToast)
|
|
74
|
+
closeToast();
|
|
75
|
+
}, actions), { autoClose, position: TOAST_POSITION });
|
|
76
|
+
}
|
|
77
|
+
case 'warning': {
|
|
78
|
+
return insideJupyterLab
|
|
79
|
+
? Notification.warning(message, {
|
|
80
|
+
autoClose: autoClose ?? false,
|
|
81
|
+
actions
|
|
82
|
+
})
|
|
83
|
+
: toast.warning(({ closeToast }) => createContent(message, () => {
|
|
84
|
+
if (closeToast)
|
|
85
|
+
closeToast();
|
|
86
|
+
}, actions), { autoClose: autoClose ?? false, position: TOAST_POSITION });
|
|
87
|
+
}
|
|
88
|
+
case 'error': {
|
|
89
|
+
return insideJupyterLab
|
|
90
|
+
? Notification.error(message, {
|
|
91
|
+
autoClose: autoClose ?? false,
|
|
92
|
+
actions
|
|
93
|
+
})
|
|
94
|
+
: toast.error(({ closeToast }) => createContent(message, () => {
|
|
95
|
+
if (closeToast)
|
|
96
|
+
closeToast();
|
|
97
|
+
}, actions), { autoClose: autoClose ?? false, position: TOAST_POSITION });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
const trackAsyncTask = (promise, options) => {
|
|
102
|
+
return insideJupyterLab
|
|
103
|
+
? Notification.promise(promise, options)
|
|
104
|
+
: toast.promise(promise, {
|
|
105
|
+
error: { render: options.error.message, ...options.error.options },
|
|
106
|
+
pending: options.pending.message,
|
|
107
|
+
success: { render: options.success.message, ...options.success.options }
|
|
108
|
+
}, {
|
|
109
|
+
position: TOAST_POSITION,
|
|
110
|
+
...options.pending.options
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
return Object.freeze({
|
|
114
|
+
/**
|
|
115
|
+
* Emit a message as a toast.
|
|
116
|
+
*
|
|
117
|
+
* @param message Toast message
|
|
118
|
+
* @param options Toast option
|
|
119
|
+
* @returns Toast id
|
|
120
|
+
*/
|
|
121
|
+
enqueueToast,
|
|
122
|
+
/**
|
|
123
|
+
* Dismiss a toast
|
|
124
|
+
*
|
|
125
|
+
* @param id Toast id
|
|
126
|
+
*/
|
|
127
|
+
dismiss: (id) => {
|
|
128
|
+
insideJupyterLab
|
|
129
|
+
? Notification.dismiss(id)
|
|
130
|
+
: toast.dismiss(id);
|
|
131
|
+
},
|
|
132
|
+
/**
|
|
133
|
+
* Track the progress of an asynchronous task
|
|
134
|
+
* and display a message depending on the outcome.
|
|
135
|
+
*
|
|
136
|
+
* @param promise Asynchronous task
|
|
137
|
+
* @param options Task progress options
|
|
138
|
+
* @returns Toast id
|
|
139
|
+
*/
|
|
140
|
+
trackAsyncTask
|
|
141
|
+
});
|
|
142
|
+
};
|
|
143
|
+
export default useToast;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
/*
|
|
6
|
+
* Copyright (c) 2021-2024 Datalayer, Inc.
|
|
7
|
+
*
|
|
8
|
+
* Datalayer License
|
|
9
|
+
*/
|
|
10
|
+
import { useState } from "react";
|
|
11
|
+
import axios from "axios";
|
|
12
|
+
// import useRun from "./useRun";
|
|
13
|
+
import { useIAMStore } from "../state";
|
|
14
|
+
// TODO reuse useRun hook.
|
|
15
|
+
export const useUploadForm = (url) => {
|
|
16
|
+
const [isSuccess, setIsSuccess] = useState(false);
|
|
17
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
18
|
+
const [progress, setProgress] = useState(0);
|
|
19
|
+
const { token } = useIAMStore();
|
|
20
|
+
// const { requestRun } = useRun();
|
|
21
|
+
const reset = () => {
|
|
22
|
+
setIsSuccess(false);
|
|
23
|
+
setIsLoading(false);
|
|
24
|
+
setProgress(0);
|
|
25
|
+
};
|
|
26
|
+
const uploadAndSubmit = async (formData) => {
|
|
27
|
+
setIsLoading(true);
|
|
28
|
+
const { data } = await axios.post(url, formData, {
|
|
29
|
+
headers: {
|
|
30
|
+
"Content-Type": "multipart/form-data",
|
|
31
|
+
Authorization: `Bearer ${token}`
|
|
32
|
+
},
|
|
33
|
+
onUploadProgress: (progressEvent) => {
|
|
34
|
+
const progress = (progressEvent.loaded / progressEvent.total) * 50;
|
|
35
|
+
setProgress(progress);
|
|
36
|
+
},
|
|
37
|
+
onDownloadProgress: (progressEvent) => {
|
|
38
|
+
const progress = 50 + (progressEvent.loaded / progressEvent.total) * 50;
|
|
39
|
+
setProgress(progress);
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
setProgress(100);
|
|
43
|
+
await new Promise((resolve) => {
|
|
44
|
+
setTimeout(() => resolve("success"), 500);
|
|
45
|
+
});
|
|
46
|
+
setIsSuccess(true);
|
|
47
|
+
setProgress(0);
|
|
48
|
+
return data;
|
|
49
|
+
};
|
|
50
|
+
return { uploadAndSubmit, isSuccess, isLoading, progress, reset };
|
|
51
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
+
* Distributed under the terms of the Modified BSD License.
|
|
4
|
+
*/
|
|
5
|
+
import { useIAMStore } from '../state';
|
|
6
|
+
const LOGIN_HREF = "/login";
|
|
7
|
+
export const useUser = (role) => {
|
|
8
|
+
const { user } = useIAMStore();
|
|
9
|
+
if (role) {
|
|
10
|
+
if (!user?.roles.includes(role.handle)) {
|
|
11
|
+
console.log(`User should have role ${role.handle} - Forcing navigation to login page...`);
|
|
12
|
+
window.location.href = LOGIN_HREF;
|
|
13
|
+
throw new Error(`User should have role ${role.handle}`);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
if (!user) {
|
|
17
|
+
console.log('No user found... Forcing navigation to /login');
|
|
18
|
+
window.location.href = LOGIN_HREF;
|
|
19
|
+
}
|
|
20
|
+
return user;
|
|
21
|
+
};
|
|
22
|
+
export default useUser;
|