@datalayer/core 0.0.1 → 0.0.3

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 (676) hide show
  1. package/README.md +187 -7
  2. package/lib/App.css +47 -0
  3. package/lib/App.d.ts +3 -0
  4. package/lib/App.js +21 -5
  5. package/lib/__tests__/App.test.d.ts +1 -0
  6. package/lib/__tests__/App.test.js +17 -0
  7. package/lib/__tests__/hooks.test.d.ts +1 -0
  8. package/lib/__tests__/hooks.test.js +19 -0
  9. package/lib/__tests__/index.test.d.ts +1 -0
  10. package/lib/__tests__/index.test.js +27 -0
  11. package/lib/__tests__/integration.test.d.ts +1 -0
  12. package/lib/__tests__/integration.test.js +57 -0
  13. package/lib/__tests__/utils.test.d.ts +1 -0
  14. package/lib/__tests__/utils.test.js +59 -0
  15. package/lib/api/DatalayerApi.d.ts +75 -0
  16. package/lib/api/DatalayerApi.js +145 -0
  17. package/lib/api/index.d.ts +3 -0
  18. package/lib/api/index.js +7 -0
  19. package/lib/api/jupyter/exec/Python.d.ts +5 -0
  20. package/lib/api/jupyter/exec/Python.js +100 -0
  21. package/lib/api/jupyter/exec/Snippets.d.ts +145 -0
  22. package/lib/api/jupyter/exec/Snippets.js +120 -0
  23. package/lib/api/jupyter/exec/index.d.ts +2 -0
  24. package/lib/api/jupyter/exec/index.js +6 -0
  25. package/lib/api/jupyter/index.d.ts +2 -0
  26. package/lib/api/jupyter/index.js +6 -0
  27. package/lib/api/jupyter/kernelsHandler.d.ts +8 -0
  28. package/lib/api/jupyter/kernelsHandler.js +39 -0
  29. package/lib/api/runtimes/actions.d.ts +102 -0
  30. package/lib/api/runtimes/actions.js +264 -0
  31. package/lib/api/runtimes/apis.d.ts +273 -0
  32. package/lib/api/runtimes/apis.js +5 -0
  33. package/lib/api/runtimes/index.d.ts +5 -0
  34. package/lib/api/runtimes/index.js +9 -0
  35. package/lib/api/runtimes/settings.d.ts +15 -0
  36. package/lib/api/runtimes/settings.js +31 -0
  37. package/lib/api/runtimes/snapshots.d.ts +25 -0
  38. package/lib/api/runtimes/snapshots.js +150 -0
  39. package/lib/api/runtimes/utils.d.ts +7 -0
  40. package/lib/api/runtimes/utils.js +17 -0
  41. package/lib/assets/react.svg +1 -0
  42. package/lib/components/avatars/BoringAvatar.d.ts +19 -0
  43. package/lib/components/avatars/BoringAvatar.js +44 -0
  44. package/lib/components/avatars/BoringAvatar.stories.d.ts +27 -0
  45. package/lib/components/avatars/BoringAvatar.stories.js +23 -0
  46. package/lib/components/avatars/UserProfileAvatar.d.ts +13 -0
  47. package/lib/components/avatars/UserProfileAvatar.js +32 -0
  48. package/lib/components/avatars/index.d.ts +2 -0
  49. package/lib/components/avatars/index.js +6 -0
  50. package/lib/components/banners/NoAutomationBanner.d.ts +2 -0
  51. package/lib/components/banners/NoAutomationBanner.js +13 -0
  52. package/lib/components/banners/index.d.ts +1 -0
  53. package/lib/components/banners/index.js +5 -0
  54. package/lib/components/buttons/DownloadCSVButton.d.ts +13 -0
  55. package/lib/components/buttons/DownloadCSVButton.js +16 -0
  56. package/lib/components/buttons/DownloadJsonButton.d.ts +16 -0
  57. package/lib/components/buttons/DownloadJsonButton.js +18 -0
  58. package/lib/components/buttons/LongActionButton.d.ts +28 -0
  59. package/lib/components/buttons/LongActionButton.js +24 -0
  60. package/lib/components/buttons/UploadButton.d.ts +37 -0
  61. package/lib/components/buttons/UploadButton.js +43 -0
  62. package/lib/components/buttons/VariantType.d.ts +1 -0
  63. package/lib/components/buttons/VariantType.js +5 -0
  64. package/lib/components/buttons/index.d.ts +5 -0
  65. package/lib/components/buttons/index.js +9 -0
  66. package/lib/components/checkout/StripeCheckout.d.ts +32 -0
  67. package/lib/components/checkout/StripeCheckout.js +95 -0
  68. package/lib/components/checkout/index.d.ts +1 -0
  69. package/lib/components/checkout/index.js +5 -0
  70. package/lib/components/confetti/ConfettiSuccess.d.ts +2 -0
  71. package/lib/components/confetti/ConfettiSuccess.js +12 -0
  72. package/lib/components/confetti/index.d.ts +1 -0
  73. package/lib/components/confetti/index.js +5 -0
  74. package/lib/components/context/OrganizationSelect.d.ts +2 -0
  75. package/lib/components/context/OrganizationSelect.js +35 -0
  76. package/lib/components/context/SpaceSelect.d.ts +2 -0
  77. package/lib/components/context/SpaceSelect.js +43 -0
  78. package/lib/components/context/index.d.ts +2 -0
  79. package/lib/components/context/index.js +6 -0
  80. package/lib/components/display/AvatarSkeleton.d.ts +5 -0
  81. package/lib/components/display/AvatarSkeleton.js +11 -0
  82. package/lib/components/display/CenteredSpinner.d.ts +14 -0
  83. package/lib/components/display/CenteredSpinner.js +20 -0
  84. package/lib/components/display/CodePreview.d.ts +4 -0
  85. package/lib/components/display/CodePreview.js +15 -0
  86. package/lib/components/display/DatalayerBox.d.ts +8 -0
  87. package/lib/components/display/DatalayerBox.js +28 -0
  88. package/lib/components/display/HorizontalCenter.d.ts +9 -0
  89. package/lib/components/display/HorizontalCenter.js +14 -0
  90. package/lib/components/display/JupyterDialog.d.ts +69 -0
  91. package/lib/components/display/JupyterDialog.js +115 -0
  92. package/lib/components/display/Markdown.d.ts +23 -0
  93. package/lib/components/display/Markdown.js +20 -0
  94. package/lib/components/display/NavLink.d.ts +9 -0
  95. package/lib/components/display/NavLink.js +17 -0
  96. package/lib/components/display/NotebookSkeleton.d.ts +2 -0
  97. package/lib/components/display/NotebookSkeleton.js +11 -0
  98. package/lib/components/display/Placeholder.d.ts +2 -0
  99. package/lib/components/display/Placeholder.js +9 -0
  100. package/lib/components/display/ToTopBranded.d.ts +2 -0
  101. package/lib/components/display/ToTopBranded.js +11 -0
  102. package/lib/components/display/VisuallyHidden.d.ts +5 -0
  103. package/lib/components/display/VisuallyHidden.js +24 -0
  104. package/lib/components/display/index.d.ts +12 -0
  105. package/lib/components/display/index.js +16 -0
  106. package/lib/components/echarts/EChartsReact.d.ts +11 -0
  107. package/lib/components/echarts/EChartsReact.js +53 -0
  108. package/lib/components/echarts/index.d.ts +1 -0
  109. package/lib/components/echarts/index.js +5 -0
  110. package/lib/components/flashes/FlashClosable.d.ts +22 -0
  111. package/lib/components/flashes/FlashClosable.js +64 -0
  112. package/lib/components/flashes/FlashDisclaimer.d.ts +2 -0
  113. package/lib/components/flashes/FlashDisclaimer.js +18 -0
  114. package/lib/components/flashes/FlashGuest.d.ts +2 -0
  115. package/lib/components/flashes/FlashGuest.js +30 -0
  116. package/lib/components/flashes/FlashSurveys.d.ts +6 -0
  117. package/lib/components/flashes/FlashSurveys.js +36 -0
  118. package/lib/components/flashes/FlashUnauthorized.d.ts +2 -0
  119. package/lib/components/flashes/FlashUnauthorized.js +18 -0
  120. package/lib/components/flashes/index.d.ts +6 -0
  121. package/lib/components/flashes/index.js +10 -0
  122. package/lib/components/flashes/surveys/Survey2025_1.d.ts +3 -0
  123. package/lib/components/flashes/surveys/Survey2025_1.js +129 -0
  124. package/lib/components/flashes/surveys/SurveyProps.d.ts +6 -0
  125. package/lib/components/flashes/surveys/SurveyProps.js +5 -0
  126. package/lib/components/flashes/surveys/index.d.ts +2 -0
  127. package/lib/components/flashes/surveys/index.js +6 -0
  128. package/lib/components/iam/ExternalTokenSilentLogin.d.ts +5 -0
  129. package/lib/components/iam/ExternalTokenSilentLogin.js +33 -0
  130. package/lib/components/iam/index.d.ts +1 -0
  131. package/lib/components/iam/index.js +5 -0
  132. package/lib/components/icons/ArtifactIcon.d.ts +10 -0
  133. package/lib/components/icons/ArtifactIcon.js +58 -0
  134. package/lib/components/icons/index.d.ts +1 -0
  135. package/lib/components/icons/index.js +5 -0
  136. package/lib/components/index.d.ts +1 -0
  137. package/lib/components/index.js +5 -0
  138. package/lib/components/labels/VisibilityLabel.d.ts +4 -0
  139. package/lib/components/labels/VisibilityLabel.js +17 -0
  140. package/lib/components/labels/index.d.ts +1 -0
  141. package/lib/components/labels/index.js +5 -0
  142. package/lib/components/landings/StepBlock.d.ts +11 -0
  143. package/lib/components/landings/StepBlock.js +12 -0
  144. package/lib/components/landings/index.d.ts +1 -0
  145. package/lib/components/landings/index.js +5 -0
  146. package/lib/components/navbar/NavigationVisbilityObserver.d.ts +5 -0
  147. package/lib/components/navbar/NavigationVisbilityObserver.js +58 -0
  148. package/lib/components/navbar/SubdomainNavBar.d.ts +81 -0
  149. package/lib/components/navbar/SubdomainNavBar.js +235 -0
  150. package/lib/components/navbar/SubdomainNavBar.module.css +718 -0
  151. package/lib/components/navbar/index.d.ts +2 -0
  152. package/lib/components/navbar/index.js +6 -0
  153. package/lib/components/nbgrader/NbGradesDetails.d.ts +5 -0
  154. package/lib/components/nbgrader/NbGradesDetails.js +17 -0
  155. package/lib/components/nbgrader/index.d.ts +1 -0
  156. package/lib/components/nbgrader/index.js +5 -0
  157. package/lib/components/notebooks/JupyterNotebook.d.ts +12 -0
  158. package/lib/components/notebooks/JupyterNotebook.js +36 -0
  159. package/lib/components/notebooks/JupyterNotebookToolbar.d.ts +2 -0
  160. package/lib/components/notebooks/JupyterNotebookToolbar.js +39 -0
  161. package/lib/components/notebooks/index.d.ts +2 -0
  162. package/lib/components/notebooks/index.js +6 -0
  163. package/lib/components/primer/Helper.d.ts +32 -0
  164. package/lib/components/primer/Helper.js +19 -0
  165. package/lib/components/primer/Portals.d.ts +9 -0
  166. package/lib/components/primer/Portals.js +26 -0
  167. package/lib/components/primer/Styles.d.ts +2 -0
  168. package/lib/components/primer/Styles.js +11 -0
  169. package/lib/components/primer/index.d.ts +2 -0
  170. package/lib/components/primer/index.js +6 -0
  171. package/lib/components/progress/ConsumptionBar.d.ts +40 -0
  172. package/lib/components/progress/ConsumptionBar.js +49 -0
  173. package/lib/components/progress/CreditsIndicator.d.ts +27 -0
  174. package/lib/components/progress/CreditsIndicator.js +24 -0
  175. package/lib/components/progress/ProgressBar.d.ts +2 -0
  176. package/lib/components/progress/ProgressBar.js +21 -0
  177. package/lib/components/progress/ProgressRing.d.ts +36 -0
  178. package/lib/components/progress/ProgressRing.js +31 -0
  179. package/lib/components/progress/Timer.d.ts +9 -0
  180. package/lib/components/progress/Timer.js +28 -0
  181. package/lib/components/progress/index.d.ts +5 -0
  182. package/lib/components/progress/index.js +9 -0
  183. package/lib/components/runtimes/RuntimeCellVariables.d.ts +39 -0
  184. package/lib/components/runtimes/RuntimeCellVariables.js +172 -0
  185. package/lib/components/runtimes/RuntimeCellVariablesDialog.d.ts +37 -0
  186. package/lib/components/runtimes/RuntimeCellVariablesDialog.js +101 -0
  187. package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +53 -0
  188. package/lib/components/runtimes/RuntimeLauncherDialog.js +250 -0
  189. package/lib/components/runtimes/RuntimePickerBase.d.ts +69 -0
  190. package/lib/components/runtimes/RuntimePickerBase.js +109 -0
  191. package/lib/components/runtimes/RuntimePickerCell.d.ts +34 -0
  192. package/lib/components/runtimes/RuntimePickerCell.js +106 -0
  193. package/lib/components/runtimes/RuntimePickerNotebook.d.ts +42 -0
  194. package/lib/components/runtimes/RuntimePickerNotebook.js +168 -0
  195. package/lib/components/runtimes/RuntimeReservationControl.d.ts +47 -0
  196. package/lib/components/runtimes/RuntimeReservationControl.js +38 -0
  197. package/lib/components/runtimes/RuntimeSimplePicker.d.ts +34 -0
  198. package/lib/components/runtimes/RuntimeSimplePicker.js +156 -0
  199. package/lib/components/runtimes/RuntimeTransfer.d.ts +16 -0
  200. package/lib/components/runtimes/RuntimeTransfer.js +5 -0
  201. package/lib/components/runtimes/RuntimeUtils.d.ts +17 -0
  202. package/lib/components/runtimes/RuntimeUtils.js +168 -0
  203. package/lib/components/runtimes/RuntimeVariables.d.ts +38 -0
  204. package/lib/components/runtimes/RuntimeVariables.js +75 -0
  205. package/lib/components/runtimes/index.d.ts +11 -0
  206. package/lib/components/runtimes/index.js +15 -0
  207. package/lib/components/screenshot/ScreenCapture.d.ts +38 -0
  208. package/lib/components/screenshot/ScreenCapture.js +174 -0
  209. package/lib/components/screenshot/ScreenCaptureButton.d.ts +3 -0
  210. package/lib/components/screenshot/ScreenCaptureButton.js +21 -0
  211. package/lib/components/screenshot/index.d.ts +2 -0
  212. package/lib/components/screenshot/index.js +6 -0
  213. package/lib/components/snapshots/RuntimeSnapshotMenu.d.ts +36 -0
  214. package/lib/components/snapshots/RuntimeSnapshotMenu.js +164 -0
  215. package/lib/components/snapshots/index.d.ts +1 -0
  216. package/lib/components/snapshots/index.js +5 -0
  217. package/lib/components/snippets/SnippetDialog.d.ts +42 -0
  218. package/lib/components/snippets/SnippetDialog.js +42 -0
  219. package/lib/components/snippets/index.d.ts +1 -0
  220. package/lib/components/snippets/index.js +5 -0
  221. package/lib/components/storage/ContentsBrowser.d.ts +32 -0
  222. package/lib/components/storage/ContentsBrowser.js +255 -0
  223. package/lib/components/storage/ContentsItems.d.ts +58 -0
  224. package/lib/components/storage/ContentsItems.js +78 -0
  225. package/lib/components/storage/index.d.ts +2 -0
  226. package/lib/components/storage/index.js +6 -0
  227. package/lib/components/students/StudentItemStatus.d.ts +7 -0
  228. package/lib/components/students/StudentItemStatus.js +47 -0
  229. package/lib/components/students/index.d.ts +1 -0
  230. package/lib/components/students/index.js +5 -0
  231. package/lib/components/subnav/SubNav.d.ts +84 -0
  232. package/lib/components/subnav/SubNav.js +265 -0
  233. package/lib/components/subnav/SubNav.module.css +683 -0
  234. package/lib/components/subnav/index.d.ts +1 -0
  235. package/lib/components/subnav/index.js +5 -0
  236. package/lib/components/tables/DataTable.d.ts +5 -0
  237. package/lib/components/tables/DataTable.js +19 -0
  238. package/lib/components/tables/index.d.ts +1 -0
  239. package/lib/components/tables/index.js +5 -0
  240. package/lib/components/text-reveal/TextRevealAnimation.d.ts +6 -0
  241. package/lib/components/text-reveal/TextRevealAnimation.js +49 -0
  242. package/lib/components/text-reveal/TextRevealAnimation.module.css +43 -0
  243. package/lib/components/text-reveal/index.d.ts +1 -0
  244. package/lib/components/text-reveal/index.js +5 -0
  245. package/lib/components/text-reveal/useTextRevealAnimationLines.d.ts +4 -0
  246. package/lib/components/text-reveal/useTextRevealAnimationLines.js +47 -0
  247. package/lib/components/tokens/SpaceVariantToken.d.ts +5 -0
  248. package/lib/components/tokens/SpaceVariantToken.js +20 -0
  249. package/lib/components/tokens/index.d.ts +1 -0
  250. package/lib/components/tokens/index.js +5 -0
  251. package/lib/components/toolbars/AssignmentEditorToolbar.d.ts +4 -0
  252. package/lib/components/toolbars/AssignmentEditorToolbar.js +18 -0
  253. package/lib/components/toolbars/DocumentEditorToolbar.d.ts +2 -0
  254. package/lib/components/toolbars/DocumentEditorToolbar.js +12 -0
  255. package/lib/components/toolbars/NotebookEditorToolbar.d.ts +29 -0
  256. package/lib/components/toolbars/NotebookEditorToolbar.js +30 -0
  257. package/lib/components/toolbars/index.d.ts +3 -0
  258. package/lib/components/toolbars/index.js +7 -0
  259. package/lib/components/users/PeerIndicator.d.ts +18 -0
  260. package/lib/components/users/PeerIndicator.js +100 -0
  261. package/lib/components/users/index.d.ts +1 -0
  262. package/lib/components/users/index.js +5 -0
  263. package/lib/config/Configuration.d.ts +111 -0
  264. package/lib/config/Configuration.js +25 -0
  265. package/lib/config/index.d.ts +2 -0
  266. package/lib/config/index.js +6 -0
  267. package/lib/config/integrations/Loom.d.ts +1 -0
  268. package/lib/config/integrations/Loom.js +16 -0
  269. package/lib/config/integrations/index.d.ts +1 -0
  270. package/lib/config/integrations/index.js +5 -0
  271. package/lib/examples/CellExample.d.ts +6 -0
  272. package/lib/examples/CellExample.js +24 -0
  273. package/lib/examples/NotebookExample.d.ts +8 -0
  274. package/lib/examples/NotebookExample.js +22 -0
  275. package/lib/examples/NotebookExample1.ipynb.json +136 -0
  276. package/lib/hooks/assets/OutputshotPlaceholders.d.ts +19 -0
  277. package/lib/hooks/assets/OutputshotPlaceholders.js +23 -0
  278. package/lib/hooks/assets/index.d.ts +1 -0
  279. package/lib/hooks/assets/index.js +5 -0
  280. package/lib/hooks/index.d.ts +28 -0
  281. package/lib/hooks/index.js +33 -0
  282. package/lib/hooks/layouts/LayoutBackdrop.d.ts +2 -0
  283. package/lib/hooks/layouts/LayoutBackdrop.js +30 -0
  284. package/lib/hooks/layouts/LayoutScreenshot.css +58 -0
  285. package/lib/hooks/layouts/LayoutScreenshot.d.ts +3 -0
  286. package/lib/hooks/layouts/LayoutScreenshot.js +44 -0
  287. package/lib/hooks/layouts/index.d.ts +2 -0
  288. package/lib/hooks/layouts/index.js +6 -0
  289. package/lib/hooks/useAIAgents.d.ts +13 -0
  290. package/lib/hooks/useAIAgents.js +72 -0
  291. package/lib/hooks/useAuthorization.d.ts +19 -0
  292. package/lib/hooks/useAuthorization.js +124 -0
  293. package/lib/hooks/useBackdrop.d.ts +28 -0
  294. package/lib/hooks/useBackdrop.js +100 -0
  295. package/lib/hooks/useBackdropJupyterLab.d.ts +15 -0
  296. package/lib/hooks/useBackdropJupyterLab.js +51 -0
  297. package/lib/hooks/useCache.d.ts +306 -0
  298. package/lib/hooks/useCache.js +3098 -0
  299. package/lib/hooks/useCellOutputshot.d.ts +4 -0
  300. package/lib/hooks/useCellOutputshot.js +28 -0
  301. package/lib/hooks/useContainsFocus.d.ts +9 -0
  302. package/lib/hooks/useContainsFocus.js +43 -0
  303. package/lib/hooks/useDatalayer.d.ts +21 -0
  304. package/lib/hooks/useDatalayer.js +81 -0
  305. package/lib/hooks/useError.d.ts +9 -0
  306. package/lib/hooks/useError.js +26 -0
  307. package/lib/hooks/useExternalScript.d.ts +2 -0
  308. package/lib/hooks/useExternalScript.js +17 -0
  309. package/lib/hooks/useFocusTrap.d.ts +30 -0
  310. package/lib/hooks/useFocusTrap.js +48 -0
  311. package/lib/hooks/useIAM.d.ts +14 -0
  312. package/lib/hooks/useIAM.js +93 -0
  313. package/lib/hooks/useId.d.ts +19 -0
  314. package/lib/hooks/useId.js +100 -0
  315. package/lib/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
  316. package/lib/hooks/useIsomorphicLayoutEffect.js +11 -0
  317. package/lib/hooks/useJupyterLabTheme.d.ts +6 -0
  318. package/lib/hooks/useJupyterLabTheme.js +24 -0
  319. package/lib/hooks/useKeyboardEscape.d.ts +1 -0
  320. package/lib/hooks/useKeyboardEscape.js +18 -0
  321. package/lib/hooks/useLocationHandles.d.ts +10 -0
  322. package/lib/hooks/useLocationHandles.js +22 -0
  323. package/lib/hooks/useNavigate.d.ts +2 -0
  324. package/lib/hooks/useNavigate.js +24 -0
  325. package/lib/hooks/useNotebookAIAgent.d.ts +8 -0
  326. package/lib/hooks/useNotebookAIAgent.js +54 -0
  327. package/lib/hooks/useOnClickOutside.d.ts +1 -0
  328. package/lib/hooks/useOnClickOutside.js +29 -0
  329. package/lib/hooks/useRef.d.ts +10 -0
  330. package/lib/hooks/useRef.js +17 -0
  331. package/lib/hooks/useRuntimes.d.ts +5 -0
  332. package/lib/hooks/useRuntimes.js +34 -0
  333. package/lib/hooks/useScreenshot.d.ts +21 -0
  334. package/lib/hooks/useScreenshot.js +60 -0
  335. package/lib/hooks/useToast.d.ts +42 -0
  336. package/lib/hooks/useToast.js +141 -0
  337. package/lib/hooks/useUpload.d.ts +7 -0
  338. package/lib/hooks/useUpload.js +46 -0
  339. package/lib/hooks/useUser.d.ts +3 -0
  340. package/lib/hooks/useUser.js +22 -0
  341. package/lib/hooks/useVisibilityObserver.d.ts +5 -0
  342. package/lib/hooks/useVisibilityObserver.js +42 -0
  343. package/lib/hooks/useWindowSize.d.ts +21 -0
  344. package/lib/hooks/useWindowSize.js +74 -0
  345. package/lib/i18n/Labels.d.ts +1 -0
  346. package/lib/i18n/Labels.js +5 -0
  347. package/lib/i18n/index.d.ts +1 -0
  348. package/lib/i18n/index.js +5 -0
  349. package/lib/index.css +73 -0
  350. package/lib/index.d.ts +3 -0
  351. package/lib/index.js +6 -0
  352. package/lib/main.d.ts +1 -0
  353. package/lib/main.js +5 -2
  354. package/lib/mocks/components/FlashMock.d.ts +2 -0
  355. package/lib/mocks/components/FlashMock.js +13 -0
  356. package/lib/mocks/components/index.d.ts +1 -0
  357. package/lib/mocks/components/index.js +5 -0
  358. package/lib/mocks/hooks/index.d.ts +1 -0
  359. package/lib/mocks/hooks/index.js +5 -0
  360. package/lib/mocks/hooks/rests/index.d.ts +1 -0
  361. package/lib/mocks/hooks/rests/index.js +5 -0
  362. package/lib/mocks/hooks/rests/rests.d.ts +22 -0
  363. package/lib/mocks/hooks/rests/rests.js +32 -0
  364. package/lib/mocks/hooks/useDatalayerMock.d.ts +6 -0
  365. package/lib/mocks/hooks/useDatalayerMock.js +78 -0
  366. package/lib/mocks/index.d.ts +4 -0
  367. package/lib/mocks/index.js +9 -0
  368. package/lib/mocks/jupyter/index.d.ts +1 -0
  369. package/lib/mocks/jupyter/index.js +5 -0
  370. package/lib/mocks/models/CodeBlockMock.d.ts +1 -0
  371. package/lib/mocks/models/CodeBlockMock.js +5 -0
  372. package/lib/mocks/models/CodelineMock.d.ts +1 -0
  373. package/lib/mocks/models/CodelineMock.js +5 -0
  374. package/lib/mocks/models/CourseMock.d.ts +6 -0
  375. package/lib/mocks/models/CourseMock.js +29 -0
  376. package/lib/mocks/models/InviteMock.d.ts +6 -0
  377. package/lib/mocks/models/InviteMock.js +22 -0
  378. package/lib/mocks/models/JupyterLabUserMock.d.ts +2 -0
  379. package/lib/mocks/models/JupyterLabUserMock.js +17 -0
  380. package/lib/mocks/models/OrganisationMock.d.ts +5 -0
  381. package/lib/mocks/models/OrganisationMock.js +24 -0
  382. package/lib/mocks/models/SchoolMock.d.ts +6 -0
  383. package/lib/mocks/models/SchoolMock.js +25 -0
  384. package/lib/mocks/models/SpaceMock.d.ts +6 -0
  385. package/lib/mocks/models/SpaceMock.js +25 -0
  386. package/lib/mocks/models/TeamMock.d.ts +5 -0
  387. package/lib/mocks/models/TeamMock.js +26 -0
  388. package/lib/mocks/models/UserMock.d.ts +2 -0
  389. package/lib/mocks/models/UserMock.js +29 -0
  390. package/lib/mocks/models/index.d.ts +9 -0
  391. package/lib/mocks/models/index.js +13 -0
  392. package/lib/mocks/views/ActionMenuMock.d.ts +5 -0
  393. package/lib/mocks/views/ActionMenuMock.js +12 -0
  394. package/lib/mocks/views/ChartMock.d.ts +5 -0
  395. package/lib/mocks/views/ChartMock.js +15 -0
  396. package/lib/mocks/views/ChartMockOptions.d.ts +92 -0
  397. package/lib/mocks/views/ChartMockOptions.js +102 -0
  398. package/lib/mocks/views/DashboardMock.d.ts +2 -0
  399. package/lib/mocks/views/DashboardMock.js +118 -0
  400. package/lib/mocks/views/FormMock.d.ts +5 -0
  401. package/lib/mocks/views/FormMock.js +28 -0
  402. package/lib/mocks/views/TableMock.d.ts +5 -0
  403. package/lib/mocks/views/TableMock.js +155 -0
  404. package/lib/mocks/views/WipMock.d.ts +5 -0
  405. package/lib/mocks/views/WipMock.js +12 -0
  406. package/lib/mocks/views/index.d.ts +7 -0
  407. package/lib/mocks/views/index.js +11 -0
  408. package/lib/models/AIAgent.d.ts +17 -0
  409. package/lib/models/AIAgent.js +5 -0
  410. package/lib/models/Account.d.ts +4 -0
  411. package/lib/models/Account.js +5 -0
  412. package/lib/models/Assignment.d.ts +7 -0
  413. package/lib/models/Assignment.js +5 -0
  414. package/lib/models/Base.d.ts +16 -0
  415. package/lib/models/Base.js +5 -0
  416. package/lib/models/Cell.d.ts +8 -0
  417. package/lib/models/Cell.js +5 -0
  418. package/lib/models/CodeBlock.d.ts +10 -0
  419. package/lib/models/CodeBlock.js +5 -0
  420. package/lib/models/CodefeedBlocks.d.ts +7 -0
  421. package/lib/models/CodefeedBlocks.js +5 -0
  422. package/lib/models/Contact.d.ts +73 -0
  423. package/lib/models/Contact.js +90 -0
  424. package/lib/models/ContactEvent.d.ts +10 -0
  425. package/lib/models/ContactEvent.js +14 -0
  426. package/lib/models/ContactIAMProvider.d.ts +12 -0
  427. package/lib/models/ContactIAMProvider.js +20 -0
  428. package/lib/models/ContactTags.d.ts +23 -0
  429. package/lib/models/ContactTags.js +73 -0
  430. package/lib/models/Content.d.ts +5 -0
  431. package/lib/models/Content.js +5 -0
  432. package/lib/models/Course.d.ts +17 -0
  433. package/lib/models/Course.js +5 -0
  434. package/lib/models/Credits.d.ts +76 -0
  435. package/lib/models/Credits.js +11 -0
  436. package/lib/models/Dataset.d.ts +16 -0
  437. package/lib/models/Dataset.js +5 -0
  438. package/lib/models/Datasource.d.ts +11 -0
  439. package/lib/models/Datasource.js +14 -0
  440. package/lib/models/Dean.d.ts +3 -0
  441. package/lib/models/Dean.js +5 -0
  442. package/lib/models/Document.d.ts +8 -0
  443. package/lib/models/Document.js +5 -0
  444. package/lib/models/Environment.d.ts +82 -0
  445. package/lib/models/Environment.js +5 -0
  446. package/lib/models/Errors.d.ts +6 -0
  447. package/lib/models/Errors.js +13 -0
  448. package/lib/models/Exercise.d.ts +16 -0
  449. package/lib/models/Exercise.js +5 -0
  450. package/lib/models/GrowthKPI.d.ts +5 -0
  451. package/lib/models/GrowthKPI.js +9 -0
  452. package/lib/models/IAMProviderLinked.d.ts +9 -0
  453. package/lib/models/IAMProviderLinked.js +13 -0
  454. package/lib/models/IAMProviderPost.d.ts +8 -0
  455. package/lib/models/IAMProviderPost.js +22 -0
  456. package/lib/models/IAMProviderUsers.d.ts +49 -0
  457. package/lib/models/IAMProviderUsers.js +29 -0
  458. package/lib/models/IAMProvidersSpecs.d.ts +22 -0
  459. package/lib/models/IAMProvidersSpecs.js +72 -0
  460. package/lib/models/IAMToken.d.ts +11 -0
  461. package/lib/models/IAMToken.js +14 -0
  462. package/lib/models/Inbound.d.ts +25 -0
  463. package/lib/models/Inbound.js +29 -0
  464. package/lib/models/Instructor.d.ts +3 -0
  465. package/lib/models/Instructor.js +5 -0
  466. package/lib/models/Invite.d.ts +14 -0
  467. package/lib/models/Invite.js +24 -0
  468. package/lib/models/Item.d.ts +20 -0
  469. package/lib/models/Item.js +5 -0
  470. package/lib/models/ItemType.d.ts +2 -0
  471. package/lib/models/ItemType.js +5 -0
  472. package/lib/models/LandingRoles.d.ts +3 -0
  473. package/lib/models/LandingRoles.js +27 -0
  474. package/lib/models/Lesson.d.ts +5 -0
  475. package/lib/models/Lesson.js +5 -0
  476. package/lib/models/Library.d.ts +10 -0
  477. package/lib/models/Library.js +5 -0
  478. package/lib/models/Member.d.ts +3 -0
  479. package/lib/models/Member.js +5 -0
  480. package/lib/models/Notebook.d.ts +11 -0
  481. package/lib/models/Notebook.js +5 -0
  482. package/lib/models/Organization.d.ts +27 -0
  483. package/lib/models/Organization.js +36 -0
  484. package/lib/models/OrganizationMember.d.ts +6 -0
  485. package/lib/models/OrganizationMember.js +5 -0
  486. package/lib/models/Outbound.d.ts +41 -0
  487. package/lib/models/Outbound.js +45 -0
  488. package/lib/models/Page.d.ts +36 -0
  489. package/lib/models/Page.js +23 -0
  490. package/lib/models/PageTag.d.ts +19 -0
  491. package/lib/models/PageTag.js +26 -0
  492. package/lib/models/Profile.d.ts +1 -0
  493. package/lib/models/Profile.js +5 -0
  494. package/lib/models/Role.d.ts +9 -0
  495. package/lib/models/Role.js +5 -0
  496. package/lib/models/RolesOrganization.d.ts +9 -0
  497. package/lib/models/RolesOrganization.js +58 -0
  498. package/lib/models/RolesPlatform.d.ts +16 -0
  499. package/lib/models/RolesPlatform.js +142 -0
  500. package/lib/models/RolesTeam.d.ts +7 -0
  501. package/lib/models/RolesTeam.js +34 -0
  502. package/lib/models/Runtime.d.ts +123 -0
  503. package/lib/models/Runtime.js +18 -0
  504. package/lib/models/RuntimeSnapshot.d.ts +92 -0
  505. package/lib/models/RuntimeSnapshot.js +13 -0
  506. package/lib/models/School.d.ts +11 -0
  507. package/lib/models/School.js +5 -0
  508. package/lib/models/Secret.d.ts +10 -0
  509. package/lib/models/Secret.js +13 -0
  510. package/lib/models/Space.d.ts +34 -0
  511. package/lib/models/Space.js +39 -0
  512. package/lib/models/SpaceItem.d.ts +10 -0
  513. package/lib/models/SpaceItem.js +5 -0
  514. package/lib/models/SpaceMember.d.ts +6 -0
  515. package/lib/models/SpaceMember.js +5 -0
  516. package/lib/models/Student.d.ts +6 -0
  517. package/lib/models/Student.js +5 -0
  518. package/lib/models/StudentItem.d.ts +21 -0
  519. package/lib/models/StudentItem.js +5 -0
  520. package/lib/models/Survey.d.ts +20 -0
  521. package/lib/models/Survey.js +14 -0
  522. package/lib/models/Team.d.ts +22 -0
  523. package/lib/models/Team.js +32 -0
  524. package/lib/models/TeamMember.d.ts +6 -0
  525. package/lib/models/TeamMember.js +5 -0
  526. package/lib/models/URN.d.ts +63 -0
  527. package/lib/models/URN.js +40 -0
  528. package/lib/models/Usage.d.ts +46 -0
  529. package/lib/models/Usage.js +21 -0
  530. package/lib/models/User.d.ts +71 -0
  531. package/lib/models/User.js +98 -0
  532. package/lib/models/UserEvent.d.ts +10 -0
  533. package/lib/models/UserEvent.js +14 -0
  534. package/lib/models/UserOnboarding.d.ts +14 -0
  535. package/lib/models/UserOnboarding.js +19 -0
  536. package/lib/models/UserSettings.d.ts +16 -0
  537. package/lib/models/UserSettings.js +27 -0
  538. package/lib/models/WaitingListFormData.d.ts +6 -0
  539. package/lib/models/WaitingListFormData.js +5 -0
  540. package/lib/models/index.d.ts +65 -0
  541. package/lib/models/index.js +69 -0
  542. package/lib/routes/Routes.d.ts +3 -0
  543. package/lib/routes/Routes.js +7 -0
  544. package/lib/routes/index.d.ts +1 -0
  545. package/lib/routes/index.js +5 -0
  546. package/lib/state/State.d.ts +33 -0
  547. package/lib/state/State.js +44 -0
  548. package/lib/state/index.d.ts +3 -0
  549. package/lib/state/index.js +7 -0
  550. package/lib/state/storage/IAMStorage.d.ts +33 -0
  551. package/lib/state/storage/IAMStorage.js +76 -0
  552. package/lib/state/storage/index.d.ts +1 -0
  553. package/lib/state/storage/index.js +5 -0
  554. package/lib/state/substates/AIAgentState.d.ts +11 -0
  555. package/lib/state/substates/AIAgentState.js +40 -0
  556. package/lib/state/substates/CellState.d.ts +12 -0
  557. package/lib/state/substates/CellState.js +21 -0
  558. package/lib/state/substates/CoreState.d.ts +25 -0
  559. package/lib/state/substates/CoreState.js +88 -0
  560. package/lib/state/substates/DatasourceState.d.ts +11 -0
  561. package/lib/state/substates/DatasourceState.js +16 -0
  562. package/lib/state/substates/DocumentState.d.ts +10 -0
  563. package/lib/state/substates/DocumentState.js +14 -0
  564. package/lib/state/substates/GradeState.d.ts +10 -0
  565. package/lib/state/substates/GradeState.js +14 -0
  566. package/lib/state/substates/IAMState.d.ts +75 -0
  567. package/lib/state/substates/IAMState.js +291 -0
  568. package/lib/state/substates/JupyterLabState.d.ts +16 -0
  569. package/lib/state/substates/JupyterLabState.js +17 -0
  570. package/lib/state/substates/LayoutState.d.ts +62 -0
  571. package/lib/state/substates/LayoutState.js +74 -0
  572. package/lib/state/substates/NbformatState.d.ts +13 -0
  573. package/lib/state/substates/NbformatState.js +16 -0
  574. package/lib/state/substates/OrganizationState.d.ts +11 -0
  575. package/lib/state/substates/OrganizationState.js +16 -0
  576. package/lib/state/substates/RuntimesState.d.ts +88 -0
  577. package/lib/state/substates/RuntimesState.js +178 -0
  578. package/lib/state/substates/SpaceState.d.ts +11 -0
  579. package/lib/state/substates/SpaceState.js +16 -0
  580. package/lib/state/substates/SurveysState.d.ts +14 -0
  581. package/lib/state/substates/SurveysState.js +98 -0
  582. package/lib/state/substates/TeamState.d.ts +11 -0
  583. package/lib/state/substates/TeamState.js +17 -0
  584. package/lib/state/substates/index.d.ts +15 -0
  585. package/lib/state/substates/index.js +19 -0
  586. package/lib/stories/assets/accessibility.png +0 -0
  587. package/lib/stories/assets/accessibility.svg +1 -0
  588. package/lib/stories/assets/addon-library.png +0 -0
  589. package/lib/stories/assets/assets.png +0 -0
  590. package/lib/stories/assets/context.png +0 -0
  591. package/lib/stories/assets/discord.svg +1 -0
  592. package/lib/stories/assets/docs.png +0 -0
  593. package/lib/stories/assets/figma-plugin.png +0 -0
  594. package/lib/stories/assets/github.svg +1 -0
  595. package/lib/stories/assets/share.png +0 -0
  596. package/lib/stories/assets/styling.png +0 -0
  597. package/lib/stories/assets/testing.png +0 -0
  598. package/lib/stories/assets/theming.png +0 -0
  599. package/lib/stories/assets/tutorials.svg +1 -0
  600. package/lib/stories/assets/youtube.svg +1 -0
  601. package/lib/stories/button.css +35 -0
  602. package/lib/stories/header.css +37 -0
  603. package/lib/stories/page.css +73 -0
  604. package/lib/test-setup.d.ts +1 -0
  605. package/lib/test-setup.js +57 -0
  606. package/lib/theme/DatalayerTheme.d.ts +37 -0
  607. package/lib/theme/DatalayerTheme.js +62 -0
  608. package/lib/theme/DatalayerThemeProvider.d.ts +17 -0
  609. package/lib/theme/DatalayerThemeProvider.js +69 -0
  610. package/lib/theme/Palette.d.ts +5 -0
  611. package/lib/theme/Palette.js +22 -0
  612. package/lib/theme/index.d.ts +3 -0
  613. package/lib/theme/index.js +7 -0
  614. package/lib/utils/Array.d.ts +2 -0
  615. package/lib/utils/Array.js +16 -0
  616. package/lib/utils/Avatar.d.ts +9 -0
  617. package/lib/utils/Avatar.js +34 -0
  618. package/lib/utils/Browser.d.ts +3 -0
  619. package/lib/utils/Browser.js +63 -0
  620. package/lib/utils/Cells.d.ts +2 -0
  621. package/lib/utils/Cells.js +28 -0
  622. package/lib/utils/Cookie.d.ts +12 -0
  623. package/lib/utils/Cookie.js +48 -0
  624. package/lib/utils/Date.d.ts +2 -0
  625. package/lib/utils/Date.js +60 -0
  626. package/lib/utils/Download.d.ts +3 -0
  627. package/lib/utils/Download.js +48 -0
  628. package/lib/utils/DownloadFile.d.ts +10 -0
  629. package/lib/utils/DownloadFile.js +36 -0
  630. package/lib/utils/Env.d.ts +1 -0
  631. package/lib/utils/Env.js +7 -0
  632. package/lib/utils/File.d.ts +7 -0
  633. package/lib/utils/File.js +16 -0
  634. package/lib/utils/Format.d.ts +17 -0
  635. package/lib/utils/Format.js +54 -0
  636. package/lib/utils/Ids.d.ts +2 -0
  637. package/lib/utils/Ids.js +12 -0
  638. package/lib/utils/Jupyter.d.ts +1 -0
  639. package/lib/utils/Jupyter.js +12 -0
  640. package/lib/utils/Lazy.d.ts +8 -0
  641. package/lib/utils/Lazy.js +23 -0
  642. package/lib/utils/Msc.d.ts +16 -0
  643. package/lib/utils/Msc.js +28 -0
  644. package/lib/utils/Name.d.ts +7 -0
  645. package/lib/utils/Name.js +34 -0
  646. package/lib/utils/Notebook.d.ts +19 -0
  647. package/lib/utils/Notebook.js +37 -0
  648. package/lib/utils/Number.d.ts +1 -0
  649. package/lib/utils/Number.js +21 -0
  650. package/lib/utils/Plots.d.ts +16 -0
  651. package/lib/utils/Plots.js +56 -0
  652. package/lib/utils/Random.d.ts +1 -0
  653. package/lib/utils/Random.js +7 -0
  654. package/lib/utils/Screenshot.d.ts +1 -0
  655. package/lib/utils/Screenshot.js +27 -0
  656. package/lib/utils/Scroll.d.ts +2 -0
  657. package/lib/utils/Scroll.js +32 -0
  658. package/lib/utils/Sleep.d.ts +2 -0
  659. package/lib/utils/Sleep.js +8 -0
  660. package/lib/utils/Snapshot.d.ts +7 -0
  661. package/lib/utils/Snapshot.js +21 -0
  662. package/lib/utils/String.d.ts +1 -0
  663. package/lib/utils/String.js +13 -0
  664. package/lib/utils/Uri.d.ts +2 -0
  665. package/lib/utils/Uri.js +26 -0
  666. package/lib/utils/Validator.d.ts +12 -0
  667. package/lib/utils/Validator.js +44 -0
  668. package/lib/utils/WithSuspense.d.ts +2 -0
  669. package/lib/utils/WithSuspense.js +21 -0
  670. package/lib/utils/index.d.ts +26 -0
  671. package/lib/utils/index.js +31 -0
  672. package/package.json +86 -17
  673. package/style/animation/Animation.module.css +174 -0
  674. package/style/base.css +62 -3
  675. package/style/index.css +2 -3
  676. package/style/index.js +0 -7
