@datalayer/core 1.0.25 → 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 (339) hide show
  1. package/README.md +14 -26
  2. package/lib/api/index.d.ts +0 -9
  3. package/lib/api/index.js +0 -9
  4. package/lib/cli-login.js +167 -0
  5. package/lib/client/base.d.ts +0 -3
  6. package/lib/client/base.js +0 -2
  7. package/lib/client/index.d.ts +10 -98
  8. package/lib/client/index.js +12 -21
  9. package/lib/components/avatars/UserAvatar.d.ts +16 -0
  10. package/lib/components/avatars/UserAvatar.js +47 -0
  11. package/lib/components/avatars/index.d.ts +1 -0
  12. package/lib/components/avatars/index.js +1 -0
  13. package/lib/components/billing/BillableAccountSelect.js +4 -0
  14. package/lib/components/billing/index.js +4 -0
  15. package/lib/components/context/index.d.ts +0 -1
  16. package/lib/components/context/index.js +0 -1
  17. package/lib/components/display/DisplayHandle.d.ts +12 -0
  18. package/lib/components/display/DisplayHandle.js +11 -0
  19. package/lib/components/display/LiveRelativeTime.js +4 -0
  20. package/lib/components/display/index.d.ts +1 -0
  21. package/lib/components/display/index.js +1 -0
  22. package/lib/components/flashes/index.d.ts +0 -1
  23. package/lib/components/flashes/index.js +0 -1
  24. package/lib/components/index.d.ts +0 -1
  25. package/lib/components/index.js +0 -1
  26. package/lib/components/principal/Principal.d.ts +7 -0
  27. package/lib/components/principal/Principal.js +153 -16
  28. package/lib/components/principal/PrincipalAvatar.d.ts +1 -1
  29. package/lib/components/principal/PrincipalAvatar.js +4 -28
  30. package/lib/components/principal/PrincipalBadge.js +4 -4
  31. package/lib/components/principal/PrincipalDetailsOverlay.d.ts +4 -2
  32. package/lib/components/principal/PrincipalDetailsOverlay.js +27 -7
  33. package/lib/components/principal/PrincipalSwitcherMenu.js +76 -39
  34. package/lib/components/progress/index.d.ts +0 -1
  35. package/lib/components/progress/index.js +0 -1
  36. package/lib/components/sharing/ShareAccessComponent.d.ts +3 -2
  37. package/lib/components/sharing/ShareAccessComponent.js +180 -133
  38. package/lib/components/sharing/SharingEditor.js +4 -0
  39. package/lib/components/snippets/index.d.ts +1 -1
  40. package/lib/components/snippets/index.js +1 -1
  41. package/lib/components/students/StudentResultCircle.d.ts +21 -0
  42. package/lib/components/students/StudentResultCircle.js +59 -0
  43. package/lib/components/students/index.d.ts +1 -1
  44. package/lib/components/students/index.js +1 -1
  45. package/lib/components/time/LiveRelativeTime.js +4 -0
  46. package/lib/components/time/index.js +4 -0
  47. package/lib/components/timeline/index.js +4 -0
  48. package/lib/components/tokens/index.d.ts +1 -1
  49. package/lib/components/tokens/index.js +1 -1
  50. package/lib/components/toolbars/index.d.ts +1 -3
  51. package/lib/components/toolbars/index.js +1 -3
  52. package/lib/hooks/cacheConverters.d.ts +21 -0
  53. package/lib/hooks/cacheConverters.js +110 -0
  54. package/lib/hooks/index.d.ts +0 -2
  55. package/lib/hooks/index.js +0 -2
  56. package/lib/hooks/useCache.d.ts +64 -35
  57. package/lib/hooks/useCache.js +407 -52
  58. package/lib/hooks/useDatalayer.js +3 -1
  59. package/lib/hooks/useIAM.js +1 -3
  60. package/lib/hooks/useLocationHandles.d.ts +3 -1
  61. package/lib/hooks/useLocationHandles.js +2 -1
  62. package/lib/hooks/usePrincipalStore.d.ts +2 -2
  63. package/lib/hooks/usePrincipalStore.js +97 -14
  64. package/lib/hooks/useSelectedPrincipal.js +1 -1
  65. package/lib/hooks/useUser.js +19 -2
  66. package/lib/index.d.ts +1 -6
  67. package/lib/index.js +1 -13
  68. package/lib/main.js +3 -3
  69. package/lib/mocks/index.js +1 -1
  70. package/lib/mocks/models/index.d.ts +0 -1
  71. package/lib/mocks/models/index.js +0 -1
  72. package/lib/models/Datasource.d.ts +2 -2
  73. package/lib/models/IAM.d.ts +1 -1
  74. package/lib/models/School.d.ts +12 -3
  75. package/lib/models/Secret.d.ts +2 -2
  76. package/lib/models/Student.d.ts +13 -3
  77. package/lib/models/Usage.d.ts +11 -1
  78. package/lib/models/UserDTO.d.ts +2 -2
  79. package/lib/models/index.d.ts +0 -30
  80. package/lib/models/index.js +0 -30
  81. package/lib/routes/index.d.ts +1 -0
  82. package/lib/routes/index.js +1 -0
  83. package/lib/routes/publicPaths.d.ts +23 -0
  84. package/lib/routes/publicPaths.js +74 -0
  85. package/lib/state/State.d.ts +0 -12
  86. package/lib/state/State.js +0 -12
  87. package/lib/state/substates/LayoutState.d.ts +12 -1
  88. package/lib/state/substates/index.d.ts +0 -7
  89. package/lib/state/substates/index.js +0 -7
  90. package/lib/utils/Handles.js +3 -1
  91. package/lib/utils/index.d.ts +0 -1
  92. package/lib/utils/index.js +0 -1
  93. package/lib/views/api-keys/APIKeys.js +12 -3
  94. package/lib/views/datasources/DatasourceDetail.d.ts +1 -1
  95. package/lib/views/datasources/DatasourceNew.d.ts +1 -1
  96. package/lib/views/datasources/Datasources.d.ts +1 -1
  97. package/lib/views/datasources/Datasources.js +12 -3
  98. package/lib/views/iam/SignInSimple.d.ts +37 -1
  99. package/lib/views/iam/SignInSimple.js +110 -12
  100. package/package.json +5 -3
  101. package/lib/App.css +0 -47
  102. package/lib/App.d.ts +0 -3
  103. package/lib/App.js +0 -21
  104. package/lib/api/runtimes/checkpoints.d.ts +0 -122
  105. package/lib/api/runtimes/checkpoints.js +0 -118
  106. package/lib/api/runtimes/environments.d.ts +0 -9
  107. package/lib/api/runtimes/environments.js +0 -29
  108. package/lib/api/runtimes/healthz.d.ts +0 -15
  109. package/lib/api/runtimes/healthz.js +0 -44
  110. package/lib/api/runtimes/index.d.ts +0 -12
  111. package/lib/api/runtimes/index.js +0 -16
  112. package/lib/api/runtimes/runtimes.d.ts +0 -138
  113. package/lib/api/runtimes/runtimes.js +0 -230
  114. package/lib/api/runtimes/snapshots.d.ts +0 -38
  115. package/lib/api/runtimes/snapshots.js +0 -82
  116. package/lib/api/scheduler/index.d.ts +0 -6
  117. package/lib/api/scheduler/index.js +0 -10
  118. package/lib/api/scheduler/schedules.d.ts +0 -85
  119. package/lib/api/scheduler/schedules.js +0 -78
  120. package/lib/api/spacer/documents.d.ts +0 -12
  121. package/lib/api/spacer/documents.js +0 -43
  122. package/lib/api/spacer/healthz.d.ts +0 -15
  123. package/lib/api/spacer/healthz.js +0 -44
  124. package/lib/api/spacer/index.d.ts +0 -15
  125. package/lib/api/spacer/index.js +0 -19
  126. package/lib/api/spacer/items.d.ts +0 -25
  127. package/lib/api/spacer/items.js +0 -55
  128. package/lib/api/spacer/lexicals.d.ts +0 -34
  129. package/lib/api/spacer/lexicals.js +0 -89
  130. package/lib/api/spacer/notebooks.d.ts +0 -34
  131. package/lib/api/spacer/notebooks.js +0 -89
  132. package/lib/api/spacer/spaces.d.ts +0 -84
  133. package/lib/api/spacer/spaces.js +0 -170
  134. package/lib/api/spacer/users.d.ts +0 -9
  135. package/lib/api/spacer/users.js +0 -29
  136. package/lib/client/mixins/RuntimesMixin.d.ts +0 -93
  137. package/lib/client/mixins/RuntimesMixin.js +0 -229
  138. package/lib/client/mixins/SpacerMixin.d.ts +0 -210
  139. package/lib/client/mixins/SpacerMixin.js +0 -615
  140. package/lib/client/utils/spacerUtils.d.ts +0 -18
  141. package/lib/client/utils/spacerUtils.js +0 -32
  142. package/lib/collaboration/DatalayerCollaboration.d.ts +0 -13
  143. package/lib/collaboration/DatalayerCollaboration.js +0 -28
  144. package/lib/collaboration/DatalayerCollaborationProvider.d.ts +0 -60
  145. package/lib/collaboration/DatalayerCollaborationProvider.js +0 -163
  146. package/lib/collaboration/index.d.ts +0 -2
  147. package/lib/collaboration/index.js +0 -6
  148. package/lib/components/context/SpaceSelect.d.ts +0 -2
  149. package/lib/components/context/SpaceSelect.js +0 -42
  150. package/lib/components/flashes/FlashDisclaimer.d.ts +0 -2
  151. package/lib/components/flashes/FlashDisclaimer.js +0 -17
  152. package/lib/components/icons/ArtifactIcon.d.ts +0 -10
  153. package/lib/components/icons/ArtifactIcon.js +0 -58
  154. package/lib/components/icons/index.d.ts +0 -1
  155. package/lib/components/icons/index.js +0 -5
  156. package/lib/components/nbgrader/NbGradesDetails.d.ts +0 -5
  157. package/lib/components/nbgrader/NbGradesDetails.js +0 -14
  158. package/lib/components/nbgrader/index.d.ts +0 -1
  159. package/lib/components/nbgrader/index.js +0 -5
  160. package/lib/components/progress/CreditsIndicator.d.ts +0 -33
  161. package/lib/components/progress/CreditsIndicator.js +0 -23
  162. package/lib/components/runtimes/RuntimeCellVariables.d.ts +0 -39
  163. package/lib/components/runtimes/RuntimeCellVariables.js +0 -172
  164. package/lib/components/runtimes/RuntimeCellVariablesDialog.d.ts +0 -37
  165. package/lib/components/runtimes/RuntimeCellVariablesDialog.js +0 -101
  166. package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +0 -57
  167. package/lib/components/runtimes/RuntimeLauncherDialog.js +0 -275
  168. package/lib/components/runtimes/RuntimePickerBase.d.ts +0 -69
  169. package/lib/components/runtimes/RuntimePickerBase.js +0 -122
  170. package/lib/components/runtimes/RuntimePickerCell.d.ts +0 -34
  171. package/lib/components/runtimes/RuntimePickerCell.js +0 -104
  172. package/lib/components/runtimes/RuntimePickerNotebook.d.ts +0 -42
  173. package/lib/components/runtimes/RuntimePickerNotebook.js +0 -232
  174. package/lib/components/runtimes/RuntimeReservationControl.d.ts +0 -47
  175. package/lib/components/runtimes/RuntimeReservationControl.js +0 -42
  176. package/lib/components/runtimes/RuntimeSimplePicker.d.ts +0 -38
  177. package/lib/components/runtimes/RuntimeSimplePicker.js +0 -155
  178. package/lib/components/runtimes/RuntimeTransfer.d.ts +0 -16
  179. package/lib/components/runtimes/RuntimeTransfer.js +0 -5
  180. package/lib/components/runtimes/RuntimeUtils.d.ts +0 -17
  181. package/lib/components/runtimes/RuntimeUtils.js +0 -178
  182. package/lib/components/runtimes/RuntimeVariables.d.ts +0 -38
  183. package/lib/components/runtimes/RuntimeVariables.js +0 -75
  184. package/lib/components/runtimes/index.d.ts +0 -11
  185. package/lib/components/runtimes/index.js +0 -15
  186. package/lib/components/scheduler/ScheduleMenu.d.ts +0 -54
  187. package/lib/components/scheduler/ScheduleMenu.js +0 -154
  188. package/lib/components/scheduler/index.d.ts +0 -1
  189. package/lib/components/scheduler/index.js +0 -5
  190. package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +0 -33
  191. package/lib/components/snapshots/SandboxSnapshotMenu.js +0 -169
  192. package/lib/components/snapshots/index.d.ts +0 -1
  193. package/lib/components/snapshots/index.js +0 -5
  194. package/lib/components/snippets/SnippetDialog.d.ts +0 -42
  195. package/lib/components/snippets/SnippetDialog.js +0 -42
  196. package/lib/components/students/StudentItemStatus.d.ts +0 -7
  197. package/lib/components/students/StudentItemStatus.js +0 -66
  198. package/lib/components/tokens/SpaceVariantToken.d.ts +0 -5
  199. package/lib/components/tokens/SpaceVariantToken.js +0 -23
  200. package/lib/components/toolbars/AssignmentEditorToolbar.d.ts +0 -4
  201. package/lib/components/toolbars/AssignmentEditorToolbar.js +0 -18
  202. package/lib/components/toolbars/DocumentEditorToolbar.d.ts +0 -2
  203. package/lib/components/toolbars/DocumentEditorToolbar.js +0 -12
  204. package/lib/components/toolbars/NotebookEditorToolbar.d.ts +0 -29
  205. package/lib/components/toolbars/NotebookEditorToolbar.js +0 -30
  206. package/lib/examples/CellExample.d.ts +0 -6
  207. package/lib/examples/CellExample.js +0 -20
  208. package/lib/examples/NotebookExample.d.ts +0 -6
  209. package/lib/examples/NotebookExample.js +0 -19
  210. package/lib/examples/lexical-theme.css +0 -436
  211. package/lib/examples/notebooks/IPyWidgetsExample.ipynb.json +0 -101
  212. package/lib/examples/notebooks/IPyWidgetsExampleWithState.ipynb.json +0 -112
  213. package/lib/examples/notebooks/Lite.ipynb.json +0 -128
  214. package/lib/examples/notebooks/Matplotlib.ipynb.json +0 -137
  215. package/lib/examples/notebooks/NotebookExample1.ipynb.json +0 -126
  216. package/lib/examples/notebooks/NotebookExample2.ipynb.json +0 -48
  217. package/lib/examples/notebooks/NotebookOutputs.ipynb.json +0 -49
  218. package/lib/examples/notebooks/NotebookToCExample.ipynb.json +0 -102
  219. package/lib/examples/notebooks/PyGWalker.ipynb.json +0 -55
  220. package/lib/hooks/useCellOutputshot.d.ts +0 -4
  221. package/lib/hooks/useCellOutputshot.js +0 -25
  222. package/lib/hooks/useProjects.d.ts +0 -628
  223. package/lib/hooks/useProjects.js +0 -190
  224. package/lib/hooks/useRuntimes.d.ts +0 -5
  225. package/lib/hooks/useRuntimes.js +0 -34
  226. package/lib/mocks/jupyter/index.js +0 -5
  227. package/lib/mocks/models/CourseMock.d.ts +0 -6
  228. package/lib/mocks/models/CourseMock.js +0 -29
  229. package/lib/mocks/models/SpaceMock.d.ts +0 -6
  230. package/lib/mocks/models/SpaceMock.js +0 -25
  231. package/lib/models/Assignment.d.ts +0 -7
  232. package/lib/models/Assignment.js +0 -5
  233. package/lib/models/Cell.d.ts +0 -8
  234. package/lib/models/Cell.js +0 -5
  235. package/lib/models/CodeBlock.d.ts +0 -10
  236. package/lib/models/CodeBlock.js +0 -5
  237. package/lib/models/CodeSandboxSnapshot.d.ts +0 -92
  238. package/lib/models/CodeSandboxSnapshot.js +0 -13
  239. package/lib/models/CodeSandboxSnapshotDTO.d.ts +0 -173
  240. package/lib/models/CodeSandboxSnapshotDTO.js +0 -139
  241. package/lib/models/CodefeedBlocks.d.ts +0 -7
  242. package/lib/models/CodefeedBlocks.js +0 -5
  243. package/lib/models/Content.d.ts +0 -5
  244. package/lib/models/Content.js +0 -5
  245. package/lib/models/Course.d.ts +0 -17
  246. package/lib/models/Course.js +0 -5
  247. package/lib/models/Dataset.d.ts +0 -16
  248. package/lib/models/Dataset.js +0 -5
  249. package/lib/models/Document.d.ts +0 -8
  250. package/lib/models/Document.js +0 -5
  251. package/lib/models/Environment.d.ts +0 -86
  252. package/lib/models/Environment.js +0 -5
  253. package/lib/models/EnvironmentDTO.d.ts +0 -125
  254. package/lib/models/EnvironmentDTO.js +0 -88
  255. package/lib/models/Exercise.d.ts +0 -16
  256. package/lib/models/Exercise.js +0 -5
  257. package/lib/models/Item.d.ts +0 -20
  258. package/lib/models/Item.js +0 -5
  259. package/lib/models/ItemDTO.d.ts +0 -74
  260. package/lib/models/ItemDTO.js +0 -186
  261. package/lib/models/ItemType.d.ts +0 -2
  262. package/lib/models/ItemType.js +0 -5
  263. package/lib/models/Lesson.d.ts +0 -5
  264. package/lib/models/Lesson.js +0 -5
  265. package/lib/models/LexicalDTO.d.ts +0 -155
  266. package/lib/models/LexicalDTO.js +0 -157
  267. package/lib/models/Library.d.ts +0 -10
  268. package/lib/models/Library.js +0 -5
  269. package/lib/models/Notebook.d.ts +0 -11
  270. package/lib/models/Notebook.js +0 -5
  271. package/lib/models/NotebookDTO.d.ts +0 -96
  272. package/lib/models/NotebookDTO.js +0 -153
  273. package/lib/models/Page.d.ts +0 -41
  274. package/lib/models/Page.js +0 -25
  275. package/lib/models/PageTag.d.ts +0 -19
  276. package/lib/models/PageTag.js +0 -94
  277. package/lib/models/ProjectDTO.d.ts +0 -89
  278. package/lib/models/ProjectDTO.js +0 -131
  279. package/lib/models/Runtime.d.ts +0 -123
  280. package/lib/models/Runtime.js +0 -18
  281. package/lib/models/RuntimeDTO.d.ts +0 -191
  282. package/lib/models/RuntimeDTO.js +0 -204
  283. package/lib/models/Space.d.ts +0 -35
  284. package/lib/models/Space.js +0 -66
  285. package/lib/models/SpaceDTO.d.ts +0 -334
  286. package/lib/models/SpaceDTO.js +0 -244
  287. package/lib/models/SpaceItem.d.ts +0 -10
  288. package/lib/models/SpaceItem.js +0 -5
  289. package/lib/models/SpaceMember.d.ts +0 -6
  290. package/lib/models/SpaceMember.js +0 -5
  291. package/lib/models/StudentItem.d.ts +0 -21
  292. package/lib/models/StudentItem.js +0 -5
  293. package/lib/services/DatalayerServiceManager.d.ts +0 -22
  294. package/lib/services/DatalayerServiceManager.js +0 -69
  295. package/lib/services/index.d.ts +0 -4
  296. package/lib/services/index.js +0 -7
  297. package/lib/services/reconnectToRuntime.d.ts +0 -32
  298. package/lib/services/reconnectToRuntime.js +0 -59
  299. package/lib/state/substates/CellState.d.ts +0 -12
  300. package/lib/state/substates/CellState.js +0 -22
  301. package/lib/state/substates/DocumentState.d.ts +0 -10
  302. package/lib/state/substates/DocumentState.js +0 -14
  303. package/lib/state/substates/GradeState.d.ts +0 -10
  304. package/lib/state/substates/GradeState.js +0 -14
  305. package/lib/state/substates/JupyterLabState.d.ts +0 -16
  306. package/lib/state/substates/JupyterLabState.js +0 -17
  307. package/lib/state/substates/NbformatState.d.ts +0 -13
  308. package/lib/state/substates/NbformatState.js +0 -16
  309. package/lib/state/substates/RuntimesState.d.ts +0 -79
  310. package/lib/state/substates/RuntimesState.js +0 -180
  311. package/lib/state/substates/SpaceState.d.ts +0 -11
  312. package/lib/state/substates/SpaceState.js +0 -16
  313. package/lib/stateful/index.d.ts +0 -2
  314. package/lib/stateful/index.js +0 -6
  315. package/lib/stateful/jupyter/exec/Python.d.ts +0 -5
  316. package/lib/stateful/jupyter/exec/Python.js +0 -100
  317. package/lib/stateful/jupyter/exec/Snippets.d.ts +0 -105
  318. package/lib/stateful/jupyter/exec/Snippets.js +0 -101
  319. package/lib/stateful/jupyter/exec/index.d.ts +0 -2
  320. package/lib/stateful/jupyter/exec/index.js +0 -6
  321. package/lib/stateful/jupyter/index.d.ts +0 -2
  322. package/lib/stateful/jupyter/index.js +0 -6
  323. package/lib/stateful/jupyter/kernelsHandler.d.ts +0 -8
  324. package/lib/stateful/jupyter/kernelsHandler.js +0 -39
  325. package/lib/stateful/runtimes/actions.d.ts +0 -102
  326. package/lib/stateful/runtimes/actions.js +0 -249
  327. package/lib/stateful/runtimes/apis.d.ts +0 -273
  328. package/lib/stateful/runtimes/apis.js +0 -5
  329. package/lib/stateful/runtimes/index.d.ts +0 -5
  330. package/lib/stateful/runtimes/index.js +0 -9
  331. package/lib/stateful/runtimes/settings.d.ts +0 -15
  332. package/lib/stateful/runtimes/settings.js +0 -31
  333. package/lib/stateful/runtimes/snapshots.d.ts +0 -25
  334. package/lib/stateful/runtimes/snapshots.js +0 -150
  335. package/lib/stateful/runtimes/utils.d.ts +0 -7
  336. package/lib/stateful/runtimes/utils.js +0 -14
  337. package/lib/utils/Cells.d.ts +0 -2
  338. package/lib/utils/Cells.js +0 -28
  339. /package/lib/{mocks/jupyter/index.d.ts → cli-login.d.ts} +0 -0
