@marimo-team/islands 0.25.2-dev12 → 0.25.2-dev120

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 (393) hide show
  1. package/dist/{ConnectedDataExplorerComponent-CqhQmp74.js → ConnectedDataExplorerComponent-CNSxdKyJ.js} +15 -15
  2. package/dist/{ErrorBoundary-YddQ6YHW.js → ErrorBoundary-CD3naLCk.js} +12 -12
  3. package/dist/{ImageComparisonComponent-Cpfz30OZ.js → ImageComparisonComponent-uU8FSKZE.js} +3 -3
  4. package/dist/{Plot-CTyjbQDT.js → Plot-DdYOe1UK.js} +2 -2
  5. package/dist/{abnfDiagram-VCTEODGH-aLGD44M7.js → abnfDiagram-VCTEODGH-DQDjNXt3.js} +3 -3
  6. package/dist/{any-language-editor-dqxlUDlT.js → any-language-editor-B9REGlD9.js} +8 -8
  7. package/dist/{apl-BYaaig9_.js → apl-GEW9-ZP1.js} +1 -1
  8. package/dist/{architectureDiagram-5GKGNRK7-BGL5P81u.js → architectureDiagram-5GKGNRK7-Nmls7Wxn.js} +5 -5
  9. package/dist/{asciiarmor-GKQFJXQG.js → asciiarmor-BWNxzkG7.js} +1 -1
  10. package/dist/{asn1-BsSb7HP5.js → asn1-Bcn2QutK.js} +1 -1
  11. package/dist/assets/__vite-browser-external-BXYkiFsk.js +1 -0
  12. package/dist/assets/worker-HPY9fbhz.js +114 -0
  13. package/dist/{asterisk-B3I8SNb5.js → asterisk-lE36-hJK.js} +1 -1
  14. package/dist/{blockDiagram-I7D4REHJ-CvBmppdy.js → blockDiagram-I7D4REHJ-Cg25UrxT.js} +9 -9
  15. package/dist/{brainfuck-DXjk3bQe.js → brainfuck-BQCYDheZ.js} +1 -1
  16. package/dist/{button-B0Xgl-Qn.js → button-CvjkwdSk.js} +304 -287
  17. package/dist/{c4Diagram-7LVT6UL2-EceL4_jH.js → c4Diagram-7LVT6UL2-BxFgrnNV.js} +7 -7
  18. package/dist/{capabilities-D7Ad8-zw.js → capabilities-CQ5IjhzL.js} +1 -1
  19. package/dist/{cells-5ppES-Un.js → cells-CuYwqnV8.js} +5950 -4893
  20. package/dist/{channel-z7HZXHwv.js → channel-CPObtJXj.js} +1 -1
  21. package/dist/{chat-ui-Dv2V95k6.js → chat-ui-C6oDg4Zu.js} +1595 -1402
  22. package/dist/{check-DGZ74tV2.js → check-EDwSwP89.js} +1 -1
  23. package/dist/{chunk-4HAMMTFA-BPTTOOC5.js → chunk-4HAMMTFA-D4eFPyFh.js} +5 -5
  24. package/dist/{chunk-75Z2AOVW-C4AOleKf.js → chunk-75Z2AOVW-D7gxIs2Q.js} +1 -1
  25. package/dist/{chunk-DU6HZSFF-1TwWR6gh.js → chunk-DU6HZSFF-BwiyaNpg.js} +2 -2
  26. package/dist/{chunk-F27PBJKO-DMI1PBe4.js → chunk-F27PBJKO-ufseIn5y.js} +1 -1
  27. package/dist/{chunk-GMAD6QVW-vStrMz2P.js → chunk-GMAD6QVW-BhaJx0X3.js} +3 -3
  28. package/dist/{chunk-GVQU2GXP-2HwWgs4u.js → chunk-GVQU2GXP-Cwbt-lF0.js} +2 -2
  29. package/dist/{chunk-IMKFNOWR-Cm3RgLDj.js → chunk-IMKFNOWR-CoIFEo-1.js} +6 -6
  30. package/dist/{chunk-L3NEJ4N5-RhC7i0I2.js → chunk-L3NEJ4N5-n-zgIVSy.js} +5 -5
  31. package/dist/{chunk-OSK3NFVY-CZV09N-U.js → chunk-OSK3NFVY-DXa-Cxbn.js} +6 -6
  32. package/dist/{chunk-P2QGCYS3-0TAWai9C.js → chunk-P2QGCYS3-B_Zd3-X0.js} +1 -1
  33. package/dist/{chunk-POPQ4Y6H-Cc3_56GX.js → chunk-POPQ4Y6H-hYOXbYH_.js} +1 -1
  34. package/dist/{chunk-PWAF6VOD-lNxB9k8z.js → chunk-PWAF6VOD-CQw5qATZ.js} +1 -1
  35. package/dist/{chunk-SHT3W25Y-DedDYSP5.js → chunk-SHT3W25Y-lHiGx3ZC.js} +8 -8
  36. package/dist/{chunk-SVP7TREG-B2SFkCAL.js → chunk-SVP7TREG-BvsHIrY_.js} +2 -2
  37. package/dist/{chunk-TICWLB2K-DB6hjNOL.js → chunk-TICWLB2K-BC8YIm_n.js} +6 -6
  38. package/dist/{chunk-YOKDWASO-DrWbKnxA.js → chunk-YOKDWASO-DPZk8vhS.js} +6 -6
  39. package/dist/classDiagram-ZZMXUADV-Bt98lkkv.js +30 -0
  40. package/dist/classDiagram-v2-VYDZK3BY-D9bfbcC3.js +30 -0
  41. package/dist/{clike-E2lFbGVj.js → clike-CxK9W55Z.js} +1 -1
  42. package/dist/{clojure-Dn_K4RlK.js → clojure-Dzcvwpxk.js} +1 -1
  43. package/dist/{cmake-DpN2Top5.js → cmake-DYr-71zp.js} +1 -1
  44. package/dist/{cobol-Chf22-GM.js → cobol-DC3g37Kq.js} +1 -1
  45. package/dist/{code-visibility-C0zE3g0U.js → code-visibility-CU1gPw4S.js} +7 -7
  46. package/dist/{coffeescript-BVe1OiD9.js → coffeescript-C-eFwH5N.js} +1 -1
  47. package/dist/{common-BkjS959w.js → common-DvxFYUnn.js} +9639 -9291
  48. package/dist/{commonlisp-DxoBG7fU.js → commonlisp-CyaNXrJR.js} +1 -1
  49. package/dist/{compiler-runtime-Cj8ZWiNS.js → compiler-runtime-CldRdSsv.js} +2 -2
  50. package/dist/{copy-icon-qmRg_VTX.js → copy-icon-Ft7t9bqz.js} +6 -6
  51. package/dist/{crystal-DCM3yc4r.js → crystal-ih5ax5tQ.js} +1 -1
  52. package/dist/{css-DkZ9mMyI.js → css-CN_wP7_R.js} +1 -1
  53. package/dist/{cynefinDiagram-5FMLGOSQ-DzaZEqgD.js → cynefinDiagram-5FMLGOSQ-CgWra7wt.js} +3 -3
  54. package/dist/{cypher-Drw_8U5I.js → cypher-CqGRcmZo.js} +1 -1
  55. package/dist/{d-CsVGcKMF.js → d-Cj0sOW2z.js} +1 -1
  56. package/dist/{dagre-GXQ25YYZ-Cjf5GjU3.js → dagre-GXQ25YYZ-CFZ8-35c.js} +10 -10
  57. package/dist/{data-grid-overlay-editor-CqoIqvNa.js → data-grid-overlay-editor-BlhT6OQj.js} +7 -7
  58. package/dist/{data-grid-types-BucVmDDp.js → data-grid-types-BH_r7g7l.js} +1 -1
  59. package/dist/{diagram-S7CK7UJ4-IhLt_khx.js → diagram-S7CK7UJ4-lCNQrW7d.js} +4 -4
  60. package/dist/{diagram-UQ7AKVKN-CQc6KLPB.js → diagram-UQ7AKVKN-CQPQ6pP_.js} +3 -3
  61. package/dist/{diagram-VSXAHHWV-CR7BJygZ.js → diagram-VSXAHHWV-BJWcVVJY.js} +2 -2
  62. package/dist/{diagram-VX7I27RA-DHmW9N1T.js → diagram-VX7I27RA-Cf3b0llz.js} +5 -5
  63. package/dist/{diagram-Z3DM3KII-zVKsg-Ty.js → diagram-Z3DM3KII-Bt4QLrpn.js} +3 -3
  64. package/dist/{dialog-CILKhbsG.js → dialog-CEBFZNyc.js} +29 -29
  65. package/dist/{diff-CBikYCUF.js → diff-B_hUkiat.js} +1 -1
  66. package/dist/{dist-Df0wKI0F.js → dist-BK4Oj99o.js} +1 -1
  67. package/dist/{dist-BVGtK7Ht.js → dist-BLfKmR-l.js} +1 -1
  68. package/dist/{dist-B8D7McG3.js → dist-BMQf5zIS.js} +46 -46
  69. package/dist/{dist-C2KzV-vf.js → dist-BorMD-uX.js} +2 -2
  70. package/dist/{dist-Cs2FijYk.js → dist-BuaRHxOc.js} +2 -2
  71. package/dist/{dist-DPcEtqmG.js → dist-Bvs24R_E.js} +47 -47
  72. package/dist/{dist-lA1Cttkb.js → dist-C8fAKSH1.js} +41 -41
  73. package/dist/{dist-DszxuxS1.js → dist-CLdpGQVr.js} +2 -2
  74. package/dist/{dist-CO1AwwG_.js → dist-CN8zI-XC.js} +209 -209
  75. package/dist/{dist-D1PpnuZB.js → dist-CN_BeG2I.js} +1 -1
  76. package/dist/{dist-CPGxfVGX.js → dist-CSJ0MDRw.js} +1 -1
  77. package/dist/{dist-Cm3iAFMD.js → dist-CSbh1PNP.js} +3 -3
  78. package/dist/{dist-9x1ZRe-e.js → dist-Cg7gzw-a.js} +2 -2
  79. package/dist/{dist-B1vYLK28.js → dist-CkTTIdBe.js} +345 -345
  80. package/dist/{dist-BRxfaJgs.js → dist-CrSP_H1M.js} +296 -296
  81. package/dist/{dist-C2wDlYdD.js → dist-D-wwqlzJ.js} +2 -2
  82. package/dist/{dist-BtKIs9N-.js → dist-D6d86eNJ.js} +1 -1
  83. package/dist/{dist-DHOTQar0.js → dist-DBtSl3sf.js} +1 -1
  84. package/dist/{dist-KzZ7WELx.js → dist-DiDibOYr.js} +120 -120
  85. package/dist/{dist-Kxgjxakw.js → dist-DoE4XJBC.js} +1277 -1222
  86. package/dist/{dist-CcyKTBTF.js → dist-DpBpA_n1.js} +2 -2
  87. package/dist/{dist-BHCHt1NI.js → dist-F8Ep36rk.js} +1 -1
  88. package/dist/{dist-C8xMLVYi.js → dist-OR1OnN-y.js} +44 -44
  89. package/dist/{dist-1HDa70oE.js → dist-PXYI_yuP.js} +3 -3
  90. package/dist/{dist-CMh_W4y4.js → dist-diIx5qJW.js} +2 -2
  91. package/dist/{dockerfile-DJnSntVB.js → dockerfile-D0VKN500.js} +2 -2
  92. package/dist/dropdown-menu-CP_qCYHC.js +4678 -0
  93. package/dist/{dtd-BHa4v0Bn.js → dtd-B8FGSWWe.js} +1 -1
  94. package/dist/{dylan-BypL2Zz8.js → dylan-DbIBYIrw.js} +1 -1
  95. package/dist/{ebnf-5guncNu-.js → ebnf-D-YbYLdk.js} +1 -1
  96. package/dist/{ebnfDiagram-PWID7BFC-DDd5hCRC.js → ebnfDiagram-PWID7BFC-D3NAyPFY.js} +3 -3
  97. package/dist/{ecl-iRcVIKYZ.js → ecl-DBmkdWAd.js} +1 -1
  98. package/dist/{eiffel-BEqF9aU4.js → eiffel-CcWSDDzK.js} +1 -1
  99. package/dist/{elm-DYcfNE9c.js → elm-MC-b8a6C.js} +1 -1
  100. package/dist/{erDiagram-RLTQ6QDP-D10NP0eI.js → erDiagram-RLTQ6QDP-Tlu09_Nm.js} +12 -12
  101. package/dist/{erlang-BtAuIoF0.js → erlang-AdO1-xtV.js} +1 -1
  102. package/dist/error-banner-Da600cwz.js +362 -0
  103. package/dist/{error-entries-B2Ux3Z2X.js → error-entries-zfHL6H60.js} +2 -2
  104. package/dist/{esm-h8f7-1CJ.js → esm-AMFssoNp.js} +380 -374
  105. package/dist/{esm-BElI3qKH.js → esm-D2gTsXEV.js} +579 -579
  106. package/dist/{factor-3nzOwLuN.js → factor-Ys-13HOP.js} +2 -2
  107. package/dist/{fcl-C90TGnJJ.js → fcl-DnwditDr.js} +1 -1
  108. package/dist/{feedback-button-BU771zKS.js → feedback-button-uUyCXX6t.js} +13 -13
  109. package/dist/flowDiagram-HODETNUW-CAYbpJmV.js +16 -0
  110. package/dist/{formats-Q9gwlLyD.js → formats-DLtvJPnj.js} +6 -6
  111. package/dist/{forth-DEaRrLUi.js → forth-DiMuIXFe.js} +1 -1
  112. package/dist/{fortran-Bv6JRUjY.js → fortran-hkrF2eM4.js} +1 -1
  113. package/dist/{ganttDiagram-EL5Y4UJY-cRRaDt88.js → ganttDiagram-EL5Y4UJY-BQT16JSc.js} +2 -2
  114. package/dist/{gas-JNerWj3-.js → gas-DlhqN9k8.js} +1 -1
  115. package/dist/{gherkin-CSrl-H70.js → gherkin-0SlhEZ3t.js} +1 -1
  116. package/dist/{gitGraphDiagram-WWUBYQGX-Pox5k9-Y.js → gitGraphDiagram-WWUBYQGX-D5nSIzdE.js} +2 -2
  117. package/dist/{glide-data-editor-D9TpbHEU.js → glide-data-editor-BLIzt2Q0.js} +60 -60
  118. package/dist/{glide-utils-CzzWU59p.js → glide-utils-DJyqh0EM.js} +4 -4
  119. package/dist/{globals-nXV4QUKg.js → globals-BLGM0Nfo.js} +3 -3
  120. package/dist/{groovy-X7euO_vE.js → groovy-YhcTMyvX.js} +1 -1
  121. package/dist/{haskell-C48Z70Az.js → haskell-CodLxrtT.js} +1 -1
  122. package/dist/{haxe-CAUWMmwR.js → haxe-CiRWNFkH.js} +1 -1
  123. package/dist/{highlighted-body-KPVGNVTW-Ad3MKZ18.js → highlighted-body-KPVGNVTW-zwjq21tf.js} +4 -4
  124. package/dist/{html-to-image-BZBwkkDG.js → html-to-image-BJJsbNZ1.js} +547 -569
  125. package/dist/{http-BrSBnhDH.js → http-Bh6HhdNR.js} +1 -1
  126. package/dist/{idl-BXuPleZv.js → idl-DZgBq75I.js} +1 -1
  127. package/dist/{infoDiagram-27XIBGKW-DrYu3UZC.js → infoDiagram-27XIBGKW-XrDxhr0x.js} +2 -2
  128. package/dist/{ishikawaDiagram-5VMMS53U-pmkGQJsA.js → ishikawaDiagram-5VMMS53U-CD1muzov.js} +3 -3
  129. package/dist/{javascript-B4EPWJf_.js → javascript-BfNytHiM.js} +1 -1
  130. package/dist/{journeyDiagram-3NMN7TZE-EPJDPlt0.js → journeyDiagram-3NMN7TZE-BaLqn-dZ.js} +2 -2
  131. package/dist/{jsx-runtime-DgDPJV9S.js → jsx-runtime-3BD1kT0s.js} +1 -1
  132. package/dist/{julia-ke9Kh8b7.js → julia--tLIAG7q.js} +1 -1
  133. package/dist/{kanban-definition-UXKFOSKX-wWGD9VLW.js → kanban-definition-UXKFOSKX-Dg9W142_.js} +9 -9
  134. package/dist/{katex-BNCmKUol.js → katex-BIdZGsyO.js} +141 -116
  135. package/dist/label-BDKF3Afc.js +281 -0
  136. package/dist/{livescript-Ce4uqGAC.js → livescript-CVPfYnY_.js} +1 -1
  137. package/dist/{loader-C9OUkMrj.js → loader-BQOfjTIJ.js} +1 -1
  138. package/dist/{lua-D6fti_Jk.js → lua-4Fa-T-qq.js} +1 -1
  139. package/dist/main.js +7036 -6893
  140. package/dist/{mathematica-DcEpZ3Vj.js → mathematica-CtYAy6GG.js} +1 -1
  141. package/dist/{mbox-DFBbOu0X.js → mbox-D0w9Ah1C.js} +1 -1
  142. package/dist/{mermaid-Dfvntf3s.js → mermaid-CiAXjLpA.js} +57 -57
  143. package/dist/mermaid-HWGCJPDP-ByCsZnYF.js +2 -0
  144. package/dist/{mhchem-BEc7A1or.js → mhchem-CdWPJK6g.js} +1 -1
  145. package/dist/{mindmap-definition-YA3MSWOX-C2f1VIBR.js → mindmap-definition-YA3MSWOX-DgCidgYJ.js} +11 -11
  146. package/dist/{mirc-CqeibO3N.js → mirc-De9aSAZM.js} +1 -1
  147. package/dist/{mllike-D54QZYTP.js → mllike-BbugeaY_.js} +1 -1
  148. package/dist/{modelica-DuML2-8V.js → modelica-BjJwWw1F.js} +1 -1
  149. package/dist/{mscgen-CJmKwp3b.js → mscgen-DwiRH5ma.js} +1 -1
  150. package/dist/{mumps-DaVgFtkd.js → mumps--plbDM9o.js} +1 -1
  151. package/dist/{nginx-BXN1rqI0.js → nginx-C4Df7REc.js} +1 -1
  152. package/dist/{nsis-CMfRqf0V.js → nsis-fiiOqLc3.js} +7 -7
  153. package/dist/{ntriples-BiOGlMDR.js → ntriples-jV77I4k8.js} +1 -1
  154. package/dist/{number-overlay-editor-BH4Uo_sZ.js → number-overlay-editor-DaA_6U-c.js} +5 -5
  155. package/dist/{octave-CgVnzxKk.js → octave-Cztd01tF.js} +1 -1
  156. package/dist/{oz-B2mky97X.js → oz-Bl8o3BDl.js} +1 -1
  157. package/dist/{pascal-BoZhBf6s.js → pascal-BO5JqysR.js} +1 -1
  158. package/dist/{pegDiagram-XKGWAZYB-D6v5dz4M.js → pegDiagram-XKGWAZYB-coOYYKB6.js} +3 -3
  159. package/dist/{perl-DjzMqXtt.js → perl-Drlh9s6m.js} +1 -1
  160. package/dist/{pieDiagram-E7YTZNPT-BwFAhpYD.js → pieDiagram-E7YTZNPT-BnXTc3bj.js} +3 -3
  161. package/dist/{pig-B2mB-01d.js → pig-BWGR8wZw.js} +1 -1
  162. package/dist/{powershell-D0zT88Aj.js → powershell-DT99xlz_.js} +1 -1
  163. package/dist/{process-output-BSsWzfnY.js → process-output-C1GGFU6Q.js} +4 -4
  164. package/dist/{properties-3_5qCgOj.js → properties-Q-rkxld0.js} +1 -1
  165. package/dist/{protobuf-Dgoxfi1H.js → protobuf-DKyWZbs7.js} +1 -1
  166. package/dist/{pug-CNRdd8oG.js → pug-42ZJUbEC.js} +2 -2
  167. package/dist/{puppet-DzILxZfz.js → puppet-B4UozHhh.js} +1 -1
  168. package/dist/purify.es-DMv5zIkJ.js +866 -0
  169. package/dist/{python-AfVdMn_l.js → python-DREjAV__.js} +1 -1
  170. package/dist/{q-C6p-CGWh.js → q-Bi63IpBO.js} +1 -1
  171. package/dist/{quadrantDiagram-AXDQQJYC--kqzFC3w.js → quadrantDiagram-AXDQQJYC-Ccw0xMjN.js} +1 -1
  172. package/dist/{r-CzKF1D2X.js → r-DSwXWKMR.js} +1 -1
  173. package/dist/{railroadDiagram-O6MQD6OU-D6eOFr6Z.js → railroadDiagram-O6MQD6OU-B28-u83n.js} +3 -3
  174. package/dist/{react-dom-BUgJ-ab_.js → react-dom-DUmH0GXv.js} +29 -21
  175. package/dist/{react-ofJbxM4x.js → react-sHtZdjeP.js} +103 -94
  176. package/dist/{react-vega-ewj7q_U5.js → react-vega-BED0DjiB.js} +3 -3
  177. package/dist/{requirementDiagram-BXWQKSXE-CHYsMgDR.js → requirementDiagram-BXWQKSXE-CdYCTMu0.js} +11 -11
  178. package/dist/{reveal-component-_A40NW1c.js → reveal-component-Cjr_Ej89.js} +906 -878
  179. package/dist/{rpm-Bx7FkjTO.js → rpm-DPb1DeKM.js} +1 -1
  180. package/dist/{ruby-BMzgq2bf.js → ruby-U7fZA4DP.js} +2 -2
  181. package/dist/{sankeyDiagram-P5KCCOFB-BdzhT0BM.js → sankeyDiagram-P5KCCOFB-ELvOcnZH.js} +1 -1
  182. package/dist/{sas-ClGVnK3F.js → sas-CLk1JpTn.js} +1 -1
  183. package/dist/{scheme-C0MXqXep.js → scheme-CT-2k2Tl.js} +1 -1
  184. package/dist/select-BButFi-d.js +1344 -0
  185. package/dist/{sequenceDiagram-WJ2MYXX4-BPAknhBp.js → sequenceDiagram-WJ2MYXX4-CM3aRAe_.js} +4 -4
  186. package/dist/{shell-CiQZv6oG.js → shell-BLO7fcsk.js} +1 -1
  187. package/dist/{sieve-BiIMePvV.js → sieve-nG3C7WNH.js} +1 -1
  188. package/dist/{simple-mode-8ETW2RS6.js → simple-mode-C683Q7or.js} +1 -1
  189. package/dist/{smalltalk-9-llftyG.js → smalltalk-BROcZybA.js} +1 -1
  190. package/dist/{solr-CxCKEuwq.js → solr-mVltHNc5.js} +1 -1
  191. package/dist/{sparql-BRmy7pzx.js → sparql-Cv1Ksr4v.js} +1 -1
  192. package/dist/{spec-D62vWpMT.js → spec-BwarBpUJ.js} +116 -135
  193. package/dist/{spreadsheet-UCNUIGsn.js → spreadsheet-BwTnp5K_.js} +1 -1
  194. package/dist/{sql-D0hSGZ-H.js → sql-CjLt0122.js} +1 -1
  195. package/dist/{stateDiagram-D77RDMKH-Cq249IQ4.js → stateDiagram-D77RDMKH-DOZUMVj8.js} +13 -13
  196. package/dist/stateDiagram-v2-MP3YSRHH-CISYxma6.js +30 -0
  197. package/dist/{stex-UeT_Aofp.js → stex-Btf3omL8.js} +1 -1
  198. package/dist/style.css +1 -1
  199. package/dist/{stylus-Fi4waA2H.js → stylus-Dt4VvLXL.js} +1 -1
  200. package/dist/{swift-NqPyaBye.js → swift-DHsn_CVI.js} +1 -1
  201. package/dist/{swimlanes-42K2YHIH-Bh_S_HKD.js → swimlanes-42K2YHIH-BkSppxp8.js} +10 -10
  202. package/dist/swimlanesDiagram-VR7AAH4N-c8G5pGxC.js +30 -0
  203. package/dist/{swiper-component-DkV7T44B.js → swiper-component-DKntyn8p.js} +5 -5
  204. package/dist/{tcl-B4f0xfmM.js → tcl-CV0OLBOl.js} +1 -1
  205. package/dist/{textile-CnNbnPTe.js → textile-D320oKVM.js} +1 -1
  206. package/dist/{tiddlywiki-CSGSOg38.js → tiddlywiki-BVVNvfy4.js} +1 -1
  207. package/dist/{tiki-9F02WBA6.js → tiki-BF2aDPlB.js} +1 -1
  208. package/dist/{timeline-definition-24CTP7MA-ByNMgBE7.js → timeline-definition-24CTP7MA-CaMQayqK.js} +3 -3
  209. package/dist/{toDate-DWVp6uE1.js → toDate-Dwcg_x_5.js} +5 -6
  210. package/dist/{toast-DcoJGS3-.js → toast-B9UMEi8u.js} +161 -165
  211. package/dist/{toml-AesZ6RBt.js → toml-CaUN7UHo.js} +1 -1
  212. package/dist/{tooltip-Bi36DgYh.js → tooltip-BO1REbqs.js} +548 -584
  213. package/dist/{troff-DlfvveK1.js → troff-DQUFcClZ.js} +1 -1
  214. package/dist/{ttcn--YVSkGs_.js → ttcn-CQL1duJS.js} +1 -1
  215. package/dist/{ttcn-cfg-Bb1Knl_J.js → ttcn-cfg-BMmEFJPu.js} +1 -1
  216. package/dist/{turtle-DC24v1bz.js → turtle-C3esgsRr.js} +1 -1
  217. package/dist/{use-restore-focus-ZgG5Br63.js → use-restore-focus-BEM7sFWl.js} +2430 -2007
  218. package/dist/{use-vega-container-remeasure-4DwJbPWu.js → use-vega-container-remeasure-Bz4PZMtt.js} +2 -2
  219. package/dist/{useAsyncData-BD7NLQ3_.js → useAsyncData-Deh5kszT.js} +3 -3
  220. package/dist/{useDateFormatter-D8XWr8lL.js → useDateFormatter-D8XruNGG.js} +53 -32
  221. package/dist/{useDeepCompareMemoize-CawMGSRU.js → useDeepCompareMemoize-DXwzRINI.js} +2 -2
  222. package/dist/{useIframeCapabilities-BUMBOpsM.js → useIframeCapabilities-DBETvvPl.js} +2 -2
  223. package/dist/{useLifecycle-3vGhRa1o.js → useLifecycle-j7D9uD1o.js} +6 -6
  224. package/dist/{useTheme-BOw801nZ.js → useTheme-CRnjkku0.js} +7 -7
  225. package/dist/{vb-Dpc8vhvF.js → vb-RK1eDXRl.js} +1 -1
  226. package/dist/{vbscript-B-Y1XnZe.js → vbscript-BCOeM0de.js} +1 -1
  227. package/dist/{vega-component-9siY74NS.js → vega-component-DLBAQLSf.js} +14 -14
  228. package/dist/{vega-embed-container-sSR5hAsy.js → vega-embed-container-BNHE18G9.js} +5 -5
  229. package/dist/{velocity-DHMu9kc-.js → velocity-CZKOFbOI.js} +1 -1
  230. package/dist/{vennDiagram-4TSXK5OY-DY8CySdO.js → vennDiagram-4TSXK5OY-CF8pfaK3.js} +3 -3
  231. package/dist/{verilog-DhiEaoUl.js → verilog-DqQTzVn8.js} +1 -1
  232. package/dist/{vhdl-D4X23YKO.js → vhdl-vQr2bfmi.js} +1 -1
  233. package/dist/{wardleyDiagram-VM6X3IG4-DYC1AFni.js → wardleyDiagram-VM6X3IG4-dGPu39d-.js} +3 -3
  234. package/dist/{webidl-SyzNxWpJ.js → webidl-DzX7N40e.js} +1 -1
  235. package/dist/{xquery-BC2R4Hk6.js → xquery-Cw_Q_hGR.js} +1 -1
  236. package/dist/{xychartDiagram-S5SC5T6Z-Df8LLnuY.js → xychartDiagram-S5SC5T6Z-CP6-9q56.js} +5 -5
  237. package/dist/{yacas-DLNXPMmH.js → yacas-DiC4jJBE.js} +1 -1
  238. package/dist/{z80-CDXWHOO6.js → z80-CUOQDEJO.js} +1 -1
  239. package/package.json +38 -37
  240. package/src/__tests__/mount.test.ts +6 -6
  241. package/src/components/chat/__tests__/chat-history-popover.test.tsx +157 -0
  242. package/src/components/chat/chat-history-popover.tsx +98 -17
  243. package/src/components/chat/chat-panel.tsx +29 -0
  244. package/src/components/chat/tool-call/__tests__/tool-result.test.tsx +56 -0
  245. package/src/components/chat/tool-call/tool-result.tsx +3 -3
  246. package/src/components/data-table/TableTopBar.tsx +4 -0
  247. package/src/components/data-table/__tests__/export-actions.test.tsx +1111 -14
  248. package/src/components/data-table/__tests__/pagination.test.tsx +85 -1
  249. package/src/components/data-table/__tests__/schemas.test.ts +57 -0
  250. package/src/components/data-table/charts/__tests__/schemas.test.ts +25 -0
  251. package/src/components/data-table/charts/__tests__/slider-field.test.tsx +54 -0
  252. package/src/components/data-table/charts/__tests__/spec.test.ts +26 -23
  253. package/src/components/data-table/charts/components/form-fields.tsx +3 -1
  254. package/src/components/data-table/charts/constants.ts +11 -10
  255. package/src/components/data-table/charts/types.ts +1 -0
  256. package/src/components/data-table/data-table.tsx +3 -0
  257. package/src/components/data-table/export-actions.tsx +365 -81
  258. package/src/components/data-table/pagination.tsx +16 -2
  259. package/src/components/data-table/schemas.ts +90 -14
  260. package/src/components/editor/actions/__tests__/pair-with-agent-commands.test.ts +32 -46
  261. package/src/components/editor/actions/__tests__/pair-with-agent-modal.test.tsx +29 -40
  262. package/src/components/editor/actions/pair-with-agent-commands.ts +3 -4
  263. package/src/components/editor/actions/pair-with-agent-modal.tsx +4 -7
  264. package/src/components/editor/actions/useRestartKernel.tsx +2 -2
  265. package/src/components/editor/alerts/__tests__/connection-notice.test.tsx +224 -17
  266. package/src/components/editor/alerts/connection-details.tsx +61 -0
  267. package/src/components/editor/alerts/connection-notice.tsx +46 -53
  268. package/src/components/editor/alerts/startup-progress.tsx +73 -129
  269. package/src/components/editor/app-container.tsx +2 -2
  270. package/src/components/editor/boundary/__tests__/ErrorBoundary.test.tsx +2 -2
  271. package/src/components/editor/cell/CreateCellButton.tsx +2 -2
  272. package/src/components/editor/cell/DeleteButton.tsx +2 -2
  273. package/src/components/editor/cell/RunButton.tsx +3 -3
  274. package/src/components/editor/cell/StopButton.tsx +2 -2
  275. package/src/components/editor/chrome/components/__tests__/feedback-button.test.tsx +4 -4
  276. package/src/components/editor/chrome/components/feedback-button.tsx +3 -3
  277. package/src/components/editor/chrome/panels/__tests__/packages-panel.test.tsx +8 -8
  278. package/src/components/editor/chrome/panels/__tests__/{sandbox-details.test.tsx → runtime-details.test.tsx} +94 -22
  279. package/src/components/editor/chrome/panels/__tests__/sandbox-recovery.test.tsx +4 -4
  280. package/src/components/editor/chrome/panels/packages-panel.tsx +8 -29
  281. package/src/components/editor/chrome/panels/{sandbox-details-state.ts → runtime-details-state.ts} +1 -1
  282. package/src/components/editor/chrome/panels/{sandbox-panel.tsx → runtime-panel.tsx} +38 -66
  283. package/src/components/editor/chrome/panels/runtime-status-toggle.tsx +56 -0
  284. package/src/components/editor/chrome/panels/sandbox-controller.tsx +2 -2
  285. package/src/components/editor/chrome/wrapper/app-chrome.tsx +3 -3
  286. package/src/components/editor/chrome/wrapper/footer-items/machine-stats.tsx +2 -2
  287. package/src/components/editor/controls/Controls.tsx +3 -3
  288. package/src/components/editor/controls/__tests__/notebook-menu-dropdown.test.tsx +2 -2
  289. package/src/components/editor/header/__tests__/status.test.tsx +4 -4
  290. package/src/components/editor/header/app-header.tsx +2 -2
  291. package/src/components/editor/header/status.tsx +3 -3
  292. package/src/components/editor/navigation/__tests__/navigation.test.ts +8 -8
  293. package/src/components/editor/output/console/ConsoleOutput.tsx +5 -3
  294. package/src/components/editor/output/console/__tests__/ConsoleOutput.test.tsx +18 -0
  295. package/src/components/ui/__tests__/slider.test.tsx +37 -0
  296. package/src/components/ui/progress-stages.tsx +114 -0
  297. package/src/components/ui/slider.tsx +2 -0
  298. package/src/core/ai/__tests__/state.test.ts +120 -0
  299. package/src/core/ai/state.ts +36 -10
  300. package/src/core/cells/__tests__/document-roundtrip.test.ts +16 -0
  301. package/src/core/codemirror/copilot/__tests__/completion-integration.test.ts +447 -0
  302. package/src/core/codemirror/copilot/__tests__/inline-completion.test.ts +395 -0
  303. package/src/core/codemirror/copilot/__tests__/language-server.test.ts +511 -2
  304. package/src/core/codemirror/copilot/__tests__/rpc-cancellation.test.ts +201 -0
  305. package/src/core/codemirror/copilot/extension.ts +22 -11
  306. package/src/core/codemirror/copilot/language-server.ts +109 -60
  307. package/src/core/codemirror/language/embedded/__tests__/embedded-python.test.ts +138 -26
  308. package/src/core/codemirror/language/embedded/embedded-python.ts +47 -13
  309. package/src/core/codemirror/language/embedded/latex.ts +20 -13
  310. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +106 -5
  311. package/src/core/codemirror/lsp/notebook-lsp.ts +16 -2
  312. package/src/core/codemirror/readonly/__tests__/extension.test.ts +6 -6
  313. package/src/core/codemirror/readonly/extension.ts +2 -2
  314. package/src/core/config/pair.ts +0 -1
  315. package/src/core/datasets/__tests__/data-source-discovery.test.ts +2 -2
  316. package/src/core/edit-app.tsx +5 -1
  317. package/src/core/export/hooks.ts +2 -2
  318. package/src/core/islands/bootstrap.ts +1 -0
  319. package/src/core/kernel/session.ts +9 -0
  320. package/src/core/network/__tests__/api.test.ts +114 -1
  321. package/src/core/network/__tests__/connection.test.ts +3 -3
  322. package/src/core/network/api.ts +3 -2
  323. package/src/core/network/connection-notice.ts +5 -5
  324. package/src/core/network/connection.ts +9 -9
  325. package/src/core/network/requests-lazy.ts +2 -2
  326. package/src/core/packages/__tests__/useSandboxController.test.tsx +2 -2
  327. package/src/core/packages/useSandboxController.ts +6 -6
  328. package/src/core/runtime/__tests__/adapter.test.ts +6 -6
  329. package/src/core/runtime/adapter.ts +7 -7
  330. package/src/core/runtime/config.ts +2 -2
  331. package/src/core/saving/filename.ts +2 -2
  332. package/src/core/saving/save-component.tsx +5 -5
  333. package/src/core/saving/useAutoSave.ts +2 -2
  334. package/src/core/wasm/__tests__/bootstrap.test.ts +33 -1
  335. package/src/core/wasm/worker/bootstrap.ts +22 -3
  336. package/src/core/websocket/__tests__/useMarimoKernelConnection.hook.test.tsx +30 -25
  337. package/src/core/websocket/__tests__/useMarimoKernelConnection.test.ts +5 -5
  338. package/src/core/websocket/connection-utils.ts +21 -21
  339. package/src/core/websocket/types.ts +8 -9
  340. package/src/core/websocket/useMarimoKernelConnection.tsx +33 -22
  341. package/src/css/katex-css.test.ts +166 -0
  342. package/src/css/katex.min.css +175 -169
  343. package/src/hooks/__tests__/useEventListener.test.tsx +45 -1
  344. package/src/hooks/useEventListener.ts +6 -1
  345. package/src/mount.tsx +2 -2
  346. package/src/plugins/core/__test__/registerReactComponent.test.ts +55 -0
  347. package/src/plugins/core/registerReactComponent.tsx +3 -1
  348. package/src/plugins/impl/CheckboxPlugin.tsx +1 -1
  349. package/src/plugins/impl/DataTablePlugin.tsx +23 -2
  350. package/src/plugins/impl/DatePickerPlugin.tsx +5 -3
  351. package/src/plugins/impl/DateRangePlugin.tsx +5 -3
  352. package/src/plugins/impl/DateTimePickerPlugin.tsx +5 -3
  353. package/src/plugins/impl/DropdownPlugin.tsx +1 -1
  354. package/src/plugins/impl/MultiselectPlugin.tsx +1 -1
  355. package/src/plugins/impl/NumberPlugin.tsx +1 -1
  356. package/src/plugins/impl/RadioPlugin.tsx +5 -1
  357. package/src/plugins/impl/RangeSliderPlugin.tsx +1 -1
  358. package/src/plugins/impl/SearchableSelect.tsx +1 -1
  359. package/src/plugins/impl/SliderPlugin.tsx +5 -1
  360. package/src/plugins/impl/SwitchPlugin.tsx +6 -1
  361. package/src/plugins/impl/TextAreaPlugin.tsx +23 -4
  362. package/src/plugins/impl/TextInputPlugin.tsx +10 -2
  363. package/src/plugins/impl/__test__/slider-labels.test.tsx +136 -0
  364. package/src/plugins/impl/__test__/text-labels.test.tsx +141 -0
  365. package/src/plugins/impl/__tests__/DataTablePlugin.test.tsx +65 -8
  366. package/src/plugins/impl/__tests__/widget-labels.test.tsx +122 -0
  367. package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
  368. package/src/plugins/impl/common/labeled.tsx +9 -3
  369. package/src/plugins/impl/data-frames/DataFramePlugin.tsx +15 -3
  370. package/src/plugins/impl/data-frames/forms/__tests__/__snapshots__/form.test.tsx.snap +0 -22
  371. package/src/stories/cell.stories.tsx +2 -2
  372. package/src/stories/dataframe.stories.tsx +7 -0
  373. package/src/stories/layout/vertical/one-column.stories.tsx +5 -5
  374. package/src/stories/progress-stages.stories.tsx +62 -0
  375. package/src/stories/runtime-existing.stories.tsx +44 -0
  376. package/src/stories/runtime-maintenance.stories.tsx +40 -0
  377. package/src/stories/runtime-pixi.stories.tsx +28 -0
  378. package/src/stories/{sandbox.stories.tsx → runtime-story.tsx} +191 -152
  379. package/src/stories/runtime-uv.stories.tsx +56 -0
  380. package/dist/assets/__vite-browser-external-C9iR87Zl.js +0 -1
  381. package/dist/assets/worker-D7hWi02M.js +0 -109
  382. package/dist/classDiagram-ZZMXUADV-BwYhrSEX.js +0 -30
  383. package/dist/classDiagram-v2-VYDZK3BY-HecM04TM.js +0 -30
  384. package/dist/dropdown-menu-BaqM0t4N.js +0 -4502
  385. package/dist/error-banner-DzAmP0AQ.js +0 -391
  386. package/dist/flowDiagram-HODETNUW-DgcjSdPV.js +0 -16
  387. package/dist/label-MNhNNoN6.js +0 -278
  388. package/dist/mermaid-HWGCJPDP-DYCzSILp.js +0 -2
  389. package/dist/purify.es-DgKyQviY.js +0 -805
  390. package/dist/select-BcObMjGz.js +0 -970
  391. package/dist/stateDiagram-v2-MP3YSRHH-Dk5QgdXF.js +0 -30
  392. package/dist/swimlanesDiagram-VR7AAH4N-CbztusY8.js +0 -30
  393. package/src/components/editor/chrome/panels/sandbox-toggle.tsx +0 -52
