@marimo-team/frontend 0.20.5-dev70 → 0.20.5-dev75

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 (87) hide show
  1. package/dist/assets/{CellStatus-CUcw73X7.js → CellStatus-D0IfrfUM.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-DBu7UIu_.js → ConnectedDataExplorerComponent-DrjF-Wem.js} +1 -1
  3. package/dist/assets/{JsonOutput-BzXkaUJB.js → JsonOutput-BRjuq1Jw.js} +5 -5
  4. package/dist/assets/{MarimoErrorOutput-D8ONRYMT.js → MarimoErrorOutput-CimwFZPP.js} +1 -1
  5. package/dist/assets/{RenderHTML-uWewv3IU.js → RenderHTML-B0MiHkXS.js} +1 -1
  6. package/dist/assets/{add-cell-with-ai-c0y2WMWV.js → add-cell-with-ai-U_En-o_I.js} +1 -1
  7. package/dist/assets/{add-connection-dialog-DVxfAULb.js → add-connection-dialog-CIHDuGfD.js} +2 -2
  8. package/dist/assets/{agent-panel-C7PZOXvl.js → agent-panel-CvQx48V8.js} +1 -1
  9. package/dist/assets/{ai-model-dropdown-DJn8Mf6B.js → ai-model-dropdown-CZMwYbbD.js} +1 -1
  10. package/dist/assets/{app-config-button-Cp88IzKz.js → app-config-button-CaZJfEaI.js} +1 -1
  11. package/dist/assets/{azure-a3T26UGw.js → azure-Dy9N467C.js} +1 -1
  12. package/dist/assets/{cell-editor-D9SPIuuX.js → cell-editor-BN72f4Y9.js} +1 -1
  13. package/dist/assets/{cell-link-C9qZWgbj.js → cell-link-CL9widoN.js} +1 -1
  14. package/dist/assets/{cells-5wegzPD4.js → cells-wT6clfi5.js} +42 -42
  15. package/dist/assets/{chat-display-BXPJxw9m.js → chat-display-D2m36iog.js} +1 -1
  16. package/dist/assets/{chat-panel-CdExYP6J.js → chat-panel-jtJ2SKmP.js} +1 -1
  17. package/dist/assets/{column-preview-46vONjMD.js → column-preview-DBQzaLrY.js} +1 -1
  18. package/dist/assets/{command-B7XhH0hz.js → command-DGKK2-4P.js} +1 -1
  19. package/dist/assets/{command-palette-CnmuHC-K.js → command-palette-Kjc4rXfu.js} +1 -1
  20. package/dist/assets/{common-NG61OZ4y.js → common-Msb-h79F.js} +1 -1
  21. package/dist/assets/{components-BtpAwxaG.js → components-CNlTaOLK.js} +1 -1
  22. package/dist/assets/{components-CMr3IGTz.js → components-U5Mj1xiO.js} +1 -1
  23. package/dist/assets/{config-RexwtI0U.js → config-DeEqZTX7.js} +1 -1
  24. package/dist/assets/{context-aware-panel-DEvHY7XC.js → context-aware-panel-CaZEaV8C.js} +1 -1
  25. package/dist/assets/{datasource-DVMuGDZ7.js → datasource-DIETDMi4.js} +2 -2
  26. package/dist/assets/{dependency-graph-panel-gMZuMhru.js → dependency-graph-panel-RAEDBSLL.js} +1 -1
  27. package/dist/assets/{documentation-panel-D0UZtsI2.js → documentation-panel-B5ZS7rdM.js} +1 -1
  28. package/dist/assets/{download-B8XlLSji.js → download-RVcmZh1N.js} +1 -1
  29. package/dist/assets/{edit-page-dgMbnPkJ.js → edit-page-SV9Nzg27.js} +3 -3
  30. package/dist/assets/{error-panel-CJqTZNKU.js → error-panel-xO_Uo7Vu.js} +1 -1
  31. package/dist/assets/{file-explorer-panel-CRxTuNmM.js → file-explorer-panel-DiJOGwKe.js} +2 -2
  32. package/dist/assets/{file-icons-BdaBiPvr.js → file-icons-Br3viuqL.js} +1 -1
  33. package/dist/assets/{floating-outline-7mI8YyUz.js → floating-outline-jCvD7_Ne.js} +1 -1
  34. package/dist/assets/{focus-BjrLbkmu.js → focus-q8oYkLV6.js} +1 -1
  35. package/dist/assets/{form-p9cBnWwo.js → form-BEIQJWib.js} +1 -1
  36. package/dist/assets/{glide-data-editor-67STO6EX.js → glide-data-editor-UlfiEtnp.js} +1 -1
  37. package/dist/assets/{globals-Bq7VSYAW.js → globals-Bh7qAnqa.js} +1 -1
  38. package/dist/assets/{home-page-DrdWxS62.js → home-page-CtTUaWn1.js} +1 -1
  39. package/dist/assets/{hooks-WmIIm80L.js → hooks-ChoVWWrC.js} +1 -1
  40. package/dist/assets/{html-to-image-BYwkVvZl.js → html-to-image-DBFAQbWm.js} +1 -1
  41. package/dist/assets/{index-B6j3GjGF.js → index-mF9nW3EI.js} +23 -23
  42. package/dist/assets/{kiosk-mode-CsIs_OAo.js → kiosk-mode-DWLXbf9i.js} +1 -1
  43. package/dist/assets/{layout-CpSNosnt.js → layout-OuSaBBrA.js} +1 -1
  44. package/dist/assets/{logs-panel-aHQp8RLn.js → logs-panel-Q1OMBsBk.js} +1 -1
  45. package/dist/assets/{markdown-renderer-D0ROu8n3.js → markdown-renderer-D2_DEfz5.js} +1 -1
  46. package/dist/assets/{mermaid-DOGJHamc.js → mermaid-ZYKil-Dz.js} +1 -1
  47. package/dist/assets/{name-cell-input-B8VbrVk2.js → name-cell-input-BhRgpz9L.js} +1 -1
  48. package/dist/assets/{outline-panel-XDFvKQJ6.js → outline-panel-BXMNkx0G.js} +1 -1
  49. package/dist/assets/{packages-panel-CmAKyZNU.js → packages-panel-Omrbq4eV.js} +1 -1
  50. package/dist/assets/{panels-DA0-JEGS.js → panels-Z0QtbAii.js} +1 -1
  51. package/dist/assets/{process-output-Bh5DCrnq.js → process-output-BXIvuDcK.js} +1 -1
  52. package/dist/assets/{readonly-python-code-DO_Km04V.js → readonly-python-code-YmScI7wz.js} +1 -1
  53. package/dist/assets/{renderShortcut-BSq2vc9J.js → renderShortcut-C3rk7kIN.js} +1 -1
  54. package/dist/assets/{run-page-X6AnZS8x.js → run-page-D5R165Vz.js} +1 -1
  55. package/dist/assets/{scratchpad-panel-B2b9BdLd.js → scratchpad-panel-3qHOUid8.js} +1 -1
  56. package/dist/assets/{session-panel-KnTyM1M-.js → session-panel-D2vq8N6n.js} +1 -1
  57. package/dist/assets/{snippets-panel-D4HBd6EX.js → snippets-panel-BReCSuHT.js} +1 -1
  58. package/dist/assets/{state-BUstx6s8.js → state-BN6sGgkm.js} +1 -1
  59. package/dist/assets/{switch-Ba8bf5tJ.js → switch-BHXOZNHf.js} +1 -1
  60. package/dist/assets/{terminal-BB8AClpr.js → terminal-D3Lu-b1F.js} +1 -1
  61. package/dist/assets/{tracing-DhfOzlz_.js → tracing-D_eBhjGe.js} +1 -1
  62. package/dist/assets/{tracing-panel-DdmFA0Sx.js → tracing-panel-adLR9Xcg.js} +2 -2
  63. package/dist/assets/{useAddCell-CKoCjXpL.js → useAddCell-ErFmQedu.js} +1 -1
  64. package/dist/assets/{useBoolean-CBdZ7rfO.js → useBoolean-B8gcV_C4.js} +1 -1
  65. package/dist/assets/{useCellActionButton-DPHJ31aq.js → useCellActionButton-5K5fLTMd.js} +1 -1
  66. package/dist/assets/{useDeleteCell-BQpjy5Yq.js → useDeleteCell-CmX8_XRr.js} +1 -1
  67. package/dist/assets/{useDependencyPanelTab-Bg7sjCJm.js → useDependencyPanelTab-CVeDMlz5.js} +1 -1
  68. package/dist/assets/{useNotebookActions-DvWNs3kA.js → useNotebookActions-CtZiwIc-.js} +1 -1
  69. package/dist/assets/{useSplitCell-CuWB7Qvd.js → useSplitCell-CZQNZZ7B.js} +1 -1
  70. package/dist/assets/{useTheme-Bp1J8nG-.js → useTheme-CM9j8dgy.js} +1 -1
  71. package/dist/assets/utils-BvPM6Bro.js +1 -0
  72. package/dist/assets/{vega-component-By0fBMxa.js → vega-component-DzBZ6SmR.js} +1 -1
  73. package/dist/index.html +34 -34
  74. package/package.json +1 -1
  75. package/src/components/editor/connections/storage/as-code.ts +1 -1
  76. package/src/components/storage/storage-inspector.tsx +1 -1
  77. package/src/core/cells/ids.ts +2 -1
  78. package/src/core/config/__tests__/config-schema.test.ts +6 -2
  79. package/src/core/config/config-schema.ts +1 -0
  80. package/src/core/config/feature-flag.tsx +1 -1
  81. package/src/core/dom/ui-element-constants.ts +15 -0
  82. package/src/core/dom/ui-element.ts +3 -2
  83. package/src/core/islands/components/web-components.tsx +2 -1
  84. package/src/plugins/impl/DataTablePlugin.tsx +53 -3
  85. package/src/plugins/impl/FileBrowserPlugin.tsx +4 -1
  86. package/src/plugins/impl/anywidget/AnyWidgetPlugin.tsx +4 -1
  87. package/dist/assets/utils-HIU-NsEv.js +0 -1
