@marimo-team/frontend 0.21.2-dev63 → 0.21.2-dev69

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 (542) hide show
  1. package/dist/assets/{CellStatus-CSyn_YBv.js → CellStatus-BWh3L8zx.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-Dl5LOVOh.js → ConnectedDataExplorerComponent-BUeDbkXy.js} +1 -1
  3. package/dist/assets/JsonOutput-Bmx1vme7.js +46 -0
  4. package/dist/assets/LazyAnyLanguageCodeMirror-BTEcIffn.js +2 -0
  5. package/dist/assets/{MarimoErrorOutput-DocWeKjV.js → MarimoErrorOutput-3snr3JrQ.js} +4 -4
  6. package/dist/assets/{RenderHTML-26aAKQ-8.js → RenderHTML-C9ZqxJ8H.js} +1 -1
  7. package/dist/assets/{add-cell-with-ai-BSWYMy0y.js → add-cell-with-ai-u_AX7UAd.js} +9 -9
  8. package/dist/assets/{add-connection-dialog-S-Hiw5Sn.js → add-connection-dialog-COHTxTf9.js} +1 -1
  9. package/dist/assets/{agent-panel-lhTAqQ2T.js → agent-panel-DiqyaNm8.js} +5 -5
  10. package/dist/assets/{ai-model-dropdown-C_T_oAXa.js → ai-model-dropdown-Dybmv5gR.js} +4 -4
  11. package/dist/assets/{any-language-editor-Dx3VFLbz.js → any-language-editor-DVOJvjS_.js} +1 -1
  12. package/dist/assets/apl-EWXxdJ89.js +1 -0
  13. package/dist/assets/{app-config-button-CEpYCUvC.js → app-config-button-BldM7HZH.js} +1 -1
  14. package/dist/assets/{arc-CFxCF0f6.js → arc-CM3JIGAK.js} +1 -1
  15. package/dist/assets/{architecture-7HQA4BMR-3vsMDKTP.js → architecture-7HQA4BMR-CjBWfzkw.js} +1 -1
  16. package/dist/assets/{architectureDiagram-VXUJARFQ-D9kPM0z9.js → architectureDiagram-VXUJARFQ-Bj7Il1tu.js} +1 -1
  17. package/dist/assets/asciiarmor-DSR32lM3.js +1 -0
  18. package/dist/assets/asn1-CzLTElTA.js +1 -0
  19. package/dist/assets/{blockDiagram-VD42YOAC-BAyg1LmM.js → blockDiagram-VD42YOAC-oQ23Vi0_.js} +1 -1
  20. package/dist/assets/brainfuck-C9KAsPxY.js +1 -0
  21. package/dist/assets/{c4Diagram-YG6GDRKO--4bijtys.js → c4Diagram-YG6GDRKO-BmG_s0MV.js} +1 -1
  22. package/dist/assets/{cache-panel-tss6GZ39.js → cache-panel-CcvLLOUr.js} +1 -1
  23. package/dist/assets/{cell-editor-DlHW5qr3.js → cell-editor-D6-drdh3.js} +8 -8
  24. package/dist/assets/{cell-link-BgNPg6FR.js → cell-link-DV3G9zVQ.js} +1 -1
  25. package/dist/assets/{cells-BZ2tqr8k.js → cells-B8rT_yJt.js} +54 -54
  26. package/dist/assets/channel-Ce6sVGv4.js +1 -0
  27. package/dist/assets/{chat-display-2RrXeUHQ.js → chat-display-DSlMdLnv.js} +1 -1
  28. package/dist/assets/chat-panel-BhurwxDK.js +3 -0
  29. package/dist/assets/{chat-ui-gqaOvAn5.js → chat-ui-BL1vsaOH.js} +1 -1
  30. package/dist/assets/{chunk-4BX2VUAB-DF0hGcQN.js → chunk-4BX2VUAB-B189RnQe.js} +1 -1
  31. package/dist/assets/chunk-55IACEB6-BKJUfbeh.js +1 -0
  32. package/dist/assets/chunk-5FQGJX7Z-KaqPPQRg.js +113 -0
  33. package/dist/assets/{chunk-ABZYJK2D-YAqD84U8.js → chunk-ABZYJK2D-B25ZPF-K.js} +3 -3
  34. package/dist/assets/{chunk-ATLVNIR6-DbiqnFFy.js → chunk-ATLVNIR6-B45gjfoT.js} +1 -1
  35. package/dist/assets/{chunk-B4BG7PRW-CPghmS_2.js → chunk-B4BG7PRW-uViI8VWN.js} +1 -1
  36. package/dist/assets/{chunk-CVBHYZKI-5HVb4Wim.js → chunk-CVBHYZKI-DDPYtx7T.js} +1 -1
  37. package/dist/assets/{chunk-DI55MBZ5-CfK3aKqu.js → chunk-DI55MBZ5-DLM1fyq0.js} +1 -1
  38. package/dist/assets/{chunk-EXTU4WIE-Ce4YyDo3.js → chunk-EXTU4WIE-se83eFLa.js} +1 -1
  39. package/dist/assets/{chunk-FMBD7UC4-BeZPwy7p.js → chunk-FMBD7UC4-DVUAz4cp.js} +1 -1
  40. package/dist/assets/{chunk-HN2XXSSU-DjhZVPDs.js → chunk-HN2XXSSU-Bm9ByQAV.js} +1 -1
  41. package/dist/assets/{chunk-JA3XYJ7Z-DZPNtCK-.js → chunk-JA3XYJ7Z-Bf9EPUd3.js} +1 -1
  42. package/dist/assets/{chunk-JZLCHNYA-Dpe2M-yf.js → chunk-JZLCHNYA-CgH-oTl4.js} +1 -1
  43. package/dist/assets/{chunk-MI3HLSF2-pZk5-wBb.js → chunk-MI3HLSF2-BjSxv-Tb.js} +1 -1
  44. package/dist/assets/{chunk-N4CR4FBY-DUuhotFe.js → chunk-N4CR4FBY-DggtmLIl.js} +2 -2
  45. package/dist/assets/{chunk-QN33PNHL-DOzVADWo.js → chunk-QN33PNHL-BieKJXyS.js} +1 -1
  46. package/dist/assets/{chunk-QXUST7PY-Bs7vzMFW.js → chunk-QXUST7PY-8icnqUGK.js} +1 -1
  47. package/dist/assets/{chunk-QZHKN3VN-iAvgjPDy.js → chunk-QZHKN3VN-CETeUy72.js} +1 -1
  48. package/dist/assets/{chunk-S3R3BYOJ-CmOcQqk_.js → chunk-S3R3BYOJ-Czh1h7v6.js} +1 -1
  49. package/dist/assets/{chunk-TZMSLE5B-C1A4ubRR.js → chunk-TZMSLE5B-jYelYMXU.js} +1 -1
  50. package/dist/assets/classDiagram-2ON5EDUG-hMIK1Zdj.js +1 -0
  51. package/dist/assets/classDiagram-v2-WZHVMYZB-CoXOcl4J.js +1 -0
  52. package/dist/assets/{clike-BbrvoIeH.js → clike-OJZcTpQL.js} +1 -1
  53. package/dist/assets/clojure-DQhuUUMF.js +1 -0
  54. package/dist/assets/cmake-CH_Sxc86.js +1 -0
  55. package/dist/assets/cobol-CUc3YqiS.js +1 -0
  56. package/dist/assets/{code-block-37QAKDTI-DlumEtkK.js → code-block-37QAKDTI-OmWrUFvA.js} +1 -1
  57. package/dist/assets/coffeescript-jkPo-KDH.js +1 -0
  58. package/dist/assets/{column-preview-ClCjoT33.js → column-preview-MbViuzSN.js} +1 -1
  59. package/dist/assets/{command-BeKqRjOY.js → command-DvKBTmQJ.js} +1 -1
  60. package/dist/assets/command-palette-D1yVCClb.js +1 -0
  61. package/dist/assets/{common-D8-arIFt.js → common-MJu6yCEK.js} +1 -1
  62. package/dist/assets/commonlisp-Da0K5kk2.js +1 -0
  63. package/dist/assets/{components-4-hSIFip.js → components-CWfQv9p5.js} +1 -1
  64. package/dist/assets/components-fIfcCZSp.js +1 -0
  65. package/dist/assets/context-aware-panel-BPlijhXd.js +3 -0
  66. package/dist/assets/{cose-bilkent-S5V4N54A-Dc-Xjmtt.js → cose-bilkent-S5V4N54A-Bi0_d7cB.js} +1 -1
  67. package/dist/assets/crystal-BNWfY9C_.js +1 -0
  68. package/dist/assets/{css-D6ibtNcd.js → css-Cupd7xng.js} +1 -1
  69. package/dist/assets/cypher--c26tz0e.js +1 -0
  70. package/dist/assets/d-Byku2dmh.js +1 -0
  71. package/dist/assets/{dagre-6UL2VRFP-CwgYeOyd.js → dagre-6UL2VRFP-Cj7QD8QV.js} +1 -1
  72. package/dist/assets/{data-grid-overlay-editor-DGw11cpx.js → data-grid-overlay-editor-CrDdi6s3.js} +1 -1
  73. package/dist/assets/{datasource-xu50qvjI.js → datasource-xomiPYKd.js} +2 -2
  74. package/dist/assets/{dependency-graph-panel-_khCuhB-.js → dependency-graph-panel-B24Gr6L4.js} +3 -3
  75. package/dist/assets/{diagram-PSM6KHXK-DSWsukz1.js → diagram-PSM6KHXK-f8hiJ27Z.js} +1 -1
  76. package/dist/assets/{diagram-QEK2KX5R-CUGL1lw-.js → diagram-QEK2KX5R-DhD0I0gb.js} +1 -1
  77. package/dist/assets/{diagram-S2PKOQOG-CNDV3U9h.js → diagram-S2PKOQOG-CMxSsKXF.js} +1 -1
  78. package/dist/assets/diff-a9CLcKdR.js +1 -0
  79. package/dist/assets/dist-BBGASQNR.js +1 -0
  80. package/dist/assets/{dist-DoTdV6qI.js → dist-BRCCPMsT.js} +1 -1
  81. package/dist/assets/{dist-BGKOvmq0.js → dist-CJ8RtgvK.js} +1 -1
  82. package/dist/assets/{dist-3Yb9jUpo.js → dist-COABhHhr.js} +1 -1
  83. package/dist/assets/dist-Cp7t_Bws.js +1 -0
  84. package/dist/assets/{dist-CtXmSZyI.js → dist-DROvTz9O.js} +1 -1
  85. package/dist/assets/dist-DWBTB8aa.js +1 -0
  86. package/dist/assets/{dist-DaPIfS-Q.js → dist-DeX768Hg.js} +1 -1
  87. package/dist/assets/{dist-p1_vuZ9R.js → dist-DrDZNjDr.js} +1 -1
  88. package/dist/assets/dist-Hf_DuPpM.js +7 -0
  89. package/dist/assets/{dist-Dhl1En-E.js → dist-LxLdJkvD.js} +1 -1
  90. package/dist/assets/{dist-DMoYJC-G.js → dist-VjWmUZA0.js} +1 -1
  91. package/dist/assets/{dist-Cgj9ydRR.js → dist-X-byYzEZ.js} +1 -1
  92. package/dist/assets/dist-Xnna0a3m.js +1 -0
  93. package/dist/assets/{dist-CgQ63H-M.js → dist-y02bFELW.js} +1 -1
  94. package/dist/assets/{dockerfile-bIFruQXZ.js → dockerfile-Cgz0GlPW.js} +1 -1
  95. package/dist/assets/{documentation-panel-B9z_DT6E.js → documentation-panel-DHLN-LCs.js} +1 -1
  96. package/dist/assets/{download-BX5RBVL8.js → download-CNJtCoWG.js} +4 -4
  97. package/dist/assets/dtd-CmqpGLbC.js +1 -0
  98. package/dist/assets/dylan-Cihtx9iT.js +1 -0
  99. package/dist/assets/ecl-CZoQOU3U.js +1 -0
  100. package/dist/assets/{edit-page-CZshKgxH.js → edit-page-DSclvhsD.js} +7 -7
  101. package/dist/assets/eiffel-Br4OQEbu.js +1 -0
  102. package/dist/assets/elm-BPOnYPcO.js +1 -0
  103. package/dist/assets/{erDiagram-Q2GNP2WA-DfiRRg2v.js → erDiagram-Q2GNP2WA-BZbca8vs.js} +1 -1
  104. package/dist/assets/erlang-DuwMV84m.js +1 -0
  105. package/dist/assets/{error-panel-B-L35J0Q.js → error-panel-BprMlRWd.js} +1 -1
  106. package/dist/assets/{esm-Uis3U2sE.js → esm-BjKAkBIt.js} +1 -1
  107. package/dist/assets/factor-6YAhArFy.js +1 -0
  108. package/dist/assets/{factor-COZKt8xO.js → factor-ByjtQqb6.js} +1 -1
  109. package/dist/assets/{file-explorer-panel-DSpZ25B3.js → file-explorer-panel-m1TdIRXI.js} +2 -2
  110. package/dist/assets/{file-icons-zT5xSrpN.js → file-icons-I3TgHXBH.js} +1 -1
  111. package/dist/assets/{floating-outline-DlCEpJuo.js → floating-outline-BUsBWnrz.js} +1 -1
  112. package/dist/assets/{flowDiagram-NV44I4VS-Dnt7RRaD.js → flowDiagram-NV44I4VS-ffFKaqut.js} +1 -1
  113. package/dist/assets/{focus-CpM6NAz2.js → focus-DWfOBGUg.js} +1 -1
  114. package/dist/assets/{form-DqfJycRl.js → form-DNvI4VkE.js} +1 -1
  115. package/dist/assets/forth-2Nj_EUdH.js +1 -0
  116. package/dist/assets/fortran-CCKPCngf.js +1 -0
  117. package/dist/assets/{gallery-page-plavkcxH.js → gallery-page-C-cbnxxr.js} +1 -1
  118. package/dist/assets/{ganttDiagram-JELNMOA3-DzaeerR-.js → ganttDiagram-JELNMOA3-fI3e8q9G.js} +1 -1
  119. package/dist/assets/gas-DQfJyQA6.js +1 -0
  120. package/dist/assets/gherkin-CtG4Rl1f.js +1 -0
  121. package/dist/assets/{gitGraph-G5XIXVHT-DX1Iaeeg.js → gitGraph-G5XIXVHT-Dr_vttV5.js} +1 -1
  122. package/dist/assets/{gitGraphDiagram-V2S2FVAM-BwL84Mis.js → gitGraphDiagram-V2S2FVAM-B9zkU5OL.js} +1 -1
  123. package/dist/assets/{glide-data-editor-BoppQYWx.js → glide-data-editor-BUABnEhp.js} +4 -4
  124. package/dist/assets/{globals-zG_ueqN3.js → globals-B7uZUVXG.js} +1 -1
  125. package/dist/assets/groovy-DmN1hhD-.js +1 -0
  126. package/dist/assets/haskell-Bv99dcka.js +1 -0
  127. package/dist/assets/haxe-C4SwAtv2.js +1 -0
  128. package/dist/assets/{home-page-CPKakvcY.js → home-page-B1ioyqaQ.js} +2 -2
  129. package/dist/assets/{hooks-CpTBKWcv.js → hooks-BamtnkZu.js} +1 -1
  130. package/dist/assets/{html-to-image-D_3oFpSp.js → html-to-image-BtnUxAf2.js} +1 -1
  131. package/dist/assets/idl-Cip3qUaw.js +1 -0
  132. package/dist/assets/index-ZQyELpNQ.js +35 -0
  133. package/dist/assets/{info-VBDWY6EO-DI87Cx_N.js → info-VBDWY6EO-_MKnIvva.js} +1 -1
  134. package/dist/assets/infoDiagram-HS3SLOUP-DcmWVuHy.js +2 -0
  135. package/dist/assets/javascript-D01OZFLf.js +1 -0
  136. package/dist/assets/{journeyDiagram-XKPGCS4Q-KRjBx01o.js → journeyDiagram-XKPGCS4Q-Bi3SDkGt.js} +1 -1
  137. package/dist/assets/julia-CdUg5Gin.js +1 -0
  138. package/dist/assets/{kanban-definition-3W4ZIXB7-C9LSOY6_.js → kanban-definition-3W4ZIXB7-DHPI88SO.js} +1 -1
  139. package/dist/assets/katex-CKMiPDPy.js +1 -0
  140. package/dist/assets/{kiosk-mode-PvGxCz81.js → kiosk-mode-DvjY7Q8k.js} +1 -1
  141. package/dist/assets/{layout-am3J4ZNA.js → layout-BprbwmmO.js} +4 -4
  142. package/dist/assets/{line-vDGbKzUj.js → line-BX1v8gkY.js} +1 -1
  143. package/dist/assets/{linear-JR9qrU26.js → linear-_5G-OhLA.js} +1 -1
  144. package/dist/assets/livescript-CmA_pEQi.js +1 -0
  145. package/dist/assets/{logs-panel-CIdtLrmS.js → logs-panel-Iivn5vVF.js} +1 -1
  146. package/dist/assets/{loro_wasm_bg-BYni_6Sh.js → loro_wasm_bg-C9dMIWjp.js} +1 -1
  147. package/dist/assets/lua-BBGGibto.js +1 -0
  148. package/dist/assets/markdown-renderer-f7AvSa1a.js +5 -0
  149. package/dist/assets/mathematica-EVwiHsb7.js +1 -0
  150. package/dist/assets/mbox-f9FpJMps.js +1 -0
  151. package/dist/assets/mermaid-4DMBBIKO-CsD09XZ_.js +1 -0
  152. package/dist/assets/{mermaid-g45SBZs4.js → mermaid-BdekQaCQ.js} +3 -3
  153. package/dist/assets/{mermaid-parser.core-D2CUV57N.js → mermaid-parser.core-hTN4xwYK.js} +2 -2
  154. package/dist/assets/{mhchem-eTdlE0-_.js → mhchem-CgESkxWV.js} +1 -1
  155. package/dist/assets/micromark-factory-space-4isUgE6w.js +1 -0
  156. package/dist/assets/{mindmap-definition-VGOIOE7T-DbAsaD82.js → mindmap-definition-VGOIOE7T-DEN1Ym_B.js} +1 -1
  157. package/dist/assets/mirc-CKQuidRI.js +1 -0
  158. package/dist/assets/mllike-DSE7K0L_.js +1 -0
  159. package/dist/assets/modelica-BLWpmE6J.js +1 -0
  160. package/dist/assets/mscgen-DUGTvav7.js +1 -0
  161. package/dist/assets/mumps-De-aL68G.js +1 -0
  162. package/dist/assets/{name-cell-input-CFXvT7wQ.js → name-cell-input-CzVNuMqK.js} +1 -1
  163. package/dist/assets/{nsis-CQJx4ihu.js → nsis-BKA2hITd.js} +1 -1
  164. package/dist/assets/nsis-GZVZ8s9U.js +1 -0
  165. package/dist/assets/ntriples-8e_qYaH4.js +1 -0
  166. package/dist/assets/{number-overlay-editor-BIXBlRQQ.js → number-overlay-editor-CDWHq1mJ.js} +1 -1
  167. package/dist/assets/octave-BV_-gmS1.js +1 -0
  168. package/dist/assets/{ordinal-vRIIH2-b.js → ordinal-BL0TAfDQ.js} +1 -1
  169. package/dist/assets/{outline-panel-Dbp5O4xk.js → outline-panel-QyE6tr_2.js} +1 -1
  170. package/dist/assets/oz-B0uIrvBT.js +1 -0
  171. package/dist/assets/{packages-panel-C6Cj2Dox.js → packages-panel-D9pbtgFY.js} +1 -1
  172. package/dist/assets/{packet-DYOGHKS2-tVzgtQkA.js → packet-DYOGHKS2-Cr8AvEnH.js} +1 -1
  173. package/dist/assets/panels-CIHy1Jh4.js +1 -0
  174. package/dist/assets/pascal-P8oljycx.js +1 -0
  175. package/dist/assets/perl-C9B7mnkS.js +1 -0
  176. package/dist/assets/{pie-VRWISCQL-QmTjjdah.js → pie-VRWISCQL-18iiky4b.js} +1 -1
  177. package/dist/assets/{pieDiagram-ADFJNKIX-DPlhC-O4.js → pieDiagram-ADFJNKIX-BY90tkn0.js} +1 -1
  178. package/dist/assets/pig-CrydCWlQ.js +1 -0
  179. package/dist/assets/powershell-BNzz8aRp.js +1 -0
  180. package/dist/assets/{process-output-CgWMJc-C.js → process-output-5fC8hAfT.js} +1 -1
  181. package/dist/assets/properties-C81OZegg.js +1 -0
  182. package/dist/assets/protobuf-DXcVcUng.js +1 -0
  183. package/dist/assets/{pug-Yt6Urxo2.js → pug-Bc3B5zy9.js} +1 -1
  184. package/dist/assets/pug-D2oI7kNu.js +1 -0
  185. package/dist/assets/puppet-DNlzsFMc.js +1 -0
  186. package/dist/assets/python-CdBemvol.js +1 -0
  187. package/dist/assets/q-CB51ViwQ.js +1 -0
  188. package/dist/assets/{quadrantDiagram-AYHSOK5B-jnE3mG3Y.js → quadrantDiagram-AYHSOK5B-DscgxREu.js} +1 -1
  189. package/dist/assets/r-lEjVwdCN.js +1 -0
  190. package/dist/assets/{radar-ZZBFDIW7-2_FgLRzo.js → radar-ZZBFDIW7-DP-828em.js} +1 -1
  191. package/dist/assets/{react-vega-_sDwqIeC.js → react-vega-CFucxlM_.js} +1 -1
  192. package/dist/assets/{react-vega-Bg7wgNWC.js → react-vega-C_nbap4W.js} +1 -1
  193. package/dist/assets/{readonly-python-code-CjHN1YzV.js → readonly-python-code-CvuT43MO.js} +1 -1
  194. package/dist/assets/{requirementDiagram-UZGBJVZJ-BwnFZdZm.js → requirementDiagram-UZGBJVZJ-DuOL6ww3.js} +1 -1
  195. package/dist/assets/rpm-DDM5IEHy.js +1 -0
  196. package/dist/assets/ruby-93dn3nLg.js +1 -0
  197. package/dist/assets/run-page-DMxwtlBe.js +1 -0
  198. package/dist/assets/{sankeyDiagram-TZEHDZUN-G8bGgtok.js → sankeyDiagram-TZEHDZUN-CrhC3Xh7.js} +1 -1
  199. package/dist/assets/sas-CbG03D2N.js +1 -0
  200. package/dist/assets/scheme-B2cyUK_0.js +1 -0
  201. package/dist/assets/scratchpad-panel-Bkco4w7y.js +1 -0
  202. package/dist/assets/{secrets-panel-v_peqjs9.js → secrets-panel-ByDa4skC.js} +1 -1
  203. package/dist/assets/{sequenceDiagram-WL72ISMW-CVokZRk6.js → sequenceDiagram-WL72ISMW-DNBtGacp.js} +1 -1
  204. package/dist/assets/session-panel-Bg7Zvg3Y.js +1 -0
  205. package/dist/assets/shell-BUKevxDL.js +1 -0
  206. package/dist/assets/sieve-DBd5VCju.js +1 -0
  207. package/dist/assets/smalltalk-DEMxPY2H.js +1 -0
  208. package/dist/assets/{snippets-panel-wGOEVyqu.js → snippets-panel-Cn-0B9yk.js} +1 -1
  209. package/dist/assets/sparql-CuX1PPeN.js +1 -0
  210. package/dist/assets/{src-aBHYsoaw.js → src-BNdxo5s1.js} +1 -1
  211. package/dist/assets/{state-CI4FLWoL.js → state-DLmIk5GZ.js} +1 -1
  212. package/dist/assets/{stateDiagram-FKZM4ZOC-M7FBTKFZ.js → stateDiagram-FKZM4ZOC-Krq7gbW2.js} +1 -1
  213. package/dist/assets/stateDiagram-v2-4FDKWEC3-Cw5LDI5M.js +1 -0
  214. package/dist/assets/{step-B_iSQA2q.js → step-OYH2hb7p.js} +1 -1
  215. package/dist/assets/stylus-aDxbv1u4.js +1 -0
  216. package/dist/assets/swift-OTokpssg.js +1 -0
  217. package/dist/assets/{switch-SqaUg_Rv.js → switch-CdyDieX7.js} +1 -1
  218. package/dist/assets/tcl-DJhWqArt.js +1 -0
  219. package/dist/assets/{terminal-C9H1AYRi.js → terminal-Cdh7bzOl.js} +1 -1
  220. package/dist/assets/{textarea-7F6-nuwz.js → textarea-y9GCP54I.js} +1 -1
  221. package/dist/assets/textile-DpS9C_zY.js +1 -0
  222. package/dist/assets/{time-Dl8wmbMf.js → time-LzCXNX8h.js} +1 -1
  223. package/dist/assets/{timeline-definition-IT6M3QCI-CfGh-Wfj.js → timeline-definition-IT6M3QCI-DOl0hCPz.js} +1 -1
  224. package/dist/assets/toml-kj-ibVms.js +1 -0
  225. package/dist/assets/{tracing-DxuknZTG.js → tracing-CggYKKpk.js} +1 -1
  226. package/dist/assets/{tracing-panel-yQoYble5.js → tracing-panel-BYfwYVLg.js} +2 -2
  227. package/dist/assets/{treemap-GDKQZRPO-Cnt0pazm.js → treemap-GDKQZRPO-CWmDSzQU.js} +1 -1
  228. package/dist/assets/troff-DLJL07gk.js +1 -0
  229. package/dist/assets/ttcn-cfg-DuCZQ2Km.js +1 -0
  230. package/dist/assets/ttcn-twc1Q5xq.js +1 -0
  231. package/dist/assets/turtle-BiLqIa2_.js +1 -0
  232. package/dist/assets/{useAddCell-Dluq9z9F.js → useAddCell-BGHDEB1g.js} +1 -1
  233. package/dist/assets/useCellActionButton-BbGQe83V.js +1 -0
  234. package/dist/assets/{useDeleteCell-B-MR7EAI.js → useDeleteCell-DG1VBfwX.js} +1 -1
  235. package/dist/assets/{useDependencyPanelTab-D39ukyvA.js → useDependencyPanelTab-luj9RYTO.js} +1 -1
  236. package/dist/assets/{useNotebookActions-DH_ihkjl.js → useNotebookActions-D_r5jyXa.js} +1 -1
  237. package/dist/assets/useRunCells--USKPEQy.js +1 -0
  238. package/dist/assets/{useSplitCell-BwJPHVng.js → useSplitCell-DGXfa81A.js} +1 -1
  239. package/dist/assets/vb-BYvNbVBU.js +1 -0
  240. package/dist/assets/vbscript-CE30tjpc.js +1 -0
  241. package/dist/assets/{vega-component-BlvDymW4.js → vega-component-C3vNdTdH.js} +1 -1
  242. package/dist/assets/velocity-k2jshUC1.js +1 -0
  243. package/dist/assets/verilog-D-u-JakI.js +1 -0
  244. package/dist/assets/vhdl-CdNH8uWZ.js +1 -0
  245. package/dist/assets/webidl-CdMZNGiF.js +1 -0
  246. package/dist/assets/{write-secret-modal-xvi72o3J.js → write-secret-modal-BlZo70J1.js} +1 -1
  247. package/dist/assets/xquery-XKE48gN2.js +1 -0
  248. package/dist/assets/{xychartDiagram-PRI3JC2R-BjJjKS-4.js → xychartDiagram-PRI3JC2R-sn3q6uOF.js} +1 -1
  249. package/dist/assets/yacas-DbyKcdb9.js +1 -0
  250. package/dist/assets/z80-F2-i3nLg.js +1 -0
  251. package/dist/index.html +39 -39
  252. package/package.json +1 -1
  253. package/src/__mocks__/requests.ts +1 -0
  254. package/src/components/data-table/__tests__/columns.test.tsx +138 -0
  255. package/src/components/data-table/columns.tsx +44 -4
  256. package/src/components/data-table/filters.ts +1 -0
  257. package/src/components/datasources/datasources.tsx +45 -0
  258. package/src/components/markdown/markdown-renderer.tsx +18 -2
  259. package/src/core/datasets/__tests__/data-source.test.ts +88 -1
  260. package/src/core/datasets/data-source-connections.ts +44 -0
  261. package/src/core/datasets/request-registry.ts +13 -0
  262. package/src/core/islands/bridge.ts +1 -0
  263. package/src/core/islands/main.ts +1 -0
  264. package/src/core/kernel/messages.ts +2 -0
  265. package/src/core/network/requests-lazy.ts +1 -0
  266. package/src/core/network/requests-network.ts +8 -0
  267. package/src/core/network/requests-static.ts +1 -0
  268. package/src/core/network/requests-toasting.tsx +1 -0
  269. package/src/core/network/types.ts +2 -0
  270. package/src/core/wasm/bridge.ts +10 -0
  271. package/src/core/websocket/useMarimoKernelConnection.tsx +4 -0
  272. package/src/plugins/impl/DataTablePlugin.tsx +27 -0
  273. package/dist/assets/JsonOutput-Ca8qF0Zd.js +0 -46
  274. package/dist/assets/LazyAnyLanguageCodeMirror-BLyxzRTe.js +0 -2
  275. package/dist/assets/apl-DmIuLoM5.js +0 -1
  276. package/dist/assets/asciiarmor-Dw7r6FD5.js +0 -1
  277. package/dist/assets/asn1-49M6dOZ5.js +0 -1
  278. package/dist/assets/brainfuck-Dzb-bFPz.js +0 -1
  279. package/dist/assets/channel-8md9AqRV.js +0 -1
  280. package/dist/assets/chat-panel-DTfbqRHb.js +0 -3
  281. package/dist/assets/chunk-55IACEB6-DxdbD43d.js +0 -1
  282. package/dist/assets/chunk-5FQGJX7Z-Fb8WLBdo.js +0 -113
  283. package/dist/assets/classDiagram-2ON5EDUG-Ds4AwoP7.js +0 -1
  284. package/dist/assets/classDiagram-v2-WZHVMYZB-BmeOa_lI.js +0 -1
  285. package/dist/assets/clojure-D3f46AOj.js +0 -1
  286. package/dist/assets/cmake-CRns6FWA.js +0 -1
  287. package/dist/assets/cobol-tD7VjYkY.js +0 -1
  288. package/dist/assets/coffeescript-BMoHntr0.js +0 -1
  289. package/dist/assets/command-palette-CF05xO-u.js +0 -1
  290. package/dist/assets/commonlisp-tEbZ2txa.js +0 -1
  291. package/dist/assets/components-DlVdNzZL.js +0 -1
  292. package/dist/assets/context-aware-panel-BNcqd7JQ.js +0 -3
  293. package/dist/assets/crystal-tXxqRSmg.js +0 -1
  294. package/dist/assets/cypher-Clgr1THu.js +0 -1
  295. package/dist/assets/d-DGpF2gtm.js +0 -1
  296. package/dist/assets/diff-DQ8hzfLT.js +0 -1
  297. package/dist/assets/dist-BqsOX_yK.js +0 -1
  298. package/dist/assets/dist-CBYsx1lD.js +0 -1
  299. package/dist/assets/dist-CkG7HeJJ.js +0 -1
  300. package/dist/assets/dist-DkNQl8fU.js +0 -1
  301. package/dist/assets/dtd-9XKjDaRs.js +0 -1
  302. package/dist/assets/dylan-DQ7WSVaJ.js +0 -1
  303. package/dist/assets/ecl-_b3Ij92M.js +0 -1
  304. package/dist/assets/eiffel-v705-6sV.js +0 -1
  305. package/dist/assets/elm-kOjuB_fu.js +0 -1
  306. package/dist/assets/erlang-BKLrKn97.js +0 -1
  307. package/dist/assets/factor-CKv1cDHM.js +0 -1
  308. package/dist/assets/forth-BeW6w9NP.js +0 -1
  309. package/dist/assets/fortran-B8S6_jJw.js +0 -1
  310. package/dist/assets/gas-T2YF_8DP.js +0 -1
  311. package/dist/assets/gherkin-CCQo3jOa.js +0 -1
  312. package/dist/assets/groovy-D_aCkoaG.js +0 -1
  313. package/dist/assets/haskell-CVb05Hdq.js +0 -1
  314. package/dist/assets/haxe-BETJ4Q1p.js +0 -1
  315. package/dist/assets/idl-C9DSrKQo.js +0 -1
  316. package/dist/assets/index-DIqPLE1R.js +0 -35
  317. package/dist/assets/infoDiagram-HS3SLOUP-D-RQJqJ1.js +0 -2
  318. package/dist/assets/javascript-kMjsCkN0.js +0 -1
  319. package/dist/assets/julia-BP2iEwTU.js +0 -1
  320. package/dist/assets/katex-BPQZrIDk.js +0 -1
  321. package/dist/assets/livescript-DldCoAUO.js +0 -1
  322. package/dist/assets/lua-CZVER5WL.js +0 -1
  323. package/dist/assets/markdown-renderer-CGLrhCH1.js +0 -10
  324. package/dist/assets/mathematica-CyS1-stp.js +0 -1
  325. package/dist/assets/mbox-m36f2d6F.js +0 -1
  326. package/dist/assets/mermaid-4DMBBIKO-BDW1wyAE.js +0 -1
  327. package/dist/assets/mirc-1VmF-8bO.js +0 -1
  328. package/dist/assets/mllike-C03wQNgL.js +0 -1
  329. package/dist/assets/modelica-DIzukV30.js +0 -1
  330. package/dist/assets/mscgen-DWz8dZ6d.js +0 -1
  331. package/dist/assets/mumps-CYbIrX8J.js +0 -1
  332. package/dist/assets/nsis-CTQ0yRGk.js +0 -1
  333. package/dist/assets/ntriples-DSrrK8pU.js +0 -1
  334. package/dist/assets/octave-DMlW_nfV.js +0 -1
  335. package/dist/assets/oz-D3yFc57L.js +0 -1
  336. package/dist/assets/panels-cRpwb1m4.js +0 -1
  337. package/dist/assets/pascal-CQlQ3IN5.js +0 -1
  338. package/dist/assets/perl-DTZU_RzN.js +0 -1
  339. package/dist/assets/pig-Bhpnxpuq.js +0 -1
  340. package/dist/assets/powershell-NPR7ALKW.js +0 -1
  341. package/dist/assets/properties-vlTR87QN.js +0 -1
  342. package/dist/assets/protobuf-ByJ2pOLE.js +0 -1
  343. package/dist/assets/pug-CvW2XR0Z.js +0 -1
  344. package/dist/assets/puppet-Cq5I7FGe.js +0 -1
  345. package/dist/assets/python-BIseM0wl.js +0 -1
  346. package/dist/assets/q-Cxw6-L9w.js +0 -1
  347. package/dist/assets/r-BCPAUffd.js +0 -1
  348. package/dist/assets/rpm-axYHg47r.js +0 -1
  349. package/dist/assets/ruby-C3FVRZdA.js +0 -1
  350. package/dist/assets/run-page-CUq8ZpoZ.js +0 -1
  351. package/dist/assets/sas-CN65u8vG.js +0 -1
  352. package/dist/assets/scheme-CbiUNoDs.js +0 -1
  353. package/dist/assets/scratchpad-panel-CaZOnp24.js +0 -1
  354. package/dist/assets/session-panel-B5exQEib.js +0 -1
  355. package/dist/assets/shell-YEnz9M61.js +0 -1
  356. package/dist/assets/sieve-C-HxQpVW.js +0 -1
  357. package/dist/assets/smalltalk-CzvuDqf0.js +0 -1
  358. package/dist/assets/sparql-Djedbp-5.js +0 -1
  359. package/dist/assets/stateDiagram-v2-4FDKWEC3-BKLDpEGo.js +0 -1
  360. package/dist/assets/stylus-BpnZbov-.js +0 -1
  361. package/dist/assets/swift-DAHNa7bf.js +0 -1
  362. package/dist/assets/tcl-DTQfPx3q.js +0 -1
  363. package/dist/assets/textile-DXtfasKT.js +0 -1
  364. package/dist/assets/toml-BjmTwkhj.js +0 -1
  365. package/dist/assets/troff-Bc3qMmWc.js +0 -1
  366. package/dist/assets/ttcn-Bh7caDZp.js +0 -1
  367. package/dist/assets/ttcn-cfg-D18s1FKk.js +0 -1
  368. package/dist/assets/turtle-B1l6GoUm.js +0 -1
  369. package/dist/assets/useCellActionButton-DBXavVBJ.js +0 -1
  370. package/dist/assets/useRunCells-CwObo_j4.js +0 -1
  371. package/dist/assets/vb-OtZQD18A.js +0 -1
  372. package/dist/assets/vbscript-CMGATyY1.js +0 -1
  373. package/dist/assets/velocity-OiAuGLJe.js +0 -1
  374. package/dist/assets/verilog-S0G4VOpd.js +0 -1
  375. package/dist/assets/vhdl-CXVV79Yf.js +0 -1
  376. package/dist/assets/webidl-y1Tmj9tM.js +0 -1
  377. package/dist/assets/xquery-CwVKvibA.js +0 -1
  378. package/dist/assets/yacas-DR-AnMl3.js +0 -1
  379. package/dist/assets/z80-Lzkm5uuH.js +0 -1
  380. /package/dist/assets/{ImageComparisonComponent-B5E3m5MZ.js → ImageComparisonComponent-DxLwmmB2.js} +0 -0
  381. /package/dist/assets/{Inputs-eZfYMYYP.js → Inputs-W60db12_.js} +0 -0
  382. /package/dist/assets/{Plot-Dmxt4wRt.js → Plot-I39ar7fU.js} +0 -0
  383. /package/dist/assets/{apl-BHRaMaxV.js → apl-lvMF4O0c.js} +0 -0
  384. /package/dist/assets/{array-DU5T25JX.js → array-CRE2-wlR.js} +0 -0
  385. /package/dist/assets/{asciiarmor-Drw3Y_jV.js → asciiarmor-NoSIZ2RH.js} +0 -0
  386. /package/dist/assets/{asn1-B3Ivdxp7.js → asn1-Bn2zPmGi.js} +0 -0
  387. /package/dist/assets/{asterisk-GbGHf9GU.js → asterisk-1BK_fEUT.js} +0 -0
  388. /package/dist/assets/{azure-DElN0h0I.js → azure-BMhMRXAG.js} +0 -0
  389. /package/dist/assets/{brainfuck-Bmwix9UB.js → brainfuck-CyXrVlbF.js} +0 -0
  390. /package/dist/assets/{bundle.esm-idScn0w0.js → bundle.esm-_LzfhNmX.js} +0 -0
  391. /package/dist/assets/{card-kQvf6H4E.js → card-CBqenxaU.js} +0 -0
  392. /package/dist/assets/{chunk-4F5CHEZ2-B4VRPZ37.js → chunk-4F5CHEZ2-CvMYQKai.js} +0 -0
  393. /package/dist/assets/{chunk-B2363JML-CjIajB1P.js → chunk-B2363JML-oWpkFXOG.js} +0 -0
  394. /package/dist/assets/{chunk-DR5Q36YT-Bjmp_CNY.js → chunk-DR5Q36YT-DSjZQa_3.js} +0 -0
  395. /package/dist/assets/{chunk-FRFDVMJY-BfDKbo_T.js → chunk-FRFDVMJY-DxIaf4yl.js} +0 -0
  396. /package/dist/assets/{chunk-PL6DKKU2-pYEFWkPZ.js → chunk-PL6DKKU2-DwnNxWA0.js} +0 -0
  397. /package/dist/assets/{chunk-SJTYNZTY-VcrI9yao.js → chunk-SJTYNZTY-DBAl0fNt.js} +0 -0
  398. /package/dist/assets/{chunk-TQ3KTPDO-tIPcwIpX.js → chunk-TQ3KTPDO-B7j-UFPQ.js} +0 -0
  399. /package/dist/assets/{chunk-UMXZTB3W-Cpwtyir-.js → chunk-UMXZTB3W-BGNdYqf-.js} +0 -0
  400. /package/dist/assets/{clear-button-Cw33rRmg.js → clear-button-CuSHRx11.js} +0 -0
  401. /package/dist/assets/{click-outside-container-CsPwIqYr.js → click-outside-container-CiRBqxMF.js} +0 -0
  402. /package/dist/assets/{clike-E6D0qPLZ.js → clike-DKMmTh42.js} +0 -0
  403. /package/dist/assets/{clojure-D2u7A17s.js → clojure-PSUkitBX.js} +0 -0
  404. /package/dist/assets/{cmake-BAcX9pfJ.js → cmake-DzLpRry9.js} +0 -0
  405. /package/dist/assets/{cobol-Blv8cOIQ.js → cobol-DAqlVpNy.js} +0 -0
  406. /package/dist/assets/{coffeescript-Bd0runsx.js → coffeescript-CVRVei5N.js} +0 -0
  407. /package/dist/assets/{colors-Dtrl_rUb.js → colors-k4pzE1JC.js} +0 -0
  408. /package/dist/assets/{common-keywords-DpBQRN1C.js → common-keywords-CL5lDC0w.js} +0 -0
  409. /package/dist/assets/{commonlisp-B_IfCLCi.js → commonlisp-DGLna-nK.js} +0 -0
  410. /package/dist/assets/{crystal-BPH2tGA2.js → crystal-D1je9SnX.js} +0 -0
  411. /package/dist/assets/{css-DWR7mhwJ.js → css-CpgzfyW4.js} +0 -0
  412. /package/dist/assets/{cypher-S-rGklkM.js → cypher-SIaJhgm6.js} +0 -0
  413. /package/dist/assets/{cytoscape.esm-CVhOSlMZ.js → cytoscape.esm-0erX9Txj.js} +0 -0
  414. /package/dist/assets/{d-C128j5m6.js → d-BQbC3v5b.js} +0 -0
  415. /package/dist/assets/{diff-CThVlVra.js → diff-Du4D-Lj4.js} +0 -0
  416. /package/dist/assets/{dist-21ZHvMu-.js → dist-BKkfH6MG.js} +0 -0
  417. /package/dist/assets/{dist-uEEVcSIS.js → dist-BZJrw9vI.js} +0 -0
  418. /package/dist/assets/{dist-DniPQ7Qm.js → dist-BrZ_53nc.js} +0 -0
  419. /package/dist/assets/{dist-Cy2hdQdy.js → dist-C8Dcw0WD.js} +0 -0
  420. /package/dist/assets/{dist-BxyvBCI5.js → dist-C9G2F7Z1.js} +0 -0
  421. /package/dist/assets/{dist-DUGSlPOG.js → dist-CRmIdrta.js} +0 -0
  422. /package/dist/assets/{dist-Rq9HjYxD.js → dist-CTTKEfeu.js} +0 -0
  423. /package/dist/assets/{dist-CIhoH-X1.js → dist-CwHZ5Z_A.js} +0 -0
  424. /package/dist/assets/{dist-C9z0M-mT.js → dist-CwjzLMbM.js} +0 -0
  425. /package/dist/assets/{dist--yGrqaJH.js → dist-D699xT6P.js} +0 -0
  426. /package/dist/assets/{dist-D8g9Gob3.js → dist-DBBqNJ3C.js} +0 -0
  427. /package/dist/assets/{dist-BZXUFc1L.js → dist-DKnn_Tta.js} +0 -0
  428. /package/dist/assets/{dist-DVEj2fgt.js → dist-DbWhwe76.js} +0 -0
  429. /package/dist/assets/{dist-BHxWDjO3.js → dist-DmMcU97h.js} +0 -0
  430. /package/dist/assets/{dist-BbueVrZr.js → dist-DvbdggRI.js} +0 -0
  431. /package/dist/assets/{dist-lnKPBMeZ.js → dist-SDxzhwJU.js} +0 -0
  432. /package/dist/assets/{dist-BmUQz5fw.js → dist-Sjq7q5Ez.js} +0 -0
  433. /package/dist/assets/{dist-CmNOQaWE.js → dist-epQooxQL.js} +0 -0
  434. /package/dist/assets/{dtd-BloyElsS.js → dtd-C8APvYNQ.js} +0 -0
  435. /package/dist/assets/{duckdb-keywords-DrrKcwLz.js → duckdb-keywords-CKBoTxEb.js} +0 -0
  436. /package/dist/assets/{dylan-BpjltVYk.js → dylan-CTr_RHNL.js} +0 -0
  437. /package/dist/assets/{ebnf-DuKzoTsP.js → ebnf-CviyCkP7.js} +0 -0
  438. /package/dist/assets/{ecl-DIGfXI2n.js → ecl-BVnD0OAx.js} +0 -0
  439. /package/dist/assets/{eiffel-Nuvt3i0o.js → eiffel-9mt0KSLh.js} +0 -0
  440. /package/dist/assets/{elm-khTI8oMm.js → elm-CItjDkKL.js} +0 -0
  441. /package/dist/assets/{empty-state-GQ-H0WrT.js → empty-state-DUEogWxf.js} +0 -0
  442. /package/dist/assets/{erlang-Bz0rifYN.js → erlang-D8gZbSC3.js} +0 -0
  443. /package/dist/assets/{esm-DXwI6ZUw.js → esm-BMWduMhT.js} +0 -0
  444. /package/dist/assets/{esm-DZILy413.js → esm-BQO8KtRU.js} +0 -0
  445. /package/dist/assets/{fcl-DopXl_Cb.js → fcl-DjfeL5F6.js} +0 -0
  446. /package/dist/assets/{field-BpgzO1qL.js → field-BEG4O-GE.js} +0 -0
  447. /package/dist/assets/{formatting-D99dzYue.js → formatting-8sgDjIAp.js} +0 -0
  448. /package/dist/assets/{forth-SxB4ZE9Q.js → forth-DgH1dN75.js} +0 -0
  449. /package/dist/assets/{fortran-DzfX8wbd.js → fortran-DueLTtxK.js} +0 -0
  450. /package/dist/assets/{gas-DBFUG9nK.js → gas-BtO1qNqf.js} +0 -0
  451. /package/dist/assets/{gherkin-6FC2E3f3.js → gherkin-Byo7wP7t.js} +0 -0
  452. /package/dist/assets/{groovy-p_lTFq3O.js → groovy-wqVc62K1.js} +0 -0
  453. /package/dist/assets/{haskell-BEXqDWIp.js → haskell-t8q2n4aR.js} +0 -0
  454. /package/dist/assets/{haxe-CzFMbUhy.js → haxe-I2Ep_IKg.js} +0 -0
  455. /package/dist/assets/{http-BxcKXOao.js → http-VleqgIZJ.js} +0 -0
  456. /package/dist/assets/{icons-CIUvkMzI.js → icons-CAcY8GzB.js} +0 -0
  457. /package/dist/assets/{idl-CuZt9Cr8.js → idl-zLnMWGy-.js} +0 -0
  458. /package/dist/assets/{init-_0O8gaZg.js → init-C5GnArQr.js} +0 -0
  459. /package/dist/assets/{javascript-CULX8PvY.js → javascript-Z0GGm0j8.js} +0 -0
  460. /package/dist/assets/{julia-DowlkI_L.js → julia-iSGDYIgg.js} +0 -0
  461. /package/dist/assets/{katex-BrOUG02-.js → katex-BUjpoqH9.js} +0 -0
  462. /package/dist/assets/{label-CNKB6XuV.js → label-KlZhD0Wz.js} +0 -0
  463. /package/dist/assets/{links-BpU-Tgoi.js → links-BwkQr4sn.js} +0 -0
  464. /package/dist/assets/{livescript-DwfI62L3.js → livescript-BFHCYYQr.js} +0 -0
  465. /package/dist/assets/{loro_wasm_bg-G5oJHASf.js → loro_wasm_bg-DbCRx7th.js} +0 -0
  466. /package/dist/assets/{lua-TCNDuI3W.js → lua-CReDSu5T.js} +0 -0
  467. /package/dist/assets/{marimo-icons-xeZXdanj.js → marimo-icons-DyCeIvCg.js} +0 -0
  468. /package/dist/assets/{math-BSPSgcD8.js → math-D5yoTCoa.js} +0 -0
  469. /package/dist/assets/{mathematica-hf3OzlV6.js → mathematica-Zm2C8amS.js} +0 -0
  470. /package/dist/assets/{mbox-CpM9PyZY.js → mbox-WgafSHjo.js} +0 -0
  471. /package/dist/assets/{mirc-CocHA0SZ.js → mirc-BYSZ-Sqw.js} +0 -0
  472. /package/dist/assets/{mllike-CPBcvlCk.js → mllike-oFV79iRi.js} +0 -0
  473. /package/dist/assets/{modelica--OnAmDkI.js → modelica-Kw0oZiZv.js} +0 -0
  474. /package/dist/assets/{mscgen-CtSx20C4.js → mscgen-zIXnH6Xb.js} +0 -0
  475. /package/dist/assets/{multi-icon-DQ0zErpq.js → multi-icon-CDO-SrVQ.js} +0 -0
  476. /package/dist/assets/{mumps-BavaVlaQ.js → mumps-CpHKxUaP.js} +0 -0
  477. /package/dist/assets/{nginx-BFZZWp0k.js → nginx-D7OKXoUe.js} +0 -0
  478. /package/dist/assets/{node-sql-parser-Bb3JynSW.js → node-sql-parser-GMJwIlZ5.js} +0 -0
  479. /package/dist/assets/{ntriples-B5NSxx1D.js → ntriples-CKdsn4A2.js} +0 -0
  480. /package/dist/assets/{octave-jVWS5ZX5.js → octave-C2KzGqDI.js} +0 -0
  481. /package/dist/assets/{oz-Ci6i2p3E.js → oz-DjI17vbg.js} +0 -0
  482. /package/dist/assets/{panel-context--v5sYr8m.js → panel-context-DsLB_70p.js} +0 -0
  483. /package/dist/assets/{pascal-BI-nobSy.js → pascal-DkEHIeYy.js} +0 -0
  484. /package/dist/assets/{path-Bve_rTap.js → path-CK3C5L0Q.js} +0 -0
  485. /package/dist/assets/{perl-DQPnX7YE.js → perl-awUeMoRf.js} +0 -0
  486. /package/dist/assets/{pig-Bh76ij4R.js → pig-4piEzRGm.js} +0 -0
  487. /package/dist/assets/{powershell-uUfnWMx0.js → powershell-BcdXyDpe.js} +0 -0
  488. /package/dist/assets/{properties-Br22JNZV.js → properties-BCPnyAME.js} +0 -0
  489. /package/dist/assets/{protobuf-DaigdXrD.js → protobuf-UUgrcPiO.js} +0 -0
  490. /package/dist/assets/{puppet-BGGCC9ZJ.js → puppet-CK_Jbc3D.js} +0 -0
  491. /package/dist/assets/{python-DuwDWlpq.js → python-87A6eX9C.js} +0 -0
  492. /package/dist/assets/{q-BbDtxSzU.js → q-JHqp7Nwz.js} +0 -0
  493. /package/dist/assets/{r-CB416o25.js → r-c8ebDReJ.js} +0 -0
  494. /package/dist/assets/{react-resizable-panels.browser.esm-CHZt2sgR.js → react-resizable-panels.browser.esm-Dmf4Xg1J.js} +0 -0
  495. /package/dist/assets/{renderShortcut-DKHsNYY8.js → renderShortcut-BcNNtnIV.js} +0 -0
  496. /package/dist/assets/{request-registry-kkWOuc4m.js → request-registry-5S3nI4D-.js} +0 -0
  497. /package/dist/assets/{requests-ELfSRZg2.js → requests-A6SCIaF6.js} +0 -0
  498. /package/dist/assets/{rpm-DgDcBXHy.js → rpm-CHLEEyak.js} +0 -0
  499. /package/dist/assets/{ruby-ASZz88uL.js → ruby-Y-uPbf0g.js} +0 -0
  500. /package/dist/assets/{runs-ClVtrGLV.js → runs-B_mJSod5.js} +0 -0
  501. /package/dist/assets/{sas-r-6e1yzr.js → sas-Mox1fRNZ.js} +0 -0
  502. /package/dist/assets/{scheme-Zi7xVoso.js → scheme-BnTHsLZG.js} +0 -0
  503. /package/dist/assets/{shell-pXDc9W8j.js → shell-C8EAw2yh.js} +0 -0
  504. /package/dist/assets/{sieve-DMn8OnOt.js → sieve-Dd1bnzub.js} +0 -0
  505. /package/dist/assets/{simple-mode-Bcot9qoq.js → simple-mode-BGiIHaLF.js} +0 -0
  506. /package/dist/assets/{slides-component-BhJkZVhE.js → slides-component-Da4ws_2P.js} +0 -0
  507. /package/dist/assets/{smalltalk-kxU8S6r5.js → smalltalk-BUSkf3e4.js} +0 -0
  508. /package/dist/assets/{solr-BCnpA4mK.js → solr-CDPrSrj5.js} +0 -0
  509. /package/dist/assets/{sparql-CA3NQZJW.js → sparql-DeaDxQi8.js} +0 -0
  510. /package/dist/assets/{spreadsheet-C39QEIvH.js → spreadsheet-BsJYzkOI.js} +0 -0
  511. /package/dist/assets/{sql-CE9Btgz4.js → sql-F2Gt8FSJ.js} +0 -0
  512. /package/dist/assets/{src-cSe6DUft.js → src-BgRVyE5A.js} +0 -0
  513. /package/dist/assets/{state-JpzFxtY6.js → state-DnmL6F-D.js} +0 -0
  514. /package/dist/assets/{stylus-DRN2WCqM.js → stylus-DYCEsZr5.js} +0 -0
  515. /package/dist/assets/{swift-BCXokZ3z.js → swift-Duztmfb3.js} +0 -0
  516. /package/dist/assets/{table-BX1kXOsy.js → table-C-4zXNgf.js} +0 -0
  517. /package/dist/assets/{tcl-CHeLjBFR.js → tcl-DI2Tsoc-.js} +0 -0
  518. /package/dist/assets/{textile-B9G88G2h.js → textile-Bu0-gYeb.js} +0 -0
  519. /package/dist/assets/{tiddlywiki-CIp8hgce.js → tiddlywiki-BiVbsin5.js} +0 -0
  520. /package/dist/assets/{tiki-C22wqq7_.js → tiki-BjQr6gnj.js} +0 -0
  521. /package/dist/assets/{timer-DolQqlHY.js → timer-ubTuPSiq.js} +0 -0
  522. /package/dist/assets/{toggle-iY_IwLg6.js → toggle-wwEdkCCQ.js} +0 -0
  523. /package/dist/assets/{toml-C5eRG8KV.js → toml-DS7p65H0.js} +0 -0
  524. /package/dist/assets/{treemap-wGELRPvg.js → treemap-D7anCkBi.js} +0 -0
  525. /package/dist/assets/{troff-CynCaHoK.js → troff-CmiSltql.js} +0 -0
  526. /package/dist/assets/{ttcn-B5PzIipG.js → ttcn-BcG2XAz0.js} +0 -0
  527. /package/dist/assets/{ttcn-cfg-Cboa6Jff.js → ttcn-cfg-rI2k2_Cz.js} +0 -0
  528. /package/dist/assets/{turtle-DqWnTCnP.js → turtle-7DaLnk-7.js} +0 -0
  529. /package/dist/assets/{types-DQ8fCbJK.js → types-CzVV1kKu.js} +0 -0
  530. /package/dist/assets/{useDeepCompareMemoize-BeNvU69i.js → useDeepCompareMemoize-Boltfl1B.js} +0 -0
  531. /package/dist/assets/{useInterval-THXC3A8S.js → useInterval-B8uaa6vj.js} +0 -0
  532. /package/dist/assets/{vb-D8y-MYBx.js → vb-B69cws1B.js} +0 -0
  533. /package/dist/assets/{vbscript-BnxMJuyI.js → vbscript-oR9jLSFn.js} +0 -0
  534. /package/dist/assets/{velocity-BxU4epmQ.js → velocity-CC4QjE_N.js} +0 -0
  535. /package/dist/assets/{verilog-BgK37K4c.js → verilog-DbzXDa_i.js} +0 -0
  536. /package/dist/assets/{vhdl-BV4w9W-F.js → vhdl-qbVPPYo_.js} +0 -0
  537. /package/dist/assets/{web-vitals-Q0-_CtWm.js → web-vitals--izkZsoM.js} +0 -0
  538. /package/dist/assets/{webidl-DaaapXpa.js → webidl-BkN24yvL.js} +0 -0
  539. /package/dist/assets/{ws-CnD6N6WA.js → ws-BYrDQlXa.js} +0 -0
  540. /package/dist/assets/{xquery-CXfthI-4.js → xquery-B3G1Qm2c.js} +0 -0
  541. /package/dist/assets/{yacas-DNslH_e4.js → yacas-DWdEPLXb.js} +0 -0
  542. /package/dist/assets/{z80-BrPJ63JS.js → z80-cCig3JnZ.js} +0 -0
