@marimo-team/islands 0.16.5 → 0.17.0

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 (549) hide show
  1. package/dist/{ConnectedDataExplorerComponent-D96i9G-X.js → ConnectedDataExplorerComponent-DJEUH6Bb.js} +78 -100
  2. package/dist/{_baseIsEqual-oN7pRNcM.js → _baseIsEqual-CN4oFUZ4.js} +20 -20
  3. package/dist/{_basePickBy-CYvzhRjy.js → _basePickBy-CzSvE_-f.js} +3 -3
  4. package/dist/{_baseProperty-DGUdIBuu.js → _baseProperty-DbbUiyUD.js} +5 -5
  5. package/dist/{_baseUniq-B5gfSl8S.js → _baseUniq-DwoC-LVO.js} +4 -4
  6. package/dist/any-language-editor-CEXn1vFs.js +156 -0
  7. package/dist/apl-DuVfHsPc.js +4 -0
  8. package/dist/architecture-O4VJ6CD3-lp-opOaL.js +21 -0
  9. package/dist/{architectureDiagram-W76B3OCA-DkEhipkW.js → architectureDiagram-W76B3OCA-CoBORy6u.js} +34 -34
  10. package/dist/asciiarmor-qIVWsi4F.js +4 -0
  11. package/dist/asn1-BjPqARr7.js +4 -0
  12. package/dist/assets/__vite-browser-external-lX-sn9m2.js +1 -0
  13. package/dist/assets/worker-vPn7gxWj.js +54 -0
  14. package/dist/{blockDiagram-QIGZ2CNN-DZOqLMYa.js → blockDiagram-QIGZ2CNN-0yzoLIar.js} +75 -86
  15. package/dist/brainfuck-DPGTVfkE.js +4 -0
  16. package/dist/{button-CEcjneWG.js → button-DcnBVpVa.js} +11 -14
  17. package/dist/{c4Diagram-FPNF74CW-DVaR7c9q.js → c4Diagram-FPNF74CW-CKsIA_DD.js} +27 -51
  18. package/dist/{channel-Uh0KpgGW.js → channel-3LVvQZcD.js} +1 -1
  19. package/dist/{check-BK9zDfQk.js → check-D7ifz5op.js} +1 -1
  20. package/dist/{chunk-3AY6CYHV-Dk2R2-S1.js → chunk-3AY6CYHV-B2C-aVc3.js} +35 -35
  21. package/dist/{chunk-4BX2VUAB-CqO6zUIz.js → chunk-4BX2VUAB-DEd4VI9L.js} +1 -1
  22. package/dist/{chunk-4KMFLZZN-CloTfTwP.js → chunk-4KMFLZZN-DnvP3O4K.js} +216 -325
  23. package/dist/{chunk-55IACEB6-I0rmqTua.js → chunk-55IACEB6-BcCzwOOl.js} +1 -1
  24. package/dist/{chunk-6OXUPJBA-BuROSTmo.js → chunk-6OXUPJBA-eNAAfJ3Q.js} +7 -7
  25. package/dist/{chunk-7GE3RBXV-B1-tsIPP.js → chunk-7GE3RBXV-CSAeQvLz.js} +1 -1
  26. package/dist/{chunk-ABZYJK2D-CLlso8tj.js → chunk-ABZYJK2D-CZcb_1iM.js} +16 -20
  27. package/dist/{chunk-BN7GFLIU-Db2-FjLn.js → chunk-BN7GFLIU-pBc5O5Rh.js} +1 -1
  28. package/dist/{chunk-CVBHYZKI-BONeiloK.js → chunk-CVBHYZKI-CivHZg9P.js} +3 -3
  29. package/dist/{chunk-CXMOBAN2-U9GJSP1d.js → chunk-CXMOBAN2-Dd0E6qb0.js} +46 -54
  30. package/dist/chunk-EXTU4WIE-GQ2ZWfJo.js +10 -0
  31. package/dist/{chunk-FMBD7UC4-DyV3BR_I.js → chunk-FMBD7UC4-C6YcisV6.js} +1 -1
  32. package/dist/{chunk-JA3XYJ7Z-C9A1076P.js → chunk-JA3XYJ7Z-DYeQaT57.js} +21 -25
  33. package/dist/{chunk-JEIROHC2-BGnFkSVq.js → chunk-JEIROHC2-B-EZMP4V.js} +1 -1
  34. package/dist/{chunk-K7UQS3LO-033LOsjK.js → chunk-K7UQS3LO-DENzlS-M.js} +7 -7
  35. package/dist/{chunk-KMC2YHZD-DT4Sq4Ld.js → chunk-KMC2YHZD-SckhHdEh.js} +1 -1
  36. package/dist/{chunk-QN33PNHL-gs44MZla.js → chunk-QN33PNHL-Cjq5b604.js} +2 -2
  37. package/dist/{chunk-QYVHNE3D-B8BO1AnT.js → chunk-QYVHNE3D-CNUuivie.js} +3 -4
  38. package/dist/{chunk-QZHKN3VN-CeN_GkU6.js → chunk-QZHKN3VN-DugEU_bA.js} +1 -1
  39. package/dist/chunk-S3R3BYOJ-itCT6Vif.js +380 -0
  40. package/dist/{chunk-T44TD3VJ-BwzD6YE0.js → chunk-T44TD3VJ-BLdfTX8J.js} +1 -1
  41. package/dist/{chunk-TVAH2DTR-Bi6jpQJQ.js → chunk-TVAH2DTR-BOnwF9d8.js} +7 -8
  42. package/dist/{chunk-TZMSLE5B-D8klz2H_.js → chunk-TZMSLE5B-DGs66AlL.js} +4 -5
  43. package/dist/{chunk-WFRQ32O7-CzSwSlN0.js → chunk-WFRQ32O7-CPsipkmJ.js} +1 -1
  44. package/dist/{chunk-WFWHJNB7-DN_cavM6.js → chunk-WFWHJNB7-Cmed18Pk.js} +1 -1
  45. package/dist/{chunk-XRWGC2XP-Bb5eGNM2.js → chunk-XRWGC2XP-DH5GDaY8.js} +1 -1
  46. package/dist/{chunk-ZPAFE4SF-S5UYNb0V.js → chunk-ZPAFE4SF-DPDwaqZm.js} +22 -22
  47. package/dist/classDiagram-KNZD7YFC-azuS_99k.js +39 -0
  48. package/dist/classDiagram-v2-RKCZMP56-CQpyQQOR.js +39 -0
  49. package/dist/{click-outside-container-DE4e7p1p.js → click-outside-container-CL_FkgGY.js} +7 -12
  50. package/dist/{clike-CxAz4p9E.js → clike-DYfRWWXk.js} +1 -1
  51. package/dist/{clike-Cg_DBrJ0.js → clike-bzZTreP4.js} +1 -1
  52. package/dist/clojure-ATksAecl.js +4 -0
  53. package/dist/{clone-Dk4FkKH0.js → clone-Msbhmn2a.js} +1 -1
  54. package/dist/cmake-CWylaz2C.js +4 -0
  55. package/dist/cobol-BiLLCZIQ.js +4 -0
  56. package/dist/coffeescript-Ca4jipi8.js +4 -0
  57. package/dist/commonlisp-BwFjyEC7.js +4 -0
  58. package/dist/{constants-Cjd_3kwd.js → constants-BCOEQoEQ.js} +3 -3
  59. package/dist/{copy-C5RFg7ok.js → copy-BkZ8PkBM.js} +6 -2
  60. package/dist/{cose-bilkent-S5V4N54A-B3iOTGu5.js → cose-bilkent-S5V4N54A-BZnbwyVD.js} +20 -20
  61. package/dist/crystal-BhUsQHbh.js +4 -0
  62. package/dist/css-Cf4wlIyV.js +5 -0
  63. package/dist/cypher-Dj8Hzgxa.js +4 -0
  64. package/dist/{cytoscape.esm-DTDV0Nbj.js → cytoscape.esm-BTpRoPd2.js} +586 -661
  65. package/dist/d-DZI7tbTy.js +4 -0
  66. package/dist/{dagre-5GWH7T2D-KM4Z11yT.js → dagre-5GWH7T2D-BGaiSZZO.js} +32 -37
  67. package/dist/{dagre-B0u1urxE.js → dagre-pyfDIOWJ.js} +57 -76
  68. package/dist/data-grid-overlay-editor-867aBz0Y.js +133 -0
  69. package/dist/{diagram-N5W7TBWH-CtO7az4G.js → diagram-N5W7TBWH-CzLE0jZB.js} +35 -51
  70. package/dist/diagram-QEK2KX5R-AGS60xEZ.js +245 -0
  71. package/dist/{diagram-S2PKOQOG-CiXElLNQ.js → diagram-S2PKOQOG-BxRoG6yW.js} +28 -28
  72. package/dist/diff-WQISUHG5.js +4 -0
  73. package/dist/{dist-CdE2C2In.js → dist-2Ne-33Xy.js} +15 -20
  74. package/dist/{dist-DKFaZRVk.js → dist-B0YD1aXi.js} +2 -2
  75. package/dist/{dist-DBhzmFyH.js → dist-B1Dv8Sdk.js} +3 -3
  76. package/dist/{dist-CGIZPq3J.js → dist-BFkr6kAQ.js} +2 -2
  77. package/dist/{dist-DL_ci7Yc.js → dist-BL2DSY0P.js} +1 -1
  78. package/dist/dist-BawZu0ix.js +10 -0
  79. package/dist/{dist-Bar1QnNM.js → dist-BhVFggab.js} +3 -3
  80. package/dist/{textile-Cy55fYGC.js → dist-BiOF7987.js} +4 -2
  81. package/dist/{dist-BQmQQqFH.js → dist-BpzZrRd6.js} +1 -1
  82. package/dist/{dist-CxD5E6Sh.js → dist-C7zhQ7K0.js} +24 -22
  83. package/dist/{dist-BqgkUnEN.js → dist-CBhnQKQ4.js} +3 -3
  84. package/dist/{dist-Dzk1C8l5.js → dist-CId4IPXu.js} +10 -13
  85. package/dist/{dist-CUnh_3Ii.js → dist-CYhQCVru.js} +2 -2
  86. package/dist/{dist-BBlFk9ki.js → dist-CZq5-ZyD.js} +1 -1
  87. package/dist/{dist-elblfNXO.js → dist-Cacac5HV.js} +2 -2
  88. package/dist/{dist-CChOkSUg.js → dist-CfQHSIQC.js} +3 -3
  89. package/dist/{dist-JCAky9ND.js → dist-CkvGMBAS.js} +17 -22
  90. package/dist/dist-Cs3McXEj.js +6 -0
  91. package/dist/{dist-o7fhJC7U.js → dist-CvyfRaIr.js} +3 -3
  92. package/dist/{dist-CZfRM7pE.js → dist-D-3fICwh.js} +2 -2
  93. package/dist/dist-D3aaithT.js +6 -0
  94. package/dist/{dist-CutXTm8t.js → dist-DBhEu3-F.js} +1 -1
  95. package/dist/dist-DELcMSpJ.js +6 -0
  96. package/dist/{dist-C7ASiFxI.js → dist-DMxl6Qbu.js} +273 -263
  97. package/dist/{dist-CLvpViod.js → dist-DS6nuHYK.js} +2 -3
  98. package/dist/dist-Dgts3WXd.js +6 -0
  99. package/dist/{dist--I6Htnlv.js → dist-DlHkZUnY.js} +5 -5
  100. package/dist/dist-Doiq_KIP.js +15 -0
  101. package/dist/dist-DtpUiDG_.js +6 -0
  102. package/dist/{dist-DzOpMdwb.js → dist-NUdHX0XE.js} +4 -4
  103. package/dist/{dist-C3WYsf4K.js → dist-PGgOcwbF.js} +4 -10
  104. package/dist/{dist-DNnYAdRE.js → dist-RdxOJbBw.js} +2 -2
  105. package/dist/{dist-BEvIw5Nh.js → dist-RwqAqkpG.js} +1 -1
  106. package/dist/dist-ZjnJq_jD.js +10 -0
  107. package/dist/{dist-CbRkrKrP.js → dist-biZ846D9.js} +5 -5
  108. package/dist/{dist-DW9er3Zq.js → dist-d5NxvX2s.js} +44 -23
  109. package/dist/{dist-C3QUag__.js → dist-ivwkJchV.js} +3 -3
  110. package/dist/dist-mof3iuBu.js +12 -0
  111. package/dist/{dist-Cib4sGDA.js → dist-reo2kYlN.js} +2 -2
  112. package/dist/{dist-BZBitvuL.js → dist-wHVprCkn.js} +1 -1
  113. package/dist/{dist-C5zMs_n5.js → dist-y8uoXYaE.js} +3 -3
  114. package/dist/{dist-DPF5TTUg.js → dist-z_iuDES7.js} +126 -115
  115. package/dist/{dockerfile-Dum_1b-5.js → dockerfile-sZMPcXVY.js} +1 -1
  116. package/dist/dtd-B2M8dhfC.js +4 -0
  117. package/dist/dylan-CU3Vt8SC.js +4 -0
  118. package/dist/ecl-B8ESAVq4.js +4 -0
  119. package/dist/eiffel-DDfMIKeA.js +4 -0
  120. package/dist/elm-Bj6rj8jf.js +4 -0
  121. package/dist/{erDiagram-AWTI2OKA-ZTIl9iQO.js → erDiagram-AWTI2OKA-CTxzb-U8.js} +20 -20
  122. package/dist/erlang-BxyshZUq.js +4 -0
  123. package/dist/{error-banner-OQIGTqFR.js → error-banner-npbEfanI.js} +13 -13
  124. package/dist/{esm-DxFkg7a6.js → esm-BdiY4QsX.js} +1528 -1492
  125. package/dist/{esm-d0g2RsOH.js → esm-CAWW9sum.js} +6 -8
  126. package/dist/{esm-1_Mp6VD2.js → esm-YY5zh7KV.js} +324 -395
  127. package/dist/{esm-BO9n_s6u.js → esm-svAVli9f.js} +5 -5
  128. package/dist/{factor-CdgiDGiu.js → factor-CRFTmP_a.js} +1 -1
  129. package/dist/factor-CYk6XT8r.js +5 -0
  130. package/dist/{flowDiagram-PVAE7QVJ-DsbofOzu.js → flowDiagram-PVAE7QVJ-Dck2hiJe.js} +22 -22
  131. package/dist/{formats-ChrNdVdJ.js → formats-BnqXUb1V.js} +13 -17
  132. package/dist/forth-fcoJkd-f.js +4 -0
  133. package/dist/fortran-IxZHu4wc.js +4 -0
  134. package/dist/{fullscreen-D1yTiBlu.js → fullscreen-blsKUrtN.js} +741 -744
  135. package/dist/{ganttDiagram-OWAHRB6G-FnCH1Yj3.js → ganttDiagram-OWAHRB6G-AWzfzpup.js} +9 -9
  136. package/dist/gas-B8rmKcim.js +4 -0
  137. package/dist/gherkin-BTm-jIdJ.js +4 -0
  138. package/dist/gitGraph-ZV4HHKMB-DFg_OLQb.js +21 -0
  139. package/dist/{gitGraphDiagram-NY62KEGX-B0wvMNqU.js → gitGraphDiagram-NY62KEGX-GyNboWSV.js} +31 -34
  140. package/dist/{glide-data-editor-D_kEsT07.js → glide-data-editor-DHuN8kQ8.js} +1650 -1720
  141. package/dist/{graphlib-BGmr7CYF.js → graphlib-hb3zmtVD.js} +5 -5
  142. package/dist/groovy-01kRHFMD.js +4 -0
  143. package/dist/haskell-B3PhE05w.js +4 -0
  144. package/dist/haxe-DEoAm8oA.js +5 -0
  145. package/dist/{hotkeys-yFrUwyJK.js → hotkeys-Ct2T3e9O.js} +4 -7
  146. package/dist/idl-DsDJU9cV.js +4 -0
  147. package/dist/info-63CPKGFF-D3DZmDBa.js +21 -0
  148. package/dist/infoDiagram-STP46IZ2-ec08vi_U.js +44 -0
  149. package/dist/{isArrayLikeObject-DiDsNamC.js → isArrayLikeObject-BlvK28do.js} +3 -5
  150. package/dist/{isEmpty-BBG-u1GM.js → isEmpty--odfYjh1.js} +2 -2
  151. package/dist/{isSymbol-BxF-_8BA.js → isSymbol-Cb1f2HgO.js} +1 -1
  152. package/dist/{javascript-Dfq1qI35.js → javascript-BfCTmOnk.js} +2 -2
  153. package/dist/javascript-gwczVhuU.js +5 -0
  154. package/dist/jinja2-AkZRdFk3.js +4 -0
  155. package/dist/{journeyDiagram-BIP6EPQ6-B3PotfAW.js → journeyDiagram-BIP6EPQ6-TmXYCUbT.js} +23 -24
  156. package/dist/julia-_s6qe3bf.js +4 -0
  157. package/dist/{kanban-definition-6OIFK2YF-BTrQZ3LN.js → kanban-definition-6OIFK2YF-B6ozleHo.js} +15 -15
  158. package/dist/{katex-dN__NFdn.js → katex-mPzRsXEy.js} +1 -1
  159. package/dist/{katex-BE4xflfm.js → katex-mkWmhPUh.js} +149 -173
  160. package/dist/{label-BinTsX-u.js → label-VVRKZmrP.js} +21 -24
  161. package/dist/{linear-DyTdUIqX.js → linear-iebAbJVD.js} +1 -1
  162. package/dist/livescript-CwPHQdv5.js +4 -0
  163. package/dist/{loader-Dijti3y4.js → loader-CM0VALo9.js} +19 -26
  164. package/dist/lua-s7nRxkCP.js +4 -0
  165. package/dist/main.js +8161 -8431
  166. package/dist/{marked.esm-3RjvXPoO.js → marked.esm-DJM8la36.js} +5 -5
  167. package/dist/mathematica-Ci36yd1q.js +4 -0
  168. package/dist/mbox-DbOYMNCO.js +4 -0
  169. package/dist/{memoize-Dq87l1O_.js → memoize-DYoRBSLn.js} +1 -1
  170. package/dist/{merge-BPDCIm8P.js → merge-BjuR6j_w.js} +1 -1
  171. package/dist/{mermaid-MWiyXDcI.js → mermaid-YPPMBmhk.js} +58 -76
  172. package/dist/{mermaid-parser.core-CSFx6MQ7.js → mermaid-parser.core-BLkyTSZj.js} +8 -8
  173. package/dist/{mhchem-DZ68WS0G.js → mhchem-Dw7wvXtr.js} +1 -1
  174. package/dist/{min-BzhKOmZo.js → min-B_i2ahn4.js} +7 -7
  175. package/dist/{mindmap-definition-Q6HEUPPD-9hhnrO1k.js → mindmap-definition-Q6HEUPPD-F6-JnXwq.js} +17 -17
  176. package/dist/mirc-VmNe8AwF.js +4 -0
  177. package/dist/mllike-BdD7SJEa.js +6 -0
  178. package/dist/modelica-BA4VqzC3.js +4 -0
  179. package/dist/mscgen-DF-5WHJm.js +6 -0
  180. package/dist/mumps-c_Uia_QN.js +4 -0
  181. package/dist/{node-sql-parser-13oju30e.js → node-sql-parser-BqKV-TpL.js} +14343 -14351
  182. package/dist/{now-DVBcRCoE.js → now-CwRqw0nS.js} +1 -1
  183. package/dist/nsis-BAANGODV.js +5 -0
  184. package/dist/{nsis-BW6_XagK.js → nsis-BWJEeUyS.js} +1 -1
  185. package/dist/ntriples-Bslqh2Ki.js +4 -0
  186. package/dist/{number-overlay-editor-D1YdiOrm.js → number-overlay-editor-CeyruAX4.js} +17 -23
  187. package/dist/octave-DYn5ltia.js +4 -0
  188. package/dist/oz-B_N-StZq.js +4 -0
  189. package/dist/packet-HUATNLJX-CkqjFdAv.js +21 -0
  190. package/dist/pascal-DU4CtAUu.js +4 -0
  191. package/dist/perl-Bae6k32u.js +4 -0
  192. package/dist/pie-WTHONI2E-D0rWwX5P.js +21 -0
  193. package/dist/{pieDiagram-ADFJNKIX-CSBC0ZgF.js → pieDiagram-ADFJNKIX-C5dSQVCn.js} +28 -28
  194. package/dist/pig-DSIxUEgX.js +4 -0
  195. package/dist/powershell-31lcPgIF.js +4 -0
  196. package/dist/powershell-BZx53Ujw.js +236 -0
  197. package/dist/properties-lmYbntDG.js +4 -0
  198. package/dist/protobuf-BTYoCEpV.js +4 -0
  199. package/dist/pug-DMFM7zzO.js +5 -0
  200. package/dist/{pug-Bmups_z0.js → pug-PJh82u1M.js} +1 -1
  201. package/dist/puppet-B0ub07d-.js +4 -0
  202. package/dist/python-C4jT87Nt.js +5 -0
  203. package/dist/{q-BzWcnVri.js → q-CMoUHJ5Q.js} +3 -2
  204. package/dist/q-YbPYlqRI.js +4 -0
  205. package/dist/{quadrantDiagram-LMRXKWRM-h7nHf8xG.js → quadrantDiagram-LMRXKWRM-DlahxNiy.js} +7 -7
  206. package/dist/r-OfNu6HAI.js +4 -0
  207. package/dist/radar-NJJJXTRR-Bxqv4O5a.js +21 -0
  208. package/dist/{range-CgK0-PEw.js → range-DxfkexCE.js} +3 -3
  209. package/dist/{react-plotly-BZakcxdv.js → react-plotly-D_IAfR8f.js} +4364 -4705
  210. package/dist/{requirementDiagram-4UW4RH46-BGEurQYq.js → requirementDiagram-4UW4RH46-DTkinyvU.js} +17 -17
  211. package/dist/rpm-D_3b5peD.js +5 -0
  212. package/dist/ruby-CehsJy_T.js +4 -0
  213. package/dist/{sankeyDiagram-GR3RE2ED-CxeJ_jfl.js → sankeyDiagram-GR3RE2ED-CsLnEnnq.js} +3 -3
  214. package/dist/sas-DwQHzPoF.js +4 -0
  215. package/dist/scheme-B6ArxiQu.js +4 -0
  216. package/dist/{sequenceDiagram-C3RYC4MD-CbFxwyr_.js → sequenceDiagram-C3RYC4MD-BdEOR6SC.js} +20 -30
  217. package/dist/shell-AHmQgDfc.js +4 -0
  218. package/dist/sieve-CgodKOcx.js +4 -0
  219. package/dist/{simple-mode-Cgyya8F-.js → simple-mode-BP3Jd4vf.js} +1 -1
  220. package/dist/{slides-component-BEyG25AH.js → slides-component-2bbal1YJ.js} +24 -46
  221. package/dist/smalltalk-BeFzDkbo.js +4 -0
  222. package/dist/sparql-BWxq-Lnx.js +4 -0
  223. package/dist/{src-BNNJRxz3.js → src-DZkaBUmt.js} +6 -6
  224. package/dist/{stateDiagram-KXAO66HF-A61bMf29.js → stateDiagram-KXAO66HF-DQLH2jhP.js} +39 -41
  225. package/dist/stateDiagram-v2-UMBNRL4Z-D9v8fKjF.js +38 -0
  226. package/dist/stex-Dvaq0qsm.js +5 -0
  227. package/dist/style.css +1 -1
  228. package/dist/stylus-Ge0ofWlZ.js +4 -0
  229. package/dist/swift-CjQfbVxV.js +4 -0
  230. package/dist/tcl-CAGDF11K.js +4 -0
  231. package/dist/textile-CrXreJtf.js +4 -0
  232. package/dist/{time-D3tzCqJ6.js → time-CFkXkVrt.js} +1 -1
  233. package/dist/{timeline-definition-XQNQX7LJ-BwdsB7CR.js → timeline-definition-XQNQX7LJ-bToVq14i.js} +4 -5
  234. package/dist/{timer-D3Zlu9ow.js → timer-CzOhIJuk.js} +2 -2
  235. package/dist/{toNumber-efKT08hh.js → toNumber-EFF1Z9T1.js} +2 -2
  236. package/dist/{toString-BvCd3yJc.js → toString-C2mCkasT.js} +2 -2
  237. package/dist/toml-AdLXKwEi.js +4 -0
  238. package/dist/{toml-CIUkU1CP.js → toml-eSl4PUAH.js} +6 -2
  239. package/dist/treemap-75Q7IDZK-Da9Jv6a_.js +21 -0
  240. package/dist/troff-C-LaM2ex.js +4 -0
  241. package/dist/ttcn-DTclUi6T.js +4 -0
  242. package/dist/ttcn-cfg-BtBPbmLX.js +4 -0
  243. package/dist/turtle-BODDDg5O.js +4 -0
  244. package/dist/{types-1X1uZB4y.js → types-CRXV0KD5.js} +84 -95
  245. package/dist/{useAsyncData-C4IqQK0g.js → useAsyncData-uMVTsDI9.js} +1 -1
  246. package/dist/{useDateFormatter-BCsBqetx.js → useDateFormatter-Dcz7jstn.js} +6 -6
  247. package/dist/{useTheme-C2pgJzDH.js → useTheme-NbEx-ZNV.js} +13 -10
  248. package/dist/vb-Cb1HQHii.js +4 -0
  249. package/dist/vbscript-CpXOP4wZ.js +4 -0
  250. package/dist/{vega-component-Cv4J8CHz.js → vega-component-hegVmfuS.js} +21 -21
  251. package/dist/{vega-loader.browser.module-Bi3ttvdj.js → vega-loader.browser.module-DcW8jnKp.js} +1 -2
  252. package/dist/velocity-Dz0rBQIk.js +4 -0
  253. package/dist/verilog-6Di9aLKw.js +4 -0
  254. package/dist/vhdl-BRNesXYc.js +4 -0
  255. package/dist/webidl-BpRNYIYn.js +4 -0
  256. package/dist/xquery-DXWcJ7b6.js +4 -0
  257. package/dist/{xychartDiagram-6GGTOJPD-BJRRi5HC.js → xychartDiagram-6GGTOJPD-C7Bhm_yt.js} +12 -13
  258. package/dist/yacas-DbSARPz4.js +4 -0
  259. package/dist/z80-DzslPj_l.js +4 -0
  260. package/dist/{zod-UPQf9SGn.js → zod-ChY6miG5.js} +71 -81
  261. package/package.json +12 -12
  262. package/src/__mocks__/requests.ts +2 -0
  263. package/src/components/app-config/user-config-form.tsx +29 -25
  264. package/src/components/chat/chat-utils.ts +11 -4
  265. package/src/components/data-table/__tests__/header-items.test.tsx +117 -0
  266. package/src/components/data-table/column-header.tsx +4 -2
  267. package/src/components/data-table/columns.tsx +2 -1
  268. package/src/components/data-table/data-table.tsx +7 -2
  269. package/src/components/data-table/header-items.tsx +63 -10
  270. package/src/components/dependency-graph/custom-node.tsx +11 -11
  271. package/src/components/dependency-graph/elements.ts +9 -4
  272. package/src/components/dependency-graph/panels.tsx +6 -4
  273. package/src/components/editor/Output.tsx +6 -1
  274. package/src/components/editor/ai/ai-completion-editor.tsx +135 -5
  275. package/src/components/editor/ai/completion-handlers.tsx +106 -22
  276. package/src/components/editor/cell/code/cell-editor.tsx +5 -0
  277. package/src/components/editor/chrome/panels/cache-panel.tsx +216 -0
  278. package/src/components/editor/chrome/panels/empty-state.tsx +3 -1
  279. package/src/components/editor/chrome/types.ts +66 -22
  280. package/src/components/editor/chrome/wrapper/app-chrome.tsx +2 -0
  281. package/src/components/editor/errors/auto-fix.tsx +138 -32
  282. package/src/components/editor/errors/fix-mode.ts +15 -0
  283. package/src/components/editor/navigation/__tests__/clipboard.test.ts +0 -5
  284. package/src/components/editor/navigation/clipboard.ts +2 -1
  285. package/src/components/editor/notebook-cell.tsx +20 -7
  286. package/src/components/editor/output/ConsoleOutput.tsx +27 -33
  287. package/src/components/editor/output/JsonOutput.tsx +9 -0
  288. package/src/components/editor/output/MarimoTracebackOutput.tsx +10 -7
  289. package/src/components/editor/output/__tests__/json-output.test.ts +43 -0
  290. package/src/components/editor/package-alert.tsx +3 -0
  291. package/src/components/forms/__tests__/form-utils.test.ts +4 -2
  292. package/src/components/icons/copy-icon.tsx +11 -5
  293. package/src/components/shortcuts/renderShortcut.tsx +3 -1
  294. package/src/components/ui/button.tsx +2 -0
  295. package/src/components/ui/confirmation-button.tsx +85 -0
  296. package/src/components/ui/switch.tsx +2 -0
  297. package/src/core/ai/context/providers/__tests__/datasource.test.ts +9 -1
  298. package/src/core/ai/context/providers/datasource.ts +25 -1
  299. package/src/core/ai/state.ts +6 -3
  300. package/src/core/ai/tools/__tests__/registry.test.ts +33 -8
  301. package/src/core/ai/tools/base.ts +81 -1
  302. package/src/core/ai/tools/registry.ts +36 -10
  303. package/src/core/ai/tools/sample-tool.ts +44 -8
  304. package/src/core/cache/requests.ts +5 -0
  305. package/src/core/cells/cells.ts +1 -1
  306. package/src/core/codemirror/__tests__/__snapshots__/setup.test.ts.snap +2 -0
  307. package/src/core/codemirror/__tests__/replace-editor-content.test.ts +336 -0
  308. package/src/core/codemirror/find-replace/navigate.ts +2 -2
  309. package/src/core/codemirror/format.ts +2 -9
  310. package/src/core/codemirror/language/__tests__/sql.test.ts +24 -6
  311. package/src/core/codemirror/language/languages/python.ts +1 -3
  312. package/src/core/codemirror/language/languages/sql/sql.ts +23 -13
  313. package/src/core/codemirror/language/panel/panel.tsx +1 -6
  314. package/src/core/codemirror/language/utils.ts +3 -8
  315. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +21 -14
  316. package/src/core/codemirror/lsp/federated-lsp.ts +20 -9
  317. package/src/core/codemirror/lsp/notebook-lsp.ts +35 -29
  318. package/src/core/codemirror/lsp/types.ts +0 -13
  319. package/src/core/codemirror/replace-editor-content.ts +87 -0
  320. package/src/core/config/__tests__/config-schema.test.ts +3 -0
  321. package/src/core/config/config-schema.ts +8 -0
  322. package/src/core/config/feature-flag.tsx +2 -4
  323. package/src/core/errors/__tests__/errors.test.ts +1 -0
  324. package/src/core/errors/errors.ts +20 -6
  325. package/src/core/islands/bridge.ts +2 -0
  326. package/src/core/islands/main.ts +4 -0
  327. package/src/core/kernel/messages.ts +1 -0
  328. package/src/core/network/requests-network.ts +14 -0
  329. package/src/core/network/requests-static.ts +2 -0
  330. package/src/core/network/requests-toasting.ts +2 -0
  331. package/src/core/network/types.ts +5 -0
  332. package/src/core/saving/save-component.tsx +43 -36
  333. package/src/core/wasm/bridge.ts +2 -0
  334. package/src/core/websocket/useMarimoWebSocket.tsx +8 -0
  335. package/src/css/app/codemirror-completions.css +1 -1
  336. package/src/custom.d.ts +2 -0
  337. package/src/plugins/core/registerReactComponent.tsx +5 -1
  338. package/src/plugins/impl/DataTablePlugin.tsx +19 -19
  339. package/src/plugins/impl/__tests__/DateTimePickerPlugin.test.tsx +32 -0
  340. package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
  341. package/src/plugins/impl/chat/chat-ui.tsx +17 -2
  342. package/src/plugins/impl/chat/types.ts +1 -1
  343. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +7 -2
  344. package/src/plugins/impl/plotly/__tests__/parse-from-template.test.ts +17 -0
  345. package/src/plugins/impl/plotly/parse-from-template.ts +2 -1
  346. package/src/utils/__tests__/formatting.test.ts +107 -0
  347. package/src/utils/__tests__/json-parser.test.ts +13 -0
  348. package/src/utils/copy.ts +6 -0
  349. package/src/utils/formatting.ts +51 -0
  350. package/src/utils/json/json-parser.ts +28 -3
  351. package/dist/any-language-editor-CVFQlioK.js +0 -156
  352. package/dist/apl-ChlaBfxB.js +0 -4
  353. package/dist/architecture-O4VJ6CD3-BVeaxUcM.js +0 -21
  354. package/dist/asciiarmor-CcJmm3l_.js +0 -4
  355. package/dist/asn1-ThRYxoBE.js +0 -4
  356. package/dist/assets/__vite-browser-external-Dv_SHu1h.js +0 -1
  357. package/dist/assets/worker-DVOR9oZG.js +0 -54
  358. package/dist/brainfuck-CEM0JgDn.js +0 -4
  359. package/dist/chunk-EXTU4WIE-DECT9AAK.js +0 -14
  360. package/dist/chunk-S3R3BYOJ-DMQ1yeyq.js +0 -386
  361. package/dist/classDiagram-KNZD7YFC-BG53O6Jt.js +0 -39
  362. package/dist/classDiagram-v2-RKCZMP56-BmKILsGU.js +0 -39
  363. package/dist/clojure-B7RHyE9t.js +0 -4
  364. package/dist/cmake-TeTMP4I5.js +0 -4
  365. package/dist/cobol-DI-mxUER.js +0 -4
  366. package/dist/coffeescript-DHUFLqWp.js +0 -4
  367. package/dist/commonlisp-SLiUrh1m.js +0 -4
  368. package/dist/crystal-B4fY1ZfJ.js +0 -4
  369. package/dist/css-Bdoq3TzK.js +0 -5
  370. package/dist/cypher-CBU182fp.js +0 -4
  371. package/dist/d-D8myDZeH.js +0 -4
  372. package/dist/data-grid-overlay-editor-qNmJk2x0.js +0 -135
  373. package/dist/diagram-QEK2KX5R-fu8Noi3H.js +0 -245
  374. package/dist/diff-DJF_UB7H.js +0 -4
  375. package/dist/dist-52-_pKoy.js +0 -6
  376. package/dist/dist-6DOMStFn.js +0 -6
  377. package/dist/dist-B334aW7p.js +0 -10
  378. package/dist/dist-BOI9lUz-.js +0 -12
  379. package/dist/dist-C06uhBzF.js +0 -6
  380. package/dist/dist-CGkpguCB.js +0 -6
  381. package/dist/dist-CrApzUED.js +0 -6
  382. package/dist/dist-Dp2GLdCl.js +0 -14
  383. package/dist/dist-WHFsbMDr.js +0 -6
  384. package/dist/dist-hyKcTPG9.js +0 -10
  385. package/dist/dtd-DY8q65lC.js +0 -4
  386. package/dist/dylan-CBLcjWCi.js +0 -4
  387. package/dist/ecl-BSXPNfOw.js +0 -4
  388. package/dist/eiffel-BJf0PQX-.js +0 -4
  389. package/dist/elm-DWQwPCZS.js +0 -4
  390. package/dist/erlang-BWBaGZ5e.js +0 -4
  391. package/dist/factor-DT1-MBPl.js +0 -5
  392. package/dist/forth-D9GDt3FB.js +0 -4
  393. package/dist/fortran-DHkRhDWw.js +0 -4
  394. package/dist/gas-7lQEOM0H.js +0 -4
  395. package/dist/gherkin-BLLyroYi.js +0 -4
  396. package/dist/gitGraph-ZV4HHKMB-z2v_cInC.js +0 -21
  397. package/dist/groovy-C-wabwj0.js +0 -4
  398. package/dist/haskell-DaxVQ_d1.js +0 -4
  399. package/dist/haxe-C2yLoC7h.js +0 -5
  400. package/dist/idl-DQBP8i7k.js +0 -4
  401. package/dist/info-63CPKGFF-GS4w6pCB.js +0 -21
  402. package/dist/infoDiagram-STP46IZ2-DE9YYPFg.js +0 -44
  403. package/dist/javascript-DRwFV9r5.js +0 -5
  404. package/dist/jinja2-CNoIpVmN.js +0 -4
  405. package/dist/julia-DXDf-GhP.js +0 -4
  406. package/dist/livescript-S2uhJQx7.js +0 -4
  407. package/dist/lua-Bvgs0y2G.js +0 -4
  408. package/dist/mathematica-D2zqfwIg.js +0 -4
  409. package/dist/mbox-SBcPaDuZ.js +0 -4
  410. package/dist/mirc-hkQc7sVF.js +0 -4
  411. package/dist/mllike-DRWPBlr9.js +0 -6
  412. package/dist/modelica-CO2ROGlP.js +0 -4
  413. package/dist/mscgen-BpX61bO6.js +0 -6
  414. package/dist/mumps-BCnFeIn6.js +0 -4
  415. package/dist/nsis-BaTOxlD1.js +0 -5
  416. package/dist/ntriples-zEo5BWjr.js +0 -4
  417. package/dist/octave-BE0RnCM9.js +0 -4
  418. package/dist/oz-C4_2Ttul.js +0 -4
  419. package/dist/packet-HUATNLJX-CjHqJIqk.js +0 -21
  420. package/dist/pascal-Q3jJucpw.js +0 -4
  421. package/dist/perl-DkXZIWHF.js +0 -4
  422. package/dist/pie-WTHONI2E-D67gLWtR.js +0 -21
  423. package/dist/pig-DCgEHdsu.js +0 -4
  424. package/dist/powershell-3rK_nRRJ.js +0 -236
  425. package/dist/powershell-Eo2-7MoM.js +0 -4
  426. package/dist/properties-C0IOX8WR.js +0 -4
  427. package/dist/protobuf--lGQUSRO.js +0 -4
  428. package/dist/pug-Cf8AQHMJ.js +0 -5
  429. package/dist/puppet-D7Z3dTJn.js +0 -4
  430. package/dist/python-FHIx_i8Y.js +0 -5
  431. package/dist/q-B7UA1feM.js +0 -4
  432. package/dist/r-Cc9R2A7N.js +0 -4
  433. package/dist/radar-NJJJXTRR-C-AZP_Te.js +0 -21
  434. package/dist/rpm-vhJNlrQ6.js +0 -5
  435. package/dist/ruby-CVluPY0M.js +0 -4
  436. package/dist/sas-A8DL8oy3.js +0 -4
  437. package/dist/scheme-6xHHcSXC.js +0 -4
  438. package/dist/shell-DHN-e5rf.js +0 -4
  439. package/dist/sieve-BuQwLY02.js +0 -4
  440. package/dist/smalltalk-BA4HPg2H.js +0 -4
  441. package/dist/sparql-Bf4yCuy3.js +0 -4
  442. package/dist/stateDiagram-v2-UMBNRL4Z-C_0FUzzk.js +0 -38
  443. package/dist/stex-D-I1cYeE.js +0 -5
  444. package/dist/stylus-BMeped2l.js +0 -4
  445. package/dist/swift-lwEdlZoC.js +0 -4
  446. package/dist/tcl-B03ipeqv.js +0 -4
  447. package/dist/toml-BLgrVtfu.js +0 -4
  448. package/dist/treemap-75Q7IDZK-DTvwfpWt.js +0 -21
  449. package/dist/troff-g6EjN2O2.js +0 -4
  450. package/dist/ttcn-Dzvba8jK.js +0 -4
  451. package/dist/ttcn-cfg-CadG0p1K.js +0 -4
  452. package/dist/turtle-DkXAMWo9.js +0 -4
  453. package/dist/vb-C5dCiel8.js +0 -4
  454. package/dist/vbscript-I4bDEQln.js +0 -4
  455. package/dist/velocity-mt0fDwFH.js +0 -4
  456. package/dist/verilog-Dxq3KJkc.js +0 -4
  457. package/dist/vhdl-Km0QUlV-.js +0 -4
  458. package/dist/webidl-B3lJ2MRL.js +0 -4
  459. package/dist/xquery-CcIxNPEe.js +0 -4
  460. package/dist/yacas-oMa-f-tN.js +0 -4
  461. package/dist/z80-D03Nvn6l.js +0 -4
  462. /package/dist/{apl-DZqo8Elt.js → apl-CEHentF4.js} +0 -0
  463. /package/dist/{asciiarmor-DTzHAIeX.js → asciiarmor-DURYiCS0.js} +0 -0
  464. /package/dist/{asn1-DrAXKsZH.js → asn1-ETAiEoXY.js} +0 -0
  465. /package/dist/{asterisk-oF4U3h48.js → asterisk-DTpbbXPb.js} +0 -0
  466. /package/dist/{brainfuck-BYgLey30.js → brainfuck-BWQep-SA.js} +0 -0
  467. /package/dist/{clojure-Bs2M3OUY.js → clojure-BzFapDkA.js} +0 -0
  468. /package/dist/{cmake-DpI8vxJN.js → cmake-DvlbIC8x.js} +0 -0
  469. /package/dist/{cobol-BQyrWo72.js → cobol-BrEI4cPR.js} +0 -0
  470. /package/dist/{coffeescript-9ke9UHmw.js → coffeescript-B6cvu8mO.js} +0 -0
  471. /package/dist/{common-keywords-BzgeAvH1.js → common-keywords-WqQm7W8t.js} +0 -0
  472. /package/dist/{commonlisp-DghUdrUH.js → commonlisp-BIT8PQqi.js} +0 -0
  473. /package/dist/{crystal-DEf_SInh.js → crystal-B_UcPArT.js} +0 -0
  474. /package/dist/{css-BzTU9lNO.js → css-dHbnt_zl.js} +0 -0
  475. /package/dist/{cypher-a2v0c11S.js → cypher-Dh3FOpL7.js} +0 -0
  476. /package/dist/{d-SAswny-M.js → d-CQD1IHee.js} +0 -0
  477. /package/dist/{diff-OJ-xLXcG.js → diff-CpF_IDx0.js} +0 -0
  478. /package/dist/{dtd-BsUf-rer.js → dtd-DYoNpy6c.js} +0 -0
  479. /package/dist/{duckdb-keywords-B0NOra5o.js → duckdb-keywords-CdIsl9L0.js} +0 -0
  480. /package/dist/{dylan-C0ZYngjn.js → dylan-Bc_2G1E-.js} +0 -0
  481. /package/dist/{ebnf-DF1xx0b_.js → ebnf-jGVT_YpN.js} +0 -0
  482. /package/dist/{ecl-Bsuvoouq.js → ecl-UIU-P-Ar.js} +0 -0
  483. /package/dist/{eiffel-DgfSpLi-.js → eiffel-C90Oyuix.js} +0 -0
  484. /package/dist/{elm-GNxDj-5E.js → elm-B9fWSySj.js} +0 -0
  485. /package/dist/{erlang-Ds3uY1kL.js → erlang-Ccff0UAn.js} +0 -0
  486. /package/dist/{fcl-CqBgSioc.js → fcl-CGR8NxAg.js} +0 -0
  487. /package/dist/{forth-JCaLysGk.js → forth-U1ROGcBY.js} +0 -0
  488. /package/dist/{fortran-Dc2AoKAl.js → fortran-3nOkjDmc.js} +0 -0
  489. /package/dist/{gas-Q4Uz82YW.js → gas-B_4H5FzV.js} +0 -0
  490. /package/dist/{gherkin-Dpxe49sQ.js → gherkin-B0eru5Uz.js} +0 -0
  491. /package/dist/{groovy-D8mTRCu6.js → groovy-dqjtZUVf.js} +0 -0
  492. /package/dist/{haskell-2_8cC4wY.js → haskell-DFzCCQzo.js} +0 -0
  493. /package/dist/{haxe-Bl9zkZlz.js → haxe-Da8Pj5RT.js} +0 -0
  494. /package/dist/{http-DKCqY6yS.js → http-1HACL_9s.js} +0 -0
  495. /package/dist/{idl-Dn-HNfGW.js → idl-D3NXs5iM.js} +0 -0
  496. /package/dist/{jinja2-JjFiAGKk.js → jinja2-gBHAxUdF.js} +0 -0
  497. /package/dist/{julia-R5wne8eu.js → julia-bG-6nJ-_.js} +0 -0
  498. /package/dist/{livescript-DSwokrYj.js → livescript-BlsRC8UJ.js} +0 -0
  499. /package/dist/{lua-CgXfrp2-.js → lua-BbDC0_5w.js} +0 -0
  500. /package/dist/{mathematica-BVli92MR.js → mathematica-YZTe3-PF.js} +0 -0
  501. /package/dist/{mbox-CMFlocdS.js → mbox-CY5idp08.js} +0 -0
  502. /package/dist/{mirc-BkW04Zpc.js → mirc-CbQuFZKk.js} +0 -0
  503. /package/dist/{mllike-DEjvHvNV.js → mllike-DsbHMX-5.js} +0 -0
  504. /package/dist/{modelica-CxDn-oje.js → modelica-CQuvsOQk.js} +0 -0
  505. /package/dist/{mscgen-D78wmE-w.js → mscgen-LIpBP9VR.js} +0 -0
  506. /package/dist/{mumps-Bi0IvPOV.js → mumps-Ct5NXoaG.js} +0 -0
  507. /package/dist/{nginx-DErPZFhX.js → nginx-Dvc62C8z.js} +0 -0
  508. /package/dist/{ntriples-Btyp6wRL.js → ntriples-jVkxWUuv.js} +0 -0
  509. /package/dist/{octave-CZA6-2F8.js → octave-jGOImUB0.js} +0 -0
  510. /package/dist/{oz-Bm6LSNfE.js → oz-Y0FKDMS2.js} +0 -0
  511. /package/dist/{pascal-B4J6a9BH.js → pascal-BaLtPWWB.js} +0 -0
  512. /package/dist/{perl-CzVqxS08.js → perl-CjfE0JLo.js} +0 -0
  513. /package/dist/{pig-Clh03cnn.js → pig-DE4epV99.js} +0 -0
  514. /package/dist/{properties-D7ch1Wyb.js → properties-CLyCG5C-.js} +0 -0
  515. /package/dist/{protobuf-DrkdrMPK.js → protobuf-BjBBs_V4.js} +0 -0
  516. /package/dist/{puppet-BtZG8zdO.js → puppet-ZImLuomA.js} +0 -0
  517. /package/dist/{python-B6FKOVIv.js → python-C9YN71pR.js} +0 -0
  518. /package/dist/{r-Dnvo5-96.js → r-DILmKWWW.js} +0 -0
  519. /package/dist/{rpm-B1DrgfnX.js → rpm-fpIsm1Kr.js} +0 -0
  520. /package/dist/{ruby-CelfUg17.js → ruby-BuiQI41h.js} +0 -0
  521. /package/dist/{sas-DfSQFMWG.js → sas-C76sJ1zF.js} +0 -0
  522. /package/dist/{scheme-BplhaWuO.js → scheme-DHjM-txv.js} +0 -0
  523. /package/dist/{shell-DqU5OS2c.js → shell--7NmGJ9p.js} +0 -0
  524. /package/dist/{sieve-BE4_IyGa.js → sieve-DaPvBv1M.js} +0 -0
  525. /package/dist/{smalltalk-B_WPL8Nx.js → smalltalk-KPvwrjCs.js} +0 -0
  526. /package/dist/{solr-DlJFg7H5.js → solr-PvZUtEDb.js} +0 -0
  527. /package/dist/{sparql-7XIlcOgW.js → sparql-CXSUIQer.js} +0 -0
  528. /package/dist/{spreadsheet-BdZSVwVp.js → spreadsheet-DPJdGPkx.js} +0 -0
  529. /package/dist/{sql-CCrq7lfJ.js → sql-Dp4ZLSIa.js} +0 -0
  530. /package/dist/{stex-BiFc8QAu.js → stex-CeXW4zzk.js} +0 -0
  531. /package/dist/{stylus-DlSH9xpH.js → stylus-BXcmrg9w.js} +0 -0
  532. /package/dist/{swift-e3tMTZgJ.js → swift-DD8I7hKP.js} +0 -0
  533. /package/dist/{tcl-DfZMC20G.js → tcl-B9Lp4GtA.js} +0 -0
  534. /package/dist/{textile-DaSeca5U.js → textile-qdiY0teq.js} +0 -0
  535. /package/dist/{tiddlywiki-dfoiz8pS.js → tiddlywiki-t32lkubq.js} +0 -0
  536. /package/dist/{tiki-yJbQzhma.js → tiki-B0qKrSMl.js} +0 -0
  537. /package/dist/{troff-FN_FrCXR.js → troff-105XJOEu.js} +0 -0
  538. /package/dist/{ttcn-7_i4HlyB.js → ttcn-1_BxDcM8.js} +0 -0
  539. /package/dist/{ttcn-cfg-B46AlBUV.js → ttcn-cfg-Cn_XgXiw.js} +0 -0
  540. /package/dist/{turtle-QQfeFveR.js → turtle-BI6LyfEu.js} +0 -0
  541. /package/dist/{vb-DToPVnLa.js → vb-BecoBfmr.js} +0 -0
  542. /package/dist/{vbscript-CtsNaTz4.js → vbscript-De-zpA4i.js} +0 -0
  543. /package/dist/{velocity-CAoNe6ns.js → velocity-DhlYJTrD.js} +0 -0
  544. /package/dist/{verilog-DrDOMiJq.js → verilog-BDZgxDOW.js} +0 -0
  545. /package/dist/{vhdl-DnO0OEPh.js → vhdl-CV0OKTbp.js} +0 -0
  546. /package/dist/{webidl-Or6d1ZfA.js → webidl-BOM1Fs0O.js} +0 -0
  547. /package/dist/{xquery-CEp_Mcpr.js → xquery-CltP_CGh.js} +0 -0
  548. /package/dist/{yacas-DgnYrSlp.js → yacas-Dch4E2Dg.js} +0 -0
  549. /package/dist/{z80-DlG_kyeB.js → z80-B5Yly27o.js} +0 -0