@@ -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 { useLocation, useParams } from "react-router-dom";
6
+ import { useRunStore } from "../state";
7
+ export const useLocationHandles = () => {
8
+ const { accountHandle, spaceHandle } = useParams();
9
+ const { pathname } = useLocation();
10
+ const runStore = useRunStore();
11
+ if (pathname.startsWith("/public")) {
12
+ return {
13
+ accountHandle: runStore.iam().user?.handle,
14
+ spaceHandler: runStore.layout().space?.handle,
15
+ };
16
+ }
17
+ return {
18
+ accountHandle,
19
+ spaceHandle,
20
+ };
21
+ };
22
+ export default useLocationHandles;
@@ -0,0 +1,2 @@
1
+ export declare const useNavigate: () => (location: string, e?: any, resetPortals?: boolean, options?: any) => void;
2
+ export default useNavigate;
@@ -0,0 +1,24 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { useNavigate as useRouterNavigate } from "react-router-dom";
6
+ import { useLayoutStore } from '../state';
7
+ export const useNavigate = () => {
8
+ const routerNavigate = useRouterNavigate();
9
+ const layoutStore = useLayoutStore();
10
+ const navigate = (location, e = undefined, resetPortals = true, options = undefined) => {
11
+ if (e) {
12
+ e.preventDefault();
13
+ }
14
+ if (resetPortals) {
15
+ layoutStore.resetLeftPortal();
16
+ layoutStore.resetRightPortal();
17
+ }
18
+ window.scrollTo(0, 0);
19
+ document.body.scrollTop = 0;
20
+ routerNavigate(location, options);
21
+ };
22
+ return navigate;
23
+ };
24
+ export default useNavigate;
@@ -0,0 +1,8 @@
1
+ import type { IAIAgent } from '../models';
2
+ /**
3
+ * Get the document AI Agent if any.
4
+ *
5
+ * It handles checking the AI Agent is alive so it should only be use once per document.
6
+ */
7
+ export declare function useNotebookAIAgent(notebookId: string): IAIAgent | undefined;
8
+ export default useNotebookAIAgent;
@@ -0,0 +1,54 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { useEffect } from 'react';
6
+ import { useAIAgentStore } from '../state';
7
+ import { useAIAgents } from './useAIAgents';
8
+ /**
9
+ * Get the document AI Agent if any.
10
+ *
11
+ * It handles checking the AI Agent is alive so it should only be use once per document.
12
+ */
13
+ export function useNotebookAIAgent(notebookId) {
14
+ const { getAIAgent } = useAIAgents();
15
+ const { aiAgents, addAIAgent, deleteAIAgent, updateAIAgent } = useAIAgentStore();
16
+ // Check AI Agent is alive.
17
+ useEffect(() => {
18
+ let abortController;
19
+ const refreshAIAgent = async () => {
20
+ abortController = new AbortController();
21
+ try {
22
+ const response = await getAIAgent(notebookId, { signal: abortController.signal });
23
+ if (!response.success) {
24
+ deleteAIAgent(notebookId);
25
+ return;
26
+ }
27
+ const currentAgent = aiAgents.find(agent => agent.documentId === notebookId);
28
+ const runtimeId = response.agent.runtime?.id;
29
+ if (currentAgent) {
30
+ if (currentAgent.runtimeId !== runtimeId) {
31
+ updateAIAgent(notebookId, runtimeId);
32
+ }
33
+ }
34
+ else {
35
+ addAIAgent({
36
+ documentId: notebookId,
37
+ runtimeId,
38
+ });
39
+ }
40
+ }
41
+ catch (r) {
42
+ deleteAIAgent(notebookId);
43
+ }
44
+ };
45
+ const refreshInterval = setInterval(refreshAIAgent, 60_000);
46
+ return () => {
47
+ abortController?.abort('Component unmounted');
48
+ clearInterval(refreshInterval);
49
+ };
50
+ }, [aiAgents, notebookId]);
51
+ const aiAgent = aiAgents.find(aiAgent => aiAgent.documentId === notebookId);
52
+ return aiAgent;
53
+ }
54
+ export default useNotebookAIAgent;
@@ -0,0 +1 @@
1
+ export declare function useOnClickOutside(ref: any, handler: any): void;
@@ -0,0 +1,29 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { useEffect } from 'react';
6
+ export function useOnClickOutside(ref, handler) {
7
+ useEffect(() => {
8
+ const listener = event => {
9
+ // Do nothing if clicking ref's element or descendent elements
10
+ if (!ref.current || ref.current.contains(event.target)) {
11
+ return;
12
+ }
13
+ handler(event);
14
+ };
15
+ document.addEventListener('mousedown', listener);
16
+ document.addEventListener('touchstart', listener, { passive: true });
17
+ return () => {
18
+ document.removeEventListener('mousedown', listener);
19
+ document.removeEventListener('touchstart', listener);
20
+ };
21
+ },
22
+ // Add ref and handler to effect dependencies
23
+ // It's worth noting that because passed in handler is a new ...
24
+ // ... function on every render that will cause this effect ...
25
+ // ... callback/cleanup to run every render. It's not a big deal ...
26
+ // ... but to optimize you can wrap handler in useCallback before ...
27
+ // ... passing it into this hook.
28
+ [ref, handler]);
29
+ }
@@ -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,17 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { useRef } from 'react';
6
+ /**
7
+ * There are some situations where we only want to create a new ref if one is not provided to a component
8
+ * or hook as a prop. However, due to the `rules-of-hooks`, we cannot conditionally make a call to `React.useRef`
9
+ * only in the situations where the ref is not provided as a prop.
10
+ * This hook aims to encapsulate that logic, so the consumer doesn't need to be concerned with violating `rules-of-hooks`.
11
+ * @param providedRef The ref to use - if undefined, will use the ref from a call to React.useRef
12
+ * @type TRef The type of the RefObject which should be created.
13
+ */
14
+ export function useProvidedRefOrCreate(providedRef) {
15
+ const createdRef = useRef(null);
16
+ return providedRef ?? createdRef;
17
+ }
@@ -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,34 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { requestJupyterKernelsExtension } from '../api';
6
+ export const useRuntimes = () => {
7
+ // Folder Mounting ----------------------------------------------------------
8
+ const mountLocalFolder = (kernelId) => {
9
+ requestJupyterKernelsExtension(`jump/${kernelId}`)
10
+ .then(data => {
11
+ // console.log('--- Mount Local Folder', data);
12
+ })
13
+ .catch(reason => {
14
+ console.error(`Error while accessing the jupyter server jupyter_kernels extension.\n${reason}`);
15
+ });
16
+ };
17
+ const unmountLocalFolder = (kernelId) => {
18
+ requestJupyterKernelsExtension(`jump/${kernelId}`, {
19
+ method: 'DELETE'
20
+ })
21
+ .then(data => {
22
+ // console.log('--- Unmount Local Folder', data);
23
+ })
24
+ .catch(reason => {
25
+ console.error(`Error while accessing the jupyter server jupyter_kernels extension.\n${reason}`);
26
+ });
27
+ };
28
+ // --------------------------------------------------------------------------
29
+ return {
30
+ mountLocalFolder,
31
+ unmountLocalFolder
32
+ };
33
+ };
34
+ 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,60 @@
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
+ import { createContext, useState, useContext } from 'react';
7
+ import { LayoutScreenshot } from "./layouts";
8
+ export const ScreenshotContext = createContext({
9
+ closeScreenshot: () => { },
10
+ displayScreenshot: (nextScreenshot) => { },
11
+ });
12
+ export function useScreenshot() {
13
+ const context = useContext(ScreenshotContext);
14
+ if (!context)
15
+ throw new Error('useContext must be inside a provider with a value.');
16
+ return context;
17
+ }
18
+ /**
19
+ * The type for the Screenshot context provider.
20
+ */
21
+ export const ScreenshotContextProvider = ScreenshotContext.Provider;
22
+ export function ScreenshotProvider(props) {
23
+ const { children, zIndex, disableDarken, screenshotSurface } = props;
24
+ const defaultScreenshotSurface = {
25
+ position: "fixed",
26
+ top: 0,
27
+ left: 0,
28
+ width: '100%',
29
+ height: '100%',
30
+ display: 'flex',
31
+ alignItems: 'center',
32
+ justifyContent: 'center',
33
+ backgroundColor: disableDarken ? 'initial' : 'rgba(0, 0, 0, 0.5)',
34
+ zIndex,
35
+ };
36
+ const [screenshot, setScreenshot] = useState({
37
+ open: false,
38
+ render: (closeScreenshot) => _jsx(_Fragment, {})
39
+ });
40
+ const displayScreenshot = (nextScreenshot) => {
41
+ setScreenshot({
42
+ open: true,
43
+ render: nextScreenshot
44
+ });
45
+ };
46
+ const closeScreenshot = () => {
47
+ setScreenshot({
48
+ open: false,
49
+ render: (closeScreenshot) => _jsx(_Fragment, {})
50
+ });
51
+ };
52
+ return (_jsxs(ScreenshotContextProvider, { value: { closeScreenshot, displayScreenshot }, children: [_jsx(LayoutScreenshot, {}), children, screenshot.open &&
53
+ (screenshotSurface ? (screenshotSurface(screenshot.render(closeScreenshot))) : (_jsx("div", { style: defaultScreenshotSurface, children: screenshot.render(closeScreenshot) })))] }));
54
+ }
55
+ ScreenshotProvider.defaultProps = {
56
+ children: undefined,
57
+ disableScreenshot: false,
58
+ zIndex: 9999,
59
+ screenshotSurface: undefined,
60
+ };
@@ -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,141 @@
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
+ import React from 'react';
7
+ import { toast } from 'react-toastify';
8
+ import { Notification } from '@jupyterlab/apputils';
9
+ import { Button } from '@primer/react';
10
+ import { isInsideJupyterLab } from '../utils';
11
+ import { DatalayerThemeProvider } from '../theme';
12
+ const TOAST_POSITION = toast.POSITION.BOTTOM_RIGHT;
13
+ const displayType2Class = {
14
+ accent: 'primary',
15
+ link: 'invisible',
16
+ warn: 'danger',
17
+ default: 'default'
18
+ };
19
+ /**
20
+ * Create a button with customized callback in a toast
21
+ */
22
+ function ToastButton({ action, closeToast }) {
23
+ const clickHandler = (event) => {
24
+ action.callback(event);
25
+ if (!event.defaultPrevented) {
26
+ closeToast();
27
+ }
28
+ };
29
+ return (_jsx(Button, { title: action.caption ?? action.label, onClick: clickHandler, variant: displayType2Class[action.displayType ?? 'default'], size: "small", children: action.label }));
30
+ }
31
+ /**
32
+ * Helper function to construct the notification content
33
+ *
34
+ * @param message Message to print in the notification
35
+ * @param closeHandler Function closing the notification
36
+ * @param actions Toast actions
37
+ */
38
+ function createContent(message, closeHandler, actions) {
39
+ 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) => {
40
+ return (_jsx(DatalayerThemeProvider, { children: _jsx(ToastButton, { action: action, closeToast: closeHandler }, 'button-' + idx) }));
41
+ })] }))] }));
42
+ }
43
+ export const useToast = () => {
44
+ // This CANNOT use React hooks as it is used outside React context.
45
+ const insideJupyterLab = isInsideJupyterLab();
46
+ const enqueueToast = (message, options = { variant: 'info' }) => {
47
+ const { actions, autoClose } = options;
48
+ switch (options.variant) {
49
+ case 'info': {
50
+ return insideJupyterLab
51
+ ?
52
+ Notification.info(message, {
53
+ autoClose: autoClose ?? 5000,
54
+ actions
55
+ })
56
+ : toast.info(({ closeToast }) => createContent(message, () => {
57
+ if (closeToast)
58
+ closeToast();
59
+ }, actions), { autoClose, position: TOAST_POSITION });
60
+ }
61
+ case 'success': {
62
+ return insideJupyterLab
63
+ ? Notification.success(message, {
64
+ autoClose: autoClose ?? 5000,
65
+ actions
66
+ })
67
+ : toast.success(({ closeToast }) => createContent(message, () => {
68
+ if (closeToast)
69
+ closeToast();
70
+ }, actions), { autoClose, position: TOAST_POSITION });
71
+ }
72
+ case 'warning': {
73
+ return insideJupyterLab
74
+ ? Notification.warning(message, {
75
+ autoClose: autoClose ?? false,
76
+ actions
77
+ })
78
+ : toast.warning(({ closeToast }) => createContent(message, () => {
79
+ if (closeToast)
80
+ closeToast();
81
+ }, actions), { autoClose: autoClose ?? false, position: TOAST_POSITION });
82
+ }
83
+ case 'error': {
84
+ return insideJupyterLab
85
+ ? Notification.error(message, {
86
+ autoClose: autoClose ?? false,
87
+ actions
88
+ })
89
+ : toast.error(({ closeToast }) => createContent(message, () => {
90
+ if (closeToast)
91
+ closeToast();
92
+ }, actions), { autoClose: autoClose ?? false, position: TOAST_POSITION });
93
+ }
94
+ }
95
+ };
96
+ const trackAsyncTask = (promise, options) => {
97
+ return insideJupyterLab
98
+ ? Notification.promise(promise, options)
99
+ : toast.promise(promise, {
100
+ error: { render: options.error.message, ...options.error.options },
101
+ pending: options.pending.message,
102
+ success: { render: options.success.message, ...options.success.options }
103
+ }, {
104
+ position: TOAST_POSITION,
105
+ ...options.pending.options
106
+ });
107
+ };
108
+ return Object.freeze({
109
+ /**
110
+ * Emit a message as a toast.
111
+ *
112
+ * @param message Toast message
113
+ * @param options Toast option
114
+ * @returns Toast id
115
+ */
116
+ enqueueToast,
117
+ /**
118
+ * Dismiss a toast
119
+ *
120
+ * @param id Toast id
121
+ */
122
+ dismiss: (id) => {
123
+ if (insideJupyterLab) {
124
+ Notification.dismiss(id);
125
+ }
126
+ else {
127
+ toast.dismiss(id);
128
+ }
129
+ },
130
+ /**
131
+ * Track the progress of an asynchronous task
132
+ * and display a message depending on the outcome.
133
+ *
134
+ * @param promise Asynchronous task
135
+ * @param options Task progress options
136
+ * @returns Toast id
137
+ */
138
+ trackAsyncTask
139
+ });
140
+ };
141
+ 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,46 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { useState } from "react";
6
+ import axios from "axios";
7
+ // import useRun from "./useRun";
8
+ import { useIAMStore } from "../state";
9
+ // TODO reuse useRun hook.
10
+ export const useUploadForm = (url) => {
11
+ const [isSuccess, setIsSuccess] = useState(false);
12
+ const [isLoading, setIsLoading] = useState(false);
13
+ const [progress, setProgress] = useState(0);
14
+ const { token } = useIAMStore();
15
+ // const { requestRun } = useRun();
16
+ const reset = () => {
17
+ setIsSuccess(false);
18
+ setIsLoading(false);
19
+ setProgress(0);
20
+ };
21
+ const uploadAndSubmit = async (formData) => {
22
+ setIsLoading(true);
23
+ const { data } = await axios.post(url, formData, {
24
+ headers: {
25
+ "Content-Type": "multipart/form-data",
26
+ Authorization: `Bearer ${token}`
27
+ },
28
+ onUploadProgress: (progressEvent) => {
29
+ const progress = (progressEvent.loaded / progressEvent.total) * 50;
30
+ setProgress(progress);
31
+ },
32
+ onDownloadProgress: (progressEvent) => {
33
+ const progress = 50 + (progressEvent.loaded / progressEvent.total) * 50;
34
+ setProgress(progress);
35
+ },
36
+ });
37
+ setProgress(100);
38
+ await new Promise((resolve) => {
39
+ setTimeout(() => resolve("success"), 500);
40
+ });
41
+ setIsSuccess(true);
42
+ setProgress(0);
43
+ return data;
44
+ };
45
+ return { uploadAndSubmit, isSuccess, isLoading, progress, reset };
46
+ };
@@ -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[];
@@ -0,0 +1,42 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { useState, useEffect } from 'react';
6
+ export function useVisibilityObserver(navigationRef, children) {
7
+ const [visibilityMap, setVisibilityMap] = useState({});
8
+ const handleIntersection = (entries) => {
9
+ const updatedEntries = {};
10
+ for (const entry of entries) {
11
+ const navitemid = entry.target.getAttribute('data-navitemid');
12
+ if (navitemid) {
13
+ if (entry.isIntersecting) {
14
+ updatedEntries[navitemid] = true;
15
+ }
16
+ else {
17
+ updatedEntries[navitemid] = false;
18
+ }
19
+ }
20
+ }
21
+ setVisibilityMap(prev => ({
22
+ ...prev,
23
+ ...updatedEntries,
24
+ }));
25
+ };
26
+ useEffect(() => {
27
+ const observer = new IntersectionObserver(handleIntersection, {
28
+ root: navigationRef.current,
29
+ threshold: 1,
30
+ });
31
+ if (navigationRef.current) {
32
+ const navItems = Array.from(navigationRef.current.children);
33
+ for (const item of navItems) {
34
+ if (item.getAttribute('data-navitemid')) {
35
+ observer.observe(item);
36
+ }
37
+ }
38
+ }
39
+ return () => observer.disconnect();
40
+ }, [navigationRef, children]);
41
+ return [visibilityMap];
42
+ }
@@ -0,0 +1,21 @@
1
+ export declare enum BreakpointSize {
2
+ XSMALL = "xsmall",
3
+ SMALL = "small",
4
+ MEDIUM = "medium",
5
+ LARGE = "large",
6
+ XLARGE = "xlarge",
7
+ XXLARGE = "xxlarge"
8
+ }
9
+ type WindowSize = {
10
+ width?: number;
11
+ height?: number;
12
+ isXSmall?: boolean;
13
+ isSmall?: boolean;
14
+ isMedium?: boolean;
15
+ isLarge?: boolean;
16
+ isXLarge?: boolean;
17
+ isXXLarge?: boolean;
18
+ currentBreakpointSize?: BreakpointSize;
19
+ };
20
+ export declare function useWindowSize(): WindowSize;
21
+ export {};