@@ -1,69 +0,0 @@
1
- import { ReactElement, ReactNode } from 'react';
2
- import { ISessionContext } from '@jupyterlab/apputils';
3
- import { ITranslator } from '@jupyterlab/translation';
4
- import { IRuntimeDesc } from '../../models';
5
- import { IMultiServiceManager } from '../../stateful/runtimes';
6
- type IDisplayMode = 'menu' | 'radio';
7
- /**
8
- * {@link RuntimePickerBase} properties
9
- */
10
- export interface IRuntimePickerBaseProps {
11
- /**
12
- * The display mode.
13
- */
14
- display: IDisplayMode;
15
- /**
16
- * Additional actions items to be placed at the top of the picker
17
- */
18
- preActions?: ReactNode;
19
- /**
20
- * Additional actions items to be placed at the bottom of the picker
21
- */
22
- postActions?: ReactNode;
23
- /**
24
- * Whether the picker is disabled or not.
25
- */
26
- disabled?: boolean;
27
- /**
28
- * Runtime description passing this filter function will be displayed.
29
- */
30
- filterRuntime?: (desc: IRuntimeDesc) => boolean;
31
- /**
32
- * Session preference.
33
- */
34
- preference?: {
35
- id?: string;
36
- kernelDisplayName?: string;
37
- language?: string;
38
- location?: string;
39
- };
40
- /**
41
- * Runtime description.
42
- */
43
- runtimeDesc?: IRuntimeDesc;
44
- /**
45
- * Set runtime description.
46
- */
47
- setRuntimeDesc: (desc?: IRuntimeDesc) => void;
48
- /**
49
- * Document session context.
50
- */
51
- sessionContext?: ISessionContext;
52
- /**
53
- * Application service manager
54
- */
55
- multiServiceManager: IMultiServiceManager;
56
- /**
57
- * Application translator.
58
- */
59
- translator?: ITranslator;
60
- /**
61
- * Change the look depending on the menu integration.
62
- */
63
- variant?: 'document' | 'cell';
64
- }
65
- /**
66
- * Base Kernel Picker component.
67
- */
68
- export declare function RuntimePickerBase(props: IRuntimePickerBaseProps): ReactElement;
69
- export default RuntimePickerBase;
@@ -1,122 +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, useMemo, useState } from 'react';
7
- import { nullTranslator } from '@jupyterlab/translation';
8
- //import { kernelIcon } from '@jupyterlab/ui-components';
9
- import { ActionList, ActionMenu, IconButton, Text, RadioGroup, Radio, FormControl, LabelGroup, Label, } from '@primer/react';
10
- import CloudUploadIcon from '@datalayer/icons-react/data1/CloudUploadIcon';
11
- import { Box } from '@datalayer/primer-addons';
12
- import { CpuIcon } from '@primer/octicons-react';
13
- import { BrowserIcon, LaptopSimpleIcon } from '@datalayer/icons-react';
14
- import { CreditsIndicator } from '../../components/progress/index.js';
15
- import { isRuntimeRemote } from '../../stateful/runtimes/index.js';
16
- import { getGroupedRuntimeDescs } from './RuntimeUtils.js';
17
- /**
18
- * Maximal runtime display name length after which it is trimmed.
19
- */
20
- const RUNTIME_DISPLAY_NAME_MAX_LENGTH = 25;
21
- /**
22
- * Base Kernel Picker component.
23
- */
24
- export function RuntimePickerBase(props) {
25
- const { disabled, display, filterRuntime, multiServiceManager, postActions, preActions, preference, runtimeDesc, sessionContext, setRuntimeDesc, translator, variant, } = props;
26
- const [groupedRuntimeDescs, _] = useState(getGroupedRuntimeDescs(multiServiceManager, preference?.id, translator, filterRuntime, variant));
27
- const trans = useMemo(() => (translator ?? nullTranslator).load('jupyterlab'), [translator]);
28
- const [defaultSet, setDefaultSet] = useState(false);
29
- // Trick because overflow is an unknown prop of ActionMenu.Overlay.
30
- const overlayProps = {
31
- maxHeight: 'large',
32
- width: (variant === 'cell' ? 'small' : 'auto'),
33
- };
34
- /*
35
- // TODO this effect generates refresh of the react components which discards any change in the selection.
36
- useEffect(() => {
37
- const updateGroupedRuntimeDescs = () => {
38
- setGroupedKernelDescs(getGroupedRuntimeDescs(multiServiceManager, preference?.id, translator, filterKernel, variant));
39
- };
40
- multiServiceManager.browser?.kernels.runningChanged.connect(updateGroupedRuntimeDescs);
41
- multiServiceManager.browser?.kernelspecs.specsChanged.connect(updateGroupedRuntimeDescs);
42
- multiServiceManager.browser?.sessions.runningChanged.connect(updateGroupedRuntimeDescs);
43
- multiServiceManager.local.kernels.runningChanged.connect(updateGroupedRuntimeDescs);
44
- multiServiceManager.local.kernelspecs.specsChanged.connect(updateGroupedRuntimeDescs);
45
- multiServiceManager.local.sessions.runningChanged.connect(updateGroupedRuntimeDescs);
46
- multiServiceManager.remote?.kernels.changed.connect(updateGroupedRuntimeDescs);
47
- multiServiceManager.remote?.environments.changed.connect(updateGroupedRuntimeDescs);
48
- // multiServiceManager.remote?.sessions.runningChanged.connect(updateOptions);
49
- return () => {
50
- multiServiceManager.browser?.kernels.runningChanged.disconnect(updateGroupedRuntimeDescs);
51
- multiServiceManager.browser?.kernelspecs.specsChanged.disconnect(updateGroupedRuntimeDescs);
52
- multiServiceManager.browser?.sessions.runningChanged.disconnect(updateGroupedRuntimeDescs);
53
- multiServiceManager.local.kernels.runningChanged.disconnect(updateGroupedRuntimeDescs);
54
- multiServiceManager.local.kernelspecs.specsChanged.disconnect(updateGroupedRuntimeDescs);
55
- multiServiceManager.local.sessions.runningChanged.disconnect(updateGroupedRuntimeDescs);
56
- multiServiceManager.remote?.kernels.changed.disconnect(updateGroupedRuntimeDescs);
57
- multiServiceManager.remote?.environments.changed.disconnect(updateGroupedRuntimeDescs);
58
- // multiServiceManager.remote?.sessions.runningChanged.disconnect(updateOptions);
59
- };
60
- }, [multiServiceManager, preference, translator, filterKernel, variant]);
61
- */
62
- useEffect(() => {
63
- if (sessionContext && groupedRuntimeDescs) {
64
- const kernelId = sessionContext.session?.kernel?.id;
65
- if (kernelId) {
66
- Object.entries(groupedRuntimeDescs).forEach(([group, runtimeDescs]) => {
67
- runtimeDescs.forEach(runtimeDesc => {
68
- if (runtimeDesc.kernelId === kernelId) {
69
- setRuntimeDesc(runtimeDesc);
70
- }
71
- });
72
- });
73
- }
74
- }
75
- setDefaultSet(true);
76
- }, [groupedRuntimeDescs]);
77
- // For cell using submenu instead of group would be nice unfortunately the feature
78
- // is not yet implemented in the component there has been a not-great demo story.
79
- // https://github.com/primer/react/pull/3585
80
- return (_jsx(_Fragment, { children: display === 'menu' ? (
81
- /*
82
- * Section for Menu display.
83
- */
84
- _jsxs(ActionMenu, { children: [variant === 'cell' ? (_jsx(ActionMenu.Anchor, { children: _jsx(IconButton, { disabled: disabled || groupedRuntimeDescs === null,
85
- // icon={() => <kernelIcon.react className="dla-Cell-runtime-icon" tag={'span'} />}
86
- icon: () => (_jsx("span", { className: "dla-Cell-runtime-icon", children: _jsx(CpuIcon, {}) })), "aria-label": trans.__('Assign a Runtime to the Cell.'), title: trans.__('Assign a Runtime to the Cell.'), size: "small", variant: "invisible" }) })) : (_jsxs(ActionMenu.Button, { variant: "default", disabled: disabled || groupedRuntimeDescs === null, children: [_jsx(Text, { fontWeight: 'bold', children: trans.__('Runtime:') }), ' ' + (runtimeDesc?.displayName ?? trans.__('No Runtime'))] })), _jsx(ActionMenu.Overlay, { ...overlayProps, width: "medium", sx: { overflowY: 'auto' }, side: variant === 'cell' ? 'outside-left' : 'outside-right', children: _jsxs(ActionList, { selectionVariant: "single", children: [variant === 'cell' && (_jsxs(ActionList.Item, { selected: runtimeDesc === undefined, onSelect: () => {
87
- setRuntimeDesc(undefined);
88
- }, children: [preference?.location && (_jsx(ActionList.LeadingVisual, { children: preference.location === 'local' ? (_jsx(LaptopSimpleIcon, {})) : preference.location === 'browser' ? (_jsx(BrowserIcon, {})) : (_jsx(CloudUploadIcon, {})) })), trans.__('Assign the Notebook Runtime')] }, 'null')), !!preActions && preActions, Object.entries(groupedRuntimeDescs ?? {}).map(([group, runtimeDescs]) => (_jsxs(ActionList.Group, { children: [_jsx(ActionList.GroupHeading, { children: group }), runtimeDescs.map(candidateRuntimeDesc => {
89
- const annotation = candidateRuntimeDesc.podName
90
- ? ` - ${candidateRuntimeDesc.podName.split('-', 2).reverse()[0]}`
91
- : candidateRuntimeDesc.kernelId
92
- ? ` - ${candidateRuntimeDesc.kernelId}`
93
- : '';
94
- const fullDisplayName = (candidateRuntimeDesc.displayName ?? '') + annotation;
95
- const displayName = (candidateRuntimeDesc.displayName?.length ?? 0) >
96
- RUNTIME_DISPLAY_NAME_MAX_LENGTH
97
- ? candidateRuntimeDesc.displayName.slice(0, RUNTIME_DISPLAY_NAME_MAX_LENGTH) + '…'
98
- : (candidateRuntimeDesc.displayName ?? '');
99
- return (_jsxs(ActionList.Item, { title: fullDisplayName, selected: (candidateRuntimeDesc.location ===
100
- runtimeDesc?.location ||
101
- (isRuntimeRemote(candidateRuntimeDesc.location) &&
102
- isRuntimeRemote(runtimeDesc?.location ?? 'local'))) &&
103
- (candidateRuntimeDesc.kernelId ??
104
- candidateRuntimeDesc.name) ===
105
- (runtimeDesc?.kernelId ?? runtimeDesc?.name), onSelect: () => {
106
- setRuntimeDesc(candidateRuntimeDesc);
107
- }, children: [_jsx(ActionList.LeadingVisual, { children: candidateRuntimeDesc.location === 'local' ? (_jsx(LaptopSimpleIcon, {})) : candidateRuntimeDesc.location === 'browser' ? (_jsx(BrowserIcon, {})) : (_jsx(CloudUploadIcon, {})) }), displayName + annotation.slice(0, 10)] }, candidateRuntimeDesc.name));
108
- })] }, group))), !!postActions && (_jsxs(_Fragment, { children: [_jsx(ActionList.Divider, {}), postActions] }))] }) })] })) : (
109
- /*
110
- * Section for Radio display.
111
- */
112
- _jsxs(_Fragment, { children: [defaultSet && (_jsx(RadioGroup, { name: "kernel-options", "aria-labelledby": "kernel-options", children: Object.entries(groupedRuntimeDescs ?? {}).map(([group, runtimeDescs]) => (_jsxs(Box, { children: [_jsx(Box, { as: "h4", style: { marginTop: 0 }, children: group }), runtimeDescs.map(k => {
113
- return (_jsxs(Box, { title: k.name, children: [_jsxs(FormControl, { children: [_jsx(Radio, { value: k.kernelId, onChange: () => {
114
- setRuntimeDesc(k);
115
- }, checked: (k.location === runtimeDesc?.location ||
116
- (isRuntimeRemote(k.location) &&
117
- isRuntimeRemote(runtimeDesc?.location ?? 'local'))) &&
118
- (k.kernelId ?? k.name) ===
119
- (runtimeDesc?.kernelId ?? runtimeDesc?.name) }), _jsx(FormControl.Label, { children: _jsxs(Box, { display: "flex", children: [_jsx(Box, { children: k.displayName }), k.kernelId && k.location === 'remote' && (_jsx(Box, { ml: 3, mt: 1, children: _jsx(CreditsIndicator, { kernelId: k.kernelId, serviceManager: multiServiceManager.remote }, "credits-indicator") }))] }) }), _jsx(FormControl.Caption, { children: _jsxs(LabelGroup, { sx: { marginTop: 1 }, children: [_jsx(Label, { variant: "secondary", children: k.name }), _jsx(Label, { variant: "secondary", sx: { marginLeft: 1 }, children: k.location }), k.burningRate && (_jsxs(Label, { variant: "sponsors", sx: { marginLeft: 1 }, children: [k.burningRate, " credits/second"] })), k.gpu && (_jsx(Label, { variant: "success", sx: { marginLeft: 1 }, children: "GPU" }))] }) })] }), _jsx(ActionList.Divider, {})] }, k.kernelId));
120
- })] }, group))) })), !!postActions && _jsx(_Fragment, { children: postActions })] })) }));
121
- }
122
- export default RuntimePickerBase;
@@ -1,34 +0,0 @@
1
- import { ISessionContext } from '@jupyterlab/apputils';
2
- import { CodeCellModel } from '@jupyterlab/cells';
3
- import type { IMarkdownParser, IRenderMime } from '@jupyterlab/rendermime';
4
- import { IRuntimePickerBaseProps } from './RuntimePickerBase';
5
- /**
6
- * {@link RuntimePickerCell} properties
7
- */
8
- export type IRuntimePickerCellProps = Pick<IRuntimePickerBaseProps, 'multiServiceManager' | 'preference' | 'translator'> & {
9
- /**
10
- * Callback to allow the user to login
11
- */
12
- logIn?: () => void;
13
- /**
14
- * Code cell model
15
- */
16
- model: CodeCellModel;
17
- /**
18
- * Document session context
19
- */
20
- sessionContext?: ISessionContext;
21
- /**
22
- * Markdown parser
23
- */
24
- markdownParser?: IMarkdownParser;
25
- /**
26
- * HTML sanitizer; if not provided the produced HTML will not be sanitized.
27
- */
28
- sanitizer?: IRenderMime.ISanitizer;
29
- };
30
- /**
31
- * Runtime picker component for a cell.
32
- */
33
- export declare function RuntimePickerCell(props: IRuntimePickerCellProps): JSX.Element;
34
- export default RuntimePickerCell;
@@ -1,104 +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, useMemo, useState } from 'react';
7
- import { nullTranslator } from '@jupyterlab/translation';
8
- import { ActionList } from '@primer/react';
9
- import { CloudUploadIcon } from '@datalayer/icons-react';
10
- import { useCoreStore, useIAMStore } from '../../state/index.js';
11
- import { isRuntimeRemote } from '../../stateful/runtimes/index.js';
12
- import { RuntimeSnippetsFacade } from '../../stateful/jupyter/index.js';
13
- import { ExternalTokenSilentLogin } from '../../components/iam/index.js';
14
- import { SnippetDialog } from './../snippets/SnippetDialog.js';
15
- import { RuntimeLauncherDialog } from './RuntimeLauncherDialog.js';
16
- import { RuntimePickerBase } from './RuntimePickerBase.js';
17
- import { RuntimeCellVariablesDialog } from './RuntimeCellVariablesDialog.js';
18
- /**
19
- * Runtime picker component for a cell.
20
- */
21
- export function RuntimePickerCell(props) {
22
- const { logIn, markdownParser, model, preference, sanitizer, multiServiceManager, sessionContext, translator, } = props;
23
- const { token } = useIAMStore();
24
- const { configuration } = useCoreStore();
25
- const [isForeign, setIsForeign] = useState(false);
26
- const [hasCellRuntime, setHasCellRuntime] = useState(false);
27
- const [isKernelDialogOpen, setIsKernelDialogOpen] = useState(false);
28
- const [isVariableDialogOpen, setIsVariableDialogOpen] = useState(false);
29
- const [language, setLanguage] = useState('');
30
- const [snippets, setSnippets] = useState([]);
31
- const [isSnippetDialogOpen, setIsSnippetDialogOpen] = useState(false);
32
- const trans = useMemo(() => (translator ?? nullTranslator).load('jupyterlab'), [translator]);
33
- useEffect(() => {
34
- const updateState = (model) => {
35
- const datalayerMeta = model.getMetadata('datalayer') ?? {};
36
- const runtime = datalayerMeta.kernel;
37
- setIsForeign(!!runtime);
38
- setHasCellRuntime(runtime?.params?.notebook === false);
39
- const newSnippets = new Array();
40
- if (runtime) {
41
- const spec = multiServiceManager.remote?.environments
42
- .get()
43
- .find(env => env.name === runtime.name);
44
- setLanguage(spec?.language ?? '');
45
- if (spec?.snippets) {
46
- newSnippets.push(...spec.snippets);
47
- }
48
- }
49
- setSnippets(newSnippets);
50
- };
51
- updateState(model);
52
- model.metadataChanged.connect(updateState);
53
- return () => {
54
- model.metadataChanged.disconnect(updateState);
55
- };
56
- }, [model]);
57
- const filterKernel = useCallback((desc) => {
58
- return (!!desc.kernelId &&
59
- isRuntimeRemote(desc.location) &&
60
- (!preference?.language || desc.language === preference?.language));
61
- }, [preference]);
62
- const setSelectedRuntimeDesc = useCallback((kernel) => {
63
- const datalayerMeta = model.getMetadata('datalayer') ?? {
64
- runtime: undefined,
65
- };
66
- if (!kernel) {
67
- delete datalayerMeta.kernel;
68
- model.setMetadata('datalayer', datalayerMeta);
69
- }
70
- else {
71
- model.setMetadata('datalayer', Object.assign(datalayerMeta, { kernel }));
72
- }
73
- }, [model]);
74
- const closeVariableDialog = useCallback(() => {
75
- setIsVariableDialogOpen(false);
76
- }, []);
77
- const openVariableDialog = useCallback(() => {
78
- setIsVariableDialogOpen(true);
79
- }, []);
80
- const closeSnippetDialog = useCallback(() => {
81
- setIsSnippetDialogOpen(false);
82
- }, []);
83
- const openSnippetDialog = useCallback(() => {
84
- setIsSnippetDialogOpen(true);
85
- }, []);
86
- const setCell = useCallback(() => {
87
- setIsKernelDialogOpen(true);
88
- }, []);
89
- const onStartRemote = useCallback((desc) => {
90
- if (desc) {
91
- desc.params = {
92
- ...desc.params,
93
- notebook: false,
94
- };
95
- setSelectedRuntimeDesc(desc);
96
- }
97
- setIsKernelDialogOpen(false);
98
- }, [setSelectedRuntimeDesc]);
99
- const datalayerMeta = model.getMetadata('datalayer') ?? {};
100
- return (_jsxs(_Fragment, { children: [_jsx(RuntimePickerBase, { display: "menu", filterRuntime: filterKernel, preference: preference, multiServiceManager: multiServiceManager, runtimeDesc: datalayerMeta.kernel ? datalayerMeta.kernel : undefined, setRuntimeDesc: setSelectedRuntimeDesc, variant: 'cell', preActions: _jsxs(ActionList.Item, { disabled: !multiServiceManager.remote, onSelect: setCell, selected: hasCellRuntime, title: !multiServiceManager.remote
101
- ? 'You are not connected with Datalayer.'
102
- : 'Assign a new temporary Runtime on each Cell execution.', children: [_jsx(ActionList.LeadingVisual, { children: _jsx(CloudUploadIcon, {}) }), trans.__('Assign a Cell Runtime')] }), postActions: token || !logIn ? (_jsxs(_Fragment, { children: [RuntimeSnippetsFacade.supports(preference?.language ?? '') && (_jsx(ActionList.Item, { onSelect: openVariableDialog, disabled: !isForeign, title: trans.__('Define variables to transfer between the document kernel and the cell kernel.'), children: trans.__('Define Cell Variables Transfer') })), !configuration.whiteLabel && (_jsx(ActionList.Item, { onSelect: openSnippetDialog, disabled: snippets.length === 0, title: trans.__('Inject a code snippet at the end of the cell.'), children: trans.__('Inject Code Snippet') }))] })) : (_jsx(ActionList.Item, { onSelect: props.logIn, title: 'Connect to the Runtime provider.', children: _jsx(ExternalTokenSilentLogin, { message: "Connect to the Runtime provider" }) })), translator: translator }), isVariableDialogOpen && (_jsx(RuntimeCellVariablesDialog, { model: model, onClose: closeVariableDialog, preference: preference, sessionContext: sessionContext, translator: translator })), isSnippetDialogOpen && (_jsx(SnippetDialog, { language: language, model: model, snippets: snippets, onClose: closeSnippetDialog, markdownParser: markdownParser, sanitizer: sanitizer })), isKernelDialogOpen && (_jsx(RuntimeLauncherDialog, { manager: multiServiceManager.remote, onSubmit: onStartRemote, startRuntime: 'defer', submitLabel: "Assign", markdownParser: markdownParser, sanitizer: sanitizer }))] }));
103
- }
104
- export default RuntimePickerCell;
@@ -1,42 +0,0 @@
1
- import { ITranslator } from '@jupyterlab/translation';
2
- import { CommandRegistry } from '@lumino/commands';
3
- import type { IMultiServiceManager, IDatalayerSessionContext } from '../../stateful/runtimes';
4
- import { RuntimeTransfer } from './RuntimeTransfer';
5
- /**
6
- * {@link RuntimePickerNotebook} properties
7
- */
8
- export interface IRuntimePickerNotebookProps {
9
- /**
10
- * Callback to allow the user to login
11
- */
12
- logIn?: () => void;
13
- /**
14
- * Document session context
15
- */
16
- sessionContext: IDatalayerSessionContext;
17
- /**
18
- * Multi service manager
19
- */
20
- multiServiceManager: IMultiServiceManager;
21
- /**
22
- * Set the selected kernel
23
- */
24
- setValue: (v: RuntimeTransfer | Error) => void;
25
- /**
26
- * Close the dialog
27
- */
28
- close: () => void;
29
- /**
30
- * Command registry
31
- */
32
- commands: CommandRegistry;
33
- /**
34
- * Application translator
35
- */
36
- translator?: ITranslator;
37
- }
38
- /**
39
- * Runtime Picker components for a Notebook.
40
- */
41
- export declare function RuntimePickerNotebook(props: IRuntimePickerNotebookProps): JSX.Element;
42
- export default RuntimePickerNotebook;
@@ -1,232 +0,0 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- /*
3
- * Copyright (c) 2023-2025 Datalayer, Inc.
4
- * Distributed under the terms of the Modified BSD License.
5
- */
6
- import { useCallback, useEffect, useState } from 'react';
7
- import { ActionList, FormControl, ToggleSwitch, Tooltip, IconButton, } from '@primer/react';
8
- import { Box } from '@datalayer/primer-addons';
9
- import { AlertIcon } from '@primer/octicons-react';
10
- import { JSONExt } from '@lumino/coreutils';
11
- import { KernelExecutor } from '@datalayer/jupyter-react';
12
- import { RuntimeSnippetsFacade } from '../../stateful/jupyter/index.js';
13
- import { ExternalTokenSilentLogin } from '../../components/iam/index.js';
14
- import { useCoreStore, useIAMStore } from '../../state/index.js';
15
- import { RuntimeReservationControl, MAXIMAL_RUNTIME_TIME_RESERVATION_MINUTES, } from './RuntimeReservationControl.js';
16
- import { RuntimeVariables } from './RuntimeVariables.js';
17
- import { RuntimePickerBase } from './RuntimePickerBase.js';
18
- /**
19
- * Runtime Picker components for a Notebook.
20
- */
21
- export function RuntimePickerNotebook(props) {
22
- const { multiServiceManager, sessionContext, setValue, translator } = props;
23
- const { configuration } = useCoreStore();
24
- const { credits, refreshCredits, token, user } = useIAMStore();
25
- const [selectedRuntimeDesc, setSelectedRuntimeDesc] = useState();
26
- const [timeLimit, setTimeLimit] = useState(10);
27
- const [userStorage, setUserStorage] = useState(false);
28
- const [canTransferFrom, setTransferFrom] = useState(false);
29
- const [canTransferTo, setTransferTo] = useState(false);
30
- const [transferVariables, setTransferVariables] = useState(false);
31
- const [hasLoadedVariables, setHasLoadedVariables] = useState(false);
32
- const [kernelVariables, setRuntimeVariables] = useState();
33
- const [toTransfer, setToTransfer] = useState([]);
34
- useEffect(() => {
35
- refreshCredits();
36
- }, []);
37
- useEffect(() => {
38
- const specs = sessionContext.specsManager.specs?.kernelspecs;
39
- if (sessionContext.session?.kernel?.name && specs) {
40
- const spec = Object.values(specs).find(spec => spec?.name === sessionContext.session.kernel.name);
41
- if (spec) {
42
- setSelectedRuntimeDesc({
43
- name: spec.name,
44
- kernelId: sessionContext.session.kernel.id,
45
- location: sessionContext.location,
46
- language: spec.language,
47
- displayName: sessionContext.kernelDisplayName,
48
- });
49
- setTransferFrom(RuntimeSnippetsFacade.supports(spec.language));
50
- }
51
- }
52
- }, [sessionContext]);
53
- const listRuntimeVariables = useCallback(async () => {
54
- if (hasLoadedVariables) {
55
- return Promise.resolve();
56
- }
57
- setHasLoadedVariables(true);
58
- const connection = sessionContext.session.kernel;
59
- const spec = sessionContext.specsManager.specs.kernelspecs[connection.model.name];
60
- const snippets = new RuntimeSnippetsFacade(spec.language);
61
- const outputs = await new KernelExecutor({ connection }).execute(snippets.listVariables());
62
- const content = outputs.get(0).data['text/plain'];
63
- if (content) {
64
- setRuntimeVariables(JSON.parse(
65
- // We need to remove the quotes prior to parsing.
66
- content.slice(1, content.length - 1)));
67
- if (toTransfer.length) {
68
- const candidates = Object.keys(kernelVariables ?? {});
69
- setToTransfer(toTransfer.filter(n => candidates.includes(n)));
70
- }
71
- else {
72
- // By default select all variables.
73
- setToTransfer(Object.keys(kernelVariables ?? {}));
74
- }
75
- }
76
- else {
77
- setRuntimeVariables({});
78
- }
79
- }, [hasLoadedVariables, kernelVariables, toTransfer]);
80
- const setSelectedVariables = useCallback((l) => {
81
- if (!JSONExt.deepEqual(toTransfer, l)) {
82
- setToTransfer(l);
83
- }
84
- }, [toTransfer]);
85
- const setTransferVariable = useCallback((value) => {
86
- if (transferVariables !== value) {
87
- if (value) {
88
- listRuntimeVariables().catch(error => {
89
- console.error('Failed to list the runtime variable', error);
90
- setHasLoadedVariables(false);
91
- });
92
- }
93
- setTransferVariables(value);
94
- }
95
- }, [transferVariables]);
96
- const setRuntimeDesc = useCallback((runtimeDesc) => {
97
- if (!runtimeDesc) {
98
- if (selectedRuntimeDesc) {
99
- setSelectedRuntimeDesc(undefined);
100
- setTransferTo(false);
101
- }
102
- return;
103
- }
104
- if (selectedRuntimeDesc?.displayName !== runtimeDesc.displayName ||
105
- selectedRuntimeDesc?.kernelId !== runtimeDesc.kernelId) {
106
- setSelectedRuntimeDesc({ ...runtimeDesc });
107
- setTransferTo(RuntimeSnippetsFacade.supports(runtimeDesc.language));
108
- }
109
- }, [selectedRuntimeDesc]);
110
- const handleUserStorageChange = useCallback((e) => {
111
- e.preventDefault();
112
- setUserStorage(!userStorage);
113
- }, [userStorage]);
114
- useEffect(() => {
115
- const resolvedBurningRate = selectedRuntimeDesc?.burningRate ??
116
- multiServiceManager.remote?.environments
117
- .get()
118
- .find(env => env.name === selectedRuntimeDesc?.name)?.burning_rate;
119
- const includedRuns = user?.subscription?.usage?.included_runs ??
120
- user?.subscription?.included_runs;
121
- const currentRuns = user?.subscription?.usage?.current_runs ??
122
- user?.subscription?.current_runs ??
123
- user?.subscription?.used_runs;
124
- const hasKnownRunAllowance = typeof includedRuns === 'number';
125
- const hasRemainingRuns = hasKnownRunAllowance &&
126
- typeof currentRuns === 'number' &&
127
- includedRuns > 0 &&
128
- currentRuns < includedRuns;
129
- const hasKnownCredits = typeof credits?.available === 'number';
130
- const maxMinutes = selectedRuntimeDesc?.location === 'remote' && resolvedBurningRate
131
- ? Math.floor((credits?.available ?? 0) / resolvedBurningRate / 60.0)
132
- : undefined;
133
- const effectiveTimeLimit = selectedRuntimeDesc?.location === 'remote'
134
- ? Math.max(1, Math.min(timeLimit, maxMinutes && maxMinutes > 0 ? maxMinutes : 10))
135
- : timeLimit;
136
- const creditsLimit = selectedRuntimeDesc?.location === 'remote' && resolvedBurningRate
137
- ? Math.min(effectiveTimeLimit, MAXIMAL_RUNTIME_TIME_RESERVATION_MINUTES) *
138
- resolvedBurningRate *
139
- 60
140
- : undefined;
141
- const requiresRuntimeStart = !!selectedRuntimeDesc && !selectedRuntimeDesc.kernelId;
142
- if (requiresRuntimeStart && selectedRuntimeDesc.location === 'remote') {
143
- if (!resolvedBurningRate || !Number.isFinite(resolvedBurningRate)) {
144
- setValue({ runtime: null, selectedVariables: toTransfer });
145
- return;
146
- }
147
- if (hasKnownCredits &&
148
- hasKnownRunAllowance &&
149
- !hasRemainingRuns &&
150
- (!creditsLimit || creditsLimit <= 0)) {
151
- setValue({ runtime: null, selectedVariables: toTransfer });
152
- return;
153
- }
154
- }
155
- setValue({
156
- runtime: selectedRuntimeDesc
157
- ? {
158
- environmentName: ['browser', 'remote'].includes(selectedRuntimeDesc.location)
159
- ? `${selectedRuntimeDesc.location}-${selectedRuntimeDesc.name}`
160
- : selectedRuntimeDesc.name,
161
- id: selectedRuntimeDesc.kernelId,
162
- creditsLimit,
163
- capabilities: userStorage ? ['user_storage'] : undefined,
164
- }
165
- : null,
166
- selectedVariables: toTransfer,
167
- });
168
- }, [
169
- selectedRuntimeDesc,
170
- userStorage,
171
- toTransfer,
172
- timeLimit,
173
- multiServiceManager.remote,
174
- credits?.available,
175
- user,
176
- ]);
177
- const { kernelPreference: { canStart }, } = sessionContext;
178
- const resolvedBurningRate = selectedRuntimeDesc?.burningRate ??
179
- multiServiceManager.remote?.environments
180
- .get()
181
- .find(env => env.name === selectedRuntimeDesc?.name)?.burning_rate;
182
- const maxFromCredits = resolvedBurningRate
183
- ? Math.floor((credits?.available ?? 0) / resolvedBurningRate / 60.0)
184
- : -1;
185
- const includedRuns = user?.subscription?.usage?.included_runs ??
186
- user?.subscription?.included_runs;
187
- const currentRuns = user?.subscription?.usage?.current_runs ??
188
- user?.subscription?.current_runs ??
189
- user?.subscription?.used_runs;
190
- const hasKnownRunAllowance = typeof includedRuns === 'number';
191
- const hasRemainingRuns = hasKnownRunAllowance &&
192
- typeof currentRuns === 'number' &&
193
- includedRuns > 0 &&
194
- currentRuns < includedRuns;
195
- const hasKnownCredits = typeof credits?.available === 'number';
196
- const effectiveMaxMinutes = selectedRuntimeDesc?.location === 'remote'
197
- ? hasKnownCredits && hasKnownRunAllowance && !hasRemainingRuns
198
- ? Math.max(1, maxFromCredits)
199
- : Math.max(10, maxFromCredits > 0 ? maxFromCredits : 0)
200
- : Math.max(1, maxFromCredits);
201
- const outOfCredits = hasKnownCredits &&
202
- hasKnownRunAllowance &&
203
- !hasRemainingRuns &&
204
- maxFromCredits < Number.EPSILON;
205
- return (_jsxs(Box, { as: "form", className: "dla-Runtimes-picker", children: [_jsx(Box, { sx: { padding: 'var(--stack-padding-condensed) 0' }, children: _jsx(RuntimePickerBase, { display: "radio", disabled: canStart === false, preference: {
206
- id: sessionContext.session?.id,
207
- kernelDisplayName: sessionContext.kernelPreference.shouldStart
208
- ? sessionContext.kernelDisplayName
209
- : undefined,
210
- }, sessionContext: sessionContext, multiServiceManager: multiServiceManager, translator: translator, runtimeDesc: selectedRuntimeDesc, setRuntimeDesc: setRuntimeDesc, postActions: token || !props.logIn ? (
211
- /*
212
- <Button
213
- variant="default"
214
- onClick={e => {
215
- e.preventDefault();
216
- commands.execute(CommandIDs.launchRemoteRuntime);
217
- close();
218
- }}
219
- >
220
- Launch a New Runtime
221
- </Button>
222
- */
223
- _jsx(_Fragment, {})) : (_jsx(ActionList.Item, { onSelect: props.logIn, title: 'Connect to Runtime provider.', children: _jsx(ExternalTokenSilentLogin, { message: "Connect to the Runtime provider" }) })) }) }), !selectedRuntimeDesc?.kernelId &&
224
- selectedRuntimeDesc?.location === 'remote' && (_jsxs(_Fragment, { children: [_jsx(RuntimeReservationControl, { disabled: outOfCredits || selectedRuntimeDesc?.location !== 'remote', label: 'Time reservation', max: effectiveMaxMinutes, time: timeLimit, onTimeChange: setTimeLimit, error: outOfCredits && maxFromCredits >= 0
225
- ? 'You must add credits to your account.'
226
- : timeLimit === 0
227
- ? 'You must set a time limit.'
228
- : undefined, burningRate: selectedRuntimeDesc.burningRate }), !configuration.whiteLabel && (_jsxs(FormControl, { disabled: !!selectedRuntimeDesc?.kernelId ||
229
- selectedRuntimeDesc?.location !== 'remote', layout: "horizontal", children: [_jsxs(FormControl.Label, { id: "user-storage-picker-label", children: ["User storage", _jsx(Tooltip, { text: "The runtime will be slower to start.", direction: "e", style: { marginLeft: 3 }, children: _jsx(IconButton, { icon: AlertIcon, "aria-label": "", variant: "invisible" }) })] }), _jsx(ToggleSwitch, { disabled: !!selectedRuntimeDesc?.kernelId ||
230
- selectedRuntimeDesc?.location !== 'remote', checked: userStorage, size: "small", onClick: handleUserStorageChange, "aria-labelledby": "user-storage-picker-label" })] }))] })), canTransferFrom && canTransferTo && (_jsx(RuntimeVariables, { selectedVariables: toTransfer, setSelectVariable: setSelectedVariables, transferVariables: transferVariables, setTransferVariable: setTransferVariable, kernelVariables: kernelVariables, translator: translator }))] }));
231
- }
232
- export default RuntimePickerNotebook;
@@ -1,47 +0,0 @@
1
- /**
2
- * Maximal time reservable for a runtime in minutes.
3
- *
4
- * TODO this should be configurable
5
- */
6
- export declare const MAXIMAL_RUNTIME_TIME_RESERVATION_MINUTES: number;
7
- /**
8
- * Time control properties
9
- */
10
- export interface IKernelReservationControlProps {
11
- /**
12
- * Callback on add credits button
13
- */
14
- addCredits?: () => void;
15
- /**
16
- * Disabled state
17
- */
18
- disabled?: boolean;
19
- /**
20
- * Control error message
21
- */
22
- error?: string;
23
- /**
24
- * Control label
25
- */
26
- label: string;
27
- /**
28
- * Maximal time
29
- */
30
- max: number;
31
- /**
32
- * Callback when time value changes
33
- */
34
- onTimeChange: (value: number) => void;
35
- /**
36
- * Time control value
37
- */
38
- time: number;
39
- /**
40
- * Burning rate
41
- */
42
- burningRate?: number;
43
- }
44
- /**
45
- * Runtime reservation control
46
- */
47
- export declare function RuntimeReservationControl(props: IKernelReservationControlProps): JSX.Element;