@marimo-team/frontend 0.24.1-dev3 → 0.24.1-dev31

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 (590) hide show
  1. package/dist/assets/{CellStatus-B_dBNTJO.js → CellStatus-DdKYN88d.js} +1 -1
  2. package/dist/assets/{ConnectedDataExplorerComponent-DLvmqIcV.js → ConnectedDataExplorerComponent-CbTaTBJ8.js} +1 -1
  3. package/dist/assets/{JsonOutput-C5g_bqiZ.js → JsonOutput-htT793Wj.js} +7 -7
  4. package/dist/assets/LazyAnyLanguageCodeMirror-Bx0i_n8B.js +2 -0
  5. package/dist/assets/{MarimoErrorOutput-Cb0evuEp.js → MarimoErrorOutput-Db7coyFA.js} +7 -7
  6. package/dist/assets/{RenderHTML-BoN8Qu7U.js → RenderHTML-Cu5JtYZJ.js} +1 -1
  7. package/dist/assets/{RunButton-C3V3v58F.js → RunButton-BOnl_Dk8.js} +1 -1
  8. package/dist/assets/{abnfDiagram-N423BO3Z-BBbWbiyb.js → abnfDiagram-N423BO3Z-BhqlQxDe.js} +1 -1
  9. package/dist/assets/{add-cell-with-ai--yrESuLb.js → add-cell-with-ai-Chy4ITIT.js} +12 -12
  10. package/dist/assets/add-connection-dialog-DGYhyXo6.js +181 -0
  11. package/dist/assets/{agent-panel-i9R2vDC5.js → agent-panel--Nt4UmNj.js} +6 -6
  12. package/dist/assets/{ai-model-dropdown-Wvw4ot3v.js → ai-model-dropdown-BUCPZ0ND.js} +4 -4
  13. package/dist/assets/{any-language-editor-B92E_2Sy.js → any-language-editor-CV_jRt2A.js} +1 -1
  14. package/dist/assets/apl-sEsRK68R.js +1 -0
  15. package/dist/assets/app-config-button-BOxbrv3L.js +1 -0
  16. package/dist/assets/architecture-TIHT7OUA-CkB6_TwN.js +1 -0
  17. package/dist/assets/{architectureDiagram-T3A2C74G-DoGbg0qs.js → architectureDiagram-T3A2C74G-D_0znduP.js} +1 -1
  18. package/dist/assets/asciiarmor-CwCv7Lne.js +1 -0
  19. package/dist/assets/asn1-CuzWg-fh.js +1 -0
  20. package/dist/assets/{blob-XD7AvCQ1.js → blob-BVQSODqn.js} +1 -1
  21. package/dist/assets/{blockDiagram-VBNYF7ZC-Fapk5G8q.js → blockDiagram-VBNYF7ZC-DhnQkFJt.js} +1 -1
  22. package/dist/assets/brainfuck-CnnfS_cI.js +1 -0
  23. package/dist/assets/{c4Diagram-5PPSVZJV-DHpoGw8m.js → c4Diagram-5PPSVZJV-DAZWLixJ.js} +1 -1
  24. package/dist/assets/{cell-editor-CrWparei.js → cell-editor-DgOfL9Xv.js} +15 -15
  25. package/dist/assets/cell-link-Bx8FWjns.js +1 -0
  26. package/dist/assets/{cells-BvgwUKB9.js → cells-Biwqg0z6.js} +80 -80
  27. package/dist/assets/channel-97-i68Z5.js +1 -0
  28. package/dist/assets/{chat-display-CvI32cPI.js → chat-display-B2qUbgnh.js} +1 -1
  29. package/dist/assets/{chat-panel-nbCWEZX-.js → chat-panel-gxL2S-HQ.js} +2 -2
  30. package/dist/assets/{chat-ui-BmrjRgsi.js → chat-ui-BhnwgDpa.js} +1 -1
  31. package/dist/assets/{chunk-2GRJ4B5K-B92Uwj7z.js → chunk-2GRJ4B5K-BJlW2T7a.js} +1 -1
  32. package/dist/assets/{chunk-2Q5K7J3B-CjxRf8HM.js → chunk-2Q5K7J3B-BKHkc-hn.js} +1 -1
  33. package/dist/assets/{chunk-3NCLNEKW-D7adDEkj.js → chunk-3NCLNEKW-DYppyU2y.js} +1 -1
  34. package/dist/assets/{chunk-4I5QYGJK-Cce-HuZg.js → chunk-4I5QYGJK-o2gGFKEO.js} +1 -1
  35. package/dist/assets/{chunk-5FCAYU7R-BJ04i5uO.js → chunk-5FCAYU7R-B4Jz9Jv5.js} +1 -1
  36. package/dist/assets/{chunk-5FQGJX7Z-B4N_BMo6.js → chunk-5FQGJX7Z-BIDn9QG0.js} +2 -2
  37. package/dist/assets/{chunk-5HE753X5-DRFzJ7WN.js → chunk-5HE753X5-DySWu3WO.js} +1 -1
  38. package/dist/assets/{chunk-5JV3BV7I-BEi9dboc.js → chunk-5JV3BV7I-EFAb-cXP.js} +1 -1
  39. package/dist/assets/{chunk-5RXB4S5H-B63Jmiyu.js → chunk-5RXB4S5H-Bsyeqyau.js} +1 -1
  40. package/dist/assets/{chunk-5TONJI2A-C5JJwzzL.js → chunk-5TONJI2A-BtGpymP5.js} +1 -1
  41. package/dist/assets/{chunk-5VM5RSS4-CQG8Gkf2.js → chunk-5VM5RSS4-De48wE7I.js} +1 -1
  42. package/dist/assets/{chunk-6Q2QTUOP-CjNw1snm.js → chunk-6Q2QTUOP-UhOQcBq_.js} +1 -1
  43. package/dist/assets/{chunk-7BUUIJ7U-DFO0zbY5.js → chunk-7BUUIJ7U-VPkRElaC.js} +1 -1
  44. package/dist/assets/{chunk-7Z6QIM7H-BahVaiTb.js → chunk-7Z6QIM7H-CSiw9nlS.js} +1 -1
  45. package/dist/assets/{chunk-BIQX33UG-B1y9dy0P.js → chunk-BIQX33UG-Clm0kIyq.js} +1 -1
  46. package/dist/assets/{chunk-CQNSW5MT-BOOyLCfW.js → chunk-CQNSW5MT-CxPDGEiS.js} +1 -1
  47. package/dist/assets/{chunk-CYSBUYHQ-DAWZpY6r.js → chunk-CYSBUYHQ-Cx6JgR38.js} +1 -1
  48. package/dist/assets/{chunk-EMLP6XTP-Bj2I2iEi.js → chunk-EMLP6XTP-DrNgCa2u.js} +1 -1
  49. package/dist/assets/{chunk-GF5L2VYU-BA39vN3k.js → chunk-GF5L2VYU-B88HnHN4.js} +1 -1
  50. package/dist/assets/{chunk-I66GZJ75-CgJN5WrL.js → chunk-I66GZJ75-BWcitPjS.js} +3 -3
  51. package/dist/assets/{chunk-J7OUQ5F2-DK5phbYO.js → chunk-J7OUQ5F2-DuBXnQXx.js} +2 -2
  52. package/dist/assets/{chunk-JG7HCLWE-BEfUAeKb.js → chunk-JG7HCLWE-D4-rg2bS.js} +1 -1
  53. package/dist/assets/{chunk-JQJVKLGR-vTeSeIY7.js → chunk-JQJVKLGR-L5fl0mYk.js} +1 -1
  54. package/dist/assets/{chunk-JWPE2WC7-C-mBVSJi.js → chunk-JWPE2WC7-CIIO5B1k.js} +1 -1
  55. package/dist/assets/{chunk-KBJHAD2P-BKxl1MSu.js → chunk-KBJHAD2P-MvrqGNli.js} +1 -1
  56. package/dist/assets/{chunk-MOZMSUNE-C-RMDvp_.js → chunk-MOZMSUNE-t37mHxNa.js} +1 -1
  57. package/dist/assets/{chunk-NSK5VX7P-bxC5WUDr.js → chunk-NSK5VX7P-B_lLBcNS.js} +1 -1
  58. package/dist/assets/{chunk-OSBZ3O6U-DEYDoDYT.js → chunk-OSBZ3O6U-3f38erx3.js} +1 -1
  59. package/dist/assets/{chunk-QBLGF6JB-CBncH5PS.js → chunk-QBLGF6JB-CHob4JDY.js} +1 -1
  60. package/dist/assets/{chunk-QR6OTTB3-gGVLoYpg.js → chunk-QR6OTTB3-Xk5It1Th.js} +1 -1
  61. package/dist/assets/{chunk-R7FJI6CG-DWxNgy5y.js → chunk-R7FJI6CG-ClJ6eR5G.js} +1 -1
  62. package/dist/assets/{chunk-RYQCIY6F-DkXJx61e.js → chunk-RYQCIY6F-CZjjwaqg.js} +1 -1
  63. package/dist/assets/{chunk-U6XO7XAA-DWWxQ-OA.js → chunk-U6XO7XAA-Ct1fe-tp.js} +1 -1
  64. package/dist/assets/{chunk-UBXNYLIW-elhI8GOz.js → chunk-UBXNYLIW-XbwBj9py.js} +1 -1
  65. package/dist/assets/{chunk-W5SLKNZC-D_QNHYYQ.js → chunk-W5SLKNZC-DBMPI1Hf.js} +1 -1
  66. package/dist/assets/{chunk-WRU74C26-BU1GwH6E.js → chunk-WRU74C26-HbDQnuwB.js} +1 -1
  67. package/dist/assets/{chunk-XXDRQBXY-D_KNH1wc.js → chunk-XXDRQBXY-DyGGngH3.js} +1 -1
  68. package/dist/assets/{chunk-YOTPTUD7-Nm5N45o4.js → chunk-YOTPTUD7-CC6lxUuz.js} +1 -1
  69. package/dist/assets/{chunk-ZIRB5QZD-DKs4kfC7.js → chunk-ZIRB5QZD-Giz-iAOC.js} +1 -1
  70. package/dist/assets/classDiagram-JCYQIIEL-Bi4N77rq.js +1 -0
  71. package/dist/assets/classDiagram-v2-OCEON4UE-DDmVp-9r.js +1 -0
  72. package/dist/assets/{clike-BAN6KopO.js → clike-tfWZyYoN.js} +1 -1
  73. package/dist/assets/clojure-Bninbb7T.js +1 -0
  74. package/dist/assets/cmake-BpuaQxBS.js +1 -0
  75. package/dist/assets/cobol-GPJ0dHQG.js +1 -0
  76. package/dist/assets/{code-block-37QAKDTI-DYj4t0uu.js → code-block-37QAKDTI-CxkZZ2yu.js} +1 -1
  77. package/dist/assets/coffeescript-D7gQHdB-.js +1 -0
  78. package/dist/assets/{column-preview-DMqGohE5.js → column-preview-BaRqZ9P8.js} +1 -1
  79. package/dist/assets/{command-palette-DCAiZSda.js → command-palette-Cbie8JV9.js} +1 -1
  80. package/dist/assets/{common-Dx_4ekWj.js → common-sBRwGAKy.js} +1 -1
  81. package/dist/assets/commonlisp-Cr4KGe18.js +1 -0
  82. package/dist/assets/{components-CozWCL5N.js → components-CGGSwziZ.js} +1 -1
  83. package/dist/assets/components-DsJAWbBR.js +1 -0
  84. package/dist/assets/{cose-bilkent-JH36ORCC-BItWxPmu.js → cose-bilkent-JH36ORCC-Bgowgmmd.js} +1 -1
  85. package/dist/assets/crystal-CsTMAwME.js +1 -0
  86. package/dist/assets/{css-DWLxGm3Z.js → css-COZ77Eal.js} +1 -1
  87. package/dist/assets/cynefin-VYW2F7L2-mNpr4SbP.js +1 -0
  88. package/dist/assets/{cynefinDiagram-MW4NZA55-xRolnN9H.js → cynefinDiagram-MW4NZA55-BjhYqu92.js} +1 -1
  89. package/dist/assets/cypher-CY21sZiF.js +1 -0
  90. package/dist/assets/d-CURHSrpr.js +1 -0
  91. package/dist/assets/{dagre-VZM6K2ZE--7CAsOPi.js → dagre-VZM6K2ZE-BEuyIkT6.js} +1 -1
  92. package/dist/assets/{data-grid-overlay-editor-CP2bSduR.js → data-grid-overlay-editor-BQUij2ly.js} +1 -1
  93. package/dist/assets/data-source-discovery-DCNYJylO.js +1 -0
  94. package/dist/assets/{datasource-Le540Ng6.js → datasource-DxCwZdAq.js} +2 -2
  95. package/dist/assets/dependency-graph-panel-CLOQ_RvL.js +5 -0
  96. package/dist/assets/{diagram-7IWD3JNH-B55VSdpL.js → diagram-7IWD3JNH-Bs3lgu-c.js} +1 -1
  97. package/dist/assets/{diagram-B4RE2ZJO-BDn7ASqI.js → diagram-B4RE2ZJO-Dth7brNz.js} +1 -1
  98. package/dist/assets/{diagram-LBJQPF4R-B51MZG2V.js → diagram-LBJQPF4R-BTVLtL0d.js} +1 -1
  99. package/dist/assets/{diagram-Q27KOJAE-Cwk0Mlin.js → diagram-Q27KOJAE-CP204u9a.js} +1 -1
  100. package/dist/assets/{diagram-UB23O5K3-BdYFaMnx.js → diagram-UB23O5K3-ClHQzHar.js} +1 -1
  101. package/dist/assets/diff-oDNdZgsT.js +1 -0
  102. package/dist/assets/dist-2VJQDijP.js +1 -0
  103. package/dist/assets/{dist-etjVl5BO.js → dist-BB2m_pT9.js} +1 -1
  104. package/dist/assets/{dist-CAHB5I2V.js → dist-BIoV7ItK.js} +1 -1
  105. package/dist/assets/{dist-D5yi7Y8o.js → dist-BKZjRJh7.js} +1 -1
  106. package/dist/assets/dist-BSndAsl2.js +1 -0
  107. package/dist/assets/{dist-CF4ci481.js → dist-BrBdlR-1.js} +1 -1
  108. package/dist/assets/dist-CULUasdr.js +1 -0
  109. package/dist/assets/{dist-CG7o1Txo.js → dist-CgdeWOxv.js} +1 -1
  110. package/dist/assets/{dist-x-uwJAB2.js → dist-D7Pn6TvC.js} +1 -1
  111. package/dist/assets/{dist-Ci0ANOWc.js → dist-DoCsyl8V.js} +1 -1
  112. package/dist/assets/{dist-BhAom09b.js → dist-Q_HuxBl8.js} +1 -1
  113. package/dist/assets/{dist-UMYZc9Uw.js → dist-URSEPeIQ.js} +1 -1
  114. package/dist/assets/dist-e3TiiDdA.js +1 -0
  115. package/dist/assets/{dist-0tTkix79.js → dist-gKSpDGw2.js} +1 -1
  116. package/dist/assets/{dist-5AUFDACg.js → dist-ziD6OB9m.js} +1 -1
  117. package/dist/assets/{dockerfile-vQlfzaHL.js → dockerfile-L84t-MVG.js} +1 -1
  118. package/dist/assets/{documentation-panel-RJNMjUK6.js → documentation-panel-D9w8PAT9.js} +1 -1
  119. package/dist/assets/{download-B8NwKEtr.js → download-CfUkZlw7.js} +1 -1
  120. package/dist/assets/dtd-Cy2_BeYL.js +1 -0
  121. package/dist/assets/dylan-Crd9Fb_0.js +1 -0
  122. package/dist/assets/{ebnfDiagram-BXEA7PRR-BeNZBLGl.js → ebnfDiagram-BXEA7PRR-D5itfLTD.js} +1 -1
  123. package/dist/assets/ecl-CfCmFoo0.js +1 -0
  124. package/dist/assets/{edit-page-CvL5WAqs.js → edit-page-DKAg2YW9.js} +6 -6
  125. package/dist/assets/eiffel-gIaoJqnl.js +1 -0
  126. package/dist/assets/elm-BFWuf0zw.js +1 -0
  127. package/dist/assets/{erDiagram-JOGREHBK-Md316MnW.js → erDiagram-JOGREHBK-8nttFkHX.js} +1 -1
  128. package/dist/assets/erlang-o_h5GHv6.js +1 -0
  129. package/dist/assets/{error-entries-yYB8PZoo.js → error-entries-DpvSrZSw.js} +3 -3
  130. package/dist/assets/{error-panel-Dr928gBs.js → error-panel-uRl1_l47.js} +1 -1
  131. package/dist/assets/{esm-CpCa6w8Q.js → esm-B7G79VOo.js} +1 -1
  132. package/dist/assets/eventmodeling-45OFAUF4-CmCnqr0B.js +1 -0
  133. package/dist/assets/factor-DhP48x0i.js +1 -0
  134. package/dist/assets/{factor-D96xahcJ.js → factor-aNENtHLj.js} +1 -1
  135. package/dist/assets/file-explorer-panel-DwA9Lprz.js +37 -0
  136. package/dist/assets/{file-icons-D39zbjsS.js → file-icons-DpREEjwW.js} +1 -1
  137. package/dist/assets/{file-name-input-BLH5fTEA.js → file-name-input-C7AQKuoU.js} +1 -1
  138. package/dist/assets/{floating-outline-UPrDtFZF.js → floating-outline-4I6DvqaR.js} +1 -1
  139. package/dist/assets/flowDiagram-UKHOOZJN-BBKoHcjJ.js +1 -0
  140. package/dist/assets/{focus-BArgHYf8.js → focus-CeTtpVjV.js} +1 -1
  141. package/dist/assets/{form-BvzcNsxB.js → form-B10bgcbQ.js} +1 -1
  142. package/dist/assets/{form-BN1AKD58.js → form-Cj9BLARR.js} +1 -1
  143. package/dist/assets/forth-B9culvwH.js +1 -0
  144. package/dist/assets/fortran-P9CMHntW.js +1 -0
  145. package/dist/assets/{ganttDiagram-PKOTCBZU-ZWAQtEyO.js → ganttDiagram-PKOTCBZU-lYZ3LZM4.js} +1 -1
  146. package/dist/assets/gas-aBeBIUA2.js +1 -0
  147. package/dist/assets/gherkin-BKojMN6Q.js +1 -0
  148. package/dist/assets/gitGraph-TEB2WS4Q-lhsXnAif.js +1 -0
  149. package/dist/assets/{gitGraphDiagram-DS77QQ5N-BLejYVyQ.js → gitGraphDiagram-DS77QQ5N-BMWEqU01.js} +1 -1
  150. package/dist/assets/{glide-data-editor-BNZxtmKn.js → glide-data-editor-Bo6hLXbn.js} +6 -6
  151. package/dist/assets/groovy-CePAd7wh.js +1 -0
  152. package/dist/assets/haskell-QHmsrbZx.js +1 -0
  153. package/dist/assets/haxe-CQV_8vKL.js +1 -0
  154. package/dist/assets/{home-page-DcO0NzuV.js → home-page-BNJihtii.js} +2 -2
  155. package/dist/assets/{html-to-image-DKEUbBwc.js → html-to-image-ChfBVn8-.js} +1 -1
  156. package/dist/assets/idl-Dd8N44Cm.js +1 -0
  157. package/dist/assets/index-CxZ6uZaz.css +2 -0
  158. package/dist/assets/index-DemYxG9z.js +38 -0
  159. package/dist/assets/info-DKCQHKI2-C7T8UDyU.js +1 -0
  160. package/dist/assets/infoDiagram-6WML65LV-DF1s-6Vl.js +2 -0
  161. package/dist/assets/{ishikawaDiagram-WSZJBQD7-DsUyhPdP.js → ishikawaDiagram-WSZJBQD7-DaG24pVU.js} +1 -1
  162. package/dist/assets/javascript-DSNeo7JU.js +1 -0
  163. package/dist/assets/{journeyDiagram-NVQOT4AX-Dtytysty.js → journeyDiagram-NVQOT4AX-Bjv5KPQN.js} +1 -1
  164. package/dist/assets/julia-noK_uk9P.js +1 -0
  165. package/dist/assets/{kanban-definition-27J2QSJJ-CtSUWi1q.js → kanban-definition-27J2QSJJ-3QfkEp5c.js} +1 -1
  166. package/dist/assets/katex-D7rQd2tt.js +1 -0
  167. package/dist/assets/{layout-C5In1pVG.js → layout-YPBtS2D6.js} +5 -5
  168. package/dist/assets/livescript-YKkeujLh.js +1 -0
  169. package/dist/assets/{logs-panel-DItocggZ.js → logs-panel-ClE58_4G.js} +1 -1
  170. package/dist/assets/{loro_wasm_bg-Cei5H7n0.js → loro_wasm_bg-Bhj1szFH.js} +1 -1
  171. package/dist/assets/lua-fLqC1mOj.js +1 -0
  172. package/dist/assets/{markdown-renderer-D7RLn6TA.js → markdown-renderer-BOS4jZLt.js} +3 -3
  173. package/dist/assets/mathematica-BEqGrvB0.js +1 -0
  174. package/dist/assets/mbox-9uehSvC8.js +1 -0
  175. package/dist/assets/{mermaid-4DMBBIKO-oaGD2RAq.js → mermaid-4DMBBIKO-VnWrwEGQ.js} +1 -1
  176. package/dist/assets/{mermaid-D7qPJTl5.js → mermaid-DrH-G40O.js} +3 -3
  177. package/dist/assets/{mermaid-parser.core-C1pvq6V4.js → mermaid-parser.core-7L0n-40M.js} +2 -2
  178. package/dist/assets/{mhchem-ByBXJmVs.js → mhchem-jUQ3W9QS.js} +1 -1
  179. package/dist/assets/{mindmap-definition-FAOFIHXS-BdiofJNg.js → mindmap-definition-FAOFIHXS-BI-5PR09.js} +1 -1
  180. package/dist/assets/mirc-BTX_WxCv.js +1 -0
  181. package/dist/assets/mllike-LThTvO6F.js +1 -0
  182. package/dist/assets/modelica-ClexNQK-.js +1 -0
  183. package/dist/assets/mscgen-Cr-Z_Sdd.js +1 -0
  184. package/dist/assets/mumps-G_BfPdvs.js +1 -0
  185. package/dist/assets/{name-cell-input-jausH-CL.js → name-cell-input-UMsLssMV.js} +1 -1
  186. package/dist/assets/nsis-CBRC0JIr.js +1 -0
  187. package/dist/assets/{nsis-gzbsJ5t0.js → nsis-CNBWu0HQ.js} +1 -1
  188. package/dist/assets/ntriples-DrvRq09t.js +1 -0
  189. package/dist/assets/{number-overlay-editor-CrwfeUrx.js → number-overlay-editor-C-zZ00cy.js} +1 -1
  190. package/dist/assets/octave-BiPC57kS.js +1 -0
  191. package/dist/assets/{outline-panel-C_pASL6b.js → outline-panel-DweKocZK.js} +1 -1
  192. package/dist/assets/oz-DacpSh-q.js +1 -0
  193. package/dist/assets/{packages-panel-DTqur75g.js → packages-panel-Cbw5J5QD.js} +1 -1
  194. package/dist/assets/packet-7NZHBO7P-CJZ85ye7.js +1 -0
  195. package/dist/assets/panel-accordion-state-CgvX-ElJ.js +1 -0
  196. package/dist/assets/panels-DRv39UwA.js +4 -0
  197. package/dist/assets/pascal-BQpBPSms.js +1 -0
  198. package/dist/assets/{pegDiagram-VL7TDLO6-CUhl_uoo.js → pegDiagram-VL7TDLO6-Dr2AgOs7.js} +1 -1
  199. package/dist/assets/perl-BhMGfluR.js +1 -0
  200. package/dist/assets/pie-RZYD4A2V-DowYgF53.js +1 -0
  201. package/dist/assets/{pieDiagram-7S7Q4E2Y-BUJuppkz.js → pieDiagram-7S7Q4E2Y-CrBge38F.js} +1 -1
  202. package/dist/assets/pig-lTm9qLoi.js +1 -0
  203. package/dist/assets/powershell-3wPcC3I5.js +1 -0
  204. package/dist/assets/{process-output-ClE9lj2U.js → process-output-BMxr8Z3g.js} +1 -1
  205. package/dist/assets/properties-CfDlOPua.js +1 -0
  206. package/dist/assets/protobuf-DqtB_3Ds.js +1 -0
  207. package/dist/assets/pug-BendPilS.js +1 -0
  208. package/dist/assets/{pug-CfBtO6QD.js → pug-IDpseMj2.js} +1 -1
  209. package/dist/assets/puppet-CS4oS8k4.js +1 -0
  210. package/dist/assets/python-DwXz2aVG.js +1 -0
  211. package/dist/assets/q-CAmiN8ZZ.js +1 -0
  212. package/dist/assets/{quadrantDiagram-CIZ2JOQS-D1kqQfB1.js → quadrantDiagram-CIZ2JOQS-BE2ggXL5.js} +1 -1
  213. package/dist/assets/r-BVrS7OVn.js +1 -0
  214. package/dist/assets/radar-I7S5WNFK-CTSSWmoj.js +1 -0
  215. package/dist/assets/{radio-group-CSwRGU0A.js → radio-group-YNmbPL7y.js} +1 -1
  216. package/dist/assets/railroad-3IZDKUUU-B7NYUsSF.js +1 -0
  217. package/dist/assets/railroad-abnf-AHOZXSZD-YHDI2QY9.js +1 -0
  218. package/dist/assets/railroad-ebnf-EBAXGLYW-C63c8OB7.js +1 -0
  219. package/dist/assets/railroad-peg-LSFZ7HO6-Cjglh51C.js +1 -0
  220. package/dist/assets/{railroadDiagram-AXF67PYL-A0Qm-6po.js → railroadDiagram-AXF67PYL-DCQRdlxt.js} +1 -1
  221. package/dist/assets/{readonly-code-display-kRUXu5aJ.js → readonly-code-display-N9tCXdCz.js} +1 -1
  222. package/dist/assets/{readonly-python-code-BCOkadQf.js → readonly-python-code-BHrAhtGV.js} +1 -1
  223. package/dist/assets/{requirementDiagram-LRYGKXZP-Cq2ghiHc.js → requirementDiagram-LRYGKXZP-DwT1P9SV.js} +1 -1
  224. package/dist/assets/{reveal-component-DpjFw5UY.js → reveal-component-Cl6cd65E.js} +2 -2
  225. package/dist/assets/rpm-CdnUar42.js +1 -0
  226. package/dist/assets/ruby-BCel59B2.js +1 -0
  227. package/dist/assets/{run-page-BXPaOWqZ.js → run-page-Phwq7OJt.js} +1 -1
  228. package/dist/assets/{sankeyDiagram-W5VNT64P-RT9P6FJq.js → sankeyDiagram-W5VNT64P-DI3BRqfo.js} +1 -1
  229. package/dist/assets/sas-BmzKenFt.js +1 -0
  230. package/dist/assets/scheme-DkHD_m5P.js +1 -0
  231. package/dist/assets/{scratchpad-panel-GyB5PjiV.js → scratchpad-panel-CvihhlAP.js} +1 -1
  232. package/dist/assets/{sequenceDiagram-SI44F4Z6-Dk9UNsG3.js → sequenceDiagram-SI44F4Z6-BBkZRxiN.js} +1 -1
  233. package/dist/assets/session-panel-BmQ0PDHO.js +1 -0
  234. package/dist/assets/shell-BoNNN3zm.js +1 -0
  235. package/dist/assets/sieve-BXXK8f92.js +1 -0
  236. package/dist/assets/{sizeCapture-X5ZJPWSS-ce6Hf1Mn.js → sizeCapture-X5ZJPWSS-BwnqWK01.js} +1 -1
  237. package/dist/assets/{skeleton-CHVfqr51.js → skeleton-BsZq3Vmq.js} +1 -1
  238. package/dist/assets/smalltalk-BOqQhpHI.js +1 -0
  239. package/dist/assets/{snippets-panel-V4x4wLMQ.js → snippets-panel-cYP0GMUf.js} +1 -1
  240. package/dist/assets/sparql-edyZVkfL.js +1 -0
  241. package/dist/assets/spec-C_psFYbu.js +1 -0
  242. package/dist/assets/{src-Be2gSjc_.js → src-BydIU0H9.js} +1 -1
  243. package/dist/assets/{state-m2zUPztG.js → state-DJon00Ew.js} +1 -1
  244. package/dist/assets/{state-C7arWhwL.js → state-Dc5AjWPq.js} +2 -2
  245. package/dist/assets/{stateDiagram-OKZ733FA-b4p2-xPQ.js → stateDiagram-OKZ733FA-CKgejYo0.js} +1 -1
  246. package/dist/assets/stateDiagram-v2-UEYNNEHI-DGOHmIHi.js +1 -0
  247. package/dist/assets/stylus-D7JxHbZj.js +1 -0
  248. package/dist/assets/swift-BVf4glc7.js +1 -0
  249. package/dist/assets/{swimlanes-SLNWSIFB-BU8BFEOR.js → swimlanes-SLNWSIFB-CaRk1UjW.js} +2 -2
  250. package/dist/assets/swimlanesDiagram-ULZ7WXOC-B3waQOQb.js +8 -0
  251. package/dist/assets/tcl-Dj0fCfAi.js +1 -0
  252. package/dist/assets/textile-C2t_E40o.js +1 -0
  253. package/dist/assets/{timeline-definition-Z64GVDOM-D1kTYo17.js → timeline-definition-Z64GVDOM-eczfm7Uw.js} +1 -1
  254. package/dist/assets/toml-DaFUQW6l.js +1 -0
  255. package/dist/assets/{tracing-Cmwuiwj9.js → tracing-dGSNt8Nm.js} +1 -1
  256. package/dist/assets/{tracing-panel-CCXeYfOu.js → tracing-panel-CQCgx3e4.js} +2 -2
  257. package/dist/assets/{tree-actions-QMLf8Qhz.js → tree-actions-pW_UgP3m.js} +1 -1
  258. package/dist/assets/treeView-QDETBFTQ-CSvxEE7M.js +1 -0
  259. package/dist/assets/treemap-6X3UGDF4-CmweKwGi.js +1 -0
  260. package/dist/assets/troff-CYzkeKir.js +1 -0
  261. package/dist/assets/ttcn-CXYORWfg.js +1 -0
  262. package/dist/assets/ttcn-cfg-CaYX34bx.js +1 -0
  263. package/dist/assets/turtle-5bfs3D9s.js +1 -0
  264. package/dist/assets/{useCellActionButton-D8qyXNKv.js → useCellActionButton-De17Z9R3.js} +1 -1
  265. package/dist/assets/{useDeleteCell-Ctnxl8AT.js → useDeleteCell-BgFMPTmg.js} +1 -1
  266. package/dist/assets/{useDependencyPanelTab-CYSEZi6j.js → useDependencyPanelTab-w8VLtsK3.js} +1 -1
  267. package/dist/assets/{useNotebookActions-CxMrxNFT.js → useNotebookActions-BI53NQV3.js} +4 -4
  268. package/dist/assets/{useRunCells-DjQN3XYP.js → useRunCells-CAfRBo7h.js} +1 -1
  269. package/dist/assets/{useSplitCell-BG8Zd4lw.js → useSplitCell-N8Ohs-Pp.js} +1 -1
  270. package/dist/assets/{utils-Y4n-X10o.js → utils-Bp3MLwWq.js} +1 -1
  271. package/dist/assets/vb-CXQ5pSkV.js +1 -0
  272. package/dist/assets/vbscript-BZP_4BaN.js +1 -0
  273. package/dist/assets/{vega-component-1VoQOWvU.js → vega-component-DpKA6PEU.js} +1 -1
  274. package/dist/assets/{vega-embed-container-CH1lX0V6.js → vega-embed-container-D0V0wn9T.js} +1 -1
  275. package/dist/assets/velocity-BbHSi60j.js +1 -0
  276. package/dist/assets/{vennDiagram-T6HMQDX7-BhQR7L7x.js → vennDiagram-T6HMQDX7-BKrC4vk_.js} +1 -1
  277. package/dist/assets/verilog-Bw8NaRo-.js +1 -0
  278. package/dist/assets/vhdl-CkM1aKBX.js +1 -0
  279. package/dist/assets/wardley-OPB4EBWU-DKu5fTFq.js +1 -0
  280. package/dist/assets/{wardleyDiagram-T6FBY63Y-C6iZTOEK.js → wardleyDiagram-T6FBY63Y-BsBjXAQS.js} +1 -1
  281. package/dist/assets/webidl-C8MAcuKq.js +1 -0
  282. package/dist/assets/xquery-a81J2h4S.js +1 -0
  283. package/dist/assets/{xychartDiagram-ELKLHX3M-Hl9zZZJW.js → xychartDiagram-ELKLHX3M-i4ykddaR.js} +1 -1
  284. package/dist/assets/yacas-CjV2u_g7.js +1 -0
  285. package/dist/assets/z80-C0uVpBhe.js +1 -0
  286. package/dist/index.html +28 -28
  287. package/package.json +1 -1
  288. package/src/components/app-config/optional-features.test.ts +78 -0
  289. package/src/components/app-config/optional-features.tsx +33 -6
  290. package/src/components/data-table/__tests__/column_formatting.test.ts +7 -0
  291. package/src/components/data-table/charts/__tests__/schemas.test.ts +17 -2
  292. package/src/components/data-table/charts/chart-spec/types.ts +2 -0
  293. package/src/components/data-table/column-formatting/feature.ts +1 -0
  294. package/src/components/data-table/column-formatting/types.ts +1 -0
  295. package/src/components/data-table/column-summary/chart-spec-model.tsx +1 -0
  296. package/src/components/data-table/column-summary/column-summary.tsx +1 -0
  297. package/src/components/data-table/columns.tsx +4 -3
  298. package/src/components/datasets/__tests__/icons.test.ts +10 -2
  299. package/src/components/datasets/icons.tsx +4 -0
  300. package/src/components/datasources/__tests__/components.test.tsx +14 -1
  301. package/src/components/datasources/datasources.tsx +2 -40
  302. package/src/components/editor/chrome/panels/components.tsx +35 -0
  303. package/src/components/editor/chrome/panels/file-explorer-panel.tsx +10 -0
  304. package/src/components/editor/chrome/panels/session-panel.tsx +12 -4
  305. package/src/components/editor/connections/__tests__/quick-add-data-sources.test.tsx +2 -0
  306. package/src/components/editor/connections/add-connection-dialog.tsx +5 -1
  307. package/src/components/editor/connections/quick-add-data-sources.tsx +11 -7
  308. package/src/components/editor/connections/storage/__tests__/__snapshots__/as-code.test.ts.snap +43 -0
  309. package/src/components/editor/connections/storage/__tests__/as-code.test.ts +127 -0
  310. package/src/components/editor/connections/storage/add-storage-form.tsx +11 -1
  311. package/src/components/editor/connections/storage/as-code.ts +30 -1
  312. package/src/components/editor/connections/storage/schemas.ts +63 -0
  313. package/src/core/codemirror/code-lens/__tests__/popover.test.ts +13 -0
  314. package/src/core/codemirror/code-lens/popover.tsx +11 -5
  315. package/src/core/codemirror/language/languages/sql/__tests__/renderers.test.tsx +15 -4
  316. package/src/core/codemirror/language/languages/sql/renderers.tsx +1 -0
  317. package/src/core/datasets/__tests__/data-source-discovery.test.ts +277 -0
  318. package/src/core/datasets/data-source-connections.ts +36 -0
  319. package/src/core/datasets/data-source-discovery.ts +92 -0
  320. package/src/core/kernel/messages.ts +1 -0
  321. package/src/core/websocket/useMarimoKernelConnection.tsx +11 -3
  322. package/src/hooks/useDataSourceDiscovery.ts +50 -9
  323. package/src/plugins/impl/MatrixPlugin.tsx +256 -35
  324. package/src/plugins/impl/__tests__/DataEditorPlugin.test.ts +13 -1
  325. package/src/plugins/impl/__tests__/MatrixPlugin.test.tsx +540 -3
  326. package/src/plugins/impl/data-editor/glide-data-editor.tsx +1 -0
  327. package/src/plugins/impl/data-editor/glide-utils.ts +1 -0
  328. package/src/plugins/impl/data-frames/__tests__/schema.test.ts +9 -1
  329. package/src/plugins/impl/data-frames/utils/__tests__/operators.test.ts +8 -0
  330. package/src/plugins/impl/data-frames/utils/operators.ts +1 -1
  331. package/src/plugins/impl/matplotlib/__tests__/matplotlib-renderer.test.ts +184 -24
  332. package/src/plugins/impl/matplotlib/matplotlib-renderer.ts +40 -7
  333. package/src/plugins/impl/vega/__tests__/vega.test.ts +22 -4
  334. package/src/plugins/impl/vega/utils.ts +3 -0
  335. package/dist/assets/LazyAnyLanguageCodeMirror-DUvRReKp.js +0 -2
  336. package/dist/assets/add-connection-dialog-DHyonb9T.js +0 -178
  337. package/dist/assets/apl-B-7blH-b.js +0 -1
  338. package/dist/assets/app-config-button-DnmQED8O.js +0 -1
  339. package/dist/assets/architecture-TIHT7OUA-YhortkiJ.js +0 -1
  340. package/dist/assets/asciiarmor-D3K8amZ9.js +0 -1
  341. package/dist/assets/asn1-UGGn98tp.js +0 -1
  342. package/dist/assets/brainfuck-B4y4U3tg.js +0 -1
  343. package/dist/assets/cell-link-WDIIwzUn.js +0 -1
  344. package/dist/assets/channel-B8YARzTa.js +0 -1
  345. package/dist/assets/classDiagram-JCYQIIEL-CjNLIEON.js +0 -1
  346. package/dist/assets/classDiagram-v2-OCEON4UE-DB1cPPS3.js +0 -1
  347. package/dist/assets/clojure-BAZ-ejkG.js +0 -1
  348. package/dist/assets/cmake-jWn0xN9y.js +0 -1
  349. package/dist/assets/cobol-XqY9jaWP.js +0 -1
  350. package/dist/assets/coffeescript-DI1jfZHX.js +0 -1
  351. package/dist/assets/commonlisp-UKb01OlU.js +0 -1
  352. package/dist/assets/components-DVs9Yu7X.js +0 -1
  353. package/dist/assets/crystal-DOvjTBWA.js +0 -1
  354. package/dist/assets/cynefin-VYW2F7L2-Dob7zmDv.js +0 -1
  355. package/dist/assets/cypher-CLDhu2ae.js +0 -1
  356. package/dist/assets/d-C0ecUZk9.js +0 -1
  357. package/dist/assets/dependency-graph-panel-BsdBM_AS.js +0 -5
  358. package/dist/assets/diff-657cCCVc.js +0 -1
  359. package/dist/assets/dist-BbNJKBqf.js +0 -1
  360. package/dist/assets/dist-CJU3fYUR.js +0 -1
  361. package/dist/assets/dist-ClAayqDs.js +0 -1
  362. package/dist/assets/dist-Dk7PW1P8.js +0 -1
  363. package/dist/assets/dtd-DSiK7Qgi.js +0 -1
  364. package/dist/assets/dylan-07d5-7Q9.js +0 -1
  365. package/dist/assets/ecl-CSTUHiwq.js +0 -1
  366. package/dist/assets/eiffel-DR99GcsM.js +0 -1
  367. package/dist/assets/elm-Cmh0iW6J.js +0 -1
  368. package/dist/assets/erlang-CS9Yc6UC.js +0 -1
  369. package/dist/assets/eventmodeling-45OFAUF4-Dfz56MmV.js +0 -1
  370. package/dist/assets/factor-DjB27Lcf.js +0 -1
  371. package/dist/assets/file-explorer-panel-Brf39GIG.js +0 -37
  372. package/dist/assets/flowDiagram-UKHOOZJN-DuIOw7R3.js +0 -1
  373. package/dist/assets/forth-UwTUu7NY.js +0 -1
  374. package/dist/assets/fortran-cptiB4gJ.js +0 -1
  375. package/dist/assets/gas-ajMbd9Us.js +0 -1
  376. package/dist/assets/gherkin-ClYkalzE.js +0 -1
  377. package/dist/assets/gitGraph-TEB2WS4Q-DHatMnz3.js +0 -1
  378. package/dist/assets/groovy-BY-gt7AW.js +0 -1
  379. package/dist/assets/haskell-D1BeJ7SR.js +0 -1
  380. package/dist/assets/haxe-QOq5WFXx.js +0 -1
  381. package/dist/assets/idl-3-UcEGx7.js +0 -1
  382. package/dist/assets/index-CXJA6BU5.js +0 -38
  383. package/dist/assets/index-WoaGtlKd.css +0 -2
  384. package/dist/assets/info-DKCQHKI2-DL5sXjlh.js +0 -1
  385. package/dist/assets/infoDiagram-6WML65LV-w0LSkwW5.js +0 -2
  386. package/dist/assets/javascript-CorD44JN.js +0 -1
  387. package/dist/assets/julia-BYqTtTAl.js +0 -1
  388. package/dist/assets/katex-DWt0esek.js +0 -1
  389. package/dist/assets/livescript-qYgfNnNE.js +0 -1
  390. package/dist/assets/lua-BCqCjdfz.js +0 -1
  391. package/dist/assets/mathematica-XKwMfn0d.js +0 -1
  392. package/dist/assets/mbox-BnkeOnif.js +0 -1
  393. package/dist/assets/mirc-ipoElhai.js +0 -1
  394. package/dist/assets/mllike-DmouQ5Dp.js +0 -1
  395. package/dist/assets/modelica-BtmmVsUf.js +0 -1
  396. package/dist/assets/mscgen-BHZmHZgz.js +0 -1
  397. package/dist/assets/mumps-oKfoFTl_.js +0 -1
  398. package/dist/assets/nsis-DDOPnuAW.js +0 -1
  399. package/dist/assets/ntriples-Dsyl_sOF.js +0 -1
  400. package/dist/assets/octave-CI5RGMPa.js +0 -1
  401. package/dist/assets/oz-D01pKAWx.js +0 -1
  402. package/dist/assets/packet-7NZHBO7P-Btbo_lPa.js +0 -1
  403. package/dist/assets/panel-accordion-state-DaMmC7UV.js +0 -1
  404. package/dist/assets/panels-B2LHXcJf.js +0 -4
  405. package/dist/assets/pascal-DGXfnIFD.js +0 -1
  406. package/dist/assets/perl-gZ7qIkF-.js +0 -1
  407. package/dist/assets/pie-RZYD4A2V-DHlhKt-c.js +0 -1
  408. package/dist/assets/pig-Cb90ayl-.js +0 -1
  409. package/dist/assets/powershell-_YxddSL3.js +0 -1
  410. package/dist/assets/properties-sU50dmvt.js +0 -1
  411. package/dist/assets/protobuf-DFdF-yfo.js +0 -1
  412. package/dist/assets/pug-DwUB-C24.js +0 -1
  413. package/dist/assets/puppet-DtKzwiZ6.js +0 -1
  414. package/dist/assets/python-BMLOKYmk.js +0 -1
  415. package/dist/assets/q-BF1zXMdP.js +0 -1
  416. package/dist/assets/r-BQiKhVSI.js +0 -1
  417. package/dist/assets/radar-I7S5WNFK-DZTiwd45.js +0 -1
  418. package/dist/assets/railroad-3IZDKUUU-DxAKHi3X.js +0 -1
  419. package/dist/assets/railroad-abnf-AHOZXSZD-DgPW-bTs.js +0 -1
  420. package/dist/assets/railroad-ebnf-EBAXGLYW-6hsaKhfa.js +0 -1
  421. package/dist/assets/railroad-peg-LSFZ7HO6-Sj3gnwID.js +0 -1
  422. package/dist/assets/rpm-v7UTuaHo.js +0 -1
  423. package/dist/assets/ruby-Cw43FpG3.js +0 -1
  424. package/dist/assets/sas-BIKscqlp.js +0 -1
  425. package/dist/assets/scheme-CGic3hSV.js +0 -1
  426. package/dist/assets/session-panel-CidCOM4_.js +0 -1
  427. package/dist/assets/shell-DAh545tm.js +0 -1
  428. package/dist/assets/sieve-bGkng63-.js +0 -1
  429. package/dist/assets/smalltalk-fIw53lm8.js +0 -1
  430. package/dist/assets/sparql-CHbJrAY_.js +0 -1
  431. package/dist/assets/spec-NeCHOv2Z.js +0 -1
  432. package/dist/assets/stateDiagram-v2-UEYNNEHI-DVggkZEP.js +0 -1
  433. package/dist/assets/stylus-3Q5WfXqT.js +0 -1
  434. package/dist/assets/swift-MKxc2knl.js +0 -1
  435. package/dist/assets/swimlanesDiagram-ULZ7WXOC-Dl8Izbnv.js +0 -8
  436. package/dist/assets/tcl-D3fKhQc_.js +0 -1
  437. package/dist/assets/textile-Bi_LEJQ3.js +0 -1
  438. package/dist/assets/toml-Dt-PBqwt.js +0 -1
  439. package/dist/assets/treeView-QDETBFTQ-DI-AuAry.js +0 -1
  440. package/dist/assets/treemap-6X3UGDF4-BikstUU5.js +0 -1
  441. package/dist/assets/troff-BSU-rxoD.js +0 -1
  442. package/dist/assets/ttcn-BmLjonVM.js +0 -1
  443. package/dist/assets/ttcn-cfg-TPTcP0Eh.js +0 -1
  444. package/dist/assets/turtle-HafmShQq.js +0 -1
  445. package/dist/assets/vb-CUif5uGR.js +0 -1
  446. package/dist/assets/vbscript-DWVPFl59.js +0 -1
  447. package/dist/assets/velocity-BJl8UzB4.js +0 -1
  448. package/dist/assets/verilog-B4LUPYXy.js +0 -1
  449. package/dist/assets/vhdl-C91h3ipk.js +0 -1
  450. package/dist/assets/wardley-OPB4EBWU-CeBjkYYY.js +0 -1
  451. package/dist/assets/webidl-DOay1zbU.js +0 -1
  452. package/dist/assets/xquery-Cez7jD_4.js +0 -1
  453. package/dist/assets/yacas-CSQEXB_S.js +0 -1
  454. package/dist/assets/z80-CJbYj7Wr.js +0 -1
  455. package/src/hooks/__tests__/useDataSourceDiscovery.test.ts +0 -80
  456. /package/dist/assets/{ImageComparisonComponent-BcnwhFjf.js → ImageComparisonComponent-f3_KuPvA.js} +0 -0
  457. /package/dist/assets/{Inputs-DrAa-p6i.js → Inputs-S6F4fq1S.js} +0 -0
  458. /package/dist/assets/{Plot-93LEWfvh.js → Plot-BKmsCw4V.js} +0 -0
  459. /package/dist/assets/{apl-CPlG1HX3.js → apl-HjCOpvY9.js} +0 -0
  460. /package/dist/assets/{asciiarmor-DV_pcocJ.js → asciiarmor-CZUdQ8YG.js} +0 -0
  461. /package/dist/assets/{asn1-DPxWcGvG.js → asn1-D9fbSxQp.js} +0 -0
  462. /package/dist/assets/{asterisk-1BK_fEUT.js → asterisk-GbGHf9GU.js} +0 -0
  463. /package/dist/assets/{brainfuck-CGDdBVNO.js → brainfuck-DoACnXtY.js} +0 -0
  464. /package/dist/assets/{chunk-KEIR6QF5-Dy1GNnFZ.js → chunk-KEIR6QF5-DALP8ow3.js} +0 -0
  465. /package/dist/assets/{chunk-Y2CYZVJY-Ci6ix4_L.js → chunk-Y2CYZVJY-BLNiTciS.js} +0 -0
  466. /package/dist/assets/{clear-button-D_bGby_-.js → clear-button-ChZ5WLVn.js} +0 -0
  467. /package/dist/assets/{click-outside-container-Ble4snjv.js → click-outside-container-B_JD95Fi.js} +0 -0
  468. /package/dist/assets/{clike-D91DrsBh.js → clike-BvT_OTqG.js} +0 -0
  469. /package/dist/assets/{clojure-B0eb_-2q.js → clojure-DObunWgq.js} +0 -0
  470. /package/dist/assets/{cmake-COzUvjiS.js → cmake-Bn1dmbG8.js} +0 -0
  471. /package/dist/assets/{cobol-DW4FSnmb.js → cobol-CJ0xj-s7.js} +0 -0
  472. /package/dist/assets/{coffeescript-CommR2mv.js → coffeescript-DSHpWjh8.js} +0 -0
  473. /package/dist/assets/{common-keywords-CL5lDC0w.js → common-keywords-DpBQRN1C.js} +0 -0
  474. /package/dist/assets/{commonlisp-FR_N9RJL.js → commonlisp-C8BmLRoV.js} +0 -0
  475. /package/dist/assets/{crystal-CAN7bz25.js → crystal-Ca8nJT--.js} +0 -0
  476. /package/dist/assets/{css-DmLg8a0m.js → css-CY56PGqI.js} +0 -0
  477. /package/dist/assets/{cypher-BzSJn05x.js → cypher-DkMgpwTD.js} +0 -0
  478. /package/dist/assets/{cytoscape.esm-DMX0DoYf.js → cytoscape.esm-ohuTJsWI.js} +0 -0
  479. /package/dist/assets/{d-UpmnByGo.js → d-De6gURe0.js} +0 -0
  480. /package/dist/assets/{diff-DRpitNo9.js → diff-D9jknSNL.js} +0 -0
  481. /package/dist/assets/{dist-CjgCY_Ws.js → dist-B8OryoSI.js} +0 -0
  482. /package/dist/assets/{dist-DcguuZEe.js → dist-B_Q1ayL4.js} +0 -0
  483. /package/dist/assets/{dist-BY5C0xw-.js → dist-BdgY02GB.js} +0 -0
  484. /package/dist/assets/{dist-5zzK1Bpl.js → dist-BpyRMlx3.js} +0 -0
  485. /package/dist/assets/{dist-Bp45OWJJ.js → dist-BvDn6jZn.js} +0 -0
  486. /package/dist/assets/{dist-CSEj3YUH.js → dist-C1_zNuc7.js} +0 -0
  487. /package/dist/assets/{dist-CYcHr3tv.js → dist-C3M1h1bY.js} +0 -0
  488. /package/dist/assets/{dist-iZqQ8eEZ.js → dist-CiELQ2ik.js} +0 -0
  489. /package/dist/assets/{dist-Op2xySIC.js → dist-CnESRnx2.js} +0 -0
  490. /package/dist/assets/{dist-SgSQKL07.js → dist-Cnb7x5X_.js} +0 -0
  491. /package/dist/assets/{dist-CqO2FBHV.js → dist-CtsSPT78.js} +0 -0
  492. /package/dist/assets/{dist-BQMAD-re.js → dist-DDuxOj5E.js} +0 -0
  493. /package/dist/assets/{dist-C3YC038-.js → dist-DXl-iyI_.js} +0 -0
  494. /package/dist/assets/{dist-VHnyClcl.js → dist-DcwGajoh.js} +0 -0
  495. /package/dist/assets/{dist-ChJa98Av.js → dist-M9OI1ywz.js} +0 -0
  496. /package/dist/assets/{dist-BTX2QySO.js → dist-oc6kOhWh.js} +0 -0
  497. /package/dist/assets/{dist-AhQW5KN1.js → dist-rcsCwDst.js} +0 -0
  498. /package/dist/assets/{dtd-CQV9N2ok.js → dtd-B5FJ4BXV.js} +0 -0
  499. /package/dist/assets/{duckdb-keywords-CKBoTxEb.js → duckdb-keywords-DrrKcwLz.js} +0 -0
  500. /package/dist/assets/{dylan-Bp98yT5y.js → dylan-zZheNs86.js} +0 -0
  501. /package/dist/assets/{ebnf-CviyCkP7.js → ebnf-DuKzoTsP.js} +0 -0
  502. /package/dist/assets/{ecl-BgtQ3zu5.js → ecl-BcK76Ow3.js} +0 -0
  503. /package/dist/assets/{eiffel-Cu14O7Gi.js → eiffel-KaaY88la.js} +0 -0
  504. /package/dist/assets/{elm-Dp1dn40k.js → elm-B7-LHWcm.js} +0 -0
  505. /package/dist/assets/{erlang-DdogJjdp.js → erlang-DaphDTvj.js} +0 -0
  506. /package/dist/assets/{esm-DbAcs2Px.js → esm-BKF5e2-i.js} +0 -0
  507. /package/dist/assets/{fcl-DjfeL5F6.js → fcl-DopXl_Cb.js} +0 -0
  508. /package/dist/assets/{forth-Dd0r86IP.js → forth-BKlt87ew.js} +0 -0
  509. /package/dist/assets/{fortran-4qvtlW4z.js → fortran-DDZOpuZf.js} +0 -0
  510. /package/dist/assets/{gallery-page-CtBVFIhS.js → gallery-page-4_c4sSjL.js} +0 -0
  511. /package/dist/assets/{gas-DqwqZHXy.js → gas-CDn7Y-Gk.js} +0 -0
  512. /package/dist/assets/{gherkin-DMxJEDh5.js → gherkin-eZ5FXLoA.js} +0 -0
  513. /package/dist/assets/{github-6F3RzPv3.js → github-CE-ZvKrv.js} +0 -0
  514. /package/dist/assets/{groovy-DA_MxBua.js → groovy-BwhPb7Fz.js} +0 -0
  515. /package/dist/assets/{haskell-B_hi8VEK.js → haskell-Dnk7SiND.js} +0 -0
  516. /package/dist/assets/{haxe-D-I6YeRN.js → haxe-lllox-eQ.js} +0 -0
  517. /package/dist/assets/{http-VleqgIZJ.js → http-BxcKXOao.js} +0 -0
  518. /package/dist/assets/{idl-CteRrHSs.js → idl-DgcPYEkx.js} +0 -0
  519. /package/dist/assets/{javascript-Cq9DsvSW.js → javascript-COkX3Xca.js} +0 -0
  520. /package/dist/assets/{julia-bHGj6eLp.js → julia-D-oyKrif.js} +0 -0
  521. /package/dist/assets/{katex-B9FkzyvX.js → katex-DX0AbnS9.js} +0 -0
  522. /package/dist/assets/{kiosk-mode-B8UhlOLw.js → kiosk-mode-CNguD0K4.js} +0 -0
  523. /package/dist/assets/{links-STGde2qx.js → links-CWv16njv.js} +0 -0
  524. /package/dist/assets/{livescript-C72YlTeO.js → livescript-D_iKnN6P.js} +0 -0
  525. /package/dist/assets/{loro_wasm_bg-DIEeF9jI.js → loro_wasm_bg-wiZiHqmd.js} +0 -0
  526. /package/dist/assets/{lua-DAtJrHXr.js → lua-DvA1dcWk.js} +0 -0
  527. /package/dist/assets/{marimo-icons-CW8-Txe-.js → marimo-icons-BT3Q9hP-.js} +0 -0
  528. /package/dist/assets/{mathematica-DGp7b8Lx.js → mathematica-BsU_wLgp.js} +0 -0
  529. /package/dist/assets/{mbox-C35KjfEV.js → mbox-C0XhbFpn.js} +0 -0
  530. /package/dist/assets/{mirc-BRCHEPv1.js → mirc-CHTyPhxQ.js} +0 -0
  531. /package/dist/assets/{mllike-D7ajla-U.js → mllike-CUPiTPoj.js} +0 -0
  532. /package/dist/assets/{modelica-0RGVL4ie.js → modelica-CY01YUSk.js} +0 -0
  533. /package/dist/assets/{mscgen-C7Ohs4Tl.js → mscgen-DrdJ4BfA.js} +0 -0
  534. /package/dist/assets/{mumps-Cgag5Xef.js → mumps-oDd7O1nq.js} +0 -0
  535. /package/dist/assets/{nginx-D7OKXoUe.js → nginx-BFZZWp0k.js} +0 -0
  536. /package/dist/assets/{node-sql-parser-DE2GpgS7.js → node-sql-parser-BAQ3SN57.js} +0 -0
  537. /package/dist/assets/{ntriples-oQv5c69K.js → ntriples-Kz6Omt8T.js} +0 -0
  538. /package/dist/assets/{octave-BMTXs4lo.js → octave-D4G4nAd-.js} +0 -0
  539. /package/dist/assets/{oz-CuHYwo8r.js → oz-BMPClN8a.js} +0 -0
  540. /package/dist/assets/{pascal-eFKoVV2p.js → pascal-PjzHq8gx.js} +0 -0
  541. /package/dist/assets/{perl-B1OqOW8w.js → perl-BJehkHc4.js} +0 -0
  542. /package/dist/assets/{pig-gIrBDx27.js → pig-BErUKXIE.js} +0 -0
  543. /package/dist/assets/{powershell-3fQF2XND.js → powershell-C9VPAjfT.js} +0 -0
  544. /package/dist/assets/{properties-D4HHpZmU.js → properties-C9_sS9KX.js} +0 -0
  545. /package/dist/assets/{protobuf-DFSTKR0L.js → protobuf-CTL_9hGv.js} +0 -0
  546. /package/dist/assets/{puppet-BAISgXk9.js → puppet-DiwkFvYr.js} +0 -0
  547. /package/dist/assets/{python-mPctBCbA.js → python-B6qWXHOF.js} +0 -0
  548. /package/dist/assets/{q-CYeV5Dbb.js → q-DK2HS4ce.js} +0 -0
  549. /package/dist/assets/{r-Ds4UrjIV.js → r-DaU8ID7q.js} +0 -0
  550. /package/dist/assets/{rough.esm-CR3HSVpq.js → rough.esm-DsKVbNkz.js} +0 -0
  551. /package/dist/assets/{rpm-DV5-r6dM.js → rpm-B1zWd_-L.js} +0 -0
  552. /package/dist/assets/{ruby-B9qrycrI.js → ruby-e8Zeo08a.js} +0 -0
  553. /package/dist/assets/{runs-B8nVipXz.js → runs-0Fl_whti.js} +0 -0
  554. /package/dist/assets/{sas-Cd7L1ZOe.js → sas-CtNe7N_s.js} +0 -0
  555. /package/dist/assets/{scheme-L6Kva-Kc.js → scheme-D7VUNgy0.js} +0 -0
  556. /package/dist/assets/{secrets-panel-CVQIJOsr.js → secrets-panel-C51QhQhQ.js} +0 -0
  557. /package/dist/assets/{shell-Ck42V1Kn.js → shell-95QiTNIY.js} +0 -0
  558. /package/dist/assets/{sieve-DfSJcUfS.js → sieve-4wk3Woa7.js} +0 -0
  559. /package/dist/assets/{simple-mode-CfoR0Lvg.js → simple-mode-C1B3ue4E.js} +0 -0
  560. /package/dist/assets/{smalltalk-CT418Iph.js → smalltalk-BFPyGpl7.js} +0 -0
  561. /package/dist/assets/{solr-CDPrSrj5.js → solr-BCnpA4mK.js} +0 -0
  562. /package/dist/assets/{sparql-BlJ_cLEt.js → sparql-BMyoR-t0.js} +0 -0
  563. /package/dist/assets/{spreadsheet-BsJYzkOI.js → spreadsheet-C39QEIvH.js} +0 -0
  564. /package/dist/assets/{sql-F2Gt8FSJ.js → sql-CE9Btgz4.js} +0 -0
  565. /package/dist/assets/{stylus-92qIiGm1.js → stylus-BbMWgEUg.js} +0 -0
  566. /package/dist/assets/{swift-gZzicbJu.js → swift-BCakwsWN.js} +0 -0
  567. /package/dist/assets/{swiper-component-LOm8fzBm.js → swiper-component-DpFUDvyR.js} +0 -0
  568. /package/dist/assets/{tcl-CtgoBYkk.js → tcl-Dupz7YXC.js} +0 -0
  569. /package/dist/assets/{terminal-Bo6pnmSU.js → terminal-RAduwztq.js} +0 -0
  570. /package/dist/assets/{textile-Du3RzJ2D.js → textile-CMQNVB0J.js} +0 -0
  571. /package/dist/assets/{tiddlywiki-BiVbsin5.js → tiddlywiki-CIp8hgce.js} +0 -0
  572. /package/dist/assets/{tiki-BjQr6gnj.js → tiki-C22wqq7_.js} +0 -0
  573. /package/dist/assets/{toml-HcF44TVB.js → toml-CDlujHqn.js} +0 -0
  574. /package/dist/assets/{troff-xbwT4huN.js → troff-Dxr_rPl0.js} +0 -0
  575. /package/dist/assets/{ttcn-cfg-jWDg1i50.js → ttcn-cfg-_MoagO29.js} +0 -0
  576. /package/dist/assets/{ttcn-phKysj_0.js → ttcn-iRE0hZ1i.js} +0 -0
  577. /package/dist/assets/{turtle-CPC48wcy.js → turtle-C00vzWJK.js} +0 -0
  578. /package/dist/assets/{types-C7hjolXC.js → types-l38AsXoI.js} +0 -0
  579. /package/dist/assets/{useInterval-CTStcSBb.js → useInterval-WeprorQN.js} +0 -0
  580. /package/dist/assets/{vb-BTubZ2rB.js → vb-CkVClY4-.js} +0 -0
  581. /package/dist/assets/{vbscript-B52mDFWM.js → vbscript-BAyqwxih.js} +0 -0
  582. /package/dist/assets/{velocity-BO3M1iFD.js → velocity-DizPkX9R.js} +0 -0
  583. /package/dist/assets/{verilog-CBz90JJu.js → verilog-BHLL_Z-1.js} +0 -0
  584. /package/dist/assets/{vhdl-CeQ1lGlV.js → vhdl-kw8S8KSM.js} +0 -0
  585. /package/dist/assets/{web-vitals-BaWpTOd5.js → web-vitals-DEQqQ7mh.js} +0 -0
  586. /package/dist/assets/{webidl-CRtF5pmu.js → webidl-BArrMnhe.js} +0 -0
  587. /package/dist/assets/{ws-CNqquaud.js → ws-B3l5rS71.js} +0 -0
  588. /package/dist/assets/{xquery-CFnbrHav.js → xquery-BVt_izxN.js} +0 -0
  589. /package/dist/assets/{yacas-KIC_JO6M.js → yacas-BFgb66eo.js} +0 -0
  590. /package/dist/assets/{z80-kGpw5_me.js → z80-CLywz-dK.js} +0 -0
