@marimo-team/islands 0.20.2 → 0.20.3-dev76

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 (563) hide show
  1. package/dist/{ConnectedDataExplorerComponent-BMiGWK57.js → ConnectedDataExplorerComponent-DUS-zJoR.js} +12 -12
  2. package/dist/{_baseIsEqual-DN5YkPnl.js → _baseIsEqual-5cAxzk6f.js} +42 -41
  3. package/dist/_basePickBy-3JVb5wYm.js +47 -0
  4. package/dist/{_baseProperty-6juuyX7Z.js → _baseProperty-D1nWkRMz.js} +12 -12
  5. package/dist/_baseSlice-BrVixxuc.js +10 -0
  6. package/dist/{_baseUniq-BlF21ach.js → _baseUniq-DSSiFuIJ.js} +10 -6
  7. package/dist/{any-language-editor-1OMbohwD.js → any-language-editor-BL9o7y0_.js} +31 -30
  8. package/dist/apl-lHFVoxx7.js +4 -0
  9. package/dist/{arc-9nABupDE.js → arc-DXxE-tFl.js} +2 -2
  10. package/dist/architecture-7HQA4BMR-BxkNpYRp.js +6 -0
  11. package/dist/{architectureDiagram-VXUJARFQ-DhN0C3Xf.js → architectureDiagram-VXUJARFQ-DrJeyFHq.js} +19 -19
  12. package/dist/asciiarmor-DqCdZUHI.js +4 -0
  13. package/dist/asn1-DEcwtw-q.js +4 -0
  14. package/dist/{blockDiagram-VD42YOAC-DrBkIcbV.js → blockDiagram-VD42YOAC-BJrP6qKc.js} +53 -53
  15. package/dist/brainfuck-Bro9Oz5x.js +4 -0
  16. package/dist/{c4Diagram-YG6GDRKO-pWt4zmu0.js → c4Diagram-YG6GDRKO-Bo4gytQ5.js} +6 -6
  17. package/dist/{channel-C56Jz8EL.js → channel-IWLGkaBE.js} +1 -1
  18. package/dist/{chunk-4BX2VUAB-WmXmzRBr.js → chunk-4BX2VUAB-CwMMQLZ_.js} +1 -1
  19. package/dist/{chunk-S6J4BHB3-zfWjyfUg.js → chunk-4F5CHEZ2-CxKDFd-t.js} +2 -2
  20. package/dist/{chunk-55IACEB6-irYMvHJu.js → chunk-55IACEB6-Dj8CzJvE.js} +1 -1
  21. package/dist/{chunk-5FQGJX7Z-pOElJy8t.js → chunk-5FQGJX7Z-BkzUmppO.js} +2 -2
  22. package/dist/{chunk-ABZYJK2D-BwNsaa1P.js → chunk-ABZYJK2D-CRwanrkd.js} +3 -3
  23. package/dist/{chunk-ATLVNIR6-DtFMAawc.js → chunk-ATLVNIR6-CMMCMvOK.js} +2 -2
  24. package/dist/{chunk-FWNWRKHM-DmrwhAQr.js → chunk-B2363JML-e_W7KW1D.js} +2 -2
  25. package/dist/{chunk-B4BG7PRW-lfWcLlzS.js → chunk-B4BG7PRW-BNsHrGHG.js} +7 -7
  26. package/dist/{chunk-CVBHYZKI-Bb2XMuXJ.js → chunk-CVBHYZKI-D8iwHsLF.js} +1 -1
  27. package/dist/{chunk-DI55MBZ5-RhhAimfG.js → chunk-DI55MBZ5-DQeYbfMV.js} +6 -6
  28. package/dist/{chunk-XAJISQIX-CZ8Bi1-x.js → chunk-DR5Q36YT-D4q96vNV.js} +2 -2
  29. package/dist/{chunk-EXTU4WIE-Bmo660a9.js → chunk-EXTU4WIE-CV_DQeaX.js} +2 -2
  30. package/dist/{chunk-FMBD7UC4-C0DZU_4q.js → chunk-FMBD7UC4-XTL4xAvH.js} +1 -1
  31. package/dist/{chunk-LBM3YZW2-BkxsqkNK.js → chunk-FRFDVMJY-C7q09nvl.js} +2 -2
  32. package/dist/{chunk-HN2XXSSU-BsB4dtgF.js → chunk-HN2XXSSU-CzO5Phf0.js} +1 -1
  33. package/dist/{chunk-JA3XYJ7Z-n8UTzfok.js → chunk-JA3XYJ7Z-Cmt--e0q.js} +3 -3
  34. package/dist/{chunk-JZLCHNYA-ChKqHUdB.js → chunk-JZLCHNYA-CkyMJnI9.js} +6 -6
  35. package/dist/{chunk-MI3HLSF2-DeDZS-tQ.js → chunk-MI3HLSF2-DvCKDmpi.js} +1 -1
  36. package/dist/{chunk-N4CR4FBY-BxOHGL3P.js → chunk-N4CR4FBY-BJfHtJbD.js} +7 -7
  37. package/dist/{chunk-T53DSG4Q-Bewz1tiU.js → chunk-PL6DKKU2-ChKBqnoD.js} +2 -2
  38. package/dist/{chunk-QN33PNHL-Dda-55xY.js → chunk-QN33PNHL-WOLIPUAJ.js} +2 -2
  39. package/dist/{chunk-QXUST7PY-ClIEpoCT.js → chunk-QXUST7PY-DYuD50pU.js} +10 -10
  40. package/dist/{chunk-QZHKN3VN-Diy_Cdek.js → chunk-QZHKN3VN-CYbwZKgJ.js} +1 -1
  41. package/dist/{chunk-S3R3BYOJ-C_1SJcWo.js → chunk-S3R3BYOJ-CsnX6RKs.js} +8 -8
  42. package/dist/{chunk-76Q3JFCE-CQ6a2yGJ.js → chunk-SJTYNZTY-j6_1s5om.js} +2 -2
  43. package/dist/{chunk-FPAJGGOC-quWdfNUB.js → chunk-TCCFYFTB-DdLCbCTn.js} +3995 -3985
  44. package/dist/{chunk-LHMN2FUI-CgYPnxfN.js → chunk-TQ3KTPDO-CGsUIC73.js} +2 -2
  45. package/dist/{chunk-TZMSLE5B-XW3duOft.js → chunk-TZMSLE5B-B3eYTGCw.js} +3 -3
  46. package/dist/{chunk-O7ZBX7Z2-CdpLwOP0.js → chunk-UMXZTB3W--LdAK3Bv.js} +2 -2
  47. package/dist/classDiagram-2ON5EDUG-C7C-oefv.js +30 -0
  48. package/dist/classDiagram-v2-WZHVMYZB-UTw37Gg8.js +30 -0
  49. package/dist/{clike-B90WKs4D.js → clike-CLJYUAWw.js} +1 -1
  50. package/dist/clojure-B2uhdQPa.js +4 -0
  51. package/dist/{clone-V9hndNcj.js → clone-BJrS4PdE.js} +1 -1
  52. package/dist/cmake-B9WXyQcc.js +4 -0
  53. package/dist/cobol-CPD3EJfO.js +4 -0
  54. package/dist/{code-block-37QAKDTI-zh5AeoJo.js → code-block-37QAKDTI-DV_ZyoUh.js} +1 -1
  55. package/dist/coffeescript-KD9TnEnS.js +4 -0
  56. package/dist/commonlisp-DNEULz_Q.js +4 -0
  57. package/dist/{constants-BGRTDzdW.js → constants-D1Tbg_6B.js} +3 -2
  58. package/dist/{cose-bilkent-S5V4N54A-BK1nIR2J.js → cose-bilkent-S5V4N54A-BCDTZDay.js} +2 -2
  59. package/dist/crystal-DVPNgAPQ.js +4 -0
  60. package/dist/css-fq3a1AH1.js +4 -0
  61. package/dist/cypher-Dtzq0BP7.js +4 -0
  62. package/dist/d-DcZudIhJ.js +4 -0
  63. package/dist/{dagre-6UL2VRFP-BArPH353.js → dagre-6UL2VRFP-BgsUhJrV.js} +88 -87
  64. package/dist/{dagre-Dcgyn_Uy.js → dagre-CyZCGfV_.js} +41 -84
  65. package/dist/{data-grid-overlay-editor-BVFT970w.js → data-grid-overlay-editor-BD0BFHzy.js} +2 -2
  66. package/dist/{diagram-PSM6KHXK-B1xAkr9y.js → diagram-PSM6KHXK-BIUUOfKo.js} +22 -22
  67. package/dist/{diagram-QEK2KX5R-CaoqwzPb.js → diagram-QEK2KX5R-BFjolZQv.js} +17 -17
  68. package/dist/{diagram-S2PKOQOG-NXCsFLvR.js → diagram-S2PKOQOG-4jfkWoZw.js} +17 -17
  69. package/dist/diff-D9BPDC3o.js +4 -0
  70. package/dist/{dist-IlWGXVjO.js → dist-7ZF--V_D.js} +2 -2
  71. package/dist/dist-BAeGo2rp.js +5 -0
  72. package/dist/{dist-Ey9hP8-j.js → dist-BBcqvpvP.js} +1 -1
  73. package/dist/{dist-DpAbrLuF.js → dist-BFL9TlzD.js} +5 -5
  74. package/dist/{dist-CD7uLx0M.js → dist-BLThQiU4.js} +2 -2
  75. package/dist/{dist-CoZ8kKKW.js → dist-BT6_J2eq.js} +1 -1
  76. package/dist/{dist-C_9IMrtt.js → dist-BTQbjEKU.js} +1 -1
  77. package/dist/dist-BqwCMSEa.js +5 -0
  78. package/dist/{dist-CUOuFgHt.js → dist-BuapEdlD.js} +113 -58
  79. package/dist/dist-Bum8FwTO.js +6 -0
  80. package/dist/{dist-LNp8svLl.js → dist-BwQHkjA9.js} +4 -4
  81. package/dist/dist-C0YiOwt_.js +5 -0
  82. package/dist/dist-C2uPv4iU.js +5 -0
  83. package/dist/{dist-Dmr_nXF6.js → dist-C4XMUaob.js} +2 -2
  84. package/dist/dist-C5hOLsJN.js +8 -0
  85. package/dist/{dist-a6Obzr07.js → dist-C6z8U-ms.js} +2 -2
  86. package/dist/dist-C9NIAKMs.js +8 -0
  87. package/dist/{dist-EZFqUJhh.js → dist-CB6qhQ8K.js} +1 -1
  88. package/dist/dist-CCrzTtvk.js +5 -0
  89. package/dist/dist-CFS9i1rS.js +8 -0
  90. package/dist/{dist-CMOy93xY.js → dist-CFToYDWO.js} +2 -2
  91. package/dist/{dist-DF_77D2B.js → dist-COpDrwi-.js} +1 -1
  92. package/dist/{dist-D8EhXZ4S.js → dist-CYo3w-nC.js} +3 -3
  93. package/dist/{dist-Dv2Phbh5.js → dist-Cb3cLT39.js} +2 -2
  94. package/dist/{dist-DOLQQtWK.js → dist-Ch_JuCvc.js} +3 -3
  95. package/dist/{dist-Cb3iqED3.js → dist-Cqpjy6bK.js} +1 -1
  96. package/dist/{dist-BswsDM4k.js → dist-CsqiXw7J.js} +2 -2
  97. package/dist/{dist-BoagoQQw.js → dist-CwtEWuFb.js} +2 -2
  98. package/dist/dist-CyHZuhPH.js +5 -0
  99. package/dist/dist-CzcjWdIk.js +6 -0
  100. package/dist/{dist-BUEi7EKT.js → dist-D0f6Yrrb.js} +1 -1
  101. package/dist/{dist-C5QB1NtD.js → dist-D7ZGWV_9.js} +3 -3
  102. package/dist/{dist-CrAYcS_4.js → dist-DEFZ7dnD.js} +2 -2
  103. package/dist/{dist-DrC0QKFK.js → dist-DMS81OrU.js} +1 -1
  104. package/dist/{dist-iyBCcLRa.js → dist-DUxS2paD.js} +2 -2
  105. package/dist/dist-DaYyUSNC.js +5 -0
  106. package/dist/{dist-W6TdeACj.js → dist-De9X_Des.js} +1 -1
  107. package/dist/dist-DpDcJYNh.js +8 -0
  108. package/dist/{dist-bz6WguLy.js → dist-I8MQW60_.js} +2 -2
  109. package/dist/{dist-BGzkWRSl.js → dist-IW_ARJ3S.js} +4 -4
  110. package/dist/{dist-xCB683Dh.js → dist-Qjf6pcqK.js} +2 -2
  111. package/dist/{dist-B_i29Q6L.js → dist-UYm1IE5s.js} +2 -2
  112. package/dist/dist-U_BfxcPn.js +5 -0
  113. package/dist/{dist-iDeoXzdN.js → dist-ovDpXuSB.js} +1 -1
  114. package/dist/{dockerfile-D1Q_4uCN.js → dockerfile-BxhYdLHL.js} +1 -1
  115. package/dist/dtd-FhG-tVom.js +4 -0
  116. package/dist/dylan-HWpZOBPw.js +4 -0
  117. package/dist/ecl-B_rcje1I.js +4 -0
  118. package/dist/eiffel-oqHyHs6f.js +4 -0
  119. package/dist/elm-B62RQEds.js +4 -0
  120. package/dist/{erDiagram-Q2GNP2WA-DWCa11g5.js → erDiagram-Q2GNP2WA-Cq5Bz5lG.js} +15 -15
  121. package/dist/erlang-CjRjjA-B.js +4 -0
  122. package/dist/{esm-DZSk8vt3.js → esm-BxMbHo0y.js} +107 -107
  123. package/dist/factor-CGH_TnIV.js +4 -0
  124. package/dist/{factor--4HHM8Rw.js → factor-Png_OsVt.js} +1 -1
  125. package/dist/{flowDiagram-NV44I4VS-BQ5PQs4L.js → flowDiagram-NV44I4VS-6WPJVFl7.js} +17 -17
  126. package/dist/forth-5N06oHNp.js +4 -0
  127. package/dist/fortran-wZ-sNg3h.js +4 -0
  128. package/dist/{ganttDiagram-JELNMOA3-NTOuNWeT.js → ganttDiagram-JELNMOA3-AfDhh9CI.js} +10 -10
  129. package/dist/gas-3H4_FaS8.js +4 -0
  130. package/dist/gherkin-PEA2uy50.js +4 -0
  131. package/dist/{gitGraph-F6HP7TQM-DfRNsaDw.js → gitGraph-G5XIXVHT-C0o6gecv.js} +3 -3
  132. package/dist/{gitGraphDiagram-NY62KEGX-CYke62Ot.js → gitGraphDiagram-V2S2FVAM-BRSwuj0Q.js} +17 -17
  133. package/dist/{glide-data-editor-DttqGjrT.js → glide-data-editor-ByPNTNVG.js} +7 -7
  134. package/dist/graphlib-DZnBMcsX.js +228 -0
  135. package/dist/groovy-DZzbvCP1.js +4 -0
  136. package/dist/haskell-CExLTzho.js +4 -0
  137. package/dist/haxe-f3pVb8qU.js +5 -0
  138. package/dist/idl-BbWlJ0gk.js +4 -0
  139. package/dist/{info-NVLQJR56-CUaoPtis.js → info-VBDWY6EO-Bzsods6X.js} +3 -3
  140. package/dist/infoDiagram-HS3SLOUP-Cmxo6jKx.js +30 -0
  141. package/dist/{_baseFor-B69PDbIz.js → isArrayLikeObject-Btu-i6_P.js} +216 -44
  142. package/dist/{isEmpty-6z2uv6gM.js → isEmpty-CZvUtYFp.js} +2 -2
  143. package/dist/{isString-D6abkXrl.js → isString-CBr7TEb7.js} +1 -1
  144. package/dist/{isSymbol-hk7foJ70.js → isSymbol-BuQsMXhk.js} +1 -1
  145. package/dist/javascript-eMOhp6Aq.js +4 -0
  146. package/dist/{journeyDiagram-XKPGCS4Q-ahXD97kr.js → journeyDiagram-XKPGCS4Q-CKYr8cSR.js} +7 -7
  147. package/dist/julia-C6w3Rvqb.js +4 -0
  148. package/dist/{kanban-definition-3W4ZIXB7-CiTIpnhy.js → kanban-definition-3W4ZIXB7-DVvAZzQD.js} +12 -12
  149. package/dist/{katex-DaGuLbVh.js → katex-pyO_klYC.js} +1 -1
  150. package/dist/{label-Cc5tEavt.js → label-CV0KYhtH.js} +4 -10
  151. package/dist/{line-Bc27KE1D.js → line-C1k1rG3Z.js} +3 -3
  152. package/dist/{linear-Bnc6E9kA.js → linear-DIp6l9sg.js} +4 -4
  153. package/dist/livescript-ChQl9lD-.js +4 -0
  154. package/dist/{loader-Cob3XFOw.js → loader-eJCvvApN.js} +2 -2
  155. package/dist/lua-CiDvI96j.js +4 -0
  156. package/dist/main-Tj_-QTyF.js +4321 -0
  157. package/dist/main.js +2019 -5031
  158. package/dist/mathematica-ClVO4k7N.js +4 -0
  159. package/dist/mbox-BEI7DeUg.js +4 -0
  160. package/dist/{memoize-Ckyqzyu_.js → memoize-P1T1IGb9.js} +1 -1
  161. package/dist/merge-CGQkMGzr.js +51 -0
  162. package/dist/{mermaid-4DMBBIKO-BmJdHPwx.js → mermaid-4DMBBIKO-PVrJfEpX.js} +1 -1
  163. package/dist/{mermaid-B5xl_2hx.js → mermaid-COOB_abB.js} +46 -46
  164. package/dist/{mermaid-parser.core-BXj7Il0J.js → mermaid-parser.core-Cd-wu4tE.js} +8 -8
  165. package/dist/{mhchem-B_tiMbKF.js → mhchem-DckvwtV8.js} +1 -1
  166. package/dist/min-CMDDtXJP.js +89 -0
  167. package/dist/{mindmap-definition-VGOIOE7T-Mni766A_.js → mindmap-definition-VGOIOE7T-1ExmnvYy.js} +14 -14
  168. package/dist/mirc-DwidJ3iH.js +4 -0
  169. package/dist/mllike-Dspdy0xJ.js +6 -0
  170. package/dist/modelica-CIUejP-L.js +4 -0
  171. package/dist/mscgen-BWXU4Omp.js +6 -0
  172. package/dist/mumps-PHFFoPk5.js +4 -0
  173. package/dist/now-BxlRp0OQ.js +7 -0
  174. package/dist/nsis-B7xooKLf.js +4 -0
  175. package/dist/{nsis-B6EN9LWI.js → nsis-BrAITej_.js} +1 -1
  176. package/dist/ntriples-DnOgtCzG.js +4 -0
  177. package/dist/{number-overlay-editor-DKVJgXpp.js → number-overlay-editor-CQrncFlP.js} +1 -1
  178. package/dist/octave-Cn5kH_QT.js +4 -0
  179. package/dist/{once-C9dA9qgQ.js → once-BqS42WgZ.js} +1 -1
  180. package/dist/{ordinal-DLLbwLkP.js → ordinal-Dcvf4J1m.js} +1 -1
  181. package/dist/oz-DR-sROpu.js +4 -0
  182. package/dist/{packet-BFZMPI3H-DHtQCusE.js → packet-DYOGHKS2-Bf1CvFco.js} +3 -3
  183. package/dist/pascal-CPKK1zcS.js +4 -0
  184. package/dist/perl-D7FuFdyd.js +4 -0
  185. package/dist/{pie-7BOR55EZ-2sVLYbpR.js → pie-VRWISCQL-LY_wbqji.js} +3 -3
  186. package/dist/{pieDiagram-ADFJNKIX-PbXpgT8_.js → pieDiagram-ADFJNKIX-CJlIsdsU.js} +22 -22
  187. package/dist/pig-CEXnOAnI.js +4 -0
  188. package/dist/powershell-BKvWab7q.js +4 -0
  189. package/dist/{precisionRound-Duzbr5ur.js → precisionRound-BAc-kQ3q.js} +1 -1
  190. package/dist/properties-7jnK_vYx.js +4 -0
  191. package/dist/protobuf-4rslMjEN.js +4 -0
  192. package/dist/pug-BVwdEv4r.js +4 -0
  193. package/dist/{pug-xrm7jQ2R.js → pug-CH-17az-.js} +1 -1
  194. package/dist/puppet-iSHg_1Z2.js +4 -0
  195. package/dist/python-tK3wUCn0.js +4 -0
  196. package/dist/q-DP_Dcoox.js +4 -0
  197. package/dist/{quadrantDiagram-AYHSOK5B-BtXGnx8i.js → quadrantDiagram-AYHSOK5B-BU78RiaH.js} +5 -5
  198. package/dist/r-C32wHLYu.js +4 -0
  199. package/dist/{radar-NHE76QYJ-Be0pEUux.js → radar-ZZBFDIW7-Ro3iXZCk.js} +3 -3
  200. package/dist/range-Dh0_-r8P.js +30 -0
  201. package/dist/{react-vega-CCNu2JE0.js → react-vega-C6kwcd86.js} +18 -18
  202. package/dist/react-vega-CFUuchds.js +9 -0
  203. package/dist/reduce-BXFHs7IQ.js +268 -0
  204. package/dist/{requirementDiagram-UZGBJVZJ-DxzXQRgq.js → requirementDiagram-UZGBJVZJ-DACHtrFr.js} +14 -14
  205. package/dist/rpm-BbDBUfs9.js +5 -0
  206. package/dist/ruby-COfWUiIr.js +4 -0
  207. package/dist/{sankeyDiagram-TZEHDZUN-D-I7dJ0_.js → sankeyDiagram-TZEHDZUN-Bzg7_UWs.js} +5 -5
  208. package/dist/sas-y_Hue2-X.js +4 -0
  209. package/dist/scheme-7jTCqHw8.js +4 -0
  210. package/dist/{sequenceDiagram-WL72ISMW-VDme2ljw.js → sequenceDiagram-WL72ISMW-agybEe9J.js} +8 -8
  211. package/dist/shell-DAqJWXDk.js +4 -0
  212. package/dist/sieve-EaqnbCO3.js +4 -0
  213. package/dist/slides-component-B0yK5GXP.js +3057 -0
  214. package/dist/smalltalk-DL03YKLJ.js +4 -0
  215. package/dist/sparql-DTA-tQ_q.js +4 -0
  216. package/dist/{spec-GwhMEXwK.js → spec-Dq_reDGM.js} +4 -4
  217. package/dist/{src-jICM_d2B.js → src-CHUphWwL.js} +1 -1
  218. package/dist/{stateDiagram-FKZM4ZOC-g3GI1EcK.js → stateDiagram-FKZM4ZOC-DehQAt8g.js} +19 -19
  219. package/dist/stateDiagram-v2-4FDKWEC3-8VzeREl9.js +29 -0
  220. package/dist/{step-BqVgkWtk.js → step-BbmiiQdf.js} +1 -1
  221. package/dist/stex-KfRnSHzF.js +4 -0
  222. package/dist/style.css +1 -1
  223. package/dist/stylus-CfjeFry_.js +4 -0
  224. package/dist/swift-Dl0RRDbH.js +4 -0
  225. package/dist/tcl-wv9O7fLZ.js +4 -0
  226. package/dist/textile-DzMRCBcV.js +4 -0
  227. package/dist/{time-CrYsYnQU.js → time-DFFVNc1Q.js} +4 -4
  228. package/dist/{timeline-definition-IT6M3QCI-bhvLlX_b.js → timeline-definition-IT6M3QCI-CdCfdaCF.js} +4 -4
  229. package/dist/toNumber-By7s5JC_.js +28 -0
  230. package/dist/{toString-BwTJvlyD.js → toString-Ckpb50uw.js} +8 -8
  231. package/dist/toml-CyIWqgbe.js +4 -0
  232. package/dist/{treemap-KMMF4GRG-Ba9ifjpG.js → treemap-GDKQZRPO-DRxfDG65.js} +3 -3
  233. package/dist/troff-_huin_CY.js +4 -0
  234. package/dist/ttcn-BEiJuYYc.js +4 -0
  235. package/dist/ttcn-cfg-DB6Ksh67.js +4 -0
  236. package/dist/turtle-DzhzGEum.js +4 -0
  237. package/dist/{types-Dsh6yC4B.js → types-BwnzGcE4.js} +31 -32
  238. package/dist/uniq-cCc07Q8K.js +8 -0
  239. package/dist/{useAsyncData-BPpyKjTJ.js → useAsyncData-B4hMFGnF.js} +2 -2
  240. package/dist/{useDeepCompareMemoize-C8Ms87P-.js → useDeepCompareMemoize-DuPhOXzr.js} +3 -3
  241. package/dist/{useIframeCapabilities-C7z8VrZ1.js → useIframeCapabilities-CAt6D2EI.js} +1 -1
  242. package/dist/{useTheme-Cq-gIssy.js → useTheme-BNYQnvu-.js} +2 -2
  243. package/dist/vb-CngKZQHu.js +4 -0
  244. package/dist/vbscript-BV_8nbeM.js +4 -0
  245. package/dist/{vega-component-B5sxdjMq.js → vega-component-DouPy8AI.js} +12 -15
  246. package/dist/{vega-loader.browser-DqHiiBeQ.js → vega-loader.browser-CQ-lnUkI.js} +3 -3
  247. package/dist/velocity-IqE7qYKE.js +4 -0
  248. package/dist/verilog-xtyaWTnc.js +4 -0
  249. package/dist/vhdl-BaqXCtf3.js +4 -0
  250. package/dist/webidl-BDB8PTTO.js +4 -0
  251. package/dist/xquery-BIC-qj9Z.js +4 -0
  252. package/dist/{xychartDiagram-PRI3JC2R-CFxuifYY.js → xychartDiagram-PRI3JC2R-rEm_SIsC.js} +13 -13
  253. package/dist/yacas-ifv5tftd.js +4 -0
  254. package/dist/z80-B8zOMVNt.js +4 -0
  255. package/package.json +11 -11
  256. package/src/__mocks__/requests.ts +2 -0
  257. package/src/components/app-config/ai-config.tsx +1 -1
  258. package/src/components/app-config/user-config-form.tsx +27 -0
  259. package/src/components/data-table/__tests__/pagination.test.tsx +16 -24
  260. package/src/components/data-table/charts/lazy-chart.tsx +1 -1
  261. package/src/components/data-table/data-table.tsx +20 -18
  262. package/src/components/data-table/pagination.tsx +138 -56
  263. package/src/components/data-table/range-focus/__tests__/cell-selection-stats.test.tsx +365 -0
  264. package/src/components/data-table/range-focus/__tests__/test-utils.ts +77 -0
  265. package/src/components/data-table/range-focus/__tests__/utils.test.ts +205 -65
  266. package/src/components/data-table/range-focus/cell-selection-stats.tsx +79 -0
  267. package/src/components/data-table/range-focus/utils.ts +69 -7
  268. package/src/components/data-table/types.ts +4 -0
  269. package/src/components/databases/engine-variable.tsx +2 -1
  270. package/src/components/databases/icons/google-cloud-storage.svg +38 -0
  271. package/src/components/datasources/components.tsx +6 -2
  272. package/src/components/dependency-graph/minimap-content.tsx +3 -5
  273. package/src/components/dependency-graph/utils/__tests__/cell-preview.test.ts +143 -0
  274. package/src/components/dependency-graph/utils/cell-preview.ts +46 -0
  275. package/src/components/editor/Output.tsx +3 -28
  276. package/src/components/editor/cell/cell-actions.tsx +6 -5
  277. package/src/components/editor/cell/cell-context-menu.tsx +11 -7
  278. package/src/components/editor/chrome/panels/components.tsx +88 -0
  279. package/src/components/editor/chrome/panels/file-explorer-panel.tsx +120 -7
  280. package/src/components/editor/chrome/panels/outline/floating-outline.tsx +27 -15
  281. package/src/components/editor/chrome/panels/session-panel.tsx +24 -35
  282. package/src/components/editor/file-tree/__tests__/requesting-tree.test.ts +17 -1
  283. package/src/components/editor/file-tree/file-explorer.tsx +38 -6
  284. package/src/components/editor/file-tree/file-header.tsx +61 -0
  285. package/src/components/editor/file-tree/file-viewer.tsx +88 -167
  286. package/src/components/editor/file-tree/renderers.tsx +142 -21
  287. package/src/components/editor/file-tree/requesting-tree.tsx +6 -2
  288. package/src/components/editor/output/console/ConsoleOutput.tsx +34 -2
  289. package/src/components/editor/output/console/__tests__/ConsoleOutput.test.tsx +13 -0
  290. package/src/components/icons/marimo-icons.tsx +173 -0
  291. package/src/components/markdown/markdown-renderer.tsx +3 -20
  292. package/src/components/pages/run-page.tsx +2 -2
  293. package/src/components/storage/components.tsx +86 -0
  294. package/src/components/storage/storage-file-viewer.tsx +225 -0
  295. package/src/components/storage/storage-inspector.tsx +610 -0
  296. package/src/core/ai/tools/__tests__/edit-notebook-tool.test.ts +79 -0
  297. package/src/core/ai/tools/edit-notebook-tool.ts +5 -0
  298. package/src/core/cells/__tests__/cells.test.ts +30 -0
  299. package/src/core/cells/cells.ts +6 -1
  300. package/src/core/cells/outline.ts +7 -1
  301. package/src/core/cells/outputs.ts +20 -8
  302. package/src/core/codemirror/language/languages/sql/sql.ts +76 -62
  303. package/src/core/codemirror/language/panel/sql.tsx +3 -3
  304. package/src/core/codemirror/lsp/__tests__/normalize-markdown-math.test.ts +123 -0
  305. package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +196 -0
  306. package/src/core/codemirror/lsp/normalize-markdown-math.ts +381 -0
  307. package/src/core/codemirror/lsp/notebook-lsp.ts +59 -3
  308. package/src/core/config/feature-flag.tsx +2 -0
  309. package/src/core/dom/__tests__/outline.test.ts +48 -0
  310. package/src/core/dom/outline.ts +13 -2
  311. package/src/core/islands/bridge.ts +2 -0
  312. package/src/core/islands/main.ts +2 -0
  313. package/src/core/network/requests-lazy.ts +2 -0
  314. package/src/core/network/requests-network.ts +16 -0
  315. package/src/core/network/requests-static.ts +2 -0
  316. package/src/core/network/requests-toasting.tsx +2 -0
  317. package/src/core/network/types.ts +6 -0
  318. package/src/core/storage/__tests__/state.test.ts +345 -0
  319. package/src/core/storage/__tests__/types.test.ts +83 -0
  320. package/src/core/storage/__tests__/useStorageEntries.test.tsx +187 -0
  321. package/src/core/storage/request-registry.ts +36 -0
  322. package/src/core/storage/state.ts +132 -0
  323. package/src/core/storage/types.ts +57 -0
  324. package/src/core/wasm/bridge.ts +2 -0
  325. package/src/core/websocket/useMarimoKernelConnection.tsx +19 -1
  326. package/src/hooks/__tests__/useNonce.test.tsx +127 -0
  327. package/src/hooks/__tests__/useOverflowDetection.test.tsx +127 -0
  328. package/src/hooks/useNonce.ts +6 -5
  329. package/src/hooks/useOverflowDetection.ts +36 -0
  330. package/src/plugins/impl/MatrixPlugin.tsx +5 -2
  331. package/src/plugins/impl/__tests__/MatrixPlugin.test.tsx +1 -1
  332. package/src/plugins/impl/code/any-language-editor.tsx +14 -3
  333. package/src/utils/__tests__/filenames.test.ts +54 -1
  334. package/src/utils/filenames.ts +42 -0
  335. package/dist/apl-C1bki_dE.js +0 -4
  336. package/dist/architecture-U656AL7Q-Jd2CvPgJ.js +0 -6
  337. package/dist/asciiarmor-BdlkCCRr.js +0 -4
  338. package/dist/asn1-CvE30hox.js +0 -4
  339. package/dist/brainfuck-BalwWy1a.js +0 -4
  340. package/dist/classDiagram-2ON5EDUG-CUJlS_eo.js +0 -30
  341. package/dist/classDiagram-v2-WZHVMYZB-BhSPpbkE.js +0 -30
  342. package/dist/clojure-CUC2I1hM.js +0 -4
  343. package/dist/cmake-8PcMxXnB.js +0 -4
  344. package/dist/cobol-DkkkDz5v.js +0 -4
  345. package/dist/coffeescript-CCupxOZf.js +0 -4
  346. package/dist/commonlisp-DhUfGX6b.js +0 -4
  347. package/dist/crystal-DSaw6rFQ.js +0 -4
  348. package/dist/css-D4QDewkG.js +0 -4
  349. package/dist/cypher-CrYVqw_F.js +0 -4
  350. package/dist/d-Cr3H3pPx.js +0 -4
  351. package/dist/diff-ODiZJGls.js +0 -4
  352. package/dist/dist-BA-HK7pI.js +0 -5
  353. package/dist/dist-BD5GU948.js +0 -5
  354. package/dist/dist-BIYmAsND.js +0 -5
  355. package/dist/dist-BcKTJXJi.js +0 -5
  356. package/dist/dist-BgnrtcWg.js +0 -8
  357. package/dist/dist-C1njTlBq.js +0 -5
  358. package/dist/dist-CSKHwJYH.js +0 -5
  359. package/dist/dist-CSKKyiIq.js +0 -5
  360. package/dist/dist-CrQ_pOuK.js +0 -6
  361. package/dist/dist-Cskx1daf.js +0 -5
  362. package/dist/dist-D4i0Ef34.js +0 -8
  363. package/dist/dist-DOcn61TX.js +0 -8
  364. package/dist/dist-DwMejAPB.js +0 -6
  365. package/dist/dist-DzSe1wby.js +0 -8
  366. package/dist/dtd-C-t2Rk7F.js +0 -4
  367. package/dist/dylan-B4ctBLGp.js +0 -4
  368. package/dist/ecl-DqWfymni.js +0 -4
  369. package/dist/eiffel-DjBKKAr7.js +0 -4
  370. package/dist/elm--fxeC0FV.js +0 -4
  371. package/dist/erlang-CaKXCX6H.js +0 -4
  372. package/dist/factor-DlLO5EFS.js +0 -4
  373. package/dist/flatten-CWZjF1fc.js +0 -8
  374. package/dist/forth-rOO6LVj_.js +0 -4
  375. package/dist/fortran-CUg15VGR.js +0 -4
  376. package/dist/gas-BMRJspiW.js +0 -4
  377. package/dist/gherkin-DRxzijZU.js +0 -4
  378. package/dist/graphlib-CwMnCnQ9.js +0 -362
  379. package/dist/groovy-BmrQ8pUP.js +0 -4
  380. package/dist/haskell-BuaYfKOz.js +0 -4
  381. package/dist/haxe-DcH9eA0a.js +0 -5
  382. package/dist/idl-DGlcm4Ls.js +0 -4
  383. package/dist/infoDiagram-WHAUD3N6-B42WjAPh.js +0 -30
  384. package/dist/javascript-CeTk7rzr.js +0 -4
  385. package/dist/julia-BoP_q1gm.js +0 -4
  386. package/dist/livescript-B7IMN-ba.js +0 -4
  387. package/dist/lua-q1InavKb.js +0 -4
  388. package/dist/main-DmxVpB19.js +0 -1089
  389. package/dist/mathematica-DvR8-_EI.js +0 -4
  390. package/dist/mbox-7h5MNBS_.js +0 -4
  391. package/dist/merge-Db4Uulx4.js +0 -222
  392. package/dist/min-ypdVXicC.js +0 -38
  393. package/dist/mirc-D-XM8A5c.js +0 -4
  394. package/dist/mllike-BQGkkbmf.js +0 -6
  395. package/dist/modelica-D_yRj_WU.js +0 -4
  396. package/dist/mscgen-B-rltAjp.js +0 -6
  397. package/dist/mumps-2kh8TU2b.js +0 -4
  398. package/dist/now-Dwu5ou19.js +0 -31
  399. package/dist/nsis-CtusEqwb.js +0 -4
  400. package/dist/ntriples-BdAXw6zV.js +0 -4
  401. package/dist/octave-CsNFmVp5.js +0 -4
  402. package/dist/oz-odIXCrKd.js +0 -4
  403. package/dist/pascal-B9Mfk3Fo.js +0 -4
  404. package/dist/perl-C48inLcz.js +0 -4
  405. package/dist/pig-uwRtAssU.js +0 -4
  406. package/dist/powershell-CXqlca-i.js +0 -4
  407. package/dist/properties-D6Zu1rpK.js +0 -4
  408. package/dist/protobuf-BlNNWZaR.js +0 -4
  409. package/dist/pug-DytcK7bv.js +0 -4
  410. package/dist/puppet-lJ8Ok3iY.js +0 -4
  411. package/dist/python-cMaF7kUp.js +0 -4
  412. package/dist/q-Dgt2HYQh.js +0 -4
  413. package/dist/r-Bm4S4awf.js +0 -4
  414. package/dist/range-D9jxVFd_.js +0 -67
  415. package/dist/react-vega-1ub36dPZ.js +0 -9
  416. package/dist/reduce-C6NEPj6s.js +0 -133
  417. package/dist/rpm-_8LbzMVc.js +0 -5
  418. package/dist/ruby-Cr8IJ5VZ.js +0 -4
  419. package/dist/sas-CFcSfo2_.js +0 -4
  420. package/dist/scheme-N4XRoKgc.js +0 -4
  421. package/dist/shell-B4L7f_ds.js +0 -4
  422. package/dist/sieve-UI6J3Gm0.js +0 -4
  423. package/dist/slides-component-ql7-5GDI.js +0 -3048
  424. package/dist/smalltalk-BuaPZAZU.js +0 -4
  425. package/dist/sparql-1rKrq463.js +0 -4
  426. package/dist/stateDiagram-v2-4FDKWEC3-7i6jBXe6.js +0 -29
  427. package/dist/stex-D2rme5UG.js +0 -4
  428. package/dist/stylus-DvSovJEP.js +0 -4
  429. package/dist/swift-D-_E7Yyb.js +0 -4
  430. package/dist/tcl-Di5sAVHN.js +0 -4
  431. package/dist/textile-Benwt66z.js +0 -4
  432. package/dist/toml-CeOvPOkY.js +0 -4
  433. package/dist/troff-DJN9hfgu.js +0 -4
  434. package/dist/ttcn-DQW2Psjf.js +0 -4
  435. package/dist/ttcn-cfg-zFG_MNpg.js +0 -4
  436. package/dist/turtle-DHRyNlSc.js +0 -4
  437. package/dist/vb-CXWH9DD-.js +0 -4
  438. package/dist/vbscript-qr8qVck5.js +0 -4
  439. package/dist/velocity-C_9pUJRx.js +0 -4
  440. package/dist/verilog-DxBstgBa.js +0 -4
  441. package/dist/vhdl-odUxAbE6.js +0 -4
  442. package/dist/webidl-Dfn5Rku4.js +0 -4
  443. package/dist/xquery-CrJs6SXr.js +0 -4
  444. package/dist/yacas-B-uDDLZe.js +0 -4
  445. package/dist/z80-51gxgAXE.js +0 -4
  446. /package/dist/{ImageComparisonComponent-CRbA-1eg.js → ImageComparisonComponent-BYQfAfSR.js} +0 -0
  447. /package/dist/{Plot-C9vQQj4X.js → Plot-DfUav0o0.js} +0 -0
  448. /package/dist/{_arrayReduce-REKcIEj3.js → _arrayReduce-BfFy684W.js} +0 -0
  449. /package/dist/{_hasUnicode-DrSAc5A5.js → _hasUnicode-C32WqUu7.js} +0 -0
  450. /package/dist/{apl-Oc3bL26_.js → apl-DRxKiEot.js} +0 -0
  451. /package/dist/{array-CEIRxyh3.js → array-D-nrDupM.js} +0 -0
  452. /package/dist/{asciiarmor-DTbPh2VI.js → asciiarmor-C8HoXFIm.js} +0 -0
  453. /package/dist/{asn1-CGhwu1Ri.js → asn1-9Bo0DYT-.js} +0 -0
  454. /package/dist/{asterisk-Crp-Pien.js → asterisk-BsiuGzWq.js} +0 -0
  455. /package/dist/{brainfuck-CA0L8lRq.js → brainfuck-Db8njC-p.js} +0 -0
  456. /package/dist/{click-outside-container-C_k38vlR.js → click-outside-container-CKfwEZqH.js} +0 -0
  457. /package/dist/{clike-CEtUBPHD.js → clike-CFhUNtI5.js} +0 -0
  458. /package/dist/{clojure-BszjvdGo.js → clojure-CX7oovsp.js} +0 -0
  459. /package/dist/{cmake-B2Gvps8b.js → cmake-C29AR2kk.js} +0 -0
  460. /package/dist/{cobol-DuMch8nn.js → cobol-CNkuRW9i.js} +0 -0
  461. /package/dist/{coffeescript-L9aKXVsJ.js → coffeescript-BJAbfGam.js} +0 -0
  462. /package/dist/{colors-DR_aHfmQ.js → colors-6nB_pSln.js} +0 -0
  463. /package/dist/{common-keywords-NhoiR-2S.js → common-keywords-BAkLFdud.js} +0 -0
  464. /package/dist/{commonlisp-CrtdssxB.js → commonlisp-BTNhj2l9.js} +0 -0
  465. /package/dist/{crystal-vvNY0LpY.js → crystal-CZc0nIm9.js} +0 -0
  466. /package/dist/{css-B1GdzqT1.js → css-L2-0OTXc.js} +0 -0
  467. /package/dist/{cypher-BtZvV7bW.js → cypher-Dnc6MXl0.js} +0 -0
  468. /package/dist/{cytoscape.esm-CgJFiP_E.js → cytoscape.esm-BXzSsA6N.js} +0 -0
  469. /package/dist/{d-B0UN3V-Z.js → d-C6X9iIga.js} +0 -0
  470. /package/dist/{defaultLocale-DjFHq3Xk.js → defaultLocale-Bklbu-Tp.js} +0 -0
  471. /package/dist/{defaultLocale-B_A76Zpk.js → defaultLocale-CfQ4kBaV.js} +0 -0
  472. /package/dist/{diff-DOpgjj1W.js → diff-ZzKinYqY.js} +0 -0
  473. /package/dist/{dist-BYznkC5E.js → dist-Bymy0kEH.js} +0 -0
  474. /package/dist/{dtd-Ctnjxrle.js → dtd-CytEpkAo.js} +0 -0
  475. /package/dist/{duckdb-keywords-BnNtuiVz.js → duckdb-keywords-C1WxmSfG.js} +0 -0
  476. /package/dist/{dylan-DFXkoaZy.js → dylan-CZByFBEQ.js} +0 -0
  477. /package/dist/{ebnf-CFKHGc8c.js → ebnf-BF2FOt-m.js} +0 -0
  478. /package/dist/{ecl-C1NExZip.js → ecl-Cp7L1F5B.js} +0 -0
  479. /package/dist/{eiffel-uXVGgleg.js → eiffel-C66yjnFL.js} +0 -0
  480. /package/dist/{elm-CBOFnnib.js → elm-DtHo-73e.js} +0 -0
  481. /package/dist/{emotion-is-prop-valid.esm--WpIBtj8.js → emotion-is-prop-valid.esm-DtW2o230.js} +0 -0
  482. /package/dist/{erlang-DMnrT8XK.js → erlang-C_sj44mF.js} +0 -0
  483. /package/dist/{error-banner-vCG-EbUQ.js → error-banner-D0tXnwl4.js} +0 -0
  484. /package/dist/{esm-0_ieXYNc.js → esm-BWftfC-A.js} +0 -0
  485. /package/dist/{fcl-DPZwieM9.js → fcl-BhLcvRo_.js} +0 -0
  486. /package/dist/{forth-DDpxS4nw.js → forth-CIDHh56T.js} +0 -0
  487. /package/dist/{fortran-B6uYqQMz.js → fortran-BQrDVXRU.js} +0 -0
  488. /package/dist/{gas-BKnWzuFz.js → gas-D4HQPB0Q.js} +0 -0
  489. /package/dist/{gherkin-pBt0wT4X.js → gherkin-UB2gJHdT.js} +0 -0
  490. /package/dist/{groovy-DKsn4ppB.js → groovy-DVz6jkOx.js} +0 -0
  491. /package/dist/{haskell-BJVBJQcy.js → haskell-CpUdAPCz.js} +0 -0
  492. /package/dist/{haxe-rLN5UZU5.js → haxe-DCV5_cqD.js} +0 -0
  493. /package/dist/{http-AQJFxSug.js → http-C_TDb8VX.js} +0 -0
  494. /package/dist/{idl-B4mwMAo-.js → idl-D7WCIgHw.js} +0 -0
  495. /package/dist/{init-TaqZJsBY.js → init-Ci8VD8ZH.js} +0 -0
  496. /package/dist/{invariant-D-K49MfV.js → invariant-D9QLJ4SZ.js} +0 -0
  497. /package/dist/{javascript-Hf2NLNC0.js → javascript-B2Rn0Lmd.js} +0 -0
  498. /package/dist/{julia-GGpx21YN.js → julia-ApprtEaw.js} +0 -0
  499. /package/dist/{katex-Ba7xZPrx.js → katex-Bk_FvVSR.js} +0 -0
  500. /package/dist/{livescript-CSvXMspZ.js → livescript-BMLIlM7C.js} +0 -0
  501. /package/dist/{lua-CVMR5LMW.js → lua-DdDaW3tC.js} +0 -0
  502. /package/dist/{math-CTnb-N1W.js → math-HUZifhTs.js} +0 -0
  503. /package/dist/{mathematica-JENNt-p4.js → mathematica-PnNN7c2Z.js} +0 -0
  504. /package/dist/{mbox-mzifoc8E.js → mbox-B84OtHBK.js} +0 -0
  505. /package/dist/{mirc-BXoiItvN.js → mirc-BVWXJxIq.js} +0 -0
  506. /package/dist/{mllike-H-KR9OuH.js → mllike-BawXWupH.js} +0 -0
  507. /package/dist/{modelica-B6Hm3mMl.js → modelica-C8-X4Hf_.js} +0 -0
  508. /package/dist/{mscgen-D8TF_Hei.js → mscgen-BOM6dDj8.js} +0 -0
  509. /package/dist/{mumps-CD-kNPt4.js → mumps-DQOY8n05.js} +0 -0
  510. /package/dist/{nginx-hpek_Tnq.js → nginx-DkMgA__9.js} +0 -0
  511. /package/dist/{node-sql-parser-ChQUJk8A.js → node-sql-parser-D53LM_7b.js} +0 -0
  512. /package/dist/{ntriples-DgnpxU40.js → ntriples-DU8VrXdW.js} +0 -0
  513. /package/dist/{octave-CkobqyVm.js → octave-BzTIBsQ8.js} +0 -0
  514. /package/dist/{oz-ChDLd9tS.js → oz-DKFcZsoi.js} +0 -0
  515. /package/dist/{pascal-CvlkwK7E.js → pascal-DHBZ15pT.js} +0 -0
  516. /package/dist/{path-7gr7eZmp.js → path-BVI7RNUv.js} +0 -0
  517. /package/dist/{perl-BNEFTNbM.js → perl-75NMI3w0.js} +0 -0
  518. /package/dist/{pig-Cd1DMS7P.js → pig-B-HY1fo_.js} +0 -0
  519. /package/dist/{powershell-CPxA0zpc.js → powershell-DEH22U53.js} +0 -0
  520. /package/dist/{properties-BaFBm-Xa.js → properties-B1MzBoJC.js} +0 -0
  521. /package/dist/{protobuf-BQV_-X0H.js → protobuf-Dr14KV0p.js} +0 -0
  522. /package/dist/{puppet-LXLST0mx.js → puppet-C4z38l7v.js} +0 -0
  523. /package/dist/{purify.es-D4vaFt5N.js → purify.es-CyOIw8ru.js} +0 -0
  524. /package/dist/{python-DLjLzX4k.js → python-D2L7Nknt.js} +0 -0
  525. /package/dist/{q-DswTX1Y9.js → q-PxipHfgS.js} +0 -0
  526. /package/dist/{r-CO7NpMwE.js → r-CEMMu_Tf.js} +0 -0
  527. /package/dist/{range-DwpxnYuB.js → range-BToS7LsA.js} +0 -0
  528. /package/dist/{rpm-BlmEDT6r.js → rpm-D3xyahkR.js} +0 -0
  529. /package/dist/{ruby-BTPKgeZZ.js → ruby-DwEkwdiu.js} +0 -0
  530. /package/dist/{sas-DTDTiNO8.js → sas-L1W0BRft.js} +0 -0
  531. /package/dist/{scheme-UzAAg4GJ.js → scheme-CTybTrX0.js} +0 -0
  532. /package/dist/{shell-DQ0hQCsB.js → shell-BSx3LZnu.js} +0 -0
  533. /package/dist/{sieve-BVyYIx9u.js → sieve-BjUfbv-6.js} +0 -0
  534. /package/dist/{simple-mode-Dryu-fC9.js → simple-mode-IPZGFbI6.js} +0 -0
  535. /package/dist/{smalltalk-DAdMAHTu.js → smalltalk-BlzuYrMv.js} +0 -0
  536. /package/dist/{solr-BSTJW269.js → solr-Cj_9RM4d.js} +0 -0
  537. /package/dist/{sparql-Bi7quYgw.js → sparql-BXKjQ0cK.js} +0 -0
  538. /package/dist/{spreadsheet-CiBky1_y.js → spreadsheet-CifI10GO.js} +0 -0
  539. /package/dist/{sql-BXZovj-z.js → sql-B0bFyY1c.js} +0 -0
  540. /package/dist/{stex-DIvyJfNO.js → stex-BIsgBmK4.js} +0 -0
  541. /package/dist/{stylus-jhpzcQ6Y.js → stylus-CqrLLVnG.js} +0 -0
  542. /package/dist/{swift-BrO8qThZ.js → swift-DIqvj3_G.js} +0 -0
  543. /package/dist/{tcl-s5QI5gv3.js → tcl-B8bOIGVK.js} +0 -0
  544. /package/dist/{textile-ClhvJrxM.js → textile-DZsjavD_.js} +0 -0
  545. /package/dist/{tiddlywiki-DLTDKQCh.js → tiddlywiki-BbGdvEjx.js} +0 -0
  546. /package/dist/{tiki-tw_kBvbp.js → tiki-BYesmRDo.js} +0 -0
  547. /package/dist/{timer-DV8t68ti.js → timer-CPsmIOdm.js} +0 -0
  548. /package/dist/{toml-TFa3EJQE.js → toml-Uc7m08nl.js} +0 -0
  549. /package/dist/{treemap-CQJ0bIDy.js → treemap-DMn4tIJ7.js} +0 -0
  550. /package/dist/{troff-SqLg0heF.js → troff-GEl5wcXR.js} +0 -0
  551. /package/dist/{ttcn-cfg-Dopc-iwE.js → ttcn-cfg-dZQ_fWTH.js} +0 -0
  552. /package/dist/{ttcn-Cfrap7HJ.js → ttcn-pr4FDOLT.js} +0 -0
  553. /package/dist/{turtle-Dt52DvVH.js → turtle-TPRDOknA.js} +0 -0
  554. /package/dist/{vb-D1pAvfDe.js → vb-BJUAeTYr.js} +0 -0
  555. /package/dist/{vbscript-DZ7RBxn5.js → vbscript-CcJ6Z3ic.js} +0 -0
  556. /package/dist/{velocity-Csau7eZy.js → velocity-pq4ZMzU3.js} +0 -0
  557. /package/dist/{verilog-gXlZACs5.js → verilog-timMNjHt.js} +0 -0
  558. /package/dist/{vhdl-NaUWbI1B.js → vhdl-DYFbVKNm.js} +0 -0
  559. /package/dist/{webidl-BJmPjW01.js → webidl-pue9oqnb.js} +0 -0
  560. /package/dist/{xquery-CJIPsC0g.js → xquery-DeItGynK.js} +0 -0
  561. /package/dist/{yacas-8f2Vjiiz.js → yacas-By2Qrjba.js} +0 -0
  562. /package/dist/{z80-s5Xk2hCP.js → z80-C7iLsyPC.js} +0 -0
  563. /package/src/components/editor/file-tree/__tests__/{file-expolorer.test.ts → file-explorer.test.ts} +0 -0
