@datalayer/core 0.0.2 → 0.0.4

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 (474) hide show
  1. package/README.md +124 -2
  2. package/lib/App.css +47 -0
  3. package/lib/App.js +14 -2
  4. package/lib/__tests__/index.test.js +7 -6
  5. package/lib/api/{RunApi.d.ts → DatalayerApi.d.ts} +4 -4
  6. package/lib/api/{RunApi.js → DatalayerApi.js} +6 -11
  7. package/lib/api/index.d.ts +3 -2
  8. package/lib/api/index.js +3 -7
  9. package/lib/api/{runtimes → jupyter}/exec/Python.js +0 -5
  10. package/lib/api/{runtimes → jupyter}/exec/Snippets.js +0 -5
  11. package/lib/api/{runtimes → jupyter}/exec/index.js +0 -5
  12. package/lib/api/jupyter/index.d.ts +2 -0
  13. package/lib/api/jupyter/index.js +6 -0
  14. package/lib/api/{runtimes → jupyter}/kernelsHandler.d.ts +1 -1
  15. package/lib/api/{runtimes → jupyter}/kernelsHandler.js +1 -6
  16. package/lib/api/runtimes/actions.d.ts +102 -0
  17. package/lib/api/runtimes/{runtimesApi.js → actions.js} +47 -53
  18. package/lib/api/runtimes/{runtimesApi.d.ts → apis.d.ts} +8 -105
  19. package/lib/api/runtimes/apis.js +5 -0
  20. package/lib/api/runtimes/index.d.ts +2 -4
  21. package/lib/api/runtimes/index.js +2 -9
  22. package/lib/api/runtimes/settings.js +3 -8
  23. package/lib/api/runtimes/snapshots.d.ts +1 -1
  24. package/lib/api/runtimes/snapshots.js +8 -13
  25. package/lib/api/runtimes/utils.js +1 -9
  26. package/lib/assets/react.svg +1 -0
  27. package/lib/collaboration/DatalayerCollaboration.d.ts +9 -0
  28. package/lib/collaboration/DatalayerCollaboration.js +28 -0
  29. package/lib/collaboration/DatalayerCollaborationProvider.d.ts +54 -0
  30. package/lib/collaboration/DatalayerCollaborationProvider.js +162 -0
  31. package/lib/collaboration/index.d.ts +2 -0
  32. package/lib/collaboration/index.js +6 -0
  33. package/lib/components/avatars/BoringAvatar.d.ts +2 -3
  34. package/lib/components/avatars/BoringAvatar.js +14 -9
  35. package/lib/components/avatars/BoringAvatar.stories.d.ts +27 -0
  36. package/lib/components/avatars/BoringAvatar.stories.js +23 -0
  37. package/lib/components/avatars/UserProfileAvatar.js +2 -14
  38. package/lib/components/avatars/index.js +0 -5
  39. package/lib/components/banners/NoAutomationBanner.js +4 -9
  40. package/lib/components/banners/index.js +0 -5
  41. package/lib/components/buttons/DownloadCSVButton.d.ts +1 -1
  42. package/lib/components/buttons/DownloadCSVButton.js +1 -6
  43. package/lib/components/buttons/DownloadJsonButton.d.ts +1 -1
  44. package/lib/components/buttons/DownloadJsonButton.js +0 -5
  45. package/lib/components/buttons/LongActionButton.js +0 -5
  46. package/lib/components/buttons/UploadButton.js +1 -6
  47. package/lib/components/buttons/index.js +0 -5
  48. package/lib/components/checkout/StripeCheckout.d.ts +1 -1
  49. package/lib/components/checkout/StripeCheckout.js +6 -11
  50. package/lib/components/checkout/index.js +0 -5
  51. package/lib/components/confetti/ConfettiSuccess.js +1 -6
  52. package/lib/components/confetti/index.js +0 -5
  53. package/lib/components/context/OrganizationSelect.js +5 -10
  54. package/lib/components/context/SpaceSelect.js +7 -12
  55. package/lib/components/context/index.js +0 -5
  56. package/lib/components/display/AvatarSkeleton.js +1 -6
  57. package/lib/components/display/CenteredSpinner.js +4 -9
  58. package/lib/components/display/CodePreview.js +4 -9
  59. package/lib/components/display/DatalayerBox.js +13 -19
  60. package/lib/components/display/HorizontalCenter.d.ts +1 -1
  61. package/lib/components/display/HorizontalCenter.js +1 -1
  62. package/lib/components/display/JupyterDialog.js +17 -20
  63. package/lib/components/display/NavLink.d.ts +4 -2
  64. package/lib/components/display/NavLink.js +6 -9
  65. package/lib/components/display/NotebookSkeleton.js +2 -7
  66. package/lib/components/display/Placeholder.js +1 -6
  67. package/lib/components/display/ToTopBranded.js +1 -6
  68. package/lib/components/display/VisuallyHidden.js +0 -5
  69. package/lib/components/display/index.js +0 -5
  70. package/lib/components/echarts/EChartsReact.d.ts +1 -1
  71. package/lib/components/echarts/EChartsReact.js +7 -7
  72. package/lib/components/echarts/index.js +0 -5
  73. package/lib/components/flashes/FlashClosable.js +11 -16
  74. package/lib/components/flashes/FlashDisclaimer.js +2 -8
  75. package/lib/components/flashes/FlashGuest.js +3 -9
  76. package/lib/components/flashes/FlashSurveys.js +3 -9
  77. package/lib/components/flashes/FlashUnauthorized.js +2 -7
  78. package/lib/components/flashes/index.js +0 -5
  79. package/lib/components/flashes/surveys/Survey2025_1.d.ts +1 -1
  80. package/lib/components/flashes/surveys/Survey2025_1.js +62 -90
  81. package/lib/components/flashes/surveys/index.js +0 -5
  82. package/lib/components/iam/ExternalTokenSilentLogin.js +6 -9
  83. package/lib/components/iam/index.js +0 -5
  84. package/lib/components/icons/ArtifactIcon.d.ts +2 -2
  85. package/lib/components/icons/ArtifactIcon.js +39 -44
  86. package/lib/components/icons/index.js +0 -5
  87. package/lib/components/index.js +1 -6
  88. package/lib/components/labels/VisibilityLabel.js +2 -10
  89. package/lib/components/labels/index.js +0 -5
  90. package/lib/components/landings/StepBlock.d.ts +1 -1
  91. package/lib/components/landings/StepBlock.js +1 -6
  92. package/lib/components/landings/index.js +0 -5
  93. package/lib/components/navbar/NavigationVisbilityObserver.js +2 -7
  94. package/lib/components/navbar/SubdomainNavBar.js +46 -29
  95. package/lib/components/navbar/SubdomainNavBar.module.css +737 -0
  96. package/lib/components/navbar/index.js +0 -5
  97. package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
  98. package/lib/components/nbgrader/NbGradesDetails.js +5 -13
  99. package/lib/components/nbgrader/index.js +0 -5
  100. package/lib/components/notebooks/JupyterNotebook.js +5 -10
  101. package/lib/components/notebooks/JupyterNotebookToolbar.js +3 -8
  102. package/lib/components/notebooks/index.js +0 -5
  103. package/lib/components/primer/Helper.d.ts +1 -1
  104. package/lib/components/primer/Helper.js +5 -3
  105. package/lib/components/primer/Portals.d.ts +1 -1
  106. package/lib/components/primer/Portals.js +2 -7
  107. package/lib/components/primer/Styles.js +1 -6
  108. package/lib/components/primer/index.js +0 -5
  109. package/lib/components/progress/ConsumptionBar.js +2 -7
  110. package/lib/components/progress/CreditsIndicator.d.ts +1 -1
  111. package/lib/components/progress/CreditsIndicator.js +4 -13
  112. package/lib/components/progress/ProgressBar.js +0 -5
  113. package/lib/components/progress/ProgressRing.js +2 -2
  114. package/lib/components/progress/Timer.js +0 -5
  115. package/lib/components/progress/index.js +0 -5
  116. package/lib/components/runtimes/RuntimeCellVariables.js +9 -14
  117. package/lib/components/runtimes/RuntimeCellVariablesDialog.js +7 -12
  118. package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +1 -2
  119. package/lib/components/runtimes/RuntimeLauncherDialog.js +32 -40
  120. package/lib/components/runtimes/RuntimePickerBase.d.ts +1 -1
  121. package/lib/components/runtimes/RuntimePickerBase.js +42 -36
  122. package/lib/components/runtimes/RuntimePickerCell.js +9 -17
  123. package/lib/components/runtimes/RuntimePickerNotebook.d.ts +1 -2
  124. package/lib/components/runtimes/RuntimePickerNotebook.js +45 -50
  125. package/lib/components/runtimes/RuntimeReservationControl.js +10 -20
  126. package/lib/components/runtimes/RuntimeSimplePicker.d.ts +1 -1
  127. package/lib/components/runtimes/RuntimeSimplePicker.js +44 -52
  128. package/lib/components/runtimes/RuntimeUtils.d.ts +1 -1
  129. package/lib/components/runtimes/RuntimeUtils.js +22 -17
  130. package/lib/components/runtimes/RuntimeVariables.js +7 -12
  131. package/lib/components/runtimes/index.js +0 -5
  132. package/lib/components/screenshot/ScreenCapture.js +10 -19
  133. package/lib/components/screenshot/ScreenCaptureButton.d.ts +1 -1
  134. package/lib/components/screenshot/ScreenCaptureButton.js +14 -8
  135. package/lib/components/screenshot/index.js +0 -5
  136. package/lib/components/snapshots/RuntimeSnapshotMenu.js +19 -22
  137. package/lib/components/snapshots/index.js +0 -5
  138. package/lib/components/snippets/SnippetDialog.js +5 -10
  139. package/lib/components/snippets/index.js +0 -5
  140. package/lib/components/storage/ContentsBrowser.js +75 -63
  141. package/lib/components/storage/ContentsItems.js +10 -13
  142. package/lib/components/storage/index.js +0 -5
  143. package/lib/components/students/StudentItemStatus.d.ts +1 -1
  144. package/lib/components/students/StudentItemStatus.js +38 -21
  145. package/lib/components/students/index.js +0 -5
  146. package/lib/components/subnav/SubNav.d.ts +3 -3
  147. package/lib/components/subnav/SubNav.js +34 -24
  148. package/lib/components/subnav/SubNav.module.css +717 -0
  149. package/lib/components/subnav/index.js +0 -5
  150. package/lib/components/tables/DataTable.js +1 -9
  151. package/lib/components/tables/index.js +0 -5
  152. package/lib/components/text-reveal/TextRevealAnimation.js +7 -8
  153. package/lib/components/text-reveal/TextRevealAnimation.module.css +45 -0
  154. package/lib/components/text-reveal/index.js +0 -5
  155. package/lib/components/text-reveal/useTextRevealAnimationLines.js +0 -5
  156. package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
  157. package/lib/components/tokens/SpaceVariantToken.js +5 -10
  158. package/lib/components/tokens/index.js +0 -5
  159. package/lib/components/toolbars/AssignmentEditorToolbar.js +1 -8
  160. package/lib/components/toolbars/DocumentEditorToolbar.js +0 -5
  161. package/lib/components/toolbars/NotebookEditorToolbar.d.ts +1 -1
  162. package/lib/components/toolbars/NotebookEditorToolbar.js +0 -5
  163. package/lib/components/toolbars/index.js +0 -5
  164. package/lib/components/users/PeerIndicator.d.ts +1 -1
  165. package/lib/components/users/PeerIndicator.js +5 -10
  166. package/lib/components/users/index.js +0 -5
  167. package/lib/config/Configuration.d.ts +48 -0
  168. package/lib/config/Configuration.js +42 -5
  169. package/lib/config/index.js +0 -5
  170. package/lib/config/integrations/Loom.js +3 -8
  171. package/lib/config/integrations/index.js +0 -5
  172. package/lib/examples/CellExample.d.ts +6 -0
  173. package/lib/examples/CellExample.js +55 -0
  174. package/lib/examples/DatalayerNotebookExample.d.ts +16 -0
  175. package/lib/examples/DatalayerNotebookExample.js +75 -0
  176. package/lib/examples/NativeNavigationExample.d.ts +8 -0
  177. package/lib/examples/NativeNavigationExample.js +97 -0
  178. package/lib/examples/NotebookExample.d.ts +6 -0
  179. package/lib/examples/NotebookExample.js +24 -0
  180. package/lib/examples/NotebookMutationsKernel.d.ts +2 -0
  181. package/lib/examples/NotebookMutationsKernel.js +115 -0
  182. package/lib/examples/NotebookMutationsServiceManager.d.ts +2 -0
  183. package/lib/examples/NotebookMutationsServiceManager.js +107 -0
  184. package/lib/examples/ReactRouterExample.d.ts +6 -0
  185. package/lib/examples/ReactRouterExample.js +175 -0
  186. package/lib/examples/example-selector.d.ts +22 -0
  187. package/lib/examples/example-selector.js +45 -0
  188. package/lib/examples/index.d.ts +2 -0
  189. package/lib/examples/index.js +6 -0
  190. package/lib/examples/main.js +153 -0
  191. package/lib/examples/notebooks/IPyWidgetsExample.ipynb.json +101 -0
  192. package/lib/examples/notebooks/IPyWidgetsExampleWithState.ipynb.json +112 -0
  193. package/lib/examples/notebooks/Lite.ipynb.json +128 -0
  194. package/lib/examples/notebooks/Matplotlib.ipynb.json +137 -0
  195. package/lib/examples/notebooks/NotebookExample1.ipynb.json +126 -0
  196. package/lib/examples/notebooks/NotebookExample2.ipynb.json +48 -0
  197. package/lib/examples/notebooks/NotebookOutputs.ipynb.json +49 -0
  198. package/lib/examples/notebooks/NotebookToCExample.ipynb.json +102 -0
  199. package/lib/examples/notebooks/OutputIPyWidgetsExample.d.ts +145 -0
  200. package/lib/examples/notebooks/OutputIPyWidgetsExample.js +153 -0
  201. package/lib/examples/notebooks/PyGWalker.ipynb.json +55 -0
  202. package/lib/hooks/assets/OutputshotPlaceholders.d.ts +10 -10
  203. package/lib/hooks/assets/OutputshotPlaceholders.js +9 -14
  204. package/lib/hooks/assets/index.js +0 -5
  205. package/lib/hooks/index.d.ts +29 -28
  206. package/lib/hooks/index.js +29 -33
  207. package/lib/hooks/layouts/LayoutBackdrop.js +3 -11
  208. package/lib/hooks/layouts/LayoutScreenshot.css +58 -0
  209. package/lib/hooks/layouts/LayoutScreenshot.d.ts +1 -0
  210. package/lib/hooks/layouts/LayoutScreenshot.js +7 -11
  211. package/lib/hooks/layouts/index.js +0 -5
  212. package/lib/hooks/useAIAgents.d.ts +1 -1
  213. package/lib/hooks/useAIAgents.js +13 -18
  214. package/lib/hooks/useAuthorization.js +4 -10
  215. package/lib/hooks/useBackdrop.js +7 -12
  216. package/lib/hooks/useBackdropJupyterLab.d.ts +1 -1
  217. package/lib/hooks/useBackdropJupyterLab.js +4 -9
  218. package/lib/hooks/useCache.d.ts +8 -4
  219. package/lib/hooks/useCache.js +410 -361
  220. package/lib/hooks/useCellOutputshot.js +3 -11
  221. package/lib/hooks/useContainsFocus.js +2 -6
  222. package/lib/hooks/useDatalayer.d.ts +21 -0
  223. package/lib/hooks/{useRun.js → useDatalayer.js} +16 -18
  224. package/lib/hooks/useError.d.ts +1 -1
  225. package/lib/hooks/useError.js +2 -7
  226. package/lib/hooks/useExternalScript.js +4 -9
  227. package/lib/hooks/useFocusTrap.d.ts +1 -1
  228. package/lib/hooks/useFocusTrap.js +3 -7
  229. package/lib/hooks/useIAM.js +6 -12
  230. package/lib/hooks/useId.js +6 -11
  231. package/lib/hooks/useIsomorphicLayoutEffect.js +0 -5
  232. package/lib/hooks/useJupyterLabTheme.js +3 -6
  233. package/lib/hooks/useKeyboardEscape.js +0 -5
  234. package/lib/hooks/useLocation.d.ts +22 -0
  235. package/lib/hooks/useLocation.js +149 -0
  236. package/lib/hooks/useLocationHandles.d.ts +2 -2
  237. package/lib/hooks/useLocationHandles.js +6 -9
  238. package/lib/hooks/useNavigate.d.ts +5 -1
  239. package/lib/hooks/useNavigate.js +62 -12
  240. package/lib/hooks/useNotebookAIAgent.js +3 -6
  241. package/lib/hooks/useOnClickOutside.js +0 -5
  242. package/lib/hooks/useParams.d.ts +5 -0
  243. package/lib/hooks/useParams.js +152 -0
  244. package/lib/hooks/useRef.js +0 -5
  245. package/lib/hooks/useRuntimes.js +2 -7
  246. package/lib/hooks/useScreenshot.js +5 -10
  247. package/lib/hooks/useToast.js +21 -21
  248. package/lib/hooks/useUpload.js +9 -14
  249. package/lib/hooks/useUser.js +1 -1
  250. package/lib/hooks/useVisibilityObserver.js +0 -5
  251. package/lib/hooks/useWindowSize.js +0 -6
  252. package/lib/i18n/Labels.js +0 -5
  253. package/lib/i18n/index.js +0 -5
  254. package/lib/index.css +73 -0
  255. package/lib/index.d.ts +6 -3
  256. package/lib/index.js +7 -3
  257. package/lib/main.js +1 -2
  258. package/lib/mocks/components/FlashMock.js +4 -9
  259. package/lib/mocks/components/index.js +0 -5
  260. package/lib/mocks/hooks/index.d.ts +1 -1
  261. package/lib/mocks/hooks/index.js +1 -6
  262. package/lib/mocks/hooks/rests/index.js +0 -5
  263. package/lib/mocks/hooks/rests/rests.js +15 -23
  264. package/lib/mocks/hooks/useDatalayerMock.d.ts +6 -0
  265. package/lib/mocks/hooks/{useRunMock.js → useDatalayerMock.js} +9 -14
  266. package/lib/mocks/index.js +0 -5
  267. package/lib/mocks/jupyter/index.js +1 -6
  268. package/lib/mocks/models/CodeBlockMock.js +1 -6
  269. package/lib/mocks/models/CodelineMock.js +1 -6
  270. package/lib/mocks/models/CourseMock.d.ts +1 -1
  271. package/lib/mocks/models/CourseMock.js +10 -15
  272. package/lib/mocks/models/InviteMock.d.ts +1 -1
  273. package/lib/mocks/models/InviteMock.js +21 -11
  274. package/lib/mocks/models/JupyterLabUserMock.js +2 -2
  275. package/lib/mocks/models/OrganisationMock.d.ts +1 -1
  276. package/lib/mocks/models/OrganisationMock.js +11 -7
  277. package/lib/mocks/models/SchoolMock.d.ts +1 -1
  278. package/lib/mocks/models/SchoolMock.js +6 -6
  279. package/lib/mocks/models/SpaceMock.d.ts +1 -1
  280. package/lib/mocks/models/SpaceMock.js +9 -14
  281. package/lib/mocks/models/TeamMock.d.ts +1 -1
  282. package/lib/mocks/models/TeamMock.js +6 -6
  283. package/lib/mocks/models/UserMock.d.ts +1 -1
  284. package/lib/mocks/models/UserMock.js +4 -11
  285. package/lib/mocks/models/index.js +0 -5
  286. package/lib/mocks/views/ActionMenuMock.js +1 -6
  287. package/lib/mocks/views/ChartMock.js +3 -8
  288. package/lib/mocks/views/ChartMockOptions.js +24 -29
  289. package/lib/mocks/views/DashboardMock.js +74 -79
  290. package/lib/mocks/views/FormMock.js +1 -6
  291. package/lib/mocks/views/TableMock.js +1 -6
  292. package/lib/mocks/views/WipMock.js +0 -5
  293. package/lib/mocks/views/index.js +0 -5
  294. package/lib/models/Account.d.ts +2 -2
  295. package/lib/models/Assignment.d.ts +2 -2
  296. package/lib/models/Cell.d.ts +1 -1
  297. package/lib/models/CodeBlock.d.ts +1 -1
  298. package/lib/models/CodefeedBlocks.d.ts +2 -2
  299. package/lib/models/Contact.d.ts +1 -1
  300. package/lib/models/Contact.js +14 -19
  301. package/lib/models/ContactEvent.js +0 -5
  302. package/lib/models/ContactIAMProvider.js +2 -2
  303. package/lib/models/Course.d.ts +7 -7
  304. package/lib/models/Credits.js +0 -5
  305. package/lib/models/Dataset.d.ts +2 -2
  306. package/lib/models/Datasource.js +0 -5
  307. package/lib/models/Dean.d.ts +1 -1
  308. package/lib/models/Document.d.ts +1 -1
  309. package/lib/models/Environment.d.ts +2 -2
  310. package/lib/models/Errors.js +0 -5
  311. package/lib/models/Exercise.d.ts +1 -1
  312. package/lib/models/GrowthKPI.js +0 -5
  313. package/lib/models/IAMProviderLinked.js +1 -1
  314. package/lib/models/IAMProviderUsers.js +0 -5
  315. package/lib/models/IAMToken.js +0 -5
  316. package/lib/models/Inbound.js +0 -5
  317. package/lib/models/Instructor.d.ts +1 -1
  318. package/lib/models/Invite.d.ts +2 -2
  319. package/lib/models/Invite.js +1 -1
  320. package/lib/models/Item.d.ts +5 -5
  321. package/lib/models/LandingRoles.js +18 -23
  322. package/lib/models/Lesson.d.ts +1 -1
  323. package/lib/models/Member.d.ts +1 -1
  324. package/lib/models/Notebook.d.ts +1 -1
  325. package/lib/models/Organization.d.ts +4 -4
  326. package/lib/models/Organization.js +2 -7
  327. package/lib/models/OrganizationMember.d.ts +2 -2
  328. package/lib/models/Outbound.js +7 -12
  329. package/lib/models/Page.js +4 -2
  330. package/lib/models/PageTag.d.ts +2 -2
  331. package/lib/models/PageTag.js +56 -9
  332. package/lib/models/Profile.d.ts +1 -1
  333. package/lib/models/RolesOrganization.d.ts +1 -1
  334. package/lib/models/RolesOrganization.js +4 -17
  335. package/lib/models/RolesPlatform.d.ts +1 -1
  336. package/lib/models/RolesPlatform.js +12 -39
  337. package/lib/models/RolesTeam.d.ts +1 -1
  338. package/lib/models/RolesTeam.js +3 -15
  339. package/lib/models/Runtime.d.ts +59 -1
  340. package/lib/models/Runtime.js +11 -9
  341. package/lib/models/RuntimeSnapshot.js +1 -1
  342. package/lib/models/School.d.ts +4 -4
  343. package/lib/models/Secret.js +0 -5
  344. package/lib/models/Space.d.ts +5 -5
  345. package/lib/models/Space.js +3 -3
  346. package/lib/models/SpaceItem.d.ts +8 -8
  347. package/lib/models/SpaceMember.d.ts +2 -2
  348. package/lib/models/Student.d.ts +2 -2
  349. package/lib/models/StudentItem.d.ts +3 -3
  350. package/lib/models/Survey.js +0 -5
  351. package/lib/models/Team.d.ts +3 -3
  352. package/lib/models/Team.js +2 -7
  353. package/lib/models/TeamMember.d.ts +2 -2
  354. package/lib/models/URN.js +1 -6
  355. package/lib/models/User.d.ts +2 -2
  356. package/lib/models/User.js +7 -10
  357. package/lib/models/UserEvent.js +0 -5
  358. package/lib/models/UserOnboarding.d.ts +1 -1
  359. package/lib/models/UserOnboarding.js +7 -12
  360. package/lib/models/UserSettings.js +2 -7
  361. package/lib/models/index.d.ts +2 -2
  362. package/lib/models/index.js +2 -7
  363. package/lib/navigation/adapters/native.d.ts +11 -0
  364. package/lib/navigation/adapters/native.js +48 -0
  365. package/lib/navigation/adapters/nextjs.d.ts +9 -0
  366. package/lib/navigation/adapters/nextjs.js +35 -0
  367. package/lib/navigation/adapters/react-router.d.ts +4 -0
  368. package/lib/navigation/adapters/react-router.js +12 -0
  369. package/lib/navigation/components.d.ts +20 -0
  370. package/lib/navigation/components.js +36 -0
  371. package/lib/navigation/index.d.ts +4 -0
  372. package/lib/navigation/index.js +12 -0
  373. package/lib/routes/Routes.js +0 -5
  374. package/lib/routes/index.d.ts +1 -1
  375. package/lib/routes/index.js +1 -6
  376. package/lib/services/DatalayerServiceManager.d.ts +22 -0
  377. package/lib/services/DatalayerServiceManager.js +79 -0
  378. package/lib/services/index.d.ts +4 -0
  379. package/lib/services/index.js +7 -0
  380. package/lib/services/reconnectToRuntime.d.ts +32 -0
  381. package/lib/services/reconnectToRuntime.js +59 -0
  382. package/lib/state/State.d.ts +1 -1
  383. package/lib/state/State.js +1 -6
  384. package/lib/state/index.d.ts +1 -1
  385. package/lib/state/index.js +1 -6
  386. package/lib/state/storage/IAMStorage.js +14 -7
  387. package/lib/state/storage/index.d.ts +1 -1
  388. package/lib/state/storage/index.js +1 -6
  389. package/lib/state/substates/AIAgentState.js +4 -7
  390. package/lib/state/substates/CellState.js +6 -10
  391. package/lib/state/substates/CoreState.d.ts +1 -1
  392. package/lib/state/substates/CoreState.js +23 -20
  393. package/lib/state/substates/DatasourceState.js +1 -6
  394. package/lib/state/substates/DocumentState.js +0 -5
  395. package/lib/state/substates/GradeState.js +0 -5
  396. package/lib/state/substates/IAMState.d.ts +5 -1
  397. package/lib/state/substates/IAMState.js +88 -72
  398. package/lib/state/substates/JupyterLabState.js +1 -6
  399. package/lib/state/substates/LayoutState.d.ts +2 -2
  400. package/lib/state/substates/LayoutState.js +41 -28
  401. package/lib/state/substates/NbformatState.js +0 -5
  402. package/lib/state/substates/OrganizationState.js +1 -6
  403. package/lib/state/substates/RuntimesState.d.ts +2 -2
  404. package/lib/state/substates/RuntimesState.js +6 -10
  405. package/lib/state/substates/SpaceState.js +1 -6
  406. package/lib/state/substates/SurveysState.js +7 -12
  407. package/lib/state/substates/TeamState.js +1 -6
  408. package/lib/state/substates/index.js +0 -5
  409. package/lib/stories/assets/accessibility.png +0 -0
  410. package/lib/stories/assets/accessibility.svg +1 -0
  411. package/lib/stories/assets/addon-library.png +0 -0
  412. package/lib/stories/assets/assets.png +0 -0
  413. package/lib/stories/assets/context.png +0 -0
  414. package/lib/stories/assets/discord.svg +1 -0
  415. package/lib/stories/assets/docs.png +0 -0
  416. package/lib/stories/assets/figma-plugin.png +0 -0
  417. package/lib/stories/assets/github.svg +1 -0
  418. package/lib/stories/assets/share.png +0 -0
  419. package/lib/stories/assets/styling.png +0 -0
  420. package/lib/stories/assets/testing.png +0 -0
  421. package/lib/stories/assets/theming.png +0 -0
  422. package/lib/stories/assets/tutorials.svg +1 -0
  423. package/lib/stories/assets/youtube.svg +1 -0
  424. package/lib/stories/button.css +35 -0
  425. package/lib/stories/header.css +37 -0
  426. package/lib/stories/page.css +73 -0
  427. package/lib/test-setup.js +73 -1
  428. package/lib/theme/DatalayerTheme.js +1 -6
  429. package/lib/theme/DatalayerThemeProvider.js +17 -19
  430. package/lib/theme/Palette.js +1 -6
  431. package/lib/theme/index.js +0 -5
  432. package/lib/utils/Array.js +0 -5
  433. package/lib/utils/Avatar.js +2 -7
  434. package/lib/utils/Browser.js +6 -11
  435. package/lib/utils/Cells.d.ts +1 -1
  436. package/lib/utils/Cookie.js +1 -6
  437. package/lib/utils/Date.js +5 -10
  438. package/lib/utils/Download.js +5 -8
  439. package/lib/utils/DownloadFile.js +4 -7
  440. package/lib/utils/Env.js +2 -6
  441. package/lib/utils/File.js +0 -5
  442. package/lib/utils/Ids.js +0 -5
  443. package/lib/utils/Jupyter.js +0 -5
  444. package/lib/utils/Lazy.d.ts +1 -1
  445. package/lib/utils/Lazy.js +2 -8
  446. package/lib/utils/Name.js +10 -13
  447. package/lib/utils/Notebook.d.ts +1 -1
  448. package/lib/utils/Notebook.js +3 -3
  449. package/lib/utils/Number.js +13 -14
  450. package/lib/utils/Plots.d.ts +1 -1
  451. package/lib/utils/Plots.js +5 -5
  452. package/lib/utils/Random.js +0 -5
  453. package/lib/utils/Screenshot.js +1 -6
  454. package/lib/utils/Scroll.js +3 -7
  455. package/lib/utils/Sleep.js +1 -6
  456. package/lib/utils/Snapshot.js +2 -7
  457. package/lib/utils/String.js +2 -7
  458. package/lib/utils/Uri.js +2 -7
  459. package/lib/utils/Validator.js +0 -5
  460. package/lib/utils/WithSuspense.js +3 -11
  461. package/lib/utils/index.js +0 -5
  462. package/package.json +96 -30
  463. package/style/animation/Animation.module.css +174 -0
  464. package/style/base.css +64 -0
  465. package/style/index.css +6 -0
  466. package/lib/__tests__/App.test.js +0 -17
  467. package/lib/api/runtimes/models.d.ts +0 -59
  468. package/lib/api/runtimes/models.js +0 -11
  469. package/lib/hooks/useRun.d.ts +0 -21
  470. package/lib/mocks/hooks/useRunMock.d.ts +0 -6
  471. /package/lib/api/{runtimes → jupyter}/exec/Python.d.ts +0 -0
  472. /package/lib/api/{runtimes → jupyter}/exec/Snippets.d.ts +0 -0
  473. /package/lib/api/{runtimes → jupyter}/exec/index.d.ts +0 -0
  474. /package/lib/{__tests__/App.test.d.ts → examples/main.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="33" height="32" fill="none" viewBox="0 0 33 32"><g clip-path="url(#clip0_10031_177597)"><path fill="#B7F0EF" fill-rule="evenodd" d="M17 7.87059C17 6.48214 17.9812 5.28722 19.3431 5.01709L29.5249 2.99755C31.3238 2.64076 33 4.01717 33 5.85105V22.1344C33 23.5229 32.0188 24.7178 30.6569 24.9879L20.4751 27.0074C18.6762 27.3642 17 25.9878 17 24.1539L17 7.87059Z" clip-rule="evenodd" opacity=".7"/><path fill="#87E6E5" fill-rule="evenodd" d="M1 5.85245C1 4.01857 2.67623 2.64215 4.47507 2.99895L14.6569 5.01848C16.0188 5.28861 17 6.48354 17 7.87198V24.1553C17 25.9892 15.3238 27.3656 13.5249 27.0088L3.34311 24.9893C1.98119 24.7192 1 23.5242 1 22.1358V5.85245Z" clip-rule="evenodd"/><path fill="#61C1FD" fill-rule="evenodd" d="M15.543 5.71289C15.543 5.71289 16.8157 5.96289 17.4002 6.57653C17.9847 7.19016 18.4521 9.03107 18.4521 9.03107C18.4521 9.03107 18.4521 25.1106 18.4521 26.9629C18.4521 28.8152 19.3775 31.4174 19.3775 31.4174L17.4002 28.8947L16.2575 31.4174C16.2575 31.4174 15.543 29.0765 15.543 27.122C15.543 25.1674 15.543 5.71289 15.543 5.71289Z" clip-rule="evenodd"/></g><defs><clipPath id="clip0_10031_177597"><rect width="32" height="32" fill="#fff" transform="translate(0.5)"/></clipPath></defs></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="none" viewBox="0 0 32 32"><path fill="#ED1D24" d="M31.3313 8.44657C30.9633 7.08998 29.8791 6.02172 28.5022 5.65916C26.0067 5.00026 16 5.00026 16 5.00026C16 5.00026 5.99333 5.00026 3.4978 5.65916C2.12102 6.02172 1.03665 7.08998 0.668678 8.44657C0 10.9053 0 16.0353 0 16.0353C0 16.0353 0 21.1652 0.668678 23.6242C1.03665 24.9806 2.12102 26.0489 3.4978 26.4116C5.99333 27.0703 16 27.0703 16 27.0703C16 27.0703 26.0067 27.0703 28.5022 26.4116C29.8791 26.0489 30.9633 24.9806 31.3313 23.6242C32 21.1652 32 16.0353 32 16.0353C32 16.0353 32 10.9053 31.3313 8.44657Z"/><path fill="#fff" d="M12.7266 20.6934L21.0902 16.036L12.7266 11.3781V20.6934Z"/></svg>
@@ -0,0 +1,35 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+
6
+ .storybook-button {
7
+ display: inline-block;
8
+ cursor: pointer;
9
+ border: 0;
10
+ border-radius: 3em;
11
+ font-weight: 700;
12
+ line-height: 1;
13
+ font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
14
+ }
15
+ .storybook-button--primary {
16
+ background-color: #555ab9;
17
+ color: white;
18
+ }
19
+ .storybook-button--secondary {
20
+ box-shadow: rgba(0, 0, 0, 0.15) 0px 0px 0px 1px inset;
21
+ background-color: transparent;
22
+ color: #333;
23
+ }
24
+ .storybook-button--small {
25
+ padding: 10px 16px;
26
+ font-size: 12px;
27
+ }
28
+ .storybook-button--medium {
29
+ padding: 11px 20px;
30
+ font-size: 14px;
31
+ }
32
+ .storybook-button--large {
33
+ padding: 12px 24px;
34
+ font-size: 16px;
35
+ }
@@ -0,0 +1,37 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+
6
+ .storybook-header {
7
+ display: flex;
8
+ justify-content: space-between;
9
+ align-items: center;
10
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
11
+ padding: 15px 20px;
12
+ font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
13
+ }
14
+
15
+ .storybook-header svg {
16
+ display: inline-block;
17
+ vertical-align: top;
18
+ }
19
+
20
+ .storybook-header h1 {
21
+ display: inline-block;
22
+ vertical-align: top;
23
+ margin: 6px 0 6px 10px;
24
+ font-weight: 700;
25
+ font-size: 20px;
26
+ line-height: 1;
27
+ }
28
+
29
+ .storybook-header button + button {
30
+ margin-left: 10px;
31
+ }
32
+
33
+ .storybook-header .welcome {
34
+ margin-right: 10px;
35
+ color: #333;
36
+ font-size: 14px;
37
+ }
@@ -0,0 +1,73 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+
6
+ .storybook-page {
7
+ margin: 0 auto;
8
+ padding: 48px 20px;
9
+ max-width: 600px;
10
+ color: #333;
11
+ font-size: 14px;
12
+ line-height: 24px;
13
+ font-family: 'Nunito Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
14
+ }
15
+
16
+ .storybook-page h2 {
17
+ display: inline-block;
18
+ vertical-align: top;
19
+ margin: 0 0 4px;
20
+ font-weight: 700;
21
+ font-size: 32px;
22
+ line-height: 1;
23
+ }
24
+
25
+ .storybook-page p {
26
+ margin: 1em 0;
27
+ }
28
+
29
+ .storybook-page a {
30
+ color: inherit;
31
+ }
32
+
33
+ .storybook-page ul {
34
+ margin: 1em 0;
35
+ padding-left: 30px;
36
+ }
37
+
38
+ .storybook-page li {
39
+ margin-bottom: 8px;
40
+ }
41
+
42
+ .storybook-page .tip {
43
+ display: inline-block;
44
+ vertical-align: top;
45
+ margin-right: 10px;
46
+ border-radius: 1em;
47
+ background: #e7fdd8;
48
+ padding: 4px 12px;
49
+ color: #357a14;
50
+ font-weight: 700;
51
+ font-size: 11px;
52
+ line-height: 12px;
53
+ }
54
+
55
+ .storybook-page .tip-wrapper {
56
+ margin-top: 40px;
57
+ margin-bottom: 40px;
58
+ font-size: 13px;
59
+ line-height: 20px;
60
+ }
61
+
62
+ .storybook-page .tip-wrapper svg {
63
+ display: inline-block;
64
+ vertical-align: top;
65
+ margin-top: 3px;
66
+ margin-right: 4px;
67
+ width: 12px;
68
+ height: 12px;
69
+ }
70
+
71
+ .storybook-page .tip-wrapper svg path {
72
+ fill: #1ea7fd;
73
+ }
package/lib/test-setup.js CHANGED
@@ -2,6 +2,78 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- export {};
6
5
  // Test setup for unit tests
7
6
  // Add any global test configuration here
7
+ // Define webpack globals that are expected by some dependencies
8
+ global.__webpack_public_path__ = '';
9
+ // Define other globals that might be needed
10
+ global.global = globalThis;
11
+ // Mock DragEvent and other DOM APIs not available in jsdom
12
+ class MockDragEvent extends Event {
13
+ dataTransfer = null;
14
+ constructor(type, init) {
15
+ super(type, init);
16
+ this.dataTransfer = init?.dataTransfer || null;
17
+ }
18
+ }
19
+ // Mock DataTransfer if not available
20
+ class MockDataTransfer {
21
+ dropEffect = 'none';
22
+ effectAllowed = 'uninitialized';
23
+ files = [];
24
+ items = [];
25
+ types = [];
26
+ clearData(format) { }
27
+ getData(format) {
28
+ return '';
29
+ }
30
+ setData(format, data) { }
31
+ setDragImage(image, x, y) { }
32
+ }
33
+ // Add missing DOM APIs to global scope
34
+ global.DragEvent = MockDragEvent;
35
+ global.DataTransfer = MockDataTransfer;
36
+ // Mock window.matchMedia
37
+ Object.defineProperty(window, 'matchMedia', {
38
+ writable: true,
39
+ value: (query) => ({
40
+ matches: false,
41
+ media: query,
42
+ onchange: null,
43
+ addListener: () => { }, // deprecated
44
+ removeListener: () => { }, // deprecated
45
+ addEventListener: () => { },
46
+ removeEventListener: () => { },
47
+ dispatchEvent: () => { },
48
+ }),
49
+ });
50
+ // Mock Jupyter-related modules to prevent import errors
51
+ import { vi } from 'vitest';
52
+ vi.mock('@datalayer/jupyter-react', () => ({
53
+ useJupyter: () => ({
54
+ defaultKernel: null,
55
+ serviceManager: null,
56
+ }),
57
+ JupyterReactTheme: ({ children }) => children,
58
+ CollaborationProviderBase: class CollaborationProviderBase {
59
+ },
60
+ CollaborationStatus: {
61
+ IDLE: 'idle',
62
+ CONNECTING: 'connecting',
63
+ CONNECTED: 'connected',
64
+ DISCONNECTED: 'disconnected',
65
+ },
66
+ }));
67
+ vi.mock('@jupyter/web-components', () => ({}));
68
+ vi.mock('@jupyter/ydoc', () => ({
69
+ YNotebook: class YNotebook {
70
+ },
71
+ }));
72
+ vi.mock('y-websocket', () => ({
73
+ WebsocketProvider: class WebsocketProvider {
74
+ constructor() { }
75
+ connect() { }
76
+ disconnect() { }
77
+ destroy() { }
78
+ },
79
+ }));
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  import { theme as primerTheme } from '@primer/react';
11
6
  import cloneDeep from 'lodash/cloneDeep.js';
12
7
  import merge from 'lodash/merge.js';
@@ -47,7 +42,7 @@ const datalayerThemeDefs = {
47
42
  dark: {
48
43
  colors: {},
49
44
  shadows: {},
50
- }
45
+ },
51
46
  },