@@ -559,6 +559,35 @@ export const UserConfigForm: React.FC = () => {
559
559
  />
560
560
  </SettingGroup>
561
561
 
562
+ <SettingGroup title="Diagnostics">
563
+ <FormField
564
+ control={form.control}
565
+ name="diagnostics.sql_linter"
566
+ render={({ field }) => (
567
+ <div className="flex flex-col space-y-1">
568
+ <FormItem className={formItemClasses}>
569
+ <FormLabel>SQL Linter</FormLabel>
570
+ <FormControl>
571
+ <Checkbox
572
+ data-testid="sql-linter-checkbox"
573
+ checked={field.value}
574
+ onCheckedChange={field.onChange}
575
+ />
576
+ </FormControl>
577
+ <FormMessage />
578
+ <IsOverridden
579
+ userConfig={config}
580
+ name="diagnostics.sql_linter"
581
+ />
582
+ </FormItem>
583
+ <FormDescription>
584
+ Better linting and autocompletions for SQL cells.
585
+ </FormDescription>
586
+ </div>
587
+ )}
588
+ />
589
+ </SettingGroup>
590
+
562
591
  <SettingGroup title="Keymap">
563
592
  <FormField
564
593
  control={form.control}
@@ -1281,31 +1310,6 @@ export const UserConfigForm: React.FC = () => {
1281
1310
  </div>
1282
1311
  )}