package/dist/index.html CHANGED
@@ -66,7 +66,7 @@
66
66
  <marimo-server-token data-token="{{ server_token }}" hidden></marimo-server-token>
67
67
  <!-- /TODO -->
68
68
  <title>{{ title }}</title>
69
- <script type="module" crossorigin src="./assets/index-B6j3GjGF.js"></script>
69
+ <script type="module" crossorigin src="./assets/index-mF9nW3EI.js"></script>
70
70
  <link rel="modulepreload" crossorigin href="./assets/preload-helper-BW0IMuFq.js">
71
71
  <link rel="modulepreload" crossorigin href="./assets/clsx-BDxNtGmi.js">
72
72
  <link rel="modulepreload" crossorigin href="./assets/cn-BoaCR37F.js">
@@ -94,13 +94,13 @@
94
94
  <link rel="modulepreload" crossorigin href="./assets/isArrayLikeObject-Dx6-QZGQ.js">
95
95
  <link rel="modulepreload" crossorigin href="./assets/merge-CfcLlFFp.js">
96
96
  <link rel="modulepreload" crossorigin href="./assets/zod-H_cgTO0M.js">
97
- <link rel="modulepreload" crossorigin href="./assets/utils-HIU-NsEv.js">
97
+ <link rel="modulepreload" crossorigin href="./assets/utils-BvPM6Bro.js">
98
98
  <link rel="modulepreload" crossorigin href="./assets/Deferred-BMfCOLaw.js">
99
99
  <link rel="modulepreload" crossorigin href="./assets/uuid-ClFZlR7U.js">
100
100
  <link rel="modulepreload" crossorigin href="./assets/DeferredRequestRegistry-O6RDJKs0.js">
