@marimo-team/frontend 0.21.2-dev93 → 0.21.2-dev94

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 (529) hide show
  1. package/dist/assets/{CellStatus-BK7h5iOz.js → CellStatus-CjuKStpl.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-DoChluQ-.js → ConnectedDataExplorerComponent-BQ2JgaJh.js} +1 -1
  3. package/dist/assets/JsonOutput-Cpci2Llb.js +49 -0
  4. package/dist/assets/LazyAnyLanguageCodeMirror-JSMdoajI.js +2 -0
  5. package/dist/assets/{MarimoErrorOutput-_E60QXVt.js → MarimoErrorOutput-C3dgyHB-.js} +1 -1
  6. package/dist/assets/{RenderHTML-g5EDdnnD.js → RenderHTML-BOchBzK-.js} +1 -1
  7. package/dist/assets/{add-cell-with-ai-BnaP9hSr.js → add-cell-with-ai-CZC0nS0L.js} +1 -1
  8. package/dist/assets/{add-connection-dialog-06NpHq00.js → add-connection-dialog-BO-MkVRM.js} +1 -1
  9. package/dist/assets/{agent-panel-DJ5aXdHi.js → agent-panel-PvvWJu_k.js} +1 -1
  10. package/dist/assets/{ai-model-dropdown-jU9ynWdH.js → ai-model-dropdown-ZW2lUu_0.js} +4 -4
  11. package/dist/assets/{any-language-editor-DlxN1l0x.js → any-language-editor-CjpOiyIQ.js} +1 -1
  12. package/dist/assets/apl-ezh0ScS-.js +1 -0
  13. package/dist/assets/{app-config-button-DOB3JPAf.js → app-config-button-BAtDNUSt.js} +1 -1
  14. package/dist/assets/{arc-CjAURx94.js → arc-CBXXHTae.js} +1 -1
  15. package/dist/assets/{architecture-7HQA4BMR-Dq4Prhq1.js → architecture-7HQA4BMR-CmWAZjSN.js} +1 -1
  16. package/dist/assets/{architectureDiagram-VXUJARFQ-Diujowxv.js → architectureDiagram-VXUJARFQ-D9P34c01.js} +1 -1
  17. package/dist/assets/asciiarmor-DBqyln4y.js +1 -0
  18. package/dist/assets/asn1-C9Hie9a5.js +1 -0
  19. package/dist/assets/{blockDiagram-VD42YOAC-PW2IHpUp.js → blockDiagram-VD42YOAC-C0Bfw4sD.js} +1 -1
  20. package/dist/assets/brainfuck-BDNU41Mw.js +1 -0
  21. package/dist/assets/{c4Diagram-YG6GDRKO-EGZ1a-_C.js → c4Diagram-YG6GDRKO-D706031P.js} +1 -1
  22. package/dist/assets/{cache-panel-B5VFQG8a.js → cache-panel-DGBa8dcc.js} +1 -1
  23. package/dist/assets/{cell-editor-C3ucNXHM.js → cell-editor-X_hvgRQ8.js} +6 -6
  24. package/dist/assets/{cell-link-5GTb1oDP.js → cell-link-Rcz-LPKa.js} +1 -1
  25. package/dist/assets/{cells-CB6BZwqi.js → cells-rqCJr5Ib.js} +4 -4
  26. package/dist/assets/channel-CuSIY3DL.js +1 -0
  27. package/dist/assets/{chat-display-OCgUTnJ_.js → chat-display-e8OUH4kz.js} +1 -1
  28. package/dist/assets/{chat-panel-CZSMpH_d.js → chat-panel-CrtglFkA.js} +1 -1
  29. package/dist/assets/{chat-ui-XL_YuGzG.js → chat-ui-DL8QYPrv.js} +1 -1
  30. package/dist/assets/{chunk-4BX2VUAB-DKzzWsJ2.js → chunk-4BX2VUAB-BnurtY5R.js} +1 -1
  31. package/dist/assets/chunk-55IACEB6-KvSJ_UGg.js +1 -0
  32. package/dist/assets/{chunk-5FQGJX7Z-CBznRPn1.js → chunk-5FQGJX7Z-BMCEQJ02.js} +2 -2
  33. package/dist/assets/{chunk-ABZYJK2D-DQq3dMBH.js → chunk-ABZYJK2D-B6ZuiRXR.js} +3 -3
  34. package/dist/assets/{chunk-ATLVNIR6-C0Tlb9fb.js → chunk-ATLVNIR6-BQvP6gy2.js} +1 -1
  35. package/dist/assets/{chunk-B4BG7PRW-DvGerJSs.js → chunk-B4BG7PRW-1uIBV02j.js} +1 -1
  36. package/dist/assets/{chunk-CVBHYZKI-DLwi7nxp.js → chunk-CVBHYZKI-CsebuiSO.js} +1 -1
  37. package/dist/assets/{chunk-DI55MBZ5-LtpZlQqe.js → chunk-DI55MBZ5-DW6FcyIx.js} +1 -1
  38. package/dist/assets/{chunk-EXTU4WIE-Bof-JwJJ.js → chunk-EXTU4WIE-BtBP0dYe.js} +1 -1
  39. package/dist/assets/{chunk-FMBD7UC4-D0M7n-oo.js → chunk-FMBD7UC4-CQFtReAu.js} +1 -1
  40. package/dist/assets/{chunk-HN2XXSSU-Cieu13Ce.js → chunk-HN2XXSSU-Bw_9WyjM.js} +1 -1
  41. package/dist/assets/{chunk-JA3XYJ7Z-D945qKHP.js → chunk-JA3XYJ7Z-BrccaYVb.js} +1 -1
  42. package/dist/assets/{chunk-JZLCHNYA-CW-snA50.js → chunk-JZLCHNYA-B5-oPszI.js} +1 -1
  43. package/dist/assets/{chunk-MI3HLSF2-DBLE7N5q.js → chunk-MI3HLSF2-Csy17Fj5.js} +1 -1
  44. package/dist/assets/{chunk-N4CR4FBY-Bq1DDSa-.js → chunk-N4CR4FBY-o1rZ_5CM.js} +2 -2
  45. package/dist/assets/{chunk-QN33PNHL-OiEru3iu.js → chunk-QN33PNHL-BTg-I0Lr.js} +1 -1
  46. package/dist/assets/{chunk-QXUST7PY-D-eZpBLp.js → chunk-QXUST7PY-bjTU5DnU.js} +1 -1
  47. package/dist/assets/{chunk-QZHKN3VN-it7r150M.js → chunk-QZHKN3VN-CcDZrR9S.js} +1 -1
  48. package/dist/assets/{chunk-S3R3BYOJ-snr-cjrg.js → chunk-S3R3BYOJ-CgBZoVQC.js} +1 -1
  49. package/dist/assets/{chunk-TZMSLE5B-A7doILof.js → chunk-TZMSLE5B-Cokc9CbN.js} +1 -1
  50. package/dist/assets/classDiagram-2ON5EDUG-DbS0KcRN.js +1 -0
  51. package/dist/assets/classDiagram-v2-WZHVMYZB-DndbLyhC.js +1 -0
  52. package/dist/assets/{clike-Db5sDcCN.js → clike-B5Yp94w5.js} +1 -1
  53. package/dist/assets/clojure-DnkK3bSc.js +1 -0
  54. package/dist/assets/cmake-BnWrJdTV.js +1 -0
  55. package/dist/assets/cobol-HBrO1JaF.js +1 -0
  56. package/dist/assets/{code-block-37QAKDTI-DvyGxfvM.js → code-block-37QAKDTI-DuL2XEdk.js} +1 -1
  57. package/dist/assets/coffeescript-CRPuDhgD.js +1 -0
  58. package/dist/assets/column-preview-XEbS5e3l.js +1 -0
  59. package/dist/assets/command-palette-Bvc5N66t.js +1 -0
  60. package/dist/assets/{common-DtPa7IRN.js → common-BA29Ha73.js} +1 -1
  61. package/dist/assets/commonlisp-Da4KcekY.js +1 -0
  62. package/dist/assets/{components-CkVFme50.js → components-4vKMd4ot.js} +1 -1
  63. package/dist/assets/{components-DvdoEGqb.js → components-BEowaI9j.js} +1 -1
  64. package/dist/assets/{cose-bilkent-S5V4N54A-D-WJ9umo.js → cose-bilkent-S5V4N54A-Be717YAt.js} +1 -1
  65. package/dist/assets/crystal-DSapLTsa.js +1 -0
  66. package/dist/assets/{css-DPSOOi60.js → css-B68S0me4.js} +1 -1
  67. package/dist/assets/cypher-xFGoEou9.js +1 -0
  68. package/dist/assets/d-DgvhEIBQ.js +1 -0
  69. package/dist/assets/{dagre-6UL2VRFP-DTq5bGOP.js → dagre-6UL2VRFP-B59JWKbq.js} +1 -1
  70. package/dist/assets/{data-grid-overlay-editor-CHu2p5GE.js → data-grid-overlay-editor-DamrGxN0.js} +1 -1
  71. package/dist/assets/{datasource-DLb0mhjX.js → datasource-CNQ-RUAj.js} +1 -1
  72. package/dist/assets/{dependency-graph-panel-Cw_SH35L.js → dependency-graph-panel-DdmW6qbG.js} +1 -1
  73. package/dist/assets/{diagram-PSM6KHXK-BqAwM2y1.js → diagram-PSM6KHXK-BJLd-oHa.js} +1 -1
  74. package/dist/assets/{diagram-QEK2KX5R-DztSlumV.js → diagram-QEK2KX5R-CkExI9v6.js} +1 -1
  75. package/dist/assets/{diagram-S2PKOQOG-BO-Bgy9C.js → diagram-S2PKOQOG-CcSdTiNu.js} +1 -1
  76. package/dist/assets/diff-_ncWAuCI.js +1 -0
  77. package/dist/assets/{dist-MQHYjtR7.js → dist-6KyCn6Yw.js} +1 -1
  78. package/dist/assets/dist-B7wIIgWR.js +1 -0
  79. package/dist/assets/{dist-DNyNpg3q.js → dist-BUpyuEX0.js} +1 -1
  80. package/dist/assets/{dist-IPnWHvYB.js → dist-CBgLdkFP.js} +1 -1
  81. package/dist/assets/{dist-DuphnOKT.js → dist-CM-GQF_B.js} +1 -1
  82. package/dist/assets/{dist-dfW2BBOD.js → dist-CMQPYsF1.js} +1 -1
  83. package/dist/assets/{dist-D3ihB3sj.js → dist-CP_yTjWJ.js} +1 -1
  84. package/dist/assets/{dist-DZjGkR_B.js → dist-ChobCyDf.js} +1 -1
  85. package/dist/assets/{dist-CCK5zpAZ.js → dist-CkoNJPH1.js} +1 -1
  86. package/dist/assets/dist-CwTov7Od.js +1 -0
  87. package/dist/assets/dist-Dvykkmxn.js +1 -0
  88. package/dist/assets/{dist-CdGO5vNJ.js → dist-GuxhVbd_.js} +1 -1
  89. package/dist/assets/dist-Rp2beqEP.js +1 -0
  90. package/dist/assets/{dist-krLK0lDb.js → dist-clhpO3Fy.js} +1 -1
  91. package/dist/assets/{dist-j3bN-KSq.js → dist-np22jopU.js} +1 -1
  92. package/dist/assets/{dockerfile-DmM_Yk21.js → dockerfile-C7lIBgaY.js} +1 -1
  93. package/dist/assets/{documentation-panel-CVENBy0y.js → documentation-panel-Ds4_1YLs.js} +1 -1
  94. package/dist/assets/{download-fIkRh5FE.js → download-Xq3GOYNm.js} +1 -1
  95. package/dist/assets/dtd-BnBIn3kr.js +1 -0
  96. package/dist/assets/dylan-CkGqQmFw.js +1 -0
  97. package/dist/assets/ecl-CFTIHpsV.js +1 -0
  98. package/dist/assets/{edit-page-DIElHN4M.js → edit-page-BziXcgV1.js} +7 -7
  99. package/dist/assets/eiffel-DqSKoxJh.js +1 -0
  100. package/dist/assets/elm-dL9c1n0U.js +1 -0
  101. package/dist/assets/{erDiagram-Q2GNP2WA-D1Ic9upA.js → erDiagram-Q2GNP2WA-Dna-Ewi8.js} +1 -1
  102. package/dist/assets/erlang-ZIYI48gw.js +1 -0
  103. package/dist/assets/{error-panel-BTeDvE3v.js → error-panel-Ck-kR4P7.js} +1 -1
  104. package/dist/assets/{esm-CIopaDEz.js → esm-DpxW9DrV.js} +1 -1
  105. package/dist/assets/factor-CDbckATe.js +1 -0
  106. package/dist/assets/{factor-Di_n0Vcb.js → factor-PbpmJuj6.js} +1 -1
  107. package/dist/assets/{file-explorer-panel-DODubmKz.js → file-explorer-panel-DGzzTF4F.js} +1 -1
  108. package/dist/assets/{file-icons-ou1yo5n5.js → file-icons-CGVD9eMg.js} +1 -1
  109. package/dist/assets/{floating-outline-DjbA1Cb1.js → floating-outline-CUurMy_Y.js} +1 -1
  110. package/dist/assets/{flowDiagram-NV44I4VS-CxgTw53Z.js → flowDiagram-NV44I4VS-Dc9Bqoz8.js} +1 -1
  111. package/dist/assets/{focus-CyfmlP3o.js → focus-Dujsd1jO.js} +1 -1
  112. package/dist/assets/form-FZp6s4ri.js +2 -0
  113. package/dist/assets/forth-ClT6YoKq.js +1 -0
  114. package/dist/assets/fortran-D3wR_E-8.js +1 -0
  115. package/dist/assets/{gallery-page-BCZ4bZb-.js → gallery-page-DoDtzAVy.js} +1 -1
  116. package/dist/assets/{ganttDiagram-JELNMOA3-D8OMpn2f.js → ganttDiagram-JELNMOA3-Dhw_2tSP.js} +1 -1
  117. package/dist/assets/gas-_ShnzaTM.js +1 -0
  118. package/dist/assets/gherkin-LsHtc0Ns.js +1 -0
  119. package/dist/assets/{gitGraph-G5XIXVHT-DMrrHvz1.js → gitGraph-G5XIXVHT-1x5Miucn.js} +1 -1
  120. package/dist/assets/{gitGraphDiagram-V2S2FVAM-C_SHiNz4.js → gitGraphDiagram-V2S2FVAM-BeQBBZfm.js} +1 -1
  121. package/dist/assets/{glide-data-editor-BWNf45SY.js → glide-data-editor-DBtu96Tk.js} +4 -4
  122. package/dist/assets/globals-BOMeSJG5.js +1 -0
  123. package/dist/assets/groovy-D_Yv0Fac.js +1 -0
  124. package/dist/assets/haskell-qhM1HAIB.js +1 -0
  125. package/dist/assets/haxe-Bi62PpIr.js +1 -0
  126. package/dist/assets/{home-page-C72qXz0E.js → home-page-Cl06nMzr.js} +1 -1
  127. package/dist/assets/{hooks---BbqK4E.js → hooks-BCcCvsU9.js} +1 -1
  128. package/dist/assets/{html-to-image-C7IjrTxH.js → html-to-image-G3c0U-iP.js} +1 -1
  129. package/dist/assets/idl-CI42bOaI.js +1 -0
  130. package/dist/assets/index-BuSRVSH0.css +2 -0
  131. package/dist/assets/index-Xlm47iZJ.js +35 -0
  132. package/dist/assets/{info-VBDWY6EO-DUW-WjFI.js → info-VBDWY6EO-B0DaVkbn.js} +1 -1
  133. package/dist/assets/infoDiagram-HS3SLOUP-BAq2unL1.js +2 -0
  134. package/dist/assets/javascript-BNZ5YnSy.js +1 -0
  135. package/dist/assets/{journeyDiagram-XKPGCS4Q-hRTCqz5x.js → journeyDiagram-XKPGCS4Q-Do9h5X0r.js} +1 -1
  136. package/dist/assets/julia-dpVUKOp6.js +1 -0
  137. package/dist/assets/{kanban-definition-3W4ZIXB7-C4vu7MnJ.js → kanban-definition-3W4ZIXB7-D_D1qnu3.js} +1 -1
  138. package/dist/assets/katex-WeQtn5cr.js +1 -0
  139. package/dist/assets/{kiosk-mode-DSV5Rgj2.js → kiosk-mode-CgwbYGln.js} +1 -1
  140. package/dist/assets/{layout-IbU6avGQ.js → layout-BtBVyLQ5.js} +4 -4
  141. package/dist/assets/{line-3SFmw_2p.js → line-BHuLZ5CK.js} +1 -1
  142. package/dist/assets/{linear-CD-KnbN7.js → linear-BsrZ3hPD.js} +1 -1
  143. package/dist/assets/livescript-BDwSUbUd.js +1 -0
  144. package/dist/assets/{logs-panel-CBnZn-bi.js → logs-panel-cpRbecYU.js} +1 -1
  145. package/dist/assets/{loro_wasm_bg-BzwizXI_.js → loro_wasm_bg-sSPwBtJV.js} +1 -1
  146. package/dist/assets/lua-cGUKNtb5.js +1 -0
  147. package/dist/assets/{markdown-renderer-Dq4517QF.js → markdown-renderer-B3K5q-ZY.js} +3 -3
  148. package/dist/assets/mathematica-D4XScfvP.js +1 -0
  149. package/dist/assets/mbox-COnP75oc.js +1 -0
  150. package/dist/assets/mermaid-4DMBBIKO-D3TxXSe1.js +1 -0
  151. package/dist/assets/{mermaid-CQbQjy6D.js → mermaid-n4NefbrN.js} +3 -3
  152. package/dist/assets/{mermaid-parser.core-D7O651vj.js → mermaid-parser.core-f-V9Q6fb.js} +2 -2
  153. package/dist/assets/{mhchem-CQjBQPZx.js → mhchem-CuOhdwS0.js} +1 -1
  154. package/dist/assets/{mindmap-definition-VGOIOE7T-BnQ_1O1s.js → mindmap-definition-VGOIOE7T-DUVrm3_K.js} +1 -1
  155. package/dist/assets/mirc-DXskkW6M.js +1 -0
  156. package/dist/assets/mllike-B3ebn_fS.js +1 -0
  157. package/dist/assets/modelica-Df8_BOFz.js +1 -0
  158. package/dist/assets/mscgen-ugK6iLdl.js +1 -0
  159. package/dist/assets/mumps-Qes0D9Sq.js +1 -0
  160. package/dist/assets/{name-cell-input-BRoAk4-B.js → name-cell-input-BENblPEH.js} +1 -1
  161. package/dist/assets/{nsis-Bh7CNuij.js → nsis-BbDlITQ-.js} +1 -1
  162. package/dist/assets/nsis-CvTk2ElD.js +1 -0
  163. package/dist/assets/ntriples-BrWSHgAl.js +1 -0
  164. package/dist/assets/{number-overlay-editor-D-qbd0wx.js → number-overlay-editor-BV9MeC1q.js} +1 -1
  165. package/dist/assets/octave--UXUC2au.js +1 -0
  166. package/dist/assets/{ordinal-BAY59BkG.js → ordinal-CaMJcJ5o.js} +1 -1
  167. package/dist/assets/{outline-panel-ccd_SNqa.js → outline-panel-DmvFn25g.js} +1 -1
  168. package/dist/assets/oz-SCICUQnB.js +1 -0
  169. package/dist/assets/{packages-panel-DkThAnli.js → packages-panel-B6LEuNVi.js} +1 -1
  170. package/dist/assets/{packet-DYOGHKS2-l7k5WrVz.js → packet-DYOGHKS2-DcLKsZ7w.js} +1 -1
  171. package/dist/assets/panels-ignsaOah.js +1 -0
  172. package/dist/assets/pascal-BZRIRN0Y.js +1 -0
  173. package/dist/assets/perl-BJBf_VRX.js +1 -0
  174. package/dist/assets/{pie-VRWISCQL-CsLdeQJ0.js → pie-VRWISCQL-B9V9l9Ux.js} +1 -1
  175. package/dist/assets/{pieDiagram-ADFJNKIX-Cmw3aM6j.js → pieDiagram-ADFJNKIX-C9yLGNRT.js} +1 -1
  176. package/dist/assets/pig-8VtGvtGP.js +1 -0
  177. package/dist/assets/powershell-MUdKU-yo.js +1 -0
  178. package/dist/assets/{process-output-DdaTc_HF.js → process-output-C96fd58D.js} +1 -1
  179. package/dist/assets/properties-B_YTP79K.js +1 -0
  180. package/dist/assets/protobuf-BjqtN1d3.js +1 -0
  181. package/dist/assets/{pug-DEhrk7ZA.js → pug-B2p6efPp.js} +1 -1
  182. package/dist/assets/pug-pCMDyY3V.js +1 -0
  183. package/dist/assets/puppet-ByNusmmY.js +1 -0
  184. package/dist/assets/python-CeK7Mdg6.js +1 -0
  185. package/dist/assets/q-BPLn3RjU.js +1 -0
  186. package/dist/assets/{quadrantDiagram-AYHSOK5B-LW4w36MN.js → quadrantDiagram-AYHSOK5B-BbaJVIIg.js} +1 -1
  187. package/dist/assets/r-C6hL19P_.js +1 -0
  188. package/dist/assets/{radar-ZZBFDIW7-DegSklgM.js → radar-ZZBFDIW7-CN4AcMZb.js} +1 -1
  189. package/dist/assets/{react-vega-CS85QYZ1.js → react-vega-BbChn8d-.js} +1 -1
  190. package/dist/assets/{react-vega-C-ow9beQ.js → react-vega-PCutEA1j.js} +1 -1
  191. package/dist/assets/{readonly-python-code-y9XYPUdK.js → readonly-python-code-CsZeevPe.js} +1 -1
  192. package/dist/assets/{requirementDiagram-UZGBJVZJ-DfxxrNkO.js → requirementDiagram-UZGBJVZJ-CjjaEl5L.js} +1 -1
  193. package/dist/assets/rpm-Cepx5AK5.js +1 -0
  194. package/dist/assets/ruby-8a_JNJtC.js +1 -0
  195. package/dist/assets/run-page-DjqOwd5T.js +1 -0
  196. package/dist/assets/{sankeyDiagram-TZEHDZUN-BHBpe0lq.js → sankeyDiagram-TZEHDZUN-DHCbUKQq.js} +1 -1
  197. package/dist/assets/sas-DRXu6Kkn.js +1 -0
  198. package/dist/assets/scheme-DaBlDkbO.js +1 -0
  199. package/dist/assets/{scratchpad-panel-CsJAOXMt.js → scratchpad-panel-BLNGGJm3.js} +1 -1
  200. package/dist/assets/{secrets-panel-CawE1eg1.js → secrets-panel-DWqgifzv.js} +1 -1
  201. package/dist/assets/{sequenceDiagram-WL72ISMW-DpKnfflA.js → sequenceDiagram-WL72ISMW-Bk1wqT1r.js} +1 -1
  202. package/dist/assets/session-panel-D4eC6cNs.js +1 -0
  203. package/dist/assets/shell-CEmng-T5.js +1 -0
  204. package/dist/assets/sieve-CTG31Wbe.js +1 -0
  205. package/dist/assets/smalltalk-DlBjAIRH.js +1 -0
  206. package/dist/assets/{snippets-panel-Y4d6ynv0.js → snippets-panel-Bvq75PPt.js} +1 -1
  207. package/dist/assets/sparql-D8XQtNgL.js +1 -0
  208. package/dist/assets/{src-CWJKdmqu.js → src-DapUuJyw.js} +1 -1
  209. package/dist/assets/state-AzFc1uM8.js +3 -0
  210. package/dist/assets/{state-DVcb28Fc.js → state-XUzipEOc.js} +1 -1
  211. package/dist/assets/{stateDiagram-FKZM4ZOC-QVDd0Li3.js → stateDiagram-FKZM4ZOC-CfxmI-mV.js} +1 -1
  212. package/dist/assets/stateDiagram-v2-4FDKWEC3-CkOxmHrl.js +1 -0
  213. package/dist/assets/{step-BDRKStBg.js → step-CzPNFdgC.js} +1 -1
  214. package/dist/assets/stylus-DpfM4Y-0.js +1 -0
  215. package/dist/assets/swift-Bevjlmsx.js +1 -0
  216. package/dist/assets/switch-BaYCltRz.js +1 -0
  217. package/dist/assets/tcl-CWB1W9St.js +1 -0
  218. package/dist/assets/{terminal-CieLTi3f.js → terminal-D9CrEu_T.js} +1 -1
  219. package/dist/assets/{textarea-ynIaFgPw.js → textarea-ChkICSMn.js} +1 -1
  220. package/dist/assets/textile-DrGyKlBQ.js +1 -0
  221. package/dist/assets/{time-H2Wv5PDB.js → time-D85NcLBY.js} +1 -1
  222. package/dist/assets/{timeline-definition-IT6M3QCI-D7I1pnXu.js → timeline-definition-IT6M3QCI-K-Ap0DlB.js} +1 -1
  223. package/dist/assets/toml-CF49H3Gs.js +1 -0
  224. package/dist/assets/{tracing-b83vxHs_.js → tracing-DNsdz53f.js} +1 -1
  225. package/dist/assets/{tracing-panel-YpOz4Jbc.js → tracing-panel-BTTuo7BG.js} +2 -2
  226. package/dist/assets/{treemap-GDKQZRPO-B18gM_Lh.js → treemap-GDKQZRPO-0ZTkCIFa.js} +1 -1
  227. package/dist/assets/troff-DS9glUnj.js +1 -0
  228. package/dist/assets/ttcn-cfg-D8JUANmi.js +1 -0
  229. package/dist/assets/ttcn-iXXxBDpr.js +1 -0
  230. package/dist/assets/turtle-IsYxGpD1.js +1 -0
  231. package/dist/assets/{useAddCell-6w9dGRCO.js → useAddCell-CUrHq1Z4.js} +1 -1
  232. package/dist/assets/{useCellActionButton-COX-WXs0.js → useCellActionButton-DR6dlOJ1.js} +1 -1
  233. package/dist/assets/{useDeleteCell-B7a_KjXc.js → useDeleteCell-DM20H2Hu.js} +1 -1
  234. package/dist/assets/{useDependencyPanelTab-BSvdWVPw.js → useDependencyPanelTab-BXfYZkjp.js} +1 -1
  235. package/dist/assets/useHotkey-CECpeWLD.js +1 -0
  236. package/dist/assets/{useNotebookActions-CEVYVtMW.js → useNotebookActions-CtAp1e7s.js} +1 -1
  237. package/dist/assets/{useRunCells-ebuUsr9R.js → useRunCells-CM1qW8Of.js} +1 -1
  238. package/dist/assets/{useSplitCell-D5yhMmyi.js → useSplitCell-DFFEL6kI.js} +1 -1
  239. package/dist/assets/vb-CJBc18Ui.js +1 -0
  240. package/dist/assets/vbscript-f-536WNP.js +1 -0
  241. package/dist/assets/{vega-component-_VQJnNGE.js → vega-component-CW-qRj7Q.js} +1 -1
  242. package/dist/assets/velocity-BKcC2FIu.js +1 -0
  243. package/dist/assets/verilog-BwwsdDY5.js +1 -0
  244. package/dist/assets/vhdl-BG8PfJd8.js +1 -0
  245. package/dist/assets/webidl-BHBWV-F6.js +1 -0
  246. package/dist/assets/{write-secret-modal-_nh05zhf.js → write-secret-modal-EEXA8xyS.js} +1 -1
  247. package/dist/assets/xquery-BSuR2Wlv.js +1 -0
  248. package/dist/assets/{xychartDiagram-PRI3JC2R-DxlH8vWc.js → xychartDiagram-PRI3JC2R-DCZkWfRL.js} +1 -1
  249. package/dist/assets/yacas-DdJ1FiXV.js +1 -0
  250. package/dist/assets/z80-BWehJ3ot.js +1 -0
  251. package/dist/index.html +41 -42
  252. package/package.json +1 -1
  253. package/src/components/data-table/TableActions.tsx +25 -50
  254. package/src/components/data-table/column-explorer-panel/column-explorer.tsx +24 -13
  255. package/src/components/data-table/data-table.tsx +11 -9
  256. package/src/components/data-table/hooks/use-panel-ownership.ts +15 -5
  257. package/src/components/data-table/row-viewer-panel/row-viewer.tsx +53 -44
  258. package/src/components/data-table/table-explorer-panel/table-explorer-panel.tsx +161 -0
  259. package/src/components/editor/chrome/panels/context-aware-panel/context-aware-panel.tsx +16 -9
  260. package/src/core/slots/slots.ts +1 -0
  261. package/src/plugins/impl/DataTablePlugin.tsx +19 -22
  262. package/dist/assets/JsonOutput-BhaK8Are.js +0 -49
  263. package/dist/assets/LazyAnyLanguageCodeMirror-Dw8RObOv.js +0 -2
  264. package/dist/assets/SelectionIndicator-CBlpj8vi.js +0 -1
  265. package/dist/assets/apl-Dkj9Qe7k.js +0 -1
  266. package/dist/assets/asciiarmor-BtQZNUPe.js +0 -1
  267. package/dist/assets/asn1-Df2Lrqg5.js +0 -1
  268. package/dist/assets/brainfuck-BKWhJvy5.js +0 -1
  269. package/dist/assets/channel-DeoDlval.js +0 -1
  270. package/dist/assets/chunk-55IACEB6-BlvDi7wO.js +0 -1
  271. package/dist/assets/classDiagram-2ON5EDUG-CvEqT4dQ.js +0 -1
  272. package/dist/assets/classDiagram-v2-WZHVMYZB-BGLrzx3k.js +0 -1
  273. package/dist/assets/clojure-CktH9n5q.js +0 -1
  274. package/dist/assets/cmake-BwTN0lwz.js +0 -1
  275. package/dist/assets/cobol-D0Y9QJHH.js +0 -1
  276. package/dist/assets/coffeescript-CL84ZPXU.js +0 -1
  277. package/dist/assets/column-preview-Bpgx4KM2.js +0 -1
  278. package/dist/assets/command-palette-B9n8d1xM.js +0 -1
  279. package/dist/assets/commonlisp-CukhuKqj.js +0 -1
  280. package/dist/assets/context-aware-panel-CTO4OwqL.js +0 -3
  281. package/dist/assets/crystal-DjLRzuWS.js +0 -1
  282. package/dist/assets/cypher-DTLWn8Gw.js +0 -1
  283. package/dist/assets/d-DWjY1SxT.js +0 -1
  284. package/dist/assets/diff-CBkFqCNH.js +0 -1
  285. package/dist/assets/dist-B7AgIPPj.js +0 -1
  286. package/dist/assets/dist-BEzQ2FTT.js +0 -1
  287. package/dist/assets/dist-BXs2l0TT.js +0 -1
  288. package/dist/assets/dist-CfX-lQow.js +0 -1
  289. package/dist/assets/dtd-BuqGL9hz.js +0 -1
  290. package/dist/assets/dylan-WTW5QtBM.js +0 -1
  291. package/dist/assets/ecl-DBVSQs77.js +0 -1
  292. package/dist/assets/eiffel-C3Tl80Mr.js +0 -1
  293. package/dist/assets/elm-BzK6589w.js +0 -1
  294. package/dist/assets/erlang-DMCyf1S1.js +0 -1
  295. package/dist/assets/factor-Y7W4xwTs.js +0 -1
  296. package/dist/assets/form-JA7YODlz.js +0 -2
  297. package/dist/assets/forth-a7Ame17q.js +0 -1
  298. package/dist/assets/fortran-D8W1t7ql.js +0 -1
  299. package/dist/assets/gas-CPCP4r6U.js +0 -1
  300. package/dist/assets/gherkin-dyINaGjD.js +0 -1
  301. package/dist/assets/globals-D_ksOkIp.js +0 -1
  302. package/dist/assets/groovy-yBYyWQAY.js +0 -1
  303. package/dist/assets/haskell-DOSr8Xuo.js +0 -1
  304. package/dist/assets/haxe-JqSUWIxe.js +0 -1
  305. package/dist/assets/idl-D2Ag6F2o.js +0 -1
  306. package/dist/assets/index-B5s9EmU2.js +0 -35
  307. package/dist/assets/index-UqHb3j3u.css +0 -2
  308. package/dist/assets/infoDiagram-HS3SLOUP-BgUfZNsO.js +0 -2
  309. package/dist/assets/javascript-3AO8kHoR.js +0 -1
  310. package/dist/assets/julia-DB4UbzHR.js +0 -1
  311. package/dist/assets/katex-B242giUy.js +0 -1
  312. package/dist/assets/livescript-DReeORQ9.js +0 -1
  313. package/dist/assets/lua-ybhkw42a.js +0 -1
  314. package/dist/assets/mathematica-DknPFJHQ.js +0 -1
  315. package/dist/assets/mbox-CvGrdGLO.js +0 -1
  316. package/dist/assets/mermaid-4DMBBIKO-BtMm8UqZ.js +0 -1
  317. package/dist/assets/mirc-BeRjyZ00.js +0 -1
  318. package/dist/assets/mllike-Dy0V9wt1.js +0 -1
  319. package/dist/assets/modelica--iMtH0NO.js +0 -1
  320. package/dist/assets/mscgen-CqR_OhJF.js +0 -1
  321. package/dist/assets/mumps-DXhR5sNO.js +0 -1
  322. package/dist/assets/nsis-FfqfUShs.js +0 -1
  323. package/dist/assets/ntriples-C3Y5YwlO.js +0 -1
  324. package/dist/assets/octave-Dn-U4f-O.js +0 -1
  325. package/dist/assets/oz-Dx3Usekg.js +0 -1
  326. package/dist/assets/panels-4-99NA61.js +0 -1
  327. package/dist/assets/pascal-Bhoas9O4.js +0 -1
  328. package/dist/assets/perl-uQVtdMdg.js +0 -1
  329. package/dist/assets/pig-DDagqkh7.js +0 -1
  330. package/dist/assets/powershell-WeyQqZtK.js +0 -1
  331. package/dist/assets/properties-MEyUmkzm.js +0 -1
  332. package/dist/assets/protobuf-DrUQLGvH.js +0 -1
  333. package/dist/assets/pug-YYu0lKKy.js +0 -1
  334. package/dist/assets/puppet-C9UhEtzi.js +0 -1
  335. package/dist/assets/python-BAh1L3Ue.js +0 -1
  336. package/dist/assets/q-CoA1I94V.js +0 -1
  337. package/dist/assets/r-CnPeMCLv.js +0 -1
  338. package/dist/assets/rpm-DOBsrwns.js +0 -1
  339. package/dist/assets/ruby-DphmqCS4.js +0 -1
  340. package/dist/assets/run-page-BimMc95l.js +0 -1
  341. package/dist/assets/sas-DqX-D0mu.js +0 -1
  342. package/dist/assets/scheme-BDPqQOec.js +0 -1
  343. package/dist/assets/session-panel-tI83-MjM.js +0 -1
  344. package/dist/assets/shell-BbHQ-2DS.js +0 -1
  345. package/dist/assets/sieve-AQvCITfE.js +0 -1
  346. package/dist/assets/smalltalk-C_EFh1kg.js +0 -1
  347. package/dist/assets/sparql-BlXg3dFR.js +0 -1
  348. package/dist/assets/stateDiagram-v2-4FDKWEC3-De_tnJ_y.js +0 -1
  349. package/dist/assets/stylus-Dvm1D-Up.js +0 -1
  350. package/dist/assets/swift-BYNffoE5.js +0 -1
  351. package/dist/assets/switch-BF9J785H.js +0 -1
  352. package/dist/assets/tcl-BXf8cJq0.js +0 -1
  353. package/dist/assets/textile-BYQcpBSz.js +0 -1
  354. package/dist/assets/toggle-D5cxBbM0.js +0 -1
  355. package/dist/assets/toml-DRBRsKy_.js +0 -1
  356. package/dist/assets/troff-DrvwLjLq.js +0 -1
  357. package/dist/assets/ttcn-DP5EbkJT.js +0 -1
  358. package/dist/assets/ttcn-cfg-BRAAKR13.js +0 -1
  359. package/dist/assets/turtle-Dfy5N6iI.js +0 -1
  360. package/dist/assets/vb-DzPnQ7Kn.js +0 -1
  361. package/dist/assets/vbscript-Dsr7xm0B.js +0 -1
  362. package/dist/assets/velocity-BP08r0ZT.js +0 -1
  363. package/dist/assets/verilog-CtASbUB4.js +0 -1
  364. package/dist/assets/vhdl-BNXpaYPc.js +0 -1
  365. package/dist/assets/webidl-CHQTLbOi.js +0 -1
  366. package/dist/assets/xquery-BysgHIf7.js +0 -1
  367. package/dist/assets/yacas-jKltHvRl.js +0 -1
  368. package/dist/assets/z80-DVuK3CCU.js +0 -1
  369. /package/dist/assets/{ImageComparisonComponent-CxAz0_xA.js → ImageComparisonComponent-B-B8L7nT.js} +0 -0
  370. /package/dist/assets/{Inputs-CHVZ39A4.js → Inputs-8Ub6S5-M.js} +0 -0
  371. /package/dist/assets/{Plot-BFRJWpjl.js → Plot-DQ47aeEB.js} +0 -0
  372. /package/dist/assets/{apl-DVWF09P_.js → apl-BYqtBlld.js} +0 -0
  373. /package/dist/assets/{array-WUGjrusz.js → array-Bb9_Nbm_.js} +0 -0
  374. /package/dist/assets/{asciiarmor-l0ikukqg.js → asciiarmor-DUW0Iozu.js} +0 -0
  375. /package/dist/assets/{asn1-CsdiW8T7.js → asn1-ClnHsHDP.js} +0 -0
  376. /package/dist/assets/{asterisk-DMII5ruW.js → asterisk-DQege133.js} +0 -0
  377. /package/dist/assets/{azure-DZ9IQ5nj.js → azure-DSW4Y-2T.js} +0 -0
  378. /package/dist/assets/{brainfuck-C66TQVgP.js → brainfuck-FB_E90sw.js} +0 -0
  379. /package/dist/assets/{bundle.esm-sq57iaa5.js → bundle.esm-LMxLLjaH.js} +0 -0
  380. /package/dist/assets/{card-kz6nHxJZ.js → card-sZR2Icyj.js} +0 -0
  381. /package/dist/assets/{chunk-4F5CHEZ2-D2MLpWrB.js → chunk-4F5CHEZ2-C64nkLz9.js} +0 -0
  382. /package/dist/assets/{chunk-B2363JML-BNN_5fc8.js → chunk-B2363JML-D8Gxl67V.js} +0 -0
  383. /package/dist/assets/{chunk-DR5Q36YT-BEYRDy7r.js → chunk-DR5Q36YT-ig9TOEx2.js} +0 -0
  384. /package/dist/assets/{chunk-FRFDVMJY-DjkCEWmR.js → chunk-FRFDVMJY-BGfBBgv1.js} +0 -0
  385. /package/dist/assets/{chunk-PL6DKKU2-BNHJfoD3.js → chunk-PL6DKKU2-DoRyRqa0.js} +0 -0
  386. /package/dist/assets/{chunk-SJTYNZTY-ojRASETo.js → chunk-SJTYNZTY-Bk1QduP9.js} +0 -0
  387. /package/dist/assets/{chunk-TQ3KTPDO-dWuZFaH3.js → chunk-TQ3KTPDO-DHpA157U.js} +0 -0
  388. /package/dist/assets/{chunk-UMXZTB3W-QJ4NxDrM.js → chunk-UMXZTB3W-BMTYVoYA.js} +0 -0
  389. /package/dist/assets/{clear-button-mv6uDL7t.js → clear-button-DuLHdLLm.js} +0 -0
  390. /package/dist/assets/{click-outside-container-CadeLOyB.js → click-outside-container-BSjT8zZT.js} +0 -0
  391. /package/dist/assets/{clike-Cc3gZvM_.js → clike-B7PZCnaI.js} +0 -0
  392. /package/dist/assets/{clojure-kT8c8jnq.js → clojure-DtLrahuY.js} +0 -0
  393. /package/dist/assets/{cmake-B3S-FpMv.js → cmake-DGfhkTv5.js} +0 -0
  394. /package/dist/assets/{cobol-BrIP6mPV.js → cobol-Cpbk-vCU.js} +0 -0
  395. /package/dist/assets/{coffeescript-ByxLkrBT.js → coffeescript-BATQF8kE.js} +0 -0
  396. /package/dist/assets/{colors-Vlg4ky9A.js → colors-B5L-I0Ha.js} +0 -0
  397. /package/dist/assets/{common-keywords-DOKE_IZU.js → common-keywords-DHn1q5re.js} +0 -0
  398. /package/dist/assets/{commonlisp-BjIOT_KK.js → commonlisp-C9N48zGs.js} +0 -0
  399. /package/dist/assets/{crystal-CQtLRTna.js → crystal-D2nrZv1k.js} +0 -0
  400. /package/dist/assets/{css-CU1K_XUx.js → css-DNoZFvlx.js} +0 -0
  401. /package/dist/assets/{cypher-An7BGqKu.js → cypher-6TFCZzgE.js} +0 -0
  402. /package/dist/assets/{cytoscape.esm-BauVghWH.js → cytoscape.esm-Sj5tvqw2.js} +0 -0
  403. /package/dist/assets/{d-fbf-n02o.js → d-DHH1X7PS.js} +0 -0
  404. /package/dist/assets/{diff-DbzsqZEz.js → diff-DNDp4fOd.js} +0 -0
  405. /package/dist/assets/{dist-7ypejJ7M.js → dist-B5P2o9qe.js} +0 -0
  406. /package/dist/assets/{dist-BbnFhTf8.js → dist-BFQvSNiI.js} +0 -0
  407. /package/dist/assets/{dist-CRZWTCuJ.js → dist-B_PYZeT0.js} +0 -0
  408. /package/dist/assets/{dist-D-LP6YiY.js → dist-BkdH5eBK.js} +0 -0
  409. /package/dist/assets/{dist-BertQWtB.js → dist-BnnDhAuT.js} +0 -0
  410. /package/dist/assets/{dist-1NV-2910.js → dist-ByIvWpVh.js} +0 -0
  411. /package/dist/assets/{dist-D2Iq48lS.js → dist-C04_12Dz.js} +0 -0
  412. /package/dist/assets/{dist-CnLUNQJQ.js → dist-CM9BIAuN.js} +0 -0
  413. /package/dist/assets/{dist-uai-4z-r.js → dist-CdXexMN2.js} +0 -0
  414. /package/dist/assets/{dist-Cgfk1q5C.js → dist-Ci7knalt.js} +0 -0
  415. /package/dist/assets/{dist-BI46-KjY.js → dist-Ck3oBCp1.js} +0 -0
  416. /package/dist/assets/{dist-B6Ffck9m.js → dist-ClXwZZyv.js} +0 -0
  417. /package/dist/assets/{dist-C2Qz91G3.js → dist-CyXug1a8.js} +0 -0
  418. /package/dist/assets/{dist-DsBjiA6R.js → dist-D9U7bsnA.js} +0 -0
  419. /package/dist/assets/{dist-CAlwfKNN.js → dist-DR9n0sMe.js} +0 -0
  420. /package/dist/assets/{dist-BQBTi2aC.js → dist-DWmiwHgO.js} +0 -0
  421. /package/dist/assets/{dist-DDTjVjEv.js → dist-GrURK_tH.js} +0 -0
  422. /package/dist/assets/{dist-Db0iDvI-.js → dist-KlRuMAw_.js} +0 -0
  423. /package/dist/assets/{dtd-DnQAYfYi.js → dtd-BYdB19UC.js} +0 -0
  424. /package/dist/assets/{duckdb-keywords-CPlkF2dS.js → duckdb-keywords-usZbJ-Dr.js} +0 -0
  425. /package/dist/assets/{dylan-DeXj1TAN.js → dylan-3sqQfqPE.js} +0 -0
  426. /package/dist/assets/{ebnf-CF1gbUmq.js → ebnf-BAIwm2E9.js} +0 -0
  427. /package/dist/assets/{ecl-B8-j0xrP.js → ecl-79y60Sdt.js} +0 -0
  428. /package/dist/assets/{eiffel-DdiJ6Uyn.js → eiffel-Cy1qkCDz.js} +0 -0
  429. /package/dist/assets/{elm-CAmK9rmL.js → elm-DrRzHEES.js} +0 -0
  430. /package/dist/assets/{empty-state-S5VBZ98t.js → empty-state-HOMYY9tn.js} +0 -0
  431. /package/dist/assets/{erlang-hqy6gURy.js → erlang-D3BTE-y0.js} +0 -0
  432. /package/dist/assets/{esm-DFf3sejQ.js → esm-CmxdJbk6.js} +0 -0
  433. /package/dist/assets/{esm-CMMkDitC.js → esm-DgC_9WMw.js} +0 -0
  434. /package/dist/assets/{fcl-icoS9k4f.js → fcl-BRXWXeJY.js} +0 -0
  435. /package/dist/assets/{field-BVNCXNwJ.js → field-SBC8FrmM.js} +0 -0
  436. /package/dist/assets/{formatting-DFmPqYp7.js → formatting-DZJcbcdy.js} +0 -0
  437. /package/dist/assets/{forth-CsaVBHm8.js → forth-DGce5eRS.js} +0 -0
  438. /package/dist/assets/{fortran-DGNsp41i.js → fortran-CS97oQQW.js} +0 -0
  439. /package/dist/assets/{gas-BX8xjNNw.js → gas-7e_zvN4u.js} +0 -0
  440. /package/dist/assets/{gherkin--u9ojH5d.js → gherkin-3f1nzx4Y.js} +0 -0
  441. /package/dist/assets/{groovy-Drg0Cp0-.js → groovy-Bn1MvSId.js} +0 -0
  442. /package/dist/assets/{haskell-D96A8Bg_.js → haskell-qtyafuM6.js} +0 -0
  443. /package/dist/assets/{haxe-B_4sGLdj.js → haxe-CQwWk_Ht.js} +0 -0
  444. /package/dist/assets/{http-4jqIuJdk.js → http-DxX5IMY1.js} +0 -0
  445. /package/dist/assets/{icons-3WtBtPgb.js → icons-DelodwsZ.js} +0 -0
  446. /package/dist/assets/{idl-CA47OCO3.js → idl-BnUby_AK.js} +0 -0
  447. /package/dist/assets/{init-Df7Kws7A.js → init-CwjK1Wqp.js} +0 -0
  448. /package/dist/assets/{javascript-i8I6A_gg.js → javascript-BFKHKHDt.js} +0 -0
  449. /package/dist/assets/{julia-DYuDt1xN.js → julia-BZeLe6be.js} +0 -0
  450. /package/dist/assets/{katex-BoxNfNct.js → katex-DAqTXxqH.js} +0 -0
  451. /package/dist/assets/{label-CjV5SvbM.js → label-Cvbi55_x.js} +0 -0
  452. /package/dist/assets/{links-DwwkyfLU.js → links-Bi4fFe_a.js} +0 -0
  453. /package/dist/assets/{livescript-C72Fe_WX.js → livescript-LB6oZdgV.js} +0 -0
  454. /package/dist/assets/{loro_wasm_bg-BAHdi7Mz.js → loro_wasm_bg-CfTqb-Pd.js} +0 -0
  455. /package/dist/assets/{lua-CrUucAvm.js → lua-D73MeF_d.js} +0 -0
  456. /package/dist/assets/{marimo-icons-CVMcTWRN.js → marimo-icons-CRM8aupD.js} +0 -0
  457. /package/dist/assets/{math-CgfFnpAx.js → math-BYed4MZ5.js} +0 -0
  458. /package/dist/assets/{mathematica-GLtAlQgr.js → mathematica-SckqhulL.js} +0 -0
  459. /package/dist/assets/{mbox-DsldZPOv.js → mbox-DpdjYR8y.js} +0 -0
  460. /package/dist/assets/{mirc-Dpq184o1.js → mirc-9Mp8ii_5.js} +0 -0
  461. /package/dist/assets/{mllike-eEM7KiC0.js → mllike-CteazA5r.js} +0 -0
  462. /package/dist/assets/{modelica-BKRVU7Ex.js → modelica-DruS-uJ8.js} +0 -0
  463. /package/dist/assets/{mscgen-LPWHVNeM.js → mscgen-Dqm6ZJyo.js} +0 -0
  464. /package/dist/assets/{multi-icon-ChlThs5w.js → multi-icon-CSamKn9Q.js} +0 -0
  465. /package/dist/assets/{mumps-46YgImgy.js → mumps-DAwJeUn4.js} +0 -0
  466. /package/dist/assets/{nginx-Bv2h-X8A.js → nginx-C7sPMZD3.js} +0 -0
  467. /package/dist/assets/{node-sql-parser-Bzh-sm1v.js → node-sql-parser-Dv9jUJQo.js} +0 -0
  468. /package/dist/assets/{ntriples-CABx3n6p.js → ntriples-D5_p8srT.js} +0 -0
  469. /package/dist/assets/{octave-ChjrzDtA.js → octave-StxXX2kg.js} +0 -0
  470. /package/dist/assets/{oz-BZ0G7oQI.js → oz-CZcv8Gut.js} +0 -0
  471. /package/dist/assets/{panel-context-Ch2qtloJ.js → panel-context-DtsHKvy1.js} +0 -0
  472. /package/dist/assets/{pascal-BDWWzmkf.js → pascal-BTSTYf7j.js} +0 -0
  473. /package/dist/assets/{path-mYwwOfXz.js → path-BnEkTfSL.js} +0 -0
  474. /package/dist/assets/{perl-C1twkBDg.js → perl-D3WNCnWS.js} +0 -0
  475. /package/dist/assets/{pig-CKZ-JUXx.js → pig-m1LfHx7X.js} +0 -0
  476. /package/dist/assets/{powershell-BmnkAUC8.js → powershell-C7evXFhK.js} +0 -0
  477. /package/dist/assets/{properties-B3qF4Ofl.js → properties-CX3A241c.js} +0 -0
  478. /package/dist/assets/{protobuf-CdWFIAi_.js → protobuf-CEqDY4vo.js} +0 -0
  479. /package/dist/assets/{puppet-oVG7sgNi.js → puppet-DlFBPmUd.js} +0 -0
  480. /package/dist/assets/{python-GCb3koKb.js → python-kNH0316T.js} +0 -0
  481. /package/dist/assets/{q-CylRV6ad.js → q-KQ_N2MXi.js} +0 -0
  482. /package/dist/assets/{r-BV8FQxo8.js → r-Dj_WdT8c.js} +0 -0
  483. /package/dist/assets/{react-resizable-panels.browser.esm-CgWOEYeG.js → react-resizable-panels.browser.esm-xQHRvEag.js} +0 -0
  484. /package/dist/assets/{renderShortcut-DGKqNxA5.js → renderShortcut-CwG4LAo7.js} +0 -0
  485. /package/dist/assets/{request-registry-CSchh19h.js → request-registry-DIccnHoS.js} +0 -0
  486. /package/dist/assets/{requests-dD3-AncY.js → requests-BB0ozKLz.js} +0 -0
  487. /package/dist/assets/{rpm-0QmIraaR.js → rpm-C3VyCeYo.js} +0 -0
  488. /package/dist/assets/{ruby-h-bI2J_W.js → ruby-9RpAFOsP.js} +0 -0
  489. /package/dist/assets/{runs-Vz5x5956.js → runs-CWVqudEh.js} +0 -0
  490. /package/dist/assets/{sas-BvwZbLPG.js → sas-CFBIkOrK.js} +0 -0
  491. /package/dist/assets/{scheme-BPuaxh6y.js → scheme-n4WmsRUQ.js} +0 -0
  492. /package/dist/assets/{shell-DmziZNbR.js → shell-BDAgpmgp.js} +0 -0
  493. /package/dist/assets/{sieve-DT4D9aeW.js → sieve-BVNIn7Yz.js} +0 -0
  494. /package/dist/assets/{simple-mode-BVXe8Gj5.js → simple-mode-C-nP-kAb.js} +0 -0
  495. /package/dist/assets/{slides-component-CfpPjgm7.js → slides-component-I2dHyc-j.js} +0 -0
  496. /package/dist/assets/{smalltalk-lAY6r45k.js → smalltalk-C7nE9dmX.js} +0 -0
  497. /package/dist/assets/{solr-bv5jU2Wv.js → solr-B2csZ4mu.js} +0 -0
  498. /package/dist/assets/{sparql-nFvL3z3l.js → sparql-DPFIzZM3.js} +0 -0
  499. /package/dist/assets/{spreadsheet-rTQO9mJJ.js → spreadsheet-C9drr7Wf.js} +0 -0
  500. /package/dist/assets/{sql-B-xxrTFa.js → sql-Ba7Mq1qs.js} +0 -0
  501. /package/dist/assets/{src-Cq50ZA8D.js → src-BKLwm2RN.js} +0 -0
  502. /package/dist/assets/{state-Bu50F_xe.js → state-DrNlxTx2.js} +0 -0
  503. /package/dist/assets/{stylus-BawZsgUJ.js → stylus-DGcebGVS.js} +0 -0
  504. /package/dist/assets/{swift-CdaDqiGL.js → swift-DiAJo7C6.js} +0 -0
  505. /package/dist/assets/{tcl-D5FopUjH.js → tcl-DpD837eJ.js} +0 -0
  506. /package/dist/assets/{textile-Cum4VLew.js → textile-DEqOicm6.js} +0 -0
  507. /package/dist/assets/{tiddlywiki-Ci542Gim.js → tiddlywiki-CEYqr2EK.js} +0 -0
  508. /package/dist/assets/{tiki-DpcD6yY0.js → tiki-Drx00sPe.js} +0 -0
  509. /package/dist/assets/{timer-CEUQS2Fi.js → timer-CRrOyp_g.js} +0 -0
  510. /package/dist/assets/{toml-5si8PWt8.js → toml-BdA-7EhB.js} +0 -0
  511. /package/dist/assets/{treemap-BEZnbiX5.js → treemap-DVgZWKjA.js} +0 -0
  512. /package/dist/assets/{troff-qCd7sECP.js → troff-iGRgQHLe.js} +0 -0
  513. /package/dist/assets/{ttcn-BZC1oJG1.js → ttcn-CLQ1c3XL.js} +0 -0
  514. /package/dist/assets/{ttcn-cfg-BlUyan1P.js → ttcn-cfg-BFj90pgD.js} +0 -0
  515. /package/dist/assets/{turtle-BGa4pyfx.js → turtle-DwFVq6UC.js} +0 -0
  516. /package/dist/assets/{types-DJxVS5di.js → types-D8yP89N6.js} +0 -0
  517. /package/dist/assets/{useDeepCompareMemoize-zUH53nql.js → useDeepCompareMemoize-606Ao2HX.js} +0 -0
  518. /package/dist/assets/{useInterval-B12JNm4_.js → useInterval-CLpGFmfT.js} +0 -0
  519. /package/dist/assets/{vb-G28CZ46r.js → vb-gm5P9Pn5.js} +0 -0
  520. /package/dist/assets/{vbscript-DOr4ZYtx.js → vbscript-gQvKiDdU.js} +0 -0
  521. /package/dist/assets/{velocity-DRewaasJ.js → velocity-CkfRmD_d.js} +0 -0
  522. /package/dist/assets/{verilog-DmcGbw8B.js → verilog-D3b05tu1.js} +0 -0
  523. /package/dist/assets/{vhdl-C6ktucee.js → vhdl-DRo1SU3e.js} +0 -0
  524. /package/dist/assets/{web-vitals-BV7RJGkj.js → web-vitals-MCFVTcHk.js} +0 -0
  525. /package/dist/assets/{webidl-DHu7cr9_.js → webidl-DFtmGFay.js} +0 -0
  526. /package/dist/assets/{ws-Bim0WMvW.js → ws-CcJv2XkE.js} +0 -0
  527. /package/dist/assets/{xquery-BuvyHzVJ.js → xquery-CzUikajR.js} +0 -0
  528. /package/dist/assets/{yacas-C_HpkPlV.js → yacas-BqvQWbYq.js} +0 -0
  529. /package/dist/assets/{z80-BDlRltlF.js → z80-CQqkYd-2.js} +0 -0
