@marimo-team/islands 0.24.3-dev2 → 0.24.3-dev22

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 (284) hide show
  1. package/dist/{ConnectedDataExplorerComponent-qIKbwYin.js → ConnectedDataExplorerComponent-BLO7UDpo.js} +18 -18
  2. package/dist/{ErrorBoundary-CR-ZQN_c.js → ErrorBoundary-B7uSdDUm.js} +6 -6
  3. package/dist/{ImageComparisonComponent-2a9TMMm2.js → ImageComparisonComponent-RspMflu6.js} +3 -3
  4. package/dist/{Plot-C-9MQeGP.js → Plot-CTyjbQDT.js} +21032 -20666
  5. package/dist/_baseMerge-Bnytch8P.js +165 -0
  6. package/dist/{abnfDiagram-N423BO3Z-CQKwzX8t.js → abnfDiagram-VCTEODGH-DCb2K_RB.js} +17 -18
  7. package/dist/{any-language-editor-CpTnK43-.js → any-language-editor-C0dftc2Z.js} +8 -8
  8. package/dist/arc-7ra3iNdN.js +81 -0
  9. package/dist/architecture-7GRP2DOG-BWLylgiA.js +3 -0
  10. package/dist/{architectureDiagram-T3A2C74G-CncrDpfa.js → architectureDiagram-5GKGNRK7-Bb_n642s.js} +25 -25
  11. package/dist/assets/__vite-browser-external-BajL8aoc.js +1 -0
  12. package/dist/assets/worker-BemUy60C.js +109 -0
  13. package/dist/blockDiagram-I7D4REHJ-BbXEXJRu.js +1922 -0
  14. package/dist/{button-CKBkqR9J.js → button-DdXAm8iz.js} +5 -5
  15. package/dist/{c4Diagram-5PPSVZJV-DarUk3Yq.js → c4Diagram-7LVT6UL2-DcLsbQmR.js} +696 -668
  16. package/dist/{capabilities-CMBBJTcc.js → capabilities-B3ce_GNu.js} +1 -1
  17. package/dist/{channel-CyiYUzJv.js → channel-B5XnTarr.js} +1 -1
  18. package/dist/chat-ui-Cn1TFk66.js +5835 -0
  19. package/dist/{check-CHig47QV.js → check-mcQyZmFG.js} +1 -1
  20. package/dist/{chunk-2Q5K7J3B-BMuJl2jB.js → chunk-2Q5K7J3B-BMkUkeuy.js} +2 -2
  21. package/dist/chunk-4HAMMTFA-D2qv8E0X.js +4188 -0
  22. package/dist/{chunk-5VM5RSS4-Bcq0ftdy.js → chunk-5VM5RSS4-DKsmPCL6.js} +2 -2
  23. package/dist/{chunk-NSK5VX7P-CDTMcJB0.js → chunk-75Z2AOVW-5_HsvXwr.js} +23 -23
  24. package/dist/{chunk-I66GZJ75-BqyTCAPf.js → chunk-DU6HZSFF-BUgAHvnM.js} +21 -4
  25. package/dist/{chunk-2GRJ4B5K-DgO8Qudq.js → chunk-F27PBJKO-DHmYWZXr.js} +4 -4
  26. package/dist/{chunk-KEIR6QF5-C4KX3XYh.js → chunk-FOHPRMQF-BpYR8RqP.js} +4 -4
  27. package/dist/{chunk-WRU74C26-BpWsbiDK.js → chunk-GMAD6QVW-Czynz8aA.js} +486 -258
  28. package/dist/chunk-GVQU2GXP-yQEdulRS.js +37 -0
  29. package/dist/{chunk-5RXB4S5H-tLNUVDdO.js → chunk-IMKFNOWR-Du9BN2Ul.js} +11 -11
  30. package/dist/{chunk-JWPE2WC7-BJwjGUnF.js → chunk-JWPE2WC7-DJvv1t8U.js} +2 -2
  31. package/dist/chunk-L3NEJ4N5-DwRWnDDK.js +245 -0
  32. package/dist/{chunk-7Z6QIM7H-Dc18hFxH.js → chunk-OSK3NFVY-BBKU_Ign.js} +222 -144
  33. package/dist/{chunk-W5SLKNZC-DLnvpEtV.js → chunk-P2QGCYS3-C0iGU29N.js} +20 -20
  34. package/dist/{chunk-KBJHAD2P-BuqWqkcW.js → chunk-POPQ4Y6H-BCbS3Ozc.js} +4 -4
  35. package/dist/{chunk-4I5QYGJK-DpytHuZQ.js → chunk-PWAF6VOD-CTFCL0jI.js} +4 -4
  36. package/dist/{chunk-JQJVKLGR-CgqCwe8E.js → chunk-SHT3W25Y-tUelricH.js} +109 -63
  37. package/dist/{chunk-6Q2QTUOP-DmTcEBMn.js → chunk-SVP7TREG-DK3egkfQ.js} +5 -5
  38. package/dist/{chunk-GF5L2VYU-B0wgCQgS.js → chunk-TICWLB2K-DRANTdnp.js} +13 -13
  39. package/dist/{chunk-XXDRQBXY-D73H4IN0.js → chunk-XXDRQBXY-Dnl5VBqG.js} +3 -3
  40. package/dist/{chunk-Y2CYZVJY-DoegUj_e.js → chunk-Y2CYZVJY-DKKS1VyV.js} +1 -1
  41. package/dist/{chunk-5FQGJX7Z-B85XCPv6.js → chunk-YOKDWASO-DrWbKnxA.js} +6925 -5460
  42. package/dist/classDiagram-ZZMXUADV-7wCSVH7o.js +30 -0
  43. package/dist/classDiagram-v2-VYDZK3BY-QwnvcnhB.js +30 -0
  44. package/dist/{common-C4UahYwr.js → common-DIyUaEO6.js} +7398 -6912
  45. package/dist/{compiler-runtime-CAH9RLw2.js → compiler-runtime-Cj8ZWiNS.js} +2 -2
  46. package/dist/{copy-CD7S58CY.js → copy-C0N4m1lm.js} +4 -4
  47. package/dist/{cose-bilkent-JH36ORCC-FUWHkXFX.js → cose-bilkent-JH36ORCC-_LyRKVqm.js} +2 -2
  48. package/dist/cubic-OaEBhQPK.js +1404 -0
  49. package/dist/cynefin-OW5HDTMX-obq-i80l.js +3 -0
  50. package/dist/{cynefinDiagram-MW4NZA55-BXSFK93J.js → cynefinDiagram-5FMLGOSQ-CB7O4IZB.js} +10 -10
  51. package/dist/{dagre-CGyalH38.js → dagre-DfYd3btw.js} +678 -537
  52. package/dist/dagre-GXQ25YYZ-C-a95ISW.js +425 -0
  53. package/dist/{data-grid-overlay-editor-DZM4BAaI.js → data-grid-overlay-editor-C5eUZVTo.js} +8 -9
  54. package/dist/{data-grid-types-BnZwWG8z.js → data-grid-types-BucVmDDp.js} +1 -1
  55. package/dist/{defaultLocale-DKaU_opG.js → defaultLocale-JI_lnoCe.js} +1 -1
  56. package/dist/{diagram-7IWD3JNH-BjfzDNvj.js → diagram-S7CK7UJ4-BsKLYQaH.js} +40 -39
  57. package/dist/{diagram-UB23O5K3-DDg-7wLA.js → diagram-UQ7AKVKN-ppYdvuTN.js} +10 -10
  58. package/dist/{diagram-B4RE2ZJO-CKccR9eE.js → diagram-VSXAHHWV-BKpmG23x.js} +10 -10
  59. package/dist/{diagram-Q27KOJAE-Zhz01ss7.js → diagram-VX7I27RA-CAMK2l0E.js} +21 -21
  60. package/dist/{diagram-LBJQPF4R-CJ-bOruh.js → diagram-Z3DM3KII-CxQ7MggT.js} +10 -10
  61. package/dist/{dist-dAqZAPcF.js → dist-1HDa70oE.js} +3 -3
  62. package/dist/{dist-3_o3T78I.js → dist-6ChWbo8z.js} +13 -13
  63. package/dist/{dist-Re9sOPOx.js → dist-9x1ZRe-e.js} +2 -2
  64. package/dist/{dist-DEeLqRlU.js → dist-B1vYLK28.js} +1 -1
  65. package/dist/{dist-C5Bn52W4.js → dist-B8D7McG3.js} +3 -3
  66. package/dist/{dist-_XvgytiS.js → dist-BHCHt1NI.js} +1 -1
  67. package/dist/{dist-CRjAdnqF.js → dist-BRxfaJgs.js} +3 -3
  68. package/dist/{dist-Byj2bV8o.js → dist-BVGtK7Ht.js} +1 -1
  69. package/dist/{dist-BIN5LKyE.js → dist-BaHjhkpZ.js} +2 -2
  70. package/dist/{dist-DVFbIwc5.js → dist-BtKIs9N-.js} +1 -1
  71. package/dist/{dist-BrQGcfQ9.js → dist-C2KzV-vf.js} +2 -2
  72. package/dist/{dist-DJFiGP2k.js → dist-C2wDlYdD.js} +2 -2
  73. package/dist/{dist-BVRM2y1P.js → dist-C8xMLVYi.js} +2 -2
  74. package/dist/dist-CMh_W4y4.js +538 -0
  75. package/dist/{dist-BzN60Z2s.js → dist-CPGxfVGX.js} +1 -1
  76. package/dist/{dist-C7v-9nUK.js → dist-Cm3iAFMD.js} +3 -3
  77. package/dist/{dist-CGAxEiaM.js → dist-Cs2FijYk.js} +2 -2
  78. package/dist/{dist-hXd65f0_.js → dist-D1PpnuZB.js} +1 -1
  79. package/dist/{dist-VdvbxG72.js → dist-DHOTQar0.js} +1 -1
  80. package/dist/{dist-DcgzXCfy.js → dist-DPcEtqmG.js} +2 -2
  81. package/dist/{dist-D4Z_qdP4.js → dist-Df0wKI0F.js} +1 -1
  82. package/dist/{dist-qhLI-SHd.js → dist-DszxuxS1.js} +2 -2
  83. package/dist/{dist-BEmkrGoQ.js → dist-Kxgjxakw.js} +1 -1
  84. package/dist/{dist-BbSMhhD2.js → dist-KzZ7WELx.js} +2 -2
  85. package/dist/{dist-jWUab2d1.js → dist-lA1Cttkb.js} +1 -1
  86. package/dist/{dropdown-menu-DhCfcscX.js → dropdown-menu-C73aTomr.js} +184 -184
  87. package/dist/{ebnfDiagram-BXEA7PRR-Dm75pCAS.js → ebnfDiagram-PWID7BFC-DzybELvk.js} +17 -18
  88. package/dist/{erDiagram-JOGREHBK-rVDG3VSQ.js → erDiagram-RLTQ6QDP-BVxV97ld.js} +1037 -798
  89. package/dist/{error-banner-WDhUzJyg.js → error-banner-hCaH06e3.js} +207 -207
  90. package/dist/{esm-CR1nhb1c.js → esm-BElI3qKH.js} +22 -22
  91. package/dist/{esm-C1d0g6Bv.js → esm-G4Fhsgng.js} +51 -37
  92. package/dist/{esm-CesmlDrs.js → esm-blALgIVy.js} +332 -319
  93. package/dist/eventmodeling-NTZA5JFV-D7nP7Uyu.js +3 -0
  94. package/dist/{extends-BPB6_lTK.js → extends-Do6pRuJa.js} +8 -8
  95. package/dist/flowDiagram-HODETNUW-BKvXsWYX.js +16 -0
  96. package/dist/{formats-CJMVUfb3.js → formats-vDAoRpYs.js} +8 -8
  97. package/dist/{ganttDiagram-PKOTCBZU-9D-LXF6P.js → ganttDiagram-EL5Y4UJY-DbzEBLbl.js} +15 -15
  98. package/dist/gitGraph-4MIJSDKK-Dy9uQXGh.js +3 -0
  99. package/dist/{gitGraphDiagram-DS77QQ5N-BfpsXTLf.js → gitGraphDiagram-WWUBYQGX-BMf0iKi1.js} +10 -10
  100. package/dist/{glide-data-editor-sPZ8fUFn.js → glide-data-editor-Bcy8iaZa.js} +2785 -2562
  101. package/dist/{glide-utils-NShAPPtn.js → glide-utils-BMnFm0vZ.js} +4 -4
  102. package/dist/highlighted-body-KPVGNVTW-Ad3MKZ18.js +38 -0
  103. package/dist/{html-to-image-BTYnN4ev.js → html-to-image-CSU-_5BI.js} +5716 -5451
  104. package/dist/info-A6RAGUB7-DKoayiHY.js +3 -0
  105. package/dist/{infoDiagram-6WML65LV-DqCTXHVy.js → infoDiagram-27XIBGKW-B_ucqo-U.js} +7 -7
  106. package/dist/{ishikawaDiagram-WSZJBQD7-BCUYmZ1v.js → ishikawaDiagram-5VMMS53U-BZFx9b-o.js} +8 -8
  107. package/dist/{journeyDiagram-NVQOT4AX-BXB6M4zN.js → journeyDiagram-3NMN7TZE-D2LcKDUO.js} +8 -8
  108. package/dist/{jsx-runtime-CpoKNRgu.js → jsx-runtime-DgDPJV9S.js} +1 -1
  109. package/dist/{kanban-definition-27J2QSJJ-CGRhrDUX.js → kanban-definition-UXKFOSKX-BpIfcu3G.js} +29 -29
  110. package/dist/katex-DFBiSucW.js +21840 -0
  111. package/dist/{label-lwzzBHUW.js → label-e37ixur5.js} +6 -6
  112. package/dist/{linear-D5r_1YqD.js → linear-Cnaq3Tfb.js} +4 -4
  113. package/dist/{loader-VZ__bv4g.js → loader-D2W4oM-3.js} +15 -15
  114. package/dist/main.js +7018 -12382
  115. package/dist/mermaid-B1Jb9HfY.js +3084 -0
  116. package/dist/mermaid-HWGCJPDP-DYCzSILp.js +2 -0
  117. package/dist/mermaid-parser.core-DxuSfYwJ.js +638 -0
  118. package/dist/{mhchem-BjwrxcV-.js → mhchem-DWCF06w9.js} +1 -1
  119. package/dist/{micromark-factory-space-DruVGzeG.js → micromark-factory-space-DGxAzmw8.js} +2 -2
  120. package/dist/{mindmap-definition-FAOFIHXS-C9gRhzZq.js → mindmap-definition-YA3MSWOX-CmpAfv8K.js} +17 -17
  121. package/dist/{node-sql-parser-DesT1xNw.js → node-sql-parser-BiZOJ-FS.js} +0 -3
  122. package/dist/{number-overlay-editor-De2CabLL.js → number-overlay-editor-CFofZaOi.js} +5 -5
  123. package/dist/packet-AYTQ26CC-Yw7ajchJ.js +3 -0
  124. package/dist/{pegDiagram-VL7TDLO6-Df9IUjMD.js → pegDiagram-XKGWAZYB-DO-0Q8SE.js} +19 -20
  125. package/dist/{pick-SnHlmIBN.js → pick-B7vX8zxG.js} +1 -1
  126. package/dist/pie-WAS4IAKB-BKdKOAkL.js +3 -0
  127. package/dist/{pieDiagram-7S7Q4E2Y-BmRzQ8ZP.js → pieDiagram-E7YTZNPT-B1MbuA_g.js} +29 -31
  128. package/dist/{process-output-CsALk6tp.js → process-output-B6HE2ojm.js} +4 -4
  129. package/dist/purify.es-DgKyQviY.js +805 -0
  130. package/dist/{quadrantDiagram-CIZ2JOQS-wFBvWcxS.js → quadrantDiagram-AXDQQJYC-DftINo6g.js} +5 -5
  131. package/dist/radar-RG4KPBEZ-ScR_D_Ts.js +3 -0
  132. package/dist/railroad-74A4TZTK-DQvPSdo5.js +3 -0
  133. package/dist/railroad-abnf-HS5TGJTU-CsJQG2O8.js +3 -0
  134. package/dist/railroad-ebnf-LZEXJU2U-BgEobkSn.js +3 -0
  135. package/dist/railroad-peg-WCYAUIDC-DjLAjofI.js +3 -0
  136. package/dist/{railroadDiagram-AXF67PYL-DxbIatiN.js → railroadDiagram-O6MQD6OU-DPVOQUXC.js} +17 -18
  137. package/dist/{react-dom-C94wmq5w.js → react-dom-BUgJ-ab_.js} +3 -3
  138. package/dist/{react-DMWcHin-.js → react-ofJbxM4x.js} +2 -2
  139. package/dist/{react-vega-DSD5aT7_.js → react-vega-5AcMW8gG.js} +10012 -9369
  140. package/dist/{requirementDiagram-LRYGKXZP-X_x-Y713.js → requirementDiagram-BXWQKSXE-CC7wZ-tM.js} +20 -19
  141. package/dist/{reveal-component-ChYEzi00.js → reveal-component-GEGc56E6.js} +1171 -1105
  142. package/dist/{sankeyDiagram-W5VNT64P-BYJALbbm.js → sankeyDiagram-P5KCCOFB-CDKR5TJH.js} +4 -4
  143. package/dist/schemas-BDZr-nP0.js +5727 -0
  144. package/dist/{select-3qHpFKF9.js → select-UMOSCa3W.js} +246 -246
  145. package/dist/{sequenceDiagram-SI44F4Z6-BiPBe3Sv.js → sequenceDiagram-WJ2MYXX4-DomSyoJI.js} +11 -11
  146. package/dist/{sizeCapture-X5ZJPWSS-BKLDeh5H.js → sizeCapture-INFHLROL-Dx5SpkQF.js} +2 -2
  147. package/dist/{spec-CutWdqo3.js → spec-g740fOWu.js} +4 -4
  148. package/dist/{src-C31ngt98.js → src-CA_m4ONl.js} +298 -303
  149. package/dist/{stateDiagram-OKZ733FA-B7QyNBxH.js → stateDiagram-D77RDMKH-SQLLjdtF.js} +19 -20
  150. package/dist/stateDiagram-v2-MP3YSRHH-Dup4KkIr.js +30 -0
  151. package/dist/style.css +2 -2
  152. package/dist/{swimlanes-SLNWSIFB-B4f8VP3b.js → swimlanes-42K2YHIH-ZXbhyGv6.js} +1501 -1591
  153. package/dist/swimlanesDiagram-VR7AAH4N-CluwxV0g.js +30 -0
  154. package/dist/{swiper-component-C90YjhaV.js → swiper-component-IOUowglM.js} +39 -26
  155. package/dist/{time-aWGfjN8x.js → time-BieKwdYS.js} +42 -42
  156. package/dist/{timeline-definition-Z64GVDOM-Dacq_5lr.js → timeline-definition-24CTP7MA-B8i6B9RR.js} +7 -7
  157. package/dist/{toDate-D-Rx3ux5.js → toDate-C3JOXlJT.js} +10 -9
  158. package/dist/{tooltip-Dt77sBeT.js → tooltip-CdE8k0pS.js} +42 -42
  159. package/dist/treeView-Q6P3EWNA-DuRV97YF.js +3 -0
  160. package/dist/treemap-WGGIJYW6-AsLq-uwC.js +3 -0
  161. package/dist/{use-vega-container-remeasure-DUW4tRxq.js → use-vega-container-remeasure-4DwJbPWu.js} +2 -2
  162. package/dist/{useAsyncData-CH6-CgJF.js → useAsyncData-C0f7qnnN.js} +3 -3
  163. package/dist/{useDateFormatter-Cp9Jdxls.js → useDateFormatter-BKpQHt-W.js} +8 -8
  164. package/dist/{useDeepCompareMemoize-JC87C_jO.js → useDeepCompareMemoize-QCa0HbWB.js} +2 -2
  165. package/dist/{useIframeCapabilities-De3C-9b4.js → useIframeCapabilities-CVtNkI3Y.js} +2 -2
  166. package/dist/{useLifecycle-B4RGlyf0.js → useLifecycle-BGRBkTFT.js} +6 -6
  167. package/dist/useTheme-iQ0VoptU.js +904 -0
  168. package/dist/{vega-component-D-IXRnlx.js → vega-component-DRI4BDLQ.js} +15 -15
  169. package/dist/{vega-embed-container-TJ5z5dZw.js → vega-embed-container-CbnTccZi.js} +6 -6
  170. package/dist/vega-loader.browser-D95WfUcj.js +1139 -0
  171. package/dist/{vennDiagram-T6HMQDX7-D-Rcq3Iu.js → vennDiagram-4TSXK5OY-CS7lHhxI.js} +9 -9
  172. package/dist/wardley-WFR3VGLG-Na-tFhQJ.js +3 -0
  173. package/dist/{wardleyDiagram-T6FBY63Y-Z-Og7_Wd.js → wardleyDiagram-VM6X3IG4-BSm-L8JI.js} +10 -10
  174. package/dist/{xychartDiagram-ELKLHX3M-BDJ2dITA.js → xychartDiagram-S5SC5T6Z-8fKCJGrJ.js} +248 -139
  175. package/package.json +52 -52
  176. package/src/__mocks__/requests.ts +7 -2
  177. package/src/__tests__/__snapshots__/CellStatus.test.tsx.snap +12 -12
  178. package/src/components/data-table/column-explorer-panel/column-explorer.tsx +2 -6
  179. package/src/components/data-table/column-visibility-dropdown.tsx +9 -3
  180. package/src/components/datasources/components.tsx +4 -2
  181. package/src/components/editor/chrome/components/feedback-button.tsx +10 -9
  182. package/src/components/editor/chrome/panels/__tests__/packages-panel.test.tsx +143 -0
  183. package/src/components/editor/chrome/panels/packages-panel.tsx +145 -51
  184. package/src/components/editor/code/__tests__/readonly-diff.test.tsx +65 -0
  185. package/src/components/editor/code/readonly-diff.tsx +1 -1
  186. package/src/components/editor/file-tree/__tests__/tree-actions.test.tsx +54 -0
  187. package/src/components/editor/file-tree/tree-actions.tsx +11 -14
  188. package/src/components/editor/output/Outputs.css +1 -0
  189. package/src/components/editor/package-alert.tsx +25 -1
  190. package/src/components/home/components.tsx +17 -0
  191. package/src/components/pages/gallery-page.tsx +2 -4
  192. package/src/components/pages/home-page.tsx +2 -4
  193. package/src/components/terminal/terminal.tsx +4 -4
  194. package/src/components/tracing/tracing-spec.ts +1 -1
  195. package/src/components/ui/table.tsx +1 -1
  196. package/src/core/cells/pending-delete-service.ts +12 -16
  197. package/src/core/codemirror/language/__tests__/sql.test.ts +70 -2
  198. package/src/core/codemirror/language/languages/sql/sql.ts +16 -1
  199. package/src/core/codemirror/rtc/extension.ts +5 -2
  200. package/src/core/datasets/__tests__/data-source.test.ts +2 -0
  201. package/src/core/datasets/data-source-connections.ts +15 -10
  202. package/src/core/islands/__tests__/parse.test.ts +140 -7
  203. package/src/core/islands/parse.ts +20 -0
  204. package/src/core/packages/__tests__/useInstallPackage.test.tsx +47 -1
  205. package/src/core/packages/toast-components.tsx +26 -0
  206. package/src/core/packages/useInstallPackage.ts +7 -2
  207. package/src/core/runtime/__tests__/runtime.test.ts +11 -0
  208. package/src/core/runtime/runtime.ts +7 -2
  209. package/src/core/wasm/bridge.ts +1 -0
  210. package/src/core/websocket/transports/transport.ts +1 -1
  211. package/src/core/websocket/transports/ws.ts +1 -1
  212. package/src/css/app/Cell.css +2 -0
  213. package/src/plugins/core/RenderHTML.tsx +22 -2
  214. package/src/plugins/core/__test__/RenderHTML.test.ts +187 -0
  215. package/src/plugins/layout/AccordionPlugin.tsx +7 -2
  216. package/src/plugins/layout/__test__/AccordionPlugin.test.tsx +66 -0
  217. package/dist/_baseMerge-Dv8bBloN.js +0 -73
  218. package/dist/_initCloneObject---vediN2.js +0 -95
  219. package/dist/arc-DOVLrCPd.js +0 -82
  220. package/dist/architecture-TIHT7OUA-MiJpPpQW.js +0 -3
  221. package/dist/array-CApNbSU9.js +0 -6
  222. package/dist/assets/__vite-browser-external-BdKGjRZ4.js +0 -1
  223. package/dist/assets/worker-DlIBfp9S.js +0 -98
  224. package/dist/blockDiagram-VBNYF7ZC-Bc--I65C.js +0 -3158
  225. package/dist/chat-ui-DttQ-5Ut.js +0 -8455
  226. package/dist/chunk-3NCLNEKW-BIp_lB_4.js +0 -14
  227. package/dist/chunk-5FCAYU7R-C_HO9A1J.js +0 -23
  228. package/dist/chunk-5HE753X5-Bixm_MV-.js +0 -38
  229. package/dist/chunk-5JV3BV7I-CH5J3iZY.js +0 -54
  230. package/dist/chunk-5TONJI2A-DG6gDiSS.js +0 -62
  231. package/dist/chunk-7BUUIJ7U-5afmIPeo.js +0 -82
  232. package/dist/chunk-BIQX33UG-7TMBUf89.js +0 -23
  233. package/dist/chunk-CQNSW5MT-Cnqqsxt-.js +0 -38
  234. package/dist/chunk-CYSBUYHQ-BAbymFHR.js +0 -23
  235. package/dist/chunk-EMLP6XTP-Bsz-QL77.js +0 -23
  236. package/dist/chunk-J7OUQ5F2-CM_meqZH.js +0 -57
  237. package/dist/chunk-JG7HCLWE-DUnCDgPk.js +0 -62
  238. package/dist/chunk-MOZMSUNE-BG6IHvzT.js +0 -35
  239. package/dist/chunk-OSBZ3O6U-CYwj_bvR.js +0 -23
  240. package/dist/chunk-QBLGF6JB-B4vJ4j8J.js +0 -23
  241. package/dist/chunk-QR6OTTB3-D4wH2ldi.js +0 -3738
  242. package/dist/chunk-R7FJI6CG-Blf8FcmZ.js +0 -64
  243. package/dist/chunk-RYQCIY6F-BWbIlBIH.js +0 -241
  244. package/dist/chunk-U6XO7XAA-COw445DS.js +0 -63
  245. package/dist/chunk-UBXNYLIW-BHigVU4H.js +0 -32
  246. package/dist/chunk-YOTPTUD7-Dn044Q_d.js +0 -30
  247. package/dist/chunk-ZIRB5QZD-BR4TMfOa.js +0 -1153
  248. package/dist/classDiagram-JCYQIIEL-DmXSLxe_.js +0 -30
  249. package/dist/classDiagram-v2-OCEON4UE-CooqVexA.js +0 -30
  250. package/dist/click-outside-container-D_URcm3D.js +0 -167
  251. package/dist/code-block-37QAKDTI-CQrzBOr-.js +0 -107
  252. package/dist/cynefin-VYW2F7L2-CeHAxOEX.js +0 -3
  253. package/dist/dagre-VZM6K2ZE-CJggWPTJ.js +0 -328
  254. package/dist/dist-ABQjhuek.js +0 -64
  255. package/dist/dist-CO5R6VMi.js +0 -538
  256. package/dist/eventmodeling-45OFAUF4-B_lWZ-Pd.js +0 -3
  257. package/dist/flowDiagram-UKHOOZJN-g1AmrZzM.js +0 -17
  258. package/dist/gitGraph-TEB2WS4Q-Dj-eXUph.js +0 -3
  259. package/dist/info-DKCQHKI2-Bhb-pe2e.js +0 -3
  260. package/dist/line-CuKjIQa1.js +0 -34
  261. package/dist/map-BJpOfPlL.js +0 -149
  262. package/dist/math-BXtKgYah.js +0 -10
  263. package/dist/mermaid-4DMBBIKO-Ddp9TgNp.js +0 -2
  264. package/dist/mermaid-BsHdQeQf.js +0 -1173
  265. package/dist/mermaid-parser.core-Din9FvSi.js +0 -99
  266. package/dist/packet-7NZHBO7P-fbkIIyKE.js +0 -3
  267. package/dist/path-BNHuHZP8.js +0 -87
  268. package/dist/pie-RZYD4A2V-CLRIsxY1.js +0 -3
  269. package/dist/purify.es-CB-YO1Hn.js +0 -774
  270. package/dist/radar-I7S5WNFK-BGzCbgXu.js +0 -3
  271. package/dist/railroad-3IZDKUUU-CvQIIcuU.js +0 -3
  272. package/dist/railroad-abnf-AHOZXSZD-CMwtlNtu.js +0 -3
  273. package/dist/railroad-ebnf-EBAXGLYW-n1QUOAsh.js +0 -3
  274. package/dist/railroad-peg-LSFZ7HO6-PjnrpmCs.js +0 -3
  275. package/dist/schemas-DzK6U94N.js +0 -6057
  276. package/dist/stateDiagram-v2-UEYNNEHI-BTRUs8Il.js +0 -30
  277. package/dist/step-CKczO72Q.js +0 -670
  278. package/dist/swimlanesDiagram-ULZ7WXOC-NBmgBl9G.js +0 -31
  279. package/dist/timer-DpDyj9G0.js +0 -596
  280. package/dist/treeView-QDETBFTQ-DU8LwHuf.js +0 -3
  281. package/dist/treemap-6X3UGDF4-DUk4-k_O.js +0 -3
  282. package/dist/useTheme-CVJ0UOf2.js +0 -841
  283. package/dist/vega-loader.browser-DEggZzni.js +0 -1083
  284. package/dist/wardley-OPB4EBWU-Db-AaGas.js +0 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marimo-team/islands",