@@ -112,6 +112,7 @@ export function generateColumns<T>({
112
112
  headerTooltip,
113
113
  showDataTypes,
114
114
  calculateTopKRows,
115
+ fractionDigitsByColumn,
115
116
  }: {
116
117
  rowHeaders: FieldTypesWithExternalType;
117
118
  selection: DataTableSelection;
@@ -122,6 +123,7 @@ export function generateColumns<T>({
122
123
  headerTooltip?: Record<string, string>;
123
124
  showDataTypes?: boolean;
124
125
  calculateTopKRows?: CalculateTopKRows;
126
+ fractionDigitsByColumn?: Record<string, number>;
125
127
  }): ColumnDef<T>[] {
126
128
  // Row-headers are typically index columns
127
129
  const rowHeadersSet = new Set(rowHeaders.map(([columnName]) => columnName));
@@ -138,6 +140,7 @@ export function generateColumns<T>({
138
140
  rowHeader: isRowHeader,
139
141
  dtype: types?.[1],
140
142
  dataType: types?.[0],
143
+ minFractionDigits: fractionDigitsByColumn?.[key],
141
144
  };
142
145
  }
143
146
 
@@ -146,9 +149,23 @@ export function generateColumns<T>({
146
149
  filterType: getFilterTypeForFieldType(types[0]),
147
150
  dtype: types[1],
148
151
  dataType: types[0],
152
+ minFractionDigits: fractionDigitsByColumn?.[key],
149
153
  };
150
154
  };
151
155
 
156
+ const getJustify = (key: string): "left" | "center" | "right" | undefined => {
157
+ // Explicit user override takes precedence
158
+ if (textJustifyColumns?.[key]) {
159
+ return textJustifyColumns[key];
160
+ }
161
+ // Auto right-align numeric columns
162
+ const dataType = getMeta(key).dataType;
163
+ if (dataType === "number" || dataType === "integer") {
164
+ return "right";
165
+ }
166
+ return undefined;
167
+ };
168
+
152
169
  const columnKeys: string[] = [
153
170
  ...rowHeadersSet,
154
171
  ...fieldTypes.map(([columnName]) => columnName),
@@ -186,7 +203,7 @@ export function generateColumns<T>({
186
203
  </div>
187
204
  ) : null;
188
205
 
189
- const justify = textJustifyColumns?.[key];
206
+ const justify = getJustify(key);
190
207
 
191
208
  const headerWithType = (
192
209
  <div
@@ -254,18 +271,21 @@ export function generateColumns<T>({
254
271
  cell.toggleSelected?.();
255
272
  }
256
273
 
257
- const justify = textJustifyColumns?.[key];
274
+ const justify = getJustify(key);
258
275
  const wrapped = wrappedColumns?.includes(key);
259
276
  const isCellSelected = cell?.getIsSelected?.() || false;
260
277
  const canSelectCell =
261
278
  (selection === "single-cell" || selection === "multi-cell") &&
262
279
  !isCellSelected;
263
280
 
281
+ const dataType = column.columnDef.meta?.dataType;
282
+ const isNumeric = dataType === "number" || dataType === "integer";
264
283
  const cellStyles = getCellStyleClass(
265
284
  justify,
266
285
  wrapped,
267
286
  canSelectCell,
268
287
  isCellSelected,
288
+ isNumeric,
269
289
  );
270
290
 
271
291
  const renderedCell = renderCellValue({
@@ -430,6 +450,7 @@ function getCellStyleClass(
430
450
  wrapped: boolean | undefined,
431
451
  canSelectCell: boolean,
432
452
  isSelected: boolean,
453
+ isNumeric?: boolean,
433
454
  ): string {
434
455
  return cn(
435
456
  canSelectCell && "cursor-pointer",
@@ -438,6 +459,7 @@ function getCellStyleClass(
438
459
  "w-full",
439
460
  "text-left",
440
461
  "truncate",
462
+ isNumeric && "tabular-nums",
441
463
  justify === "center" && "text-center",
442
464
  justify === "right" && "text-right",
443
465
  wrapped && `${COLUMN_WRAPPING_STYLES} break-words`,
@@ -589,7 +611,18 @@ export function renderCellValue<TData, TValue>({
589
611
  if (typeof value === "number") {
590
612
  return (
591
613
  <div onClick={selectCell} className={cellStyles}>
592
- <LocaleNumber value={value} />
614
+ <LocaleNumber
615
+ value={value}
616
+ minFractionDigits={column.columnDef.meta?.minFractionDigits}
617
+ />
618
+ </div>
619
+ );
620
+ }
621
+
622
+ if (typeof value === "boolean") {
623
+ return (
624
+ <div onClick={selectCell} className={cellStyles}>
625
+ {value ? "True" : "False"}
593
626
  </div>
594
627
  );
595
628
  }
@@ -635,9 +668,16 @@ export function renderCellValue<TData, TValue>({
635
668
  );
636
669
  }
637
670
 
638
- export const LocaleNumber = ({ value }: { value: number }) => {
671
+ export const LocaleNumber = ({
672
+ value,
673
+ minFractionDigits,
674
+ }: {
675
+ value: number;
676
+ minFractionDigits?: number;
677
+ }) => {
639
678
  const { locale } = useLocale();
640
679
  const format = useNumberFormatter({
680
+ minimumFractionDigits: minFractionDigits,
641
681
  maximumFractionDigits: maxFractionalDigits(locale),
642
682
  });
643
683
  return format.format(value);
@@ -16,6 +16,7 @@ declare module "@tanstack/react-table" {
16
16
  dtype?: string;
17
17
  dataType?: DataType;
18
18
  filterType?: FilterType;
19
+ minFractionDigits?: number;
19
20
  }
20
21
  }
21
22
 
@@ -28,6 +28,7 @@ import {
28
28
  INTERNAL_SQL_ENGINES,
29
29
  } from "@/core/datasets/engines";
30
30
  import {
31
+ PreviewSQLSchemaList,
31
32
  PreviewSQLTable,
32
33
  PreviewSQLTableList,
33
34
  } from "@/core/datasets/request-registry";
@@ -80,6 +81,7 @@ const INDENT = {
80
81
  database: "pl-4",
81
82
  schemaEmpty: "pl-8",
82
83
  schema: "pl-7",
84
+ schemaLoading: "pl-8",
83
85
  tableLoading: "pl-11",
84
86
  tableSchemaless: "pl-8",
85
87
  tableWithSchema: "pl-12",
@@ -369,6 +371,49 @@ const SchemaList: React.FC<{
369
371
  hasSearch,
370
372
  searchValue,
371
373
  }) => {
374
+ const { addSchemaList } = useDataSourceActions();
375
+ const [schemasRequested, setSchemasRequested] = React.useState(false);
376
+
377
+ // Custom loading state, we need to wait for the data to propagate once requested
378
+ // useAsyncData's loading state may return false before data has propagated
379
+ const [schemasLoading, setSchemasLoading] = React.useState(false);
380
+
381
+ const { isPending, error } = useAsyncData(async () => {
382
+ if (schemas.length === 0 && engineName && !schemasRequested) {
383
+ setSchemasRequested(true);
384
+ setSchemasLoading(true);
385
+ try {
386
+ const previewSchemaList = await PreviewSQLSchemaList.request({
387
+ engine: engineName,
388
+ database: databaseName,
389
+ });
390
+
391
+ addSchemaList({
392
+ schemas: previewSchemaList.schemas ?? [],
393
+ sqlSchemaContext: {
394
+ engine: engineName,
395
+ database: databaseName,
396
+ },
397
+ });
398
+ } finally {
399
+ setSchemasLoading(false);
400
+ }
401
+ }
402
+ }, [schemas.length, engineName, databaseName, schemasRequested]);
403
+
404
+ if (isPending || schemasLoading) {
405
+ return (
406
+ <LoadingState
407
+ message="Loading schemas..."
408
+ className={INDENT.schemaLoading}
409
+ />
410
+ );
411
+ }
412
+
413
+ if (error) {
414
+ return <ErrorState error={error} className={INDENT.schemaLoading} />;
415
+ }
416
+
372
417
  if (schemas.length === 0) {
373
418
  return (
374
419
  <EmptyState
@@ -1,7 +1,6 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
3
  import { EditorView } from "@codemirror/view";
4
- import { math } from "@streamdown/math";
5
4
  import { useAtomValue } from "jotai";
6
5
  import { BetweenHorizontalStartIcon } from "lucide-react";
7
6
  import { memo, Suspense, useState } from "react";
@@ -13,6 +12,7 @@ import { useLastFocusedCellId } from "@/core/cells/focus";
13
12
  import { MarkdownLanguageAdapter } from "@/core/codemirror/language/languages/markdown";
14
13
  import { SQLLanguageAdapter } from "@/core/codemirror/language/languages/sql/sql";
15
14
  import { autoInstantiateAtom } from "@/core/config/config";
15
+ import { useAsyncData } from "@/hooks/useAsyncData";
16
16
  import { LazyAnyLanguageCodeMirror } from "@/plugins/impl/code/LazyAnyLanguageCodeMirror";
17
17
  import { useTheme } from "@/theme/useTheme";
18
18
  import { copyToClipboard } from "@/utils/copy";
@@ -166,11 +166,27 @@ const COMPONENTS: Components = {
166
166
  },
167
167
  };
168
168
 
169
+ // Lazy-load the math plugin to keep katex (~264 KB) out of the critical path.
170
+ // The first render works without math; once loaded, it re-renders with math support.
171
+ let mathPluginCache: StreamdownProps["plugins"] | undefined;
172
+ const useMathPlugin = () => {
173
+ const { data: plugins } = useAsyncData(async () => {
174
+ if (mathPluginCache) {
175
+ return mathPluginCache;
176
+ }
177
+ const mod = await import("@streamdown/math");
178
+ mathPluginCache = { math: mod.math };
179
+ return mathPluginCache;
180
+ }, []);
181
+ return plugins;
182
+ };
183
+
169
184
  export const MarkdownRenderer = memo(({ content }: { content: string }) => {
185
+ const plugins = useMathPlugin();
170
186
  return (
171
187
  <Streamdown
172
188
  components={COMPONENTS}
173
- plugins={{ math }}
189
+ plugins={plugins}
174
190
  className="mo-markdown-renderer"
175
191
  >
176
192
  {content}
@@ -1,7 +1,7 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
  import { beforeEach, describe, expect, it } from "vitest";
3
3
  import { variableName } from "@/__tests__/branded";
4
- import type { DataTable } from "@/core/kernel/messages";
4
+ import type { DatabaseSchema, DataTable } from "@/core/kernel/messages";
5
5
  import type { VariableName } from "@/core/variables/types";
6
6
  import {
7
7
  type DataSourceConnection,
@@ -209,6 +209,93 @@ describe("filtering data sources", () => {
209
209
  });
210
210
  });
211
211
 
212
+ describe("add schema list", () => {
213
+ const connections: DataSourceConnection[] = [
214
+ {
215
+ name: "conn1" as ConnectionName,
216
+ source: "sqlite",
217
+ display_name: "SQLite DB",
218
+ dialect: "sqlite",
219
+ databases: [
220
+ {
221
+ name: "db1",
222
+ schemas: [],
223
+ dialect: "sqlite",
224
+ },
225
+ ],
226
+ },
227
+ ];
228
+
229
+ // Helper function to add schema list
230
+ const addSchemaList = (
231
+ schemas: DatabaseSchema[],
232
+ engine: string,
233
+ database: string,
234
+ ) => {
235
+ return reducer(baseState, {
236
+ type: "addSchemaList",
237
+ payload: {
238
+ schemas,
239
+ sqlSchemaContext: { engine, database },
240
+ },
241
+ });
242
+ };
243
+
244
+ let baseState: DataSourceState;
245
+
246
+ beforeEach(() => {
247
+ baseState = addConnection(connections, baseState);
248
+ expect(baseState.connectionsMap.size).toBe(defaultConnSize + 1);
249
+ });
250
+
251
+ it("adds schema list to a specific database", () => {
252
+ const schemaList: DatabaseSchema[] = [
253
+ { name: "public", tables: [] },
254
+ { name: "analytics", tables: [] },
255
+ ];
256
+ const newState = addSchemaList(schemaList, "conn1", "db1");
257
+
258
+ const conn1 = newState.connectionsMap.get("conn1" as ConnectionName);
259
+ const db1 = conn1?.databases.find((db) => db.name === "db1");
260
+ expect(db1?.schemas).toEqual(schemaList);
261
+ });
262
+
263
+ it("updates schema list for a database", () => {
264
+ const schemaList: DatabaseSchema[] = [
265
+ { name: "public", tables: [] },
266
+ { name: "analytics", tables: [] },
267
+ ];
268
+ const newState = addSchemaList(schemaList, "conn1", "db1");
269
+
270
+ const conn1 = newState.connectionsMap.get("conn1" as ConnectionName);
271
+ const db1 = conn1?.databases.find((db) => db.name === "db1");
272
+ expect(db1?.schemas).toEqual(schemaList);
273
+
274
+ // update with new schema list
275
+ const newSchemaList: DatabaseSchema[] = [
276
+ { name: "public", tables: [] },
277
+ { name: "sales", tables: [] },
278
+ ];
279
+ const updatedState = addSchemaList(newSchemaList, "conn1", "db1");
280
+
281
+ const newConn = updatedState.connectionsMap.get("conn1" as ConnectionName);
282
+ const newDb1 = newConn?.databases.find((db) => db.name === "db1");
283
+ expect(newDb1?.schemas).toEqual(newSchemaList);
284
+ });
285
+
286
+ it("does not add schema list if database does not exist", () => {
287
+ const schemaList: DatabaseSchema[] = [
288
+ { name: "public", tables: [] },
289
+ { name: "analytics", tables: [] },
290
+ ];
291
+ const newState = addSchemaList(schemaList, "conn1", "non_existent_db");
292
+
293
+ const conn1 = newState.connectionsMap.get("conn1" as ConnectionName);
294
+ const db1 = conn1?.databases.find((db) => db.name === "db1");
295
+ expect(db1?.schemas.length).toBe(0);
296
+ });
297
+ });
298
+
212
299
  describe("add table list", () => {
213
300
  const connections: DataSourceConnection[] = [
214
301
  {
@@ -5,6 +5,7 @@ import { isSchemaless } from "@/components/datasources/utils";
5
5
  import { createReducerAndAtoms } from "@/utils/createReducer";
6
6
  import { Logger } from "@/utils/Logger";
7
7
  import type {
8
+ DatabaseSchema,
8
9
  DataSourceConnection as DataSourceConnectionType,
9
10
  DataTable,
10
11
  } from "../kernel/messages";
@@ -43,6 +44,11 @@ export interface DataSourceState {
43
44
  connectionsMap: ConnectionsMap;
44
45
  }
45
46
 
47
+ export interface SQLSchemaContext {
48
+ engine: string;
49
+ database: string;
50
+ }
51
+
46
52
  export interface SQLTableContext {
47
53
  engine: string;
48
54
  database: string;
@@ -134,6 +140,44 @@ const {
134
140
  };
135
141
  },
136
142
 
143
+ // Add schema list to a specific database in a connection
144
+ addSchemaList: (
145
+ state: DataSourceState,
146
+ opts: {
147
+ schemas: DatabaseSchema[];
148
+ sqlSchemaContext: SQLSchemaContext;
149
+ },
150
+ ): DataSourceState => {
151
+ const { schemas, sqlSchemaContext } = opts;
152
+ const { connectionsMap, latestEngineSelected } = state;
153
+ const connectionName = sqlSchemaContext.engine as ConnectionName;
154
+ const conn = connectionsMap.get(connectionName);
155
+
156
+ if (!conn) {
157
+ return state;
158
+ }
159
+
160
+ const newMap = new Map(connectionsMap);
161
+ const newConn: DataSourceConnection = {
162
+ ...conn,
163
+ databases: conn.databases.map((db) => {
164
+ if (db.name !== sqlSchemaContext.database) {
165
+ return db;
166
+ }
167
+ return {
168
+ ...db,
169
+ schemas: schemas,
170
+ };
171
+ }),
172
+ };
173
+ newMap.set(connectionName, newConn);
174
+
175
+ return {
176
+ latestEngineSelected: latestEngineSelected,
177
+ connectionsMap: newMap,
178
+ };
179
+ },
180
+
137
181
  // Add table list to a specific schema in a connection
138
182
  addTableList: (
139
183
  state: DataSourceState,
@@ -1,5 +1,6 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
  import type {
3
+ SQLSchemaListPreview,
3
4
  SQLTableListPreview,
4
5
  SQLTablePreview,
5
6
  ValidateSQLResult,
@@ -8,6 +9,7 @@ import { CachingRequestRegistry } from "../network/CachingRequestRegistry";
8
9
  import { DeferredRequestRegistry } from "../network/DeferredRequestRegistry";
9
10
  import { getRequestClient } from "../network/requests";
10
11
  import type {
12
+ ListSQLSchemasRequest,
11
13
  ListSQLTablesRequest,
12
14
  PreviewSQLTableRequest,
13
15
  ValidateSQLRequest,
@@ -28,6 +30,17 @@ export const PreviewSQLTable = new DeferredRequestRegistry<
28
30
  });
29
31
  });
30
32
 
33
+ export const PreviewSQLSchemaList = new DeferredRequestRegistry<
34
+ Omit<ListSQLSchemasRequest, "requestId">,
35
+ SQLSchemaListPreview
36
+ >("sql-schema-list-preview", async (requestId, req) => {
37
+ const client = getRequestClient();
38
+ await client.previewSQLSchemaList({
39
+ requestId: requestId,
40
+ ...req,
41
+ });
42
+ });
43
+
31
44
  export const PreviewSQLTableList = new DeferredRequestRegistry<
32
45
  Omit<ListSQLTablesRequest, "requestId">,
33
46
  SQLTableListPreview
@@ -169,6 +169,7 @@ export class IslandsPyodideBridge implements RunRequests, EditRequests {
169
169
  previewDatasetColumn = throwNotImplemented;
170
170
  previewSQLTable = throwNotImplemented;
171
171
  previewSQLTableList = throwNotImplemented;
172
+ previewSQLSchemaList = throwNotImplemented;
172
173
  previewDataSourceConnection = throwNotImplemented;
173
174
  validateSQL = throwNotImplemented;
174
175
  openFile = throwNotImplemented;
@@ -121,6 +121,7 @@ export async function initialize() {
121
121
  case "data-column-preview":
122
122
  case "sql-table-preview":
123
123
  case "sql-table-list-preview":
124
+ case "sql-schema-list-preview":
124
125
  case "datasets":
125
126
  case "data-source-connections":
126
127
  case "validate-sql-result":
@@ -41,6 +41,8 @@ export type DataColumnPreview = NotificationMessageData<"data-column-preview">;
41
41
  export type SQLTablePreview = NotificationMessageData<"sql-table-preview">;
42
42
  export type SQLTableListPreview =
43
43
  NotificationMessageData<"sql-table-list-preview">;
44
+ export type SQLSchemaListPreview =
45
+ NotificationMessageData<"sql-schema-list-preview">;
44
46
  export type ValidateSQLResult = NotificationMessageData<"validate-sql-result">;
45
47
  export type SecretKeysResult = NotificationMessageData<"secret-keys-result">;
46
48
  export type StartupLogs = NotificationMessageData<"startup-logs">;
@@ -112,6 +112,7 @@ const ACTIONS: Record<keyof AllRequests, Action> = {
112
112
  previewDatasetColumn: "waitForConnectionOpen",
113
113
  previewSQLTable: "waitForConnectionOpen",
114
114
  previewSQLTableList: "waitForConnectionOpen",
115
+ previewSQLSchemaList: "waitForConnectionOpen",
115
116
  previewDataSourceConnection: "waitForConnectionOpen",
116
117
  validateSQL: "waitForConnectionOpen",
117
118
  listStorageEntries: "waitForConnectionOpen",
@@ -244,6 +244,14 @@ export function createNetworkRequests(): EditRequests & RunRequests {
244
244
  })
245
245
  .then(handleResponseReturnNull);
246
246
  },
247
+ previewSQLSchemaList: (request) => {
248
+ return getClient()
249
+ .POST("/api/datasources/preview_sql_schema_list", {
250
+ body: request,
251
+ params: getParams(),
252
+ })
253
+ .then(handleResponseReturnNull);
254
+ },
247
255
  previewDataSourceConnection: (request) => {
248
256
  return getClient()
249
257
  .POST("/api/datasources/preview_datasource_connection", {
@@ -57,6 +57,7 @@ export function createStaticRequests(): EditRequests & RunRequests {
57
57
  previewDatasetColumn: throwNotInEditMode,
58
58
  previewSQLTable: throwNotInEditMode,
59
59
  previewSQLTableList: throwNotInEditMode,
60
+ previewSQLSchemaList: throwNotInEditMode,
60
61
  previewDataSourceConnection: throwNotInEditMode,
61
62
  validateSQL: throwNotInEditMode,
62
63
  openFile: throwNotInEditMode,
@@ -42,6 +42,7 @@ export function createErrorToastingRequests(
42
42
  previewDatasetColumn: "Failed to fetch data sources",
43
43
  previewSQLTable: "Failed to fetch SQL table",
44
44
  previewSQLTableList: "Failed to fetch SQL table list",
45
+ previewSQLSchemaList: "Failed to fetch SQL schema list",
45
46
  previewDataSourceConnection: "Failed to preview data source connection",
46
47
  validateSQL: "Failed to validate SQL",
47
48
  openFile: "Failed to open file",
@@ -59,6 +59,7 @@ export type PreviewDatasetColumnRequest =
59
59
  schemas["PreviewDatasetColumnRequest"];
60
60
  export type PreviewSQLTableRequest = schemas["PreviewSQLTableRequest"];
61
61
  export type ListSQLTablesRequest = schemas["ListSQLTablesRequest"];
62
+ export type ListSQLSchemasRequest = schemas["ListSQLSchemasRequest"];
62
63
  export type ListDataSourceConnectionRequest =
63
64
  schemas["ListDataSourceConnectionRequest"];
64
65
  export type ValidateSQLRequest = schemas["ValidateSQLRequest"];
@@ -151,6 +152,7 @@ export interface EditRequests {
151
152
  previewDatasetColumn: (request: PreviewDatasetColumnRequest) => Promise<null>;
152
153
  previewSQLTable: (request: PreviewSQLTableRequest) => Promise<null>;
153
154
  previewSQLTableList: (request: ListSQLTablesRequest) => Promise<null>;
155
+ previewSQLSchemaList: (request: ListSQLSchemasRequest) => Promise<null>;
154
156
  previewDataSourceConnection: (
155
157
  request: ListDataSourceConnectionRequest,
156
158
  ) => Promise<null>;
@@ -523,6 +523,16 @@ export class PyodideBridge implements RunRequests, EditRequests {
523
523
  return null;
524
524
  };
525
525
 
526
+ previewSQLSchemaList: EditRequests["previewSQLSchemaList"] = async (
527
+ request,
528
+ ) => {
529
+ await this.putControlRequest({
530
+ type: "list-sql-schemas",
531
+ ...request,
532
+ });
533
+ return null;
534
+ };
535
+
526
536
  previewDataSourceConnection: EditRequests["previewDataSourceConnection"] =
527
537
  async (request) => {
528
538
  await this.putControlRequest({
@@ -37,6 +37,7 @@ import { useSetAppConfig } from "../config/config";
37
37
  import { useDataSourceActions } from "../datasets/data-source-connections";
38
38
  import type { ConnectionName } from "../datasets/engines";
39
39
  import {
40
+ PreviewSQLSchemaList,
40
41
  PreviewSQLTable,
41
42
  PreviewSQLTableList,
42
43
  ValidateSQL,
@@ -288,6 +289,9 @@ export function useMarimoKernelConnection(opts: {
288
289
  case "sql-table-list-preview":
289
290
  PreviewSQLTableList.resolve(msg.data.request_id, msg.data);
290
291
  return;
292
+ case "sql-schema-list-preview":
293
+ PreviewSQLSchemaList.resolve(msg.data.request_id, msg.data);
294
+ return;
291
295
  case "validate-sql-result":
292
296
  ValidateSQL.resolve(msg.data.request_id as RequestId, msg.data);
293
297
  return;
@@ -874,10 +874,35 @@ const DataTableComponent = ({
874
874
  return memoizedUnclampedFieldTypes.slice(0, maxColumns);
875
875
  }, [maxColumns, memoizedUnclampedFieldTypes]);
876
876
 
877
+ // Compute max fractional digits per numeric column for consistent formatting.
878
+ const computedFractionDigits = useMemo(() => {
879
+ const result: Record<string, number> = {};
880
+ if (data && data.length > 0) {
881
+ for (const [colName, types] of memoizedClampedFieldTypes) {
882
+ if (types[0] === "number") {
883
+ let maxDecimals = 0;
884
+ for (const row of data) {
885
+ const val = (row as Record<string, unknown>)[colName];
886
+ if (typeof val === "number" && Number.isFinite(val)) {
887
+ const str = String(val);
888
+ const dotIdx = str.indexOf(".");
889
+ if (dotIdx !== -1) {
890
+ maxDecimals = Math.max(maxDecimals, str.length - dotIdx - 1);
891
+ }
892
+ }
893
+ }
894
+ result[colName] = maxDecimals;
895
+ }
896
+ }
897
+ }
898
+ return result;
899
+ }, [data, memoizedClampedFieldTypes]);
900
+
877
901
  const memoizedRowHeaders = useDeepCompareMemoize(rowHeaders);
878
902
  const memoizedTextJustifyColumns = useDeepCompareMemoize(textJustifyColumns);
879
903
  const memoizedWrappedColumns = useDeepCompareMemoize(wrappedColumns);
880
904
  const memoizedChartSpecModel = useDeepCompareMemoize(chartSpecModel);
905
+ const fractionDigitsByColumn = useDeepCompareMemoize(computedFractionDigits);
881
906
  const shownColumns = memoizedClampedFieldTypes.length;
882
907
 
883
908
  // If the field types are not set, we don't show them
@@ -898,6 +923,7 @@ const DataTableComponent = ({
898
923
  // Only show data types if they are explicitly set
899
924
  showDataTypes: showDataTypes,
900
925
  calculateTopKRows: calculate_top_k_rows,
926
+ fractionDigitsByColumn: fractionDigitsByColumn,
901
927
  }),
902
928
  [
903
929
  selection,
@@ -909,6 +935,7 @@ const DataTableComponent = ({
909
935
  memoizedWrappedColumns,
910
936
  headerTooltip,
911
937
  calculate_top_k_rows,
938
+ fractionDigitsByColumn,
912
939
  ],
913
940
  );
914
941