@@ -1,41 +1,44 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
  import { useAtomValue } from "jotai";
3
- import { AlertCircleIcon, CheckIcon, CircleIcon } from "lucide-react";
4
- import { Spinner } from "@/components/icons/spinner";
3
+ import {
4
+ ProgressStages,
5
+ ProgressStatusIcon,
6
+ type ProgressStage,
7
+ type ProgressState,
8
+ } from "@/components/ui/progress-stages";
5
9
  import { preparationAtom } from "@/core/packages/sandbox-state";
6
10
  import { startupProgressAtom } from "@/core/network/connection";
7
11
  import type { DisplayConnectionNotice } from "@/core/network/useConnectionNotice";
8
- import { cn } from "@/utils/cn";
9
- import { StartupOutput, type StartupOutputState } from "./startup-output";
12
+ import { StartupOutput } from "./startup-output";
10
13
 
11
14
  const STEPS = [
12
15
  {
13
16
  phase: "preparing-environment",
14
17
  titles: {
15
- complete: "Environment prepared",
18
+ succeeded: "Environment prepared",
16
19
  failed: "Environment setup failed",
17
- pending: "Preparing environment",
20
+ running: "Preparing environment",
18
21
  waiting: "Prepare environment",
19
22
  },
20
23
  descriptions: {
21
- complete: "Python and dependencies are available.",
24
+ succeeded: "Python and dependencies are available.",
22
25
  failed: "Setup could not finish.",
23
- pending: "Set up Python and dependencies.",
26
+ running: "Set up Python and dependencies.",
24
27
  waiting: "Set up Python and dependencies.",
25
28
  },
26
29
  },
27
30
  {
28
31
  phase: "starting-kernel",
29
32
  titles: {
30
- complete: "Kernel started",
33
+ succeeded: "Kernel started",
31
34
  failed: "Kernel failed to start",
32
- pending: "Starting kernel",
35
+ running: "Starting kernel",
33
36
  waiting: "Start kernel",
34
37
  },
35
38
  descriptions: {
36
- complete: "The notebook is ready to run.",
39
+ succeeded: "The notebook is ready to run.",
37
40
  failed: "The kernel could not connect.",
38
- pending: "Connecting to this notebook.",
41
+ running: "Connecting to this notebook.",
39
42
  waiting: "After the environment is ready.",
40
43
  },
41
44
  },
@@ -46,31 +49,13 @@ interface StartupProgressProps {
46
49
  surface: "notebook" | "sidebar";
47
50
  }
48
51
 
49
- function StartupStepOutput({
50
- phase,
51
- state,
52
- }: {
53
- phase: (typeof STEPS)[number]["phase"];
54
- state: StartupOutputState;
55
- }) {
56
- const preparation = useAtomValue(preparationAtom);
57
- const progress = useAtomValue(startupProgressAtom);
58
- const preparing = phase === "preparing-environment";
59
- const logs = preparing
60
- ? (preparation?.logs.environment ?? "")
61
- : progress?.phase === phase
62
- ? progress.logs
63
- : "";
64
-
52
+ export function hasStartupStages(notice: DisplayConnectionNotice): boolean {
65
53
  return (
66
- <StartupOutput
67
- key={preparation?.operation_id}
68
- logs={logs}
69
- state={state}
70
- label={
71
- preparing ? "environment preparation output" : "kernel startup output"
72
- }
73
- />
54
+ notice.kind === "startup" &&
55
+ (!notice.sandbox ||
56
+ notice.ready ||
57
+ notice.phase === "preparing-environment" ||
58
+ notice.phase === "starting-kernel")
74
59
  );
75
60
  }
76
61
 
@@ -85,9 +70,13 @@ function StartupSummary({ notice }: { notice: DisplayConnectionNotice }) {
85
70
  </h2>
86
71
  <p className="text-muted-foreground mt-3 text-sm leading-6">
87
72
  {notice.ready
88
- ? "Your environment and kernel are ready."
73
+ ? notice.sandbox
74
+ ? "Your environment and kernel are ready."
75
+ : "Your kernel is ready."
89
76
  : notice.pending
90
- ? "Preparing Python and dependencies for this notebook."
77
+ ? notice.sandbox
78
+ ? "Preparing Python and dependencies for this notebook."
79
+ : "Connecting to this notebook’s Python kernel."
91
80
  : "Review the setup details below to continue."}
92
81
  </p>
93
82
  </header>
@@ -99,106 +88,61 @@ export function ConnectionStatusIcon({
99
88
  }: {
100
89
  notice: DisplayConnectionNotice;
101
90
  }) {
102
- if (notice.ready) {
103
- return (
104
- <CheckIcon
105
- className="size-4 shrink-0 text-(--grass-11)"
106
- aria-hidden={true}
107
- />
108
- );
109
- }
110
- if (notice.pending) {
111
- return (
112
- <Spinner
113
- className="size-4 shrink-0 motion-reduce:animate-none"
114
- aria-hidden={true}
115
- />
116
- );
117
- }
118
91
  return (
119
- <AlertCircleIcon
120
- className="size-4 shrink-0 text-(--red-11)"
121
- aria-hidden={true}
92
+ <ProgressStatusIcon
93
+ state={notice.ready ? "succeeded" : notice.pending ? "running" : "failed"}
122
94
  />
123
95
  );
124
96
  }
125
97
 
126
98
  export function StartupProgress({ notice, surface }: StartupProgressProps) {
99
+ const preparation = useAtomValue(preparationAtom);
100
+ const progress = useAtomValue(startupProgressAtom);
101
+ const activePhase = notice.sandbox ? notice.phase : "starting-kernel";
102
+ const stages: ProgressStage[] = STEPS.filter(
103
+ (step) => notice.sandbox || step.phase === "starting-kernel",
104
+ ).map(({ phase, titles, descriptions }) => {
105
+ const preparing = phase === "preparing-environment";
106
+ const state: ProgressState =
107
+ notice.ready || (preparing && activePhase === "starting-kernel")
108
+ ? "succeeded"
109
+ : activePhase === phase
110
+ ? notice.pending
111
+ ? "running"
112
+ : "failed"
113
+ : "waiting";
114
+ const logs = preparing
115
+ ? (preparation?.logs.environment ?? "")
116
+ : progress?.phase === phase
117
+ ? progress.logs
118
+ : "";
119
+ return {
120
+ id: phase,
121
+ state,
122
+ title: titles[state],
123
+ description: descriptions[state],
124
+ details: surface === "sidebar" && (
125
+ <StartupOutput
126
+ key={preparation?.operation_id}
127
+ logs={logs}
128
+ state={state === "waiting" ? "succeeded" : state}
129
+ label={
130
+ preparing
131
+ ? "environment preparation output"
132
+ : "kernel startup output"
133
+ }
134
+ />
135
+ ),
136
+ };
137
+ });
127
138
  return (
128
139
  <>
129
140
  {surface === "notebook" && <StartupSummary notice={notice} />}
130
- <ol
131
- className={cn("space-y-6", surface === "notebook" && "mt-8")}
132
- aria-label="Notebook startup stages"
133
- >
134
- {STEPS.map(({ phase, titles, descriptions }, index) => {
135
- const complete =
136
- notice.ready || (index === 0 && notice.phase === "starting-kernel");
137
- const active = !notice.ready && notice.phase === phase;
138
- const failed = active && !notice.pending;
139
- const state = complete
140
- ? "complete"
141
- : failed
142
- ? "failed"
143
- : active
144
- ? "pending"
145
- : "waiting";
146
- return (
147
- <li
148
- key={phase}
149
- aria-current={active ? "step" : undefined}
150
- className="relative flex items-start gap-3"
151
- >
152
- {index === 0 && (
153
- <span
154
- aria-hidden={true}
155
- className="absolute left-2 top-6 -bottom-4 border-l border-border"
156
- />
157
- )}
158
- <span
159
- className={cn(
160
- "mt-0.5",
161
- complete ? "text-(--grass-11)" : "text-muted-foreground",
162
- )}
163
- >
164
- {complete ? (
165
- <CheckIcon className="size-4" aria-hidden={true} />
166
- ) : active ? (
167
- <ConnectionStatusIcon notice={notice} />
168
- ) : (
169
- <CircleIcon
170
- className="size-4 text-muted-foreground/50"
171
- aria-hidden={true}
172
- />
173
- )}
174
- </span>
175
- <div className="min-w-0 flex-1">
176
- <div
177
- className={cn(
178
- "text-sm",
179
- failed
180
- ? "text-(--red-11)"
181
- : complete || active
182
- ? "text-foreground"
183
- : "text-muted-foreground",
184
- )}
185
- >
186
- {titles[state]}
187
- </div>
188
- <p className="mt-1 text-xs text-muted-foreground">
189
- {descriptions[state]}
190
- </p>
191
- {surface === "sidebar" && (
192
- <StartupStepOutput
193
- phase={phase}
194
- state={failed ? "failed" : active ? "running" : "succeeded"}
195
- />
196
- )}
197
- </div>
198
- </li>
199
- );
200
- })}
201
- </ol>
141
+ <ProgressStages
142
+ stages={stages}
143
+ label="Notebook startup stages"
144
+ className={surface === "notebook" ? "mt-8" : undefined}
145
+ />
202
146
  </>
203
147
  );
204
148
  }
@@ -7,7 +7,7 @@ import { PyodideLoader } from "@/core/wasm/PyodideLoader";
7
7
  import {
8
8
  type ConnectionStatus,
9
9
  WebSocketClosedReason,
10
- WebSocketState,
10
+ ConnectionState,
11
11
  } from "@/core/websocket/types";
12
12
  import { cn } from "@/utils/cn";
13
13
  import { DynamicFavicon } from "./dynamic-favicon";
@@ -47,7 +47,7 @@ export const AppContainer: React.FC<PropsWithChildren<Props>> = ({
47
47
  data-connection-state={connectionState}
48
48
  className={cn(
49
49
  "mathjax_ignore",
50
- connection.state === WebSocketState.CLOSED &&
50
+ connection.state === ConnectionState.CLOSED &&
51
51
  connection.code !==
52
52
  WebSocketClosedReason.KERNEL_STARTUP_ERROR &&
53
53
  "disconnected",
@@ -14,7 +14,7 @@ import { requestClientAtom } from "@/core/network/requests";
14
14
  import type { EnvironmentInfo } from "@/core/network/types";
15
15
  import { filenameAtom } from "@/core/saving/file-state";
16
16
  import { store } from "@/core/state/jotai";
17
- import { WebSocketState } from "@/core/websocket/types";
17
+ import { ConnectionState } from "@/core/websocket/types";
18
18
  import { ErrorBoundary } from "../ErrorBoundary";
19
19
 
20
20
  vi.mock("@/utils/copy", () => ({
@@ -144,7 +144,7 @@ function resetSharedState() {
144
144
  store.set(requestClientAtom, null);
145
145
  store.set(notebookAtom, initialNotebookState());
146
146
  store.set(viewStateAtom, { mode: "edit", cellAnchor: null });
147
- store.set(connectionAtom, { state: WebSocketState.OPEN });
147
+ store.set(connectionAtom, { state: ConnectionState.OPEN });
148
148
  store.set(filenameAtom, "/project/example.py");
149
149
  }
150
150
 
@@ -17,7 +17,7 @@ import {
17
17
  getConnectionTooltip,
18
18
  isAppInteractionDisabled,
19
19
  } from "@/core/websocket/connection-utils";
20
- import type { WebSocketState } from "@/core/websocket/types";
20
+ import type { ConnectionState } from "@/core/websocket/types";
21
21
  import { cn } from "@/utils/cn";
22
22
  import { Tooltip } from "../../ui/tooltip";
23
23
  import { MarkdownIcon, PythonIcon } from "./code/icons";
@@ -28,7 +28,7 @@ export const CreateCellButton = ({
28
28
  tooltipContent,
29
29
  oneClickShortcut,
30
30
  }: {
31
- connectionState: WebSocketState;
31
+ connectionState: ConnectionState;
32
32
  tooltipContent: React.ReactNode;
33
33
  onClick: ((opts: { code: string; hideCode?: boolean }) => void) | undefined;
34
34
  oneClickShortcut: "shift" | "mod";
@@ -6,7 +6,7 @@ import {
6
6
  getConnectionTooltip,
7
7
  isAppInteractionDisabled,
8
8
  } from "@/core/websocket/connection-utils";
9
- import type { WebSocketState } from "@/core/websocket/types";
9
+ import type { ConnectionState } from "@/core/websocket/types";
10
10
  import { cn } from "@/utils/cn";
11
11
  import { Events } from "@/utils/events";
12
12
  import { Button } from "../../ui/button";
@@ -14,7 +14,7 @@ import { Tooltip } from "../../ui/tooltip";
14
14
 
15
15
  export const DeleteButton = (props: {
16
16
  status: RuntimeState;
17
- connectionState: WebSocketState;
17
+ connectionState: ConnectionState;
18
18
  onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;
19
19
  }): JSX.Element => {
20
20
  const { status, connectionState, onClick } = props;
@@ -6,7 +6,7 @@ import {
6
6
  getConnectionTooltip,
7
7
  isAppInteractionDisabled,
8
8
  } from "@/core/websocket/connection-utils";
9
- import type { WebSocketState } from "@/core/websocket/types";
9
+ import type { ConnectionState } from "@/core/websocket/types";
10
10
  import { renderShortcut } from "../../shortcuts/renderShortcut";
11
11
  import { ToolbarItem } from "./toolbar";
12
12
 
@@ -16,7 +16,7 @@ function computeColor({
16
16
  loading,
17
17
  inactive,
18
18
  }: {
19
- connectionState: WebSocketState;
19
+ connectionState: ConnectionState;
20
20
  needsRun: boolean;
21
21
  loading: boolean;
22
22
  inactive: boolean;
@@ -37,7 +37,7 @@ export const RunButton = (props: {
37
37
  edited: boolean;
38
38
  status: RuntimeState;
39
39
  needsRun: boolean;
40
- connectionState: WebSocketState;
40
+ connectionState: ConnectionState;
41
41
  config: CellConfig;
42
42
  onClick?: () => void;
43
43
  }): JSX.Element => {
@@ -4,7 +4,7 @@ import type { JSX } from "react";
4
4
  import { useRequestClient } from "@/core/network/requests";
5
5
  import type { RuntimeState } from "@/core/network/types";
6
6
  import { isAppInteractionDisabled } from "@/core/websocket/connection-utils";
7
- import type { WebSocketState } from "@/core/websocket/types";
7
+ import type { ConnectionState } from "@/core/websocket/types";
8
8
  import { Functions } from "@/utils/functions";
9
9
  import { renderShortcut } from "../../shortcuts/renderShortcut";
10
10
  import { ToolbarItem } from "./toolbar";
@@ -12,7 +12,7 @@ import { useShouldShowInterrupt } from "./useShouldShowInterrupt";
12
12
 
13
13
  export const StopButton = (props: {
14
14
  status: RuntimeState;
15
- connectionState: WebSocketState;
15
+ connectionState: ConnectionState;
16
16
  }): JSX.Element => {
17
17
  const { connectionState, status } = props;
18
18
  const { sendInterrupt } = useRequestClient();
@@ -14,7 +14,7 @@ import { requestClientAtom } from "@/core/network/requests";
14
14
  import type { EnvironmentInfo } from "@/core/network/types";
15
15
  import { filenameAtom } from "@/core/saving/file-state";
16
16
  import { store } from "@/core/state/jotai";
17
- import { WebSocketState } from "@/core/websocket/types";
17
+ import { ConnectionState } from "@/core/websocket/types";
18
18
  import * as copyModule from "@/utils/copy";
19
19
  import { FeedbackModal } from "../feedback-button";
20
20
 
@@ -53,7 +53,7 @@ describe("FeedbackModal issue reporting", () => {
53
53
  localStorage.clear();
54
54
  store.set(requestClientAtom, MockRequestClient.create());
55
55
  store.set(viewStateAtom, { mode: "edit", cellAnchor: null });
56
- store.set(connectionAtom, { state: WebSocketState.OPEN });
56
+ store.set(connectionAtom, { state: ConnectionState.OPEN });
57
57
  store.set(filenameAtom, "/project/example.py");
58
58
  });
59
59
 
@@ -156,7 +156,7 @@ describe("FeedbackModal issue reporting", () => {
156
156
  });
157
157
 
158
158
  it("disables include code and explains why when disconnected", async () => {
159
- store.set(connectionAtom, { state: WebSocketState.CONNECTING });
159
+ store.set(connectionAtom, { state: ConnectionState.CONNECTING });
160
160
  store.set(
161
161
  requestClientAtom,
162
162
  MockRequestClient.create({
@@ -244,7 +244,7 @@ describe("FeedbackModal issue reporting", () => {
244
244
  "marimo:issue-report:include-code",
245
245
  JSON.stringify(true),
246
246
  );
247
- store.set(connectionAtom, { state: WebSocketState.CONNECTING });
247
+ store.set(connectionAtom, { state: ConnectionState.CONNECTING });
248
248
  store.set(requestClientAtom, null);
249
249
  render(<FeedbackModal onClose={vi.fn()} />, { wrapper });
250
250
 
@@ -39,7 +39,7 @@ import { connectionAtom } from "@/core/network/connection";
39
39
  import { requestClientAtom } from "@/core/network/requests";
40
40
  import { filenameAtom } from "@/core/saving/file-state";
41
41
  import { store } from "@/core/state/jotai";
42
- import { WebSocketState } from "@/core/websocket/types";
42
+ import { ConnectionState } from "@/core/websocket/types";
43
43
  import { useAsyncData } from "@/hooks/useAsyncData";
44
44
  import { useLocalStorage } from "@/hooks/useLocalStorage";
45
45
  import { cn } from "@/utils/cn";
@@ -78,7 +78,7 @@ function getNotebookSourceUnavailableReason(args: {
78
78
  hasRequestClient: boolean;
79
79
  filename: string | null;
80
80
  codeAvailable: boolean;
81
- connectionState: WebSocketState;
81
+ connectionState: ConnectionState;
82
82
  }): string | undefined {
83
83
  if (!args.hasRequestClient) {
84
84
  return "Notebook source is unavailable.";
@@ -89,7 +89,7 @@ function getNotebookSourceUnavailableReason(args: {
89
89
  if (!args.codeAvailable) {
90
90
  return "Notebook source is hidden in this view.";
91
91
  }
92
- if (args.connectionState !== WebSocketState.OPEN) {
92
+ if (args.connectionState !== ConnectionState.OPEN) {
93
93
  return "Connect the notebook to include its source.";
94
94
  }
95
95
  return undefined;
@@ -22,10 +22,10 @@ import { withPackageInvalidation } from "@/core/packages/package-data";
22
22
  import { useInstallPackages } from "@/core/packages/useInstallPackage";
23
23
  import { sandboxAtom, sandboxSyncAtom } from "@/core/packages/sandbox-state";
24
24
  import { store } from "@/core/state/jotai";
25
- import { WebSocketState } from "@/core/websocket/types";
25
+ import { ConnectionState } from "@/core/websocket/types";
26
26
  import PackagesPanel from "../packages-panel";
27
27
  import { PanelSectionProvider } from "../panel-context";
28
- import { SandboxToggle } from "../sandbox-toggle";
28
+ import { RuntimeStatusToggle } from "../runtime-status-toggle";
29
29
 
30
30
  const { openSettings } = vi.hoisted(() => ({
31
31
  openSettings: vi.fn(),
@@ -71,7 +71,7 @@ function renderPanel(
71
71
  ? { backend: context.backend, manifest: "", filename: "notebook.py" }
72
72
  : null,
73
73
  );
74
- store.set(connectionAtom, { state: WebSocketState.OPEN });
74
+ store.set(connectionAtom, { state: ConnectionState.OPEN });
75
75
  store.set(sandboxSyncAtom, { kind: "succeeded" });
76
76
  const getPackageList = vi.fn().mockResolvedValue({ packages: [] });
77
77
  const client = MockRequestClient.create({
@@ -87,7 +87,7 @@ function renderPanel(
87
87
  <Provider store={store}>
88
88
  <TooltipProvider>
89
89
  <PanelSectionProvider value="sidebar">
90
- <SandboxToggle section="sidebar" />
90
+ <RuntimeStatusToggle section="sidebar" />
91
91
  <PackagesPanel />
92
92
  </PanelSectionProvider>
93
93
  </TooltipProvider>
@@ -186,7 +186,7 @@ it("refreshes an open panel when a package is installed elsewhere, after install
186
186
  manifest: "",
187
187
  filename: "notebook.py",
188
188
  });
189
- store.set(connectionAtom, { state: WebSocketState.OPEN });
189
+ store.set(connectionAtom, { state: ConnectionState.OPEN });
190
190
  store.set(sandboxSyncAtom, { kind: "succeeded" });
191
191
  store.set(requestClientAtom, withPackageInvalidation(client));
192
192
  function InstallElsewhere() {
@@ -201,7 +201,7 @@ it("refreshes an open panel when a package is installed elsewhere, after install
201
201
  <Provider store={store}>
202
202
  <TooltipProvider>
203
203
  <PanelSectionProvider value="sidebar">
204
- <SandboxToggle section="sidebar" />
204
+ <RuntimeStatusToggle section="sidebar" />
205
205
  <PackagesPanel />
206
206
  </PanelSectionProvider>
207
207
  <InstallElsewhere />
@@ -221,7 +221,7 @@ it("refreshes an open panel when a package is installed elsewhere, after install
221
221
  });
222
222
 
223
223
  it("keeps packages and the install draft visible while blocking mutations during sync", async () => {
224
- store.set(connectionAtom, { state: WebSocketState.OPEN });
224
+ store.set(connectionAtom, { state: ConnectionState.OPEN });
225
225
  renderPanel({ kind: "sandbox", backend: "pixi" }, populatedTree);
226
226
  await screen.findByRole("treeitem", { name: /polars/ });
227
227
  const input = screen.getByPlaceholderText("Add packages to pixi sandbox...");
@@ -235,7 +235,7 @@ it("keeps packages and the install draft visible while blocking mutations during
235
235
  expect(
236
236
  screen.queryByRole("list", { name: "Notebook startup stages" }),
237
237
  ).not.toBeInTheDocument();
238
- const toggle = screen.getByRole("button", { name: "pixi sandbox" });
238
+ const toggle = screen.getByRole("button", { name: /^pixi sandbox, / });
239
239
  fireEvent.click(toggle);
240
240
  expect(toggle).toHaveAttribute("aria-expanded", "false");
241
241
  act(() =>