@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.
Files changed (641) hide show
  1. package/README.md +176 -7
  2. package/lib/App.d.ts +3 -0
  3. package/lib/App.js +4 -0
  4. package/lib/__tests__/App.test.d.ts +1 -0
  5. package/lib/__tests__/App.test.js +17 -0
  6. package/lib/__tests__/hooks.test.d.ts +1 -0
  7. package/lib/__tests__/hooks.test.js +19 -0
  8. package/lib/__tests__/index.test.d.ts +1 -0
  9. package/lib/__tests__/index.test.js +26 -0
  10. package/lib/__tests__/integration.test.d.ts +1 -0
  11. package/lib/__tests__/integration.test.js +57 -0
  12. package/lib/__tests__/utils.test.d.ts +1 -0
  13. package/lib/__tests__/utils.test.js +59 -0
  14. package/lib/api/RunApi.d.ts +75 -0
  15. package/lib/api/RunApi.js +150 -0
  16. package/lib/api/index.d.ts +2 -0
  17. package/lib/api/index.js +11 -0
  18. package/lib/api/runtimes/exec/Python.d.ts +5 -0
  19. package/lib/api/runtimes/exec/Python.js +105 -0
  20. package/lib/api/runtimes/exec/Snippets.d.ts +145 -0
  21. package/lib/api/runtimes/exec/Snippets.js +125 -0
  22. package/lib/api/runtimes/exec/index.d.ts +2 -0
  23. package/lib/api/runtimes/exec/index.js +11 -0
  24. package/lib/api/runtimes/index.d.ts +7 -0
  25. package/lib/api/runtimes/index.js +16 -0
  26. package/lib/api/runtimes/kernelsHandler.d.ts +8 -0
  27. package/lib/api/runtimes/kernelsHandler.js +44 -0
  28. package/lib/api/runtimes/models.d.ts +59 -0
  29. package/lib/api/runtimes/models.js +11 -0
  30. package/lib/api/runtimes/runtimesApi.d.ts +370 -0
  31. package/lib/api/runtimes/runtimesApi.js +269 -0
  32. package/lib/api/runtimes/settings.d.ts +15 -0
  33. package/lib/api/runtimes/settings.js +36 -0
  34. package/lib/api/runtimes/snapshots.d.ts +25 -0
  35. package/lib/api/runtimes/snapshots.js +155 -0
  36. package/lib/api/runtimes/utils.d.ts +7 -0
  37. package/lib/api/runtimes/utils.js +22 -0
  38. package/lib/components/avatars/BoringAvatar.d.ts +20 -0
  39. package/lib/components/avatars/BoringAvatar.js +39 -0
  40. package/lib/components/avatars/UserProfileAvatar.d.ts +13 -0
  41. package/lib/components/avatars/UserProfileAvatar.js +37 -0
  42. package/lib/components/avatars/index.d.ts +2 -0
  43. package/lib/components/avatars/index.js +11 -0
  44. package/lib/components/banners/NoAutomationBanner.d.ts +2 -0
  45. package/lib/components/banners/NoAutomationBanner.js +18 -0
  46. package/lib/components/banners/index.d.ts +1 -0
  47. package/lib/components/banners/index.js +10 -0
  48. package/lib/components/buttons/DownloadCSVButton.d.ts +13 -0
  49. package/lib/components/buttons/DownloadCSVButton.js +21 -0
  50. package/lib/components/buttons/DownloadJsonButton.d.ts +16 -0
  51. package/lib/components/buttons/DownloadJsonButton.js +23 -0
  52. package/lib/components/buttons/LongActionButton.d.ts +28 -0
  53. package/lib/components/buttons/LongActionButton.js +29 -0
  54. package/lib/components/buttons/UploadButton.d.ts +37 -0
  55. package/lib/components/buttons/UploadButton.js +48 -0
  56. package/lib/components/buttons/VariantType.d.ts +1 -0
  57. package/lib/components/buttons/VariantType.js +5 -0
  58. package/lib/components/buttons/index.d.ts +5 -0
  59. package/lib/components/buttons/index.js +14 -0
  60. package/lib/components/checkout/StripeCheckout.d.ts +32 -0
  61. package/lib/components/checkout/StripeCheckout.js +100 -0
  62. package/lib/components/checkout/index.d.ts +1 -0
  63. package/lib/components/checkout/index.js +10 -0
  64. package/lib/components/confetti/ConfettiSuccess.d.ts +2 -0
  65. package/lib/components/confetti/ConfettiSuccess.js +17 -0
  66. package/lib/components/confetti/index.d.ts +1 -0
  67. package/lib/components/confetti/index.js +10 -0
  68. package/lib/components/context/OrganizationSelect.d.ts +2 -0
  69. package/lib/components/context/OrganizationSelect.js +40 -0
  70. package/lib/components/context/SpaceSelect.d.ts +2 -0
  71. package/lib/components/context/SpaceSelect.js +48 -0
  72. package/lib/components/context/index.d.ts +2 -0
  73. package/lib/components/context/index.js +11 -0
  74. package/lib/components/display/AvatarSkeleton.d.ts +5 -0
  75. package/lib/components/display/AvatarSkeleton.js +16 -0
  76. package/lib/components/display/CenteredSpinner.d.ts +14 -0
  77. package/lib/components/display/CenteredSpinner.js +25 -0
  78. package/lib/components/display/CodePreview.d.ts +4 -0
  79. package/lib/components/display/CodePreview.js +20 -0
  80. package/lib/components/display/DatalayerBox.d.ts +8 -0
  81. package/lib/components/display/DatalayerBox.js +33 -0
  82. package/lib/components/display/HorizontalCenter.d.ts +9 -0
  83. package/lib/components/display/HorizontalCenter.js +14 -0
  84. package/lib/components/display/JupyterDialog.d.ts +69 -0
  85. package/lib/components/display/JupyterDialog.js +120 -0
  86. package/lib/components/display/Markdown.d.ts +23 -0
  87. package/lib/components/display/Markdown.js +20 -0
  88. package/lib/components/display/NavLink.d.ts +9 -0
  89. package/lib/components/display/NavLink.js +22 -0
  90. package/lib/components/display/NotebookSkeleton.d.ts +2 -0
  91. package/lib/components/display/NotebookSkeleton.js +16 -0
  92. package/lib/components/display/Placeholder.d.ts +2 -0
  93. package/lib/components/display/Placeholder.js +14 -0
  94. package/lib/components/display/ToTopBranded.d.ts +2 -0
  95. package/lib/components/display/ToTopBranded.js +16 -0
  96. package/lib/components/display/VisuallyHidden.d.ts +5 -0
  97. package/lib/components/display/VisuallyHidden.js +29 -0
  98. package/lib/components/display/index.d.ts +12 -0
  99. package/lib/components/display/index.js +21 -0
  100. package/lib/components/echarts/EChartsReact.d.ts +11 -0
  101. package/lib/components/echarts/EChartsReact.js +53 -0
  102. package/lib/components/echarts/index.d.ts +1 -0
  103. package/lib/components/echarts/index.js +10 -0
  104. package/lib/components/flashes/FlashClosable.d.ts +22 -0
  105. package/lib/components/flashes/FlashClosable.js +69 -0
  106. package/lib/components/flashes/FlashDisclaimer.d.ts +2 -0
  107. package/lib/components/flashes/FlashDisclaimer.js +23 -0
  108. package/lib/components/flashes/FlashGuest.d.ts +2 -0
  109. package/lib/components/flashes/FlashGuest.js +35 -0
  110. package/lib/components/flashes/FlashSurveys.d.ts +6 -0
  111. package/lib/components/flashes/FlashSurveys.js +41 -0
  112. package/lib/components/flashes/FlashUnauthorized.d.ts +2 -0
  113. package/lib/components/flashes/FlashUnauthorized.js +23 -0
  114. package/lib/components/flashes/index.d.ts +6 -0
  115. package/lib/components/flashes/index.js +15 -0
  116. package/lib/components/flashes/surveys/Survey2025_1.d.ts +3 -0
  117. package/lib/components/flashes/surveys/Survey2025_1.js +134 -0
  118. package/lib/components/flashes/surveys/SurveyProps.d.ts +6 -0
  119. package/lib/components/flashes/surveys/SurveyProps.js +5 -0
  120. package/lib/components/flashes/surveys/index.d.ts +2 -0
  121. package/lib/components/flashes/surveys/index.js +11 -0
  122. package/lib/components/iam/ExternalTokenSilentLogin.d.ts +5 -0
  123. package/lib/components/iam/ExternalTokenSilentLogin.js +38 -0
  124. package/lib/components/iam/index.d.ts +1 -0
  125. package/lib/components/iam/index.js +10 -0
  126. package/lib/components/icons/ArtifactIcon.d.ts +10 -0
  127. package/lib/components/icons/ArtifactIcon.js +63 -0
  128. package/lib/components/icons/index.d.ts +1 -0
  129. package/lib/components/icons/index.js +10 -0
  130. package/lib/components/index.d.ts +1 -0
  131. package/lib/components/index.js +10 -0
  132. package/lib/components/labels/VisibilityLabel.d.ts +4 -0
  133. package/lib/components/labels/VisibilityLabel.js +22 -0
  134. package/lib/components/labels/index.d.ts +1 -0
  135. package/lib/components/labels/index.js +10 -0
  136. package/lib/components/landings/StepBlock.d.ts +11 -0
  137. package/lib/components/landings/StepBlock.js +17 -0
  138. package/lib/components/landings/index.d.ts +1 -0
  139. package/lib/components/landings/index.js +10 -0
  140. package/lib/components/navbar/NavigationVisbilityObserver.d.ts +5 -0
  141. package/lib/components/navbar/NavigationVisbilityObserver.js +63 -0
  142. package/lib/components/navbar/SubdomainNavBar.d.ts +81 -0
  143. package/lib/components/navbar/SubdomainNavBar.js +240 -0
  144. package/lib/components/navbar/index.d.ts +2 -0
  145. package/lib/components/navbar/index.js +11 -0
  146. package/lib/components/nbgrader/NbGradesDetails.d.ts +5 -0
  147. package/lib/components/nbgrader/NbGradesDetails.js +22 -0
  148. package/lib/components/nbgrader/index.d.ts +1 -0
  149. package/lib/components/nbgrader/index.js +10 -0
  150. package/lib/components/notebooks/JupyterNotebook.d.ts +12 -0
  151. package/lib/components/notebooks/JupyterNotebook.js +41 -0
  152. package/lib/components/notebooks/JupyterNotebookToolbar.d.ts +2 -0
  153. package/lib/components/notebooks/JupyterNotebookToolbar.js +44 -0
  154. package/lib/components/notebooks/index.d.ts +2 -0
  155. package/lib/components/notebooks/index.js +11 -0
  156. package/lib/components/primer/Helper.d.ts +32 -0
  157. package/lib/components/primer/Helper.js +19 -0
  158. package/lib/components/primer/Portals.d.ts +9 -0
  159. package/lib/components/primer/Portals.js +31 -0
  160. package/lib/components/primer/Styles.d.ts +2 -0
  161. package/lib/components/primer/Styles.js +16 -0
  162. package/lib/components/primer/index.d.ts +2 -0
  163. package/lib/components/primer/index.js +11 -0
  164. package/lib/components/progress/ConsumptionBar.d.ts +40 -0
  165. package/lib/components/progress/ConsumptionBar.js +54 -0
  166. package/lib/components/progress/CreditsIndicator.d.ts +27 -0
  167. package/lib/components/progress/CreditsIndicator.js +30 -0
  168. package/lib/components/progress/ProgressBar.d.ts +2 -0
  169. package/lib/components/progress/ProgressBar.js +26 -0
  170. package/lib/components/progress/ProgressRing.d.ts +36 -0
  171. package/lib/components/progress/ProgressRing.js +31 -0
  172. package/lib/components/progress/Timer.d.ts +9 -0
  173. package/lib/components/progress/Timer.js +33 -0
  174. package/lib/components/progress/index.d.ts +5 -0
  175. package/lib/components/progress/index.js +14 -0
  176. package/lib/components/runtimes/RuntimeCellVariables.d.ts +39 -0
  177. package/lib/components/runtimes/RuntimeCellVariables.js +177 -0
  178. package/lib/components/runtimes/RuntimeCellVariablesDialog.d.ts +37 -0
  179. package/lib/components/runtimes/RuntimeCellVariablesDialog.js +106 -0
  180. package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +54 -0
  181. package/lib/components/runtimes/RuntimeLauncherDialog.js +254 -0
  182. package/lib/components/runtimes/RuntimePickerBase.d.ts +69 -0
  183. package/lib/components/runtimes/RuntimePickerBase.js +114 -0
  184. package/lib/components/runtimes/RuntimePickerCell.d.ts +34 -0
  185. package/lib/components/runtimes/RuntimePickerCell.js +111 -0
  186. package/lib/components/runtimes/RuntimePickerNotebook.d.ts +43 -0
  187. package/lib/components/runtimes/RuntimePickerNotebook.js +173 -0
  188. package/lib/components/runtimes/RuntimeReservationControl.d.ts +47 -0
  189. package/lib/components/runtimes/RuntimeReservationControl.js +43 -0
  190. package/lib/components/runtimes/RuntimeSimplePicker.d.ts +34 -0
  191. package/lib/components/runtimes/RuntimeSimplePicker.js +161 -0
  192. package/lib/components/runtimes/RuntimeTransfer.d.ts +16 -0
  193. package/lib/components/runtimes/RuntimeTransfer.js +5 -0
  194. package/lib/components/runtimes/RuntimeUtils.d.ts +17 -0
  195. package/lib/components/runtimes/RuntimeUtils.js +173 -0
  196. package/lib/components/runtimes/RuntimeVariables.d.ts +38 -0
  197. package/lib/components/runtimes/RuntimeVariables.js +80 -0
  198. package/lib/components/runtimes/index.d.ts +11 -0
  199. package/lib/components/runtimes/index.js +20 -0
  200. package/lib/components/screenshot/ScreenCapture.d.ts +38 -0
  201. package/lib/components/screenshot/ScreenCapture.js +179 -0
  202. package/lib/components/screenshot/ScreenCaptureButton.d.ts +3 -0
  203. package/lib/components/screenshot/ScreenCaptureButton.js +21 -0
  204. package/lib/components/screenshot/index.d.ts +2 -0
  205. package/lib/components/screenshot/index.js +11 -0
  206. package/lib/components/snapshots/RuntimeSnapshotMenu.d.ts +36 -0
  207. package/lib/components/snapshots/RuntimeSnapshotMenu.js +169 -0
  208. package/lib/components/snapshots/index.d.ts +1 -0
  209. package/lib/components/snapshots/index.js +10 -0
  210. package/lib/components/snippets/SnippetDialog.d.ts +42 -0
  211. package/lib/components/snippets/SnippetDialog.js +47 -0
  212. package/lib/components/snippets/index.d.ts +1 -0
  213. package/lib/components/snippets/index.js +10 -0
  214. package/lib/components/storage/ContentsBrowser.d.ts +32 -0
  215. package/lib/components/storage/ContentsBrowser.js +250 -0
  216. package/lib/components/storage/ContentsItems.d.ts +58 -0
  217. package/lib/components/storage/ContentsItems.js +83 -0
  218. package/lib/components/storage/index.d.ts +2 -0
  219. package/lib/components/storage/index.js +11 -0
  220. package/lib/components/students/StudentItemStatus.d.ts +7 -0
  221. package/lib/components/students/StudentItemStatus.js +49 -0
  222. package/lib/components/students/index.d.ts +1 -0
  223. package/lib/components/students/index.js +10 -0
  224. package/lib/components/subnav/SubNav.d.ts +84 -0
  225. package/lib/components/subnav/SubNav.js +270 -0
  226. package/lib/components/subnav/index.d.ts +1 -0
  227. package/lib/components/subnav/index.js +10 -0
  228. package/lib/components/tables/DataTable.d.ts +5 -0
  229. package/lib/components/tables/DataTable.js +24 -0
  230. package/lib/components/tables/index.d.ts +1 -0
  231. package/lib/components/tables/index.js +10 -0
  232. package/lib/components/text-reveal/TextRevealAnimation.d.ts +6 -0
  233. package/lib/components/text-reveal/TextRevealAnimation.js +55 -0
  234. package/lib/components/text-reveal/index.d.ts +1 -0
  235. package/lib/components/text-reveal/index.js +10 -0
  236. package/lib/components/text-reveal/useTextRevealAnimationLines.d.ts +4 -0
  237. package/lib/components/text-reveal/useTextRevealAnimationLines.js +52 -0
  238. package/lib/components/tokens/SpaceVariantToken.d.ts +5 -0
  239. package/lib/components/tokens/SpaceVariantToken.js +25 -0
  240. package/lib/components/tokens/index.d.ts +1 -0
  241. package/lib/components/tokens/index.js +10 -0
  242. package/lib/components/toolbars/AssignmentEditorToolbar.d.ts +4 -0
  243. package/lib/components/toolbars/AssignmentEditorToolbar.js +23 -0
  244. package/lib/components/toolbars/DocumentEditorToolbar.d.ts +2 -0
  245. package/lib/components/toolbars/DocumentEditorToolbar.js +17 -0
  246. package/lib/components/toolbars/NotebookEditorToolbar.d.ts +29 -0
  247. package/lib/components/toolbars/NotebookEditorToolbar.js +35 -0
  248. package/lib/components/toolbars/index.d.ts +3 -0
  249. package/lib/components/toolbars/index.js +12 -0
  250. package/lib/components/users/PeerIndicator.d.ts +18 -0
  251. package/lib/components/users/PeerIndicator.js +105 -0
  252. package/lib/components/users/index.d.ts +1 -0
  253. package/lib/components/users/index.js +10 -0
  254. package/lib/config/Configuration.d.ts +111 -0
  255. package/lib/config/Configuration.js +30 -0
  256. package/lib/config/index.d.ts +2 -0
  257. package/lib/config/index.js +11 -0
  258. package/lib/config/integrations/Loom.d.ts +1 -0
  259. package/lib/config/integrations/Loom.js +21 -0
  260. package/lib/config/integrations/index.d.ts +1 -0
  261. package/lib/config/integrations/index.js +10 -0
  262. package/lib/hooks/assets/OutputshotPlaceholders.d.ts +19 -0
  263. package/lib/hooks/assets/OutputshotPlaceholders.js +28 -0
  264. package/lib/hooks/assets/index.d.ts +1 -0
  265. package/lib/hooks/assets/index.js +10 -0
  266. package/lib/hooks/index.d.ts +28 -0
  267. package/lib/hooks/index.js +38 -0
  268. package/lib/hooks/layouts/LayoutBackdrop.d.ts +2 -0
  269. package/lib/hooks/layouts/LayoutBackdrop.js +35 -0
  270. package/lib/hooks/layouts/LayoutScreenshot.d.ts +2 -0
  271. package/lib/hooks/layouts/LayoutScreenshot.js +48 -0
  272. package/lib/hooks/layouts/index.d.ts +2 -0
  273. package/lib/hooks/layouts/index.js +11 -0
  274. package/lib/hooks/useAIAgents.d.ts +13 -0
  275. package/lib/hooks/useAIAgents.js +77 -0
  276. package/lib/hooks/useAuthorization.d.ts +19 -0
  277. package/lib/hooks/useAuthorization.js +130 -0
  278. package/lib/hooks/useBackdrop.d.ts +28 -0
  279. package/lib/hooks/useBackdrop.js +105 -0
  280. package/lib/hooks/useBackdropJupyterLab.d.ts +15 -0
  281. package/lib/hooks/useBackdropJupyterLab.js +56 -0
  282. package/lib/hooks/useCache.d.ts +306 -0
  283. package/lib/hooks/useCache.js +3103 -0
  284. package/lib/hooks/useCellOutputshot.d.ts +4 -0
  285. package/lib/hooks/useCellOutputshot.js +33 -0
  286. package/lib/hooks/useContainsFocus.d.ts +9 -0
  287. package/lib/hooks/useContainsFocus.js +48 -0
  288. package/lib/hooks/useError.d.ts +9 -0
  289. package/lib/hooks/useError.js +31 -0
  290. package/lib/hooks/useExternalScript.d.ts +2 -0
  291. package/lib/hooks/useExternalScript.js +22 -0
  292. package/lib/hooks/useFocusTrap.d.ts +30 -0
  293. package/lib/hooks/useFocusTrap.js +53 -0
  294. package/lib/hooks/useIAM.d.ts +14 -0
  295. package/lib/hooks/useIAM.js +98 -0
  296. package/lib/hooks/useId.d.ts +19 -0
  297. package/lib/hooks/useId.js +105 -0
  298. package/lib/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
  299. package/lib/hooks/useIsomorphicLayoutEffect.js +16 -0
  300. package/lib/hooks/useJupyterLabTheme.d.ts +6 -0
  301. package/lib/hooks/useJupyterLabTheme.js +29 -0
  302. package/lib/hooks/useKeyboardEscape.d.ts +1 -0
  303. package/lib/hooks/useKeyboardEscape.js +23 -0
  304. package/lib/hooks/useLocationHandles.d.ts +10 -0
  305. package/lib/hooks/useLocationHandles.js +27 -0
  306. package/lib/hooks/useNavigate.d.ts +2 -0
  307. package/lib/hooks/useNavigate.js +29 -0
  308. package/lib/hooks/useNotebookAIAgent.d.ts +8 -0
  309. package/lib/hooks/useNotebookAIAgent.js +59 -0
  310. package/lib/hooks/useOnClickOutside.d.ts +1 -0
  311. package/lib/hooks/useOnClickOutside.js +34 -0
  312. package/lib/hooks/useRef.d.ts +10 -0
  313. package/lib/hooks/useRef.js +22 -0
  314. package/lib/hooks/useRun.d.ts +21 -0
  315. package/lib/hooks/useRun.js +85 -0
  316. package/lib/hooks/useRuntimes.d.ts +5 -0
  317. package/lib/hooks/useRuntimes.js +39 -0
  318. package/lib/hooks/useScreenshot.d.ts +21 -0
  319. package/lib/hooks/useScreenshot.js +65 -0
  320. package/lib/hooks/useToast.d.ts +42 -0
  321. package/lib/hooks/useToast.js +143 -0
  322. package/lib/hooks/useUpload.d.ts +7 -0
  323. package/lib/hooks/useUpload.js +51 -0
  324. package/lib/hooks/useUser.d.ts +3 -0
  325. package/lib/hooks/useUser.js +22 -0
  326. package/lib/hooks/useVisibilityObserver.d.ts +5 -0
  327. package/lib/hooks/useVisibilityObserver.js +47 -0
  328. package/lib/hooks/useWindowSize.d.ts +21 -0
  329. package/lib/hooks/useWindowSize.js +80 -0
  330. package/lib/i18n/Labels.d.ts +1 -0
  331. package/lib/i18n/Labels.js +10 -0
  332. package/lib/i18n/index.d.ts +1 -0
  333. package/lib/i18n/index.js +10 -0
  334. package/lib/index.d.ts +3 -0
  335. package/lib/index.js +6 -0
  336. package/lib/main.d.ts +1 -0
  337. package/lib/main.js +4 -0
  338. package/lib/mocks/components/FlashMock.d.ts +2 -0
  339. package/lib/mocks/components/FlashMock.js +18 -0
  340. package/lib/mocks/components/index.d.ts +1 -0
  341. package/lib/mocks/components/index.js +10 -0
  342. package/lib/mocks/hooks/index.d.ts +1 -0
  343. package/lib/mocks/hooks/index.js +10 -0
  344. package/lib/mocks/hooks/rests/index.d.ts +1 -0
  345. package/lib/mocks/hooks/rests/index.js +10 -0
  346. package/lib/mocks/hooks/rests/rests.d.ts +22 -0
  347. package/lib/mocks/hooks/rests/rests.js +37 -0
  348. package/lib/mocks/hooks/useRunMock.d.ts +6 -0
  349. package/lib/mocks/hooks/useRunMock.js +83 -0
  350. package/lib/mocks/index.d.ts +4 -0
  351. package/lib/mocks/index.js +14 -0
  352. package/lib/mocks/jupyter/index.d.ts +1 -0
  353. package/lib/mocks/jupyter/index.js +10 -0
  354. package/lib/mocks/models/CodeBlockMock.d.ts +1 -0
  355. package/lib/mocks/models/CodeBlockMock.js +10 -0
  356. package/lib/mocks/models/CodelineMock.d.ts +1 -0
  357. package/lib/mocks/models/CodelineMock.js +10 -0
  358. package/lib/mocks/models/CourseMock.d.ts +6 -0
  359. package/lib/mocks/models/CourseMock.js +34 -0
  360. package/lib/mocks/models/InviteMock.d.ts +6 -0
  361. package/lib/mocks/models/InviteMock.js +27 -0
  362. package/lib/mocks/models/JupyterLabUserMock.d.ts +2 -0
  363. package/lib/mocks/models/JupyterLabUserMock.js +17 -0
  364. package/lib/mocks/models/OrganisationMock.d.ts +5 -0
  365. package/lib/mocks/models/OrganisationMock.js +24 -0
  366. package/lib/mocks/models/SchoolMock.d.ts +6 -0
  367. package/lib/mocks/models/SchoolMock.js +25 -0
  368. package/lib/mocks/models/SpaceMock.d.ts +6 -0
  369. package/lib/mocks/models/SpaceMock.js +30 -0
  370. package/lib/mocks/models/TeamMock.d.ts +5 -0
  371. package/lib/mocks/models/TeamMock.js +26 -0
  372. package/lib/mocks/models/UserMock.d.ts +2 -0
  373. package/lib/mocks/models/UserMock.js +34 -0
  374. package/lib/mocks/models/index.d.ts +9 -0
  375. package/lib/mocks/models/index.js +18 -0
  376. package/lib/mocks/views/ActionMenuMock.d.ts +5 -0
  377. package/lib/mocks/views/ActionMenuMock.js +17 -0
  378. package/lib/mocks/views/ChartMock.d.ts +5 -0
  379. package/lib/mocks/views/ChartMock.js +20 -0
  380. package/lib/mocks/views/ChartMockOptions.d.ts +92 -0
  381. package/lib/mocks/views/ChartMockOptions.js +107 -0
  382. package/lib/mocks/views/DashboardMock.d.ts +2 -0
  383. package/lib/mocks/views/DashboardMock.js +123 -0
  384. package/lib/mocks/views/FormMock.d.ts +5 -0
  385. package/lib/mocks/views/FormMock.js +33 -0
  386. package/lib/mocks/views/TableMock.d.ts +5 -0
  387. package/lib/mocks/views/TableMock.js +160 -0
  388. package/lib/mocks/views/WipMock.d.ts +5 -0
  389. package/lib/mocks/views/WipMock.js +17 -0
  390. package/lib/mocks/views/index.d.ts +7 -0
  391. package/lib/mocks/views/index.js +16 -0
  392. package/lib/models/AIAgent.d.ts +17 -0
  393. package/lib/models/AIAgent.js +5 -0
  394. package/lib/models/Account.d.ts +4 -0
  395. package/lib/models/Account.js +5 -0
  396. package/lib/models/Assignment.d.ts +7 -0
  397. package/lib/models/Assignment.js +5 -0
  398. package/lib/models/Base.d.ts +16 -0
  399. package/lib/models/Base.js +5 -0
  400. package/lib/models/Cell.d.ts +8 -0
  401. package/lib/models/Cell.js +5 -0
  402. package/lib/models/CodeBlock.d.ts +10 -0
  403. package/lib/models/CodeBlock.js +5 -0
  404. package/lib/models/CodefeedBlocks.d.ts +7 -0
  405. package/lib/models/CodefeedBlocks.js +5 -0
  406. package/lib/models/Contact.d.ts +73 -0
  407. package/lib/models/Contact.js +95 -0
  408. package/lib/models/ContactEvent.d.ts +10 -0
  409. package/lib/models/ContactEvent.js +19 -0
  410. package/lib/models/ContactIAMProvider.d.ts +12 -0
  411. package/lib/models/ContactIAMProvider.js +20 -0
  412. package/lib/models/ContactTags.d.ts +23 -0
  413. package/lib/models/ContactTags.js +73 -0
  414. package/lib/models/Content.d.ts +5 -0
  415. package/lib/models/Content.js +5 -0
  416. package/lib/models/Course.d.ts +17 -0
  417. package/lib/models/Course.js +5 -0
  418. package/lib/models/Credits.d.ts +76 -0
  419. package/lib/models/Credits.js +16 -0
  420. package/lib/models/Dataset.d.ts +16 -0
  421. package/lib/models/Dataset.js +5 -0
  422. package/lib/models/Datasource.d.ts +11 -0
  423. package/lib/models/Datasource.js +19 -0
  424. package/lib/models/Dean.d.ts +3 -0
  425. package/lib/models/Dean.js +5 -0
  426. package/lib/models/Document.d.ts +8 -0
  427. package/lib/models/Document.js +5 -0
  428. package/lib/models/Environment.d.ts +82 -0
  429. package/lib/models/Environment.js +5 -0
  430. package/lib/models/Errors.d.ts +6 -0
  431. package/lib/models/Errors.js +18 -0
  432. package/lib/models/Exercise.d.ts +16 -0
  433. package/lib/models/Exercise.js +5 -0
  434. package/lib/models/GrowthKPI.d.ts +5 -0
  435. package/lib/models/GrowthKPI.js +14 -0
  436. package/lib/models/IAMProviderLinked.d.ts +9 -0
  437. package/lib/models/IAMProviderLinked.js +13 -0
  438. package/lib/models/IAMProviderPost.d.ts +8 -0
  439. package/lib/models/IAMProviderPost.js +22 -0
  440. package/lib/models/IAMProviderUsers.d.ts +49 -0
  441. package/lib/models/IAMProviderUsers.js +34 -0
  442. package/lib/models/IAMProvidersSpecs.d.ts +22 -0
  443. package/lib/models/IAMProvidersSpecs.js +72 -0
  444. package/lib/models/IAMToken.d.ts +11 -0
  445. package/lib/models/IAMToken.js +19 -0
  446. package/lib/models/Inbound.d.ts +25 -0
  447. package/lib/models/Inbound.js +34 -0
  448. package/lib/models/Instructor.d.ts +3 -0
  449. package/lib/models/Instructor.js +5 -0
  450. package/lib/models/Invite.d.ts +14 -0
  451. package/lib/models/Invite.js +24 -0
  452. package/lib/models/Item.d.ts +20 -0
  453. package/lib/models/Item.js +5 -0
  454. package/lib/models/ItemType.d.ts +2 -0
  455. package/lib/models/ItemType.js +5 -0
  456. package/lib/models/LandingRoles.d.ts +3 -0
  457. package/lib/models/LandingRoles.js +32 -0
  458. package/lib/models/Lesson.d.ts +5 -0
  459. package/lib/models/Lesson.js +5 -0
  460. package/lib/models/Library.d.ts +10 -0
  461. package/lib/models/Library.js +5 -0
  462. package/lib/models/Member.d.ts +3 -0
  463. package/lib/models/Member.js +5 -0
  464. package/lib/models/Notebook.d.ts +11 -0
  465. package/lib/models/Notebook.js +5 -0
  466. package/lib/models/Organization.d.ts +27 -0
  467. package/lib/models/Organization.js +41 -0
  468. package/lib/models/OrganizationMember.d.ts +6 -0
  469. package/lib/models/OrganizationMember.js +5 -0
  470. package/lib/models/Outbound.d.ts +41 -0
  471. package/lib/models/Outbound.js +50 -0
  472. package/lib/models/Page.d.ts +36 -0
  473. package/lib/models/Page.js +23 -0
  474. package/lib/models/PageTag.d.ts +19 -0
  475. package/lib/models/PageTag.js +26 -0
  476. package/lib/models/Profile.d.ts +1 -0
  477. package/lib/models/Profile.js +5 -0
  478. package/lib/models/Role.d.ts +9 -0
  479. package/lib/models/Role.js +5 -0
  480. package/lib/models/RolesOrganization.d.ts +9 -0
  481. package/lib/models/RolesOrganization.js +63 -0
  482. package/lib/models/RolesPlatform.d.ts +16 -0
  483. package/lib/models/RolesPlatform.js +147 -0
  484. package/lib/models/RolesTeam.d.ts +7 -0
  485. package/lib/models/RolesTeam.js +39 -0
  486. package/lib/models/Runtime.d.ts +65 -0
  487. package/lib/models/Runtime.js +16 -0
  488. package/lib/models/RuntimeSnapshot.d.ts +92 -0
  489. package/lib/models/RuntimeSnapshot.js +13 -0
  490. package/lib/models/School.d.ts +11 -0
  491. package/lib/models/School.js +5 -0
  492. package/lib/models/Secret.d.ts +10 -0
  493. package/lib/models/Secret.js +18 -0
  494. package/lib/models/Space.d.ts +34 -0
  495. package/lib/models/Space.js +39 -0
  496. package/lib/models/SpaceItem.d.ts +10 -0
  497. package/lib/models/SpaceItem.js +5 -0
  498. package/lib/models/SpaceMember.d.ts +6 -0
  499. package/lib/models/SpaceMember.js +5 -0
  500. package/lib/models/Student.d.ts +6 -0
  501. package/lib/models/Student.js +5 -0
  502. package/lib/models/StudentItem.d.ts +21 -0
  503. package/lib/models/StudentItem.js +5 -0
  504. package/lib/models/Survey.d.ts +20 -0
  505. package/lib/models/Survey.js +19 -0
  506. package/lib/models/Team.d.ts +22 -0
  507. package/lib/models/Team.js +37 -0
  508. package/lib/models/TeamMember.d.ts +6 -0
  509. package/lib/models/TeamMember.js +5 -0
  510. package/lib/models/URN.d.ts +63 -0
  511. package/lib/models/URN.js +45 -0
  512. package/lib/models/Usage.d.ts +46 -0
  513. package/lib/models/Usage.js +21 -0
  514. package/lib/models/User.d.ts +71 -0
  515. package/lib/models/User.js +103 -0
  516. package/lib/models/UserEvent.d.ts +10 -0
  517. package/lib/models/UserEvent.js +19 -0
  518. package/lib/models/UserOnboarding.d.ts +14 -0
  519. package/lib/models/UserOnboarding.js +24 -0
  520. package/lib/models/UserSettings.d.ts +16 -0
  521. package/lib/models/UserSettings.js +32 -0
  522. package/lib/models/WaitingListFormData.d.ts +6 -0
  523. package/lib/models/WaitingListFormData.js +5 -0
  524. package/lib/models/index.d.ts +65 -0
  525. package/lib/models/index.js +74 -0
  526. package/lib/routes/Routes.d.ts +3 -0
  527. package/lib/routes/Routes.js +12 -0
  528. package/lib/routes/index.d.ts +1 -0
  529. package/lib/routes/index.js +10 -0
  530. package/lib/state/State.d.ts +33 -0
  531. package/lib/state/State.js +49 -0
  532. package/lib/state/index.d.ts +3 -0
  533. package/lib/state/index.js +12 -0
  534. package/lib/state/storage/IAMStorage.d.ts +33 -0
  535. package/lib/state/storage/IAMStorage.js +81 -0
  536. package/lib/state/storage/index.d.ts +1 -0
  537. package/lib/state/storage/index.js +10 -0
  538. package/lib/state/substates/AIAgentState.d.ts +11 -0
  539. package/lib/state/substates/AIAgentState.js +45 -0
  540. package/lib/state/substates/CellState.d.ts +12 -0
  541. package/lib/state/substates/CellState.js +26 -0
  542. package/lib/state/substates/CoreState.d.ts +25 -0
  543. package/lib/state/substates/CoreState.js +93 -0
  544. package/lib/state/substates/DatasourceState.d.ts +11 -0
  545. package/lib/state/substates/DatasourceState.js +21 -0
  546. package/lib/state/substates/DocumentState.d.ts +10 -0
  547. package/lib/state/substates/DocumentState.js +19 -0
  548. package/lib/state/substates/GradeState.d.ts +10 -0
  549. package/lib/state/substates/GradeState.js +19 -0
  550. package/lib/state/substates/IAMState.d.ts +75 -0
  551. package/lib/state/substates/IAMState.js +294 -0
  552. package/lib/state/substates/JupyterLabState.d.ts +16 -0
  553. package/lib/state/substates/JupyterLabState.js +22 -0
  554. package/lib/state/substates/LayoutState.d.ts +62 -0
  555. package/lib/state/substates/LayoutState.js +74 -0
  556. package/lib/state/substates/NbformatState.d.ts +13 -0
  557. package/lib/state/substates/NbformatState.js +21 -0
  558. package/lib/state/substates/OrganizationState.d.ts +11 -0
  559. package/lib/state/substates/OrganizationState.js +21 -0
  560. package/lib/state/substates/RuntimesState.d.ts +88 -0
  561. package/lib/state/substates/RuntimesState.js +183 -0
  562. package/lib/state/substates/SpaceState.d.ts +11 -0
  563. package/lib/state/substates/SpaceState.js +21 -0
  564. package/lib/state/substates/SurveysState.d.ts +14 -0
  565. package/lib/state/substates/SurveysState.js +103 -0
  566. package/lib/state/substates/TeamState.d.ts +11 -0
  567. package/lib/state/substates/TeamState.js +22 -0
  568. package/lib/state/substates/index.d.ts +15 -0
  569. package/lib/state/substates/index.js +24 -0
  570. package/lib/test-setup.d.ts +1 -0
  571. package/lib/test-setup.js +7 -0
  572. package/lib/theme/DatalayerTheme.d.ts +37 -0
  573. package/lib/theme/DatalayerTheme.js +67 -0
  574. package/lib/theme/DatalayerThemeProvider.d.ts +17 -0
  575. package/lib/theme/DatalayerThemeProvider.js +74 -0
  576. package/lib/theme/Palette.d.ts +5 -0
  577. package/lib/theme/Palette.js +27 -0
  578. package/lib/theme/index.d.ts +3 -0
  579. package/lib/theme/index.js +12 -0
  580. package/lib/utils/Array.d.ts +2 -0
  581. package/lib/utils/Array.js +21 -0
  582. package/lib/utils/Avatar.d.ts +9 -0
  583. package/lib/utils/Avatar.js +39 -0
  584. package/lib/utils/Browser.d.ts +3 -0
  585. package/lib/utils/Browser.js +68 -0
  586. package/lib/utils/Cells.d.ts +2 -0
  587. package/lib/utils/Cells.js +28 -0
  588. package/lib/utils/Cookie.d.ts +12 -0
  589. package/lib/utils/Cookie.js +53 -0
  590. package/lib/utils/Date.d.ts +2 -0
  591. package/lib/utils/Date.js +65 -0
  592. package/lib/utils/Download.d.ts +3 -0
  593. package/lib/utils/Download.js +53 -0
  594. package/lib/utils/DownloadFile.d.ts +10 -0
  595. package/lib/utils/DownloadFile.js +41 -0
  596. package/lib/utils/Env.d.ts +1 -0
  597. package/lib/utils/Env.js +12 -0
  598. package/lib/utils/File.d.ts +7 -0
  599. package/lib/utils/File.js +21 -0
  600. package/lib/utils/Format.d.ts +17 -0
  601. package/lib/utils/Format.js +54 -0
  602. package/lib/utils/Ids.d.ts +2 -0
  603. package/lib/utils/Ids.js +17 -0
  604. package/lib/utils/Jupyter.d.ts +1 -0
  605. package/lib/utils/Jupyter.js +17 -0
  606. package/lib/utils/Lazy.d.ts +8 -0
  607. package/lib/utils/Lazy.js +29 -0
  608. package/lib/utils/Msc.d.ts +16 -0
  609. package/lib/utils/Msc.js +28 -0
  610. package/lib/utils/Name.d.ts +7 -0
  611. package/lib/utils/Name.js +39 -0
  612. package/lib/utils/Notebook.d.ts +19 -0
  613. package/lib/utils/Notebook.js +37 -0
  614. package/lib/utils/Number.d.ts +1 -0
  615. package/lib/utils/Number.js +26 -0
  616. package/lib/utils/Plots.d.ts +16 -0
  617. package/lib/utils/Plots.js +56 -0
  618. package/lib/utils/Random.d.ts +1 -0
  619. package/lib/utils/Random.js +12 -0
  620. package/lib/utils/Screenshot.d.ts +1 -0
  621. package/lib/utils/Screenshot.js +32 -0
  622. package/lib/utils/Scroll.d.ts +2 -0
  623. package/lib/utils/Scroll.js +36 -0
  624. package/lib/utils/Sleep.d.ts +2 -0
  625. package/lib/utils/Sleep.js +13 -0
  626. package/lib/utils/Snapshot.d.ts +7 -0
  627. package/lib/utils/Snapshot.js +26 -0
  628. package/lib/utils/String.d.ts +1 -0
  629. package/lib/utils/String.js +18 -0
  630. package/lib/utils/Uri.d.ts +2 -0
  631. package/lib/utils/Uri.js +31 -0
  632. package/lib/utils/Validator.d.ts +12 -0
  633. package/lib/utils/Validator.js +49 -0
  634. package/lib/utils/WithSuspense.d.ts +2 -0
  635. package/lib/utils/WithSuspense.js +26 -0
  636. package/lib/utils/index.d.ts +26 -0
  637. package/lib/utils/index.js +36 -0
  638. package/package.json +43 -4
  639. package/style/base.css +0 -5
  640. package/style/index.css +0 -7
  641. 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,5 @@
1
+ export declare const useRuntimes: () => {
2
+ mountLocalFolder: (kernelId: string) => void;
3
+ unmountLocalFolder: (kernelId: string) => void;
4
+ };
5
+ export default useRuntimes;
@@ -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,7 @@
1
+ export declare const useUploadForm: (url: string) => {
2
+ uploadAndSubmit: (formData: FormData) => Promise<any>;
3
+ isSuccess: boolean;
4
+ isLoading: boolean;
5
+ progress: number;
6
+ reset: () => void;
7
+ };
@@ -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,3 @@
1
+ import { IUser, IRole } from '../models';
2
+ export declare const useUser: (role?: IRole) => IUser;
3
+ export default useUser;
@@ -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;
@@ -0,0 +1,5 @@
1
+ import { RefObject } from 'react';
2
+ export type VisibilityMap = {
3
+ [key: string]: boolean;
4
+ };
5
+ export declare function useVisibilityObserver(navigationRef: RefObject<HTMLUListElement>, children: any): VisibilityMap[];