@marimo-team/islands 0.23.17-dev9 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ConnectedDataExplorerComponent-f9vLjQiF.js → ConnectedDataExplorerComponent-BUC1MrsF.js} +24 -24
- package/dist/{ErrorBoundary-DhLqwSWA.js → ErrorBoundary-BniTEhHn.js} +7 -7
- package/dist/{ImageComparisonComponent-C3y7L3eJ.js → ImageComparisonComponent-B7b8DcJI.js} +42 -31
- package/dist/{Plot-YQOuVIei.js → Plot-eTseCFf_.js} +4 -4
- package/dist/_initCloneObject-DNUst5Cg.js +91 -0
- package/dist/abnfDiagram-N423BO3Z-DA4j92-C.js +112 -0
- package/dist/{any-language-editor-DifE-fl7.js → any-language-editor-LHl8ZmVN.js} +26 -26
- package/dist/apl-Cwo7GIH7.js +4 -0
- package/dist/{arc-CTIpFoOn.js → arc-9nABupDE.js} +2 -2
- package/dist/architecture-TIHT7OUA-DxLlkuAK.js +5 -0
- package/dist/{architectureDiagram-VXUJARFQ-DXwkyAaM.js → architectureDiagram-T3A2C74G-BBlBK1Oh.js} +327 -214
- package/dist/{arrays-sEtDRoG4.js → arrays-C56grfjL.js} +1 -1
- package/dist/asciiarmor-jrfEZ3j_.js +4 -0
- package/dist/asn1-BNEiJ4nQ.js +4 -0
- package/dist/assets/__vite-browser-external-DUz7vvG0.js +1 -0
- package/dist/assets/{worker-CDEKsBgX.js → worker-Cl1KJG2_.js} +2 -2
- package/dist/blockDiagram-VBNYF7ZC-Datz1WNn.js +3284 -0
- package/dist/brainfuck-BCunvTbd.js +4 -0
- package/dist/{button-BSm8IXRU.js → button-Dr2uAwhT.js} +9 -7
- package/dist/{c4Diagram-YG6GDRKO-B6dZC_oU.js → c4Diagram-5PPSVZJV-DTIsibpE.js} +165 -162
- package/dist/{capabilities-C6OQ5YBO.js → capabilities-BilXeZ7p.js} +2 -2
- package/dist/{channel-BN070S0F.js → channel-CuV_jmG4.js} +1 -1
- package/dist/chat-ui-o-tATfmW.js +8619 -0
- package/dist/{check-DP7U0H0G.js → check-58HHfHKy.js} +1 -1
- package/dist/chunk-2GRJ4B5K-DRayWnnu.js +68 -0
- package/dist/{chunk-QZHKN3VN-Dym5BS7y.js → chunk-2Q5K7J3B-BSLyFOHa.js} +1 -1
- package/dist/chunk-3NCLNEKW-BPlp8K7N.js +11 -0
- package/dist/chunk-4I5QYGJK-CYJC3pkC.js +260 -0
- package/dist/chunk-5FCAYU7R-C3cMIeyz.js +24 -0
- package/dist/{chunk-5FQGJX7Z-B9WoXK1R.js → chunk-5FQGJX7Z-BRZ_XYUw.js} +6 -6
- package/dist/chunk-5HE753X5-D2jFCVXb.js +34 -0
- package/dist/chunk-5JV3BV7I-B7tzprBU.js +50 -0
- package/dist/{chunk-DI55MBZ5-D4Y8yV8B.js → chunk-5RXB4S5H-DcCPfb0q.js} +373 -327
- package/dist/chunk-5TONJI2A-LRqbgPte.js +59 -0
- package/dist/{chunk-FMBD7UC4-quJmebXa.js → chunk-5VM5RSS4-ChXEBudA.js} +1 -1
- package/dist/chunk-6Q2QTUOP-zcnb3OaV.js +503 -0
- package/dist/{chunk-HN2XXSSU-Bv0QkeMr.js → chunk-7BUUIJ7U-CkIbJNZo.js} +32 -25
- package/dist/chunk-7Z6QIM7H-1j-x7ddW.js +606 -0
- package/dist/{chunk-FRFDVMJY-BHBqN-vD.js → chunk-BIQX33UG-B-BYk6sM.js} +3 -3
- package/dist/chunk-Bfp04NdC.js +25 -0
- package/dist/chunk-CQNSW5MT-DBXDKSOU.js +34 -0
- package/dist/{chunk-4F5CHEZ2-VlodlEGo.js → chunk-CYSBUYHQ-Cv-vKQV-.js} +1 -1
- package/dist/{chunk-SJTYNZTY-DnXoKWpW.js → chunk-EMLP6XTP-DCtMkXLF.js} +1 -1
- package/dist/{chunk-B4BG7PRW-B_z2FEHm.js → chunk-GF5L2VYU-esTxzELH.js} +878 -636
- package/dist/chunk-I66GZJ75-9xAsFrdW.js +3744 -0
- package/dist/chunk-J7OUQ5F2-CbNBTlFM.js +81 -0
- package/dist/chunk-JG7HCLWE-CZIm6axg.js +59 -0
- package/dist/{flowDiagram-NV44I4VS-BRhSg-ro.js → chunk-JQJVKLGR-ZALkKVji.js} +1019 -1001
- package/dist/{chunk-4BX2VUAB-iU5lQTDI.js → chunk-JWPE2WC7-C_Daz-Oc.js} +1 -1
- package/dist/{chunk-QN33PNHL-DPBNNzpR.js → chunk-KBJHAD2P-B7m9DztL.js} +3 -2
- package/dist/chunk-KEIR6QF5-aP6TmWQ-.js +21095 -0
- package/dist/{chunk-UMXZTB3W-D1uHz8MN.js → chunk-MOZMSUNE-BQi-ggQx.js} +7 -4
- package/dist/{chunk-S3R3BYOJ-BdgLc8AM.js → chunk-NSK5VX7P-BmmoJBbx.js} +320 -29
- package/dist/chunk-OSBZ3O6U-BcrmpSY_.js +22 -0
- package/dist/{chunk-TQ3KTPDO-CsDx6v37.js → chunk-QBLGF6JB-BACuPUWb.js} +3 -3
- package/dist/chunk-QR6OTTB3-C4L1dLRd.js +3762 -0
- package/dist/{chunk-B2363JML-zL3VngtH.js → chunk-R7FJI6CG-BYAXJpIb.js} +3 -3
- package/dist/chunk-RYQCIY6F-poA0Ugpr.js +243 -0
- package/dist/chunk-U6XO7XAA-I8tCjTeT.js +60 -0
- package/dist/chunk-UBXNYLIW-C8LueN5Q.js +34 -0
- package/dist/{chunk-ATLVNIR6-qFiszptQ.js → chunk-W5SLKNZC-DK-_KuKT.js} +2 -2
- package/dist/{chunk-JA3XYJ7Z-CY4CRbV5.js → chunk-WRU74C26-DLgw-V0j.js} +262 -451
- package/dist/chunk-XXDRQBXY-Dzcp3rUR.js +9 -0
- package/dist/chunk-Y2CYZVJY-DX3DSigL.js +13 -0
- package/dist/{chunk-PL6DKKU2-CAHKc95s.js → chunk-YOTPTUD7-C8qfgaz5.js} +5 -5
- package/dist/{chunk-MI3HLSF2-HGWI-8Pg.js → chunk-ZIRB5QZD-_JX1DzEJ.js} +12 -8
- package/dist/classDiagram-JCYQIIEL-D8A6ZyXv.js +32 -0
- package/dist/classDiagram-v2-OCEON4UE-DIdYl-t3.js +32 -0
- package/dist/{click-outside-container-BSIeYt4y.js → click-outside-container-BZNsAj09.js} +2 -2
- package/dist/{clike-7lgyEYRk.js → clike-CWndBX_M.js} +1 -1
- package/dist/clojure-2X0Rfij9.js +4 -0
- package/dist/cmake-DEwzCy9U.js +4 -0
- package/dist/cobol-Ck4eCoAB.js +4 -0
- package/dist/{code-block-37QAKDTI-MSxEjskJ.js → code-block-37QAKDTI-B4pWe5MI.js} +4 -4
- package/dist/coffeescript-bB1IDwhg.js +4 -0
- package/dist/{common-C3f0slQQ.js → common-DV4qU2ew.js} +797 -804
- package/dist/commonlisp-BDYrVBNC.js +4 -0
- package/dist/{compiler-runtime-CEbnTgxf.js → compiler-runtime-DsR6imPN.js} +2 -2
- package/dist/{copy-DNq8q3zw.js → copy-C7ZKMKox.js} +5 -5
- package/dist/{cose-bilkent-S5V4N54A-BYj0aL7z.js → cose-bilkent-JH36ORCC-D6iQzSi6.js} +6 -5
- package/dist/crystal-BSoiVUiH.js +4 -0
- package/dist/css-w1h9i21f.js +4 -0
- package/dist/cynefin-VYW2F7L2-DnZOHyNF.js +5 -0
- package/dist/cynefinDiagram-MW4NZA55-B1GNPS2u.js +367 -0
- package/dist/cypher-B4xzuKGP.js +4 -0
- package/dist/{cytoscape.esm-Dr8XzXWK.js → cytoscape.esm-BPa26Dup.js} +393 -334
- package/dist/d-D50Bz34p.js +4 -0
- package/dist/{dagre-By_QsQgc.js → dagre-ThTNj8pe.js} +60 -45
- package/dist/dagre-VZM6K2ZE-DEs5dfXA.js +343 -0
- package/dist/{data-grid-overlay-editor-BWRG2b_o.js → data-grid-overlay-editor-Ci7TXVf5.js} +5 -5
- package/dist/{debounce-BOD3DbfP.js → debounce-D784bpms.js} +2 -2
- package/dist/{defaultLocale-BpsHxBd7.js → defaultLocale-CMezyvMc.js} +26 -26
- package/dist/diagram-7IWD3JNH-Bdk1_wJO.js +321 -0
- package/dist/diagram-B4RE2ZJO-Be9eYLJ0.js +464 -0
- package/dist/{diagram-S2PKOQOG-CGh4OMEV.js → diagram-LBJQPF4R-BNSnzxFw.js} +26 -18
- package/dist/{diagram-PSM6KHXK-D4ftnaua.js → diagram-Q27KOJAE-NPRzyGtd.js} +68 -63
- package/dist/diagram-UB23O5K3-Dogz4itg.js +236 -0
- package/dist/diff-BMdzfXq-.js +4 -0
- package/dist/{dist-BTdrwBWP.js → dist-72nb8Uag.js} +3 -3
- package/dist/{dist-CV79CsQ0.js → dist-9PC5KxMl.js} +2 -2
- package/dist/{dist-BOMbzyb3.js → dist-Awj73yUw.js} +3 -3
- package/dist/{dist-w_gWE5Wf.js → dist-B0Ctcrt9.js} +1 -1
- package/dist/{dist-BO5HRiTf.js → dist-B1Donbpk.js} +2 -2
- package/dist/dist-BC6wzWNb.js +5 -0
- package/dist/{dist-De-GlSAs.js → dist-BJ2IUa0l.js} +15 -9
- package/dist/dist-BMd_RcOy.js +5 -0
- package/dist/dist-BZEWjN6r.js +5 -0
- package/dist/{dist-BP39XM8u.js → dist-B_K4AAkc.js} +1 -1
- package/dist/dist-BeuGjR3n.js +6 -0
- package/dist/dist-BfDQCUe6.js +5 -0
- package/dist/dist-BhNblTOV.js +8 -0
- package/dist/{dist-BPF0gTRZ.js → dist-C0ifRfXi.js} +1 -1
- package/dist/{dist-pqIwD8VD.js → dist-C3mEki35.js} +2 -2
- package/dist/{dist-LpLXa9Lb.js → dist-CNfV2vDI.js} +2 -2
- package/dist/{dist-DviUBLUp.js → dist-COcQ5Vyc.js} +4 -4
- package/dist/dist-CRCm4Fuo.js +5 -0
- package/dist/{dist-4lVIWUT3.js → dist-CSZpLb9d.js} +1 -1
- package/dist/{dist-BIEt-mlF.js → dist-CWswQBvu.js} +1 -1
- package/dist/{dist-D3bdsa1d.js → dist-CXYro_Nw.js} +4 -4
- package/dist/{dist-CRmSjkLP.js → dist-Ckfsc8C3.js} +2 -2
- package/dist/{dist-CSlJrrAw.js → dist-Cyq6Pxtv.js} +1 -1
- package/dist/{dist-JGehap7K.js → dist-D-BWPyoX.js} +5 -5
- package/dist/{dist-BCX980mU.js → dist-D-YB6j-O.js} +2 -2
- package/dist/{dist-DgjbnqTg.js → dist-D1vYHETp.js} +2 -2
- package/dist/{dist-BpeiYpG2.js → dist-D9-ePb6D.js} +2 -2
- package/dist/dist-DBPEbGkd.js +8 -0
- package/dist/{dist-C2_4pjuS.js → dist-DC409ROm.js} +1 -1
- package/dist/{dist-BdqCKQ1O.js → dist-DJRUd9aM.js} +2 -2
- package/dist/{dist-DaXJPX8F.js → dist-DLvxZEAK.js} +2 -2
- package/dist/dist-DSsl8IAI.js +5 -0
- package/dist/{dist-3NCqaWjt.js → dist-D_ulymry.js} +2 -2
- package/dist/{dist-DZwp8lro.js → dist-DgY27bJ4.js} +3 -3
- package/dist/{dist-BwhXBwMd.js → dist-DiwVZiK7.js} +1 -1
- package/dist/{dist-DwqBJ014.js → dist-DnYHhW6c.js} +2 -2
- package/dist/dist-Dx0kkrek.js +5 -0
- package/dist/{dist-DsoKosxi.js → dist-HaLHv0k5.js} +2 -3
- package/dist/dist-NKA1TU8a.js +6 -0
- package/dist/dist-ZFcsIdHj.js +8 -0
- package/dist/{dist-C18MUWTj.js → dist-iZ8-rtUy.js} +2 -2
- package/dist/{dist-DIlxLFXG.js → dist-j30bBjjN.js} +15 -15
- package/dist/{dist-SXNmlE8A.js → dist-kOCFEa1U.js} +3 -3
- package/dist/{dist-CFSb_Frm.js → dist-sxRUVPmt.js} +1 -1
- package/dist/dist-uA2RbGmY.js +5 -0
- package/dist/{dist-B2jmQKKx.js → dist-xVU82Nq7.js} +2 -2
- package/dist/dist-zSCo-xCB.js +8 -0
- package/dist/{dockerfile-B82Pkz_V.js → dockerfile-DImRFUlA.js} +1 -1
- package/dist/dtd-B9dCT0pu.js +4 -0
- package/dist/dylan-DLghDyuR.js +4 -0
- package/dist/ebnfDiagram-BXEA7PRR-CqRWkG7L.js +129 -0
- package/dist/ecl-w0qdPHDB.js +4 -0
- package/dist/eiffel-C5AWRCNP.js +4 -0
- package/dist/elm-CT8FZrOm.js +4 -0
- package/dist/{erDiagram-Q2GNP2WA-BcKAHFqF.js → erDiagram-JOGREHBK-BZMJX-Au.js} +568 -436
- package/dist/erlang-DPD-9M5g.js +4 -0
- package/dist/{error-banner-B_GQfxxD.js → error-banner-BwCLtmkH.js} +6 -6
- package/dist/{esm-CuQHjs36.js → esm-BJ4n0NUT.js} +1 -1
- package/dist/{esm-DKOv6P2M.js → esm-Dusmf6uu.js} +105 -105
- package/dist/{esm-DzZVaNH4.js → esm-QLUgkqzZ.js} +6 -6
- package/dist/eventmodeling-45OFAUF4-D8Kbnsr6.js +5 -0
- package/dist/{extends-w2_S44bV.js → extends-iFBneQO_.js} +9 -9
- package/dist/{factor-Bq2mGIHt.js → factor-BonZgUGg.js} +1 -1
- package/dist/factor-rFfeJu3r.js +4 -0
- package/dist/flowDiagram-UKHOOZJN-DqIE8_b3.js +21 -0
- package/dist/{formats-Dwq1THhr.js → formats-HSfYlcA8.js} +7 -7
- package/dist/forth-C-3AyQx4.js +4 -0
- package/dist/fortran-BSN9TeT7.js +4 -0
- package/dist/ganttDiagram-PKOTCBZU-Bc9puoXb.js +2207 -0
- package/dist/gas-DwmuvQpB.js +4 -0
- package/dist/gherkin-gmCjL-Sn.js +4 -0
- package/dist/{gitGraph-G5XIXVHT-BjTx0kww.js → gitGraph-TEB2WS4Q-DVzLmQHc.js} +2 -3
- package/dist/gitGraphDiagram-DS77QQ5N-CqKr-Dfg.js +766 -0
- package/dist/{glide-data-editor-B9K6-MJe.js → glide-data-editor-BI2i_IEE.js} +18 -18
- package/dist/graphlib-DMVIRZap.js +614 -0
- package/dist/groovy-DCjvesOy.js +4 -0
- package/dist/hasIn-synBnXn4.js +119 -0
- package/dist/haskell-C1p0D9L8.js +4 -0
- package/dist/haxe-q-fgv0zr.js +5 -0
- package/dist/{html-to-image-CZ1kLKkq.js → html-to-image-BOiFHx3u.js} +7535 -3056
- package/dist/idl-Bmg4bsnK.js +4 -0
- package/dist/{info-VBDWY6EO-CA67FznA.js → info-DKCQHKI2-BxOTqQHM.js} +2 -3
- package/dist/infoDiagram-6WML65LV-B869X2KY.js +37 -0
- package/dist/{input-C5K4VBvB.js → input-BRE2a7Ay.js} +13 -13
- package/dist/{_baseFor-4jw-lnCC.js → isArrayLikeObject-CBUaLibE.js} +96 -29
- package/dist/{isEmpty-CJJMn-QP.js → isEmpty-CgME6WRV.js} +15 -15
- package/dist/{isSymbol-CoUCgMCM.js → isSymbol-Ch3GYg4S.js} +1 -1
- package/dist/ishikawaDiagram-WSZJBQD7-BrOMFBYy.js +731 -0
- package/dist/javascript-BY5QZ-eN.js +4 -0
- package/dist/{journeyDiagram-XKPGCS4Q-DEal0aT1.js → journeyDiagram-NVQOT4AX-CTwHlsTm.js} +124 -123
- package/dist/{jsx-runtime-DebpN0FN.js → jsx-runtime-Dp_oQwaf.js} +1 -1
- package/dist/julia-DbR1YalK.js +4 -0
- package/dist/{kanban-definition-3W4ZIXB7-Dl90wENN.js → kanban-definition-27J2QSJJ-CKowzO9_.js} +51 -45
- package/dist/{katex-C4t-BmrK.js → katex-Ci33kJVq.js} +1 -1
- package/dist/{katex-Bld7b-fk.js → katex-Dp22h6yO.js} +2871 -3002
- package/dist/{label-DjoYwqmj.js → label-CMh2d8pJ.js} +6 -6
- package/dist/{line-C43FIPBd.js → line-Bc27KE1D.js} +3 -3
- package/dist/{linear-H_vsH9ao.js → linear-6pDlrp1I.js} +4 -4
- package/dist/livescript-BDUooIeL.js +4 -0
- package/dist/{loader-DX-IDS7n.js → loader-DTnbNSVZ.js} +11 -11
- package/dist/lua-CswAWSkH.js +4 -0
- package/dist/main.js +747 -752
- package/dist/map-BQ_Xp80D.js +137 -0
- package/dist/mathematica-Bw7v11B5.js +4 -0
- package/dist/mbox-j35IMz1j.js +4 -0
- package/dist/merge-CDbSrd9f.js +69 -0
- package/dist/mermaid-4DMBBIKO-BZSpTmcx.js +6 -0
- package/dist/mermaid-DpAz2sTy.js +1265 -0
- package/dist/mermaid-parser.core-BQzz3_BI.js +87 -0
- package/dist/{mhchem-EGhUZR1V.js → mhchem-BDHjke3h.js} +1 -1
- package/dist/{micromark-factory-space-CwHmg6iz.js → micromark-factory-space-Cr4NxAt3.js} +1 -1
- package/dist/{mindmap-definition-VGOIOE7T-CCDupjWW.js → mindmap-definition-FAOFIHXS-CTsi-HFj.js} +126 -80
- package/dist/mirc-Ba_RHVXO.js +4 -0
- package/dist/mllike-DbTP2dPp.js +6 -0
- package/dist/modelica-lpT3V1X6.js +4 -0
- package/dist/mscgen-BN4ZSJMx.js +6 -0
- package/dist/mumps-uI5g1A0g.js +4 -0
- package/dist/{node-sql-parser-v1Vi-Fft.js → node-sql-parser-BaLGWQe1.js} +1 -1
- package/dist/{now-Ch98bJO_.js → now-sFWt-GLC.js} +2 -2
- package/dist/{nsis-i9_sgigf.js → nsis-C68fFq_o.js} +1 -1
- package/dist/nsis-Df56GiRg.js +4 -0
- package/dist/ntriples-B3LWuG7W.js +4 -0
- package/dist/{number-overlay-editor-Ck_mc_gT.js → number-overlay-editor-CeBHRJvI.js} +3 -3
- package/dist/octave-CovfQgOx.js +4 -0
- package/dist/{once-B60G2fuJ.js → once-Boutk_9X.js} +1 -1
- package/dist/{ordinal-Bkv2-veX.js → ordinal-Bdajf2BE.js} +1 -1
- package/dist/oz-DQQAvVFb.js +4 -0
- package/dist/{packet-DYOGHKS2-Bkgofxf3.js → packet-7NZHBO7P-BG8whXXH.js} +2 -3
- package/dist/pascal-xz94P9sf.js +4 -0
- package/dist/pegDiagram-VL7TDLO6-CNpT8Sqz.js +124 -0
- package/dist/perl-aEWKE-1n.js +4 -0
- package/dist/pick-CaEWivSF.js +47 -0
- package/dist/{pie-VRWISCQL-B1AMhN_7.js → pie-RZYD4A2V-Cc_QhFbT.js} +2 -3
- package/dist/pieDiagram-7S7Q4E2Y-Ct8jRpe_.js +219 -0
- package/dist/pig-DB6DOZl7.js +4 -0
- package/dist/powershell-DM5saUx1.js +4 -0
- package/dist/{precisionRound-CnHPY_5v.js → precisionRound-BOoJTbDj.js} +1 -1
- package/dist/{process-output-bVfbcx5_.js → process-output-HrsM52f8.js} +7 -7
- package/dist/properties-BGjYQuGo.js +4 -0
- package/dist/protobuf-BPpEyPud.js +4 -0
- package/dist/{pug-BhE2JRSg.js → pug-DFPPZ3LA.js} +1 -1
- package/dist/pug-uJzB88ft.js +4 -0
- package/dist/puppet-oIm2d_Lg.js +4 -0
- package/dist/{purify.es-EnR5yhgI.js → purify.es-DR5PNXwx.js} +160 -155
- package/dist/python-WE57eUzD.js +4 -0
- package/dist/q-CR8xPodo.js +4 -0
- package/dist/{quadrantDiagram-AYHSOK5B-BqDB9tUC.js → quadrantDiagram-CIZ2JOQS-B5n_xFcF.js} +429 -401
- package/dist/r-CJdmQZNj.js +4 -0
- package/dist/{radar-ZZBFDIW7-C2b7A32s.js → radar-I7S5WNFK-OhUkecXA.js} +2 -3
- package/dist/railroad-3IZDKUUU-1CmOpo1B.js +5 -0
- package/dist/railroad-abnf-AHOZXSZD-DmH4lsDS.js +5 -0
- package/dist/railroad-ebnf-EBAXGLYW-CzK0md4e.js +5 -0
- package/dist/railroad-peg-LSFZ7HO6-DOklooKz.js +5 -0
- package/dist/railroadDiagram-AXF67PYL-BbUWbtf8.js +100 -0
- package/dist/{react-DA-nE2FX.js → react-DhGsCS90.js} +1 -1
- package/dist/{react-dom-BTJzcVJ9.js → react-dom-CmENFV8Q.js} +2 -2
- package/dist/{react-vega-BazDALhI.js → react-vega-zyfTF9SY.js} +8036 -4796
- package/dist/{requirementDiagram-UZGBJVZJ-KbVt8SPH.js → requirementDiagram-LRYGKXZP-CpoDmKSf.js} +137 -105
- package/dist/{reveal-component-CbOaZYQI.js → reveal-component-CYZAzXrV.js} +27 -28
- package/dist/rough.esm-lGyFQ0B-.js +1363 -0
- package/dist/rpm-Cm5K4RH9.js +5 -0
- package/dist/ruby-ArsuTozQ.js +4 -0
- package/dist/sankeyDiagram-W5VNT64P-D82rYiAG.js +942 -0
- package/dist/sas-DShligrE.js +4 -0
- package/dist/scheme-kDLirQL7.js +4 -0
- package/dist/sequenceDiagram-SI44F4Z6-DgVKU1s5.js +4281 -0
- package/dist/shell-CVQuWP_N.js +4 -0
- package/dist/sieve-BW-ePwnq.js +4 -0
- package/dist/sizeCapture-X5ZJPWSS-BQgxHTji.js +48 -0
- package/dist/smalltalk-DI4aAXxY.js +4 -0
- package/dist/sparql-B2sp0oiz.js +4 -0
- package/dist/{spec-CQKL_D3i.js → spec-BL1GSUUF.js} +4 -4
- package/dist/{src-DV3ha_nA.js → src-BwVZVGyf.js} +13 -22
- package/dist/{stateDiagram-FKZM4ZOC-ByOvQf2n.js → stateDiagram-OKZ733FA-Cc9BchXz.js} +61 -58
- package/dist/stateDiagram-v2-UEYNNEHI-Dd4Tuw6F.js +32 -0
- package/dist/{step-BqHnkgWE.js → step-BqVgkWtk.js} +1 -1
- package/dist/stex-D2rme5UG.js +4 -0
- package/dist/{strings-DIy9NAmg.js → strings-DMLVGXRo.js} +305 -305
- package/dist/style.css +1 -1
- package/dist/stylus-xxO-85eO.js +4 -0
- package/dist/swift-Ctg533nZ.js +4 -0
- package/dist/swimlanes-SLNWSIFB-BHvhO5uv.js +5564 -0
- package/dist/swimlanesDiagram-ULZ7WXOC-aI_zgQ8O.js +33 -0
- package/dist/{swiper-component-CEdAYjb7.js → swiper-component-Cx0cRWLk.js} +6 -6
- package/dist/tcl-phm9c5Nd.js +4 -0
- package/dist/textile-CphjAg90.js +4 -0
- package/dist/{time-Bb4A7I6a.js → time-DAJu9fnj.js} +4 -4
- package/dist/timeline-definition-Z64GVDOM-BAHuDYyA.js +1107 -0
- package/dist/{timer-BpI_FKSA.js → timer-aIIabkbI.js} +1 -1
- package/dist/{toDate-CqhBWjvO.js → toDate-BGM7kFtQ.js} +6 -6
- package/dist/toml-BUuMK772.js +4 -0
- package/dist/{tooltip-f-qR0iUx.js → tooltip-BtUxZT5h.js} +7 -7
- package/dist/treeView-QDETBFTQ-DsLN_c8p.js +5 -0
- package/dist/{treemap-GDKQZRPO-SDux0AV8.js → treemap-6X3UGDF4-K1bi3LJm.js} +2 -3
- package/dist/troff-lCtc05A3.js +4 -0
- package/dist/ttcn-CcykzBcW.js +4 -0
- package/dist/ttcn-cfg-C-XYdqpE.js +4 -0
- package/dist/turtle-CpfVZs8G.js +4 -0
- package/dist/{types-DicH9Oi0.js → types-DT8UHI5w.js} +1 -1
- package/dist/{use-vega-container-remeasure-DGNrIQSk.js → use-vega-container-remeasure-B7OD7yUY.js} +3 -3
- package/dist/{useAsyncData-CYOQb1EW.js → useAsyncData-CDcbh-Qv.js} +5 -5
- package/dist/{useDateFormatter-Bt2qr_XS.js → useDateFormatter-B_vTzxpm.js} +4 -4
- package/dist/{useDeepCompareMemoize-CSHQeQEI.js → useDeepCompareMemoize-Bj6QvwiG.js} +3 -3
- package/dist/{useIframeCapabilities-kA09ykNq.js → useIframeCapabilities-CxuXXwjj.js} +4 -4
- package/dist/{useLifecycle-CMJGqBaY.js → useLifecycle-Bw4wRj_O.js} +7 -7
- package/dist/{useTheme-DYfby65G.js → useTheme-BzEXeAR5.js} +8 -7
- package/dist/vb-VOIzXwm9.js +4 -0
- package/dist/vbscript-D0WfcnVk.js +4 -0
- package/dist/{vega-component-C7nO5zcf.js → vega-component-CJug-VdR.js} +24 -24
- package/dist/{vega-embed-container-DAQAMjiO.js → vega-embed-container-BRjjqRGz.js} +9 -9
- package/dist/{vega-loader.browser-DmpxCJqx.js → vega-loader.browser-CGb-2Kwi.js} +106 -113
- package/dist/velocity-CCrc5n-0.js +4 -0
- package/dist/vennDiagram-T6HMQDX7-CTyzMewS.js +1913 -0
- package/dist/verilog-BLFhaDBH.js +4 -0
- package/dist/vhdl-DjuqPE9b.js +4 -0
- package/dist/wardley-OPB4EBWU-CP99MvU1.js +5 -0
- package/dist/wardleyDiagram-T6FBY63Y-vcno_rbk.js +669 -0
- package/dist/webidl-Cc7RrfeK.js +4 -0
- package/dist/xquery-BiCRLnNG.js +4 -0
- package/dist/{xychartDiagram-PRI3JC2R-BSkNxYNw.js → xychartDiagram-ELKLHX3M-DyFDERhM.js} +417 -353
- package/dist/yacas-CWcjav-O.js +4 -0
- package/dist/z80-DpYS2lE7.js +4 -0
- package/dist/{zod-BUcyXSdR.js → zod-BFY2SnzC.js} +42 -43
- package/package.json +7 -7
- package/src/__mocks__/requests.ts +5 -0
- package/src/components/ai/ai-model-dropdown.tsx +2 -2
- package/src/components/app-config/user-config-form.tsx +26 -0
- package/src/components/chat/__tests__/capabilities-popover.test.tsx +38 -0
- package/src/components/chat/__tests__/chat-abort.test.ts +51 -0
- package/src/components/chat/__tests__/use-chat-controller-id.test.tsx +39 -0
- package/src/components/chat/capabilities-popover.tsx +68 -0
- package/src/components/chat/chat-abort.ts +44 -0
- package/src/components/chat/chat-display.tsx +17 -0
- package/src/components/chat/chat-panel.tsx +107 -50
- package/src/components/chat/chat-utils.ts +1 -1
- package/src/components/chat/use-chat-controller-id.ts +24 -0
- package/src/components/data-table/charts/__tests__/schemas.test.ts +35 -0
- package/src/components/data-table/charts/schemas.ts +5 -2
- package/src/components/datasets/__tests__/icons.test.ts +21 -0
- package/src/components/datasets/icons.tsx +10 -0
- package/src/components/datasources/__tests__/components.test.tsx +29 -0
- package/src/components/datasources/components.tsx +8 -3
- package/src/components/editor/actions/export-dialog/__tests__/export-dialog.test.tsx +35 -0
- package/src/components/editor/actions/export-dialog/__tests__/state.test.ts +61 -0
- package/src/components/editor/actions/export-dialog/export-command.ts +4 -9
- package/src/components/editor/actions/export-dialog/format-notice.tsx +28 -0
- package/src/components/editor/actions/export-dialog/state.ts +23 -5
- package/src/components/editor/actions/export-dialog/use-export-dialog.ts +3 -13
- package/src/components/editor/actions/useConfigActions.tsx +24 -0
- package/src/components/editor/ai/add-cell-with-ai.tsx +2 -2
- package/src/components/editor/ai/ai-completion-editor.tsx +2 -2
- package/src/components/editor/chrome/panels/outline/__tests__/useActiveOutline.test.ts +26 -0
- package/src/components/editor/chrome/wrapper/useOpenAiAssistant.ts +2 -2
- package/src/components/editor/code/__tests__/readonly-python-code.test.tsx +114 -2
- package/src/core/__tests__/mode.test.ts +85 -0
- package/src/core/ai/__tests__/config.test.tsx +96 -0
- package/src/core/ai/config.ts +16 -22
- package/src/core/ai/constants.ts +7 -0
- package/src/core/ai/staged-cells.ts +3 -0
- package/src/core/ai/state.ts +10 -0
- package/src/core/codemirror/__tests__/setup.test.ts +1 -1
- package/src/core/codemirror/cm.ts +2 -2
- package/src/core/codemirror/code-lens/__tests__/extension.test.ts +85 -6
- package/src/core/codemirror/code-lens/extension.ts +144 -47
- package/src/core/codemirror/find-replace/search-highlight.ts +8 -3
- package/src/core/codemirror/language/languages/sql/__tests__/renderers.test.tsx +44 -0
- package/src/core/codemirror/language/languages/sql/renderers.tsx +3 -3
- package/src/core/codemirror/theme/__tests__/light.test.ts +59 -123
- package/src/core/codemirror/theme/dark.ts +6 -5
- package/src/core/codemirror/theme/light.ts +6 -4
- package/src/core/config/__tests__/config-schema.test.ts +2 -0
- package/src/core/config/config-schema.ts +1 -0
- package/src/core/config/feature-flag.tsx +0 -2
- package/src/core/dom/outline.ts +25 -2
- package/src/core/hotkeys/hotkeys.ts +2 -0
- package/src/core/mode.ts +11 -9
- package/src/core/network/__tests__/api.test.ts +132 -17
- package/src/core/network/__tests__/export-filename.test.ts +43 -0
- package/src/core/network/__tests__/requests-lazy.test.ts +1 -0
- package/src/core/network/api.ts +47 -12
- package/src/core/network/export-filename.ts +37 -0
- package/src/core/network/markdown-export.ts +19 -0
- package/src/core/network/requests-network.ts +29 -5
- package/src/core/network/types.ts +4 -0
- package/src/css/app/codemirror.css +11 -7
- package/src/css/globals.css +8 -0
- package/src/plugins/impl/DataEditorPlugin.tsx +2 -9
- package/src/plugins/impl/__tests__/DataEditorPlugin.test.ts +18 -0
- package/src/plugins/impl/chat/chat-ui.tsx +51 -3
- package/src/plugins/impl/data-frames/__tests__/schema.test.ts +30 -0
- package/src/plugins/impl/data-frames/schema.ts +4 -1
- package/src/plugins/impl/image-comparison/ImageComparisonComponent.tsx +20 -1
- package/src/plugins/impl/image-comparison/__tests__/ImageComparisonComponent.test.tsx +58 -0
- package/src/stories/theme.stories.tsx +71 -1
- package/dist/_baseUniq-B_2Hw7zG.js +0 -380
- package/dist/apl-e1B5LPEL.js +0 -4
- package/dist/architecture-7HQA4BMR-DHUrQjL4.js +0 -6
- package/dist/asciiarmor-B-gwgesP.js +0 -4
- package/dist/asn1-DF2ckRB4.js +0 -4
- package/dist/assets/__vite-browser-external-DltVXDv7.js +0 -1
- package/dist/blockDiagram-VD42YOAC-CIOjvxeD.js +0 -3131
- package/dist/brainfuck-4G-7_gq_.js +0 -4
- package/dist/chat-ui-DsZJj75A.js +0 -8369
- package/dist/chunk-55IACEB6-7h71GwyW.js +0 -8
- package/dist/chunk-ABZYJK2D-BxBDji1u.js +0 -2438
- package/dist/chunk-BNovOVIE.js +0 -28
- package/dist/chunk-CVBHYZKI-CwazXVlJ.js +0 -13
- package/dist/chunk-DR5Q36YT-5Yp2GWwR.js +0 -137
- package/dist/chunk-EXTU4WIE-BQPBhApE.js +0 -10
- package/dist/chunk-JZLCHNYA-DWIR9m5O.js +0 -4901
- package/dist/chunk-N4CR4FBY-Bw2HcMNc.js +0 -65
- package/dist/chunk-QXUST7PY-DtC2t9Mk.js +0 -498
- package/dist/chunk-TCCFYFTB-DPWJa9zL.js +0 -13948
- package/dist/chunk-TZMSLE5B-BzSHcq-K.js +0 -63
- package/dist/classDiagram-2ON5EDUG-BiQPjMNY.js +0 -30
- package/dist/classDiagram-v2-WZHVMYZB-YHdR8fqM.js +0 -30
- package/dist/clojure-CUybM11R.js +0 -4
- package/dist/clone-Q4Fqwn6q.js +0 -9
- package/dist/cmake-BPjGcuDL.js +0 -4
- package/dist/cobol-BETk_nb6.js +0 -4
- package/dist/coffeescript-CManZxXL.js +0 -4
- package/dist/commonlisp-DWkn7GW8.js +0 -4
- package/dist/crystal-CCbg5EUH.js +0 -4
- package/dist/css-By8eo-XS.js +0 -4
- package/dist/cypher-DwfHg3nP.js +0 -4
- package/dist/d-Brs1wNbw.js +0 -4
- package/dist/dagre-6UL2VRFP-DpYjBqQs.js +0 -296
- package/dist/diagram-QEK2KX5R-DVlUOgs1.js +0 -228
- package/dist/diff-DJIRmJ1g.js +0 -4
- package/dist/dist-5o9uz19x.js +0 -5
- package/dist/dist-BpDH0DEP.js +0 -5
- package/dist/dist-BpXhbQXO.js +0 -8
- package/dist/dist-ByadAk_L.js +0 -5
- package/dist/dist-CK0g7JvP.js +0 -8
- package/dist/dist-CfzCtiq2.js +0 -5
- package/dist/dist-D8JtVFrW.js +0 -8
- package/dist/dist-DK2Oocpu.js +0 -6
- package/dist/dist-DnSu977r.js +0 -5
- package/dist/dist-UmxJm6sW.js +0 -8
- package/dist/dist-aYSBQSyM.js +0 -5
- package/dist/dist-kkZ1Ztlh.js +0 -6
- package/dist/dist-ngPczwNi.js +0 -5
- package/dist/dist-wQRyxyTV.js +0 -5
- package/dist/dtd-Dyiazv4N.js +0 -4
- package/dist/dylan-D8Fcw7NA.js +0 -4
- package/dist/ecl-CjKp8Vii.js +0 -4
- package/dist/eiffel-K9ViOX5r.js +0 -4
- package/dist/elm-B5NVtRco.js +0 -4
- package/dist/erlang-BnLzgk7R.js +0 -4
- package/dist/factor-C7f9Jz5R.js +0 -4
- package/dist/flatten-Bbw7g6-K.js +0 -8
- package/dist/forth-rGM8jLao.js +0 -4
- package/dist/fortran-B3acSe0i.js +0 -4
- package/dist/ganttDiagram-JELNMOA3-CXXCN7LN.js +0 -2170
- package/dist/gas-Bb1Vmv_N.js +0 -4
- package/dist/gherkin-C9Lyidgd.js +0 -4
- package/dist/gitGraphDiagram-V2S2FVAM-BOlkMSqK.js +0 -652
- package/dist/graphlib-Ns7y5crs.js +0 -359
- package/dist/groovy-DQk6XcGH.js +0 -4
- package/dist/hasIn-Deg7jl_j.js +0 -108
- package/dist/haskell-mV0Vw9gv.js +0 -4
- package/dist/haxe-DqxN89zH.js +0 -5
- package/dist/idl-ya8W561J.js +0 -4
- package/dist/infoDiagram-HS3SLOUP-D3TyKnL_.js +0 -30
- package/dist/javascript-CgqgptVu.js +0 -4
- package/dist/julia-CFQ-HusI.js +0 -4
- package/dist/livescript-D__3TmDo.js +0 -4
- package/dist/lua-Bytcgj_W.js +0 -4
- package/dist/main-B1Jo_8pC.js +0 -4321
- package/dist/mathematica-DJhvVKvl.js +0 -4
- package/dist/mbox-IGHPCjfR.js +0 -4
- package/dist/memoize-BOtf2yFf.js +0 -17
- package/dist/merge-Be1CqGnU.js +0 -222
- package/dist/mermaid-4DMBBIKO-FXbOziy9.js +0 -6
- package/dist/mermaid-hv6IckVw.js +0 -1100
- package/dist/mermaid-parser.core-DoivvxPd.js +0 -54
- package/dist/min-Dtgc8txR.js +0 -38
- package/dist/mirc-tcwvVugm.js +0 -4
- package/dist/mllike-Dx91i62r.js +0 -6
- package/dist/modelica-_SRt-yU5.js +0 -4
- package/dist/mscgen-GZrGS9gt.js +0 -6
- package/dist/mumps-Cv3ygyod.js +0 -4
- package/dist/nsis-BU7GeGbI.js +0 -4
- package/dist/ntriples-CL-FCYXb.js +0 -4
- package/dist/octave-Dc6_3DIu.js +0 -4
- package/dist/oz-DpUAJCXf.js +0 -4
- package/dist/pascal-B17mncXs.js +0 -4
- package/dist/perl-BTpK97q9.js +0 -4
- package/dist/pick-D1Qo8s2C.js +0 -43
- package/dist/pieDiagram-ADFJNKIX-JvXG_6hk.js +0 -170
- package/dist/pig-CFb638Ap.js +0 -4
- package/dist/powershell-Cxo-_2A5.js +0 -4
- package/dist/properties-BPgT1xTB.js +0 -4
- package/dist/protobuf-BgHBaIIK.js +0 -4
- package/dist/pug-25-oS0SG.js +0 -4
- package/dist/puppet-DarIr20S.js +0 -4
- package/dist/python-BqmOsBsi.js +0 -4
- package/dist/q-D3QJCTup.js +0 -4
- package/dist/r-Cz_yBX4z.js +0 -4
- package/dist/rpm-DGOtYwAI.js +0 -5
- package/dist/ruby-DBZu4rPc.js +0 -4
- package/dist/sankeyDiagram-TZEHDZUN-DgkF38jx.js +0 -892
- package/dist/sas-Dd1D9qTq.js +0 -4
- package/dist/scheme-BmDjvTHX.js +0 -4
- package/dist/sequenceDiagram-WL72ISMW-BDmx9n95.js +0 -3652
- package/dist/shell-BL8zFSaj.js +0 -4
- package/dist/sieve-BAx2WqUP.js +0 -4
- package/dist/smalltalk-CYRzF7VV.js +0 -4
- package/dist/sparql-YWaDRO4A.js +0 -4
- package/dist/stateDiagram-v2-4FDKWEC3-C3xqeavR.js +0 -29
- package/dist/stex-B5O-env2.js +0 -4
- package/dist/stylus-lYsyLFc1.js +0 -4
- package/dist/swift-ClQz9z1n.js +0 -4
- package/dist/tcl-B3jhsfqY.js +0 -4
- package/dist/textile-Cb1Dw7Aq.js +0 -4
- package/dist/timeline-definition-IT6M3QCI-CkD_trIn.js +0 -856
- package/dist/toml-nHZhetdO.js +0 -4
- package/dist/troff-DuJAGWKH.js +0 -4
- package/dist/ttcn-BxrcwP21.js +0 -4
- package/dist/ttcn-cfg-BAg_9dcc.js +0 -4
- package/dist/turtle-zCq949as.js +0 -4
- package/dist/vb-De5hElus.js +0 -4
- package/dist/vbscript-Cypcpv4F.js +0 -4
- package/dist/velocity-Di7l-yhe.js +0 -4
- package/dist/verilog-Bzi-S3g2.js +0 -4
- package/dist/vhdl-B0ZZITaW.js +0 -4
- package/dist/webidl-0sviiRcN.js +0 -4
- package/dist/xquery-B4qMVWaB.js +0 -4
- package/dist/yacas-Jt25Fuv8.js +0 -4
- package/dist/z80-CrcbYzmp.js +0 -4
- /package/dist/{apl-99A7dLQe.js → apl-CMUKiT2b.js} +0 -0
- /package/dist/{array-O78LT16Y.js → array-CEIRxyh3.js} +0 -0
- /package/dist/{asciiarmor-DLEhpFDx.js → asciiarmor-C_r6K6db.js} +0 -0
- /package/dist/{asn1-CMrcTsT4.js → asn1-DnlnCQTu.js} +0 -0
- /package/dist/{asterisk-CqykImq7.js → asterisk-DaVJJDnV.js} +0 -0
- /package/dist/{brainfuck-ChPt5yBe.js → brainfuck-CtQoQVkV.js} +0 -0
- /package/dist/{clike-CE0fXfM_.js → clike-CIAs0ABt.js} +0 -0
- /package/dist/{clojure-QkBEMU-g.js → clojure-C6tKQYjD.js} +0 -0
- /package/dist/{cmake-CU1jX7Mo.js → cmake-D-nfcg14.js} +0 -0
- /package/dist/{cobol-DMOKzzky.js → cobol-DYTC58p9.js} +0 -0
- /package/dist/{coffeescript-DjnjLyfk.js → coffeescript-DctDWA58.js} +0 -0
- /package/dist/{colors-DmiH1bIH.js → colors-DR_aHfmQ.js} +0 -0
- /package/dist/{common-keywords-D3nPJNQP.js → common-keywords-FBrXPTcz.js} +0 -0
- /package/dist/{commonlisp-CYd9iOSe.js → commonlisp-BmvTqU5y.js} +0 -0
- /package/dist/{crystal-Dy55yoYG.js → crystal-BPIK2UMa.js} +0 -0
- /package/dist/{css-CNU8w3HJ.js → css-CDo_Lwzn.js} +0 -0
- /package/dist/{cypher-q47DGzK7.js → cypher-KztbD63v.js} +0 -0
- /package/dist/{d-jEkaLvxX.js → d-HXBWOoe9.js} +0 -0
- /package/dist/{defaultLocale-DoeErsX2.js → defaultLocale-DMZFeDB8.js} +0 -0
- /package/dist/{diff-vb2-unFN.js → diff-B9rWZH0m.js} +0 -0
- /package/dist/{dtd-C9kR-bXa.js → dtd-LtAMP5y8.js} +0 -0
- /package/dist/{duckdb-keywords-B6HYCMOT.js → duckdb-keywords-CvJhR_Yd.js} +0 -0
- /package/dist/{dylan-BLckrK-V.js → dylan-DXMK92pf.js} +0 -0
- /package/dist/{ebnf-Cnp3L9jg.js → ebnf-2D4Ctp3y.js} +0 -0
- /package/dist/{ecl-CEsf6XVg.js → ecl-Dqq8ser2.js} +0 -0
- /package/dist/{eiffel-2KGZNzx6.js → eiffel-ChExWBDx.js} +0 -0
- /package/dist/{elm-D2s3K5wF.js → elm-BMBz2xbZ.js} +0 -0
- /package/dist/{emotion-is-prop-valid.esm-DdVSF4FD.js → emotion-is-prop-valid.esm-_z-EwK5u.js} +0 -0
- /package/dist/{erlang-0PMFOndk.js → erlang-CGSDzg9P.js} +0 -0
- /package/dist/{fcl-D9nccAWI.js → fcl-Ccj8Z5Xd.js} +0 -0
- /package/dist/{forth-DG89iUsu.js → forth-vTkfR0aY.js} +0 -0
- /package/dist/{fortran-ytKsAVvu.js → fortran-CF4LAVFn.js} +0 -0
- /package/dist/{gas-Cg2Fm0N2.js → gas-mMFbQ2x4.js} +0 -0
- /package/dist/{gherkin-B87FEnZ-.js → gherkin-DLS1q0XM.js} +0 -0
- /package/dist/{groovy-Dcs08AWD.js → groovy-Zt6CNPxV.js} +0 -0
- /package/dist/{haskell-cwkOuhx6.js → haskell-kVOgzpVy.js} +0 -0
- /package/dist/{haxe-DWEo4q10.js → haxe-Bo21F6gc.js} +0 -0
- /package/dist/{http-B8jdG64J.js → http-_DVAYWoR.js} +0 -0
- /package/dist/{idl-WWQwDcRV.js → idl-B865GSM-.js} +0 -0
- /package/dist/{init-DNBbYZd_.js → init-TaqZJsBY.js} +0 -0
- /package/dist/{invariant-wRzNXIsJ.js → invariant-hOqqBz8A.js} +0 -0
- /package/dist/{javascript-BeR74dxD.js → javascript-CSLuHpxZ.js} +0 -0
- /package/dist/{julia-UlvCUYGL.js → julia-BCOLeQif.js} +0 -0
- /package/dist/{livescript-GPmFcmYV.js → livescript-DqUzLZFs.js} +0 -0
- /package/dist/{lua-DYoT_0zM.js → lua-D0ciLwkO.js} +0 -0
- /package/dist/{math-CBNc2Ib0.js → math-CTnb-N1W.js} +0 -0
- /package/dist/{mathematica-DSFIQlbG.js → mathematica-DujD1RDf.js} +0 -0
- /package/dist/{mbox-ej8lFMdL.js → mbox-8OkSQMDn.js} +0 -0
- /package/dist/{mirc-CAdIdvHQ.js → mirc-D47x8yRQ.js} +0 -0
- /package/dist/{mllike-CjTB1lHF.js → mllike-Dcfw-g6D.js} +0 -0
- /package/dist/{modelica-BB68FYMa.js → modelica-BHtr9gKR.js} +0 -0
- /package/dist/{mscgen-BkbzgGGI.js → mscgen-uZedQc_A.js} +0 -0
- /package/dist/{mumps-Cu-28E9F.js → mumps-Bc9QS1-K.js} +0 -0
- /package/dist/{nginx-C1ofKPst.js → nginx-DasThI7R.js} +0 -0
- /package/dist/{ntriples-D9cQiZxZ.js → ntriples-Clpn9Mrg.js} +0 -0
- /package/dist/{objects-De59twF-.js → objects-UzwQd5gx.js} +0 -0
- /package/dist/{octave-BvtAnPX0.js → octave-DA2esRWi.js} +0 -0
- /package/dist/{oz-COaVHk2E.js → oz-D8i-brWx.js} +0 -0
- /package/dist/{pascal-BFpqVD2x.js → pascal-Dt1a0CeN.js} +0 -0
- /package/dist/{path-DwWbhZFI.js → path-7gr7eZmp.js} +0 -0
- /package/dist/{perl-DaiORxHP.js → perl-CXy9EfRp.js} +0 -0
- /package/dist/{pig-DFzRhmsF.js → pig-DnXnrjQg.js} +0 -0
- /package/dist/{powershell-BG2LQNKN.js → powershell-BYE6u-Qk.js} +0 -0
- /package/dist/{properties-CqJJR5QY.js → properties-DlhyusaK.js} +0 -0
- /package/dist/{protobuf-WwDYV1yY.js → protobuf-DoMSrsPi.js} +0 -0
- /package/dist/{puppet-QNY3w_uN.js → puppet-DGi4idFA.js} +0 -0
- /package/dist/{python-4QrQ3Ugi.js → python-CYhALYh0.js} +0 -0
- /package/dist/{q-DhwXuxE2.js → q-Cs_qWJkU.js} +0 -0
- /package/dist/{r-Df-nkR25.js → r-DWJSQl1c.js} +0 -0
- /package/dist/{range-BOiA8qqU.js → range-Bieq5MNc.js} +0 -0
- /package/dist/{rpm-Cokue07s.js → rpm-DIip1m0n.js} +0 -0
- /package/dist/{ruby-DrYcL3qF.js → ruby-NgZGoa7Q.js} +0 -0
- /package/dist/{sas-CoiPirA5.js → sas-DEKzCzM2.js} +0 -0
- /package/dist/{scheme-CwFLjzHv.js → scheme-CBrGar2n.js} +0 -0
- /package/dist/{semaphore-C8rmHdhj.js → semaphore-P832H4YT.js} +0 -0
- /package/dist/{shell-BFV-R24I.js → shell-D7XFPOM_.js} +0 -0
- /package/dist/{sieve-CxwXF5T9.js → sieve-BOxOVQ18.js} +0 -0
- /package/dist/{simple-mode-DTaJtKPt.js → simple-mode-D-FXBgPn.js} +0 -0
- /package/dist/{smalltalk-QivVOCtX.js → smalltalk-DYK-HkUK.js} +0 -0
- /package/dist/{solr-BLvysN-c.js → solr-RZ9uTl59.js} +0 -0
- /package/dist/{sparql-nKsFk8j7.js → sparql-CU1uk9Py.js} +0 -0
- /package/dist/{spreadsheet-BWc8C2FT.js → spreadsheet-BNNUNXA2.js} +0 -0
- /package/dist/{sql-CWfUjlV1.js → sql-B4x8IkwU.js} +0 -0
- /package/dist/{stex-DtMAhV4-.js → stex-DIvyJfNO.js} +0 -0
- /package/dist/{stylus-BLKQAycn.js → stylus-BokZhKWB.js} +0 -0
- /package/dist/{swift-CJoKqiKj.js → swift-TlA42tbT.js} +0 -0
- /package/dist/{tcl-YTeYFNUc.js → tcl-C-m7N_9k.js} +0 -0
- /package/dist/{textile-C6rKQqMQ.js → textile-BWOWG894.js} +0 -0
- /package/dist/{tiddlywiki-ZXwTHGNT.js → tiddlywiki-DI0mF2WJ.js} +0 -0
- /package/dist/{tiki-C628O_u4.js → tiki-2HU6XLLn.js} +0 -0
- /package/dist/{toml-DxlPGbRy.js → toml-GapOS-6U.js} +0 -0
- /package/dist/{treemap-DY3NBr79.js → treemap-CQJ0bIDy.js} +0 -0
- /package/dist/{troff-DFCfH7Ku.js → troff-ChPXSGgg.js} +0 -0
- /package/dist/{ttcn-DAW-ERVP.js → ttcn-CGf_ktUb.js} +0 -0
- /package/dist/{ttcn-cfg-CpJ8b7EN.js → ttcn-cfg-E0kw_vEm.js} +0 -0
- /package/dist/{turtle-BneV2f8L.js → turtle-DDIYttZr.js} +0 -0
- /package/dist/{vb-D973Vxxh.js → vb-DsGz8YA-.js} +0 -0
- /package/dist/{vbscript-Dckaq3YO.js → vbscript-BfQcpKZn.js} +0 -0
- /package/dist/{velocity-DKty-GUC.js → velocity-BMi53hPb.js} +0 -0
- /package/dist/{verilog-aNaK_biA.js → verilog-B_WDxmCB.js} +0 -0
- /package/dist/{vhdl-CQuehnQy.js → vhdl-C52-TT0z.js} +0 -0
- /package/dist/{webidl-Bhg8vaMr.js → webidl-Cnphjlul.js} +0 -0
- /package/dist/{xquery-D2q16GaM.js → xquery-X_kWyOft.js} +0 -0
- /package/dist/{yacas-DHGOHnNa.js → yacas-Dpp9zAZ5.js} +0 -0
- /package/dist/{z80-BPhTmO22.js → z80-BZLZAthF.js} +0 -0
package/src/core/ai/state.ts
CHANGED
|
@@ -8,6 +8,7 @@ import { uniqueBy } from "@/utils/arrays";
|
|
|
8
8
|
import { adaptForLocalStorage, jotaiJsonStorage } from "@/utils/storage/jotai";
|
|
9
9
|
import type { TypedString } from "@/utils/typed";
|
|
10
10
|
import type { CellId } from "../cells/ids";
|
|
11
|
+
import type { ChatOptions } from "../network/types";
|
|
11
12
|
|
|
12
13
|
const KEY = "marimo:ai:chatState:v5";
|
|
13
14
|
|
|
@@ -32,6 +33,15 @@ export interface PendingAiPrompt {
|
|
|
32
33
|
|
|
33
34
|
export const pendingAiPromptAtom = atom<PendingAiPrompt | null>(null);
|
|
34
35
|
|
|
36
|
+
const CHAT_OPTIONS_KEY = "marimo:ai:chatOptions";
|
|
37
|
+
export const chatOptionsAtom = atomWithStorage<Required<ChatOptions>>(
|
|
38
|
+
CHAT_OPTIONS_KEY,
|
|
39
|
+
{
|
|
40
|
+
webSearch: false,
|
|
41
|
+
},
|
|
42
|
+
jotaiJsonStorage,
|
|
43
|
+
);
|
|
44
|
+
|
|
35
45
|
const INCLUDE_OTHER_CELLS_KEY = "marimo:ai:includeOtherCells";
|
|
36
46
|
export const includeOtherCellsAtom = atomWithStorage<boolean>(
|
|
37
47
|
INCLUDE_OTHER_CELLS_KEY,
|
|
@@ -68,7 +68,7 @@ function getOpts() {
|
|
|
68
68
|
diagnosticsConfig: {},
|
|
69
69
|
hotkeys: new OverridingHotkeyProvider({}),
|
|
70
70
|
theme: "light",
|
|
71
|
-
displayConfig: { reference_highlighting: false },
|
|
71
|
+
displayConfig: { reference_highlighting: false, code_lens: true },
|
|
72
72
|
inlineAiTooltip: false,
|
|
73
73
|
} as const;
|
|
74
74
|
}
|
|
@@ -82,7 +82,7 @@ export interface CodeMirrorSetupOpts {
|
|
|
82
82
|
hotkeys: HotkeyProvider;
|
|
83
83
|
lspConfig: LSPConfig;
|
|
84
84
|
diagnosticsConfig: DiagnosticsConfig;
|
|
85
|
-
displayConfig: Pick<DisplayConfig, "reference_highlighting">;
|
|
85
|
+
displayConfig: Pick<DisplayConfig, "reference_highlighting" | "code_lens">;
|
|
86
86
|
inlineAiTooltip: boolean;
|
|
87
87
|
/**
|
|
88
88
|
* CSS selector for the element that CodeMirror tooltips (completions, hover,
|
|
@@ -200,7 +200,7 @@ export const setupCodeMirror = (opts: CodeMirrorSetupOpts): Extension[] => {
|
|
|
200
200
|
displayConfig.reference_highlighting ?? true,
|
|
201
201
|
),
|
|
202
202
|
// Inline icons linking datasources/buckets/caches to their panels
|
|
203
|
-
codeLensBundle(cellId),
|
|
203
|
+
codeLensBundle(cellId, displayConfig.code_lens ?? true),
|
|
204
204
|
];
|
|
205
205
|
};
|
|
206
206
|
|
|
@@ -23,7 +23,11 @@ import type { StorageNamespace } from "@/core/storage/types";
|
|
|
23
23
|
import { variablesAtom } from "@/core/variables/state";
|
|
24
24
|
import type { Variables } from "@/core/variables/types";
|
|
25
25
|
import { openLensTarget } from "../actions";
|
|
26
|
-
import {
|
|
26
|
+
import {
|
|
27
|
+
CODE_LENS_HOVER_DELAY_MS,
|
|
28
|
+
CODE_LENS_HOVER_GRACE_MS,
|
|
29
|
+
codeLensBundle,
|
|
30
|
+
} from "../extension";
|
|
27
31
|
import { mountLensPopover } from "../popover";
|
|
28
32
|
|
|
29
33
|
vi.mock("@/core/config/feature-flag", () => ({
|
|
@@ -103,7 +107,7 @@ describe("codeLensBundle", () => {
|
|
|
103
107
|
|
|
104
108
|
beforeEach(() => {
|
|
105
109
|
vi.useFakeTimers();
|
|
106
|
-
mockFlags({
|
|
110
|
+
mockFlags({ cache_panel: true });
|
|
107
111
|
seedStore({});
|
|
108
112
|
});
|
|
109
113
|
|
|
@@ -141,9 +145,8 @@ describe("codeLensBundle", () => {
|
|
|
141
145
|
return [...v.dom.querySelectorAll<HTMLElement>(".mo-code-lens")];
|
|
142
146
|
}
|
|
143
147
|
|
|
144
|
-
it("returns an empty extension when
|
|
145
|
-
|
|
146
|
-
expect(codeLensBundle(cellId("cell1"))).toEqual([]);
|
|
148
|
+
it("returns an empty extension when disabled via `display.code_lens`", () => {
|
|
149
|
+
expect(codeLensBundle(cellId("cell1"), false)).toEqual([]);
|
|
147
150
|
});
|
|
148
151
|
|
|
149
152
|
it("renders a lens at a dataframe declaration", async () => {
|
|
@@ -237,9 +240,85 @@ describe("codeLensBundle", () => {
|
|
|
237
240
|
);
|
|
238
241
|
|
|
239
242
|
lens.dispatchEvent(new MouseEvent("mouseleave"));
|
|
243
|
+
// Not hidden immediately: the pointer may be on its way into the popover
|
|
244
|
+
expect(v.dom.querySelector(".mo-cm-tooltip")).not.toBeNull();
|
|
245
|
+
vi.advanceTimersByTime(CODE_LENS_HOVER_GRACE_MS);
|
|
246
|
+
expect(v.dom.querySelector(".mo-cm-tooltip")).toBeNull();
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
it("stays open while the pointer is over the popover", async () => {
|
|
250
|
+
seedStore({ tables: [DF_TABLE] });
|
|
251
|
+
const v = await mount("df = load()");
|
|
252
|
+
const lens = lenses(v)[0];
|
|
253
|
+
|
|
254
|
+
lens.dispatchEvent(new MouseEvent("mouseenter"));
|
|
255
|
+
vi.advanceTimersByTime(CODE_LENS_HOVER_DELAY_MS);
|
|
256
|
+
const popover = v.dom.querySelector<HTMLElement>(".mo-cm-tooltip");
|
|
257
|
+
expect(popover).not.toBeNull();
|
|
258
|
+
|
|
259
|
+
// Icon -> popover within the grace period
|
|
260
|
+
lens.dispatchEvent(new MouseEvent("mouseleave"));
|
|
261
|
+
vi.advanceTimersByTime(CODE_LENS_HOVER_GRACE_MS / 2);
|
|
262
|
+
popover?.dispatchEvent(new MouseEvent("mouseenter"));
|
|
263
|
+
vi.advanceTimersByTime(CODE_LENS_HOVER_GRACE_MS * 5);
|
|
264
|
+
expect(v.dom.querySelector(".mo-cm-tooltip")).toBe(popover);
|
|
265
|
+
|
|
266
|
+
// Popover -> icon: no re-show; the popover is kept as-is
|
|
267
|
+
popover?.dispatchEvent(new MouseEvent("mouseleave"));
|
|
268
|
+
lens.dispatchEvent(new MouseEvent("mouseenter"));
|
|
269
|
+
vi.advanceTimersByTime(CODE_LENS_HOVER_DELAY_MS * 2);
|
|
270
|
+
expect(v.dom.querySelector(".mo-cm-tooltip")).toBe(popover);
|
|
271
|
+
expect(mountLensPopover).toHaveBeenCalledTimes(1);
|
|
272
|
+
|
|
273
|
+
// Leaving the popover for good hides it after the grace period
|
|
274
|
+
lens.dispatchEvent(new MouseEvent("mouseleave"));
|
|
275
|
+
popover?.dispatchEvent(new MouseEvent("mouseenter"));
|
|
276
|
+
popover?.dispatchEvent(new MouseEvent("mouseleave"));
|
|
277
|
+
vi.advanceTimersByTime(CODE_LENS_HOVER_GRACE_MS);
|
|
278
|
+
expect(v.dom.querySelector(".mo-cm-tooltip")).toBeNull();
|
|
279
|
+
});
|
|
280
|
+
|
|
281
|
+
it("keeps the popover open across a lens rebuild for the same lens", async () => {
|
|
282
|
+
seedStore({ tables: [DF_TABLE] });
|
|
283
|
+
const v = await mount("df = load()");
|
|
284
|
+
const lens = lenses(v)[0];
|
|
285
|
+
|
|
286
|
+
lens.dispatchEvent(new MouseEvent("mouseenter"));
|
|
287
|
+
vi.advanceTimersByTime(CODE_LENS_HOVER_DELAY_MS);
|
|
288
|
+
const popover = v.dom.querySelector(".mo-cm-tooltip");
|
|
289
|
+
expect(popover).not.toBeNull();
|
|
290
|
+
|
|
291
|
+
// A store update triggers a (debounced) recompute of the same lenses
|
|
292
|
+
seedStore({ tables: [DF_TABLE] });
|
|
293
|
+
vi.advanceTimersByTime(300);
|
|
294
|
+
await Promise.resolve();
|
|
295
|
+
v.dispatch({});
|
|
296
|
+
expect(v.dom.querySelector(".mo-cm-tooltip")).toBe(popover);
|
|
297
|
+
|
|
298
|
+
// ...but a rebuild that drops the hovered lens closes it
|
|
299
|
+
seedStore({ tables: [] });
|
|
300
|
+
vi.advanceTimersByTime(300);
|
|
301
|
+
await Promise.resolve();
|
|
302
|
+
v.dispatch({});
|
|
303
|
+
expect(lenses(v)).toHaveLength(0);
|
|
240
304
|
expect(v.dom.querySelector(".mo-cm-tooltip")).toBeNull();
|
|
241
305
|
});
|
|
242
306
|
|
|
307
|
+
it("dismisses the editor's own hover tooltips when the icon is entered", async () => {
|
|
308
|
+
seedStore({ tables: [DF_TABLE] });
|
|
309
|
+
const v = await mount("df = load()");
|
|
310
|
+
const lens = lenses(v)[0];
|
|
311
|
+
// CodeMirror's `hoverTooltip` listens for `mouseleave` on `view.dom` to
|
|
312
|
+
// cancel a pending hover and close an open one
|
|
313
|
+
const onLeave = vi.fn();
|
|
314
|
+
v.dom.addEventListener("mouseleave", onLeave);
|
|
315
|
+
|
|
316
|
+
lens.dispatchEvent(new MouseEvent("mouseenter"));
|
|
317
|
+
|
|
318
|
+
expect(onLeave).toHaveBeenCalledTimes(1);
|
|
319
|
+
expect(onLeave.mock.calls[0][0].relatedTarget).toBe(lens);
|
|
320
|
+
});
|
|
321
|
+
|
|
243
322
|
it("does not show a popover before the hover delay", async () => {
|
|
244
323
|
seedStore({ tables: [DF_TABLE] });
|
|
245
324
|
const v = await mount("df = load()");
|
|
@@ -293,7 +372,7 @@ describe("codeLensBundle", () => {
|
|
|
293
372
|
);
|
|
294
373
|
|
|
295
374
|
it("does not render cache lenses when the cache panel is disabled", async () => {
|
|
296
|
-
mockFlags({
|
|
375
|
+
mockFlags({ cache_panel: false });
|
|
297
376
|
const v = await mount("@mo.cache\ndef f():\n return 1");
|
|
298
377
|
|
|
299
378
|
expect(lenses(v)).toHaveLength(0);
|
|
@@ -29,12 +29,108 @@ import { mountLensPopover } from "./popover";
|
|
|
29
29
|
// Delay (in ms) before showing the hover popover, matching the app's
|
|
30
30
|
// tooltip delay
|
|
31
31
|
export const CODE_LENS_HOVER_DELAY_MS = 400;
|
|
32
|
+
// Grace period (in ms) after the pointer leaves the icon (or the popover)
|
|
33
|
+
// before hiding, so the pointer can travel from the icon into the popover
|
|
34
|
+
// without it closing underneath
|
|
35
|
+
export const CODE_LENS_HOVER_GRACE_MS = 200;
|
|
32
36
|
|
|
33
37
|
const setCodeLenses = StateEffect.define<CodeLensSpec[]>();
|
|
34
38
|
const setHoveredLens = StateEffect.define<CodeLensSpec | null>();
|
|
35
39
|
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
function specEquals(a: CodeLensSpec, b: CodeLensSpec): boolean {
|
|
41
|
+
return (
|
|
42
|
+
a.pos === b.pos &&
|
|
43
|
+
a.kind === b.kind &&
|
|
44
|
+
a.name === b.name &&
|
|
45
|
+
a.cache?.boundName === b.cache?.boundName &&
|
|
46
|
+
a.cache?.cacheName === b.cache?.cacheName
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Per-view hover state shared by the lens icons and their popover, so the
|
|
52
|
+
* popover stays open while the pointer is over either of them.
|
|
53
|
+
*/
|
|
54
|
+
class LensHoverController {
|
|
55
|
+
private readonly view: EditorView;
|
|
56
|
+
private showTimer: number | undefined;
|
|
57
|
+
private hideTimer: number | undefined;
|
|
58
|
+
|
|
59
|
+
constructor(view: EditorView) {
|
|
60
|
+
this.view = view;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Pointer entered a lens icon */
|
|
64
|
+
enterLens(spec: CodeLensSpec, icon: HTMLElement): void {
|
|
65
|
+
this.clearTimers();
|
|
66
|
+
dismissEditorHoverTooltips(this.view, icon);
|
|
67
|
+
const hovered = this.view.state.field(codeLensHoverField, false);
|
|
68
|
+
if (hovered && specEquals(hovered.spec, spec)) {
|
|
69
|
+
// Already showing this lens (e.g. pointer came back from the popover)
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.showTimer = window.setTimeout(() => {
|
|
73
|
+
this.showTimer = undefined;
|
|
74
|
+
this.view.dispatch({ effects: setHoveredLens.of(spec) });
|
|
75
|
+
}, CODE_LENS_HOVER_DELAY_MS);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/** Pointer left a lens icon or the popover */
|
|
79
|
+
leave(): void {
|
|
80
|
+
this.clearTimers();
|
|
81
|
+
this.hideTimer = window.setTimeout(() => {
|
|
82
|
+
this.hideTimer = undefined;
|
|
83
|
+
this.hide();
|
|
84
|
+
}, CODE_LENS_HOVER_GRACE_MS);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/** Pointer entered the popover */
|
|
88
|
+
enterPopover(): void {
|
|
89
|
+
window.clearTimeout(this.hideTimer);
|
|
90
|
+
this.hideTimer = undefined;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
hide(): void {
|
|
94
|
+
this.clearTimers();
|
|
95
|
+
if (this.view.state.field(codeLensHoverField, false)) {
|
|
96
|
+
this.view.dispatch({ effects: setHoveredLens.of(null) });
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
destroy(): void {
|
|
101
|
+
this.clearTimers();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
private clearTimers(): void {
|
|
105
|
+
window.clearTimeout(this.showTimer);
|
|
106
|
+
window.clearTimeout(this.hideTimer);
|
|
107
|
+
this.showTimer = undefined;
|
|
108
|
+
this.hideTimer = undefined;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const lensHoverPlugin = ViewPlugin.define(
|
|
113
|
+
(view) => new LensHoverController(view),
|
|
114
|
+
);
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Keeps the editor's own hover tooltips (LSP / documentation hints) from
|
|
118
|
+
* showing for the token the icon sits after.
|
|
119
|
+
*
|
|
120
|
+
* CodeMirror's `hoverTooltip` tracks the last `mousemove` seen on `view.dom`
|
|
121
|
+
* and, once the pointer has rested for its hover delay, opens a tooltip for
|
|
122
|
+
* that position. The icon swallows `mousemove` (see the widget), so a pointer
|
|
123
|
+
* resting on the icon looks to CodeMirror like a pointer resting on the last
|
|
124
|
+
* character it crossed on the way in, and any hover already open for that
|
|
125
|
+
* token never gets closed. A `mouseleave` on `view.dom` is the signal it uses
|
|
126
|
+
* to cancel a pending hover and close an open one, so synthesize that.
|
|
127
|
+
*/
|
|
128
|
+
function dismissEditorHoverTooltips(
|
|
129
|
+
view: EditorView,
|
|
130
|
+
relatedTarget: HTMLElement,
|
|
131
|
+
): void {
|
|
132
|
+
view.dom.dispatchEvent(new MouseEvent("mouseleave", { relatedTarget }));
|
|
133
|
+
}
|
|
38
134
|
|
|
39
135
|
class CodeLensWidget extends WidgetType {
|
|
40
136
|
private readonly spec: CodeLensSpec;
|
|
@@ -45,15 +141,9 @@ class CodeLensWidget extends WidgetType {
|
|
|
45
141
|
}
|
|
46
142
|
|
|
47
143
|
override eq(other: CodeLensWidget): boolean {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
this.spec.pos === other.spec.pos &&
|
|
52
|
-
this.spec.kind === other.spec.kind &&
|
|
53
|
-
this.spec.name === other.spec.name &&
|
|
54
|
-
this.spec.cache?.boundName === other.spec.cache?.boundName &&
|
|
55
|
-
this.spec.cache?.cacheName === other.spec.cache?.cacheName
|
|
56
|
-
);
|
|
144
|
+
// `pos` is captured by the DOM hover/click handlers, so a reused widget
|
|
145
|
+
// whose anchor moved must not be treated as equal
|
|
146
|
+
return specEquals(this.spec, other.spec);
|
|
57
147
|
}
|
|
58
148
|
|
|
59
149
|
override toDOM(view: EditorView): HTMLElement {
|
|
@@ -67,23 +157,13 @@ class CodeLensWidget extends WidgetType {
|
|
|
67
157
|
element.setAttribute("aria-label", LENS_TOOLTIPS[spec.kind]);
|
|
68
158
|
// Static, trusted markup (see icons.ts)
|
|
69
159
|
element.innerHTML = LENS_ICONS[spec.kind];
|
|
70
|
-
const
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
view.dispatch({ effects: setHoveredLens.of(null) });
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
element.onmouseenter = () => {
|
|
78
|
-
const timer = window.setTimeout(() => {
|
|
79
|
-
view.dispatch({ effects: setHoveredLens.of(spec) });
|
|
80
|
-
}, CODE_LENS_HOVER_DELAY_MS);
|
|
81
|
-
HOVER_TIMERS.set(element, timer);
|
|
82
|
-
};
|
|
83
|
-
element.onmouseleave = hidePopover;
|
|
160
|
+
const hover = () => view.plugin(lensHoverPlugin);
|
|
161
|
+
const hidePopover = () => hover()?.hide();
|
|
162
|
+
element.onmouseenter = () => hover()?.enterLens(spec, element);
|
|
163
|
+
element.onmouseleave = () => hover()?.leave();
|
|
84
164
|
element.onmousemove = (event) => {
|
|
85
|
-
// Keep the editor's built-in hover
|
|
86
|
-
//
|
|
165
|
+
// Keep the editor's built-in hover tooltip from re-arming while the
|
|
166
|
+
// pointer is over the icon (see `dismissEditorHoverTooltips`)
|
|
87
167
|
event.stopPropagation();
|
|
88
168
|
};
|
|
89
169
|
element.onmousedown = (event) => {
|
|
@@ -108,48 +188,58 @@ class CodeLensWidget extends WidgetType {
|
|
|
108
188
|
return element;
|
|
109
189
|
}
|
|
110
190
|
|
|
111
|
-
override destroy(dom: HTMLElement): void {
|
|
112
|
-
window.clearTimeout(HOVER_TIMERS.get(dom));
|
|
113
|
-
HOVER_TIMERS.delete(dom);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
191
|
override ignoreEvent(): boolean {
|
|
117
192
|
// The widget handles its own events
|
|
118
193
|
return true;
|
|
119
194
|
}
|
|
120
195
|
}
|
|
121
196
|
|
|
122
|
-
|
|
123
|
-
|
|
197
|
+
interface HoveredLens {
|
|
198
|
+
spec: CodeLensSpec;
|
|
199
|
+
tooltip: Tooltip;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
function createHoveredLens(spec: CodeLensSpec): HoveredLens {
|
|
203
|
+
const tooltip: Tooltip = {
|
|
124
204
|
pos: spec.pos,
|
|
125
205
|
above: true,
|
|
126
|
-
create: () => {
|
|
206
|
+
create: (view) => {
|
|
127
207
|
const dom = document.createElement("div");
|
|
128
208
|
// Same chrome as the SQL completion/hover popovers
|
|
129
209
|
dom.classList.add("mo-cm-tooltip", "docs-documentation");
|
|
210
|
+
// The popover is scrollable, so keep it open while the pointer is
|
|
211
|
+
// inside it
|
|
212
|
+
dom.onmouseenter = () => view.plugin(lensHoverPlugin)?.enterPopover();
|
|
213
|
+
dom.onmouseleave = () => view.plugin(lensHoverPlugin)?.leave();
|
|
130
214
|
const unmount = mountLensPopover(dom, spec);
|
|
131
215
|
return { dom, resize: false, destroy: unmount };
|
|
132
216
|
},
|
|
133
217
|
};
|
|
218
|
+
return { spec, tooltip };
|
|
134
219
|
}
|
|
135
220
|
|
|
136
|
-
const codeLensHoverField = StateField.define<
|
|
221
|
+
const codeLensHoverField = StateField.define<HoveredLens | null>({
|
|
137
222
|
create() {
|
|
138
223
|
return null;
|
|
139
224
|
},
|
|
140
|
-
update(
|
|
225
|
+
update(hovered, tr) {
|
|
141
226
|
for (const effect of tr.effects) {
|
|
142
227
|
if (effect.is(setHoveredLens)) {
|
|
143
|
-
return effect.value ?
|
|
228
|
+
return effect.value ? createHoveredLens(effect.value) : null;
|
|
144
229
|
}
|
|
145
|
-
if (effect.is(setCodeLenses)) {
|
|
146
|
-
// Lenses were rebuilt
|
|
147
|
-
|
|
230
|
+
if (effect.is(setCodeLenses) && hovered) {
|
|
231
|
+
// Lenses were rebuilt (e.g. after a store update); keep the popover
|
|
232
|
+
// only if the hovered lens is still there, unchanged
|
|
233
|
+
const stillPresent = effect.value.some((spec) =>
|
|
234
|
+
specEquals(spec, hovered.spec),
|
|
235
|
+
);
|
|
236
|
+
return stillPresent ? hovered : null;
|
|
148
237
|
}
|
|
149
238
|
}
|
|
150
|
-
return tr.docChanged ? null :
|
|
239
|
+
return tr.docChanged ? null : hovered;
|
|
151
240
|
},
|
|
152
|
-
provide: (field) =>
|
|
241
|
+
provide: (field) =>
|
|
242
|
+
showTooltip.from(field, (hovered) => hovered?.tooltip ?? null),
|
|
153
243
|
});
|
|
154
244
|
|
|
155
245
|
const codeLensField = StateField.define<DecorationSet>({
|
|
@@ -263,13 +353,19 @@ class CodeLensPlugin {
|
|
|
263
353
|
}
|
|
264
354
|
}
|
|
265
355
|
|
|
356
|
+
// Padding around the 12px icon so the hover/click target isn't tiny
|
|
357
|
+
const LENS_HIT_PADDING = "3px";
|
|
358
|
+
|
|
266
359
|
const codeLensTheme = EditorView.baseTheme({
|
|
267
360
|
".mo-code-lens": {
|
|
268
361
|
display: "inline-flex",
|
|
269
362
|
verticalAlign: "baseline",
|
|
270
363
|
// Optically center the icon against the text
|
|
271
364
|
transform: "translateY(1.5px)",
|
|
272
|
-
|
|
365
|
+
// Enlarge the hit area without affecting layout: the padding is pulled
|
|
366
|
+
// back in with negative vertical margins so the line height is unchanged
|
|
367
|
+
padding: LENS_HIT_PADDING,
|
|
368
|
+
margin: `-${LENS_HIT_PADDING} 0 -${LENS_HIT_PADDING} calc(0.3em - ${LENS_HIT_PADDING})`,
|
|
273
369
|
cursor: "pointer",
|
|
274
370
|
opacity: "0.5",
|
|
275
371
|
},
|
|
@@ -281,15 +377,16 @@ const codeLensTheme = EditorView.baseTheme({
|
|
|
281
377
|
/**
|
|
282
378
|
* Inline icons linking datasource/bucket variables and `mo.cache` /
|
|
283
379
|
* `mo.persistent_cache` calls to their panels.
|
|
284
|
-
*
|
|
380
|
+
* Configurable via the `display.code_lens` user config (on by default).
|
|
285
381
|
*/
|
|
286
|
-
export function codeLensBundle(cellId: CellId): Extension {
|
|
287
|
-
if (!
|
|
382
|
+
export function codeLensBundle(cellId: CellId, enabled = true): Extension {
|
|
383
|
+
if (!enabled) {
|
|
288
384
|
return [];
|
|
289
385
|
}
|
|
290
386
|
return [
|
|
291
387
|
codeLensField,
|
|
292
388
|
codeLensHoverField,
|
|
389
|
+
lensHoverPlugin,
|
|
293
390
|
ViewPlugin.define(
|
|
294
391
|
(view) => new CodeLensPlugin(view, cellId, getFeatureFlag("cache_panel")),
|
|
295
392
|
),
|
|
@@ -140,11 +140,16 @@ export const searchHighlighter = ViewPlugin.fromClass(
|
|
|
140
140
|
);
|
|
141
141
|
|
|
142
142
|
export const highlightTheme = EditorView.baseTheme({
|
|
143
|
-
"&light .cm-searchMatch": {
|
|
144
|
-
|
|
143
|
+
"&light .cm-searchMatch": {
|
|
144
|
+
backgroundColor: "var(--cm-search-match-background-light)",
|
|
145
|
+
},
|
|
146
|
+
"&dark .cm-searchMatch": {
|
|
147
|
+
backgroundColor: "var(--cm-search-match-background-dark)",
|
|
148
|
+
},
|
|
145
149
|
|
|
146
150
|
"&light .cm-searchMatch-selected": { backgroundColor: "transparent" },
|
|
147
151
|
"&dark .cm-searchMatch.cm-searchMatch-selected": {
|
|
148
|
-
backgroundColor:
|
|
152
|
+
backgroundColor:
|
|
153
|
+
"var(--cm-search-match-selected-background-dark) !important",
|
|
149
154
|
},
|
|
150
155
|
});
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import { render } from "@testing-library/react";
|
|
4
|
+
import { describe, expect, it } from "vitest";
|
|
5
|
+
import type {
|
|
6
|
+
DataTable,
|
|
7
|
+
DataTableColumn,
|
|
8
|
+
DataType,
|
|
9
|
+
} from "@/core/kernel/messages";
|
|
10
|
+
import { renderColumnInfo, renderTableInfo } from "../renderers";
|
|
11
|
+
|
|
12
|
+
const geometryColumn = {
|
|
13
|
+
name: "geom",
|
|
14
|
+
type: "geometry" as DataType,
|
|
15
|
+
external_type: "geometry",
|
|
16
|
+
sample_values: [],
|
|
17
|
+
} as DataTableColumn;
|
|
18
|
+
|
|
19
|
+
describe("SQL renderers", () => {
|
|
20
|
+
it("renders table information with an unrecognized column type", () => {
|
|
21
|
+
const table: DataTable = {
|
|
22
|
+
name: "shapes",
|
|
23
|
+
type: "table",
|
|
24
|
+
source: "local",
|
|
25
|
+
source_type: "local",
|
|
26
|
+
num_rows: null,
|
|
27
|
+
num_columns: 1,
|
|
28
|
+
variable_name: null,
|
|
29
|
+
columns: [geometryColumn],
|
|
30
|
+
primary_keys: [],
|
|
31
|
+
indexes: [],
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const result = render(renderTableInfo(table));
|
|
35
|
+
|
|
36
|
+
expect(result.container.querySelector("svg")).not.toBeNull();
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
it("renders column information with an unrecognized column type", () => {
|
|
40
|
+
const result = render(renderColumnInfo(geometryColumn));
|
|
41
|
+
|
|
42
|
+
expect(result.container.querySelector("svg")).not.toBeNull();
|
|
43
|
+
});
|
|
44
|
+
});
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
TableIcon,
|
|
14
14
|
ViewIcon,
|
|
15
15
|
} from "@/components/databases/namespace-icons";
|
|
16
|
-
import { DATA_TYPE_ICON } from "@/components/datasets/icons";
|
|
16
|
+
import { DATA_TYPE_ICON, resolveDataType } from "@/components/datasets/icons";
|
|
17
17
|
import { Badge } from "@/components/ui/badge";
|
|
18
18
|
import {
|
|
19
19
|
type ConnectionName,
|
|
@@ -149,7 +149,7 @@ export const renderTableInfo = (table: DataTable): React.ReactNode => {
|
|
|
149
149
|
);
|
|
150
150
|
|
|
151
151
|
const columnItems = table.columns.map((column) => {
|
|
152
|
-
const TypeIcon = DATA_TYPE_ICON[column.type];
|
|
152
|
+
const TypeIcon = DATA_TYPE_ICON[resolveDataType(column.type)];
|
|
153
153
|
return (
|
|
154
154
|
<div
|
|
155
155
|
key={column.name}
|
|
@@ -288,7 +288,7 @@ export const renderTableInfo = (table: DataTable): React.ReactNode => {
|
|
|
288
288
|
};
|
|
289
289
|
|
|
290
290
|
export const renderColumnInfo = (column: DataTableColumn): React.ReactNode => {
|
|
291
|
-
const TypeIcon = DATA_TYPE_ICON[column.type];
|
|
291
|
+
const TypeIcon = DATA_TYPE_ICON[resolveDataType(column.type)];
|
|
292
292
|
|
|
293
293
|
const typeBadge = (
|
|
294
294
|
<Badge
|