@datalayer/core 1.0.24 → 1.1.41

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 (364) hide show
  1. package/README.md +35 -24
  2. package/lib/api/constants.d.ts +3 -0
  3. package/lib/api/constants.js +3 -0
  4. package/lib/api/index.d.ts +0 -8
  5. package/lib/api/index.js +0 -8
  6. package/lib/cli-login.js +167 -0
  7. package/lib/client/base.d.ts +0 -3
  8. package/lib/client/base.js +0 -2
  9. package/lib/client/index.d.ts +10 -98
  10. package/lib/client/index.js +12 -21
  11. package/lib/components/avatars/UserAvatar.d.ts +16 -0
  12. package/lib/components/avatars/UserAvatar.js +47 -0
  13. package/lib/components/avatars/index.d.ts +1 -0
  14. package/lib/components/avatars/index.js +1 -0
  15. package/lib/components/billing/BillableAccountSelect.js +4 -0
  16. package/lib/components/billing/index.js +4 -0
  17. package/lib/components/checkout/StripeCheckout.js +48 -2
  18. package/lib/components/context/index.d.ts +0 -1
  19. package/lib/components/context/index.js +0 -1
  20. package/lib/components/display/DisplayHandle.d.ts +12 -0
  21. package/lib/components/display/DisplayHandle.js +11 -0
  22. package/lib/components/display/LiveRelativeTime.d.ts +1 -10
  23. package/lib/components/display/LiveRelativeTime.js +5 -16
  24. package/lib/components/display/index.d.ts +1 -0
  25. package/lib/components/display/index.js +1 -0
  26. package/lib/components/flashes/index.d.ts +0 -1
  27. package/lib/components/flashes/index.js +0 -1
  28. package/lib/components/index.d.ts +2 -0
  29. package/lib/components/index.js +2 -0
  30. package/lib/components/principal/Principal.d.ts +7 -0
  31. package/lib/components/principal/Principal.js +153 -16
  32. package/lib/components/principal/PrincipalAvatar.d.ts +1 -1
  33. package/lib/components/principal/PrincipalAvatar.js +4 -28
  34. package/lib/components/principal/PrincipalBadge.js +4 -4
  35. package/lib/components/principal/PrincipalDetailsOverlay.d.ts +4 -2
  36. package/lib/components/principal/PrincipalDetailsOverlay.js +27 -7
  37. package/lib/components/principal/PrincipalSwitcherMenu.js +76 -39
  38. package/lib/components/progress/index.d.ts +0 -1
  39. package/lib/components/progress/index.js +0 -1
  40. package/lib/components/sharing/ShareAccessComponent.d.ts +3 -2
  41. package/lib/components/sharing/ShareAccessComponent.js +180 -133
  42. package/lib/components/sharing/SharingEditor.js +4 -0
  43. package/lib/components/snippets/index.d.ts +1 -1
  44. package/lib/components/snippets/index.js +1 -1
  45. package/lib/components/students/StudentResultCircle.d.ts +21 -0
  46. package/lib/components/students/StudentResultCircle.js +59 -0
  47. package/lib/components/students/index.d.ts +1 -1
  48. package/lib/components/students/index.js +1 -1
  49. package/lib/components/time/LiveRelativeTime.d.ts +14 -0
  50. package/lib/components/time/LiveRelativeTime.js +43 -0
  51. package/lib/components/time/index.d.ts +1 -0
  52. package/lib/components/time/index.js +9 -0
  53. package/lib/components/timeline/Timeline.d.ts +20 -0
  54. package/lib/components/timeline/Timeline.js +90 -0
  55. package/lib/components/timeline/index.d.ts +1 -0
  56. package/lib/components/timeline/index.js +9 -0
  57. package/lib/components/tokens/index.d.ts +1 -1
  58. package/lib/components/tokens/index.js +1 -1
  59. package/lib/components/toolbars/index.d.ts +1 -3
  60. package/lib/components/toolbars/index.js +1 -3
  61. package/lib/hooks/cacheConverters.d.ts +21 -0
  62. package/lib/hooks/cacheConverters.js +110 -0
  63. package/lib/hooks/index.d.ts +0 -2
  64. package/lib/hooks/index.js +0 -2
  65. package/lib/hooks/useCache.d.ts +65 -36
  66. package/lib/hooks/useCache.js +424 -65
  67. package/lib/hooks/useDatalayer.js +3 -1
  68. package/lib/hooks/useIAM.js +1 -3
  69. package/lib/hooks/useLocationHandles.d.ts +3 -1
  70. package/lib/hooks/useLocationHandles.js +2 -1
  71. package/lib/hooks/usePrincipalStore.d.ts +2 -2
  72. package/lib/hooks/usePrincipalStore.js +97 -14
  73. package/lib/hooks/useProjectStore.d.ts +1 -1
  74. package/lib/hooks/useSelectedPrincipal.js +1 -1
  75. package/lib/hooks/useUser.js +19 -2
  76. package/lib/index.d.ts +1 -6
  77. package/lib/index.js +1 -13
  78. package/lib/main.js +3 -3
  79. package/lib/mocks/index.js +1 -1
  80. package/lib/mocks/models/index.d.ts +0 -1
  81. package/lib/mocks/models/index.js +0 -1
  82. package/lib/models/Datasource.d.ts +2 -2
  83. package/lib/models/IAM.d.ts +1 -1
  84. package/lib/models/IAMToken.d.ts +1 -1
  85. package/lib/models/School.d.ts +12 -3
  86. package/lib/models/Secret.d.ts +2 -2
  87. package/lib/models/Student.d.ts +13 -3
  88. package/lib/models/Usage.d.ts +11 -1
  89. package/lib/models/UserDTO.d.ts +2 -2
  90. package/lib/models/index.d.ts +0 -30
  91. package/lib/models/index.js +0 -30
  92. package/lib/routes/index.d.ts +1 -0
  93. package/lib/routes/index.js +1 -0
  94. package/lib/routes/publicPaths.d.ts +23 -0
  95. package/lib/routes/publicPaths.js +74 -0
  96. package/lib/state/State.d.ts +0 -12
  97. package/lib/state/State.js +0 -12
  98. package/lib/state/substates/CoreState.js +1 -1
  99. package/lib/state/substates/LayoutState.d.ts +12 -1
  100. package/lib/state/substates/index.d.ts +0 -7
  101. package/lib/state/substates/index.js +0 -7
  102. package/lib/utils/Date.d.ts +7 -0
  103. package/lib/utils/Date.js +43 -10
  104. package/lib/utils/Handles.js +3 -1
  105. package/lib/utils/index.d.ts +1 -1
  106. package/lib/utils/index.js +1 -1
  107. package/lib/views/api-keys/APIKeyEdit.d.ts +8 -0
  108. package/lib/views/{iam-tokens/IAMTokenEdit.js → api-keys/APIKeyEdit.js} +31 -31
  109. package/lib/views/api-keys/APIKeyNew.d.ts +8 -0
  110. package/lib/views/api-keys/APIKeyNew.js +143 -0
  111. package/lib/views/api-keys/APIKeys.d.ts +12 -0
  112. package/lib/views/api-keys/APIKeys.js +128 -0
  113. package/lib/views/api-keys/APIKeysStandalone.d.ts +2 -0
  114. package/lib/views/api-keys/APIKeysStandalone.js +117 -0
  115. package/lib/views/api-keys/index.d.ts +3 -0
  116. package/lib/{mocks/jupyter → views/api-keys}/index.js +3 -1
  117. package/lib/views/datasources/DatasourceDetail.d.ts +1 -1
  118. package/lib/views/datasources/DatasourceNew.d.ts +1 -1
  119. package/lib/views/datasources/Datasources.d.ts +1 -1
  120. package/lib/views/datasources/Datasources.js +12 -3
  121. package/lib/views/iam/SignInSimple.d.ts +37 -1
  122. package/lib/views/iam/SignInSimple.js +110 -12
  123. package/package.json +5 -3
  124. package/lib/App.css +0 -47
  125. package/lib/App.d.ts +0 -3
  126. package/lib/App.js +0 -21
  127. package/lib/api/runtimes/checkpoints.d.ts +0 -122
  128. package/lib/api/runtimes/checkpoints.js +0 -118
  129. package/lib/api/runtimes/environments.d.ts +0 -9
  130. package/lib/api/runtimes/environments.js +0 -29
  131. package/lib/api/runtimes/healthz.d.ts +0 -15
  132. package/lib/api/runtimes/healthz.js +0 -44
  133. package/lib/api/runtimes/index.d.ts +0 -12
  134. package/lib/api/runtimes/index.js +0 -16
  135. package/lib/api/runtimes/runtimes.d.ts +0 -138
  136. package/lib/api/runtimes/runtimes.js +0 -230
  137. package/lib/api/runtimes/snapshots.d.ts +0 -38
  138. package/lib/api/runtimes/snapshots.js +0 -82
  139. package/lib/api/spacer/documents.d.ts +0 -12
  140. package/lib/api/spacer/documents.js +0 -43
  141. package/lib/api/spacer/healthz.d.ts +0 -15
  142. package/lib/api/spacer/healthz.js +0 -44
  143. package/lib/api/spacer/index.d.ts +0 -15
  144. package/lib/api/spacer/index.js +0 -19
  145. package/lib/api/spacer/items.d.ts +0 -25
  146. package/lib/api/spacer/items.js +0 -55
  147. package/lib/api/spacer/lexicals.d.ts +0 -34
  148. package/lib/api/spacer/lexicals.js +0 -89
  149. package/lib/api/spacer/notebooks.d.ts +0 -34
  150. package/lib/api/spacer/notebooks.js +0 -89
  151. package/lib/api/spacer/spaces.d.ts +0 -84
  152. package/lib/api/spacer/spaces.js +0 -170
  153. package/lib/api/spacer/users.d.ts +0 -9
  154. package/lib/api/spacer/users.js +0 -29
  155. package/lib/client/mixins/RuntimesMixin.d.ts +0 -93
  156. package/lib/client/mixins/RuntimesMixin.js +0 -229
  157. package/lib/client/mixins/SpacerMixin.d.ts +0 -210
  158. package/lib/client/mixins/SpacerMixin.js +0 -615
  159. package/lib/client/utils/spacerUtils.d.ts +0 -18
  160. package/lib/client/utils/spacerUtils.js +0 -32
  161. package/lib/collaboration/DatalayerCollaboration.d.ts +0 -13
  162. package/lib/collaboration/DatalayerCollaboration.js +0 -28
  163. package/lib/collaboration/DatalayerCollaborationProvider.d.ts +0 -60
  164. package/lib/collaboration/DatalayerCollaborationProvider.js +0 -163
  165. package/lib/collaboration/index.d.ts +0 -2
  166. package/lib/collaboration/index.js +0 -6
  167. package/lib/components/context/SpaceSelect.d.ts +0 -2
  168. package/lib/components/context/SpaceSelect.js +0 -42
  169. package/lib/components/flashes/FlashDisclaimer.d.ts +0 -2
  170. package/lib/components/flashes/FlashDisclaimer.js +0 -17
  171. package/lib/components/icons/ArtifactIcon.d.ts +0 -10
  172. package/lib/components/icons/ArtifactIcon.js +0 -58
  173. package/lib/components/icons/index.d.ts +0 -1
  174. package/lib/components/icons/index.js +0 -5
  175. package/lib/components/nbgrader/NbGradesDetails.d.ts +0 -5
  176. package/lib/components/nbgrader/NbGradesDetails.js +0 -14
  177. package/lib/components/nbgrader/index.d.ts +0 -1
  178. package/lib/components/nbgrader/index.js +0 -5
  179. package/lib/components/progress/CreditsIndicator.d.ts +0 -33
  180. package/lib/components/progress/CreditsIndicator.js +0 -23
  181. package/lib/components/runtimes/RuntimeCellVariables.d.ts +0 -39
  182. package/lib/components/runtimes/RuntimeCellVariables.js +0 -172
  183. package/lib/components/runtimes/RuntimeCellVariablesDialog.d.ts +0 -37
  184. package/lib/components/runtimes/RuntimeCellVariablesDialog.js +0 -101
  185. package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +0 -57
  186. package/lib/components/runtimes/RuntimeLauncherDialog.js +0 -275
  187. package/lib/components/runtimes/RuntimePickerBase.d.ts +0 -69
  188. package/lib/components/runtimes/RuntimePickerBase.js +0 -122
  189. package/lib/components/runtimes/RuntimePickerCell.d.ts +0 -34
  190. package/lib/components/runtimes/RuntimePickerCell.js +0 -104
  191. package/lib/components/runtimes/RuntimePickerNotebook.d.ts +0 -42
  192. package/lib/components/runtimes/RuntimePickerNotebook.js +0 -232
  193. package/lib/components/runtimes/RuntimeReservationControl.d.ts +0 -47
  194. package/lib/components/runtimes/RuntimeReservationControl.js +0 -42
  195. package/lib/components/runtimes/RuntimeSimplePicker.d.ts +0 -38
  196. package/lib/components/runtimes/RuntimeSimplePicker.js +0 -155
  197. package/lib/components/runtimes/RuntimeTransfer.d.ts +0 -16
  198. package/lib/components/runtimes/RuntimeTransfer.js +0 -5
  199. package/lib/components/runtimes/RuntimeUtils.d.ts +0 -17
  200. package/lib/components/runtimes/RuntimeUtils.js +0 -178
  201. package/lib/components/runtimes/RuntimeVariables.d.ts +0 -38
  202. package/lib/components/runtimes/RuntimeVariables.js +0 -75
  203. package/lib/components/runtimes/index.d.ts +0 -11
  204. package/lib/components/runtimes/index.js +0 -15
  205. package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +0 -33
  206. package/lib/components/snapshots/SandboxSnapshotMenu.js +0 -169
  207. package/lib/components/snapshots/index.d.ts +0 -1
  208. package/lib/components/snapshots/index.js +0 -5
  209. package/lib/components/snippets/SnippetDialog.d.ts +0 -42
  210. package/lib/components/snippets/SnippetDialog.js +0 -42
  211. package/lib/components/students/StudentItemStatus.d.ts +0 -7
  212. package/lib/components/students/StudentItemStatus.js +0 -66
  213. package/lib/components/tokens/SpaceVariantToken.d.ts +0 -5
  214. package/lib/components/tokens/SpaceVariantToken.js +0 -23
  215. package/lib/components/toolbars/AssignmentEditorToolbar.d.ts +0 -4
  216. package/lib/components/toolbars/AssignmentEditorToolbar.js +0 -18
  217. package/lib/components/toolbars/DocumentEditorToolbar.d.ts +0 -2
  218. package/lib/components/toolbars/DocumentEditorToolbar.js +0 -12
  219. package/lib/components/toolbars/NotebookEditorToolbar.d.ts +0 -29
  220. package/lib/components/toolbars/NotebookEditorToolbar.js +0 -30
  221. package/lib/examples/CellExample.d.ts +0 -6
  222. package/lib/examples/CellExample.js +0 -20
  223. package/lib/examples/NotebookExample.d.ts +0 -6
  224. package/lib/examples/NotebookExample.js +0 -19
  225. package/lib/examples/lexical-theme.css +0 -436
  226. package/lib/examples/notebooks/IPyWidgetsExample.ipynb.json +0 -101
  227. package/lib/examples/notebooks/IPyWidgetsExampleWithState.ipynb.json +0 -112
  228. package/lib/examples/notebooks/Lite.ipynb.json +0 -128
  229. package/lib/examples/notebooks/Matplotlib.ipynb.json +0 -137
  230. package/lib/examples/notebooks/NotebookExample1.ipynb.json +0 -126
  231. package/lib/examples/notebooks/NotebookExample2.ipynb.json +0 -48
  232. package/lib/examples/notebooks/NotebookOutputs.ipynb.json +0 -49
  233. package/lib/examples/notebooks/NotebookToCExample.ipynb.json +0 -102
  234. package/lib/examples/notebooks/PyGWalker.ipynb.json +0 -55
  235. package/lib/hooks/useCellOutputshot.d.ts +0 -4
  236. package/lib/hooks/useCellOutputshot.js +0 -25
  237. package/lib/hooks/useProjects.d.ts +0 -628
  238. package/lib/hooks/useProjects.js +0 -190
  239. package/lib/hooks/useRuntimes.d.ts +0 -5
  240. package/lib/hooks/useRuntimes.js +0 -34
  241. package/lib/mocks/models/CourseMock.d.ts +0 -6
  242. package/lib/mocks/models/CourseMock.js +0 -29
  243. package/lib/mocks/models/SpaceMock.d.ts +0 -6
  244. package/lib/mocks/models/SpaceMock.js +0 -25
  245. package/lib/models/Assignment.d.ts +0 -7
  246. package/lib/models/Assignment.js +0 -5
  247. package/lib/models/Cell.d.ts +0 -8
  248. package/lib/models/Cell.js +0 -5
  249. package/lib/models/CodeBlock.d.ts +0 -10
  250. package/lib/models/CodeBlock.js +0 -5
  251. package/lib/models/CodeSandboxSnapshot.d.ts +0 -92
  252. package/lib/models/CodeSandboxSnapshot.js +0 -13
  253. package/lib/models/CodeSandboxSnapshotDTO.d.ts +0 -173
  254. package/lib/models/CodeSandboxSnapshotDTO.js +0 -139
  255. package/lib/models/CodefeedBlocks.d.ts +0 -7
  256. package/lib/models/CodefeedBlocks.js +0 -5
  257. package/lib/models/Content.d.ts +0 -5
  258. package/lib/models/Content.js +0 -5
  259. package/lib/models/Course.d.ts +0 -17
  260. package/lib/models/Course.js +0 -5
  261. package/lib/models/Dataset.d.ts +0 -16
  262. package/lib/models/Dataset.js +0 -5
  263. package/lib/models/Document.d.ts +0 -8
  264. package/lib/models/Document.js +0 -5
  265. package/lib/models/Environment.d.ts +0 -86
  266. package/lib/models/Environment.js +0 -5
  267. package/lib/models/EnvironmentDTO.d.ts +0 -125
  268. package/lib/models/EnvironmentDTO.js +0 -88
  269. package/lib/models/Exercise.d.ts +0 -16
  270. package/lib/models/Exercise.js +0 -5
  271. package/lib/models/Item.d.ts +0 -20
  272. package/lib/models/Item.js +0 -5
  273. package/lib/models/ItemDTO.d.ts +0 -74
  274. package/lib/models/ItemDTO.js +0 -186
  275. package/lib/models/ItemType.d.ts +0 -2
  276. package/lib/models/ItemType.js +0 -5
  277. package/lib/models/Lesson.d.ts +0 -5
  278. package/lib/models/Lesson.js +0 -5
  279. package/lib/models/LexicalDTO.d.ts +0 -155
  280. package/lib/models/LexicalDTO.js +0 -157
  281. package/lib/models/Library.d.ts +0 -10
  282. package/lib/models/Library.js +0 -5
  283. package/lib/models/Notebook.d.ts +0 -11
  284. package/lib/models/Notebook.js +0 -5
  285. package/lib/models/NotebookDTO.d.ts +0 -96
  286. package/lib/models/NotebookDTO.js +0 -153
  287. package/lib/models/Page.d.ts +0 -41
  288. package/lib/models/Page.js +0 -25
  289. package/lib/models/PageTag.d.ts +0 -19
  290. package/lib/models/PageTag.js +0 -94
  291. package/lib/models/ProjectDTO.d.ts +0 -89
  292. package/lib/models/ProjectDTO.js +0 -131
  293. package/lib/models/Runtime.d.ts +0 -123
  294. package/lib/models/Runtime.js +0 -18
  295. package/lib/models/RuntimeDTO.d.ts +0 -191
  296. package/lib/models/RuntimeDTO.js +0 -204
  297. package/lib/models/Space.d.ts +0 -35
  298. package/lib/models/Space.js +0 -66
  299. package/lib/models/SpaceDTO.d.ts +0 -334
  300. package/lib/models/SpaceDTO.js +0 -244
  301. package/lib/models/SpaceItem.d.ts +0 -10
  302. package/lib/models/SpaceItem.js +0 -5
  303. package/lib/models/SpaceMember.d.ts +0 -6
  304. package/lib/models/SpaceMember.js +0 -5
  305. package/lib/models/StudentItem.d.ts +0 -21
  306. package/lib/models/StudentItem.js +0 -5
  307. package/lib/services/DatalayerServiceManager.d.ts +0 -22
  308. package/lib/services/DatalayerServiceManager.js +0 -69
  309. package/lib/services/index.d.ts +0 -4
  310. package/lib/services/index.js +0 -7
  311. package/lib/services/reconnectToRuntime.d.ts +0 -32
  312. package/lib/services/reconnectToRuntime.js +0 -59
  313. package/lib/state/substates/CellState.d.ts +0 -12
  314. package/lib/state/substates/CellState.js +0 -22
  315. package/lib/state/substates/DocumentState.d.ts +0 -10
  316. package/lib/state/substates/DocumentState.js +0 -14
  317. package/lib/state/substates/GradeState.d.ts +0 -10
  318. package/lib/state/substates/GradeState.js +0 -14
  319. package/lib/state/substates/JupyterLabState.d.ts +0 -16
  320. package/lib/state/substates/JupyterLabState.js +0 -17
  321. package/lib/state/substates/NbformatState.d.ts +0 -13
  322. package/lib/state/substates/NbformatState.js +0 -16
  323. package/lib/state/substates/RuntimesState.d.ts +0 -79
  324. package/lib/state/substates/RuntimesState.js +0 -180
  325. package/lib/state/substates/SpaceState.d.ts +0 -11
  326. package/lib/state/substates/SpaceState.js +0 -16
  327. package/lib/stateful/index.d.ts +0 -2
  328. package/lib/stateful/index.js +0 -6
  329. package/lib/stateful/jupyter/exec/Python.d.ts +0 -5
  330. package/lib/stateful/jupyter/exec/Python.js +0 -100
  331. package/lib/stateful/jupyter/exec/Snippets.d.ts +0 -105
  332. package/lib/stateful/jupyter/exec/Snippets.js +0 -101
  333. package/lib/stateful/jupyter/exec/index.d.ts +0 -2
  334. package/lib/stateful/jupyter/exec/index.js +0 -6
  335. package/lib/stateful/jupyter/index.d.ts +0 -2
  336. package/lib/stateful/jupyter/index.js +0 -6
  337. package/lib/stateful/jupyter/kernelsHandler.d.ts +0 -8
  338. package/lib/stateful/jupyter/kernelsHandler.js +0 -39
  339. package/lib/stateful/runtimes/actions.d.ts +0 -102
  340. package/lib/stateful/runtimes/actions.js +0 -249
  341. package/lib/stateful/runtimes/apis.d.ts +0 -273
  342. package/lib/stateful/runtimes/apis.js +0 -5
  343. package/lib/stateful/runtimes/index.d.ts +0 -5
  344. package/lib/stateful/runtimes/index.js +0 -9
  345. package/lib/stateful/runtimes/settings.d.ts +0 -15
  346. package/lib/stateful/runtimes/settings.js +0 -31
  347. package/lib/stateful/runtimes/snapshots.d.ts +0 -25
  348. package/lib/stateful/runtimes/snapshots.js +0 -150
  349. package/lib/stateful/runtimes/utils.d.ts +0 -7
  350. package/lib/stateful/runtimes/utils.js +0 -14
  351. package/lib/utils/Cells.d.ts +0 -2
  352. package/lib/utils/Cells.js +0 -28
  353. package/lib/views/iam-tokens/IAMTokenEdit.d.ts +0 -6
  354. package/lib/views/iam-tokens/IAMTokenNew.d.ts +0 -8
  355. package/lib/views/iam-tokens/IAMTokenNew.js +0 -118
  356. package/lib/views/iam-tokens/IAMTokens.d.ts +0 -12
  357. package/lib/views/iam-tokens/IAMTokens.js +0 -87
  358. package/lib/views/iam-tokens/Tokens.d.ts +0 -2
  359. package/lib/views/iam-tokens/Tokens.js +0 -85
  360. package/lib/views/iam-tokens/index.d.ts +0 -3
  361. package/lib/views/iam-tokens/index.js +0 -7
  362. /package/lib/{mocks/jupyter/index.d.ts → cli-login.d.ts} +0 -0
  363. /package/lib/utils/{logger.d.ts → Logger.d.ts} +0 -0
  364. /package/lib/utils/{logger.js → Logger.js} +0 -0
