@marimo-team/islands 0.23.15-dev5 → 0.23.15-dev53
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-CU4fZJzG.js → ConnectedDataExplorerComponent-DMcymmpc.js} +85 -84
- package/dist/{ErrorBoundary-DE6tzZf-.js → ErrorBoundary-DXlxsrTF.js} +3 -3
- package/dist/{ImageComparisonComponent-CHrI72em.js → ImageComparisonComponent-C3y7L3eJ.js} +173 -129
- package/dist/{any-language-editor-DN1R-1KZ.js → any-language-editor-BfTj3PPF.js} +20 -20
- package/dist/apl-e1B5LPEL.js +4 -0
- package/dist/{arc-DfkSnvZm.js → arc-CTIpFoOn.js} +2 -2
- package/dist/architecture-7HQA4BMR-DHUrQjL4.js +6 -0
- package/dist/{architectureDiagram-VXUJARFQ-CT2SuxNw.js → architectureDiagram-VXUJARFQ-B3jN8fkV.js} +19 -19
- package/dist/asciiarmor-B-gwgesP.js +4 -0
- package/dist/asn1-DF2ckRB4.js +4 -0
- package/dist/assets/__vite-browser-external-CjNAy01L.js +1 -0
- package/dist/assets/worker-B3XPCb6y.js +98 -0
- package/dist/{blockDiagram-VD42YOAC-Dy7hlFla.js → blockDiagram-VD42YOAC-Dq_8lAbz.js} +12 -12
- package/dist/brainfuck-4G-7_gq_.js +4 -0
- package/dist/{button-BacYv-bE.js → button-BcSml68y.js} +12 -65
- package/dist/{c4Diagram-YG6GDRKO-BXlAmZ8Z.js → c4Diagram-YG6GDRKO-BPzX9a9A.js} +6 -6
- package/dist/{capabilities-D_4LYhSU.js → capabilities-BYLFYTYv.js} +2 -2
- package/dist/{channel-D_PHgcig.js → channel-D_qwSlm9.js} +1 -1
- package/dist/{chat-ui-DinOvbWu.js → chat-ui-CYGIiYqI.js} +3115 -3114
- package/dist/{check-C9OoNtR4.js → check-Cs-KV5XY.js} +1 -1
- package/dist/{chunk-4BX2VUAB-CzXltWHN.js → chunk-4BX2VUAB-iU5lQTDI.js} +1 -1
- package/dist/{chunk-4F5CHEZ2-D9nGEHV8.js → chunk-4F5CHEZ2-VlodlEGo.js} +1 -1
- package/dist/{chunk-55IACEB6-B-1mjMMC.js → chunk-55IACEB6-7h71GwyW.js} +1 -1
- package/dist/{chunk-5FQGJX7Z-BbqSm5gU.js → chunk-5FQGJX7Z-B9WoXK1R.js} +3 -3
- package/dist/{chunk-ABZYJK2D-Dz0-H2B5.js → chunk-ABZYJK2D-CDSMdLBr.js} +3 -3
- package/dist/{chunk-ATLVNIR6-o0Z5MZLd.js → chunk-ATLVNIR6-BAW0e_d_.js} +2 -2
- package/dist/{chunk-B2363JML-KEJpLGGP.js → chunk-B2363JML-zL3VngtH.js} +1 -1
- package/dist/{chunk-B4BG7PRW-BL98U9B4.js → chunk-B4BG7PRW-CfEI05WL.js} +7 -7
- package/dist/{chunk-CVBHYZKI-B_c5YBcW.js → chunk-CVBHYZKI-CwazXVlJ.js} +1 -1
- package/dist/{chunk-DI55MBZ5-Dwkn0LWm.js → chunk-DI55MBZ5-CZS7hhjV.js} +6 -6
- package/dist/{chunk-EXTU4WIE-9sNjmQrB.js → chunk-EXTU4WIE-DHwKB8ls.js} +2 -2
- package/dist/{chunk-FMBD7UC4-Ie8M9q0W.js → chunk-FMBD7UC4-quJmebXa.js} +1 -1
- package/dist/{chunk-FRFDVMJY-DzQqMWrl.js → chunk-FRFDVMJY-BHBqN-vD.js} +1 -1
- package/dist/{chunk-HN2XXSSU-E3n-Ys7Z.js → chunk-HN2XXSSU-Bv0QkeMr.js} +1 -1
- package/dist/{chunk-JA3XYJ7Z-C32Y7Epf.js → chunk-JA3XYJ7Z-Cy80gDpz.js} +3 -3
- package/dist/{chunk-JZLCHNYA-C6ftyVMN.js → chunk-JZLCHNYA-yfXq27Zq.js} +6 -6
- package/dist/{chunk-MI3HLSF2-CUYEasXO.js → chunk-MI3HLSF2-HGWI-8Pg.js} +1 -1
- package/dist/{chunk-N4CR4FBY-DUhGZhZs.js → chunk-N4CR4FBY-C9D3Wsot.js} +7 -7
- package/dist/{chunk-PL6DKKU2-D7km-08O.js → chunk-PL6DKKU2-CAHKc95s.js} +1 -1
- package/dist/{chunk-QN33PNHL-0K6SDYn3.js → chunk-QN33PNHL-Bh2YDyg7.js} +2 -2
- package/dist/{chunk-QXUST7PY-DMhsRpYK.js → chunk-QXUST7PY-kDpsCDoY.js} +10 -10
- package/dist/{chunk-QZHKN3VN-DRjXVwuJ.js → chunk-QZHKN3VN-Dym5BS7y.js} +1 -1
- package/dist/{chunk-S3R3BYOJ-oAe3dEbO.js → chunk-S3R3BYOJ-DkY8Kz3y.js} +4 -4
- package/dist/{chunk-SJTYNZTY-BkJrPRFC.js → chunk-SJTYNZTY-DnXoKWpW.js} +1 -1
- package/dist/{chunk-TCCFYFTB-D58KeXnC.js → chunk-TCCFYFTB-DPWJa9zL.js} +1 -1
- package/dist/{chunk-TQ3KTPDO-D_yA_wAb.js → chunk-TQ3KTPDO-CsDx6v37.js} +1 -1
- package/dist/{chunk-TZMSLE5B-yBKS_DQU.js → chunk-TZMSLE5B-CMZoW3vd.js} +3 -3
- package/dist/{chunk-UMXZTB3W-D7uwvNjd.js → chunk-UMXZTB3W-D1uHz8MN.js} +1 -1
- package/dist/classDiagram-2ON5EDUG-b2d3ZqfR.js +30 -0
- package/dist/classDiagram-v2-WZHVMYZB-RvnJbJ5M.js +30 -0
- package/dist/{clike-DTxNUn7l.js → clike-7lgyEYRk.js} +1 -1
- package/dist/clojure-CUybM11R.js +4 -0
- package/dist/cmake-BPjGcuDL.js +4 -0
- package/dist/cobol-BETk_nb6.js +4 -0
- package/dist/{code-block-37QAKDTI-O6IH6wAi.js → code-block-37QAKDTI-MSxEjskJ.js} +1 -1
- package/dist/{code-visibility-DBuB5MVY.js → code-visibility-Ddr-Cesu.js} +1553 -1470
- package/dist/coffeescript-CManZxXL.js +4 -0
- package/dist/commonlisp-DWkn7GW8.js +4 -0
- package/dist/{copy-COam1EG7.js → copy-Cs3yt6Vt.js} +2 -2
- package/dist/{cose-bilkent-S5V4N54A-kjoZoid4.js → cose-bilkent-S5V4N54A-BYj0aL7z.js} +2 -2
- package/dist/crystal-CCbg5EUH.js +4 -0
- package/dist/css-By8eo-XS.js +4 -0
- package/dist/cypher-DwfHg3nP.js +4 -0
- package/dist/d-Brs1wNbw.js +4 -0
- package/dist/{dagre-6UL2VRFP-J0JKgwOt.js → dagre-6UL2VRFP--ruFWg_S.js} +11 -11
- package/dist/{data-grid-overlay-editor-C6lxUJp-.js → data-grid-overlay-editor-BWRG2b_o.js} +2 -2
- package/dist/{constants-T20xxyNf.js → debounce-BOD3DbfP.js} +1 -24
- package/dist/{diagram-PSM6KHXK-DYgJuNk9.js → diagram-PSM6KHXK-CGakapLj.js} +22 -22
- package/dist/{diagram-QEK2KX5R-CKdBR2sb.js → diagram-QEK2KX5R-CtqD8u_P.js} +17 -17
- package/dist/{diagram-S2PKOQOG-Dpi7mo5W.js → diagram-S2PKOQOG-BS1wa35J.js} +17 -17
- package/dist/diff-DJIRmJ1g.js +4 -0
- package/dist/{dist-Dv_Y15yk.js → dist-3MT9i_N5.js} +2 -2
- package/dist/{dist-CoXAujgg.js → dist-4-bJUNMb.js} +3 -3
- package/dist/{dist-DPrYzMY0.js → dist-9yiSURLw.js} +2 -2
- package/dist/dist-9zfbSqew.js +8 -0
- package/dist/{dist-GZXUmt0b.js → dist-B1k1NmGB.js} +1 -1
- package/dist/{dist-abid3KgM.js → dist-B69xyr_D.js} +1 -1
- package/dist/{dist--2Bqjvs0.js → dist-B96tMAst.js} +2 -2
- package/dist/{dist-t9Kf7xqC.js → dist-BFgLBSJb.js} +1 -1
- package/dist/{dist-DyyjKEYf.js → dist-BGLXXYL4.js} +1 -1
- package/dist/{dist-Bf7SHuNp.js → dist-BGj6VvC-.js} +4 -4
- package/dist/{dist-Bk75fBZA.js → dist-BGtkYshf.js} +1 -1
- package/dist/{dist-CpxNdDkw.js → dist-BIdzGb3O.js} +1 -1
- package/dist/dist-BZ_VEpg8.js +8 -0
- package/dist/{dist-7QfXoMdB.js → dist-BdYVjH1C.js} +1 -1
- package/dist/{dist-D8CDTVgf.js → dist-BiIoKp92.js} +2 -2
- package/dist/dist-Bow9AUXt.js +5 -0
- package/dist/{dist-BSAt6RhH.js → dist-BvCrjp81.js} +2 -2
- package/dist/{dist-DgGbNavJ.js → dist-C-RLuUaE.js} +1 -1
- package/dist/dist-C8odMDp5.js +8 -0
- package/dist/{dist-BY018Paw.js → dist-CLBjD8zw.js} +1 -1
- package/dist/dist-CLgjZx38.js +5 -0
- package/dist/{dist-C_Y3oV3C.js → dist-CNXNPADS.js} +1 -1
- package/dist/{dist-Du8WkPuU.js → dist-CV79CsQ0.js} +2 -2
- package/dist/dist-CnMOJtGP.js +5 -0
- package/dist/dist-D-5m1nDT.js +5 -0
- package/dist/dist-D8AXqiCV.js +5 -0
- package/dist/{dist-LTU8Hdvn.js → dist-DBN2w27P.js} +2 -2
- package/dist/{dist-DL6N_q-A.js → dist-DMuf8sZd.js} +1 -1
- package/dist/{dist-M9Vag9Y0.js → dist-DPH6RMhL.js} +1 -1
- package/dist/{dist-CcWX6tmx.js → dist-DgZczohI.js} +1 -1
- package/dist/dist-DszXOVSb.js +5 -0
- package/dist/dist-GW0m0q65.js +8 -0
- package/dist/{dist-Bf9f8MuT.js → dist-SXNmlE8A.js} +1 -1
- package/dist/{dist-CxJDU6Bh.js → dist-e29IFSI0.js} +3 -3
- package/dist/{dist-BaoDKvdy.js → dist-kcg3gjx6.js} +1 -1
- package/dist/{dist-BR_gyG9L.js → dist-tJic1rC-.js} +1 -1
- package/dist/{dockerfile-twL37N91.js → dockerfile-B82Pkz_V.js} +1 -1
- package/dist/dtd-Dyiazv4N.js +4 -0
- package/dist/dylan-D8Fcw7NA.js +4 -0
- package/dist/ecl-CjKp8Vii.js +4 -0
- package/dist/eiffel-K9ViOX5r.js +4 -0
- package/dist/elm-B5NVtRco.js +4 -0
- package/dist/{erDiagram-Q2GNP2WA-BU-m41EQ.js → erDiagram-Q2GNP2WA-DmtIJBsT.js} +15 -15
- package/dist/erlang-BnLzgk7R.js +4 -0
- package/dist/{error-banner-DFPfz_Qf.js → error-banner-DR7o3CbX.js} +68 -68
- package/dist/{esm-M837UxV5.js → esm-BxhNWHqh.js} +2 -2
- package/dist/{esm-ga2Bf3O2.js → esm-D6_uCZ4z.js} +104 -104
- package/dist/{extends-9MVIxxRo.js → extends-B88Yrunj.js} +4 -4
- package/dist/{factor-CajWS6mS.js → factor-Bq2mGIHt.js} +1 -1
- package/dist/factor-C7f9Jz5R.js +4 -0
- package/dist/{flowDiagram-NV44I4VS-CRoXKjGq.js → flowDiagram-NV44I4VS-DZsgBUcQ.js} +17 -17
- package/dist/{formats-Dzx4J_z1.js → formats-DSfNdJLH.js} +3 -3
- package/dist/forth-rGM8jLao.js +4 -0
- package/dist/fortran-B3acSe0i.js +4 -0
- package/dist/{ganttDiagram-JELNMOA3-7mq5f9cO.js → ganttDiagram-JELNMOA3-CgFhg_6K.js} +10 -10
- package/dist/gas-Bb1Vmv_N.js +4 -0
- package/dist/gherkin-C9Lyidgd.js +4 -0
- package/dist/{gitGraph-G5XIXVHT-DiniR35k.js → gitGraph-G5XIXVHT-BjTx0kww.js} +3 -3
- package/dist/{gitGraphDiagram-V2S2FVAM-Dfuokq6w.js → gitGraphDiagram-V2S2FVAM-DPInyn1F.js} +17 -17
- package/dist/{glide-data-editor-CjTu7ukN.js → glide-data-editor--CaN-f27.js} +13 -13
- package/dist/groovy-DQk6XcGH.js +4 -0
- package/dist/haskell-mV0Vw9gv.js +4 -0
- package/dist/haxe-DqxN89zH.js +5 -0
- package/dist/{html-to-image-_wGfk8V-.js → html-to-image-BoXPmWps.js} +2648 -2606
- package/dist/idl-ya8W561J.js +4 -0
- package/dist/{info-VBDWY6EO-DVZvGhkQ.js → info-VBDWY6EO-CA67FznA.js} +3 -3
- package/dist/infoDiagram-HS3SLOUP-ETAzKIiE.js +30 -0
- package/dist/{input-DtsN7xm-.js → input-DStQIuqD.js} +51 -51
- package/dist/javascript-CgqgptVu.js +4 -0
- package/dist/{journeyDiagram-XKPGCS4Q-8XYSU1GI.js → journeyDiagram-XKPGCS4Q-Bc94zDj1.js} +7 -7
- package/dist/julia-CFQ-HusI.js +4 -0
- package/dist/{kanban-definition-3W4ZIXB7--9pT9z1R.js → kanban-definition-3W4ZIXB7-DSk8Ebci.js} +12 -12
- package/dist/{katex-9-9QRhxz.js → katex-C4t-BmrK.js} +1 -1
- package/dist/{label-WfTSU8L4.js → label-DIk0QoFe.js} +2 -2
- package/dist/{line-C5s_12ee.js → line-C43FIPBd.js} +3 -3
- package/dist/{linear-B5-AFRiR.js → linear-H_vsH9ao.js} +4 -4
- package/dist/livescript-D__3TmDo.js +4 -0
- package/dist/{loader-Boph2xIS.js → loader-BUGT0KbC.js} +11 -22
- package/dist/lua-Bytcgj_W.js +4 -0
- package/dist/main.js +2217 -2116
- package/dist/mathematica-DJhvVKvl.js +4 -0
- package/dist/mbox-IGHPCjfR.js +4 -0
- package/dist/{mermaid-4DMBBIKO-Eg3D4FVz.js → mermaid-4DMBBIKO-FXbOziy9.js} +1 -1
- package/dist/{mermaid-BYqXy_NE.js → mermaid-CYkbfJHW.js} +47 -47
- package/dist/{mermaid-parser.core-C3XRsazI.js → mermaid-parser.core-DoivvxPd.js} +8 -8
- package/dist/{mhchem-yiCCuiEF.js → mhchem-EGhUZR1V.js} +1 -1
- package/dist/{mindmap-definition-VGOIOE7T-B-4mnfFG.js → mindmap-definition-VGOIOE7T-BYoCqVAJ.js} +14 -14
- package/dist/mirc-tcwvVugm.js +4 -0
- package/dist/mllike-Dx91i62r.js +6 -0
- package/dist/modelica-_SRt-yU5.js +4 -0
- package/dist/mscgen-GZrGS9gt.js +6 -0
- package/dist/mumps-Cv3ygyod.js +4 -0
- package/dist/nsis-BU7GeGbI.js +4 -0
- package/dist/{nsis-ClF3r5Tr.js → nsis-i9_sgigf.js} +1 -1
- package/dist/ntriples-CL-FCYXb.js +4 -0
- package/dist/{number-overlay-editor-BLJXvX9c.js → number-overlay-editor-Ck_mc_gT.js} +1 -1
- package/dist/objects-De59twF-.js +56 -0
- package/dist/octave-Dc6_3DIu.js +4 -0
- package/dist/{ordinal-ArJavP1Q.js → ordinal-Bkv2-veX.js} +1 -1
- package/dist/oz-DpUAJCXf.js +4 -0
- package/dist/{packet-DYOGHKS2-34raHOiB.js → packet-DYOGHKS2-Bkgofxf3.js} +3 -3
- package/dist/pascal-B17mncXs.js +4 -0
- package/dist/perl-BTpK97q9.js +4 -0
- package/dist/{pie-VRWISCQL-BaLlzZa3.js → pie-VRWISCQL-B1AMhN_7.js} +3 -3
- package/dist/{pieDiagram-ADFJNKIX-Cr3cNpZY.js → pieDiagram-ADFJNKIX-BaAU79Vb.js} +22 -22
- package/dist/pig-CFb638Ap.js +4 -0
- package/dist/powershell-Cxo-_2A5.js +4 -0
- package/dist/{precisionRound-Tqb4mg-H.js → precisionRound-CnHPY_5v.js} +1 -1
- package/dist/{process-output-Mh4UrjwM.js → process-output-CbRRhwQo.js} +4 -4
- package/dist/properties-BPgT1xTB.js +4 -0
- package/dist/protobuf-BgHBaIIK.js +4 -0
- package/dist/pug-25-oS0SG.js +4 -0
- package/dist/{pug-B_rby2yb.js → pug-BhE2JRSg.js} +1 -1
- package/dist/puppet-DarIr20S.js +4 -0
- package/dist/python-BqmOsBsi.js +4 -0
- package/dist/q-D3QJCTup.js +4 -0
- package/dist/{quadrantDiagram-AYHSOK5B-BuNL8Q93.js → quadrantDiagram-AYHSOK5B-BmTWJxzo.js} +5 -5
- package/dist/r-Cz_yBX4z.js +4 -0
- package/dist/{radar-ZZBFDIW7-Ci7bfoZa.js → radar-ZZBFDIW7-C2b7A32s.js} +3 -3
- package/dist/{react-vega-B0sAlDTL.js → react-vega-DfJOSnj6.js} +372 -372
- package/dist/{requirementDiagram-UZGBJVZJ-BG2lLUN1.js → requirementDiagram-UZGBJVZJ-Jrs04ua1.js} +14 -14
- package/dist/{reveal-component-DfOZrkd6.js → reveal-component-BY5sWajR.js} +628 -621
- package/dist/rpm-DGOtYwAI.js +5 -0
- package/dist/ruby-DBZu4rPc.js +4 -0
- package/dist/{sankeyDiagram-TZEHDZUN-DMal8sps.js → sankeyDiagram-TZEHDZUN-YJnhmG4N.js} +5 -5
- package/dist/sas-Dd1D9qTq.js +4 -0
- package/dist/scheme-BmDjvTHX.js +4 -0
- package/dist/{sequenceDiagram-WL72ISMW-DT6Tk-Eo.js → sequenceDiagram-WL72ISMW-D30L51Bn.js} +8 -8
- package/dist/shell-BL8zFSaj.js +4 -0
- package/dist/sieve-BAx2WqUP.js +4 -0
- package/dist/smalltalk-CYRzF7VV.js +4 -0
- package/dist/sparql-YWaDRO4A.js +4 -0
- package/dist/{spec-Cz-Bj1JI.js → spec-CnaxwDqy.js} +4 -4
- package/dist/{src-Bf2iLOlr.js → src-DV3ha_nA.js} +1 -1
- package/dist/{stateDiagram-FKZM4ZOC-CB_lodq3.js → stateDiagram-FKZM4ZOC-C0nZuUP8.js} +17 -17
- package/dist/stateDiagram-v2-4FDKWEC3-BmovmS-G.js +29 -0
- package/dist/{step-CWipAYTY.js → step-BqHnkgWE.js} +1 -1
- package/dist/stex-B5O-env2.js +4 -0
- package/dist/{strings-Dq_j3Rxw.js → strings-BYAhZnQi.js} +354 -354
- package/dist/style.css +1 -1
- package/dist/stylus-lYsyLFc1.js +4 -0
- package/dist/swift-ClQz9z1n.js +4 -0
- package/dist/{swiper-component-5HoSsPi1.js → swiper-component-DE94711u.js} +4 -4
- package/dist/tcl-B3jhsfqY.js +4 -0
- package/dist/textile-Cb1Dw7Aq.js +4 -0
- package/dist/{time-CsmIF9YZ.js → time-Bb4A7I6a.js} +4 -4
- package/dist/{timeline-definition-IT6M3QCI-NfSKRvH0.js → timeline-definition-IT6M3QCI-DEoIEWAl.js} +4 -4
- package/dist/{toDate-CWNNlFEX.js → toDate-B3IRfHhw.js} +16 -7
- package/dist/toml-nHZhetdO.js +4 -0
- package/dist/{tooltip-Czds6Qr8.js → tooltip-B-qh7UPB.js} +3 -3
- package/dist/{treemap-GDKQZRPO-Cl6OQh8D.js → treemap-GDKQZRPO-SDux0AV8.js} +3 -3
- package/dist/troff-DuJAGWKH.js +4 -0
- package/dist/ttcn-BxrcwP21.js +4 -0
- package/dist/ttcn-cfg-BAg_9dcc.js +4 -0
- package/dist/turtle-zCq949as.js +4 -0
- package/dist/{types-C2Ir191_.js → types-DQl7jVYK.js} +1 -1
- package/dist/use-vega-container-remeasure-DGNrIQSk.js +27 -0
- package/dist/{useAsyncData-KfHB8wQR.js → useAsyncData-CvO8WUy3.js} +1 -1
- package/dist/{useDateFormatter-CMnRuVmN.js → useDateFormatter-BSoGim-G.js} +2 -2
- package/dist/{useDeepCompareMemoize-nJMtxhm4.js → useDeepCompareMemoize-J3MKRdA4.js} +1 -1
- package/dist/{useIframeCapabilities-DWIYvDh7.js → useIframeCapabilities-POcFXHbw.js} +1 -1
- package/dist/{useLifecycle-DegSo0lV.js → useLifecycle-DqPxHgAN.js} +3 -3
- package/dist/{useTheme-6eZ3GOTS.js → useTheme-XMq9mNf_.js} +65 -29
- package/dist/vb-De5hElus.js +4 -0
- package/dist/vbscript-Cypcpv4F.js +4 -0
- package/dist/{vega-component-DzyyM9fc.js → vega-component-uL9ZaXcH.js} +225 -223
- package/dist/vega-embed-container-DgZMMVL3.js +22 -0
- package/dist/{vega-loader.browser-CZ-J8Py3.js → vega-loader.browser-IU8eTDwM.js} +98 -86
- package/dist/velocity-Di7l-yhe.js +4 -0
- package/dist/verilog-Bzi-S3g2.js +4 -0
- package/dist/vhdl-B0ZZITaW.js +4 -0
- package/dist/webidl-0sviiRcN.js +4 -0
- package/dist/xquery-B4qMVWaB.js +4 -0
- package/dist/{xychartDiagram-PRI3JC2R-BvwftqMA.js → xychartDiagram-PRI3JC2R-iwKXEnYZ.js} +13 -13
- package/dist/yacas-Jt25Fuv8.js +4 -0
- package/dist/z80-CrcbYzmp.js +4 -0
- package/dist/{zod-CijjQh4u.js → zod-D0yOqoGe.js} +26 -26
- package/package.json +1 -1
- package/src/__mocks__/requests.ts +3 -0
- package/src/components/charts/lazy.tsx +3 -1
- package/src/components/charts/vega-embed-container.tsx +18 -0
- package/src/components/chat/__tests__/chat-utils.test.ts +244 -1
- package/src/components/chat/__tests__/message-queue.test.tsx +121 -0
- package/src/components/chat/chat-panel.tsx +196 -67
- package/src/components/chat/chat-utils.ts +111 -2
- package/src/components/editor/RecoveryButton.tsx +2 -2
- package/src/components/editor/SortableCell.tsx +6 -2
- package/src/components/editor/__tests__/output-persistence.test.tsx +241 -0
- package/src/components/editor/actions/__tests__/pair-with-agent-commands.test.ts +153 -0
- package/src/components/editor/actions/pair-with-agent-commands.ts +109 -0
- package/src/components/editor/actions/pair-with-agent-modal.tsx +20 -64
- package/src/components/editor/actions/useNotebookActions.tsx +8 -0
- package/src/components/editor/ai/add-cell-with-ai.tsx +14 -5
- package/src/components/editor/ai/ai-completion-editor.tsx +4 -1
- package/src/components/editor/cell/cell-context-menu.tsx +7 -0
- package/src/components/editor/chrome/components/__tests__/feedback-button.test.tsx +221 -0
- package/src/components/editor/chrome/components/feedback-button.tsx +308 -77
- package/src/components/editor/chrome/panels/packages-panel.tsx +11 -1
- package/src/components/editor/columns/__tests__/cell-column.test.tsx +105 -0
- package/src/components/editor/columns/cell-column.tsx +34 -4
- package/src/components/editor/columns/sortable-column.tsx +24 -4
- package/src/components/editor/file-tree/download.ts +46 -0
- package/src/components/editor/file-tree/file-explorer.tsx +3 -21
- package/src/components/editor/file-tree/file-viewer.tsx +4 -27
- package/src/components/editor/navigation/__tests__/navigation.test.ts +33 -0
- package/src/components/editor/navigation/navigation.ts +8 -1
- package/src/components/editor/notebook-cell.tsx +203 -106
- package/src/components/editor/renderers/__tests__/cells-renderer.test.tsx +66 -0
- package/src/components/editor/renderers/cell-array.tsx +26 -13
- package/src/components/editor/renderers/cells-renderer.tsx +8 -2
- package/src/components/editor/renderers/slides-layout/__tests__/plugin.test.ts +29 -0
- package/src/components/editor/renderers/slides-layout/types.ts +4 -0
- package/src/components/editor/renderers/vertical-layout/vertical-layout.tsx +19 -19
- package/src/components/slides/reveal-component.tsx +37 -17
- package/src/components/slides/slide-form.tsx +72 -0
- package/src/components/ui/toast.tsx +11 -3
- package/src/components/ui/toaster.tsx +65 -9
- package/src/core/ai/context/providers/error.ts +6 -158
- package/src/core/cells/__tests__/utils.test.ts +59 -0
- package/src/core/cells/utils.ts +51 -0
- package/src/core/codemirror/completion/__tests__/signature-hint.test.ts +97 -3
- package/src/core/codemirror/completion/signature-hint.ts +78 -11
- package/src/core/constants.ts +8 -0
- package/src/core/diagnostics/__tests__/issue-details.test.ts +173 -0
- package/src/core/diagnostics/issue-details.ts +139 -0
- package/src/core/errors/__tests__/error-entries.test.ts +25 -0
- package/src/core/errors/error-entries.ts +176 -0
- package/src/core/islands/__tests__/bridge.test.ts +341 -46
- package/src/core/islands/__tests__/main.test.ts +176 -0
- package/src/core/islands/__tests__/parse.test.ts +105 -0
- package/src/core/islands/bootstrap.ts +8 -3
- package/src/core/islands/bridge.ts +117 -23
- package/src/core/islands/components/__tests__/web-components.test.tsx +214 -0
- package/src/core/islands/components/web-components.tsx +76 -15
- package/src/core/islands/constants.ts +1 -0
- package/src/core/islands/main.ts +69 -3
- package/src/core/islands/parse.ts +70 -23
- package/src/core/islands/worker/__tests__/controller.test.ts +173 -0
- package/src/core/islands/worker/worker.tsx +145 -57
- package/src/core/network/__tests__/requests-lazy.test.ts +18 -0
- package/src/core/network/__tests__/requests-network.test.ts +7 -0
- package/src/core/network/requests-lazy.ts +13 -1
- package/src/core/network/requests-network.ts +3 -0
- package/src/core/network/requests-static.ts +1 -0
- package/src/core/network/requests-toasting.tsx +1 -0
- package/src/core/network/types.ts +3 -0
- package/src/core/runtime/__tests__/runtime.test.ts +64 -0
- package/src/core/runtime/runtime.ts +30 -10
- package/src/core/wasm/bridge.ts +8 -0
- package/src/core/wasm/worker/bootstrap.ts +113 -20
- package/src/core/wasm/worker/types.ts +2 -0
- package/src/css/app/Cell.css +10 -0
- package/src/hooks/__tests__/useHotkey.test.tsx +88 -0
- package/src/hooks/useHotkey.ts +29 -4
- package/src/plugins/impl/anywidget/__tests__/host.test.ts +6 -9
- package/src/plugins/impl/anywidget/__tests__/registry.test.ts +3 -1
- package/src/plugins/impl/anywidget/__tests__/widget-binding.test.ts +32 -61
- package/src/plugins/impl/anywidget/model-proxy.ts +0 -13
- package/src/plugins/impl/anywidget/runtime.ts +1 -0
- package/src/plugins/impl/anywidget/widget-binding.ts +8 -34
- package/src/plugins/impl/image-comparison/ImageComparisonComponent.tsx +53 -2
- package/src/plugins/impl/image-comparison/__tests__/ImageComparisonComponent.test.tsx +71 -0
- package/src/plugins/impl/matplotlib/__tests__/matplotlib-renderer.test.ts +71 -3
- package/src/plugins/impl/matplotlib/matplotlib-renderer.ts +1 -0
- package/src/plugins/impl/vega/__tests__/use-vega-container-remeasure.test.ts +102 -0
- package/src/plugins/impl/vega/use-vega-container-remeasure.ts +39 -0
- package/src/plugins/impl/vega/vega-component.tsx +5 -4
- package/src/theme/__tests__/useTheme.test.ts +68 -0
- package/src/theme/useTheme.ts +16 -1
- package/dist/apl-Bdc61P1y.js +0 -4
- package/dist/architecture-7HQA4BMR-Kyc44TmC.js +0 -6
- package/dist/asciiarmor-DVRHDGzT.js +0 -4
- package/dist/asn1-BmuKfkfu.js +0 -4
- package/dist/assets/__vite-browser-external-BQCLNwri.js +0 -1
- package/dist/assets/worker-DAWRHcPq.js +0 -73
- package/dist/brainfuck-DPrRpyTV.js +0 -4
- package/dist/classDiagram-2ON5EDUG-QjoAcuFE.js +0 -30
- package/dist/classDiagram-v2-WZHVMYZB-bUCv4gu2.js +0 -30
- package/dist/clojure-DEttQW5T.js +0 -4
- package/dist/cmake-jNlx_DaM.js +0 -4
- package/dist/cobol-BvvIm5MJ.js +0 -4
- package/dist/coffeescript-DTpBMyFU.js +0 -4
- package/dist/commonlisp-BmmUG8jb.js +0 -4
- package/dist/crystal-BxyqmEWC.js +0 -4
- package/dist/css-BGoCtuG3.js +0 -4
- package/dist/cypher-BmCbdl3u.js +0 -4
- package/dist/d-CFrlbjZt.js +0 -4
- package/dist/diff-D6XwL6P8.js +0 -4
- package/dist/dist-BEXXyZig.js +0 -5
- package/dist/dist-BYj57OV4.js +0 -5
- package/dist/dist-BlSvQzNr.js +0 -5
- package/dist/dist-CCBlxAgS.js +0 -8
- package/dist/dist-CIDTVIUf.js +0 -5
- package/dist/dist-CqQyhAM8.js +0 -8
- package/dist/dist-CwRu2Xzh.js +0 -5
- package/dist/dist-D8DNB0nO.js +0 -8
- package/dist/dist-DOFbNV_b.js +0 -8
- package/dist/dist-cdmMjgsn.js +0 -5
- package/dist/dtd-Bw0lRN0-.js +0 -4
- package/dist/dylan-B55eBHTt.js +0 -4
- package/dist/ecl-C8G4p0wn.js +0 -4
- package/dist/eiffel-BmH46VJl.js +0 -4
- package/dist/elm-DhzeFqkl.js +0 -4
- package/dist/erlang-CY-wdlsU.js +0 -4
- package/dist/factor-DWkgl0xw.js +0 -4
- package/dist/forth-Cij_ie2t.js +0 -4
- package/dist/fortran-Br3X9cfm.js +0 -4
- package/dist/gas-DYsGcMN2.js +0 -4
- package/dist/gherkin-eVgXQ0fQ.js +0 -4
- package/dist/groovy-_NFHIXG7.js +0 -4
- package/dist/haskell-D6xNG_bH.js +0 -4
- package/dist/haxe-sU_rzAwn.js +0 -5
- package/dist/idl-Ds_VbrUx.js +0 -4
- package/dist/infoDiagram-HS3SLOUP-CEnzWruK.js +0 -30
- package/dist/javascript-CztfIl0i.js +0 -4
- package/dist/julia-DDv40QMV.js +0 -4
- package/dist/livescript-BEOngLLc.js +0 -4
- package/dist/lua-9-7BhQ4Y.js +0 -4
- package/dist/mathematica-DDa0Pfxm.js +0 -4
- package/dist/mbox-iO03mmoE.js +0 -4
- package/dist/mirc-C9z5LT4X.js +0 -4
- package/dist/mllike-jGJbdm_C.js +0 -6
- package/dist/modelica-DzF7oIEL.js +0 -4
- package/dist/mscgen-DB-u125o.js +0 -6
- package/dist/mumps-CRTFHhzh.js +0 -4
- package/dist/nsis-C4NPTuox.js +0 -4
- package/dist/ntriples-BCOoGph1.js +0 -4
- package/dist/octave-DTwNlazz.js +0 -4
- package/dist/oz-DD38AzSz.js +0 -4
- package/dist/pascal-BohSp9jV.js +0 -4
- package/dist/perl-f5OutoPM.js +0 -4
- package/dist/pig-Dv7wSmHb.js +0 -4
- package/dist/powershell-rYgjKB39.js +0 -4
- package/dist/properties-BFUNLRDN.js +0 -4
- package/dist/protobuf-B9QJQPPv.js +0 -4
- package/dist/pug-DzvWpaMC.js +0 -4
- package/dist/puppet-B_K-n_xK.js +0 -4
- package/dist/python-CAiFcaA2.js +0 -4
- package/dist/q-cLeFIBLK.js +0 -4
- package/dist/r-04Y-Wco3.js +0 -4
- package/dist/react-vega-B6ncY2Tp.js +0 -9
- package/dist/rpm-FUdrIia9.js +0 -5
- package/dist/ruby-DMjFXuEW.js +0 -4
- package/dist/sas-DzHZxjXK.js +0 -4
- package/dist/scheme-DxHd_Rb9.js +0 -4
- package/dist/shell-C8Kwypgf.js +0 -4
- package/dist/sieve-DdyqOKXZ.js +0 -4
- package/dist/smalltalk-pB7X1D9y.js +0 -4
- package/dist/sparql-NhBO6oOa.js +0 -4
- package/dist/stateDiagram-v2-4FDKWEC3-E0RGjKsm.js +0 -29
- package/dist/stex-KfRnSHzF.js +0 -4
- package/dist/stylus-SfWSnzPv.js +0 -4
- package/dist/swift-jRPdq2zR.js +0 -4
- package/dist/tcl-_hpTHGX3.js +0 -4
- package/dist/textile-C9h8slqH.js +0 -4
- package/dist/toml-DWvtinD4.js +0 -4
- package/dist/troff-Dwo_A0y7.js +0 -4
- package/dist/ttcn-V--CPFKq.js +0 -4
- package/dist/ttcn-cfg-CPSMchTG.js +0 -4
- package/dist/turtle-B4rPGBWu.js +0 -4
- package/dist/vb-DaMBBd4j.js +0 -4
- package/dist/vbscript-BMJQqcE2.js +0 -4
- package/dist/velocity-CGq2QRq2.js +0 -4
- package/dist/verilog-CUNo8F5u.js +0 -4
- package/dist/vhdl-CCzA0msW.js +0 -4
- package/dist/webidl-CqIMDIBL.js +0 -4
- package/dist/xquery-XC5Kbr-1.js +0 -4
- package/dist/yacas-CGOv7Dzy.js +0 -4
- package/dist/z80-CXhVmi-f.js +0 -4
- /package/dist/{Plot-CAYS29h9.js → Plot-YQOuVIei.js} +0 -0
- /package/dist/{apl-BCgCq9iM.js → apl-99A7dLQe.js} +0 -0
- /package/dist/{array-tvvEqPy7.js → array-O78LT16Y.js} +0 -0
- /package/dist/{asciiarmor-BtqU-KJQ.js → asciiarmor-DLEhpFDx.js} +0 -0
- /package/dist/{asn1-Dmb-dTMx.js → asn1-CMrcTsT4.js} +0 -0
- /package/dist/{asterisk-DaVJJDnV.js → asterisk-CqykImq7.js} +0 -0
- /package/dist/{brainfuck-C1HoZKlE.js → brainfuck-ChPt5yBe.js} +0 -0
- /package/dist/{chunk-DR5Q36YT-BflwErH1.js → chunk-DR5Q36YT-5Yp2GWwR.js} +0 -0
- /package/dist/{click-outside-container-BLPjMamz.js → click-outside-container-BSIeYt4y.js} +0 -0
- /package/dist/{clike-CdT0yHjt.js → clike-CE0fXfM_.js} +0 -0
- /package/dist/{clojure-CdyrCpUv.js → clojure-QkBEMU-g.js} +0 -0
- /package/dist/{cmake-BFlPxym7.js → cmake-CU1jX7Mo.js} +0 -0
- /package/dist/{cobol-CcJXewp8.js → cobol-DMOKzzky.js} +0 -0
- /package/dist/{coffeescript-DnKuIKRo.js → coffeescript-DjnjLyfk.js} +0 -0
- /package/dist/{colors-CQAOa8cK.js → colors-DmiH1bIH.js} +0 -0
- /package/dist/{common-keywords-FBrXPTcz.js → common-keywords-D3nPJNQP.js} +0 -0
- /package/dist/{commonlisp-B-kok83Z.js → commonlisp-CYd9iOSe.js} +0 -0
- /package/dist/{crystal-FYRYjI1I.js → crystal-Dy55yoYG.js} +0 -0
- /package/dist/{css-B45lc2V3.js → css-CNU8w3HJ.js} +0 -0
- /package/dist/{cypher-DZMLyVY_.js → cypher-q47DGzK7.js} +0 -0
- /package/dist/{cytoscape.esm-ayF70frT.js → cytoscape.esm-Dr8XzXWK.js} +0 -0
- /package/dist/{d-x-VVT4o9.js → d-jEkaLvxX.js} +0 -0
- /package/dist/{defaultLocale-u-3osm0P.js → defaultLocale-BpsHxBd7.js} +0 -0
- /package/dist/{defaultLocale-BoHTsDG6.js → defaultLocale-DoeErsX2.js} +0 -0
- /package/dist/{diff-Dxe2mpXk.js → diff-vb2-unFN.js} +0 -0
- /package/dist/{dist-D-W5ny5a.js → dist-95kpvRSY.js} +0 -0
- /package/dist/{dist-BzEzfugY.js → dist-B56Dml3A.js} +0 -0
- /package/dist/{dist-hT4QzYX-.js → dist-D3T8fCFo.js} +0 -0
- /package/dist/{dist-DZORgqKY.js → dist-DPdzbDlL.js} +0 -0
- /package/dist/{dist-A2846XWO.js → dist-Db1W16d-.js} +0 -0
- /package/dist/{dist-DZo4nSS0.js → dist-DijFs2Lk.js} +0 -0
- /package/dist/{dist-BGdYVvOu.js → dist-DsoKosxi.js} +0 -0
- /package/dist/{dist-Dax--nl9.js → dist-DvOfvWFi.js} +0 -0
- /package/dist/{dist-CIYBwstr.js → dist-Dx3eDsHX.js} +0 -0
- /package/dist/{dist-DMjWuVs8.js → dist-c6wTyIhD.js} +0 -0
- /package/dist/{dtd-C9VM_Wfu.js → dtd-C9kR-bXa.js} +0 -0
- /package/dist/{duckdb-keywords-CvJhR_Yd.js → duckdb-keywords-B6HYCMOT.js} +0 -0
- /package/dist/{dylan-DTSnEIFO.js → dylan-BLckrK-V.js} +0 -0
- /package/dist/{ebnf-2D4Ctp3y.js → ebnf-Cnp3L9jg.js} +0 -0
- /package/dist/{ecl-N04ptnRK.js → ecl-CEsf6XVg.js} +0 -0
- /package/dist/{eiffel-Dd8rpqr_.js → eiffel-2KGZNzx6.js} +0 -0
- /package/dist/{elm-GT2E866W.js → elm-D2s3K5wF.js} +0 -0
- /package/dist/{emotion-is-prop-valid.esm-DzSb5hsH.js → emotion-is-prop-valid.esm-DdVSF4FD.js} +0 -0
- /package/dist/{erlang-Cf0Bp5pY.js → erlang-0PMFOndk.js} +0 -0
- /package/dist/{esm-BaaaPNGl.js → esm-CuQHjs36.js} +0 -0
- /package/dist/{fcl-Ccj8Z5Xd.js → fcl-D9nccAWI.js} +0 -0
- /package/dist/{forth-wd_XzGTg.js → forth-DG89iUsu.js} +0 -0
- /package/dist/{fortran-DcwUTZFe.js → fortran-ytKsAVvu.js} +0 -0
- /package/dist/{gas-DeALIER3.js → gas-Cg2Fm0N2.js} +0 -0
- /package/dist/{gherkin-CKTqaJNX.js → gherkin-B87FEnZ-.js} +0 -0
- /package/dist/{groovy-Bwdp_d8D.js → groovy-Dcs08AWD.js} +0 -0
- /package/dist/{haskell-DCdCcPLK.js → haskell-cwkOuhx6.js} +0 -0
- /package/dist/{haxe-DAyktQWJ.js → haxe-DWEo4q10.js} +0 -0
- /package/dist/{http-_DVAYWoR.js → http-B8jdG64J.js} +0 -0
- /package/dist/{idl-CBuZiRYu.js → idl-WWQwDcRV.js} +0 -0
- /package/dist/{init-uv0kkh4g.js → init-DNBbYZd_.js} +0 -0
- /package/dist/{javascript-DzigE11c.js → javascript-BeR74dxD.js} +0 -0
- /package/dist/{julia-PwfB-0Cm.js → julia-UlvCUYGL.js} +0 -0
- /package/dist/{katex-C_XRmjAP.js → katex-Bld7b-fk.js} +0 -0
- /package/dist/{livescript-BJLz1EbT.js → livescript-GPmFcmYV.js} +0 -0
- /package/dist/{lua-ZC-XC2jf.js → lua-DYoT_0zM.js} +0 -0
- /package/dist/{main-Tj_-QTyF.js → main-B1Jo_8pC.js} +0 -0
- /package/dist/{math-DFcdCCU8.js → math-CBNc2Ib0.js} +0 -0
- /package/dist/{mathematica-DCYMx6qB.js → mathematica-DSFIQlbG.js} +0 -0
- /package/dist/{mbox-OxMK_9XI.js → mbox-ej8lFMdL.js} +0 -0
- /package/dist/{micromark-factory-space-DF2w36zS.js → micromark-factory-space-CwHmg6iz.js} +0 -0
- /package/dist/{mirc-nJVyhA0H.js → mirc-CAdIdvHQ.js} +0 -0
- /package/dist/{mllike-DRO89bsU.js → mllike-CjTB1lHF.js} +0 -0
- /package/dist/{modelica-Don3E6ZD.js → modelica-BB68FYMa.js} +0 -0
- /package/dist/{mscgen-DJfqD3bN.js → mscgen-BkbzgGGI.js} +0 -0
- /package/dist/{mumps-SjGTvDYL.js → mumps-Cu-28E9F.js} +0 -0
- /package/dist/{nginx-DasThI7R.js → nginx-C1ofKPst.js} +0 -0
- /package/dist/{node-sql-parser-B8nBD36q.js → node-sql-parser-DLl_zNw0.js} +0 -0
- /package/dist/{ntriples-CNBKRl3I.js → ntriples-D9cQiZxZ.js} +0 -0
- /package/dist/{octave-DdeVHNlx.js → octave-BvtAnPX0.js} +0 -0
- /package/dist/{once-DPuqGUeo.js → once-B60G2fuJ.js} +0 -0
- /package/dist/{oz-CcKSoNvN.js → oz-COaVHk2E.js} +0 -0
- /package/dist/{pascal-6leftwNj.js → pascal-BFpqVD2x.js} +0 -0
- /package/dist/{path-BGaWgPKg.js → path-DwWbhZFI.js} +0 -0
- /package/dist/{perl-BhJIwWzN.js → perl-DaiORxHP.js} +0 -0
- /package/dist/{pig-r-xDHqRf.js → pig-DFzRhmsF.js} +0 -0
- /package/dist/{powershell-D-BELeNi.js → powershell-BG2LQNKN.js} +0 -0
- /package/dist/{properties-CnuDhbll.js → properties-CqJJR5QY.js} +0 -0
- /package/dist/{protobuf-CO8RBhvX.js → protobuf-WwDYV1yY.js} +0 -0
- /package/dist/{puppet-NmXHjLy8.js → puppet-QNY3w_uN.js} +0 -0
- /package/dist/{purify.es-H92eMd9-.js → purify.es-C-fIGuQm.js} +0 -0
- /package/dist/{python-DAQXi720.js → python-4QrQ3Ugi.js} +0 -0
- /package/dist/{q-DlikXfV0.js → q-DhwXuxE2.js} +0 -0
- /package/dist/{r-CuohilwT.js → r-Df-nkR25.js} +0 -0
- /package/dist/{range-C-rmrM1O.js → range-BOiA8qqU.js} +0 -0
- /package/dist/{rpm-0Pjwp0Pb.js → rpm-Cokue07s.js} +0 -0
- /package/dist/{ruby-Dq8NJTDG.js → ruby-DrYcL3qF.js} +0 -0
- /package/dist/{sas-CuwonyVP.js → sas-CoiPirA5.js} +0 -0
- /package/dist/{scheme-CYU-RRIf.js → scheme-CwFLjzHv.js} +0 -0
- /package/dist/{semaphore-CNDGTzkX.js → semaphore-C8rmHdhj.js} +0 -0
- /package/dist/{shell-COPmX2qE.js → shell-BFV-R24I.js} +0 -0
- /package/dist/{sieve-B_3zyLne.js → sieve-CxwXF5T9.js} +0 -0
- /package/dist/{simple-mode-DSBniks8.js → simple-mode-DTaJtKPt.js} +0 -0
- /package/dist/{smalltalk-DRft7iPv.js → smalltalk-QivVOCtX.js} +0 -0
- /package/dist/{solr-RZ9uTl59.js → solr-BLvysN-c.js} +0 -0
- /package/dist/{sparql-CN6qj55H.js → sparql-nKsFk8j7.js} +0 -0
- /package/dist/{spreadsheet-BNNUNXA2.js → spreadsheet-BWc8C2FT.js} +0 -0
- /package/dist/{sql-B4x8IkwU.js → sql-CWfUjlV1.js} +0 -0
- /package/dist/{stex-BIsgBmK4.js → stex-DtMAhV4-.js} +0 -0
- /package/dist/{stylus-Bn_ZjOQ3.js → stylus-BLKQAycn.js} +0 -0
- /package/dist/{swift-BLUJhMbz.js → swift-CJoKqiKj.js} +0 -0
- /package/dist/{tcl-C86fxecl.js → tcl-YTeYFNUc.js} +0 -0
- /package/dist/{textile-DmHh2rsK.js → textile-C6rKQqMQ.js} +0 -0
- /package/dist/{tiddlywiki-DI0mF2WJ.js → tiddlywiki-ZXwTHGNT.js} +0 -0
- /package/dist/{tiki-2HU6XLLn.js → tiki-C628O_u4.js} +0 -0
- /package/dist/{timer-YZl28NYN.js → timer-BpI_FKSA.js} +0 -0
- /package/dist/{toml-GWANRNAD.js → toml-DxlPGbRy.js} +0 -0
- /package/dist/{treemap-D-ka1hvx.js → treemap-DY3NBr79.js} +0 -0
- /package/dist/{troff-BHTsomIy.js → troff-DFCfH7Ku.js} +0 -0
- /package/dist/{ttcn-DQuhn5Mn.js → ttcn-DAW-ERVP.js} +0 -0
- /package/dist/{ttcn-cfg-HjFYtdB-.js → ttcn-cfg-CpJ8b7EN.js} +0 -0
- /package/dist/{turtle-nCay33Nv.js → turtle-BneV2f8L.js} +0 -0
- /package/dist/{vb-BG-XlqqJ.js → vb-D973Vxxh.js} +0 -0
- /package/dist/{vbscript-B6vyW0-D.js → vbscript-Dckaq3YO.js} +0 -0
- /package/dist/{velocity-CWegueqO.js → velocity-DKty-GUC.js} +0 -0
- /package/dist/{verilog-CzSQm4cG.js → verilog-aNaK_biA.js} +0 -0
- /package/dist/{vhdl-DqnNVL7r.js → vhdl-CQuehnQy.js} +0 -0
- /package/dist/{webidl-DXEUpDWH.js → webidl-Bhg8vaMr.js} +0 -0
- /package/dist/{xquery-Ba_NB5bD.js → xquery-D2q16GaM.js} +0 -0
- /package/dist/{yacas-HKQU6hyk.js → yacas-DHGOHnNa.js} +0 -0
- /package/dist/{z80-CXkHXLdj.js → z80-BPhTmO22.js} +0 -0
|
@@ -33,11 +33,14 @@ import { getReadonlyCodeDisplay } from "@/core/cells/readonly-code-display";
|
|
|
33
33
|
import { MarkdownLanguageAdapter } from "@/core/codemirror/language/languages/markdown";
|
|
34
34
|
import { useResolvedMarimoConfig } from "@/core/config/config";
|
|
35
35
|
import { CSSClasses, KnownQueryParams } from "@/core/constants";
|
|
36
|
-
import type {
|
|
36
|
+
import type { OutputMessage } from "@/core/kernel/messages";
|
|
37
37
|
import { kernelStateAtom } from "@/core/kernel/state";
|
|
38
38
|
import { useNotebookCodeAvailable } from "@/core/meta/code-visibility";
|
|
39
39
|
import { showCodeInRunModeAtom } from "@/core/meta/state";
|
|
40
|
-
import {
|
|
40
|
+
import {
|
|
41
|
+
publishedCellClasses,
|
|
42
|
+
shouldHidePublishedCell,
|
|
43
|
+
} from "@/core/cells/utils";
|
|
41
44
|
import { type AppMode, kioskModeAtom } from "@/core/mode";
|
|
42
45
|
import { useRequestClient } from "@/core/network/requests";
|
|
43
46
|
import type { CellConfig } from "@/core/network/types";
|
|
@@ -362,12 +365,13 @@ const VerticalCell = memo(
|
|
|
362
365
|
const className = cn(
|
|
363
366
|
"marimo-cell",
|
|
364
367
|
"hover-actions-parent empty:invisible",
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
368
|
+
published
|
|
369
|
+
? publishedCellClasses({ errored, stopped })
|
|
370
|
+
: {
|
|
371
|
+
"has-error": errored,
|
|
372
|
+
stopped: stopped,
|
|
373
|
+
borderless: isPureMarkdown,
|
|
374
|
+
},
|
|
371
375
|
);
|
|
372
376
|
|
|
373
377
|
// Read mode and show code
|
|
@@ -419,19 +423,15 @@ const VerticalCell = memo(
|
|
|
419
423
|
);
|
|
420
424
|
}
|
|
421
425
|
|
|
422
|
-
const outputIsError = isErrorMime(output?.mimetype);
|
|
423
426
|
// When show_tracebacks is enabled, show error outputs inline
|
|
424
427
|
// instead of hiding them
|
|
425
|
-
const
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
output
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
);
|
|
433
|
-
const hidden =
|
|
434
|
-
(errored || interrupted || stopped || outputIsError) && !hasTraceback;
|
|
428
|
+
const hidden = shouldHidePublishedCell({
|
|
429
|
+
errored,
|
|
430
|
+
interrupted,
|
|
431
|
+
stopped,
|
|
432
|
+
output,
|
|
433
|
+
showErrorTracebacks,
|
|
434
|
+
});
|
|
435
435
|
if (hidden) {
|
|
436
436
|
return null;
|
|
437
437
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
+
type CSSProperties,
|
|
4
5
|
startTransition,
|
|
5
6
|
useEffect,
|
|
6
7
|
useMemo,
|
|
@@ -26,6 +27,7 @@ import { Logger } from "@/utils/Logger";
|
|
|
26
27
|
import "./slides.css";
|
|
27
28
|
import "./reveal-slides.css";
|
|
28
29
|
import type {
|
|
30
|
+
DeckVerticalAlign,
|
|
29
31
|
SlideConfig,
|
|
30
32
|
SlidesLayout,
|
|
31
33
|
SlideType,
|
|
@@ -39,6 +41,7 @@ import {
|
|
|
39
41
|
type ComposedSubslide,
|
|
40
42
|
} from "./compose-slides";
|
|
41
43
|
import {
|
|
44
|
+
DEFAULT_DECK_VERTICAL_ALIGN,
|
|
42
45
|
DEFAULT_DECK_TRANSITION,
|
|
43
46
|
DEFAULT_SLIDE_TYPE,
|
|
44
47
|
SlideSidebar,
|
|
@@ -124,18 +127,6 @@ function useSlideDimensions(ref: React.RefObject<HTMLDivElement | null>) {
|
|
|
124
127
|
return dims;
|
|
125
128
|
}
|
|
126
129
|
|
|
127
|
-
/**
|
|
128
|
-
* Trigger a resize event on the window
|
|
129
|
-
* Vega elements need to be re-measured when the container width changes.
|
|
130
|
-
*/
|
|
131
|
-
function triggerResize(deck: RevealApi | null) {
|
|
132
|
-
if (deck?.getCurrentSlide()?.querySelector(".vega-embed, marimo-vega")) {
|
|
133
|
-
requestAnimationFrame(() => {
|
|
134
|
-
window.dispatchEvent(new Event("resize"));
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
130
|
// The speaker view renders this via innerHTML with `white-space: normal`, so
|
|
140
131
|
// we materialize `\n` as `<br>` and a lone `---` line as `<hr>`.
|
|
141
132
|
const NotesAside = ({ text }: { text: string }) => {
|
|
@@ -292,16 +283,38 @@ export function useParkedPreview(options: {
|
|
|
292
283
|
};
|
|
293
284
|
}
|
|
294
285
|
|
|
286
|
+
/**
|
|
287
|
+
* Margin style that positions a slide's content vertically within the
|
|
288
|
+
* full-height slide. The content is a flex item, so the vertical margins decide
|
|
289
|
+
* where the free space lands: `auto` on both sides centers it, while pinning one
|
|
290
|
+
* side to `0` pushes content to the top or bottom. The horizontal `20px` keeps
|
|
291
|
+
* content off the slide edges regardless of alignment.
|
|
292
|
+
*/
|
|
293
|
+
function resolveSlideContentStyle(
|
|
294
|
+
verticalAlign: DeckVerticalAlign | undefined,
|
|
295
|
+
): CSSProperties {
|
|
296
|
+
switch (verticalAlign ?? DEFAULT_DECK_VERTICAL_ALIGN) {
|
|
297
|
+
case "top":
|
|
298
|
+
return { margin: "0 20px auto" };
|
|
299
|
+
case "bottom":
|
|
300
|
+
return { margin: "auto 20px 0" };
|
|
301
|
+
default:
|
|
302
|
+
return { margin: "auto 20px" };
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
|
|
295
306
|
const SubslideView = ({
|
|
296
307
|
subslide,
|
|
297
308
|
resolveShowCode,
|
|
298
309
|
isEditable,
|
|
299
310
|
slideConfigs,
|
|
311
|
+
contentStyle,
|
|
300
312
|
}: {
|
|
301
313
|
subslide: ComposedSubslide<RuntimeCell>;
|
|
302
314
|
resolveShowCode: (cellId: CellId) => boolean;
|
|
303
315
|
isEditable: boolean;
|
|
304
316
|
slideConfigs: ReadonlyMap<CellId, SlideConfig>;
|
|
317
|
+
contentStyle: CSSProperties;
|
|
305
318
|
}) => {
|
|
306
319
|
const { slideLevel, cumulativeByBlock } = buildSubslideNotes(
|
|
307
320
|
subslide,
|
|
@@ -321,9 +334,7 @@ const SubslideView = ({
|
|
|
321
334
|
? "mo-slide-content flex flex-col gap-3"
|
|
322
335
|
: "mo-slide-content"
|
|
323
336
|
}
|
|
324
|
-
style={
|
|
325
|
-
margin: "auto 20px",
|
|
326
|
-
}}
|
|
337
|
+
style={contentStyle}
|
|
327
338
|
>
|
|
328
339
|
{subslide.blocks.map((block, i) => {
|
|
329
340
|
const rendered = block.cells.map((cell) => {
|
|
@@ -514,6 +525,10 @@ const RevealSlidesComponent = ({
|
|
|
514
525
|
);
|
|
515
526
|
|
|
516
527
|
const deckTransition = layout.deck?.transition ?? DEFAULT_DECK_TRANSITION;
|
|
528
|
+
const slideContentStyle = resolveSlideContentStyle(
|
|
529
|
+
layout.deck?.verticalAlign,
|
|
530
|
+
);
|
|
531
|
+
|
|
517
532
|
// Reveal's Notes plugin iframes the deck for the current/upcoming-slide
|
|
518
533
|
// previews. We load the same URL but as a read-only kiosk client with the
|
|
519
534
|
// app chrome hidden, which `<SlidesLayoutRenderer>` interprets the same as
|
|
@@ -536,6 +551,10 @@ const RevealSlidesComponent = ({
|
|
|
536
551
|
transition: deckTransition,
|
|
537
552
|
keyboardCondition: (event: KeyboardEvent) => !Events.fromInput(event),
|
|
538
553
|
url: kioskUrl,
|
|
554
|
+
// reveal.js auto-switches to its scroll view for mobile.
|
|
555
|
+
// We disable this mode because it rewrites the slide DOM that
|
|
556
|
+
// `@revealjs/react` owns, which crashes on `reveal.sync()` re-renders.
|
|
557
|
+
scrollActivationWidth: 0,
|
|
539
558
|
}),
|
|
540
559
|
[width, height, deckTransition, kioskUrl],
|
|
541
560
|
);
|
|
@@ -657,7 +676,6 @@ const RevealSlidesComponent = ({
|
|
|
657
676
|
|
|
658
677
|
const handleSlideChange = useEvent(() => {
|
|
659
678
|
reportCurrentCell();
|
|
660
|
-
triggerResize(deckRef.current);
|
|
661
679
|
});
|
|
662
680
|
|
|
663
681
|
useEventListener(document, "keydown", handleParkedNavKey, { capture: true });
|
|
@@ -704,6 +722,7 @@ const RevealSlidesComponent = ({
|
|
|
704
722
|
resolveShowCode={resolveShowCode}
|
|
705
723
|
isEditable={isEditable}
|
|
706
724
|
slideConfigs={layout.cells}
|
|
725
|
+
contentStyle={slideContentStyle}
|
|
707
726
|
/>
|
|
708
727
|
);
|
|
709
728
|
}
|
|
@@ -717,6 +736,7 @@ const RevealSlidesComponent = ({
|
|
|
717
736
|
resolveShowCode={resolveShowCode}
|
|
718
737
|
isEditable={isEditable}
|
|
719
738
|
slideConfigs={layout.cells}
|
|
739
|
+
contentStyle={slideContentStyle}
|
|
720
740
|
/>
|
|
721
741
|
);
|
|
722
742
|
})}
|
|
@@ -743,7 +763,7 @@ const RevealSlidesComponent = ({
|
|
|
743
763
|
? "mo-slide-content flex flex-col gap-3"
|
|
744
764
|
: "mo-slide-content"
|
|
745
765
|
}
|
|
746
|
-
style={
|
|
766
|
+
style={slideContentStyle}
|
|
747
767
|
>
|
|
748
768
|
<ParkedPreviewContent
|
|
749
769
|
cell={parkedPreviewCell}
|
|
@@ -23,6 +23,7 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
|
|
23
23
|
import type { CellId } from "@/core/cells/ids";
|
|
24
24
|
import { cn } from "@/utils/cn";
|
|
25
25
|
import type {
|
|
26
|
+
DeckVerticalAlign,
|
|
26
27
|
DeckTransition,
|
|
27
28
|
SlidesLayout,
|
|
28
29
|
SlideType,
|
|
@@ -37,6 +38,7 @@ import { jotaiJsonStorage } from "@/utils/storage/jotai";
|
|
|
37
38
|
|
|
38
39
|
export const DEFAULT_SLIDE_TYPE: SlideType = "slide";
|
|
39
40
|
export const DEFAULT_DECK_TRANSITION: DeckTransition = "slide";
|
|
41
|
+
export const DEFAULT_DECK_VERTICAL_ALIGN: DeckVerticalAlign = "center";
|
|
40
42
|
const COLLAPSED_CONFIG_WIDTH = 36;
|
|
41
43
|
const slideConfigOpenAtom = atomWithStorage<boolean>(
|
|
42
44
|
"marimo:slides:config-open",
|
|
@@ -118,6 +120,30 @@ const DECK_TRANSITION_OPTIONS: DeckTransitionOption[] = [
|
|
|
118
120
|
{ value: "zoom", label: "Zoom", description: "Zoom into the next slide." },
|
|
119
121
|
];
|
|
120
122
|
|
|
123
|
+
interface DeckVerticalAlignOption {
|
|
124
|
+
value: DeckVerticalAlign;
|
|
125
|
+
label: string;
|
|
126
|
+
description: string;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const DECK_VERTICAL_ALIGN_OPTIONS: DeckVerticalAlignOption[] = [
|
|
130
|
+
{
|
|
131
|
+
value: "center",
|
|
132
|
+
label: "Center",
|
|
133
|
+
description: "Vertically center each slide's content.",
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
value: "top",
|
|
137
|
+
label: "Top",
|
|
138
|
+
description: "Align content to the top, like the cell view.",
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
value: "bottom",
|
|
142
|
+
label: "Bottom",
|
|
143
|
+
description: "Align content to the bottom of each slide.",
|
|
144
|
+
},
|
|
145
|
+
];
|
|
146
|
+
|
|
121
147
|
const SlidesForm = ({
|
|
122
148
|
layout,
|
|
123
149
|
setLayout,
|
|
@@ -300,6 +326,12 @@ const DeckConfigForm = ({
|
|
|
300
326
|
(opt) => opt.value === currentTransition,
|
|
301
327
|
)?.description;
|
|
302
328
|
|
|
329
|
+
const currentVerticalAlign: DeckVerticalAlign =
|
|
330
|
+
layout.deck?.verticalAlign ?? DEFAULT_DECK_VERTICAL_ALIGN;
|
|
331
|
+
const activeVerticalAlignDescription = DECK_VERTICAL_ALIGN_OPTIONS.find(
|
|
332
|
+
(opt) => opt.value === currentVerticalAlign,
|
|
333
|
+
)?.description;
|
|
334
|
+
|
|
303
335
|
const handleTransitionChange = (value: DeckTransition) => {
|
|
304
336
|
setLayout({
|
|
305
337
|
...layout,
|
|
@@ -307,6 +339,13 @@ const DeckConfigForm = ({
|
|
|
307
339
|
});
|
|
308
340
|
};
|
|
309
341
|
|
|
342
|
+
const handleVerticalAlignChange = (value: DeckVerticalAlign) => {
|
|
343
|
+
setLayout({
|
|
344
|
+
...layout,
|
|
345
|
+
deck: { ...layout.deck, verticalAlign: value },
|
|
346
|
+
});
|
|
347
|
+
};
|
|
348
|
+
|
|
310
349
|
return (
|
|
311
350
|
<div className="flex flex-col gap-3">
|
|
312
351
|
<div className="flex flex-col gap-1.5">
|
|
@@ -337,6 +376,39 @@ const DeckConfigForm = ({
|
|
|
337
376
|
<p className="text-xs text-foreground/70">{activeDescription}</p>
|
|
338
377
|
)}
|
|
339
378
|
</div>
|
|
379
|
+
<div className="flex flex-col gap-1.5">
|
|
380
|
+
<label
|
|
381
|
+
htmlFor="deck-vertical-align"
|
|
382
|
+
className="font-semibold text-sm text-foreground"
|
|
383
|
+
>
|
|
384
|
+
Vertical alignment
|
|
385
|
+
</label>
|
|
386
|
+
<Select
|
|
387
|
+
value={currentVerticalAlign}
|
|
388
|
+
onValueChange={(value) =>
|
|
389
|
+
handleVerticalAlignChange(value as DeckVerticalAlign)
|
|
390
|
+
}
|
|
391
|
+
>
|
|
392
|
+
<SelectTrigger
|
|
393
|
+
id="deck-vertical-align"
|
|
394
|
+
aria-label="Vertical alignment"
|
|
395
|
+
>
|
|
396
|
+
<SelectValue />
|
|
397
|
+
</SelectTrigger>
|
|
398
|
+
<SelectContent>
|
|
399
|
+
{DECK_VERTICAL_ALIGN_OPTIONS.map(({ value, label }) => (
|
|
400
|
+
<SelectItem key={value} value={value}>
|
|
401
|
+
{label}
|
|
402
|
+
</SelectItem>
|
|
403
|
+
))}
|
|
404
|
+
</SelectContent>
|
|
405
|
+
</Select>
|
|
406
|
+
{activeVerticalAlignDescription && (
|
|
407
|
+
<p className="text-xs text-foreground/70">
|
|
408
|
+
{activeVerticalAlignDescription}
|
|
409
|
+
</p>
|
|
410
|
+
)}
|
|
411
|
+
</div>
|
|
340
412
|
</div>
|
|
341
413
|
);
|
|
342
414
|
};
|
|
@@ -34,7 +34,7 @@ const VARIANT_CLASSES = {
|
|
|
34
34
|
type ToastVariant = keyof typeof VARIANT_CLASSES;
|
|
35
35
|
|
|
36
36
|
const toastVariants = cva(
|
|
37
|
-
"data-[swipe=move]:transition-none group relative pointer-events-auto flex w-full items-
|
|
37
|
+
"data-[swipe=move]:transition-none group relative pointer-events-auto flex w-full items-start justify-between gap-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=move]:translate-x-(--radix-toast-swipe-move-x) data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-(--radix-toast-swipe-end-x) data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=open]:slide-in-from-top-full sm:data-[state=open]:slide-in-from-bottom-full data-[state=closed]:slide-out-to-right-full",
|
|
38
38
|
{
|
|
39
39
|
variants: {
|
|
40
40
|
variant: VARIANT_CLASSES,
|
|
@@ -117,10 +117,18 @@ ToastTitle.displayName = ToastPrimitives.Title.displayName;
|
|
|
117
117
|
const ToastDescription = React.forwardRef<
|
|
118
118
|
React.ElementRef<typeof ToastPrimitives.Description>,
|
|
119
119
|
React.ComponentPropsWithoutRef<typeof ToastPrimitives.Description>
|
|
120
|
-
>(({ className, ...props }, ref) => (
|
|
120
|
+
>(({ className, onPointerDown, ...props }, ref) => (
|
|
121
121
|
<ToastPrimitives.Description
|
|
122
122
|
ref={ref}
|
|
123
|
-
className={cn(
|
|
123
|
+
className={cn(
|
|
124
|
+
"max-h-48 overflow-auto text-sm opacity-90 whitespace-pre-wrap wrap-break-word select-text cursor-text",
|
|
125
|
+
className,
|
|
126
|
+
)}
|
|
127
|
+
// Keep swipe-to-dismiss from fighting text selection / scroll.
|
|
128
|
+
onPointerDown={(event) => {
|
|
129
|
+
event.stopPropagation();
|
|
130
|
+
onPointerDown?.(event);
|
|
131
|
+
}}
|
|
124
132
|
{...props}
|
|
125
133
|
/>
|
|
126
134
|
));
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
import type { ComponentPropsWithoutRef, ReactElement, ReactNode } from "react";
|
|
3
|
+
import { useRef } from "react";
|
|
4
|
+
import { CopyClipboardIcon } from "@/components/icons/copy-icon";
|
|
2
5
|
import { useToast } from "@/components/ui/use-toast";
|
|
6
|
+
import { cn } from "@/utils/cn";
|
|
3
7
|
import {
|
|
4
8
|
Toast,
|
|
5
9
|
ToastClose,
|
|
@@ -14,17 +18,69 @@ export const Toaster = () => {
|
|
|
14
18
|
|
|
15
19
|
return (
|
|
16
20
|
<ToastProvider>
|
|
17
|
-
{toasts.map(({ id, title, description, action, ...props }) => (
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
{
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
{toasts.map(({ id, title, description, action, variant, ...props }) => (
|
|
22
|
+
<ToastItem
|
|
23
|
+
key={id}
|
|
24
|
+
toastTitle={title}
|
|
25
|
+
toastDescription={description}
|
|
26
|
+
action={action}
|
|
27
|
+
variant={variant}
|
|
28
|
+
{...props}
|
|
29
|
+
/>
|
|
26
30
|
))}
|
|
27
31
|
<ToastViewport />
|
|
28
32
|
</ToastProvider>
|
|
29
33
|
);
|
|
30
34
|
};
|
|
35
|
+
|
|
36
|
+
type ToastItemProps = Omit<
|
|
37
|
+
ComponentPropsWithoutRef<typeof Toast>,
|
|
38
|
+
"title" | "children"
|
|
39
|
+
> & {
|
|
40
|
+
toastTitle?: ReactNode;
|
|
41
|
+
toastDescription?: ReactNode;
|
|
42
|
+
action?: ReactElement;
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const ToastItem = ({
|
|
46
|
+
toastTitle,
|
|
47
|
+
toastDescription,
|
|
48
|
+
action,
|
|
49
|
+
variant,
|
|
50
|
+
...props
|
|
51
|
+
}: ToastItemProps) => {
|
|
52
|
+
const descriptionRef = useRef<HTMLDivElement>(null);
|
|
53
|
+
// Show copy button for danger toasts without action, typically used for errors.
|
|
54
|
+
const showCopy = Boolean(toastDescription) && !action && variant === "danger";
|
|
55
|
+
|
|
56
|
+
return (
|
|
57
|
+
<Toast variant={variant} {...props}>
|
|
58
|
+
<div className="grid min-w-0 flex-1 gap-1">
|
|
59
|
+
{toastTitle && <ToastTitle>{toastTitle}</ToastTitle>}
|
|
60
|
+
{toastDescription && (
|
|
61
|
+
<ToastDescription ref={descriptionRef}>
|
|
62
|
+
{toastDescription}
|
|
63
|
+
</ToastDescription>
|
|
64
|
+
)}
|
|
65
|
+
</div>
|
|
66
|
+
{action}
|
|
67
|
+
{showCopy && (
|
|
68
|
+
<CopyClipboardIcon
|
|
69
|
+
tooltip="Copy error"
|
|
70
|
+
ariaLabel="Copy error"
|
|
71
|
+
className="h-4 w-4"
|
|
72
|
+
buttonClassName={cn(
|
|
73
|
+
"absolute right-8 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity",
|
|
74
|
+
"hover:text-foreground focus:opacity-100 focus:outline-hidden group-hover:opacity-100",
|
|
75
|
+
"group-[.destructive]:text-red-300 hover:group-[.destructive]:text-red-500 focus:group-[.destructive]:ring-red-400 focus:group-[.destructive]:ring-offset-red-600",
|
|
76
|
+
)}
|
|
77
|
+
value={() =>
|
|
78
|
+
descriptionRef.current?.innerText ??
|
|
79
|
+
(typeof toastDescription === "string" ? toastDescription : "")
|
|
80
|
+
}
|
|
81
|
+
/>
|
|
82
|
+
)}
|
|
83
|
+
<ToastClose />
|
|
84
|
+
</Toast>
|
|
85
|
+
);
|
|
86
|
+
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import type { Completion } from "@codemirror/autocomplete";
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
import {
|
|
5
|
+
type CellErrorEntry,
|
|
6
|
+
describeError,
|
|
7
|
+
formatSingleError,
|
|
8
|
+
getCellErrorEntries,
|
|
9
|
+
} from "@/core/errors/error-entries";
|
|
9
10
|
import type { JotaiStore } from "@/core/state/jotai";
|
|
10
|
-
import { logNever } from "@/utils/assertNever";
|
|
11
11
|
import { parseHtmlContent } from "@/utils/dom";
|
|
12
12
|
import { PluralWord } from "@/utils/pluralize";
|
|
13
13
|
import { type AIContextItem, AIContextProvider } from "../registry";
|
|
@@ -15,14 +15,6 @@ import { contextToXml } from "../utils";
|
|
|
15
15
|
import { Sections } from "./common";
|
|
16
16
|
import { formatDatasourceContextForCell } from "./datasource";
|
|
17
17
|
|
|
18
|
-
export interface CellErrorEntry {
|
|
19
|
-
cellId: CellId;
|
|
20
|
-
cellName: string;
|
|
21
|
-
cellCode: string;
|
|
22
|
-
errorData: MarimoError[];
|
|
23
|
-
tracebackHtml?: string;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
18
|
export type ErrorContextItemData =
|
|
27
19
|
| {
|
|
28
20
|
type: "all-errors";
|
|
@@ -38,150 +30,6 @@ export interface ErrorContextItem extends AIContextItem {
|
|
|
38
30
|
data: ErrorContextItemData;
|
|
39
31
|
}
|
|
40
32
|
|
|
41
|
-
function parseCellErrorOutput(
|
|
42
|
-
output: OutputMessage,
|
|
43
|
-
): Pick<CellErrorEntry, "errorData" | "tracebackHtml"> | null {
|
|
44
|
-
if (isMarimoErrorsMime(output.mimetype)) {
|
|
45
|
-
if (!Array.isArray(output.data)) {
|
|
46
|
-
return null;
|
|
47
|
-
}
|
|
48
|
-
const errorData = output.data.filter(
|
|
49
|
-
(error) => !error.type.includes("ancestor"),
|
|
50
|
-
);
|
|
51
|
-
if (errorData.length === 0) {
|
|
52
|
-
return null;
|
|
53
|
-
}
|
|
54
|
-
return { errorData };
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
if (isTracebackMime(output.mimetype)) {
|
|
58
|
-
if (typeof output.data !== "string" || output.data.length === 0) {
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
return { errorData: [], tracebackHtml: output.data };
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
function errorDataHasTraceback(errorData: MarimoError[]): boolean {
|
|
68
|
-
return errorData.some((error) => "traceback" in error && error.traceback);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function getTracebackFromConsole(
|
|
72
|
-
consoleOutputs: OutputMessage[] | undefined,
|
|
73
|
-
): string | undefined {
|
|
74
|
-
const tracebackOutput = consoleOutputs?.find((output) =>
|
|
75
|
-
isTracebackMime(output.mimetype),
|
|
76
|
-
);
|
|
77
|
-
if (
|
|
78
|
-
!tracebackOutput ||
|
|
79
|
-
typeof tracebackOutput.data !== "string" ||
|
|
80
|
-
tracebackOutput.data.length === 0
|
|
81
|
-
) {
|
|
82
|
-
return undefined;
|
|
83
|
-
}
|
|
84
|
-
return tracebackOutput.data;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
function resolveTracebackHtml(
|
|
88
|
-
parsed: Pick<CellErrorEntry, "errorData" | "tracebackHtml">,
|
|
89
|
-
consoleOutputs: OutputMessage[] | undefined,
|
|
90
|
-
): string | undefined {
|
|
91
|
-
if (parsed.tracebackHtml) {
|
|
92
|
-
return parsed.tracebackHtml;
|
|
93
|
-
}
|
|
94
|
-
if (errorDataHasTraceback(parsed.errorData)) {
|
|
95
|
-
return undefined;
|
|
96
|
-
}
|
|
97
|
-
return getTracebackFromConsole(consoleOutputs);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
export function getCellErrorEntries(store: JotaiStore): CellErrorEntry[] {
|
|
101
|
-
const { cellIds, cellRuntime, cellData } = store.get(notebookAtom);
|
|
102
|
-
const entries: CellErrorEntry[] = [];
|
|
103
|
-
|
|
104
|
-
for (const [cellIndex, cellId] of cellIds.inOrderIds.entries()) {
|
|
105
|
-
const cell = cellRuntime[cellId];
|
|
106
|
-
const output = cell.output;
|
|
107
|
-
if (!output || !isErrorMime(output.mimetype)) {
|
|
108
|
-
continue;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
const parsed = parseCellErrorOutput(output);
|
|
112
|
-
if (!parsed) {
|
|
113
|
-
continue;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
const cellName = displayCellName(cellData[cellId].name, cellIndex);
|
|
117
|
-
// Prefer the code from the last execution: runtime errors correspond to
|
|
118
|
-
// the previous run, while `code` may already contain unsaved edits.
|
|
119
|
-
const cellCode = cellData[cellId].lastCodeRun ?? cellData[cellId].code;
|
|
120
|
-
|
|
121
|
-
entries.push({
|
|
122
|
-
cellId,
|
|
123
|
-
cellName,
|
|
124
|
-
cellCode,
|
|
125
|
-
errorData: parsed.errorData,
|
|
126
|
-
tracebackHtml: resolveTracebackHtml(parsed, cell.consoleOutputs),
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
return entries;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
function describeError(error: MarimoError): string {
|
|
134
|
-
if (error.type === "setup-refs") {
|
|
135
|
-
return "The setup cell cannot have references";
|
|
136
|
-
}
|
|
137
|
-
if (error.type === "cycle") {
|
|
138
|
-
return "This cell is in a cycle";
|
|
139
|
-
}
|
|
140
|
-
if (error.type === "multiple-defs") {
|
|
141
|
-
return `The variable '${error.name}' was defined by another cell`;
|
|
142
|
-
}
|
|
143
|
-
if (error.type === "import-star") {
|
|
144
|
-
return error.msg;
|
|
145
|
-
}
|
|
146
|
-
if (error.type === "ancestor-stopped") {
|
|
147
|
-
return error.msg;
|
|
148
|
-
}
|
|
149
|
-
if (error.type === "ancestor-prevented") {
|
|
150
|
-
return error.msg;
|
|
151
|
-
}
|
|
152
|
-
if (error.type === "exception") {
|
|
153
|
-
return error.msg;
|
|
154
|
-
}
|
|
155
|
-
if (error.type === "strict-exception") {
|
|
156
|
-
return error.msg;
|
|
157
|
-
}
|
|
158
|
-
if (error.type === "interruption") {
|
|
159
|
-
return "This cell was interrupted and needs to be re-run";
|
|
160
|
-
}
|
|
161
|
-
if (error.type === "syntax") {
|
|
162
|
-
return error.msg;
|
|
163
|
-
}
|
|
164
|
-
if (error.type === "unknown") {
|
|
165
|
-
return error.msg;
|
|
166
|
-
}
|
|
167
|
-
if (error.type === "sql-error") {
|
|
168
|
-
return error.msg;
|
|
169
|
-
}
|
|
170
|
-
if (error.type === "internal") {
|
|
171
|
-
return error.msg || "An internal error occurred";
|
|
172
|
-
}
|
|
173
|
-
logNever(error);
|
|
174
|
-
return "Unknown error";
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
function formatSingleError(error: MarimoError): string {
|
|
178
|
-
let text = describeError(error);
|
|
179
|
-
if ("traceback" in error && error.traceback) {
|
|
180
|
-
text += `\n\nTraceback:\n${parseHtmlContent(error.traceback)}`;
|
|
181
|
-
}
|
|
182
|
-
return text;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
33
|
function formatCellErrorDetails(
|
|
186
34
|
entry: CellErrorEntry,
|
|
187
35
|
store: JotaiStore,
|