1283
1312
  />
1284
- <FormField
1285
- control={form.control}
1286
- name="experimental.sql_linter"
1287
- render={({ field }) => (
1288
- <div className="flex flex-col gap-y-1">
1289
- <FormItem className={formItemClasses}>
1290
- <FormLabel className="font-normal">SQL Linter</FormLabel>
1291
- <FormControl>
1292
- <Checkbox
1293
- data-testid="sql-linter-checkbox"
1294
- checked={field.value === true}
1295
- onCheckedChange={field.onChange}
1296
- />
1297
- </FormControl>
1298
- </FormItem>
1299
- <IsOverridden
1300
- userConfig={config}
1301
- name="experimental.sql_linter"
1302
- />
1303
- <FormDescription>
1304
- Enable experimental SQL linting and autocompletion.
1305
- </FormDescription>
1306
- </div>
1307
- )}
1308
- />
1309
1313
  <FormField
1310
1314
  control={form.control}
1311
1315
  name="experimental.external_agents"
@@ -127,7 +127,7 @@ export async function handleToolCall({
127
127
  addToolResult({
128
128
  tool: toolCall.toolName,
129
129
  toolCallId: toolCall.toolCallId,
130
- output: response,
130
+ output: response.result || response.error,
131
131
  });
132
132
  } else {
133
133
  // Invoke the backend/mcp tool
@@ -153,7 +153,7 @@ export async function handleToolCall({
153
153
 
154
154
  /**
155
155
  * Checks if we should send a message automatically based on the messages.
156
- * We only want to send a message if we have completed tool calls and there is no reply yet.
156
+ * We only want to send a message if all tool calls are completed and there is no reply yet.
157
157
  */
158
158
  export function hasPendingToolCalls(messages: UIMessage[]): boolean {
159
159
  if (messages.length === 0) {
@@ -177,7 +177,12 @@ export function hasPendingToolCalls(messages: UIMessage[]): boolean {
177
177
  part.type.startsWith("tool-"),
178
178
  ) as ToolUIPart[];
179
179
 
180
- const hasCompletedToolCalls = toolParts.some(
180
+ // Guard against no tool parts
181
+ if (toolParts.length === 0) {
182
+ return false;
183
+ }
184
+
185
+ const allToolCallsCompleted = toolParts.every(
181
186
  (part) => part.state === "output-available",
182
187
  );
183
188
 
@@ -186,6 +191,8 @@ export function hasPendingToolCalls(messages: UIMessage[]): boolean {
186
191
  const hasTextContent =
187
192
  lastPart.type === "text" && lastPart.text?.trim().length > 0;
188
193
 
194
+ Logger.warn("All tool calls completed: %s", allToolCallsCompleted);
195
+
189
196
  // Only auto-send if we have completed tool calls and there is no reply yet
190
- return hasCompletedToolCalls && !hasTextContent;
197
+ return allToolCallsCompleted && !hasTextContent;
191
198
  }
@@ -0,0 +1,117 @@
1
+ /* Copyright 2024 Marimo. All rights reserved. */
2
+
3
+ import type { SortingState } from "@tanstack/react-table";
4
+ import { describe, expect, it, vi } from "vitest";
5
+
6
+ describe("multi-column sorting logic", () => {
7
+ // Extract the core sorting logic to test in isolation
8
+ const handleSort = (
9
+ columnId: string,
10
+ desc: boolean,
11
+ sortingState: SortingState,
12
+ setSorting: (state: SortingState) => void,
13
+ clearSorting: () => void,
14
+ ) => {
15
+ const currentSort = sortingState.find((s) => s.id === columnId);
16
+
17
+ if (currentSort && currentSort.desc === desc) {
18
+ // Clicking the same sort again - remove it
19
+ clearSorting();
20
+ } else {
21
+ // New sort or different direction - move to end of stack
22
+ const otherSorts = sortingState.filter((s) => s.id !== columnId);
23
+ const newSort = { id: columnId, desc };
24
+ setSorting([...otherSorts, newSort]);
25
+ }
26
+ };
27
+
28
+ it("implements stack-based sorting: moves re-clicked column to end", () => {
29
+ const sortingState: SortingState = [
30
+ { id: "name", desc: false },
31
+ { id: "age", desc: false },
32
+ ];
33
+ const setSorting = vi.fn();
34
+ const clearSorting = vi.fn();
35
+
36
+ // Click Desc on age - should move age to end with desc=true
37
+ handleSort("age", true, sortingState, setSorting, clearSorting);
38
+
39
+ expect(setSorting).toHaveBeenCalledWith([
40
+ { id: "name", desc: false },
41
+ { id: "age", desc: true },
42
+ ]);
43
+ expect(clearSorting).not.toHaveBeenCalled();
44
+ });
45
+
46
+ it("removes sort when clicking same direction twice", () => {
47
+ const sortingState: SortingState = [{ id: "age", desc: false }];
48
+ const setSorting = vi.fn();
49
+ const clearSorting = vi.fn();
50
+
51
+ // Click Asc on age again - should remove the sort
52
+ handleSort("age", false, sortingState, setSorting, clearSorting);
53
+
54
+ expect(clearSorting).toHaveBeenCalled();
55
+ expect(setSorting).not.toHaveBeenCalled();
56
+ });
57
+
58
+ it("adds new column to end of stack", () => {
59
+ const sortingState: SortingState = [{ id: "name", desc: false }];
60
+ const setSorting = vi.fn();
61
+ const clearSorting = vi.fn();
62
+
63
+ // Click Asc on age - should add age to end
64
+ handleSort("age", false, sortingState, setSorting, clearSorting);
65
+
66
+ expect(setSorting).toHaveBeenCalledWith([
67
+ { id: "name", desc: false },
68
+ { id: "age", desc: false },
69
+ ]);
70
+ expect(clearSorting).not.toHaveBeenCalled();
71
+ });
72
+
73
+ it("toggles sort direction when clicking opposite", () => {
74
+ const sortingState: SortingState = [{ id: "age", desc: false }];
75
+ const setSorting = vi.fn();
76
+ const clearSorting = vi.fn();
77
+
78
+ // Click Desc on age - should toggle to descending
79
+ handleSort("age", true, sortingState, setSorting, clearSorting);
80
+
81
+ expect(setSorting).toHaveBeenCalledWith([{ id: "age", desc: true }]);
82
+ expect(clearSorting).not.toHaveBeenCalled();
83
+ });
84
+
85
+ it("correctly calculates priority numbers", () => {
86
+ const sortingState: SortingState = [
87
+ { id: "name", desc: false },
88
+ { id: "age", desc: true },
89
+ { id: "dept", desc: false },
90
+ ];
91
+
92
+ // Priority is index + 1
93
+ const nameSort = sortingState.find((s) => s.id === "name");
94
+ const namePriority = nameSort ? sortingState.indexOf(nameSort) + 1 : null;
95
+ expect(namePriority).toBe(1);
96
+
97
+ const deptSort = sortingState.find((s) => s.id === "dept");
98
+ const deptPriority = deptSort ? sortingState.indexOf(deptSort) + 1 : null;
99
+ expect(deptPriority).toBe(3);
100
+ });
101
+
102
+ it("handles removing column from middle of stack", () => {
103
+ const sortingState: SortingState = [
104
+ { id: "name", desc: false },
105
+ { id: "age", desc: true },
106
+ { id: "dept", desc: false },
107
+ ];
108
+ const setSorting = vi.fn();
109
+ const clearSorting = vi.fn();
110
+
111
+ // Click Desc on age again - should remove it
112
+ handleSort("age", true, sortingState, setSorting, clearSorting);
113
+
114
+ expect(clearSorting).toHaveBeenCalled();
115
+ // After removal, dept should move from priority 3 to priority 2
116
+ });
117
+ });
@@ -1,7 +1,7 @@
1
1
  /* Copyright 2024 Marimo. All rights reserved. */
2
2
  "use no memo";
3
3
 
4
- import type { Column } from "@tanstack/react-table";
4
+ import type { Column, Table } from "@tanstack/react-table";
5
5
  import { capitalize } from "lodash-es";
6
6
  import { FilterIcon, MinusIcon, TextIcon, XIcon } from "lucide-react";
7
7
  import { useMemo, useRef, useState } from "react";
@@ -68,6 +68,7 @@ interface DataTableColumnHeaderProps<TData, TValue>
68
68
  column: Column<TData, TValue>;
69
69
  header: React.ReactNode;
70
70
  calculateTopKRows?: CalculateTopKRows;
71
+ table?: Table<TData>;
71
72
  }
72
73
 
73
74
  export const DataTableColumnHeader = <TData, TValue>({
@@ -75,6 +76,7 @@ export const DataTableColumnHeader = <TData, TValue>({
75
76
  header,
76
77
  className,
77
78
  calculateTopKRows,
79
+ table,
78
80
  }: DataTableColumnHeaderProps<TData, TValue>) => {
79
81
  const [isFilterValueOpen, setIsFilterValueOpen] = useState(false);
80
82
  const { locale } = useLocale();
@@ -117,7 +119,7 @@ export const DataTableColumnHeader = <TData, TValue>({
117
119
  </DropdownMenuTrigger>
118
120
  <DropdownMenuContent align="start">
119
121
  {renderDataType(column)}
120
- {renderSorts(column)}
122
+ {renderSorts(column, table)}
121
123
  {renderCopyColumn(column)}
122
124
  {renderColumnPinning(column)}
123
125
  {renderColumnWrapping(column)}
@@ -165,7 +165,7 @@ export function generateColumns<T>({
165
165
  return row[key as keyof T];
166
166
  },
167
167
 
168
- header: ({ column }) => {
168
+ header: ({ column, table }) => {
169
169
  const stats = chartSpecModel?.getColumnStats(key);
170
170
  const dtype = column.columnDef.meta?.dtype;
171
171
  const headerTitle = headerTooltip?.[key];
@@ -208,6 +208,7 @@ export function generateColumns<T>({
208
208
  header={headerWithTooltip}
209
209
  column={column}
210
210
  calculateTopKRows={calculateTopKRows}
211
+ table={table}
211
212
  />
212
213
  );
213
214
 
@@ -215,8 +215,13 @@ const DataTableInternal = <TData,>({
215
215
  manualPagination: manualPagination,
216
216
  getPaginationRowModel: getPaginationRowModel(),
217
217
  // sorting
218
- ...(setSorting ? { onSortingChange: setSorting } : {}),
218
+ ...(setSorting
219
+ ? {
220
+ onSortingChange: setSorting,
221
+ }
222
+ : {}),
219
223
  manualSorting: manualSorting,
224
+ enableMultiSort: true,
220
225
  getSortedRowModel: getSortedRowModel(),
221
226
  // filtering
222
227
  manualFiltering: true,
@@ -302,7 +307,7 @@ const DataTableInternal = <TData,>({
302
307
  )}
303
308
  <Table className="relative" ref={tableRef}>
304
309
  {showLoadingBar && (
305
- <div className="absolute top-0 left-0 h-[3px] w-1/2 bg-primary animate-slide" />
310
+ <thead className="absolute top-0 left-0 h-[3px] w-1/2 bg-primary animate-slide" />
306
311
  )}
307
312
  {renderTableHeader(table, Boolean(maxHeight))}
308
313
  <CellSelectionProvider>
@@ -1,7 +1,7 @@
1
1
  /* Copyright 2024 Marimo. All rights reserved. */
2
2
 
3
3
  import { PinLeftIcon, PinRightIcon } from "@radix-ui/react-icons";
4
- import type { Column } from "@tanstack/react-table";
4
+ import type { Column, SortDirection, Table } from "@tanstack/react-table";
5
5
  import {
6
6
  AlignJustifyIcon,
7
7
  ArrowDownWideNarrowIcon,
@@ -163,27 +163,80 @@ export function renderCopyColumn<TData, TValue>(column: Column<TData, TValue>) {
163
163
  const AscIcon = ArrowUpNarrowWideIcon;
164
164
  const DescIcon = ArrowDownWideNarrowIcon;
165
165
 
166
- export function renderSorts<TData, TValue>(column: Column<TData, TValue>) {
166
+ export function renderSorts<TData, TValue>(
167
+ column: Column<TData, TValue>,
168
+ table?: Table<TData>,
169
+ ) {
167
170
  if (!column.getCanSort()) {
168
171
  return null;
169
172
  }
170
173
 
174
+ const sortDirection = column.getIsSorted();
175
+ const sortingIndex = column.getSortIndex();
176
+
177
+ const sortingState = table?.getState().sorting;
178
+ const hasMultiSort = sortingState?.length && sortingState.length > 1;
179
+
180
+ const renderSortIndex = () => {
181
+ return (
182
+ <span className="ml-auto text-xs font-medium">{sortingIndex + 1}</span>
183
+ );
184
+ };
185
+
186
+ const renderClearSort = () => {
187
+ if (!sortDirection) {
188
+ return null;
189
+ }
190
+
191
+ if (!hasMultiSort) {
192
+ // render clear sort for this column
193
+ return (
194
+ <DropdownMenuItem onClick={() => column.clearSorting()}>
195
+ <ChevronsUpDown className="mo-dropdown-icon" />
196
+ Clear sort
197
+ </DropdownMenuItem>
198
+ );
199
+ }
200
+
201
+ // render clear sort for all columns
202
+ return (
203
+ <DropdownMenuItem onClick={() => table?.resetSorting()}>
204
+ <ChevronsUpDown className="mo-dropdown-icon" />
205
+ Clear all sorts
206
+ </DropdownMenuItem>
207
+ );
208
+ };
209
+
210
+ const toggleSort = (direction: SortDirection) => {
211
+ // Clear sort if clicking the same direction
212
+ if (sortDirection === direction) {
213
+ column.clearSorting();
214
+ } else {
215
+ // Toggle sort direction
216
+ const descending = direction === "desc";
217
+ column.toggleSorting(descending, true);
218
+ }
219
+ };
220
+
171
221
  return (
172
222
  <>
173
- <DropdownMenuItem onClick={() => column.toggleSorting(false)}>
223
+ <DropdownMenuItem
224
+ onClick={() => toggleSort("asc")}
225
+ className={sortDirection === "asc" ? "bg-accent" : ""}
226
+ >
174
227
  <AscIcon className="mo-dropdown-icon" />
175
228
  Asc
229
+ {sortDirection === "asc" && renderSortIndex()}
176
230
  </DropdownMenuItem>
177
- <DropdownMenuItem onClick={() => column.toggleSorting(true)}>
231
+ <DropdownMenuItem
232
+ onClick={() => toggleSort("desc")}
233
+ className={sortDirection === "desc" ? "bg-accent" : ""}
234
+ >
178
235
  <DescIcon className="mo-dropdown-icon" />
179
236
  Desc
237
+ {sortDirection === "desc" && renderSortIndex()}
180
238
  </DropdownMenuItem>
181
- {column.getIsSorted() && (
182
- <DropdownMenuItem onClick={() => column.clearSorting()}>
183
- <ChevronsUpDown className="mo-dropdown-icon" />
184
- Clear sort
185
- </DropdownMenuItem>
186
- )}
239
+ {renderClearSort()}
187
240
  <DropdownMenuSeparator />
188
241
  </>
189
242
  );
@@ -1,13 +1,18 @@
1
1
  /* Copyright 2024 Marimo. All rights reserved. */
2
2
 
3
3
  import { useAtomValue } from "jotai";
4
- import React, { memo, use, useId } from "react";
4
+ import React, { memo, use } from "react";
5
5
  import { Handle, Position, useStore } from "reactflow";
6
6
  import { TinyCode } from "@/components/editor/cell/TinyCode";
7
7
  import { useCellIds } from "@/core/cells/cells";
8
8
  import { displayCellName } from "@/core/cells/names";
9
9
  import { cn } from "@/utils/cn";
10
- import { type CustomNodeProps, getNodeHeight } from "./elements";
10
+ import {
11
+ type CustomNodeProps,
12
+ getNodeHeight,
13
+ INPUTS_HANDLE_ID,
14
+ OUTPUTS_HANDLE_ID,
15
+ } from "./elements";
11
16
  import type { LayoutDirection } from "./types";
12
17
 
13
18
  function getWidth(canvasWidth: number) {
@@ -37,24 +42,19 @@ export const CustomNode = memo((props: CustomNodeProps) => {
37
42
  const reactFlowWidth = useStore(({ width }) => width);
38
43
  const edgeMarkers = use(EdgeMarkerContext);
39
44
 
40
- const inputOneId = useId();
41
- const inputTwoId = useId();
42
- const outputOneId = useId();
43
- const outputTwoId = useId();
44
-
45
45
  const linesOfCode = cell.code.split("\n").length;
46
46
  return (
47
47
  <div>
48
48
  <Handle
49
49
  type="target"
50
- id={inputOneId}
50
+ id={INPUTS_HANDLE_ID}
51
51
  data-testid="input-one"
52
52
  position={edgeMarkers === "LR" ? Position.Left : Position.Top}
53
53
  style={{ background: color }}
54
54
  />
55
55
  <Handle
56
56
  type="source"
57
- id={inputTwoId}
57
+ id={INPUTS_HANDLE_ID}
58
58
  data-testid="input-two"
59
59
  position={edgeMarkers === "LR" ? Position.Left : Position.Top}
60
60
  style={{ background: color }}
@@ -76,14 +76,14 @@ export const CustomNode = memo((props: CustomNodeProps) => {
76
76
  </div>
77
77
  <Handle
78
78
  type="source"
79
- id={outputOneId}
79
+ id={OUTPUTS_HANDLE_ID}
80
80
  data-testid="output-one"
81
81
  position={edgeMarkers === "LR" ? Position.Right : Position.Bottom}
82
82
  style={{ background: color }}
83
83
  />
84
84
  <Handle
85
85
  type="target"
86
- id={outputTwoId}
86
+ id={OUTPUTS_HANDLE_ID}
87
87
  data-testid="output-two"
88
88
  position={edgeMarkers === "LR" ? Position.Right : Position.Bottom}
89
89
  style={{ background: color }}
@@ -19,6 +19,10 @@ export function getNodeHeight(linesOfCode: number) {
19
19
  return Math.min(linesOfCode * LINE_HEIGHT + 35, 200);
20
20
  }
21
21
 
22
+ // The nodes must have the same handle IDs to ensure edges connect correctly
23
+ export const OUTPUTS_HANDLE_ID = "outputs";
24
+ export const INPUTS_HANDLE_ID = "inputs";
25
+
22
26
  interface ElementsBuilder {
23
27
  createElements: (
24
28
  cellIds: CellId[],
@@ -93,8 +97,8 @@ export class VerticalElementsBuilder implements ElementsBuilder {
93
97
  }
94
98
  visited.add(key);
95
99
  edges.push(
96
- this.createEdge(fromId, toId, "inputs"),
97
- this.createEdge(fromId, toId, "outputs"),
100
+ this.createEdge(fromId, toId, INPUTS_HANDLE_ID),
101
+ this.createEdge(fromId, toId, OUTPUTS_HANDLE_ID),
98
102
  );
99
103
  }
100
104
  }
@@ -114,8 +118,9 @@ export class TreeElementsBuilder implements ElementsBuilder {
114
118
  // Make thicker
115
119
  style: { strokeWidth: 2 },
116
120
  source: source,
117
- sourceHandle: "outputs",
118
- targetHandle: "inputs",
121
+ // Use the same handle ids as the custom node
122
+ sourceHandle: OUTPUTS_HANDLE_ID,
123
+ targetHandle: INPUTS_HANDLE_ID,
119
124
  target: target,
120
125
  };
121
126
  }
@@ -12,7 +12,7 @@ import {
12
12
  WorkflowIcon,
13
13
  XIcon,
14
14
  } from "lucide-react";
15
- import React, { memo } from "react";
15
+ import React, { memo, useId } from "react";
16
16
  import { type Edge, Panel } from "reactflow";
17
17
  import { getCellEditorView } from "@/core/cells/cells";
18
18
  import type { CellId } from "@/core/cells/ids";
@@ -44,6 +44,8 @@ export const GraphToolbar: React.FC<Props> = memo(
44
44
  onSettingsChange({ ...settings, [key]: value });
45
45
  };
46
46
 
47
+ const checkboxId = useId();
48
+
47
49
  const settingsButton = (
48
50
  <Popover>
49
51
  <PopoverTrigger asChild={true}>
@@ -56,13 +58,13 @@ export const GraphToolbar: React.FC<Props> = memo(
56
58
  <div className="flex items-center gap-2">
57
59
  <Checkbox
58
60
  data-testid="hide-pure-markdown-checkbox"
59
- id="hide-pure-markdown"
61
+ id={checkboxId}
60
62
  checked={settings.hidePureMarkdown}
61
63
  onCheckedChange={(checked) =>
62
64
  handleSettingChange("hidePureMarkdown", Boolean(checked))
63
65
  }
64
66
  />
65
- <Label htmlFor="hide-pure-markdown">Hide pure markdown</Label>
67
+ <Label htmlFor={checkboxId}>Hide pure markdown</Label>
66
68
  </div>
67
69
  </PopoverContent>
68
70
  </Popover>
@@ -114,7 +116,7 @@ export const GraphSelectionPanel: React.FC<{
114
116
  onClearSelection: () => void;
115
117
  edges: Edge[];
116
118
  variables: Variables;
117
- }> = memo(({ selection, edges, variables, onClearSelection }) => {
119
+ }> = memo(({ selection, variables, onClearSelection }) => {
118
120
  if (!selection) {
119
121
  return null;
120
122
  }
@@ -49,13 +49,18 @@ const LazyVegaLite = React.lazy(() =>
49
49
  type MimeBundle = Record<OutputMessage["mimetype"], { [key: string]: unknown }>;
50
50
  type MimeBundleOrTuple = MimeBundle | [MimeBundle, { [key: string]: unknown }];
51
51
 
52
+ export type OnRefactorWithAI = (opts: {
53
+ prompt: string;
54
+ triggerImmediately: boolean;
55
+ }) => void;
56
+
52
57
  /**
53
58
  * Renders an output based on an OutputMessage.
54
59
  */
55
60
  export const OutputRenderer: React.FC<{
56
61
  message: Pick<OutputMessage, "channel" | "data" | "mimetype">;
57
62
  cellId?: CellId;
58
- onRefactorWithAI?: (opts: { prompt: string }) => void;
63
+ onRefactorWithAI?: OnRefactorWithAI;
59
64
  wrapText?: boolean;
60
65
  }> = memo((props) => {
61
66
  const { message, onRefactorWithAI, cellId, wrapText } = props;