@marimo-team/islands 0.17.0 → 0.17.1
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/{fullscreen-blsKUrtN.js → Combination-De9yoNY5.js} +132 -69
- package/dist/{ConnectedDataExplorerComponent-DJEUH6Bb.js → ConnectedDataExplorerComponent-DuvpJOKp.js} +45 -44
- package/dist/{ImageComparisonComponent-D4Tv9QzJ.js → ImageComparisonComponent--etUl2pp.js} +2 -2
- package/dist/{_baseIsEqual-CN4oFUZ4.js → _baseIsEqual-BFlyFUxC.js} +1 -1
- package/dist/{_basePickBy-CzSvE_-f.js → _basePickBy-gCCvtjgp.js} +3 -3
- package/dist/{_baseProperty-DbbUiyUD.js → _baseProperty-BuqBC0Ie.js} +5 -5
- package/dist/{_baseUniq-DwoC-LVO.js → _baseUniq-CKN9mEDq.js} +5 -5
- package/dist/any-language-editor-Du2Q_6IK.js +156 -0
- package/dist/apl-CUm2DGqh.js +4 -0
- package/dist/{arc-B1iVbHTB.js → arc-C_O2hc-b.js} +2 -2
- package/dist/architecture-O4VJ6CD3-PFw3eFBY.js +21 -0
- package/dist/{architectureDiagram-W76B3OCA-CoBORy6u.js → architectureDiagram-W76B3OCA-CrK99pJi.js} +38 -37
- package/dist/asciiarmor-lqJ78U01.js +4 -0
- package/dist/asn1-CjwpSTlW.js +4 -0
- package/dist/assets/__vite-browser-external-DHoMWs4M.js +1 -0
- package/dist/assets/{worker-vPn7gxWj.js → worker-B6tH8gPO.js} +3 -3
- package/dist/{blockDiagram-QIGZ2CNN-0yzoLIar.js → blockDiagram-QIGZ2CNN-BJOEyO6w.js} +47 -46
- package/dist/brainfuck-ClvDI1dq.js +4 -0
- package/dist/{button-DcnBVpVa.js → button-ADXOb_gX.js} +27 -27
- package/dist/{c4Diagram-FPNF74CW-CKsIA_DD.js → c4Diagram-FPNF74CW-7Pz_X9wF.js} +12 -11
- package/dist/{channel-3LVvQZcD.js → channel-X-wRUxX6.js} +1 -1
- package/dist/{check-D7ifz5op.js → check-COlaG7Ss.js} +1 -1
- package/dist/{chunk-3AY6CYHV-B2C-aVc3.js → chunk-3AY6CYHV-BQH2fFpA.js} +10 -10
- package/dist/{chunk-4BX2VUAB-DEd4VI9L.js → chunk-4BX2VUAB-D-QtDCKM.js} +1 -1
- package/dist/{chunk-4KMFLZZN-DnvP3O4K.js → chunk-4KMFLZZN-BirZvvJS.js} +13 -13
- package/dist/{chunk-55IACEB6-BcCzwOOl.js → chunk-55IACEB6-DjtPYZKs.js} +1 -1
- package/dist/{chunk-6OXUPJBA-eNAAfJ3Q.js → chunk-6OXUPJBA-CTnnqlzw.js} +7 -7
- package/dist/{chunk-7GE3RBXV-CSAeQvLz.js → chunk-7GE3RBXV-CT47hCrL.js} +1 -1
- package/dist/{chunk-ABZYJK2D-CZcb_1iM.js → chunk-ABZYJK2D-B6ZsU6SR.js} +484 -1039
- package/dist/{chunk-BN7GFLIU-pBc5O5Rh.js → chunk-BN7GFLIU-DYWEsrG4.js} +1 -1
- package/dist/{chunk-CVBHYZKI-CivHZg9P.js → chunk-CVBHYZKI-BuzDGXz0.js} +1 -1
- package/dist/{chunk-CXMOBAN2-Dd0E6qb0.js → chunk-CXMOBAN2-Bas2S5w1.js} +6 -6
- package/dist/{chunk-EXTU4WIE-GQ2ZWfJo.js → chunk-EXTU4WIE-DXwNSukz.js} +2 -2
- package/dist/{chunk-FMBD7UC4-C6YcisV6.js → chunk-FMBD7UC4-CYKEpuPr.js} +1 -1
- package/dist/{chunk-JA3XYJ7Z-DYeQaT57.js → chunk-JA3XYJ7Z-DcxfkcDC.js} +4 -4
- package/dist/{chunk-JEIROHC2-B-EZMP4V.js → chunk-JEIROHC2-C01ZIcIG.js} +1 -1
- package/dist/{chunk-K7UQS3LO-DENzlS-M.js → chunk-K7UQS3LO-CmbT97MV.js} +7 -7
- package/dist/{chunk-KMC2YHZD-SckhHdEh.js → chunk-KMC2YHZD-D64m-1E1.js} +1 -1
- package/dist/{chunk-QN33PNHL-Cjq5b604.js → chunk-QN33PNHL-DjB0j8Dr.js} +2 -2
- package/dist/{chunk-QYVHNE3D-CNUuivie.js → chunk-QYVHNE3D-VA4W4oxG.js} +2 -2
- package/dist/{chunk-QZHKN3VN-DugEU_bA.js → chunk-QZHKN3VN-KT0fl3Em.js} +1 -1
- package/dist/{chunk-S3R3BYOJ-itCT6Vif.js → chunk-S3R3BYOJ-C5zmcMvn.js} +6 -6
- package/dist/{chunk-T44TD3VJ-BLdfTX8J.js → chunk-T44TD3VJ-BMOgu-Hk.js} +1 -1
- package/dist/{chunk-TVAH2DTR-BOnwF9d8.js → chunk-TVAH2DTR-eKm8SKnH.js} +6 -6
- package/dist/{chunk-TZMSLE5B-DGs66AlL.js → chunk-TZMSLE5B-CQxFRiI2.js} +3 -3
- package/dist/{chunk-WFRQ32O7-CPsipkmJ.js → chunk-WFRQ32O7-Dg51o277.js} +1 -1
- package/dist/{chunk-WFWHJNB7-Cmed18Pk.js → chunk-WFWHJNB7-DVLO98ge.js} +1 -1
- package/dist/{chunk-XRWGC2XP-DH5GDaY8.js → chunk-XRWGC2XP-UNFKdWQh.js} +1 -1
- package/dist/{chunk-ZPAFE4SF-DPDwaqZm.js → chunk-ZPAFE4SF-DbCSwfLK.js} +1 -1
- package/dist/classDiagram-KNZD7YFC-HUFFxNdk.js +40 -0
- package/dist/classDiagram-v2-RKCZMP56-Dw7Acmuf.js +40 -0
- package/dist/{click-outside-container-CL_FkgGY.js → click-outside-container-2BH589Bq.js} +2 -2
- package/dist/{clike-DYfRWWXk.js → clike-CytFO-kN.js} +1 -1
- package/dist/clojure-8GefCgPe.js +4 -0
- package/dist/{clone-Msbhmn2a.js → clone-CCgVUJ6x.js} +1 -1
- package/dist/cmake-yAhT9H0F.js +4 -0
- package/dist/cobol-BmltueOY.js +4 -0
- package/dist/coffeescript-C7KEQBcH.js +4 -0
- package/dist/commonlisp-CNbiJRU-.js +4 -0
- package/dist/{constants-BCOEQoEQ.js → constants-BaCMVd12.js} +3 -3
- package/dist/{copy-BkZ8PkBM.js → copy-GNcK40wy.js} +2 -2
- package/dist/{cose-bilkent-S5V4N54A-BZnbwyVD.js → cose-bilkent-S5V4N54A-BnvuJG6Y.js} +3 -3
- package/dist/crystal-OdjZZ8bc.js +4 -0
- package/dist/css-DhTxMmL_.js +5 -0
- package/dist/cypher-CgN8E3YI.js +4 -0
- package/dist/d-g41sJcBC.js +4 -0
- package/dist/{dagre-5GWH7T2D-BGaiSZZO.js → dagre-5GWH7T2D-rn7tZYaQ.js} +37 -36
- package/dist/{dagre-pyfDIOWJ.js → dagre-Bghq6VKO.js} +13 -13
- package/dist/{data-grid-overlay-editor-867aBz0Y.js → data-grid-overlay-editor-B4_Caieu.js} +4 -4
- package/dist/{diagram-N5W7TBWH-CzLE0jZB.js → diagram-N5W7TBWH-lbF94o-g.js} +41 -40
- package/dist/{diagram-QEK2KX5R-AGS60xEZ.js → diagram-QEK2KX5R-CKBhSzsO.js} +35 -34
- package/dist/{diagram-S2PKOQOG-BxRoG6yW.js → diagram-S2PKOQOG-161_1f53.js} +35 -34
- package/dist/diff-ViRYYhhg.js +4 -0
- package/dist/{dist-PGgOcwbF.js → dist-28HYzERB.js} +2 -2
- package/dist/{dist-CfQHSIQC.js → dist-4dtbqf8A.js} +3 -3
- package/dist/{dist-CYhQCVru.js → dist-71jYYbWP.js} +2 -2
- package/dist/{dist-Cacac5HV.js → dist-B8Pbw5ln.js} +2 -2
- package/dist/{dist-z_iuDES7.js → dist-BAqp4Vtl.js} +1 -1
- package/dist/{dist-RwqAqkpG.js → dist-BBhmkni2.js} +1 -1
- package/dist/{dist-DMxl6Qbu.js → dist-BNRdMfJH.js} +2 -2
- package/dist/{dist-Doiq_KIP.js → dist-BSyYM1Gi.js} +6 -6
- package/dist/{dist-NUdHX0XE.js → dist-BYHiiJB-.js} +2 -2
- package/dist/{dist-B0YD1aXi.js → dist-B_wjJqqS.js} +2 -2
- package/dist/{dist-DBhEu3-F.js → dist-BaPjLM6s.js} +1 -1
- package/dist/dist-BfJO8Bm9.js +12 -0
- package/dist/{dist-BFkr6kAQ.js → dist-BqdQPWpQ.js} +2 -2
- package/dist/{dist-DlHkZUnY.js → dist-C2IEc8og.js} +5 -5
- package/dist/{dist-DS6nuHYK.js → dist-C9-uHBqC.js} +1 -1
- package/dist/{dist-B1Dv8Sdk.js → dist-CJb8EiFO.js} +3 -3
- package/dist/dist-CLuF3AtO.js +6 -0
- package/dist/{dist-CId4IPXu.js → dist-CNAkUyxv.js} +1 -1
- package/dist/{dist-RdxOJbBw.js → dist-CNvMOZu9.js} +2 -2
- package/dist/{dist-C7zhQ7K0.js → dist-CPNnKuPh.js} +1 -1
- package/dist/{dist-ivwkJchV.js → dist-CTIyD_KU.js} +3 -3
- package/dist/dist-CU04U4NL.js +10 -0
- package/dist/{dist-D-3fICwh.js → dist-CWh5ZwcC.js} +2 -2
- package/dist/{dist-d5NxvX2s.js → dist-CWqB4bg8.js} +3 -3
- package/dist/{dist-biZ846D9.js → dist-CtOeHDJp.js} +5 -5
- package/dist/{dist-BL2DSY0P.js → dist-Cw0F6l-7.js} +1 -1
- package/dist/{dist-wHVprCkn.js → dist-CwZcC4om.js} +1 -1
- package/dist/dist-DNUT6b47.js +6 -0
- package/dist/{dist-CZq5-ZyD.js → dist-Da046MhT.js} +1 -1
- package/dist/{dist-reo2kYlN.js → dist-DaTVdKJa.js} +2 -2
- package/dist/dist-DbAb2sY7.js +6 -0
- package/dist/dist-DiDFQ2Rk.js +6 -0
- package/dist/{dist-BpzZrRd6.js → dist-DlK420ke.js} +1 -1
- package/dist/{dist-CvyfRaIr.js → dist-Drf3cyIW.js} +3 -3
- package/dist/{dist-2Ne-33Xy.js → dist-DxESp2-T.js} +3 -3
- package/dist/{dist-CkvGMBAS.js → dist-DzJem5xc.js} +1 -1
- package/dist/{dist-y8uoXYaE.js → dist-O0zVziwn.js} +3 -3
- package/dist/dist-SNAyAOJ-.js +6 -0
- package/dist/{dist-BhVFggab.js → dist-_4cudra1.js} +3 -3
- package/dist/dist-cbW5xJNV.js +6 -0
- package/dist/dist-h8eGLSbK.js +10 -0
- package/dist/{dist-CBhnQKQ4.js → dist-xLN9qCAp.js} +3 -3
- package/dist/{dockerfile-sZMPcXVY.js → dockerfile-Cmlcqk35.js} +1 -1
- package/dist/dtd-RplB6hDg.js +4 -0
- package/dist/dylan-BX8KJufP.js +4 -0
- package/dist/ecl-CWtLaNMH.js +4 -0
- package/dist/eiffel-C-mlZPMn.js +4 -0
- package/dist/elm-CWp06vcb.js +4 -0
- package/dist/{erDiagram-AWTI2OKA-CTxzb-U8.js → erDiagram-AWTI2OKA-BU7Qig7n.js} +30 -29
- package/dist/erlang-pfp22AZM.js +4 -0
- package/dist/error-banner-BAWlXn49.js +1012 -0
- package/dist/{esm-CAWW9sum.js → esm-AtKNNGYO.js} +1 -1
- package/dist/esm-B2pocBPL.js +26 -0
- package/dist/{esm-BdiY4QsX.js → esm-Oo8OvZ6m.js} +110 -110
- package/dist/{esm-YY5zh7KV.js → esm-YVnxJqkD.js} +20 -20
- package/dist/{factor-CRFTmP_a.js → factor-BZnBK3CG.js} +1 -1
- package/dist/factor-CEn53jua.js +5 -0
- package/dist/{flowDiagram-PVAE7QVJ-Dck2hiJe.js → flowDiagram-PVAE7QVJ-JKJebWeY.js} +39 -38
- package/dist/{formats-BnqXUb1V.js → formats-DOEuF6TR.js} +8 -8
- package/dist/forth-CL8vu_y8.js +4 -0
- package/dist/fortran-DsmXkYtE.js +4 -0
- package/dist/{ganttDiagram-OWAHRB6G-AWzfzpup.js → ganttDiagram-OWAHRB6G-BvWRfg05.js} +17 -16
- package/dist/gas-mYt9Rtlx.js +4 -0
- package/dist/gherkin-DHNCKBNj.js +4 -0
- package/dist/gitGraph-ZV4HHKMB-Cpd6k0O8.js +21 -0
- package/dist/{gitGraphDiagram-NY62KEGX-GyNboWSV.js → gitGraphDiagram-NY62KEGX-VEJJBf5L.js} +35 -34
- package/dist/{glide-data-editor-DHuN8kQ8.js → glide-data-editor-Bne10icG.js} +87 -85
- package/dist/{graphlib-hb3zmtVD.js → graphlib-DRS8CrjA.js} +5 -5
- package/dist/groovy-DzRtOS5a.js +4 -0
- package/dist/haskell-Bl9iT_Mp.js +4 -0
- package/dist/haxe-DqA0ED6k.js +5 -0
- package/dist/{hotkeys-Ct2T3e9O.js → hotkeys-DVxFjl2s.js} +12 -0
- package/dist/idl-WU2hil4i.js +4 -0
- package/dist/info-63CPKGFF-CG-xzUJo.js +21 -0
- package/dist/infoDiagram-STP46IZ2-zoRBGoup.js +45 -0
- package/dist/invariant-D3JoRb4I.js +6 -0
- package/dist/{isEmpty--odfYjh1.js → isEmpty-Do_v2sls.js} +2 -2
- package/dist/{isSymbol-Cb1f2HgO.js → isSymbol-CtkA8Y0a.js} +1 -1
- package/dist/javascript-QY2BGJeV.js +5 -0
- package/dist/jinja2-Czleq7Sk.js +4 -0
- package/dist/{journeyDiagram-BIP6EPQ6-TmXYCUbT.js → journeyDiagram-BIP6EPQ6-CsgEQgxh.js} +10 -9
- package/dist/julia-Dru3Qi0y.js +4 -0
- package/dist/{kanban-definition-6OIFK2YF-B6ozleHo.js → kanban-definition-6OIFK2YF-Bi8Ete2P.js} +42 -41
- package/dist/{katex-mPzRsXEy.js → katex-C-g3rKKt.js} +1 -1
- package/dist/{label-VVRKZmrP.js → label-BiVIU_wb.js} +245 -243
- package/dist/{line-C6-zz71o.js → line-B7-GoF1m.js} +3 -3
- package/dist/{linear-iebAbJVD.js → linear-DeGGALuc.js} +4 -4
- package/dist/livescript-Dxqi_HLT.js +4 -0
- package/dist/{loader-CM0VALo9.js → loader-BBqwtZWj.js} +3 -3
- package/dist/lua-ByH1cUQZ.js +4 -0
- package/dist/main.js +11785 -11529
- package/dist/mathematica-CWJIFuES.js +4 -0
- package/dist/mbox-qhPIGaUI.js +4 -0
- package/dist/{memoize-DYoRBSLn.js → memoize-D7eDkf3R.js} +1 -1
- package/dist/{merge-BjuR6j_w.js → merge-C_6cGM6o.js} +1 -1
- package/dist/{mermaid-YPPMBmhk.js → mermaid-BmtvsZ2m.js} +323 -321
- package/dist/{mermaid-parser.core-BLkyTSZj.js → mermaid-parser.core-geyG_6o0.js} +8 -8
- package/dist/{mhchem-Dw7wvXtr.js → mhchem-OhAaJ0fA.js} +1 -1
- package/dist/{min-B_i2ahn4.js → min-Dwa_NbP6.js} +7 -7
- package/dist/{mindmap-definition-Q6HEUPPD-F6-JnXwq.js → mindmap-definition-Q6HEUPPD-B-wmX1oG.js} +29 -28
- package/dist/mirc-yYcXhXBY.js +4 -0
- package/dist/mllike-BfT_Nl9x.js +6 -0
- package/dist/modelica-lVDtz1Rm.js +4 -0
- package/dist/mscgen-DvwdD1QJ.js +6 -0
- package/dist/mumps-BiY3GwKd.js +4 -0
- package/dist/{now-CwRqw0nS.js → now-DumxsrcX.js} +1 -1
- package/dist/{nsis-BWJEeUyS.js → nsis-D4bLR_Y1.js} +1 -1
- package/dist/nsis-Dk18Sq_4.js +5 -0
- package/dist/ntriples-Cj-8VqKF.js +4 -0
- package/dist/{number-overlay-editor-CeyruAX4.js → number-overlay-editor-D6r-48ka.js} +2 -2
- package/dist/octave-BgFAaYjU.js +4 -0
- package/dist/once-3OSMKEsL.js +74 -0
- package/dist/{ordinal-BXk5xAj2.js → ordinal-DpEbSVPc.js} +1 -1
- package/dist/oz-IsEG1I1m.js +4 -0
- package/dist/packet-HUATNLJX-Cafuo3IG.js +21 -0
- package/dist/pascal-BVf7FtIE.js +4 -0
- package/dist/perl-BM0-y4mZ.js +4 -0
- package/dist/pie-WTHONI2E-BE0pHBwB.js +21 -0
- package/dist/{pieDiagram-ADFJNKIX-C5dSQVCn.js → pieDiagram-ADFJNKIX-C3GvPNUL.js} +40 -39
- package/dist/pig-CLBjzQmc.js +4 -0
- package/dist/powershell-B_qvE33J.js +4 -0
- package/dist/{precisionRound-DbP73hkf.js → precisionRound-7YYJq2rW.js} +1 -1
- package/dist/properties-CUTpsH2y.js +4 -0
- package/dist/protobuf-DqCP8a-0.js +4 -0
- package/dist/pug-BvexKkw4.js +5 -0
- package/dist/{pug-PJh82u1M.js → pug-Dv3gE36O.js} +1 -1
- package/dist/puppet-CoIi0R3f.js +4 -0
- package/dist/purify.es-CrfFzTyi.js +536 -0
- package/dist/python-C-11-YMh.js +5 -0
- package/dist/q-CCVgEip7.js +4 -0
- package/dist/{quadrantDiagram-LMRXKWRM-DlahxNiy.js → quadrantDiagram-LMRXKWRM-DPXwGNVa.js} +8 -7
- package/dist/r-CIdR0Sfs.js +4 -0
- package/dist/radar-NJJJXTRR-0adgjw0u.js +21 -0
- package/dist/{range-DxfkexCE.js → range-CIbLpsrs.js} +3 -3
- package/dist/{react-plotly-D_IAfR8f.js → react-plotly-DYyvxcRD.js} +1 -1
- package/dist/{requirementDiagram-4UW4RH46-DTkinyvU.js → requirementDiagram-4UW4RH46-Cs3Hqnm0.js} +24 -23
- package/dist/rpm-Dwvm039g.js +5 -0
- package/dist/ruby-DpTnO5gb.js +4 -0
- package/dist/{sankeyDiagram-GR3RE2ED-CsLnEnnq.js → sankeyDiagram-GR3RE2ED-Be1d_Xf7.js} +7 -6
- package/dist/sas-CK9boxgv.js +4 -0
- package/dist/scheme-Y1aYL-Qq.js +4 -0
- package/dist/{sequenceDiagram-C3RYC4MD-BdEOR6SC.js → sequenceDiagram-C3RYC4MD-lbtovKTa.js} +14 -13
- package/dist/shell-D3eXGsHd.js +4 -0
- package/dist/sieve-BdwSFdWJ.js +4 -0
- package/dist/{slides-component-2bbal1YJ.js → slides-component-BoeQU7-s.js} +999 -998
- package/dist/smalltalk-BTYJquCm.js +4 -0
- package/dist/sparql-CYF0g4Cc.js +4 -0
- package/dist/{src-DZkaBUmt.js → src-BTqT1mA1.js} +1 -1
- package/dist/{stateDiagram-KXAO66HF-DQLH2jhP.js → stateDiagram-KXAO66HF-BmbR-Rol.js} +40 -39
- package/dist/stateDiagram-v2-UMBNRL4Z-DdJ7qVWc.js +39 -0
- package/dist/{step-IHYrujTc.js → step-2RJrMSSG.js} +1 -1
- package/dist/stex-CyWhoWHt.js +5 -0
- package/dist/style.css +1 -1
- package/dist/stylus-BBiKaI2h.js +4 -0
- package/dist/swift-COb15qFR.js +4 -0
- package/dist/tcl-Jik1LXu9.js +4 -0
- package/dist/textile-BFHPD3wr.js +4 -0
- package/dist/{time-CFkXkVrt.js → time-BB30r1tK.js} +4 -4
- package/dist/{timeline-definition-XQNQX7LJ-bToVq14i.js → timeline-definition-XQNQX7LJ-1mv5caPW.js} +16 -15
- package/dist/{toNumber-EFF1Z9T1.js → toNumber-D3Ystr3y.js} +2 -2
- package/dist/{toString-C2mCkasT.js → toString-CbuxCRDG.js} +2 -2
- package/dist/toml-Brp9fBXs.js +4 -0
- package/dist/treemap-75Q7IDZK-CyBT8_Wh.js +21 -0
- package/dist/troff-CcZRW4vg.js +4 -0
- package/dist/ttcn-Bz_6ifRd.js +4 -0
- package/dist/ttcn-cfg-v-yi2rKc.js +4 -0
- package/dist/turtle-CDOsZYhB.js +4 -0
- package/dist/{types-CRXV0KD5.js → types-BPohCsA7.js} +141 -210
- package/dist/{useAsyncData-uMVTsDI9.js → useAsyncData-DHBqeb9a.js} +3 -2
- package/dist/{useDateFormatter-Dcz7jstn.js → useDateFormatter-BkbjKw83.js} +9 -9
- package/dist/useIframeCapabilities-BEvvwlwt.js +46 -0
- package/dist/{useTheme-NbEx-ZNV.js → useTheme-CnMbo-iq.js} +23 -23
- package/dist/vb-CL7fRwRw.js +4 -0
- package/dist/vbscript-CR2xfxpw.js +4 -0
- package/dist/{vega-component-hegVmfuS.js → vega-component-BfFcXZxw.js} +40 -39
- package/dist/{vega-loader.browser.module-DcW8jnKp.js → vega-loader.browser.module-CFMtdrNw.js} +3 -3
- package/dist/velocity-CfuZoxPt.js +4 -0
- package/dist/verilog-CySTkzw_.js +4 -0
- package/dist/vhdl-Dvcd8KHW.js +4 -0
- package/dist/webidl-tbJt7sKk.js +4 -0
- package/dist/xquery-DJQVztyc.js +4 -0
- package/dist/{xychartDiagram-6GGTOJPD-C7Bhm_yt.js → xychartDiagram-6GGTOJPD-njc-naaw.js} +23 -22
- package/dist/yacas-BbgBReEH.js +4 -0
- package/dist/z80-DPyb8VGz.js +4 -0
- package/package.json +10 -6
- package/src/components/app-config/ai-config.tsx +1 -3
- package/src/components/app-config/common.tsx +14 -0
- package/src/components/app-config/data-form.tsx +282 -0
- package/src/components/app-config/user-config-form.tsx +36 -223
- package/src/components/chat/acp/__tests__/state.test.ts +75 -2
- package/src/components/chat/acp/agent-panel.tsx +143 -89
- package/src/components/chat/acp/blocks.tsx +77 -34
- package/src/components/chat/acp/state.ts +5 -1
- package/src/components/chat/acp/thread.tsx +12 -1
- package/src/components/chat/chat-panel.tsx +38 -5
- package/src/components/chat/chat-utils.ts +5 -1
- package/src/components/chat/markdown-renderer.css +1 -0
- package/src/components/chat/tool-call-accordion.tsx +7 -1
- package/src/components/data-table/charts/__tests__/storage.test.ts +12 -6
- package/src/components/data-table/charts/charts.tsx +8 -2
- package/src/components/data-table/charts/storage.ts +1 -1
- package/src/components/data-table/column-wrapping/feature.ts +2 -0
- package/src/components/data-table/columns.tsx +10 -2
- package/src/components/data-table/renderers.tsx +3 -2
- package/src/components/editor/Output.tsx +28 -24
- package/src/components/editor/actions/useCellActionButton.tsx +20 -4
- package/src/components/editor/ai/add-cell-with-ai.tsx +17 -3
- package/src/components/editor/ai/ai-completion-editor.tsx +79 -32
- package/src/components/editor/ai/completion-handlers.tsx +26 -7
- package/src/components/editor/cell/StagedAICell.tsx +81 -12
- package/src/components/editor/cell/code/cell-editor.tsx +2 -3
- package/src/components/editor/cell/useRunCells.ts +62 -30
- package/src/components/editor/chrome/panels/cache-panel.tsx +2 -2
- package/src/components/editor/chrome/panels/packages-panel.tsx +1 -1
- package/src/components/editor/chrome/state.ts +1 -1
- package/src/components/editor/chrome/wrapper/app-chrome.tsx +2 -0
- package/src/components/editor/chrome/wrapper/minimap.tsx +2 -0
- package/src/components/editor/chrome/wrapper/pending-ai-cells.tsx +108 -0
- package/src/components/editor/chrome/wrapper/sidebar.tsx +1 -1
- package/src/components/editor/code/readonly-diff.tsx +49 -0
- package/src/components/editor/columns/storage.ts +1 -1
- package/src/components/editor/errors/fix-mode.ts +6 -1
- package/src/components/editor/inputs/Inputs.styles.ts +1 -1
- package/src/components/editor/output/CalloutOutput.tsx +1 -1
- package/src/components/editor/output/HtmlOutput.tsx +3 -2
- package/src/components/editor/output/JsonOutput.tsx +6 -1
- package/src/components/editor/output/MarimoTracebackOutput.tsx +59 -45
- package/src/components/editor/output/__tests__/HtmlOutput.test.tsx +134 -0
- package/src/components/editor/output/__tests__/traceback.test.tsx +8 -1
- package/src/components/editor/output/useWrapText.ts +6 -1
- package/src/components/editor/package-alert.tsx +34 -32
- package/src/components/editor/renderers/vertical-layout/vertical-layout-wrapper.tsx +5 -2
- package/src/components/home/state.ts +3 -2
- package/src/components/scratchpad/scratchpad-history.ts +6 -1
- package/src/components/slides/slides-component.tsx +25 -21
- package/src/components/ui/confirmation-button.tsx +1 -1
- package/src/components/ui/context-menu.tsx +14 -4
- package/src/components/ui/dropdown-menu.tsx +14 -4
- package/src/components/ui/fullscreen.tsx +115 -1
- package/src/components/ui/popover.tsx +11 -3
- package/src/components/ui/range-slider.tsx +1 -1
- package/src/components/ui/select.tsx +7 -3
- package/src/components/ui/slider.tsx +1 -1
- package/src/components/ui/tooltip.tsx +10 -3
- package/src/core/ai/__tests__/staged-cells.test.ts +189 -64
- package/src/core/ai/config.ts +6 -2
- package/src/core/ai/context/providers/__tests__/__snapshots__/cell-output.test.ts.snap +17 -0
- package/src/core/ai/context/providers/__tests__/cell-output.test.ts +194 -10
- package/src/core/ai/context/providers/cell-output.ts +170 -112
- package/src/core/ai/context/providers/tables.ts +2 -2
- package/src/core/ai/staged-cells.ts +32 -16
- package/src/core/ai/state.ts +2 -1
- package/src/core/ai/tools/__tests__/edit-notebook-tool.test.ts +556 -0
- package/src/core/ai/tools/__tests__/registry.test.ts +12 -4
- package/src/core/ai/tools/__tests__/run-cells-tool.test.ts +450 -0
- package/src/core/ai/tools/__tests__/utils.test.ts +87 -0
- package/src/core/ai/tools/base.ts +31 -8
- package/src/core/ai/tools/edit-notebook-tool.ts +239 -0
- package/src/core/ai/tools/registry.ts +13 -6
- package/src/core/ai/tools/run-cells-tool.ts +233 -0
- package/src/core/ai/tools/sample-tool.ts +10 -8
- package/src/core/ai/tools/utils.ts +23 -0
- package/src/core/cells/__tests__/cells.test.ts +19 -1
- package/src/core/cells/__tests__/session.test.ts +20 -3
- package/src/core/cells/cells.ts +12 -7
- package/src/core/cells/session.ts +1 -1
- package/src/core/codemirror/ai/resources.ts +13 -2
- package/src/core/codemirror/copilot/state.ts +4 -2
- package/src/core/codemirror/language/__tests__/extension.test.ts +10 -2
- package/src/core/codemirror/language/languages/markdown.ts +16 -153
- package/src/core/codemirror/language/languages/python.ts +12 -7
- package/src/core/codemirror/language/languages/sql/sql-mode.ts +6 -1
- package/src/core/codemirror/language/languages/sql/sql.ts +20 -293
- package/src/core/codemirror/language/panel/markdown.tsx +2 -1
- package/src/core/codemirror/language/panel/panel.tsx +1 -1
- package/src/core/codemirror/lsp/federated-lsp.ts +1 -1
- package/src/core/codemirror/lsp/transports.ts +7 -13
- package/src/core/config/config-schema.ts +4 -1
- package/src/core/hotkeys/hotkeys.ts +12 -0
- package/src/core/lsp/__tests__/transport.test.ts +233 -0
- package/src/core/lsp/transport.ts +139 -0
- package/src/core/rtc/state.ts +6 -1
- package/src/core/vscode/is-in-vscode.ts +9 -0
- package/src/core/wasm/store.ts +1 -1
- package/src/css/app/Cell.css +31 -0
- package/src/css/globals.css +5 -0
- package/src/hooks/useIframeCapabilities.ts +14 -0
- package/src/hooks/useLocalStorage.ts +1 -1
- package/src/plugins/core/RenderHTML.tsx +65 -5
- package/src/plugins/core/__test__/RenderHTML.test.ts +25 -23
- package/src/plugins/core/__test__/renderHTML-sanitization.test.tsx +131 -0
- package/src/plugins/core/__test__/sanitize.test.ts +465 -0
- package/src/plugins/core/registerReactComponent.tsx +14 -1
- package/src/plugins/core/sanitize.ts +76 -0
- package/src/plugins/impl/DataTablePlugin.tsx +1 -0
- package/src/plugins/impl/FileBrowserPlugin.tsx +1 -3
- package/src/plugins/impl/FileUploadPlugin.tsx +1 -3
- package/src/plugins/impl/__tests__/DateTimePickerPlugin.test.tsx +8 -1
- package/src/plugins/impl/__tests__/DropdownPlugin.test.tsx +6 -0
- package/src/plugins/impl/__tests__/MultiSelectPlugin.test.ts +8 -1
- package/src/plugins/impl/__tests__/NumberPlugin.test.tsx +3 -0
- package/src/plugins/impl/plotly/parse-from-template.ts +1 -1
- package/src/utils/__tests__/arrays.test.ts +42 -0
- package/src/utils/__tests__/capabilities.test.ts +453 -0
- package/src/utils/__tests__/formatting.test.ts +13 -13
- package/src/utils/__tests__/local-storage.test.ts +1 -1
- package/src/utils/__tests__/storage.test.ts +21 -21
- package/src/utils/arrays.ts +25 -0
- package/src/utils/capabilities.ts +114 -0
- package/src/utils/numbers.ts +2 -2
- package/src/utils/{storage.ts → storage/jotai.ts} +16 -4
- package/src/utils/storage/storage.ts +57 -0
- package/src/utils/{localStorage.ts → storage/typed.ts} +22 -12
- package/dist/any-language-editor-CEXn1vFs.js +0 -156
- package/dist/apl-DuVfHsPc.js +0 -4
- package/dist/architecture-O4VJ6CD3-lp-opOaL.js +0 -21
- package/dist/asciiarmor-qIVWsi4F.js +0 -4
- package/dist/asn1-BjPqARr7.js +0 -4
- package/dist/assets/__vite-browser-external-lX-sn9m2.js +0 -1
- package/dist/brainfuck-DPGTVfkE.js +0 -4
- package/dist/classDiagram-KNZD7YFC-azuS_99k.js +0 -39
- package/dist/classDiagram-v2-RKCZMP56-CQpyQQOR.js +0 -39
- package/dist/clojure-ATksAecl.js +0 -4
- package/dist/cmake-CWylaz2C.js +0 -4
- package/dist/cobol-BiLLCZIQ.js +0 -4
- package/dist/coffeescript-Ca4jipi8.js +0 -4
- package/dist/commonlisp-BwFjyEC7.js +0 -4
- package/dist/crystal-BhUsQHbh.js +0 -4
- package/dist/css-Cf4wlIyV.js +0 -5
- package/dist/cypher-Dj8Hzgxa.js +0 -4
- package/dist/d-DZI7tbTy.js +0 -4
- package/dist/diff-WQISUHG5.js +0 -4
- package/dist/dist-BawZu0ix.js +0 -10
- package/dist/dist-BiOF7987.js +0 -6
- package/dist/dist-Cs3McXEj.js +0 -6
- package/dist/dist-D3aaithT.js +0 -6
- package/dist/dist-DELcMSpJ.js +0 -6
- package/dist/dist-Dgts3WXd.js +0 -6
- package/dist/dist-DtpUiDG_.js +0 -6
- package/dist/dist-ZjnJq_jD.js +0 -10
- package/dist/dist-mof3iuBu.js +0 -12
- package/dist/dtd-B2M8dhfC.js +0 -4
- package/dist/dylan-CU3Vt8SC.js +0 -4
- package/dist/ecl-B8ESAVq4.js +0 -4
- package/dist/eiffel-DDfMIKeA.js +0 -4
- package/dist/elm-Bj6rj8jf.js +0 -4
- package/dist/erlang-BxyshZUq.js +0 -4
- package/dist/error-banner-npbEfanI.js +0 -1012
- package/dist/esm-svAVli9f.js +0 -26
- package/dist/factor-CYk6XT8r.js +0 -5
- package/dist/forth-fcoJkd-f.js +0 -4
- package/dist/fortran-IxZHu4wc.js +0 -4
- package/dist/gas-B8rmKcim.js +0 -4
- package/dist/gherkin-BTm-jIdJ.js +0 -4
- package/dist/gitGraph-ZV4HHKMB-DFg_OLQb.js +0 -21
- package/dist/groovy-01kRHFMD.js +0 -4
- package/dist/haskell-B3PhE05w.js +0 -4
- package/dist/haxe-DEoAm8oA.js +0 -5
- package/dist/idl-DsDJU9cV.js +0 -4
- package/dist/info-63CPKGFF-D3DZmDBa.js +0 -21
- package/dist/infoDiagram-STP46IZ2-ec08vi_U.js +0 -44
- package/dist/javascript-gwczVhuU.js +0 -5
- package/dist/jinja2-AkZRdFk3.js +0 -4
- package/dist/julia-_s6qe3bf.js +0 -4
- package/dist/livescript-CwPHQdv5.js +0 -4
- package/dist/lua-s7nRxkCP.js +0 -4
- package/dist/mathematica-Ci36yd1q.js +0 -4
- package/dist/mbox-DbOYMNCO.js +0 -4
- package/dist/mirc-VmNe8AwF.js +0 -4
- package/dist/mllike-BdD7SJEa.js +0 -6
- package/dist/modelica-BA4VqzC3.js +0 -4
- package/dist/mscgen-DF-5WHJm.js +0 -6
- package/dist/mumps-c_Uia_QN.js +0 -4
- package/dist/nsis-BAANGODV.js +0 -5
- package/dist/ntriples-Bslqh2Ki.js +0 -4
- package/dist/octave-DYn5ltia.js +0 -4
- package/dist/oz-B_N-StZq.js +0 -4
- package/dist/packet-HUATNLJX-CkqjFdAv.js +0 -21
- package/dist/pascal-DU4CtAUu.js +0 -4
- package/dist/perl-Bae6k32u.js +0 -4
- package/dist/pie-WTHONI2E-D0rWwX5P.js +0 -21
- package/dist/pig-DSIxUEgX.js +0 -4
- package/dist/powershell-31lcPgIF.js +0 -4
- package/dist/properties-lmYbntDG.js +0 -4
- package/dist/protobuf-BTYoCEpV.js +0 -4
- package/dist/pug-DMFM7zzO.js +0 -5
- package/dist/puppet-B0ub07d-.js +0 -4
- package/dist/python-C4jT87Nt.js +0 -5
- package/dist/q-YbPYlqRI.js +0 -4
- package/dist/r-OfNu6HAI.js +0 -4
- package/dist/radar-NJJJXTRR-Bxqv4O5a.js +0 -21
- package/dist/rpm-D_3b5peD.js +0 -5
- package/dist/ruby-CehsJy_T.js +0 -4
- package/dist/sas-DwQHzPoF.js +0 -4
- package/dist/scheme-B6ArxiQu.js +0 -4
- package/dist/shell-AHmQgDfc.js +0 -4
- package/dist/sieve-CgodKOcx.js +0 -4
- package/dist/smalltalk-BeFzDkbo.js +0 -4
- package/dist/sparql-BWxq-Lnx.js +0 -4
- package/dist/stateDiagram-v2-UMBNRL4Z-D9v8fKjF.js +0 -38
- package/dist/stex-Dvaq0qsm.js +0 -5
- package/dist/stylus-Ge0ofWlZ.js +0 -4
- package/dist/swift-CjQfbVxV.js +0 -4
- package/dist/tcl-CAGDF11K.js +0 -4
- package/dist/textile-CrXreJtf.js +0 -4
- package/dist/toml-AdLXKwEi.js +0 -4
- package/dist/treemap-75Q7IDZK-Da9Jv6a_.js +0 -21
- package/dist/troff-C-LaM2ex.js +0 -4
- package/dist/ttcn-DTclUi6T.js +0 -4
- package/dist/ttcn-cfg-BtBPbmLX.js +0 -4
- package/dist/turtle-BODDDg5O.js +0 -4
- package/dist/vb-Cb1HQHii.js +0 -4
- package/dist/vbscript-CpXOP4wZ.js +0 -4
- package/dist/velocity-Dz0rBQIk.js +0 -4
- package/dist/verilog-6Di9aLKw.js +0 -4
- package/dist/vhdl-BRNesXYc.js +0 -4
- package/dist/webidl-BpRNYIYn.js +0 -4
- package/dist/xquery-DXWcJ7b6.js +0 -4
- package/dist/yacas-DbSARPz4.js +0 -4
- package/dist/z80-DzslPj_l.js +0 -4
- package/src/core/codemirror/language/__tests__/ast.test.ts +0 -124
- package/src/core/codemirror/language/utils/ast.ts +0 -84
- package/src/core/codemirror/language/utils/quotes.ts +0 -18
- /package/dist/{_arrayReduce-CVwxyrBP.js → _arrayReduce-Cd9xQjbl.js} +0 -0
- /package/dist/{_baseSlice-OgpvpOOJ.js → _baseSlice-CE9WsQZm.js} +0 -0
- /package/dist/{_hasUnicode-BgIggCqE.js → _hasUnicode-DkEebvtD.js} +0 -0
- /package/dist/{apl-CEHentF4.js → apl-aGhy11IM.js} +0 -0
- /package/dist/{array-aAxy08hN.js → array-DYSXIreg.js} +0 -0
- /package/dist/{asciiarmor-DURYiCS0.js → asciiarmor-DJKJ3Gkn.js} +0 -0
- /package/dist/{asn1-ETAiEoXY.js → asn1-C6f5IeNs.js} +0 -0
- /package/dist/{asterisk-DTpbbXPb.js → asterisk-DB1poX9_.js} +0 -0
- /package/dist/{brainfuck-BWQep-SA.js → brainfuck-Ch9vjun0.js} +0 -0
- /package/dist/{chunk-57QY23SG-0TxCfmy_.js → chunk-57QY23SG-BpXU7ph4.js} +0 -0
- /package/dist/{clike-bzZTreP4.js → clike-Bc2PZzZQ.js} +0 -0
- /package/dist/{clojure-BzFapDkA.js → clojure-B_lpr3zt.js} +0 -0
- /package/dist/{cmake-DvlbIC8x.js → cmake-DaocNF4I.js} +0 -0
- /package/dist/{cobol-BrEI4cPR.js → cobol-suTPtt7c.js} +0 -0
- /package/dist/{coffeescript-B6cvu8mO.js → coffeescript-CPLIvtqJ.js} +0 -0
- /package/dist/{colors-Cr_mZ2aH.js → colors-BXlG8Lmz.js} +0 -0
- /package/dist/{common-keywords-WqQm7W8t.js → common-keywords-Bhll7O3b.js} +0 -0
- /package/dist/{commonlisp-BIT8PQqi.js → commonlisp-BqM3qFK7.js} +0 -0
- /package/dist/{crystal-B_UcPArT.js → crystal-AsSFu4ke.js} +0 -0
- /package/dist/{css-dHbnt_zl.js → css-Df7Sdeyh.js} +0 -0
- /package/dist/{cypher-Dh3FOpL7.js → cypher-CaVKL6Gu.js} +0 -0
- /package/dist/{cytoscape.esm-BTpRoPd2.js → cytoscape.esm-BFEMljQI.js} +0 -0
- /package/dist/{d-CQD1IHee.js → d-DCGWK7NQ.js} +0 -0
- /package/dist/{defaultLocale-BAgEOGks.js → defaultLocale-CYgZlqDF.js} +0 -0
- /package/dist/{defaultLocale-471SYAPk.js → defaultLocale-Cto8YOmX.js} +0 -0
- /package/dist/{diff-CpF_IDx0.js → diff-CsxOM4Tr.js} +0 -0
- /package/dist/{dist-CK8Gj3GX.js → dist-C76MUPD3.js} +0 -0
- /package/dist/{dtd-DYoNpy6c.js → dtd-Dwr0Jmks.js} +0 -0
- /package/dist/{duckdb-keywords-CdIsl9L0.js → duckdb-keywords-7wAWf848.js} +0 -0
- /package/dist/{dylan-Bc_2G1E-.js → dylan-A7-ZBSey.js} +0 -0
- /package/dist/{ebnf-jGVT_YpN.js → ebnf-9_SaGDUz.js} +0 -0
- /package/dist/{ecl-UIU-P-Ar.js → ecl-BzJVIQDc.js} +0 -0
- /package/dist/{eiffel-C90Oyuix.js → eiffel-CO9eC_Op.js} +0 -0
- /package/dist/{elm-B9fWSySj.js → elm-CVAWj8SB.js} +0 -0
- /package/dist/{emotion-is-prop-valid.esm-BHMWayAG.js → emotion-is-prop-valid.esm-C3Yi5GQt.js} +0 -0
- /package/dist/{erlang-Ccff0UAn.js → erlang-DWbZP546.js} +0 -0
- /package/dist/{fcl-CGR8NxAg.js → fcl-CM9t2iay.js} +0 -0
- /package/dist/{forth-U1ROGcBY.js → forth-BTYqUuu3.js} +0 -0
- /package/dist/{fortran-3nOkjDmc.js → fortran-DgAjHcCq.js} +0 -0
- /package/dist/{gas-B_4H5FzV.js → gas-BjDSWPZd.js} +0 -0
- /package/dist/{gherkin-B0eru5Uz.js → gherkin-ClRqqpKv.js} +0 -0
- /package/dist/{groovy-dqjtZUVf.js → groovy-BzNjnc8x.js} +0 -0
- /package/dist/{haskell-DFzCCQzo.js → haskell-DLdk34Jq.js} +0 -0
- /package/dist/{haxe-Da8Pj5RT.js → haxe-l6gaY_IS.js} +0 -0
- /package/dist/{http-1HACL_9s.js → http-6Qg7z_h2.js} +0 -0
- /package/dist/{idl-D3NXs5iM.js → idl-hlWT4D26.js} +0 -0
- /package/dist/{init-D6eDd7H0.js → init-tZ42Torz.js} +0 -0
- /package/dist/{isArrayLikeObject-BlvK28do.js → isArrayLikeObject-DU5MCuQM.js} +0 -0
- /package/dist/{javascript-BfCTmOnk.js → javascript-DGukg1sB.js} +0 -0
- /package/dist/{jinja2-gBHAxUdF.js → jinja2-DI5k_Er3.js} +0 -0
- /package/dist/{julia-bG-6nJ-_.js → julia-BvDZDiIT.js} +0 -0
- /package/dist/{katex-mkWmhPUh.js → katex-DgfMWJY9.js} +0 -0
- /package/dist/{livescript-BlsRC8UJ.js → livescript-2YMQfkfI.js} +0 -0
- /package/dist/{lua-BbDC0_5w.js → lua-DIUrQRfA.js} +0 -0
- /package/dist/{main-Czi9-LVy.js → main-BMTpe7M0.js} +0 -0
- /package/dist/{marked.esm-DJM8la36.js → marked.esm-DkVwEwtO.js} +0 -0
- /package/dist/{math-C7wLpe9K.js → math-qsHyz2Eo.js} +0 -0
- /package/dist/{mathematica-YZTe3-PF.js → mathematica-Dqmg_BwL.js} +0 -0
- /package/dist/{mbox-CY5idp08.js → mbox-Cng-P-F1.js} +0 -0
- /package/dist/{mirc-CbQuFZKk.js → mirc-CNDqOVhQ.js} +0 -0
- /package/dist/{mllike-DsbHMX-5.js → mllike-C1n2UDyX.js} +0 -0
- /package/dist/{modelica-CQuvsOQk.js → modelica-QqQC2pFj.js} +0 -0
- /package/dist/{mscgen-LIpBP9VR.js → mscgen-C3fl8uhp.js} +0 -0
- /package/dist/{mumps-Ct5NXoaG.js → mumps-BeCUbMej.js} +0 -0
- /package/dist/{nginx-Dvc62C8z.js → nginx-ejv7DsBz.js} +0 -0
- /package/dist/{node-sql-parser-BqKV-TpL.js → node-sql-parser-CoPWN4hn.js} +0 -0
- /package/dist/{ntriples-jVkxWUuv.js → ntriples-CUgUpcma.js} +0 -0
- /package/dist/{octave-jGOImUB0.js → octave-BD652tGl.js} +0 -0
- /package/dist/{oz-Y0FKDMS2.js → oz-DrRsFa0K.js} +0 -0
- /package/dist/{pascal-BaLtPWWB.js → pascal-hpcx9sVn.js} +0 -0
- /package/dist/{path-VDkDgx1I.js → path-Bbv2tLY1.js} +0 -0
- /package/dist/{perl-CjfE0JLo.js → perl-DW8XHeFc.js} +0 -0
- /package/dist/{pig-DE4epV99.js → pig-Cv7Nxbfo.js} +0 -0
- /package/dist/{powershell-BZx53Ujw.js → powershell-Dr7WZMDU.js} +0 -0
- /package/dist/{prop-types-0wNc-99T.js → prop-types-Bd16OEUP.js} +0 -0
- /package/dist/{properties-CLyCG5C-.js → properties-D-qJDXAM.js} +0 -0
- /package/dist/{protobuf-BjBBs_V4.js → protobuf-B48QZbd3.js} +0 -0
- /package/dist/{puppet-ZImLuomA.js → puppet-15JDyiY2.js} +0 -0
- /package/dist/{python-C9YN71pR.js → python-DWkQA94h.js} +0 -0
- /package/dist/{q-CMoUHJ5Q.js → q-BzRpKgfd.js} +0 -0
- /package/dist/{r-DILmKWWW.js → r-dcNRe_Q8.js} +0 -0
- /package/dist/{range-PcytnUSJ.js → range-CQvYp_qE.js} +0 -0
- /package/dist/{rpm-fpIsm1Kr.js → rpm-Djl3Dsf1.js} +0 -0
- /package/dist/{ruby-BuiQI41h.js → ruby-Dd2CZTip.js} +0 -0
- /package/dist/{sas-C76sJ1zF.js → sas-DYF5_Iqu.js} +0 -0
- /package/dist/{scheme-DHjM-txv.js → scheme-YtWcji1H.js} +0 -0
- /package/dist/{shell--7NmGJ9p.js → shell-C3uC3Y0Z.js} +0 -0
- /package/dist/{sieve-DaPvBv1M.js → sieve-DHB17sQG.js} +0 -0
- /package/dist/{simple-mode-BP3Jd4vf.js → simple-mode-BMmwP_vI.js} +0 -0
- /package/dist/{smalltalk-KPvwrjCs.js → smalltalk-Y5v1Np3H.js} +0 -0
- /package/dist/{solr-PvZUtEDb.js → solr-DvRJLlRD.js} +0 -0
- /package/dist/{sparql-CXSUIQer.js → sparql-BEt3GJwM.js} +0 -0
- /package/dist/{spreadsheet-DPJdGPkx.js → spreadsheet-Dp4B9_rc.js} +0 -0
- /package/dist/{sql-Dp4ZLSIa.js → sql-DBsUs8nQ.js} +0 -0
- /package/dist/{stex-CeXW4zzk.js → stex-C6-x52ei.js} +0 -0
- /package/dist/{stylus-BXcmrg9w.js → stylus-DroA8via.js} +0 -0
- /package/dist/{swift-DD8I7hKP.js → swift-DR0x1ESK.js} +0 -0
- /package/dist/{tcl-B9Lp4GtA.js → tcl-BeuTFc_c.js} +0 -0
- /package/dist/{textile-qdiY0teq.js → textile-C0ikhHN3.js} +0 -0
- /package/dist/{tiddlywiki-t32lkubq.js → tiddlywiki-C_2Nvsgu.js} +0 -0
- /package/dist/{tiki-B0qKrSMl.js → tiki-CKQlhmQQ.js} +0 -0
- /package/dist/{timer-CzOhIJuk.js → timer-CcUhugb0.js} +0 -0
- /package/dist/{toml-eSl4PUAH.js → toml-BqNUJWRI.js} +0 -0
- /package/dist/{treemap-BpgMKHv-.js → treemap-BYLUKIzA.js} +0 -0
- /package/dist/{troff-105XJOEu.js → troff-DkK0f2ZH.js} +0 -0
- /package/dist/{tslib.es6-DofFyd9S.js → tslib.es6-3ZL768sZ.js} +0 -0
- /package/dist/{ttcn-1_BxDcM8.js → ttcn-Bf8vrg-_.js} +0 -0
- /package/dist/{ttcn-cfg-Cn_XgXiw.js → ttcn-cfg-DjCKzd95.js} +0 -0
- /package/dist/{turtle-BI6LyfEu.js → turtle-SSc84S9m.js} +0 -0
- /package/dist/{vb-BecoBfmr.js → vb-CQ6DC3cL.js} +0 -0
- /package/dist/{vbscript-De-zpA4i.js → vbscript-Dw0gFssg.js} +0 -0
- /package/dist/{velocity-DhlYJTrD.js → velocity-BvJQyBmj.js} +0 -0
- /package/dist/{verilog-BDZgxDOW.js → verilog-CKGAvQjj.js} +0 -0
- /package/dist/{vhdl-CV0OKTbp.js → vhdl-B40_x6fM.js} +0 -0
- /package/dist/{webidl-BOM1Fs0O.js → webidl-Bi9hczCv.js} +0 -0
- /package/dist/{xquery-CltP_CGh.js → xquery-DwWUXvP3.js} +0 -0
- /package/dist/{yacas-Dch4E2Dg.js → yacas-ClUs0mmH.js} +0 -0
- /package/dist/{z80-B5Yly27o.js → z80-DPC4UGzR.js} +0 -0
- /package/dist/{zod-ChY6miG5.js → zod-mAEs2ITo.js} +0 -0
|
@@ -5,7 +5,7 @@ import { useChat } from "@ai-sdk/react";
|
|
|
5
5
|
import { storePrompt } from "@marimo-team/codemirror-ai";
|
|
6
6
|
import type { ReactCodeMirrorRef } from "@uiw/react-codemirror";
|
|
7
7
|
import { DefaultChatTransport, type ToolUIPart } from "ai";
|
|
8
|
-
import { useAtom, useAtomValue, useSetAtom } from "jotai";
|
|
8
|
+
import { useAtom, useAtomValue, useSetAtom, useStore } from "jotai";
|
|
9
9
|
import {
|
|
10
10
|
AtSignIcon,
|
|
11
11
|
BotMessageSquareIcon,
|
|
@@ -30,13 +30,19 @@ import {
|
|
|
30
30
|
import { replaceMessagesInChat } from "@/core/ai/chat-utils";
|
|
31
31
|
import { useModelChange } from "@/core/ai/config";
|
|
32
32
|
import { AiModelId, type ProviderId } from "@/core/ai/ids/ids";
|
|
33
|
+
import { useStagedAICellsActions } from "@/core/ai/staged-cells";
|
|
33
34
|
import {
|
|
34
35
|
activeChatAtom,
|
|
35
36
|
type Chat,
|
|
36
37
|
type ChatId,
|
|
37
38
|
chatStateAtom,
|
|
38
39
|
} from "@/core/ai/state";
|
|
39
|
-
import {
|
|
40
|
+
import type { ToolNotebookContext } from "@/core/ai/tools/base";
|
|
41
|
+
import {
|
|
42
|
+
type CopilotMode,
|
|
43
|
+
FRONTEND_TOOL_REGISTRY,
|
|
44
|
+
} from "@/core/ai/tools/registry";
|
|
45
|
+
import { useCellActions } from "@/core/cells/cells";
|
|
40
46
|
import { aiAtom, aiEnabledAtom } from "@/core/config/config";
|
|
41
47
|
import { DEFAULT_AI_MODEL } from "@/core/config/config-schema";
|
|
42
48
|
import { FeatureFlagged } from "@/core/config/feature-flag";
|
|
@@ -45,7 +51,6 @@ import { useRuntimeManager } from "@/core/runtime/config";
|
|
|
45
51
|
import { ErrorBanner } from "@/plugins/impl/common/error-banner";
|
|
46
52
|
import { cn } from "@/utils/cn";
|
|
47
53
|
import { Logger } from "@/utils/Logger";
|
|
48
|
-
|
|
49
54
|
import { AIModelDropdown } from "../ai/ai-model-dropdown";
|
|
50
55
|
import { useOpenSettingsToTab } from "../app-config/state";
|
|
51
56
|
import { PromptInput } from "../editor/ai/add-cell-with-ai";
|
|
@@ -301,7 +306,11 @@ const ChatInputFooter: React.FC<ChatInputFooterProps> = memo(
|
|
|
301
306
|
|
|
302
307
|
const { saveModeChange } = useModelChange();
|
|
303
308
|
|
|
304
|
-
const modeOptions
|
|
309
|
+
const modeOptions: {
|
|
310
|
+
value: CopilotMode;
|
|
311
|
+
label: string;
|
|
312
|
+
subtitle: string;
|
|
313
|
+
}[] = [
|
|
305
314
|
{
|
|
306
315
|
value: "ask",
|
|
307
316
|
label: "Ask",
|
|
@@ -313,6 +322,11 @@ const ChatInputFooter: React.FC<ChatInputFooterProps> = memo(
|
|
|
313
322
|
label: "Manual",
|
|
314
323
|
subtitle: "Pure chat, no tool usage",
|
|
315
324
|
},
|
|
325
|
+
{
|
|
326
|
+
value: "agent",
|
|
327
|
+
label: "Agent (beta)",
|
|
328
|
+
subtitle: "Use AI with access to read and write tools",
|
|
329
|
+
},
|
|
316
330
|
];
|
|
317
331
|
|
|
318
332
|
const isAttachmentSupported =
|
|
@@ -511,9 +525,20 @@ const ChatPanelBody = () => {
|
|
|
511
525
|
const fileInputRef = useRef<HTMLInputElement>(null);
|
|
512
526
|
const messagesEndRef = useRef<HTMLDivElement>(null);
|
|
513
527
|
const runtimeManager = useRuntimeManager();
|
|
514
|
-
const { invokeAiTool } = useRequestClient();
|
|
528
|
+
const { invokeAiTool, sendRun } = useRequestClient();
|
|
515
529
|
|
|
516
530
|
const activeChatId = activeChat?.id;
|
|
531
|
+
const store = useStore();
|
|
532
|
+
|
|
533
|
+
const { addStagedCell } = useStagedAICellsActions();
|
|
534
|
+
const { createNewCell, prepareForRun } = useCellActions();
|
|
535
|
+
const toolContext: ToolNotebookContext = {
|
|
536
|
+
addStagedCell,
|
|
537
|
+
createNewCell,
|
|
538
|
+
prepareForRun,
|
|
539
|
+
sendRun,
|
|
540
|
+
store,
|
|
541
|
+
};
|
|
517
542
|
|
|
518
543
|
const {
|
|
519
544
|
messages,
|
|
@@ -555,6 +580,13 @@ const ChatPanelBody = () => {
|
|
|
555
580
|
});
|
|
556
581
|
},
|
|
557
582
|
onToolCall: async ({ toolCall }) => {
|
|
583
|
+
// Dynamic tool calls will throw an error for toolName
|
|
584
|
+
// https://ai-sdk.dev/docs/ai-sdk-ui/chatbot-tool-usage#client-side-page
|
|
585
|
+
if (toolCall.dynamic) {
|
|
586
|
+
Logger.debug("Skipping dynamic tool call", toolCall);
|
|
587
|
+
return;
|
|
588
|
+
}
|
|
589
|
+
|
|
558
590
|
await handleToolCall({
|
|
559
591
|
invokeAiTool,
|
|
560
592
|
addToolResult,
|
|
@@ -563,6 +595,7 @@ const ChatPanelBody = () => {
|
|
|
563
595
|
toolCallId: toolCall.toolCallId,
|
|
564
596
|
input: toolCall.input as Record<string, never>,
|
|
565
597
|
},
|
|
598
|
+
toolContext,
|
|
566
599
|
});
|
|
567
600
|
},
|
|
568
601
|
onError: (error) => {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import type { components } from "@marimo-team/marimo-api";
|
|
4
4
|
import type { FileUIPart, ToolUIPart, UIMessage } from "ai";
|
|
5
|
+
import type { ToolNotebookContext } from "@/core/ai/tools/base";
|
|
5
6
|
import { FRONTEND_TOOL_REGISTRY } from "@/core/ai/tools/registry";
|
|
6
7
|
import type {
|
|
7
8
|
InvokeAiToolRequest,
|
|
@@ -106,8 +107,9 @@ interface AddToolResult {
|
|
|
106
107
|
|
|
107
108
|
export async function handleToolCall({
|
|
108
109
|
invokeAiTool,
|
|
109
|
-
addToolResult,
|
|
110
|
+
addToolResult, // Important that we don't await addToolResult to prevent potential deadlocks
|
|
110
111
|
toolCall,
|
|
112
|
+
toolContext,
|
|
111
113
|
}: {
|
|
112
114
|
invokeAiTool: (request: InvokeAiToolRequest) => Promise<InvokeAiToolResponse>;
|
|
113
115
|
addToolResult: (result: AddToolResult) => Promise<void>;
|
|
@@ -116,6 +118,7 @@ export async function handleToolCall({
|
|
|
116
118
|
toolCallId: string;
|
|
117
119
|
input: Record<string, never>;
|
|
118
120
|
};
|
|
121
|
+
toolContext: ToolNotebookContext;
|
|
119
122
|
}) {
|
|
120
123
|
try {
|
|
121
124
|
if (FRONTEND_TOOL_REGISTRY.has(toolCall.toolName)) {
|
|
@@ -123,6 +126,7 @@ export async function handleToolCall({
|
|
|
123
126
|
const response = await FRONTEND_TOOL_REGISTRY.invoke(
|
|
124
127
|
toolCall.toolName,
|
|
125
128
|
toolCall.input,
|
|
129
|
+
toolContext,
|
|
126
130
|
);
|
|
127
131
|
addToolResult({
|
|
128
132
|
tool: toolCall.toolName,
|
|
@@ -119,6 +119,8 @@ const ToolArgsRenderer: React.FC<{ input: unknown }> = ({ input }) => {
|
|
|
119
119
|
return null;
|
|
120
120
|
}
|
|
121
121
|
|
|
122
|
+
const isEmptyInput = isEmpty(input);
|
|
123
|
+
|
|
122
124
|
const isObject =
|
|
123
125
|
typeof input === "object" &&
|
|
124
126
|
Object.keys(input as Record<string, unknown>).length > 0;
|
|
@@ -129,7 +131,11 @@ const ToolArgsRenderer: React.FC<{ input: unknown }> = ({ input }) => {
|
|
|
129
131
|
Tool Request
|
|
130
132
|
</h3>
|
|
131
133
|
<pre className="bg-[var(--slate-2)] p-2 text-muted-foreground border border-[var(--slate-4)] rounded text-xs overflow-auto scrollbar-thin max-h-64">
|
|
132
|
-
{
|
|
134
|
+
{isEmptyInput
|
|
135
|
+
? "{}"
|
|
136
|
+
: isObject
|
|
137
|
+
? JSON.stringify(input, null, 2)
|
|
138
|
+
: String(input)}
|
|
133
139
|
</pre>
|
|
134
140
|
</div>
|
|
135
141
|
);
|
|
@@ -2,8 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
import { getDefaultStore } from "jotai";
|
|
4
4
|
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
// Mock the storage module to use our mock storage
|
|
7
|
+
vi.mock("@/utils/storage/storage", () => ({
|
|
8
|
+
availableStorage: {
|
|
9
|
+
getItem: vi.fn(),
|
|
10
|
+
setItem: vi.fn(),
|
|
11
|
+
removeItem: vi.fn(),
|
|
12
|
+
},
|
|
13
|
+
}));
|
|
14
|
+
|
|
6
15
|
import type { CellId } from "@/core/cells/ids";
|
|
16
|
+
import { availableStorage } from "@/utils/storage/storage";
|
|
7
17
|
import { ChartSchema } from "../schemas";
|
|
8
18
|
import type { TabName } from "../storage";
|
|
9
19
|
import { KEY, tabsStorageAtom } from "../storage";
|
|
@@ -12,7 +22,6 @@ import { ChartType } from "../types";
|
|
|
12
22
|
describe("Chart Transforms Storage", () => {
|
|
13
23
|
beforeEach(() => {
|
|
14
24
|
vi.clearAllMocks();
|
|
15
|
-
SetupMocks.localStorage();
|
|
16
25
|
// Reset the store before each test
|
|
17
26
|
const store = getDefaultStore();
|
|
18
27
|
store.set(tabsStorageAtom, new Map());
|
|
@@ -87,14 +96,11 @@ describe("Chart Transforms Storage", () => {
|
|
|
87
96
|
|
|
88
97
|
describe("LocalStorage integration", () => {
|
|
89
98
|
it("should call localStorage.setItem when setting data", () => {
|
|
90
|
-
// Reset the mock to ensure clean state
|
|
91
|
-
asMock(window.localStorage.setItem).mockReset();
|
|
92
|
-
|
|
93
99
|
const store = getDefaultStore();
|
|
94
100
|
const newMap = new Map();
|
|
95
101
|
store.set(tabsStorageAtom, newMap);
|
|
96
102
|
|
|
97
|
-
expect(
|
|
103
|
+
expect(availableStorage.setItem).toHaveBeenCalledWith(
|
|
98
104
|
KEY,
|
|
99
105
|
JSON.stringify([]),
|
|
100
106
|
);
|
|
@@ -48,6 +48,7 @@ const CHART_HEIGHT = 290;
|
|
|
48
48
|
|
|
49
49
|
export interface TablePanelProps {
|
|
50
50
|
cellId: CellId | null;
|
|
51
|
+
data: unknown[];
|
|
51
52
|
dataTable: JSX.Element;
|
|
52
53
|
displayHeader: boolean;
|
|
53
54
|
getDataUrl?: GetDataUrl;
|
|
@@ -56,6 +57,7 @@ export interface TablePanelProps {
|
|
|
56
57
|
|
|
57
58
|
export const TablePanel: React.FC<TablePanelProps> = ({
|
|
58
59
|
cellId,
|
|
60
|
+
data,
|
|
59
61
|
dataTable,
|
|
60
62
|
getDataUrl,
|
|
61
63
|
fieldTypes,
|
|
@@ -211,6 +213,7 @@ export const TablePanel: React.FC<TablePanelProps> = ({
|
|
|
211
213
|
return (
|
|
212
214
|
<TabsContent key={idx} value={tab.tabName} className="h-[400px] mt-1">
|
|
213
215
|
<ChartPanel
|
|
216
|
+
tableData={data}
|
|
214
217
|
chartConfig={tab.config}
|
|
215
218
|
chartType={tab.chartType}
|
|
216
219
|
saveChart={saveChart}
|
|
@@ -228,6 +231,7 @@ export const TablePanel: React.FC<TablePanelProps> = ({
|
|
|
228
231
|
const CHART_PLACEHOLDER_CODE = "X and Y columns are not set";
|
|
229
232
|
|
|
230
233
|
export const ChartPanel: React.FC<{
|
|
234
|
+
tableData: unknown[];
|
|
231
235
|
chartConfig: ChartSchemaType | null;
|
|
232
236
|
chartType: ChartType;
|
|
233
237
|
saveChart: (formValues: ChartSchemaType) => void;
|
|
@@ -235,6 +239,7 @@ export const ChartPanel: React.FC<{
|
|
|
235
239
|
getDataUrl?: GetDataUrl;
|
|
236
240
|
fieldTypes?: FieldTypesWithExternalType | null;
|
|
237
241
|
}> = ({
|
|
242
|
+
tableData,
|
|
238
243
|
chartConfig,
|
|
239
244
|
chartType,
|
|
240
245
|
saveChart,
|
|
@@ -255,7 +260,7 @@ export const ChartPanel: React.FC<{
|
|
|
255
260
|
const { ref: chartContainerRef } = useResizeObserver();
|
|
256
261
|
|
|
257
262
|
const { data, isPending, error } = useAsyncData(async () => {
|
|
258
|
-
if (!getDataUrl) {
|
|
263
|
+
if (!getDataUrl || tableData.length === 0) {
|
|
259
264
|
return [];
|
|
260
265
|
}
|
|
261
266
|
|
|
@@ -276,7 +281,8 @@ export const ChartPanel: React.FC<{
|
|
|
276
281
|
},
|
|
277
282
|
);
|
|
278
283
|
return chartData;
|
|
279
|
-
|
|
284
|
+
// Re-run when the data table changes
|
|
285
|
+
}, [tableData]);
|
|
280
286
|
|
|
281
287
|
const formValues = form.watch();
|
|
282
288
|
|
|
@@ -5,7 +5,7 @@ import { capitalize } from "lodash-es";
|
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
import type { CellId } from "@/core/cells/ids";
|
|
7
7
|
import { Logger } from "@/utils/Logger";
|
|
8
|
-
import { NotebookScopedLocalStorage } from "@/utils/
|
|
8
|
+
import { NotebookScopedLocalStorage } from "@/utils/storage/typed";
|
|
9
9
|
import type { TypedString } from "@/utils/typed";
|
|
10
10
|
import { ChartSchema, type ChartSchemaType } from "./schemas";
|
|
11
11
|
import type { ChartType } from "./types";
|
|
@@ -13,6 +13,8 @@ import type {
|
|
|
13
13
|
ColumnWrappingTableState,
|
|
14
14
|
} from "./types";
|
|
15
15
|
|
|
16
|
+
export const COLUMN_WRAPPING_STYLES = "whitespace-pre-wrap min-w-[200px]";
|
|
17
|
+
|
|
16
18
|
export const ColumnWrappingFeature: TableFeature = {
|
|
17
19
|
getInitialState: (state): ColumnWrappingTableState => {
|
|
18
20
|
return {
|
|
@@ -21,6 +21,7 @@ import { Tooltip } from "../ui/tooltip";
|
|
|
21
21
|
import { DataTableColumnHeader } from "./column-header";
|
|
22
22
|
import type { ColumnChartSpecModel } from "./column-summary/chart-spec-model";
|
|
23
23
|
import { TableColumnSummary } from "./column-summary/column-summary";
|
|
24
|
+
import { COLUMN_WRAPPING_STYLES } from "./column-wrapping/feature";
|
|
24
25
|
import { DatePopover } from "./date-popover";
|
|
25
26
|
import type { FilterType } from "./filters";
|
|
26
27
|
import { getMimeValues, MimeCell } from "./mime-cell";
|
|
@@ -315,6 +316,7 @@ const PopoutColumn = ({
|
|
|
315
316
|
rawStringValue,
|
|
316
317
|
contentClassName,
|
|
317
318
|
buttonText,
|
|
319
|
+
wrapped,
|
|
318
320
|
children,
|
|
319
321
|
}: {
|
|
320
322
|
cellStyles?: string;
|
|
@@ -322,6 +324,7 @@ const PopoutColumn = ({
|
|
|
322
324
|
rawStringValue: string;
|
|
323
325
|
contentClassName?: string;
|
|
324
326
|
buttonText?: string;
|
|
327
|
+
wrapped?: boolean;
|
|
325
328
|
children: React.ReactNode;
|
|
326
329
|
}) => {
|
|
327
330
|
return (
|
|
@@ -336,7 +339,10 @@ const PopoutColumn = ({
|
|
|
336
339
|
}}
|
|
337
340
|
>
|
|
338
341
|
<span
|
|
339
|
-
className=
|
|
342
|
+
className={cn(
|
|
343
|
+
"cursor-pointer hover:text-link",
|
|
344
|
+
wrapped && COLUMN_WRAPPING_STYLES,
|
|
345
|
+
)}
|
|
340
346
|
title={rawStringValue}
|
|
341
347
|
>
|
|
342
348
|
{rawStringValue}
|
|
@@ -408,7 +414,7 @@ function getCellStyleClass(
|
|
|
408
414
|
"truncate",
|
|
409
415
|
justify === "center" && "text-center",
|
|
410
416
|
justify === "right" && "text-right",
|
|
411
|
-
wrapped &&
|
|
417
|
+
wrapped && `${COLUMN_WRAPPING_STYLES} break-words`,
|
|
412
418
|
);
|
|
413
419
|
}
|
|
414
420
|
|
|
@@ -517,6 +523,7 @@ export function renderCellValue<TData, TValue>({
|
|
|
517
523
|
rawStringValue={stringValue}
|
|
518
524
|
contentClassName="max-h-64 overflow-auto whitespace-pre-wrap break-words text-sm"
|
|
519
525
|
buttonText="X"
|
|
526
|
+
wrapped={column.getColumnWrapping?.() === "wrap"}
|
|
520
527
|
>
|
|
521
528
|
<UrlDetector parts={parts} />
|
|
522
529
|
</PopoutColumn>
|
|
@@ -558,6 +565,7 @@ export function renderCellValue<TData, TValue>({
|
|
|
558
565
|
cellStyles={cellStyles}
|
|
559
566
|
selectCell={selectCell}
|
|
560
567
|
rawStringValue={rawStringValue}
|
|
568
|
+
wrapped={column.getColumnWrapping?.() === "wrap"}
|
|
561
569
|
>
|
|
562
570
|
<JsonOutput data={value} format="tree" className="max-h-64" />
|
|
563
571
|
</PopoutColumn>
|
|
@@ -20,6 +20,7 @@ import {
|
|
|
20
20
|
TableRow,
|
|
21
21
|
} from "@/components/ui/table";
|
|
22
22
|
import { cn } from "@/utils/cn";
|
|
23
|
+
import { COLUMN_WRAPPING_STYLES } from "./column-wrapping/feature";
|
|
23
24
|
import { CellRangeSelectionIndicator } from "./range-focus/cell-selection-indicator";
|
|
24
25
|
import { useCellRangeSelection } from "./range-focus/use-cell-range-selection";
|
|
25
26
|
import { useScrollIntoViewOnFocus } from "./range-focus/use-scroll-into-view";
|
|
@@ -130,8 +131,8 @@ export const DataTableBody = <TData,>({
|
|
|
130
131
|
className={cn(
|
|
131
132
|
"whitespace-pre truncate max-w-[300px] outline-hidden",
|
|
132
133
|
cell.column.getColumnWrapping &&
|
|
133
|
-
cell.column.getColumnWrapping() === "wrap" &&
|
|
134
|
-
|
|
134
|
+
cell.column.getColumnWrapping?.() === "wrap" &&
|
|
135
|
+
COLUMN_WRAPPING_STYLES,
|
|
135
136
|
"px-1.5 py-[0.18rem]",
|
|
136
137
|
className,
|
|
137
138
|
)}
|
|
@@ -26,8 +26,8 @@ import {
|
|
|
26
26
|
ExpandIcon,
|
|
27
27
|
} from "lucide-react";
|
|
28
28
|
import { useExpandedOutput } from "@/core/cells/outputs";
|
|
29
|
+
import { useIframeCapabilities } from "@/hooks/useIframeCapabilities";
|
|
29
30
|
import { renderHTML } from "@/plugins/core/RenderHTML";
|
|
30
|
-
import { LazyAnyLanguageCodeMirror } from "@/plugins/impl/code/LazyAnyLanguageCodeMirror";
|
|
31
31
|
import { Banner } from "@/plugins/impl/common/error-banner";
|
|
32
32
|
import type { TopLevelFacetedUnitSpec } from "@/plugins/impl/data-explorer/queries/types";
|
|
33
33
|
import { useTheme } from "@/theme/useTheme";
|
|
@@ -93,7 +93,14 @@ export const OutputRenderer: React.FC<{
|
|
|
93
93
|
typeof data === "string",
|
|
94
94
|
`Expected string data for mime=${mimetype}. Got ${typeof data}`,
|
|
95
95
|
);
|
|
96
|
-
|
|
96
|
+
// We don't sanitize HTML in text/html to allow for iframes or rich javascript content.
|
|
97
|
+
return (
|
|
98
|
+
<HtmlOutput
|
|
99
|
+
className={channel}
|
|
100
|
+
html={data}
|
|
101
|
+
alwaysSanitizeHtml={false}
|
|
102
|
+
/>
|
|
103
|
+
);
|
|
97
104
|
|
|
98
105
|
case "text/plain":
|
|
99
106
|
invariant(
|
|
@@ -124,7 +131,7 @@ export const OutputRenderer: React.FC<{
|
|
|
124
131
|
typeof data === "string",
|
|
125
132
|
`Expected string data for mime=${mimetype}. Got ${typeof data}`,
|
|
126
133
|
);
|
|
127
|
-
return renderHTML({ html: data });
|
|
134
|
+
return renderHTML({ html: data, alwaysSanitizeHtml: true });
|
|
128
135
|
|
|
129
136
|
case "video/mp4":
|
|
130
137
|
case "video/mpeg":
|
|
@@ -164,13 +171,7 @@ export const OutputRenderer: React.FC<{
|
|
|
164
171
|
`Expected string data for mime=${mimetype}. Got ${typeof data}`,
|
|
165
172
|
);
|
|
166
173
|
return (
|
|
167
|
-
<
|
|
168
|
-
theme={theme === "dark" ? "dark" : "light"}
|
|
169
|
-
value={data}
|
|
170
|
-
readOnly={true}
|
|
171
|
-
editable={false}
|
|
172
|
-
language="markdown"
|
|
173
|
-
/>
|
|
174
|
+
<HtmlOutput className={channel} html={data} alwaysSanitizeHtml={true} />
|
|
174
175
|
);
|
|
175
176
|
case "application/vnd.vegalite.v5+json":
|
|
176
177
|
case "application/vnd.vega.v5+json":
|
|
@@ -378,6 +379,7 @@ const ExpandableOutput = React.memo(
|
|
|
378
379
|
const containerRef = useRef<HTMLDivElement>(null);
|
|
379
380
|
const [isExpanded, setIsExpanded] = useExpandedOutput(cellId);
|
|
380
381
|
const [isOverflowing, setIsOverflowing] = useState(false);
|
|
382
|
+
const { hasFullscreen } = useIframeCapabilities();
|
|
381
383
|
|
|
382
384
|
// Create resize observer to detect overflow
|
|
383
385
|
useEffect(() => {
|
|
@@ -403,20 +405,22 @@ const ExpandableOutput = React.memo(
|
|
|
403
405
|
<div>
|
|
404
406
|
<div className="relative print:hidden">
|
|
405
407
|
<div className="absolute -right-9 top-1 z-1 flex flex-col gap-1">
|
|
406
|
-
|
|
407
|
-
<
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
408
|
+
{hasFullscreen && (
|
|
409
|
+
<Tooltip content="Fullscreen" side="left">
|
|
410
|
+
<Button
|
|
411
|
+
data-testid="fullscreen-output-button"
|
|
412
|
+
className="hover-action hover:bg-muted p-1 hover:border-border border border-transparent"
|
|
413
|
+
onClick={async () => {
|
|
414
|
+
await containerRef.current?.requestFullscreen();
|
|
415
|
+
}}
|
|
416
|
+
onMouseDown={Events.preventFocus}
|
|
417
|
+
size="xs"
|
|
418
|
+
variant="text"
|
|
419
|
+
>
|
|
420
|
+
<ExpandIcon className="size-4" strokeWidth={1.25} />
|
|
421
|
+
</Button>
|
|
422
|
+
</Tooltip>
|
|
423
|
+
)}
|
|
420
424
|
{(isOverflowing || isExpanded) && !forceExpand && (
|
|
421
425
|
<Button
|
|
422
426
|
data-testid="expand-output-button"
|
|
@@ -39,7 +39,11 @@ import { Switch } from "@/components/ui/switch";
|
|
|
39
39
|
import { toast } from "@/components/ui/use-toast";
|
|
40
40
|
import { aiCompletionCellAtom } from "@/core/ai/state";
|
|
41
41
|
import { maybeAddMarimoImport } from "@/core/cells/add-missing-import";
|
|
42
|
-
import {
|
|
42
|
+
import {
|
|
43
|
+
hasOnlyOneCellAtom,
|
|
44
|
+
SETUP_CELL_ID,
|
|
45
|
+
useCellActions,
|
|
46
|
+
} from "@/core/cells/cells";
|
|
43
47
|
import type { CellId } from "@/core/cells/ids";
|
|
44
48
|
import type { CellData } from "@/core/cells/types";
|
|
45
49
|
import { formatEditorViews } from "@/core/codemirror/format";
|
|
@@ -136,6 +140,8 @@ export function useCellActionButtons({ cell, closePopover }: Props) {
|
|
|
136
140
|
}
|
|
137
141
|
};
|
|
138
142
|
|
|
143
|
+
const isSetupCell = cellId === SETUP_CELL_ID;
|
|
144
|
+
|
|
139
145
|
// Actions
|
|
140
146
|
const actions: ActionButton[][] = [
|
|
141
147
|
[
|
|
@@ -181,6 +187,7 @@ export function useCellActionButtons({ cell, closePopover }: Props) {
|
|
|
181
187
|
onEnterKey={() => closePopover?.()}
|
|
182
188
|
/>
|
|
183
189
|
),
|
|
190
|
+
hidden: isSetupCell,
|
|
184
191
|
},
|
|
185
192
|
{
|
|
186
193
|
icon: <PlayIcon size={13} strokeWidth={1.5} />,
|
|
@@ -254,6 +261,7 @@ export function useCellActionButtons({ cell, closePopover }: Props) {
|
|
|
254
261
|
/>
|
|
255
262
|
),
|
|
256
263
|
handle: toggleDisabled,
|
|
264
|
+
hidden: isSetupCell,
|
|
257
265
|
},
|
|
258
266
|
{
|
|
259
267
|
icon: <XCircleIcon size={13} strokeWidth={1.5} />,
|
|
@@ -282,6 +290,7 @@ export function useCellActionButtons({ cell, closePopover }: Props) {
|
|
|
282
290
|
keepCodeAsIs: false,
|
|
283
291
|
});
|
|
284
292
|
},
|
|
293
|
+
hidden: isSetupCell,
|
|
285
294
|
},
|
|
286
295
|
{
|
|
287
296
|
icon: <DatabaseIcon size={13} strokeWidth={1.5} />,
|
|
@@ -297,6 +306,7 @@ export function useCellActionButtons({ cell, closePopover }: Props) {
|
|
|
297
306
|
keepCodeAsIs: false,
|
|
298
307
|
});
|
|
299
308
|
},
|
|
309
|
+
hidden: isSetupCell,
|
|
300
310
|
},
|
|
301
311
|
{
|
|
302
312
|
icon: <PythonIcon />,
|
|
@@ -309,6 +319,7 @@ export function useCellActionButtons({ cell, closePopover }: Props) {
|
|
|
309
319
|
maybeAddMarimoImport({ autoInstantiate, createNewCell: createCell });
|
|
310
320
|
toggleToLanguage(editorView, "python", { force: true });
|
|
311
321
|
},
|
|
322
|
+
hidden: isSetupCell,
|
|
312
323
|
},
|
|
313
324
|
],
|
|
314
325
|
|
|
@@ -324,6 +335,7 @@ export function useCellActionButtons({ cell, closePopover }: Props) {
|
|
|
324
335
|
label: "Create cell above",
|
|
325
336
|
hotkey: "cell.createAbove",
|
|
326
337
|
handle: () => createCell({ cellId, before: true }),
|
|
338
|
+
hidden: isSetupCell,
|
|
327
339
|
},
|
|
328
340
|
{
|
|
329
341
|
icon: (
|
|
@@ -341,26 +353,28 @@ export function useCellActionButtons({ cell, closePopover }: Props) {
|
|
|
341
353
|
label: "Move cell up",
|
|
342
354
|
hotkey: "cell.moveUp",
|
|
343
355
|
handle: () => moveCell({ cellId, before: true }),
|
|
356
|
+
hidden: isSetupCell,
|
|
344
357
|
},
|
|
345
358
|
{
|
|
346
359
|
icon: <ChevronDownIcon size={13} strokeWidth={1.5} />,
|
|
347
360
|
label: "Move cell down",
|
|
348
361
|
hotkey: "cell.moveDown",
|
|
349
362
|
handle: () => moveCell({ cellId, before: false }),
|
|
363
|
+
hidden: isSetupCell,
|
|
350
364
|
},
|
|
351
365
|
{
|
|
352
366
|
icon: <ChevronLeftIcon size={13} strokeWidth={1.5} />,
|
|
353
367
|
label: "Move cell left",
|
|
354
368
|
hotkey: "cell.moveLeft",
|
|
355
369
|
handle: () => moveCell({ cellId, direction: "left" }),
|
|
356
|
-
hidden: appWidth !== "columns",
|
|
370
|
+
hidden: appWidth !== "columns" || isSetupCell,
|
|
357
371
|
},
|
|
358
372
|
{
|
|
359
373
|
icon: <ChevronRightIcon size={13} strokeWidth={1.5} />,
|
|
360
374
|
label: "Move cell right",
|
|
361
375
|
hotkey: "cell.moveRight",
|
|
362
376
|
handle: () => moveCell({ cellId, direction: "right" }),
|
|
363
|
-
hidden: appWidth !== "columns",
|
|
377
|
+
hidden: appWidth !== "columns" || isSetupCell,
|
|
364
378
|
},
|
|
365
379
|
{
|
|
366
380
|
icon: <ChevronsUpIcon size={13} strokeWidth={1.5} />,
|
|
@@ -369,6 +383,7 @@ export function useCellActionButtons({ cell, closePopover }: Props) {
|
|
|
369
383
|
// When using the cell menu, likely the user doesn't want to scroll
|
|
370
384
|
// and instead just wants to get the cell out of the way
|
|
371
385
|
handle: () => sendToTop({ cellId, scroll: false }),
|
|
386
|
+
hidden: isSetupCell,
|
|
372
387
|
},
|
|
373
388
|
{
|
|
374
389
|
icon: <ChevronsDownIcon size={13} strokeWidth={1.5} />,
|
|
@@ -377,13 +392,14 @@ export function useCellActionButtons({ cell, closePopover }: Props) {
|
|
|
377
392
|
// When using the cell menu, likely the user doesn't want to scroll
|
|
378
393
|
// and instead just wants to get the cell out of the way
|
|
379
394
|
handle: () => sendToBottom({ cellId, scroll: false }),
|
|
395
|
+
hidden: isSetupCell,
|
|
380
396
|
},
|
|
381
397
|
{
|
|
382
398
|
icon: <Columns2Icon size={13} strokeWidth={1.5} />,
|
|
383
399
|
label: "Break into new column",
|
|
384
400
|
hotkey: "cell.addColumnBreakpoint",
|
|
385
|
-
hidden: appWidth !== "columns",
|
|
386
401
|
handle: () => addColumnBreakpoint({ cellId }),
|
|
402
|
+
hidden: appWidth !== "columns" || isSetupCell,
|
|
387
403
|
},
|
|
388
404
|
],
|
|
389
405
|
|
|
@@ -44,6 +44,8 @@ import {
|
|
|
44
44
|
} from "@/components/ui/dropdown-menu";
|
|
45
45
|
import { toast } from "@/components/ui/use-toast";
|
|
46
46
|
import { stagedAICellsAtom, useStagedCells } from "@/core/ai/staged-cells";
|
|
47
|
+
import type { ToolNotebookContext } from "@/core/ai/tools/base";
|
|
48
|
+
import { useCellActions } from "@/core/cells/cells";
|
|
47
49
|
import { resourceExtension } from "@/core/codemirror/ai/resources";
|
|
48
50
|
import { useRequestClient } from "@/core/network/requests";
|
|
49
51
|
import type { AiCompletionRequest } from "@/core/network/types";
|
|
@@ -51,7 +53,8 @@ import { useRuntimeManager } from "@/core/runtime/config";
|
|
|
51
53
|
import { useTheme } from "@/theme/useTheme";
|
|
52
54
|
import { cn } from "@/utils/cn";
|
|
53
55
|
import { prettyError } from "@/utils/errors";
|
|
54
|
-
import {
|
|
56
|
+
import { jotaiJsonStorage } from "@/utils/storage/jotai";
|
|
57
|
+
import { ZodLocalStorage } from "@/utils/storage/typed";
|
|
55
58
|
import { PythonIcon } from "../cell/code/icons";
|
|
56
59
|
import {
|
|
57
60
|
CompletionActions,
|
|
@@ -64,6 +67,7 @@ import { StreamingChunkTransport } from "./transport/chat-transport";
|
|
|
64
67
|
const languageAtom = atomWithStorage<"python" | "sql">(
|
|
65
68
|
"marimo:ai-language",
|
|
66
69
|
"python",
|
|
70
|
+
jotaiJsonStorage,
|
|
67
71
|
);
|
|
68
72
|
|
|
69
73
|
const KEY = "marimo:ai-prompt-history";
|
|
@@ -79,15 +83,24 @@ export const AddCellWithAI: React.FC<{
|
|
|
79
83
|
const store = useStore();
|
|
80
84
|
const [input, setInput] = useState("");
|
|
81
85
|
|
|
82
|
-
const { deleteAllStagedCells, clearStagedCells, onStream } =
|
|
86
|
+
const { deleteAllStagedCells, clearStagedCells, onStream, addStagedCell } =
|
|
83
87
|
useStagedCells(store);
|
|
84
88
|
const [language, setLanguage] = useAtom(languageAtom);
|
|
85
89
|
const runtimeManager = useRuntimeManager();
|
|
86
|
-
const { invokeAiTool } = useRequestClient();
|
|
90
|
+
const { invokeAiTool, sendRun } = useRequestClient();
|
|
87
91
|
|
|
88
92
|
const stagedAICells = useAtomValue(stagedAICellsAtom);
|
|
89
93
|
const inputRef = useRef<ReactCodeMirrorRef>(null);
|
|
90
94
|
|
|
95
|
+
const { createNewCell, prepareForRun } = useCellActions();
|
|
96
|
+
const toolContext: ToolNotebookContext = {
|
|
97
|
+
store,
|
|
98
|
+
addStagedCell,
|
|
99
|
+
createNewCell,
|
|
100
|
+
prepareForRun,
|
|
101
|
+
sendRun,
|
|
102
|
+
};
|
|
103
|
+
|
|
91
104
|
const { sendMessage, stop, status, addToolResult } = useChat({
|
|
92
105
|
// Throttle the messages and data updates to 100ms
|
|
93
106
|
experimental_throttle: 100,
|
|
@@ -125,6 +138,7 @@ export const AddCellWithAI: React.FC<{
|
|
|
125
138
|
toolCallId: toolCall.toolCallId,
|
|
126
139
|
input: toolCall.input as Record<string, never>,
|
|
127
140
|
},
|
|
141
|
+
toolContext,
|
|
128
142
|
});
|
|
129
143
|
},
|
|
130
144
|
onError: (error) => {
|