@marimo-team/islands 0.25.3-dev267 → 0.25.3-dev268

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 (138) hide show
  1. package/dist/{ConnectedDataExplorerComponent-C4yCN38h.js → ConnectedDataExplorerComponent-eLHPh6uu.js} +8 -8
  2. package/dist/{ErrorBoundary-CewXPyL5.js → ErrorBoundary-CQYAoD7X.js} +4 -4
  3. package/dist/{abnfDiagram-VCTEODGH-o6Ay6Q63.js → abnfDiagram-VCTEODGH-hqd0IBtX.js} +2 -2
  4. package/dist/{architectureDiagram-5GKGNRK7-BhiwwlVg.js → architectureDiagram-5GKGNRK7-BzLAFcc0.js} +1 -1
  5. package/dist/{strings-BCKpLFNU.js → assertNever-DIU3JJbt.js} +14 -14
  6. package/dist/{chat-ui-CbgR5ivy.js → chat-ui-BAnLgpTe.js} +17 -17
  7. package/dist/{chunk-IMKFNOWR-WMSMf4Nj.js → chunk-IMKFNOWR-DOeVvuyE.js} +1 -1
  8. package/dist/{chunk-SHT3W25Y-BRfADrzD.js → chunk-SHT3W25Y-DZoFI8wR.js} +1 -1
  9. package/dist/{chunk-SVP7TREG-CuK5QFre.js → chunk-SVP7TREG-CWu86PSW.js} +1 -1
  10. package/dist/{chunk-TICWLB2K-Bcun_jhJ.js → chunk-TICWLB2K-BrM0GoP3.js} +1 -1
  11. package/dist/{classDiagram-ZZMXUADV-CgWDbUDT.js → classDiagram-ZZMXUADV-DYi4V2bB.js} +2 -2
  12. package/dist/{classDiagram-v2-VYDZK3BY-DYmc9SFU.js → classDiagram-v2-VYDZK3BY-tN7FIk-m.js} +2 -2
  13. package/dist/{code-visibility-BKBl9Rh6.js → code-visibility-DcZ_RwaH.js} +44 -47
  14. package/dist/{common-N3Jd_6m9.js → common-BGeQilvh.js} +4866 -4857
  15. package/dist/{config-CmeG_Pb6.js → config-BsPruWMR.js} +2 -2
  16. package/dist/{createReducer-C_syF8Td.js → createReducer-DdtT_7ji.js} +1 -1
  17. package/dist/{cynefinDiagram-5FMLGOSQ-PPKWipjT.js → cynefinDiagram-5FMLGOSQ-D5nCnDc-.js} +1 -1
  18. package/dist/{dagre-GXQ25YYZ-niRBZh--.js → dagre-GXQ25YYZ-BHkd7f_i.js} +1 -1
  19. package/dist/{data-grid-overlay-editor-Cp59CrqZ.js → data-grid-overlay-editor-Dc4lW4A3.js} +1 -1
  20. package/dist/{diagram-S7CK7UJ4-DPiP9rot.js → diagram-S7CK7UJ4-D1ALppT2.js} +1 -1
  21. package/dist/{diagram-UQ7AKVKN-B0WZuaxV.js → diagram-UQ7AKVKN-DLv0b83L.js} +1 -1
  22. package/dist/{diagram-VX7I27RA-Rn42WBuN.js → diagram-VX7I27RA-7XJ7J6qg.js} +1 -1
  23. package/dist/{diagram-Z3DM3KII-BB93--ry.js → diagram-Z3DM3KII-7M7zbHp_.js} +1 -1
  24. package/dist/{dialog-BtprQCUw.js → dialog-DzCj1qQv.js} +1 -1
  25. package/dist/{dropdown-menu-BpImEfn3.js → dropdown-menu-CdXE15an.js} +3 -3
  26. package/dist/{ebnfDiagram-PWID7BFC-V4t5h6mZ.js → ebnfDiagram-PWID7BFC-DHH1qlmV.js} +2 -2
  27. package/dist/{erDiagram-RLTQ6QDP-C1MsAKXd.js → erDiagram-RLTQ6QDP-fI_0dGef.js} +1 -1
  28. package/dist/{error-entries-CJGdD2ky.js → error-entries-CxN-Nq3V.js} +519 -458
  29. package/dist/{feedback-button-Qc1f9iPq.js → feedback-button-BqaeQcvX.js} +22 -22
  30. package/dist/{flowDiagram-HODETNUW-DHjeJP96.js → flowDiagram-HODETNUW-Brg9MA6i.js} +2 -2
  31. package/dist/{formats-gGospKWJ.js → formats-DbSvAPY-.js} +1 -1
  32. package/dist/{glide-data-editor-hCq3K0sd.js → glide-data-editor-CiijPXA7.js} +11 -11
  33. package/dist/{glide-utils-DC3sk6EX.js → glide-utils-BSw3SSHF.js} +1 -1
  34. package/dist/{globals-B2_uMYDY.js → globals-CpmSWKI_.js} +2 -2
  35. package/dist/{html-to-image-S7spRQCi.js → html-to-image-8sywF4my.js} +5120 -5117
  36. package/dist/{infoDiagram-27XIBGKW-Dovv6iKx.js → infoDiagram-27XIBGKW-E9e403YT.js} +1 -1
  37. package/dist/{ishikawaDiagram-5VMMS53U-D2nyygsc.js → ishikawaDiagram-5VMMS53U-C-RlYDRo.js} +1 -1
  38. package/dist/{kanban-definition-UXKFOSKX-KyVx0uTY.js → kanban-definition-UXKFOSKX-CLFl_uqK.js} +1 -1
  39. package/dist/main.js +5972 -6003
  40. package/dist/{mermaid-B-jKSwGt.js → mermaid-rd09e1JL.js} +34 -34
  41. package/dist/{mindmap-definition-YA3MSWOX-Bz9tKQFl.js → mindmap-definition-YA3MSWOX-BQ8TWtyB.js} +1 -1
  42. package/dist/{number-overlay-editor-CfNYvbdz.js → number-overlay-editor-Ft4NiAEN.js} +1 -1
  43. package/dist/{pegDiagram-XKGWAZYB-C_qpq6Tv.js → pegDiagram-XKGWAZYB-CN8UHFPi.js} +2 -2
  44. package/dist/{pieDiagram-E7YTZNPT-Bp9ucgI4.js → pieDiagram-E7YTZNPT-DGuJ0EBd.js} +1 -1
  45. package/dist/{process-output-f34bkXTm.js → process-output-Dku5POvm.js} +3 -3
  46. package/dist/{railroadDiagram-O6MQD6OU-tq-VEH6j.js → railroadDiagram-O6MQD6OU-BPDA8wy8.js} +2 -2
  47. package/dist/{requirementDiagram-BXWQKSXE-DW-vHadb.js → requirementDiagram-BXWQKSXE-ChzLGbGW.js} +1 -1
  48. package/dist/{reveal-component-CUxv-kkP.js → reveal-component-D0cfwbbl.js} +1094 -1094
  49. package/dist/{select-C33FVPPN.js → select-OxgozOC8.js} +1 -1
  50. package/dist/{sequenceDiagram-WJ2MYXX4-Dv9U9qRP.js → sequenceDiagram-WJ2MYXX4-DFX-bE6O.js} +1 -1
  51. package/dist/{spec-DH1lmF7Q.js → spec-oJn0RhpQ.js} +2 -2
  52. package/dist/{stateDiagram-D77RDMKH-DTmPQ0EB.js → stateDiagram-D77RDMKH-BR7cI3wK.js} +2 -2
  53. package/dist/{stateDiagram-v2-MP3YSRHH-CkCif0Iw.js → stateDiagram-v2-MP3YSRHH-oGqB5UDI.js} +2 -2
  54. package/dist/{static-state-BldGd99T.js → static-state-CuV6Pc3a.js} +1 -1
  55. package/dist/{swimlanes-42K2YHIH-21kCq6l8.js → swimlanes-42K2YHIH-DwSZl1yC.js} +1 -1
  56. package/dist/{swimlanesDiagram-VR7AAH4N-BpRJP6KU.js → swimlanesDiagram-VR7AAH4N-BHlcd-Ri.js} +2 -2
  57. package/dist/{timeline-definition-24CTP7MA-Ckgh4lS4.js → timeline-definition-24CTP7MA-DMmP-G2O.js} +1 -1
  58. package/dist/{toast-DpczUryP.js → toast-DbBHmxmB.js} +1 -1
  59. package/dist/{useAsyncData-DsZMvNXn.js → useAsyncData-BYIAoMqn.js} +1 -1
  60. package/dist/{useDateFormatter-Dk_xFci4.js → useDateFormatter-ButWkdcK.js} +1 -1
  61. package/dist/{useDeepCompareMemoize-KMBBux8C.js → useDeepCompareMemoize-Bz0c5GN6.js} +1 -1
  62. package/dist/{useTheme-BZ2GGLgm.js → useTheme-DPLobSFs.js} +7 -7
  63. package/dist/{utils-DXkj82sK.js → utils-EBklsC5R.js} +31 -31
  64. package/dist/{vega-component-CF9kI6C4.js → vega-component-rxIxAAh9.js} +6 -6
  65. package/dist/{vennDiagram-4TSXK5OY-CDei2Bt3.js → vennDiagram-4TSXK5OY-Db8GtH1G.js} +1 -1
  66. package/dist/{wardleyDiagram-VM6X3IG4-CXavT601.js → wardleyDiagram-VM6X3IG4-DmIiC3FU.js} +1 -1
  67. package/dist/{xychartDiagram-S5SC5T6Z-CvJhcZri.js → xychartDiagram-S5SC5T6Z-DS9OPrNq.js} +1 -1
  68. package/package.json +1 -1
  69. package/src/__mocks__/executions.ts +195 -0
  70. package/src/__mocks__/notebook.ts +0 -1
  71. package/src/__tests__/CellStatus.test.tsx +19 -20
  72. package/src/components/dependency-graph/minimap-content.tsx +3 -2
  73. package/src/components/editor/__tests__/data-attributes.test.tsx +0 -7
  74. package/src/components/editor/__tests__/output-persistence.test.tsx +2 -2
  75. package/src/components/editor/actions/__tests__/useCellActionButton.test.tsx +1 -0
  76. package/src/components/editor/actions/useCellActionButton.tsx +7 -3
  77. package/src/components/editor/alerts/stdin-blocking-alert.tsx +3 -1
  78. package/src/components/editor/cell/CellStatus.tsx +23 -19
  79. package/src/components/editor/cell/RunButton.tsx +16 -6
  80. package/src/components/editor/cell/__tests__/useRunCells.test.ts +45 -0
  81. package/src/components/editor/cell/cell-context-menu.tsx +4 -1
  82. package/src/components/editor/cell/code/cell-editor.tsx +7 -5
  83. package/src/components/editor/cell/collapse.tsx +4 -0
  84. package/src/components/editor/cell/useRunCells.ts +18 -3
  85. package/src/components/editor/chrome/wrapper/sidebar.tsx +2 -4
  86. package/src/components/editor/header/status.tsx +4 -2
  87. package/src/components/editor/navigation/navigation.ts +3 -2
  88. package/src/components/editor/notebook-cell.tsx +82 -83
  89. package/src/components/editor/renderers/grid-layout/__tests__/grid-layout.test.tsx +75 -0
  90. package/src/components/editor/renderers/grid-layout/grid-layout.tsx +22 -16
  91. package/src/components/editor/renderers/slides-layout/__tests__/plugin.test.ts +0 -1
  92. package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +12 -33
  93. package/src/components/editor/stdin-blocking-alert.tsx +3 -1
  94. package/src/components/scratchpad/scratchpad.tsx +4 -1
  95. package/src/components/slides/minimap.tsx +4 -2
  96. package/src/components/slides/reveal-component.tsx +14 -10
  97. package/src/components/slides/slide-cell-view.tsx +28 -24
  98. package/src/components/slides/slide.tsx +3 -4
  99. package/src/core/cells/__tests__/__snapshots__/cells.test.ts.snap +0 -389
  100. package/src/core/cells/__tests__/cell.test.ts +49 -154
  101. package/src/core/cells/__tests__/cells.test.ts +18 -127
  102. package/src/core/cells/__tests__/pending-delete-service.test.tsx +11 -20
  103. package/src/core/cells/__tests__/utils.test.ts +75 -247
  104. package/src/core/cells/actions.ts +5 -2
  105. package/src/core/cells/cell.ts +31 -133
  106. package/src/core/cells/cells.ts +14 -29
  107. package/src/core/cells/document.ts +3 -3
  108. package/src/core/cells/focus.ts +27 -6
  109. package/src/core/cells/layout.ts +1 -1
  110. package/src/core/cells/pending-delete-service.ts +5 -7
  111. package/src/core/cells/types.ts +13 -36
  112. package/src/core/cells/utils.ts +37 -68
  113. package/src/core/edit-app.tsx +2 -1
  114. package/src/core/executions/__tests__/atoms.test.ts +99 -0
  115. package/src/core/executions/__tests__/select.test.ts +268 -0
  116. package/src/core/executions/atoms.ts +206 -0
  117. package/src/core/executions/hooks.ts +31 -0
  118. package/src/core/executions/index.ts +31 -0
  119. package/src/core/executions/select.ts +175 -0
  120. package/src/core/export/__tests__/hooks.test.ts +0 -5
  121. package/src/core/islands/bootstrap.ts +4 -1
  122. package/src/core/islands/components/output-wrapper.tsx +5 -5
  123. package/src/core/kernel/handlers.ts +2 -11
  124. package/src/core/kernel/state.ts +0 -15
  125. package/src/core/lifecycle/render-policy.ts +12 -26
  126. package/src/core/network/__tests__/requests-lazy.test.ts +5 -5
  127. package/src/core/network/requests-lazy.ts +3 -3
  128. package/src/core/notebook/operations.ts +1 -1
  129. package/src/core/run-app.tsx +2 -1
  130. package/src/core/runtime/__tests__/adapter.test.ts +3 -3
  131. package/src/core/runtime/adapter.ts +4 -4
  132. package/src/core/session/useNotebookSession.tsx +3 -3
  133. package/src/core/wasm/bridge.ts +1 -1
  134. package/src/plugins/core/registerReactComponent.tsx +4 -13
  135. package/src/stories/cell-status.stories.tsx +17 -10
  136. package/src/stories/cell.stories.tsx +0 -31
  137. package/src/stories/layout/vertical/one-column.stories.tsx +0 -9
  138. package/src/utils/time.ts +10 -0