3
- "version": "0.24.3-dev2",
3
+ "version": "0.24.3-dev22",
4
4
  "main": "dist/main.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "type": "module",
@@ -21,7 +21,7 @@
21
21
  "./unstable_internal/*": "./src/*"
22
22
  },
23
23
  "dependencies": {
24
- "@ai-sdk/react": "^4.0.40",
24
+ "@ai-sdk/react": "^4.0.90",
25
25
  "@anywidget/types": "^0.4.0",
26
26
  "@codemirror/autocomplete": "^6.20.3",
27
27
  "@codemirror/commands": "^6.11.0",
@@ -38,7 +38,7 @@
38
38
  "@codemirror/theme-one-dark": "^6.1.3",
39
39
  "@codemirror/view": "^6.43.9",
40
40
  "@dagrejs/dagre": "^1.1.8",
41
- "@date-fns/tz": "^1.4.1",
41
+ "@date-fns/tz": "^1.5.0",
42
42
  "@dnd-kit/core": "^6.3.1",
43
43
  "@dnd-kit/modifiers": "^9.0.0",
44
44
  "@dnd-kit/sortable": "^10.0.0",
@@ -46,9 +46,9 @@
46
46
  "@emotion/cache": "^11.14.0",
47
47
  "@emotion/react": "^11.14.0",
48
48
  "@glideapps/glide-data-grid": "6.0.4-alpha24",
49
- "@hookform/resolvers": "^5.2.2",
49
+ "@hookform/resolvers": "^5.9.1",
50
50
  "@img-comparison-slider/react": "^8.0.2",
51
- "@internationalized/date": "^3.10.1",
51
+ "@internationalized/date": "^3.12.3",
52
52
  "@lezer/common": "^1.5.2",
53
53
  "@lezer/highlight": "^1.2.3",
54
54
  "@lezer/lr": "^1.4.10",
@@ -67,13 +67,13 @@
67
67
  "@radix-ui/colors": "^3.0.0",
68
68
  "@radix-ui/react-icons": "~1.3.2",
69
69
  "@radix-ui/react-use-controllable-state": "~1.2.2",
70
- "@replit/codemirror-vim": "^6.3.0",
70
+ "@replit/codemirror-vim": "^6.4.0",
71
71
  "@revealjs/react": "^0.2.1",
72
- "@streamdown/math": "^1.0.1",
73
- "@tailwindcss/postcss": "^4.3.0",
74
- "@tailwindcss/typography": "^0.5.19",
72
+ "@streamdown/math": "^1.0.2",
73
+ "@tailwindcss/postcss": "^4.3.3",
74
+ "@tailwindcss/typography": "^0.5.20",
75
75
  "@tanstack/react-table": "^8.21.3",
76
- "@tanstack/react-virtual": "^3.13.23",
76
+ "@tanstack/react-virtual": "^3.14.10",
77
77
  "@textea/json-viewer": "^4.0.1",
78
78
  "@types/humanize-duration": "^3.27.4",
79
79
  "@types/js-cookie": "^3.0.6",
@@ -81,7 +81,7 @@
81
81
  "@types/react-grid-layout": "^1.3.6",
82
82
  "@uidotdev/usehooks": "^2.4.1",
83
83
  "@uiw/codemirror-extensions-langs": "^4.25.11",
84
- "@uiw/react-codemirror": "4.25.4",
84
+ "@uiw/react-codemirror": "4.25.11",
85
85
  "@uwdata/flechette": "^1.1.2",
86
86
  "@valtown/codemirror-codeium": "^1.1.1",
87
87
  "@xterm/addon-attach": "^0.12.0",
@@ -92,45 +92,45 @@
92
92
  "@xterm/addon-web-links": "^0.12.0",
93
93
  "@xterm/xterm": "^5.5.0",
94
94
  "@zed-industries/agent-client-protocol": "^0.4.5",
95
- "ai": "^7.0.37",
95
+ "ai": "^7.0.87",
96
96
  "ansi_up": "^6.0.6",
97
97
  "class-variance-authority": "^0.7.1",
98
98
  "clsx": "^2.1.1",
99
99
  "cmdk": "^1.1.1",
100
100
  "compassql": "^0.21.2",
101
- "cssnano": "^7.1.2",
102
- "date-fns": "^4.1.0",
101
+ "cssnano": "^7.1.9",
102
+ "date-fns": "^4.4.0",
103
103
  "dequal": "^2.0.3",
104
104
  "dnd-core": "^16.0.1",
105
- "dompurify": "^3.3.1",
105
+ "dompurify": "^3.4.14",
106
106
  "htm": "^3.1.1",
107
- "html-react-parser": "^5.2.14",
107
+ "html-react-parser": "^5.2.17",
108
108
  "html-to-image": "1.11.13",
109
- "humanize-duration": "^3.33.2",
109
+ "humanize-duration": "^3.34.1",
110
110
  "iconify-icon": "^2.3.0",
111
- "jotai": "^2.17.0",
112
- "jotai-scope": "^0.10.0",
113
- "js-cookie": "^3.0.5",
114
- "katex": "^0.16.28",
115
- "lodash-es": "^4.17.22",
111
+ "jotai": "^2.20.3",
112
+ "jotai-scope": "^0.12.2",
113
+ "js-cookie": "^3.0.8",
114
+ "katex": "^0.18.5",
115
+ "lodash-es": "^4.18.1",
116
116
  "loro-codemirror": "^0.3.3",
117
- "loro-crdt": "^1.10.5",
118
- "lucide-react": "^0.563.0",
117
+ "loro-crdt": "^1.15.1",
118
+ "lucide-react": "^0.577.0",
119
119
  "lz-string": "^1.5.0",
120
120
  "marked": "^15.0.12",
121
- "mermaid": "^11.12.3",
122
- "partysocket": "1.1.13",
123
- "path-to-regexp": "^8.4.0",
124
- "plotly.js": "^3.3.1",
121
+ "mermaid": "^11.17.2",
122
+ "partysocket": "1.3.0",
123
+ "path-to-regexp": "^8.4.2",
124
+ "plotly.js": "^3.7.0",
125
125
  "pyodide": "314.0.0",
126
126
  "radix-ui": "1.4.3",
127
- "react-arborist": "^3.4.3",
127
+ "react-arborist": "^3.16.0",
128
128
  "react-aria": "3.47.0",
129
129
  "react-aria-components": "1.16.0",
130
- "react-codemirror-merge": "4.25.4",
130
+ "react-codemirror-merge": "4.25.11",
131
131
  "react-dnd": "^16.0.1",
132
132
  "react-dnd-html5-backend": "^16.0.1",
133
- "react-dropzone": "^14.4.0",
133
+ "react-dropzone": "^14.4.1",
134
134
  "react-error-boundary": "^5.0.0",
135
135
  "react-grid-layout": "^1.5.3",
136
136
  "react-hook-form": "7.54.2",
@@ -138,31 +138,31 @@
138
138
  "react-resizable-panels": "2.1.9",
139
139
  "react-use-event-hook": "^0.9.6",
140
140
  "react-vega": "^8.0.0",
141
- "react-virtuoso": "^4.18.1",
141
+ "react-virtuoso": "^4.18.12",
142
142
  "reactflow": "^11.11.4",
143
143
  "rehype-sanitize": "^6.0.0",
144
144
  "remark-gfm": "^4.0.1",
145
- "reveal.js": "^6.0.0",
145
+ "reveal.js": "^6.0.1",
146
146
  "rpc-anywhere": "^1.7.0",
147
- "sql-formatter": "^15.7.0",
148
- "streamdown": "^2.1.0",
147
+ "sql-formatter": "^15.8.2",
148
+ "streamdown": "^2.6.0",
149
149
  "string-dedent": "^3.0.2",
150
- "swiper": "^12.0.0",
151
- "tailwind-merge": "^2.6.0",
150
+ "swiper": "^12.2.0",
151
+ "tailwind-merge": "2.6.0",
152
152
  "tailwindcss-animate": "^1.0.7",
153
153
  "thememirror": "^2.0.1",
154
154
  "timestring": "^7.0.0",
155
155
  "typescript-memoize": "^1.1.1",
156
156
  "use-acp": "0.2.6",
157
157
  "use-resize-observer": "^9.1.0",
158
- "vega-lite": "6.4.2",
159
- "vega-loader": "^5.1.0",
160
- "vega-parser": "^7.1.0",
158
+ "vega-lite": "6.4.3",
159
+ "vega-loader": "^5.1.3",
160
+ "vega-parser": "^7.1.3",
161
161
  "vega-tooltip": "^1.1.0",
162
162
  "vscode-jsonrpc": "^8.2.1",
163
- "vscode-languageserver-protocol": "^3.17.5",
163
+ "vscode-languageserver-protocol": "^3.18.3",
164
164
  "web-vitals": "^4.2.4",
165
- "zod": "^4.3.6"
165
+ "zod": "^4.5.4"
166
166
  },
