@marimo-team/frontend 0.21.2-dev77 → 0.21.2-dev79

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 (144) hide show
  1. package/dist/assets/{CellStatus-4D4t9Se5.js → CellStatus-BWh3L8zx.js} +1 -1
  2. package/dist/assets/JsonOutput-CQSoWTC4.js +49 -0
  3. package/dist/assets/{LazyAnyLanguageCodeMirror-CUh_vzRs.js → LazyAnyLanguageCodeMirror-BTEcIffn.js} +2 -2
  4. package/dist/assets/{MarimoErrorOutput-J_vzYyfF.js → MarimoErrorOutput-3snr3JrQ.js} +1 -1
  5. package/dist/assets/{RenderHTML-DVx_CJaM.js → RenderHTML-C9ZqxJ8H.js} +1 -1
  6. package/dist/assets/{add-cell-with-ai-DW05jmla.js → add-cell-with-ai-u_AX7UAd.js} +1 -1
  7. package/dist/assets/{add-connection-dialog-DAPvoleG.js → add-connection-dialog-COHTxTf9.js} +1 -1
  8. package/dist/assets/{agent-panel-B5ZFhjWl.js → agent-panel-CcEQv7FH.js} +1 -1
  9. package/dist/assets/{ai-model-dropdown-DXkdDtQw.js → ai-model-dropdown-Dybmv5gR.js} +1 -1
  10. package/dist/assets/{any-language-editor-Dd68WerD.js → any-language-editor-DVOJvjS_.js} +1 -1
  11. package/dist/assets/{app-config-button-CDhEUKd2.js → app-config-button-BldM7HZH.js} +1 -1
  12. package/dist/assets/{cell-editor-KjmNYBNd.js → cell-editor-BExD1h53.js} +1 -1
  13. package/dist/assets/{cell-link-CUJsH4Qt.js → cell-link-DV3G9zVQ.js} +1 -1
  14. package/dist/assets/{cells-D3d90crn.js → cells-B8rT_yJt.js} +3 -3
  15. package/dist/assets/{chat-display-Cydxvy57.js → chat-display-DSlMdLnv.js} +1 -1
  16. package/dist/assets/{chat-panel-CnuHNef3.js → chat-panel-BhurwxDK.js} +1 -1
  17. package/dist/assets/{chat-ui-DhcktjN6.js → chat-ui-BL1vsaOH.js} +1 -1
  18. package/dist/assets/{column-preview-CPBNo3h2.js → column-preview-BEoyw-go.js} +1 -1
  19. package/dist/assets/{command-CKa4yQEB.js → command-DvKBTmQJ.js} +1 -1
  20. package/dist/assets/{command-palette-CRiPRNeS.js → command-palette-pDgtiL0o.js} +1 -1
  21. package/dist/assets/{common-oy4UCqe2.js → common-MJu6yCEK.js} +1 -1
  22. package/dist/assets/{components-ZL3KSgMv.js → components-CWfQv9p5.js} +1 -1
  23. package/dist/assets/{components-DWwg8zgi.js → components-fIfcCZSp.js} +1 -1
  24. package/dist/assets/{context-aware-panel-B6Ooz9Lw.js → context-aware-panel-DJFzC2uh.js} +1 -1
  25. package/dist/assets/{datasource-BKNy10yM.js → datasource-xomiPYKd.js} +1 -1
  26. package/dist/assets/{dependency-graph-panel--USfW8LF.js → dependency-graph-panel-B24Gr6L4.js} +1 -1
  27. package/dist/assets/{dist-CtwZk3-9.js → dist-030LgPdB.js} +1 -1
  28. package/dist/assets/{dist-D0u6iH16.js → dist-1ZGGzJka.js} +1 -1
  29. package/dist/assets/{dist-CD2iFgV9.js → dist-4rKUx1vk.js} +1 -1
  30. package/dist/assets/dist-BBGASQNR.js +1 -0
  31. package/dist/assets/{dist-BXJ3fDZF.js → dist-BKkfH6MG.js} +1 -1
  32. package/dist/assets/dist-BPKAv9Tp.js +1 -0
  33. package/dist/assets/dist-BRCCPMsT.js +1 -0
  34. package/dist/assets/{dist-CyIcJpsa.js → dist-BXtR56No.js} +1 -1
  35. package/dist/assets/{dist-Cr4DBs1J.js → dist-BZJrw9vI.js} +1 -1
  36. package/dist/assets/{dist-B8C_eg-r.js → dist-B_cxg-E4.js} +11 -11
  37. package/dist/assets/{dist-1xshPfUL.js → dist-Bh-vrbeU.js} +1 -1
  38. package/dist/assets/{dist-DWPT6HNN.js → dist-BrZ_53nc.js} +1 -1
  39. package/dist/assets/{dist-D8gpRGBx.js → dist-C9G2F7Z1.js} +1 -1
  40. package/dist/assets/{dist-CTbQ-BIR.js → dist-CEeVCRd_.js} +1 -1
  41. package/dist/assets/dist-CFY2_7zu.js +1 -0
  42. package/dist/assets/dist-CJ8RtgvK.js +1 -0
  43. package/dist/assets/dist-CKgHI4pK.js +1 -0
  44. package/dist/assets/dist-COABhHhr.js +1 -0
  45. package/dist/assets/{dist-C7LdPk_u.js → dist-CRmIdrta.js} +1 -1
  46. package/dist/assets/{dist-GpTdRCER.js → dist-CTTKEfeu.js} +1 -1
  47. package/dist/assets/dist-Cp7t_Bws.js +1 -0
  48. package/dist/assets/dist-CtXb4bUU.js +2 -0
  49. package/dist/assets/dist-CueE_NHP.js +1 -0
  50. package/dist/assets/{dist-hU6zxLMp.js → dist-CwHZ5Z_A.js} +1 -1
  51. package/dist/assets/{dist-bjNxb2zu.js → dist-CwjzLMbM.js} +1 -1
  52. package/dist/assets/{dist-avBkgR1-.js → dist-D0Vj4Kqc.js} +1 -1
  53. package/dist/assets/{dist-Ekqk7Je0.js → dist-D699xT6P.js} +1 -1
  54. package/dist/assets/{dist-DiGcGOAW.js → dist-DA4gn7fy.js} +1 -1
  55. package/dist/assets/{dist-B0eVr-Dy.js → dist-DBBqNJ3C.js} +1 -1
  56. package/dist/assets/{dist-BZciZZkq.js → dist-DKnn_Tta.js} +1 -1
  57. package/dist/assets/dist-DROvTz9O.js +1 -0
  58. package/dist/assets/dist-DWBTB8aa.js +1 -0
  59. package/dist/assets/{dist-CDZ4_qwn.js → dist-DbWhwe76.js} +1 -1
  60. package/dist/assets/dist-DeX768Hg.js +1 -0
  61. package/dist/assets/{dist-C7M_d4Do.js → dist-DmMcU97h.js} +1 -1
  62. package/dist/assets/dist-DrDZNjDr.js +1 -0
  63. package/dist/assets/{dist-CJiSj3UX.js → dist-DvbdggRI.js} +1 -1
  64. package/dist/assets/{dist-DlOT-x3-.js → dist-JipYR0-e.js} +1 -1
  65. package/dist/assets/dist-LxLdJkvD.js +1 -0
  66. package/dist/assets/{dist-DLGHskqp.js → dist-SDxzhwJU.js} +1 -1
  67. package/dist/assets/dist-VjWmUZA0.js +1 -0
  68. package/dist/assets/dist-X-byYzEZ.js +1 -0
  69. package/dist/assets/dist-Xnna0a3m.js +1 -0
  70. package/dist/assets/{dist-BdL_qHYN.js → dist-epQooxQL.js} +1 -1
  71. package/dist/assets/dist-y02bFELW.js +1 -0
  72. package/dist/assets/{documentation-panel-5DuYRVpR.js → documentation-panel-DHLN-LCs.js} +1 -1
  73. package/dist/assets/{download-B2JL3FPf.js → download-CNJtCoWG.js} +1 -1
  74. package/dist/assets/{edit-page-DfGN5LkL.js → edit-page-D0G0qKOk.js} +3 -3
  75. package/dist/assets/{error-panel-CIYHoFDO.js → error-panel-BprMlRWd.js} +1 -1
  76. package/dist/assets/{esm-CoDEg_kt.js → esm-BMWduMhT.js} +1 -1
  77. package/dist/assets/{esm-zS5lBxz4.js → esm-BjKAkBIt.js} +1 -1
  78. package/dist/assets/{file-explorer-panel-C5juz5FN.js → file-explorer-panel-DschbL1I.js} +1 -1
  79. package/dist/assets/{file-icons-czkv18pY.js → file-icons-I3TgHXBH.js} +1 -1
  80. package/dist/assets/{floating-outline-Bx41Ogvx.js → floating-outline-BUsBWnrz.js} +1 -1
  81. package/dist/assets/{focus-KRgSpKIE.js → focus-DWfOBGUg.js} +1 -1
  82. package/dist/assets/{form-BpdTXD_T.js → form-DNvI4VkE.js} +1 -1
  83. package/dist/assets/{globals-CZsfDi9Q.js → globals-B7uZUVXG.js} +1 -1
  84. package/dist/assets/{home-page-XfqMC-k1.js → home-page-B1ioyqaQ.js} +1 -1
  85. package/dist/assets/{hooks-Yfiwwbz5.js → hooks-dmmemJB9.js} +1 -1
  86. package/dist/assets/{html-to-image-BKYNhmqD.js → html-to-image-BtnUxAf2.js} +1 -1
  87. package/dist/assets/{index-DV3al739.js → index-aCOJQiAd.js} +4 -4
  88. package/dist/assets/{kiosk-mode-C16509ZW.js → kiosk-mode-DvjY7Q8k.js} +1 -1
  89. package/dist/assets/{layout-C_2FnBzQ.js → layout-BJa4d_WQ.js} +1 -1
  90. package/dist/assets/{logs-panel-ZXqTa5b8.js → logs-panel-Iivn5vVF.js} +1 -1
  91. package/dist/assets/{markdown-renderer-BqnSkpMX.js → markdown-renderer-f7AvSa1a.js} +1 -1
  92. package/dist/assets/{name-cell-input-BGh_NBkP.js → name-cell-input-CzVNuMqK.js} +1 -1
  93. package/dist/assets/{outline-panel-9Y7Q0KI9.js → outline-panel-QyE6tr_2.js} +1 -1
  94. package/dist/assets/{packages-panel-BJGVP3jn.js → packages-panel-D9pbtgFY.js} +1 -1
  95. package/dist/assets/{panels-DsPJWTv2.js → panels-CqWMsuFv.js} +1 -1
  96. package/dist/assets/{process-output-BRgFATKG.js → process-output-5fC8hAfT.js} +1 -1
  97. package/dist/assets/{readonly-python-code-CjFy5OHl.js → readonly-python-code-CvuT43MO.js} +1 -1
  98. package/dist/assets/{run-page-BrRRKiC4.js → run-page-BtXltq0k.js} +1 -1
  99. package/dist/assets/{scratchpad-panel-B8WYJRWc.js → scratchpad-panel-i-qE-Pfc.js} +1 -1
  100. package/dist/assets/{session-panel-CHHY9VOz.js → session-panel-CL3OYqfu.js} +1 -1
  101. package/dist/assets/{snippets-panel-X_jZzShK.js → snippets-panel-Cn-0B9yk.js} +1 -1
  102. package/dist/assets/{state-4QyTnTMc.js → state-DLmIk5GZ.js} +1 -1
  103. package/dist/assets/{switch-BPjRwF9v.js → switch-CdyDieX7.js} +1 -1
  104. package/dist/assets/{textarea-C5wPsFgU.js → textarea-y9GCP54I.js} +1 -1
  105. package/dist/assets/{tracing-DBH1SUb1.js → tracing-CggYKKpk.js} +1 -1
  106. package/dist/assets/{tracing-panel-D1han9g0.js → tracing-panel-BYfwYVLg.js} +2 -2
  107. package/dist/assets/{useAddCell-Cd-c9fz3.js → useAddCell-BGHDEB1g.js} +1 -1
  108. package/dist/assets/{useCellActionButton-B45cjFLa.js → useCellActionButton-BbGQe83V.js} +1 -1
  109. package/dist/assets/{useDeleteCell-DVXZOIwJ.js → useDeleteCell-DG1VBfwX.js} +1 -1
  110. package/dist/assets/{useDependencyPanelTab-Bwlgmsum.js → useDependencyPanelTab-luj9RYTO.js} +1 -1
  111. package/dist/assets/{useNotebookActions-BZ6aaIhX.js → useNotebookActions-DN_VG9PO.js} +1 -1
  112. package/dist/assets/{useRunCells-D5eTD8tT.js → useRunCells--USKPEQy.js} +1 -1
  113. package/dist/assets/{useSplitCell-Bi4Ew2Lt.js → useSplitCell-DGXfa81A.js} +1 -1
  114. package/dist/index.html +36 -36
  115. package/package.json +2 -1
  116. package/src/__tests__/setup.ts +15 -0
  117. package/src/components/data-table/TableActions.tsx +8 -2
  118. package/src/components/data-table/__tests__/data-table.test.tsx +63 -0
  119. package/src/components/data-table/data-table.tsx +10 -31
  120. package/src/components/data-table/hooks/use-scroll-container-height.ts +97 -0
  121. package/src/components/data-table/renderers.tsx +103 -46
  122. package/src/components/data-table/types.ts +14 -0
  123. package/src/core/islands/main.ts +0 -1
  124. package/src/core/websocket/useMarimoKernelConnection.tsx +1 -10
  125. package/dist/assets/JsonOutput-BVgaYt_7.js +0 -46
  126. package/dist/assets/dist-B7NwbXlb.js +0 -1
  127. package/dist/assets/dist-BDiiLamW.js +0 -2
  128. package/dist/assets/dist-BRF5jPsH.js +0 -1
  129. package/dist/assets/dist-BVFwO-BJ.js +0 -1
  130. package/dist/assets/dist-Bq3Z0YJc.js +0 -1
  131. package/dist/assets/dist-C2UCjrCj.js +0 -1
  132. package/dist/assets/dist-C5G9yFjI.js +0 -1
  133. package/dist/assets/dist-CDNIv_aA.js +0 -1
  134. package/dist/assets/dist-CRRNYOP4.js +0 -1
  135. package/dist/assets/dist-CVcK0lpx.js +0 -1
  136. package/dist/assets/dist-D5IpadHf.js +0 -1
  137. package/dist/assets/dist-D6UcS85E.js +0 -1
  138. package/dist/assets/dist-D7D_TkHI.js +0 -1
  139. package/dist/assets/dist-DBiFepQi.js +0 -1
  140. package/dist/assets/dist-DDcAAms9.js +0 -1
  141. package/dist/assets/dist-DboypqFS.js +0 -1
  142. package/dist/assets/dist-DucJ1hOW.js +0 -1
  143. package/dist/assets/dist-H-uU4H82.js +0 -1
  144. package/dist/assets/dist-JLLCRw8G.js +0 -1