@@ -1,169 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /*
3
- * Copyright (c) 2023-2025 Datalayer, Inc.
4
- * Distributed under the terms of the Modified BSD License.
5
- */
6
- import { useCallback, useEffect, useState, } from 'react';
7
- import { DeviceCameraIcon } from '@primer/octicons-react';
8
- import { ActionList, ActionMenu, Flash, FormControl, Select, Spinner, } from '@primer/react';
9
- import { Dialog } from '@primer/react/experimental';
10
- import { Box } from '@datalayer/primer-addons';
11
- import { useToast } from '../../hooks/index.js';
12
- import { createSandboxSnapshot, getSandboxSnapshots, loadBrowserSandboxSnapshot, loadSandboxSnapshot, } from '../../stateful/runtimes/index.js';
13
- import { useRuntimesStore } from '../../state/index.js';
14
- import { createSandboxSnapshotName } from '../../utils/index.js';
15
- /**
16
- * Code Sandbox Snapshot menu component.
17
- */
18
- export function SandboxSnapshotMenu({ children, connection, podName, multiServiceManager, disabled = false, }) {
19
- const { addSandboxSnapshot, runtimesRunUrl, runtimeSnapshots, setSandboxSnapshots, } = useRuntimesStore();
20
- const { enqueueToast, trackAsyncTask } = useToast();
21
- const [openLoadDialog, setOpenLoadDialog] = useState(false);
22
- const [loadingSandboxSnapshot, setLoadingSandboxSnapshot] = useState(false);
23
- const [takingSandboxSnapshot, setTakingSandboxSnapshot] = useState(false);
24
- const [selection, setSelection] = useState(runtimeSnapshots[0]?.id ?? '');
25
- const [error, setError] = useState();
26
- useEffect(() => {
27
- getSandboxSnapshots()
28
- .then(snapshots => {
29
- setSandboxSnapshots(snapshots);
30
- if (!selection && snapshots.length > 0) {
31
- setSelection(snapshots[0].id);
32
- }
33
- })
34
- .catch(reason => {
35
- console.error(`Failed to fetch remote kernel snapshots; ${reason}`);
36
- });
37
- }, [runtimesRunUrl]);
38
- const onLoadSandboxSnapshot = useCallback(() => {
39
- setError(undefined);
40
- setOpenLoadDialog(true);
41
- }, []);
42
- const onSandboxSnapshotChanged = useCallback(event => {
43
- setSelection(event.target.value);
44
- }, []);
45
- const onLoadSandboxSnapshotSubmit = useCallback(async ({ id, connection, podName, }) => {
46
- if (podName) {
47
- await loadSandboxSnapshot({ id: podName, from: id });
48
- enqueueToast(`Code Sandbox snapshot ${podName} is loaded.`, {
49
- variant: 'success',
50
- });
51
- }
52
- else if (connection) {
53
- await loadBrowserSandboxSnapshot({ connection, id });
54
- enqueueToast(`Code Sandbox snapshot ${id} is loaded.`, {
55
- variant: 'success',
56
- });
57
- }
58
- }, []);
59
- const onTakeSandboxSnapshot = useCallback(async () => {
60
- try {
61
- setTakingSandboxSnapshot(true);
62
- let snapshot;
63
- let task;
64
- let ref = '';
65
- let snapshotName = '';
66
- if (podName && multiServiceManager?.remote) {
67
- snapshotName = createSandboxSnapshotName('cloud');
68
- task = multiServiceManager.remote.runtimesManager.snapshotRuntime({
69
- podName,
70
- name: snapshotName,
71
- description: snapshotName,
72
- stop: false,
73
- });
74
- ref = podName.split('-', 2).reverse()[0];
75
- task.then(s => {
76
- snapshot = s;
77
- });
78
- }
79
- else if (connection && multiServiceManager?.browser) {
80
- const model = connection.model;
81
- ref = model.id;
82
- snapshotName = createSandboxSnapshotName('browser');
83
- let isPending = true;
84
- task = createSandboxSnapshot({
85
- connection: multiServiceManager.browser.kernels.connectTo({
86
- model,
87
- }),
88
- metadata: { filename: `${snapshotName}.data` },
89
- onUploadProgress: () => {
90
- if (isPending) {
91
- isPending = false;
92
- // Get the kernel snapshot uid.
93
- getSandboxSnapshots().then(snapshots => {
94
- snapshot = snapshots.find(s => s.name === snapshotName);
95
- });
96
- }
97
- },
98
- });
99
- }
100
- if (task) {
101
- trackAsyncTask(task, {
102
- error: {
103
- message: (reason, data) => {
104
- const msg = reason === 'Empty snapshot'
105
- ? `Runtime ${ref} will not be snapshotted as it does not contain any serializable state.`
106
- : `Failed to snapshot runtime ${ref} - ${reason}`;
107
- return msg;
108
- },
109
- },
110
- pending: { message: `Taking a snapshot of runtime ${ref}…` },
111
- success: {
112
- message: () => `Runtime ${ref} successfully snapshotted as ${snapshotName}.`,
113
- },
114
- });
115
- await task;
116
- if (snapshot) {
117
- addSandboxSnapshot(snapshot);
118
- }
119
- }
120
- }
121
- finally {
122
- setTakingSandboxSnapshot(false);
123
- }
124
- }, [connection, podName, multiServiceManager]);
125
- return (_jsxs(_Fragment, { children: [_jsxs(ActionMenu, { children: [_jsx(ActionMenu.Button, { leadingVisual: DeviceCameraIcon, variant: "invisible", size: "small", disabled: loadingSandboxSnapshot || takingSandboxSnapshot || disabled, children: children }), _jsx(ActionMenu.Overlay, { children: _jsxs(ActionList, { children: [_jsx(ActionList.Item, { onSelect: onLoadSandboxSnapshot, disabled: loadingSandboxSnapshot || runtimeSnapshots.length === 0, children: "Load a code sandbox snapshot\u2026" }), _jsx(ActionList.Item, { onSelect: onTakeSandboxSnapshot, disabled: takingSandboxSnapshot, children: "Take a code sandbox snapshot" })] }) })] }), openLoadDialog && (_jsx(Dialog, { title: _jsx("span", { style: { color: 'var(--fgColor-default)' }, children: "Choose a code sandbox snapshot to load" }), onClose: () => {
126
- setOpenLoadDialog(false);
127
- }, footerButtons: [
128
- {
129
- buttonType: 'default',
130
- content: 'Cancel',
131
- onClick: event => {
132
- if (!event.defaultPrevented) {
133
- event.preventDefault();
134
- setOpenLoadDialog(false);
135
- }
136
- },
137
- },
138
- {
139
- buttonType: 'primary',
140
- content: loadingSandboxSnapshot ? (_jsx(Spinner, { size: "small" })) : ('Load'),
141
- disabled: loadingSandboxSnapshot,
142
- onClick: async (event) => {
143
- if (!event.defaultPrevented) {
144
- event.preventDefault();
145
- setLoadingSandboxSnapshot(true);
146
- try {
147
- setError(undefined);
148
- const snapshot = runtimeSnapshots.find(s => s.id === selection);
149
- if (snapshot && (connection || podName)) {
150
- await onLoadSandboxSnapshotSubmit({
151
- connection,
152
- id: snapshot.id,
153
- podName,
154
- });
155
- }
156
- else {
157
- setError('No code sandbox snapshot found.');
158
- }
159
- }
160
- finally {
161
- setLoadingSandboxSnapshot(false);
162
- setOpenLoadDialog(false);
163
- }
164
- }
165
- },
166
- autoFocus: true,
167
- },
168
- ], children: _jsxs(Box, { as: "form", children: [_jsxs(FormControl, { children: [_jsx(FormControl.Label, { children: "Snapshot" }), _jsx(Select, { name: "snapshot", value: selection, onChange: onSandboxSnapshotChanged, block: true, children: runtimeSnapshots.map(s => (_jsx(Select.Option, { value: s.id, children: s.name ? `${s.name} (${s.id})` : s.id }, s.id))) })] }), error && _jsx(Flash, { variant: "danger", children: error })] }) }))] }));
169
- }
@@ -1 +0,0 @@
1
- export * from './SandboxSnapshotMenu';
@@ -1,5 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the Modified BSD License.
4
- */
5
- export * from './SandboxSnapshotMenu.js';
@@ -1,42 +0,0 @@
1
- import { CodeCellModel } from '@jupyterlab/cells';
2
- import type { IMarkdownParser, IRenderMime } from '@jupyterlab/rendermime';
3
- import { ITranslator } from '@jupyterlab/translation';
4
- import type { ISnippet } from '../../models';
5
- /**
6
- * {@link SnippetDialog} properties
7
- */
8
- export interface ISnippetDialogProps {
9
- /**
10
- * Code cell model
11
- */
12
- model: CodeCellModel;
13
- /**
14
- * Callback request the dialog closure.
15
- */
16
- onClose: () => void;
17
- /**
18
- * Code snippets language
19
- */
20
- language: string;
21
- /**
22
- * Code snippets
23
- */
24
- snippets: ISnippet[];
25
- /**
26
- * Markdown parser
27
- */
28
- markdownParser?: IMarkdownParser;
29
- /**
30
- * HTML sanitizer
31
- */
32
- sanitizer?: IRenderMime.ISanitizer;
33
- /**
34
- * Application translator
35
- */
36
- translator?: ITranslator;
37
- }
38
- /**
39
- * Dialog to inject snippet in a cell.
40
- */
41
- export declare function SnippetDialog(props: ISnippetDialogProps): JSX.Element;
42
- export default SnippetDialog;
@@ -1,42 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /*
3
- * Copyright (c) 2023-2025 Datalayer, Inc.
4
- * Distributed under the terms of the Modified BSD License.
5
- */
6
- import { useCallback, useMemo, useState } from 'react';
7
- import { nullTranslator } from '@jupyterlab/translation';
8
- import { FormControl, Select, Text } from '@primer/react';
9
- import { Box } from '@datalayer/primer-addons';
10
- import { Dialog } from '@primer/react/experimental';
11
- import { Markdown } from '../display/index.js';
12
- /**
13
- * Dialog to inject snippet in a cell.
14
- */
15
- export function SnippetDialog(props) {
16
- const { model, onClose, language, snippets, markdownParser, sanitizer, translator, } = props;
17
- const [selection, setSelection] = useState(snippets[0]);
18
- const trans = useMemo(() => (translator ?? nullTranslator).load('jupyterlab'), [translator]);
19
- const onSelectionChange = useCallback((e) => {
20
- const selection = e.target.value;
21
- setSelection(snippets[parseInt(selection, 10)]);
22
- }, [setSelection, snippets]);
23
- const injectSnippet = useCallback(() => {
24
- const size = model.sharedModel.getSource().length;
25
- model.sharedModel.updateSource(size, size, '\n'.repeat(size ? 2 : 0) + selection.code);
26
- onClose();
27
- }, [model, selection, onClose]);
28
- return (_jsx(Dialog, { title: _jsx("span", { style: { color: 'var(--fgColor-default)' }, children: "Pick a snippet to inject" }), onClose: onClose, footerButtons: [
29
- {
30
- buttonType: 'default',
31
- content: trans.__('Cancel'),
32
- onClick: onClose,
33
- },
34
- {
35
- buttonType: 'primary',
36
- content: trans.__('Inject snippet'),
37
- onClick: injectSnippet,
38
- autoFocus: true,
39
- },
40
- ], children: _jsx(Box, { as: "form", children: _jsxs(FormControl, { children: [_jsx(FormControl.Label, {}), _jsx(Select, { block: true, onChange: onSelectionChange, children: snippets.map((snippet, index) => (_jsx(Select.Option, { value: `${index}`, children: snippet.title }, index))) }), _jsxs(FormControl.Caption, { children: [selection.description && (_jsx(Text, { as: "p", children: selection.description })), markdownParser ? (_jsx(Markdown, { markdownParser: markdownParser, sanitizer: sanitizer, text: `\`\`\`${language}\n${selection.code}\`\`\`` })) : (_jsx("code", { children: selection.code }))] })] }) }) }));
41
- }
42
- export default SnippetDialog;
@@ -1,7 +0,0 @@
1
- import { IStudent, IStudentItem } from '../../models';
2
- type Props = {
3
- student?: IStudent;
4
- studentItem?: IStudentItem;
5
- };
6
- export declare const StudentItemStatus: (props: Props) => import("react/jsx-runtime").JSX.Element;
7
- export default StudentItemStatus;
@@ -1,66 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /*
3
- * Copyright (c) 2023-2025 Datalayer, Inc.
4
- * Distributed under the terms of the Modified BSD License.
5
- */
6
- import { useMemo } from 'react';
7
- import { useTheme, Tooltip, Button } from '@primer/react';
8
- import { Box } from '@datalayer/primer-addons';
9
- const getExercisePoints = (studentItem) => {
10
- if (studentItem && studentItem.points) {
11
- return studentItem.points;
12
- }
13
- return 0;
14
- };
15
- export const StudentItemStatus = (props) => {
16
- const { student, studentItem } = props;
17
- const { theme } = useTheme();
18
- const okColor = useMemo(() => theme?.colorSchemes.light.colors.success.muted, []);
19
- const nokColor = useMemo(() => theme?.colorSchemes.light.colors.severe.muted, []);
20
- if (student && studentItem) {
21
- switch (studentItem.itemType) {
22
- case 'dataset': {
23
- const datasetColor = studentItem?.completed ? okColor : nokColor;
24
- return (_jsx(Box, { sx: {
25
- backgroundColor: datasetColor,
26
- width: '14px',
27
- height: '14px',
28
- borderRadius: 3,
29
- }, ml: 1 }));
30
- }
31
- case 'lesson': {
32
- const lessonColor = studentItem?.completed ? okColor : nokColor;
33
- return (_jsx(Box, { sx: {
34
- backgroundColor: lessonColor,
35
- width: '14px',
36
- height: '14px',
37
- borderRadius: 3,
38
- }, ml: 1 }));
39
- }
40
- case 'exercise': {
41
- const exerciseColor = getExercisePoints(studentItem) > 0 ? okColor : nokColor;
42
- return (_jsx(Box, { sx: {
43
- backgroundColor: exerciseColor,
44
- width: '14px',
45
- height: '14px',
46
- borderRadius: 3,
47
- }, ml: 1 }));
48
- }
49
- case 'assignment':
50
- return (_jsxs(Box, { display: "flex", children: [studentItem.nbgradesTotalScore !== undefined &&
51
- studentItem.nbgradesTotalPoints !== undefined && (_jsxs(Box, { children: [studentItem.nbgradesTotalScore, " /", ' ', studentItem.nbgradesTotalPoints] })), studentItem.nbgrades && (_jsx(Box, { display: "flex", ml: 3, children: studentItem?.nbgrades.map(grade => {
52
- const gradeColor = grade.score_f === grade.points_f ? okColor : nokColor;
53
- return (_jsx(Tooltip, { text: grade.grade_id_s, children: _jsx(Button, { variant: "invisible", children: _jsx(Box, { sx: {
54
- backgroundColor: gradeColor,
55
- width: '14px',
56
- height: '14px',
57
- borderRadius: 3,
58
- }, ml: 1 }) }) }));
59
- }) }))] }));
60
- default:
61
- return _jsx(_Fragment, {});
62
- }
63
- }
64
- return _jsx(_Fragment, {});
65
- };
66
- export default StudentItemStatus;
@@ -1,5 +0,0 @@
1
- import { ISpaceVariant } from '../../models';
2
- export declare const SpaceVariantToken: (props: {
3
- variant: ISpaceVariant | string;
4
- }) => import("react/jsx-runtime").JSX.Element;
5
- export default SpaceVariantToken;
@@ -1,23 +0,0 @@
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 { Token } from '@primer/react';
7
- import { ProjectIcon } from '@primer/octicons-react';
8
- import { StudentIcon } from '@datalayer/icons-react';
9
- export const SpaceVariantToken = (props) => {
10
- const variant = String(props.variant || 'default').toLowerCase();
11
- if (variant.includes('project')) {
12
- return _jsx(Token, { text: "project", leadingVisual: ProjectIcon });
13
- }
14
- switch (variant) {
15
- case 'default':
16
- return _jsx(Token, { text: "default" });
17
- case 'course':
18
- return _jsx(Token, { text: "course", leadingVisual: StudentIcon });
19
- default:
20
- return _jsx(Token, { text: String(variant || 'default') });
21
- }
22
- };
23
- export default SpaceVariantToken;
@@ -1,4 +0,0 @@
1
- export declare const AssignmentEditorToolbar: (props: {
2
- notebookId: string;
3
- }) => import("react/jsx-runtime").JSX.Element;
4
- export default AssignmentEditorToolbar;
@@ -1,18 +0,0 @@
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 { Button } from '@primer/react';
7
- import { Box } from '@datalayer/primer-addons';
8
- import { RepoPushIcon } from '@primer/octicons-react';
9
- // import { PlayIcon, StopIcon } from '@primer/octicons-react';
10
- // import { notebookStore } from '@datalayer/jupyter-react';
11
- import { useGradeStore } from '../../state/index.js';
12
- export const AssignmentEditorToolbar = (props) => {
13
- // const { notebookId } = props;
14
- // const notebook = notebookStore.getState().selectNotebook(notebookId);
15
- const { grade } = useGradeStore();
16
- return (_jsx(Box, { display: "flex", children: _jsx(Box, { children: _jsx(Button, { variant: "invisible", size: "small", leadingVisual: RepoPushIcon, onClick: () => grade(new Date()), children: "Grade" }) }) }));
17
- };
18
- export default AssignmentEditorToolbar;
@@ -1,2 +0,0 @@
1
- export declare const DocumentEditorToolbar: () => import("react/jsx-runtime").JSX.Element;
2
- export default DocumentEditorToolbar;
@@ -1,12 +0,0 @@
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 { Button, Box } from '@primer/react';
7
- import { RepoPushIcon } from '@primer/octicons-react';
8
- import { documentStore } from '../../state/index.js';
9
- export const DocumentEditorToolbar = () => {
10
- return (_jsx(Box, { display: "flex", children: _jsx(Box, { children: _jsx(Button, { variant: "invisible", size: "small", leadingVisual: RepoPushIcon, onClick: () => documentStore.getState().save(new Date()), children: "Save" }) }) }));
11
- };
12
- export default DocumentEditorToolbar;
@@ -1,29 +0,0 @@
1
- import { Session } from '@jupyterlab/services';
2
- import { CommandRegistry } from '@lumino/commands';
3
- import type { IRuntimeDesc } from '../../models';
4
- /**
5
- * NotebookEditorToolbar component properties
6
- */
7
- export type INotebookEditorToolbar = {
8
- /**
9
- * Jupyter commands registry
10
- */
11
- commandRegistry?: CommandRegistry;
12
- /**
13
- * Kernel description
14
- */
15
- runtimeDesc?: IRuntimeDesc;
16
- /**
17
- * Callback to save the notebook model
18
- */
19
- save: () => void;
20
- /**
21
- * Session connection
22
- */
23
- sessionConnection?: Session.ISessionConnection;
24
- };
25
- /**
26
- * Notebook editor toolbar
27
- */
28
- export declare function NotebookEditorToolbar(props: INotebookEditorToolbar): JSX.Element;
29
- export default NotebookEditorToolbar;
@@ -1,30 +0,0 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- /*
3
- * Copyright (c) 2023-2025 Datalayer, Inc.
4
- * Distributed under the terms of the Modified BSD License.
5
- */
6
- import { NotebookCommandIds } from '@datalayer/jupyter-react';
7
- import { Button } from '@primer/react';
8
- import { PlayIcon, StopIcon } from '@primer/octicons-react';
9
- import { useEffect, useState } from 'react';
10
- /**
11
- * Notebook editor toolbar
12
- */
13
- export function NotebookEditorToolbar(props) {
14
- const { commandRegistry, runtimeDesc, sessionConnection } = props;
15
- const [kernelStatus, setKernelStatus] = useState();
16
- useEffect(() => {
17
- const onStatusChanged = () => {
18
- setKernelStatus(sessionConnection?.kernel?.status);
19
- };
20
- onStatusChanged();
21
- sessionConnection?.statusChanged.connect(onStatusChanged);
22
- sessionConnection?.connectionStatusChanged.connect(onStatusChanged);
23
- return () => {
24
- sessionConnection?.statusChanged.disconnect(onStatusChanged);
25
- sessionConnection?.connectionStatusChanged.disconnect(onStatusChanged);
26
- };
27
- }, [sessionConnection]);
28
- return (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "invisible", size: "small", leadingVisual: PlayIcon, disabled: !runtimeDesc?.location || kernelStatus === 'busy', onClick: (e) => commandRegistry?.execute(NotebookCommandIds.runAll), children: "Run all" }), _jsx(Button, { variant: "invisible", size: "small", leadingVisual: StopIcon, disabled: !runtimeDesc?.location || kernelStatus !== 'busy', onClick: (e) => commandRegistry?.execute(NotebookCommandIds.interrupt), children: "Interrupt" })] }));
29
- }
30
- export default NotebookEditorToolbar;
@@ -1,6 +0,0 @@
1
- import { ServiceManager } from '@jupyterlab/services';
2
- type ICellExampleProps = {
3
- serviceManager?: ServiceManager.IManager;
4
- };
5
- export declare const CellExample: (props: ICellExampleProps) => import("react/jsx-runtime").JSX.Element;
6
- export default CellExample;
@@ -1,20 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { JupyterReactTheme, Cell, KernelIndicator, useJupyter, useKernelsStore, useCellsStore, } from '@datalayer/jupyter-react';
3
- import { Button, Label } from '@primer/react';
4
- import { Box } from '@datalayer/primer-addons';
5
- const CELL_ID = 'cell-example-1';
6
- const DEFAULT_SOURCE = `from IPython.display import display
7
-
8
- for i in range(10):
9
- display('I am a long string which is repeatedly added to the dom in separated divs: %d' % i)`;
10
- const CellExampleContent = (props) => {
11
- // const { serviceManager } = props;
12
- const { defaultKernel } = useJupyter({ startDefaultKernel: true });
13
- const cellsStore = useCellsStore();
14
- const kernelsStore = useKernelsStore();
15
- return (_jsxs(Box, { p: 4, children: [_jsx(Box, { as: "h1", children: "A Jupyter Cell" }), _jsxs(Box, { children: ["Source: ", cellsStore.getSource(CELL_ID)] }), _jsxs(Box, { children: ["Outputs Count: ", cellsStore.getOutputsCount(CELL_ID)] }), _jsxs(Box, { children: ["Kernel State:", ' ', _jsx(Label, { children: defaultKernel && kernelsStore.getExecutionState(defaultKernel.id) })] }), _jsxs(Box, { children: ["Kernel Phase:", ' ', _jsx(Label, { children: defaultKernel && kernelsStore.getExecutionPhase(defaultKernel.id) })] }), _jsxs(Box, { display: "flex", children: [_jsx(Box, { children: "Kernel Indicator:" }), _jsx(Box, { ml: 3, children: _jsx(KernelIndicator, { kernel: defaultKernel && defaultKernel.connection }) })] }), _jsx(Box, { children: _jsx(Button, { onClick: () => cellsStore.execute(CELL_ID), children: "Run cell" }) }), _jsx(Cell, { source: DEFAULT_SOURCE, id: CELL_ID, kernel: defaultKernel })] }));
16
- };
17
- export const CellExample = (props) => {
18
- return (_jsx(JupyterReactTheme, { children: _jsx(CellExampleContent, { ...props }) }));
19
- };
20
- export default CellExample;
@@ -1,6 +0,0 @@
1
- import { ServiceManager } from '@jupyterlab/services';
2
- type INotebookExampleProps = {
3
- serviceManager?: ServiceManager.IManager;
4
- };
5
- export declare const NotebookExample: (props: INotebookExampleProps) => import("react/jsx-runtime").JSX.Element;
6
- export default NotebookExample;
@@ -1,19 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- /*
3
- * Copyright (c) 2023-2025 Datalayer, Inc.
4
- * Distributed under the terms of the Modified BSD License.
5
- */
6
- import { useMemo } from 'react';
7
- import { Box } from '@datalayer/primer-addons';
8
- import { Notebook, NotebookToolbar, CellSidebarExtension, CellSidebarButton, } from '@datalayer/jupyter-react';
9
- import nbformatExample from './notebooks/NotebookExample1.ipynb.json';
10
- const NOTEBOOK_ID = 'notebook-example-1';
11
- export const NotebookExample = (props) => {
12
- const { serviceManager } = props;
13
- const extensions = useMemo(() => [new CellSidebarExtension({ factory: CellSidebarButton })], []);
14
- if (!serviceManager) {
15
- return (_jsxs(Box, { as: "h1", children: ["A Jupyter Notebook", _jsx("div", { children: "Loading..." })] }));
16
- }
17
- return (_jsxs(_Fragment, { children: [_jsx(Box, { as: "h1", children: "A Jupyter Notebook" }), _jsx(Notebook, { id: NOTEBOOK_ID, nbformat: nbformatExample, serviceManager: serviceManager, startDefaultKernel: true, extensions: extensions, Toolbar: NotebookToolbar })] }));
18
- };
19
- export default NotebookExample;