@marimo-team/islands 0.16.4 → 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 (589) hide show
  1. package/dist/{ConnectedDataExplorerComponent-CCjhPKMy.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-D5C6JAJf.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-CYfKmSNp.js → glide-data-editor-DHuN8kQ8.js} +1701 -1771
  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 +8234 -8633
  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-BlJDcO4M.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-Dcb1hf55.js → types-CRXV0KD5.js} +385 -252
  245. package/dist/{useAsyncData-DAtPzJzP.js → useAsyncData-uMVTsDI9.js} +1 -1
  246. package/dist/{useDateFormatter-CiUlIu7v.js → useDateFormatter-Dcz7jstn.js} +6 -6
  247. package/dist/{useTheme-CmsvrO5o.js → useTheme-NbEx-ZNV.js} +14 -10
  248. package/dist/vb-Cb1HQHii.js +4 -0
  249. package/dist/vbscript-CpXOP4wZ.js +4 -0
  250. package/dist/{vega-component-B3LA6qbm.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/__tests__/chat-history.test.ts +123 -0
  264. package/src/components/app-config/ai-config.tsx +23 -0
  265. package/src/components/app-config/mcp-config.tsx +42 -2
  266. package/src/components/app-config/user-config-form.tsx +29 -49
  267. package/src/components/chat/acp/__tests__/context-utils.test.ts +1 -1
  268. package/src/components/chat/acp/agent-panel.tsx +1 -1
  269. package/src/components/chat/acp/blocks.tsx +46 -53
  270. package/src/components/chat/acp/common.tsx +1 -1
  271. package/src/components/chat/acp/context-utils.ts +1 -1
  272. package/src/components/chat/acp/session-tabs.tsx +1 -1
  273. package/src/components/chat/chat-history-popover.tsx +125 -0
  274. package/src/components/chat/chat-history-utils.ts +69 -0
  275. package/src/components/chat/chat-panel.tsx +9 -57
  276. package/src/components/chat/chat-utils.ts +11 -4
  277. package/src/components/data-table/__tests__/header-items.test.tsx +117 -0
  278. package/src/components/data-table/column-header.tsx +4 -2
  279. package/src/components/data-table/columns.tsx +2 -1
  280. package/src/components/data-table/data-table.tsx +7 -2
  281. package/src/components/data-table/header-items.tsx +63 -10
  282. package/src/components/dependency-graph/custom-node.tsx +11 -11
  283. package/src/components/dependency-graph/elements.ts +9 -4
  284. package/src/components/dependency-graph/panels.tsx +6 -4
  285. package/src/components/editor/Output.tsx +6 -1
  286. package/src/components/editor/__tests__/data-attributes.test.tsx +1 -1
  287. package/src/components/editor/actions/useNotebookActions.tsx +2 -4
  288. package/src/components/editor/ai/__tests__/completion-utils.test.ts +23 -31
  289. package/src/components/editor/ai/ai-completion-editor.tsx +135 -5
  290. package/src/components/editor/ai/completion-handlers.tsx +106 -22
  291. package/src/components/editor/cell/CreateCellButton.tsx +14 -2
  292. package/src/components/editor/cell/code/cell-editor.tsx +6 -0
  293. package/src/components/editor/chrome/panels/cache-panel.tsx +216 -0
  294. package/src/components/editor/chrome/panels/empty-state.tsx +3 -1
  295. package/src/components/editor/chrome/types.ts +66 -22
  296. package/src/components/editor/chrome/wrapper/app-chrome.tsx +2 -0
  297. package/src/components/editor/database/schemas.ts +2 -10
  298. package/src/components/editor/errors/auto-fix.tsx +138 -32
  299. package/src/components/editor/errors/fix-mode.ts +15 -0
  300. package/src/components/editor/navigation/__tests__/clipboard.test.ts +0 -5
  301. package/src/components/editor/navigation/clipboard.ts +2 -1
  302. package/src/components/editor/{Cell.tsx → notebook-cell.tsx} +25 -8
  303. package/src/components/editor/output/ConsoleOutput.tsx +27 -33
  304. package/src/components/editor/output/JsonOutput.tsx +9 -0
  305. package/src/components/editor/output/MarimoErrorOutput.tsx +4 -34
  306. package/src/components/editor/output/MarimoTracebackOutput.tsx +10 -7
  307. package/src/components/editor/output/__tests__/json-output.test.ts +43 -0
  308. package/src/components/editor/package-alert.tsx +3 -0
  309. package/src/components/editor/renderers/{CellArray.tsx → cell-array.tsx} +1 -1
  310. package/src/components/forms/__tests__/form-utils.test.ts +6 -4
  311. package/src/components/icons/copy-icon.tsx +11 -5
  312. package/src/components/mcp/hooks.ts +48 -0
  313. package/src/components/mcp/mcp-status-indicator.tsx +144 -0
  314. package/src/components/shortcuts/renderShortcut.tsx +3 -1
  315. package/src/components/ui/button.tsx +2 -0
  316. package/src/components/ui/confirmation-button.tsx +85 -0
  317. package/src/components/ui/number-field.tsx +4 -1
  318. package/src/components/ui/switch.tsx +2 -0
  319. package/src/core/ai/context/providers/__tests__/__snapshots__/tables.test.ts.snap +13 -19
  320. package/src/core/ai/context/providers/__tests__/cell-output.test.ts +0 -1
  321. package/src/core/ai/context/providers/__tests__/datasource.test.ts +14 -7
  322. package/src/core/ai/context/providers/__tests__/error.test.ts +24 -15
  323. package/src/core/ai/context/providers/cell-output.ts +5 -5
  324. package/src/core/ai/context/providers/common.ts +13 -4
  325. package/src/core/ai/context/providers/datasource.ts +56 -21
  326. package/src/core/ai/context/providers/error.ts +3 -4
  327. package/src/core/ai/context/providers/file.ts +2 -2
  328. package/src/core/ai/context/providers/tables.ts +36 -8
  329. package/src/core/ai/context/providers/variable.ts +2 -3
  330. package/src/core/ai/state.ts +6 -3
  331. package/src/core/ai/tools/__tests__/registry.test.ts +33 -8
  332. package/src/core/ai/tools/base.ts +81 -1
  333. package/src/core/ai/tools/registry.ts +36 -10
  334. package/src/core/ai/tools/sample-tool.ts +44 -8
  335. package/src/core/cache/requests.ts +5 -0
  336. package/src/core/cells/__tests__/cells.test.ts +6 -6
  337. package/src/core/cells/cells.ts +13 -14
  338. package/src/core/cells/scrollCellIntoView.ts +1 -1
  339. package/src/core/codemirror/__tests__/__snapshots__/setup.test.ts.snap +2 -0
  340. package/src/core/codemirror/__tests__/replace-editor-content.test.ts +336 -0
  341. package/src/core/codemirror/__tests__/setup.test.ts +1 -0
  342. package/src/core/codemirror/cm.ts +3 -2
  343. package/src/core/codemirror/find-replace/navigate.ts +2 -2
  344. package/src/core/codemirror/format.ts +2 -9
  345. package/src/core/codemirror/language/__tests__/sql.test.ts +24 -6
  346. package/src/core/codemirror/language/languages/python.ts +1 -3
  347. package/src/core/codemirror/language/languages/sql/sql.ts +23 -13
  348. package/src/core/codemirror/language/panel/panel.tsx +1 -6
  349. package/src/core/codemirror/language/utils.ts +3 -8
  350. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +21 -14
  351. package/src/core/codemirror/lsp/federated-lsp.ts +20 -9
  352. package/src/core/codemirror/lsp/notebook-lsp.ts +35 -29
  353. package/src/core/codemirror/lsp/types.ts +0 -13
  354. package/src/core/codemirror/replace-editor-content.ts +87 -0
  355. package/src/core/config/__tests__/config-schema.test.ts +5 -0
  356. package/src/core/config/config-schema.ts +10 -0
  357. package/src/core/config/feature-flag.tsx +2 -6
  358. package/src/core/edit-app.tsx +1 -1
  359. package/src/core/errors/__tests__/errors.test.ts +1 -0
  360. package/src/core/errors/errors.ts +20 -6
  361. package/src/core/islands/bridge.ts +2 -0
  362. package/src/core/islands/main.ts +4 -0
  363. package/src/core/kernel/messages.ts +1 -0
  364. package/src/core/network/CachingRequestRegistry.ts +2 -2
  365. package/src/core/network/requests-network.ts +14 -0
  366. package/src/core/network/requests-static.ts +2 -0
  367. package/src/core/network/requests-toasting.ts +2 -0
  368. package/src/core/network/types.ts +5 -0
  369. package/src/core/saving/save-component.tsx +43 -36
  370. package/src/core/wasm/bridge.ts +2 -0
  371. package/src/core/websocket/useMarimoWebSocket.tsx +8 -0
  372. package/src/css/app/codemirror-completions.css +1 -1
  373. package/src/custom.d.ts +2 -0
  374. package/src/plugins/core/registerReactComponent.tsx +5 -1
  375. package/src/plugins/impl/DataTablePlugin.tsx +19 -19
  376. package/src/plugins/impl/__tests__/DateTimePickerPlugin.test.tsx +32 -0
  377. package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
  378. package/src/plugins/impl/chat/chat-ui.tsx +17 -2
  379. package/src/plugins/impl/chat/types.ts +1 -1
  380. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +7 -2
  381. package/src/plugins/impl/plotly/__tests__/parse-from-template.test.ts +17 -0
  382. package/src/plugins/impl/plotly/parse-from-template.ts +2 -1
  383. package/src/stories/cell.stories.tsx +1 -1
  384. package/src/stories/layout/vertical/one-column.stories.tsx +1 -1
  385. package/src/utils/__tests__/formatting.test.ts +107 -0
  386. package/src/utils/__tests__/json-parser.test.ts +13 -0
  387. package/src/utils/copy.ts +6 -0
  388. package/src/utils/formatting.ts +51 -0
  389. package/src/utils/json/json-parser.ts +28 -3
  390. package/src/utils/numbers.ts +24 -1
  391. package/dist/any-language-editor-CVFQlioK.js +0 -156
  392. package/dist/apl-ChlaBfxB.js +0 -4
  393. package/dist/architecture-O4VJ6CD3-BVeaxUcM.js +0 -21
  394. package/dist/asciiarmor-CcJmm3l_.js +0 -4
  395. package/dist/asn1-ThRYxoBE.js +0 -4
  396. package/dist/assets/__vite-browser-external-BeNtI_tJ.js +0 -1
  397. package/dist/assets/worker-DnuXpGWN.js +0 -54
  398. package/dist/brainfuck-CEM0JgDn.js +0 -4
  399. package/dist/chunk-EXTU4WIE-DECT9AAK.js +0 -14
  400. package/dist/chunk-S3R3BYOJ-DMQ1yeyq.js +0 -386
  401. package/dist/classDiagram-KNZD7YFC-BG53O6Jt.js +0 -39
  402. package/dist/classDiagram-v2-RKCZMP56-BmKILsGU.js +0 -39
  403. package/dist/clojure-B7RHyE9t.js +0 -4
  404. package/dist/cmake-TeTMP4I5.js +0 -4
  405. package/dist/cobol-DI-mxUER.js +0 -4
  406. package/dist/coffeescript-DHUFLqWp.js +0 -4
  407. package/dist/commonlisp-SLiUrh1m.js +0 -4
  408. package/dist/crystal-B4fY1ZfJ.js +0 -4
  409. package/dist/css-Bdoq3TzK.js +0 -5
  410. package/dist/cypher-CBU182fp.js +0 -4
  411. package/dist/d-D8myDZeH.js +0 -4
  412. package/dist/data-grid-overlay-editor-qNmJk2x0.js +0 -135
  413. package/dist/diagram-QEK2KX5R-fu8Noi3H.js +0 -245
  414. package/dist/diff-DJF_UB7H.js +0 -4
  415. package/dist/dist-52-_pKoy.js +0 -6
  416. package/dist/dist-6DOMStFn.js +0 -6
  417. package/dist/dist-B334aW7p.js +0 -10
  418. package/dist/dist-BOI9lUz-.js +0 -12
  419. package/dist/dist-C06uhBzF.js +0 -6
  420. package/dist/dist-CGkpguCB.js +0 -6
  421. package/dist/dist-CrApzUED.js +0 -6
  422. package/dist/dist-Dp2GLdCl.js +0 -14
  423. package/dist/dist-WHFsbMDr.js +0 -6
  424. package/dist/dist-hyKcTPG9.js +0 -10
  425. package/dist/dtd-DY8q65lC.js +0 -4
  426. package/dist/dylan-CBLcjWCi.js +0 -4
  427. package/dist/ecl-BSXPNfOw.js +0 -4
  428. package/dist/eiffel-BJf0PQX-.js +0 -4
  429. package/dist/elm-DWQwPCZS.js +0 -4
  430. package/dist/erlang-BWBaGZ5e.js +0 -4
  431. package/dist/factor-DT1-MBPl.js +0 -5
  432. package/dist/forth-D9GDt3FB.js +0 -4
  433. package/dist/fortran-DHkRhDWw.js +0 -4
  434. package/dist/gas-7lQEOM0H.js +0 -4
  435. package/dist/gherkin-BLLyroYi.js +0 -4
  436. package/dist/gitGraph-ZV4HHKMB-z2v_cInC.js +0 -21
  437. package/dist/groovy-C-wabwj0.js +0 -4
  438. package/dist/haskell-DaxVQ_d1.js +0 -4
  439. package/dist/haxe-C2yLoC7h.js +0 -5
  440. package/dist/idl-DQBP8i7k.js +0 -4
  441. package/dist/info-63CPKGFF-GS4w6pCB.js +0 -21
  442. package/dist/infoDiagram-STP46IZ2-DE9YYPFg.js +0 -44
  443. package/dist/javascript-DRwFV9r5.js +0 -5
  444. package/dist/jinja2-CNoIpVmN.js +0 -4
  445. package/dist/julia-DXDf-GhP.js +0 -4
  446. package/dist/livescript-S2uhJQx7.js +0 -4
  447. package/dist/lua-Bvgs0y2G.js +0 -4
  448. package/dist/mathematica-D2zqfwIg.js +0 -4
  449. package/dist/mbox-SBcPaDuZ.js +0 -4
  450. package/dist/mirc-hkQc7sVF.js +0 -4
  451. package/dist/mllike-DRWPBlr9.js +0 -6
  452. package/dist/modelica-CO2ROGlP.js +0 -4
  453. package/dist/mscgen-BpX61bO6.js +0 -6
  454. package/dist/mumps-BCnFeIn6.js +0 -4
  455. package/dist/nsis-BaTOxlD1.js +0 -5
  456. package/dist/ntriples-zEo5BWjr.js +0 -4
  457. package/dist/octave-BE0RnCM9.js +0 -4
  458. package/dist/oz-C4_2Ttul.js +0 -4
  459. package/dist/packet-HUATNLJX-CjHqJIqk.js +0 -21
  460. package/dist/pascal-Q3jJucpw.js +0 -4
  461. package/dist/perl-DkXZIWHF.js +0 -4
  462. package/dist/pie-WTHONI2E-D67gLWtR.js +0 -21
  463. package/dist/pig-DCgEHdsu.js +0 -4
  464. package/dist/powershell-3rK_nRRJ.js +0 -236
  465. package/dist/powershell-Eo2-7MoM.js +0 -4
  466. package/dist/properties-C0IOX8WR.js +0 -4
  467. package/dist/protobuf--lGQUSRO.js +0 -4
  468. package/dist/pug-Cf8AQHMJ.js +0 -5
  469. package/dist/puppet-D7Z3dTJn.js +0 -4
  470. package/dist/python-FHIx_i8Y.js +0 -5
  471. package/dist/q-B7UA1feM.js +0 -4
  472. package/dist/r-Cc9R2A7N.js +0 -4
  473. package/dist/radar-NJJJXTRR-C-AZP_Te.js +0 -21
  474. package/dist/rpm-vhJNlrQ6.js +0 -5
  475. package/dist/ruby-CVluPY0M.js +0 -4
  476. package/dist/sas-A8DL8oy3.js +0 -4
  477. package/dist/scheme-6xHHcSXC.js +0 -4
  478. package/dist/shell-DHN-e5rf.js +0 -4
  479. package/dist/sieve-BuQwLY02.js +0 -4
  480. package/dist/smalltalk-BA4HPg2H.js +0 -4
  481. package/dist/sparql-Bf4yCuy3.js +0 -4
  482. package/dist/stateDiagram-v2-UMBNRL4Z-C_0FUzzk.js +0 -38
  483. package/dist/stex-D-I1cYeE.js +0 -5
  484. package/dist/stylus-BMeped2l.js +0 -4
  485. package/dist/swift-lwEdlZoC.js +0 -4
  486. package/dist/tcl-B03ipeqv.js +0 -4
  487. package/dist/toml-BLgrVtfu.js +0 -4
  488. package/dist/treemap-75Q7IDZK-DTvwfpWt.js +0 -21
  489. package/dist/troff-g6EjN2O2.js +0 -4
  490. package/dist/ttcn-Dzvba8jK.js +0 -4
  491. package/dist/ttcn-cfg-CadG0p1K.js +0 -4
  492. package/dist/turtle-DkXAMWo9.js +0 -4
  493. package/dist/vb-C5dCiel8.js +0 -4
  494. package/dist/vbscript-I4bDEQln.js +0 -4
  495. package/dist/velocity-mt0fDwFH.js +0 -4
  496. package/dist/verilog-Dxq3KJkc.js +0 -4
  497. package/dist/vhdl-Km0QUlV-.js +0 -4
  498. package/dist/webidl-B3lJ2MRL.js +0 -4
  499. package/dist/xquery-CcIxNPEe.js +0 -4
  500. package/dist/yacas-oMa-f-tN.js +0 -4
  501. package/dist/z80-D03Nvn6l.js +0 -4
  502. /package/dist/{apl-DZqo8Elt.js → apl-CEHentF4.js} +0 -0
  503. /package/dist/{asciiarmor-DTzHAIeX.js → asciiarmor-DURYiCS0.js} +0 -0
  504. /package/dist/{asn1-DrAXKsZH.js → asn1-ETAiEoXY.js} +0 -0
  505. /package/dist/{asterisk-oF4U3h48.js → asterisk-DTpbbXPb.js} +0 -0
  506. /package/dist/{brainfuck-BYgLey30.js → brainfuck-BWQep-SA.js} +0 -0
  507. /package/dist/{clojure-Bs2M3OUY.js → clojure-BzFapDkA.js} +0 -0
  508. /package/dist/{cmake-DpI8vxJN.js → cmake-DvlbIC8x.js} +0 -0
  509. /package/dist/{cobol-BQyrWo72.js → cobol-BrEI4cPR.js} +0 -0
  510. /package/dist/{coffeescript-9ke9UHmw.js → coffeescript-B6cvu8mO.js} +0 -0
  511. /package/dist/{common-keywords-BzgeAvH1.js → common-keywords-WqQm7W8t.js} +0 -0
  512. /package/dist/{commonlisp-DghUdrUH.js → commonlisp-BIT8PQqi.js} +0 -0
  513. /package/dist/{crystal-DEf_SInh.js → crystal-B_UcPArT.js} +0 -0
  514. /package/dist/{css-BzTU9lNO.js → css-dHbnt_zl.js} +0 -0
  515. /package/dist/{cypher-a2v0c11S.js → cypher-Dh3FOpL7.js} +0 -0
  516. /package/dist/{d-SAswny-M.js → d-CQD1IHee.js} +0 -0
  517. /package/dist/{diff-OJ-xLXcG.js → diff-CpF_IDx0.js} +0 -0
  518. /package/dist/{dtd-BsUf-rer.js → dtd-DYoNpy6c.js} +0 -0
  519. /package/dist/{duckdb-keywords-B0NOra5o.js → duckdb-keywords-CdIsl9L0.js} +0 -0
  520. /package/dist/{dylan-C0ZYngjn.js → dylan-Bc_2G1E-.js} +0 -0
  521. /package/dist/{ebnf-DF1xx0b_.js → ebnf-jGVT_YpN.js} +0 -0
  522. /package/dist/{ecl-Bsuvoouq.js → ecl-UIU-P-Ar.js} +0 -0
  523. /package/dist/{eiffel-DgfSpLi-.js → eiffel-C90Oyuix.js} +0 -0
  524. /package/dist/{elm-GNxDj-5E.js → elm-B9fWSySj.js} +0 -0
  525. /package/dist/{erlang-Ds3uY1kL.js → erlang-Ccff0UAn.js} +0 -0
  526. /package/dist/{fcl-CqBgSioc.js → fcl-CGR8NxAg.js} +0 -0
  527. /package/dist/{forth-JCaLysGk.js → forth-U1ROGcBY.js} +0 -0
  528. /package/dist/{fortran-Dc2AoKAl.js → fortran-3nOkjDmc.js} +0 -0
  529. /package/dist/{gas-Q4Uz82YW.js → gas-B_4H5FzV.js} +0 -0
  530. /package/dist/{gherkin-Dpxe49sQ.js → gherkin-B0eru5Uz.js} +0 -0
  531. /package/dist/{groovy-D8mTRCu6.js → groovy-dqjtZUVf.js} +0 -0
  532. /package/dist/{haskell-2_8cC4wY.js → haskell-DFzCCQzo.js} +0 -0
  533. /package/dist/{haxe-Bl9zkZlz.js → haxe-Da8Pj5RT.js} +0 -0
  534. /package/dist/{http-DKCqY6yS.js → http-1HACL_9s.js} +0 -0
  535. /package/dist/{idl-Dn-HNfGW.js → idl-D3NXs5iM.js} +0 -0
  536. /package/dist/{jinja2-JjFiAGKk.js → jinja2-gBHAxUdF.js} +0 -0
  537. /package/dist/{julia-R5wne8eu.js → julia-bG-6nJ-_.js} +0 -0
  538. /package/dist/{livescript-DSwokrYj.js → livescript-BlsRC8UJ.js} +0 -0
  539. /package/dist/{lua-CgXfrp2-.js → lua-BbDC0_5w.js} +0 -0
  540. /package/dist/{mathematica-BVli92MR.js → mathematica-YZTe3-PF.js} +0 -0
  541. /package/dist/{mbox-CMFlocdS.js → mbox-CY5idp08.js} +0 -0
  542. /package/dist/{mirc-BkW04Zpc.js → mirc-CbQuFZKk.js} +0 -0
  543. /package/dist/{mllike-DEjvHvNV.js → mllike-DsbHMX-5.js} +0 -0
  544. /package/dist/{modelica-CxDn-oje.js → modelica-CQuvsOQk.js} +0 -0
  545. /package/dist/{mscgen-D78wmE-w.js → mscgen-LIpBP9VR.js} +0 -0
  546. /package/dist/{mumps-Bi0IvPOV.js → mumps-Ct5NXoaG.js} +0 -0
  547. /package/dist/{nginx-DErPZFhX.js → nginx-Dvc62C8z.js} +0 -0
  548. /package/dist/{ntriples-Btyp6wRL.js → ntriples-jVkxWUuv.js} +0 -0
  549. /package/dist/{octave-CZA6-2F8.js → octave-jGOImUB0.js} +0 -0
  550. /package/dist/{oz-Bm6LSNfE.js → oz-Y0FKDMS2.js} +0 -0
  551. /package/dist/{pascal-B4J6a9BH.js → pascal-BaLtPWWB.js} +0 -0
  552. /package/dist/{perl-CzVqxS08.js → perl-CjfE0JLo.js} +0 -0
  553. /package/dist/{pig-Clh03cnn.js → pig-DE4epV99.js} +0 -0
  554. /package/dist/{properties-D7ch1Wyb.js → properties-CLyCG5C-.js} +0 -0
  555. /package/dist/{protobuf-DrkdrMPK.js → protobuf-BjBBs_V4.js} +0 -0
  556. /package/dist/{puppet-BtZG8zdO.js → puppet-ZImLuomA.js} +0 -0
  557. /package/dist/{python-B6FKOVIv.js → python-C9YN71pR.js} +0 -0
  558. /package/dist/{r-Dnvo5-96.js → r-DILmKWWW.js} +0 -0
  559. /package/dist/{rpm-B1DrgfnX.js → rpm-fpIsm1Kr.js} +0 -0
  560. /package/dist/{ruby-CelfUg17.js → ruby-BuiQI41h.js} +0 -0
  561. /package/dist/{sas-DfSQFMWG.js → sas-C76sJ1zF.js} +0 -0
  562. /package/dist/{scheme-BplhaWuO.js → scheme-DHjM-txv.js} +0 -0
  563. /package/dist/{shell-DqU5OS2c.js → shell--7NmGJ9p.js} +0 -0
  564. /package/dist/{sieve-BE4_IyGa.js → sieve-DaPvBv1M.js} +0 -0
  565. /package/dist/{smalltalk-B_WPL8Nx.js → smalltalk-KPvwrjCs.js} +0 -0
  566. /package/dist/{solr-DlJFg7H5.js → solr-PvZUtEDb.js} +0 -0
  567. /package/dist/{sparql-7XIlcOgW.js → sparql-CXSUIQer.js} +0 -0
  568. /package/dist/{spreadsheet-BdZSVwVp.js → spreadsheet-DPJdGPkx.js} +0 -0
  569. /package/dist/{sql-CCrq7lfJ.js → sql-Dp4ZLSIa.js} +0 -0
  570. /package/dist/{stex-BiFc8QAu.js → stex-CeXW4zzk.js} +0 -0
  571. /package/dist/{stylus-DlSH9xpH.js → stylus-BXcmrg9w.js} +0 -0
  572. /package/dist/{swift-e3tMTZgJ.js → swift-DD8I7hKP.js} +0 -0
  573. /package/dist/{tcl-DfZMC20G.js → tcl-B9Lp4GtA.js} +0 -0
  574. /package/dist/{textile-DaSeca5U.js → textile-qdiY0teq.js} +0 -0
  575. /package/dist/{tiddlywiki-dfoiz8pS.js → tiddlywiki-t32lkubq.js} +0 -0
  576. /package/dist/{tiki-yJbQzhma.js → tiki-B0qKrSMl.js} +0 -0
  577. /package/dist/{troff-FN_FrCXR.js → troff-105XJOEu.js} +0 -0
  578. /package/dist/{ttcn-7_i4HlyB.js → ttcn-1_BxDcM8.js} +0 -0
  579. /package/dist/{ttcn-cfg-B46AlBUV.js → ttcn-cfg-Cn_XgXiw.js} +0 -0
  580. /package/dist/{turtle-QQfeFveR.js → turtle-BI6LyfEu.js} +0 -0
  581. /package/dist/{vb-DToPVnLa.js → vb-BecoBfmr.js} +0 -0
  582. /package/dist/{vbscript-CtsNaTz4.js → vbscript-De-zpA4i.js} +0 -0
  583. /package/dist/{velocity-CAoNe6ns.js → velocity-DhlYJTrD.js} +0 -0
  584. /package/dist/{verilog-DrDOMiJq.js → verilog-BDZgxDOW.js} +0 -0
  585. /package/dist/{vhdl-DnO0OEPh.js → vhdl-CV0OKTbp.js} +0 -0
  586. /package/dist/{webidl-Or6d1ZfA.js → webidl-BOM1Fs0O.js} +0 -0
  587. /package/dist/{xquery-CEp_Mcpr.js → xquery-CltP_CGh.js} +0 -0
  588. /package/dist/{yacas-DgnYrSlp.js → yacas-Dch4E2Dg.js} +0 -0
  589. /package/dist/{z80-DlG_kyeB.js → z80-B5Yly27o.js} +0 -0
@@ -1,8 +1,14 @@
1
1
  /* Copyright 2024 Marimo. All rights reserved. */
2
2
 
3
- import { useAtomValue, useSetAtom } from "jotai";
4
- import { WrenchIcon } from "lucide-react";
3
+ import { useAtomValue, useSetAtom, useStore } from "jotai";
4
+ import { ChevronDownIcon, SparklesIcon, WrenchIcon } from "lucide-react";
5
5
  import { Button } from "@/components/ui/button";
6
+ import {
7
+ DropdownMenu,
8
+ DropdownMenuContent,
9
+ DropdownMenuItem,
10
+ DropdownMenuTrigger,
11
+ } from "@/components/ui/dropdown-menu";
6
12
  import { Tooltip } from "@/components/ui/tooltip";
7
13
  import { aiCompletionCellAtom } from "@/core/ai/state";
8
14
  import { notebookAtom, useCellActions } from "@/core/cells/cells";
@@ -10,8 +16,8 @@ import type { CellId } from "@/core/cells/ids";
10
16
  import { aiEnabledAtom } from "@/core/config/config";
11
17
  import { getAutoFixes } from "@/core/errors/errors";
12
18
  import type { MarimoError } from "@/core/kernel/messages";
13
- import { store } from "@/core/state/jotai";
14
19
  import { cn } from "@/utils/cn";
20
+ import { type FixMode, useFixMode } from "./fix-mode";
15
21
 
16
22
  export const AutoFixButton = ({
17
23
  errors,
@@ -22,6 +28,7 @@ export const AutoFixButton = ({
22
28
  cellId: CellId;
23
29
  className?: string;
24
30
  }) => {
31
+ const store = useStore();
25
32
  const { createNewCell } = useCellActions();
26
33
  const aiEnabled = useAtomValue(aiEnabledAtom);
27
34
  const autoFixes = errors.flatMap((error) =>
@@ -37,35 +44,134 @@ export const AutoFixButton = ({
37
44
  // multiple fixes.
38
45
  const firstFix = autoFixes[0];
39
46
 
47
+ const handleFix = (triggerFix: boolean) => {
48
+ const editorView =
49
+ store.get(notebookAtom).cellHandles[cellId].current?.editorView;
50
+ firstFix.onFix({
51
+ addCodeBelow: (code: string) => {
52
+ createNewCell({
53
+ cellId: cellId,
54
+ autoFocus: false,
55
+ before: false,
56
+ code: code,
57
+ });
58
+ },
59
+ editor: editorView,
60
+ cellId: cellId,
61
+ aiFix: {
62
+ setAiCompletionCell,
63
+ triggerFix,
64
+ },
65
+ });
66
+ // Focus the editor
67
+ editorView?.focus();
68
+ };
69
+
70
+ return (
71
+ <div className={cn("my-2", className)}>
72
+ {firstFix.fixType === "ai" ? (
73
+ <AIFixButton
74
+ tooltip={firstFix.description}
75
+ openPrompt={() => handleFix(false)}
76
+ applyAutofix={() => handleFix(true)}
77
+ />
78
+ ) : (
79
+ <Tooltip content={firstFix.description} align="start">
80
+ <Button
81
+ size="xs"
82
+ variant="outline"
83
+ className="font-normal"
84
+ onClick={() => handleFix(false)}
85
+ >
86
+ <WrenchIcon className="h-3 w-3 mr-2" />
87
+ {firstFix.title}
88
+ </Button>
89
+ </Tooltip>
90
+ )}
91
+ </div>
92
+ );
93
+ };
94
+
95
+ const PromptIcon = SparklesIcon;
96
+ const AutofixIcon = WrenchIcon;
97
+
98
+ const PromptTitle = "Suggest a prompt";
99
+ const AutofixTitle = "Fix with AI";
100
+
101
+ export const AIFixButton = ({
102
+ tooltip,
103
+ openPrompt,
104
+ applyAutofix,
105
+ }: {
106
+ tooltip: string;
107
+ openPrompt: () => void;
108
+ applyAutofix: () => void;
109
+ }) => {
110
+ const { fixMode, setFixMode } = useFixMode();
111
+
112
+ return (
113
+ <div className="flex">
114
+ <Tooltip content={tooltip} align="start">
115
+ <Button
116
+ size="xs"
117
+ variant="outline"
118
+ className="font-normal rounded-r-none border-r-0"
119
+ onClick={fixMode === "prompt" ? openPrompt : applyAutofix}
120
+ >
121
+ {fixMode === "prompt" ? (
122
+ <PromptIcon className="h-3 w-3 mr-2 mb-0.5" />
123
+ ) : (
124
+ <AutofixIcon className="h-3 w-3 mr-2 mb-0.5" />
125
+ )}
126
+ {fixMode === "prompt" ? PromptTitle : AutofixTitle}
127
+ </Button>
128
+ </Tooltip>
129
+ <DropdownMenu>
130
+ <DropdownMenuTrigger asChild={true}>
131
+ <Button
132
+ size="xs"
133
+ variant="outline"
134
+ className="rounded-l-none px-2"
135
+ aria-label="Fix options"
136
+ >
137
+ <ChevronDownIcon className="h-3 w-3" />
138
+ </Button>
139
+ </DropdownMenuTrigger>
140
+ <DropdownMenuContent align="end" className="w-56">
141
+ <DropdownMenuItem
142
+ className="flex items-center gap-2"
143
+ onClick={() => {
144
+ setFixMode(fixMode === "prompt" ? "autofix" : "prompt");
145
+ }}
146
+ >
147
+ <AiModeItem mode={fixMode === "prompt" ? "autofix" : "prompt"} />
148
+ </DropdownMenuItem>
149
+ </DropdownMenuContent>
150
+ </DropdownMenu>
151
+ </div>
152
+ );
153
+ };
154
+
155
+ const AiModeItem = ({ mode }: { mode: FixMode }) => {
156
+ const icon =
157
+ mode === "prompt" ? (
158
+ <PromptIcon className="h-4 w-4" />
159
+ ) : (
160
+ <AutofixIcon className="h-4 w-4" />
161
+ );
162
+ const title = mode === "prompt" ? PromptTitle : AutofixTitle;
163
+ const description =
164
+ mode === "prompt"
165
+ ? "Edit the prompt before applying"
166
+ : "Apply AI fixes automatically";
167
+
40
168
  return (
41
- <Tooltip content={firstFix.description} align="start">
42
- <Button
43
- size="xs"
44
- variant="outline"
45
- className={cn("my-2 font-normal", className)}
46
- onClick={() => {
47
- const editorView =
48
- store.get(notebookAtom).cellHandles[cellId].current?.editorView;
49
- firstFix.onFix({
50
- addCodeBelow: (code: string) => {
51
- createNewCell({
52
- cellId: cellId,
53
- autoFocus: false,
54
- before: false,
55
- code: code,
56
- });
57
- },
58
- editor: editorView,
59
- cellId: cellId,
60
- setAiCompletionCell,
61
- });
62
- // Focus the editor
63
- editorView?.focus();
64
- }}
65
- >
66
- <WrenchIcon className="h-3 w-3 mr-2" />
67
- {firstFix.title}
68
- </Button>
69
- </Tooltip>
169
+ <div className="flex items-center gap-2">
170
+ {icon}
171
+ <div className="flex flex-col">
172
+ <span className="font-medium">{title}</span>
173
+ <span className="text-xs text-muted-foreground">{description}</span>
174
+ </div>
175
+ </div>
70
176
  );
71
177
  };
@@ -0,0 +1,15 @@
1
+ /* Copyright 2024 Marimo. All rights reserved. */
2
+
3
+ import { useAtom } from "jotai";
4
+ import { atomWithStorage } from "jotai/utils";
5
+
6
+ export type FixMode = "prompt" | "autofix";
7
+
8
+ const BASE_KEY = "marimo:ai-autofix-mode";
9
+
10
+ const fixModeAtom = atomWithStorage<FixMode>(BASE_KEY, "autofix");
11
+
12
+ export function useFixMode() {
13
+ const [fixMode, setFixMode] = useAtom(fixModeAtom);
14
+ return { fixMode, setFixMode };
15
+ }
@@ -178,11 +178,6 @@ describe("useCellClipboard", () => {
178
178
  "Failed to copy cells to clipboard",
179
179
  expect.any(Error),
180
180
  );
181
- expect(toast).toHaveBeenCalledWith({
182
- title: "Copy failed",
183
- description: "Failed to copy cells to clipboard.",
184
- variant: "danger",
185
- });
186
181
  });
187
182
 
188
183
  it("should filter out non-existent cells", async () => {
@@ -5,6 +5,7 @@ import { z } from "zod";
5
5
  import { toast } from "@/components/ui/use-toast";
6
6
  import { getNotebook, useCellActions } from "@/core/cells/cells";
7
7
  import type { CellId } from "@/core/cells/ids";
8
+ import { copyToClipboard } from "@/utils/copy";
8
9
  import { Logger } from "@/utils/Logger";
9
10
 
10
11
  // According to MDN, custom mimetypes should start with "web "
@@ -70,7 +71,7 @@ export function useCellClipboard() {
70
71
  // Fallback to simple text copy
71
72
  try {
72
73
  const plainText = cells.map((cell) => cell.code).join("\n\n");
73
- await navigator.clipboard.writeText(plainText);
74
+ await copyToClipboard(plainText);
74
75
  toastSuccess(cells.length);
75
76
  } catch {
76
77
  toastError();
@@ -86,7 +86,7 @@ import {
86
86
  useTemporarilyShownCode,
87
87
  useTemporarilyShownCodeActions,
88
88
  } from "./navigation/state";
89
- import { OutputArea } from "./Output";
89
+ import { type OnRefactorWithAI, OutputArea } from "./Output";
90
90
  import { ConsoleOutput } from "./output/ConsoleOutput";
91
91
  import { CellDragHandle, SortableCell } from "./SortableCell";
92
92
 
@@ -532,9 +532,15 @@ const EditableCellComponent = ({
532
532
  isMarkdownCodeHidden && hasOutput && !navigationProps["data-selected"],
533
533
  });
534
534
 
535
- const handleRefactorWithAI = useEvent((opts: { prompt: string }) => {
536
- setAiCompletionCell({ cellId, initialPrompt: opts.prompt });
537
- });
535
+ const handleRefactorWithAI: OnRefactorWithAI = useEvent(
536
+ (opts: { prompt: string; triggerImmediately: boolean }) => {
537
+ setAiCompletionCell({
538
+ cellId,
539
+ initialPrompt: opts.prompt,
540
+ triggerImmediately: opts.triggerImmediately,
541
+ });
542
+ },
543
+ );
538
544
 
539
545
  // TODO(akshayka): Move to our own Tooltip component once it's easier
540
546
  // to get the tooltip to show next to the cursor ...
@@ -622,6 +628,7 @@ const EditableCellComponent = ({
622
628
  showHiddenCode={showHiddenCode}
623
629
  languageAdapter={languageAdapter}
624
630
  setLanguageAdapter={setLanguageAdapter}
631
+ outputArea={cellOutput}
625
632
  />
626
633
  <CellRightSideActions
627
634
  className={cn(
@@ -1027,9 +1034,15 @@ const SetupCellComponent = ({
1027
1034
  },
1028
1035
  );
1029
1036
 
1030
- const handleRefactorWithAI = useEvent((opts: { prompt: string }) => {
1031
- setAiCompletionCell({ cellId, initialPrompt: opts.prompt });
1032
- });
1037
+ const handleRefactorWithAI: OnRefactorWithAI = useEvent(
1038
+ (opts: { prompt: string; triggerImmediately: boolean }) => {
1039
+ setAiCompletionCell({
1040
+ cellId,
1041
+ initialPrompt: opts.prompt,
1042
+ triggerImmediately: opts.triggerImmediately,
1043
+ });
1044
+ },
1045
+ );
1033
1046
 
1034
1047
  // TODO(akshayka): Move to our own Tooltip component once it's easier
1035
1048
  // to get the tooltip to show next to the cursor ...
@@ -1051,12 +1064,16 @@ const SetupCellComponent = ({
1051
1064
  data-status={cellRuntime.status}
1052
1065
  ref={cellRef}
1053
1066
  {...mergeProps(navigationProps, {
1054
- className,
1067
+ className: cn(
1068
+ className,
1069
+ "focus:ring-1 focus:ring-(--blue-7) focus:ring-offset-0",
1070
+ ),
1055
1071
  onBlur: closeCompletionHandler,
1056
1072
  onKeyDown: resumeCompletionHandler,
1057
1073
  })}
1058
1074
  {...cellDomProps(cellId, cellData.name)}
1059
1075
  title={renderCellTitle()}
1076
+ tabIndex={-1}
1060
1077
  data-setup-cell={true}
1061
1078
  >
1062
1079
  <div className={cn("tray")} data-hidden={!isCellCodeShown}>
@@ -1,10 +1,11 @@
1
1
  /* Copyright 2024 Marimo. All rights reserved. */
2
2
 
3
3
  import { AnsiUp } from "ansi_up";
4
- import { ChevronRightIcon, CopyIcon, WrapTextIcon } from "lucide-react";
4
+ import { ChevronRightIcon, WrapTextIcon } from "lucide-react";
5
5
  import React, { useLayoutEffect } from "react";
6
6
  import { ToggleButton } from "react-aria-components";
7
7
  import { DebuggerControls } from "@/components/debugger/debugger-code";
8
+ import { CopyClipboardIcon } from "@/components/icons/copy-icon";
8
9
  import { Input } from "@/components/ui/input";
9
10
  import { Tooltip } from "@/components/ui/tooltip";
10
11
  import type { CellId } from "@/core/cells/ids";
@@ -13,13 +14,12 @@ import type { WithResponse } from "@/core/cells/types";
13
14
  import type { OutputMessage } from "@/core/kernel/messages";
14
15
  import { useSelectAllContent } from "@/hooks/useSelectAllContent";
15
16
  import { cn } from "@/utils/cn";
16
- import { copyToClipboard } from "@/utils/copy";
17
17
  import { ansiToPlainText, parseHtmlContent } from "@/utils/dom";
18
18
  import { invariant } from "@/utils/invariant";
19
19
  import { Strings } from "@/utils/strings";
20
20
  import { NameCellContentEditable } from "../actions/name-cell-input";
21
21
  import { ErrorBoundary } from "../boundary/ErrorBoundary";
22
- import { OutputRenderer } from "../Output";
22
+ import { type OnRefactorWithAI, OutputRenderer } from "../Output";
23
23
  import { useWrapText } from "./useWrapText";
24
24
 
25
25
  const ansiUp = new AnsiUp();
@@ -31,7 +31,7 @@ interface Props {
31
31
  consoleOutputs: WithResponse<OutputMessage>[];
32
32
  stale: boolean;
33
33
  debuggerActive: boolean;
34
- onRefactorWithAI?: (opts: { prompt: string }) => void;
34
+ onRefactorWithAI?: OnRefactorWithAI;
35
35
  onClear?: () => void;
36
36
  onSubmitDebugger: (text: string, index: number) => void;
37
37
  }
@@ -112,39 +112,33 @@ const ConsoleOutputInternal = (props: Props): React.ReactNode => {
112
112
  (output) => output.channel === "stdin",
113
113
  );
114
114
 
115
+ const getOutputString = (): string => {
116
+ const text = consoleOutputs
117
+ .filter((output) => output.channel !== "pdb")
118
+ .map((output) => {
119
+ if (
120
+ output.mimetype.startsWith("application/vnd.marimo") ||
121
+ output.mimetype === "text/html"
122
+ ) {
123
+ return parseHtmlContent(Strings.asString(output.data));
124
+ }
125
+
126
+ // Convert ANSI to HTML, then parse as HTML
127
+ return ansiToPlainText(Strings.asString(output.data));
128
+ })
129
+ .join("\n");
130
+ return text;
131
+ };
132
+
115
133
  return (
116
134
  <div className="relative group">
117
135
  {hasOutputs && (
118
136
  <div className="absolute top-1 right-5 z-10 opacity-0 group-hover:opacity-100 flex gap-1">
119
- <Tooltip content="Copy all">
120
- <span>
121
- <button
122
- aria-label="Copy all console output"
123
- className="p-1 rounded bg-transparent text-muted-foreground hover:text-foreground"
124
- type="button"
125
- onClick={() => {
126
- const text = reversedOutputs
127
- .filter((output) => output.channel !== "pdb")
128
- .map((output) => {
129
- // If starts with `<`, then assume it's HTML
130
- if (
131
- typeof output.data === "string" &&
132
- output.data.startsWith("<")
133
- ) {
134
- return parseHtmlContent(output.data);
135
- }
136
-
137
- // Otherwise, convert the ANSI to HTML, then parse as HTML
138
- return ansiToPlainText(Strings.asString(output.data));
139
- })
140
- .join("\n");
141
- void copyToClipboard(text);
142
- }}
143
- >
144
- <CopyIcon className="h-4 w-4" />
145
- </button>
146
- </span>
147
- </Tooltip>
137
+ <CopyClipboardIcon
138
+ tooltip="Copy console output"
139
+ value={getOutputString}
140
+ className="h-4 w-4"
141
+ />
148
142
  <Tooltip content={wrapText ? "Disable wrap text" : "Wrap text"}>
149
143
  <span>
150
144
  <ToggleButton
@@ -194,6 +194,7 @@ const LEAF_RENDERERS = {
194
194
  "video/": (value: string) => <VideoOutput src={value} />,
195
195
  "text/html:": (value: string) => <HtmlOutput html={value} inline={true} />,
196
196
  "text/plain+float:": (value: string) => <span>{value}</span>,
197
+ "text/plain+bigint:": (value: string) => <span>{value}</span>,
197
198
  "text/plain+set:": (value: string) => <span>set{value}</span>,
198
199
  "text/plain+tuple:": (value: string) => <span>{value}</span>,
199
200
  "text/plain:": (value: string) => <CollapsibleTextOutput text={value} />,
@@ -351,6 +352,9 @@ function pythonJsonReplacer(_key: string, value: unknown): unknown {
351
352
  if (typeof value === "object") {
352
353
  return value;
353
354
  }
355
+ if (typeof value === "bigint") {
356
+ return `${REPLACE_PREFIX}${value}${REPLACE_SUFFIX}`;
357
+ }
354
358
  if (Array.isArray(value)) {
355
359
  return value;
356
360
  }
@@ -359,6 +363,11 @@ function pythonJsonReplacer(_key: string, value: unknown): unknown {
359
363
  if (value.startsWith("text/plain+float:")) {
360
364
  return `${REPLACE_PREFIX}${leafData(value)}${REPLACE_SUFFIX}`;
361
365
  }
366
+ if (value.startsWith("text/plain+bigint:")) {
367
+ // Use BigInt to avoid precision loss
368
+ const number = BigInt(leafData(value));
369
+ return `${REPLACE_PREFIX}${number}${REPLACE_SUFFIX}`;
370
+ }
362
371
  if (value.startsWith("text/plain+tuple:")) {
363
372
  // replace first and last characters [] with ()
364
373
  return `${REPLACE_PREFIX}(${leafData(value).slice(1, -1)})${REPLACE_SUFFIX}`;
@@ -1,10 +1,6 @@
1
1
  /* Copyright 2024 Marimo. All rights reserved. */
2
2
 
3
- import {
4
- InfoIcon,
5
- NotebookPenIcon,
6
- SquareArrowOutUpRightIcon,
7
- } from "lucide-react";
3
+ import { NotebookPenIcon, SquareArrowOutUpRightIcon } from "lucide-react";
8
4
  import { Fragment, type JSX } from "react";
9
5
  import {
10
6
  Accordion,
@@ -499,37 +495,11 @@ export const MarimoErrorOutput = ({
499
495
  messages.push(
500
496
  <div key="sql-errors">
501
497
  {sqlErrors.map((error, idx) => {
502
- const line =
503
- error.sql_line == null ? null : Math.trunc(error?.sql_line) + 1;
504
- const col =
505
- error.sql_col == null ? null : Math.trunc(error?.sql_col) + 1;
506
498
  return (
507
499
  <div key={`sql-error-${idx}`} className="space-y-2 mt-2">
508
- <p className="text-muted-foreground font-medium">{error.msg}</p>
509
- {error.hint && (
510
- <div className="flex items-start gap-2">
511
- <InfoIcon
512
- size={11}
513
- className="text-muted-foreground mt-1 flex-shrink-0"
514
- />
515
- <p className="whitespace-pre-wrap text-sm text-muted-foreground">
516
- {error.hint}
517
- </p>
518
- </div>
519
- )}
520
- {error.sql_statement && (
521
- <pre
522
- lang="sql"
523
- className="text-xs bg-muted/80 rounded whitespace-pre-wrap p-3.5"
524
- >
525
- {error.sql_statement.trim()}
526
- </pre>
527
- )}
528
- {line !== null && col !== null && (
529
- <p className="text-xs text-muted-foreground">
530
- Error at line {line}, column {col}
531
- </p>
532
- )}
500
+ <p className="text-muted-foreground whitespace-pre-wrap">
501
+ {error.msg}
502
+ </p>
533
503
  </div>
534
504
  );
535
505
  })}
@@ -3,7 +3,6 @@
3
3
  import { type DOMNode, Element, Text } from "html-react-parser";
4
4
  import { useAtomValue } from "jotai";
5
5
  import {
6
- BugIcon,
7
6
  BugPlayIcon,
8
7
  ChevronDown,
9
8
  CopyIcon,
@@ -40,12 +39,14 @@ import {
40
39
  getTracebackInfo,
41
40
  } from "@/utils/traceback";
42
41
  import { cn } from "../../../utils/cn";
42
+ import { AIFixButton } from "../errors/auto-fix";
43
43
  import { CellLinkTraceback } from "../links/cell-link";
44
+ import type { OnRefactorWithAI } from "../Output";
44
45
 
45
46
  interface Props {
46
47
  cellId: CellId | undefined;
47
48
  traceback: string;
48
- onRefactorWithAI?: (opts: { prompt: string }) => void;
49
+ onRefactorWithAI?: OnRefactorWithAI;
49
50
  }
50
51
 
51
52
  const KEY = "item";
@@ -69,9 +70,10 @@ export const MarimoTracebackOutput = ({
69
70
  // Get last traceback info
70
71
  const tracebackInfo = extractAllTracebackInfo(traceback)?.at(0);
71
72
 
72
- const handleRefactorWithAI = () => {
73
+ const handleRefactorWithAI = (triggerImmediately: boolean) => {
73
74
  onRefactorWithAI?.({
74
75
  prompt: `My code gives the following error:\n\n${lastTracebackLine}`,
76
+ triggerImmediately,
75
77
  });
76
78
  };
77
79
 
@@ -103,10 +105,11 @@ export const MarimoTracebackOutput = ({
103
105
  </Accordion>
104
106
  <div className="flex gap-2">
105
107
  {onRefactorWithAI && aiEnabled && (
106
- <Button size="xs" variant="outline" onClick={handleRefactorWithAI}>
107
- <BugIcon className="h-3 w-3 mr-2" />
108
- Fix with AI
109
- </Button>
108
+ <AIFixButton
109
+ tooltip="Fix with AI"
110
+ openPrompt={() => handleRefactorWithAI(false)}
111
+ applyAutofix={() => handleRefactorWithAI(true)}
112
+ />
110
113
  )}
111
114
  {tracebackInfo && tracebackInfo.kind === "cell" && !isWasm() && (
112
115
  <Tooltip content={"Attach pdb to the exception point."}>
@@ -218,6 +218,49 @@ describe("getCopyValue", () => {
218
218
  `,
219
219
  );
220
220
  });
221
+
222
+ it("should handle bigint", () => {
223
+ const bigint = String(BigInt(2 ** 64));
224
+ const value = `text/plain+bigint:${bigint}`;
225
+ const result = getCopyValue(value);
226
+ expect(result).toMatchInlineSnapshot(`"18446744073709551616"`);
227
+
228
+ const nestedBigInt = {
229
+ key1: bigint, // this will be just a string
230
+ key2: `text/plain+bigint:${bigint}`, // this will convert to number
231
+ key3: true,
232
+ };
233
+ const nestedResult = getCopyValue(nestedBigInt);
234
+ expect(nestedResult).toMatchInlineSnapshot(
235
+ `
236
+ "{
237
+ "key1": "18446744073709551616",
238
+ "key2": 18446744073709551616,
239
+ "key3": True
240
+ }"
241
+ `,
242
+ );
243
+
244
+ const bigintRaw = BigInt(2 ** 64);
245
+ const bigintRawResult = getCopyValue(bigintRaw);
246
+ expect(bigintRawResult).toMatchInlineSnapshot(`"18446744073709551616"`);
247
+
248
+ const nestedBigIntRaw = {
249
+ key1: bigintRaw, // raw number
250
+ key2: `text/plain+bigint:${bigintRaw}`,
251
+ key3: true,
252
+ };
253
+ const nestedBigIntRawResult = getCopyValue(nestedBigIntRaw);
254
+ expect(nestedBigIntRawResult).toMatchInlineSnapshot(
255
+ `
256
+ "{
257
+ "key1": 18446744073709551616,
258
+ "key2": 18446744073709551616,
259
+ "key3": True
260
+ }"
261
+ `,
262
+ );
263
+ });
221
264
  });
222
265
 
223
266
  describe("determineMaxDisplayLength", () => {
@@ -463,6 +463,7 @@ const ExtrasSelector: React.FC<ExtrasSelectorProps> = ({
463
463
  <button
464
464
  className="hover:bg-muted/50 rounded text-sm px-1 transition-colors border border-muted-foreground/30 hover:border-muted-foreground/60 min-w-0 flex-1 truncate text-left"
465
465
  title={`Selected extras: ${selectedExtras.join(", ")}`}
466
+ type="button"
466
467
  >
467
468
  {selectedExtras.join(",")}
468
469
  </button>
@@ -523,6 +524,7 @@ const ExtrasSelector: React.FC<ExtrasSelectorProps> = ({
523
524
  !canSelectExtras && "opacity-50 cursor-not-allowed",
524
525
  )}
525
526
  title={canSelectExtras ? "Add extras" : "Loading extras..."}
527
+ type="button"
526
528
  >
527
529
  <PlusIcon className="w-3 h-3 shrink-0" />
528
530
  </button>
@@ -619,6 +621,7 @@ const StreamingLogsViewer: React.FC<StreamingLogsViewerProps> = ({
619
621
  <button
620
622
  onClick={() => setIsExpanded(!isExpanded)}
621
623
  className="flex items-center gap-2 text-sm font-medium text-muted-foreground hover:text-foreground transition-colors"
624
+ type="button"
622
625
  >
623
626
  {isExpanded ? (
624
627
  <ChevronDownIcon className="w-4 h-4" />
@@ -14,7 +14,7 @@ import {
14
14
  } from "lucide-react";
15
15
  import { useEffect } from "react";
16
16
  import { StartupLogsAlert } from "@/components/editor/alerts/startup-logs-alert";
17
- import { Cell } from "@/components/editor/Cell";
17
+ import { Cell } from "@/components/editor/notebook-cell";
18
18
  import { PackageAlert } from "@/components/editor/package-alert";
19
19
  import { SortableCellsProvider } from "@/components/sort/SortableCellsProvider";
20
20
  import { Button } from "@/components/ui/button";
@@ -189,18 +189,20 @@ describe("getDefaults", () => {
189
189
  const schema = z.object({
190
190
  map: z.map(z.string(), z.number()).default(new Map([["a", 1]])),
191
191
  });
192
- const result = getDefaults(schema) as { map: Map<string, number> };
192
+ const defaults = getDefaults(schema);
193
+ const result = defaults as { map: Map<string, number> };
193
194
  expect(result.map instanceof Map).toBe(true);
194
- expect(Array.from(result.map.entries())).toEqual([["a", 1]]);
195
+ expect([...result.map.entries()]).toEqual([["a", 1]]);
195
196
  });
196
197
 
197
198
  it("should handle ZodSet with default", () => {
198
199
  const schema = z.object({
199
200
  set: z.set(z.string()).default(new Set(["a", "b"])),
200
201
  });
201
- const result = getDefaults(schema) as { set: Set<string> };
202
+ const defaults = getDefaults(schema);
203
+ const result = defaults as { set: Set<string> };
202
204
  expect(result.set instanceof Set).toBe(true);
203
- expect(Array.from(result.set)).toEqual(["a", "b"]);
205
+ expect([...result.set]).toEqual(["a", "b"]);
204
206
  });
205
207
 
206
208
  it("should handle deeply nested defaults", () => {