@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,169 @@
|
|
|
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 { useCallback, useEffect, useState } from 'react';
|
|
12
|
+
import { CameraIcon } from '@datalayer/icons-react';
|
|
13
|
+
import { ActionList, ActionMenu, Box, Flash, FormControl, Select, Spinner } from '@primer/react';
|
|
14
|
+
import { Dialog } from '@primer/react/experimental';
|
|
15
|
+
import { useToast } from '../../hooks';
|
|
16
|
+
import { createRuntimeSnapshot, getRuntimeSnapshots, loadBrowserRuntimeSnapshot, loadRuntimeSnapshot } from '../../api';
|
|
17
|
+
import { useRuntimesStore } from '../../state';
|
|
18
|
+
import { createRuntimeSnapshotName } from '../../utils';
|
|
19
|
+
/**
|
|
20
|
+
* Runtime Snapshot menu component.
|
|
21
|
+
*/
|
|
22
|
+
export function RuntimeSnapshotMenu(props) {
|
|
23
|
+
const { children, connection, podName, multiServiceManager, disabled } = props;
|
|
24
|
+
const { addRuntimeSnapshot, runtimesRunUrl, runtimeSnapshots, setRuntimeSnapshots } = useRuntimesStore();
|
|
25
|
+
const { trackAsyncTask } = useToast();
|
|
26
|
+
const [openLoadDialog, setOpenLoadDialog] = useState(false);
|
|
27
|
+
const [loadingKernelSnapshot, setLoadingKernelSnapshot] = useState(false);
|
|
28
|
+
const [takingKernelSnapshot, setTakingSnapshot] = useState(false);
|
|
29
|
+
const [selection, setSelection] = useState(runtimeSnapshots[0]?.id ?? '');
|
|
30
|
+
const [error, setError] = useState();
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
getRuntimeSnapshots()
|
|
33
|
+
.then(snapshots => {
|
|
34
|
+
setRuntimeSnapshots(snapshots);
|
|
35
|
+
if (!selection && snapshots.length > 0) {
|
|
36
|
+
setSelection(snapshots[0].id);
|
|
37
|
+
}
|
|
38
|
+
})
|
|
39
|
+
.catch(reason => {
|
|
40
|
+
console.error(`Failed to fetch remote kernel snapshots; ${reason}`);
|
|
41
|
+
});
|
|
42
|
+
}, [runtimesRunUrl]);
|
|
43
|
+
const onLoadKernelSnapshot = useCallback(() => {
|
|
44
|
+
setError(undefined);
|
|
45
|
+
setOpenLoadDialog(true);
|
|
46
|
+
}, []);
|
|
47
|
+
const onKerenelSnapshotChanged = useCallback(event => {
|
|
48
|
+
setSelection(event.target.value);
|
|
49
|
+
}, []);
|
|
50
|
+
const onLoadKernelSnapshotSubmit = useCallback(async ({ id, connection, podName }) => {
|
|
51
|
+
if (podName) {
|
|
52
|
+
await loadRuntimeSnapshot({ id: podName, from: id });
|
|
53
|
+
}
|
|
54
|
+
else if (connection) {
|
|
55
|
+
await loadBrowserRuntimeSnapshot({ connection, id });
|
|
56
|
+
}
|
|
57
|
+
}, []);
|
|
58
|
+
const onTakeKernelSnapshot = useCallback(async () => {
|
|
59
|
+
try {
|
|
60
|
+
setTakingSnapshot(true);
|
|
61
|
+
let snapshot;
|
|
62
|
+
let task;
|
|
63
|
+
let ref = '';
|
|
64
|
+
let snapshotName = '';
|
|
65
|
+
if (podName && multiServiceManager?.remote) {
|
|
66
|
+
snapshotName = createRuntimeSnapshotName('cloud');
|
|
67
|
+
task = multiServiceManager.remote.runtimesManager.snapshot({
|
|
68
|
+
podName,
|
|
69
|
+
name: snapshotName,
|
|
70
|
+
description: snapshotName,
|
|
71
|
+
stop: false
|
|
72
|
+
});
|
|
73
|
+
ref = podName.split('-', 2).reverse()[0];
|
|
74
|
+
task.then(s => {
|
|
75
|
+
snapshot = s;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
else if (connection && multiServiceManager?.browser) {
|
|
79
|
+
const model = connection.model;
|
|
80
|
+
ref = model.id;
|
|
81
|
+
snapshotName = createRuntimeSnapshotName('browser');
|
|
82
|
+
let isPending = true;
|
|
83
|
+
task = createRuntimeSnapshot({
|
|
84
|
+
connection: multiServiceManager.browser.kernels.connectTo({
|
|
85
|
+
model
|
|
86
|
+
}),
|
|
87
|
+
metadata: { filename: `${snapshotName}.data` },
|
|
88
|
+
onUploadProgress: () => {
|
|
89
|
+
if (isPending) {
|
|
90
|
+
isPending = false;
|
|
91
|
+
// Get the kernel snapshot uid.
|
|
92
|
+
getRuntimeSnapshots().then(snapshots => {
|
|
93
|
+
snapshot = snapshots.find(s => s.name === snapshotName);
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (task) {
|
|
100
|
+
trackAsyncTask(task, {
|
|
101
|
+
error: {
|
|
102
|
+
message: (reason, data) => {
|
|
103
|
+
const msg = reason === 'Empty snapshot'
|
|
104
|
+
? `Runtime ${ref} will not be snapshotted as it does not contain any serializable state.`
|
|
105
|
+
: `Failed to pause runtime ${ref} - ${reason}`;
|
|
106
|
+
return msg;
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
pending: { message: `Taking a snapshot of runtime ${ref}…` },
|
|
110
|
+
success: {
|
|
111
|
+
message: () => `Runtime ${ref} successfully snapshotted as ${snapshotName}.`
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
await task;
|
|
115
|
+
if (snapshot) {
|
|
116
|
+
addRuntimeSnapshot(snapshot);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
setTakingSnapshot(false);
|
|
122
|
+
}
|
|
123
|
+
}, [connection, podName, multiServiceManager]);
|
|
124
|
+
return (_jsxs(_Fragment, { children: [_jsxs(ActionMenu, { children: [_jsx(ActionMenu.Button, { leadingVisual: CameraIcon, variant: "invisible", size: "small", disabled: loadingKernelSnapshot || takingKernelSnapshot || disabled, children: children }), _jsx(ActionMenu.Overlay, { children: _jsxs(ActionList, { children: [_jsx(ActionList.Item, { onSelect: onLoadKernelSnapshot, disabled: loadingKernelSnapshot || runtimeSnapshots.length === 0, children: "Load a runtime snapshot\u2026" }), _jsx(ActionList.Item, { onSelect: onTakeKernelSnapshot, disabled: takingKernelSnapshot, children: "Take a runtime snapshot" })] }) })] }), openLoadDialog && (_jsx(Dialog, { title: "Choose a runtime snapshot to load", onClose: () => { setOpenLoadDialog(false); }, footerButtons: [
|
|
125
|
+
{
|
|
126
|
+
buttonType: 'default',
|
|
127
|
+
content: 'Cancel',
|
|
128
|
+
onClick: event => {
|
|
129
|
+
if (!event.defaultPrevented) {
|
|
130
|
+
event.preventDefault();
|
|
131
|
+
setOpenLoadDialog(false);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
buttonType: 'primary',
|
|
137
|
+
content: loadingKernelSnapshot ? _jsx(Spinner, { size: "small" }) : 'Load',
|
|
138
|
+
disabled: loadingKernelSnapshot,
|
|
139
|
+
onClick: async (event) => {
|
|
140
|
+
if (!event.defaultPrevented) {
|
|
141
|
+
event.preventDefault();
|
|
142
|
+
setLoadingKernelSnapshot(true);
|
|
143
|
+
try {
|
|
144
|
+
setError(undefined);
|
|
145
|
+
const snapshot = runtimeSnapshots.find(s => s.id === selection);
|
|
146
|
+
if (snapshot && (connection || podName)) {
|
|
147
|
+
await onLoadKernelSnapshotSubmit({
|
|
148
|
+
connection,
|
|
149
|
+
id: snapshot.id,
|
|
150
|
+
podName
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
setError('No runtime snapshot found.');
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
finally {
|
|
158
|
+
setLoadingKernelSnapshot(false);
|
|
159
|
+
setOpenLoadDialog(false);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
autoFocus: true
|
|
164
|
+
}
|
|
165
|
+
], children: _jsxs(Box, { as: "form", children: [_jsxs(FormControl, { children: [_jsx(FormControl.Label, { children: "Snapshot" }), _jsx(Select, { name: "snapshot", value: selection, onChange: onKerenelSnapshotChanged, block: true, children: runtimeSnapshots.map(s => (_jsx(Select.Option, { value: s.id, children: s.name ? `${s.name} (${s.id})` : s.id }, s.id))) })] }), error && _jsx(Flash, { variant: "danger", children: error })] }) }))] }));
|
|
166
|
+
}
|
|
167
|
+
RuntimeSnapshotMenu.defaultProps = {
|
|
168
|
+
disabled: false,
|
|
169
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './RuntimeSnapshotMenu';
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { CodeCellModel } from '@jupyterlab/cells';
|
|
2
|
+
import type { IMarkdownParser, IRenderMime } from '@jupyterlab/rendermime';
|
|
3
|
+
import { ITranslator } from '@jupyterlab/translation';
|
|
4
|
+
import type { ISnippet } from '../../models';
|
|
5
|
+
/**
|
|
6
|
+
* {@link SnippetDialog} properties
|
|
7
|
+
*/
|
|
8
|
+
export interface ISnippetDialogProps {
|
|
9
|
+
/**
|
|
10
|
+
* Code cell model
|
|
11
|
+
*/
|
|
12
|
+
model: CodeCellModel;
|
|
13
|
+
/**
|
|
14
|
+
* Callback request the dialog closure.
|
|
15
|
+
*/
|
|
16
|
+
onClose: () => void;
|
|
17
|
+
/**
|
|
18
|
+
* Code snippets language
|
|
19
|
+
*/
|
|
20
|
+
language: string;
|
|
21
|
+
/**
|
|
22
|
+
* Code snippets
|
|
23
|
+
*/
|
|
24
|
+
snippets: ISnippet[];
|
|
25
|
+
/**
|
|
26
|
+
* Markdown parser
|
|
27
|
+
*/
|
|
28
|
+
markdownParser?: IMarkdownParser;
|
|
29
|
+
/**
|
|
30
|
+
* HTML sanitizer
|
|
31
|
+
*/
|
|
32
|
+
sanitizer?: IRenderMime.ISanitizer;
|
|
33
|
+
/**
|
|
34
|
+
* Application translator
|
|
35
|
+
*/
|
|
36
|
+
translator?: ITranslator;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Dialog to inject snippet in a cell.
|
|
40
|
+
*/
|
|
41
|
+
export declare function SnippetDialog(props: ISnippetDialogProps): JSX.Element;
|
|
42
|
+
export default SnippetDialog;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { 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 { useCallback, useMemo, useState } from 'react';
|
|
12
|
+
import { nullTranslator } from '@jupyterlab/translation';
|
|
13
|
+
import { FormControl, Select, Text } from '@primer/react';
|
|
14
|
+
import { Box } from "@datalayer/primer-addons";
|
|
15
|
+
import { Dialog } from '@primer/react/experimental';
|
|
16
|
+
import { Markdown } from '../display';
|
|
17
|
+
/**
|
|
18
|
+
* Dialog to inject snippet in a cell.
|
|
19
|
+
*/
|
|
20
|
+
export function SnippetDialog(props) {
|
|
21
|
+
const { model, onClose, language, snippets, markdownParser, sanitizer, translator } = props;
|
|
22
|
+
const [selection, setSelection] = useState(snippets[0]);
|
|
23
|
+
const trans = useMemo(() => (translator ?? nullTranslator).load('jupyterlab'), [translator]);
|
|
24
|
+
const onSelectionChange = useCallback((e) => {
|
|
25
|
+
const selection = e.target.value;
|
|
26
|
+
setSelection(snippets[parseInt(selection, 10)]);
|
|
27
|
+
}, [setSelection, snippets]);
|
|
28
|
+
const injectSnippet = useCallback(() => {
|
|
29
|
+
const size = model.sharedModel.getSource().length;
|
|
30
|
+
model.sharedModel.updateSource(size, size, '\n'.repeat(size ? 2 : 0) + selection.code);
|
|
31
|
+
onClose();
|
|
32
|
+
}, [model, selection, onClose]);
|
|
33
|
+
return (_jsx(Dialog, { title: 'Pick a snippet to inject', onClose: onClose, footerButtons: [
|
|
34
|
+
{
|
|
35
|
+
buttonType: 'default',
|
|
36
|
+
content: trans.__('Cancel'),
|
|
37
|
+
onClick: onClose
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
buttonType: 'primary',
|
|
41
|
+
content: trans.__('Inject snippet'),
|
|
42
|
+
onClick: injectSnippet,
|
|
43
|
+
autoFocus: true
|
|
44
|
+
}
|
|
45
|
+
], children: _jsx(Box, { as: "form", children: _jsxs(FormControl, { children: [_jsx(FormControl.Label, {}), _jsx(Select, { block: true, onChange: onSelectionChange, children: snippets.map((snippet, index) => (_jsx(Select.Option, { value: `${index}`, children: snippet.title }, index))) }), _jsxs(FormControl.Caption, { children: [selection.description && (_jsx(Text, { as: "p", children: selection.description })), markdownParser ? (_jsx(Markdown, { markdownParser: markdownParser, sanitizer: sanitizer, text: `\`\`\`${language}\n${selection.code}\`\`\`` })) : (_jsx("code", { children: selection.code }))] })] }) }) }));
|
|
46
|
+
}
|
|
47
|
+
export default SnippetDialog;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './SnippetDialog';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { DocumentRegistry } from '@jupyterlab/docregistry';
|
|
2
|
+
import { Contents } from '@jupyterlab/services';
|
|
3
|
+
/**
|
|
4
|
+
* The maximum upload size (in bytes) for notebook version < 5.1.0
|
|
5
|
+
*/
|
|
6
|
+
export declare const LARGE_FILE_SIZE: number;
|
|
7
|
+
/**
|
|
8
|
+
* The size (in bytes) of the biggest chunk we should upload at once.
|
|
9
|
+
*/
|
|
10
|
+
export declare const CHUNK_SIZE: number;
|
|
11
|
+
/**
|
|
12
|
+
* Storage browser component properties
|
|
13
|
+
*/
|
|
14
|
+
export interface IContentsBrowserProps {
|
|
15
|
+
/**
|
|
16
|
+
* Contents manager.
|
|
17
|
+
*/
|
|
18
|
+
contents: Contents.IManager;
|
|
19
|
+
/**
|
|
20
|
+
* Contents manager.
|
|
21
|
+
*/
|
|
22
|
+
localContents?: Contents.IManager;
|
|
23
|
+
/**
|
|
24
|
+
* Document registry.
|
|
25
|
+
*/
|
|
26
|
+
documentRegistry?: DocumentRegistry;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Storage browser component.
|
|
30
|
+
*/
|
|
31
|
+
export declare function ContentsBrowser(props: IContentsBrowserProps): JSX.Element;
|
|
32
|
+
export default ContentsBrowser;
|
|
@@ -0,0 +1,250 @@
|
|
|
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 { useCallback, useEffect, useState } from 'react';
|
|
12
|
+
import { PathExt } from '@jupyterlab/coreutils';
|
|
13
|
+
import { PromiseDelegate } from '@lumino/coreutils';
|
|
14
|
+
import { ActionList, ActionMenu, Heading, IconButton, Spinner, TreeView } from '@primer/react';
|
|
15
|
+
import { Box } from "@datalayer/primer-addons";
|
|
16
|
+
import { Blankslate, Dialog } from '@primer/react/experimental';
|
|
17
|
+
import { CounterClockWiseIcon } from '@datalayer/icons-react';
|
|
18
|
+
import { useIsMounted } from 'usehooks-ts';
|
|
19
|
+
import { useToast } from '../../hooks';
|
|
20
|
+
import { UploadIconButton } from '../buttons';
|
|
21
|
+
import { DirectoryItem, TreeItem, modelToView } from './ContentsItems';
|
|
22
|
+
/**
|
|
23
|
+
* The maximum upload size (in bytes) for notebook version < 5.1.0
|
|
24
|
+
*/
|
|
25
|
+
export const LARGE_FILE_SIZE = 15 * 1024 * 1024;
|
|
26
|
+
/**
|
|
27
|
+
* The size (in bytes) of the biggest chunk we should upload at once.
|
|
28
|
+
*/
|
|
29
|
+
export const CHUNK_SIZE = 1024 * 1024;
|
|
30
|
+
/**
|
|
31
|
+
* Storage browser component.
|
|
32
|
+
*/
|
|
33
|
+
export function ContentsBrowser(props) {
|
|
34
|
+
const { contents, localContents, documentRegistry } = props;
|
|
35
|
+
const isMounted = useIsMounted();
|
|
36
|
+
const { trackAsyncTask } = useToast();
|
|
37
|
+
const [children, setChildren] = useState(null);
|
|
38
|
+
const [isLoading, setIsLoading] = useState(true);
|
|
39
|
+
const [selectedItem, setSelectedItem] = useState(null);
|
|
40
|
+
const [contextMenuAnchor, setContextMenuAnchor] = useState(null);
|
|
41
|
+
const [openDeleteConfirmation, setOpenDeleteConfirmation] = useState(false);
|
|
42
|
+
const [copyToLocalConfirmation, setCopyToLocalConfirmation] = useState(false);
|
|
43
|
+
const refresh = useCallback(() => {
|
|
44
|
+
contents.get('')
|
|
45
|
+
.then(model => {
|
|
46
|
+
setIsLoading(false);
|
|
47
|
+
setChildren(modelToView(model.content, documentRegistry));
|
|
48
|
+
})
|
|
49
|
+
.catch(reason => {
|
|
50
|
+
setIsLoading(false);
|
|
51
|
+
console.error(`Failed to fetch folder '' content for manager ${contents.serverSettings.appUrl}.`, reason);
|
|
52
|
+
});
|
|
53
|
+
}, [contents]);
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
refresh();
|
|
56
|
+
}, [refresh]);
|
|
57
|
+
const upload = useCallback(
|
|
58
|
+
/**
|
|
59
|
+
* @param file File to upload
|
|
60
|
+
*/
|
|
61
|
+
async (file) => {
|
|
62
|
+
const checkIsMounted = () => {
|
|
63
|
+
if (!isMounted()) {
|
|
64
|
+
return Promise.reject(`Failed to upload ${file.name}; StorageBrowser component is unmounted.`);
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
checkIsMounted();
|
|
68
|
+
const chunked = file.size > CHUNK_SIZE;
|
|
69
|
+
const currentDirectory = selectedItem
|
|
70
|
+
? selectedItem.type === 'directory'
|
|
71
|
+
? selectedItem.path
|
|
72
|
+
: PathExt.dirname(selectedItem.path)
|
|
73
|
+
: '';
|
|
74
|
+
const path = currentDirectory
|
|
75
|
+
? PathExt.join(currentDirectory, file.name)
|
|
76
|
+
: file.name;
|
|
77
|
+
const name = file.name;
|
|
78
|
+
const type = 'file';
|
|
79
|
+
const format = 'base64';
|
|
80
|
+
const uploadChunk = async (blob, chunk) => {
|
|
81
|
+
checkIsMounted();
|
|
82
|
+
const reader = new FileReader();
|
|
83
|
+
reader.readAsDataURL(blob);
|
|
84
|
+
await new Promise((resolve, reject) => {
|
|
85
|
+
reader.onload = resolve;
|
|
86
|
+
reader.onerror = event => reject(`Failed to upload "${file.name}":` + event);
|
|
87
|
+
});
|
|
88
|
+
checkIsMounted();
|
|
89
|
+
// remove header https://stackoverflow.com/a/24289420/907060
|
|
90
|
+
const content = reader.result.split(',')[1];
|
|
91
|
+
const model = {
|
|
92
|
+
type,
|
|
93
|
+
format,
|
|
94
|
+
name,
|
|
95
|
+
chunk,
|
|
96
|
+
content,
|
|
97
|
+
};
|
|
98
|
+
return await contents.save(path, model);
|
|
99
|
+
};
|
|
100
|
+
const toastOptions = {
|
|
101
|
+
error: {
|
|
102
|
+
message: reason => {
|
|
103
|
+
const msg = `Failed to upload ${file.name}.`;
|
|
104
|
+
console.error(msg, reason);
|
|
105
|
+
return msg;
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
pending: { message: `Uploading ${file.name}…` },
|
|
109
|
+
success: { message: () => `${file.name} uploaded.` }
|
|
110
|
+
};
|
|
111
|
+
if (chunked) {
|
|
112
|
+
const task = new PromiseDelegate();
|
|
113
|
+
trackAsyncTask(task.promise, toastOptions);
|
|
114
|
+
try {
|
|
115
|
+
let finalModel;
|
|
116
|
+
for (let start = 0; !finalModel; start += CHUNK_SIZE) {
|
|
117
|
+
const end = start + CHUNK_SIZE;
|
|
118
|
+
const lastChunk = end >= file.size;
|
|
119
|
+
const chunk = lastChunk ? -1 : end / CHUNK_SIZE;
|
|
120
|
+
const currentModel = await uploadChunk(file.slice(start, end), chunk);
|
|
121
|
+
if (lastChunk) {
|
|
122
|
+
finalModel = currentModel;
|
|
123
|
+
task.resolve(finalModel);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
selectedItem ? selectedItem.refresh() : refresh();
|
|
127
|
+
return finalModel;
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
task.reject(error);
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
const task = uploadChunk(file);
|
|
136
|
+
trackAsyncTask(task, toastOptions);
|
|
137
|
+
task.then(() => {
|
|
138
|
+
selectedItem ? selectedItem.refresh() : refresh();
|
|
139
|
+
});
|
|
140
|
+
return task;
|
|
141
|
+
}
|
|
142
|
+
}, [contents, selectedItem, refresh]);
|
|
143
|
+
const onContextMenu = useCallback((ref) => {
|
|
144
|
+
if (contextMenuAnchor === ref) {
|
|
145
|
+
setContextMenuAnchor(null);
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
setContextMenuAnchor(ref);
|
|
149
|
+
}
|
|
150
|
+
}, [contextMenuAnchor]);
|
|
151
|
+
const onSelectDelete = useCallback(() => {
|
|
152
|
+
setOpenDeleteConfirmation(true);
|
|
153
|
+
}, []);
|
|
154
|
+
const deleteItem = useCallback(() => {
|
|
155
|
+
if (selectedItem) {
|
|
156
|
+
const task = contents.delete(selectedItem.path);
|
|
157
|
+
trackAsyncTask(task, {
|
|
158
|
+
success: { message: () => `${selectedItem.path} deleted.` },
|
|
159
|
+
pending: { message: `Deleting ${selectedItem.path}…` },
|
|
160
|
+
error: { message: reason => {
|
|
161
|
+
const msg = `Failed to delete ${selectedItem.path}.`;
|
|
162
|
+
console.error(msg, reason);
|
|
163
|
+
return msg;
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
});
|
|
167
|
+
task.finally(() => {
|
|
168
|
+
selectedItem.refresh();
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
setOpenDeleteConfirmation(false);
|
|
172
|
+
}, [contents, selectedItem]);
|
|
173
|
+
const onSelectCopyToLocal = useCallback(() => {
|
|
174
|
+
setCopyToLocalConfirmation(true);
|
|
175
|
+
}, []);
|
|
176
|
+
const copyToLocal = useCallback(() => {
|
|
177
|
+
if (selectedItem && localContents) {
|
|
178
|
+
contents.get(selectedItem.path).then((model) => {
|
|
179
|
+
const copyTask = localContents?.save(model.path, model);
|
|
180
|
+
trackAsyncTask(copyTask, {
|
|
181
|
+
success: { message: () => `${selectedItem.path} copied to local.` },
|
|
182
|
+
pending: { message: `Copying to local ${selectedItem.path}…` },
|
|
183
|
+
error: { message: reason => {
|
|
184
|
+
const msg = `Failed to copy to local ${selectedItem.path}.`;
|
|
185
|
+
console.error(msg, reason);
|
|
186
|
+
return msg;
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
});
|
|
190
|
+
copyTask.finally(() => {
|
|
191
|
+
selectedItem.refresh();
|
|
192
|
+
});
|
|
193
|
+
setCopyToLocalConfirmation(false);
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
}, [localContents, selectedItem]);
|
|
197
|
+
const onSelect = useCallback((item, refresh) => {
|
|
198
|
+
setSelectedItem(item.path === selectedItem?.path ? null : { ...item, refresh });
|
|
199
|
+
}, [selectedItem]);
|
|
200
|
+
return (_jsxs(Box, { sx: { display: 'grid', gridTemplateAreas: `"header" "content"` }, children: [_jsxs(Box, { sx: { gridArea: 'header', display: 'flex', alignItems: 'center' }, children: [_jsx(Heading, { as: "h4", sx: {
|
|
201
|
+
fontSize: 'var(--text-title-size-small)',
|
|
202
|
+
lineHeight: 'var(--text-title-lineHeight-medium)',
|
|
203
|
+
fontWeight: 'var(--text-title-weight-medium)',
|
|
204
|
+
flex: '1 1 auto'
|
|
205
|
+
}, children: "Contents Browser" }), _jsxs(Box, { children: [_jsx(IconButton, { variant: "invisible", "aria-label": 'Refresh contents browser.', title: 'Refresh contents browser.', icon: CounterClockWiseIcon, onClick: refresh }), _jsx(UploadIconButton, { label: 'Upload a file', multiple: true, upload: upload })] })] }), isLoading ?
|
|
206
|
+
_jsx(Box, { sx: {
|
|
207
|
+
gridArea: 'content',
|
|
208
|
+
display: 'flex',
|
|
209
|
+
alignItems: 'center',
|
|
210
|
+
justifyContent: 'center',
|
|
211
|
+
minHeight: '40px',
|
|
212
|
+
height: '100vh'
|
|
213
|
+
}, children: _jsx(Spinner, {}) })
|
|
214
|
+
:
|
|
215
|
+
_jsx(Box, { sx: { gridArea: 'content' }, children: children ?
|
|
216
|
+
_jsxs(_Fragment, { children: [_jsx(TreeView, { children: children?.map(child => {
|
|
217
|
+
return child.type === 'directory' ?
|
|
218
|
+
_jsx(DirectoryItem, { item: child, contents: contents, current: selectedItem, documentRegistry: documentRegistry, onContextMenu: onContextMenu, onSelect: onSelect }, child.name)
|
|
219
|
+
:
|
|
220
|
+
_jsx(TreeItem, { item: child, current: selectedItem?.path === child.path, onSelect: item => { onSelect(item, refresh); }, onContextMenu: onContextMenu }, child.name);
|
|
221
|
+
}) }), _jsx(ActionMenu, { anchorRef: contextMenuAnchor ?? undefined, open: contextMenuAnchor?.current !== null, onOpenChange: () => { setContextMenuAnchor(null); }, children: _jsx(ActionMenu.Overlay, { children: _jsxs(ActionList, { children: [_jsx(ActionList.Item, { title: "Delete the active item.", onSelect: onSelectDelete, children: "Delete\u2026" }), localContents &&
|
|
222
|
+
_jsx(ActionList.Item, { title: "Copy the active item to the local drive.", onSelect: onSelectCopyToLocal, children: "Copy to local drive\u2026" })] }) }) }), openDeleteConfirmation &&
|
|
223
|
+
_jsx(Dialog, { title: "Confirm deletion", onClose: () => { setOpenDeleteConfirmation(false); }, footerButtons: [
|
|
224
|
+
{
|
|
225
|
+
buttonType: 'default',
|
|
226
|
+
content: 'Cancel',
|
|
227
|
+
onClick: () => { setOpenDeleteConfirmation(false); }
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
buttonType: 'danger',
|
|
231
|
+
content: 'Delete',
|
|
232
|
+
onClick: () => { deleteItem(); }
|
|
233
|
+
}
|
|
234
|
+
], children: `Are you sure you want to delete ${selectedItem?.path}?` }), copyToLocalConfirmation &&
|
|
235
|
+
_jsx(Dialog, { title: "Confirm copy to local", onClose: () => { setCopyToLocalConfirmation(false); }, footerButtons: [
|
|
236
|
+
{
|
|
237
|
+
buttonType: 'default',
|
|
238
|
+
content: 'Cancel',
|
|
239
|
+
onClick: () => { setCopyToLocalConfirmation(false); }
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
buttonType: 'danger',
|
|
243
|
+
content: 'Copy to local',
|
|
244
|
+
onClick: () => { copyToLocal(); }
|
|
245
|
+
}
|
|
246
|
+
], children: `Are you sure you want to copy to local ${selectedItem?.path}?` })] })
|
|
247
|
+
:
|
|
248
|
+
_jsx(Blankslate, { children: _jsx(Blankslate.Heading, { children: "No contents" }) }) })] }));
|
|
249
|
+
}
|
|
250
|
+
export default ContentsBrowser;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { MutableRefObject } from 'react';
|
|
2
|
+
import { DocumentRegistry } from '@jupyterlab/docregistry';
|
|
3
|
+
import { Contents } from '@jupyterlab/services';
|
|
4
|
+
/**
|
|
5
|
+
* Content item view model
|
|
6
|
+
*/
|
|
7
|
+
export interface IContentsView extends Contents.IModel {
|
|
8
|
+
/**
|
|
9
|
+
* Model file type
|
|
10
|
+
*/
|
|
11
|
+
fileType?: DocumentRegistry.IFileType;
|
|
12
|
+
}
|
|
13
|
+
interface ITreeItemProps {
|
|
14
|
+
/**
|
|
15
|
+
* Directory model
|
|
16
|
+
*/
|
|
17
|
+
item: IContentsView;
|
|
18
|
+
/**
|
|
19
|
+
* Whether the item is currently selected or not.
|
|
20
|
+
*/
|
|
21
|
+
current: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Callback on context menu event.
|
|
24
|
+
*/
|
|
25
|
+
onContextMenu: (ref: MutableRefObject<HTMLElement | null>) => void;
|
|
26
|
+
/**
|
|
27
|
+
* Callback on item selection
|
|
28
|
+
*/
|
|
29
|
+
onSelect: (item: IContentsView) => void;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Directory component properties
|
|
33
|
+
*/
|
|
34
|
+
interface IDirectoryItemProps extends Omit<ITreeItemProps, 'current' | 'onSelect' | 'refresh'> {
|
|
35
|
+
/**
|
|
36
|
+
* Jupyter contents manager
|
|
37
|
+
*/
|
|
38
|
+
contents: Contents.IManager;
|
|
39
|
+
/**
|
|
40
|
+
* Current item
|
|
41
|
+
*/
|
|
42
|
+
current: IContentsView | null;
|
|
43
|
+
/**
|
|
44
|
+
* Jupyter document registry
|
|
45
|
+
*/
|
|
46
|
+
documentRegistry?: DocumentRegistry;
|
|
47
|
+
/**
|
|
48
|
+
* Callback on item selection
|
|
49
|
+
*/
|
|
50
|
+
onSelect: (item: IContentsView, refresh: () => void) => void;
|
|
51
|
+
}
|
|
52
|
+
export declare function modelToView(models: Contents.IModel[], docRegistry?: DocumentRegistry): IContentsView[];
|
|
53
|
+
/**
|
|
54
|
+
* Directory tree item component
|
|
55
|
+
*/
|
|
56
|
+
export declare function DirectoryItem(props: IDirectoryItemProps): JSX.Element;
|
|
57
|
+
export declare function TreeItem(props: ITreeItemProps): import("react/jsx-runtime").JSX.Element;
|
|
58
|
+
export {};
|