@@ -5,6 +5,7 @@ import {
5
5
  type CellStatusComponentProps,
6
6
  } from "@/components/editor/cell/CellStatus";
7
7
  import { TooltipProvider } from "@/components/ui/tooltip";
8
+ import type { Milliseconds } from "@/utils/time";
8
9
 
9
10
  const meta: Meta<typeof CellStatusComponent> = {
10
11
  title: "CellStatusComponent",
@@ -39,7 +40,7 @@ Edited.args = {
39
40
  edited: true,
40
41
  interrupted: false,
41
42
  disabled: false,
42
- elapsedTime: 100,
43
+ elapsedTime: 100 as Milliseconds,
43
44
  };
44
45
 
45
46
  export const Interrupted = Template.bind({});
@@ -49,7 +50,7 @@ Interrupted.args = {
49
50
  edited: false,
50
51
  interrupted: true,
51
52
  disabled: false,
52
- elapsedTime: 50,
53
+ elapsedTime: 50 as Milliseconds,
53
54
  };
54
55
 
55
56
  export const Running = Template.bind({});
@@ -59,7 +60,7 @@ Running.args = {
59
60
  edited: false,
60
61
  interrupted: true,
61
62
  disabled: false,
62
- elapsedTime: 50,
63
+ elapsedTime: 50 as Milliseconds,
63
64
  };
64
65
 
65
66
  export const Queued = Template.bind({});
@@ -69,7 +70,7 @@ Queued.args = {
69
70
  edited: false,
70
71
  interrupted: true,
71
72
  disabled: false,
72
- elapsedTime: 50,
73
+ elapsedTime: 50 as Milliseconds,
73
74
  };
74
75
 
75
76
  export const Disabled = Template.bind({});
@@ -85,7 +86,8 @@ Disabled.args = {
85
86
  export const DisabledTransitively = Template.bind({});
86
87
  DisabledTransitively.args = {
87
88
  editing: true,
88
- status: "disabled-transitively",
89
+ status: "idle",
90
+ blocked: true,
89
91
  edited: false,
90
92
  interrupted: false,
91
93
  disabled: false,
@@ -95,7 +97,8 @@ DisabledTransitively.args = {
95
97
  export const DisabledTransitivelyAndEdited = Template.bind({});
96
98
  DisabledTransitivelyAndEdited.args = {
97
99
  editing: true,
98
- status: "disabled-transitively",
100
+ status: "idle",
101
+ blocked: true,
99
102
  edited: true,
100
103
  interrupted: false,
101
104
  disabled: false,
@@ -105,7 +108,8 @@ DisabledTransitivelyAndEdited.args = {
105
108
  export const Stale = Template.bind({});
106
109
  Stale.args = {
107
110
  editing: true,
108
- status: "disabled-transitively",
111
+ status: "idle",
112
+ blocked: true,
109
113
  staleInputs: true,
110
114
  edited: false,
111
115
  interrupted: false,
@@ -116,7 +120,8 @@ Stale.args = {
116
120
  export const StaleAndDisabled = Template.bind({});
117
121
  StaleAndDisabled.args = {
118
122
  editing: true,
119
- status: "disabled-transitively",
123
+ status: "idle",
124
+ blocked: true,
120
125
  staleInputs: true,
121
126
  edited: false,
122
127
  interrupted: false,
@@ -127,7 +132,8 @@ StaleAndDisabled.args = {
127
132
  export const EditedStaleAndDisabled = Template.bind({});
128
133
  EditedStaleAndDisabled.args = {
129
134
  editing: true,
130
- status: "disabled-transitively",
135
+ status: "idle",
136
+ blocked: true,
131
137
  staleInputs: true,
132
138
  interrupted: false,
133
139
  disabled: true,
@@ -137,7 +143,8 @@ EditedStaleAndDisabled.args = {
137
143
  export const EditedAndStale = Template.bind({});
138
144
  EditedAndStale.args = {
139
145
  editing: true,
140
- status: "disabled-transitively",
146
+ status: "idle",
147
+ blocked: true,
141
148
  edited: true,
142
149
  interrupted: false,
143
150
  disabled: false,
@@ -15,19 +15,14 @@ import { requestClientAtom } from "@/core/network/requests";
15
15
  import { resolveRequestClient } from "@/core/network/resolve";
16
16
  import type { CellConfig } from "@/core/network/types";
17
17
  import { ConnectionState } from "@/core/session/types";
18
- import type { Milliseconds, Seconds } from "@/utils/time";
19
18
  import { Cell as EditorCell } from "../components/editor/notebook-cell";
20
19
  import { TooltipProvider } from "../components/ui/tooltip";
21
20
 
22
21
  type Story = StoryObj<typeof Cell>;
23
22
 
24
23
  interface CellOverrides {
25
- runElapsedTimeMs?: Milliseconds;
26
24
  output?: CellRuntimeState["output"];
27
25
  edited?: boolean;
28
- interrupted?: boolean;
29
- errored?: boolean;
30
- status?: CellRuntimeState["status"];
31
26
  staleInputs?: boolean;
32
27
  config?: CellConfig;
33
28
  }
@@ -51,22 +46,14 @@ const Cell: React.FC<{
51
46
  column: null,
52
47
  },
53
48
  lastCodeRun: null,
54
- lastExecutionTime: null,
55
49
  },
56
50
  },
57
51
  cellIds: [cid],
58
52
  cellRuntime: {
59
53
  [cid]: createCellRuntimeState({
60
54
  output: overrides.output ?? null,
61
- runElapsedTimeMs: overrides.runElapsedTimeMs ?? (10 as Milliseconds),
62
- status: overrides.status ?? "idle",
63
55
  consoleOutputs: [],
64
- interrupted: overrides.interrupted ?? false,
65
- errored: overrides.errored ?? false,
66
- stopped: false,
67
56
  staleInputs: overrides.staleInputs ?? false,
68
- runStartTimestamp: 0 as Seconds,
69
- lastRunStartTimestamp: 0 as Seconds,
70
57
  debuggerActive: false,
71
58
  outline: null,
72
59
  }),
@@ -121,7 +108,6 @@ export const WithOutput: Story = {
121
108
  <div className="p-20 max-w-4xl">
122
109
  <Cell
123
110
  overrides={{
124
- runElapsedTimeMs: 20 as Milliseconds,
125
111
  output: {
126
112
  channel: "output",
127
113
  data: "<span class='markdown'><h1>Layout</h1>\n<p><code>marimo</code> provides functions to help you lay out your output, such as\nin rows and columns, accordions, tabs, and callouts. This tutorial\nshows some examples.</p></span>",
@@ -139,7 +125,6 @@ export const WithLargeOutput: Story = {
139
125
  <div className="p-20 max-w-4xl">
140
126
  <Cell
141
127
  overrides={{
142
- runElapsedTimeMs: 20 as Milliseconds,
143
128
  output: {
144
129
  channel: "output",
145
130
  data: "<span class='markdown'><h1>Layout</h1>\n<p><code>marimo</code> provides functions to help you lay out your output, such as\nin rows and columns, accordions, tabs, and callouts. This tutorial\nshows some examples.</p></span>".repeat(
@@ -160,7 +145,6 @@ export const UnsavedEditsOutput: Story = {
160
145
  <TooltipProvider>
161
146
  <Cell
162
147
  overrides={{
163
- runElapsedTimeMs: 20 as Milliseconds,
164
148
  edited: true,
165
149
  output: {
166
150
  channel: "output",
@@ -181,8 +165,6 @@ export const InterruptedOutput: Story = {
181
165
  <TooltipProvider>
182
166
  <Cell
183
167
  overrides={{
184
- runElapsedTimeMs: 20 as Milliseconds,
185
- interrupted: true,
186
168
  output: {
187
169
  channel: "output",
188
170
  data: "<span class='markdown'><h1>Layout</h1>\n<p><code>marimo</code> provides functions to help you lay out your output, such as\nin rows and columns, accordions, tabs, and callouts. This tutorial\nshows some examples.</p></span>",
@@ -201,8 +183,6 @@ export const WithError: Story = {
201
183
  <div className="p-20 max-w-4xl">
202
184
  <Cell
203
185
  overrides={{
204
- runElapsedTimeMs: 20 as Milliseconds,
205
- errored: true,
206
186
  output: {
207
187
  channel: "output",
208
188
  data: "<span class='markdown'><h1>Layout</h1>\n<p><code>marimo</code> provides functions to help you lay out your output, such as\nin rows and columns, accordions, tabs, and callouts. This tutorial\nshows some examples.</p></span>",
@@ -220,7 +200,6 @@ export const Disabled: Story = {
220
200
  <div className="p-20 max-w-4xl">
221
201
  <Cell
222
202
  overrides={{
223
- runElapsedTimeMs: 20 as Milliseconds,
224
203
  config: {
225
204
  disabled: true,
226
205
  hide_code: false,
@@ -243,8 +222,6 @@ export const DisabledTransitively: Story = {
243
222
  <div className="p-20 max-w-4xl">
244
223
  <Cell
245
224
  overrides={{
246
- runElapsedTimeMs: 20 as Milliseconds,
247
- status: "disabled-transitively",
248
225
  output: {
249
226
  channel: "output",
250
227
  data: "This data is stale because a parent is disabled",
@@ -262,8 +239,6 @@ export const StaleStatus: Story = {
262
239
  <div className="p-20 max-w-4xl">
263
240
  <Cell
264
241
  overrides={{
265
- runElapsedTimeMs: 20 as Milliseconds,
266
- status: "disabled-transitively",
267
242
  staleInputs: true,
268
243
  output: {
269
244
  channel: "output",
@@ -282,8 +257,6 @@ export const StaleAndEditedStatus: Story = {
282
257
  <div className="p-20 max-w-4xl">
283
258
  <Cell
284
259
  overrides={{
285
- runElapsedTimeMs: 20 as Milliseconds,
286
- status: "disabled-transitively",
287
260
  staleInputs: true,
288
261
  edited: true,
289
262
  output: {
@@ -303,13 +276,11 @@ export const DisabledAndStaleStatus: Story = {
303
276
  <div className="p-20 max-w-4xl">
304
277
  <Cell
305
278
  overrides={{
306
- runElapsedTimeMs: 20 as Milliseconds,
307
279
  config: {
308
280
  column: null,
309
281
  disabled: true,
310
282
  hide_code: false,
311
283
  },
312
- status: "disabled-transitively",
313
284
  staleInputs: true,
314
285
  output: {
315
286
  channel: "output",
@@ -328,8 +299,6 @@ export const Running: Story = {
328
299
  <div className="p-20 max-w-4xl">
329
300
  <Cell
330
301
  overrides={{
331
- runElapsedTimeMs: 20 as Milliseconds,
332
- status: "running",
333
302
  output: {
334
303
  channel: "output",
335
304
  data: "<span class='markdown'><h1>Layout</h1>\n<p><code>marimo</code> provides functions to help you lay out your output, such as\nin rows and columns, accordions, tabs, and callouts. This tutorial\nshows some examples.</p></span>",
@@ -14,7 +14,6 @@ import { connectionAtom } from "@/core/network/connection";
14
14
  import { requestClientAtom } from "@/core/network/requests";
15
15
  import { resolveRequestClient } from "@/core/network/resolve";
16
16
  import { ConnectionState } from "@/core/session/types";
17
- import type { Milliseconds, Seconds } from "@/utils/time";
18
17
  import { CellArray } from "../../../components/editor/renderers/cell-array";
19
18
  import { CellsRenderer } from "../../../components/editor/renderers/cells-renderer";
20
19
  import { TooltipProvider } from "../../../components/ui/tooltip";
@@ -50,7 +49,6 @@ LongReprA()`,
50
49
 
51
50
  print('hello')
52
51
  LongReprA()`,
53
- lastExecutionTime: null,
54
52
  },
55
53
  },
56
54
  cellIds: [cellId],
@@ -62,8 +60,6 @@ LongReprA()`,
62
60
  mimetype: "text/plain",
63
61
  timestamp: 1_686_863_710,
64
62
  },
65
- runElapsedTimeMs: 8 as Milliseconds,
66
- status: "idle",
67
63
  consoleOutputs: [
68
64
  {
69
65
  channel: "stdout",
@@ -72,12 +68,7 @@ LongReprA()`,
72
68
  timestamp: 1_686_863_705,
73
69
  },
74
70
  ],
75
- interrupted: false,
76
- errored: false,
77
- stopped: false,
78
71
  staleInputs: false,
79
- runStartTimestamp: 0 as Seconds,
80
- lastRunStartTimestamp: 0 as Seconds,
81
72
  debuggerActive: false,
82
73
  outline: null,
83
74
  }),
package/src/utils/time.ts CHANGED
@@ -31,6 +31,11 @@ export class Time {
31
31
  return new Time(Date.now() as Milliseconds);
32
32
  }
33
33
 
34
+ /** The instant an ISO 8601 timestamp names. */
35
+ public static parse(iso: string): Time {
36
+ return new Time(Date.parse(iso) as Milliseconds);
37
+ }
38
+
34
39
  private constructor(ms: Milliseconds) {
35
40
  this.ms = ms;
36
41
  }
@@ -39,6 +44,11 @@ export class Time {
39
44
  return this.ms;
40
45
  }
41
46
 
47
+ /** How long after `start` this instant is. */
48
+ public since(start: Time): Milliseconds {
49
+ return (this.ms - start.ms) as Milliseconds;
50
+ }
51
+
42
52
  public toSeconds(): Seconds {
43
53
  return (this.ms / 1000) as Seconds;
44
54
  }