52
47
  };
53
48
  const { colorSchemes: primerSchemes, ...primerOthers } = cloneDeep(primerTheme);
@@ -3,13 +3,8 @@ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  * Copyright (c) 2023-2025 Datalayer, Inc.
4
4
  * Distributed under the terms of the Modified BSD License.
5
5
  */
6
- /*
7
- * Copyright (c) 2021-2024 Datalayer, Inc.
8
- *
9
- * Datalayer License
10
- */
11
6
  import { useEffect, useState } from 'react';
12
- import { BaseStyles, ThemeProvider as PrimerThemeProvider } from '@primer/react';
7
+ import { BaseStyles, ThemeProvider as PrimerThemeProvider, } from '@primer/react';
13
8
  import { loadJupyterConfig, jupyterLabTheme } from '@datalayer/jupyter-react';
14
9
  import { datalayerTheme } from '../theme';
15
10
  import { useRuntimesStore } from '../state';
@@ -33,7 +28,9 @@ export function DatalayerThemeProvider(props) {
33
28
  setColorMode(matches ? 'dark' : 'light');
34
29
  }
35
30
  function updateColorMode(themeManager) {
36
- setColorMode(themeManager.theme && !themeManager.isLight(themeManager.theme) ? 'dark' : 'light');
31
+ setColorMode(themeManager.theme && !themeManager.isLight(themeManager.theme)
32
+ ? 'dark'
33
+ : 'light');
37
34
  }