101
101
  <link rel="modulepreload" crossorigin href="./assets/constants-Rz_lD4HK.js">
102
102
  <link rel="modulepreload" crossorigin href="./assets/session-CXChHxAw.js">
103
- <link rel="modulepreload" crossorigin href="./assets/config-RexwtI0U.js">
103
+ <link rel="modulepreload" crossorigin href="./assets/config-DeEqZTX7.js">
104
104
  <link rel="modulepreload" crossorigin href="./assets/requests-Bgjtqo_1.js">
105
105
  <link rel="modulepreload" crossorigin href="./assets/isSymbol-CiGN2w5X.js">
106
106
  <link rel="modulepreload" crossorigin href="./assets/toString-lmrYznmk.js">
@@ -110,7 +110,7 @@
110
110
  <link rel="modulepreload" crossorigin href="./assets/_arrayReduce-BKEr35uH.js">
111
111
  <link rel="modulepreload" crossorigin href="./assets/useLifecycle-CWjBWFMI.js">
112
112
  <link rel="modulepreload" crossorigin href="./assets/useNonce-BtW-rR_1.js">
113
- <link rel="modulepreload" crossorigin href="./assets/useTheme-Bp1J8nG-.js">
113
+ <link rel="modulepreload" crossorigin href="./assets/useTheme-CM9j8dgy.js">
114
114
  <link rel="modulepreload" crossorigin href="./assets/once-CJOnx12W.js">
115
115
  <link rel="modulepreload" crossorigin href="./assets/capabilities-B1-dYWS8.js">
116
116
  <link rel="modulepreload" crossorigin href="./assets/createReducer-DgaMD0B6.js">
@@ -134,12 +134,12 @@
134
134
  <link rel="modulepreload" crossorigin href="./assets/toInteger-CO3ppIfA.js">
135
135
  <link rel="modulepreload" crossorigin href="./assets/database-zap-DTWCDKdn.js">
136
136
  <link rel="modulepreload" crossorigin href="./assets/main-DrBRErTM.js">
137
- <link rel="modulepreload" crossorigin href="./assets/cells-5wegzPD4.js">
137
+ <link rel="modulepreload" crossorigin href="./assets/cells-wT6clfi5.js">
138
138
  <link rel="modulepreload" crossorigin href="./assets/spinner-C5JoisA7.js">
139
139
  <link rel="modulepreload" crossorigin href="./assets/chevron-right-D0GQBpTb.js">
140
140
  <link rel="modulepreload" crossorigin href="./assets/dropdown-menu-CJ-Wwa2I.js">
141
141
  <link rel="modulepreload" crossorigin href="./assets/kbd-wfpi3NfU.js">
142
- <link rel="modulepreload" crossorigin href="./assets/renderShortcut-BSq2vc9J.js">
142
+ <link rel="modulepreload" crossorigin href="./assets/renderShortcut-C3rk7kIN.js">
143
143
  <link rel="modulepreload" crossorigin href="./assets/multi-map-x_GQgXMS.js">
144
144
  <link rel="modulepreload" crossorigin href="./assets/alert-DkRmN0_B.js">
145
145
  <link rel="modulepreload" crossorigin href="./assets/card-zDTDna9R.js">
@@ -148,7 +148,7 @@
148
148
  <link rel="modulepreload" crossorigin href="./assets/dist-CWEZ0LAs.js">
149
149
  <link rel="modulepreload" crossorigin href="./assets/label-BuJDtc39.js">
150
150
  <link rel="modulepreload" crossorigin href="./assets/useDebounce-DwTO_rGp.js">
151
- <link rel="modulepreload" crossorigin href="./assets/azure-a3T26UGw.js">
151
+ <link rel="modulepreload" crossorigin href="./assets/azure-Dy9N467C.js">
152
152
  <link rel="modulepreload" crossorigin href="./assets/numbers-BWhcwX6S.js">
153
153
  <link rel="modulepreload" crossorigin href="./assets/SSRProvider-CwqN9FWV.js">
154
154
  <link rel="modulepreload" crossorigin href="./assets/context-CRmPPhx9.js">
@@ -157,7 +157,7 @@
157
157
  <link rel="modulepreload" crossorigin href="./assets/input-C5eatTLl.js">
158
158
  <link rel="modulepreload" crossorigin href="./assets/links-CoGM-Inf.js">
159
159
  <link rel="modulepreload" crossorigin href="./assets/popover-JNsSzROl.js">
160
- <link rel="modulepreload" crossorigin href="./assets/switch-Ba8bf5tJ.js">
160
+ <link rel="modulepreload" crossorigin href="./assets/switch-BHXOZNHf.js">
161
161
  <link rel="modulepreload" crossorigin href="./assets/table-CKtrITeZ.js">
162
162
  <link rel="modulepreload" crossorigin href="./assets/useAsyncData-a8f2Q_nk.js">
163
163
  <link rel="modulepreload" crossorigin href="./assets/errors-0IrrdfSG.js">
@@ -171,7 +171,7 @@
171
171
  <link rel="modulepreload" crossorigin href="./assets/refresh-cw-CHAHPgkx.js">
172
172
  <link rel="modulepreload" crossorigin href="./assets/trash-2-CAoNMkjq.js">
173
173
  <link rel="modulepreload" crossorigin href="./assets/triangle-alert-qZo1ox6x.js">
174
- <link rel="modulepreload" crossorigin href="./assets/ai-model-dropdown-DJn8Mf6B.js">
174
+ <link rel="modulepreload" crossorigin href="./assets/ai-model-dropdown-CZMwYbbD.js">
175
175
  <link rel="modulepreload" crossorigin href="./assets/defaultLocale-CuYNS33t.js">
176
176
  <link rel="modulepreload" crossorigin href="./assets/precisionRound-CCOoIlcP.js">
177
177
  <link rel="modulepreload" crossorigin href="./assets/defaultLocale-CGfP-Ye3.js">