@@ -0,0 +1,381 @@
1
+ /* Copyright 2026 Marimo. All rights reserved. */
2
+
3
+ import type * as LSP from "vscode-languageserver-protocol";
4
+
5
+ // Matches inline RST math role: :math:`...`
6
+ const INLINE_MATH_ROLE_REGEX = /(?<!`):math:`([^\n`]+)`/g;
7
+ // Matches role variant with HTML code tag: :math:<code>...</code>
8
+ const INLINE_MATH_ROLE_CODE_REGEX = /:math:\s*<code>(.+?)<\/code>/gs;
9
+ // Matches display bracket delimiters: \[...\]
10
+ const DISPLAY_BRACKET_REGEX = /\\\[(.+?)\\]/gs;
11
+ // Matches inline paren delimiters: \(...\)
12
+ const INLINE_PAREN_REGEX = /\\\((.+?)\\\)/gs;
13
+ // Matches display dollar delimiters: $$...$$
14
+ const DISPLAY_DOLLAR_REGEX = /(?<!\\)\$\$(.+?)(?<!\\)\$\$/gs;
15
+ // Matches inline dollar delimiters: $...$
16
+ const INLINE_DOLLAR_REGEX = /(?<![$\\])\$(?!\$)([^\n$]+?)(?<!\\)\$(?!\$)/g;
17
+
18
+ interface FencedSegment {
19
+ text: string;
20
+ isFenced: boolean;
21
+ }
22
+
23
+ interface InlineCodeSegment {
24
+ text: string;
25
+ isInlineCode: boolean;
26
+ }
27
+
28
+ /**
29
+ * Normalize supported math syntaxes inside markdown payloads used by LSP.
30
+ *
31
+ * The output stays markdown/HTML-compatible for the tooltip renderer while
32
+ * skipping fenced and inline code so examples remain literal.
33
+ */
34
+ export function normalizeMarkdownMath(markdown: string): string {
35
+ if (!containsMathSyntax(markdown)) {
36
+ return markdown;
37
+ }
38
+
39
+ return splitByFencedCodeBlocks(markdown)
40
+ .map((segment) => {
41
+ if (segment.isFenced) {
42
+ return segment.text;
43
+ }
44
+
45
+ const withMathRolesNormalized = segment.text
46
+ .replaceAll(INLINE_MATH_ROLE_REGEX, (_, math) => inlineMath(math))
47
+ .replaceAll(INLINE_MATH_ROLE_CODE_REGEX, (_, math) => inlineMath(math));
48
+
49
+ return splitByInlineCodeSegments(withMathRolesNormalized)
50
+ .map((inlineSegment) => {
51
+ if (inlineSegment.isInlineCode) {
52
+ return inlineSegment.text;
53
+ }
54
+ return normalizePlainTextMath(inlineSegment.text);
55
+ })
56
+ .join("");
57
+ })
58
+ .join("");
59
+ }
60
+
61
+ /**
62
+ * Apply markdown math normalization across the LSP documentation union.
63
+ *
64
+ * For plaintext payloads, this only upcasts to markdown when math syntax is
65
+ * detected, so non-math plaintext keeps its previous behavior.
66
+ */
67
+ export function normalizeLspDocumentation(
68
+ documentation:
69
+ | LSP.MarkupContent
70
+ | LSP.MarkedString
71
+ | LSP.MarkedString[]
72
+ | undefined,
73
+ ): LSP.MarkupContent | LSP.MarkedString | LSP.MarkedString[] | undefined {
74
+ if (documentation == null) {
75
+ return documentation;
76
+ }
77
+
78
+ if (Array.isArray(documentation)) {
79
+ return documentation.map((item) => normalizeLspMarkedString(item));
80
+ }
81
+
82
+ if (typeof documentation === "string") {
83
+ return normalizeMarkdownMath(documentation);
84
+ }
85
+
86
+ if (isMarkupContent(documentation)) {
87
+ if (documentation.kind === "markdown") {
88
+ return {
89
+ ...documentation,
90
+ value: normalizeMarkdownMath(documentation.value),
91
+ };
92
+ }
93
+
94
+ if (!containsMathSyntax(documentation.value)) {
95
+ return documentation;
96
+ }
97
+
98
+ return {
99
+ kind: "markdown",
100
+ value: normalizeMarkdownMath(documentation.value),
101
+ };
102
+ }
103
+
104
+ return normalizeLspMarkedString(documentation);
105
+ }
106
+
107
+ function normalizeLspMarkedString(marked: LSP.MarkedString): LSP.MarkedString {
108
+ if (typeof marked === "string") {
109
+ return normalizeMarkdownMath(marked);
110
+ }
111
+ if (marked.language !== "markdown" && marked.language !== "md") {
112
+ return marked;
113
+ }
114
+ return {
115
+ ...marked,
116
+ value: normalizeMarkdownMath(marked.value),
117
+ };
118
+ }
119
+
120
+ function isMarkupContent(
121
+ documentation: LSP.MarkupContent | LSP.MarkedString,
122
+ ): documentation is LSP.MarkupContent {
123
+ return (
124
+ typeof documentation === "object" &&
125
+ "kind" in documentation &&
126
+ "value" in documentation
127
+ );
128
+ }
129
+
130
+ function containsMathSyntax(markdown: string): boolean {
131
+ return (
132
+ markdown.includes(".. math::") ||
133
+ markdown.includes(":math:`") ||
134
+ // Detects display bracket delimiters.
135
+ /\\\[[\S\s]+?\\]/.test(markdown) ||
136
+ // Detects inline paren delimiters.
137
+ /\\\([\S\s]+?\\\)/.test(markdown) ||
138
+ // Detects display dollar delimiters.
139
+ /(?<!\\)\$\$[\S\s]+?(?<!\\)\$\$/.test(markdown) ||
140
+ // Detects inline dollar delimiters.
141
+ /(?<![$\\])\$(?!\$)[^\n$]+?(?<!\\)\$(?!\$)/.test(markdown) ||
142
+ // Detects HTML code-tag RST role variant.
143
+ /:math:\s*<code>[\S\s]+?<\/code>/.test(markdown)
144
+ );
145
+ }
146
+
147
+ function splitByFencedCodeBlocks(markdown: string): FencedSegment[] {
148
+ // Preserve fenced code blocks as literal text during normalization.
149
+ const lines = markdown.split("\n");
150
+ const segments: FencedSegment[] = [];
151
+ let current: string[] = [];
152
+ let inFence = false;
153
+ let fenceChar = "";
154
+ let fenceLength = 0;
155
+
156
+ const flush = (isFenced: boolean) => {
157
+ if (current.length === 0) {
158
+ return;
159
+ }
160
+ segments.push({ text: current.join("\n"), isFenced });
161
+ current = [];
162
+ };
163
+
164
+ for (const line of lines) {
165
+ // Matches fenced-code fence markers: ``` or ~~~ (>= 3 chars).
166
+ const markerMatch = line.match(/^[\t ]*(`{3,}|~{3,})/);
167
+ if (markerMatch) {
168
+ const marker = markerMatch[1];
169
+ const markerChar = marker[0];
170
+ const markerLength = marker.length;
171
+
172
+ if (!inFence) {
173
+ flush(false);
174
+ inFence = true;
175
+ fenceChar = markerChar;
176
+ fenceLength = markerLength;
177
+ current.push(line);
178
+ continue;
179
+ }
180
+
181
+ if (markerChar === fenceChar && markerLength >= fenceLength) {
182
+ current.push(line);
183
+ flush(true);
184
+ inFence = false;
185
+ fenceChar = "";
186
+ fenceLength = 0;
187
+ continue;
188
+ }
189
+ }
190
+
191
+ current.push(line);
192
+ }
193
+
194
+ flush(inFence);
195
+ return segments;
196
+ }
197
+
198
+ function splitByInlineCodeSegments(text: string): InlineCodeSegment[] {
199
+ // Preserve inline code spans (single or multi-backtick delimiters).
200
+ const segments: InlineCodeSegment[] = [];
201
+ let current = "";
202
+ let inInlineCode = false;
203
+ let delimiter = "";
204
+ let i = 0;
205
+
206
+ while (i < text.length) {
207
+ if (text[i] === "`") {
208
+ let j = i;
209
+ while (j < text.length && text[j] === "`") {
210
+ j += 1;
211
+ }
212
+ const ticks = text.slice(i, j);
213
+
214
+ if (inInlineCode && ticks === delimiter) {
215
+ current += ticks;
216
+ segments.push({ text: current, isInlineCode: true });
217
+ current = "";
218
+ inInlineCode = false;
219
+ delimiter = "";
220
+ i = j;
221
+ continue;
222
+ }
223
+
224
+ if (!inInlineCode) {
225
+ if (current) {
226
+ segments.push({ text: current, isInlineCode: false });
227
+ current = "";
228
+ }
229
+ inInlineCode = true;
230
+ delimiter = ticks;
231
+ current += ticks;
232
+ i = j;
233
+ continue;
234
+ }
235
+ }
236
+
237
+ current += text[i];
238
+ i += 1;
239
+ }
240
+
241
+ if (current) {
242
+ segments.push({ text: current, isInlineCode: inInlineCode });
243
+ }
244
+
245
+ return segments;
246
+ }
247
+
248
+ function normalizePlainTextMath(text: string): string {
249
+ // Convert alternate math syntaxes into marimo-tex HTML wrappers.
250
+ let converted = convertRstMathBlocks(text);
251
+ converted = converted.replaceAll(DISPLAY_BRACKET_REGEX, (_, math) =>
252
+ displayMath(math),
253
+ );
254
+ converted = converted.replaceAll(INLINE_PAREN_REGEX, (_, math) =>
255
+ inlineMath(math),
256
+ );
257
+ converted = converted.replaceAll(DISPLAY_DOLLAR_REGEX, (_, math) =>
258
+ displayMath(math),
259
+ );
260
+ converted = converted.replaceAll(INLINE_DOLLAR_REGEX, (_, math) =>
261
+ inlineMath(math),
262
+ );
263
+ return converted;
264
+ }
265
+
266
+ function countIndent(line: string): number {
267
+ // Matches leading whitespace used to compute visual indentation.
268
+ return line.match(/^[\t ]*/)?.[0].replaceAll("\t", " ").length ?? 0;
269
+ }
270
+
271
+ function convertRstMathBlocks(text: string): string {
272
+ // Convert ``.. math::`` directive bodies to display math wrappers.
273
+ const lines = text.split("\n");
274
+ if (lines.length === 0) {
275
+ return text;
276
+ }
277
+
278
+ const output: string[] = [];
279
+ let i = 0;
280
+ while (i < lines.length) {
281
+ const line = lines[i];
282
+ // Matches RST math directive lines: ".. math:: ..."
283
+ const directiveMatch = line.match(/^[\t ]*\.\.\s+math::(.*)$/);
284
+ if (!directiveMatch) {
285
+ output.push(line);
286
+ i += 1;
287
+ continue;
288
+ }
289
+
290
+ const inlineMath = directiveMatch[1]?.trim() ?? "";
291
+ const baseIndent = countIndent(line);
292
+ i += 1;
293
+
294
+ const mathLines: string[] = [];
295
+ let consumeUnindentedBlock = inlineMath.includes("\\begin");
296
+ if (inlineMath) {
297
+ mathLines.push(inlineMath);
298
+ } else {
299
+ while (i < lines.length) {
300
+ const currentLine = lines[i];
301
+ if (!currentLine.trim()) {
302
+ i += 1;
303
+ continue;
304
+ }
305
+
306
+ const isOptionLine =
307
+ countIndent(currentLine) > baseIndent &&
308
+ currentLine.trim().startsWith(":");
309
+ if (!isOptionLine) {
310
+ break;
311
+ }
312
+ i += 1;
313
+ }
314
+
315
+ if (i < lines.length) {
316
+ const nextLine = lines[i];
317
+ consumeUnindentedBlock =
318
+ Boolean(nextLine.trim()) &&
319
+ countIndent(nextLine) <= baseIndent &&
320
+ nextLine.trimStart().startsWith("\\");
321
+ }
322
+ }
323
+
324
+ if (consumeUnindentedBlock) {
325
+ while (i < lines.length && lines[i].trim()) {
326
+ mathLines.push(lines[i]);
327
+ i += 1;
328
+ }
329
+ } else {
330
+ while (i < lines.length) {
331
+ const currentLine = lines[i];
332
+ if (!currentLine.trim()) {
333
+ mathLines.push("");
334
+ i += 1;
335
+ continue;
336
+ }
337
+
338
+ if (countIndent(currentLine) <= baseIndent) {
339
+ break;
340
+ }
341
+
342
+ mathLines.push(currentLine);
343
+ i += 1;
344
+ }
345
+ }
346
+
347
+ const nonEmptyMathLines = mathLines.filter((mathLine) =>
348
+ Boolean(mathLine.trim()),
349
+ );
350
+ if (nonEmptyMathLines.length === 0) {
351
+ output.push(line);
352
+ continue;
353
+ }
354
+
355
+ const minIndent = Math.min(
356
+ ...nonEmptyMathLines.map((mathLine) => countIndent(mathLine)),
357
+ );
358
+ const normalizedMath = mathLines
359
+ .map((mathLine) => {
360
+ if (!mathLine) {
361
+ return "";
362
+ }
363
+ const stripCount = Math.min(minIndent, countIndent(mathLine));
364
+ return mathLine.slice(stripCount);
365
+ })
366
+ .join("\n")
367
+ .trim();
368
+
369
+ output.push(displayMath(normalizedMath));
370
+ }
371
+
372
+ return output.join("\n");
373
+ }
374
+
375
+ function inlineMath(math: string): string {
376
+ return `<marimo-tex class="arithmatex">||(${math.trim()}||)</marimo-tex>`;
377
+ }
378
+
379
+ function displayMath(math: string): string {
380
+ return `<marimo-tex class="arithmatex">||[${math.trim()}||]</marimo-tex>`;
381
+ }
@@ -16,6 +16,7 @@ import {
16
16
  updateEditorCodeFromPython,
17
17
  } from "../language/utils";
18
18
  import { createNotebookLens, type NotebookLens } from "./lens";
19
+ import { normalizeLspDocumentation } from "./normalize-markdown-math";
19
20
  import {
20
21
  CellDocumentUri,
21
22
  type ILanguageServerClient,
@@ -89,6 +90,56 @@ const defaultGetNotebookEditors = () => {
89
90
  return Objects.mapValues(evs, (r) => r.current?.editorViewOrNull);
90
91
  };
91
92
 
93
+ function normalizeTextDocumentation(
94
+ documentation: string | LSP.MarkupContent | undefined,
95
+ ): string | LSP.MarkupContent | undefined {
96
+ const normalized = normalizeLspDocumentation(
97
+ documentation as LSP.MarkupContent | LSP.MarkedString | undefined,
98
+ );
99
+ if (Array.isArray(normalized)) {
100
+ return documentation;
101
+ }
102
+ return normalized as string | LSP.MarkupContent | undefined;
103
+ }
104
+
105
+ function normalizeCompletionItem(item: LSP.CompletionItem): LSP.CompletionItem {
106
+ return {
107
+ ...item,
108
+ documentation: normalizeTextDocumentation(item.documentation),
109
+ };
110
+ }
111
+
112
+ function normalizeCompletionResponse(
113
+ response: LSP.CompletionList | LSP.CompletionItem[] | null,
114
+ ): LSP.CompletionList | LSP.CompletionItem[] | null {
115
+ if (response == null) {
116
+ return null;
117
+ }
118
+ if (Array.isArray(response)) {
119
+ return response.map((item) => normalizeCompletionItem(item));
120
+ }
121
+ return {
122
+ ...response,
123
+ items: response.items.map((item) => normalizeCompletionItem(item)),
124
+ };
125
+ }
126
+
127
+ function normalizeSignatureHelpResponse(
128
+ response: LSP.SignatureHelp,
129
+ ): LSP.SignatureHelp {
130
+ return {
131
+ ...response,
132
+ signatures: response.signatures.map((signature) => ({
133
+ ...signature,
134
+ documentation: normalizeTextDocumentation(signature.documentation),
135
+ parameters: signature.parameters?.map((parameter) => ({
136
+ ...parameter,
137
+ documentation: normalizeTextDocumentation(parameter.documentation),
138
+ })),
139
+ })),
140
+ };
141
+ }
142
+
92
143
  export class NotebookLanguageServerClient implements ILanguageServerClient {
93
144
  public readonly documentUri: LSP.DocumentUri;
94
145
  private readonly client: ILanguageServerClient;
@@ -372,7 +423,7 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
372
423
  return null;
373
424
  }
374
425
 
375
- return response;
426
+ return normalizeSignatureHelpResponse(response);
376
427
  }
377
428
 
378
429
  /**
@@ -569,7 +620,9 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
569
620
  return cached;
570
621
  }
571
622
 
572
- const resolved = this.client.completionItemResolve(params);
623
+ const resolved = this.client
624
+ .completionItemResolve(params)
625
+ .then((item) => normalizeCompletionItem(item));
573
626
  this.completionItemCache.set(key, resolved);
574
627
  return resolved;
575
628
  }
@@ -626,6 +679,8 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
626
679
  value: hover.contents.value,
627
680
  };
628
681
  }
682
+ hover.contents =
683
+ normalizeLspDocumentation(hover.contents) ?? hover.contents;
629
684
 
630
685
  // Empty
631
686
  if (hover.contents === "") {
@@ -679,13 +734,14 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
679
734
 
680
735
  const transformedPosition = lens.transformPosition(params.position, cellId);
681
736
 
682
- return this.client.textDocumentCompletion({
737
+ const response = await this.client.textDocumentCompletion({
683
738
  ...params,
684
739
  textDocument: {
685
740
  uri: this.documentUri,
686
741
  },
687
742
  position: transformedPosition,
688
743
  });
744
+ return normalizeCompletionResponse(response);
689
745
  }
690
746
 
691
747
  /**
@@ -12,6 +12,7 @@ export interface ExperimentalFeatures {
12
12
  cache_panel: boolean;
13
13
  external_agents: boolean;
14
14
  server_side_pdf_export: boolean;
15
+ storage_inspector: boolean;
15
16
  // Add new feature flags here
16
17
  }
17
18
 
@@ -22,6 +23,7 @@ const defaultValues: ExperimentalFeatures = {
22
23
  cache_panel: false,
23
24
  external_agents: import.meta.env.DEV,
24
25
  server_side_pdf_export: true,
26
+ storage_inspector: false,
25
27
  };
26
28
 
27
29
  export function getFeatureFlag<T extends keyof ExperimentalFeatures>(
@@ -39,6 +39,7 @@ describe("parseOutline", () => {
39
39
  "by": {
40
40
  "id": "what-is-marimo",
41
41
  },
42
+ "html": "What is <b>marimo</b>?",
42
43
  "level": 2,
43
44
  "name": "What is marimo?",
44
45
  },
@@ -310,6 +311,50 @@ describe("parseOutline", () => {
310
311
  `);
311
312
  });
312
313
 
314
+ it("preserves LaTeX HTML in headings", () => {
315
+ const html = `
316
+ <span class="markdown">
317
+ <h1 id="intro">Introduction</h1>
318
+ <h2 id="the-equation">The equation <marimo-tex class="arithmatex">||(E = mc^2||)</marimo-tex></h2>
319
+ <h2 id="plain">Plain heading</h2>
320
+ </span>
321
+ `;
322
+ const outline = parseOutline({
323
+ mimetype: "text/html",
324
+ timestamp: 0,
325
+ channel: "output",
326
+ data: html,
327
+ });
328
+ expect(outline).toMatchInlineSnapshot(`
329
+ {
330
+ "items": [
331
+ {
332
+ "by": {
333
+ "id": "intro",
334
+ },
335
+ "level": 1,
336
+ "name": "Introduction",
337
+ },
338
+ {
339
+ "by": {
340
+ "id": "the-equation",
341
+ },
342
+ "html": "The equation <marimo-tex class="arithmatex">||(E = mc^2||)</marimo-tex>",
343
+ "level": 2,
344
+ "name": "The equation ||(E = mc^2||)",
345
+ },
346
+ {
347
+ "by": {
348
+ "id": "plain",
349
+ },
350
+ "level": 2,
351
+ "name": "Plain heading",
352
+ },
353
+ ],
354
+ }
355
+ `);
356
+ });
357
+
313
358
  it("excludes headings within excluded tags", () => {
314
359
  const html = `
315
360
  <div>
@@ -323,6 +368,9 @@ describe("parseOutline", () => {
323
368
  <marimo-accordion>
324
369
  <h2 id="excluded-heading-accordion">Excluded Heading in Accordion</h2>
325
370
  </marimo-accordion>
371
+ <marimo-sidebar>
372
+ <h2 id="excluded-heading-sidebar">Excluded Heading in Sidebar</h2>
373
+ </marimo-sidebar>
326
374
  <h2 id="another-included-heading">Another Included Heading</h2>
327
375
  </div>
328
376
  `;
@@ -1,12 +1,18 @@
1
1
  /* Copyright 2026 Marimo. All rights reserved. */
2
2
 
3
+ import { sanitizeHtml } from "@/plugins/core/sanitize";
3
4
  import { invariant } from "@/utils/invariant";
4
5
  import { Logger } from "@/utils/Logger";
5
6
  import type { Outline, OutlineItem } from "../cells/outline";
6
7
  import type { OutputMessage } from "../kernel/messages";
7
8
 
8
9
  // Tags that we don't want to include in the outline
9
- const excludedTags = ["marimo-carousel", "marimo-tabs", "marimo-accordion"];
10
+ const excludedTags = [
11
+ "marimo-carousel",
12
+ "marimo-tabs",
13
+ "marimo-accordion",
14
+ "marimo-sidebar",
15
+ ];
10
16
 
11
17
  // We go up to h6. Previously we did h3 to match Google Docs and Notion, but users have requested more levels.
12
18
  // This could be made configurable in the future.
@@ -46,7 +52,12 @@ function getOutline(html: string): Outline | null {
46
52
  }
47
53
 
48
54
  const level = Number.parseInt(heading.tagName[1], 10);
49
- items.push({ name, level, by: headingToIdentifier(heading) });
55
+ const innerHTML = heading.innerHTML;
56
+ const item: OutlineItem = { name, level, by: headingToIdentifier(heading) };
57
+ if (innerHTML !== name) {
58
+ item.html = sanitizeHtml(innerHTML);
59
+ }
60
+ items.push(item);
50
61
  }
51
62
 
52
63
  return { items };
@@ -200,6 +200,8 @@ export class IslandsPyodideBridge implements RunRequests, EditRequests {
200
200
  invokeAiTool = throwNotImplemented;
201
201
  clearCache = throwNotImplemented;
202
202
  getCacheInfo = throwNotImplemented;
203
+ listStorageEntries = throwNotImplemented;
204
+ downloadStorage = throwNotImplemented;
203
205
 
204
206
  // The kernel uses msgspec to parse control requests, which requires a 'type'
205
207
  // field for discriminated union deserialization.
@@ -127,6 +127,8 @@ export async function initialize() {
127
127
  case "data-source-connections":
128
128
  case "validate-sql-result":
129
129
  case "storage-namespaces":
130
+ case "storage-entries":
131
+ case "storage-download-ready":
130
132
  case "secret-keys-result":
131
133
  case "startup-logs":
132
134
  // Unsupported
@@ -113,6 +113,8 @@ const ACTIONS: Record<keyof AllRequests, Action> = {
113
113
  previewSQLTableList: "waitForConnectionOpen",
114
114
  previewDataSourceConnection: "waitForConnectionOpen",
115
115
  validateSQL: "waitForConnectionOpen",
116
+ listStorageEntries: "waitForConnectionOpen",
117
+ downloadStorage: "waitForConnectionOpen",
116
118
 
117
119
  // Sync operations that wait for connection
118
120
  syncCellIds: "waitForConnectionOpen",
@@ -488,5 +488,21 @@ export function createNetworkRequests(): EditRequests & RunRequests {
488
488
  })
489
489
  .then(handleResponseReturnNull);
490
490
  },
491
+ listStorageEntries: (request) => {
492
+ return getClient()
493
+ .POST("/api/storage/list_entries", {
494
+ body: request,
495
+ params: getParams(),
496
+ })
497
+ .then(handleResponseReturnNull);
498
+ },
499
+ downloadStorage: (request) => {
500
+ return getClient()
501
+ .POST("/api/storage/download", {
502
+ body: request,
503
+ params: getParams(),
504
+ })
505
+ .then(handleResponseReturnNull);
506
+ },
491
507
  };
492
508
  }
@@ -90,5 +90,7 @@ export function createStaticRequests(): EditRequests & RunRequests {
90
90
  invokeAiTool: throwNotInEditMode,
91
91
  clearCache: throwNotInEditMode,
92
92
  getCacheInfo: throwNotInEditMode,
93
+ listStorageEntries: throwNotInEditMode,
94
+ downloadStorage: throwNotInEditMode,
93
95
  };
94
96
  }
@@ -75,6 +75,8 @@ export function createErrorToastingRequests(
75
75
  invokeAiTool: "Failed to invoke AI tool",
76
76
  clearCache: "Failed to clear cache",
77
77
  getCacheInfo: "", // No toast
78
+ listStorageEntries: "Failed to list storage entries",
79
+ downloadStorage: "Failed to download storage entry",
78
80
  };
79
81
 
80
82
  const handlers = {} as EditRequests & RunRequests;
@@ -105,6 +105,9 @@ export type LspRestartRequest = schemas["LspRestartRequest"];
105
105
  export type LspRestartResponse = schemas["LspRestartResponse"];
106
106
  export type LspServerHealth = schemas["LspServerHealth"];
107
107
 
108
+ export type StorageListEntriesRequest = schemas["StorageListEntriesRequest"];
109
+ export type StorageDownloadRequest = schemas["StorageDownloadRequest"];
110
+
108
111
  /**
109
112
  * Requests sent to the BE during run/edit mode.
110
113
  */
@@ -198,6 +201,9 @@ export interface EditRequests {
198
201
  // Cache requests
199
202
  clearCache: () => Promise<null>;
200
203
  getCacheInfo: () => Promise<null>;
204
+ // Storage requests
205
+ listStorageEntries: (request: StorageListEntriesRequest) => Promise<null>;
206
+ downloadStorage: (request: StorageDownloadRequest) => Promise<null>;
201
207
  }
202
208
 
203
209
  export type RequestKey = keyof (EditRequests & RunRequests);