167
167
  "scripts": {
168
168
  "preinstall": "npx only-allow pnpm",
@@ -203,33 +203,33 @@
203
203
  "@types/dompurify": "^3.2.0",
204
204
  "@types/katex": "^0.16.8",
205
205
  "@types/lodash-es": "^4.17.12",
206
- "@types/node": "^24.10.9",
207
- "@types/plotly.js": "^2.33.4",
208
- "@types/react": "^19.2.10",
209
- "@types/react-dom": "^19.2.3",
206
+ "@types/node": "^24.13.3",
207
+ "@types/plotly.js": "^2.35.16",
208
+ "@types/react": "^19.2.18",
209
+ "@types/react-dom": "^19.2.5",
210
210
  "@types/timestring": "^6.0.5",
211
211
  "@vitejs/plugin-react": "^6.1.0",
212
212
  "@vitest/coverage-v8": "4.1.11",
213
213
  "blob-polyfill": "^7.0.20220408",
214
214
  "cross-env": "^7.0.3",
215
215
  "jsdom": "^24.1.3",
216
- "msw": "^2.12.7",
216
+ "msw": "^2.15.0",
217
217
  "npm-run-all2": "^6.2.6",
218
218
  "oxfmt": "^0.64.0",
219
219
  "oxlint": "^1.79.0",
220
220
  "oxc-transform-react": "0.145.0",
221
221
  "postcss": "^8.5.26",
222
- "postcss-prefix-selector": "^2.1.1",
223
- "react": "^19.2.4",
224
- "react-dom": "^19.2.4",
222
+ "postcss-prefix-selector": "^2.2.0",
223
+ "react": "^19.2.8",
224
+ "react-dom": "^19.2.8",
225
225
  "storybook": "^10.5.10",
226
226
  "stylelint": "^16.26.1",
227
227
  "stylelint-config-standard": "^36.0.1",
228
228
  "tailwindcss": "^4.3.3",
229
- "vega-typings": "^2.1.0",
229
+ "vega-typings": "^2.3.0",
230
230
  "vite": "^8.2.2",
231
231
  "vite-plugin-wasm": "^3.6.0",
232
232
  "vitest": "^4.1.11",
233
- "yaml": "^2.8.3"
233
+ "yaml": "^2.9.0"
234
234
  }