@@ -180,20 +180,20 @@
180
180
  <link rel="modulepreload" crossorigin href="./assets/ErrorBoundary-H5EQrcAX.js">
181
181
  <link rel="modulepreload" crossorigin href="./assets/useInstallPackage-CO3hLMle.js">
182
182
  <link rel="modulepreload" crossorigin href="./assets/ImperativeModal-b5nJtLod.js">
183
- <link rel="modulepreload" crossorigin href="./assets/cell-link-C9qZWgbj.js">
184
- <link rel="modulepreload" crossorigin href="./assets/datasource-DVMuGDZ7.js">
185
- <link rel="modulepreload" crossorigin href="./assets/state-BUstx6s8.js">
186
- <link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-D8ONRYMT.js">
183
+ <link rel="modulepreload" crossorigin href="./assets/cell-link-CL9widoN.js">
184
+ <link rel="modulepreload" crossorigin href="./assets/datasource-DIETDMi4.js">
185
+ <link rel="modulepreload" crossorigin href="./assets/state-BN6sGgkm.js">
186
+ <link rel="modulepreload" crossorigin href="./assets/MarimoErrorOutput-CimwFZPP.js">
187
187
  <link rel="modulepreload" crossorigin href="./assets/copy-icon-Cu7az85f.js">
188
- <link rel="modulepreload" crossorigin href="./assets/html-to-image-BYwkVvZl.js">
189
- <link rel="modulepreload" crossorigin href="./assets/focus-BjrLbkmu.js">
188
+ <link rel="modulepreload" crossorigin href="./assets/html-to-image-DBFAQbWm.js">
189
+ <link rel="modulepreload" crossorigin href="./assets/focus-q8oYkLV6.js">
190
190
  <link rel="modulepreload" crossorigin href="./assets/LazyAnyLanguageCodeMirror-CwbmGJrl.js">
191
191
  <link rel="modulepreload" crossorigin href="./assets/chunk-5FQGJX7Z-DEi7JZeU.js">
192
192
  <link rel="modulepreload" crossorigin href="./assets/katex-0Z75JF53.js">
193
- <link rel="modulepreload" crossorigin href="./assets/markdown-renderer-D0ROu8n3.js">
194
- <link rel="modulepreload" crossorigin href="./assets/command-B7XhH0hz.js">
195
- <link rel="modulepreload" crossorigin href="./assets/download-B8XlLSji.js">
196
- <link rel="modulepreload" crossorigin href="./assets/RenderHTML-uWewv3IU.js">
193
+ <link rel="modulepreload" crossorigin href="./assets/markdown-renderer-D2_DEfz5.js">
194
+ <link rel="modulepreload" crossorigin href="./assets/command-DGKK2-4P.js">
195
+ <link rel="modulepreload" crossorigin href="./assets/download-RVcmZh1N.js">
196
+ <link rel="modulepreload" crossorigin href="./assets/RenderHTML-B0MiHkXS.js">
197
197
  <link rel="modulepreload" crossorigin href="./assets/useIframeCapabilities-DG-6GyGn.js">
198
198
  <link rel="modulepreload" crossorigin href="./assets/formats-DEgTLsde.js">
199
199
  <link rel="modulepreload" crossorigin href="./assets/en-US-BO8E69bZ.js">
@@ -205,42 +205,42 @@
205
205
  <link rel="modulepreload" crossorigin href="./assets/useDateFormatter-DOoVZUts.js">
206
206
  <link rel="modulepreload" crossorigin href="./assets/range-CJeRXUtp.js">
207
207
  <link rel="modulepreload" crossorigin href="./assets/table-BCnp9gKC.js">
208
- <link rel="modulepreload" crossorigin href="./assets/JsonOutput-BzXkaUJB.js">
209
- <link rel="modulepreload" crossorigin href="./assets/useDeleteCell-BQpjy5Yq.js">
208
+ <link rel="modulepreload" crossorigin href="./assets/JsonOutput-BRjuq1Jw.js">
209
+ <link rel="modulepreload" crossorigin href="./assets/useDeleteCell-CmX8_XRr.js">
210
210
  <link rel="modulepreload" crossorigin href="./assets/icons-T5yQRjuT.js">
211
- <link rel="modulepreload" crossorigin href="./assets/process-output-Bh5DCrnq.js">
211
+ <link rel="modulepreload" crossorigin href="./assets/process-output-BXIvuDcK.js">
212
212
  <link rel="modulepreload" crossorigin href="./assets/blob-DgooIGjS.js">
213
213
  <link rel="modulepreload" crossorigin href="./assets/objectWithoutPropertiesLoose-CboCOq4o.js">
214
214
  <link rel="modulepreload" crossorigin href="./assets/esm-BjfXuxxx.js">
215
215
  <link rel="modulepreload" crossorigin href="./assets/file-DzHkbIdO.js">
216
216
  <link rel="modulepreload" crossorigin href="./assets/image-DXfkah9d.js">
217
217
  <link rel="modulepreload" crossorigin href="./assets/play-DKSqmedg.js">
218
- <link rel="modulepreload" crossorigin href="./assets/add-cell-with-ai-c0y2WMWV.js">
218
+ <link rel="modulepreload" crossorigin href="./assets/add-cell-with-ai-U_En-o_I.js">
219
219
  <link rel="modulepreload" crossorigin href="./assets/isEmpty-CfmnKtgL.js">
220
220
  <link rel="modulepreload" crossorigin href="./assets/bot-message-square-CK6eoGWy.js">
221
- <link rel="modulepreload" crossorigin href="./assets/chat-display-BXPJxw9m.js">
221
+ <link rel="modulepreload" crossorigin href="./assets/chat-display-D2m36iog.js">
222
222
  <link rel="modulepreload" crossorigin href="./assets/chart-no-axes-column-DV8gdCvH.js">
223
223
  <link rel="modulepreload" crossorigin href="./assets/square-function-B006EYFX.js">
