@marimo-team/islands 0.20.2 → 0.20.3-dev77
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.
- package/dist/{ConnectedDataExplorerComponent-BMiGWK57.js → ConnectedDataExplorerComponent-DUS-zJoR.js} +12 -12
- package/dist/{_baseIsEqual-DN5YkPnl.js → _baseIsEqual-5cAxzk6f.js} +42 -41
- package/dist/_basePickBy-3JVb5wYm.js +47 -0
- package/dist/{_baseProperty-6juuyX7Z.js → _baseProperty-D1nWkRMz.js} +12 -12
- package/dist/_baseSlice-BrVixxuc.js +10 -0
- package/dist/{_baseUniq-BlF21ach.js → _baseUniq-DSSiFuIJ.js} +10 -6
- package/dist/{any-language-editor-1OMbohwD.js → any-language-editor-BL9o7y0_.js} +31 -30
- package/dist/apl-lHFVoxx7.js +4 -0
- package/dist/{arc-9nABupDE.js → arc-DXxE-tFl.js} +2 -2
- package/dist/architecture-7HQA4BMR-BxkNpYRp.js +6 -0
- package/dist/{architectureDiagram-VXUJARFQ-DhN0C3Xf.js → architectureDiagram-VXUJARFQ-DrJeyFHq.js} +19 -19
- package/dist/asciiarmor-DqCdZUHI.js +4 -0
- package/dist/asn1-DEcwtw-q.js +4 -0
- package/dist/{blockDiagram-VD42YOAC-DrBkIcbV.js → blockDiagram-VD42YOAC-BJrP6qKc.js} +53 -53
- package/dist/brainfuck-Bro9Oz5x.js +4 -0
- package/dist/{c4Diagram-YG6GDRKO-pWt4zmu0.js → c4Diagram-YG6GDRKO-Bo4gytQ5.js} +6 -6
- package/dist/{channel-C56Jz8EL.js → channel-IWLGkaBE.js} +1 -1
- package/dist/{chunk-4BX2VUAB-WmXmzRBr.js → chunk-4BX2VUAB-CwMMQLZ_.js} +1 -1
- package/dist/{chunk-S6J4BHB3-zfWjyfUg.js → chunk-4F5CHEZ2-CxKDFd-t.js} +2 -2
- package/dist/{chunk-55IACEB6-irYMvHJu.js → chunk-55IACEB6-Dj8CzJvE.js} +1 -1
- package/dist/{chunk-5FQGJX7Z-pOElJy8t.js → chunk-5FQGJX7Z-BkzUmppO.js} +2 -2
- package/dist/{chunk-ABZYJK2D-BwNsaa1P.js → chunk-ABZYJK2D-CRwanrkd.js} +3 -3
- package/dist/{chunk-ATLVNIR6-DtFMAawc.js → chunk-ATLVNIR6-CMMCMvOK.js} +2 -2
- package/dist/{chunk-FWNWRKHM-DmrwhAQr.js → chunk-B2363JML-e_W7KW1D.js} +2 -2
- package/dist/{chunk-B4BG7PRW-lfWcLlzS.js → chunk-B4BG7PRW-BNsHrGHG.js} +7 -7
- package/dist/{chunk-CVBHYZKI-Bb2XMuXJ.js → chunk-CVBHYZKI-D8iwHsLF.js} +1 -1
- package/dist/{chunk-DI55MBZ5-RhhAimfG.js → chunk-DI55MBZ5-DQeYbfMV.js} +6 -6
- package/dist/{chunk-XAJISQIX-CZ8Bi1-x.js → chunk-DR5Q36YT-D4q96vNV.js} +2 -2
- package/dist/{chunk-EXTU4WIE-Bmo660a9.js → chunk-EXTU4WIE-CV_DQeaX.js} +2 -2
- package/dist/{chunk-FMBD7UC4-C0DZU_4q.js → chunk-FMBD7UC4-XTL4xAvH.js} +1 -1
- package/dist/{chunk-LBM3YZW2-BkxsqkNK.js → chunk-FRFDVMJY-C7q09nvl.js} +2 -2
- package/dist/{chunk-HN2XXSSU-BsB4dtgF.js → chunk-HN2XXSSU-CzO5Phf0.js} +1 -1
- package/dist/{chunk-JA3XYJ7Z-n8UTzfok.js → chunk-JA3XYJ7Z-Cmt--e0q.js} +3 -3
- package/dist/{chunk-JZLCHNYA-ChKqHUdB.js → chunk-JZLCHNYA-CkyMJnI9.js} +6 -6
- package/dist/{chunk-MI3HLSF2-DeDZS-tQ.js → chunk-MI3HLSF2-DvCKDmpi.js} +1 -1
- package/dist/{chunk-N4CR4FBY-BxOHGL3P.js → chunk-N4CR4FBY-BJfHtJbD.js} +7 -7
- package/dist/{chunk-T53DSG4Q-Bewz1tiU.js → chunk-PL6DKKU2-ChKBqnoD.js} +2 -2
- package/dist/{chunk-QN33PNHL-Dda-55xY.js → chunk-QN33PNHL-WOLIPUAJ.js} +2 -2
- package/dist/{chunk-QXUST7PY-ClIEpoCT.js → chunk-QXUST7PY-DYuD50pU.js} +10 -10
- package/dist/{chunk-QZHKN3VN-Diy_Cdek.js → chunk-QZHKN3VN-CYbwZKgJ.js} +1 -1
- package/dist/{chunk-S3R3BYOJ-C_1SJcWo.js → chunk-S3R3BYOJ-CsnX6RKs.js} +8 -8
- package/dist/{chunk-76Q3JFCE-CQ6a2yGJ.js → chunk-SJTYNZTY-j6_1s5om.js} +2 -2
- package/dist/{chunk-FPAJGGOC-quWdfNUB.js → chunk-TCCFYFTB-DdLCbCTn.js} +3995 -3985
- package/dist/{chunk-LHMN2FUI-CgYPnxfN.js → chunk-TQ3KTPDO-CGsUIC73.js} +2 -2
- package/dist/{chunk-TZMSLE5B-XW3duOft.js → chunk-TZMSLE5B-B3eYTGCw.js} +3 -3
- package/dist/{chunk-O7ZBX7Z2-CdpLwOP0.js → chunk-UMXZTB3W--LdAK3Bv.js} +2 -2
- package/dist/classDiagram-2ON5EDUG-C7C-oefv.js +30 -0
- package/dist/classDiagram-v2-WZHVMYZB-UTw37Gg8.js +30 -0
- package/dist/{clike-B90WKs4D.js → clike-CLJYUAWw.js} +1 -1
- package/dist/clojure-B2uhdQPa.js +4 -0
- package/dist/{clone-V9hndNcj.js → clone-BJrS4PdE.js} +1 -1
- package/dist/cmake-B9WXyQcc.js +4 -0
- package/dist/cobol-CPD3EJfO.js +4 -0
- package/dist/{code-block-37QAKDTI-zh5AeoJo.js → code-block-37QAKDTI-DV_ZyoUh.js} +1 -1
- package/dist/coffeescript-KD9TnEnS.js +4 -0
- package/dist/commonlisp-DNEULz_Q.js +4 -0
- package/dist/{constants-BGRTDzdW.js → constants-D1Tbg_6B.js} +3 -2
- package/dist/{cose-bilkent-S5V4N54A-BK1nIR2J.js → cose-bilkent-S5V4N54A-BCDTZDay.js} +2 -2
- package/dist/crystal-DVPNgAPQ.js +4 -0
- package/dist/css-fq3a1AH1.js +4 -0
- package/dist/cypher-Dtzq0BP7.js +4 -0
- package/dist/d-DcZudIhJ.js +4 -0
- package/dist/{dagre-6UL2VRFP-BArPH353.js → dagre-6UL2VRFP-BgsUhJrV.js} +88 -87
- package/dist/{dagre-Dcgyn_Uy.js → dagre-CyZCGfV_.js} +41 -84
- package/dist/{data-grid-overlay-editor-BVFT970w.js → data-grid-overlay-editor-BD0BFHzy.js} +2 -2
- package/dist/{diagram-PSM6KHXK-B1xAkr9y.js → diagram-PSM6KHXK-BIUUOfKo.js} +22 -22
- package/dist/{diagram-QEK2KX5R-CaoqwzPb.js → diagram-QEK2KX5R-BFjolZQv.js} +17 -17
- package/dist/{diagram-S2PKOQOG-NXCsFLvR.js → diagram-S2PKOQOG-4jfkWoZw.js} +17 -17
- package/dist/diff-D9BPDC3o.js +4 -0
- package/dist/{dist-IlWGXVjO.js → dist-7ZF--V_D.js} +2 -2
- package/dist/dist-BAeGo2rp.js +5 -0
- package/dist/{dist-Ey9hP8-j.js → dist-BBcqvpvP.js} +1 -1
- package/dist/{dist-DpAbrLuF.js → dist-BFL9TlzD.js} +5 -5
- package/dist/{dist-CD7uLx0M.js → dist-BLThQiU4.js} +2 -2
- package/dist/{dist-CoZ8kKKW.js → dist-BT6_J2eq.js} +1 -1
- package/dist/{dist-C_9IMrtt.js → dist-BTQbjEKU.js} +1 -1
- package/dist/dist-BqwCMSEa.js +5 -0
- package/dist/{dist-CUOuFgHt.js → dist-BuapEdlD.js} +113 -58
- package/dist/dist-Bum8FwTO.js +6 -0
- package/dist/{dist-LNp8svLl.js → dist-BwQHkjA9.js} +4 -4
- package/dist/dist-C0YiOwt_.js +5 -0
- package/dist/dist-C2uPv4iU.js +5 -0
- package/dist/{dist-Dmr_nXF6.js → dist-C4XMUaob.js} +2 -2
- package/dist/dist-C5hOLsJN.js +8 -0
- package/dist/{dist-a6Obzr07.js → dist-C6z8U-ms.js} +2 -2
- package/dist/dist-C9NIAKMs.js +8 -0
- package/dist/{dist-EZFqUJhh.js → dist-CB6qhQ8K.js} +1 -1
- package/dist/dist-CCrzTtvk.js +5 -0
- package/dist/dist-CFS9i1rS.js +8 -0
- package/dist/{dist-CMOy93xY.js → dist-CFToYDWO.js} +2 -2
- package/dist/{dist-DF_77D2B.js → dist-COpDrwi-.js} +1 -1
- package/dist/{dist-D8EhXZ4S.js → dist-CYo3w-nC.js} +3 -3
- package/dist/{dist-Dv2Phbh5.js → dist-Cb3cLT39.js} +2 -2
- package/dist/{dist-DOLQQtWK.js → dist-Ch_JuCvc.js} +3 -3
- package/dist/{dist-Cb3iqED3.js → dist-Cqpjy6bK.js} +1 -1
- package/dist/{dist-BswsDM4k.js → dist-CsqiXw7J.js} +2 -2
- package/dist/{dist-BoagoQQw.js → dist-CwtEWuFb.js} +2 -2
- package/dist/dist-CyHZuhPH.js +5 -0
- package/dist/dist-CzcjWdIk.js +6 -0
- package/dist/{dist-BUEi7EKT.js → dist-D0f6Yrrb.js} +1 -1
- package/dist/{dist-C5QB1NtD.js → dist-D7ZGWV_9.js} +3 -3
- package/dist/{dist-CrAYcS_4.js → dist-DEFZ7dnD.js} +2 -2
- package/dist/{dist-DrC0QKFK.js → dist-DMS81OrU.js} +1 -1
- package/dist/{dist-iyBCcLRa.js → dist-DUxS2paD.js} +2 -2
- package/dist/dist-DaYyUSNC.js +5 -0
- package/dist/{dist-W6TdeACj.js → dist-De9X_Des.js} +1 -1
- package/dist/dist-DpDcJYNh.js +8 -0
- package/dist/{dist-bz6WguLy.js → dist-I8MQW60_.js} +2 -2
- package/dist/{dist-BGzkWRSl.js → dist-IW_ARJ3S.js} +4 -4
- package/dist/{dist-xCB683Dh.js → dist-Qjf6pcqK.js} +2 -2
- package/dist/{dist-B_i29Q6L.js → dist-UYm1IE5s.js} +2 -2
- package/dist/dist-U_BfxcPn.js +5 -0
- package/dist/{dist-iDeoXzdN.js → dist-ovDpXuSB.js} +1 -1
- package/dist/{dockerfile-D1Q_4uCN.js → dockerfile-BxhYdLHL.js} +1 -1
- package/dist/dtd-FhG-tVom.js +4 -0
- package/dist/dylan-HWpZOBPw.js +4 -0
- package/dist/ecl-B_rcje1I.js +4 -0
- package/dist/eiffel-oqHyHs6f.js +4 -0
- package/dist/elm-B62RQEds.js +4 -0
- package/dist/{erDiagram-Q2GNP2WA-DWCa11g5.js → erDiagram-Q2GNP2WA-Cq5Bz5lG.js} +15 -15
- package/dist/erlang-CjRjjA-B.js +4 -0
- package/dist/{esm-DZSk8vt3.js → esm-BxMbHo0y.js} +107 -107
- package/dist/factor-CGH_TnIV.js +4 -0
- package/dist/{factor--4HHM8Rw.js → factor-Png_OsVt.js} +1 -1
- package/dist/{flowDiagram-NV44I4VS-BQ5PQs4L.js → flowDiagram-NV44I4VS-6WPJVFl7.js} +17 -17
- package/dist/forth-5N06oHNp.js +4 -0
- package/dist/fortran-wZ-sNg3h.js +4 -0
- package/dist/{ganttDiagram-JELNMOA3-NTOuNWeT.js → ganttDiagram-JELNMOA3-AfDhh9CI.js} +10 -10
- package/dist/gas-3H4_FaS8.js +4 -0
- package/dist/gherkin-PEA2uy50.js +4 -0
- package/dist/{gitGraph-F6HP7TQM-DfRNsaDw.js → gitGraph-G5XIXVHT-C0o6gecv.js} +3 -3
- package/dist/{gitGraphDiagram-NY62KEGX-CYke62Ot.js → gitGraphDiagram-V2S2FVAM-BRSwuj0Q.js} +17 -17
- package/dist/{glide-data-editor-DttqGjrT.js → glide-data-editor-ByPNTNVG.js} +7 -7
- package/dist/graphlib-DZnBMcsX.js +228 -0
- package/dist/groovy-DZzbvCP1.js +4 -0
- package/dist/haskell-CExLTzho.js +4 -0
- package/dist/haxe-f3pVb8qU.js +5 -0
- package/dist/idl-BbWlJ0gk.js +4 -0
- package/dist/{info-NVLQJR56-CUaoPtis.js → info-VBDWY6EO-Bzsods6X.js} +3 -3
- package/dist/infoDiagram-HS3SLOUP-Cmxo6jKx.js +30 -0
- package/dist/{_baseFor-B69PDbIz.js → isArrayLikeObject-Btu-i6_P.js} +216 -44
- package/dist/{isEmpty-6z2uv6gM.js → isEmpty-CZvUtYFp.js} +2 -2
- package/dist/{isString-D6abkXrl.js → isString-CBr7TEb7.js} +1 -1
- package/dist/{isSymbol-hk7foJ70.js → isSymbol-BuQsMXhk.js} +1 -1
- package/dist/javascript-eMOhp6Aq.js +4 -0
- package/dist/{journeyDiagram-XKPGCS4Q-ahXD97kr.js → journeyDiagram-XKPGCS4Q-CKYr8cSR.js} +7 -7
- package/dist/julia-C6w3Rvqb.js +4 -0
- package/dist/{kanban-definition-3W4ZIXB7-CiTIpnhy.js → kanban-definition-3W4ZIXB7-DVvAZzQD.js} +12 -12
- package/dist/{katex-DaGuLbVh.js → katex-pyO_klYC.js} +1 -1
- package/dist/{label-Cc5tEavt.js → label-CV0KYhtH.js} +4 -10
- package/dist/{line-Bc27KE1D.js → line-C1k1rG3Z.js} +3 -3
- package/dist/{linear-Bnc6E9kA.js → linear-DIp6l9sg.js} +4 -4
- package/dist/livescript-ChQl9lD-.js +4 -0
- package/dist/{loader-Cob3XFOw.js → loader-eJCvvApN.js} +2 -2
- package/dist/lua-CiDvI96j.js +4 -0
- package/dist/main-Tj_-QTyF.js +4321 -0
- package/dist/main.js +2019 -5031
- package/dist/mathematica-ClVO4k7N.js +4 -0
- package/dist/mbox-BEI7DeUg.js +4 -0
- package/dist/{memoize-Ckyqzyu_.js → memoize-P1T1IGb9.js} +1 -1
- package/dist/merge-CGQkMGzr.js +51 -0
- package/dist/{mermaid-4DMBBIKO-BmJdHPwx.js → mermaid-4DMBBIKO-PVrJfEpX.js} +1 -1
- package/dist/{mermaid-B5xl_2hx.js → mermaid-COOB_abB.js} +46 -46
- package/dist/{mermaid-parser.core-BXj7Il0J.js → mermaid-parser.core-Cd-wu4tE.js} +8 -8
- package/dist/{mhchem-B_tiMbKF.js → mhchem-DckvwtV8.js} +1 -1
- package/dist/min-CMDDtXJP.js +89 -0
- package/dist/{mindmap-definition-VGOIOE7T-Mni766A_.js → mindmap-definition-VGOIOE7T-1ExmnvYy.js} +14 -14
- package/dist/mirc-DwidJ3iH.js +4 -0
- package/dist/mllike-Dspdy0xJ.js +6 -0
- package/dist/modelica-CIUejP-L.js +4 -0
- package/dist/mscgen-BWXU4Omp.js +6 -0
- package/dist/mumps-PHFFoPk5.js +4 -0
- package/dist/now-BxlRp0OQ.js +7 -0
- package/dist/nsis-B7xooKLf.js +4 -0
- package/dist/{nsis-B6EN9LWI.js → nsis-BrAITej_.js} +1 -1
- package/dist/ntriples-DnOgtCzG.js +4 -0
- package/dist/{number-overlay-editor-DKVJgXpp.js → number-overlay-editor-CQrncFlP.js} +1 -1
- package/dist/octave-Cn5kH_QT.js +4 -0
- package/dist/{once-C9dA9qgQ.js → once-BqS42WgZ.js} +1 -1
- package/dist/{ordinal-DLLbwLkP.js → ordinal-Dcvf4J1m.js} +1 -1
- package/dist/oz-DR-sROpu.js +4 -0
- package/dist/{packet-BFZMPI3H-DHtQCusE.js → packet-DYOGHKS2-Bf1CvFco.js} +3 -3
- package/dist/pascal-CPKK1zcS.js +4 -0
- package/dist/perl-D7FuFdyd.js +4 -0
- package/dist/{pie-7BOR55EZ-2sVLYbpR.js → pie-VRWISCQL-LY_wbqji.js} +3 -3
- package/dist/{pieDiagram-ADFJNKIX-PbXpgT8_.js → pieDiagram-ADFJNKIX-CJlIsdsU.js} +22 -22
- package/dist/pig-CEXnOAnI.js +4 -0
- package/dist/powershell-BKvWab7q.js +4 -0
- package/dist/{precisionRound-Duzbr5ur.js → precisionRound-BAc-kQ3q.js} +1 -1
- package/dist/properties-7jnK_vYx.js +4 -0
- package/dist/protobuf-4rslMjEN.js +4 -0
- package/dist/pug-BVwdEv4r.js +4 -0
- package/dist/{pug-xrm7jQ2R.js → pug-CH-17az-.js} +1 -1
- package/dist/puppet-iSHg_1Z2.js +4 -0
- package/dist/python-tK3wUCn0.js +4 -0
- package/dist/q-DP_Dcoox.js +4 -0
- package/dist/{quadrantDiagram-AYHSOK5B-BtXGnx8i.js → quadrantDiagram-AYHSOK5B-BU78RiaH.js} +5 -5
- package/dist/r-C32wHLYu.js +4 -0
- package/dist/{radar-NHE76QYJ-Be0pEUux.js → radar-ZZBFDIW7-Ro3iXZCk.js} +3 -3
- package/dist/range-Dh0_-r8P.js +30 -0
- package/dist/{react-vega-CCNu2JE0.js → react-vega-C6kwcd86.js} +18 -18
- package/dist/react-vega-CFUuchds.js +9 -0
- package/dist/reduce-BXFHs7IQ.js +268 -0
- package/dist/{requirementDiagram-UZGBJVZJ-DxzXQRgq.js → requirementDiagram-UZGBJVZJ-DACHtrFr.js} +14 -14
- package/dist/rpm-BbDBUfs9.js +5 -0
- package/dist/ruby-COfWUiIr.js +4 -0
- package/dist/{sankeyDiagram-TZEHDZUN-D-I7dJ0_.js → sankeyDiagram-TZEHDZUN-Bzg7_UWs.js} +5 -5
- package/dist/sas-y_Hue2-X.js +4 -0
- package/dist/scheme-7jTCqHw8.js +4 -0
- package/dist/{sequenceDiagram-WL72ISMW-VDme2ljw.js → sequenceDiagram-WL72ISMW-agybEe9J.js} +8 -8
- package/dist/shell-DAqJWXDk.js +4 -0
- package/dist/sieve-EaqnbCO3.js +4 -0
- package/dist/slides-component-B0yK5GXP.js +3057 -0
- package/dist/smalltalk-DL03YKLJ.js +4 -0
- package/dist/sparql-DTA-tQ_q.js +4 -0
- package/dist/{spec-GwhMEXwK.js → spec-Dq_reDGM.js} +4 -4
- package/dist/{src-jICM_d2B.js → src-CHUphWwL.js} +1 -1
- package/dist/{stateDiagram-FKZM4ZOC-g3GI1EcK.js → stateDiagram-FKZM4ZOC-DehQAt8g.js} +19 -19
- package/dist/stateDiagram-v2-4FDKWEC3-8VzeREl9.js +29 -0
- package/dist/{step-BqVgkWtk.js → step-BbmiiQdf.js} +1 -1
- package/dist/stex-KfRnSHzF.js +4 -0
- package/dist/style.css +1 -1
- package/dist/stylus-CfjeFry_.js +4 -0
- package/dist/swift-Dl0RRDbH.js +4 -0
- package/dist/tcl-wv9O7fLZ.js +4 -0
- package/dist/textile-DzMRCBcV.js +4 -0
- package/dist/{time-CrYsYnQU.js → time-DFFVNc1Q.js} +4 -4
- package/dist/{timeline-definition-IT6M3QCI-bhvLlX_b.js → timeline-definition-IT6M3QCI-CdCfdaCF.js} +4 -4
- package/dist/toNumber-By7s5JC_.js +28 -0
- package/dist/{toString-BwTJvlyD.js → toString-Ckpb50uw.js} +8 -8
- package/dist/toml-CyIWqgbe.js +4 -0
- package/dist/{treemap-KMMF4GRG-Ba9ifjpG.js → treemap-GDKQZRPO-DRxfDG65.js} +3 -3
- package/dist/troff-_huin_CY.js +4 -0
- package/dist/ttcn-BEiJuYYc.js +4 -0
- package/dist/ttcn-cfg-DB6Ksh67.js +4 -0
- package/dist/turtle-DzhzGEum.js +4 -0
- package/dist/{types-Dsh6yC4B.js → types-BwnzGcE4.js} +31 -32
- package/dist/uniq-cCc07Q8K.js +8 -0
- package/dist/{useAsyncData-BPpyKjTJ.js → useAsyncData-B4hMFGnF.js} +2 -2
- package/dist/{useDeepCompareMemoize-C8Ms87P-.js → useDeepCompareMemoize-DuPhOXzr.js} +3 -3
- package/dist/{useIframeCapabilities-C7z8VrZ1.js → useIframeCapabilities-CAt6D2EI.js} +1 -1
- package/dist/{useTheme-Cq-gIssy.js → useTheme-BNYQnvu-.js} +2 -2
- package/dist/vb-CngKZQHu.js +4 -0
- package/dist/vbscript-BV_8nbeM.js +4 -0
- package/dist/{vega-component-B5sxdjMq.js → vega-component-DouPy8AI.js} +12 -15
- package/dist/{vega-loader.browser-DqHiiBeQ.js → vega-loader.browser-CQ-lnUkI.js} +3 -3
- package/dist/velocity-IqE7qYKE.js +4 -0
- package/dist/verilog-xtyaWTnc.js +4 -0
- package/dist/vhdl-BaqXCtf3.js +4 -0
- package/dist/webidl-BDB8PTTO.js +4 -0
- package/dist/xquery-BIC-qj9Z.js +4 -0
- package/dist/{xychartDiagram-PRI3JC2R-CFxuifYY.js → xychartDiagram-PRI3JC2R-rEm_SIsC.js} +13 -13
- package/dist/yacas-ifv5tftd.js +4 -0
- package/dist/z80-B8zOMVNt.js +4 -0
- package/package.json +11 -11
- package/src/__mocks__/requests.ts +2 -0
- package/src/components/app-config/ai-config.tsx +1 -1
- package/src/components/app-config/user-config-form.tsx +27 -0
- package/src/components/data-table/__tests__/pagination.test.tsx +16 -24
- package/src/components/data-table/charts/lazy-chart.tsx +1 -1
- package/src/components/data-table/data-table.tsx +20 -18
- package/src/components/data-table/pagination.tsx +138 -56
- package/src/components/data-table/range-focus/__tests__/cell-selection-stats.test.tsx +365 -0
- package/src/components/data-table/range-focus/__tests__/test-utils.ts +77 -0
- package/src/components/data-table/range-focus/__tests__/utils.test.ts +205 -65
- package/src/components/data-table/range-focus/cell-selection-stats.tsx +79 -0
- package/src/components/data-table/range-focus/utils.ts +69 -7
- package/src/components/data-table/types.ts +4 -0
- package/src/components/databases/engine-variable.tsx +2 -1
- package/src/components/databases/icons/google-cloud-storage.svg +38 -0
- package/src/components/datasources/components.tsx +6 -2
- package/src/components/dependency-graph/minimap-content.tsx +3 -5
- package/src/components/dependency-graph/utils/__tests__/cell-preview.test.ts +143 -0
- package/src/components/dependency-graph/utils/cell-preview.ts +46 -0
- package/src/components/editor/Output.tsx +3 -28
- package/src/components/editor/actions/__tests__/pdf-export.test.ts +42 -0
- package/src/components/editor/actions/pdf-export.ts +26 -0
- package/src/components/editor/actions/useNotebookActions.tsx +86 -44
- package/src/components/editor/cell/cell-actions.tsx +6 -5
- package/src/components/editor/cell/cell-context-menu.tsx +11 -7
- package/src/components/editor/chrome/panels/components.tsx +88 -0
- package/src/components/editor/chrome/panels/file-explorer-panel.tsx +120 -7
- package/src/components/editor/chrome/panels/outline/floating-outline.tsx +27 -15
- package/src/components/editor/chrome/panels/session-panel.tsx +24 -35
- package/src/components/editor/controls/notebook-menu-dropdown.tsx +32 -29
- package/src/components/editor/file-tree/__tests__/requesting-tree.test.ts +17 -1
- package/src/components/editor/file-tree/file-explorer.tsx +38 -6
- package/src/components/editor/file-tree/file-header.tsx +61 -0
- package/src/components/editor/file-tree/file-viewer.tsx +88 -167
- package/src/components/editor/file-tree/renderers.tsx +142 -21
- package/src/components/editor/file-tree/requesting-tree.tsx +6 -2
- package/src/components/editor/output/console/ConsoleOutput.tsx +34 -2
- package/src/components/editor/output/console/__tests__/ConsoleOutput.test.tsx +13 -0
- package/src/components/icons/marimo-icons.tsx +173 -0
- package/src/components/markdown/markdown-renderer.tsx +3 -20
- package/src/components/pages/run-page.tsx +2 -2
- package/src/components/storage/components.tsx +86 -0
- package/src/components/storage/storage-file-viewer.tsx +225 -0
- package/src/components/storage/storage-inspector.tsx +610 -0
- package/src/core/ai/tools/__tests__/edit-notebook-tool.test.ts +79 -0
- package/src/core/ai/tools/edit-notebook-tool.ts +5 -0
- package/src/core/cells/__tests__/cells.test.ts +30 -0
- package/src/core/cells/cells.ts +6 -1
- package/src/core/cells/outline.ts +7 -1
- package/src/core/cells/outputs.ts +20 -8
- package/src/core/codemirror/language/languages/sql/sql.ts +76 -62
- package/src/core/codemirror/language/panel/sql.tsx +3 -3
- package/src/core/codemirror/lsp/__tests__/normalize-markdown-math.test.ts +123 -0
- package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +196 -0
- package/src/core/codemirror/lsp/normalize-markdown-math.ts +381 -0
- package/src/core/codemirror/lsp/notebook-lsp.ts +59 -3
- package/src/core/config/feature-flag.tsx +2 -0
- package/src/core/dom/__tests__/outline.test.ts +48 -0
- package/src/core/dom/outline.ts +13 -2
- package/src/core/islands/bridge.ts +2 -0
- package/src/core/islands/main.ts +2 -0
- package/src/core/network/__tests__/requests-network.test.ts +21 -0
- package/src/core/network/requests-lazy.ts +2 -0
- package/src/core/network/requests-network.ts +16 -0
- package/src/core/network/requests-static.ts +2 -0
- package/src/core/network/requests-toasting.tsx +2 -0
- package/src/core/network/types.ts +6 -0
- package/src/core/storage/__tests__/state.test.ts +345 -0
- package/src/core/storage/__tests__/types.test.ts +83 -0
- package/src/core/storage/__tests__/useStorageEntries.test.tsx +187 -0
- package/src/core/storage/request-registry.ts +36 -0
- package/src/core/storage/state.ts +132 -0
- package/src/core/storage/types.ts +57 -0
- package/src/core/wasm/bridge.ts +2 -0
- package/src/core/websocket/useMarimoKernelConnection.tsx +19 -1
- package/src/hooks/__tests__/useNonce.test.tsx +127 -0
- package/src/hooks/__tests__/useOverflowDetection.test.tsx +127 -0
- package/src/hooks/useNonce.ts +6 -5
- package/src/hooks/useOverflowDetection.ts +36 -0
- package/src/plugins/impl/MatrixPlugin.tsx +5 -2
- package/src/plugins/impl/__tests__/MatrixPlugin.test.tsx +1 -1
- package/src/plugins/impl/code/any-language-editor.tsx +14 -3
- package/src/utils/__tests__/download.test.tsx +39 -0
- package/src/utils/__tests__/filenames.test.ts +54 -1
- package/src/utils/download.ts +21 -1
- package/src/utils/filenames.ts +42 -0
- package/dist/apl-C1bki_dE.js +0 -4
- package/dist/architecture-U656AL7Q-Jd2CvPgJ.js +0 -6
- package/dist/asciiarmor-BdlkCCRr.js +0 -4
- package/dist/asn1-CvE30hox.js +0 -4
- package/dist/brainfuck-BalwWy1a.js +0 -4
- package/dist/classDiagram-2ON5EDUG-CUJlS_eo.js +0 -30
- package/dist/classDiagram-v2-WZHVMYZB-BhSPpbkE.js +0 -30
- package/dist/clojure-CUC2I1hM.js +0 -4
- package/dist/cmake-8PcMxXnB.js +0 -4
- package/dist/cobol-DkkkDz5v.js +0 -4
- package/dist/coffeescript-CCupxOZf.js +0 -4
- package/dist/commonlisp-DhUfGX6b.js +0 -4
- package/dist/crystal-DSaw6rFQ.js +0 -4
- package/dist/css-D4QDewkG.js +0 -4
- package/dist/cypher-CrYVqw_F.js +0 -4
- package/dist/d-Cr3H3pPx.js +0 -4
- package/dist/diff-ODiZJGls.js +0 -4
- package/dist/dist-BA-HK7pI.js +0 -5
- package/dist/dist-BD5GU948.js +0 -5
- package/dist/dist-BIYmAsND.js +0 -5
- package/dist/dist-BcKTJXJi.js +0 -5
- package/dist/dist-BgnrtcWg.js +0 -8
- package/dist/dist-C1njTlBq.js +0 -5
- package/dist/dist-CSKHwJYH.js +0 -5
- package/dist/dist-CSKKyiIq.js +0 -5
- package/dist/dist-CrQ_pOuK.js +0 -6
- package/dist/dist-Cskx1daf.js +0 -5
- package/dist/dist-D4i0Ef34.js +0 -8
- package/dist/dist-DOcn61TX.js +0 -8
- package/dist/dist-DwMejAPB.js +0 -6
- package/dist/dist-DzSe1wby.js +0 -8
- package/dist/dtd-C-t2Rk7F.js +0 -4
- package/dist/dylan-B4ctBLGp.js +0 -4
- package/dist/ecl-DqWfymni.js +0 -4
- package/dist/eiffel-DjBKKAr7.js +0 -4
- package/dist/elm--fxeC0FV.js +0 -4
- package/dist/erlang-CaKXCX6H.js +0 -4
- package/dist/factor-DlLO5EFS.js +0 -4
- package/dist/flatten-CWZjF1fc.js +0 -8
- package/dist/forth-rOO6LVj_.js +0 -4
- package/dist/fortran-CUg15VGR.js +0 -4
- package/dist/gas-BMRJspiW.js +0 -4
- package/dist/gherkin-DRxzijZU.js +0 -4
- package/dist/graphlib-CwMnCnQ9.js +0 -362
- package/dist/groovy-BmrQ8pUP.js +0 -4
- package/dist/haskell-BuaYfKOz.js +0 -4
- package/dist/haxe-DcH9eA0a.js +0 -5
- package/dist/idl-DGlcm4Ls.js +0 -4
- package/dist/infoDiagram-WHAUD3N6-B42WjAPh.js +0 -30
- package/dist/javascript-CeTk7rzr.js +0 -4
- package/dist/julia-BoP_q1gm.js +0 -4
- package/dist/livescript-B7IMN-ba.js +0 -4
- package/dist/lua-q1InavKb.js +0 -4
- package/dist/main-DmxVpB19.js +0 -1089
- package/dist/mathematica-DvR8-_EI.js +0 -4
- package/dist/mbox-7h5MNBS_.js +0 -4
- package/dist/merge-Db4Uulx4.js +0 -222
- package/dist/min-ypdVXicC.js +0 -38
- package/dist/mirc-D-XM8A5c.js +0 -4
- package/dist/mllike-BQGkkbmf.js +0 -6
- package/dist/modelica-D_yRj_WU.js +0 -4
- package/dist/mscgen-B-rltAjp.js +0 -6
- package/dist/mumps-2kh8TU2b.js +0 -4
- package/dist/now-Dwu5ou19.js +0 -31
- package/dist/nsis-CtusEqwb.js +0 -4
- package/dist/ntriples-BdAXw6zV.js +0 -4
- package/dist/octave-CsNFmVp5.js +0 -4
- package/dist/oz-odIXCrKd.js +0 -4
- package/dist/pascal-B9Mfk3Fo.js +0 -4
- package/dist/perl-C48inLcz.js +0 -4
- package/dist/pig-uwRtAssU.js +0 -4
- package/dist/powershell-CXqlca-i.js +0 -4
- package/dist/properties-D6Zu1rpK.js +0 -4
- package/dist/protobuf-BlNNWZaR.js +0 -4
- package/dist/pug-DytcK7bv.js +0 -4
- package/dist/puppet-lJ8Ok3iY.js +0 -4
- package/dist/python-cMaF7kUp.js +0 -4
- package/dist/q-Dgt2HYQh.js +0 -4
- package/dist/r-Bm4S4awf.js +0 -4
- package/dist/range-D9jxVFd_.js +0 -67
- package/dist/react-vega-1ub36dPZ.js +0 -9
- package/dist/reduce-C6NEPj6s.js +0 -133
- package/dist/rpm-_8LbzMVc.js +0 -5
- package/dist/ruby-Cr8IJ5VZ.js +0 -4
- package/dist/sas-CFcSfo2_.js +0 -4
- package/dist/scheme-N4XRoKgc.js +0 -4
- package/dist/shell-B4L7f_ds.js +0 -4
- package/dist/sieve-UI6J3Gm0.js +0 -4
- package/dist/slides-component-ql7-5GDI.js +0 -3048
- package/dist/smalltalk-BuaPZAZU.js +0 -4
- package/dist/sparql-1rKrq463.js +0 -4
- package/dist/stateDiagram-v2-4FDKWEC3-7i6jBXe6.js +0 -29
- package/dist/stex-D2rme5UG.js +0 -4
- package/dist/stylus-DvSovJEP.js +0 -4
- package/dist/swift-D-_E7Yyb.js +0 -4
- package/dist/tcl-Di5sAVHN.js +0 -4
- package/dist/textile-Benwt66z.js +0 -4
- package/dist/toml-CeOvPOkY.js +0 -4
- package/dist/troff-DJN9hfgu.js +0 -4
- package/dist/ttcn-DQW2Psjf.js +0 -4
- package/dist/ttcn-cfg-zFG_MNpg.js +0 -4
- package/dist/turtle-DHRyNlSc.js +0 -4
- package/dist/vb-CXWH9DD-.js +0 -4
- package/dist/vbscript-qr8qVck5.js +0 -4
- package/dist/velocity-C_9pUJRx.js +0 -4
- package/dist/verilog-DxBstgBa.js +0 -4
- package/dist/vhdl-odUxAbE6.js +0 -4
- package/dist/webidl-Dfn5Rku4.js +0 -4
- package/dist/xquery-CrJs6SXr.js +0 -4
- package/dist/yacas-B-uDDLZe.js +0 -4
- package/dist/z80-51gxgAXE.js +0 -4
- /package/dist/{ImageComparisonComponent-CRbA-1eg.js → ImageComparisonComponent-BYQfAfSR.js} +0 -0
- /package/dist/{Plot-C9vQQj4X.js → Plot-DfUav0o0.js} +0 -0
- /package/dist/{_arrayReduce-REKcIEj3.js → _arrayReduce-BfFy684W.js} +0 -0
- /package/dist/{_hasUnicode-DrSAc5A5.js → _hasUnicode-C32WqUu7.js} +0 -0
- /package/dist/{apl-Oc3bL26_.js → apl-DRxKiEot.js} +0 -0
- /package/dist/{array-CEIRxyh3.js → array-D-nrDupM.js} +0 -0
- /package/dist/{asciiarmor-DTbPh2VI.js → asciiarmor-C8HoXFIm.js} +0 -0
- /package/dist/{asn1-CGhwu1Ri.js → asn1-9Bo0DYT-.js} +0 -0
- /package/dist/{asterisk-Crp-Pien.js → asterisk-BsiuGzWq.js} +0 -0
- /package/dist/{brainfuck-CA0L8lRq.js → brainfuck-Db8njC-p.js} +0 -0
- /package/dist/{click-outside-container-C_k38vlR.js → click-outside-container-CKfwEZqH.js} +0 -0
- /package/dist/{clike-CEtUBPHD.js → clike-CFhUNtI5.js} +0 -0
- /package/dist/{clojure-BszjvdGo.js → clojure-CX7oovsp.js} +0 -0
- /package/dist/{cmake-B2Gvps8b.js → cmake-C29AR2kk.js} +0 -0
- /package/dist/{cobol-DuMch8nn.js → cobol-CNkuRW9i.js} +0 -0
- /package/dist/{coffeescript-L9aKXVsJ.js → coffeescript-BJAbfGam.js} +0 -0
- /package/dist/{colors-DR_aHfmQ.js → colors-6nB_pSln.js} +0 -0
- /package/dist/{common-keywords-NhoiR-2S.js → common-keywords-BAkLFdud.js} +0 -0
- /package/dist/{commonlisp-CrtdssxB.js → commonlisp-BTNhj2l9.js} +0 -0
- /package/dist/{crystal-vvNY0LpY.js → crystal-CZc0nIm9.js} +0 -0
- /package/dist/{css-B1GdzqT1.js → css-L2-0OTXc.js} +0 -0
- /package/dist/{cypher-BtZvV7bW.js → cypher-Dnc6MXl0.js} +0 -0
- /package/dist/{cytoscape.esm-CgJFiP_E.js → cytoscape.esm-BXzSsA6N.js} +0 -0
- /package/dist/{d-B0UN3V-Z.js → d-C6X9iIga.js} +0 -0
- /package/dist/{defaultLocale-DjFHq3Xk.js → defaultLocale-Bklbu-Tp.js} +0 -0
- /package/dist/{defaultLocale-B_A76Zpk.js → defaultLocale-CfQ4kBaV.js} +0 -0
- /package/dist/{diff-DOpgjj1W.js → diff-ZzKinYqY.js} +0 -0
- /package/dist/{dist-BYznkC5E.js → dist-Bymy0kEH.js} +0 -0
- /package/dist/{dtd-Ctnjxrle.js → dtd-CytEpkAo.js} +0 -0
- /package/dist/{duckdb-keywords-BnNtuiVz.js → duckdb-keywords-C1WxmSfG.js} +0 -0
- /package/dist/{dylan-DFXkoaZy.js → dylan-CZByFBEQ.js} +0 -0
- /package/dist/{ebnf-CFKHGc8c.js → ebnf-BF2FOt-m.js} +0 -0
- /package/dist/{ecl-C1NExZip.js → ecl-Cp7L1F5B.js} +0 -0
- /package/dist/{eiffel-uXVGgleg.js → eiffel-C66yjnFL.js} +0 -0
- /package/dist/{elm-CBOFnnib.js → elm-DtHo-73e.js} +0 -0
- /package/dist/{emotion-is-prop-valid.esm--WpIBtj8.js → emotion-is-prop-valid.esm-DtW2o230.js} +0 -0
- /package/dist/{erlang-DMnrT8XK.js → erlang-C_sj44mF.js} +0 -0
- /package/dist/{error-banner-vCG-EbUQ.js → error-banner-D0tXnwl4.js} +0 -0
- /package/dist/{esm-0_ieXYNc.js → esm-BWftfC-A.js} +0 -0
- /package/dist/{fcl-DPZwieM9.js → fcl-BhLcvRo_.js} +0 -0
- /package/dist/{forth-DDpxS4nw.js → forth-CIDHh56T.js} +0 -0
- /package/dist/{fortran-B6uYqQMz.js → fortran-BQrDVXRU.js} +0 -0
- /package/dist/{gas-BKnWzuFz.js → gas-D4HQPB0Q.js} +0 -0
- /package/dist/{gherkin-pBt0wT4X.js → gherkin-UB2gJHdT.js} +0 -0
- /package/dist/{groovy-DKsn4ppB.js → groovy-DVz6jkOx.js} +0 -0
- /package/dist/{haskell-BJVBJQcy.js → haskell-CpUdAPCz.js} +0 -0
- /package/dist/{haxe-rLN5UZU5.js → haxe-DCV5_cqD.js} +0 -0
- /package/dist/{http-AQJFxSug.js → http-C_TDb8VX.js} +0 -0
- /package/dist/{idl-B4mwMAo-.js → idl-D7WCIgHw.js} +0 -0
- /package/dist/{init-TaqZJsBY.js → init-Ci8VD8ZH.js} +0 -0
- /package/dist/{invariant-D-K49MfV.js → invariant-D9QLJ4SZ.js} +0 -0
- /package/dist/{javascript-Hf2NLNC0.js → javascript-B2Rn0Lmd.js} +0 -0
- /package/dist/{julia-GGpx21YN.js → julia-ApprtEaw.js} +0 -0
- /package/dist/{katex-Ba7xZPrx.js → katex-Bk_FvVSR.js} +0 -0
- /package/dist/{livescript-CSvXMspZ.js → livescript-BMLIlM7C.js} +0 -0
- /package/dist/{lua-CVMR5LMW.js → lua-DdDaW3tC.js} +0 -0
- /package/dist/{math-CTnb-N1W.js → math-HUZifhTs.js} +0 -0
- /package/dist/{mathematica-JENNt-p4.js → mathematica-PnNN7c2Z.js} +0 -0
- /package/dist/{mbox-mzifoc8E.js → mbox-B84OtHBK.js} +0 -0
- /package/dist/{mirc-BXoiItvN.js → mirc-BVWXJxIq.js} +0 -0
- /package/dist/{mllike-H-KR9OuH.js → mllike-BawXWupH.js} +0 -0
- /package/dist/{modelica-B6Hm3mMl.js → modelica-C8-X4Hf_.js} +0 -0
- /package/dist/{mscgen-D8TF_Hei.js → mscgen-BOM6dDj8.js} +0 -0
- /package/dist/{mumps-CD-kNPt4.js → mumps-DQOY8n05.js} +0 -0
- /package/dist/{nginx-hpek_Tnq.js → nginx-DkMgA__9.js} +0 -0
- /package/dist/{node-sql-parser-ChQUJk8A.js → node-sql-parser-D53LM_7b.js} +0 -0
- /package/dist/{ntriples-DgnpxU40.js → ntriples-DU8VrXdW.js} +0 -0
- /package/dist/{octave-CkobqyVm.js → octave-BzTIBsQ8.js} +0 -0
- /package/dist/{oz-ChDLd9tS.js → oz-DKFcZsoi.js} +0 -0
- /package/dist/{pascal-CvlkwK7E.js → pascal-DHBZ15pT.js} +0 -0
- /package/dist/{path-7gr7eZmp.js → path-BVI7RNUv.js} +0 -0
- /package/dist/{perl-BNEFTNbM.js → perl-75NMI3w0.js} +0 -0
- /package/dist/{pig-Cd1DMS7P.js → pig-B-HY1fo_.js} +0 -0
- /package/dist/{powershell-CPxA0zpc.js → powershell-DEH22U53.js} +0 -0
- /package/dist/{properties-BaFBm-Xa.js → properties-B1MzBoJC.js} +0 -0
- /package/dist/{protobuf-BQV_-X0H.js → protobuf-Dr14KV0p.js} +0 -0
- /package/dist/{puppet-LXLST0mx.js → puppet-C4z38l7v.js} +0 -0
- /package/dist/{purify.es-D4vaFt5N.js → purify.es-CyOIw8ru.js} +0 -0
- /package/dist/{python-DLjLzX4k.js → python-D2L7Nknt.js} +0 -0
- /package/dist/{q-DswTX1Y9.js → q-PxipHfgS.js} +0 -0
- /package/dist/{r-CO7NpMwE.js → r-CEMMu_Tf.js} +0 -0
- /package/dist/{range-DwpxnYuB.js → range-BToS7LsA.js} +0 -0
- /package/dist/{rpm-BlmEDT6r.js → rpm-D3xyahkR.js} +0 -0
- /package/dist/{ruby-BTPKgeZZ.js → ruby-DwEkwdiu.js} +0 -0
- /package/dist/{sas-DTDTiNO8.js → sas-L1W0BRft.js} +0 -0
- /package/dist/{scheme-UzAAg4GJ.js → scheme-CTybTrX0.js} +0 -0
- /package/dist/{shell-DQ0hQCsB.js → shell-BSx3LZnu.js} +0 -0
- /package/dist/{sieve-BVyYIx9u.js → sieve-BjUfbv-6.js} +0 -0
- /package/dist/{simple-mode-Dryu-fC9.js → simple-mode-IPZGFbI6.js} +0 -0
- /package/dist/{smalltalk-DAdMAHTu.js → smalltalk-BlzuYrMv.js} +0 -0
- /package/dist/{solr-BSTJW269.js → solr-Cj_9RM4d.js} +0 -0
- /package/dist/{sparql-Bi7quYgw.js → sparql-BXKjQ0cK.js} +0 -0
- /package/dist/{spreadsheet-CiBky1_y.js → spreadsheet-CifI10GO.js} +0 -0
- /package/dist/{sql-BXZovj-z.js → sql-B0bFyY1c.js} +0 -0
- /package/dist/{stex-DIvyJfNO.js → stex-BIsgBmK4.js} +0 -0
- /package/dist/{stylus-jhpzcQ6Y.js → stylus-CqrLLVnG.js} +0 -0
- /package/dist/{swift-BrO8qThZ.js → swift-DIqvj3_G.js} +0 -0
- /package/dist/{tcl-s5QI5gv3.js → tcl-B8bOIGVK.js} +0 -0
- /package/dist/{textile-ClhvJrxM.js → textile-DZsjavD_.js} +0 -0
- /package/dist/{tiddlywiki-DLTDKQCh.js → tiddlywiki-BbGdvEjx.js} +0 -0
- /package/dist/{tiki-tw_kBvbp.js → tiki-BYesmRDo.js} +0 -0
- /package/dist/{timer-DV8t68ti.js → timer-CPsmIOdm.js} +0 -0
- /package/dist/{toml-TFa3EJQE.js → toml-Uc7m08nl.js} +0 -0
- /package/dist/{treemap-CQJ0bIDy.js → treemap-DMn4tIJ7.js} +0 -0
- /package/dist/{troff-SqLg0heF.js → troff-GEl5wcXR.js} +0 -0
- /package/dist/{ttcn-cfg-Dopc-iwE.js → ttcn-cfg-dZQ_fWTH.js} +0 -0
- /package/dist/{ttcn-Cfrap7HJ.js → ttcn-pr4FDOLT.js} +0 -0
- /package/dist/{turtle-Dt52DvVH.js → turtle-TPRDOknA.js} +0 -0
- /package/dist/{vb-D1pAvfDe.js → vb-BJUAeTYr.js} +0 -0
- /package/dist/{vbscript-DZ7RBxn5.js → vbscript-CcJ6Z3ic.js} +0 -0
- /package/dist/{velocity-Csau7eZy.js → velocity-pq4ZMzU3.js} +0 -0
- /package/dist/{verilog-gXlZACs5.js → verilog-timMNjHt.js} +0 -0
- /package/dist/{vhdl-NaUWbI1B.js → vhdl-DYFbVKNm.js} +0 -0
- /package/dist/{webidl-BJmPjW01.js → webidl-pue9oqnb.js} +0 -0
- /package/dist/{xquery-CJIPsC0g.js → xquery-DeItGynK.js} +0 -0
- /package/dist/{yacas-8f2Vjiiz.js → yacas-By2Qrjba.js} +0 -0
- /package/dist/{z80-s5Xk2hCP.js → z80-C7iLsyPC.js} +0 -0
- /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
|
|
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
|
-
|
|
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
|
`;
|
package/src/core/dom/outline.ts
CHANGED
|
@@ -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 = [
|
|
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
|
-
|
|
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.
|
package/src/core/islands/main.ts
CHANGED
|
@@ -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
|
|
@@ -92,5 +92,26 @@ describe("createNetworkRequests", () => {
|
|
|
92
92
|
|
|
93
93
|
process.env.NODE_ENV = originalEnv;
|
|
94
94
|
});
|
|
95
|
+
|
|
96
|
+
it("exportAsPDF should pass preset through to the API", async () => {
|
|
97
|
+
const requests = createNetworkRequests();
|
|
98
|
+
await requests.exportAsPDF({
|
|
99
|
+
webpdf: false,
|
|
100
|
+
preset: "slides",
|
|
101
|
+
includeInputs: false,
|
|
102
|
+
} as any);
|
|
103
|
+
|
|
104
|
+
expect(mockClient.POST).toHaveBeenCalledWith(
|
|
105
|
+
"/api/export/pdf",
|
|
106
|
+
expect.objectContaining({
|
|
107
|
+
body: expect.objectContaining({
|
|
108
|
+
webpdf: false,
|
|
109
|
+
preset: "slides",
|
|
110
|
+
includeInputs: false,
|
|
111
|
+
}),
|
|
112
|
+
parseAs: "blob",
|
|
113
|
+
}),
|
|
114
|
+
);
|
|
115
|
+
});
|
|
95
116
|
});
|
|
96
117
|
});
|
|
@@ -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
|
}
|