@@ -177,7 +177,7 @@ describe("MatrixPlugin", () => {
177
177
 
178
178
  it("validates with zod schema", () => {
179
179
  const plugin = new MatrixPlugin();
180
- const result = plugin.validator.safeParse({
180
+ const payload = {
181
181
  initialValue: [
182
182
  [1, 2],
183
183
  [3, 4],
@@ -198,8 +198,12 @@ describe("MatrixPlugin", () => {
198
198
  [false, false],
199
199
  [false, false],
200
200
  ],
201
- });
202
- expect(result.success).toBe(true);
201
+ };
202
+ // debounce is optional and defaults off
203
+ expect(plugin.validator.parse(payload).debounce).toBe(false);
204
+ expect(plugin.validator.safeParse({ ...payload, step: null }).success).toBe(
205
+ false,
206
+ );
203
207
  });
204
208
 
205
209
  it("displays values in scientific notation", () => {
@@ -297,6 +301,26 @@ describe("MatrixPlugin", () => {
297
301
  ]);
298
302
  });
299
303
 
304
+ it("ArrowUp preserves significant digits in large cell values", () => {
305
+ const plugin = new MatrixPlugin();
306
+ const setValueMock = vi.fn();
307
+ const props = makeProps({
308
+ value: [
309
+ [1_234_567_890_123, 0],
310
+ [0, 0],
311
+ ],
312
+ setValue: setValueMock,
313
+ });
314
+ const { getByTestId } = render(plugin.render(props));
315
+
316
+ fireEvent.keyDown(getByTestId("matrix-cell-0-0"), { key: "ArrowUp" });
317
+
318
+ expect(setValueMock).toHaveBeenCalledWith([
319
+ [1_234_567_890_124, 0],
320
+ [0, 0],
321
+ ]);
322
+ });
323
+
300
324
  it("ArrowDown decrements cell value", () => {
301
325
  const plugin = new MatrixPlugin();
302
326
  const setValueMock = vi.fn();
@@ -317,6 +341,45 @@ describe("MatrixPlugin", () => {
317
341
  ]);
318
342
  });
319
343
 
344
+ it("ArrowRight and ArrowLeft step like ArrowUp and ArrowDown", () => {
345
+ const plugin = new MatrixPlugin();
346
+ const setValueMock = vi.fn();
347
+ const props = makeProps({
348
+ value: [
349
+ [5, 0],
350
+ [0, 0],
351
+ ],
352
+ setValue: setValueMock,
353
+ });
354
+ const { getByTestId } = render(plugin.render(props));
355
+ const cell = getByTestId("matrix-cell-0-0");
356
+
357
+ fireEvent.keyDown(cell, { key: "ArrowRight" });
358
+ expect(setValueMock).toHaveBeenLastCalledWith([
359
+ [6, 0],
360
+ [0, 0],
361
+ ]);
362
+
363
+ // Modifier scaling applies to the horizontal pair too: 5 - 10x step
364
+ fireEvent.keyDown(cell, { key: "ArrowLeft", shiftKey: true });
365
+ expect(setValueMock).toHaveBeenLastCalledWith([
366
+ [-5, 0],
367
+ [0, 0],
368
+ ]);
369
+ });
370
+
371
+ it("clicking a cell focuses it for keyboard stepping", () => {
372
+ const plugin = new MatrixPlugin();
373
+ const props = makeProps();
374
+ const { getByTestId } = render(plugin.render(props));
375
+ const cell = getByTestId("matrix-cell-0-0");
376
+
377
+ fireEvent.pointerDown(cell, { clientX: 100, pointerId: 1 });
378
+ fireEvent.pointerUp(getByTestId("marimo-plugin-matrix"));
379
+
380
+ expect(document.activeElement).toBe(cell);
381
+ });
382
+
320
383
  it("disabled cells ignore pointer and keyboard input", () => {
321
384
  const plugin = new MatrixPlugin();
322
385
  const setValueMock = vi.fn();
@@ -386,6 +449,38 @@ describe("MatrixPlugin", () => {
386
449
  ]);
387
450
  });
388
451
 
452
+ it("with debounce, defers setValue until the drag ends", () => {
453
+ const plugin = new MatrixPlugin();
454
+ const setValueMock = vi.fn();
455
+ const props = makeProps({
456
+ value: [
457
+ [0, 0],
458
+ [0, 0],
459
+ ],
460
+ setValue: setValueMock,
461
+ data: {
462
+ ...makeProps().data,
463
+ debounce: true,
464
+ },
465
+ });
466
+ const { getByTestId } = render(plugin.render(props));
467
+ const cell = getByTestId("matrix-cell-0-0");
468
+ const container = getByTestId("marimo-plugin-matrix");
469
+
470
+ fireEvent.pointerDown(cell, { clientX: 100, pointerId: 1 });
471
+ fireEvent.pointerMove(container, { clientX: 130 });
472
+
473
+ // The dragged value renders locally but is not emitted yet.
474
+ expect(cell.textContent).toBe("3.0");
475
+ expect(setValueMock).not.toHaveBeenCalled();
476
+
477
+ fireEvent.pointerUp(container);
478
+ expect(setValueMock).toHaveBeenCalledExactlyOnceWith([
479
+ [3, 0],
480
+ [0, 0],
481
+ ]);
482
+ });
483
+
389
484
  it("sets aria attributes on cells", () => {
390
485
  const plugin = new MatrixPlugin();
391
486
  const props = makeProps({
@@ -413,3 +508,445 @@ describe("MatrixPlugin", () => {
413
508
  expect(cell.getAttribute("tabindex")).toBe("0");
414
509
  });
415
510
  });
511
+
512
+ describe("MatrixPlugin cell editing", () => {
513
+ it("double-click opens an editor prefilled with the exact value", () => {
514
+ const plugin = new MatrixPlugin();
515
+ const props = makeProps();
516
+ const { getByTestId } = render(plugin.render(props));
517
+
518
+ fireEvent.doubleClick(getByTestId("matrix-cell-0-0"));
519
+
520
+ const input = getByTestId("matrix-input-0-0") as HTMLInputElement;
521
+ expect(input.value).toBe("1");
522
+ });
523
+
524
+ it("commits a typed scientific-notation value on Enter", () => {
525
+ const plugin = new MatrixPlugin();
526
+ const setValueMock = vi.fn();
527
+ const props = makeProps({ setValue: setValueMock });
528
+ const { getByTestId, queryByTestId } = render(plugin.render(props));
529
+
530
+ fireEvent.doubleClick(getByTestId("matrix-cell-0-0"));
531
+ const input = getByTestId("matrix-input-0-0");
532
+ fireEvent.change(input, { target: { value: "2.32e7" } });
533
+ fireEvent.keyDown(input, { key: "Enter" });
534
+
535
+ // Exactly once: the blur fired while refocusing the cell must not
536
+ // commit a second time.
537
+ expect(setValueMock).toHaveBeenCalledExactlyOnceWith([
538
+ [23_200_000, 2],
539
+ [3, 4],
540
+ ]);
541
+ expect(queryByTestId("matrix-input-0-0")).toBeNull();
542
+ });
543
+
544
+ it("does not snap typed values to step", () => {
545
+ const plugin = new MatrixPlugin();
546
+ const setValueMock = vi.fn();
547
+ const props = makeProps({ setValue: setValueMock });
548
+ const { getByTestId } = render(plugin.render(props));
549
+
550
+ fireEvent.doubleClick(getByTestId("matrix-cell-0-0"));
551
+ const input = getByTestId("matrix-input-0-0");
552
+ fireEvent.change(input, { target: { value: "2.5" } });
553
+ fireEvent.keyDown(input, { key: "Enter" });
554
+
555
+ // step is 1, but the typed value is exact
556
+ expect(setValueMock).toHaveBeenCalledWith([
557
+ [2.5, 2],
558
+ [3, 4],
559
+ ]);
560
+ });
561
+
562
+ it("commits on blur", () => {
563
+ const plugin = new MatrixPlugin();
564
+ const setValueMock = vi.fn();
565
+ const props = makeProps({ setValue: setValueMock });
566
+ const { getByTestId, queryByTestId } = render(plugin.render(props));
567
+
568
+ fireEvent.doubleClick(getByTestId("matrix-cell-0-0"));
569
+ const input = getByTestId("matrix-input-0-0");
570
+ fireEvent.change(input, { target: { value: "42" } });
571
+ fireEvent.blur(input);
572
+
573
+ expect(setValueMock).toHaveBeenCalledWith([
574
+ [42, 2],
575
+ [3, 4],
576
+ ]);
577
+ expect(queryByTestId("matrix-input-0-0")).toBeNull();
578
+ });
579
+
580
+ it("Escape cancels without committing", () => {
581
+ const plugin = new MatrixPlugin();
582
+ const setValueMock = vi.fn();
583
+ const props = makeProps({ setValue: setValueMock });
584
+ const { getByTestId, queryByTestId } = render(plugin.render(props));
585
+
586
+ fireEvent.doubleClick(getByTestId("matrix-cell-0-0"));
587
+ const input = getByTestId("matrix-input-0-0");
588
+ fireEvent.change(input, { target: { value: "42" } });
589
+ fireEvent.keyDown(input, { key: "Escape" });
590
+
591
+ expect(setValueMock).not.toHaveBeenCalled();
592
+ expect(queryByTestId("matrix-input-0-0")).toBeNull();
593
+ });
594
+
595
+ it("discards invalid input and closes the editor", () => {
596
+ const plugin = new MatrixPlugin();
597
+ const setValueMock = vi.fn();
598
+ const props = makeProps({ setValue: setValueMock });
599
+ const { getByTestId, queryByTestId } = render(plugin.render(props));
600
+
601
+ fireEvent.doubleClick(getByTestId("matrix-cell-0-0"));
602
+ const input = getByTestId("matrix-input-0-0");
603
+ fireEvent.change(input, { target: { value: "abc" } });
604
+ fireEvent.keyDown(input, { key: "Enter" });
605
+
606
+ expect(setValueMock).not.toHaveBeenCalled();
607
+ expect(queryByTestId("matrix-input-0-0")).toBeNull();
608
+ });
609
+
610
+ it("clamps typed values to bounds", () => {
611
+ const plugin = new MatrixPlugin();
612
+ const setValueMock = vi.fn();
613
+ const props = makeProps({
614
+ setValue: setValueMock,
615
+ data: {
616
+ ...makeProps().data,
617
+ maxValue: [
618
+ [10, 10],
619
+ [10, 10],
620
+ ],
621
+ },
622
+ });
623
+ const { getByTestId } = render(plugin.render(props));
624
+
625
+ fireEvent.doubleClick(getByTestId("matrix-cell-0-0"));
626
+ const input = getByTestId("matrix-input-0-0");
627
+ fireEvent.change(input, { target: { value: "50" } });
628
+ fireEvent.keyDown(input, { key: "Enter" });
629
+
630
+ expect(setValueMock).toHaveBeenCalledWith([
631
+ [10, 2],
632
+ [3, 4],
633
+ ]);
634
+ });
635
+
636
+ it("mirrors typed values in symmetric mode", () => {
637
+ const plugin = new MatrixPlugin();
638
+ const setValueMock = vi.fn();
639
+ const props = makeProps({
640
+ value: [
641
+ [0, 0],
642
+ [0, 0],
643
+ ],
644
+ setValue: setValueMock,
645
+ data: {
646
+ ...makeProps().data,
647
+ symmetric: true,
648
+ },
649
+ });
650
+ const { getByTestId } = render(plugin.render(props));
651
+
652
+ fireEvent.doubleClick(getByTestId("matrix-cell-0-1"));
653
+ const input = getByTestId("matrix-input-0-1");
654
+ fireEvent.change(input, { target: { value: "7" } });
655
+ fireEvent.keyDown(input, { key: "Enter" });
656
+
657
+ expect(setValueMock).toHaveBeenCalledWith([
658
+ [0, 7],
659
+ [7, 0],
660
+ ]);
661
+ });
662
+
663
+ it("keeps the symmetric mirror within the transpose cell's bounds", () => {
664
+ // Asymmetric per-cell bounds on a symmetric matrix: [0][1] allows up to
665
+ // 100, but its transpose [1][0] is capped at 5. Editing [0][1] must not
666
+ // smuggle an out-of-bounds value into the mirror, and the pair must stay
667
+ // equal — so the shared value is clamped to the intersection (max 5).
668
+ const plugin = new MatrixPlugin();
669
+ const setValueMock = vi.fn();
670
+ const props = makeProps({
671
+ value: [
672
+ [0, 0],
673
+ [0, 0],
674
+ ],
675
+ setValue: setValueMock,
676
+ data: {
677
+ ...makeProps().data,
678
+ symmetric: true,
679
+ maxValue: [
680
+ [100, 100],
681
+ [5, 100],
682
+ ],
683
+ },
684
+ });
685
+ const { getByTestId } = render(plugin.render(props));
686
+
687
+ fireEvent.doubleClick(getByTestId("matrix-cell-0-1"));
688
+ const input = getByTestId("matrix-input-0-1");
689
+ fireEvent.change(input, { target: { value: "7" } });
690
+ fireEvent.keyDown(input, { key: "Enter" });
691
+
692
+ expect(setValueMock).toHaveBeenCalledWith([
693
+ [0, 5],
694
+ [5, 0],
695
+ ]);
696
+ });
697
+
698
+ it("emits nothing when clamping leaves the value unchanged", () => {
699
+ // Already at the transpose's cap of 5: dragging or typing past it must
700
+ // not fire setValue with an identical matrix.
701
+ const plugin = new MatrixPlugin();
702
+ const setValueMock = vi.fn();
703
+ const props = makeProps({
704
+ value: [
705
+ [0, 5],
706
+ [5, 0],
707
+ ],
708
+ setValue: setValueMock,
709
+ data: {
710
+ ...makeProps().data,
711
+ symmetric: true,
712
+ maxValue: [
713
+ [100, 100],
714
+ [5, 100],
715
+ ],
716
+ },
717
+ });
718
+ const { getByTestId } = render(plugin.render(props));
719
+ const cell = getByTestId("matrix-cell-0-1");
720
+ const container = getByTestId("marimo-plugin-matrix");
721
+
722
+ fireEvent.pointerDown(cell, { clientX: 100, pointerId: 1 });
723
+ fireEvent.pointerMove(container, { clientX: 130 });
724
+ fireEvent.pointerUp(container);
725
+
726
+ fireEvent.doubleClick(cell);
727
+ const input = getByTestId("matrix-input-0-1");
728
+ fireEvent.change(input, { target: { value: "7" } });
729
+ fireEvent.keyDown(input, { key: "Enter" });
730
+
731
+ expect(setValueMock).not.toHaveBeenCalled();
732
+ });
733
+
734
+ it("Enter opens the editor from the keyboard", () => {
735
+ const plugin = new MatrixPlugin();
736
+ const props = makeProps();
737
+ const { getByTestId } = render(plugin.render(props));
738
+
739
+ fireEvent.keyDown(getByTestId("matrix-cell-0-0"), { key: "Enter" });
740
+
741
+ const input = getByTestId("matrix-input-0-0") as HTMLInputElement;
742
+ expect(input.value).toBe("1");
743
+ });
744
+
745
+ it("typing a digit starts editing seeded with that digit", () => {
746
+ const plugin = new MatrixPlugin();
747
+ const props = makeProps();
748
+ const { getByTestId } = render(plugin.render(props));
749
+
750
+ fireEvent.keyDown(getByTestId("matrix-cell-0-0"), { key: "5" });
751
+
752
+ const input = getByTestId("matrix-input-0-0") as HTMLInputElement;
753
+ expect(input.value).toBe("5");
754
+ });
755
+
756
+ it("does not open an editor on disabled cells", () => {
757
+ const plugin = new MatrixPlugin();
758
+ const props = makeProps({
759
+ data: {
760
+ ...makeProps().data,
761
+ disabled: [
762
+ [true, false],
763
+ [false, false],
764
+ ],
765
+ },
766
+ });
767
+ const { getByTestId, queryByTestId } = render(plugin.render(props));
768
+
769
+ fireEvent.doubleClick(getByTestId("matrix-cell-0-0"));
770
+ expect(queryByTestId("matrix-input-0-0")).toBeNull();
771
+
772
+ fireEvent.keyDown(getByTestId("matrix-cell-0-0"), { key: "Enter" });
773
+ expect(queryByTestId("matrix-input-0-0")).toBeNull();
774
+ });
775
+ });
776
+
777
+ describe("MatrixPlugin modifier scrubbing", () => {
778
+ it("shift+drag scrubs at 10x step", () => {
779
+ const plugin = new MatrixPlugin();
780
+ const setValueMock = vi.fn();
781
+ const props = makeProps({
782
+ value: [
783
+ [0, 0],
784
+ [0, 0],
785
+ ],
786
+ setValue: setValueMock,
787
+ });
788
+ const { getByTestId } = render(plugin.render(props));
789
+ const cell = getByTestId("matrix-cell-0-0");
790
+ const container = getByTestId("marimo-plugin-matrix");
791
+
792
+ fireEvent.pointerDown(cell, { clientX: 100, pointerId: 1, shiftKey: true });
793
+ fireEvent.pointerMove(container, { clientX: 130, shiftKey: true });
794
+ fireEvent.pointerUp(container);
795
+
796
+ expect(setValueMock).toHaveBeenCalledWith([
797
+ [30, 0],
798
+ [0, 0],
799
+ ]);
800
+ });
801
+
802
+ it("alt+drag scrubs at 0.1x step", () => {
803
+ const plugin = new MatrixPlugin();
804
+ const setValueMock = vi.fn();
805
+ const props = makeProps({
806
+ value: [
807
+ [0, 0],
808
+ [0, 0],
809
+ ],
810
+ setValue: setValueMock,
811
+ });
812
+ const { getByTestId } = render(plugin.render(props));
813
+ const cell = getByTestId("matrix-cell-0-0");
814
+ const container = getByTestId("marimo-plugin-matrix");
815
+
816
+ fireEvent.pointerDown(cell, { clientX: 100, pointerId: 1, altKey: true });
817
+ fireEvent.pointerMove(container, { clientX: 130, altKey: true });
818
+ fireEvent.pointerUp(container);
819
+
820
+ expect(setValueMock).toHaveBeenCalledWith([
821
+ [0.3, 0],
822
+ [0, 0],
823
+ ]);
824
+ });
825
+
826
+ it("pressing shift mid-drag rescales future movement without jumping", () => {
827
+ const plugin = new MatrixPlugin();
828
+ const setValueMock = vi.fn();
829
+ const props = makeProps({
830
+ value: [
831
+ [0, 0],
832
+ [0, 0],
833
+ ],
834
+ setValue: setValueMock,
835
+ });
836
+ const { getByTestId } = render(plugin.render(props));
837
+ const cell = getByTestId("matrix-cell-0-0");
838
+ const container = getByTestId("marimo-plugin-matrix");
839
+
840
+ fireEvent.pointerDown(cell, { clientX: 100, pointerId: 1 });
841
+ fireEvent.pointerMove(container, { clientX: 130 }); // +3
842
+ fireEvent.pointerMove(container, { clientX: 130, shiftKey: true }); // rebase
843
+ fireEvent.pointerMove(container, { clientX: 160, shiftKey: true }); // +30
844
+ fireEvent.pointerUp(container);
845
+
846
+ expect(setValueMock).toHaveBeenLastCalledWith([
847
+ [33, 0],
848
+ [0, 0],
849
+ ]);
850
+ });
851
+
852
+ it("shift+ArrowUp increments by 10x step", () => {
853
+ const plugin = new MatrixPlugin();
854
+ const setValueMock = vi.fn();
855
+ const props = makeProps({
856
+ value: [
857
+ [5, 0],
858
+ [0, 0],
859
+ ],
860
+ setValue: setValueMock,
861
+ });
862
+ const { getByTestId } = render(plugin.render(props));
863
+
864
+ fireEvent.keyDown(getByTestId("matrix-cell-0-0"), {
865
+ key: "ArrowUp",
866
+ shiftKey: true,
867
+ });
868
+
869
+ expect(setValueMock).toHaveBeenCalledWith([
870
+ [15, 0],
871
+ [0, 0],
872
+ ]);
873
+ });
874
+
875
+ it("alt+ArrowDown decrements by 0.1x step", () => {
876
+ const plugin = new MatrixPlugin();
877
+ const setValueMock = vi.fn();
878
+ const props = makeProps({
879
+ value: [
880
+ [5, 0],
881
+ [0, 0],
882
+ ],
883
+ setValue: setValueMock,
884
+ });
885
+ const { getByTestId } = render(plugin.render(props));
886
+
887
+ fireEvent.keyDown(getByTestId("matrix-cell-0-0"), {
888
+ key: "ArrowDown",
889
+ altKey: true,
890
+ });
891
+
892
+ expect(setValueMock).toHaveBeenCalledWith([
893
+ [4.9, 0],
894
+ [0, 0],
895
+ ]);
896
+ });
897
+
898
+ it("keeps tiny step values instead of rounding them to zero", () => {
899
+ // 2e-14 sits below the absolute noise threshold for values of ordinary
900
+ // magnitude; the tolerance must scale with the step to preserve it.
901
+ const plugin = new MatrixPlugin();
902
+ const setValueMock = vi.fn();
903
+ const props = makeProps({
904
+ value: [
905
+ [0, 0],
906
+ [0, 0],
907
+ ],
908
+ setValue: setValueMock,
909
+ data: {
910
+ ...makeProps().data,
911
+ step: [
912
+ [2e-14, 1],
913
+ [1, 1],
914
+ ],
915
+ },
916
+ });
917
+ const { getByTestId } = render(plugin.render(props));
918
+
919
+ fireEvent.keyDown(getByTestId("matrix-cell-0-0"), { key: "ArrowUp" });
920
+
921
+ expect(setValueMock).toHaveBeenCalledWith([
922
+ [2e-14, 0],
923
+ [0, 0],
924
+ ]);
925
+ });
926
+
927
+ it("PageUp and PageDown step by 10x", () => {
928
+ const plugin = new MatrixPlugin();
929
+ const setValueMock = vi.fn();
930
+ const props = makeProps({
931
+ value: [
932
+ [5, 0],
933
+ [0, 0],
934
+ ],
935
+ setValue: setValueMock,
936
+ });
937
+ const { getByTestId } = render(plugin.render(props));
938
+ const cell = getByTestId("matrix-cell-0-0");
939
+
940
+ fireEvent.keyDown(cell, { key: "PageUp" });
941
+ expect(setValueMock).toHaveBeenCalledWith([
942
+ [15, 0],
943
+ [0, 0],
944
+ ]);
945
+
946
+ fireEvent.keyDown(cell, { key: "PageDown" });
947
+ expect(setValueMock).toHaveBeenCalledWith([
948
+ [-5, 0],
949
+ [0, 0],
950
+ ]);
951
+ });
952
+ });
@@ -390,6 +390,7 @@ export const GlideDataEditor = <T,>({
390
390
  // TODO: Handle specific types
391
391
  return [column.title, new Date()];
392
392
  case "string":
393
+ case "geometry":
393
394
  case "unknown":
394
395
  return [column.title, ""];
395
396
  default:
@@ -43,6 +43,7 @@ export function getColumnHeaderIcon(fieldType: DataType): GridColumnIcon {
43
43
  return GridColumnIcon.HeaderDate;
44
44
  case "time":
45
45
  return GridColumnIcon.HeaderTime;
46
+ case "geometry":
46
47
  case "unknown":
47
48
  return GridColumnIcon.HeaderString;
48
49
  default:
@@ -18,7 +18,7 @@ describe("columnToFieldTypesSchema", () => {
18
18
 
19
19
  it("normalizes an unrecognized field type without discarding other fields", () => {
20
20
  const result = columnToFieldTypesSchema.parse([
21
- ["geom", ["geometry", "geometry"]],
21
+ ["geom", ["bogus_type", "geometry"]],
22
22
  ["label", ["string", "object"]],
23
23
  ]);
24
24
 
@@ -27,4 +27,12 @@ describe("columnToFieldTypesSchema", () => {
27
27
  ["label", ["string", "object"]],
28
28
  ]);
29
29
  });
30
+
31
+ it("keeps the geometry field type", () => {
32
+ const result = columnToFieldTypesSchema.parse([
33
+ ["geom", ["geometry", "geometry"]],
34
+ ]);
35
+
36
+ expect(result).toEqual([["geom", ["geometry", "geometry"]]]);
37
+ });
30
38
  });
@@ -60,6 +60,10 @@ describe("getOperatorForDtype", () => {
60
60
  it("should return empty array for unknown dtype", () => {
61
61
  expect(getOperatorForDtype("unknown")).toEqual([]);
62
62
  });
63
+
64
+ it("should return no operators for geometry", () => {
65
+ expect(getOperatorForDtype("geometry")).toEqual([]);
66
+ });
63
67
  });
64
68
 
65
69
  describe("getSchemaForOperator", () => {
@@ -87,6 +91,10 @@ describe("getSchemaForOperator", () => {
87
91
  expect(getSchemaForOperator("unknown", "==")).toEqual([]);
88
92
  expect(getSchemaForOperator("int", "unknown")).toEqual([]);
89
93
  });
94
+
95
+ it("should return no operand schema for geometry", () => {
96
+ expect(getSchemaForOperator("geometry", "==")).toEqual([]);
97
+ });
90
98
  });
91
99
 
92
100
  describe("isConditionValueValid", () => {
@@ -76,7 +76,7 @@ export const ALL_OPERATORS = {
76
76
 
77
77
  export type OperatorType = keyof typeof ALL_OPERATORS;
78
78
 
79
- function numpyTypeToDataType(type: string): DataType {
79
+ function numpyTypeToDataType(type: string): Exclude<DataType, "geometry"> {
80
80
  if (!type) {
81
81
  return "unknown";
82
82
  }