224
224
  <link rel="modulepreload" crossorigin href="./assets/spec-CYMZZDXr.js">
225
225
  <link rel="modulepreload" crossorigin href="./assets/ellipsis-vertical-CAB7tdza.js">
226
- <link rel="modulepreload" crossorigin href="./assets/components-CMr3IGTz.js">
227
- <link rel="modulepreload" crossorigin href="./assets/column-preview-46vONjMD.js">
226
+ <link rel="modulepreload" crossorigin href="./assets/components-U5Mj1xiO.js">
227
+ <link rel="modulepreload" crossorigin href="./assets/column-preview-DBQzaLrY.js">
228
228
  <link rel="modulepreload" crossorigin href="./assets/toggle-AwCCScbH.js">
229
- <link rel="modulepreload" crossorigin href="./assets/globals-Bq7VSYAW.js">
229
+ <link rel="modulepreload" crossorigin href="./assets/globals-Bh7qAnqa.js">
230
230
  <link rel="modulepreload" crossorigin href="./assets/share-DdWa0mV7.js">
231
231
  <link rel="modulepreload" crossorigin href="./assets/_baseSet-D5BgdrnX.js">
232
232
  <link rel="modulepreload" crossorigin href="./assets/react-resizable-panels.browser.esm-DTuXFbj-.js">
233
- <link rel="modulepreload" crossorigin href="./assets/context-aware-panel-DEvHY7XC.js">
234
- <link rel="modulepreload" crossorigin href="./assets/floating-outline-7mI8YyUz.js">
235
- <link rel="modulepreload" crossorigin href="./assets/useAddCell-CKoCjXpL.js">
233
+ <link rel="modulepreload" crossorigin href="./assets/context-aware-panel-CaZEaV8C.js">
234
+ <link rel="modulepreload" crossorigin href="./assets/floating-outline-jCvD7_Ne.js">
235
+ <link rel="modulepreload" crossorigin href="./assets/useAddCell-ErFmQedu.js">
236
236
  <link rel="modulepreload" crossorigin href="./assets/eye-off-vwi9L975.js">
237
- <link rel="modulepreload" crossorigin href="./assets/readonly-python-code-DO_Km04V.js">
237
+ <link rel="modulepreload" crossorigin href="./assets/readonly-python-code-YmScI7wz.js">
238
238
  <link rel="modulepreload" crossorigin href="./assets/file-headphone-B5q2Ow55.js">
239
- <link rel="modulepreload" crossorigin href="./assets/file-icons-BdaBiPvr.js">
239
+ <link rel="modulepreload" crossorigin href="./assets/file-icons-Br3viuqL.js">
240
240
  <link rel="modulepreload" crossorigin href="./assets/refresh-ccw-DLpfIr8v.js">
241
- <link rel="modulepreload" crossorigin href="./assets/form-p9cBnWwo.js">
241
+ <link rel="modulepreload" crossorigin href="./assets/form-BEIQJWib.js">
242
242
  <link rel="modulepreload" crossorigin href="./assets/field-9GctqEPJ.js">
243
- <link rel="modulepreload" crossorigin href="./assets/useBoolean-CBdZ7rfO.js">
243
+ <link rel="modulepreload" crossorigin href="./assets/useBoolean-B8gcV_C4.js">
244
244
  <link rel="modulepreload" crossorigin href="./assets/useDeepCompareMemoize-BEmJ3M7I.js">
245
245
  <link rel="modulepreload" crossorigin href="./assets/types-C1RN112u.js">
246
246
  <link rel="modulepreload" crossorigin href="./assets/prop-types-C638SUfx.js">
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/frontend",
3
- "version": "0.20.5-dev70",
3
+ "version": "0.20.5-dev75",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -8,7 +8,7 @@ import { type StorageConnection, StorageConnectionSchema } from "./schemas";
8
8
  export type StorageLibrary = "obstore" | "fsspec";
9
9
 
10
10
  export const StorageLibraryDisplayNames: Record<StorageLibrary, string> = {
11
- obstore: "Obstore",
11
+ obstore: "obstore",
12
12
  fsspec: "fsspec",
13
13
  };
14
14
 
