@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,150 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the Modified BSD License.
4
- */
5
- import { KernelExecutor } from '@datalayer/jupyter-react';
6
- import { createSandboxSnapshotDownloadURL, uploadCodeSandboxSnapshot } from './index.js';
7
- /**
8
- * Snapshot a runtime through the frontend and upload it to the cloud.
9
- *
10
- * Note: You should use this only for browser runtimes.
11
- */
12
- export async function createSandboxSnapshot(props) {
13
- const { connection, metadata, onUploadProgress } = props;
14
- const dump = await new KernelExecutor({ connection }).execute(GET_RUNTIME_SNAPSHOT_SNIPPET, {
15
- storeHistory: false,
16
- });
17
- const serializedData = (dump.get(0)?.data['application/vnd.jupyter.stdout'] ??
18
- '');
19
- // Convert the data to blob.
20
- const bytes = base64ToBytes(serializedData);
21
- const file = new Blob([bytes.buffer]);
22
- return uploadCodeSandboxSnapshot({
23
- file,
24
- metadata,
25
- onProgress: onUploadProgress,
26
- });
27
- }
28
- function base64ToBytes(base64) {
29
- // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Window/btoa#unicode_strings
30
- const binString = atob(base64);
31
- // @ts-expect-error TypeScript does not like this
32
- return Uint8Array.from(binString, m => m.codePointAt(0));
33
- }
34
- /**
35
- * Load a snapshot within a browser kernel.
36
- *
37
- * Note: You should use this only for browser kernels.
38
- */
39
- export async function loadBrowserSandboxSnapshot({ connection, id, }) {
40
- const downloadURL = createSandboxSnapshotDownloadURL(id);
41
- const response = await fetch(downloadURL);
42
- const buffer = await response.arrayBuffer();
43
- const base64 = bytesToBase64(new Uint8Array(buffer));
44
- await new KernelExecutor({
45
- connection,
46
- }).execute(getLoadSandboxSnapshotSnippet(base64), {
47
- storeHistory: false,
48
- silent: true,
49
- });
50
- }
51
- function bytesToBase64(bytes) {
52
- // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Window/btoa#unicode_strings
53
- const binString = Array.from(bytes, byte => String.fromCodePoint(byte)).join('');
54
- return btoa(binString);
55
- }
56
- const GET_RUNTIME_SNAPSHOT_SNIPPET = `def _create_snapshot():
57
- import logging
58
- import os
59
- import pickle
60
- from base64 import encodebytes
61
- from tempfile import TemporaryFile
62
- from types import BuiltinFunctionType, BuiltinMethodType, FunctionType, MethodType, MethodWrapperType, ModuleType, TracebackType
63
-
64
- # print(pickle.DEFAULT_PROTOCOL)
65
-
66
- class NotFound:
67
- pass
68
-
69
- missing = NotFound()
70
-
71
- FORBIDDEN_TYPES = [type, BuiltinFunctionType, BuiltinMethodType, FunctionType, MethodType, MethodWrapperType, ModuleType, TracebackType, NotFound]
72
- try:
73
- from IPython.core.autocall import ExitAutocall
74
- from IPython.core.interactiveshell import InteractiveShell
75
- FORBIDDEN_TYPES.extend([ExitAutocall, InteractiveShell])
76
- except ImportError:
77
- pass
78
- exclude = tuple(FORBIDDEN_TYPES)
79
-
80
- all = frozenset(filter(lambda n: not n.startswith("_"), globals()))
81
-
82
- line_separator = bytes(os.linesep, "utf-8")
83
- with TemporaryFile() as dump:
84
- for _n in all:
85
- _v = globals().get(_n, missing)
86
-
87
- if not (
88
- isinstance(_v, exclude) or
89
- # Special IPython variables
90
- (_n == "In" and isinstance(_v, list)) or
91
- (_n == "Out" and isinstance(_v, dict))
92
- ):
93
- try:
94
- dumped_n = _n.encode("utf-8") + line_separator + pickle.dumps(_v) + line_separator + b"\\x00" + line_separator
95
- dump.write(dumped_n)
96
- except BaseException as e:
97
- logging.warning("Failed to dump variable [%s ([%s])].", _n, type(_v).__qualname__, exc_info=e)
98
- else:
99
- logging.debug("Variable [%s] dumped", _n)
100
-
101
- dump.seek(0)
102
- print(encodebytes(dump.read()).decode("ascii"))
103
-
104
- _create_snapshot()
105
- del _create_snapshot
106
- `;
107
- function getLoadSandboxSnapshotSnippet(content) {
108
- return `async def _load_snapshot():
109
- import os
110
- import logging
111
- import platform
112
- import pickle
113
- from base64 import decodebytes
114
- is_pyodide = platform.node() == "emscripten"
115
-
116
- snapshot = decodebytes("${content}".encode("ascii"))
117
- line_sep = bytes(os.linesep, "utf-8")
118
- variable_separator = b"\\x00" + line_sep
119
- name = b""
120
- value = b""
121
- for line in snapshot.splitlines():
122
- line += line_sep
123
- if line == variable_separator:
124
- name_s = name.strip().decode("utf-8")
125
- try:
126
- try:
127
- globals()[name_s] = pickle.loads(value)
128
- except ModuleNotFoundError as m:
129
- if is_pyodide:
130
- import micropip
131
- logging.info(f'Installing %s...', m.name)
132
- await micropip.install(m.name)
133
- globals()[name_s] = pickle.loads(value)
134
- else:
135
- raise m
136
- except BaseException as e:
137
- logging.warning("Failed to load variable [%s].", name_s, exc_info=e)
138
- else:
139
- logging.debug("Variable [%s] loaded", name_s)
140
-
141
- name = b""
142
- value = b""
143
- else:
144
- if not name:
145
- name = line
146
- else:
147
- value += line
148
- await _load_snapshot()
149
- del _load_snapshot`;
150
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Check whether the location is remote or not.
3
- *
4
- * @param location The location to test
5
- * @returns The result
6
- */
7
- export declare function isRuntimeRemote(location: string): boolean;
@@ -1,14 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the Modified BSD License.
4
- */
5
- const NON_REMOTE_LOCATION = ['browser', 'local'];
6
- /**
7
- * Check whether the location is remote or not.
8
- *
9
- * @param location The location to test
10
- * @returns The result
11
- */
12
- export function isRuntimeRemote(location) {
13
- return !NON_REMOTE_LOCATION.includes(location);
14
- }
@@ -1,2 +0,0 @@
1
- import { IDataset } from '../models';
2
- export declare const getDatasetCell: (dataset: IDataset) => string;
@@ -1,28 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the Modified BSD License.
4
- */
5
- export const getDatasetCell = (dataset) => {
6
- switch (dataset.contentType) {
7
- case 'application/vnd.ms-excel':
8
- case 'text/csv':
9
- return `# --- ✅ Load the ${dataset.fileName}.${dataset.datasetExtension} dataset (${dataset.mimeType})
10
- import pandas as pd
11
- ${dataset.fileName}_${dataset.datasetExtension} = pd.read_csv("${dataset.cdnUrl}")
12
- ${dataset.fileName}_${dataset.datasetExtension}
13
-
14
- `;
15
- case 'image/png':
16
- case 'image/jpg':
17
- case 'image/jpeg':
18
- return `# --- ✅ Display the ${dataset.fileName}.${dataset.datasetExtension} dataset (${dataset.mimeType})
19
- from IPython.display import Image
20
- url = "${dataset.cdnUrl}"
21
- Image(url, width=300)
22
-
23
- `;
24
- default:
25
- return `# --- 😞 File of type ${dataset.contentType} is not supported for now.
26
- `;
27
- }
28
- };
@@ -1,6 +0,0 @@
1
- export type IAMTokenEditProps = {
2
- /** Route to navigate after delete. Defaults to '/settings/iam/tokens'. */
3
- tokensListRoute?: string;
4
- };
5
- export declare const IAMTokenEdit: ({ tokensListRoute, }?: IAMTokenEditProps) => import("react/jsx-runtime").JSX.Element;
6
- export default IAMTokenEdit;
@@ -1,8 +0,0 @@
1
- export type IAMTokenNewProps = {
2
- /** Route to navigate when clicking "List my Tokens". Defaults to '/settings/iam/tokens'. */
3
- tokensListRoute?: string;
4
- /** Whether to render the "New API Key" title header in create mode. Defaults to true. */
5
- showTitle?: boolean;
6
- };
7
- export declare const IAMTokenNew: ({ tokensListRoute, showTitle, }?: IAMTokenNewProps) => import("react/jsx-runtime").JSX.Element;
8
- export default IAMTokenNew;
@@ -1,118 +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 { useEffect, useState } from 'react';
7
- import { PageHeader, FormControl, Button, TextInput, Textarea, Select, Text, IconButton, } from '@primer/react';
8
- import { Box } from '@datalayer/primer-addons';
9
- import { CopyIcon } from '@primer/octicons-react';
10
- import { Calendar, defaultCalendarStrings } from '@fluentui/react';
11
- import { useCache, useNavigate, useToast } from '../../hooks/index.js';
12
- import { useRunStore } from '../../state/index.js';
13
- export const IAMTokenNew = ({ tokensListRoute = '/settings/iam/tokens', showTitle = true, } = {}) => {
14
- const runStore = useRunStore();
15
- const { useCreateToken } = useCache();
16
- const createTokenMutation = useCreateToken();
17
- const navigate = useNavigate();
18
- const { enqueueToast } = useToast();
19
- const [today, _] = useState(new Date());
20
- const [showToken, setShowToken] = useState(false);
21
- const [token, setToken] = useState();
22
- const [formValues, setFormValues] = useState({
23
- variant: 'user_token',
24
- name: undefined,
25
- description: undefined,
26
- expirationDate: undefined,
27
- });
28
- const [validationResult, setValidationResult] = useState({
29
- variant: undefined,
30
- name: undefined,
31
- description: undefined,
32
- expirationDate: undefined,
33
- });
34
- const valueVariantChange = (event) => {
35
- setFormValues(prevFormValues => ({
36
- ...prevFormValues,
37
- variant: event.target.value,
38
- }));
39
- };
40
- const valueNameChange = (event) => {
41
- setFormValues(prevFormValues => ({
42
- ...prevFormValues,
43
- name: event.target.value,
44
- }));
45
- };
46
- const valueDescriptionChange = (event) => {
47
- setFormValues(prevFormValues => ({
48
- ...prevFormValues,
49
- description: event.target.value,
50
- }));
51
- };
52
- const expirationDateChange = (expirationDate) => {
53
- setFormValues(prevFormValues => ({
54
- ...prevFormValues,
55
- expirationDate,
56
- }));
57
- };
58
- useEffect(() => {
59
- setValidationResult({
60
- ...validationResult,
61
- name: formValues.name === undefined
62
- ? undefined
63
- : formValues.name.length > 2
64
- ? true
65
- : false,
66
- description: formValues.description === undefined
67
- ? undefined
68
- : formValues.description.length > 2
69
- ? true
70
- : false,
71
- expirationDate: formValues.expirationDate === undefined
72
- ? undefined
73
- : formValues.expirationDate.getTime() > today.getTime()
74
- ? true
75
- : false,
76
- });
77
- }, [formValues]);
78
- const valueSubmit = () => {
79
- runStore.layout().showBackdrop('Creating an token...');
80
- createTokenMutation.mutate({
81
- name: formValues.name,
82
- variant: formValues.variant,
83
- description: formValues.description,
84
- expirationDate: formValues.expirationDate,
85
- }, {
86
- onSuccess: (resp) => {
87
- if (resp.success && resp.token) {
88
- enqueueToast(resp.message, { variant: 'success' });
89
- setToken(resp.token);
90
- setShowToken(true);
91
- }
92
- },
93
- onSettled: () => {
94
- runStore.layout().hideBackdrop();
95
- },
96
- });
97
- };
98
- return (_jsx(Box, { children: showToken ? (_jsxs(_Fragment, { children: [_jsx(PageHeader, { children: _jsx(PageHeader.TitleArea, { variant: "large", children: _jsx(PageHeader.Title, { children: "Your API Key is created" }) }) }), _jsx(Box, { children: _jsx(Text, { children: "Take note of the API Key value, you will not be able to see it after." }) }), _jsx(Box, { children: _jsxs(Text, { children: ["Name: ", token?.name] }) }), _jsx(Box, { children: _jsxs(Text, { children: ["Description: ", token?.description] }) }), _jsx(Box, { children: _jsxs(Text, { children: ["Expiration date: ", token?.expirationDate.toISOString()] }) }), _jsxs(Box, { children: [_jsx(Text, { mb: 2, children: "Value: " }), _jsxs(Box, { display: "flex", sx: { alignItems: 'center', gap: 2 }, children: [_jsx(Text, { as: "code", sx: {
99
- color: 'fg.onEmphasis',
100
- bg: 'neutral.emphasis',
101
- p: 2,
102
- overflowWrap: 'anywhere',
103
- flex: 1,
104
- }, children: token?.value }), _jsx(IconButton, { "aria-label": "Copy token to clipboard", icon: CopyIcon, size: "small", onClick: () => {
105
- if (token?.value) {
106
- navigator.clipboard.writeText(token.value);
107
- enqueueToast('Token copied to clipboard', {
108
- variant: 'success',
109
- });
110
- }
111
- } })] })] }), _jsx(Box, { mt: 3, children: _jsx(Button, { onClick: e => navigate(tokensListRoute, e), children: "List my API Keys" }) })] })) : (_jsxs(_Fragment, { children: [showTitle ? (_jsx(PageHeader, { children: _jsx(PageHeader.TitleArea, { variant: "large", children: _jsx(PageHeader.Title, { children: "New API Key" }) }) })) : null, _jsx(Box, { display: "grid", gridTemplateColumns: "1fr 1fr", sx: { gap: 3 }, children: _jsx(Box, { children: _jsxs(Box, { sx: { label: { marginTop: 2 } }, children: [_jsxs(FormControl, { required: true, children: [_jsx(FormControl.Label, { children: "Token type" }), _jsx(Select, { name: "type", value: formValues.variant, onChange: valueVariantChange, children: _jsx(Select.Option, { value: "user_token", children: "User Token" }) }), _jsx(FormControl.Caption, { children: "Pick the most appropriate token type." })] }), _jsxs(FormControl, { required: true, children: [_jsx(FormControl.Label, { children: "Name" }), _jsx(TextInput, { block: true, value: formValues.name, onChange: valueNameChange, autoFocus: true }), _jsx(FormControl.Caption, { children: "Hint: The token name is a short name that identifies in a unique way your token." }), validationResult.name === false && (_jsx(FormControl.Validation, { variant: "error", children: "Name length must be between 2 and 32 characters." }))] }), _jsxs(FormControl, { required: true, children: [_jsx(FormControl.Label, { children: "Expiration day" }), _jsx(Calendar, { showGoToToday: true, onSelectDate: expirationDateChange, value: formValues.expirationDate, strings: defaultCalendarStrings }), validationResult.expirationDate !== true ? (_jsx(FormControl.Validation, { variant: "error", children: "Pick an expiration date in the future." })) : (_jsxs(FormControl.Validation, { variant: "success", children: ["Expiration date:", ' ', formValues.expirationDate?.toLocaleDateString(), "."] }))] }), _jsxs(FormControl, { required: true, children: [_jsx(FormControl.Label, { children: "Description" }), _jsx(Textarea, { block: true, value: formValues.description, onChange: valueDescriptionChange }), validationResult.description === false && (_jsx(FormControl.Validation, { variant: "error", children: "Description must have more than 2 characters." }))] }), _jsx(Button, { variant: "primary", disabled: !validationResult.name ||
112
- !validationResult.description ||
113
- !validationResult.expirationDate, sx: { marginTop: 2 }, onClick: e => {
114
- e.preventDefault();
115
- valueSubmit();
116
- }, children: "Create a token" })] }) }) })] })) }));
117
- };
118
- export default IAMTokenNew;
@@ -1,12 +0,0 @@
1
- export type IAMTokensProps = {
2
- /** Route to navigate when clicking "New API Key" button. Defaults to '/new/token'. */
3
- newTokenRoute?: string;
4
- /** Base route for the tokens list (used for edit navigation). Defaults to current relative path. */
5
- tokensListRoute?: string;
6
- /** Whether to display view titles/headings. Defaults to true. */
7
- showTitle?: boolean;
8
- /** Whether to render the "New API Key" button in this component header. Defaults to true. */
9
- showNewButton?: boolean;
10
- };
11
- export declare const IAMTokens: ({ newTokenRoute, tokensListRoute, showTitle, showNewButton, }?: IAMTokensProps) => import("react/jsx-runtime").JSX.Element;
12
- export default IAMTokens;
@@ -1,87 +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 { useState, useEffect, useRef } from 'react';
7
- import { PageLayout, Button, IconButton, Text, Label, RelativeTime, ConfirmationDialog, } from '@primer/react';
8
- import { Blankslate, PageHeader, Table, DataTable, } from '@primer/react/experimental';
9
- import { Box } from '@datalayer/primer-addons';
10
- import { EditIcon } from '@datalayer/icons-react';
11
- import { TrashIcon } from '@primer/octicons-react';
12
- import { useCache, useNavigate, useToast } from '../../hooks/index.js';
13
- const TokensTable = ({ tokensListRoute, showTitle = true, }) => {
14
- const { useTokens, useDeleteToken } = useCache();
15
- const { enqueueToast } = useToast();
16
- const getTokensQuery = useTokens();
17
- const deleteTokenMutation = useDeleteToken();
18
- const navigate = useNavigate();
19
- const [tokens, setTokens] = useState([]);
20
- const [deletingToken, setDeletingToken] = useState(null);
21
- const returnFocusRef = useRef(null);
22
- useEffect(() => {
23
- if (getTokensQuery.data) {
24
- setTokens(getTokensQuery.data);
25
- }
26
- }, [getTokensQuery.data]);
27
- const handleDeleteConfirm = () => {
28
- if (!deletingToken)
29
- return;
30
- deleteTokenMutation.mutate(deletingToken.id, {
31
- onSuccess: (resp) => {
32
- if (resp.success) {
33
- enqueueToast(`Token "${deletingToken.name}" deleted.`, {
34
- variant: 'success',
35
- });
36
- }
37
- else {
38
- enqueueToast(resp.message || 'Failed to delete token.', {
39
- variant: 'error',
40
- });
41
- }
42
- },
43
- onError: () => {
44
- enqueueToast('Failed to delete token.', { variant: 'error' });
45
- },
46
- onSettled: () => setDeletingToken(null),
47
- });
48
- };
49
- return tokens.length === 0 ? (_jsxs(Blankslate, { border: true, spacious: true, children: [showTitle && _jsx(Blankslate.Heading, { children: "API Keys" }), _jsx(Blankslate.Description, { children: _jsx(Text, { sx: { textAlign: 'center' }, children: "No API Keys found." }) })] })) : (_jsxs(_Fragment, { children: [_jsxs(Table.Container, { children: [showTitle && (_jsxs(_Fragment, { children: [_jsx(Table.Title, { as: "h2", id: "tokens", children: "API Keys" }), _jsx(Table.Subtitle, { as: "p", id: "tokens-subtitle", children: "Your tokens." })] })), _jsx(DataTable, { "aria-labelledby": "teams", "aria-describedby": "teams-subtitle", data: tokens, columns: [
50
- {
51
- header: 'Type',
52
- field: 'variant',
53
- renderCell: token => _jsx(Label, { children: token.variant }),
54
- },
55
- {
56
- header: 'Name',
57
- field: 'name',
58
- rowHeader: true,
59
- },
60
- {
61
- header: 'Description',
62
- field: 'description',
63
- },
64
- {
65
- header: 'Expiration date',
66
- field: 'expirationDate',
67
- renderCell: token => (_jsx(RelativeTime, { date: new Date(token.expirationDate) })),
68
- },
69
- {
70
- header: '',
71
- field: 'id',
72
- renderCell: token => (_jsxs(Box, { display: "flex", sx: { gap: 1 }, children: [_jsx(IconButton, { icon: EditIcon, "aria-label": "Edit", size: "small", variant: "invisible", onClick: e => navigate(tokensListRoute
73
- ? `${tokensListRoute}/${token.id}`
74
- : `${token.id}`, e) }), _jsx(IconButton, { ref: returnFocusRef, icon: TrashIcon, "aria-label": "Delete", size: "small", variant: "invisible", sx: { color: 'danger.fg' }, onClick: () => setDeletingToken(token) })] })),
75
- },
76
- ] })] }), deletingToken && (_jsxs(ConfirmationDialog, { title: "Delete token", onClose: gesture => {
77
- if (gesture === 'confirm')
78
- handleDeleteConfirm();
79
- else
80
- setDeletingToken(null);
81
- }, confirmButtonContent: "Delete", confirmButtonType: "danger", children: ["Are you sure you want to delete the token", ' ', _jsx("strong", { children: deletingToken.name }), "? This action cannot be undone."] }))] }));
82
- };
83
- export const IAMTokens = ({ newTokenRoute = '/new/token', tokensListRoute, showTitle = true, showNewButton = true, } = {}) => {
84
- const navigate = useNavigate();
85
- return (_jsxs(PageLayout, { containerWidth: "full", padding: "normal", style: { overflow: 'visible', minHeight: 'calc(100vh - 45px)' }, children: [showTitle || showNewButton ? (_jsx(PageLayout.Header, { children: _jsxs(PageHeader, { children: [showTitle && (_jsx(PageHeader.TitleArea, { variant: "large", children: _jsx(PageHeader.Title, { children: "API Keys" }) })), showNewButton && (_jsx(PageHeader.Actions, { children: _jsx(Button, { size: "small", variant: "primary", onClick: e => navigate(newTokenRoute, e), children: "New API Key" }) }))] }) })) : null, _jsx(PageLayout.Content, { children: _jsx(Box, { children: _jsx(TokensTable, { tokensListRoute: tokensListRoute, showTitle: showTitle }) }) })] }));
86
- };
87
- export default IAMTokens;
@@ -1,2 +0,0 @@
1
- export declare const Tokens: () => import("react/jsx-runtime").JSX.Element;
2
- export default Tokens;
@@ -1,85 +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 { useState, useEffect, useRef } from 'react';
7
- import { PageLayout, Button, IconButton, Text, Label, RelativeTime, ConfirmationDialog, } from '@primer/react';
8
- import { Blankslate, PageHeader, Table, DataTable, } from '@primer/react/experimental';
9
- import { Box } from '@datalayer/primer-addons';
10
- import { EditIcon } from '@datalayer/icons-react';
11
- import { TrashIcon } from '@primer/octicons-react';
12
- import { useCache, useNavigate, useToast } from '../../hooks/index.js';
13
- const TokensTable = () => {
14
- const { useTokens, useDeleteToken } = useCache();
15
- const { enqueueToast } = useToast();
16
- const getTokensQuery = useTokens();
17
- const deleteTokenMutation = useDeleteToken();
18
- const navigate = useNavigate();
19
- const [tokens, setTokens] = useState([]);
20
- const [deletingToken, setDeletingToken] = useState(null);
21
- const returnFocusRef = useRef(null);
22
- useEffect(() => {
23
- if (getTokensQuery.data) {
24
- setTokens(getTokensQuery.data);
25
- }
26
- }, [getTokensQuery.data]);
27
- const handleDeleteConfirm = () => {
28
- if (!deletingToken)
29
- return;
30
- deleteTokenMutation.mutate(deletingToken.id, {
31
- onSuccess: (resp) => {
32
- if (resp.success) {
33
- enqueueToast(`Token "${deletingToken.name}" deleted.`, {
34
- variant: 'success',
35
- });
36
- }
37
- else {
38
- enqueueToast(resp.message || 'Failed to delete token.', {
39
- variant: 'error',
40
- });
41
- }
42
- },
43
- onError: () => {
44
- enqueueToast('Failed to delete token.', { variant: 'error' });
45
- },
46
- onSettled: () => setDeletingToken(null),
47
- });
48
- };
49
- return tokens.length === 0 ? (_jsxs(Blankslate, { border: true, spacious: true, children: [_jsx(Blankslate.Heading, { children: "Tokens" }), _jsx(Blankslate.Description, { children: _jsx(Text, { sx: { textAlign: 'center' }, children: "No Tokens found." }) })] })) : (_jsxs(_Fragment, { children: [_jsxs(Table.Container, { children: [_jsx(Table.Title, { as: "h2", id: "tokens", children: "Tokens" }), _jsx(Table.Subtitle, { as: "p", id: "tokens-subtitle", children: "Your tokens." }), _jsx(DataTable, { "aria-labelledby": "teams", "aria-describedby": "teams-subtitle", data: tokens, columns: [
50
- {
51
- header: 'Type',
52
- field: 'variant',
53
- renderCell: token => _jsx(Label, { children: token.variant }),
54
- },
55
- {
56
- header: 'Name',
57
- field: 'name',
58
- rowHeader: true,
59
- },
60
- {
61
- header: 'Description',
62
- field: 'description',
63
- },
64
- {
65
- header: 'Expiration date',
66
- field: 'expirationDate',
67
- renderCell: token => (_jsx(RelativeTime, { date: new Date(token.expirationDate) })),
68
- },
69
- {
70
- header: '',
71
- field: 'id',
72
- renderCell: token => (_jsxs(Box, { display: "flex", sx: { gap: 1 }, children: [_jsx(IconButton, { icon: EditIcon, "aria-label": "Edit", size: "small", variant: "invisible", onClick: e => navigate(`${token.id}`, e) }), _jsx(IconButton, { ref: returnFocusRef, icon: TrashIcon, "aria-label": "Delete", size: "small", variant: "invisible", sx: { color: 'danger.fg' }, onClick: () => setDeletingToken(token) })] })),
73
- },
74
- ] })] }), deletingToken && (_jsxs(ConfirmationDialog, { title: "Delete token", onClose: gesture => {
75
- if (gesture === 'confirm')
76
- handleDeleteConfirm();
77
- else
78
- setDeletingToken(null);
79
- }, confirmButtonContent: "Delete", confirmButtonType: "danger", children: ["Are you sure you want to delete the token", ' ', _jsx("strong", { children: deletingToken.name }), "? This action cannot be undone."] }))] }));
80
- };
81
- export const Tokens = () => {
82
- const navigate = useNavigate();
83
- return (_jsxs(PageLayout, { containerWidth: "full", padding: "normal", style: { overflow: 'visible', minHeight: 'calc(100vh - 45px)' }, children: [_jsx(PageLayout.Header, { children: _jsxs(PageHeader, { children: [_jsx(PageHeader.TitleArea, { variant: "large", children: _jsx(PageHeader.Title, { children: "Tokens" }) }), _jsx(PageHeader.Actions, { children: _jsx(Button, { size: "small", variant: "primary", onClick: e => navigate('/tokens/new', e), children: "New token" }) })] }) }), _jsx(PageLayout.Content, { children: _jsx(Box, { children: _jsx(TokensTable, {}) }) })] }));
84
- };
85
- export default Tokens;
@@ -1,3 +0,0 @@
1
- export * from './IAMTokenEdit';
2
- export * from './IAMTokenNew';
3
- export * from './IAMTokens';
@@ -1,7 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the Modified BSD License.
4
- */
5
- export * from './IAMTokenEdit.js';
6
- export * from './IAMTokenNew.js';
7
- export * from './IAMTokens.js';
File without changes
File without changes