@marimo-team/frontend 0.23.9-dev9 → 0.23.9

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 (600) hide show
  1. package/dist/assets/{CellStatus-D_-Xs2i2.js → CellStatus-BLWR83i_.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-CKOLvj_e.js → ConnectedDataExplorerComponent-W0UfNkj7.js} +1 -1
  3. package/dist/assets/JsonOutput-BJaeXQim.js +53 -0
  4. package/dist/assets/LazyAnyLanguageCodeMirror-BEvXb3VX.js +2 -0
  5. package/dist/assets/MarimoErrorOutput-B0h5OVW9.js +7 -0
  6. package/dist/assets/{RenderHTML-IGRZU9wj.js → RenderHTML-ChwPJgPd.js} +1 -1
  7. package/dist/assets/{RunButton-Cf9ByHXe.js → RunButton-NDsrcmxR.js} +1 -1
  8. package/dist/assets/{add-cell-with-ai-9EyttqGQ.js → add-cell-with-ai-FxJitVGs.js} +21 -21
  9. package/dist/assets/{add-connection-dialog-Bqsr9NiO.js → add-connection-dialog-EgkKupsZ.js} +1 -1
  10. package/dist/assets/{agent-panel-CSzzOKD1.js → agent-panel-BSt1fSQZ.js} +6 -6
  11. package/dist/assets/ai-model-dropdown-DxAk02Lc.js +5 -0
  12. package/dist/assets/{any-language-editor-Cs-Qsdlp.js → any-language-editor-CXeLf_N8.js} +1 -1
  13. package/dist/assets/apl-EAxnZS_5.js +1 -0
  14. package/dist/assets/{app-config-button-Cooknt8P.js → app-config-button-BcOcIm9W.js} +1 -1
  15. package/dist/assets/{arc-D0XsJSsf.js → arc-CWuN1tfc.js} +1 -1
  16. package/dist/assets/{architecture-7HQA4BMR-CyeFAHwy.js → architecture-7HQA4BMR-DJtUfdk-.js} +1 -1
  17. package/dist/assets/{architectureDiagram-VXUJARFQ-1WJT-eC3.js → architectureDiagram-VXUJARFQ-Cgi4wo9P.js} +1 -1
  18. package/dist/assets/arrow-right-pRnMoIOW.js +1 -0
  19. package/dist/assets/asciiarmor-zxnaShQE.js +1 -0
  20. package/dist/assets/asn1-7i28Os5R.js +1 -0
  21. package/dist/assets/{blockDiagram-VD42YOAC-JexHZqqE.js → blockDiagram-VD42YOAC-CsHap8-F.js} +1 -1
  22. package/dist/assets/brainfuck-BZegPsXK.js +1 -0
  23. package/dist/assets/{c4Diagram-YG6GDRKO-Bq-DoY7t.js → c4Diagram-YG6GDRKO-CZuArudM.js} +1 -1
  24. package/dist/assets/{cache-panel-CZqzacQu.js → cache-panel-DYiVMv5x.js} +1 -1
  25. package/dist/assets/cell-editor-C5CDtKML.js +20 -0
  26. package/dist/assets/{cell-link-VlbhstGP.js → cell-link-B1pHtGWp.js} +1 -1
  27. package/dist/assets/{cells-WW455pbI.js → cells-BsaJrRWi.js} +60 -62
  28. package/dist/assets/channel-6XBTrC3Q.js +1 -0
  29. package/dist/assets/{chat-display-0SSKyMkt.js → chat-display-ccjE30z9.js} +1 -1
  30. package/dist/assets/chat-panel-CtvtP3kb.js +3 -0
  31. package/dist/assets/chat-ui-DV8CD_s1.js +4 -0
  32. package/dist/assets/{chunk-4BX2VUAB-Dhno12SW.js → chunk-4BX2VUAB-Ca6WzYTr.js} +1 -1
  33. package/dist/assets/chunk-55IACEB6-Cr4aqhf3.js +1 -0
  34. package/dist/assets/{chunk-5FQGJX7Z-BzXnQz5s.js → chunk-5FQGJX7Z-D9iBG0F7.js} +2 -2
  35. package/dist/assets/{chunk-ABZYJK2D-fbQovzbZ.js → chunk-ABZYJK2D-BG7Eb4WW.js} +3 -3
  36. package/dist/assets/{chunk-ATLVNIR6-C71UReOL.js → chunk-ATLVNIR6-CqLn9HI1.js} +1 -1
  37. package/dist/assets/{chunk-B4BG7PRW-ChmO4xUA.js → chunk-B4BG7PRW-D4SyZNjn.js} +1 -1
  38. package/dist/assets/{chunk-CVBHYZKI-B6tT645I.js → chunk-CVBHYZKI-C-NWvPQL.js} +1 -1
  39. package/dist/assets/{chunk-DI55MBZ5-DaLBJUsc.js → chunk-DI55MBZ5-t9uiMPiN.js} +1 -1
  40. package/dist/assets/{chunk-EXTU4WIE-B3Lv3QWb.js → chunk-EXTU4WIE-BmVk7Fyq.js} +1 -1
  41. package/dist/assets/{chunk-FMBD7UC4-CDFiCFLp.js → chunk-FMBD7UC4-DlnzxSkO.js} +1 -1
  42. package/dist/assets/{chunk-HN2XXSSU-xW6J7MXn.js → chunk-HN2XXSSU-Bcaj5fRB.js} +1 -1
  43. package/dist/assets/{chunk-JA3XYJ7Z-jqUKn_dB.js → chunk-JA3XYJ7Z-B5b2QHOb.js} +1 -1
  44. package/dist/assets/{chunk-JZLCHNYA-xGZ72asD.js → chunk-JZLCHNYA-1_sVfAnw.js} +1 -1
  45. package/dist/assets/{chunk-MI3HLSF2-CXMqGP2w.js → chunk-MI3HLSF2-DqzZqBCh.js} +1 -1
  46. package/dist/assets/{chunk-N4CR4FBY-D8iMP1ch.js → chunk-N4CR4FBY-CFJoD-EQ.js} +2 -2
  47. package/dist/assets/{chunk-QN33PNHL-Ddzf5Xc1.js → chunk-QN33PNHL-BBE_bx9E.js} +1 -1
  48. package/dist/assets/{chunk-QXUST7PY-BUBd7EW9.js → chunk-QXUST7PY-Cu1nR-L2.js} +1 -1
  49. package/dist/assets/{chunk-QZHKN3VN-37WEuSLJ.js → chunk-QZHKN3VN-BAnb9AKF.js} +1 -1
  50. package/dist/assets/{chunk-S3R3BYOJ-7UJSqSFb.js → chunk-S3R3BYOJ-Cl0iW04v.js} +1 -1
  51. package/dist/assets/{chunk-TZMSLE5B-B7Xjx897.js → chunk-TZMSLE5B-f5ix6iSd.js} +1 -1
  52. package/dist/assets/classDiagram-2ON5EDUG-DlIMDu6i.js +1 -0
  53. package/dist/assets/classDiagram-v2-WZHVMYZB-CcIhhkQu.js +1 -0
  54. package/dist/assets/{clike-npv7NBwP.js → clike-bdcjLdZ4.js} +1 -1
  55. package/dist/assets/clojure-VUVi7fTV.js +1 -0
  56. package/dist/assets/cmake-DZJIDbjY.js +1 -0
  57. package/dist/assets/cobol-klCRwlLm.js +1 -0
  58. package/dist/assets/{code-block-37QAKDTI-BZVOQdyl.js → code-block-37QAKDTI-B19XL3UR.js} +1 -1
  59. package/dist/assets/coffeescript-C9foD9ub.js +1 -0
  60. package/dist/assets/{column-preview-CyyMserX.js → column-preview-BPismotx.js} +1 -1
  61. package/dist/assets/{command-palette-C0SuD26e.js → command-palette-Cdy8eCpi.js} +1 -1
  62. package/dist/assets/{common-Bei_EA1L.js → common-6n8M1qiK.js} +1 -1
  63. package/dist/assets/commonlisp-tHxoA35J.js +1 -0
  64. package/dist/assets/{components-B-vsJpY6.js → components-BzBUxUz0.js} +1 -1
  65. package/dist/assets/{components-cjKlTr3f.js → components-CK-WtvAJ.js} +1 -1
  66. package/dist/assets/config-ClMcu_sV.js +1 -0
  67. package/dist/assets/{cose-bilkent-S5V4N54A-CgMkzBzk.js → cose-bilkent-S5V4N54A-CQqSLzd1.js} +1 -1
  68. package/dist/assets/crystal-CQ11GdrX.js +1 -0
  69. package/dist/assets/{css-OVjTGRm9.js → css-ACAb8MRM.js} +1 -1
  70. package/dist/assets/cypher-CJ0Uzw29.js +1 -0
  71. package/dist/assets/d-DP0SUIt1.js +1 -0
  72. package/dist/assets/{dagre-6UL2VRFP-rclmYCNC.js → dagre-6UL2VRFP-CVKXpDlr.js} +1 -1
  73. package/dist/assets/{data-grid-overlay-editor-CO7vLLX5.js → data-grid-overlay-editor-BdDYn72O.js} +1 -1
  74. package/dist/assets/{datasource-CrDfHWto.js → datasource-DjDpJnbt.js} +2 -2
  75. package/dist/assets/dependency-graph-panel-BNaXAcZr.js +5 -0
  76. package/dist/assets/{diagram-PSM6KHXK-Dr5x-oaJ.js → diagram-PSM6KHXK-BfzLNKp-.js} +1 -1
  77. package/dist/assets/{diagram-QEK2KX5R-Cyino8Ci.js → diagram-QEK2KX5R-D_H77Ni5.js} +1 -1
  78. package/dist/assets/{diagram-S2PKOQOG-DYLuU52t.js → diagram-S2PKOQOG-DJmVBeMk.js} +1 -1
  79. package/dist/assets/diff-CNs8MB38.js +1 -0
  80. package/dist/assets/{dist-K7UrYXpJ.js → dist-BtL81uwZ.js} +1 -1
  81. package/dist/assets/{dist-BYYXrYaA.js → dist-Bww7hlVc.js} +1 -1
  82. package/dist/assets/{dist-BTDGJ6yw.js → dist-CJIOLS6O.js} +1 -1
  83. package/dist/assets/dist-CPF3W2Y-.js +1 -0
  84. package/dist/assets/{dist-D6HkmGB2.js → dist-CUapWJe4.js} +1 -1
  85. package/dist/assets/{dist-DYXeLJlk.js → dist-CWeWT34c.js} +1 -1
  86. package/dist/assets/{dist-CSowihAs.js → dist-CuCuJBdf.js} +1 -1
  87. package/dist/assets/{dist-fQYV9WTb.js → dist-DH60fwgs.js} +1 -1
  88. package/dist/assets/dist-DZPpMvcR.js +1 -0
  89. package/dist/assets/dist-DkcQg5xD.js +1 -0
  90. package/dist/assets/dist-DkzFxGAX.js +1 -0
  91. package/dist/assets/{dist-CtCHoDJA.js → dist-DmBXXm0k.js} +1 -1
  92. package/dist/assets/{dist-DB3ebLb3.js → dist-W1iHBJeE.js} +1 -1
  93. package/dist/assets/{dist-CO_N76Iz.js → dist-cgiAP5sW.js} +1 -1
  94. package/dist/assets/{dist-CGC-UAcL.js → dist-vkd1160q.js} +1 -1
  95. package/dist/assets/{dockerfile-CrSl2ewL.js → dockerfile-BSMbgQQl.js} +1 -1
  96. package/dist/assets/{documentation-panel-BWa3CXAu.js → documentation-panel-5jUKZR-l.js} +1 -1
  97. package/dist/assets/{download-CKGdZtPf.js → download-DT8gf0PL.js} +1 -1
  98. package/dist/assets/dtd-BsD0uJw0.js +1 -0
  99. package/dist/assets/dylan-DbrGP1IP.js +1 -0
  100. package/dist/assets/ecl-C0rZlhHw.js +1 -0
  101. package/dist/assets/edit-page-B7KTvcRN.js +9 -0
  102. package/dist/assets/eiffel-2ZX-OpSJ.js +1 -0
  103. package/dist/assets/elm-CbOSKldD.js +1 -0
  104. package/dist/assets/{erDiagram-Q2GNP2WA-FdS4NKUh.js → erDiagram-Q2GNP2WA-ROTNwSJz.js} +1 -1
  105. package/dist/assets/erlang-BWiOgHIX.js +1 -0
  106. package/dist/assets/{error-panel-BW7R1Ohr.js → error-panel-DHcg_ER5.js} +1 -1
  107. package/dist/assets/{esm-CwPtnMeh.js → esm-DeiyaVAJ.js} +1 -1
  108. package/dist/assets/{factor-MWFhpc0o.js → factor-C-_cRSDM.js} +1 -1
  109. package/dist/assets/factor-CUwFIMOP.js +1 -0
  110. package/dist/assets/{file-explorer-panel-C5v0FnJv.js → file-explorer-panel-CbOdvGyZ.js} +3 -3
  111. package/dist/assets/{file-icons-B1JtCN2e.js → file-icons-BiMOJy0r.js} +1 -1
  112. package/dist/assets/{floating-outline-wGcVRNZu.js → floating-outline-BN9sAcQ0.js} +1 -1
  113. package/dist/assets/{flowDiagram-NV44I4VS-DO4w8anv.js → flowDiagram-NV44I4VS--ee3IIVF.js} +1 -1
  114. package/dist/assets/{focus-COroLbWe.js → focus-q38vUCl-.js} +1 -1
  115. package/dist/assets/{form-Bstooyv1.js → form-BtBTvVVd.js} +2 -2
  116. package/dist/assets/forth-BEQA4QQL.js +1 -0
  117. package/dist/assets/fortran-DoPpOZgG.js +1 -0
  118. package/dist/assets/{ganttDiagram-JELNMOA3-Df-MBIrj.js → ganttDiagram-JELNMOA3-BGhmW2aP.js} +1 -1
  119. package/dist/assets/gas-BYovsvOE.js +1 -0
  120. package/dist/assets/gherkin-CFiRc1Pf.js +1 -0
  121. package/dist/assets/{gitGraph-G5XIXVHT-BAQx1hNd.js → gitGraph-G5XIXVHT-DuJ_0c_E.js} +1 -1
  122. package/dist/assets/{gitGraphDiagram-V2S2FVAM-fv2cmbLH.js → gitGraphDiagram-V2S2FVAM-DXFCZcxr.js} +1 -1
  123. package/dist/assets/{glide-data-editor-BAApVyo5.js → glide-data-editor-DqKNgyfg.js} +4 -4
  124. package/dist/assets/{globals-DggqXXLE.js → globals-7JnRMGd4.js} +1 -1
  125. package/dist/assets/groovy-DJNH7evt.js +1 -0
  126. package/dist/assets/haskell-duZvcePm.js +1 -0
  127. package/dist/assets/haxe-B2l95qvB.js +1 -0
  128. package/dist/assets/{home-page-B8SPyTFn.js → home-page-lXjPDNM0.js} +2 -2
  129. package/dist/assets/{hooks-CktFWxvJ.js → hooks-DP41kAWj.js} +1 -1
  130. package/dist/assets/{html-to-image-DB5sfuws.js → html-to-image-BWL3Ct4n.js} +1 -1
  131. package/dist/assets/idl-CZ_xwU8I.js +1 -0
  132. package/dist/assets/index-BIw7BKLH.css +2 -0
  133. package/dist/assets/index-awsLWRjZ.js +38 -0
  134. package/dist/assets/{info-VBDWY6EO-Cw9vVNQD.js → info-VBDWY6EO-DPQEAe2T.js} +1 -1
  135. package/dist/assets/infoDiagram-HS3SLOUP-CaaUieFa.js +2 -0
  136. package/dist/assets/javascript-CF5KGSAj.js +1 -0
  137. package/dist/assets/{journeyDiagram-XKPGCS4Q-C_cdVaga.js → journeyDiagram-XKPGCS4Q-9D2JCyrN.js} +1 -1
  138. package/dist/assets/julia-BQlq5iZn.js +1 -0
  139. package/dist/assets/{kanban-definition-3W4ZIXB7-CLpEm5s3.js → kanban-definition-3W4ZIXB7-DxV26rf-.js} +1 -1
  140. package/dist/assets/katex-CzQ1KdW3.js +1 -0
  141. package/dist/assets/{kiosk-mode-tHwBN3rS.js → kiosk-mode-BqvqWsFx.js} +1 -1
  142. package/dist/assets/layout-DXDnDtNw.js +9 -0
  143. package/dist/assets/{line-ortW3H6T.js → line-x4bpd_8D.js} +1 -1
  144. package/dist/assets/{linear-CIVE7jyt.js → linear-CW_ww8od.js} +1 -1
  145. package/dist/assets/livescript-sRMenfqS.js +1 -0
  146. package/dist/assets/{logs-panel-DZSPhsIs.js → logs-panel-BNoBKY1q.js} +1 -1
  147. package/dist/assets/{loro_wasm_bg-Ci19hd4D.js → loro_wasm_bg-CtNTubKN.js} +1 -1
  148. package/dist/assets/lua-a56ITumN.js +1 -0
  149. package/dist/assets/{markdown-renderer-BnUV17Tg.js → markdown-renderer-CU5Lbyax.js} +3 -3
  150. package/dist/assets/mathematica-B3m4jXeH.js +1 -0
  151. package/dist/assets/mbox-BtL7aO2I.js +1 -0
  152. package/dist/assets/mermaid-4DMBBIKO-CekzuCTz.js +1 -0
  153. package/dist/assets/{mermaid-D619LWHW.js → mermaid-Bes0ynI8.js} +3 -3
  154. package/dist/assets/{mermaid-parser.core-CMygPhv_.js → mermaid-parser.core-aYU6qXxk.js} +2 -2
  155. package/dist/assets/{mhchem-DSE1tfes.js → mhchem-8N2oE3tb.js} +1 -1
  156. package/dist/assets/{mindmap-definition-VGOIOE7T-mbWtJhR6.js → mindmap-definition-VGOIOE7T-DTJAbAQ8.js} +1 -1
  157. package/dist/assets/mirc-S27kuZ31.js +1 -0
  158. package/dist/assets/mllike-B3kx3KeF.js +1 -0
  159. package/dist/assets/modelica-DgbW4dSi.js +1 -0
  160. package/dist/assets/mscgen-BIa_4d-0.js +1 -0
  161. package/dist/assets/mumps-4fnELyHs.js +1 -0
  162. package/dist/assets/{name-cell-input-BZQLfDw0.js → name-cell-input-BNc3X9qF.js} +1 -1
  163. package/dist/assets/{nsis-CDylpiaC.js → nsis-BGZ5EB-j.js} +1 -1
  164. package/dist/assets/nsis-BfGyMssE.js +1 -0
  165. package/dist/assets/ntriples-DeY1n_tC.js +1 -0
  166. package/dist/assets/{number-overlay-editor-CHaQ6o4_.js → number-overlay-editor-DL4IwqDH.js} +1 -1
  167. package/dist/assets/octave-7Qn21jzx.js +1 -0
  168. package/dist/assets/{ordinal-RiUP-mHf.js → ordinal-_nQ2r1qQ.js} +1 -1
  169. package/dist/assets/{outline-panel-C4q1Ql1i.js → outline-panel-De2gw3Ro.js} +1 -1
  170. package/dist/assets/oz-CiPFl3Ni.js +1 -0
  171. package/dist/assets/{packages-panel-D9p8Tiee.js → packages-panel-C8maQt0Q.js} +1 -1
  172. package/dist/assets/{packet-DYOGHKS2-BXa5LrXK.js → packet-DYOGHKS2-CxgeJpvT.js} +1 -1
  173. package/dist/assets/pair-with-agent-modal-1tufe5MP.js +4 -0
  174. package/dist/assets/panels-BKv_j2lC.js +1 -0
  175. package/dist/assets/pascal-BH9yQLzw.js +1 -0
  176. package/dist/assets/perl-DfMCx2i2.js +1 -0
  177. package/dist/assets/{pie-VRWISCQL-BpZiOBLl.js → pie-VRWISCQL-GZ13ReaG.js} +1 -1
  178. package/dist/assets/{pieDiagram-ADFJNKIX-ouQhtndl.js → pieDiagram-ADFJNKIX-_3l2XiEo.js} +1 -1
  179. package/dist/assets/pig-D9CNebQN.js +1 -0
  180. package/dist/assets/powershell-Dss0bU9F.js +1 -0
  181. package/dist/assets/{process-output-czqgvDia.js → process-output-B2oklQi4.js} +1 -1
  182. package/dist/assets/properties-CHADYQUL.js +1 -0
  183. package/dist/assets/protobuf-DFN-V4SD.js +1 -0
  184. package/dist/assets/{pug-BXVTM5jr.js → pug-CYW0agOo.js} +1 -1
  185. package/dist/assets/pug-DOI9FnEk.js +1 -0
  186. package/dist/assets/puppet-BV0HAkDS.js +1 -0
  187. package/dist/assets/python-C83Db0-4.js +1 -0
  188. package/dist/assets/q-D84S4YaJ.js +1 -0
  189. package/dist/assets/{quadrantDiagram-AYHSOK5B-NRkmQ1sP.js → quadrantDiagram-AYHSOK5B-CX3AMAvR.js} +1 -1
  190. package/dist/assets/r-jmqrRzXv.js +1 -0
  191. package/dist/assets/{radar-ZZBFDIW7-CB-lQl_C.js → radar-ZZBFDIW7-CbAjwmA0.js} +1 -1
  192. package/dist/assets/{radio-group-BHzskOrm.js → radio-group-DlVSuZ_1.js} +1 -1
  193. package/dist/assets/{react-vega-CFabbyYN.js → react-vega-COx3Ibyn.js} +1 -1
  194. package/dist/assets/{react-vega-Bzl9LfSR.js → react-vega-CXIQBUis.js} +1 -1
  195. package/dist/assets/{readonly-python-code-u31O1EoO.js → readonly-python-code-D3_kHsDx.js} +1 -1
  196. package/dist/assets/renderShortcut-CcFk3m01.js +1 -0
  197. package/dist/assets/{requirementDiagram-UZGBJVZJ-C0LTiV9S.js → requirementDiagram-UZGBJVZJ-ORHKBnkg.js} +1 -1
  198. package/dist/assets/reveal-component-C50CTy8h.js +1069 -0
  199. package/dist/assets/rpm-DUjG0xRk.js +1 -0
  200. package/dist/assets/ruby-SP4FIzir.js +1 -0
  201. package/dist/assets/run-page-DeOIw0On.js +1 -0
  202. package/dist/assets/{sankeyDiagram-TZEHDZUN-CR2AycvD.js → sankeyDiagram-TZEHDZUN-Dvb8kmWa.js} +1 -1
  203. package/dist/assets/sas-BxaPz2EX.js +1 -0
  204. package/dist/assets/scheme-HBseLApj.js +1 -0
  205. package/dist/assets/{scratchpad-panel-B8GVlZFc.js → scratchpad-panel-DWbD_QB3.js} +1 -1
  206. package/dist/assets/{secrets-panel-B3E_Dkep.js → secrets-panel-BBvdIhtU.js} +1 -1
  207. package/dist/assets/{sequenceDiagram-WL72ISMW-CtF8-7iq.js → sequenceDiagram-WL72ISMW-DQycpQtE.js} +1 -1
  208. package/dist/assets/{session-panel-CeJHBx2m.js → session-panel-BHgL-7KC.js} +1 -1
  209. package/dist/assets/shell-w8ATY_lQ.js +1 -0
  210. package/dist/assets/sieve-Dyq0LGDO.js +1 -0
  211. package/dist/assets/smalltalk-D7mAtumc.js +1 -0
  212. package/dist/assets/{snippets-panel-BxEqEAeR.js → snippets-panel-FY_Ezibl.js} +1 -1
  213. package/dist/assets/sparql-DAeEYE_u.js +1 -0
  214. package/dist/assets/{src-CyeQdfB6.js → src-CvyFXpBy.js} +1 -1
  215. package/dist/assets/{state-D9_BpRuU.js → state-BTTshiKq.js} +3 -3
  216. package/dist/assets/{state-NqzCpbZn.js → state-D-2KaAHK.js} +1 -1
  217. package/dist/assets/{stateDiagram-FKZM4ZOC-R47bQmIs.js → stateDiagram-FKZM4ZOC-D78DIR_F.js} +1 -1
  218. package/dist/assets/stateDiagram-v2-4FDKWEC3-DX9rpmwh.js +1 -0
  219. package/dist/assets/{step-Ca7ZnceH.js → step-D7xg1Moj.js} +1 -1
  220. package/dist/assets/stylus-Cw3Ugan7.js +1 -0
  221. package/dist/assets/swift-CPsNOBsX.js +1 -0
  222. package/dist/assets/{switch-C8Pev-_F.js → switch-BiU_sAcn.js} +1 -1
  223. package/dist/assets/tcl-BfWyQdZa.js +1 -0
  224. package/dist/assets/{terminal-HJ3qH9Tb.js → terminal-BYGihNNp.js} +1 -1
  225. package/dist/assets/{textarea-By_oENlk.js → textarea-DwltG8V6.js} +1 -1
  226. package/dist/assets/textile-BKgaSzSN.js +1 -0
  227. package/dist/assets/{time-Dfh8bLaf.js → time-DLdI7jB3.js} +1 -1
  228. package/dist/assets/{timeline-definition-IT6M3QCI-qZnC-_po.js → timeline-definition-IT6M3QCI-DIywx3xf.js} +1 -1
  229. package/dist/assets/toml-BSOdv04W.js +1 -0
  230. package/dist/assets/{tracing-panel-DHbxfRgn.js → tracing-panel-bN0O3PuU.js} +2 -2
  231. package/dist/assets/{tracing-D3RHMNJS.js → tracing-zLH-qWb2.js} +1 -1
  232. package/dist/assets/{treemap-GDKQZRPO-C2f4_yBW.js → treemap-GDKQZRPO-Dz_qZhuG.js} +1 -1
  233. package/dist/assets/troff-C0hD9kig.js +1 -0
  234. package/dist/assets/ttcn-DEqPxhoh.js +1 -0
  235. package/dist/assets/ttcn-cfg-B-7jSlUe.js +1 -0
  236. package/dist/assets/turtle-BTtgFsu8.js +1 -0
  237. package/dist/assets/{useBoolean-DRITaoFR.js → useBoolean-Bp18o6XG.js} +1 -1
  238. package/dist/assets/{useCellActionButton-JqNWxCAc.js → useCellActionButton-h5LjhtEx.js} +1 -1
  239. package/dist/assets/{useDeleteCell-DhTEQpE6.js → useDeleteCell-BBPIhnQj.js} +1 -1
  240. package/dist/assets/useDependencyPanelTab-BSkmlMqr.js +1 -0
  241. package/dist/assets/{useHotkey-CKk0vHze.js → useHotkey-TKvjHf1m.js} +1 -1
  242. package/dist/assets/useNotebookActions-B32eCmtG.js +1 -0
  243. package/dist/assets/{useRunCells-DeA7yeHJ.js → useRunCells-BiCBGyeW.js} +1 -1
  244. package/dist/assets/{useSplitCell-DWx-q9BJ.js → useSplitCell-uogO-7ac.js} +1 -1
  245. package/dist/assets/useTheme-CI2eq4XN.js +1 -0
  246. package/dist/assets/utils-CvI-39U6.js +1 -0
  247. package/dist/assets/vb-DfRPk_ji.js +1 -0
  248. package/dist/assets/vbscript-C8D4uv5N.js +1 -0
  249. package/dist/assets/{vega-component-CBW7fUCI.js → vega-component-COOhhZ3h.js} +1 -1
  250. package/dist/assets/velocity-DxKr2FFC.js +1 -0
  251. package/dist/assets/verilog-CxVhamiH.js +1 -0
  252. package/dist/assets/vhdl-B-IpBNOA.js +1 -0
  253. package/dist/assets/webidl-CBjKmBwO.js +1 -0
  254. package/dist/assets/xquery-ABGCbLv0.js +1 -0
  255. package/dist/assets/{xychartDiagram-PRI3JC2R-Ul_9KMcM.js → xychartDiagram-PRI3JC2R-CjS1dL8k.js} +1 -1
  256. package/dist/assets/yacas-Ckyxh7oh.js +1 -0
  257. package/dist/assets/z80-Dr5sQweg.js +1 -0
  258. package/dist/index.html +32 -32
  259. package/package.json +1 -1
  260. package/src/components/ai/__tests__/ai-utils.test.ts +43 -38
  261. package/src/components/ai/ai-model-dropdown.tsx +2 -2
  262. package/src/components/app-config/ai-config.tsx +147 -16
  263. package/src/components/app-config/user-config-form.tsx +37 -1
  264. package/src/components/chat/__tests__/chat-utils.test.ts +269 -0
  265. package/src/components/chat/chat-panel.tsx +38 -5
  266. package/src/components/chat/chat-utils.ts +14 -58
  267. package/src/components/data-table/TableBottomBar.tsx +5 -8
  268. package/src/components/data-table/__tests__/column-explorer.test.tsx +128 -0
  269. package/src/components/data-table/__tests__/header-items.test.tsx +220 -10
  270. package/src/components/data-table/column-explorer-panel/column-explorer.tsx +95 -29
  271. package/src/components/data-table/column-header.tsx +17 -12
  272. package/src/components/data-table/data-table.tsx +4 -0
  273. package/src/components/data-table/export-actions.tsx +19 -12
  274. package/src/components/data-table/header-items.tsx +40 -16
  275. package/src/components/data-table/hooks/use-column-visibility.ts +14 -0
  276. package/src/components/data-table/schemas.ts +2 -2
  277. package/src/components/data-table/table-explorer-panel/table-explorer-panel.tsx +16 -6
  278. package/src/components/databases/display.tsx +2 -0
  279. package/src/components/datasources/__tests__/utils.test.ts +82 -0
  280. package/src/components/datasources/utils.ts +16 -15
  281. package/src/components/editor/Disconnected.tsx +1 -60
  282. package/src/components/editor/__tests__/viewer-banner.test.tsx +89 -0
  283. package/src/components/editor/actions/pair-with-agent-modal.tsx +1 -0
  284. package/src/components/editor/actions/useCellActionButton.tsx +3 -3
  285. package/src/components/editor/actions/useNotebookActions.tsx +5 -2
  286. package/src/components/editor/cell/code/cell-editor.tsx +25 -5
  287. package/src/components/editor/chrome/types.ts +13 -6
  288. package/src/components/editor/chrome/wrapper/app-chrome.tsx +6 -4
  289. package/src/components/editor/chrome/wrapper/footer-items/ai-status.tsx +10 -1
  290. package/src/components/editor/chrome/wrapper/sidebar.tsx +7 -5
  291. package/src/components/editor/errors/auto-fix.tsx +3 -3
  292. package/src/components/editor/header/__tests__/status.test.tsx +0 -15
  293. package/src/components/editor/header/app-header.tsx +1 -4
  294. package/src/components/editor/header/status.tsx +4 -13
  295. package/src/components/editor/navigation/__tests__/navigation.test.ts +15 -0
  296. package/src/components/editor/navigation/navigation.ts +5 -0
  297. package/src/components/editor/output/MarimoErrorOutput.tsx +103 -25
  298. package/src/components/editor/output/MarimoTracebackOutput.tsx +28 -39
  299. package/src/components/editor/renderers/cell-array.tsx +27 -24
  300. package/src/components/editor/renderers/slides-layout/__tests__/compute-slide-cells.test.ts +30 -17
  301. package/src/components/editor/renderers/slides-layout/compute-slide-cells.ts +17 -8
  302. package/src/components/editor/renderers/slides-layout/slides-layout.tsx +10 -12
  303. package/src/components/editor/viewer-banner.tsx +82 -0
  304. package/src/components/slides/minimap.tsx +45 -9
  305. package/src/components/slides/reveal-component.tsx +82 -37
  306. package/src/components/slides/slide-cell-view.tsx +12 -1
  307. package/src/components/slides/slide-form.tsx +11 -3
  308. package/src/components/static-html/static-banner.tsx +28 -22
  309. package/src/core/ai/__tests__/model-registry.test.ts +72 -60
  310. package/src/core/ai/model-registry.ts +33 -28
  311. package/src/core/cells/__tests__/actions.test.ts +48 -0
  312. package/src/core/cells/actions.ts +5 -6
  313. package/src/core/codemirror/__tests__/setup.test.ts +29 -0
  314. package/src/core/codemirror/cells/traceback-decorations.ts +1 -1
  315. package/src/core/codemirror/cm.ts +50 -3
  316. package/src/core/codemirror/completion/hints.ts +4 -1
  317. package/src/core/codemirror/format.ts +1 -0
  318. package/src/core/codemirror/keymaps/vim.ts +63 -0
  319. package/src/core/codemirror/language/languages/sql/sql.ts +1 -0
  320. package/src/core/codemirror/language/languages/sql/utils.ts +2 -0
  321. package/src/core/config/__tests__/config-schema.test.ts +4 -0
  322. package/src/core/config/config-schema.ts +4 -0
  323. package/src/core/config/config.ts +16 -0
  324. package/src/core/edit-app.tsx +3 -0
  325. package/src/core/islands/bootstrap.ts +2 -0
  326. package/src/core/kernel/__tests__/handlers.test.ts +5 -0
  327. package/src/core/websocket/__tests__/useMarimoKernelConnection.test.ts +0 -13
  328. package/src/core/websocket/types.ts +0 -6
  329. package/src/core/websocket/useMarimoKernelConnection.tsx +3 -12
  330. package/src/css/app/Cell.css +0 -1
  331. package/src/plugins/impl/DataTablePlugin.tsx +48 -22
  332. package/src/plugins/impl/chat/ChatPlugin.tsx +7 -1
  333. package/src/plugins/impl/chat/__tests__/chat-ui.test.ts +278 -0
  334. package/src/plugins/impl/chat/chat-ui.tsx +106 -59
  335. package/src/plugins/impl/chat/types.ts +5 -0
  336. package/src/utils/__tests__/json-parser.test.ts +1 -69
  337. package/src/utils/json/json-parser.ts +0 -30
  338. package/dist/assets/JsonOutput-DfDkDg0V.js +0 -53
  339. package/dist/assets/LazyAnyLanguageCodeMirror-DFv3yT20.js +0 -2
  340. package/dist/assets/MarimoErrorOutput-BXSRPZqF.js +0 -7
  341. package/dist/assets/ai-model-dropdown-D0tfwqft.js +0 -5
  342. package/dist/assets/apl-CZC-w0DM.js +0 -1
  343. package/dist/assets/asciiarmor-Dxkbb4uS.js +0 -1
  344. package/dist/assets/asn1-CrA2MPaL.js +0 -1
  345. package/dist/assets/brainfuck-B5oLVauS.js +0 -1
  346. package/dist/assets/cell-editor-hBNMClE6.js +0 -20
  347. package/dist/assets/channel-V1GV6hO1.js +0 -1
  348. package/dist/assets/chat-panel-BC-bG7Ms.js +0 -3
  349. package/dist/assets/chat-ui-B0pCMupQ.js +0 -4
  350. package/dist/assets/chunk-55IACEB6-BRJvcREw.js +0 -1
  351. package/dist/assets/classDiagram-2ON5EDUG-C8jlAFC-.js +0 -1
  352. package/dist/assets/classDiagram-v2-WZHVMYZB-DYST6eBL.js +0 -1
  353. package/dist/assets/clojure-D60XavrX.js +0 -1
  354. package/dist/assets/cmake-CrWsGXcU.js +0 -1
  355. package/dist/assets/cobol-CZosvDFE.js +0 -1
  356. package/dist/assets/coffeescript-DQGIz3iX.js +0 -1
  357. package/dist/assets/commonlisp-DrWSVXOx.js +0 -1
  358. package/dist/assets/config-C1gn3-tv.js +0 -1
  359. package/dist/assets/crystal-CMu2RgP7.js +0 -1
  360. package/dist/assets/cypher-C4I5nX3I.js +0 -1
  361. package/dist/assets/d-B_OAkSA3.js +0 -1
  362. package/dist/assets/dependency-graph-panel-skSyvOmU.js +0 -5
  363. package/dist/assets/diff-f-qA4U7T.js +0 -1
  364. package/dist/assets/dist-B2-3vH3I.js +0 -1
  365. package/dist/assets/dist-B3r3gs4u.js +0 -1
  366. package/dist/assets/dist-Dx65VI0Y.js +0 -1
  367. package/dist/assets/dist-FSgOAwAH.js +0 -1
  368. package/dist/assets/dtd-DWRTME-w.js +0 -1
  369. package/dist/assets/dylan-DnEm_ULG.js +0 -1
  370. package/dist/assets/ecl-Dbf1A5nG.js +0 -1
  371. package/dist/assets/edit-page-cW6c6KHJ.js +0 -9
  372. package/dist/assets/eiffel-Xj76_r0X.js +0 -1
  373. package/dist/assets/elm-nUwO24NA.js +0 -1
  374. package/dist/assets/erlang-CFVqMiR0.js +0 -1
  375. package/dist/assets/factor-mJPTAioV.js +0 -1
  376. package/dist/assets/forth-DBQr6L61.js +0 -1
  377. package/dist/assets/fortran-BkjqlXUL.js +0 -1
  378. package/dist/assets/gas-BNFtcdO9.js +0 -1
  379. package/dist/assets/gherkin-BrOMWqkN.js +0 -1
  380. package/dist/assets/groovy-DuCnwFRS.js +0 -1
  381. package/dist/assets/haskell-BD39942g.js +0 -1
  382. package/dist/assets/haxe-CXsKoap0.js +0 -1
  383. package/dist/assets/idl-D7hb6rI1.js +0 -1
  384. package/dist/assets/index-Cn0RBoFD.css +0 -2
  385. package/dist/assets/index-Df-5tfH1.js +0 -38
  386. package/dist/assets/infoDiagram-HS3SLOUP-CpBkxLyN.js +0 -2
  387. package/dist/assets/javascript-1S1_-Xac.js +0 -1
  388. package/dist/assets/julia-CbOUdU45.js +0 -1
  389. package/dist/assets/katex-BuYoGw8D.js +0 -1
  390. package/dist/assets/layout-CCKaB1K9.js +0 -9
  391. package/dist/assets/livescript-4YbxVKEy.js +0 -1
  392. package/dist/assets/lua-Dp2B-Joo.js +0 -1
  393. package/dist/assets/mathematica-BaSnKpgq.js +0 -1
  394. package/dist/assets/mbox-JZJfXD_G.js +0 -1
  395. package/dist/assets/mermaid-4DMBBIKO-BV51xhvi.js +0 -1
  396. package/dist/assets/mirc-BZe50pjl.js +0 -1
  397. package/dist/assets/mllike-Bgkhf51-.js +0 -1
  398. package/dist/assets/modelica-BzrnHsaM.js +0 -1
  399. package/dist/assets/mscgen-C7fmiScS.js +0 -1
  400. package/dist/assets/mumps-DYao3Wbn.js +0 -1
  401. package/dist/assets/nsis-BV9URIq2.js +0 -1
  402. package/dist/assets/ntriples-CCTjcLNo.js +0 -1
  403. package/dist/assets/octave-CalSSDIP.js +0 -1
  404. package/dist/assets/oz-BwBvNNj4.js +0 -1
  405. package/dist/assets/panels-CFhryJbE.js +0 -1
  406. package/dist/assets/pascal-VtYjd8tX.js +0 -1
  407. package/dist/assets/perl-CuiQHSod.js +0 -1
  408. package/dist/assets/pig-CIHZG4Z9.js +0 -1
  409. package/dist/assets/powershell-CI2Wos2z.js +0 -1
  410. package/dist/assets/properties-CBOFbPgT.js +0 -1
  411. package/dist/assets/protobuf-CdcXLd43.js +0 -1
  412. package/dist/assets/pug-DJHP9Svh.js +0 -1
  413. package/dist/assets/puppet-B2nxuZc5.js +0 -1
  414. package/dist/assets/python-VpIaVd-6.js +0 -1
  415. package/dist/assets/q-CamvlcK6.js +0 -1
  416. package/dist/assets/r-CgsrYWFj.js +0 -1
  417. package/dist/assets/renderShortcut-U2SzoZCS.js +0 -1
  418. package/dist/assets/reveal-component-Ds9C9Z1D.js +0 -1069
  419. package/dist/assets/rpm-DBux1aMG.js +0 -1
  420. package/dist/assets/ruby-BWHIAyVi.js +0 -1
  421. package/dist/assets/run-page-BC3D2rvr.js +0 -1
  422. package/dist/assets/sas-DJpj3tMb.js +0 -1
  423. package/dist/assets/scheme-DF-J69qP.js +0 -1
  424. package/dist/assets/shell-m-RSMeeH.js +0 -1
  425. package/dist/assets/sieve-CtzQvaig.js +0 -1
  426. package/dist/assets/smalltalk-ClFvBgAI.js +0 -1
  427. package/dist/assets/sparql-icVR0QFW.js +0 -1
  428. package/dist/assets/stateDiagram-v2-4FDKWEC3-sSKQU37N.js +0 -1
  429. package/dist/assets/stylus-TkCXytG7.js +0 -1
  430. package/dist/assets/swift-CBYBwE0m.js +0 -1
  431. package/dist/assets/tcl-DvyBVTw2.js +0 -1
  432. package/dist/assets/textile-DA3WvzuI.js +0 -1
  433. package/dist/assets/toml-BJa3ckRR.js +0 -1
  434. package/dist/assets/troff-CqZSdBAp.js +0 -1
  435. package/dist/assets/ttcn-BouEBguh.js +0 -1
  436. package/dist/assets/ttcn-cfg-C1whpGsE.js +0 -1
  437. package/dist/assets/turtle-DQ8l-awL.js +0 -1
  438. package/dist/assets/useDependencyPanelTab-BeLaV_28.js +0 -1
  439. package/dist/assets/useNotebookActions-C6L8GqPD.js +0 -4
  440. package/dist/assets/useTheme-TeWD29Uz.js +0 -1
  441. package/dist/assets/utils-Wvjk_Y4h.js +0 -1
  442. package/dist/assets/vb-B7wOdn6U.js +0 -1
  443. package/dist/assets/vbscript-DvH455rJ.js +0 -1
  444. package/dist/assets/velocity-B6C6O90i.js +0 -1
  445. package/dist/assets/verilog-JbcxpuFW.js +0 -1
  446. package/dist/assets/vhdl-SEFTp5Re.js +0 -1
  447. package/dist/assets/webidl-ChYZayPm.js +0 -1
  448. package/dist/assets/xquery-DWwllqyg.js +0 -1
  449. package/dist/assets/yacas-DQRdrpIp.js +0 -1
  450. package/dist/assets/z80-CGBxwDW7.js +0 -1
  451. /package/dist/assets/{ImageComparisonComponent-B5A-4CCj.js → ImageComparisonComponent-BIetTBDq.js} +0 -0
  452. /package/dist/assets/{Inputs-BG_nVZPt.js → Inputs-C6ftxLAJ.js} +0 -0
  453. /package/dist/assets/{Plot-CoEOwQq-.js → Plot-Ba3WGWNu.js} +0 -0
  454. /package/dist/assets/{apl-4hxG7HNk.js → apl-Byte72fT.js} +0 -0
  455. /package/dist/assets/{array-D5VxClQs.js → array-CC7vZNGO.js} +0 -0
  456. /package/dist/assets/{asciiarmor-Dv_174xi.js → asciiarmor-BU-VnG1Y.js} +0 -0
  457. /package/dist/assets/{asn1-iiMvplI8.js → asn1-hTvH3S4T.js} +0 -0
  458. /package/dist/assets/{asterisk-CC3QRUnf.js → asterisk-DIMri3P4.js} +0 -0
  459. /package/dist/assets/{brainfuck-C1zBqC_V.js → brainfuck-C-q1Rv8J.js} +0 -0
  460. /package/dist/assets/{chunk-4F5CHEZ2-DUo5vZ2r.js → chunk-4F5CHEZ2-eEwFz7fp.js} +0 -0
  461. /package/dist/assets/{chunk-B2363JML-BBEseLU0.js → chunk-B2363JML-COExSe0d.js} +0 -0
  462. /package/dist/assets/{chunk-DR5Q36YT-C0WIZcJM.js → chunk-DR5Q36YT-OB6tC_dd.js} +0 -0
  463. /package/dist/assets/{chunk-FRFDVMJY-CXpDqtzE.js → chunk-FRFDVMJY-CO3-6rb4.js} +0 -0
  464. /package/dist/assets/{chunk-PL6DKKU2-CdWr1t_8.js → chunk-PL6DKKU2-B9mDp5iV.js} +0 -0
  465. /package/dist/assets/{chunk-SJTYNZTY-SWJVmNtW.js → chunk-SJTYNZTY-Dh_h90Yu.js} +0 -0
  466. /package/dist/assets/{chunk-TQ3KTPDO-NHSLONf7.js → chunk-TQ3KTPDO-CFybjK0M.js} +0 -0
  467. /package/dist/assets/{chunk-UMXZTB3W-Ct179y25.js → chunk-UMXZTB3W-C3w83KpJ.js} +0 -0
  468. /package/dist/assets/{clear-button-CIwzVocs.js → clear-button-Cfe8K4j_.js} +0 -0
  469. /package/dist/assets/{click-outside-container-Bx6OOW4y.js → click-outside-container-BNVqwewc.js} +0 -0
  470. /package/dist/assets/{clike-DgscWMor.js → clike-BE-9Ct_H.js} +0 -0
  471. /package/dist/assets/{clojure-BHbbYwIQ.js → clojure-Co-TLeNo.js} +0 -0
  472. /package/dist/assets/{cmake-DLR6lpqL.js → cmake-B-Nm_Opd.js} +0 -0
  473. /package/dist/assets/{cobol-BCxTxy3w.js → cobol-BGdihAZT.js} +0 -0
  474. /package/dist/assets/{coffeescript-CpA2P5vm.js → coffeescript-BUZXkMUO.js} +0 -0
  475. /package/dist/assets/{colors-CWfEs9Oi.js → colors-BG8Z91CW.js} +0 -0
  476. /package/dist/assets/{common-keywords-0dB1lgek.js → common-keywords-15xBKau4.js} +0 -0
  477. /package/dist/assets/{commonlisp-IOtLAQXJ.js → commonlisp-CFkPbxvX.js} +0 -0
  478. /package/dist/assets/{crystal-D5D6_kGA.js → crystal-CqfqDl34.js} +0 -0
  479. /package/dist/assets/{css-DOb8-BDy.js → css-DPEtZWJi.js} +0 -0
  480. /package/dist/assets/{cypher-DLF7i4IG.js → cypher-B0t8FJvU.js} +0 -0
  481. /package/dist/assets/{cytoscape.esm-CuwfIk-V.js → cytoscape.esm-DT8iy6p1.js} +0 -0
  482. /package/dist/assets/{d-ByNdxjrk.js → d-DRa_XRSB.js} +0 -0
  483. /package/dist/assets/{diff-DgsriQcn.js → diff-GLneonpD.js} +0 -0
  484. /package/dist/assets/{dist-B6ehDvA-.js → dist-A7swzSTR.js} +0 -0
  485. /package/dist/assets/{dist-Cofj3PRM.js → dist-BF6UNR6V.js} +0 -0
  486. /package/dist/assets/{dist-Bc225YxE.js → dist-BQWswd1A.js} +0 -0
  487. /package/dist/assets/{dist-DviQ3W6h.js → dist-BQeNY9Zl.js} +0 -0
  488. /package/dist/assets/{dist-BA8xhrl2.js → dist-BXRWfNwi.js} +0 -0
  489. /package/dist/assets/{dist-fhXsH3fb.js → dist-BlOtCkpT.js} +0 -0
  490. /package/dist/assets/{dist-D8MaDlGc.js → dist-C78V1LRz.js} +0 -0
  491. /package/dist/assets/{dist-CcoNWYux.js → dist-CKT_lJKW.js} +0 -0
  492. /package/dist/assets/{dist-CNghxh0Q.js → dist-CNyMUs19.js} +0 -0
  493. /package/dist/assets/{dist-qBfIhsAs.js → dist-CXBpwk_w.js} +0 -0
  494. /package/dist/assets/{dist-D86l0QaP.js → dist-CciFN1z_.js} +0 -0
  495. /package/dist/assets/{dist-cS6yvaqe.js → dist-CocyeH0q.js} +0 -0
  496. /package/dist/assets/{dist-C_k5-SEy.js → dist-CpcTHxTt.js} +0 -0
  497. /package/dist/assets/{dist-WcxjmQmQ.js → dist-CsvFAFh9.js} +0 -0
  498. /package/dist/assets/{dist-oSdg9XA7.js → dist-D70Tz1Kr.js} +0 -0
  499. /package/dist/assets/{dist-CjBmWBr2.js → dist-DUHHizRG.js} +0 -0
  500. /package/dist/assets/{dist-CiOPfbN_.js → dist-DqVEVg0c.js} +0 -0
  501. /package/dist/assets/{dtd-BY21shY3.js → dtd-uVrZNVF0.js} +0 -0
  502. /package/dist/assets/{duckdb-keywords-DH8yhwVC.js → duckdb-keywords-CYQ5DEZJ.js} +0 -0
  503. /package/dist/assets/{dylan-D_hF5J0y.js → dylan-DkNeA4FZ.js} +0 -0
  504. /package/dist/assets/{ebnf-D73UE5Hl.js → ebnf-XMH6KY7E.js} +0 -0
  505. /package/dist/assets/{ecl-C1ORA0cg.js → ecl-CldUgvc9.js} +0 -0
  506. /package/dist/assets/{eiffel-1fe3g8c_.js → eiffel-CoMDRbRL.js} +0 -0
  507. /package/dist/assets/{elm-hjWurFzL.js → elm-Cb5XC6ev.js} +0 -0
  508. /package/dist/assets/{erlang-Bp4wxA5O.js → erlang-8H3fTZ3L.js} +0 -0
  509. /package/dist/assets/{esm-DM72gy9Q.js → esm-1wf4HygE.js} +0 -0
  510. /package/dist/assets/{fcl-1tMcz7c0.js → fcl-DyFJAgkq.js} +0 -0
  511. /package/dist/assets/{formatting-3l1CoS7X.js → formatting-CSG9kqNb.js} +0 -0
  512. /package/dist/assets/{forth-5O98d424.js → forth-B8kC4npz.js} +0 -0
  513. /package/dist/assets/{fortran-BIuAFxQ8.js → fortran-CNWGEL3c.js} +0 -0
  514. /package/dist/assets/{gallery-page-7ltBHWVR.js → gallery-page-Bcf7fYLy.js} +0 -0
  515. /package/dist/assets/{gas-CHHhShkY.js → gas-DnZQNTHK.js} +0 -0
  516. /package/dist/assets/{gherkin-DIjcYYBT.js → gherkin-JfGcGvci.js} +0 -0
  517. /package/dist/assets/{groovy-BYU3Z-yz.js → groovy-D0FWiAVm.js} +0 -0
  518. /package/dist/assets/{haskell-CjOVOYhk.js → haskell-wUB3uX-G.js} +0 -0
  519. /package/dist/assets/{haxe-Cb_U41Kf.js → haxe-g0JY6eL-.js} +0 -0
  520. /package/dist/assets/{http-DTsrgwMt.js → http-ySzAzH5W.js} +0 -0
  521. /package/dist/assets/{idl-XfUB5VqU.js → idl-CV2cLkPc.js} +0 -0
  522. /package/dist/assets/{init-BYCsRZEq.js → init-DsZRk2YA.js} +0 -0
  523. /package/dist/assets/{javascript-BZ9iuJe9.js → javascript-CT6okXEZ.js} +0 -0
  524. /package/dist/assets/{julia-ZgWUbR6s.js → julia-CKC48ufo.js} +0 -0
  525. /package/dist/assets/{katex-BNYG1in3.js → katex-BE4UDS50.js} +0 -0
  526. /package/dist/assets/{links-DguLoFik.js → links-1rtF1-eC.js} +0 -0
  527. /package/dist/assets/{livescript-PvHqMAnA.js → livescript-C43pZ6Ue.js} +0 -0
  528. /package/dist/assets/{loro_wasm_bg-Z5Iceaci.js → loro_wasm_bg-CXnd80ne.js} +0 -0
  529. /package/dist/assets/{lua-BAkgehCh.js → lua-Cs2mb10K.js} +0 -0
  530. /package/dist/assets/{marimo-icons-CcDNGIRM.js → marimo-icons-CiwvnnsT.js} +0 -0
  531. /package/dist/assets/{math-D-qpUWKO.js → math-B-ZqhQTL.js} +0 -0
  532. /package/dist/assets/{mathematica-sYPoESCW.js → mathematica-B5FMK3ma.js} +0 -0
  533. /package/dist/assets/{mbox-BFVpgB4i.js → mbox-36Zrn5Bd.js} +0 -0
  534. /package/dist/assets/{mirc-DAwdMlc7.js → mirc-BKTAABSX.js} +0 -0
  535. /package/dist/assets/{mllike-CNENYbun.js → mllike-DbuClUqc.js} +0 -0
  536. /package/dist/assets/{modelica-FtpuFG3d.js → modelica-CKRvBm7N.js} +0 -0
  537. /package/dist/assets/{mscgen-BZpZ1eAc.js → mscgen-B4BRgnCi.js} +0 -0
  538. /package/dist/assets/{multi-icon-aZG-rdCp.js → multi-icon-NVkxesVZ.js} +0 -0
  539. /package/dist/assets/{mumps-BM8g2rR9.js → mumps-BFiMcyFV.js} +0 -0
  540. /package/dist/assets/{nginx-CREUN6EW.js → nginx-Cz_XvoTm.js} +0 -0
  541. /package/dist/assets/{node-sql-parser-fWuidk6P.js → node-sql-parser-BtkrI4pN.js} +0 -0
  542. /package/dist/assets/{ntriples-Dpum4Lhl.js → ntriples-QQAkJYAR.js} +0 -0
  543. /package/dist/assets/{octave-C-8skAyy.js → octave-DsTphmGZ.js} +0 -0
  544. /package/dist/assets/{oz-C9dNiWs3.js → oz-CD9rr5Iz.js} +0 -0
  545. /package/dist/assets/{panel-context-C3ham7ZV.js → panel-context-BJbBGfoL.js} +0 -0
  546. /package/dist/assets/{pascal-OtDoyUlT.js → pascal-DdHEIlJE.js} +0 -0
  547. /package/dist/assets/{path-_EHCEa2c.js → path-DvTahePH.js} +0 -0
  548. /package/dist/assets/{perl-Bq6zPLry.js → perl-DHPJBQ1u.js} +0 -0
  549. /package/dist/assets/{pig-CzHJ3vXa.js → pig-Yz7ERgca.js} +0 -0
  550. /package/dist/assets/{powershell-CPgLwhmC.js → powershell-CHPZ_bsU.js} +0 -0
  551. /package/dist/assets/{properties-Kfp4iofx.js → properties-CI9nc7K4.js} +0 -0
  552. /package/dist/assets/{protobuf-BtodseUb.js → protobuf-BYSIv2pY.js} +0 -0
  553. /package/dist/assets/{puppet-DqMZ-3jb.js → puppet-CEpLafZX.js} +0 -0
  554. /package/dist/assets/{python-Du1sm3Dz.js → python-BndVuwG1.js} +0 -0
  555. /package/dist/assets/{q-mTJjDbkl.js → q-L_cetpiW.js} +0 -0
  556. /package/dist/assets/{r-CiWGt8bY.js → r-Dd37AKWk.js} +0 -0
  557. /package/dist/assets/{request-registry-Gm-nOP6a.js → request-registry--h6PWG50.js} +0 -0
  558. /package/dist/assets/{requests-Bm3bohzL.js → requests-DqJEWJ-Q.js} +0 -0
  559. /package/dist/assets/{rpm-DoWl8uQ-.js → rpm-CHrvhtlN.js} +0 -0
  560. /package/dist/assets/{ruby-EPWn7HjP.js → ruby-BPOowfX6.js} +0 -0
  561. /package/dist/assets/{runs-_nm7RTvJ.js → runs-BD0G-C2A.js} +0 -0
  562. /package/dist/assets/{sas-C49N66K9.js → sas-BsEFSvEP.js} +0 -0
  563. /package/dist/assets/{scheme-BKBMeaMf.js → scheme-B42INBu7.js} +0 -0
  564. /package/dist/assets/{shell-B3Qif7WE.js → shell-BPea12OI.js} +0 -0
  565. /package/dist/assets/{sieve-D2oOzUQe.js → sieve-C-yPcLw5.js} +0 -0
  566. /package/dist/assets/{simple-mode-awvuWmjh.js → simple-mode-CFlvn0Mm.js} +0 -0
  567. /package/dist/assets/{smalltalk-D2JNyQE_.js → smalltalk-e7OO1ATb.js} +0 -0
  568. /package/dist/assets/{solr-DD6Hdy4w.js → solr-BAO4N63o.js} +0 -0
  569. /package/dist/assets/{sparql-B_E2GW41.js → sparql-B4I2Ledx.js} +0 -0
  570. /package/dist/assets/{spreadsheet-DQc2JQ5m.js → spreadsheet-DWqd5foV.js} +0 -0
  571. /package/dist/assets/{sql-Cj5Wcvsd.js → sql-RBdzBYsM.js} +0 -0
  572. /package/dist/assets/{src-faGJHwXX.js → src-BnrQkOKh.js} +0 -0
  573. /package/dist/assets/{stylus-R6o8NrsG.js → stylus-CBRbZwhN.js} +0 -0
  574. /package/dist/assets/{swift-Dbh-hbmH.js → swift-B2hnU7ha.js} +0 -0
  575. /package/dist/assets/{swiper-component-Dgt-sBCT.js → swiper-component-YGJlBaCp.js} +0 -0
  576. /package/dist/assets/{tcl-B7hCCUdg.js → tcl-BtyamtaZ.js} +0 -0
  577. /package/dist/assets/{textile-3T2abjma.js → textile-M9mhyNE9.js} +0 -0
  578. /package/dist/assets/{tiddlywiki-Co__osNU.js → tiddlywiki-BsHUDwie.js} +0 -0
  579. /package/dist/assets/{tiki-CfCZczlo.js → tiki-ZqBe4Kjv.js} +0 -0
  580. /package/dist/assets/{timer-BgiWPhV9.js → timer-B6DpdVnC.js} +0 -0
  581. /package/dist/assets/{toml-BfSTXCbK.js → toml-YxyxhyRy.js} +0 -0
  582. /package/dist/assets/{treemap-F5PoC_M0.js → treemap-DeGcO9km.js} +0 -0
  583. /package/dist/assets/{troff-TmwTwfFH.js → troff-C7xpi05X.js} +0 -0
  584. /package/dist/assets/{ttcn-BptQ-efU.js → ttcn-D3YytrJU.js} +0 -0
  585. /package/dist/assets/{ttcn-cfg-BJSeQh2j.js → ttcn-cfg-DlZ5vA9E.js} +0 -0
  586. /package/dist/assets/{turtle-NWQZPdQh.js → turtle-BSHvAsUe.js} +0 -0
  587. /package/dist/assets/{types-iYXk7c05.js → types-a-yURniQ.js} +0 -0
  588. /package/dist/assets/{useInterval-Bc-mr0KL.js → useInterval-2YvvhIZI.js} +0 -0
  589. /package/dist/assets/{vb-5MAVubtN.js → vb-DdkIDLlO.js} +0 -0
  590. /package/dist/assets/{vbscript-C3wI-prb.js → vbscript-DhYGmk_p.js} +0 -0
  591. /package/dist/assets/{velocity-BZ0SsVqc.js → velocity-DAXJNEw4.js} +0 -0
  592. /package/dist/assets/{verilog-sCLfsuOk.js → verilog-jmuT_L3b.js} +0 -0
  593. /package/dist/assets/{vhdl-D8-XDERr.js → vhdl-DcVQ97RU.js} +0 -0
  594. /package/dist/assets/{web-vitals-CJ8ovao_.js → web-vitals-xkV-JBVF.js} +0 -0
  595. /package/dist/assets/{webidl-C2DK9LNJ.js → webidl-B-YB_4OQ.js} +0 -0
  596. /package/dist/assets/{write-secret-modal-DEx_mRHR.js → write-secret-modal-BFLlHwgU.js} +0 -0
  597. /package/dist/assets/{ws-YSapF1PN.js → ws-BnE9sl8z.js} +0 -0
  598. /package/dist/assets/{xquery-Db3HYO3C.js → xquery-DOmY3Oe8.js} +0 -0
  599. /package/dist/assets/{yacas-DhfMSinV.js → yacas-pL3kJRXV.js} +0 -0
  600. /package/dist/assets/{z80-CH-vqbta.js → z80-VwVuI_MT.js} +0 -0
