@marimo-team/islands 0.16.5 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ConnectedDataExplorerComponent-D96i9G-X.js → ConnectedDataExplorerComponent-DJEUH6Bb.js} +78 -100
- package/dist/{_baseIsEqual-oN7pRNcM.js → _baseIsEqual-CN4oFUZ4.js} +20 -20
- package/dist/{_basePickBy-CYvzhRjy.js → _basePickBy-CzSvE_-f.js} +3 -3
- package/dist/{_baseProperty-DGUdIBuu.js → _baseProperty-DbbUiyUD.js} +5 -5
- package/dist/{_baseUniq-B5gfSl8S.js → _baseUniq-DwoC-LVO.js} +4 -4
- package/dist/any-language-editor-CEXn1vFs.js +156 -0
- package/dist/apl-DuVfHsPc.js +4 -0
- package/dist/architecture-O4VJ6CD3-lp-opOaL.js +21 -0
- package/dist/{architectureDiagram-W76B3OCA-DkEhipkW.js → architectureDiagram-W76B3OCA-CoBORy6u.js} +34 -34
- package/dist/asciiarmor-qIVWsi4F.js +4 -0
- package/dist/asn1-BjPqARr7.js +4 -0
- package/dist/assets/__vite-browser-external-lX-sn9m2.js +1 -0
- package/dist/assets/worker-vPn7gxWj.js +54 -0
- package/dist/{blockDiagram-QIGZ2CNN-DZOqLMYa.js → blockDiagram-QIGZ2CNN-0yzoLIar.js} +75 -86
- package/dist/brainfuck-DPGTVfkE.js +4 -0
- package/dist/{button-CEcjneWG.js → button-DcnBVpVa.js} +11 -14
- package/dist/{c4Diagram-FPNF74CW-DVaR7c9q.js → c4Diagram-FPNF74CW-CKsIA_DD.js} +27 -51
- package/dist/{channel-Uh0KpgGW.js → channel-3LVvQZcD.js} +1 -1
- package/dist/{check-BK9zDfQk.js → check-D7ifz5op.js} +1 -1
- package/dist/{chunk-3AY6CYHV-Dk2R2-S1.js → chunk-3AY6CYHV-B2C-aVc3.js} +35 -35
- package/dist/{chunk-4BX2VUAB-CqO6zUIz.js → chunk-4BX2VUAB-DEd4VI9L.js} +1 -1
- package/dist/{chunk-4KMFLZZN-CloTfTwP.js → chunk-4KMFLZZN-DnvP3O4K.js} +216 -325
- package/dist/{chunk-55IACEB6-I0rmqTua.js → chunk-55IACEB6-BcCzwOOl.js} +1 -1
- package/dist/{chunk-6OXUPJBA-BuROSTmo.js → chunk-6OXUPJBA-eNAAfJ3Q.js} +7 -7
- package/dist/{chunk-7GE3RBXV-B1-tsIPP.js → chunk-7GE3RBXV-CSAeQvLz.js} +1 -1
- package/dist/{chunk-ABZYJK2D-CLlso8tj.js → chunk-ABZYJK2D-CZcb_1iM.js} +16 -20
- package/dist/{chunk-BN7GFLIU-Db2-FjLn.js → chunk-BN7GFLIU-pBc5O5Rh.js} +1 -1
- package/dist/{chunk-CVBHYZKI-BONeiloK.js → chunk-CVBHYZKI-CivHZg9P.js} +3 -3
- package/dist/{chunk-CXMOBAN2-U9GJSP1d.js → chunk-CXMOBAN2-Dd0E6qb0.js} +46 -54
- package/dist/chunk-EXTU4WIE-GQ2ZWfJo.js +10 -0
- package/dist/{chunk-FMBD7UC4-DyV3BR_I.js → chunk-FMBD7UC4-C6YcisV6.js} +1 -1
- package/dist/{chunk-JA3XYJ7Z-C9A1076P.js → chunk-JA3XYJ7Z-DYeQaT57.js} +21 -25
- package/dist/{chunk-JEIROHC2-BGnFkSVq.js → chunk-JEIROHC2-B-EZMP4V.js} +1 -1
- package/dist/{chunk-K7UQS3LO-033LOsjK.js → chunk-K7UQS3LO-DENzlS-M.js} +7 -7
- package/dist/{chunk-KMC2YHZD-DT4Sq4Ld.js → chunk-KMC2YHZD-SckhHdEh.js} +1 -1
- package/dist/{chunk-QN33PNHL-gs44MZla.js → chunk-QN33PNHL-Cjq5b604.js} +2 -2
- package/dist/{chunk-QYVHNE3D-B8BO1AnT.js → chunk-QYVHNE3D-CNUuivie.js} +3 -4
- package/dist/{chunk-QZHKN3VN-CeN_GkU6.js → chunk-QZHKN3VN-DugEU_bA.js} +1 -1
- package/dist/chunk-S3R3BYOJ-itCT6Vif.js +380 -0
- package/dist/{chunk-T44TD3VJ-BwzD6YE0.js → chunk-T44TD3VJ-BLdfTX8J.js} +1 -1
- package/dist/{chunk-TVAH2DTR-Bi6jpQJQ.js → chunk-TVAH2DTR-BOnwF9d8.js} +7 -8
- package/dist/{chunk-TZMSLE5B-D8klz2H_.js → chunk-TZMSLE5B-DGs66AlL.js} +4 -5
- package/dist/{chunk-WFRQ32O7-CzSwSlN0.js → chunk-WFRQ32O7-CPsipkmJ.js} +1 -1
- package/dist/{chunk-WFWHJNB7-DN_cavM6.js → chunk-WFWHJNB7-Cmed18Pk.js} +1 -1
- package/dist/{chunk-XRWGC2XP-Bb5eGNM2.js → chunk-XRWGC2XP-DH5GDaY8.js} +1 -1
- package/dist/{chunk-ZPAFE4SF-S5UYNb0V.js → chunk-ZPAFE4SF-DPDwaqZm.js} +22 -22
- package/dist/classDiagram-KNZD7YFC-azuS_99k.js +39 -0
- package/dist/classDiagram-v2-RKCZMP56-CQpyQQOR.js +39 -0
- package/dist/{click-outside-container-DE4e7p1p.js → click-outside-container-CL_FkgGY.js} +7 -12
- package/dist/{clike-CxAz4p9E.js → clike-DYfRWWXk.js} +1 -1
- package/dist/{clike-Cg_DBrJ0.js → clike-bzZTreP4.js} +1 -1
- package/dist/clojure-ATksAecl.js +4 -0
- package/dist/{clone-Dk4FkKH0.js → clone-Msbhmn2a.js} +1 -1
- package/dist/cmake-CWylaz2C.js +4 -0
- package/dist/cobol-BiLLCZIQ.js +4 -0
- package/dist/coffeescript-Ca4jipi8.js +4 -0
- package/dist/commonlisp-BwFjyEC7.js +4 -0
- package/dist/{constants-Cjd_3kwd.js → constants-BCOEQoEQ.js} +3 -3
- package/dist/{copy-C5RFg7ok.js → copy-BkZ8PkBM.js} +6 -2
- package/dist/{cose-bilkent-S5V4N54A-B3iOTGu5.js → cose-bilkent-S5V4N54A-BZnbwyVD.js} +20 -20
- package/dist/crystal-BhUsQHbh.js +4 -0
- package/dist/css-Cf4wlIyV.js +5 -0
- package/dist/cypher-Dj8Hzgxa.js +4 -0
- package/dist/{cytoscape.esm-DTDV0Nbj.js → cytoscape.esm-BTpRoPd2.js} +586 -661
- package/dist/d-DZI7tbTy.js +4 -0
- package/dist/{dagre-5GWH7T2D-KM4Z11yT.js → dagre-5GWH7T2D-BGaiSZZO.js} +32 -37
- package/dist/{dagre-B0u1urxE.js → dagre-pyfDIOWJ.js} +57 -76
- package/dist/data-grid-overlay-editor-867aBz0Y.js +133 -0
- package/dist/{diagram-N5W7TBWH-CtO7az4G.js → diagram-N5W7TBWH-CzLE0jZB.js} +35 -51
- package/dist/diagram-QEK2KX5R-AGS60xEZ.js +245 -0
- package/dist/{diagram-S2PKOQOG-CiXElLNQ.js → diagram-S2PKOQOG-BxRoG6yW.js} +28 -28
- package/dist/diff-WQISUHG5.js +4 -0
- package/dist/{dist-CdE2C2In.js → dist-2Ne-33Xy.js} +15 -20
- package/dist/{dist-DKFaZRVk.js → dist-B0YD1aXi.js} +2 -2
- package/dist/{dist-DBhzmFyH.js → dist-B1Dv8Sdk.js} +3 -3
- package/dist/{dist-CGIZPq3J.js → dist-BFkr6kAQ.js} +2 -2
- package/dist/{dist-DL_ci7Yc.js → dist-BL2DSY0P.js} +1 -1
- package/dist/dist-BawZu0ix.js +10 -0
- package/dist/{dist-Bar1QnNM.js → dist-BhVFggab.js} +3 -3
- package/dist/{textile-Cy55fYGC.js → dist-BiOF7987.js} +4 -2
- package/dist/{dist-BQmQQqFH.js → dist-BpzZrRd6.js} +1 -1
- package/dist/{dist-CxD5E6Sh.js → dist-C7zhQ7K0.js} +24 -22
- package/dist/{dist-BqgkUnEN.js → dist-CBhnQKQ4.js} +3 -3
- package/dist/{dist-Dzk1C8l5.js → dist-CId4IPXu.js} +10 -13
- package/dist/{dist-CUnh_3Ii.js → dist-CYhQCVru.js} +2 -2
- package/dist/{dist-BBlFk9ki.js → dist-CZq5-ZyD.js} +1 -1
- package/dist/{dist-elblfNXO.js → dist-Cacac5HV.js} +2 -2
- package/dist/{dist-CChOkSUg.js → dist-CfQHSIQC.js} +3 -3
- package/dist/{dist-JCAky9ND.js → dist-CkvGMBAS.js} +17 -22
- package/dist/dist-Cs3McXEj.js +6 -0
- package/dist/{dist-o7fhJC7U.js → dist-CvyfRaIr.js} +3 -3
- package/dist/{dist-CZfRM7pE.js → dist-D-3fICwh.js} +2 -2
- package/dist/dist-D3aaithT.js +6 -0
- package/dist/{dist-CutXTm8t.js → dist-DBhEu3-F.js} +1 -1
- package/dist/dist-DELcMSpJ.js +6 -0
- package/dist/{dist-C7ASiFxI.js → dist-DMxl6Qbu.js} +273 -263
- package/dist/{dist-CLvpViod.js → dist-DS6nuHYK.js} +2 -3
- package/dist/dist-Dgts3WXd.js +6 -0
- package/dist/{dist--I6Htnlv.js → dist-DlHkZUnY.js} +5 -5
- package/dist/dist-Doiq_KIP.js +15 -0
- package/dist/dist-DtpUiDG_.js +6 -0
- package/dist/{dist-DzOpMdwb.js → dist-NUdHX0XE.js} +4 -4
- package/dist/{dist-C3WYsf4K.js → dist-PGgOcwbF.js} +4 -10
- package/dist/{dist-DNnYAdRE.js → dist-RdxOJbBw.js} +2 -2
- package/dist/{dist-BEvIw5Nh.js → dist-RwqAqkpG.js} +1 -1
- package/dist/dist-ZjnJq_jD.js +10 -0
- package/dist/{dist-CbRkrKrP.js → dist-biZ846D9.js} +5 -5
- package/dist/{dist-DW9er3Zq.js → dist-d5NxvX2s.js} +44 -23
- package/dist/{dist-C3QUag__.js → dist-ivwkJchV.js} +3 -3
- package/dist/dist-mof3iuBu.js +12 -0
- package/dist/{dist-Cib4sGDA.js → dist-reo2kYlN.js} +2 -2
- package/dist/{dist-BZBitvuL.js → dist-wHVprCkn.js} +1 -1
- package/dist/{dist-C5zMs_n5.js → dist-y8uoXYaE.js} +3 -3
- package/dist/{dist-DPF5TTUg.js → dist-z_iuDES7.js} +126 -115
- package/dist/{dockerfile-Dum_1b-5.js → dockerfile-sZMPcXVY.js} +1 -1
- package/dist/dtd-B2M8dhfC.js +4 -0
- package/dist/dylan-CU3Vt8SC.js +4 -0
- package/dist/ecl-B8ESAVq4.js +4 -0
- package/dist/eiffel-DDfMIKeA.js +4 -0
- package/dist/elm-Bj6rj8jf.js +4 -0
- package/dist/{erDiagram-AWTI2OKA-ZTIl9iQO.js → erDiagram-AWTI2OKA-CTxzb-U8.js} +20 -20
- package/dist/erlang-BxyshZUq.js +4 -0
- package/dist/{error-banner-OQIGTqFR.js → error-banner-npbEfanI.js} +13 -13
- package/dist/{esm-DxFkg7a6.js → esm-BdiY4QsX.js} +1528 -1492
- package/dist/{esm-d0g2RsOH.js → esm-CAWW9sum.js} +6 -8
- package/dist/{esm-1_Mp6VD2.js → esm-YY5zh7KV.js} +324 -395
- package/dist/{esm-BO9n_s6u.js → esm-svAVli9f.js} +5 -5
- package/dist/{factor-CdgiDGiu.js → factor-CRFTmP_a.js} +1 -1
- package/dist/factor-CYk6XT8r.js +5 -0
- package/dist/{flowDiagram-PVAE7QVJ-DsbofOzu.js → flowDiagram-PVAE7QVJ-Dck2hiJe.js} +22 -22
- package/dist/{formats-ChrNdVdJ.js → formats-BnqXUb1V.js} +13 -17
- package/dist/forth-fcoJkd-f.js +4 -0
- package/dist/fortran-IxZHu4wc.js +4 -0
- package/dist/{fullscreen-D1yTiBlu.js → fullscreen-blsKUrtN.js} +741 -744
- package/dist/{ganttDiagram-OWAHRB6G-FnCH1Yj3.js → ganttDiagram-OWAHRB6G-AWzfzpup.js} +9 -9
- package/dist/gas-B8rmKcim.js +4 -0
- package/dist/gherkin-BTm-jIdJ.js +4 -0
- package/dist/gitGraph-ZV4HHKMB-DFg_OLQb.js +21 -0
- package/dist/{gitGraphDiagram-NY62KEGX-B0wvMNqU.js → gitGraphDiagram-NY62KEGX-GyNboWSV.js} +31 -34
- package/dist/{glide-data-editor-D_kEsT07.js → glide-data-editor-DHuN8kQ8.js} +1650 -1720
- package/dist/{graphlib-BGmr7CYF.js → graphlib-hb3zmtVD.js} +5 -5
- package/dist/groovy-01kRHFMD.js +4 -0
- package/dist/haskell-B3PhE05w.js +4 -0
- package/dist/haxe-DEoAm8oA.js +5 -0
- package/dist/{hotkeys-yFrUwyJK.js → hotkeys-Ct2T3e9O.js} +4 -7
- package/dist/idl-DsDJU9cV.js +4 -0
- package/dist/info-63CPKGFF-D3DZmDBa.js +21 -0
- package/dist/infoDiagram-STP46IZ2-ec08vi_U.js +44 -0
- package/dist/{isArrayLikeObject-DiDsNamC.js → isArrayLikeObject-BlvK28do.js} +3 -5
- package/dist/{isEmpty-BBG-u1GM.js → isEmpty--odfYjh1.js} +2 -2
- package/dist/{isSymbol-BxF-_8BA.js → isSymbol-Cb1f2HgO.js} +1 -1
- package/dist/{javascript-Dfq1qI35.js → javascript-BfCTmOnk.js} +2 -2
- package/dist/javascript-gwczVhuU.js +5 -0
- package/dist/jinja2-AkZRdFk3.js +4 -0
- package/dist/{journeyDiagram-BIP6EPQ6-B3PotfAW.js → journeyDiagram-BIP6EPQ6-TmXYCUbT.js} +23 -24
- package/dist/julia-_s6qe3bf.js +4 -0
- package/dist/{kanban-definition-6OIFK2YF-BTrQZ3LN.js → kanban-definition-6OIFK2YF-B6ozleHo.js} +15 -15
- package/dist/{katex-dN__NFdn.js → katex-mPzRsXEy.js} +1 -1
- package/dist/{katex-BE4xflfm.js → katex-mkWmhPUh.js} +149 -173
- package/dist/{label-BinTsX-u.js → label-VVRKZmrP.js} +21 -24
- package/dist/{linear-DyTdUIqX.js → linear-iebAbJVD.js} +1 -1
- package/dist/livescript-CwPHQdv5.js +4 -0
- package/dist/{loader-Dijti3y4.js → loader-CM0VALo9.js} +19 -26
- package/dist/lua-s7nRxkCP.js +4 -0
- package/dist/main.js +8161 -8431
- package/dist/{marked.esm-3RjvXPoO.js → marked.esm-DJM8la36.js} +5 -5
- package/dist/mathematica-Ci36yd1q.js +4 -0
- package/dist/mbox-DbOYMNCO.js +4 -0
- package/dist/{memoize-Dq87l1O_.js → memoize-DYoRBSLn.js} +1 -1
- package/dist/{merge-BPDCIm8P.js → merge-BjuR6j_w.js} +1 -1
- package/dist/{mermaid-MWiyXDcI.js → mermaid-YPPMBmhk.js} +58 -76
- package/dist/{mermaid-parser.core-CSFx6MQ7.js → mermaid-parser.core-BLkyTSZj.js} +8 -8
- package/dist/{mhchem-DZ68WS0G.js → mhchem-Dw7wvXtr.js} +1 -1
- package/dist/{min-BzhKOmZo.js → min-B_i2ahn4.js} +7 -7
- package/dist/{mindmap-definition-Q6HEUPPD-9hhnrO1k.js → mindmap-definition-Q6HEUPPD-F6-JnXwq.js} +17 -17
- package/dist/mirc-VmNe8AwF.js +4 -0
- package/dist/mllike-BdD7SJEa.js +6 -0
- package/dist/modelica-BA4VqzC3.js +4 -0
- package/dist/mscgen-DF-5WHJm.js +6 -0
- package/dist/mumps-c_Uia_QN.js +4 -0
- package/dist/{node-sql-parser-13oju30e.js → node-sql-parser-BqKV-TpL.js} +14343 -14351
- package/dist/{now-DVBcRCoE.js → now-CwRqw0nS.js} +1 -1
- package/dist/nsis-BAANGODV.js +5 -0
- package/dist/{nsis-BW6_XagK.js → nsis-BWJEeUyS.js} +1 -1
- package/dist/ntriples-Bslqh2Ki.js +4 -0
- package/dist/{number-overlay-editor-D1YdiOrm.js → number-overlay-editor-CeyruAX4.js} +17 -23
- package/dist/octave-DYn5ltia.js +4 -0
- package/dist/oz-B_N-StZq.js +4 -0
- package/dist/packet-HUATNLJX-CkqjFdAv.js +21 -0
- package/dist/pascal-DU4CtAUu.js +4 -0
- package/dist/perl-Bae6k32u.js +4 -0
- package/dist/pie-WTHONI2E-D0rWwX5P.js +21 -0
- package/dist/{pieDiagram-ADFJNKIX-CSBC0ZgF.js → pieDiagram-ADFJNKIX-C5dSQVCn.js} +28 -28
- package/dist/pig-DSIxUEgX.js +4 -0
- package/dist/powershell-31lcPgIF.js +4 -0
- package/dist/powershell-BZx53Ujw.js +236 -0
- package/dist/properties-lmYbntDG.js +4 -0
- package/dist/protobuf-BTYoCEpV.js +4 -0
- package/dist/pug-DMFM7zzO.js +5 -0
- package/dist/{pug-Bmups_z0.js → pug-PJh82u1M.js} +1 -1
- package/dist/puppet-B0ub07d-.js +4 -0
- package/dist/python-C4jT87Nt.js +5 -0
- package/dist/{q-BzWcnVri.js → q-CMoUHJ5Q.js} +3 -2
- package/dist/q-YbPYlqRI.js +4 -0
- package/dist/{quadrantDiagram-LMRXKWRM-h7nHf8xG.js → quadrantDiagram-LMRXKWRM-DlahxNiy.js} +7 -7
- package/dist/r-OfNu6HAI.js +4 -0
- package/dist/radar-NJJJXTRR-Bxqv4O5a.js +21 -0
- package/dist/{range-CgK0-PEw.js → range-DxfkexCE.js} +3 -3
- package/dist/{react-plotly-BZakcxdv.js → react-plotly-D_IAfR8f.js} +4364 -4705
- package/dist/{requirementDiagram-4UW4RH46-BGEurQYq.js → requirementDiagram-4UW4RH46-DTkinyvU.js} +17 -17
- package/dist/rpm-D_3b5peD.js +5 -0
- package/dist/ruby-CehsJy_T.js +4 -0
- package/dist/{sankeyDiagram-GR3RE2ED-CxeJ_jfl.js → sankeyDiagram-GR3RE2ED-CsLnEnnq.js} +3 -3
- package/dist/sas-DwQHzPoF.js +4 -0
- package/dist/scheme-B6ArxiQu.js +4 -0
- package/dist/{sequenceDiagram-C3RYC4MD-CbFxwyr_.js → sequenceDiagram-C3RYC4MD-BdEOR6SC.js} +20 -30
- package/dist/shell-AHmQgDfc.js +4 -0
- package/dist/sieve-CgodKOcx.js +4 -0
- package/dist/{simple-mode-Cgyya8F-.js → simple-mode-BP3Jd4vf.js} +1 -1
- package/dist/{slides-component-BEyG25AH.js → slides-component-2bbal1YJ.js} +24 -46
- package/dist/smalltalk-BeFzDkbo.js +4 -0
- package/dist/sparql-BWxq-Lnx.js +4 -0
- package/dist/{src-BNNJRxz3.js → src-DZkaBUmt.js} +6 -6
- package/dist/{stateDiagram-KXAO66HF-A61bMf29.js → stateDiagram-KXAO66HF-DQLH2jhP.js} +39 -41
- package/dist/stateDiagram-v2-UMBNRL4Z-D9v8fKjF.js +38 -0
- package/dist/stex-Dvaq0qsm.js +5 -0
- package/dist/style.css +1 -1
- package/dist/stylus-Ge0ofWlZ.js +4 -0
- package/dist/swift-CjQfbVxV.js +4 -0
- package/dist/tcl-CAGDF11K.js +4 -0
- package/dist/textile-CrXreJtf.js +4 -0
- package/dist/{time-D3tzCqJ6.js → time-CFkXkVrt.js} +1 -1
- package/dist/{timeline-definition-XQNQX7LJ-BwdsB7CR.js → timeline-definition-XQNQX7LJ-bToVq14i.js} +4 -5
- package/dist/{timer-D3Zlu9ow.js → timer-CzOhIJuk.js} +2 -2
- package/dist/{toNumber-efKT08hh.js → toNumber-EFF1Z9T1.js} +2 -2
- package/dist/{toString-BvCd3yJc.js → toString-C2mCkasT.js} +2 -2
- package/dist/toml-AdLXKwEi.js +4 -0
- package/dist/{toml-CIUkU1CP.js → toml-eSl4PUAH.js} +6 -2
- package/dist/treemap-75Q7IDZK-Da9Jv6a_.js +21 -0
- package/dist/troff-C-LaM2ex.js +4 -0
- package/dist/ttcn-DTclUi6T.js +4 -0
- package/dist/ttcn-cfg-BtBPbmLX.js +4 -0
- package/dist/turtle-BODDDg5O.js +4 -0
- package/dist/{types-1X1uZB4y.js → types-CRXV0KD5.js} +84 -95
- package/dist/{useAsyncData-C4IqQK0g.js → useAsyncData-uMVTsDI9.js} +1 -1
- package/dist/{useDateFormatter-BCsBqetx.js → useDateFormatter-Dcz7jstn.js} +6 -6
- package/dist/{useTheme-C2pgJzDH.js → useTheme-NbEx-ZNV.js} +13 -10
- package/dist/vb-Cb1HQHii.js +4 -0
- package/dist/vbscript-CpXOP4wZ.js +4 -0
- package/dist/{vega-component-Cv4J8CHz.js → vega-component-hegVmfuS.js} +21 -21
- package/dist/{vega-loader.browser.module-Bi3ttvdj.js → vega-loader.browser.module-DcW8jnKp.js} +1 -2
- package/dist/velocity-Dz0rBQIk.js +4 -0
- package/dist/verilog-6Di9aLKw.js +4 -0
- package/dist/vhdl-BRNesXYc.js +4 -0
- package/dist/webidl-BpRNYIYn.js +4 -0
- package/dist/xquery-DXWcJ7b6.js +4 -0
- package/dist/{xychartDiagram-6GGTOJPD-BJRRi5HC.js → xychartDiagram-6GGTOJPD-C7Bhm_yt.js} +12 -13
- package/dist/yacas-DbSARPz4.js +4 -0
- package/dist/z80-DzslPj_l.js +4 -0
- package/dist/{zod-UPQf9SGn.js → zod-ChY6miG5.js} +71 -81
- package/package.json +12 -12
- package/src/__mocks__/requests.ts +2 -0
- package/src/components/app-config/user-config-form.tsx +29 -25
- package/src/components/chat/chat-utils.ts +11 -4
- package/src/components/data-table/__tests__/header-items.test.tsx +117 -0
- package/src/components/data-table/column-header.tsx +4 -2
- package/src/components/data-table/columns.tsx +2 -1
- package/src/components/data-table/data-table.tsx +7 -2
- package/src/components/data-table/header-items.tsx +63 -10
- package/src/components/dependency-graph/custom-node.tsx +11 -11
- package/src/components/dependency-graph/elements.ts +9 -4
- package/src/components/dependency-graph/panels.tsx +6 -4
- package/src/components/editor/Output.tsx +6 -1
- package/src/components/editor/ai/ai-completion-editor.tsx +135 -5
- package/src/components/editor/ai/completion-handlers.tsx +106 -22
- package/src/components/editor/cell/code/cell-editor.tsx +5 -0
- package/src/components/editor/chrome/panels/cache-panel.tsx +216 -0
- package/src/components/editor/chrome/panels/empty-state.tsx +3 -1
- package/src/components/editor/chrome/types.ts +66 -22
- package/src/components/editor/chrome/wrapper/app-chrome.tsx +2 -0
- package/src/components/editor/errors/auto-fix.tsx +138 -32
- package/src/components/editor/errors/fix-mode.ts +15 -0
- package/src/components/editor/navigation/__tests__/clipboard.test.ts +0 -5
- package/src/components/editor/navigation/clipboard.ts +2 -1
- package/src/components/editor/notebook-cell.tsx +20 -7
- package/src/components/editor/output/ConsoleOutput.tsx +27 -33
- package/src/components/editor/output/JsonOutput.tsx +9 -0
- package/src/components/editor/output/MarimoTracebackOutput.tsx +10 -7
- package/src/components/editor/output/__tests__/json-output.test.ts +43 -0
- package/src/components/editor/package-alert.tsx +3 -0
- package/src/components/forms/__tests__/form-utils.test.ts +4 -2
- package/src/components/icons/copy-icon.tsx +11 -5
- package/src/components/shortcuts/renderShortcut.tsx +3 -1
- package/src/components/ui/button.tsx +2 -0
- package/src/components/ui/confirmation-button.tsx +85 -0
- package/src/components/ui/switch.tsx +2 -0
- package/src/core/ai/context/providers/__tests__/datasource.test.ts +9 -1
- package/src/core/ai/context/providers/datasource.ts +25 -1
- package/src/core/ai/state.ts +6 -3
- package/src/core/ai/tools/__tests__/registry.test.ts +33 -8
- package/src/core/ai/tools/base.ts +81 -1
- package/src/core/ai/tools/registry.ts +36 -10
- package/src/core/ai/tools/sample-tool.ts +44 -8
- package/src/core/cache/requests.ts +5 -0
- package/src/core/cells/cells.ts +1 -1
- package/src/core/codemirror/__tests__/__snapshots__/setup.test.ts.snap +2 -0
- package/src/core/codemirror/__tests__/replace-editor-content.test.ts +336 -0
- package/src/core/codemirror/find-replace/navigate.ts +2 -2
- package/src/core/codemirror/format.ts +2 -9
- package/src/core/codemirror/language/__tests__/sql.test.ts +24 -6
- package/src/core/codemirror/language/languages/python.ts +1 -3
- package/src/core/codemirror/language/languages/sql/sql.ts +23 -13
- package/src/core/codemirror/language/panel/panel.tsx +1 -6
- package/src/core/codemirror/language/utils.ts +3 -8
- package/src/core/codemirror/lsp/__tests__/notebook-lsp.test.ts +21 -14
- package/src/core/codemirror/lsp/federated-lsp.ts +20 -9
- package/src/core/codemirror/lsp/notebook-lsp.ts +35 -29
- package/src/core/codemirror/lsp/types.ts +0 -13
- package/src/core/codemirror/replace-editor-content.ts +87 -0
- package/src/core/config/__tests__/config-schema.test.ts +3 -0
- package/src/core/config/config-schema.ts +8 -0
- package/src/core/config/feature-flag.tsx +2 -4
- package/src/core/errors/__tests__/errors.test.ts +1 -0
- package/src/core/errors/errors.ts +20 -6
- package/src/core/islands/bridge.ts +2 -0
- package/src/core/islands/main.ts +4 -0
- package/src/core/kernel/messages.ts +1 -0
- package/src/core/network/requests-network.ts +14 -0
- package/src/core/network/requests-static.ts +2 -0
- package/src/core/network/requests-toasting.ts +2 -0
- package/src/core/network/types.ts +5 -0
- package/src/core/saving/save-component.tsx +43 -36
- package/src/core/wasm/bridge.ts +2 -0
- package/src/core/websocket/useMarimoWebSocket.tsx +8 -0
- package/src/css/app/codemirror-completions.css +1 -1
- package/src/custom.d.ts +2 -0
- package/src/plugins/core/registerReactComponent.tsx +5 -1
- package/src/plugins/impl/DataTablePlugin.tsx +19 -19
- package/src/plugins/impl/__tests__/DateTimePickerPlugin.test.tsx +32 -0
- package/src/plugins/impl/chat/ChatPlugin.tsx +1 -1
- package/src/plugins/impl/chat/chat-ui.tsx +17 -2
- package/src/plugins/impl/chat/types.ts +1 -1
- package/src/plugins/impl/data-frames/DataFramePlugin.tsx +7 -2
- package/src/plugins/impl/plotly/__tests__/parse-from-template.test.ts +17 -0
- package/src/plugins/impl/plotly/parse-from-template.ts +2 -1
- package/src/utils/__tests__/formatting.test.ts +107 -0
- package/src/utils/__tests__/json-parser.test.ts +13 -0
- package/src/utils/copy.ts +6 -0
- package/src/utils/formatting.ts +51 -0
- package/src/utils/json/json-parser.ts +28 -3
- package/dist/any-language-editor-CVFQlioK.js +0 -156
- package/dist/apl-ChlaBfxB.js +0 -4
- package/dist/architecture-O4VJ6CD3-BVeaxUcM.js +0 -21
- package/dist/asciiarmor-CcJmm3l_.js +0 -4
- package/dist/asn1-ThRYxoBE.js +0 -4
- package/dist/assets/__vite-browser-external-Dv_SHu1h.js +0 -1
- package/dist/assets/worker-DVOR9oZG.js +0 -54
- package/dist/brainfuck-CEM0JgDn.js +0 -4
- package/dist/chunk-EXTU4WIE-DECT9AAK.js +0 -14
- package/dist/chunk-S3R3BYOJ-DMQ1yeyq.js +0 -386
- package/dist/classDiagram-KNZD7YFC-BG53O6Jt.js +0 -39
- package/dist/classDiagram-v2-RKCZMP56-BmKILsGU.js +0 -39
- package/dist/clojure-B7RHyE9t.js +0 -4
- package/dist/cmake-TeTMP4I5.js +0 -4
- package/dist/cobol-DI-mxUER.js +0 -4
- package/dist/coffeescript-DHUFLqWp.js +0 -4
- package/dist/commonlisp-SLiUrh1m.js +0 -4
- package/dist/crystal-B4fY1ZfJ.js +0 -4
- package/dist/css-Bdoq3TzK.js +0 -5
- package/dist/cypher-CBU182fp.js +0 -4
- package/dist/d-D8myDZeH.js +0 -4
- package/dist/data-grid-overlay-editor-qNmJk2x0.js +0 -135
- package/dist/diagram-QEK2KX5R-fu8Noi3H.js +0 -245
- package/dist/diff-DJF_UB7H.js +0 -4
- package/dist/dist-52-_pKoy.js +0 -6
- package/dist/dist-6DOMStFn.js +0 -6
- package/dist/dist-B334aW7p.js +0 -10
- package/dist/dist-BOI9lUz-.js +0 -12
- package/dist/dist-C06uhBzF.js +0 -6
- package/dist/dist-CGkpguCB.js +0 -6
- package/dist/dist-CrApzUED.js +0 -6
- package/dist/dist-Dp2GLdCl.js +0 -14
- package/dist/dist-WHFsbMDr.js +0 -6
- package/dist/dist-hyKcTPG9.js +0 -10
- package/dist/dtd-DY8q65lC.js +0 -4
- package/dist/dylan-CBLcjWCi.js +0 -4
- package/dist/ecl-BSXPNfOw.js +0 -4
- package/dist/eiffel-BJf0PQX-.js +0 -4
- package/dist/elm-DWQwPCZS.js +0 -4
- package/dist/erlang-BWBaGZ5e.js +0 -4
- package/dist/factor-DT1-MBPl.js +0 -5
- package/dist/forth-D9GDt3FB.js +0 -4
- package/dist/fortran-DHkRhDWw.js +0 -4
- package/dist/gas-7lQEOM0H.js +0 -4
- package/dist/gherkin-BLLyroYi.js +0 -4
- package/dist/gitGraph-ZV4HHKMB-z2v_cInC.js +0 -21
- package/dist/groovy-C-wabwj0.js +0 -4
- package/dist/haskell-DaxVQ_d1.js +0 -4
- package/dist/haxe-C2yLoC7h.js +0 -5
- package/dist/idl-DQBP8i7k.js +0 -4
- package/dist/info-63CPKGFF-GS4w6pCB.js +0 -21
- package/dist/infoDiagram-STP46IZ2-DE9YYPFg.js +0 -44
- package/dist/javascript-DRwFV9r5.js +0 -5
- package/dist/jinja2-CNoIpVmN.js +0 -4
- package/dist/julia-DXDf-GhP.js +0 -4
- package/dist/livescript-S2uhJQx7.js +0 -4
- package/dist/lua-Bvgs0y2G.js +0 -4
- package/dist/mathematica-D2zqfwIg.js +0 -4
- package/dist/mbox-SBcPaDuZ.js +0 -4
- package/dist/mirc-hkQc7sVF.js +0 -4
- package/dist/mllike-DRWPBlr9.js +0 -6
- package/dist/modelica-CO2ROGlP.js +0 -4
- package/dist/mscgen-BpX61bO6.js +0 -6
- package/dist/mumps-BCnFeIn6.js +0 -4
- package/dist/nsis-BaTOxlD1.js +0 -5
- package/dist/ntriples-zEo5BWjr.js +0 -4
- package/dist/octave-BE0RnCM9.js +0 -4
- package/dist/oz-C4_2Ttul.js +0 -4
- package/dist/packet-HUATNLJX-CjHqJIqk.js +0 -21
- package/dist/pascal-Q3jJucpw.js +0 -4
- package/dist/perl-DkXZIWHF.js +0 -4
- package/dist/pie-WTHONI2E-D67gLWtR.js +0 -21
- package/dist/pig-DCgEHdsu.js +0 -4
- package/dist/powershell-3rK_nRRJ.js +0 -236
- package/dist/powershell-Eo2-7MoM.js +0 -4
- package/dist/properties-C0IOX8WR.js +0 -4
- package/dist/protobuf--lGQUSRO.js +0 -4
- package/dist/pug-Cf8AQHMJ.js +0 -5
- package/dist/puppet-D7Z3dTJn.js +0 -4
- package/dist/python-FHIx_i8Y.js +0 -5
- package/dist/q-B7UA1feM.js +0 -4
- package/dist/r-Cc9R2A7N.js +0 -4
- package/dist/radar-NJJJXTRR-C-AZP_Te.js +0 -21
- package/dist/rpm-vhJNlrQ6.js +0 -5
- package/dist/ruby-CVluPY0M.js +0 -4
- package/dist/sas-A8DL8oy3.js +0 -4
- package/dist/scheme-6xHHcSXC.js +0 -4
- package/dist/shell-DHN-e5rf.js +0 -4
- package/dist/sieve-BuQwLY02.js +0 -4
- package/dist/smalltalk-BA4HPg2H.js +0 -4
- package/dist/sparql-Bf4yCuy3.js +0 -4
- package/dist/stateDiagram-v2-UMBNRL4Z-C_0FUzzk.js +0 -38
- package/dist/stex-D-I1cYeE.js +0 -5
- package/dist/stylus-BMeped2l.js +0 -4
- package/dist/swift-lwEdlZoC.js +0 -4
- package/dist/tcl-B03ipeqv.js +0 -4
- package/dist/toml-BLgrVtfu.js +0 -4
- package/dist/treemap-75Q7IDZK-DTvwfpWt.js +0 -21
- package/dist/troff-g6EjN2O2.js +0 -4
- package/dist/ttcn-Dzvba8jK.js +0 -4
- package/dist/ttcn-cfg-CadG0p1K.js +0 -4
- package/dist/turtle-DkXAMWo9.js +0 -4
- package/dist/vb-C5dCiel8.js +0 -4
- package/dist/vbscript-I4bDEQln.js +0 -4
- package/dist/velocity-mt0fDwFH.js +0 -4
- package/dist/verilog-Dxq3KJkc.js +0 -4
- package/dist/vhdl-Km0QUlV-.js +0 -4
- package/dist/webidl-B3lJ2MRL.js +0 -4
- package/dist/xquery-CcIxNPEe.js +0 -4
- package/dist/yacas-oMa-f-tN.js +0 -4
- package/dist/z80-D03Nvn6l.js +0 -4
- /package/dist/{apl-DZqo8Elt.js → apl-CEHentF4.js} +0 -0
- /package/dist/{asciiarmor-DTzHAIeX.js → asciiarmor-DURYiCS0.js} +0 -0
- /package/dist/{asn1-DrAXKsZH.js → asn1-ETAiEoXY.js} +0 -0
- /package/dist/{asterisk-oF4U3h48.js → asterisk-DTpbbXPb.js} +0 -0
- /package/dist/{brainfuck-BYgLey30.js → brainfuck-BWQep-SA.js} +0 -0
- /package/dist/{clojure-Bs2M3OUY.js → clojure-BzFapDkA.js} +0 -0
- /package/dist/{cmake-DpI8vxJN.js → cmake-DvlbIC8x.js} +0 -0
- /package/dist/{cobol-BQyrWo72.js → cobol-BrEI4cPR.js} +0 -0
- /package/dist/{coffeescript-9ke9UHmw.js → coffeescript-B6cvu8mO.js} +0 -0
- /package/dist/{common-keywords-BzgeAvH1.js → common-keywords-WqQm7W8t.js} +0 -0
- /package/dist/{commonlisp-DghUdrUH.js → commonlisp-BIT8PQqi.js} +0 -0
- /package/dist/{crystal-DEf_SInh.js → crystal-B_UcPArT.js} +0 -0
- /package/dist/{css-BzTU9lNO.js → css-dHbnt_zl.js} +0 -0
- /package/dist/{cypher-a2v0c11S.js → cypher-Dh3FOpL7.js} +0 -0
- /package/dist/{d-SAswny-M.js → d-CQD1IHee.js} +0 -0
- /package/dist/{diff-OJ-xLXcG.js → diff-CpF_IDx0.js} +0 -0
- /package/dist/{dtd-BsUf-rer.js → dtd-DYoNpy6c.js} +0 -0
- /package/dist/{duckdb-keywords-B0NOra5o.js → duckdb-keywords-CdIsl9L0.js} +0 -0
- /package/dist/{dylan-C0ZYngjn.js → dylan-Bc_2G1E-.js} +0 -0
- /package/dist/{ebnf-DF1xx0b_.js → ebnf-jGVT_YpN.js} +0 -0
- /package/dist/{ecl-Bsuvoouq.js → ecl-UIU-P-Ar.js} +0 -0
- /package/dist/{eiffel-DgfSpLi-.js → eiffel-C90Oyuix.js} +0 -0
- /package/dist/{elm-GNxDj-5E.js → elm-B9fWSySj.js} +0 -0
- /package/dist/{erlang-Ds3uY1kL.js → erlang-Ccff0UAn.js} +0 -0
- /package/dist/{fcl-CqBgSioc.js → fcl-CGR8NxAg.js} +0 -0
- /package/dist/{forth-JCaLysGk.js → forth-U1ROGcBY.js} +0 -0
- /package/dist/{fortran-Dc2AoKAl.js → fortran-3nOkjDmc.js} +0 -0
- /package/dist/{gas-Q4Uz82YW.js → gas-B_4H5FzV.js} +0 -0
- /package/dist/{gherkin-Dpxe49sQ.js → gherkin-B0eru5Uz.js} +0 -0
- /package/dist/{groovy-D8mTRCu6.js → groovy-dqjtZUVf.js} +0 -0
- /package/dist/{haskell-2_8cC4wY.js → haskell-DFzCCQzo.js} +0 -0
- /package/dist/{haxe-Bl9zkZlz.js → haxe-Da8Pj5RT.js} +0 -0
- /package/dist/{http-DKCqY6yS.js → http-1HACL_9s.js} +0 -0
- /package/dist/{idl-Dn-HNfGW.js → idl-D3NXs5iM.js} +0 -0
- /package/dist/{jinja2-JjFiAGKk.js → jinja2-gBHAxUdF.js} +0 -0
- /package/dist/{julia-R5wne8eu.js → julia-bG-6nJ-_.js} +0 -0
- /package/dist/{livescript-DSwokrYj.js → livescript-BlsRC8UJ.js} +0 -0
- /package/dist/{lua-CgXfrp2-.js → lua-BbDC0_5w.js} +0 -0
- /package/dist/{mathematica-BVli92MR.js → mathematica-YZTe3-PF.js} +0 -0
- /package/dist/{mbox-CMFlocdS.js → mbox-CY5idp08.js} +0 -0
- /package/dist/{mirc-BkW04Zpc.js → mirc-CbQuFZKk.js} +0 -0
- /package/dist/{mllike-DEjvHvNV.js → mllike-DsbHMX-5.js} +0 -0
- /package/dist/{modelica-CxDn-oje.js → modelica-CQuvsOQk.js} +0 -0
- /package/dist/{mscgen-D78wmE-w.js → mscgen-LIpBP9VR.js} +0 -0
- /package/dist/{mumps-Bi0IvPOV.js → mumps-Ct5NXoaG.js} +0 -0
- /package/dist/{nginx-DErPZFhX.js → nginx-Dvc62C8z.js} +0 -0
- /package/dist/{ntriples-Btyp6wRL.js → ntriples-jVkxWUuv.js} +0 -0
- /package/dist/{octave-CZA6-2F8.js → octave-jGOImUB0.js} +0 -0
- /package/dist/{oz-Bm6LSNfE.js → oz-Y0FKDMS2.js} +0 -0
- /package/dist/{pascal-B4J6a9BH.js → pascal-BaLtPWWB.js} +0 -0
- /package/dist/{perl-CzVqxS08.js → perl-CjfE0JLo.js} +0 -0
- /package/dist/{pig-Clh03cnn.js → pig-DE4epV99.js} +0 -0
- /package/dist/{properties-D7ch1Wyb.js → properties-CLyCG5C-.js} +0 -0
- /package/dist/{protobuf-DrkdrMPK.js → protobuf-BjBBs_V4.js} +0 -0
- /package/dist/{puppet-BtZG8zdO.js → puppet-ZImLuomA.js} +0 -0
- /package/dist/{python-B6FKOVIv.js → python-C9YN71pR.js} +0 -0
- /package/dist/{r-Dnvo5-96.js → r-DILmKWWW.js} +0 -0
- /package/dist/{rpm-B1DrgfnX.js → rpm-fpIsm1Kr.js} +0 -0
- /package/dist/{ruby-CelfUg17.js → ruby-BuiQI41h.js} +0 -0
- /package/dist/{sas-DfSQFMWG.js → sas-C76sJ1zF.js} +0 -0
- /package/dist/{scheme-BplhaWuO.js → scheme-DHjM-txv.js} +0 -0
- /package/dist/{shell-DqU5OS2c.js → shell--7NmGJ9p.js} +0 -0
- /package/dist/{sieve-BE4_IyGa.js → sieve-DaPvBv1M.js} +0 -0
- /package/dist/{smalltalk-B_WPL8Nx.js → smalltalk-KPvwrjCs.js} +0 -0
- /package/dist/{solr-DlJFg7H5.js → solr-PvZUtEDb.js} +0 -0
- /package/dist/{sparql-7XIlcOgW.js → sparql-CXSUIQer.js} +0 -0
- /package/dist/{spreadsheet-BdZSVwVp.js → spreadsheet-DPJdGPkx.js} +0 -0
- /package/dist/{sql-CCrq7lfJ.js → sql-Dp4ZLSIa.js} +0 -0
- /package/dist/{stex-BiFc8QAu.js → stex-CeXW4zzk.js} +0 -0
- /package/dist/{stylus-DlSH9xpH.js → stylus-BXcmrg9w.js} +0 -0
- /package/dist/{swift-e3tMTZgJ.js → swift-DD8I7hKP.js} +0 -0
- /package/dist/{tcl-DfZMC20G.js → tcl-B9Lp4GtA.js} +0 -0
- /package/dist/{textile-DaSeca5U.js → textile-qdiY0teq.js} +0 -0
- /package/dist/{tiddlywiki-dfoiz8pS.js → tiddlywiki-t32lkubq.js} +0 -0
- /package/dist/{tiki-yJbQzhma.js → tiki-B0qKrSMl.js} +0 -0
- /package/dist/{troff-FN_FrCXR.js → troff-105XJOEu.js} +0 -0
- /package/dist/{ttcn-7_i4HlyB.js → ttcn-1_BxDcM8.js} +0 -0
- /package/dist/{ttcn-cfg-B46AlBUV.js → ttcn-cfg-Cn_XgXiw.js} +0 -0
- /package/dist/{turtle-QQfeFveR.js → turtle-BI6LyfEu.js} +0 -0
- /package/dist/{vb-DToPVnLa.js → vb-BecoBfmr.js} +0 -0
- /package/dist/{vbscript-CtsNaTz4.js → vbscript-De-zpA4i.js} +0 -0
- /package/dist/{velocity-CAoNe6ns.js → velocity-DhlYJTrD.js} +0 -0
- /package/dist/{verilog-DrDOMiJq.js → verilog-BDZgxDOW.js} +0 -0
- /package/dist/{vhdl-DnO0OEPh.js → vhdl-CV0OKTbp.js} +0 -0
- /package/dist/{webidl-Or6d1ZfA.js → webidl-BOM1Fs0O.js} +0 -0
- /package/dist/{xquery-CEp_Mcpr.js → xquery-CltP_CGh.js} +0 -0
- /package/dist/{yacas-DgnYrSlp.js → yacas-Dch4E2Dg.js} +0 -0
- /package/dist/{z80-DlG_kyeB.js → z80-B5Yly27o.js} +0 -0
|
@@ -559,6 +559,35 @@ export const UserConfigForm: React.FC = () => {
|
|
|
559
559
|
/>
|
|
560
560
|
</SettingGroup>
|
|
561
561
|
|
|
562
|
+
<SettingGroup title="Diagnostics">
|
|
563
|
+
<FormField
|
|
564
|
+
control={form.control}
|
|
565
|
+
name="diagnostics.sql_linter"
|
|
566
|
+
render={({ field }) => (
|
|
567
|
+
<div className="flex flex-col space-y-1">
|
|
568
|
+
<FormItem className={formItemClasses}>
|
|
569
|
+
<FormLabel>SQL Linter</FormLabel>
|
|
570
|
+
<FormControl>
|
|
571
|
+
<Checkbox
|
|
572
|
+
data-testid="sql-linter-checkbox"
|
|
573
|
+
checked={field.value}
|
|
574
|
+
onCheckedChange={field.onChange}
|
|
575
|
+
/>
|
|
576
|
+
</FormControl>
|
|
577
|
+
<FormMessage />
|
|
578
|
+
<IsOverridden
|
|
579
|
+
userConfig={config}
|
|
580
|
+
name="diagnostics.sql_linter"
|
|
581
|
+
/>
|
|
582
|
+
</FormItem>
|
|
583
|
+
<FormDescription>
|
|
584
|
+
Better linting and autocompletions for SQL cells.
|
|
585
|
+
</FormDescription>
|
|
586
|
+
</div>
|
|
587
|
+
)}
|
|
588
|
+
/>
|
|
589
|
+
</SettingGroup>
|
|
590
|
+
|
|
562
591
|
<SettingGroup title="Keymap">
|
|
563
592
|
<FormField
|
|
564
593
|
control={form.control}
|
|
@@ -1281,31 +1310,6 @@ export const UserConfigForm: React.FC = () => {
|
|
|
1281
1310
|
</div>
|
|
1282
1311
|
)}
|
|
1283
1312
|
/>
|
|
1284
|
-
<FormField
|
|
1285
|
-
control={form.control}
|
|
1286
|
-
name="experimental.sql_linter"
|
|
1287
|
-
render={({ field }) => (
|
|
1288
|
-
<div className="flex flex-col gap-y-1">
|
|
1289
|
-
<FormItem className={formItemClasses}>
|
|
1290
|
-
<FormLabel className="font-normal">SQL Linter</FormLabel>
|
|
1291
|
-
<FormControl>
|
|
1292
|
-
<Checkbox
|
|
1293
|
-
data-testid="sql-linter-checkbox"
|
|
1294
|
-
checked={field.value === true}
|
|
1295
|
-
onCheckedChange={field.onChange}
|
|
1296
|
-
/>
|
|
1297
|
-
</FormControl>
|
|
1298
|
-
</FormItem>
|
|
1299
|
-
<IsOverridden
|
|
1300
|
-
userConfig={config}
|
|
1301
|
-
name="experimental.sql_linter"
|
|
1302
|
-
/>
|
|
1303
|
-
<FormDescription>
|
|
1304
|
-
Enable experimental SQL linting and autocompletion.
|
|
1305
|
-
</FormDescription>
|
|
1306
|
-
</div>
|
|
1307
|
-
)}
|
|
1308
|
-
/>
|
|
1309
1313
|
<FormField
|
|
1310
1314
|
control={form.control}
|
|
1311
1315
|
name="experimental.external_agents"
|
|
@@ -127,7 +127,7 @@ export async function handleToolCall({
|
|
|
127
127
|
addToolResult({
|
|
128
128
|
tool: toolCall.toolName,
|
|
129
129
|
toolCallId: toolCall.toolCallId,
|
|
130
|
-
output: response,
|
|
130
|
+
output: response.result || response.error,
|
|
131
131
|
});
|
|
132
132
|
} else {
|
|
133
133
|
// Invoke the backend/mcp tool
|
|
@@ -153,7 +153,7 @@ export async function handleToolCall({
|
|
|
153
153
|
|
|
154
154
|
/**
|
|
155
155
|
* Checks if we should send a message automatically based on the messages.
|
|
156
|
-
* We only want to send a message if
|
|
156
|
+
* We only want to send a message if all tool calls are completed and there is no reply yet.
|
|
157
157
|
*/
|
|
158
158
|
export function hasPendingToolCalls(messages: UIMessage[]): boolean {
|
|
159
159
|
if (messages.length === 0) {
|
|
@@ -177,7 +177,12 @@ export function hasPendingToolCalls(messages: UIMessage[]): boolean {
|
|
|
177
177
|
part.type.startsWith("tool-"),
|
|
178
178
|
) as ToolUIPart[];
|
|
179
179
|
|
|
180
|
-
|
|
180
|
+
// Guard against no tool parts
|
|
181
|
+
if (toolParts.length === 0) {
|
|
182
|
+
return false;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
const allToolCallsCompleted = toolParts.every(
|
|
181
186
|
(part) => part.state === "output-available",
|
|
182
187
|
);
|
|
183
188
|
|
|
@@ -186,6 +191,8 @@ export function hasPendingToolCalls(messages: UIMessage[]): boolean {
|
|
|
186
191
|
const hasTextContent =
|
|
187
192
|
lastPart.type === "text" && lastPart.text?.trim().length > 0;
|
|
188
193
|
|
|
194
|
+
Logger.warn("All tool calls completed: %s", allToolCallsCompleted);
|
|
195
|
+
|
|
189
196
|
// Only auto-send if we have completed tool calls and there is no reply yet
|
|
190
|
-
return
|
|
197
|
+
return allToolCallsCompleted && !hasTextContent;
|
|
191
198
|
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/* Copyright 2024 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import type { SortingState } from "@tanstack/react-table";
|
|
4
|
+
import { describe, expect, it, vi } from "vitest";
|
|
5
|
+
|
|
6
|
+
describe("multi-column sorting logic", () => {
|
|
7
|
+
// Extract the core sorting logic to test in isolation
|
|
8
|
+
const handleSort = (
|
|
9
|
+
columnId: string,
|
|
10
|
+
desc: boolean,
|
|
11
|
+
sortingState: SortingState,
|
|
12
|
+
setSorting: (state: SortingState) => void,
|
|
13
|
+
clearSorting: () => void,
|
|
14
|
+
) => {
|
|
15
|
+
const currentSort = sortingState.find((s) => s.id === columnId);
|
|
16
|
+
|
|
17
|
+
if (currentSort && currentSort.desc === desc) {
|
|
18
|
+
// Clicking the same sort again - remove it
|
|
19
|
+
clearSorting();
|
|
20
|
+
} else {
|
|
21
|
+
// New sort or different direction - move to end of stack
|
|
22
|
+
const otherSorts = sortingState.filter((s) => s.id !== columnId);
|
|
23
|
+
const newSort = { id: columnId, desc };
|
|
24
|
+
setSorting([...otherSorts, newSort]);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
it("implements stack-based sorting: moves re-clicked column to end", () => {
|
|
29
|
+
const sortingState: SortingState = [
|
|
30
|
+
{ id: "name", desc: false },
|
|
31
|
+
{ id: "age", desc: false },
|
|
32
|
+
];
|
|
33
|
+
const setSorting = vi.fn();
|
|
34
|
+
const clearSorting = vi.fn();
|
|
35
|
+
|
|
36
|
+
// Click Desc on age - should move age to end with desc=true
|
|
37
|
+
handleSort("age", true, sortingState, setSorting, clearSorting);
|
|
38
|
+
|
|
39
|
+
expect(setSorting).toHaveBeenCalledWith([
|
|
40
|
+
{ id: "name", desc: false },
|
|
41
|
+
{ id: "age", desc: true },
|
|
42
|
+
]);
|
|
43
|
+
expect(clearSorting).not.toHaveBeenCalled();
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it("removes sort when clicking same direction twice", () => {
|
|
47
|
+
const sortingState: SortingState = [{ id: "age", desc: false }];
|
|
48
|
+
const setSorting = vi.fn();
|
|
49
|
+
const clearSorting = vi.fn();
|
|
50
|
+
|
|
51
|
+
// Click Asc on age again - should remove the sort
|
|
52
|
+
handleSort("age", false, sortingState, setSorting, clearSorting);
|
|
53
|
+
|
|
54
|
+
expect(clearSorting).toHaveBeenCalled();
|
|
55
|
+
expect(setSorting).not.toHaveBeenCalled();
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
it("adds new column to end of stack", () => {
|
|
59
|
+
const sortingState: SortingState = [{ id: "name", desc: false }];
|
|
60
|
+
const setSorting = vi.fn();
|
|
61
|
+
const clearSorting = vi.fn();
|
|
62
|
+
|
|
63
|
+
// Click Asc on age - should add age to end
|
|
64
|
+
handleSort("age", false, sortingState, setSorting, clearSorting);
|
|
65
|
+
|
|
66
|
+
expect(setSorting).toHaveBeenCalledWith([
|
|
67
|
+
{ id: "name", desc: false },
|
|
68
|
+
{ id: "age", desc: false },
|
|
69
|
+
]);
|
|
70
|
+
expect(clearSorting).not.toHaveBeenCalled();
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it("toggles sort direction when clicking opposite", () => {
|
|
74
|
+
const sortingState: SortingState = [{ id: "age", desc: false }];
|
|
75
|
+
const setSorting = vi.fn();
|
|
76
|
+
const clearSorting = vi.fn();
|
|
77
|
+
|
|
78
|
+
// Click Desc on age - should toggle to descending
|
|
79
|
+
handleSort("age", true, sortingState, setSorting, clearSorting);
|
|
80
|
+
|
|
81
|
+
expect(setSorting).toHaveBeenCalledWith([{ id: "age", desc: true }]);
|
|
82
|
+
expect(clearSorting).not.toHaveBeenCalled();
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
it("correctly calculates priority numbers", () => {
|
|
86
|
+
const sortingState: SortingState = [
|
|
87
|
+
{ id: "name", desc: false },
|
|
88
|
+
{ id: "age", desc: true },
|
|
89
|
+
{ id: "dept", desc: false },
|
|
90
|
+
];
|
|
91
|
+
|
|
92
|
+
// Priority is index + 1
|
|
93
|
+
const nameSort = sortingState.find((s) => s.id === "name");
|
|
94
|
+
const namePriority = nameSort ? sortingState.indexOf(nameSort) + 1 : null;
|
|
95
|
+
expect(namePriority).toBe(1);
|
|
96
|
+
|
|
97
|
+
const deptSort = sortingState.find((s) => s.id === "dept");
|
|
98
|
+
const deptPriority = deptSort ? sortingState.indexOf(deptSort) + 1 : null;
|
|
99
|
+
expect(deptPriority).toBe(3);
|
|
100
|
+
});
|
|
101
|
+
|
|
102
|
+
it("handles removing column from middle of stack", () => {
|
|
103
|
+
const sortingState: SortingState = [
|
|
104
|
+
{ id: "name", desc: false },
|
|
105
|
+
{ id: "age", desc: true },
|
|
106
|
+
{ id: "dept", desc: false },
|
|
107
|
+
];
|
|
108
|
+
const setSorting = vi.fn();
|
|
109
|
+
const clearSorting = vi.fn();
|
|
110
|
+
|
|
111
|
+
// Click Desc on age again - should remove it
|
|
112
|
+
handleSort("age", true, sortingState, setSorting, clearSorting);
|
|
113
|
+
|
|
114
|
+
expect(clearSorting).toHaveBeenCalled();
|
|
115
|
+
// After removal, dept should move from priority 3 to priority 2
|
|
116
|
+
});
|
|
117
|
+
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Copyright 2024 Marimo. All rights reserved. */
|
|
2
2
|
"use no memo";
|
|
3
3
|
|
|
4
|
-
import type { Column } from "@tanstack/react-table";
|
|
4
|
+
import type { Column, Table } from "@tanstack/react-table";
|
|
5
5
|
import { capitalize } from "lodash-es";
|
|
6
6
|
import { FilterIcon, MinusIcon, TextIcon, XIcon } from "lucide-react";
|
|
7
7
|
import { useMemo, useRef, useState } from "react";
|
|
@@ -68,6 +68,7 @@ interface DataTableColumnHeaderProps<TData, TValue>
|
|
|
68
68
|
column: Column<TData, TValue>;
|
|
69
69
|
header: React.ReactNode;
|
|
70
70
|
calculateTopKRows?: CalculateTopKRows;
|
|
71
|
+
table?: Table<TData>;
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
export const DataTableColumnHeader = <TData, TValue>({
|
|
@@ -75,6 +76,7 @@ export const DataTableColumnHeader = <TData, TValue>({
|
|
|
75
76
|
header,
|
|
76
77
|
className,
|
|
77
78
|
calculateTopKRows,
|
|
79
|
+
table,
|
|
78
80
|
}: DataTableColumnHeaderProps<TData, TValue>) => {
|
|
79
81
|
const [isFilterValueOpen, setIsFilterValueOpen] = useState(false);
|
|
80
82
|
const { locale } = useLocale();
|
|
@@ -117,7 +119,7 @@ export const DataTableColumnHeader = <TData, TValue>({
|
|
|
117
119
|
</DropdownMenuTrigger>
|
|
118
120
|
<DropdownMenuContent align="start">
|
|
119
121
|
{renderDataType(column)}
|
|
120
|
-
{renderSorts(column)}
|
|
122
|
+
{renderSorts(column, table)}
|
|
121
123
|
{renderCopyColumn(column)}
|
|
122
124
|
{renderColumnPinning(column)}
|
|
123
125
|
{renderColumnWrapping(column)}
|
|
@@ -165,7 +165,7 @@ export function generateColumns<T>({
|
|
|
165
165
|
return row[key as keyof T];
|
|
166
166
|
},
|
|
167
167
|
|
|
168
|
-
header: ({ column }) => {
|
|
168
|
+
header: ({ column, table }) => {
|
|
169
169
|
const stats = chartSpecModel?.getColumnStats(key);
|
|
170
170
|
const dtype = column.columnDef.meta?.dtype;
|
|
171
171
|
const headerTitle = headerTooltip?.[key];
|
|
@@ -208,6 +208,7 @@ export function generateColumns<T>({
|
|
|
208
208
|
header={headerWithTooltip}
|
|
209
209
|
column={column}
|
|
210
210
|
calculateTopKRows={calculateTopKRows}
|
|
211
|
+
table={table}
|
|
211
212
|
/>
|
|
212
213
|
);
|
|
213
214
|
|
|
@@ -215,8 +215,13 @@ const DataTableInternal = <TData,>({
|
|
|
215
215
|
manualPagination: manualPagination,
|
|
216
216
|
getPaginationRowModel: getPaginationRowModel(),
|
|
217
217
|
// sorting
|
|
218
|
-
...(setSorting
|
|
218
|
+
...(setSorting
|
|
219
|
+
? {
|
|
220
|
+
onSortingChange: setSorting,
|
|
221
|
+
}
|
|
222
|
+
: {}),
|
|
219
223
|
manualSorting: manualSorting,
|
|
224
|
+
enableMultiSort: true,
|
|
220
225
|
getSortedRowModel: getSortedRowModel(),
|
|
221
226
|
// filtering
|
|
222
227
|
manualFiltering: true,
|
|
@@ -302,7 +307,7 @@ const DataTableInternal = <TData,>({
|
|
|
302
307
|
)}
|
|
303
308
|
<Table className="relative" ref={tableRef}>
|
|
304
309
|
{showLoadingBar && (
|
|
305
|
-
<
|
|
310
|
+
<thead className="absolute top-0 left-0 h-[3px] w-1/2 bg-primary animate-slide" />
|
|
306
311
|
)}
|
|
307
312
|
{renderTableHeader(table, Boolean(maxHeight))}
|
|
308
313
|
<CellSelectionProvider>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Copyright 2024 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import { PinLeftIcon, PinRightIcon } from "@radix-ui/react-icons";
|
|
4
|
-
import type { Column } from "@tanstack/react-table";
|
|
4
|
+
import type { Column, SortDirection, Table } from "@tanstack/react-table";
|
|
5
5
|
import {
|
|
6
6
|
AlignJustifyIcon,
|
|
7
7
|
ArrowDownWideNarrowIcon,
|
|
@@ -163,27 +163,80 @@ export function renderCopyColumn<TData, TValue>(column: Column<TData, TValue>) {
|
|
|
163
163
|
const AscIcon = ArrowUpNarrowWideIcon;
|
|
164
164
|
const DescIcon = ArrowDownWideNarrowIcon;
|
|
165
165
|
|
|
166
|
-
export function renderSorts<TData, TValue>(
|
|
166
|
+
export function renderSorts<TData, TValue>(
|
|
167
|
+
column: Column<TData, TValue>,
|
|
168
|
+
table?: Table<TData>,
|
|
169
|
+
) {
|
|
167
170
|
if (!column.getCanSort()) {
|
|
168
171
|
return null;
|
|
169
172
|
}
|
|
170
173
|
|
|
174
|
+
const sortDirection = column.getIsSorted();
|
|
175
|
+
const sortingIndex = column.getSortIndex();
|
|
176
|
+
|
|
177
|
+
const sortingState = table?.getState().sorting;
|
|
178
|
+
const hasMultiSort = sortingState?.length && sortingState.length > 1;
|
|
179
|
+
|
|
180
|
+
const renderSortIndex = () => {
|
|
181
|
+
return (
|
|
182
|
+
<span className="ml-auto text-xs font-medium">{sortingIndex + 1}</span>
|
|
183
|
+
);
|
|
184
|
+
};
|
|
185
|
+
|
|
186
|
+
const renderClearSort = () => {
|
|
187
|
+
if (!sortDirection) {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (!hasMultiSort) {
|
|
192
|
+
// render clear sort for this column
|
|
193
|
+
return (
|
|
194
|
+
<DropdownMenuItem onClick={() => column.clearSorting()}>
|
|
195
|
+
<ChevronsUpDown className="mo-dropdown-icon" />
|
|
196
|
+
Clear sort
|
|
197
|
+
</DropdownMenuItem>
|
|
198
|
+
);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// render clear sort for all columns
|
|
202
|
+
return (
|
|
203
|
+
<DropdownMenuItem onClick={() => table?.resetSorting()}>
|
|
204
|
+
<ChevronsUpDown className="mo-dropdown-icon" />
|
|
205
|
+
Clear all sorts
|
|
206
|
+
</DropdownMenuItem>
|
|
207
|
+
);
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
const toggleSort = (direction: SortDirection) => {
|
|
211
|
+
// Clear sort if clicking the same direction
|
|
212
|
+
if (sortDirection === direction) {
|
|
213
|
+
column.clearSorting();
|
|
214
|
+
} else {
|
|
215
|
+
// Toggle sort direction
|
|
216
|
+
const descending = direction === "desc";
|
|
217
|
+
column.toggleSorting(descending, true);
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
|
|
171
221
|
return (
|
|
172
222
|
<>
|
|
173
|
-
<DropdownMenuItem
|
|
223
|
+
<DropdownMenuItem
|
|
224
|
+
onClick={() => toggleSort("asc")}
|
|
225
|
+
className={sortDirection === "asc" ? "bg-accent" : ""}
|
|
226
|
+
>
|
|
174
227
|
<AscIcon className="mo-dropdown-icon" />
|
|
175
228
|
Asc
|
|
229
|
+
{sortDirection === "asc" && renderSortIndex()}
|
|
176
230
|
</DropdownMenuItem>
|
|
177
|
-
<DropdownMenuItem
|
|
231
|
+
<DropdownMenuItem
|
|
232
|
+
onClick={() => toggleSort("desc")}
|
|
233
|
+
className={sortDirection === "desc" ? "bg-accent" : ""}
|
|
234
|
+
>
|
|
178
235
|
<DescIcon className="mo-dropdown-icon" />
|
|
179
236
|
Desc
|
|
237
|
+
{sortDirection === "desc" && renderSortIndex()}
|
|
180
238
|
</DropdownMenuItem>
|
|
181
|
-
{
|
|
182
|
-
<DropdownMenuItem onClick={() => column.clearSorting()}>
|
|
183
|
-
<ChevronsUpDown className="mo-dropdown-icon" />
|
|
184
|
-
Clear sort
|
|
185
|
-
</DropdownMenuItem>
|
|
186
|
-
)}
|
|
239
|
+
{renderClearSort()}
|
|
187
240
|
<DropdownMenuSeparator />
|
|
188
241
|
</>
|
|
189
242
|
);
|
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
/* Copyright 2024 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import { useAtomValue } from "jotai";
|
|
4
|
-
import React, { memo, use
|
|
4
|
+
import React, { memo, use } from "react";
|
|
5
5
|
import { Handle, Position, useStore } from "reactflow";
|
|
6
6
|
import { TinyCode } from "@/components/editor/cell/TinyCode";
|
|
7
7
|
import { useCellIds } from "@/core/cells/cells";
|
|
8
8
|
import { displayCellName } from "@/core/cells/names";
|
|
9
9
|
import { cn } from "@/utils/cn";
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
type CustomNodeProps,
|
|
12
|
+
getNodeHeight,
|
|
13
|
+
INPUTS_HANDLE_ID,
|
|
14
|
+
OUTPUTS_HANDLE_ID,
|
|
15
|
+
} from "./elements";
|
|
11
16
|
import type { LayoutDirection } from "./types";
|
|
12
17
|
|
|
13
18
|
function getWidth(canvasWidth: number) {
|
|
@@ -37,24 +42,19 @@ export const CustomNode = memo((props: CustomNodeProps) => {
|
|
|
37
42
|
const reactFlowWidth = useStore(({ width }) => width);
|
|
38
43
|
const edgeMarkers = use(EdgeMarkerContext);
|
|
39
44
|
|
|
40
|
-
const inputOneId = useId();
|
|
41
|
-
const inputTwoId = useId();
|
|
42
|
-
const outputOneId = useId();
|
|
43
|
-
const outputTwoId = useId();
|
|
44
|
-
|
|
45
45
|
const linesOfCode = cell.code.split("\n").length;
|
|
46
46
|
return (
|
|
47
47
|
<div>
|
|
48
48
|
<Handle
|
|
49
49
|
type="target"
|
|
50
|
-
id={
|
|
50
|
+
id={INPUTS_HANDLE_ID}
|
|
51
51
|
data-testid="input-one"
|
|
52
52
|
position={edgeMarkers === "LR" ? Position.Left : Position.Top}
|
|
53
53
|
style={{ background: color }}
|
|
54
54
|
/>
|
|
55
55
|
<Handle
|
|
56
56
|
type="source"
|
|
57
|
-
id={
|
|
57
|
+
id={INPUTS_HANDLE_ID}
|
|
58
58
|
data-testid="input-two"
|
|
59
59
|
position={edgeMarkers === "LR" ? Position.Left : Position.Top}
|
|
60
60
|
style={{ background: color }}
|
|
@@ -76,14 +76,14 @@ export const CustomNode = memo((props: CustomNodeProps) => {
|
|
|
76
76
|
</div>
|
|
77
77
|
<Handle
|
|
78
78
|
type="source"
|
|
79
|
-
id={
|
|
79
|
+
id={OUTPUTS_HANDLE_ID}
|
|
80
80
|
data-testid="output-one"
|
|
81
81
|
position={edgeMarkers === "LR" ? Position.Right : Position.Bottom}
|
|
82
82
|
style={{ background: color }}
|
|
83
83
|
/>
|
|
84
84
|
<Handle
|
|
85
85
|
type="target"
|
|
86
|
-
id={
|
|
86
|
+
id={OUTPUTS_HANDLE_ID}
|
|
87
87
|
data-testid="output-two"
|
|
88
88
|
position={edgeMarkers === "LR" ? Position.Right : Position.Bottom}
|
|
89
89
|
style={{ background: color }}
|
|
@@ -19,6 +19,10 @@ export function getNodeHeight(linesOfCode: number) {
|
|
|
19
19
|
return Math.min(linesOfCode * LINE_HEIGHT + 35, 200);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
// The nodes must have the same handle IDs to ensure edges connect correctly
|
|
23
|
+
export const OUTPUTS_HANDLE_ID = "outputs";
|
|
24
|
+
export const INPUTS_HANDLE_ID = "inputs";
|
|
25
|
+
|
|
22
26
|
interface ElementsBuilder {
|
|
23
27
|
createElements: (
|
|
24
28
|
cellIds: CellId[],
|
|
@@ -93,8 +97,8 @@ export class VerticalElementsBuilder implements ElementsBuilder {
|
|
|
93
97
|
}
|
|
94
98
|
visited.add(key);
|
|
95
99
|
edges.push(
|
|
96
|
-
this.createEdge(fromId, toId,
|
|
97
|
-
this.createEdge(fromId, toId,
|
|
100
|
+
this.createEdge(fromId, toId, INPUTS_HANDLE_ID),
|
|
101
|
+
this.createEdge(fromId, toId, OUTPUTS_HANDLE_ID),
|
|
98
102
|
);
|
|
99
103
|
}
|
|
100
104
|
}
|
|
@@ -114,8 +118,9 @@ export class TreeElementsBuilder implements ElementsBuilder {
|
|
|
114
118
|
// Make thicker
|
|
115
119
|
style: { strokeWidth: 2 },
|
|
116
120
|
source: source,
|
|
117
|
-
|
|
118
|
-
|
|
121
|
+
// Use the same handle ids as the custom node
|
|
122
|
+
sourceHandle: OUTPUTS_HANDLE_ID,
|
|
123
|
+
targetHandle: INPUTS_HANDLE_ID,
|
|
119
124
|
target: target,
|
|
120
125
|
};
|
|
121
126
|
}
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
WorkflowIcon,
|
|
13
13
|
XIcon,
|
|
14
14
|
} from "lucide-react";
|
|
15
|
-
import React, { memo } from "react";
|
|
15
|
+
import React, { memo, useId } from "react";
|
|
16
16
|
import { type Edge, Panel } from "reactflow";
|
|
17
17
|
import { getCellEditorView } from "@/core/cells/cells";
|
|
18
18
|
import type { CellId } from "@/core/cells/ids";
|
|
@@ -44,6 +44,8 @@ export const GraphToolbar: React.FC<Props> = memo(
|
|
|
44
44
|
onSettingsChange({ ...settings, [key]: value });
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
+
const checkboxId = useId();
|
|
48
|
+
|
|
47
49
|
const settingsButton = (
|
|
48
50
|
<Popover>
|
|
49
51
|
<PopoverTrigger asChild={true}>
|
|
@@ -56,13 +58,13 @@ export const GraphToolbar: React.FC<Props> = memo(
|
|
|
56
58
|
<div className="flex items-center gap-2">
|
|
57
59
|
<Checkbox
|
|
58
60
|
data-testid="hide-pure-markdown-checkbox"
|
|
59
|
-
id=
|
|
61
|
+
id={checkboxId}
|
|
60
62
|
checked={settings.hidePureMarkdown}
|
|
61
63
|
onCheckedChange={(checked) =>
|
|
62
64
|
handleSettingChange("hidePureMarkdown", Boolean(checked))
|
|
63
65
|
}
|
|
64
66
|
/>
|
|
65
|
-
<Label htmlFor=
|
|
67
|
+
<Label htmlFor={checkboxId}>Hide pure markdown</Label>
|
|
66
68
|
</div>
|
|
67
69
|
</PopoverContent>
|
|
68
70
|
</Popover>
|
|
@@ -114,7 +116,7 @@ export const GraphSelectionPanel: React.FC<{
|
|
|
114
116
|
onClearSelection: () => void;
|
|
115
117
|
edges: Edge[];
|
|
116
118
|
variables: Variables;
|
|
117
|
-
}> = memo(({ selection,
|
|
119
|
+
}> = memo(({ selection, variables, onClearSelection }) => {
|
|
118
120
|
if (!selection) {
|
|
119
121
|
return null;
|
|
120
122
|
}
|
|
@@ -49,13 +49,18 @@ const LazyVegaLite = React.lazy(() =>
|
|
|
49
49
|
type MimeBundle = Record<OutputMessage["mimetype"], { [key: string]: unknown }>;
|
|
50
50
|
type MimeBundleOrTuple = MimeBundle | [MimeBundle, { [key: string]: unknown }];
|
|
51
51
|
|
|
52
|
+
export type OnRefactorWithAI = (opts: {
|
|
53
|
+
prompt: string;
|
|
54
|
+
triggerImmediately: boolean;
|
|
55
|
+
}) => void;
|
|
56
|
+
|
|
52
57
|
/**
|
|
53
58
|
* Renders an output based on an OutputMessage.
|
|
54
59
|
*/
|
|
55
60
|
export const OutputRenderer: React.FC<{
|
|
56
61
|
message: Pick<OutputMessage, "channel" | "data" | "mimetype">;
|
|
57
62
|
cellId?: CellId;
|
|
58
|
-
onRefactorWithAI?:
|
|
63
|
+
onRefactorWithAI?: OnRefactorWithAI;
|
|
59
64
|
wrapText?: boolean;
|
|
60
65
|
}> = memo((props) => {
|
|
61
66
|
const { message, onRefactorWithAI, cellId, wrapText } = props;
|