@@ -2,17 +2,15 @@
2
2
  "use no memo";
3
3
 
4
4
  import type { RowSelectionState, Table } from "@tanstack/react-table";
5
- import {
6
- ChartColumnStacked,
7
- ChartSplineIcon,
8
- PanelRightIcon,
9
- SearchIcon,
10
- } from "lucide-react";
5
+ import { ChartSplineIcon, PanelRightIcon, SearchIcon } from "lucide-react";
11
6
  import React from "react";
12
7
  import { useLocale } from "react-aria";
13
8
  import type { GetRowIds } from "@/plugins/impl/DataTablePlugin";
14
9
  import { cn } from "@/utils/cn";
15
- import type { PanelType } from "../editor/chrome/panels/context-aware-panel/context-aware-panel";
10
+ import {
11
+ PANEL_TYPES,
12
+ type PanelType,
13
+ } from "../editor/chrome/panels/context-aware-panel/context-aware-panel";
16
14
  import { Button } from "../ui/button";
17
15
  import { Tooltip } from "../ui/tooltip";
18
16
  import { toast } from "../ui/use-toast";
@@ -35,11 +33,10 @@ interface TableActionsProps<TData> {
35
33
  getRowIds?: GetRowIds;
36
34
  toggleDisplayHeader?: () => void;
37
35
  showChartBuilder?: boolean;
38
- showColumnExplorer?: boolean;
39
- showRowExplorer?: boolean;
36
+ showTableExplorer?: boolean;
40
37
  showPageSizeSelector?: boolean;
41
38
  togglePanel?: (panelType: PanelType) => void;
42
- isPanelOpen?: (panelType: PanelType) => boolean;
39
+ isAnyPanelOpen?: boolean;
43
40
  tableLoading?: boolean;
44
41
  }