38
35
  if (inJupyterLab) {
39
36
  // TODO remove the try/catch for JupyterLab > 4.1.
@@ -53,22 +50,23 @@ export function DatalayerThemeProvider(props) {
53
50
  }
54
51
  else {
55
52
  colorSchemeFromMedia({
56
- matches: window.matchMedia('(prefers-color-scheme: dark)').matches
53
+ matches: window.matchMedia('(prefers-color-scheme: dark)').matches,
57
54
  });
58
- window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', colorSchemeFromMedia);
55
+ window
56
+ .matchMedia('(prefers-color-scheme: dark)')
57
+ .addEventListener('change', colorSchemeFromMedia);
59
58
  return () => {
60
- window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', colorSchemeFromMedia);
59
+ window
60
+ .matchMedia('(prefers-color-scheme: dark)')
61
+ .removeEventListener('change', colorSchemeFromMedia);
61
62
  };
62
63
  }
63
64
  }
64
65
  }, [inJupyterLab, jupyterLabAdapter]);
65
- return (inJupyterLab !== undefined ?
66
- _jsx(PrimerThemeProvider, { colorMode: colorMode, theme: inJupyterLab ? jupyterLabTheme : datalayerTheme, ...rest, children: _jsx(BaseStyles, { style: {
67
- backgroundColor: 'var(--bgColor-default)',
68
- color: 'var(--fgColor-default)',
69
- fontSize: 'var(--text-body-size-medium)',
70
- ...baseStyles
71
- }, children: children }) })
72
- :
73
- _jsx(_Fragment, {}));
66
+ return inJupyterLab !== undefined ? (_jsx(PrimerThemeProvider, { colorMode: colorMode, theme: inJupyterLab ? jupyterLabTheme : datalayerTheme, ...rest, children: _jsx(BaseStyles, { style: {
67
+ backgroundColor: 'var(--bgColor-default)',
68
+ color: 'var(--fgColor-default)',
69
+ fontSize: 'var(--text-body-size-medium)',
70
+ ...baseStyles,
71
+ }, children: children }) })) : (_jsx(_Fragment, {}));
74
72
  }
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  const JUPYTERLAB_COLLABORATORS_COLORS = {
11
6
  '--jp-collaborator-color1': '#ffad8e',
12
7
  '--jp-collaborator-color2': '#dac83d',
@@ -14,7 +9,7 @@ const JUPYTERLAB_COLLABORATORS_COLORS = {
14
9
  '--jp-collaborator-color4': '#00e4d0',
15
10
  '--jp-collaborator-color5': '#45d4ff',
16
11
  '--jp-collaborator-color6': '#e2b1ff',
17
- '--jp-collaborator-color7': '#ff9de6'
12
+ '--jp-collaborator-color7': '#ff9de6',
18
13
  };
19
14
  export const jpCssToColor = (cssVariableName) => {
20
15
  return JUPYTERLAB_COLLABORATORS_COLORS[cssVariableName.replaceAll('var(', '').replaceAll(')', '')];
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  export * from './DatalayerTheme';
11
6
  export * from './DatalayerThemeProvider';
12
7
  export * from './Palette';
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  export const asArray = (obj) => {
11
6
  if (Array.isArray(obj)) {
12
7
  return obj;
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  export const DEFAULT_AVATAR_URL = 'https://avatars.githubusercontent.com/u/70511875?s=200&v=4';
11
6
  export const DEFAULT_AVATAR_URL_ENCODED = encodeURIComponent(DEFAULT_AVATAR_URL);
12
7
  function stringToColor(string) {
@@ -31,8 +26,8 @@ export function stringAvatar(name) {
31
26
  };
32
27
  }
33
28
  export function getAvatarURL(url) {
34
- return url ?
35
- url.startsWith('https://www.gravatar.com/avatar')
29
+ return url
30
+ ? url.startsWith('https://www.gravatar.com/avatar')
36
31
  ? `${url}?v=4&s=200&d=${DEFAULT_AVATAR_URL_ENCODED}` // Use gravatar syntax - sizing works for Gravatar and GitHub
37
32
  : url
38
33
  : DEFAULT_AVATAR_URL; // This fallback should barely be used - hence we allow decoding the URI.
@@ -2,33 +2,28 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  // https://stackoverflow.com/questions/49328382/browser-detection-in-reactjs
11
6
  // https://codepedia.info/detect-browser-in-javascript
12
7
  export const detectBrowser = () => {
13
8
  const userAgent = navigator.userAgent;
14
9
  let browserName;
15
10
  if (userAgent.match(/chrome|chromium|crios/i)) {
16
- browserName = "chrome";
11
+ browserName = 'chrome';
17
12
  }
18
13
  else if (userAgent.match(/firefox|fxios/i)) {
19
- browserName = "firefox";
14
+ browserName = 'firefox';
20
15
  }
21
16
  else if (userAgent.match(/safari/i)) {
22
- browserName = "safari";
17
+ browserName = 'safari';
23
18
  }
24
19
  else if (userAgent.match(/opr\//i)) {
25
- browserName = "opera";
20
+ browserName = 'opera';
26
21
  }
27
22
  else if (userAgent.match(/edg/i)) {
28
- browserName = "edge";
23
+ browserName = 'edge';
29
24
  }
30
25
  else {
31
- browserName = "Unknow browser.";
26
+ browserName = 'Unknow browser.';
32
27
  }
33
28
  return browserName;
34
29
  };
@@ -1,2 +1,2 @@
1
- import { IDataset } from "../models";
1
+ import { IDataset } from '../models';
2
2
  export declare const getDatasetCell: (dataset: IDataset) => string;
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  /**
11
6
  * Get a cookie from the document.
12
7
  */
@@ -21,7 +16,7 @@ export function getCookie(cname) {
21
16
  return cookie;
22
17
  }
23
18
  // From https://www.w3schools.com/js/js_cookies.asp
24
- const name = cname + "=";
19
+ const name = cname + '=';
25
20
  const decodedCookie = decodeURIComponent(document.cookie);
26
21
  const ca = decodedCookie.split(';');
27
22
  for (let i = 0; i < ca.length; i++) {
package/lib/utils/Date.js CHANGED
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  //- Taken from https://stackoverflow.com/questions/6108819/javascript-timestamp-to-relative-time
11
6
  // in miliseconds
12
7
  const units = {
@@ -15,14 +10,14 @@ const units = {
15
10
  day: 24 * 60 * 60 * 1000,
16
11
  hour: 60 * 60 * 1000,
17
12
  minute: 60 * 1000,
18
- second: 1000
13
+ second: 1000,
19
14
  };
20
15
  const rtf = new Intl.RelativeTimeFormat(undefined, {
21
16
  numeric: 'auto',
22
- style: 'short'
17
+ style: 'short',
23
18
  });
24
19
  export const getRelativeTime = (d1, d2 = new Date()) => {
25
- var elapsed = d1.getTime() - d2.getTime();
20
+ const elapsed = d1.getTime() - d2.getTime();
26
21
  // "Math.abs" accounts for both "past" & "future" scenarios
27
22
  for (const u in units)
28
23
  if (Math.abs(elapsed) > units[u] || u === 'second')
@@ -34,8 +29,8 @@ const p = (i) => {
34
29
  return i > 1 ? 's' : '';
35
30
  };
36
31
  export const timeSince = (date) => {
37
- var seconds = Math.floor((new Date().getTime() - date.getTime()) / 1000);
38
- var interval = seconds / 31536000;
32
+ const seconds = Math.floor((new Date().getTime() - date.getTime()) / 1000);
33
+ let interval = seconds / 31536000;
39
34
  if (interval > 1) {
40
35
  const i = Math.floor(interval);
41
36
  return i + ` year${p(i)}`;
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  export function jsonToCSVString(json) {
11
6
  const headers = Object.keys(json[0]);
12
7
  let csvString = '';
@@ -14,10 +9,10 @@ export function jsonToCSVString(json) {
14
9
  json.forEach(obj => {
15
10
  const rowCells = headers.map(header => {
16
11
  const val = obj[header];
17
- if (typeof val === "number") {
12
+ if (typeof val === 'number') {
18
13
  return val;
19
14
  }
20
- if (typeof val === "string") {
15
+ if (typeof val === 'string') {
21
16
  return val;
22
17
  }
23
18
  if (val instanceof Date) {
@@ -31,7 +26,9 @@ export function jsonToCSVString(json) {
31
26
  return csvString;
32
27
  }
33
28
  export const downloadJson = (data, fileName, extension) => {
34
- const jsonData = new Blob([JSON.stringify(data)], { type: 'application/json' });
29
+ const jsonData = new Blob([JSON.stringify(data)], {
30
+ type: 'application/json',
31
+ });
35
32
  const jsonURL = URL.createObjectURL(jsonData);
36
33
  const jsonLink = document.createElement('a');
37
34
  jsonLink.href = jsonURL;
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  /**
11
6
  * @param data
12
7
  * @param filename
@@ -16,9 +11,11 @@
16
11
  * .zip ZIP archive application/zip
17
12
  */
18
13
  export const downloadFile = (data, filename, mime, bom) => {
19
- const blobData = (typeof bom !== 'undefined') ? [bom, data] : [data];
14
+ const blobData = typeof bom !== 'undefined' ? [bom, data] : [data];
20
15
  const blob = new Blob(blobData, { type: mime || 'application/octet-stream' });
21
- const blobURL = (window.URL && window.URL.createObjectURL) ? window.URL.createObjectURL(blob) : window.webkitURL.createObjectURL(blob);
16
+ const blobURL = window.URL && window.URL.createObjectURL
17
+ ? window.URL.createObjectURL(blob)
18
+ : window.webkitURL.createObjectURL(blob);
22
19
  const tempLink = document.createElement('a');
23
20
  tempLink.style.display = 'none';
24
21
  tempLink.href = blobURL;
package/lib/utils/Env.js CHANGED
@@ -2,11 +2,7 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  export const isDevDeployment = () => {
11
- return location.hostname.startsWith('dev') || location.hostname.startsWith('localhost');
6
+ return (location.hostname.startsWith('dev') ||
7
+ location.hostname.startsWith('localhost'));
12
8
  };
package/lib/utils/File.js CHANGED
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  /**
11
6
  * creates name of file.
12
7
  *
package/lib/utils/Ids.js CHANGED
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  import { v4 as uuid_v4 } from 'uuid';
11
6
  import { ulid } from 'ulid';
12
7
  export const newUuid = () => {
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  import { PageConfig } from '@jupyterlab/coreutils';
11
6
  let _insideJupyterLab = null;
12
7
  export function isInsideJupyterLab() {
@@ -1,4 +1,4 @@
1
- import { ComponentType } from "react";
1
+ import { ComponentType } from 'react';
2
2
  export type PreloadableComponent<T extends ComponentType<any>> = T & {
3
3
  preload: () => Promise<void>;
4
4
  };
package/lib/utils/Lazy.js CHANGED
@@ -2,13 +2,7 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
- // Taken from https://github.com/ianschmitz/react-lazy-with-preload with Datalayer License.
11
- import { createElement, forwardRef, lazy as reactLazy } from "react";
5
+ import { createElement, forwardRef, lazy as reactLazy, } from 'react';
12
6
  export function lazyWithPreload(factory) {
13
7
  const LazyComponent = reactLazy(factory);
14
8
  let factoryPromise;
@@ -18,7 +12,7 @@ export function lazyWithPreload(factory) {
18
12
  });
19
13
  Component.preload = () => {
20
14
  if (!factoryPromise) {
21
- factoryPromise = factory().then((module) => {
15
+ factoryPromise = factory().then(module => {
22
16
  LoadedComponent = module.default;
23
17
  });
24
18
  }