@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,4 @@
1
+ declare const useCellOutputshot: () => (string | ((node: HTMLDivElement) => void) | {
2
+ error: undefined;
3
+ })[];
4
+ export default useCellOutputshot;
@@ -0,0 +1,28 @@
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 { useCellStore } from '../state';
7
+ import { takeHTMLNodeScreenshot } from '../utils/Screenshot';
8
+ const useCellOutputshot = () => {
9
+ const [outputshot, setOutputshot] = useState('');
10
+ const [error, setError] = useState();
11
+ const { update } = useCellStore();
12
+ const takeOutputshot = (node) => {
13
+ takeHTMLNodeScreenshot(node).then(outputshotData => {
14
+ setOutputshot(outputshotData);
15
+ update({
16
+ outputshotData,
17
+ });
18
+ return outputshotData;
19
+ })
20
+ .catch(reason => setError(reason));
21
+ };
22
+ return [
23
+ outputshot,
24
+ takeOutputshot,
25
+ { error }
26
+ ];
27
+ };
28
+ export default useCellOutputshot;
@@ -0,0 +1,9 @@
1
+ import { type RefObject } from 'react';
2
+ /**
3
+ * Determine if a child element of the provided ref is currently focussed.
4
+ * @param containerRef The ref to the container element.
5
+ * @param onFocusChange The callback to be called when the focus state changes.
6
+ * @type T The type of the container element.
7
+ * @returns The ref to be applied to the container element.
8
+ */
9
+ export declare const useContainsFocus: <T extends HTMLElement>(containerRef?: RefObject<T>, onFocusChange?: (isFocussed: boolean) => void) => void;
@@ -0,0 +1,43 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { useCallback, useEffect, useState } from 'react';
6
+ /**
7
+ * Determine if a child element of the provided ref is currently focussed.
8
+ * @param containerRef The ref to the container element.
9
+ * @param onFocusChange The callback to be called when the focus state changes.
10
+ * @type T The type of the container element.
11
+ * @returns The ref to be applied to the container element.
12
+ */
13
+ export const useContainsFocus = (containerRef, onFocusChange) => {
14
+ const [isChildFocused, setIsChildFocused] = useState(false);
15
+ const updateState = useCallback((isFocused) => {
16
+ if (isFocused !== isChildFocused) {
17
+ setIsChildFocused(isFocused);
18
+ onFocusChange?.(isFocused);
19
+ }
20
+ }, [isChildFocused, onFocusChange]);
21
+ useEffect(() => {
22
+ if (!containerRef) {
23
+ return;
24
+ }
25
+ const handleFocusIn = () => {
26
+ updateState(true);
27
+ };
28
+ const handleFocusOut = (event) => {
29
+ if (containerRef.current && !containerRef.current.contains(event.relatedTarget)) {
30
+ updateState(false);
31
+ }
32
+ };
33
+ const container = containerRef.current;
34
+ if (container) {
35
+ container.addEventListener('focusin', handleFocusIn, true);
36
+ container.addEventListener('focusout', handleFocusOut, true);
37
+ return () => {
38
+ container.removeEventListener('focusin', handleFocusIn, true);
39
+ container.removeEventListener('focusout', handleFocusOut, true);
40
+ };
41
+ }
42
+ }, [updateState, containerRef]);
43
+ };
@@ -0,0 +1,21 @@
1
+ import type { IRequestDatalayerAPIOptions } from '../api';
2
+ export type IDatalayerRequestProps = {
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 DatalayerRequest extends IDatalayerRequestProps, IRequestDatalayerAPIOptions {
17
+ }
18
+ export declare function useDatalayer(props?: IDatalayerRequestProps): {
19
+ requestDatalayer: <T = any>(request: DatalayerRequest) => Promise<T>;
20
+ };
21
+ export default useDatalayer;
@@ -0,0 +1,81 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { useLocation } from 'react-router-dom';
6
+ import { useNavigate } from './useNavigate';
7
+ import { useToast } from './useToast';
8
+ // import { useRuMnock } from './../mocks';
9
+ import { useIAMStore, } from '../state';
10
+ import { requestDatalayerAPI } from '../api';
11
+ export function useDatalayer(props = {}) {
12
+ const { loginRoute = '/login', notifyOnError = true } = props;
13
+ const location = useLocation();
14
+ /*
15
+ // TODO Fix the conditional hook call.
16
+ const coreStore = useCoreStore();
17
+ // Don't remove === true for the test, otherwise it will always be true???
18
+ if (coreStore.configuration.useMock === true) {
19
+ return useDatalayerMock();
20
+ }
21
+ */
22
+ const { enqueueToast } = useToast();
23
+ const iamStore = useIAMStore();
24
+ const navigate = useNavigate();
25
+ const requestDatalayer = async (request) => {
26
+ const { loginRoute: loginRoute_ = loginRoute, notifyOnError: notifyOnError_ = notifyOnError, ...apiRequest } = request;
27
+ const token = apiRequest.token ?? iamStore.token;
28
+ return requestDatalayerAPI({
29
+ ...apiRequest,
30
+ token,
31
+ })
32
+ .then(resp => {
33
+ return resp;
34
+ })
35
+ .catch(error => {
36
+ if (error.name === 'RunResponseError') {
37
+ const responseError = error;
38
+ if (responseError.response.status === 401) {
39
+ console.log('Datalayer RUN sent a 401 return code.');
40
+ if (location.pathname !== loginRoute_) {
41
+ iamStore.logout();
42
+ navigate(loginRoute_);
43
+ }
44
+ }
45
+ else {
46
+ if (notifyOnError_) {
47
+ if (responseError.warnings) {
48
+ responseError.warnings.forEach(warning => enqueueToast(`${warning}`, { variant: 'warning' }));
49
+ }
50
+ if (responseError.errors) {
51
+ responseError.errors.forEach(error => enqueueToast(`${error}`, { variant: 'error' }));
52
+ }
53
+ if (responseError.message) {
54
+ enqueueToast(`${responseError.message}`, { variant: 'error' });
55
+ }
56
+ else {
57
+ enqueueToast(`API Error`, { variant: 'error' });
58
+ }
59
+ if (responseError.exceptionMessage) {
60
+ enqueueToast(`${responseError.exceptionMessage}`, { variant: 'error' });
61
+ }
62
+ }
63
+ }
64
+ const response = {
65
+ sucess: false,
66
+ message: responseError.message,
67
+ errors: responseError.errors,
68
+ };
69
+ return response;
70
+ }
71
+ // The error is not an RunResponseError...log it and throw it.
72
+ console.log('Error', error);
73
+ if (notifyOnError_) {
74
+ enqueueToast(`${error.message}`, { variant: 'error' });
75
+ }
76
+ throw error;
77
+ });
78
+ };
79
+ return { requestDatalayer };
80
+ }
81
+ export default useDatalayer;
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ export declare const ErrorMessage: React.FC<{
3
+ message: Array<string> | string | null;
4
+ }>;
5
+ export declare const useError: (initialState: string | null) => {
6
+ error: string | null;
7
+ showError: (errorMessage: string | null) => void;
8
+ };
9
+ export default useError;
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /*
3
+ * Copyright (c) 2023-2025 Datalayer, Inc.
4
+ * Distributed under the terms of the Modified BSD License.
5
+ */
6
+ import { useState } from "react";
7
+ import { Flash } from '@primer/react';
8
+ export const ErrorMessage = ({ message }) => {
9
+ if (message instanceof Array) {
10
+ return _jsx("div", { children: message.map((m, i) => _jsx(Flash, { variant: "danger", children: m }, i)) });
11
+ }
12
+ else {
13
+ return _jsx(Flash, { variant: "danger", children: message });
14
+ }
15
+ };
16
+ export const useError = (initialState) => {
17
+ const [error, setError] = useState(initialState);
18
+ const showError = (errorMessage) => {
19
+ setError(errorMessage);
20
+ window.setTimeout(() => {
21
+ setError(null);
22
+ }, 3000);
23
+ };
24
+ return { error, showError };
25
+ };
26
+ export default useError;
@@ -0,0 +1,2 @@
1
+ declare const useExternalScript: (url: string) => void;
2
+ export default useExternalScript;
@@ -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 { useEffect } from "react";
6
+ const useExternalScript = (url) => {
7
+ useEffect(() => {
8
+ const head = document.querySelector("head");
9
+ const script = document.createElement("script");
10
+ script.setAttribute("src", url);
11
+ head.appendChild(script);
12
+ return () => {
13
+ head.removeChild(script);
14
+ };
15
+ }, [url]);
16
+ };
17
+ export default useExternalScript;
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ export interface FocusTrapHookSettings {
3
+ /**
4
+ * Ref that will be used for the trapping container. If not provided, one will
5
+ * be created by this hook and returned.
6
+ */
7
+ containerRef: React.RefObject<HTMLElement>;
8
+ /**
9
+ * Ref for the element that should receive focus when the focus trap is first enabled.
10
+ * If not provided, one will be created by this hook and returned. Its use is optional.
11
+ */
12
+ initialFocusRef?: React.RefObject<HTMLElement>;
13
+ /**
14
+ * Set to true to disable the focus trap and clean up listeners. Can be re-enabled at any time.
15
+ */
16
+ disabled?: boolean;
17
+ /**
18
+ * If true, when this focus trap is cleaned up, restore focus to the element that had focus immediately before the focus trap was enabled. (Default: false)
19
+ */
20
+ restoreFocusOnCleanUp?: boolean;
21
+ }
22
+ /**
23
+ * Hook used to trap focus inside a container. Returns a ref that can be added to the container
24
+ * that should trap focus.
25
+ * @param settings &lcub;FocusTrapHookSettings&rcub;
26
+ */
27
+ export declare function useFocusTrap(settings?: FocusTrapHookSettings, dependencies?: React.DependencyList): {
28
+ containerRef: React.RefObject<HTMLElement> | undefined;
29
+ initialFocusRef: React.RefObject<HTMLElement> | undefined;
30
+ };
@@ -0,0 +1,48 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import React from 'react';
6
+ import { focusTrap } from '@primer/behaviors';
7
+ /**
8
+ * Hook used to trap focus inside a container. Returns a ref that can be added to the container
9
+ * that should trap focus.
10
+ * @param settings &lcub;FocusTrapHookSettings&rcub;
11
+ */
12
+ export function useFocusTrap(settings, dependencies = []) {
13
+ const containerRef = settings?.containerRef;
14
+ const initialFocusRef = settings?.initialFocusRef;
15
+ const disabled = settings?.disabled;
16
+ const abortController = React.useRef();
17
+ const previousFocusedElement = React.useRef(null);
18
+ // If we are enabling a focus trap and haven't already stored the previously focused element
19
+ // go ahead an do that so we can restore later when the trap is disabled.
20
+ if (!previousFocusedElement.current && !settings?.disabled) {
21
+ previousFocusedElement.current = document.activeElement;
22
+ }
23
+ // This function removes the event listeners that enable the focus trap and restores focus
24
+ // to the previously-focused element (if necessary).
25
+ function disableTrap() {
26
+ abortController.current?.abort();
27
+ if (settings?.restoreFocusOnCleanUp && previousFocusedElement.current instanceof HTMLElement) {
28
+ previousFocusedElement.current.focus();
29
+ previousFocusedElement.current = null;
30
+ }
31
+ }
32
+ React.useEffect(() => {
33
+ if (containerRef?.current instanceof HTMLElement) {
34
+ if (!disabled) {
35
+ abortController.current = focusTrap(containerRef.current, initialFocusRef?.current ?? undefined);
36
+ return () => {
37
+ disableTrap();
38
+ };
39
+ }
40
+ else {
41
+ disableTrap();
42
+ }
43
+ }
44
+ },
45
+ // eslint-disable-next-line react-hooks/exhaustive-deps
46
+ [containerRef, initialFocusRef, disabled, ...dependencies]);
47
+ return { containerRef, initialFocusRef };
48
+ }
@@ -0,0 +1,14 @@
1
+ import { IUser } from '../models';
2
+ export type IAMStateProps = {
3
+ user?: IUser;
4
+ token?: string;
5
+ loginRoute?: string;
6
+ };
7
+ export declare const useIAM: (props?: IAMStateProps) => {
8
+ user: IUser | undefined;
9
+ token: string | undefined;
10
+ loginAndNavigate: (token: string, logout: () => void, refresh: (token: string) => void, navigate?: (location: string, e?: any, resetPortals?: boolean) => void, homeRoute?: string) => Promise<void>;
11
+ setLogin: (user: IUser, token: string) => void;
12
+ logout: () => void;
13
+ };
14
+ export default useIAM;
@@ -0,0 +1,93 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { useEffect, useState } from 'react';
6
+ import { useCache } from './useCache';
7
+ import { coreStore, useIAMStore, useLayoutStore, useOrganizationStore, useSpaceStore } from '../state';
8
+ import { asUser, ANONYMOUS_USER, ANONYMOUS_USER_TOKEN } from '../models';
9
+ import { requestDatalayerAPI } from '../api';
10
+ export const useIAM = (props = { user: undefined, token: undefined }) => {
11
+ const { token } = props;
12
+ const [iamState, setIAMState] = useState(props);
13
+ const iamStore = useIAMStore();
14
+ const layoutStore = useLayoutStore();
15
+ const organizationStore = useOrganizationStore();
16
+ const spaceStore = useSpaceStore();
17
+ const { clearAllCaches, whoami } = useCache();
18
+ const loginAndNavigate = async (token, logout, refresh, navigate, homeRoute) => {
19
+ try {
20
+ const resp = await requestDatalayerAPI({
21
+ url: `${iamStore.iamRunUrl}/api/iam/v1/login`,
22
+ method: 'POST',
23
+ body: { token },
24
+ });
25
+ if (resp.success && resp.token) {
26
+ if (resp.is_provided_token_external === true) {
27
+ // The provided token is recognized as an external one, so store it as such...
28
+ iamStore.setExternalToken(token);
29
+ }
30
+ const user = asUser(resp.user);
31
+ const responseToken = resp.token;
32
+ setIAMState({ user, token: responseToken });
33
+ refresh(responseToken);
34
+ if (navigate && homeRoute) {
35
+ navigate(homeRoute);
36
+ }
37
+ }
38
+ else {
39
+ throw new Error('Invalid Token.');
40
+ }
41
+ }
42
+ catch (error) {
43
+ if (error.name === 'RunResponseError' &&
44
+ error.response.status === 401) {
45
+ console.log('Datalayer IAM has sent a 401 return code.');
46
+ logout();
47
+ }
48
+ throw error;
49
+ }
50
+ };
51
+ const setLogin = (user, token) => {
52
+ iamStore.setLogin(user, token);
53
+ setIAMState({
54
+ user,
55
+ token,
56
+ });
57
+ };
58
+ const logout = () => {
59
+ iamStore.logout();
60
+ layoutStore.reset();
61
+ organizationStore.updateOrganizations([]);
62
+ spaceStore.updateSpaces([]);
63
+ clearAllCaches();
64
+ setIAMState({ user: ANONYMOUS_USER, token: ANONYMOUS_USER_TOKEN });
65
+ };
66
+ useEffect(() => {
67
+ if (token) {
68
+ whoami()
69
+ .then(resp => {
70
+ if (resp.success) {
71
+ const user = asUser(resp.profile);
72
+ setIAMState({ user, token });
73
+ iamStore.setLogin(user, token);
74
+ // TODO centralize user settings management.
75
+ const aiagentsRunUrl = user.settings?.aiAgentsUrl;
76
+ if (aiagentsRunUrl) {
77
+ coreStore.getState().setConfiguration({
78
+ aiagentsRunUrl,
79
+ });
80
+ }
81
+ }
82
+ });
83
+ }
84
+ }, []);
85
+ return {
86
+ user: iamState.user,
87
+ token: iamState.token,
88
+ loginAndNavigate,
89
+ setLogin,
90
+ logout
91
+ };
92
+ };
93
+ export default useIAM;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * useId
3
+ *
4
+ * Autogenerate IDs to facilitate WAI-ARIA and server rendering.
5
+ *
6
+ * Note: The returned ID will initially be `null` and will update after a
7
+ * component mounts. Users may need to supply their own ID if they need
8
+ * consistent values for SSR.
9
+ *
10
+ * @see Docs https://reach.tech/auto-id
11
+ */
12
+ declare function useId(idFromProps: string): string;
13
+ declare function useId(idFromProps: number): number;
14
+ declare function useId(idFromProps: string | number): string | number;
15
+ declare function useId(idFromProps: string | undefined | null): string | undefined;
16
+ declare function useId(idFromProps: number | undefined | null): number | undefined;
17
+ declare function useId(idFromProps: string | number | undefined | null): string | number | undefined;
18
+ declare function useId(): string | undefined;
19
+ export { useId };
@@ -0,0 +1,100 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /*
6
+ * Welcome to @reach/auto-id!
7
+
8
+ * Let's see if we can make sense of why this hook exists and its
9
+ * implementation.
10
+ *
11
+ * Some background:
12
+ * 1. Accessibility APIs rely heavily on element IDs
13
+ * 2. Requiring developers to put IDs on every element in Reach UI is both
14
+ * cumbersome and error-prone
15
+ * 3. With a component model, we can generate IDs for them!
16
+ *
17
+ * Solution 1: Generate random IDs.
18
+ *
19
+ * This works great as long as you don't server render your app. When React (in
20
+ * the client) tries to reuse the markup from the server, the IDs won't match
21
+ * and React will then recreate the entire DOM tree.
22
+ *
23
+ * Solution 2: Increment an integer
24
+ *
25
+ * This sounds great. Since we're rendering the exact same tree on the server
26
+ * and client, we can increment a counter and get a deterministic result between
27
+ * client and server. Also, JS integers can go up to nine-quadrillion. I'm
28
+ * pretty sure the tab will be closed before an app never needs
29
+ * 10 quadrillion IDs!
30
+ *
31
+ * Problem solved, right?
32
+ *
33
+ * Ah, but there's a catch! React's concurrent rendering makes this approach
34
+ * non-deterministic. While the client and server will end up with the same
35
+ * elements in the end, depending on suspense boundaries (and possibly some user
36
+ * input during the initial render) the incrementing integers won't always match
37
+ * up.
38
+ *
39
+ * Solution 3: Don't use IDs at all on the server; patch after first render.
40
+ *
41
+ * What we've done here is solution 2 with some tricks. With this approach, the
42
+ * ID returned is an empty string on the first render. This way the server and
43
+ * client have the same markup no matter how wild the concurrent rendering may
44
+ * have gotten.
45
+ *
46
+ * After the render, we patch up the components with an incremented ID. This
47
+ * causes a double render on any components with `useId`. Shouldn't be a problem
48
+ * since the components using this hook should be small, and we're only updating
49
+ * the ID attribute on the DOM, nothing big is happening.
50
+ *
51
+ * It doesn't have to be an incremented number, though--we could do generate
52
+ * random strings instead, but incrementing a number is probably the cheapest
53
+ * thing we can do.
54
+ *
55
+ * Additionally, we only do this patchup on the very first client render ever.
56
+ * Any calls to `useId` that happen dynamically in the client will be
57
+ * populated immediately with a value. So, we only get the double render after
58
+ * server hydration and never again, SO BACK OFF ALRIGHT?
59
+ */
60
+ /* eslint-disable react-hooks/rules-of-hooks */
61
+ import * as React from "react";
62
+ import { useLayoutEffect } from "react";
63
+ let serverHandoffComplete = false;
64
+ let id = 0;
65
+ function genId() {
66
+ return ++id;
67
+ }
68
+ // Workaround for https://github.com/webpack/webpack/issues/14814
69
+ // https://github.com/eps1lon/material-ui/blob/8d5f135b4d7a58253a99ab56dce4ac8de61f5dc1/packages/mui-utils/src/useId.ts#L21
70
+ const maybeReactUseId = React["useId".toString()];
71
+ function useId(providedId) {
72
+ if (maybeReactUseId !== undefined) {
73
+ const generatedId = maybeReactUseId();
74
+ return providedId ?? generatedId;
75
+ }
76
+ // If this instance isn't part of the initial render, we don't have to do the
77
+ // double render/patch-up dance. We can just generate the ID and return it.
78
+ const initialId = providedId ?? (serverHandoffComplete ? genId() : null);
79
+ const [id, setId] = React.useState(initialId);
80
+ useLayoutEffect(() => {
81
+ if (id === null) {
82
+ // Patch the ID after render. We do this in `useLayoutEffect` to avoid any
83
+ // rendering flicker, though it'll make the first render slower (unlikely
84
+ // to matter, but you're welcome to measure your app and let us know if
85
+ // it's a problem).
86
+ setId(genId());
87
+ }
88
+ // eslint-disable-next-line react-hooks/exhaustive-deps
89
+ }, []);
90
+ React.useEffect(() => {
91
+ if (serverHandoffComplete === false) {
92
+ // Flag all future uses of `useId` to skip the update dance. This is in
93
+ // `useEffect` because it goes after `useLayoutEffect`, ensuring we don't
94
+ // accidentally bail out of the patch-up dance prematurely.
95
+ serverHandoffComplete = true;
96
+ }
97
+ }, []);
98
+ return providedId ?? id ?? undefined;
99
+ }
100
+ export { useId };
@@ -0,0 +1,3 @@
1
+ import { useEffect } from 'react';
2
+ declare const useIsomorphicLayoutEffect: typeof useEffect;
3
+ export default useIsomorphicLayoutEffect;
@@ -0,0 +1,11 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { useEffect, useLayoutEffect } from 'react';
6
+ const useIsomorphicLayoutEffect = typeof window !== 'undefined' &&
7
+ typeof window.document !== 'undefined' &&
8
+ typeof window.document.createElement !== 'undefined'
9
+ ? useLayoutEffect
10
+ : useEffect;
11
+ export default useIsomorphicLayoutEffect;
@@ -0,0 +1,6 @@
1
+ import { IThemeManager } from '@jupyterlab/apputils';
2
+ export declare enum JupyterLabTheme {
3
+ LIGHT = "JupyterLab Light",
4
+ DARK = "JupyterLab Dark"
5
+ }
6
+ export declare const useJupyterLabTheme: (themeManager: IThemeManager) => any;
@@ -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 { useEffect, useState } from 'react';
6
+ export var JupyterLabTheme;
7
+ (function (JupyterLabTheme) {
8
+ JupyterLabTheme["LIGHT"] = "JupyterLab Light";
9
+ JupyterLabTheme["DARK"] = "JupyterLab Dark";
10
+ })(JupyterLabTheme || (JupyterLabTheme = {}));
11
+ export const useJupyterLabTheme = (themeManager) => {
12
+ const isLight = themeManager && themeManager.theme ? themeManager.isLight(themeManager.theme) : true;
13
+ const [theme, setTheme] = useState(isLight ? JupyterLabTheme.LIGHT : JupyterLabTheme.DARK);
14
+ useEffect(() => {
15
+ const handleThemeChange = (newTheme, event) => {
16
+ setTheme(event.newValue);
17
+ };
18
+ themeManager?.themeChanged?.connect(handleThemeChange);
19
+ return () => {
20
+ themeManager?.themeChanged?.disconnect(handleThemeChange);
21
+ };
22
+ }, []);
23
+ return theme;
24
+ };
@@ -0,0 +1 @@
1
+ export declare function useKeyboardEscape(handler: any): void;
@@ -0,0 +1,18 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { useCallback, useEffect } from 'react';
6
+ export function useKeyboardEscape(handler) {
7
+ const handleKeyboardEscape = useCallback(event => {
8
+ if (event.key === 'Escape') {
9
+ handler();
10
+ }
11
+ }, [handler]);
12
+ useEffect(() => {
13
+ document.addEventListener('keydown', handleKeyboardEscape, false);
14
+ return () => {
15
+ document.removeEventListener('keydown', handleKeyboardEscape, false);
16
+ };
17
+ }, [handleKeyboardEscape]);
18
+ }
@@ -0,0 +1,10 @@
1
+ export declare const useLocationHandles: () => {
2
+ accountHandle: string | undefined;
3
+ spaceHandler: string | undefined;
4
+ spaceHandle?: undefined;
5
+ } | {
6
+ accountHandle: string | undefined;
7
+ spaceHandle: string | undefined;
8
+ spaceHandler?: undefined;
9
+ };
10
+ export default useLocationHandles;