@@ -11,7 +11,8 @@ import {
11
11
  type Table,
12
12
  type Table as TanStackTable,
13
13
  } from "@tanstack/react-table";
14
- import { type JSX, useRef } from "react";
14
+ import { useVirtualizer } from "@tanstack/react-virtual";
15
+ import { type JSX, useLayoutEffect, useRef, useState } from "react";
15
16
  import useEvent from "react-use-event-hook";
16
17
  import {
17
18
  TableBody,
@@ -27,6 +28,7 @@ import { DataTableContextMenu } from "./context-menu";
27
28
  import { CellRangeSelectionIndicator } from "./range-focus/cell-selection-indicator";
28
29
  import { useCellRangeSelection } from "./range-focus/use-cell-range-selection";
29
30
  import { useScrollIntoViewOnFocus } from "./range-focus/use-scroll-into-view";
31
+ import { TABLE_ROW_HEIGHT_PX } from "./types";
30
32
  import { stringifyUnknownValue } from "./utils";
31
33
 
32
34
  export function renderTableHeader<TData>(
@@ -79,6 +81,7 @@ interface DataTableBodyProps<TData> {
79
81
  rowViewerPanelOpen: boolean;
80
82
  getRowIndex?: (row: TData, idx: number) => number;
81
83
  viewedRowIdx?: number;
84
+ virtualize?: boolean;
82
85
  }
83
86
 
84
87
  export const DataTableBody = <TData,>({
@@ -87,9 +90,30 @@ export const DataTableBody = <TData,>({
87
90
  rowViewerPanelOpen,
88
91
  getRowIndex,
89
92
  viewedRowIdx,
93
+ virtualize = false,
90
94
  }: DataTableBodyProps<TData>) => {
91
- // Automatically scroll focused cells into view
95
+ const rows = table.getRowModel().rows;
96
+
97
+ // Find the scroll container (tbody -> table -> overflow-auto wrapper div).
98
+ // Using useState so that when the element becomes available after mount,
99
+ // useVirtualizer re-observes the correct element.
100
+ const [scrollElement, setScrollElement] = useState<HTMLElement | null>(null);
92
101
  const tableRef = useRef<HTMLTableSectionElement>(null);
102
+ useLayoutEffect(() => {
103
+ // tbody.parentElement = table, table.parentElement = overflow wrapper
104
+ setScrollElement(tableRef.current?.parentElement?.parentElement ?? null);
105
+ }, []);
106
+
107
+ // Always call useVirtualizer (rules of hooks); count=0 when not virtualizing
108
+ const virtualizer = useVirtualizer({
109
+ count: virtualize ? rows.length : 0,
110
+ getScrollElement: () => scrollElement,
111
+ estimateSize: () => TABLE_ROW_HEIGHT_PX,
112
+ overscan: 10,
113
+ });
114
+
115
+ // Automatically scroll focused cells into view.
116
+ // In virtual mode, off-screen cells won't be in the DOM so this silently no-ops for them.
93
117
  useScrollIntoViewOnFocus(tableRef);
94
118
 
95
119
  const {
@@ -172,57 +196,90 @@ export const DataTableBody = <TData,>({
172
196
 
173
197
  const hoverTemplate = table.getState().cellHoverTemplate || null;
174
198
 
175
- const tableBody = (
176
- <TableBody onKeyDown={handleCellsKeyDown} ref={tableRef}>
177
- {table.getRowModel().rows?.length ? (
178
- table.getRowModel().rows.map((row) => {
179
- // Only find the row index if the row viewer panel is open
180
- const rowIndex = rowViewerPanelOpen
181
- ? (getRowIndex?.(row.original, row.index) ?? row.index)
182
- : undefined;
183
- const isRowViewedInPanel =
184
- rowViewerPanelOpen && viewedRowIdx === rowIndex;
199
+ const renderRow = (row: Row<TData>) => {
200
+ // Only find the row index if the row viewer panel is open
201
+ const rowIndex = rowViewerPanelOpen
202
+ ? (getRowIndex?.(row.original, row.index) ?? row.index)
203
+ : undefined;
204
+ const isRowViewedInPanel = rowViewerPanelOpen && viewedRowIdx === rowIndex;
205
+
206
+ // Compute hover title once per row using all visible cells
207
+ let rowTitle: string | undefined;
208
+ if (hoverTemplate) {
209
+ const visibleCells = row.getVisibleCells?.() ?? [
210
+ ...row.getLeftVisibleCells(),
211
+ ...row.getCenterVisibleCells(),
212
+ ...row.getRightVisibleCells(),
213
+ ];
214
+ rowTitle = applyHoverTemplate(hoverTemplate, visibleCells);
215
+ }
185
216
 
186
- // Compute hover title once per row using all visible cells
187
- let rowTitle: string | undefined;
188
- if (hoverTemplate) {
189
- const visibleCells = row.getVisibleCells?.() ?? [
190
- ...row.getLeftVisibleCells(),
191
- ...row.getCenterVisibleCells(),
192
- ...row.getRightVisibleCells(),
193
- ];
194
- rowTitle = hoverTemplate
195
- ? applyHoverTemplate(hoverTemplate, visibleCells)
196
- : undefined;
197
- }
217
+ return (
218
+ <TableRow
219
+ key={row.id}
220
+ data-state={row.getIsSelected() && "selected"}
221
+ title={rowTitle}
222
+ // These classes ensure that empty rows (nulls) still render
223
+ className={cn(
224
+ "border-t h-6",
225
+ rowViewerPanelOpen && "cursor-pointer",
226
+ isRowViewedInPanel &&
227
+ "bg-(--blue-3) hover:bg-(--blue-3) data-[state=selected]:bg-(--blue-4)",
228
+ )}
229
+ onClick={() => handleRowClick(row)}
230
+ >
231
+ {renderCells(row.getLeftVisibleCells())}
232
+ {renderCells(row.getCenterVisibleCells())}
233
+ {renderCells(row.getRightVisibleCells())}
234
+ </TableRow>
235
+ );
236
+ };
198
237
 
199
- return (
200
- <TableRow
201
- key={row.id}
202
- data-state={row.getIsSelected() && "selected"}
203
- title={rowTitle}
204
- // These classes ensure that empty rows (nulls) still render
205
- className={cn(
206
- "border-t h-6",
207
- rowViewerPanelOpen && "cursor-pointer",
208
- isRowViewedInPanel &&
209
- "bg-(--blue-3) hover:bg-(--blue-3) data-[state=selected]:bg-(--blue-4)",
210
- )}
211
- onClick={() => handleRowClick(row)}
212
- >
213
- {renderCells(row.getLeftVisibleCells())}
214
- {renderCells(row.getCenterVisibleCells())}
215
- {renderCells(row.getRightVisibleCells())}
216
- </TableRow>
217
- );
218
- })
219
- ) : (
238
+ const renderRows = () => {
239
+ if (rows.length === 0) {
240
+ return (
220
241
  <TableRow>
221
242
  <TableCell colSpan={columns.length} className="h-24 text-center">
222
243
  No results.
223
244
  </TableCell>
224
245
  </TableRow>
225
- )}
246
+ );
247
+ }
248
+
249
+ if (virtualize) {
250
+ const virtualItems = virtualizer.getVirtualItems();
251
+ const totalSize = virtualizer.getTotalSize();
252
+ return (
253
+ <>
254
+ {virtualItems[0]?.start > 0 && (
255
+ <tr
256
+ data-virtual-spacer=""
257
+ style={{ height: virtualItems[0].start }}
258
+ >
259
+ <td colSpan={columns.length} />
260
+ </tr>
261
+ )}
262
+ {virtualItems.map((vItem) => renderRow(rows[vItem.index]))}
263
+ {virtualItems.length > 0 && (
264
+ <tr
265
+ data-virtual-spacer=""
266
+ style={{
267
+ height: totalSize - (virtualItems.at(-1)?.end ?? totalSize),
268
+ }}
269
+ >
270
+ <td colSpan={columns.length} />
271
+ </tr>
272
+ )}
273
+ </>
274
+ );
275
+ }
276
+
277
+ return rows.map((row) => renderRow(row));
278
+ };
279
+
280
+ const tableBody = (
281
+ <TableBody onKeyDown={handleCellsKeyDown} ref={tableRef}>
282
+ {renderRows()}
226
283
  </TableBody>
227
284
  );
228
285
 
@@ -10,6 +10,20 @@ declare module "@tanstack/react-table" {
10
10
  }
11
11
  }
12
12
 
13
+ // Pixel heights derived from Tailwind classes applied to table elements.
14
+ // row: h-6 = 24px (TableRow in renderers.tsx)
15
+ // header: min-h-10 = 40px (TableHead in renderers.tsx)
16
+ export const TABLE_ROW_HEIGHT_PX = 24;
17
+ export const TABLE_HEADER_HEIGHT_PX = 40;
18
+
19
+ // Default number of visible rows when virtualizing without an explicit maxHeight.
20
+ export const DEFAULT_VIRTUAL_ROWS = 15;
21
+
22
+ // Minimum row count before virtualization kicks in. Below this threshold the
23
+ // DOM overhead is negligible and the virtualizer's measurement cost isn't
24
+ // worth it. Must be greater than DEFAULT_VIRTUAL_ROWS.
25
+ export const MIN_ROWS_TO_VIRTUALIZE = 100;
26
+
13
27
  export type ColumnName = string;
14
28
 
15
29
  export const ColumnHeaderStatsKeys = [
@@ -113,7 +113,6 @@ export async function initialize() {
113
113
  case "installing-package-alert":
114
114
  case "completion-result":
115
115
  case "reload":
116
- case "update-cell-codes":
117
116
  case "update-cell-ids":
118
117
  case "focus-cell":
119
118
  case "variables":
@@ -97,7 +97,7 @@ export function useMarimoKernelConnection(opts: {
97
97
  const { autoInstantiate, sessionId, setCells } = opts;
98
98
  const { showBoundary } = useErrorBoundary();
99
99
 
100
- const { handleCellMessage, setCellCodes, setCellIds } = useCellActions();
100
+ const { handleCellMessage, setCellIds } = useCellActions();
101
101
  const actionsWithoutMiddleware = useCellActions({ skipMiddleware: true });
102
102
 
103
103
  const handleDocumentTransaction = (
@@ -328,15 +328,6 @@ export function useMarimoKernelConnection(opts: {
328
328
  case "focus-cell":
329
329
  focusAndScrollCellOutputIntoView(msg.data.cell_id);
330
330
  return;
331
- case "update-cell-codes":
332
- setCellCodes({
333
- codes: msg.data.codes,
334
- ids: msg.data.cell_ids,
335
- codeIsStale: msg.data.code_is_stale,
336
- names: msg.data.names,
337
- configs: msg.data.configs,
338
- });
339
- return;
340
331
  case "update-cell-ids":
341
332
  setCellIds({ cellIds: msg.data.cell_ids });
342
333
  return;