@@ -555,7 +555,7 @@ export const StorageInspector: React.FC = () => {
555
555
  title="No storage connected"
556
556
  description={
557
557
  <span>
558
- Create an Obstore or fsspec connection in your notebook. See the{" "}
558
+ Create an obstore or fsspec connection in your notebook. See the{" "}
559
559
  <a
560
560
  className="text-link"
561
561
  href="https://docs.marimo.io/guides/working_with_data/remote_storage/#quick-start"
@@ -1,6 +1,7 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
  /* eslint-disable @typescript-eslint/no-redeclare */
3
3
 
4
+ import { OBJECT_ID_ATTR } from "@/core/dom/ui-element-constants";
4
5
  import { invariant } from "@/utils/invariant";
5
6
  import type { TypedString } from "../../utils/typed";
6
7
 
@@ -110,7 +111,7 @@ export function findCellId(element: HTMLElement): CellId | null {
110
111
  export type UIElementId = `${CellId}-${string}`;
111
112
  export const UIElementId = {
112
113
  parse(element: Element): UIElementId | null {
113
- return element.getAttribute("object-id") as UIElementId | null;
114
+ return element.getAttribute(OBJECT_ID_ATTR) as UIElementId | null;
114
115
  },
115
116
  parseOrThrow(element: Element): UIElementId {
116
117
  const id = UIElementId.parse(element);
@@ -70,7 +70,9 @@ test("default UserConfig - empty", () => {
70
70
  "reference_highlighting": true,
71
71
  "theme": "light",
72
72
  },
73
- "experimental": {},
73
+ "experimental": {
74
+ "storage_inspector": true,
75
+ },
74
76
  "formatting": {
75
77
  "line_length": 79,
76
78
  },
@@ -140,7 +142,9 @@ test("default UserConfig - one level", () => {
140
142
  "reference_highlighting": true,
141
143
  "theme": "light",
142
144
  },
143
- "experimental": {},
145
+ "experimental": {
146
+ "storage_inspector": true,
147
+ },
144
148
  "formatting": {
145
149
  "line_length": 79,
146
150
  },
@@ -186,6 +186,7 @@ export const UserConfigSchema = z
186
186
  .looseObject({
187
187
  markdown: z.boolean().optional(),
188
188
  rtc: z.boolean().optional(),
189
+ storage_inspector: z.boolean().prefault(true),
189
190
  // Add new experimental features here
190
191
  })
191
192
  // Pass through so that we don't remove any extra keys that the user has added.
@@ -21,7 +21,7 @@ const defaultValues: ExperimentalFeatures = {
21
21
  rtc_v2: false,
22
22
  cache_panel: false,
23
23
  external_agents: import.meta.env.DEV,
24
- storage_inspector: false,
24
+ storage_inspector: true,
25
25
  };
26
26
 
27
27
  export function getFeatureFlag<T extends keyof ExperimentalFeatures>(
@@ -0,0 +1,15 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ /**
4
+ * Stable identifier for a UI element, deterministic across re-executions
5
+ * of the same cell (based on cell ID + creation order).
6
+ * Used to synchronize multiple instances and kernel state.
7
+ */
8
+ export const OBJECT_ID_ATTR = "object-id";
9
+
10
+ /**
11
+ * Random token that changes every time a UI element is constructed
12
+ * (i.e., every cell execution). Used to detect stale elements and
13
+ * force re-renders when a cell re-runs.
14
+ */
15
+ export const RANDOM_ID_ATTR = "random-id";
@@ -8,6 +8,7 @@ import {
8
8
  MarimoValueInputEvent,
9
9
  type MarimoValueInputEventType,
10
10
  } from "./events";
11
+ import { RANDOM_ID_ATTR } from "./ui-element-constants";
11
12
  import { UI_ELEMENT_REGISTRY } from "./uiregistry";
12
13
 
13
14
  import "./ui-element.css";
@@ -189,7 +190,7 @@ export function initializeUIElement() {
189
190
  // used like a React key. If the random-id changes, we need to unmount and
190
191
  // remount its child.
191
192
  static get observedAttributes() {
192
- return ["random-id"];
193
+ return [RANDOM_ID_ATTR];
193
194
  }
194
195
 
195
196
  attributeChangedCallback(
@@ -199,7 +200,7 @@ export function initializeUIElement() {
199
200
  ) {
200
201
  if (this.initialized) {
201
202
  const hasChanged = oldValue !== newValue;
202
- if (name === "random-id" && hasChanged) {
203
+ if (name === RANDOM_ID_ATTR && hasChanged) {
203
204
  // deregister/clean-up this instance
204
205
  this.disconnectedCallback();
205
206
  // remove and re-add its child to force it to re-render; note that
@@ -6,6 +6,7 @@ import ReactDOM, { type Root } from "react-dom/client";
6
6
  import { ErrorBoundary } from "@/components/editor/boundary/ErrorBoundary";
7
7
  import { TooltipProvider } from "@/components/ui/tooltip";
8
8
  import { notebookAtom } from "@/core/cells/cells";
9
+ import { OBJECT_ID_ATTR } from "@/core/dom/ui-element-constants";
9
10
  import { UI_ELEMENT_REGISTRY } from "@/core/dom/uiregistry";
10
11
  import { LocaleProvider } from "@/core/i18n/locale-provider";
11
12
  import { renderHTML } from "@/plugins/core/RenderHTML";
@@ -60,7 +61,7 @@ export class MarimoIslandElement extends HTMLElement {
60
61
  const codeCallback: () => string = optionalEditor
61
62
  ? () =>
62
63
  `${UI_ELEMENT_REGISTRY.lookupValue(
63
- optionalEditor.props["object-id"],
64
+ optionalEditor.props[OBJECT_ID_ATTR],
64
65
  )}`
65
66
  : () => code;
66
67
 
@@ -60,7 +60,11 @@ import { ContextAwarePanelItem } from "@/components/editor/chrome/panels/context
60
60
  import { Alert, AlertTitle } from "@/components/ui/alert";
61
61
  import { Button } from "@/components/ui/button";
62
62
  import { DelayMount } from "@/components/utils/delay-mount";
63
- import { type CellId, findCellId } from "@/core/cells/ids";
63
+ import { type CellId, findCellId, UIElementId } from "@/core/cells/ids";
64
+ import {
65
+ OBJECT_ID_ATTR,
66
+ RANDOM_ID_ATTR,
67
+ } from "@/core/dom/ui-element-constants";
64
68
  import { slotsController } from "@/core/slots/slots";
65
69
  import { store } from "@/core/state/jotai";
66
70
  import { isStaticNotebook } from "@/core/static/static-state";
@@ -361,6 +365,7 @@ export const DataTablePlugin = createPlugin<S>("marimo-table")
361
365
  <LazyDataTableComponent
362
366
  isLazy={props.data.lazy}
363
367
  preload={props.data.preload}
368
+ host={props.host}
364
369
  >
365
370
  <LoadingDataTableComponent
366
371
  {...props.data}
@@ -377,21 +382,66 @@ export const DataTablePlugin = createPlugin<S>("marimo-table")
377
382
  );
378
383
  });
379
384
 
385
+ /**
386
+ * Tracks which lazy tables have been previewed across remounts (e.g. tab switches).
387
+ * Keyed by uiElementId (stable across remounts) with randomId as value
388
+ * (changes on cell re-execution, so stale entries are naturally invalidated).
389
+ */
390
+ const previewedTables = new Map<UIElementId, string>();
391
+
392
+ function wasTablePreviewed(
393
+ uiElementId: UIElementId | null | undefined,
394
+ randomId: string | null | undefined,
395
+ ): boolean {
396
+ return (
397
+ uiElementId != null &&
398
+ randomId != null &&
399
+ previewedTables.get(uiElementId) === randomId
400
+ );
401
+ }
402
+
403
+ function markTablePreviewed(
404
+ uiElementId: UIElementId | null | undefined,
405
+ randomId: string | null | undefined,
406
+ ): void {
407
+ if (uiElementId != null && randomId != null) {
408
+ previewedTables.set(uiElementId, randomId);
409
+ }
410
+ }
411
+
380
412
  const LazyDataTableComponent = ({
381
413
  isLazy: initialIsLazy,
382
414
  children,
383
415
  preload,
416
+ host,
384
417
  }: {
385
418
  isLazy: boolean;
386
419
  children: React.ReactNode;
387
420
  preload: boolean;
421
+ host: HTMLElement;
388
422
  }) => {
389
- const [isLazy, setIsLazy] = useState(initialIsLazy && !preload);
423
+ const parentElement = host.closest(`[${OBJECT_ID_ATTR}]`);
424
+ const uiElementId = parentElement ? UIElementId.parse(parentElement) : null;
425
+
426
+ const randomId = host
427
+ .closest(`[${RANDOM_ID_ATTR}]`)
428
+ ?.getAttribute(RANDOM_ID_ATTR);
429
+
430
+ const [isLazy, setIsLazy] = useState(
431
+ initialIsLazy && !preload && !wasTablePreviewed(uiElementId, randomId),
432
+ );
390
433
 
391
434
  if (isLazy) {
392
435
  return (
393
436
  <div className="flex h-20 items-center justify-center">
394
- <Button variant="outline" size="xs" onClick={() => setIsLazy(false)}>
437
+ <Button
438
+ variant="outline"
439
+ size="xs"
440
+ onClick={() => {
441
+ markTablePreviewed(uiElementId, randomId);
442
+ setIsLazy(false);
443
+ }}
444
+ >
395
445
  <Table2Icon className="mr-2 h-4 w-4" />
396
446
  Preview data
397
447
  </Button>
@@ -15,6 +15,7 @@ import { Label } from "@/components/ui/label";
15
15
  import { NativeSelect } from "@/components/ui/native-select";
16
16
  import { Table, TableBody, TableCell, TableRow } from "@/components/ui/table";
17
17
  import { toast } from "@/components/ui/use-toast";
18
+ import { RANDOM_ID_ATTR } from "@/core/dom/ui-element-constants";
18
19
  import { useAsyncData } from "@/hooks/useAsyncData";
19
20
  import { useInternalStateWithSync } from "@/hooks/useInternalStateWithSync";
20
21
  import { cn } from "@/utils/cn";
@@ -150,7 +151,9 @@ export const FileBrowser = ({
150
151
 
151
152
  // HACK: use the random-id of the host element to force a re-render
152
153
  // when the random-id changes, this means the cell was re-rendered
153
- const randomId = host.closest("[random-id]")?.getAttribute("random-id");
154
+ const randomId = host
155
+ .closest(`[${RANDOM_ID_ATTR}]`)
156
+ ?.getAttribute(RANDOM_ID_ATTR);
154
157
 
155
158
  const { data, error, isPending } = useAsyncData(() => {
156
159
  return list_directory({ path: path });
@@ -4,6 +4,7 @@
4
4
  import type { AnyWidget } from "@anywidget/types";
5
5
  import { useEffect, useRef } from "react";
6
6
  import { z } from "zod";
7
+ import { RANDOM_ID_ATTR } from "@/core/dom/ui-element-constants";
7
8
  import { useAsyncData } from "@/hooks/useAsyncData";
8
9
  import type { HTMLElementNotDerivedFromRef } from "@/hooks/useEventListener";
9
10
  import { createPlugin } from "@/plugins/core/builder";
@@ -145,7 +146,9 @@ const AnyWidgetSlot = (props: IPluginProps<ModelIdRef, Data>) => {
145
146
  }
146
147
 
147
148
  // Find the closest parent element with an attribute of `random-id`
148
- const randomId = props.host.closest("[random-id]")?.getAttribute("random-id");
149
+ const randomId = props.host
150
+ .closest(`[${RANDOM_ID_ATTR}]`)
151
+ ?.getAttribute(RANDOM_ID_ATTR);
149
152
  const key = randomId ?? jsUrl;
150
153
 
151
154
  return (
@@ -1 +0,0 @@
1
- import{d as k,i as x,l as z,p as o,u as C}from"./useEvent-O0nX5vok.js";import{A as n,B as D,I as j,J as I,N as d,P as h,R as t,T as l,U as J,b as r,w as _}from"./zod-H_cgTO0M.js";import{t as N}from"./compiler-runtime-B3qBwwSJ.js";import{t as R}from"./merge-CfcLlFFp.js";import{a as S,m as f,p as U}from"./useEventListener-BGihH8bs.js";import{t as F}from"./invariant-CQUIhlu2.js";const M=["pip","uv","rye","poetry","pixi"];var $=["normal","compact","medium","full","columns"],q=["auto","native","polars","lazy-polars","pandas"];const G="openai/gpt-4o";var O=["html","markdown","ipynb"];const H=["manual","ask","agent"];var u=h({api_key:t().optional(),base_url:t().optional(),project:t().optional()}).loose(),K=h({chat_model:t().nullish(),edit_model:t().nullish(),autocomplete_model:t().nullish(),displayed_models:_(t()).default([]),custom_models:_(t()).default([])});const y=n({completion:h({activate_on_typing:l().prefault(!0),signature_hint_on_typing:l().prefault(!1),copilot:D([l(),r(["github","codeium","custom"])]).prefault(!1).transform(a=>a===!0?"github":a),codeium_api_key:t().nullish()}).prefault({}),save:n({autosave:r(["off","after_delay"]).prefault("after_delay"),autosave_delay:d().nonnegative().transform(a=>Math.max(a,1e3)).prefault(1e3),format_on_save:l().prefault(!1)}).prefault({}),formatting:n({line_length:d().nonnegative().prefault(79).transform(a=>Math.min(a,1e3))}).prefault({}),keymap:n({preset:r(["default","vim"]).prefault("default"),overrides:j(t(),t()).prefault({}),destructive_delete:l().prefault(!0)}).prefault({}),runtime:n({auto_instantiate:l().prefault(!0),on_cell_change:r(["lazy","autorun"]).prefault("autorun"),auto_reload:r(["off","lazy","autorun"]).prefault("off"),reactive_tests:l().prefault(!0),watcher_on_save:r(["lazy","autorun"]).prefault("lazy"),default_sql_output:r(q).prefault("auto"),default_auto_download:_(r(O)).prefault([])}).prefault({}),display:n({theme:r(["light","dark","system"]).prefault("light"),code_editor_font_size:d().nonnegative().prefault(14),cell_output:r(["above","below"]).prefault("below"),dataframes:r(["rich","plain"]).prefault("rich"),default_table_page_size:d().prefault(10),default_table_max_columns:d().prefault(50),default_width:r($).prefault("medium").transform(a=>a==="normal"?"compact":a),locale:t().nullable().optional(),reference_highlighting:l().prefault(!0)}).prefault({}),package_management:n({manager:r(M).prefault("pip")}).prefault({}),ai:n({rules:t().prefault(""),mode:r(H).prefault("manual"),inline_tooltip:l().prefault(!1),open_ai:u.optional(),anthropic:u.optional(),google:u.optional(),ollama:u.optional(),openrouter:u.optional(),wandb:u.optional(),open_ai_compatible:u.optional(),azure:u.optional(),bedrock:n({region_name:t().optional(),profile_name:t().optional(),aws_access_key_id:t().optional(),aws_secret_access_key:t().optional()}).optional(),custom_providers:j(t(),u).prefault({}),models:K.prefault({displayed_models:[],custom_models:[]})}).prefault({}),experimental:n({markdown:l().optional(),rtc:l().optional()}).prefault(()=>({})),server:n({disable_file_downloads:l().optional()}).prefault(()=>({})),diagnostics:n({enabled:l().optional(),sql_linter:l().optional()}).prefault(()=>({})),sharing:n({html:l().optional(),wasm:l().optional()}).optional(),mcp:n({presets:_(r(["marimo","context7"])).optional()}).optional().prefault({})}).partial().prefault(()=>({completion:{},save:{},formatting:{},keymap:{},runtime:{},display:{},diagnostics:{},experimental:{},server:{},ai:{},package_management:{},mcp:{}})),A=t(),L=r(q).prefault("auto"),b=h({width:r($).prefault("medium").transform(a=>a==="normal"?"compact":a),app_title:A.nullish(),css_file:t().nullish(),html_head_file:t().nullish(),auto_download:_(r(O)).prefault([]),sql_output:L}).prefault(()=>({width:"medium",auto_download:[],sql_output:"auto"}));function E(a){try{return b.parse(a)}catch(e){return f.error(`Marimo got an unexpected value in the configuration file: ${e}`),b.parse({})}}function Q(a){try{let e=y.parse(a);for(let[p,s]of Object.entries(e.experimental??{}))s===!0&&f.log(`\u{1F9EA} Experimental feature "${p}" is enabled.`);return e}catch(e){return e instanceof J?f.error(`Marimo got an unexpected value in the configuration file: ${I(e)}`):f.error(`Marimo got an unexpected value in the configuration file: ${e}`),P()}}function V(a){try{let e=a;return F(typeof e=="object","internal-error: marimo-config-overrides is not an object"),Object.keys(e).length>0&&f.log("\u{1F527} Project configuration overrides:",e),e}catch(e){return f.error(`Marimo got an unexpected configuration overrides: ${e}`),{}}}function P(){return y.parse({completion:{},save:{},formatting:{},keymap:{},runtime:{},display:{},diagnostics:{},experimental:{},server:{},ai:{},package_management:{},mcp:{}})}var W=N();const v=o(P()),T=o({}),i=o(a=>{let e=a(T);return R({},a(v),e)}),X=o(a=>a(i).runtime.auto_instantiate),Y=o(a=>a(i).keymap.overrides??{}),Z=o(U()),aa=o(a=>new S(a(Y),{platform:a(Z)})),ea=o(a=>a(i).save),ta=o(a=>a(i).ai),oa=o(a=>a(i).completion),ra=o(a=>a(i).keymap.preset);function la(){return z(v)}function na(){let a=(0,W.c)(3),e=C(i),p=k(v),s;return a[0]!==e||a[1]!==p?(s=[e,p],a[0]=e,a[1]=p,a[2]=s):s=a[2],s}function ia(){return x.get(i)}const sa=o(a=>B(a(i)));o(a=>a(i).display.code_editor_font_size);const pa=o(a=>a(i).display.locale);function B(a){var e,p,s,m,c,w;return!!((p=(e=a.ai)==null?void 0:e.models)!=null&&p.chat_model)||!!((m=(s=a.ai)==null?void 0:s.models)!=null&&m.edit_model)||!!((w=(c=a.ai)==null?void 0:c.models)!=null&&w.autocomplete_model)}const g=o(E({}));function ua(){return z(g)}function fa(){return k(g)}function ma(){return x.get(g)}const ca=o(a=>a(g).width);o(a=>{var m,c;let e=a(i),p=((m=e.snippets)==null?void 0:m.custom_paths)??[],s=(c=e.snippets)==null?void 0:c.include_default_snippets;return p.length>0||s===!0});const da=o(a=>{var e;return((e=a(i).server)==null?void 0:e.disable_file_downloads)??!1});function _a(){return!1}export{Q as A,b as C,y as D,M as E,E as O,v as S,G as T,i as _,ca as a,fa as b,oa as c,ma as d,ia as f,pa as g,ra as h,g as i,V as k,T as l,B as m,ta as n,X as o,aa as p,sa as r,ea as s,_a as t,da as u,ua as v,A as w,la as x,na as y};