@@ -1,6 +1,15 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
+ "use no memo";
2
3
 
3
- import { ChevronDownIcon, ChevronRightIcon } from "lucide-react";
4
+ // tanstack/table is not compatible with React compiler
5
+ // https://github.com/TanStack/table/issues/5567
6
+
7
+ import {
8
+ ChevronDownIcon,
9
+ ChevronRightIcon,
10
+ EyeIcon,
11
+ EyeOffIcon,
12
+ } from "lucide-react";
4
13
  import { useState } from "react";
5
14
  import { useLocale } from "react-aria";
6
15
  import {
@@ -38,22 +47,28 @@ import {
38
47
  INDEX_COLUMN_NAME,
39
48
  SELECT_COLUMN_ID,
40
49
  } from "../types";
50
+ import { smartMatch } from "@/utils/smartMatch";
51
+ import type { Column, Table } from "@tanstack/react-table";
52
+ import { cn } from "@/utils/cn";
53
+ import { getColumnCountForDisplay } from "../hooks/use-column-visibility";
41
54
 
42
- interface ColumnExplorerPanelProps {
55
+ interface ColumnExplorerPanelProps<TData> {
43
56
  previewColumn: PreviewColumn;
44
57
  fieldTypes: FieldTypesWithExternalType | undefined | null;
45
58
  totalRows: number | "too_many";
46
59
  totalColumns: number;
47
60
  tableId: string;
61
+ table: Table<TData>;
48
62
  }
49
63
 
50
- export const ColumnExplorerPanel = ({
64
+ export function ColumnExplorerPanel<TData>({
51
65
  previewColumn,
52
66
  fieldTypes,
53
67
  totalRows,
54
68
  totalColumns,
55
69
  tableId,
56
- }: ColumnExplorerPanelProps) => {
70
+ table,
71
+ }: ColumnExplorerPanelProps<TData>) {
57
72
  const [searchValue, setSearchValue] = useState("");
58
73
  const { locale } = useLocale();
59
74
  const columns = fieldTypes?.filter(([columnName]) => {
@@ -68,25 +83,43 @@ export const ColumnExplorerPanel = ({
68
83
  });
69
84
 
70
85
  const filteredColumns = columns?.filter(([columnName]) => {
71
- return columnName.toLowerCase().includes(searchValue.toLowerCase());
86
+ return smartMatch(searchValue, columnName);
72
87
  });
73
88
 
74
- const rowColumnHiddenStr = prettifyRowColumnCount({
89
+ const {
90
+ totalColumns: effectiveTotalColumns,
91
+ hiddenColumns: hiddenColumnCount,
92
+ } = getColumnCountForDisplay(table, totalColumns);
93
+
94
+ const { rowsAndColumns, hiddenSuffix } = prettifyRowColumnCount({
75
95
  numRows: totalRows,
76
- totalColumns,
96
+ totalColumns: effectiveTotalColumns,
77
97
  locale,
78
- }).rowsAndColumns;
98
+ hiddenColumns: hiddenColumnCount,
99
+ });
79
100
 
80
101
  return (
81
102
  <div className="mb-3">
82
- <span className="text-xs font-semibold ml-2 flex">
83
- {rowColumnHiddenStr}
103
+ <div className="text-xs font-semibold ml-2 flex items-center gap-1">
104
+ {rowsAndColumns}
105
+ {hiddenColumnCount > 0 && <span>{hiddenSuffix}</span>}
84
106
  <CopyClipboardIcon
85
107
  tooltip="Copy column names"
86
108
  value={columns?.map(([columnName]) => columnName).join(",\n") || ""}
87
- className="h-3 w-3 ml-1 mt-0.5"
109
+ className="h-3 w-3"
88
110
  />
89
- </span>
111
+ {hiddenColumnCount > 0 && (
112
+ <Button
113
+ type="button"
114
+ variant="link"
115
+ size="xs"
116
+ className="h-auto p-0"
117
+ onClick={() => table.resetColumnVisibility(true)}
118
+ >
119
+ Unhide all
120
+ </Button>
121
+ )}
122
+ </div>
90
123
  <Command className="h-5/6 bg-background" shouldFilter={false}>
91
124
  <CommandInput
92
125
  placeholder="Search columns..."
@@ -97,11 +130,14 @@ export const ColumnExplorerPanel = ({
97
130
  <CommandEmpty>No results.</CommandEmpty>
98
131
  {filteredColumns?.map(
99
132
  ([columnName, [dataType, externalType]], index) => {
133
+ const column = table.getColumn(columnName);
134
+
100
135
  return (
101
136
  <ColumnItem
102
137
  // Tables may have the same column names, hence we use tableId to make it unique
103
138
  key={`${tableId}-${columnName}`}
104
139
  columnName={columnName}
140
+ column={column}
105
141
  dataType={dataType}
106
142
  externalType={externalType}
107
143
  previewColumn={previewColumn}
@@ -114,21 +150,23 @@ export const ColumnExplorerPanel = ({
114
150
  </Command>
115
151
  </div>
116
152
  );
117
- };
153
+ }
118
154
 
119
- const ColumnItem = ({
155
+ function ColumnItem<TData>({
120
156
  columnName,
157
+ column,
121
158
  dataType,
122
159
  externalType,
123
160
  previewColumn,
124
161
  defaultExpanded = false,
125
162
  }: {
126
163
  columnName: string;
164
+ column?: Column<TData, unknown>;
127
165
  dataType: DataType;
128
166
  externalType: string;
129
167
  previewColumn: PreviewColumn;
130
168
  defaultExpanded?: boolean;
131
- }) => {
169
+ }) {
132
170
  const [isExpanded, setIsExpanded] = useState(defaultExpanded);
133
171
 
134
172
  const columnText = (
@@ -148,20 +186,48 @@ const ColumnItem = ({
148
186
  <ChevronRightIcon className="w-3 h-3 shrink-0 text-muted-foreground" />
149
187
  )}
150
188
  <ColumnName columnName={columnText} dataType={dataType} />
151
- <div className="ml-auto">
152
- <Tooltip content="Copy column name" delayDuration={400}>
153
- <Button
154
- variant="text"
155
- size="icon"
156
- className="group-hover:opacity-100 opacity-0 hover:bg-muted text-muted-foreground hover:text-foreground"
189
+ <div className="ml-auto flex items-center gap-0.5">
190
+ <CopyClipboardIcon
191
+ tooltip="Copy column name"
192
+ value={columnName}
193
+ className="h-3 w-3"
194
+ buttonClassName={cn(
195
+ "inline-flex items-center justify-center rounded-md h-6 w-6",
196
+ "group-hover:opacity-100 opacity-0 hover:bg-muted text-muted-foreground hover:text-primary",
197
+ )}
198
+ />
199
+ {column?.getCanHide() && (
200
+ <Tooltip
201
+ content={column.getIsVisible() ? "Hide column" : "Show column"}
202
+ delayDuration={400}
157
203
  >
158
- <CopyClipboardIcon
159
- tooltip={false}
160
- value={columnName}
161
- className="h-3 w-3"
162
- />
163
- </Button>
164
- </Tooltip>
204
+ <Button
205
+ type="button"
206
+ variant="text"
207
+ size="icon"
208
+ aria-label={
209
+ column.getIsVisible() ? "Hide column" : "Show column"
210
+ }
211
+ className={cn(
212
+ "hover:bg-muted text-muted-foreground hover:text-primary",
213
+ column.getIsVisible()
214
+ ? "group-hover:opacity-100 opacity-0"
215
+ : "opacity-100",
216
+ )}
217
+ onClick={(e) => {
218
+ e.preventDefault();
219
+ e.stopPropagation();
220
+ column.toggleVisibility(!column.getIsVisible());
221
+ }}
222
+ >
223
+ {column.getIsVisible() ? (
224
+ <EyeIcon className="h-3 w-3" strokeWidth={2.5} />
225
+ ) : (
226
+ <EyeOffIcon className="h-3 w-3" strokeWidth={2.5} />
227
+ )}
228
+ </Button>
229
+ </Tooltip>
230
+ )}
165
231
  <span className="text-xs text-muted-foreground">{externalType}</span>
166
232
  </div>
167
233
  </CommandItem>
@@ -176,7 +242,7 @@ const ColumnItem = ({
176
242
  )}
177
243
  </>
178
244
  );
179
- };
245
+ }
180
246
 
181
247
  const ColumnPreview = ({
182
248
  previewColumn,
@@ -17,14 +17,14 @@ import { useFilterEditor } from "./filter-editor-context";
17
17
  import { EDITABLE_FILTER_TYPES, isMembershipFilterType } from "./filters";
18
18
  import {
19
19
  ClearFilterMenuItem,
20
+ ColumnPinning,
21
+ ColumnWrapping,
22
+ CopyColumn,
23
+ DataType,
24
+ FormatOptions,
20
25
  HideColumn,
21
- renderColumnPinning,
22
- renderColumnWrapping,
23
- renderCopyColumn,
24
- renderDataType,
25
- renderFormatOptions,
26
26
  renderSortIcon,
27
- renderSorts,
27
+ Sorts,
28
28
  } from "./header-items";
29
29
 
30
30
  interface DataTableColumnHeaderProps<
@@ -36,6 +36,11 @@ interface DataTableColumnHeaderProps<
36
36
  subheader?: React.ReactNode;
37
37
  justify?: "left" | "center" | "right";
38
38
  calculateTopKRows?: CalculateTopKRows;
39
+ /**
40
+ * Optional: only used to surface multi-column sort actions ("Clear all
41
+ * sorts"). Omitted by call sites that define their header inside column
42
+ * definitions, where the table instance isn't yet available.
43
+ */
39
44
  table?: Table<TData>;
40
45
  }
41
46
 
@@ -119,12 +124,12 @@ export const DataTableColumnHeader = <TData, TValue>({
119
124
  </button>
120
125
  </DropdownMenuTrigger>
121
126
  <DropdownMenuContent align="start">
122
- {renderDataType(column)}
123
- {renderSorts(column, table)}
124
- {renderCopyColumn(column)}
125
- {renderColumnPinning(column)}
126
- {renderColumnWrapping(column)}
127
- {renderFormatOptions(column, locale)}
127
+ <DataType column={column} />
128
+ <Sorts column={column} table={table} />
129
+ <CopyColumn column={column} />
130
+ <ColumnPinning column={column} />
131
+ <ColumnWrapping column={column} />
132
+ <FormatOptions column={column} locale={locale} />
128
133
  <HideColumn column={column} />
129
134
  {canEditFilter && <DropdownMenuSeparator />}
130
135
  {canEditFilter && (
@@ -17,6 +17,7 @@ import {
17
17
  type PaginationState,
18
18
  type RowSelectionState,
19
19
  type SortingState,
20
+ type Table as TanstackTable,
20
21
  useReactTable,
21
22
  } from "@tanstack/react-table";
22
23
  import React, { memo } from "react";
@@ -127,6 +128,7 @@ interface DataTableProps<TData> extends Partial<ExportActionProps> {
127
128
  togglePanel?: (panelType: PanelType) => void;
128
129
  isPanelOpen?: (panelType: PanelType) => boolean;
129
130
  isAnyPanelOpen?: boolean;
131
+ renderTableExplorerPanel?: (table: TanstackTable<TData>) => React.ReactNode;
130
132
  }
131
133
 
132
134
  const DataTableInternal = <TData,>({
@@ -178,6 +180,7 @@ const DataTableInternal = <TData,>({
178
180
  isAnyPanelOpen,
179
181
  viewedRowIdx,
180
182
  onViewedRowChange,
183
+ renderTableExplorerPanel,
181
184
  }: DataTableProps<TData>) => {
182
185
  const [showLoadingBar, setShowLoadingBar] = React.useState<boolean>(false);
183
186
  const { locale } = useLocale();
@@ -346,6 +349,7 @@ const DataTableInternal = <TData,>({
346
349
  addFilterSnapshot={addFilterSnapshot}
347
350
  onAddFilterSnapshotChange={setAddFilterSnapshot}
348
351
  />
352
+ {renderTableExplorerPanel?.(table)}
349
353
  <CellSelectionProvider>
350
354
  <div
351
355
  part="table-wrapper"
@@ -9,7 +9,6 @@ import {
9
9
  TableIcon,
10
10
  } from "lucide-react";
11
11
  import React from "react";
12
- import { useLocale } from "react-aria";
13
12
  import { downloadSizeLimitAtom } from "./download-policy/atoms";
14
13
  import { logNever } from "@/utils/assertNever";
15
14
  import { cn } from "@/utils/cn";
@@ -20,7 +19,6 @@ import { Filenames } from "@/utils/filenames";
20
19
  import {
21
20
  jsonParseWithSpecialChar,
22
21
  jsonToMarkdown,
23
- jsonToTSV,
24
22
  } from "@/utils/json/json-parser";
25
23
  import { MissingPackagePrompt } from "../datasources/missing-package-prompt";
26
24
  import { Button } from "../ui/button";
@@ -68,7 +66,12 @@ const FILE_TYPES = {
68
66
  },
69
67
  } as const;
70
68
 
71
- const downloadOptions = [FILE_TYPES.CSV, FILE_TYPES.JSON, FILE_TYPES.PARQUET];
69
+ const downloadOptions = [
70
+ FILE_TYPES.CSV,
71
+ FILE_TYPES.TSV,
72
+ FILE_TYPES.JSON,
73
+ FILE_TYPES.PARQUET,
74
+ ];
72
75
  const copyOptions = [
73
76
  FILE_TYPES.TSV,
74
77
  FILE_TYPES.JSON,
@@ -79,6 +82,15 @@ const copyOptions = [
79
82
  type DownloadFormat = (typeof downloadOptions)[number]["format"];
80
83
  type CopyFormat = (typeof copyOptions)[number]["format"];
81
84
 
85
+ // Each clipboard-copy format fetches from a backend download format, then
86
+ // transforms the payload client-side as needed.
87
+ const COPY_SOURCE_FORMAT: Record<CopyFormat, DownloadFormat> = {
88
+ csv: "csv",
89
+ tsv: "tsv",
90
+ json: "json",
91
+ markdown: "json",
92
+ };
93
+
82
94
  export interface ExportActionProps {
83
95
  downloadAs: (req: { format: DownloadFormat }) => Promise<{
84
96
  url: string;
@@ -100,7 +112,6 @@ const labelForCopyFormat = (format: CopyFormat): string =>
100
112
  copyOptions.find((opt) => opt.format === format)?.label ?? format;
101
113
 
102
114
  export const ExportMenu: React.FC<ExportActionProps> = (props) => {
103
- const { locale } = useLocale();
104
115
  const [downloadMenuOpen, setDownloadMenuOpen] = React.useState(false);
105
116
  const policy = useAtomValue(downloadSizeLimitAtom);
106
117
  const overLimit = !!(
@@ -213,7 +224,7 @@ export const ExportMenu: React.FC<ExportActionProps> = (props) => {
213
224
  await withLoadingToast(
214
225
  `Preparing ${labelForCopyFormat(format)} for clipboard...`,
215
226
  async () => {
216
- const sourceFormat: DownloadFormat = format === "csv" ? "csv" : "json";
227
+ const sourceFormat = COPY_SOURCE_FORMAT[format];
217
228
  const result = await resolveDownloadUrl(sourceFormat, () => {
218
229
  void handleClipboardCopy(format);
219
230
  });
@@ -223,19 +234,15 @@ export const ExportMenu: React.FC<ExportActionProps> = (props) => {
223
234
 
224
235
  let text: string;
225
236
  switch (format) {
226
- case "tsv": {
227
- const json = await fetchJson(result.url);
228
- text = jsonToTSV(json, locale);
237
+ case "tsv":
238
+ case "csv":
239
+ text = await fetchText(result.url);
229
240
  break;
230
- }
231
241
  case "json": {
232
242
  const json = await fetchJson(result.url);
233
243
  text = JSON.stringify(json, null, 2);
234
244
  break;
235
245
  }
236
- case "csv":
237
- text = await fetchText(result.url);
238
- break;
239
246
  case "markdown": {
240
247
  const json = await fetchJson(result.url);
241
248
  text = jsonToMarkdown(json);
@@ -29,10 +29,13 @@ import { formattingExample } from "./column-formatting/feature";
29
29
  import { formatOptions } from "./column-formatting/types";
30
30
  import { NAMELESS_COLUMN_PREFIX } from "./columns";
31
31
 
32
- export function renderFormatOptions<TData, TValue>(
33
- column: Column<TData, TValue>,
34
- locale: string,
35
- ) {
32
+ export function FormatOptions<TData, TValue>({
33
+ column,
34
+ locale,
35
+ }: {
36
+ column: Column<TData, TValue>;
37
+ locale: string;
38
+ }) {
36
39
  const dataType: DataType | undefined = column.columnDef.meta?.dataType;
37
40
  const columnFormatOptions = dataType ? formatOptions[dataType] : [];
38
41
 
@@ -83,9 +86,11 @@ export function renderFormatOptions<TData, TValue>(
83
86
  );
84
87
  }
85
88
 
86
- export function renderColumnWrapping<TData, TValue>(
87
- column: Column<TData, TValue>,
88
- ) {
89
+ export function ColumnWrapping<TData, TValue>({
90
+ column,
91
+ }: {
92
+ column: Column<TData, TValue>;
93
+ }) {
89
94
  if (!column.getCanWrap?.() || !column.getColumnWrapping) {
90
95
  return null;
91
96
  }
@@ -108,9 +113,11 @@ export function renderColumnWrapping<TData, TValue>(
108
113
  );
109
114
  }
110
115
 
111
- export function renderColumnPinning<TData, TValue>(
112
- column: Column<TData, TValue>,
113
- ) {
116
+ export function ColumnPinning<TData, TValue>({
117
+ column,
118
+ }: {
119
+ column: Column<TData, TValue>;
120
+ }) {
114
121
  if (!column.getCanPin?.() || !column.getIsPinned) {
115
122
  return null;
116
123
  }
@@ -157,7 +164,11 @@ export function HideColumn<TData, TValue>({
157
164
  );
158
165
  }
159
166
 
160
- export function renderCopyColumn<TData, TValue>(column: Column<TData, TValue>) {
167
+ export function CopyColumn<TData, TValue>({
168
+ column,
169
+ }: {
170
+ column: Column<TData, TValue>;
171
+ }) {
161
172
  if (!column.getCanCopy?.()) {
162
173
  return null;
163
174
  }
@@ -177,10 +188,19 @@ export function renderCopyColumn<TData, TValue>(column: Column<TData, TValue>) {
177
188
  const AscIcon = ArrowUpNarrowWideIcon;
178
189
  const DescIcon = ArrowDownWideNarrowIcon;
179
190
 
180
- export function renderSorts<TData, TValue>(
181
- column: Column<TData, TValue>,
182
- table?: Table<TData>,
183
- ) {
191
+ /**
192
+ * `table` is optional: it is only needed to detect multi-column sorting and
193
+ * offer "Clear all sorts". Call sites that build their header inside column
194
+ * definitions (where the table instance isn't yet in scope) omit it and fall
195
+ * back to single-column "Clear sort".
196
+ */
197
+ export function Sorts<TData, TValue>({
198
+ column,
199
+ table,
200
+ }: {
201
+ column: Column<TData, TValue>;
202
+ table?: Table<TData>;
203
+ }) {
184
204
  if (!column.getCanSort()) {
185
205
  return null;
186
206
  }
@@ -271,7 +291,11 @@ export function renderSortIcon<TData, TValue>(column: Column<TData, TValue>) {
271
291
  return <Icon className="h-3 w-3" />;
272
292
  }
273
293
 
274
- export function renderDataType<TData, TValue>(column: Column<TData, TValue>) {
294
+ export function DataType<TData, TValue>({
295
+ column,
296
+ }: {
297
+ column: Column<TData, TValue>;
298
+ }) {
275
299
  const dtype: string | undefined = column.columnDef.meta?.dtype;
276
300
  if (!dtype) {
277
301
  return null;
@@ -40,3 +40,17 @@ export function getUserColumnVisibilityCounts<TData>(
40
40
  hidden: userColumns.length - visible,
41
41
  };
42
42
  }
43
+
44
+ // When columns are clipped server-side, the TanStack instance only holds the
45
+ // rendered subset, so visible/hidden math must use that subset's total. The
46
+ // dataset-wide value is still correct for the no-hidden "N columns" label.
47
+ export function getColumnCountForDisplay<TData>(
48
+ table: Table<TData>,
49
+ datasetTotalColumns: number,
50
+ ): { totalColumns: number; hiddenColumns: number } {
51
+ const counts = getUserColumnVisibilityCounts(table);
52
+ return {
53
+ totalColumns: counts.hidden > 0 ? counts.total : datasetTotalColumns,
54
+ hiddenColumns: counts.hidden,
55
+ };
56
+ }
@@ -4,7 +4,7 @@ import z from "zod";
4
4
  import { rpc } from "@/plugins/core/rpc";
5
5
 
6
6
  export type DownloadAsArgs = (req: {
7
- format: "csv" | "json" | "parquet";
7
+ format: "csv" | "json" | "parquet" | "tsv";
8
8
  }) => Promise<{
9
9
  url: string;
10
10
  filename: string;
@@ -15,7 +15,7 @@ export type DownloadAsArgs = (req: {
15
15
  export const DownloadAsSchema = rpc
16
16
  .input(
17
17
  z.object({
18
- format: z.enum(["csv", "json", "parquet"]),
18
+ format: z.enum(["csv", "json", "parquet", "tsv"]),
19
19
  }),
20
20
  )
21
21
  .output(
@@ -1,8 +1,15 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
+ "use no memo";
3
+
4
+ // tanstack/table is not compatible with React compiler
5
+ // https://github.com/TanStack/table/issues/5567
2
6
 
3
7
  import { Fill } from "@marimo-team/react-slotz";
4
- import type { OnChangeFn, RowSelectionState } from "@tanstack/react-table";
5
- import type React from "react";
8
+ import type {
9
+ OnChangeFn,
10
+ RowSelectionState,
11
+ Table,
12
+ } from "@tanstack/react-table";
6
13
  import { Button } from "@/components/ui/button";
7
14
  import { Tabs, TabsContent } from "@/components/ui/tabs";
8
15
  import { SlotNames } from "@/core/slots/slots";
@@ -19,7 +26,7 @@ import { ColumnExplorerPanel } from "../column-explorer-panel/column-explorer";
19
26
  import { RowViewerPanel } from "../row-viewer-panel/row-viewer";
20
27
  import type { FieldTypesWithExternalType, TooManyRows } from "../types";
21
28
 
22
- export interface TableExplorerPanelProps {
29
+ export interface TableExplorerPanelProps<TData> {
23
30
  // Row viewer props
24
31
  rowIdx: number;
25
32
  setRowIdx: (rowIdx: number) => void;
@@ -33,6 +40,7 @@ export interface TableExplorerPanelProps {
33
40
  previewColumn?: PreviewColumn;
34
41
  totalColumns: number;
35
42
  tableId: string;
43
+ table: Table<TData>;
36
44
  // Visibility flags
37
45
  showRowExplorer: boolean;
38
46
  showColumnExplorer: boolean;
@@ -46,7 +54,7 @@ const tabTriggerClassName =
46
54
  const activeClassName = "text-primary";
47
55
  const inactiveClassName = "hover:text-foreground";
48
56
 
49
- export const TableExplorerPanel: React.FC<TableExplorerPanelProps> = ({
57
+ export function TableExplorerPanel<TData>({
50
58
  // Row viewer
51
59
  rowIdx,
52
60
  setRowIdx,
@@ -60,13 +68,14 @@ export const TableExplorerPanel: React.FC<TableExplorerPanelProps> = ({
60
68
  previewColumn,
61
69
  totalColumns,
62
70
  tableId,
71
+ table,
63
72
  // Visibility
64
73
  showRowExplorer,
65
74
  showColumnExplorer,
66
75
  // Tab state
67
76
  activeTab,
68
77
  onTabChange,
69
- }) => {
78
+ }: TableExplorerPanelProps<TData>) {
70
79
  const showTabs = showRowExplorer && showColumnExplorer;
71
80
 
72
81
  const rowViewer = (
@@ -89,6 +98,7 @@ export const TableExplorerPanel: React.FC<TableExplorerPanelProps> = ({
89
98
  totalRows={totalRows}
90
99
  totalColumns={totalColumns}
91
100
  tableId={tableId}
101
+ table={table}
92
102
  />
93
103
  );
94
104
 
@@ -158,4 +168,4 @@ export const TableExplorerPanel: React.FC<TableExplorerPanelProps> = ({
158
168
  </TabsContent>
159
169
  </Tabs>
160
170
  );
161
- };
171
+ }
@@ -53,6 +53,8 @@ export function dbDisplayName(name: string) {
53
53
  return "MongoDB";
54
54
  case "iceberg":
55
55
  return "Apache Iceberg";
56
+ case "dremio":
57
+ return "Dremio";
56
58
  default:
57
59
  return name;
58
60
  }