45
42
 
@@ -58,11 +55,10 @@ export const TableActions = <TData,>({
58
55
  getRowIds,
59
56
  toggleDisplayHeader,
60
57
  showChartBuilder,
61
- showColumnExplorer,
62
- showRowExplorer,
58
+ showTableExplorer,
63
59
  showPageSizeSelector,
64
60
  togglePanel,
65
- isPanelOpen,
61
+ isAnyPanelOpen,
66
62
  tableLoading,
67
63
  }: TableActionsProps<TData>) => {
68
64
  const { locale } = useLocale();
@@ -136,43 +132,22 @@ export const TableActions = <TData,>({
136
132
  </Button>
137
133
  </Tooltip>
138
134
  )}
139
- {togglePanel && isPanelOpen !== undefined && (
140
- <>
141
- {showRowExplorer && (
142
- <Tooltip content="Toggle row viewer">
143
- <Button
144
- variant="text"
145
- size="xs"
146
- onClick={() => togglePanel("row-viewer")}
147
- className="print:hidden"
148
- >
149
- <PanelRightIcon
150
- className={cn(
151
- "w-4 h-4 text-muted-foreground",
152
- isPanelOpen("row-viewer") && "text-primary",
153
- )}
154
- />
155
- </Button>
156
- </Tooltip>
157
- )}
158
- {showColumnExplorer && (
159
- <Tooltip content="Toggle column explorer">
160
- <Button
161
- variant="text"
162
- size="xs"
163
- onClick={() => togglePanel("column-explorer")}
164
- className="print:hidden"
165
- >
166
- <ChartColumnStacked
167
- className={cn(
168
- "w-4 h-4 text-muted-foreground",
169
- isPanelOpen("column-explorer") && "text-primary",
170
- )}
171
- />
172
- </Button>
173
- </Tooltip>
174
- )}
175
- </>
135
+ {showTableExplorer && togglePanel && (
136
+ <Tooltip content="Toggle table explorer">
137
+ <Button
138
+ variant="text"
139
+ size="xs"
140
+ onClick={() => togglePanel(PANEL_TYPES.ROW_VIEWER)}
141
+ className="print:hidden"
142
+ >
143
+ <PanelRightIcon
144
+ className={cn(
145
+ "w-4 h-4 text-muted-foreground",
146
+ isAnyPanelOpen && "text-primary",
147
+ )}
148
+ />
149
+ </Button>
150
+ </Tooltip>
176
151
  )}
177
152
 
178
153
  {pagination ? (
@@ -1,5 +1,6 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
+ import { ChevronDownIcon, ChevronRightIcon } from "lucide-react";
3
4
  import { useState } from "react";
4
5
  import { useLocale } from "react-aria";
5
6
  import {
@@ -88,18 +89,21 @@ export const ColumnExplorerPanel = ({
88
89
  />
89
90
  <CommandList className="max-h-full">
90
91
  <CommandEmpty>No results.</CommandEmpty>
91
- {filteredColumns?.map(([columnName, [dataType, externalType]]) => {
92
- return (
93
- <ColumnItem
94
- // Tables may have the same column names, hence we use tableId to make it unique
95
- key={`${tableId}-${columnName}`}
96
- columnName={columnName}
97
- dataType={dataType}
98
- externalType={externalType}
99
- previewColumn={previewColumn}
100
- />
101
- );
102
- })}
92
+ {filteredColumns?.map(
93
+ ([columnName, [dataType, externalType]], index) => {
94
+ return (
95
+ <ColumnItem
96
+ // Tables may have the same column names, hence we use tableId to make it unique
97
+ key={`${tableId}-${columnName}`}
98
+ columnName={columnName}
99
+ dataType={dataType}
100
+ externalType={externalType}
101
+ previewColumn={previewColumn}
102
+ defaultExpanded={index === 0}
103
+ />
104
+ );
105
+ },
106
+ )}
103
107
  </CommandList>
104
108
  </Command>
105
109
  </div>
@@ -111,13 +115,15 @@ const ColumnItem = ({
111
115
  dataType,
112
116
  externalType,
113
117
  previewColumn,
118
+ defaultExpanded = false,
114
119
  }: {
115
120
  columnName: string;
116
121
  dataType: DataType;
117
122
  externalType: string;
118
123
  previewColumn: PreviewColumn;
124
+ defaultExpanded?: boolean;
119
125
  }) => {
120
- const [isExpanded, setIsExpanded] = useState(false);
126
+ const [isExpanded, setIsExpanded] = useState(defaultExpanded);
121
127
 
122
128
  const columnText = (
123
129
  <span className={isExpanded ? "font-semibold" : ""}>{columnName}</span>
@@ -130,6 +136,11 @@ const ColumnItem = ({
130
136
  onSelect={() => setIsExpanded(!isExpanded)}
131
137
  className="flex flex-row items-center gap-1.5 group w-full cursor-pointer"
132
138
  >
139
+ {isExpanded ? (
140
+ <ChevronDownIcon className="w-3 h-3 shrink-0 text-muted-foreground" />
141
+ ) : (
142
+ <ChevronRightIcon className="w-3 h-3 shrink-0 text-muted-foreground" />
143
+ )}
133
144
  <ColumnName columnName={columnText} dataType={dataType} />
134
145
  <div className="ml-auto">
135
146
  <Tooltip content="Copy column name" delayDuration={400}>
@@ -24,7 +24,10 @@ import { useLocale } from "react-aria";
24
24
  import { Table } from "@/components/ui/table";
25
25
  import type { GetRowIds } from "@/plugins/impl/DataTablePlugin";
26
26
  import { cn } from "@/utils/cn";
27
- import type { PanelType } from "../editor/chrome/panels/context-aware-panel/context-aware-panel";
27
+ import {
28
+ PANEL_TYPES,
29
+ type PanelType,
30
+ } from "../editor/chrome/panels/context-aware-panel/context-aware-panel";
28
31
  import { CellHoverTemplateFeature } from "./cell-hover-template/feature";
29
32
  import { CellHoverTextFeature } from "./cell-hover-text/feature";
30
33
  import { CellSelectionFeature } from "./cell-selection/feature";
@@ -97,10 +100,10 @@ interface DataTableProps<TData> extends Partial<DownloadActionProps> {
97
100
  // Others
98
101
  showChartBuilder?: boolean;
99
102
  showPageSizeSelector?: boolean;
100
- showColumnExplorer?: boolean;
101
- showRowExplorer?: boolean;
103
+ showTableExplorer?: boolean;
102
104
  togglePanel?: (panelType: PanelType) => void;
103
105
  isPanelOpen?: (panelType: PanelType) => boolean;
106
+ isAnyPanelOpen?: boolean;
104
107
  }
105
108
 
106
109
  const DataTableInternal = <TData,>({
@@ -142,10 +145,10 @@ const DataTableInternal = <TData,>({
142
145
  toggleDisplayHeader,
143
146
  showChartBuilder,
144
147
  showPageSizeSelector,
145
- showColumnExplorer,
146
- showRowExplorer,
148
+ showTableExplorer,
147
149
  togglePanel,
148
150
  isPanelOpen,
151
+ isAnyPanelOpen,
149
152
  viewedRowIdx,
150
153
  onViewedRowChange,
151
154
  }: DataTableProps<TData>) => {
@@ -272,7 +275,7 @@ const DataTableInternal = <TData,>({
272
275
  },
273
276
  });
274
277
 
275
- const rowViewerPanelOpen = isPanelOpen?.("row-viewer") ?? false;
278
+ const rowViewerPanelOpen = isPanelOpen?.(PANEL_TYPES.ROW_VIEWER) ?? false;
276
279
  const virtualize = !pagination && data.length > MIN_ROWS_TO_VIRTUALIZE;
277
280
 
278
281
  const tableRef = useScrollContainerHeight({ maxHeight, virtualize });
@@ -324,10 +327,9 @@ const DataTableInternal = <TData,>({
324
327
  toggleDisplayHeader={toggleDisplayHeader}
325
328
  showChartBuilder={showChartBuilder}
326
329
  showPageSizeSelector={showPageSizeSelector}
327
- showColumnExplorer={showColumnExplorer}
328
- showRowExplorer={showRowExplorer}
330
+ showTableExplorer={showTableExplorer}
329
331
  togglePanel={togglePanel}
330
- isPanelOpen={isPanelOpen}
332
+ isAnyPanelOpen={isAnyPanelOpen}
331
333
  tableLoading={reloading}
332
334
  />
333
335
  </div>
@@ -13,7 +13,10 @@ import { Logger } from "@/utils/Logger";
13
13
 
14
14
  interface PanelOwnershipResult {
15
15
  isPanelOpen: (panelType: PanelType) => boolean;
16
- togglePanel: (panelType: PanelType) => void;
16
+ isAnyPanelOpen: boolean;
17
+ togglePanel: (panelType?: PanelType) => void;
18
+ panelType: PanelType | null;
19
+ setPanelType: (panelType: PanelType) => void;
17
20
  }
18
21
 
19
22
  export function usePanelOwnership(
@@ -55,24 +58,31 @@ export function usePanelOwnership(
55
58
  setPanelOwner(panelId);
56
59
  }
57
60
 
58
- function togglePanel(panelType: PanelType) {
59
- if (isPanelOpen(panelType)) {
61
+ const isAnyPanelOpen = panelOwner === panelId && isContextAwarePanelOpen;
62
+
63
+ function togglePanel(requestedType?: PanelType) {
64
+ if (isAnyPanelOpen) {
60
65
  setPanelOwner(null);
61
66
  setContextAwarePanelOpen(false);
62
67
  } else {
63
68
  setPanelOwner(panelId);
64
- // if cell-aware, we want to focus on this cell when toggled open
65
69
  if (isPanelCellAware && cellId) {
66
70
  focusCell({ cellId });
67
71
  }
68
72
  setContextAwarePanelOpen(true);
69
- setPanelType(panelType);
73
+ // Only set type if explicitly requested and no previous type exists
74
+ if (requestedType && !panelType) {
75
+ setPanelType(requestedType);
76
+ }
70
77
  }
71
78
  }
72
79
 
73
80
  return {
74
81
  isPanelOpen,
82
+ isAnyPanelOpen,
75
83
  togglePanel,
84
+ panelType,
85
+ setPanelType,
76
86
  };
77
87
  }
78
88
 
@@ -12,16 +12,16 @@ import {
12
12
  ChevronsLeft,
13
13
  ChevronsRight,
14
14
  Info,
15
- SearchIcon,
16
15
  } from "lucide-react";
17
- import { useRef, useState } from "react";
16
+ import { type KeyboardEvent, useId, useRef, useState } from "react";
18
17
  import { useLocale } from "react-aria";
19
18
  import { ColumnName } from "@/components/datasources/components";
20
19
  import { CopyClipboardIcon } from "@/components/icons/copy-icon";
21
20
  import { Spinner } from "@/components/icons/spinner";
22
21
  import { KeyboardHotkeys } from "@/components/shortcuts/renderShortcut";
23
22
  import { Button } from "@/components/ui/button";
24
- import { Input } from "@/components/ui/input";
23
+ import { Checkbox } from "@/components/ui/checkbox";
24
+ import { Command, CommandInput } from "@/components/ui/command";
25
25
  import {
26
26
  Table,
27
27
  TableBody,
@@ -32,7 +32,6 @@ import {
32
32
  } from "@/components/ui/table";
33
33
  import { DelayMount } from "@/components/utils/delay-mount";
34
34
  import { useAsyncData } from "@/hooks/useAsyncData";
35
- import { useKeydownOnElement } from "@/hooks/useHotkey";
36
35
  import { Banner, ErrorBanner } from "@/plugins/impl/common/error-banner";
37
36
  import type { GetRowResult } from "@/plugins/impl/DataTablePlugin";
38
37
  import { NAMELESS_COLUMN_PREFIX, renderCellValue } from "../columns";
@@ -68,7 +67,7 @@ export const RowViewerPanel: React.FC<RowViewerPanelProps> = ({
68
67
  }: RowViewerPanelProps) => {
69
68
  const [searchQuery, setSearchQuery] = useState("");
70
69
  const panelRef = useRef<HTMLDivElement>(null);
71
- const searchInputRef = useRef<HTMLInputElement>(null);
70
+ const checkboxId = useId();
72
71
  const { locale } = useLocale();
73
72
 
74
73
  const tooManyRows = totalRows === TOO_MANY_ROWS;
@@ -102,26 +101,29 @@ export const RowViewerPanel: React.FC<RowViewerPanelProps> = ({
102
101
  setRow(totalRows - 1);
103
102
  }
104
103
 
105
- useKeydownOnElement(panelRef, {
106
- ArrowLeft: (e) => {
107
- if (e?.target === searchInputRef.current) {
108
- return false;
109
- }
110
- setRow(rowIdx - 1);
111
- },
112
- ArrowRight: (e) => {
113
- if (e?.target === searchInputRef.current) {
114
- return false;
115
- }
116
- setRow(rowIdx + 1);
117
- },
118
- Space: (e) => {
119
- if (e?.target === searchInputRef.current) {
120
- return false;
121
- }
122
- toggleRowSelection();
123
- },
124
- });
104
+ const handleKeyDown = (e: KeyboardEvent) => {
105
+ // Don't intercept keys when typing in an input
106
+ if (e.target instanceof HTMLInputElement) {
107
+ return;
108
+ }
109
+ switch (e.key) {
110
+ case "ArrowLeft":
111
+ setRow(rowIdx - 1);
112
+
113
+ break;
114
+
115
+ case "ArrowRight":
116
+ setRow(rowIdx + 1);
117
+
118
+ break;
119
+
120
+ case " ":
121
+ e.preventDefault();
122
+ toggleRowSelection();
123
+
124
+ break;
125
+ }
126
+ };
125
127
 
126
128
  const buttonStyles = "h-6 w-6 p-0.5";
127
129
 
@@ -248,19 +250,29 @@ export const RowViewerPanel: React.FC<RowViewerPanelProps> = ({
248
250
  className="flex flex-col gap-3 mt-4 focus:outline-hidden"
249
251
  ref={panelRef}
250
252
  tabIndex={-1}
253
+ onKeyDown={handleKeyDown}
251
254
  >
252
- <div className="flex flex-row gap-2 items-center mr-2">
255
+ <div className="flex flex-row gap-2 items-center mr-2 px-2">
253
256
  {isSelectable && (
254
- <div className="flex flex-row gap-1 items-center">
255
- <Button
256
- variant="link"
257
- size="xs"
258
- className="pr-0"
259
- onClick={toggleRowSelection}
260
- >
261
- {isRowSelected ? "Deselect row" : "Select row"}
262
- </Button>
263
- <KeyboardHotkeys shortcut="Space" />
257
+ <div
258
+ className="flex items-center"
259
+ title="Select/unselect the current row"
260
+ >
261
+ <div className="flex items-center gap-1.5">
262
+ <Checkbox
263
+ id={checkboxId}
264
+ checked={isRowSelected}
265
+ onCheckedChange={toggleRowSelection}
266
+ className="h-3.5 w-3.5"
267
+ />
268
+ <label
269
+ htmlFor={checkboxId}
270
+ className="text-xs text-muted-foreground cursor-pointer"
271
+ >
272
+ Select
273
+ </label>
274
+ </div>
275
+ <KeyboardHotkeys shortcut="Space" className="scale-75" />
264
276
  </div>
265
277
  )}
266
278
 
@@ -315,17 +327,14 @@ export const RowViewerPanel: React.FC<RowViewerPanelProps> = ({
315
327
  </Button>
316
328
  </div>
317
329
 
318
- <div className="mx-2 -mb-1">
319
- <Input
320
- ref={searchInputRef}
321
- type="text"
330
+ <Command className="bg-background" shouldFilter={false}>
331
+ <CommandInput
322
332
  placeholder="Search"
323
- onChange={(e) => setSearchQuery(e.target.value)}
324
- icon={<SearchIcon className="w-4 h-4" />}
325
- className="mb-0 border-border"
333
+ value={searchQuery}
334
+ onValueChange={setSearchQuery}
326
335
  data-testid="selection-panel-search-input"
327
336
  />
328
- </div>
337
+ </Command>
329
338
  {renderTable()}
330
339
  </div>
331
340
  );
@@ -0,0 +1,161 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { Fill } from "@marimo-team/react-slotz";
4
+ import type { OnChangeFn, RowSelectionState } from "@tanstack/react-table";
5
+ import type React from "react";
6
+ import { Button } from "@/components/ui/button";
7
+ import { Tabs, TabsContent } from "@/components/ui/tabs";
8
+ import { SlotNames } from "@/core/slots/slots";
9
+ import type {
10
+ GetRowResult,
11
+ PreviewColumn,
12
+ } from "@/plugins/impl/DataTablePlugin";
13
+ import { cn } from "@/utils/cn";
14
+ import {
15
+ PANEL_TYPES,
16
+ type PanelType,
17
+ } from "../../editor/chrome/panels/context-aware-panel/context-aware-panel";
18
+ import { ColumnExplorerPanel } from "../column-explorer-panel/column-explorer";
19
+ import { RowViewerPanel } from "../row-viewer-panel/row-viewer";
20
+ import type { FieldTypesWithExternalType, TooManyRows } from "../types";
21
+
22
+ export interface TableExplorerPanelProps {
23
+ // Row viewer props
24
+ rowIdx: number;
25
+ setRowIdx: (rowIdx: number) => void;
26
+ totalRows: number | TooManyRows;
27
+ fieldTypes: FieldTypesWithExternalType | undefined | null;
28
+ getRow: (rowIdx: number) => Promise<GetRowResult>;
29
+ isSelectable: boolean;
30
+ isRowSelected: boolean;
31
+ handleRowSelectionChange?: OnChangeFn<RowSelectionState>;
32
+ // Column explorer props
33
+ previewColumn?: PreviewColumn;
34
+ totalColumns: number;
35
+ tableId: string;
36
+ // Visibility flags
37
+ showRowExplorer: boolean;
38
+ showColumnExplorer: boolean;
39
+ // Tab state (driven by contextAwarePanelType atom)
40
+ activeTab: PanelType | null;
41
+ onTabChange: (tab: PanelType) => void;
42
+ }
43
+
44
+ const tabTriggerClassName =
45
+ "text-xs uppercase tracking-wide font-semibold cursor-pointer transition-colors";
46
+ const activeClassName = "text-primary";
47
+ const inactiveClassName = "hover:text-foreground";
48
+
49
+ export const TableExplorerPanel: React.FC<TableExplorerPanelProps> = ({
50
+ // Row viewer
51
+ rowIdx,
52
+ setRowIdx,
53
+ totalRows,
54
+ fieldTypes,
55
+ getRow,
56
+ isSelectable,
57
+ isRowSelected,
58
+ handleRowSelectionChange,
59
+ // Column explorer
60
+ previewColumn,
61
+ totalColumns,
62
+ tableId,
63
+ // Visibility
64
+ showRowExplorer,
65
+ showColumnExplorer,
66
+ // Tab state
67
+ activeTab,
68
+ onTabChange,
69
+ }) => {
70
+ const showTabs = showRowExplorer && showColumnExplorer;
71
+
72
+ const rowViewer = (
73
+ <RowViewerPanel
74
+ rowIdx={rowIdx}
75
+ setRowIdx={setRowIdx}
76
+ totalRows={totalRows}
77
+ fieldTypes={fieldTypes}
78
+ getRow={getRow}
79
+ isSelectable={isSelectable}
80
+ isRowSelected={isRowSelected}
81
+ handleRowSelectionChange={handleRowSelectionChange}
82
+ />
83
+ );
84
+
85
+ const columnExplorer = previewColumn && (
86
+ <ColumnExplorerPanel
87
+ previewColumn={previewColumn}
88
+ fieldTypes={fieldTypes}
89
+ totalRows={totalRows}
90
+ totalColumns={totalColumns}
91
+ tableId={tableId}
92
+ />
93
+ );
94
+
95
+ // If only one panel is visible, don't show tabs
96
+ if (!showTabs) {
97
+ if (showRowExplorer) {
98
+ return rowViewer;
99
+ }
100
+ if (showColumnExplorer) {
101
+ return columnExplorer;
102
+ }
103
+ return null;
104
+ }
105
+
106
+ // Resolve active tab — fall back to first available
107
+ const resolvedTab = activeTab ?? PANEL_TYPES.ROW_VIEWER;
108
+
109
+ return (
110
+ <Tabs
111
+ value={resolvedTab}
112
+ onValueChange={(value) => onTabChange(value as PanelType)}
113
+ className="h-full flex flex-col min-w-[350px]"
114
+ >
115
+ <Fill name={SlotNames.CONTEXT_AWARE_PANEL_HEADER}>
116
+ <div className="flex items-center gap-1">
117
+ <Button
118
+ variant="text"
119
+ size="xs"
120
+ onClick={() => onTabChange(PANEL_TYPES.ROW_VIEWER)}
121
+ className={cn(
122
+ tabTriggerClassName,
123
+ resolvedTab === PANEL_TYPES.ROW_VIEWER
124
+ ? activeClassName
125
+ : inactiveClassName,
126
+ )}
127
+ >
128
+ Rows
129
+ </Button>
130
+ <span className="text-muted-foreground text-xs">|</span>
131
+ <Button
132
+ variant="text"
133
+ size="xs"
134
+ onClick={() => onTabChange(PANEL_TYPES.COLUMN_EXPLORER)}
135
+ className={cn(
136
+ tabTriggerClassName,
137
+ resolvedTab === PANEL_TYPES.COLUMN_EXPLORER
138
+ ? activeClassName
139
+ : inactiveClassName,
140
+ )}
141
+ >
142
+ Explorer
143
+ </Button>
144
+ </div>
145
+ </Fill>
146
+
147
+ <TabsContent
148
+ value={PANEL_TYPES.ROW_VIEWER}
149
+ className="flex-1 overflow-auto"
150
+ >
151
+ {rowViewer}
152
+ </TabsContent>
153
+ <TabsContent
154
+ value={PANEL_TYPES.COLUMN_EXPLORER}
155
+ className="flex-1 overflow-auto"
156
+ >
157
+ {columnExplorer}
158
+ </TabsContent>
159
+ </Tabs>
160
+ );
161
+ };
@@ -21,7 +21,12 @@ import {
21
21
  isPinnedAtom,
22
22
  } from "./atoms";
23
23
 
24
- export type PanelType = "row-viewer" | "column-explorer";
24
+ export const PANEL_TYPES = {
25
+ ROW_VIEWER: "row-viewer",
26
+ COLUMN_EXPLORER: "column-explorer",
27
+ } as const;
28
+
29
+ export type PanelType = (typeof PANEL_TYPES)[keyof typeof PANEL_TYPES];
25
30
 
26
31
  export const ContextAwarePanel: React.FC = () => {
27
32
  const [owner, setOwner] = useAtom(contextAwarePanelOwner);
@@ -51,7 +56,7 @@ export const ContextAwarePanel: React.FC = () => {
51
56
  aria-label={isPinned ? "Unpin panel" : "Pin panel"}
52
57
  >
53
58
  {isPinned ? (
54
- <PinIcon className="w-4 h-4" />
59
+ <PinIcon className="w-4 h-4 text-primary" />
55
60
  ) : (
56
61
  <PinOffIcon className="w-4 h-4" />
57
62
  )}
@@ -95,16 +100,18 @@ export const ContextAwarePanel: React.FC = () => {
95
100
 
96
101
  const renderBody = () => {
97
102
  return (
98
- <div className="mt-2 pb-7 mb-4 h-full overflow-auto">
99
- <div className="flex flex-row justify-between items-center mx-2">
103
+ <div className="pb-7 mb-4 h-full overflow-auto">
104
+ <div className="p-3 border-b flex justify-between items-center">
100
105
  {renderModeToggle()}
106
+ <Slot name={SlotNames.CONTEXT_AWARE_PANEL_HEADER} />
101
107
  <Button
102
- variant="linkDestructive"
103
- size="icon"
108
+ variant="text"
109
+ size="xs"
110
+ className="m-0"
104
111
  onClick={closePanel}
105
112
  aria-label="Close selection panel"
106
113
  >
107
- <XIcon className="w-4 h-4" />
114
+ <XIcon className="w-4 h-4 hover:text-destructive" />
108
115
  </Button>
109
116
  </div>
110
117
 
@@ -126,7 +133,7 @@ export const ContextAwarePanel: React.FC = () => {
126
133
  onDragging={handleDragging}
127
134
  className="resize-handle border-border z-20 print:hidden border-l"
128
135
  />
129
- <Panel defaultSize={20} minSize={15} maxSize={80}>
136
+ <Panel defaultSize={25} minSize={25} maxSize={80}>
130
137
  {renderBody()}
131
138
  </Panel>
132
139
  </>
@@ -150,7 +157,7 @@ interface ResizableComponentProps {
150
157
  const ResizableComponent = ({ children }: ResizableComponentProps) => {
151
158
  const { resizableDivRef, handleRefs, style } = useResizeHandle({
152
159
  startingWidth: 400,
153
- minWidth: 300,
160
+ minWidth: 400,
154
161
  maxWidth: 1500,
155
162
  onResize: () => {
156
163
  raf2(() => {
@@ -6,4 +6,5 @@ export const slotsController = new SlotzController();
6
6
  export const SlotNames = {
7
7
  SIDEBAR: "sidebar",
8
8
  CONTEXT_AWARE_PANEL: "context-aware-panel",
9
+ CONTEXT_AWARE_PANEL_HEADER: "context-aware-panel-header",
9
10
  };