235
235
  }
@@ -136,8 +136,13 @@ export const MockRequestClient = {
136
136
  updateCellOutputs: vi.fn().mockResolvedValue({}),
137
137
  addPackage: vi.fn().mockResolvedValue({}),
138
138
  removePackage: vi.fn().mockResolvedValue({}),
139
- getPackageList: vi.fn().mockResolvedValue({ packages: [] }),
140
- getDependencyTree: vi.fn().mockResolvedValue({}),
139
+ getPackageList: vi.fn().mockResolvedValue({
140
+ packages: [],
141
+ }),
142
+ getDependencyTree: vi.fn().mockResolvedValue({
143
+ tree: null,
144
+ context: { kind: "package-manager", name: "pip" },
145
+ }),
141
146
  listSecretKeys: vi.fn().mockResolvedValue({ keys: [] }),
142
147
  writeSecret: vi.fn().mockResolvedValue({}),
143
148
  invokeAiTool: vi.fn().mockResolvedValue({}),
@@ -39,14 +39,14 @@ exports[`CellStatusComponent > renders disabled and stale state 1`] = `
39
39
  width="24"
40
40
  xmlns="http://www.w3.org/2000/svg"
41
41
  >
42
- <path
43
- d="M4.929 4.929 19.07 19.071"
44
- />
45
42
  <circle
46
43
  cx="12"
47
44
  cy="12"
48
45
  r="10"
49
46
  />
47
+ <path
48
+ d="M4.929 4.929 19.07 19.071"
49
+ />
50
50
  </svg>
51
51
  <div
52
52
  class="second-icon absolute bottom-[-2px] right-[-2px] rounded-full"
@@ -104,14 +104,14 @@ exports[`CellStatusComponent > renders disabled state 1`] = `
104
104
  width="24"
105
105
  xmlns="http://www.w3.org/2000/svg"
106
106
  >
107
- <path
108
- d="M4.929 4.929 19.07 19.071"
109
- />
110
107
  <circle
111
108
  cx="12"
112
109
  cy="12"
113
110
  r="10"
114
111
  />
112
+ <path
113
+ d="M4.929 4.929 19.07 19.071"
114
+ />
115
115
  </svg>
116
116
  </div>
117
117
  </div>
@@ -175,14 +175,14 @@ exports[`CellStatusComponent > renders disabled transitively state 1`] = `
175
175
  width="24"
176
176
  xmlns="http://www.w3.org/2000/svg"
177
177
  >
178
- <path
179
- d="M4.929 4.929 19.07 19.071"
180
- />
181
178
  <circle
182
179
  cx="12"
183
180
  cy="12"
184
181
  r="10"
185
182
  />
183
+ <path
184
+ d="M4.929 4.929 19.07 19.071"
185
+ />
186
186
  </svg>
187
187
  </div>
188
188
  </div>
@@ -403,14 +403,14 @@ exports[`CellStatusComponent > renders stale and disabled transitively state 1`]
403
403
  width="24"
404
404
  xmlns="http://www.w3.org/2000/svg"
405
405
  >
406
- <path
407
- d="M4.929 4.929 19.07 19.071"
408
- />
409
406
  <circle
410
407
  cx="12"
411
408
  cy="12"
412
409
  r="10"
413
410
  />
411
+ <path
412
+ d="M4.929 4.929 19.07 19.071"
413
+ />
414
414
  </svg>
415
415
  </div>
416
416
  </div>
@@ -10,7 +10,7 @@ import {
10
10
  EyeIcon,
11
11
  EyeOffIcon,
12
12
  } from "lucide-react";
13
- import { useMemo, useState } from "react";
13
+ import { useState } from "react";
14
14
  import { useLocale } from "react-aria";
15
15
  import {
16
16
  AddDataframeChart,
@@ -98,11 +98,7 @@ export function ColumnExplorerPanel<TData>({
98
98
  hiddenColumns: hiddenColumnCount,
99
99
  } = getColumnCountForDisplay(table, totalColumns);
100
100
  const { visible: visibleColumnCount } = getUserColumnVisibilityCounts(table);
101
- const columnVisibility = table.getState().columnVisibility;
102
- const showOnlyColumnState = useMemo(
103
- () => getShowOnlyColumnState(table),
104
- [table, columnVisibility],
105
- );
101
+ const showOnlyColumnState = getShowOnlyColumnState(table);
106
102
 
107
103
  const { rowsAndColumns, hiddenSuffix } = prettifyRowColumnCount({
108
104
  numRows: totalRows,
@@ -215,6 +215,11 @@ export const ColumnVisibilityDropdown = <TData,>({
215
215
  index === list.pinnedCount &&
216
216
  list.pinnedCount > 0 &&
217
217
  list.pinnedCount < list.visibleOptions.length;
218
+ const label = (
219
+ <span className="truncate" title={option.label}>
220
+ {option.label}
221
+ </span>
222
+ );
218
223
  return (
219
224
  <React.Fragment key={option.value}>
220
225
  {isSectionBoundary && <CommandSeparator />}
@@ -225,15 +230,16 @@ export const ColumnVisibilityDropdown = <TData,>({
225
230
  className="flex items-center gap-1.5 cursor-pointer"
226
231
  >
227
232
  {dataType === undefined ? (
228
- <span>{option.label}</span>
233
+ label
229
234
  ) : (
230
235
  <ColumnName
231
- columnName={option.label}
236
+ className="min-w-0"
237
+ columnName={label}
232
238
  dataType={dataType}
233
239
  />
234
240
  )}
235
241
  {!option.disabled && (
236
- <span className="ml-auto flex items-center gap-0.5">
242
+ <span className="ml-auto flex shrink-0 items-center gap-0.5">
237
243
  <ShowOnlyColumnButton
238
244
  table={table}
239
245
  columnIds={[option.value]}
@@ -101,18 +101,20 @@ export const ColumnPreviewContainer: React.FC<{
101
101
  export const ColumnName = ({
102
102
  columnName,
103
103
  dataType,
104
+ className,
104
105
  }: {
105
106
  columnName: React.ReactNode;
106
107
  dataType: DataType;
108
+ className?: string;
107
109
  }) => {
108
110
  const resolvedDataType = resolveDataType(dataType);
109
111
  const Icon = DATA_TYPE_ICON[resolvedDataType];
110
112
  const color = getDataTypeColor(resolvedDataType);
111
113
 
112
114
  return (
113
- <div className="flex flex-row items-center gap-1.5">
115
+ <div className={cn("flex flex-row items-center gap-1.5", className)}>
114
116
  <Icon
115
- className={`w-4 h-4 p-0.5 rounded-sm stroke-card-foreground ${color}`}
117
+ className={`w-4 h-4 shrink-0 p-0.5 rounded-sm stroke-card-foreground ${color}`}
116
118
  />
117
119
  {columnName}
118
120
  </div>
@@ -6,7 +6,7 @@ const Slot = SlotPrimitive.Slot;
6
6
 
7
7
  import { useAtomValue } from "jotai";
8
8
  import { ExternalLinkIcon, TriangleAlertIcon } from "lucide-react";
9
- import React, { type PropsWithChildren, useMemo, useState } from "react";
9
+ import React, { type PropsWithChildren, useState } from "react";
10
10
  import { CopyClipboardIcon } from "@/components/icons/copy-icon";
11
11
  import { useImperativeModal } from "@/components/modal/ImperativeModal";
12
12
  import { Button } from "@/components/ui/button";
@@ -94,8 +94,7 @@ export const FeedbackModal: React.FC<{
94
94
  );
95
95
 
96
96
  const notebook = useAtomValue(notebookAtom);
97
- // biome-ignore lint/correctness/useExhaustiveDependencies: recompute when the notebook changes
98
- const errors = useMemo(() => getCellErrorEntries(store), [notebook]);
97
+ const errors = getCellErrorEntries(store);
99
98
 
100
99
  const cells = notebook.cellIds.inOrderIds.map(
101
100
  (cellId) => notebook.cellData[cellId],
@@ -145,10 +144,9 @@ export const FeedbackModal: React.FC<{
145
144
  return contents;
146
145
  }, [includeCode, notebookSourceAvailable, readCode]);
147
146
 
148
- const { url: githubIssueUrl, omitted } = useMemo(() => {
149
- if (!environment) {
150
- return { url: Constants.bugReportUrl, omitted: [] as string[] };
151
- }
147
+ let githubIssueUrl = Constants.bugReportUrl;
148
+ let omitted: string[] = [];
149
+ if (environment) {
152
150
  const fields: Record<string, string> = {
153
151
  env: formatEnvironmentSection(environment),
154
152
  };
@@ -158,8 +156,11 @@ export const FeedbackModal: React.FC<{
158
156
  if (includeCode && codeRequest.data) {
159
157
  fields["reproduction-code"] = formatCodeSection(codeRequest.data);
160
158
  }
161
- return buildBugReportUrl(Constants.bugReportUrl, fields);
162
- }, [environment, errors, includeErrors, includeCode, codeRequest.data]);
159
+ ({ url: githubIssueUrl, omitted } = buildBugReportUrl(
160
+ Constants.bugReportUrl,
161
+ fields,
162
+ ));
163
+ }
163
164
 
164
165
  const omittedLabels = omitted
165
166
  .map((field) =>
@@ -0,0 +1,143 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import { fireEvent, render, screen } from "@testing-library/react";
4
+ import { Provider } from "jotai";
5
+ import { beforeEach, describe, expect, it, vi } from "vitest";
6
+ import { MockRequestClient } from "@/__mocks__/requests";
7
+ import { TooltipProvider } from "@/components/ui/tooltip";
8
+ import { requestClientAtom } from "@/core/network/requests";
9
+ import type {
10
+ DependencyTreeNode,
11
+ DependencyTreeResponse,
12
+ } from "@/core/network/types";
13
+ import { store } from "@/core/state/jotai";
14
+ import PackagesPanel from "../packages-panel";
15
+
16
+ const { openSettings } = vi.hoisted(() => ({
17
+ openSettings: vi.fn(),
18
+ }));
19
+
20
+ vi.mock("@/components/app-config/state", () => ({
21
+ useOpenSettingsToTab: () => ({ handleClick: openSettings }),
22
+ }));
23
+
24
+ const emptyTree: DependencyTreeNode = {
25
+ name: "<root>",
26
+ version: null,
27
+ tags: [],
28
+ dependencies: [],
29
+ };
30
+
31
+ const populatedTree: DependencyTreeNode = {
32
+ ...emptyTree,
33
+ dependencies: [
34
+ {
35
+ name: "polars",
36
+ version: "1.44.1",
37
+ tags: [],
38
+ dependencies: [
39
+ {
40
+ name: "numpy",
41
+ version: "2.5.2",
42
+ tags: [{ kind: "dedupe", value: "true" }],
43
+ dependencies: [],
44
+ },
45
+ ],
46
+ },
47
+ ],
48
+ };
49
+
50
+ function renderPanel(
51
+ context: DependencyTreeResponse["context"],
52
+ tree: DependencyTreeNode = emptyTree,
53
+ ) {
54
+ const getPackageList = vi.fn().mockResolvedValue({ packages: [] });
55
+ store.set(
56
+ requestClientAtom,
57
+ MockRequestClient.create({
58
+ getPackageList,
59
+ getDependencyTree: vi.fn().mockResolvedValue({ tree, context }),
60
+ }),
61
+ );
62
+
63
+ return {
64
+ getPackageList,
65
+ ...render(
66
+ <Provider store={store}>
67
+ <TooltipProvider>
68
+ <PackagesPanel />
69
+ </TooltipProvider>
70
+ </Provider>,
71
+ ),
72
+ };
73
+ }
74
+
75
+ describe("PackagesPanel", () => {
76
+ beforeEach(() => {
77
+ vi.clearAllMocks();
78
+ });
79
+
80
+ it.each(["pixi", "uv"] as const)(
81
+ "shows the effective %s sandbox backend as a fixed context",
82
+ async (backend) => {
83
+ const { getPackageList } = renderPanel({ kind: "sandbox", backend });
84
+
85
+ expect(
86
+ await screen.findByPlaceholderText(
87
+ `Add packages to ${backend} sandbox...`,
88
+ ),
89
+ ).toBeInTheDocument();
90
+ expect(screen.getByText(`${backend} sandbox`)).toBeInTheDocument();
91
+ expect(
92
+ screen.queryByRole("button", { name: "Change package manager" }),
93
+ ).not.toBeInTheDocument();
94
+ expect(
95
+ screen.queryByRole("button", { name: "List" }),
96
+ ).not.toBeInTheDocument();
97
+ expect(
98
+ screen.queryByRole("button", { name: "Tree" }),
99
+ ).not.toBeInTheDocument();
100
+ expect(getPackageList).not.toHaveBeenCalled();
101
+ },
102
+ );
103
+
104
+ it("explains the filtered empty state for a Pixi sandbox", async () => {
105
+ renderPanel({ kind: "sandbox", backend: "pixi" });
106
+
107
+ expect(await screen.findByText("No PyPI dependencies")).toBeInTheDocument();
108
+ expect(
109
+ screen.getByText("Conda dependencies are not shown in this panel."),
110
+ ).toBeInTheDocument();
111
+ });
112
+
113
+ it("labels a dependency whose subtree was already displayed", async () => {
114
+ renderPanel({ kind: "sandbox", backend: "pixi" }, populatedTree);
115
+
116
+ fireEvent.click(await screen.findByRole("treeitem", { name: /polars/ }));
117
+
118
+ expect(screen.getByText("already in tree")).toBeInTheDocument();
119
+ expect(screen.queryByText("cycle")).not.toBeInTheDocument();
120
+ });
121
+
122
+ it("keeps the configured package manager changeable outside a sandbox", async () => {
123
+ const { getPackageList } = renderPanel({
124
+ kind: "package-manager",
125
+ name: "pip",
126
+ });
127
+
128
+ expect(
129
+ await screen.findByPlaceholderText("Install packages with pip..."),
130
+ ).toBeInTheDocument();
131
+ const changeManager = screen.getByRole("button", {
132
+ name: "Change package manager",
133
+ });
134
+
135
+ fireEvent.click(changeManager);
136
+
137
+ expect(openSettings).toHaveBeenCalledWith("packageManagementAndData");
138
+ expect(screen.getByText("environment")).toBeInTheDocument();
139
+ expect(screen.getByRole("button", { name: "List" })).toBeInTheDocument();
140
+ expect(screen.getByRole("button", { name: "Tree" })).toBeInTheDocument();
141
+ expect(getPackageList).toHaveBeenCalledOnce();
142
+ });
143
+ });