@marimo-team/frontend 0.23.16-dev5 → 0.23.16-dev51
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/assets/{CellStatus-BalYv0pK.js → CellStatus-DciB5rbr.js} +1 -1
- package/dist/assets/{ConnectedDataExplorerComponent-DI7mV-Gw.js → ConnectedDataExplorerComponent-CXp99aFw.js} +1 -1
- package/dist/assets/{ErrorBoundary-C7_5jjWi.js → ErrorBoundary-DzTD8LVq.js} +1 -1
- package/dist/assets/{ImperativeModal-BIavOiUv.js → ImperativeModal-fY-ZfT0b.js} +1 -1
- package/dist/assets/JsonOutput-BM3vve9F.js +53 -0
- package/dist/assets/LazyAnyLanguageCodeMirror-DPOEues4.js +2 -0
- package/dist/assets/{MarimoErrorOutput-DO2k2fA5.js → MarimoErrorOutput-Bh0y53Du.js} +4 -4
- package/dist/assets/{RSPContexts-CgC81f0I.js → RSPContexts-WiCgGm__.js} +1 -1
- package/dist/assets/RenderHTML-B9jx7Dsm.js +1 -0
- package/dist/assets/{RunButton-BKRupqr7.js → RunButton-DMtHbFuA.js} +1 -1
- package/dist/assets/{add-cell-with-ai-CEZtaZCK.js → add-cell-with-ai-BcRYriMM.js} +35 -35
- package/dist/assets/add-connection-dialog-syjRSNPT.js +178 -0
- package/dist/assets/{agent-panel-CHB6t7Zy.js → agent-panel-B31W_VwU.js} +5 -5
- package/dist/assets/ai-model-dropdown-B3D05oQh.js +5 -0
- package/dist/assets/{alert-dialog-BXegNC0I.js → alert-dialog-Bb8Lz8ko.js} +1 -1
- package/dist/assets/{any-language-editor-DCpZRrpx.js → any-language-editor-BDvoKhJM.js} +1 -1
- package/dist/assets/apl-B-7blH-b.js +1 -0
- package/dist/assets/app-config-button-D_mjovwU.js +1 -0
- package/dist/assets/{arc-CfUZAQDm.js → arc-CezuXhk_.js} +1 -1
- package/dist/assets/{architecture-7HQA4BMR-Bvqj37EA.js → architecture-7HQA4BMR-Dy7zkjw8.js} +1 -1
- package/dist/assets/{architectureDiagram-VXUJARFQ-sx_yisiZ.js → architectureDiagram-VXUJARFQ-BmOSh2SW.js} +1 -1
- package/dist/assets/asciiarmor-D3K8amZ9.js +1 -0
- package/dist/assets/asn1-UGGn98tp.js +1 -0
- package/dist/assets/blob-BJREJiQp.js +1 -0
- package/dist/assets/{blockDiagram-VD42YOAC-KexI-fgH.js → blockDiagram-VD42YOAC-DHO0ifdn.js} +1 -1
- package/dist/assets/brainfuck-B4y4U3tg.js +1 -0
- package/dist/assets/{button-eIihcbUw.js → button-DDGiD1NW.js} +1 -1
- package/dist/assets/{c4Diagram-YG6GDRKO-d8NrlxRF.js → c4Diagram-YG6GDRKO-ByToYMes.js} +1 -1
- package/dist/assets/{cache-panel-wllSTlbM.js → cache-panel-Bvnkzrzd.js} +1 -1
- package/dist/assets/{capabilities-B09j1Eor.js → capabilities-DoEg0XwL.js} +1 -1
- package/dist/assets/{cell-editor-B5JVq7_q.js → cell-editor-BOhZHoLm.js} +17 -17
- package/dist/assets/cell-link-DqNEv3f9.js +1 -0
- package/dist/assets/cells-Jr-5Pc9f.js +235 -0
- package/dist/assets/channel-hYe4T32r.js +1 -0
- package/dist/assets/{chat-display-BG08ltQ3.js → chat-display-Djy1Jt6b.js} +1 -1
- package/dist/assets/{chat-panel-P2CzCtXJ.js → chat-panel-B2nYSE_l.js} +4 -4
- package/dist/assets/{chat-ui-fAJZAoTD.js → chat-ui-DlG0En7w.js} +4 -4
- package/dist/assets/{chunk-4BX2VUAB-fhh1HlXH.js → chunk-4BX2VUAB-BsEakQWN.js} +1 -1
- package/dist/assets/chunk-55IACEB6-DkGbQmsa.js +1 -0
- package/dist/assets/{chunk-5FQGJX7Z-Cp0LZT-a.js → chunk-5FQGJX7Z-BEbM01OT.js} +2 -2
- package/dist/assets/{chunk-ABZYJK2D-BtK4zInQ.js → chunk-ABZYJK2D-CCNXe-E2.js} +3 -3
- package/dist/assets/{chunk-ATLVNIR6-YZDenslF.js → chunk-ATLVNIR6-yY0weiRB.js} +1 -1
- package/dist/assets/{chunk-B4BG7PRW-DYIZwDbt.js → chunk-B4BG7PRW-DtjHcIBO.js} +1 -1
- package/dist/assets/{chunk-CVBHYZKI-CIyHeK0Q.js → chunk-CVBHYZKI-D1ar3Zzb.js} +1 -1
- package/dist/assets/{chunk-DI55MBZ5-TodwBGEN.js → chunk-DI55MBZ5-BxB9Lmc6.js} +1 -1
- package/dist/assets/{chunk-EXTU4WIE-C76bF1UD.js → chunk-EXTU4WIE-Do43HMrz.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-Yq65IDPA.js → chunk-FMBD7UC4-FWkYBdS7.js} +1 -1
- package/dist/assets/{chunk-HN2XXSSU-CcbN4n6W.js → chunk-HN2XXSSU-nVY6M8Me.js} +1 -1
- package/dist/assets/{chunk-JA3XYJ7Z-CPXEu7AX.js → chunk-JA3XYJ7Z-52dYwyoT.js} +1 -1
- package/dist/assets/{chunk-JZLCHNYA-D8q1z6Py.js → chunk-JZLCHNYA-BHSouLxk.js} +1 -1
- package/dist/assets/{chunk-MI3HLSF2-bmomnexd.js → chunk-MI3HLSF2-BwgHEi3_.js} +1 -1
- package/dist/assets/{chunk-N4CR4FBY-BhsjB2qn.js → chunk-N4CR4FBY-BkAnRh0J.js} +2 -2
- package/dist/assets/{chunk-QN33PNHL-ngvPqyQ0.js → chunk-QN33PNHL-DWzHlkYI.js} +1 -1
- package/dist/assets/{chunk-QXUST7PY-C4c0Sjmn.js → chunk-QXUST7PY-CjtWgrZg.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-CkbwBDOS.js → chunk-QZHKN3VN-CmAwpNoC.js} +1 -1
- package/dist/assets/{chunk-S3R3BYOJ-Bt2NnquF.js → chunk-S3R3BYOJ-DcZAYEft.js} +1 -1
- package/dist/assets/{chunk-TZMSLE5B-Dysko1OC.js → chunk-TZMSLE5B-D2-o8-XQ.js} +1 -1
- package/dist/assets/classDiagram-2ON5EDUG-DapsPtpH.js +1 -0
- package/dist/assets/classDiagram-v2-WZHVMYZB-Oa2f7U6n.js +1 -0
- package/dist/assets/{clike-DKPr2D1_.js → clike-BAN6KopO.js} +1 -1
- package/dist/assets/clojure-BAZ-ejkG.js +1 -0
- package/dist/assets/cmake-jWn0xN9y.js +1 -0
- package/dist/assets/cobol-XqY9jaWP.js +1 -0
- package/dist/assets/{code-block-37QAKDTI-DlENujeV.js → code-block-37QAKDTI-DdMTHZGu.js} +1 -1
- package/dist/assets/coffeescript-DI1jfZHX.js +1 -0
- package/dist/assets/{column-preview-Dne1dIt0.js → column-preview-BUHlI5va.js} +1 -1
- package/dist/assets/{command-CAJLPEBq.js → command-Dqxie4gq.js} +1 -1
- package/dist/assets/{command-palette-iOCqUIs1.js → command-palette-rEJmXCZM.js} +1 -1
- package/dist/assets/{common-CD6Mj8n6.js → common-CZc3fQI4.js} +1 -1
- package/dist/assets/commonlisp-UKb01OlU.js +1 -0
- package/dist/assets/components-GAYCj6Mx.js +1 -0
- package/dist/assets/config-B-Q7J_6d.js +1 -0
- package/dist/assets/{config-COUOIPEq.js → config-BJVx3eBW.js} +1 -1
- package/dist/assets/{copy-BtTOqPTS.js → copy-Bxb1_Gtw.js} +1 -1
- package/dist/assets/{copy-icon-C2pG0ZNK.js → copy-icon-neDQUo4Q.js} +1 -1
- package/dist/assets/{cose-bilkent-S5V4N54A-BlMw4-M9.js → cose-bilkent-S5V4N54A-B4-5phSs.js} +1 -1
- package/dist/assets/{createReducer-C7kZ8zEe.js → createReducer-DGx5Af-C.js} +1 -1
- package/dist/assets/crystal-DOvjTBWA.js +1 -0
- package/dist/assets/{css-DsUcFZz8.js → css-DWLxGm3Z.js} +1 -1
- package/dist/assets/cypher-CLDhu2ae.js +1 -0
- package/dist/assets/d-C0ecUZk9.js +1 -0
- package/dist/assets/{dagre-6UL2VRFP-kJ4x17JK.js → dagre-6UL2VRFP-2XhH1Ri-.js} +1 -1
- package/dist/assets/{data-grid-overlay-editor-DbobQcVo.js → data-grid-overlay-editor-B4LrPNw9.js} +1 -1
- package/dist/assets/{datasource-ySAiC9gr.js → datasource-AWkkAeiS.js} +2 -2
- package/dist/assets/{dates-D-kIKDYA.js → dates-C2LWzsCZ.js} +1 -1
- package/dist/assets/{dependency-graph-panel-BF23EwcD.js → dependency-graph-panel-wcqTPq6b.js} +3 -3
- package/dist/assets/{diagram-PSM6KHXK-d-5aQNHk.js → diagram-PSM6KHXK-CAqt0euW.js} +1 -1
- package/dist/assets/{diagram-QEK2KX5R-CO-PXq75.js → diagram-QEK2KX5R-D5cgX3Vp.js} +1 -1
- package/dist/assets/{diagram-S2PKOQOG-Dv7pcvYC.js → diagram-S2PKOQOG-ibWavdR5.js} +1 -1
- package/dist/assets/{dialog-D1DEsRZ2.js → dialog-BCVepWLJ.js} +1 -1
- package/dist/assets/diff-657cCCVc.js +1 -0
- package/dist/assets/{dist-CRrIf3gB.js → dist-7L5iW3e_.js} +1 -1
- package/dist/assets/{dist-ByVeMWkr.js → dist-BLN8PNJV.js} +1 -1
- package/dist/assets/{dist-R1kU4nzJ.js → dist-Bcpo9599.js} +1 -1
- package/dist/assets/{dist-DQNaXfK1.js → dist-BrZHhdmA.js} +1 -1
- package/dist/assets/dist-C00gHjPp.js +1 -0
- package/dist/assets/{dist-0QUuSoRx.js → dist-C4El4p_-.js} +1 -1
- package/dist/assets/{dist-BsphJPAV.js → dist-CIYjZ11d.js} +1 -1
- package/dist/assets/{dist-Du-wcJyR.js → dist-COTjOJlM.js} +1 -1
- package/dist/assets/dist-CWNfBqYo.js +1 -0
- package/dist/assets/dist-Cck3fpDq.js +1 -0
- package/dist/assets/dist-CiVShZKM.js +2 -0
- package/dist/assets/{dist-CECF_J8y.js → dist-DIQO2yAn.js} +1 -1
- package/dist/assets/{dist-BMOD2Pyh.js → dist-DabFEfar.js} +1 -1
- package/dist/assets/dist-f5euh_Pv.js +1 -0
- package/dist/assets/{dist-CDUl-YL4.js → dist-ryTWanRP.js} +1 -1
- package/dist/assets/{dist-6c4zOh78.js → dist-sg9T7Ulw.js} +1 -1
- package/dist/assets/{dist-sPfKr-vH.js → dist-wSuqFvon.js} +1 -1
- package/dist/assets/{dockerfile-C2PznFWk.js → dockerfile-kqVBOcIP.js} +1 -1
- package/dist/assets/{documentation-panel-e9Fi9R7e.js → documentation-panel-Eu8MIkoU.js} +1 -1
- package/dist/assets/download-CQ7iZFJL.js +9 -0
- package/dist/assets/{dropdown-menu-BFZLnWeO.js → dropdown-menu-dHmZR8bI.js} +1 -1
- package/dist/assets/dtd-DSiK7Qgi.js +1 -0
- package/dist/assets/dylan-07d5-7Q9.js +1 -0
- package/dist/assets/ecl-CSTUHiwq.js +1 -0
- package/dist/assets/{edit-page-7X3HYey7.js → edit-page-Cw7nN6HC.js} +6 -6
- package/dist/assets/eiffel-DR99GcsM.js +1 -0
- package/dist/assets/elm-Cmh0iW6J.js +1 -0
- package/dist/assets/{erDiagram-Q2GNP2WA-BQ8HfnRu.js → erDiagram-Q2GNP2WA-BaY7iomT.js} +1 -1
- package/dist/assets/erlang-CS9Yc6UC.js +1 -0
- package/dist/assets/{error-banner-B6eIlxzg.js → error-banner-BSxEOIn2.js} +1 -1
- package/dist/assets/error-entries-Cr8uVukN.js +8 -0
- package/dist/assets/{error-panel-DdsUL6b7.js → error-panel-BZzr0PA1.js} +1 -1
- package/dist/assets/{es-1D83cgiu.js → es-gYgfF8y5.js} +1 -1
- package/dist/assets/{esm-BL7jQmzn.js → esm-B30N1GS0.js} +1 -1
- package/dist/assets/{esm-Cmv0Nuxi.js → esm-DqItXpGT.js} +1 -1
- package/dist/assets/{factor-DMrXrOH8.js → factor-D96xahcJ.js} +1 -1
- package/dist/assets/factor-DjB27Lcf.js +1 -0
- package/dist/assets/{field-BeZbVzXA.js → field-BsxD35VE.js} +1 -1
- package/dist/assets/file-explorer-panel-C1W7g_Wp.js +26 -0
- package/dist/assets/{file-icons-Cb54mIL8.js → file-icons-BAqZR08W.js} +1 -1
- package/dist/assets/{file-name-input-BWFcK1ey.js → file-name-input-0MiZVw5r.js} +1 -1
- package/dist/assets/{fileToBase64-C2Yy-YXq.js → fileToBase64-Dgfa7TRQ.js} +1 -1
- package/dist/assets/floating-outline-C6g75zrP.js +1 -0
- package/dist/assets/{flowDiagram-NV44I4VS-xBOzhlfg.js → flowDiagram-NV44I4VS-C_6PGGE6.js} +1 -1
- package/dist/assets/focus-C0HXXg3V.js +1 -0
- package/dist/assets/form-C051zAev.js +1 -0
- package/dist/assets/{form-B6BkSCJb.js → form-DT44Rmhp.js} +2 -2
- package/dist/assets/{formats-ClEFGPy-.js → formats-DzmLpc9A.js} +1 -1
- package/dist/assets/{formatting-B_41gSF5.js → formatting-DQX9QUSf.js} +1 -1
- package/dist/assets/forth-UwTUu7NY.js +1 -0
- package/dist/assets/fortran-cptiB4gJ.js +1 -0
- package/dist/assets/{fullscreen-dUjPYOmm.js → fullscreen-CTDqNQr6.js} +1 -1
- package/dist/assets/{gallery-page-CWQQAYpa.js → gallery-page-CL1y8LXc.js} +1 -1
- package/dist/assets/{ganttDiagram-JELNMOA3-D2O_k-Zg.js → ganttDiagram-JELNMOA3-CJFyE5hs.js} +1 -1
- package/dist/assets/gas-ajMbd9Us.js +1 -0
- package/dist/assets/gherkin-ClYkalzE.js +1 -0
- package/dist/assets/{gitGraph-G5XIXVHT-8HJwNcdU.js → gitGraph-G5XIXVHT-BP96QVP9.js} +1 -1
- package/dist/assets/{gitGraphDiagram-V2S2FVAM-Nk4Ll9GY.js → gitGraphDiagram-V2S2FVAM-CGQPWKR8.js} +1 -1
- package/dist/assets/{glide-data-editor-lMARFWHS.js → glide-data-editor-Badziq3Y.js} +4 -4
- package/dist/assets/groovy-BY-gt7AW.js +1 -0
- package/dist/assets/haskell-D1BeJ7SR.js +1 -0
- package/dist/assets/haxe-QOq5WFXx.js +1 -0
- package/dist/assets/home-page-CJz9IHZ2.js +4 -0
- package/dist/assets/{html-to-image-CwmX28T9.js → html-to-image-CfjhKLA4.js} +2 -2
- package/dist/assets/idl-3-UcEGx7.js +1 -0
- package/dist/assets/index-CrEgp1mR.js +38 -0
- package/dist/assets/index-D6Dp_PFj.css +2 -0
- package/dist/assets/{info-VBDWY6EO-rfe3WPvd.js → info-VBDWY6EO-B7aeNYNu.js} +1 -1
- package/dist/assets/infoDiagram-HS3SLOUP-BT7ISZ3J.js +2 -0
- package/dist/assets/{input-CqrUjynb.js → input-JxFwu-3G.js} +1 -1
- package/dist/assets/javascript-CorD44JN.js +1 -0
- package/dist/assets/{journeyDiagram-XKPGCS4Q-D61FGivn.js → journeyDiagram-XKPGCS4Q-DhyWkFu7.js} +1 -1
- package/dist/assets/julia-BYqTtTAl.js +1 -0
- package/dist/assets/{kanban-definition-3W4ZIXB7-Bnv0X0Tu.js → kanban-definition-3W4ZIXB7-B2A0FPA_.js} +1 -1
- package/dist/assets/katex-BnxSCReZ.js +1 -0
- package/dist/assets/kiosk-mode-CWGEgpon.js +1 -0
- package/dist/assets/{label-BElwWzf0.js → label-CqjrpwRC.js} +1 -1
- package/dist/assets/{layout-CUlZijwG.js → layout-D4bpsgVD.js} +5 -5
- package/dist/assets/{line-DNm2phYo.js → line-1dURhxkp.js} +1 -1
- package/dist/assets/{linear-CTQqNbVX.js → linear-gmSPLe7o.js} +1 -1
- package/dist/assets/{links-CToBjIIj.js → links-CiT7FeSM.js} +1 -1
- package/dist/assets/livescript-qYgfNnNE.js +1 -0
- package/dist/assets/logs-panel-CsaY3O1m.js +1 -0
- package/dist/assets/{loro_wasm_bg-Duqr-kJ2.js → loro_wasm_bg-DWuCVDfB.js} +1 -1
- package/dist/assets/lua-BCqCjdfz.js +1 -0
- package/dist/assets/{markdown-renderer-QvXG0CRk.js → markdown-renderer-BgqeO4JR.js} +3 -3
- package/dist/assets/mathematica-XKwMfn0d.js +1 -0
- package/dist/assets/mbox-BnkeOnif.js +1 -0
- package/dist/assets/{menu-items-DbSLBfXR.js → menu-items-CCi6aOPm.js} +1 -1
- package/dist/assets/{mermaid-4DMBBIKO-CDGmT6YQ.js → mermaid-4DMBBIKO-DxfSuOnE.js} +1 -1
- package/dist/assets/{mermaid-Bh0flEIb.js → mermaid-Dfx05w1B.js} +3 -3
- package/dist/assets/{mermaid-parser.core-Dz2GMGqQ.js → mermaid-parser.core-OagDSIIt.js} +2 -2
- package/dist/assets/{mhchem-CIWniJp4.js → mhchem-Dka9kRKN.js} +1 -1
- package/dist/assets/{mindmap-definition-VGOIOE7T-C-YaKmEU.js → mindmap-definition-VGOIOE7T-torqqISZ.js} +1 -1
- package/dist/assets/mirc-ipoElhai.js +1 -0
- package/dist/assets/mllike-DmouQ5Dp.js +1 -0
- package/dist/assets/modelica-BtmmVsUf.js +1 -0
- package/dist/assets/mscgen-BHZmHZgz.js +1 -0
- package/dist/assets/mumps-oKfoFTl_.js +1 -0
- package/dist/assets/{name-cell-input-C6cukQ9k.js → name-cell-input-DcU8Rfrz.js} +1 -1
- package/dist/assets/node-sql-parser-Dpr10aqR.js +68 -0
- package/dist/assets/nsis-DDOPnuAW.js +1 -0
- package/dist/assets/{nsis-Ccvd1gbp.js → nsis-gzbsJ5t0.js} +1 -1
- package/dist/assets/ntriples-Dsyl_sOF.js +1 -0
- package/dist/assets/{number-overlay-editor-BQ9P6yP7.js → number-overlay-editor-DlQjqV32.js} +1 -1
- package/dist/assets/{numbers-CeeaFKqu.js → numbers-rmawRqQP.js} +1 -1
- package/dist/assets/octave-CI5RGMPa.js +1 -0
- package/dist/assets/{ordinal-DyTNGK17.js → ordinal-W4TcDjiJ.js} +1 -1
- package/dist/assets/{outline-panel-BPlg9_CE.js → outline-panel-D-CHPZQM.js} +1 -1
- package/dist/assets/oz-D01pKAWx.js +1 -0
- package/dist/assets/{packages-panel-BzQF60rG.js → packages-panel-dq7QVZl1.js} +1 -1
- package/dist/assets/{packet-DYOGHKS2-DTVloLa7.js → packet-DYOGHKS2-B2FlK_cc.js} +1 -1
- package/dist/assets/pair-with-agent-modal-D2vO1D8g.js +4 -0
- package/dist/assets/panels-DWoniKhE.js +4 -0
- package/dist/assets/pascal-DGXfnIFD.js +1 -0
- package/dist/assets/perl-gZ7qIkF-.js +1 -0
- package/dist/assets/{pie-VRWISCQL-Bmght6JF.js → pie-VRWISCQL-rtCNhZhm.js} +1 -1
- package/dist/assets/{pieDiagram-ADFJNKIX-DlFYL0BN.js → pieDiagram-ADFJNKIX-vSo1I9sb.js} +1 -1
- package/dist/assets/pig-Cb90ayl-.js +1 -0
- package/dist/assets/{popover-DrHQ3KEt.js → popover-Bcz1Zikb.js} +1 -1
- package/dist/assets/powershell-_YxddSL3.js +1 -0
- package/dist/assets/process-output-NbwnUu05.js +1 -0
- package/dist/assets/properties-sU50dmvt.js +1 -0
- package/dist/assets/protobuf-DFdF-yfo.js +1 -0
- package/dist/assets/{pug-BtXi5KiX.js → pug-CfBtO6QD.js} +1 -1
- package/dist/assets/pug-DwUB-C24.js +1 -0
- package/dist/assets/puppet-DtKzwiZ6.js +1 -0
- package/dist/assets/python-BMLOKYmk.js +1 -0
- package/dist/assets/q-BF1zXMdP.js +1 -0
- package/dist/assets/{quadrantDiagram-AYHSOK5B-BpJug2BH.js → quadrantDiagram-AYHSOK5B-DonUSsuk.js} +1 -1
- package/dist/assets/r-BQiKhVSI.js +1 -0
- package/dist/assets/{radar-ZZBFDIW7-CYwWzRgW.js → radar-ZZBFDIW7-CRVupj1O.js} +1 -1
- package/dist/assets/{radio-group-CLBjGkt5.js → radio-group-rhQpGwU-.js} +1 -1
- package/dist/assets/{react-vega-TNCk_eWj.js → react-vega-Bd66vLSZ.js} +1 -1
- package/dist/assets/{readonly-code-display-D63oRtBP.js → readonly-code-display-CVY2f7EZ.js} +1 -1
- package/dist/assets/{readonly-python-code-CW_G5e4E.js → readonly-python-code-Q_1Y3VyZ.js} +1 -1
- package/dist/assets/{renderShortcut-BZLr8D7H.js → renderShortcut-Bl8_FVn8.js} +1 -1
- package/dist/assets/{requirementDiagram-UZGBJVZJ-Bd-1eny8.js → requirementDiagram-UZGBJVZJ-D8rJ1Dg-.js} +1 -1
- package/dist/assets/{reveal-component-BLMTmd8T.js → reveal-component-CedpDwM8.js} +60 -60
- package/dist/assets/rpm-v7UTuaHo.js +1 -0
- package/dist/assets/ruby-Cw43FpG3.js +1 -0
- package/dist/assets/{run-page-B6pgDYEJ.js → run-page-CGoux5cj.js} +1 -1
- package/dist/assets/{runs-D51Xwrsk.js → runs-CZN8py6x.js} +1 -1
- package/dist/assets/{sankeyDiagram-TZEHDZUN-CDWAE6GV.js → sankeyDiagram-TZEHDZUN-Bufh177s.js} +1 -1
- package/dist/assets/sas-BIKscqlp.js +1 -0
- package/dist/assets/scheme-CGic3hSV.js +1 -0
- package/dist/assets/scratchpad-panel-BLuF25yR.js +1 -0
- package/dist/assets/{scroll-to-bottom-button-Cgr10kaJ.js → scroll-to-bottom-button-C8yfT4wq.js} +1 -1
- package/dist/assets/{secrets-panel-Cc5KDBk6.js → secrets-panel-4Qy7R-wy.js} +1 -1
- package/dist/assets/{select-B5TFNjmU.js → select-BP75_5jJ.js} +1 -1
- package/dist/assets/{sequenceDiagram-WL72ISMW-B6hjDGBF.js → sequenceDiagram-WL72ISMW-DOsQdDD2.js} +1 -1
- package/dist/assets/{session-CEFnN9Cq.js → session-BmukRjSi.js} +1 -1
- package/dist/assets/session-panel-OIot3eyB.js +1 -0
- package/dist/assets/{share-CYpcX4N4.js → share-852X_cqy.js} +1 -1
- package/dist/assets/shell-DAh545tm.js +1 -0
- package/dist/assets/sieve-bGkng63-.js +1 -0
- package/dist/assets/{skeleton-D3QPxqWC.js → skeleton-BRvjFlRu.js} +1 -1
- package/dist/assets/slides-DkEgzTJB.css +1 -0
- package/dist/assets/smalltalk-fIw53lm8.js +1 -0
- package/dist/assets/{snippets-panel-CXpGflMO.js → snippets-panel-YFyH2hUM.js} +1 -1
- package/dist/assets/sparql-CHbJrAY_.js +1 -0
- package/dist/assets/{spec-CzqcmYQk.js → spec-C7opZZRp.js} +1 -1
- package/dist/assets/{src-CIOdyciO.js → src-BSYB0gI9.js} +1 -1
- package/dist/assets/state-DB_fxbhn.js +3 -0
- package/dist/assets/{state-WBgc7MiA.js → state-DDag0B_B.js} +1 -1
- package/dist/assets/{state-BvdK8eiw.js → state-DFeun9PF.js} +1 -1
- package/dist/assets/{state-DBzEQtWz.js → state-bHyw5u3R.js} +1 -1
- package/dist/assets/{stateDiagram-FKZM4ZOC-Bzv6j99z.js → stateDiagram-FKZM4ZOC-z2ks4r_9.js} +1 -1
- package/dist/assets/stateDiagram-v2-4FDKWEC3-BApjXiT0.js +1 -0
- package/dist/assets/{step-CDlhJj9-.js → step-DIOVHicC.js} +1 -1
- package/dist/assets/{strings-Djnbwmfl.js → strings--BknHX9C.js} +1 -1
- package/dist/assets/stylus-3Q5WfXqT.js +1 -0
- package/dist/assets/swift-MKxc2knl.js +1 -0
- package/dist/assets/{swiper-component-DInvCxhI.js → swiper-component-C0ieyDzn.js} +1 -1
- package/dist/assets/switch-OVajJBPR.js +1 -0
- package/dist/assets/tcl-D3fKhQc_.js +1 -0
- package/dist/assets/{terminal-D3IQBBYo.js → terminal-D4sGJYRn.js} +1 -1
- package/dist/assets/textarea-DZB2bzVL.js +1 -0
- package/dist/assets/textile-Bi_LEJQ3.js +1 -0
- package/dist/assets/{time-BuRlxEhE.js → time-NXrJfoDM.js} +1 -1
- package/dist/assets/{timeline-definition-IT6M3QCI-DXwdU1og.js → timeline-definition-IT6M3QCI-BRuA290T.js} +1 -1
- package/dist/assets/toml-Dt-PBqwt.js +1 -0
- package/dist/assets/{tooltip-CFX4fYHU.js → tooltip-4bZlU7jl.js} +1 -1
- package/dist/assets/{tooltip-HLb6RxVp.js → tooltip-B7U4xkIN.js} +1 -1
- package/dist/assets/{tracing-CKn3gWHw.js → tracing-CDMM1BB2.js} +1 -1
- package/dist/assets/{tracing-panel-BU-o_LCd.js → tracing-panel-BH5Zbvl9.js} +2 -2
- package/dist/assets/{tree-actions-CsC2XmGo.js → tree-actions-DDveUIHK.js} +1 -1
- package/dist/assets/{treemap-GDKQZRPO-4Cm6HMmj.js → treemap-GDKQZRPO-DIzBBPQD.js} +1 -1
- package/dist/assets/troff-BSU-rxoD.js +1 -0
- package/dist/assets/ttcn-BmLjonVM.js +1 -0
- package/dist/assets/ttcn-cfg-TPTcP0Eh.js +1 -0
- package/dist/assets/turtle-HafmShQq.js +1 -0
- package/dist/assets/{useBoolean-D89u30n-.js → useBoolean-CFj86iac.js} +1 -1
- package/dist/assets/useCellActionButton-D5ix_g2a.js +1 -0
- package/dist/assets/{useDeleteCell-EPH4kcG7.js → useDeleteCell-BIopCngo.js} +1 -1
- package/dist/assets/{useDependencyPanelTab-CZnK7N2L.js → useDependencyPanelTab-snM337f9.js} +1 -1
- package/dist/assets/useEventListener-C0195JsF.js +1 -0
- package/dist/assets/{useHotkey-DIuRH8Wu.js → useHotkey-DLZvrRZT.js} +1 -1
- package/dist/assets/{useIframeCapabilities-Ccb4fvKc.js → useIframeCapabilities-j6fR_dBA.js} +1 -1
- package/dist/assets/{useInstallPackage-BRbUAUFn.js → useInstallPackage-WiYBwhUO.js} +1 -1
- package/dist/assets/{useInterval-CC0vKpWm.js → useInterval-Be6s6idX.js} +1 -1
- package/dist/assets/useNotebookActions-CsZfWFKy.js +12 -0
- package/dist/assets/{useRunCells-CSSF_mJ0.js → useRunCells-CF_V8X2K.js} +1 -1
- package/dist/assets/{useSplitCell-9Qz93yPZ.js → useSplitCell-BTmKY1CU.js} +1 -1
- package/dist/assets/{useTheme-KXqAyDPC.js → useTheme-Bxv9B31g.js} +1 -1
- package/dist/assets/{utils-Z80SV4_d.js → utils-BWBBpCkT.js} +1 -1
- package/dist/assets/vb-CUif5uGR.js +1 -0
- package/dist/assets/vbscript-DWVPFl59.js +1 -0
- package/dist/assets/{vega-component-Cie3ag_T.js → vega-component-BYd6AACD.js} +1 -1
- package/dist/assets/{vega-embed-container-hDAVOOba.js → vega-embed-container-CRADa99b.js} +1 -1
- package/dist/assets/velocity-BJl8UzB4.js +1 -0
- package/dist/assets/verilog-B4LUPYXy.js +1 -0
- package/dist/assets/vhdl-C91h3ipk.js +1 -0
- package/dist/assets/webidl-DOay1zbU.js +1 -0
- package/dist/assets/write-secret-modal-D-p66LIx.js +2 -0
- package/dist/assets/xquery-Cez7jD_4.js +1 -0
- package/dist/assets/{xychartDiagram-PRI3JC2R-Cb0exSKs.js → xychartDiagram-PRI3JC2R-BX6ICxcN.js} +1 -1
- package/dist/assets/yacas-CSQEXB_S.js +1 -0
- package/dist/assets/z80-CJbYj7Wr.js +1 -0
- package/dist/index.html +74 -73
- package/package.json +3 -4
- package/src/__mocks__/requests.ts +45 -4
- package/src/components/data-table/__tests__/__snapshots__/chart-spec-model.test.ts.snap +174 -21
- package/src/components/data-table/__tests__/chart-spec-model.test.ts +102 -1
- package/src/components/data-table/column-summary/chart-spec-model.tsx +163 -103
- package/src/components/data-table/column-summary/legacy-chart-spec.ts +15 -7
- package/src/components/data-table/column-summary/utils.ts +26 -7
- package/src/components/data-table/types.ts +1 -1
- package/src/components/editor/__tests__/viewer-banner.test.tsx +14 -0
- package/src/components/editor/actions/__tests__/pair-with-agent-commands.test.ts +99 -18
- package/src/components/editor/actions/__tests__/pdf-export.test.ts +32 -13
- package/src/components/editor/actions/pair-with-agent-commands.ts +21 -10
- package/src/components/editor/actions/pair-with-agent-modal.tsx +2 -2
- package/src/components/editor/actions/pdf-export.ts +11 -14
- package/src/components/editor/actions/useNotebookActions.tsx +18 -18
- package/src/components/editor/cell/code/__tests__/cell-editor-activity-lifecycle.test.ts +250 -0
- package/src/components/editor/cell/code/cell-editor.tsx +13 -7
- package/src/components/editor/chrome/panels/__tests__/logs-panel.test.tsx +25 -0
- package/src/components/editor/chrome/panels/logs-panel.tsx +12 -2
- package/src/components/editor/chrome/panels/write-secret-modal.tsx +40 -12
- package/src/components/editor/connections/__tests__/json-credentials.test.ts +114 -0
- package/src/components/editor/connections/__tests__/paths.test.ts +39 -0
- package/src/components/editor/connections/components.tsx +6 -2
- package/src/components/editor/connections/database/__tests__/__snapshots__/as-code.test.ts.snap +21 -5
- package/src/components/editor/connections/database/__tests__/as-code.test.ts +17 -0
- package/src/components/editor/connections/database/as-code.ts +16 -2
- package/src/components/editor/connections/database/schemas.ts +6 -5
- package/src/components/editor/connections/form-renderers.tsx +99 -1
- package/src/components/editor/connections/json-credentials.ts +57 -0
- package/src/components/editor/connections/paths.ts +21 -0
- package/src/components/editor/connections/secret-combobox.tsx +41 -20
- package/src/components/editor/connections/storage/__tests__/__snapshots__/as-code.test.ts.snap +88 -2
- package/src/components/editor/connections/storage/__tests__/as-code.test.ts +128 -8
- package/src/components/editor/connections/storage/as-code.ts +79 -36
- package/src/components/editor/connections/storage/schemas.ts +85 -44
- package/src/components/editor/file-tree/__tests__/renderers.test.ts +31 -0
- package/src/components/editor/file-tree/file-viewer.tsx +11 -7
- package/src/components/editor/file-tree/renderers.tsx +21 -0
- package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +1 -1
- package/src/components/editor/viewer-banner.tsx +6 -1
- package/src/components/forms/options.ts +2 -1
- package/src/components/slides/__tests__/cell-output-block.test.tsx +40 -0
- package/src/components/slides/__tests__/slide-cell-view.test.tsx +33 -0
- package/src/components/slides/__tests__/slide-scroll-hint.test.tsx +198 -0
- package/src/components/slides/reveal-component.tsx +25 -19
- package/src/components/slides/slide-cell-view.tsx +1 -1
- package/src/components/slides/slide-scroll-hint.tsx +161 -0
- package/src/components/slides/slides.css +4 -2
- package/src/components/static-html/share-modal.tsx +1 -1
- package/src/components/ui/input.tsx +1 -1
- package/src/core/ai/context/providers/file.ts +8 -29
- package/src/core/cells/__tests__/cells.test.ts +12 -2
- package/src/core/cells/__tests__/logs.test.ts +5 -5
- package/src/core/cells/cells.ts +17 -4
- package/src/core/cells/document-changes.ts +1 -0
- package/src/core/cells/logs.ts +14 -4
- package/src/core/codemirror/copilot/__tests__/language-server.test.ts +396 -100
- package/src/core/codemirror/copilot/__tests__/transport.test.ts +128 -540
- package/src/core/codemirror/copilot/language-server.ts +182 -70
- package/src/core/codemirror/copilot/transport.ts +15 -207
- package/src/core/codemirror/copilot/types.ts +9 -2
- package/src/core/codemirror/find-replace/__tests__/navigate.test.ts +42 -30
- package/src/core/codemirror/find-replace/navigate.ts +2 -0
- package/src/core/codemirror/go-to-definition/__tests__/commands.test.ts +24 -3
- package/src/core/codemirror/go-to-definition/commands.ts +3 -0
- package/src/core/codemirror/keymaps/__tests__/keymaps.test.ts +31 -2
- package/src/core/codemirror/keymaps/keymaps.ts +12 -0
- package/src/core/codemirror/language/__tests__/sql.test.ts +443 -61
- package/src/core/codemirror/language/languages/python.ts +23 -11
- package/src/core/codemirror/language/languages/sql/completion-store.ts +5 -1
- package/src/core/codemirror/language/languages/sql/sql.ts +210 -3
- package/src/core/codemirror/lsp/__tests__/federated-lsp.test.ts +161 -0
- package/src/core/codemirror/lsp/__tests__/log-messages.test.ts +53 -0
- package/src/core/codemirror/lsp/__tests__/normalize-markdown-math.test.ts +25 -0
- package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +598 -156
- package/src/core/codemirror/lsp/__tests__/transports.test.ts +112 -0
- package/src/core/codemirror/lsp/federated-lsp.ts +76 -23
- package/src/core/codemirror/lsp/log-messages.ts +37 -0
- package/src/core/codemirror/lsp/normalize-markdown-math.ts +8 -4
- package/src/core/codemirror/lsp/notebook-lsp.ts +220 -56
- package/src/core/codemirror/lsp/transports.ts +8 -1
- package/src/core/codemirror/lsp/types.ts +68 -8
- package/src/core/codemirror/lsp/utils.ts +14 -0
- package/src/core/codemirror/utils.ts +28 -0
- package/src/core/edit-app.tsx +1 -2
- package/src/core/export/__tests__/hooks.test.ts +2 -4
- package/src/core/export/hooks.ts +4 -3
- package/src/core/hotkeys/hotkeys.ts +0 -2
- package/src/core/islands/__tests__/bridge.test.ts +107 -0
- package/src/core/islands/bridge.ts +16 -0
- package/src/core/lsp/__tests__/transport.test.ts +509 -337
- package/src/core/lsp/transport.ts +304 -132
- package/src/core/mode.ts +10 -0
- package/src/core/network/__tests__/api.test.ts +42 -0
- package/src/core/network/__tests__/connection.test.ts +45 -0
- package/src/core/network/__tests__/requests-lazy.test.ts +32 -1
- package/src/core/network/__tests__/requests-network.test.ts +21 -0
- package/src/core/network/api.ts +27 -0
- package/src/core/network/connection.ts +15 -0
- package/src/core/network/requests-lazy.ts +1 -0
- package/src/core/network/requests-network.ts +14 -8
- package/src/core/network/requests-static.ts +1 -0
- package/src/core/network/requests-toasting.tsx +1 -0
- package/src/core/network/types.ts +22 -6
- package/src/core/rtc/state.ts +9 -0
- package/src/core/static/download-html.ts +5 -14
- package/src/core/wasm/bridge.ts +4 -2
- package/src/core/wasm/worker/types.ts +5 -2
- package/src/css/app/codemirror.css +16 -2
- package/src/plugins/impl/FormPlugin.tsx +1 -1
- package/src/plugins/impl/__tests__/FormPlugin.test.tsx +162 -0
- package/src/stories/log-viewer.stories.tsx +12 -6
- package/src/utils/__tests__/blob.test.ts +27 -1
- package/src/utils/__tests__/download.test.tsx +44 -4
- package/src/utils/blob.ts +24 -1
- package/src/utils/download.ts +14 -15
- package/dist/assets/JsonOutput-CkCD-FgM.js +0 -53
- package/dist/assets/LazyAnyLanguageCodeMirror-sVm_hz8A.js +0 -2
- package/dist/assets/RenderHTML-BCvU9dYz.js +0 -1
- package/dist/assets/add-connection-dialog-B-jCRNTN.js +0 -170
- package/dist/assets/ai-model-dropdown-DXgLphFa.js +0 -5
- package/dist/assets/apl-DTwRFDps.js +0 -1
- package/dist/assets/app-config-button-NrM9ywXA.js +0 -1
- package/dist/assets/asciiarmor-CiqkDK0s.js +0 -1
- package/dist/assets/asn1-RTvH5MEs.js +0 -1
- package/dist/assets/blob-C3EfaMOb.js +0 -1
- package/dist/assets/brainfuck-szH_VGzd.js +0 -1
- package/dist/assets/cell-link-DqBkyAFe.js +0 -1
- package/dist/assets/cells-Cf7bHHq3.js +0 -229
- package/dist/assets/channel-D-k8o3T1.js +0 -1
- package/dist/assets/chunk-55IACEB6-xhaY4LU6.js +0 -1
- package/dist/assets/classDiagram-2ON5EDUG-C-rIg7EQ.js +0 -1
- package/dist/assets/classDiagram-v2-WZHVMYZB-MBAsRLae.js +0 -1
- package/dist/assets/clojure-CyEbLmch.js +0 -1
- package/dist/assets/cmake-Dk8f7QuI.js +0 -1
- package/dist/assets/cobol-BJJRqW1D.js +0 -1
- package/dist/assets/coffeescript-BDuWJ9WO.js +0 -1
- package/dist/assets/commonlisp-CVHm2VSp.js +0 -1
- package/dist/assets/components-BH6gDVv6.js +0 -1
- package/dist/assets/config-BbOTTCYY.js +0 -1
- package/dist/assets/crystal-C2Fgr79A.js +0 -1
- package/dist/assets/cypher-CUlCm6vR.js +0 -1
- package/dist/assets/d-4ANEHA6q.js +0 -1
- package/dist/assets/diff-C-W-5V8L.js +0 -1
- package/dist/assets/dist-BCMBu0rO.js +0 -2
- package/dist/assets/dist-CCAhuqF-.js +0 -1
- package/dist/assets/dist-DGhK0kPE.js +0 -1
- package/dist/assets/dist-SVDIDTM2.js +0 -1
- package/dist/assets/dist-xSLg7wNV.js +0 -1
- package/dist/assets/download-BomYt3nl.js +0 -9
- package/dist/assets/dtd-D9h-tL8G.js +0 -1
- package/dist/assets/dylan-D3MC56xy.js +0 -1
- package/dist/assets/ecl-B6UC4tME.js +0 -1
- package/dist/assets/eiffel-CjvEov4k.js +0 -1
- package/dist/assets/elm-DvSbvRWe.js +0 -1
- package/dist/assets/erlang-DJYaGXyq.js +0 -1
- package/dist/assets/error-entries-Birw-8VX.js +0 -8
- package/dist/assets/factor-CUQCrkTo.js +0 -1
- package/dist/assets/file-explorer-panel-Ntq1-VbF.js +0 -26
- package/dist/assets/floating-outline-wz-WSRgP.js +0 -1
- package/dist/assets/focus-DiEyfiAG.js +0 -1
- package/dist/assets/forth-D9xegiCO.js +0 -1
- package/dist/assets/fortran-B0Oe0U8s.js +0 -1
- package/dist/assets/gas-jLjj-PIq.js +0 -1
- package/dist/assets/gherkin-3Ig8Crit.js +0 -1
- package/dist/assets/groovy-NKpNVJ-n.js +0 -1
- package/dist/assets/haskell-OPE4bAjk.js +0 -1
- package/dist/assets/haxe-DEAZF8L3.js +0 -1
- package/dist/assets/home-page-DJ4jJsZj.js +0 -4
- package/dist/assets/idl-BM6265Xl.js +0 -1
- package/dist/assets/index-A71LAt6h.css +0 -2
- package/dist/assets/index-CMZzy-dF.js +0 -38
- package/dist/assets/infoDiagram-HS3SLOUP-DQnMjKYJ.js +0 -2
- package/dist/assets/javascript-CZ9vDpAy.js +0 -1
- package/dist/assets/julia-BrY9TQnt.js +0 -1
- package/dist/assets/katex-C-lfa1AM.js +0 -1
- package/dist/assets/kiosk-mode-ABm3oYgq.js +0 -1
- package/dist/assets/livescript-CNahkUp5.js +0 -1
- package/dist/assets/logs-panel-iFV4ZJ9b.js +0 -1
- package/dist/assets/lua-Skr4TVu_.js +0 -1
- package/dist/assets/mathematica-BXxhrpeY.js +0 -1
- package/dist/assets/mbox-BRrQCVe9.js +0 -1
- package/dist/assets/mirc-CffYPE4R.js +0 -1
- package/dist/assets/mllike-C1DLZhEI.js +0 -1
- package/dist/assets/modelica-CvAyRRNV.js +0 -1
- package/dist/assets/mscgen-uMZWtMZv.js +0 -1
- package/dist/assets/mumps-DFJehEx7.js +0 -1
- package/dist/assets/node-sql-parser-BWgUjcfV.js +0 -68
- package/dist/assets/nsis-BVI9YULz.js +0 -1
- package/dist/assets/ntriples-Bcdh7b2H.js +0 -1
- package/dist/assets/octave-CdAKz6YS.js +0 -1
- package/dist/assets/oz-DSySeR-W.js +0 -1
- package/dist/assets/pair-with-agent-modal-CKOYwOYw.js +0 -4
- package/dist/assets/panels-Dj45fW-v.js +0 -4
- package/dist/assets/pascal-DefziIUN.js +0 -1
- package/dist/assets/perl-BOOloBPk.js +0 -1
- package/dist/assets/pig-f0nBb-5x.js +0 -1
- package/dist/assets/powershell-DToQjbK9.js +0 -1
- package/dist/assets/process-output-BEhIGfkO.js +0 -1
- package/dist/assets/properties-BRob-nyj.js +0 -1
- package/dist/assets/protobuf-DZyC6051.js +0 -1
- package/dist/assets/pug-pVoM8FRt.js +0 -1
- package/dist/assets/puppet-9fuYG07F.js +0 -1
- package/dist/assets/python-_Mr8fyXP.js +0 -1
- package/dist/assets/q-D73s4Y77.js +0 -1
- package/dist/assets/r-BOEjz92e.js +0 -1
- package/dist/assets/rpm-LpXWTM5t.js +0 -1
- package/dist/assets/ruby-DodgSDfF.js +0 -1
- package/dist/assets/sas-D9KCtUmL.js +0 -1
- package/dist/assets/scheme-p8UJxmJw.js +0 -1
- package/dist/assets/scratchpad-panel-B0mEqBNk.js +0 -1
- package/dist/assets/session-panel-Y0Oon0sD.js +0 -1
- package/dist/assets/shell-BWdqyqwL.js +0 -1
- package/dist/assets/sieve-CLwJmtiQ.js +0 -1
- package/dist/assets/slides-MCbMDtlY.css +0 -1
- package/dist/assets/smalltalk-D3KV-Qah.js +0 -1
- package/dist/assets/sparql-D9Jz2mBw.js +0 -1
- package/dist/assets/state-BZQc7xxL.js +0 -3
- package/dist/assets/stateDiagram-v2-4FDKWEC3-CA1l0rNa.js +0 -1
- package/dist/assets/stylus-ClN4l_XO.js +0 -1
- package/dist/assets/swift-Dvd_9xBv.js +0 -1
- package/dist/assets/switch-CvweaCXq.js +0 -1
- package/dist/assets/tcl-DR2p8cyi.js +0 -1
- package/dist/assets/textarea-CpFfEUet.js +0 -1
- package/dist/assets/textile-D6S27_J2.js +0 -1
- package/dist/assets/toml-B-YuQ2Id.js +0 -1
- package/dist/assets/troff-HSk8AoRF.js +0 -1
- package/dist/assets/ttcn-CehzlVdx.js +0 -1
- package/dist/assets/ttcn-cfg-CLEPwk1s.js +0 -1
- package/dist/assets/turtle-DQLHkbOu.js +0 -1
- package/dist/assets/useCellActionButton-CRfIEVB5.js +0 -1
- package/dist/assets/useEventListener-B_w3A283.js +0 -1
- package/dist/assets/useNotebookActions-DTXAoukG.js +0 -12
- package/dist/assets/vb-o1EHrS4z.js +0 -1
- package/dist/assets/vbscript-BS8yUFpf.js +0 -1
- package/dist/assets/velocity-u_oGPFaA.js +0 -1
- package/dist/assets/verilog-CSmDH7su.js +0 -1
- package/dist/assets/vhdl-BCaWLcjw.js +0 -1
- package/dist/assets/webidl-Bf6dokXM.js +0 -1
- package/dist/assets/write-secret-modal-DEEn7sZV.js +0 -1
- package/dist/assets/xquery-Di0kkiXg.js +0 -1
- package/dist/assets/yacas-DB8tPtyp.js +0 -1
- package/dist/assets/z80-DFUvlWxk.js +0 -1
- /package/dist/assets/{ImageComparisonComponent-Cz3xVDLH.js → ImageComparisonComponent-HnxpPJnM.js} +0 -0
- /package/dist/assets/{Inputs-B8-VCb_j.js → Inputs-BhvqLBkk.js} +0 -0
- /package/dist/assets/{Plot-X2G47XHf.js → Plot-Df7XX6zz.js} +0 -0
- /package/dist/assets/{apl-DVqFAlEd.js → apl-CPlG1HX3.js} +0 -0
- /package/dist/assets/{array-Ddg9CgJT.js → array-DkMvCrqF.js} +0 -0
- /package/dist/assets/{asciiarmor-B45BhOLj.js → asciiarmor-DV_pcocJ.js} +0 -0
- /package/dist/assets/{asn1-C4T2ctU6.js → asn1-DPxWcGvG.js} +0 -0
- /package/dist/assets/{asterisk-9U_4Kgke.js → asterisk-Di-nanOd.js} +0 -0
- /package/dist/assets/{azure-nN8APleF.js → azure-BjL5s4-w.js} +0 -0
- /package/dist/assets/{brainfuck-kVh8Eud4.js → brainfuck-CGDdBVNO.js} +0 -0
- /package/dist/assets/{card-VUBaYDpT.js → card-DIbLM4TA.js} +0 -0
- /package/dist/assets/{chunk-4F5CHEZ2-ClSh5rxG.js → chunk-4F5CHEZ2-yOSqdjGN.js} +0 -0
- /package/dist/assets/{chunk-B2363JML-cit0ouFv.js → chunk-B2363JML-BqlxcdFI.js} +0 -0
- /package/dist/assets/{chunk-DR5Q36YT-Bsu9Glc0.js → chunk-DR5Q36YT-9bsCT1tL.js} +0 -0
- /package/dist/assets/{chunk-FRFDVMJY--Re1QfFE.js → chunk-FRFDVMJY-DW58IWII.js} +0 -0
- /package/dist/assets/{chunk-PL6DKKU2-CAwRAr-p.js → chunk-PL6DKKU2-CiPkyomE.js} +0 -0
- /package/dist/assets/{chunk-SJTYNZTY-G1spWesO.js → chunk-SJTYNZTY-UJLIXgY2.js} +0 -0
- /package/dist/assets/{chunk-TQ3KTPDO-DBwra5xv.js → chunk-TQ3KTPDO-DQFcRP5c.js} +0 -0
- /package/dist/assets/{chunk-UMXZTB3W-A5RvYDPE.js → chunk-UMXZTB3W-cibob28z.js} +0 -0
- /package/dist/assets/{clear-button-DQtvx6eq.js → clear-button-Bsxh4lx1.js} +0 -0
- /package/dist/assets/{click-outside-container-CrWZsAF5.js → click-outside-container-LfSB2_ne.js} +0 -0
- /package/dist/assets/{clike-O0gwXilc.js → clike-D91DrsBh.js} +0 -0
- /package/dist/assets/{clojure-CsbMWxp9.js → clojure-B0eb_-2q.js} +0 -0
- /package/dist/assets/{cmake-FpJvOdyj.js → cmake-COzUvjiS.js} +0 -0
- /package/dist/assets/{cobol-Duxbpsru.js → cobol-DW4FSnmb.js} +0 -0
- /package/dist/assets/{coffeescript-D-Unz9IP.js → coffeescript-CommR2mv.js} +0 -0
- /package/dist/assets/{colors-C_0lIznd.js → colors-CyQT5OPu.js} +0 -0
- /package/dist/assets/{common-keywords-PqH2GDfH.js → common-keywords-Bk-0jOKl.js} +0 -0
- /package/dist/assets/{commonlisp-_nR12oc7.js → commonlisp-FR_N9RJL.js} +0 -0
- /package/dist/assets/{crystal-dj3W4b1A.js → crystal-CAN7bz25.js} +0 -0
- /package/dist/assets/{css-0BG6A_BC.js → css-DmLg8a0m.js} +0 -0
- /package/dist/assets/{cypher-CKPokaoH.js → cypher-BzSJn05x.js} +0 -0
- /package/dist/assets/{cytoscape.esm-DzUNSF80.js → cytoscape.esm-CVhOSlMZ.js} +0 -0
- /package/dist/assets/{d-BrbqzVa2.js → d-UpmnByGo.js} +0 -0
- /package/dist/assets/{diff-BmdR9FsO.js → diff-DRpitNo9.js} +0 -0
- /package/dist/assets/{dist-CM-lWxt3.js → dist-1DJkf78n.js} +0 -0
- /package/dist/assets/{dist-ByK00N0T.js → dist-6KRysbQA.js} +0 -0
- /package/dist/assets/{dist-98K4fusX.js → dist-8H9kNP92.js} +0 -0
- /package/dist/assets/{dist-OgwOt8T2.js → dist-8lZYHUSx.js} +0 -0
- /package/dist/assets/{dist-DNGKAtWk.js → dist-B4sFEC9P.js} +0 -0
- /package/dist/assets/{dist-BaKJ0-Tb.js → dist-B5BlmbY-.js} +0 -0
- /package/dist/assets/{dist-CpbbK4-I.js → dist-BDUj3vkc.js} +0 -0
- /package/dist/assets/{dist-3N7-WLqi.js → dist-C13NfWpP.js} +0 -0
- /package/dist/assets/{dist-DokId-qM.js → dist-C3XTRycV.js} +0 -0
- /package/dist/assets/{dist-56ul6-mm.js → dist-C6uSSUmH.js} +0 -0
- /package/dist/assets/{dist-D5ToCtv8.js → dist-CDFlR-dv.js} +0 -0
- /package/dist/assets/{dist-DzAAhYcW.js → dist-CaADT3TK.js} +0 -0
- /package/dist/assets/{dist-B8g3pNYJ.js → dist-CbTMGxEf.js} +0 -0
- /package/dist/assets/{dist-O5-NiN3f.js → dist-CjpCHqUI.js} +0 -0
- /package/dist/assets/{dist-D9sE1udr.js → dist-D0BTeZL0.js} +0 -0
- /package/dist/assets/{dist-DrtRBAn8.js → dist-DE4Vb9tO.js} +0 -0
- /package/dist/assets/{dist-D35OyUMQ.js → dist-DYsXEge_.js} +0 -0
- /package/dist/assets/{dist-C5kf6g-d.js → dist-lCLEUACp.js} +0 -0
- /package/dist/assets/{dtd-DbCXDVgi.js → dtd-CQV9N2ok.js} +0 -0
- /package/dist/assets/{duckdb-keywords-mPlR0SxW.js → duckdb-keywords-CqO5LWsh.js} +0 -0
- /package/dist/assets/{dylan-CLLzL2Js.js → dylan-Bp98yT5y.js} +0 -0
- /package/dist/assets/{ebnf-Cnws41cu.js → ebnf-DoGvzVmX.js} +0 -0
- /package/dist/assets/{ecl-BC7x2nzk.js → ecl-BgtQ3zu5.js} +0 -0
- /package/dist/assets/{eiffel-CDU836rz.js → eiffel-Cu14O7Gi.js} +0 -0
- /package/dist/assets/{elm-D-_bXARs.js → elm-Dp1dn40k.js} +0 -0
- /package/dist/assets/{empty-state-CqJvEFRk.js → empty-state-yX2_pzkH.js} +0 -0
- /package/dist/assets/{erlang-CwDZk2zM.js → erlang-DdogJjdp.js} +0 -0
- /package/dist/assets/{esm-D6WfbcL3.js → esm-DZILy413.js} +0 -0
- /package/dist/assets/{fcl-CwkPc-_9.js → fcl-CTs4ROWI.js} +0 -0
- /package/dist/assets/{forth-D6FsO_8x.js → forth-Dd0r86IP.js} +0 -0
- /package/dist/assets/{fortran-D4BMbIkG.js → fortran-4qvtlW4z.js} +0 -0
- /package/dist/assets/{gas-JFjzcgdY.js → gas-DqwqZHXy.js} +0 -0
- /package/dist/assets/{gherkin-Cyu-qGaF.js → gherkin-DMxJEDh5.js} +0 -0
- /package/dist/assets/{github-_JH-0hIO.js → github-kTVN-x1m.js} +0 -0
- /package/dist/assets/{groovy-CZaE9eN-.js → groovy-DA_MxBua.js} +0 -0
- /package/dist/assets/{haskell-Dc6o0IGr.js → haskell-B_hi8VEK.js} +0 -0
- /package/dist/assets/{haxe-Bsf0tzqs.js → haxe-D-I6YeRN.js} +0 -0
- /package/dist/assets/{http-BQNSD-HR.js → http-Ci3E2pzn.js} +0 -0
- /package/dist/assets/{idl-1W91kQ8_.js → idl-CteRrHSs.js} +0 -0
- /package/dist/assets/{init-nx27Zb9l.js → init-CYoUL2Ak.js} +0 -0
- /package/dist/assets/{javascript-BZ81-2rO.js → javascript-Cq9DsvSW.js} +0 -0
- /package/dist/assets/{julia-BZOsq0r_.js → julia-bHGj6eLp.js} +0 -0
- /package/dist/assets/{katex-CvZ3kCGk.js → katex-BKFLE8En.js} +0 -0
- /package/dist/assets/{livescript-CNZfmikk.js → livescript-C72YlTeO.js} +0 -0
- /package/dist/assets/{loro_wasm_bg-RNUly1SE.js → loro_wasm_bg-aCH66ryB.js} +0 -0
- /package/dist/assets/{lua-DXGRliwd.js → lua-DAtJrHXr.js} +0 -0
- /package/dist/assets/{marimo-icons-C_nFooxr.js → marimo-icons-Bq_N9GGs.js} +0 -0
- /package/dist/assets/{math-CLO4uoaP.js → math-D6WZfqI3.js} +0 -0
- /package/dist/assets/{mathematica-BoUj8M7D.js → mathematica-DGp7b8Lx.js} +0 -0
- /package/dist/assets/{mbox-DLVP8LAe.js → mbox-C35KjfEV.js} +0 -0
- /package/dist/assets/{mirc-kI4d5fMu.js → mirc-BRCHEPv1.js} +0 -0
- /package/dist/assets/{mllike-CD9vBc_2.js → mllike-D7ajla-U.js} +0 -0
- /package/dist/assets/{modelica-DgfsLJuF.js → modelica-0RGVL4ie.js} +0 -0
- /package/dist/assets/{mscgen-B1HDwshJ.js → mscgen-C7Ohs4Tl.js} +0 -0
- /package/dist/assets/{multi-icon-nrKPWjDU.js → multi-icon-C2ijLyOs.js} +0 -0
- /package/dist/assets/{mumps-D_-b9TZD.js → mumps-Cgag5Xef.js} +0 -0
- /package/dist/assets/{nginx-Cm282mo8.js → nginx-k5GTB7o1.js} +0 -0
- /package/dist/assets/{ntriples-COX9JFZ8.js → ntriples-oQv5c69K.js} +0 -0
- /package/dist/assets/{octave-BejycR79.js → octave-BMTXs4lo.js} +0 -0
- /package/dist/assets/{oz-CFFivrGn.js → oz-CuHYwo8r.js} +0 -0
- /package/dist/assets/{panel-context-CH75ubGG.js → panel-context-CmeYEpWr.js} +0 -0
- /package/dist/assets/{pascal-B_p9jkCs.js → pascal-eFKoVV2p.js} +0 -0
- /package/dist/assets/{path-Bz_hIzg5.js → path-BcLO3NWe.js} +0 -0
- /package/dist/assets/{pathUtils-Bfcp5m-a.js → pathUtils-BbJtW9Mp.js} +0 -0
- /package/dist/assets/{perl-C-SFBTly.js → perl-B1OqOW8w.js} +0 -0
- /package/dist/assets/{pig-BhxDMp2k.js → pig-gIrBDx27.js} +0 -0
- /package/dist/assets/{powershell-c59M-9N2.js → powershell-3fQF2XND.js} +0 -0
- /package/dist/assets/{properties-D1JNwCKy.js → properties-D4HHpZmU.js} +0 -0
- /package/dist/assets/{protobuf-DQS7ex8R.js → protobuf-DFSTKR0L.js} +0 -0
- /package/dist/assets/{puppet-DaQvhvew.js → puppet-BAISgXk9.js} +0 -0
- /package/dist/assets/{python-XHl3eRTS.js → python-mPctBCbA.js} +0 -0
- /package/dist/assets/{q-DppnoRE3.js → q-CYeV5Dbb.js} +0 -0
- /package/dist/assets/{r-D8-F_FWj.js → r-Ds4UrjIV.js} +0 -0
- /package/dist/assets/{request-registry-DHocQ_4I.js → request-registry-CEkYnwgr.js} +0 -0
- /package/dist/assets/{requests-DYeT4CEe.js → requests-CIR84T8A.js} +0 -0
- /package/dist/assets/{rpm-CegJhNNO.js → rpm-DV5-r6dM.js} +0 -0
- /package/dist/assets/{ruby-YMIxufV1.js → ruby-B9qrycrI.js} +0 -0
- /package/dist/assets/{sas-wTtX9UIQ.js → sas-Cd7L1ZOe.js} +0 -0
- /package/dist/assets/{scheme-BGenom3k.js → scheme-L6Kva-Kc.js} +0 -0
- /package/dist/assets/{semaphore-DtBYRzWS.js → semaphore-YOr3WMiw.js} +0 -0
- /package/dist/assets/{shell-Bu1sLaiP.js → shell-Ck42V1Kn.js} +0 -0
- /package/dist/assets/{sieve-ffe6rUQh.js → sieve-DfSJcUfS.js} +0 -0
- /package/dist/assets/{simple-mode-DBSzUJLA.js → simple-mode-CfoR0Lvg.js} +0 -0
- /package/dist/assets/{smalltalk-NU5EGjHp.js → smalltalk-CT418Iph.js} +0 -0
- /package/dist/assets/{solr-ptw1yIqO.js → solr-DfAVBX8L.js} +0 -0
- /package/dist/assets/{sparql-uqVktnwO.js → sparql-BlJ_cLEt.js} +0 -0
- /package/dist/assets/{spreadsheet-VEzeu_mb.js → spreadsheet-Qy1VjLDU.js} +0 -0
- /package/dist/assets/{sql-tYjnWETe.js → sql-BAkD7JGK.js} +0 -0
- /package/dist/assets/{src-BshXgZd4.js → src-Dlf0iGaF.js} +0 -0
- /package/dist/assets/{stylus-B2E6Ulaz.js → stylus-92qIiGm1.js} +0 -0
- /package/dist/assets/{swift-Rmnn7ATv.js → swift-gZzicbJu.js} +0 -0
- /package/dist/assets/{tcl-ZPWCn2nn.js → tcl-CtgoBYkk.js} +0 -0
- /package/dist/assets/{textile-uhA33kFk.js → textile-Du3RzJ2D.js} +0 -0
- /package/dist/assets/{tiddlywiki-CPkGLyXH.js → tiddlywiki-CL3W3RpP.js} +0 -0
- /package/dist/assets/{tiki-BtjLo8OF.js → tiki-2L3jCwab.js} +0 -0
- /package/dist/assets/{timer-VYMLXPue.js → timer-DLLzXmjF.js} +0 -0
- /package/dist/assets/{toml-BFZv2Mv7.js → toml-HcF44TVB.js} +0 -0
- /package/dist/assets/{treemap-Bca0xNNq.js → treemap-BdaAyoGw.js} +0 -0
- /package/dist/assets/{troff-B5eayHop.js → troff-xbwT4huN.js} +0 -0
- /package/dist/assets/{ttcn-cfg-CfbkL3Q_.js → ttcn-cfg-jWDg1i50.js} +0 -0
- /package/dist/assets/{ttcn-BM0Yp8NY.js → ttcn-phKysj_0.js} +0 -0
- /package/dist/assets/{turtle-DvetLxrv.js → turtle-CPC48wcy.js} +0 -0
- /package/dist/assets/{types-Da7lA5YC.js → types-C7hjolXC.js} +0 -0
- /package/dist/assets/{use-vega-container-remeasure-CbKTb_jy.js → use-vega-container-remeasure-0GBen_rR.js} +0 -0
- /package/dist/assets/{vb-i5Z8scch.js → vb-BTubZ2rB.js} +0 -0
- /package/dist/assets/{vbscript-BiPYgIyi.js → vbscript-B52mDFWM.js} +0 -0
- /package/dist/assets/{velocity-Dw3R3YoX.js → velocity-BO3M1iFD.js} +0 -0
- /package/dist/assets/{verilog-B8FhJcX6.js → verilog-CBz90JJu.js} +0 -0
- /package/dist/assets/{vhdl-BqPEoXdJ.js → vhdl-CeQ1lGlV.js} +0 -0
- /package/dist/assets/{web-vitals-CwE0GGzl.js → web-vitals-Q0-_CtWm.js} +0 -0
- /package/dist/assets/{webidl-mMO-qW5Q.js → webidl-CRtF5pmu.js} +0 -0
- /package/dist/assets/{ws-BmTnbVEi.js → ws-CNqquaud.js} +0 -0
- /package/dist/assets/{xquery-DvqNwq7L.js → xquery-CFnbrHav.js} +0 -0
- /package/dist/assets/{yacas-Dku9Z6Kf.js → yacas-KIC_JO6M.js} +0 -0
- /package/dist/assets/{z80-DvazU5Tr.js → z80-kGpw5_me.js} +0 -0
|
@@ -9,6 +9,7 @@ import { invariant } from "@/utils/invariant";
|
|
|
9
9
|
import { Logger } from "@/utils/Logger";
|
|
10
10
|
import { LRUCache } from "@/utils/lru";
|
|
11
11
|
import { Objects } from "@/utils/objects";
|
|
12
|
+
import { isRecord } from "@/utils/records";
|
|
12
13
|
import { getPositionAtWordBounds } from "../completion/hints";
|
|
13
14
|
import { topologicalCodesAtom } from "../copilot/getCodes";
|
|
14
15
|
import {
|
|
@@ -19,8 +20,10 @@ import { createNotebookLens, type NotebookLens } from "./lens";
|
|
|
19
20
|
import { normalizeLspDocumentation } from "./normalize-markdown-math";
|
|
20
21
|
import {
|
|
21
22
|
CellDocumentUri,
|
|
23
|
+
type ClientNotification,
|
|
22
24
|
type ILanguageServerClient,
|
|
23
25
|
isClientWithNotify,
|
|
26
|
+
isClientWithProcessNotification,
|
|
24
27
|
} from "./types";
|
|
25
28
|
import { getLspDocumentUri } from "./utils";
|
|
26
29
|
|
|
@@ -140,6 +143,47 @@ function normalizeSignatureHelpResponse(
|
|
|
140
143
|
};
|
|
141
144
|
}
|
|
142
145
|
|
|
146
|
+
interface PublishDiagnosticsNotification {
|
|
147
|
+
method: "textDocument/publishDiagnostics";
|
|
148
|
+
params: LSP.PublishDiagnosticsParams;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
function isPosition(value: unknown): value is LSP.Position {
|
|
152
|
+
return (
|
|
153
|
+
isRecord(value) &&
|
|
154
|
+
typeof value.line === "number" &&
|
|
155
|
+
typeof value.character === "number"
|
|
156
|
+
);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
function isRange(value: unknown): value is LSP.Range {
|
|
160
|
+
return isRecord(value) && isPosition(value.start) && isPosition(value.end);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function isDiagnostic(value: unknown): value is LSP.Diagnostic {
|
|
164
|
+
return (
|
|
165
|
+
isRecord(value) && typeof value.message === "string" && isRange(value.range)
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
function isPublishDiagnosticsNotification(
|
|
170
|
+
notification: ClientNotification,
|
|
171
|
+
): notification is PublishDiagnosticsNotification {
|
|
172
|
+
if (
|
|
173
|
+
notification.method !== "textDocument/publishDiagnostics" ||
|
|
174
|
+
!isRecord(notification.params)
|
|
175
|
+
) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
const { uri, version, diagnostics } = notification.params;
|
|
179
|
+
return (
|
|
180
|
+
typeof uri === "string" &&
|
|
181
|
+
(version === undefined || typeof version === "number") &&
|
|
182
|
+
Array.isArray(diagnostics) &&
|
|
183
|
+
diagnostics.every(isDiagnostic)
|
|
184
|
+
);
|
|
185
|
+
}
|
|
186
|
+
|
|
143
187
|
export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
144
188
|
public readonly documentUri: LSP.DocumentUri;
|
|
145
189
|
private readonly client: ILanguageServerClient;
|
|
@@ -156,17 +200,17 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
156
200
|
* This set is pruned when diagnostics are processed to only include
|
|
157
201
|
* cells that exist in the current notebook snapshot.
|
|
158
202
|
*/
|
|
159
|
-
private
|
|
203
|
+
private readonly seenCellDocumentUris = new Set<CellDocumentUri>();
|
|
160
204
|
|
|
161
205
|
/**
|
|
162
206
|
* Remove cell URIs that are no longer in the notebook.
|
|
163
207
|
* Called during diagnostic processing to prevent memory leaks.
|
|
164
208
|
*/
|
|
165
|
-
private
|
|
166
|
-
for (const uri of
|
|
209
|
+
private pruneSeenCellUris(currentCellIds: Set<CellId>): void {
|
|
210
|
+
for (const uri of this.seenCellDocumentUris) {
|
|
167
211
|
const cellId = CellDocumentUri.parse(uri);
|
|
168
212
|
if (!currentCellIds.has(cellId)) {
|
|
169
|
-
|
|
213
|
+
this.seenCellDocumentUris.delete(uri);
|
|
170
214
|
}
|
|
171
215
|
}
|
|
172
216
|
}
|
|
@@ -178,6 +222,7 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
178
222
|
string,
|
|
179
223
|
Promise<LSP.CompletionItem>
|
|
180
224
|
>(10);
|
|
225
|
+
private readonly openCellDocumentCounts = new Map<CellDocumentUri, number>();
|
|
181
226
|
private latestDiagnosticsVersion: number | null = null;
|
|
182
227
|
private forwardedDiagnosticsVersion = 0;
|
|
183
228
|
|
|
@@ -201,7 +246,7 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
201
246
|
isClientWithNotify(this.client),
|
|
202
247
|
"notify is not a method on the client",
|
|
203
248
|
);
|
|
204
|
-
this.client.notify("workspace/didChangeConfiguration", {
|
|
249
|
+
void this.client.notify("workspace/didChangeConfiguration", {
|
|
205
250
|
settings: initialSettings,
|
|
206
251
|
});
|
|
207
252
|
});
|
|
@@ -253,9 +298,14 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
253
298
|
}
|
|
254
299
|
|
|
255
300
|
close(): void {
|
|
301
|
+
this.openCellDocumentCounts.clear();
|
|
256
302
|
this.client.close();
|
|
257
303
|
}
|
|
258
304
|
|
|
305
|
+
hasCapability(method: string): boolean {
|
|
306
|
+
return this.client.hasCapability(method);
|
|
307
|
+
}
|
|
308
|
+
|
|
259
309
|
/**
|
|
260
310
|
* Re-synchronize all open documents with the LSP server.
|
|
261
311
|
* This is called after a WebSocket reconnection to restore document state.
|
|
@@ -266,7 +316,7 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
266
316
|
"notify is not a method on the client",
|
|
267
317
|
);
|
|
268
318
|
await this.client.initialize();
|
|
269
|
-
this.client.notify("workspace/didChangeConfiguration", {
|
|
319
|
+
await this.client.notify("workspace/didChangeConfiguration", {
|
|
270
320
|
settings: this.initialSettings,
|
|
271
321
|
});
|
|
272
322
|
|
|
@@ -275,16 +325,19 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
275
325
|
this.latestDiagnosticsVersion = null;
|
|
276
326
|
this.forwardedDiagnosticsVersion = 0;
|
|
277
327
|
|
|
278
|
-
//
|
|
279
|
-
//
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
328
|
+
// The upstream client preserves its didOpen reference counts across a
|
|
329
|
+
// transport reconnect. Send the re-open notification directly so the new
|
|
330
|
+
// server session receives the document without incrementing those counts.
|
|
331
|
+
if (this.openCellDocumentCounts.size > 0) {
|
|
332
|
+
await this.client.notify("textDocument/didOpen", {
|
|
333
|
+
textDocument: {
|
|
334
|
+
languageId: "python",
|
|
335
|
+
text: lens.mergedText,
|
|
336
|
+
uri: this.documentUri,
|
|
337
|
+
version: version,
|
|
338
|
+
},
|
|
339
|
+
});
|
|
340
|
+
}
|
|
288
341
|
|
|
289
342
|
Logger.log("[lsp] Document re-synchronization complete");
|
|
290
343
|
}
|
|
@@ -309,29 +362,67 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
309
362
|
|
|
310
363
|
const { lens, version } = this.snapshotter.snapshot();
|
|
311
364
|
|
|
312
|
-
|
|
365
|
+
const previousOpenCount =
|
|
366
|
+
this.openCellDocumentCounts.get(cellDocumentUri) ?? 0;
|
|
367
|
+
this.openCellDocumentCounts.set(cellDocumentUri, previousOpenCount + 1);
|
|
313
368
|
|
|
314
369
|
// Pass merged doc to LSP
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
370
|
+
try {
|
|
371
|
+
const result = await this.client.textDocumentDidOpen({
|
|
372
|
+
textDocument: {
|
|
373
|
+
languageId: params.textDocument.languageId,
|
|
374
|
+
text: lens.mergedText,
|
|
375
|
+
uri: this.documentUri,
|
|
376
|
+
version: version,
|
|
377
|
+
},
|
|
378
|
+
});
|
|
323
379
|
|
|
324
|
-
|
|
325
|
-
|
|
380
|
+
// Only mark the cell as seen once the open actually succeeds.
|
|
381
|
+
this.seenCellDocumentUris.add(cellDocumentUri);
|
|
382
|
+
return result !== false;
|
|
383
|
+
} catch (error) {
|
|
384
|
+
// Roll back this call's own increment. Use the *current* count rather
|
|
385
|
+
// than `previousOpenCount`: a concurrent open for the same cell may
|
|
386
|
+
// have incremented it while this call was in flight, and resetting to
|
|
387
|
+
// the stale snapshot would erase that other, possibly-successful
|
|
388
|
+
// reference.
|
|
389
|
+
const currentOpenCount =
|
|
390
|
+
this.openCellDocumentCounts.get(cellDocumentUri) ?? 0;
|
|
391
|
+
if (currentOpenCount <= 1) {
|
|
392
|
+
this.openCellDocumentCounts.delete(cellDocumentUri);
|
|
393
|
+
} else {
|
|
394
|
+
this.openCellDocumentCounts.set(cellDocumentUri, currentOpenCount - 1);
|
|
395
|
+
}
|
|
396
|
+
throw error;
|
|
326
397
|
}
|
|
398
|
+
}
|
|
327
399
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
400
|
+
public async textDocumentDidClose(
|
|
401
|
+
params: LSP.DidCloseTextDocumentParams,
|
|
402
|
+
): Promise<void> {
|
|
403
|
+
const cellDocumentUri = params.textDocument.uri;
|
|
404
|
+
this.assertCellDocumentUri(cellDocumentUri);
|
|
405
|
+
|
|
406
|
+
const previousOpenCount =
|
|
407
|
+
this.openCellDocumentCounts.get(cellDocumentUri) ?? 0;
|
|
408
|
+
if (previousOpenCount === 0) {
|
|
409
|
+
// No matching open was ever recorded for this cell; ignore rather
|
|
410
|
+
// than forwarding a close that isn't ours to send.
|
|
411
|
+
Logger.warn(
|
|
412
|
+
"[lsp] textDocumentDidClose with no tracked open",
|
|
413
|
+
cellDocumentUri,
|
|
414
|
+
);
|
|
415
|
+
return;
|
|
416
|
+
}
|
|
417
|
+
if (previousOpenCount <= 1) {
|
|
418
|
+
this.openCellDocumentCounts.delete(cellDocumentUri);
|
|
419
|
+
} else {
|
|
420
|
+
this.openCellDocumentCounts.set(cellDocumentUri, previousOpenCount - 1);
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
await this.client.textDocumentDidClose({
|
|
424
|
+
textDocument: { uri: this.documentUri },
|
|
425
|
+
});
|
|
335
426
|
}
|
|
336
427
|
|
|
337
428
|
/**
|
|
@@ -360,18 +451,52 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
360
451
|
return { params, lens };
|
|
361
452
|
}
|
|
362
453
|
|
|
363
|
-
public async textDocumentDidChange(
|
|
454
|
+
public async textDocumentDidChange(
|
|
455
|
+
params: LSP.DidChangeTextDocumentParams,
|
|
456
|
+
): Promise<void> {
|
|
364
457
|
Logger.debug("[lsp] textDocumentDidChange", params);
|
|
365
458
|
// We know how to only handle single content changes
|
|
366
459
|
// But that is all we expect to receive
|
|
367
460
|
if (params.contentChanges.length === 1) {
|
|
368
|
-
|
|
369
|
-
return
|
|
461
|
+
await this.sync();
|
|
462
|
+
return;
|
|
370
463
|
}
|
|
371
464
|
|
|
372
465
|
Logger.warn("[lsp] Unhandled textDocumentDidChange", params);
|
|
373
466
|
|
|
374
|
-
|
|
467
|
+
await this.client.textDocumentDidChange(params);
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
public async textDocumentWillSave(
|
|
471
|
+
params: LSP.WillSaveTextDocumentParams,
|
|
472
|
+
): Promise<void> {
|
|
473
|
+
this.assertCellDocumentUri(params.textDocument.uri);
|
|
474
|
+
await this.client.textDocumentWillSave({
|
|
475
|
+
...params,
|
|
476
|
+
textDocument: { uri: this.documentUri },
|
|
477
|
+
});
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
public async textDocumentWillSaveWaitUntil(
|
|
481
|
+
params: LSP.WillSaveTextDocumentParams,
|
|
482
|
+
): Promise<LSP.TextEdit[] | null> {
|
|
483
|
+
this.assertCellDocumentUri(params.textDocument.uri);
|
|
484
|
+
// See textDocumentCodeAction for why merged-document edits are unsafe
|
|
485
|
+
Logger.debug(
|
|
486
|
+
"[lsp] willSaveWaitUntil edits are disabled for notebook documents",
|
|
487
|
+
);
|
|
488
|
+
return null;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
public async textDocumentDidSave(
|
|
492
|
+
params: LSP.DidSaveTextDocumentParams,
|
|
493
|
+
): Promise<void> {
|
|
494
|
+
this.assertCellDocumentUri(params.textDocument.uri);
|
|
495
|
+
const { lens } = this.snapshotter.snapshot();
|
|
496
|
+
await this.client.textDocumentDidSave({
|
|
497
|
+
textDocument: { uri: this.documentUri },
|
|
498
|
+
text: params.text === undefined ? undefined : lens.mergedText,
|
|
499
|
+
});
|
|
375
500
|
}
|
|
376
501
|
|
|
377
502
|
async textDocumentDefinition(
|
|
@@ -457,6 +582,51 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
457
582
|
return this.client.textDocumentCodeAction(params);
|
|
458
583
|
}
|
|
459
584
|
|
|
585
|
+
codeActionResolve(action: LSP.CodeAction): Promise<LSP.CodeAction> {
|
|
586
|
+
return Promise.resolve(action);
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
/**
|
|
590
|
+
* Map a diagnostic's related-information entries ("declared here", ...) out
|
|
591
|
+
* of merged-document coordinates. Entries pointing into the notebook are
|
|
592
|
+
* rewritten to the owning cell; entries pointing at files on disk are left
|
|
593
|
+
* for the host to open.
|
|
594
|
+
*/
|
|
595
|
+
private reverseRelatedInformation(
|
|
596
|
+
relatedInformation: LSP.DiagnosticRelatedInformation[] | undefined,
|
|
597
|
+
lens: NotebookLens,
|
|
598
|
+
): LSP.DiagnosticRelatedInformation[] | undefined {
|
|
599
|
+
if (!relatedInformation) {
|
|
600
|
+
return undefined;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
return relatedInformation.map((related) => {
|
|
604
|
+
// `isDiagnostic` does not validate related information, so a server may
|
|
605
|
+
// hand us an entry that isn't an object or has no usable location.
|
|
606
|
+
if (
|
|
607
|
+
!isRecord(related) ||
|
|
608
|
+
!isRecord(related.location) ||
|
|
609
|
+
related.location.uri !== this.documentUri ||
|
|
610
|
+
!isRange(related.location.range)
|
|
611
|
+
) {
|
|
612
|
+
return related;
|
|
613
|
+
}
|
|
614
|
+
const cellId = lens.cellIds.find((id) =>
|
|
615
|
+
lens.isInRange(related.location.range, id),
|
|
616
|
+
);
|
|
617
|
+
if (cellId === undefined) {
|
|
618
|
+
return related;
|
|
619
|
+
}
|
|
620
|
+
return {
|
|
621
|
+
...related,
|
|
622
|
+
location: {
|
|
623
|
+
uri: CellDocumentUri.of(cellId),
|
|
624
|
+
range: lens.reverseRange(related.location.range, cellId),
|
|
625
|
+
},
|
|
626
|
+
};
|
|
627
|
+
});
|
|
628
|
+
}
|
|
629
|
+
|
|
460
630
|
/**
|
|
461
631
|
* Rename implementation with manual edit application.
|
|
462
632
|
*
|
|
@@ -754,24 +924,16 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
754
924
|
*/
|
|
755
925
|
public patchProcessNotification() {
|
|
756
926
|
invariant(
|
|
757
|
-
|
|
927
|
+
isClientWithProcessNotification(this.client),
|
|
758
928
|
"processNotification is not a method on the client",
|
|
759
929
|
);
|
|
760
930
|
|
|
761
|
-
// @ts-expect-error: processNotification is private
|
|
762
931
|
const previousProcessNotification = this.client.processNotification.bind(
|
|
763
932
|
this.client,
|
|
764
933
|
);
|
|
765
934
|
|
|
766
|
-
const processNotification = (
|
|
767
|
-
notification
|
|
768
|
-
| {
|
|
769
|
-
method: "textDocument/publishDiagnostics";
|
|
770
|
-
params: LSP.PublishDiagnosticsParams;
|
|
771
|
-
}
|
|
772
|
-
| { method: "other"; params: unknown },
|
|
773
|
-
) => {
|
|
774
|
-
if (notification.method === "textDocument/publishDiagnostics") {
|
|
935
|
+
const processNotification = (notification: ClientNotification) => {
|
|
936
|
+
if (isPublishDiagnosticsNotification(notification)) {
|
|
775
937
|
const incomingVersion = notification.params.version;
|
|
776
938
|
if (incomingVersion != null) {
|
|
777
939
|
const latestVersion = this.latestDiagnosticsVersion;
|
|
@@ -811,12 +973,16 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
811
973
|
if (!diagnosticsByCellId.has(cellId)) {
|
|
812
974
|
diagnosticsByCellId.set(cellId, []);
|
|
813
975
|
}
|
|
814
|
-
const
|
|
976
|
+
const relatedInformation = this.reverseRelatedInformation(
|
|
977
|
+
diag.relatedInformation,
|
|
978
|
+
lens,
|
|
979
|
+
);
|
|
980
|
+
const cellDiag: LSP.Diagnostic = {
|
|
815
981
|
...diag,
|
|
816
982
|
range: lens.reverseRange(diag.range, cellId),
|
|
983
|
+
...(relatedInformation ? { relatedInformation } : {}),
|
|
817
984
|
};
|
|
818
|
-
|
|
819
|
-
diagnosticsByCellId.get(cellId)!.push(cellDiag);
|
|
985
|
+
diagnosticsByCellId.get(cellId)?.push(cellDiag);
|
|
820
986
|
break; // Exit inner loop once we find the matching cell
|
|
821
987
|
}
|
|
822
988
|
}
|
|
@@ -824,11 +990,9 @@ export class NotebookLanguageServerClient implements ILanguageServerClient {
|
|
|
824
990
|
|
|
825
991
|
// Prune any cell URIs for cells that no longer exist
|
|
826
992
|
const currentCellIds = new Set(lens.cellIds);
|
|
827
|
-
|
|
993
|
+
this.pruneSeenCellUris(currentCellIds);
|
|
828
994
|
|
|
829
|
-
const cellsToClear = new Set(
|
|
830
|
-
NotebookLanguageServerClient.SEEN_CELL_DOCUMENT_URIS,
|
|
831
|
-
);
|
|
995
|
+
const cellsToClear = new Set(this.seenCellDocumentUris);
|
|
832
996
|
|
|
833
997
|
// Process each cell's diagnostics
|
|
834
998
|
for (const [cellId, cellDiagnostics] of diagnosticsByCellId.entries()) {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { ReconnectingWebSocketTransport } from "@/core/lsp/transport";
|
|
3
3
|
import { waitForConnectionOpen } from "../../network/connection";
|
|
4
4
|
import { getRuntimeManager } from "../../runtime/config";
|
|
5
|
+
import { handleLogMessage } from "./log-messages";
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Create a transport for a given LSP server.
|
|
@@ -18,11 +19,17 @@ export function createTransport(
|
|
|
18
19
|
onReconnect?: () => Promise<void>,
|
|
19
20
|
) {
|
|
20
21
|
const runtimeManager = getRuntimeManager();
|
|
21
|
-
|
|
22
|
+
const transport = new ReconnectingWebSocketTransport({
|
|
22
23
|
getWsUrl: () => runtimeManager.getLSPURL(serverName).toString(),
|
|
23
24
|
waitForConnection: async () => {
|
|
24
25
|
await waitForConnectionOpen();
|
|
25
26
|
},
|
|
26
27
|
onReconnect,
|
|
27
28
|
});
|
|
29
|
+
|
|
30
|
+
// Handled on the transport, not the client, so that logs are captured before
|
|
31
|
+
// the client initializes — which is when startup failures are reported.
|
|
32
|
+
transport.onMessage((message) => handleLogMessage(serverName, message));
|
|
33
|
+
|
|
34
|
+
return transport;
|
|
28
35
|
}
|
|
@@ -6,9 +6,56 @@ import type { CellId } from "@/core/cells/ids";
|
|
|
6
6
|
import { invariant } from "@/utils/invariant";
|
|
7
7
|
import type { TypedString } from "@/utils/typed";
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
type LanguageServerClientMember =
|
|
10
|
+
| "ready"
|
|
11
|
+
| "capabilities"
|
|
12
|
+
| "initializePromise"
|
|
13
|
+
| "clientCapabilities"
|
|
14
|
+
| "initialize"
|
|
15
|
+
| "close"
|
|
16
|
+
| "hasCapability"
|
|
17
|
+
| "textDocumentDidOpen"
|
|
18
|
+
| "textDocumentDidChange"
|
|
19
|
+
| "textDocumentDidClose"
|
|
20
|
+
| "textDocumentWillSave"
|
|
21
|
+
| "textDocumentWillSaveWaitUntil"
|
|
22
|
+
| "textDocumentDidSave"
|
|
23
|
+
| "textDocumentHover"
|
|
24
|
+
| "textDocumentCompletion"
|
|
25
|
+
| "completionItemResolve"
|
|
26
|
+
| "textDocumentDefinition"
|
|
27
|
+
| "textDocumentCodeAction"
|
|
28
|
+
| "codeActionResolve"
|
|
29
|
+
| "textDocumentRename"
|
|
30
|
+
| "textDocumentPrepareRename"
|
|
31
|
+
| "textDocumentSignatureHelp"
|
|
32
|
+
| "onNotification";
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The stable client surface used by marimo's notebook and federated adapters.
|
|
36
|
+
* Keeping this explicit prevents unrelated additions to the upstream client
|
|
37
|
+
* from becoming required adapter methods.
|
|
38
|
+
*/
|
|
39
|
+
export type ILanguageServerClient = Pick<
|
|
40
|
+
LanguageServerClient,
|
|
41
|
+
LanguageServerClientMember
|
|
42
|
+
>;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* LSP request methods that `FederatedLanguageServerClient` routes to whichever
|
|
46
|
+
* child client declares support.
|
|
47
|
+
*
|
|
48
|
+
* This is the subset of `ILanguageServerClient`'s request methods
|
|
49
|
+
* https://github.com/marimo-team/codemirror-languageserver/blob/v2.0.0/src/lsp.ts#L88-L113
|
|
50
|
+
*/
|
|
51
|
+
export type RoutableLspMethod =
|
|
52
|
+
| "textDocument/hover"
|
|
53
|
+
| "textDocument/completion"
|
|
54
|
+
| "textDocument/definition"
|
|
55
|
+
| "textDocument/codeAction"
|
|
56
|
+
| "textDocument/rename"
|
|
57
|
+
| "textDocument/prepareRename"
|
|
58
|
+
| "textDocument/signatureHelp";
|
|
12
59
|
|
|
13
60
|
export type CellDocumentUri = DocumentUri & TypedString<"CellDocumentUri">;
|
|
14
61
|
|
|
@@ -33,10 +80,23 @@ export const CellDocumentUri = {
|
|
|
33
80
|
export function isClientWithNotify(
|
|
34
81
|
client: ILanguageServerClient,
|
|
35
82
|
): client is ILanguageServerClient & {
|
|
36
|
-
notify: (
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
83
|
+
notify: (method: string, params: unknown) => Promise<void>;
|
|
84
|
+
} {
|
|
85
|
+
return "notify" in client && typeof client.notify === "function";
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export interface ClientNotification {
|
|
89
|
+
method: string;
|
|
90
|
+
params: unknown;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export function isClientWithProcessNotification(
|
|
94
|
+
client: ILanguageServerClient,
|
|
95
|
+
): client is ILanguageServerClient & {
|
|
96
|
+
processNotification: (notification: ClientNotification) => void;
|
|
40
97
|
} {
|
|
41
|
-
return
|
|
98
|
+
return (
|
|
99
|
+
"processNotification" in client &&
|
|
100
|
+
typeof client.processNotification === "function"
|
|
101
|
+
);
|
|
42
102
|
}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
import { cellIdsAtom } from "@/core/cells/cells";
|
|
2
3
|
import { lspWorkspaceAtom } from "@/core/saving/file-state";
|
|
3
4
|
import { store } from "@/core/state/jotai";
|
|
5
|
+
import { CellDocumentUri } from "./types";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* `CellDocumentUri.is` only tests the `file:///` prefix, which every absolute
|
|
9
|
+
* file URI shares, so on its own it cannot tell a cell from a real file on
|
|
10
|
+
* disk. Resolve the URI against the open notebook instead.
|
|
11
|
+
*/
|
|
12
|
+
export function isKnownCellDocumentUri(uri: string): boolean {
|
|
13
|
+
if (!CellDocumentUri.is(uri)) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
return store.get(cellIdsAtom).inOrderIds.includes(CellDocumentUri.parse(uri));
|
|
17
|
+
}
|
|
4
18
|
|
|
5
19
|
export function getLspRootUri() {
|
|
6
20
|
const lspWorkspace = store.get(lspWorkspaceAtom);
|
|
@@ -52,6 +52,34 @@ export function focusInputAndMoveToEnd(
|
|
|
52
52
|
});
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
/**
|
|
56
|
+
* Scrolls the `.marimo-cell` that owns `view` into view.
|
|
57
|
+
*
|
|
58
|
+
* `EditorView.scrollIntoView` doesn't work in columns mode: it stops at the
|
|
59
|
+
* first overflowing ancestor even if that ancestor doesn't actually scroll,
|
|
60
|
+
* so it never reaches the real horizontally-scrolling container. The
|
|
61
|
+
* browser's native `Element.scrollIntoView` doesn't have that problem.
|
|
62
|
+
*
|
|
63
|
+
* Deferred a frame so CodeMirror's own scroll settles first; otherwise it
|
|
64
|
+
* clamps this scroll right back.
|
|
65
|
+
*
|
|
66
|
+
* https://github.com/marimo-team/marimo/issues/10222
|
|
67
|
+
*/
|
|
68
|
+
export function scrollOwnerCell(view: EditorView): void {
|
|
69
|
+
const cell = view.dom.closest(".marimo-cell");
|
|
70
|
+
if (!cell) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
requestAnimationFrame(() => {
|
|
75
|
+
cell.scrollIntoView({
|
|
76
|
+
behavior: "instant",
|
|
77
|
+
block: "nearest",
|
|
78
|
+
inline: "nearest",
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
|
|
55
83
|
export function isInVimMode(ev: EditorView): boolean {
|
|
56
84
|
return getCM(ev)?.state.vim != null;
|
|
57
85
|
}
|
package/src/core/edit-app.tsx
CHANGED
|
@@ -164,6 +164,7 @@ export const EditApp: React.FC<AppProps> = ({
|
|
|
164
164
|
width={appConfig.width}
|
|
165
165
|
onReconnect={reconnect}
|
|
166
166
|
>
|
|
167
|
+
<ViewerBanner />
|
|
167
168
|
<AppHeader
|
|
168
169
|
connection={connection}
|
|
169
170
|
className={cn(
|
|
@@ -179,8 +180,6 @@ export const EditApp: React.FC<AppProps> = ({
|
|
|
179
180
|
)}
|
|
180
181
|
</AppHeader>
|
|
181
182
|
|
|
182
|
-
<ViewerBanner />
|
|
183
|
-
|
|
184
183
|
{/* Don't render until we have a single cell. NotStartedConnectionAlert
|
|
185
184
|
still covers the "no remote runtime started" prompt. */}
|
|
186
185
|
<ProgressiveBoundary
|
|
@@ -648,8 +648,7 @@ describe("updateCellOutputsWithScreenshots", () => {
|
|
|
648
648
|
);
|
|
649
649
|
expect(toast).toHaveBeenCalledWith({
|
|
650
650
|
title: "Failed to capture cell outputs",
|
|
651
|
-
description:
|
|
652
|
-
"Some outputs may not appear in the PDF. Continuing with export.",
|
|
651
|
+
description: "Some outputs may be missing from the export. Continuing.",
|
|
653
652
|
variant: "danger",
|
|
654
653
|
});
|
|
655
654
|
});
|
|
@@ -679,8 +678,7 @@ describe("updateCellOutputsWithScreenshots", () => {
|
|
|
679
678
|
);
|
|
680
679
|
expect(toast).toHaveBeenCalledWith({
|
|
681
680
|
title: "Failed to capture cell outputs",
|
|
682
|
-
description:
|
|
683
|
-
"Some outputs may not appear in the PDF. Continuing with export.",
|
|
681
|
+
description: "Some outputs may be missing from the export. Continuing.",
|
|
684
682
|
variant: "danger",
|
|
685
683
|
});
|
|
686
684
|
});
|
package/src/core/export/hooks.ts
CHANGED
|
@@ -112,7 +112,9 @@ interface UseEnrichCellOutputsOptions {
|
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
/**
|
|
115
|
-
*
|
|
115
|
+
* Capture browser-rendered cell outputs for current-session exports.
|
|
116
|
+
*
|
|
117
|
+
* The caller uploads these PNG representations before requesting an export.
|
|
116
118
|
* @returns A map of cell IDs to their screenshots data.
|
|
117
119
|
*/
|
|
118
120
|
export function useEnrichCellOutputs(): (
|
|
@@ -221,8 +223,7 @@ export async function updateCellOutputsWithScreenshots(opts: {
|
|
|
221
223
|
Logger.error("Error updating cell outputs with screenshots:", error);
|
|
222
224
|
toast({
|
|
223
225
|
title: "Failed to capture cell outputs",
|
|
224
|
-
description:
|
|
225
|
-
"Some outputs may not appear in the PDF. Continuing with export.",
|
|
226
|
+
description: "Some outputs may be missing from the export. Continuing.",
|
|
226
227
|
variant: "danger",
|
|
227
228
|
});
|
|
228
229
|
}
|
|
@@ -256,13 +256,11 @@ const DEFAULT_HOT_KEY = {
|
|
|
256
256
|
name: "Copy line(s) up",
|
|
257
257
|
group: "Editing",
|
|
258
258
|
key: "Alt-Shift-ArrowUp",
|
|
259
|
-
editable: false,
|
|
260
259
|
},
|
|
261
260
|
"cell.copyLineDown": {
|
|
262
261
|
name: "Copy line(s) down",
|
|
263
262
|
group: "Editing",
|
|
264
263
|
key: "Alt-Shift-ArrowDown",
|
|
265
|
-
editable: false,
|
|
266
264
|
},
|
|
267
265
|
|
|
268
266
|
// Markdown
|