@marimo-team/islands 0.17.2 → 0.17.3
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/{Combination-De9yoNY5.js → Combination-DrSsMSEB.js} +860 -816
- package/dist/{ConnectedDataExplorerComponent-DuvpJOKp.js → ConnectedDataExplorerComponent-DY9cADKc.js} +2282 -2232
- package/dist/{ImageComparisonComponent--etUl2pp.js → ImageComparisonComponent-CJvR7Qzp.js} +3 -2
- package/dist/{_baseIsEqual-BFlyFUxC.js → _baseIsEqual-DbBiwJP8.js} +1 -1
- package/dist/{_basePickBy-gCCvtjgp.js → _basePickBy-ChFDiIEt.js} +3 -3
- package/dist/{_baseProperty-BuqBC0Ie.js → _baseProperty-Bf09f9Ee.js} +5 -5
- package/dist/_baseUniq-D5kohCWB.js +59 -0
- package/dist/any-language-editor-Bs2c1bKU.js +156 -0
- package/dist/apl-Bp8pgLcx.js +4 -0
- package/dist/{arc-C_O2hc-b.js → arc-DM-UhhIs.js} +2 -2
- package/dist/architecture-O4VJ6CD3-SVEfQWDz.js +24 -0
- package/dist/{architectureDiagram-W76B3OCA-CrK99pJi.js → architectureDiagram-W76B3OCA-GKSiVAlH.js} +41 -38
- package/dist/asciiarmor-IoNSjDv9.js +4 -0
- package/dist/asn1-B1GnbkOF.js +4 -0
- package/dist/{blockDiagram-QIGZ2CNN-BJOEyO6w.js → blockDiagram-QIGZ2CNN-wX8KWoV2.js} +30 -29
- package/dist/brainfuck-TRxEs4B5.js +4 -0
- package/dist/{button-ADXOb_gX.js → button-B8zS4Mtw.js} +5 -4
- package/dist/{c4Diagram-FPNF74CW-7Pz_X9wF.js → c4Diagram-FPNF74CW-Ns4C9pNn.js} +12 -12
- package/dist/{channel-X-wRUxX6.js → channel-Dgla_oqe.js} +1 -1
- package/dist/{check-COlaG7Ss.js → check-BZnPxXnd.js} +1 -1
- package/dist/{chunk-3AY6CYHV-BQH2fFpA.js → chunk-3AY6CYHV-HfZ-8MFM.js} +10 -10
- package/dist/{chunk-4BX2VUAB-D-QtDCKM.js → chunk-4BX2VUAB-CV5cUTmw.js} +1 -1
- package/dist/{chunk-4KMFLZZN-BirZvvJS.js → chunk-4KMFLZZN-Cbgb64pE.js} +17 -18
- package/dist/{chunk-55IACEB6-DjtPYZKs.js → chunk-55IACEB6--aEkhs1O.js} +1 -1
- package/dist/{chunk-6OXUPJBA-CTnnqlzw.js → chunk-6OXUPJBA-DQZp24uZ.js} +7 -7
- package/dist/{chunk-7GE3RBXV-CT47hCrL.js → chunk-7GE3RBXV-D0K_8mbM.js} +1 -1
- package/dist/{chunk-ABZYJK2D-B6ZsU6SR.js → chunk-ABZYJK2D-BwKkjFgF.js} +3 -3
- package/dist/{chunk-BN7GFLIU-DYWEsrG4.js → chunk-BN7GFLIU-93ktvOI2.js} +1 -1
- package/dist/{chunk-CVBHYZKI-BuzDGXz0.js → chunk-CVBHYZKI-tTpx9vm_.js} +1 -1
- package/dist/{chunk-CXMOBAN2-Bas2S5w1.js → chunk-CXMOBAN2-CagHnxl1.js} +6 -6
- package/dist/{chunk-EXTU4WIE-DXwNSukz.js → chunk-EXTU4WIE-Ve2vgn5X.js} +2 -2
- package/dist/{chunk-FMBD7UC4-CYKEpuPr.js → chunk-FMBD7UC4-CCvcIQpJ.js} +1 -1
- package/dist/{chunk-JA3XYJ7Z-DcxfkcDC.js → chunk-JA3XYJ7Z-CrQC4eYr.js} +4 -4
- package/dist/{chunk-JEIROHC2-C01ZIcIG.js → chunk-JEIROHC2-tuJLHPKk.js} +1 -1
- package/dist/{chunk-K7UQS3LO-CmbT97MV.js → chunk-K7UQS3LO-BzsTVREe.js} +7 -7
- package/dist/{chunk-KMC2YHZD-D64m-1E1.js → chunk-KMC2YHZD-CdKOlVi0.js} +1 -1
- package/dist/{chunk-QN33PNHL-DjB0j8Dr.js → chunk-QN33PNHL-CbdYySGk.js} +2 -2
- package/dist/{chunk-QYVHNE3D-VA4W4oxG.js → chunk-QYVHNE3D-BDj4udRH.js} +2 -2
- package/dist/{chunk-QZHKN3VN-KT0fl3Em.js → chunk-QZHKN3VN-E6VBm6ir.js} +1 -1
- package/dist/{chunk-S3R3BYOJ-C5zmcMvn.js → chunk-S3R3BYOJ-DuumGJ4u.js} +6 -6
- package/dist/{chunk-T44TD3VJ-BMOgu-Hk.js → chunk-T44TD3VJ-Bc-UhG4i.js} +1 -1
- package/dist/{chunk-TVAH2DTR-eKm8SKnH.js → chunk-TVAH2DTR-s8skdWqT.js} +6 -6
- package/dist/{chunk-TZMSLE5B-CQxFRiI2.js → chunk-TZMSLE5B-CUfRRoFb.js} +3 -3
- package/dist/{chunk-WFRQ32O7-Dg51o277.js → chunk-WFRQ32O7-BquRwCCj.js} +1 -1
- package/dist/{chunk-WFWHJNB7-DVLO98ge.js → chunk-WFWHJNB7-CHl0gCzu.js} +1 -1
- package/dist/{chunk-XRWGC2XP-UNFKdWQh.js → chunk-XRWGC2XP-CoSEoOcO.js} +1 -1
- package/dist/{chunk-ZPAFE4SF-DbCSwfLK.js → chunk-ZPAFE4SF-Bf1fn8cY.js} +1 -1
- package/dist/classDiagram-KNZD7YFC-ONLi1fgN.js +40 -0
- package/dist/classDiagram-v2-RKCZMP56-Ceij_i8m.js +40 -0
- package/dist/{clike-CytFO-kN.js → clike-Cbszc5XU.js} +1 -1
- package/dist/clojure-BNTL3o8Z.js +4 -0
- package/dist/{clone-CCgVUJ6x.js → clone-DE59DFkY.js} +1 -1
- package/dist/cmake-Bp6uEjiS.js +4 -0
- package/dist/cobol-CtS_R__A.js +4 -0
- package/dist/coffeescript-D5u5aYAu.js +4 -0
- package/dist/commonlisp-BvLWy9eh.js +4 -0
- package/dist/compiler-runtime-5MdCVm0X.js +13 -0
- package/dist/{constants-BaCMVd12.js → constants-BlvmN57i.js} +3 -3
- package/dist/{copy-GNcK40wy.js → copy-bxQOKABs.js} +2 -2
- package/dist/{cose-bilkent-S5V4N54A-BnvuJG6Y.js → cose-bilkent-S5V4N54A-DZE8LVzQ.js} +3 -3
- package/dist/crystal-CaTWnt-Z.js +4 -0
- package/dist/css-BMUPibQH.js +5 -0
- package/dist/cypher-PopjPg_G.js +4 -0
- package/dist/d-Ds7bO8W5.js +4 -0
- package/dist/{dagre-5GWH7T2D-rn7tZYaQ.js → dagre-5GWH7T2D-g2ShbPGy.js} +39 -37
- package/dist/{dagre-Bghq6VKO.js → dagre-TBn9HZB0.js} +14 -13
- package/dist/{data-grid-overlay-editor-B4_Caieu.js → data-grid-overlay-editor-BuhjNOgs.js} +4 -4
- package/dist/{diagram-N5W7TBWH-lbF94o-g.js → diagram-N5W7TBWH-BYhyeV0B.js} +44 -41
- package/dist/{diagram-QEK2KX5R-CKBhSzsO.js → diagram-QEK2KX5R-CiuUIBpl.js} +38 -35
- package/dist/{diagram-S2PKOQOG-161_1f53.js → diagram-S2PKOQOG-D0Z2Q5P-.js} +38 -35
- package/dist/diff-C_xR-pxD.js +4 -0
- package/dist/{dist-BSyYM1Gi.js → dist-7CqcJssH.js} +6 -6
- package/dist/{dist-C9-uHBqC.js → dist-8v4BI_h_.js} +1 -1
- package/dist/{dist-71jYYbWP.js → dist-B3CNaJau.js} +2 -2
- package/dist/dist-B9JCXzyv.js +6 -0
- package/dist/{dist-DzJem5xc.js → dist-BMhv6XDi.js} +1 -1
- package/dist/{dist-CWh5ZwcC.js → dist-BYS0EtbC.js} +2 -2
- package/dist/{dist-BaPjLM6s.js → dist-BgsDu-bU.js} +1 -1
- package/dist/{dist-CNAkUyxv.js → dist-BxmsyHv5.js} +1 -1
- package/dist/{dist-CWqB4bg8.js → dist-C02gS--y.js} +3 -3
- package/dist/{dist-C76MUPD3.js → dist-C5Iu9a3-.js} +2 -2
- package/dist/{dist-DxESp2-T.js → dist-C5Ns3q-m.js} +3 -3
- package/dist/dist-C6QrJGYr.js +10 -0
- package/dist/{dist-BAqp4Vtl.js → dist-CBu8cgzz.js} +8 -4
- package/dist/dist-CFZ32udY.js +6 -0
- package/dist/{dist-DaTVdKJa.js → dist-CXimnGhI.js} +2 -2
- package/dist/{dist-CtOeHDJp.js → dist-CawOxmKh.js} +5 -5
- package/dist/dist-CmgxQNWN.js +10 -0
- package/dist/dist-Cr6Cu8sC.js +6 -0
- package/dist/{dist-BBhmkni2.js → dist-CxRajUZ6.js} +1 -1
- package/dist/{dist-CPNnKuPh.js → dist-D08oiinq.js} +12 -10
- package/dist/{dist-BNRdMfJH.js → dist-D4LUTYHc.js} +2 -2
- package/dist/{dist-C2IEc8og.js → dist-DGKjHTv9.js} +5 -5
- package/dist/{dist-4dtbqf8A.js → dist-DGnWQOnS.js} +3 -3
- package/dist/{dist-BqdQPWpQ.js → dist-DSDOMDNR.js} +2 -2
- package/dist/{dist-_4cudra1.js → dist-DTNqkRGE.js} +3 -3
- package/dist/{dist-28HYzERB.js → dist-D_GkrgWD.js} +2 -2
- package/dist/{dist-Cw0F6l-7.js → dist-DbHWFmjZ.js} +1 -1
- package/dist/{dist-B_wjJqqS.js → dist-Dh7gw0Ay.js} +2 -2
- package/dist/{dist-B8Pbw5ln.js → dist-DiO9ni9a.js} +2 -2
- package/dist/{dist-BYHiiJB-.js → dist-DlSZED-1.js} +2 -2
- package/dist/{dist-Da046MhT.js → dist-DvsjKDQ4.js} +1 -1
- package/dist/{dist-O0zVziwn.js → dist-DzKKEoge.js} +3 -3
- package/dist/{dist-CwZcC4om.js → dist-HKzG1oF6.js} +1 -1
- package/dist/{dist-CJb8EiFO.js → dist-K_AqLCfS.js} +3 -3
- package/dist/dist-NxHLuq7w.js +6 -0
- package/dist/dist-S2JcqPPB.js +12 -0
- package/dist/{dist-CNvMOZu9.js → dist-XkGsOiy0.js} +2 -2
- package/dist/{dist-Drf3cyIW.js → dist-_tHnp24J.js} +3 -3
- package/dist/{dist-xLN9qCAp.js → dist-eSnWVS11.js} +3 -3
- package/dist/dist-hcPlrsR9.js +6 -0
- package/dist/{dist-DlK420ke.js → dist-owpR56zn.js} +1 -1
- package/dist/dist-poXa8G8m.js +6 -0
- package/dist/{dist-CTIyD_KU.js → dist-qGpLTiEi.js} +3 -3
- package/dist/{dockerfile-Cmlcqk35.js → dockerfile-CWWeWT3z.js} +1 -1
- package/dist/dtd-CGRYzaHQ.js +4 -0
- package/dist/dylan-Ctfki5HL.js +4 -0
- package/dist/ecl--gmEivzz.js +4 -0
- package/dist/eiffel-o31DRAP-.js +4 -0
- package/dist/elm-Dqa6TVIh.js +4 -0
- package/dist/{erDiagram-AWTI2OKA-BU7Qig7n.js → erDiagram-AWTI2OKA-BeadFjpg.js} +25 -25
- package/dist/erlang-BtVO_vQG.js +4 -0
- package/dist/error-banner-B7LmpmGT.js +1013 -0
- package/dist/{esm-Oo8OvZ6m.js → esm-CQIOyi5v.js} +579 -564
- package/dist/{factor-BZnBK3CG.js → factor-7tQNNEWF.js} +1 -1
- package/dist/factor-CNLvRc__.js +5 -0
- package/dist/{flowDiagram-PVAE7QVJ-JKJebWeY.js → flowDiagram-PVAE7QVJ-GgklUvqn.js} +27 -27
- package/dist/{formats-DOEuF6TR.js → formats-kyFd0DPJ.js} +23 -22
- package/dist/forth-Bp2zDfH-.js +4 -0
- package/dist/fortran-B3A-KieX.js +4 -0
- package/dist/{ganttDiagram-OWAHRB6G-BvWRfg05.js → ganttDiagram-OWAHRB6G-D5wYR6WK.js} +17 -17
- package/dist/gas-_Xt_kGOG.js +4 -0
- package/dist/gherkin-DzZpg8Ls.js +4 -0
- package/dist/gitGraph-ZV4HHKMB-DFGD7PPm.js +24 -0
- package/dist/{gitGraphDiagram-NY62KEGX-VEJJBf5L.js → gitGraphDiagram-NY62KEGX-DCwA-g9b.js} +38 -35
- package/dist/{glide-data-editor-Bne10icG.js → glide-data-editor-1bUl_mRe.js} +515 -515
- package/dist/graphlib-R11f1son.js +228 -0
- package/dist/groovy-BtD10jRQ.js +4 -0
- package/dist/haskell-C-JVWnIV.js +4 -0
- package/dist/haxe-Del5TcJQ.js +5 -0
- package/dist/idl-BLlRatde.js +4 -0
- package/dist/info-63CPKGFF-eZyiEu_4.js +24 -0
- package/dist/infoDiagram-STP46IZ2-CUr2vZlE.js +48 -0
- package/dist/{isEmpty-Do_v2sls.js → isEmpty-CIFmGKJN.js} +2 -2
- package/dist/isString-BsphYkXQ.js +9 -0
- package/dist/{isSymbol-CtkA8Y0a.js → isSymbol-BnxbuvDK.js} +1 -1
- package/dist/javascript-Bm7QL4E3.js +5 -0
- package/dist/jinja2-BxbImxq2.js +4 -0
- package/dist/{journeyDiagram-BIP6EPQ6-CsgEQgxh.js → journeyDiagram-BIP6EPQ6-DtjQC_m1.js} +10 -10
- package/dist/jsx-runtime-CvL6gNI-.js +22 -0
- package/dist/julia-DV1Vz9mw.js +4 -0
- package/dist/{kanban-definition-6OIFK2YF-Bi8Ete2P.js → kanban-definition-6OIFK2YF-U3q5gvb8.js} +19 -19
- package/dist/{katex-C-g3rKKt.js → katex-BWgzyQrl.js} +1 -1
- package/dist/{label-BiVIU_wb.js → label-Wr-xTlW7.js} +463 -453
- package/dist/{line-B7-GoF1m.js → line-C7OvOvNm.js} +3 -3
- package/dist/{linear-DeGGALuc.js → linear-CgANSWNu.js} +4 -4
- package/dist/livescript-9UMSMMrl.js +4 -0
- package/dist/{loader-BBqwtZWj.js → loader-Dj9XWZTh.js} +164 -4
- package/dist/lua-Bcbc7wWe.js +4 -0
- package/dist/main.js +40719 -41544
- package/dist/mathematica-DG4QUwYU.js +4 -0
- package/dist/mbox--auqAoPc.js +4 -0
- package/dist/{memoize-D7eDkf3R.js → memoize-XkDn33QI.js} +1 -1
- package/dist/{merge-C_6cGM6o.js → merge-dMlizkC5.js} +1 -1
- package/dist/{mermaid-BmtvsZ2m.js → mermaid-DIjoC4T4.js} +67 -66
- package/dist/{mermaid-parser.core-geyG_6o0.js → mermaid-parser.core-B433qyUL.js} +8 -8
- package/dist/{mhchem-OhAaJ0fA.js → mhchem-1x4KnXMF.js} +1 -1
- package/dist/min-WjLsUjBa.js +89 -0
- package/dist/{mindmap-definition-Q6HEUPPD-B-wmX1oG.js → mindmap-definition-Q6HEUPPD-LFgV4R8y.js} +24 -24
- package/dist/mirc-9dVcMicH.js +4 -0
- package/dist/mllike-Di9N4E3Q.js +6 -0
- package/dist/modelica-S3adENkL.js +4 -0
- package/dist/mscgen-DAG0zH4w.js +6 -0
- package/dist/mumps-afzuy08D.js +4 -0
- package/dist/{now-DumxsrcX.js → now-8WTe-KKa.js} +1 -1
- package/dist/nsis-Bzwy0lPH.js +5 -0
- package/dist/{nsis-D4bLR_Y1.js → nsis-CFb2Zrib.js} +1 -1
- package/dist/ntriples-D9oM8s3v.js +4 -0
- package/dist/{number-overlay-editor-D6r-48ka.js → number-overlay-editor-DYjnpjXo.js} +2 -2
- package/dist/octave-BMLCk2qM.js +4 -0
- package/dist/{once-3OSMKEsL.js → once-rI5AYku5.js} +1 -1
- package/dist/{ordinal-DpEbSVPc.js → ordinal-pQYxWJYN.js} +1 -1
- package/dist/oz-CX5JTWTK.js +4 -0
- package/dist/packet-HUATNLJX-BvWMmF9U.js +24 -0
- package/dist/pascal-BeZmsfFX.js +4 -0
- package/dist/perl-CZ_HryPN.js +4 -0
- package/dist/pie-WTHONI2E-BCXZJKz0.js +24 -0
- package/dist/{pieDiagram-ADFJNKIX-C3GvPNUL.js → pieDiagram-ADFJNKIX-CsZmho0o.js} +43 -40
- package/dist/pig-OPEEOu6V.js +4 -0
- package/dist/powershell-DyR-5LnA.js +4 -0
- package/dist/{precisionRound-7YYJq2rW.js → precisionRound-DMLkFNYv.js} +1 -1
- package/dist/properties-Cl4tecfb.js +4 -0
- package/dist/protobuf-B8X247vV.js +4 -0
- package/dist/pug-Kmpa-Pbv.js +5 -0
- package/dist/{pug-Dv3gE36O.js → pug-ZDYeT34w.js} +1 -1
- package/dist/puppet-Pl07qkSO.js +4 -0
- package/dist/python-DQgTXBpp.js +5 -0
- package/dist/q-D7uiP00h.js +4 -0
- package/dist/{quadrantDiagram-LMRXKWRM-DPXwGNVa.js → quadrantDiagram-LMRXKWRM-CY6GTOgM.js} +8 -8
- package/dist/r-DbUoToEd.js +4 -0
- package/dist/radar-NJJJXTRR-8kjOeCwx.js +24 -0
- package/dist/{range-CIbLpsrs.js → range-CTMc_Qhu.js} +3 -3
- package/dist/{react-plotly-DYyvxcRD.js → react-plotly-Cs07wkly.js} +2 -2
- package/dist/react-vega-B9eMrRW1.js +32035 -0
- package/dist/react-vega-DM3e8kar.js +25 -0
- package/dist/reduce-C-jV7KRY.js +268 -0
- package/dist/{requirementDiagram-4UW4RH46-Cs3Hqnm0.js → requirementDiagram-4UW4RH46-CfLWneBF.js} +24 -24
- package/dist/rpm-BjQFZZ1e.js +5 -0
- package/dist/ruby-BXpop5ZX.js +4 -0
- package/dist/{sankeyDiagram-GR3RE2ED-Be1d_Xf7.js → sankeyDiagram-GR3RE2ED-Dkxfzm6f.js} +7 -7
- package/dist/sas-CzFr9Hlz.js +4 -0
- package/dist/scheme-C6QRPvcm.js +4 -0
- package/dist/{sequenceDiagram-C3RYC4MD-lbtovKTa.js → sequenceDiagram-C3RYC4MD-hSi31Kfa.js} +14 -14
- package/dist/shell-Bs7FrcsL.js +4 -0
- package/dist/sieve-D39XRya9.js +4 -0
- package/dist/{slides-component-BoeQU7-s.js → slides-component-Ct11erUn.js} +9 -8
- package/dist/smalltalk-CdAwDOFE.js +4 -0
- package/dist/sparql-DsDWhEhN.js +4 -0
- package/dist/spec-rqRnkIf4.js +1256 -0
- package/dist/{src-BTqT1mA1.js → src-CKr0QbVy.js} +1 -1
- package/dist/{stateDiagram-KXAO66HF-BmbR-Rol.js → stateDiagram-KXAO66HF-DJsLA_DN.js} +42 -40
- package/dist/stateDiagram-v2-UMBNRL4Z-D-p_ngHt.js +39 -0
- package/dist/{step-2RJrMSSG.js → step-BsM8YHun.js} +1 -1
- package/dist/stex-DvqvBdH8.js +5 -0
- package/dist/style.css +1 -1
- package/dist/stylus-DxzxWmvV.js +4 -0
- package/dist/swift-DTC4Wg4z.js +4 -0
- package/dist/tcl-DantlS-i.js +4 -0
- package/dist/textile-pOphaahD.js +4 -0
- package/dist/{time-BB30r1tK.js → time-U9NHhrDC.js} +4 -4
- package/dist/{timeline-definition-XQNQX7LJ-1mv5caPW.js → timeline-definition-XQNQX7LJ-rojWjX6M.js} +7 -7
- package/dist/{toNumber-D3Ystr3y.js → toNumber-CUG0Hyhp.js} +2 -2
- package/dist/{toString-CbuxCRDG.js → toString-CT4n1k2E.js} +2 -2
- package/dist/toml-hgYsPM5p.js +4 -0
- package/dist/treemap-75Q7IDZK-Do1WIR9v.js +24 -0
- package/dist/troff-BwevrEUZ.js +4 -0
- package/dist/{dtd-RplB6hDg.js → ttcn-C5gJcxta.js} +2 -2
- package/dist/ttcn-cfg-CPKlfqST.js +4 -0
- package/dist/turtle-EH0lMhMf.js +4 -0
- package/dist/{types-BPohCsA7.js → types-Bt7p5SYB.js} +1028 -1038
- package/dist/uniq-DgSyegN3.js +8 -0
- package/dist/{useAsyncData-DHBqeb9a.js → useAsyncData-Dp2V69OV.js} +3 -3
- package/dist/{useIframeCapabilities-BEvvwlwt.js → useIframeCapabilities-B9u0SmJ4.js} +2 -2
- package/dist/{useTheme-CnMbo-iq.js → useTheme-D7vlj42b.js} +4 -4
- package/dist/vb-DNk7gts-.js +4 -0
- package/dist/vbscript-znK_5PUS.js +4 -0
- package/dist/vega-component-C58Jk3ub.js +633 -0
- package/dist/{vega-loader.browser.module-CFMtdrNw.js → vega-loader.browser-BK7-IO9k.js} +91 -99
- package/dist/velocity-DmPhlhdp.js +4 -0
- package/dist/verilog-CePnwf4S.js +4 -0
- package/dist/vhdl-Ckdh8uiO.js +4 -0
- package/dist/webidl-8N8qbzRd.js +4 -0
- package/dist/xquery-Cocyk-z0.js +4 -0
- package/dist/{xychartDiagram-6GGTOJPD-njc-naaw.js → xychartDiagram-6GGTOJPD-CiC1eONZ.js} +23 -23
- package/dist/yacas-CPmShRg-.js +4 -0
- package/dist/z80-B500UaFh.js +4 -0
- package/package.json +12 -9
- package/src/components/ai/ai-provider-icon.tsx +2 -1
- package/src/components/app-config/constants.ts +25 -1
- package/src/components/charts/lazy.tsx +7 -0
- package/src/components/charts/tooltip.ts +5 -0
- package/src/components/charts/types.ts +8 -0
- package/src/components/chat/acp/__tests__/state.test.ts +0 -13
- package/src/components/chat/acp/agent-panel.tsx +7 -1
- package/src/components/chat/acp/agent-selector.tsx +5 -0
- package/src/components/chat/acp/blocks.tsx +51 -8
- package/src/components/chat/acp/state.ts +8 -2
- package/src/components/chat/acp/thread.tsx +10 -3
- package/src/components/chat/chat-panel.tsx +7 -1
- package/src/components/data-table/__tests__/__snapshots__/chart-spec-model.test.ts.snap +473 -184
- package/src/components/data-table/__tests__/chart-spec-model.test.ts +32 -28
- package/src/components/data-table/charts/__tests__/__snapshots__/spec-snapshot.test.ts.snap +1 -1
- package/src/components/data-table/charts/__tests__/altair-generator.test.ts +162 -0
- package/src/components/data-table/charts/__tests__/spec-snapshot.test.ts +1 -1
- package/src/components/data-table/charts/__tests__/spec.test.ts +145 -6
- package/src/components/data-table/charts/chart-spec/altair-generator.ts +6 -1
- package/src/components/data-table/charts/chart-spec/encodings.ts +11 -7
- package/src/components/data-table/charts/chart-spec/spec.ts +9 -8
- package/src/components/data-table/charts/chart-spec/tooltips.ts +4 -3
- package/src/components/data-table/charts/chart-spec/types.ts +1 -1
- package/src/components/data-table/charts/chart-spec/utils.ts +23 -0
- package/src/components/data-table/charts/components/form-fields.tsx +2 -2
- package/src/components/data-table/charts/constants.ts +7 -3
- package/src/components/data-table/charts/lazy-chart.tsx +15 -11
- package/src/components/data-table/charts/types.ts +6 -14
- package/src/components/data-table/column-summary/chart-spec-model.tsx +112 -269
- package/src/components/data-table/column-summary/column-summary.tsx +12 -12
- package/src/components/data-table/column-summary/legacy-chart-spec.ts +78 -2
- package/src/components/data-table/column-summary/utils.ts +1 -1
- package/src/components/datasources/__tests__/utils.test.ts +339 -138
- package/src/components/datasources/column-preview.tsx +9 -9
- package/src/components/datasources/datasources.tsx +4 -0
- package/src/components/datasources/utils.ts +94 -4
- package/src/components/editor/Output.tsx +9 -6
- package/src/components/editor/ai/ai-completion-editor.tsx +2 -2
- package/src/components/editor/code/readonly-diff.tsx +4 -0
- package/src/components/editor/output/ConsoleOutput.tsx +14 -11
- package/src/components/editor/renderers/slides-layout/types.ts +1 -1
- package/src/components/tracing/tracing-spec.ts +2 -2
- package/src/components/tracing/tracing.test.tsx +1 -1
- package/src/components/tracing/tracing.tsx +57 -74
- package/src/components/tracing/utils.ts +22 -0
- package/src/components/ui/query-param-preserving-link.tsx +48 -0
- package/src/core/ai/context/providers/__tests__/cell-output.test.ts +12 -1
- package/src/core/ai/context/providers/cell-output.ts +2 -8
- package/src/core/ai/tools/__tests__/run-cells-tool.test.ts +1 -1
- package/src/core/ai/tools/edit-notebook-tool.ts +15 -7
- package/src/core/ai/tools/run-cells-tool.ts +60 -26
- package/src/core/cells/ids.ts +1 -1
- package/src/core/codemirror/language/__tests__/extension.test.ts +6 -12
- package/src/core/codemirror/language/__tests__/markdown.test.ts +23 -36
- package/src/core/codemirror/language/languages/python.ts +40 -6
- package/src/core/codemirror/language/languages/sql/completion-store.ts +2 -2
- package/src/core/codemirror/language/languages/sql/sql.ts +14 -0
- package/src/core/codemirror/language/languages/sql/utils.ts +54 -3
- package/src/core/codemirror/lsp/notebook-lsp.ts +52 -4
- package/src/core/codemirror/lsp/transports.ts +3 -0
- package/src/core/datasets/__tests__/data-source.test.ts +6 -0
- package/src/core/datasets/data-source-connections.ts +1 -0
- package/src/core/dom/__tests__/outline.test.ts +43 -0
- package/src/core/dom/outline.ts +1 -1
- package/src/core/islands/main.ts +2 -0
- package/src/core/lsp/__tests__/transport.test.ts +57 -0
- package/src/core/lsp/transport.ts +16 -0
- package/src/plugins/core/RenderHTML.tsx +26 -0
- package/src/plugins/core/sanitize.ts +8 -1
- package/src/plugins/impl/DataTablePlugin.tsx +21 -27
- package/src/plugins/impl/data-explorer/ConnectedDataExplorerComponent.tsx +26 -22
- package/src/plugins/impl/data-explorer/functions/function.ts +1 -2
- package/src/plugins/impl/data-explorer/functions/types.ts +65 -14
- package/src/plugins/impl/data-explorer/queries/queries.ts +9 -9
- package/src/plugins/impl/data-explorer/queries/types.ts +23 -5
- package/src/plugins/impl/data-frames/DataFramePlugin.tsx +2 -1
- package/src/plugins/impl/vega/__tests__/__snapshots__/make-selectable.test.ts.snap +2309 -0
- package/src/plugins/impl/vega/__tests__/encodings.test.ts +93 -0
- package/src/plugins/impl/vega/__tests__/make-selectable.test.ts +621 -0
- package/src/plugins/impl/vega/__tests__/params.test.ts +121 -1
- package/src/plugins/impl/vega/encodings.ts +16 -2
- package/src/plugins/impl/vega/make-selectable.ts +339 -10
- package/src/plugins/impl/vega/params.ts +76 -14
- package/src/plugins/impl/vega/types.ts +32 -13
- package/src/plugins/impl/vega/vega-component.tsx +74 -26
- package/src/plugins/impl/vega/vega.css +1 -0
- package/src/stories/__fixtures__/vega.ts +1 -1
- package/src/utils/arrays.ts +16 -0
- package/dist/_baseUniq-CKN9mEDq.js +0 -324
- package/dist/any-language-editor-Du2Q_6IK.js +0 -156
- package/dist/apl-CUm2DGqh.js +0 -4
- package/dist/architecture-O4VJ6CD3-PFw3eFBY.js +0 -21
- package/dist/asciiarmor-lqJ78U01.js +0 -4
- package/dist/asn1-CjwpSTlW.js +0 -4
- package/dist/brainfuck-ClvDI1dq.js +0 -4
- package/dist/classDiagram-KNZD7YFC-HUFFxNdk.js +0 -40
- package/dist/classDiagram-v2-RKCZMP56-Dw7Acmuf.js +0 -40
- package/dist/clojure-8GefCgPe.js +0 -4
- package/dist/cmake-yAhT9H0F.js +0 -4
- package/dist/cobol-BmltueOY.js +0 -4
- package/dist/coffeescript-C7KEQBcH.js +0 -4
- package/dist/commonlisp-CNbiJRU-.js +0 -4
- package/dist/crystal-OdjZZ8bc.js +0 -4
- package/dist/css-DhTxMmL_.js +0 -5
- package/dist/cypher-CgN8E3YI.js +0 -4
- package/dist/d-g41sJcBC.js +0 -4
- package/dist/diff-ViRYYhhg.js +0 -4
- package/dist/dist-BfJO8Bm9.js +0 -12
- package/dist/dist-CLuF3AtO.js +0 -6
- package/dist/dist-CU04U4NL.js +0 -10
- package/dist/dist-DNUT6b47.js +0 -6
- package/dist/dist-DbAb2sY7.js +0 -6
- package/dist/dist-DiDFQ2Rk.js +0 -6
- package/dist/dist-SNAyAOJ-.js +0 -6
- package/dist/dist-cbW5xJNV.js +0 -6
- package/dist/dist-h8eGLSbK.js +0 -10
- package/dist/dylan-BX8KJufP.js +0 -4
- package/dist/ecl-CWtLaNMH.js +0 -4
- package/dist/eiffel-C-mlZPMn.js +0 -4
- package/dist/elm-CWp06vcb.js +0 -4
- package/dist/erlang-pfp22AZM.js +0 -4
- package/dist/error-banner-BAWlXn49.js +0 -1012
- package/dist/esm-B2pocBPL.js +0 -26
- package/dist/esm-YVnxJqkD.js +0 -33066
- package/dist/factor-CEn53jua.js +0 -5
- package/dist/forth-CL8vu_y8.js +0 -4
- package/dist/fortran-DsmXkYtE.js +0 -4
- package/dist/gas-mYt9Rtlx.js +0 -4
- package/dist/gherkin-DHNCKBNj.js +0 -4
- package/dist/gitGraph-ZV4HHKMB-Cpd6k0O8.js +0 -21
- package/dist/graphlib-DRS8CrjA.js +0 -227
- package/dist/groovy-DzRtOS5a.js +0 -4
- package/dist/haskell-Bl9iT_Mp.js +0 -4
- package/dist/haxe-DqA0ED6k.js +0 -5
- package/dist/idl-WU2hil4i.js +0 -4
- package/dist/info-63CPKGFF-CG-xzUJo.js +0 -21
- package/dist/infoDiagram-STP46IZ2-zoRBGoup.js +0 -45
- package/dist/javascript-QY2BGJeV.js +0 -5
- package/dist/jinja2-Czleq7Sk.js +0 -4
- package/dist/jsx-runtime-DZyWJV5b.js +0 -31
- package/dist/julia-Dru3Qi0y.js +0 -4
- package/dist/livescript-Dxqi_HLT.js +0 -4
- package/dist/lua-ByH1cUQZ.js +0 -4
- package/dist/mathematica-CWJIFuES.js +0 -4
- package/dist/mbox-qhPIGaUI.js +0 -4
- package/dist/min-Dwa_NbP6.js +0 -93
- package/dist/mirc-yYcXhXBY.js +0 -4
- package/dist/mllike-BfT_Nl9x.js +0 -6
- package/dist/modelica-lVDtz1Rm.js +0 -4
- package/dist/mscgen-DvwdD1QJ.js +0 -6
- package/dist/mumps-BiY3GwKd.js +0 -4
- package/dist/nsis-Dk18Sq_4.js +0 -5
- package/dist/ntriples-Cj-8VqKF.js +0 -4
- package/dist/octave-BgFAaYjU.js +0 -4
- package/dist/oz-IsEG1I1m.js +0 -4
- package/dist/packet-HUATNLJX-Cafuo3IG.js +0 -21
- package/dist/pascal-BVf7FtIE.js +0 -4
- package/dist/perl-BM0-y4mZ.js +0 -4
- package/dist/pie-WTHONI2E-BE0pHBwB.js +0 -21
- package/dist/pig-CLBjzQmc.js +0 -4
- package/dist/powershell-B_qvE33J.js +0 -4
- package/dist/properties-CUTpsH2y.js +0 -4
- package/dist/protobuf-DqCP8a-0.js +0 -4
- package/dist/pug-BvexKkw4.js +0 -5
- package/dist/puppet-CoIi0R3f.js +0 -4
- package/dist/python-C-11-YMh.js +0 -5
- package/dist/q-CCVgEip7.js +0 -4
- package/dist/r-CIdR0Sfs.js +0 -4
- package/dist/radar-NJJJXTRR-0adgjw0u.js +0 -21
- package/dist/rpm-Dwvm039g.js +0 -5
- package/dist/ruby-DpTnO5gb.js +0 -4
- package/dist/sas-CK9boxgv.js +0 -4
- package/dist/scheme-Y1aYL-Qq.js +0 -4
- package/dist/shell-D3eXGsHd.js +0 -4
- package/dist/sieve-BdwSFdWJ.js +0 -4
- package/dist/smalltalk-BTYJquCm.js +0 -4
- package/dist/sparql-CYF0g4Cc.js +0 -4
- package/dist/stateDiagram-v2-UMBNRL4Z-DdJ7qVWc.js +0 -39
- package/dist/stex-CyWhoWHt.js +0 -5
- package/dist/stylus-BBiKaI2h.js +0 -4
- package/dist/swift-COb15qFR.js +0 -4
- package/dist/tcl-Jik1LXu9.js +0 -4
- package/dist/textile-BFHPD3wr.js +0 -4
- package/dist/toml-Brp9fBXs.js +0 -4
- package/dist/treemap-75Q7IDZK-CyBT8_Wh.js +0 -21
- package/dist/troff-CcZRW4vg.js +0 -4
- package/dist/tslib.es6-3ZL768sZ.js +0 -49
- package/dist/ttcn-Bz_6ifRd.js +0 -4
- package/dist/ttcn-cfg-v-yi2rKc.js +0 -4
- package/dist/turtle-CDOsZYhB.js +0 -4
- package/dist/useDateFormatter-BkbjKw83.js +0 -543
- package/dist/vb-CL7fRwRw.js +0 -4
- package/dist/vbscript-CR2xfxpw.js +0 -4
- package/dist/vega-component-BfFcXZxw.js +0 -465
- package/dist/velocity-CfuZoxPt.js +0 -4
- package/dist/verilog-CySTkzw_.js +0 -4
- package/dist/vhdl-Dvcd8KHW.js +0 -4
- package/dist/webidl-tbJt7sKk.js +0 -4
- package/dist/xquery-DJQVztyc.js +0 -4
- package/dist/yacas-BbgBReEH.js +0 -4
- package/dist/z80-DPyb8VGz.js +0 -4
- /package/dist/{_arrayReduce-Cd9xQjbl.js → _arrayReduce-CmsTTAw1.js} +0 -0
- /package/dist/{_baseSlice-CE9WsQZm.js → _baseSlice-CAnpEJwx.js} +0 -0
- /package/dist/{_hasUnicode-DkEebvtD.js → _hasUnicode-CbmCTPAa.js} +0 -0
- /package/dist/{apl-aGhy11IM.js → apl-Css595_H.js} +0 -0
- /package/dist/{array-DYSXIreg.js → array-D3smvOQ_.js} +0 -0
- /package/dist/{asciiarmor-DJKJ3Gkn.js → asciiarmor-BTCuJwxh.js} +0 -0
- /package/dist/{asn1-C6f5IeNs.js → asn1-DXjhS5QI.js} +0 -0
- /package/dist/{asterisk-DB1poX9_.js → asterisk-5HlmsIaw.js} +0 -0
- /package/dist/{brainfuck-Ch9vjun0.js → brainfuck--WlEc-iG.js} +0 -0
- /package/dist/{chunk-57QY23SG-BpXU7ph4.js → chunk-57QY23SG-D7ymhFFp.js} +0 -0
- /package/dist/{click-outside-container-2BH589Bq.js → click-outside-container-DSVM9sZw.js} +0 -0
- /package/dist/{clike-Bc2PZzZQ.js → clike-DDIJB_R8.js} +0 -0
- /package/dist/{clojure-B_lpr3zt.js → clojure-Z-GPBZyY.js} +0 -0
- /package/dist/{cmake-DaocNF4I.js → cmake-DncBqspt.js} +0 -0
- /package/dist/{cobol-suTPtt7c.js → cobol-DqUe0gl7.js} +0 -0
- /package/dist/{coffeescript-CPLIvtqJ.js → coffeescript-CH5_OO0H.js} +0 -0
- /package/dist/{colors-BXlG8Lmz.js → colors-DQmMCNWX.js} +0 -0
- /package/dist/{common-keywords-Bhll7O3b.js → common-keywords-CAEsQSF5.js} +0 -0
- /package/dist/{commonlisp-BqM3qFK7.js → commonlisp-UmhR9BfE.js} +0 -0
- /package/dist/{crystal-AsSFu4ke.js → crystal-5Sqf7MXt.js} +0 -0
- /package/dist/{css-Df7Sdeyh.js → css-bDybSxwf.js} +0 -0
- /package/dist/{cypher-CaVKL6Gu.js → cypher-PIeAFhrd.js} +0 -0
- /package/dist/{cytoscape.esm-BFEMljQI.js → cytoscape.esm-DclyBJ4D.js} +0 -0
- /package/dist/{d-DCGWK7NQ.js → d-Bd8EVRQt.js} +0 -0
- /package/dist/{defaultLocale-Cto8YOmX.js → defaultLocale-BPzjWfXP.js} +0 -0
- /package/dist/{defaultLocale-CYgZlqDF.js → defaultLocale-Om7Wxg5c.js} +0 -0
- /package/dist/{diff-CsxOM4Tr.js → diff-CAQdgtD6.js} +0 -0
- /package/dist/{dtd-Dwr0Jmks.js → dtd-eKW3pZj_.js} +0 -0
- /package/dist/{duckdb-keywords-7wAWf848.js → duckdb-keywords-BC3kWZZM.js} +0 -0
- /package/dist/{dylan-A7-ZBSey.js → dylan-CIO7R9Tr.js} +0 -0
- /package/dist/{ebnf-9_SaGDUz.js → ebnf-Pr4a9I6n.js} +0 -0
- /package/dist/{ecl-BzJVIQDc.js → ecl-BqYW-aOJ.js} +0 -0
- /package/dist/{eiffel-CO9eC_Op.js → eiffel-BOKM91eM.js} +0 -0
- /package/dist/{elm-CVAWj8SB.js → elm-3sobs3PV.js} +0 -0
- /package/dist/{emotion-is-prop-valid.esm-C3Yi5GQt.js → emotion-is-prop-valid.esm-Cm1uulbm.js} +0 -0
- /package/dist/{erlang-DWbZP546.js → erlang-C5EBzhP1.js} +0 -0
- /package/dist/{esm-AtKNNGYO.js → esm-CopBBL2y.js} +0 -0
- /package/dist/{fcl-CM9t2iay.js → fcl-Brh8s8q_.js} +0 -0
- /package/dist/{forth-BTYqUuu3.js → forth-DneRHr4K.js} +0 -0
- /package/dist/{fortran-DgAjHcCq.js → fortran-DsdmZbwQ.js} +0 -0
- /package/dist/{gas-BjDSWPZd.js → gas-DaoJ65Z9.js} +0 -0
- /package/dist/{gherkin-ClRqqpKv.js → gherkin-DUP_UlW-.js} +0 -0
- /package/dist/{groovy-BzNjnc8x.js → groovy-Rvyan8yX.js} +0 -0
- /package/dist/{haskell-DLdk34Jq.js → haskell-DIvpY54L.js} +0 -0
- /package/dist/{haxe-l6gaY_IS.js → haxe-Da_5bBNs.js} +0 -0
- /package/dist/{http-6Qg7z_h2.js → http-CMvcwl3E.js} +0 -0
- /package/dist/{idl-hlWT4D26.js → idl-DvL3aO0N.js} +0 -0
- /package/dist/{init-tZ42Torz.js → init-BNp5RczD.js} +0 -0
- /package/dist/{invariant-D3JoRb4I.js → invariant-Cl2wkkjN.js} +0 -0
- /package/dist/{isArrayLikeObject-DU5MCuQM.js → isArrayLikeObject-1qkWxZbL.js} +0 -0
- /package/dist/{javascript-DGukg1sB.js → javascript-DoyAP8vn.js} +0 -0
- /package/dist/{jinja2-DI5k_Er3.js → jinja2-Veqp7mFj.js} +0 -0
- /package/dist/{julia-BvDZDiIT.js → julia-Gi684CX7.js} +0 -0
- /package/dist/{katex-DgfMWJY9.js → katex-U6RPAuWM.js} +0 -0
- /package/dist/{livescript-2YMQfkfI.js → livescript-BKj_Zhvo.js} +0 -0
- /package/dist/{lua-DIUrQRfA.js → lua-CDA7hreG.js} +0 -0
- /package/dist/{main-BMTpe7M0.js → main-63eIj2Yx.js} +0 -0
- /package/dist/{marked.esm-DkVwEwtO.js → marked.esm-DE8HU3tw.js} +0 -0
- /package/dist/{math-qsHyz2Eo.js → math-C2iLT5gz.js} +0 -0
- /package/dist/{mathematica-Dqmg_BwL.js → mathematica-GWfSHReY.js} +0 -0
- /package/dist/{mbox-Cng-P-F1.js → mbox-Dwsrc4Ak.js} +0 -0
- /package/dist/{mirc-CNDqOVhQ.js → mirc-B2JE5ype.js} +0 -0
- /package/dist/{mllike-C1n2UDyX.js → mllike-BkBh4PFX.js} +0 -0
- /package/dist/{modelica-QqQC2pFj.js → modelica-C0hNlKgR.js} +0 -0
- /package/dist/{mscgen-C3fl8uhp.js → mscgen-DWWpdZnb.js} +0 -0
- /package/dist/{mumps-BeCUbMej.js → mumps-CMePAlSe.js} +0 -0
- /package/dist/{nginx-ejv7DsBz.js → nginx-GurZbX0E.js} +0 -0
- /package/dist/{node-sql-parser-CoPWN4hn.js → node-sql-parser-IKID_dZE.js} +0 -0
- /package/dist/{ntriples-CUgUpcma.js → ntriples-BnE6tX0Y.js} +0 -0
- /package/dist/{octave-BD652tGl.js → octave-Dfu3PmNP.js} +0 -0
- /package/dist/{oz-DrRsFa0K.js → oz-DqNpAjpZ.js} +0 -0
- /package/dist/{pascal-hpcx9sVn.js → pascal-GP_8jbNL.js} +0 -0
- /package/dist/{path-Bbv2tLY1.js → path-BeMi_1Je.js} +0 -0
- /package/dist/{perl-DW8XHeFc.js → perl-DUDEqQOD.js} +0 -0
- /package/dist/{pig-Cv7Nxbfo.js → pig-Csr4LnKs.js} +0 -0
- /package/dist/{powershell-Dr7WZMDU.js → powershell-Cw4tDKZx.js} +0 -0
- /package/dist/{prop-types-Bd16OEUP.js → prop-types-CzOfzj9N.js} +0 -0
- /package/dist/{properties-D-qJDXAM.js → properties-CUhUGfHR.js} +0 -0
- /package/dist/{protobuf-B48QZbd3.js → protobuf-CPZe957V.js} +0 -0
- /package/dist/{puppet-15JDyiY2.js → puppet-BP1AOwo6.js} +0 -0
- /package/dist/{purify.es-CrfFzTyi.js → purify.es-CDFkadZl.js} +0 -0
- /package/dist/{python-DWkQA94h.js → python-BMcMimC3.js} +0 -0
- /package/dist/{q-BzRpKgfd.js → q-BNfSHUci.js} +0 -0
- /package/dist/{r-dcNRe_Q8.js → r-DiJzLRZc.js} +0 -0
- /package/dist/{range-CQvYp_qE.js → range-sX2tw-Jz.js} +0 -0
- /package/dist/{react-dom-CpBooCbY.js → react-dom-BTjywDxo.js} +0 -0
- /package/dist/{rpm-Djl3Dsf1.js → rpm-CywAxCKo.js} +0 -0
- /package/dist/{ruby-Dd2CZTip.js → ruby-B0a4mSSU.js} +0 -0
- /package/dist/{sas-DYF5_Iqu.js → sas-DTh30wZQ.js} +0 -0
- /package/dist/{scheme-YtWcji1H.js → scheme-CsOlAIFf.js} +0 -0
- /package/dist/{shell-C3uC3Y0Z.js → shell-7w75P-tg.js} +0 -0
- /package/dist/{sieve-DHB17sQG.js → sieve-BphUEMa4.js} +0 -0
- /package/dist/{simple-mode-BMmwP_vI.js → simple-mode-BcThS5Pa.js} +0 -0
- /package/dist/{smalltalk-Y5v1Np3H.js → smalltalk-CHwdNey_.js} +0 -0
- /package/dist/{solr-DvRJLlRD.js → solr-CuWbYJLt.js} +0 -0
- /package/dist/{sparql-BEt3GJwM.js → sparql-BtwCqUvT.js} +0 -0
- /package/dist/{spreadsheet-Dp4B9_rc.js → spreadsheet-C1JzeuKn.js} +0 -0
- /package/dist/{sql-DBsUs8nQ.js → sql-wv_2DQzf.js} +0 -0
- /package/dist/{stex-C6-x52ei.js → stex-BmcrV7cx.js} +0 -0
- /package/dist/{stylus-DroA8via.js → stylus-SVJ7TGPh.js} +0 -0
- /package/dist/{swift-DR0x1ESK.js → swift-f7KaABxm.js} +0 -0
- /package/dist/{tcl-BeuTFc_c.js → tcl-CbTFkeHJ.js} +0 -0
- /package/dist/{textile-C0ikhHN3.js → textile-CFn6QLRy.js} +0 -0
- /package/dist/{tiddlywiki-C_2Nvsgu.js → tiddlywiki-DBhMcdVM.js} +0 -0
- /package/dist/{tiki-CKQlhmQQ.js → tiki-CqcXr_YN.js} +0 -0
- /package/dist/{timer-CcUhugb0.js → timer-ly0jlpkr.js} +0 -0
- /package/dist/{toml-BqNUJWRI.js → toml-YgDIoI1n.js} +0 -0
- /package/dist/{treemap-BYLUKIzA.js → treemap-D5sUCpbF.js} +0 -0
- /package/dist/{troff-DkK0f2ZH.js → troff-CIp_4RXg.js} +0 -0
- /package/dist/{ttcn-Bf8vrg-_.js → ttcn-Yn_uOBYK.js} +0 -0
- /package/dist/{ttcn-cfg-DjCKzd95.js → ttcn-cfg-BVum2rmM.js} +0 -0
- /package/dist/{turtle-SSc84S9m.js → turtle-BeWx-YoQ.js} +0 -0
- /package/dist/{vb-CQ6DC3cL.js → vb-DKEmSA_2.js} +0 -0
- /package/dist/{vbscript-Dw0gFssg.js → vbscript-BPsxuP0n.js} +0 -0
- /package/dist/{velocity-BvJQyBmj.js → velocity-ycm1NvlO.js} +0 -0
- /package/dist/{verilog-CKGAvQjj.js → verilog-ogjm0Ytr.js} +0 -0
- /package/dist/{vhdl-B40_x6fM.js → vhdl-BvjyOM9y.js} +0 -0
- /package/dist/{webidl-Bi9hczCv.js → webidl-QdwcTYEu.js} +0 -0
- /package/dist/{xquery-DwWUXvP3.js → xquery-BErHIIc-.js} +0 -0
- /package/dist/{yacas-ClUs0mmH.js → yacas-BBBJNs0h.js} +0 -0
- /package/dist/{z80-DPC4UGzR.js → z80-nG9RRukG.js} +0 -0
- /package/dist/{zod-mAEs2ITo.js → zod-0AbTN3Cg.js} +0 -0
|
@@ -10,10 +10,12 @@ import { getRuntimeManager } from "../../runtime/config";
|
|
|
10
10
|
* before connecting to the LSP server.
|
|
11
11
|
*
|
|
12
12
|
* @param serverName - The name of the LSP server.
|
|
13
|
+
* @param onReconnect - Optional callback to call after reconnection (e.g., to resync documents).
|
|
13
14
|
* @returns The transport.
|
|
14
15
|
*/
|
|
15
16
|
export function createTransport(
|
|
16
17
|
serverName: "pylsp" | "basedpyright" | "copilot" | "ty",
|
|
18
|
+
onReconnect?: () => Promise<void>,
|
|
17
19
|
) {
|
|
18
20
|
const runtimeManager = getRuntimeManager();
|
|
19
21
|
return new ReconnectingWebSocketTransport({
|
|
@@ -21,5 +23,6 @@ export function createTransport(
|
|
|
21
23
|
waitForConnection: async () => {
|
|
22
24
|
await waitForConnectionOpen();
|
|
23
25
|
},
|
|
26
|
+
onReconnect,
|
|
24
27
|
});
|
|
25
28
|
}
|
|
@@ -270,6 +270,7 @@ describe("add table list", () => {
|
|
|
270
270
|
engine: "conn1" as ConnectionName,
|
|
271
271
|
database: "db1",
|
|
272
272
|
schema: "public",
|
|
273
|
+
dialect: "sqlite",
|
|
273
274
|
});
|
|
274
275
|
|
|
275
276
|
const conn1 = newState.connectionsMap.get("conn1" as ConnectionName);
|
|
@@ -283,6 +284,7 @@ describe("add table list", () => {
|
|
|
283
284
|
engine: "conn1" as ConnectionName,
|
|
284
285
|
database: "db1",
|
|
285
286
|
schema: "public",
|
|
287
|
+
dialect: "sqlite",
|
|
286
288
|
};
|
|
287
289
|
|
|
288
290
|
const tableList: DataTable[] = [
|
|
@@ -344,6 +346,7 @@ describe("add table list", () => {
|
|
|
344
346
|
engine: "conn1" as ConnectionName,
|
|
345
347
|
database: "db1",
|
|
346
348
|
schema: "non_existent",
|
|
349
|
+
dialect: "sqlite",
|
|
347
350
|
});
|
|
348
351
|
|
|
349
352
|
const conn1 = newState.connectionsMap.get("conn1" as ConnectionName);
|
|
@@ -407,6 +410,7 @@ describe("add table", () => {
|
|
|
407
410
|
engine: "conn1" as ConnectionName,
|
|
408
411
|
database: "db1",
|
|
409
412
|
schema: "public",
|
|
413
|
+
dialect: "sqlite",
|
|
410
414
|
});
|
|
411
415
|
|
|
412
416
|
const conn1 = newState.connectionsMap.get("conn1" as ConnectionName);
|
|
@@ -420,6 +424,7 @@ describe("add table", () => {
|
|
|
420
424
|
engine: "conn1" as ConnectionName,
|
|
421
425
|
database: "db1",
|
|
422
426
|
schema: "public",
|
|
427
|
+
dialect: "sqlite",
|
|
423
428
|
};
|
|
424
429
|
|
|
425
430
|
const table: DataTable = {
|
|
@@ -476,6 +481,7 @@ describe("add table", () => {
|
|
|
476
481
|
engine: "conn1" as ConnectionName,
|
|
477
482
|
database: "db1",
|
|
478
483
|
schema: "non_existent",
|
|
484
|
+
dialect: "sqlite",
|
|
479
485
|
});
|
|
480
486
|
|
|
481
487
|
const conn1 = newState.connectionsMap.get("conn1" as ConnectionName);
|
|
@@ -137,6 +137,49 @@ describe("parseOutline", () => {
|
|
|
137
137
|
`);
|
|
138
138
|
});
|
|
139
139
|
|
|
140
|
+
it("can parse markdown outline", () => {
|
|
141
|
+
const markdown = `
|
|
142
|
+
<span class="markdown">
|
|
143
|
+
<h1 id="introduction">Introduction</h1>
|
|
144
|
+
<h2 id="getting-started">Getting Started</h2>
|
|
145
|
+
<h3 id="installation">Installation</h3>
|
|
146
|
+
</span>
|
|
147
|
+
`;
|
|
148
|
+
const outline = parseOutline({
|
|
149
|
+
mimetype: "text/markdown",
|
|
150
|
+
timestamp: 0,
|
|
151
|
+
channel: "output",
|
|
152
|
+
data: markdown,
|
|
153
|
+
});
|
|
154
|
+
expect(outline).toMatchInlineSnapshot(`
|
|
155
|
+
{
|
|
156
|
+
"items": [
|
|
157
|
+
{
|
|
158
|
+
"by": {
|
|
159
|
+
"id": "introduction",
|
|
160
|
+
},
|
|
161
|
+
"level": 1,
|
|
162
|
+
"name": "Introduction",
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"by": {
|
|
166
|
+
"id": "getting-started",
|
|
167
|
+
},
|
|
168
|
+
"level": 2,
|
|
169
|
+
"name": "Getting Started",
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"by": {
|
|
173
|
+
"id": "installation",
|
|
174
|
+
},
|
|
175
|
+
"level": 3,
|
|
176
|
+
"name": "Installation",
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
}
|
|
180
|
+
`);
|
|
181
|
+
});
|
|
182
|
+
|
|
140
183
|
it("can handle non-html outline", () => {
|
|
141
184
|
const html = "foo";
|
|
142
185
|
const outline = parseOutline({
|
package/src/core/dom/outline.ts
CHANGED
package/src/core/islands/main.ts
CHANGED
|
@@ -36,6 +36,7 @@ import {
|
|
|
36
36
|
} from "../kernel/handlers";
|
|
37
37
|
import { queryParamHandlers } from "../kernel/queryParamHandlers";
|
|
38
38
|
import { RuntimeState } from "../kernel/RuntimeState";
|
|
39
|
+
import { initialModeAtom } from "../mode";
|
|
39
40
|
import type { RequestId } from "../network/DeferredRequestRegistry";
|
|
40
41
|
import { requestClientAtom } from "../network/requests";
|
|
41
42
|
import { store } from "../state/jotai";
|
|
@@ -57,6 +58,7 @@ import { dismissIslandsLoadingToast, toastIslandsLoading } from "./toast";
|
|
|
57
58
|
export async function initialize() {
|
|
58
59
|
// Setup networking
|
|
59
60
|
store.set(requestClientAtom, IslandsPyodideBridge.INSTANCE);
|
|
61
|
+
store.set(initialModeAtom, "read");
|
|
60
62
|
|
|
61
63
|
// This will display all the static HTML content.
|
|
62
64
|
initializePlugins();
|
|
@@ -230,4 +230,61 @@ describe("ReconnectingWebSocketTransport", () => {
|
|
|
230
230
|
|
|
231
231
|
expect(WebSocketTransport).toHaveBeenCalledTimes(1);
|
|
232
232
|
});
|
|
233
|
+
|
|
234
|
+
it("should call onReconnect callback after reconnection", async () => {
|
|
235
|
+
const getWsUrl = vi.fn(() => mockWsUrl);
|
|
236
|
+
const onReconnect = vi.fn().mockResolvedValue(undefined);
|
|
237
|
+
const transport = new ReconnectingWebSocketTransport({
|
|
238
|
+
getWsUrl,
|
|
239
|
+
onReconnect,
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
// First connection - callback should not be called
|
|
243
|
+
await transport.connect();
|
|
244
|
+
expect(onReconnect).not.toHaveBeenCalled();
|
|
245
|
+
|
|
246
|
+
// Simulate connection loss
|
|
247
|
+
mockConnection.readyState = WebSocket.CLOSED;
|
|
248
|
+
|
|
249
|
+
// Reconnect - callback should be called this time
|
|
250
|
+
const data: any = { method: "test", params: [] };
|
|
251
|
+
await transport.sendData(data, 5000);
|
|
252
|
+
|
|
253
|
+
expect(onReconnect).toHaveBeenCalledTimes(1);
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
it("should not call onReconnect callback on first connection", async () => {
|
|
257
|
+
const getWsUrl = vi.fn(() => mockWsUrl);
|
|
258
|
+
const onReconnect = vi.fn().mockResolvedValue(undefined);
|
|
259
|
+
const transport = new ReconnectingWebSocketTransport({
|
|
260
|
+
getWsUrl,
|
|
261
|
+
onReconnect,
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
await transport.connect();
|
|
265
|
+
|
|
266
|
+
expect(onReconnect).not.toHaveBeenCalled();
|
|
267
|
+
});
|
|
268
|
+
|
|
269
|
+
it("should handle onReconnect callback errors gracefully", async () => {
|
|
270
|
+
const getWsUrl = vi.fn(() => mockWsUrl);
|
|
271
|
+
const reconnectError = new Error("Reconnect callback failed");
|
|
272
|
+
const onReconnect = vi.fn().mockRejectedValue(reconnectError);
|
|
273
|
+
const transport = new ReconnectingWebSocketTransport({
|
|
274
|
+
getWsUrl,
|
|
275
|
+
onReconnect,
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
// First connection
|
|
279
|
+
await transport.connect();
|
|
280
|
+
|
|
281
|
+
// Simulate connection loss
|
|
282
|
+
mockConnection.readyState = WebSocket.CLOSED;
|
|
283
|
+
|
|
284
|
+
// Reconnect - should propagate the error from onReconnect
|
|
285
|
+
const data: any = { method: "test", params: [] };
|
|
286
|
+
await expect(transport.sendData(data, 5000)).rejects.toThrow(
|
|
287
|
+
"Reconnect callback failed",
|
|
288
|
+
);
|
|
289
|
+
});
|
|
233
290
|
});
|
|
@@ -15,6 +15,12 @@ export interface ReconnectingWebSocketTransportOptions {
|
|
|
15
15
|
* This is useful for ensuring dependencies (like the runtime) are ready.
|
|
16
16
|
*/
|
|
17
17
|
waitForConnection?: () => Promise<void>;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Optional callback that is called after a successful reconnection.
|
|
21
|
+
* This allows the LSP client to re-synchronize state (e.g., re-send document open notifications).
|
|
22
|
+
*/
|
|
23
|
+
onReconnect?: () => Promise<void>;
|
|
18
24
|
}
|
|
19
25
|
|
|
20
26
|
/**
|
|
@@ -26,6 +32,7 @@ export class ReconnectingWebSocketTransport extends Transport {
|
|
|
26
32
|
private readonly options: ReconnectingWebSocketTransportOptions;
|
|
27
33
|
private connectionPromise: Promise<void> | undefined;
|
|
28
34
|
private isClosed = false;
|
|
35
|
+
private hasConnectedBefore = false;
|
|
29
36
|
|
|
30
37
|
constructor(options: ReconnectingWebSocketTransportOptions) {
|
|
31
38
|
super();
|
|
@@ -98,6 +105,15 @@ export class ReconnectingWebSocketTransport extends Transport {
|
|
|
98
105
|
// Connect the delegate
|
|
99
106
|
await delegate.connect();
|
|
100
107
|
Logger.log("WebSocket transport connected successfully");
|
|
108
|
+
|
|
109
|
+
// If this is a reconnection, call the onReconnect callback
|
|
110
|
+
const isReconnection = this.hasConnectedBefore;
|
|
111
|
+
this.hasConnectedBefore = true;
|
|
112
|
+
|
|
113
|
+
if (isReconnection && this.options.onReconnect) {
|
|
114
|
+
Logger.log("Calling onReconnect callback to re-synchronize state");
|
|
115
|
+
await this.options.onReconnect();
|
|
116
|
+
}
|
|
101
117
|
} catch (error) {
|
|
102
118
|
Logger.error("WebSocket transport connection failed", error);
|
|
103
119
|
// Clear the delegate on failure so we create a new one on retry
|
|
@@ -13,6 +13,7 @@ import React, {
|
|
|
13
13
|
useRef,
|
|
14
14
|
} from "react";
|
|
15
15
|
import { CopyClipboardIcon } from "@/components/icons/copy-icon";
|
|
16
|
+
import { QueryParamPreservingLink } from "@/components/ui/query-param-preserving-link";
|
|
16
17
|
import { sanitizeHtml, useSanitizeHtml } from "./sanitize";
|
|
17
18
|
|
|
18
19
|
type ReplacementFn = NonNullable<HTMLReactParserOptions["replace"]>;
|
|
@@ -106,6 +107,30 @@ const replaceSrcScripts = (domNode: DOMNode): JSX.Element | undefined => {
|
|
|
106
107
|
}
|
|
107
108
|
};
|
|
108
109
|
|
|
110
|
+
const preserveQueryParamsInAnchorLinks: TransformFn = (
|
|
111
|
+
reactNode: ReactNode,
|
|
112
|
+
domNode: DOMNode,
|
|
113
|
+
): JSX.Element | undefined => {
|
|
114
|
+
if (domNode instanceof Element && domNode.name === "a") {
|
|
115
|
+
const href = domNode.attribs.href;
|
|
116
|
+
// Only handle anchor links (starting with #)
|
|
117
|
+
if (href?.startsWith("#") && !href.startsWith("#code/")) {
|
|
118
|
+
// Get the children from the parsed React node
|
|
119
|
+
let children: ReactNode = null;
|
|
120
|
+
if (isValidElement(reactNode) && "props" in reactNode) {
|
|
121
|
+
const props = reactNode.props as { children?: ReactNode };
|
|
122
|
+
children = props.children;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return (
|
|
126
|
+
<QueryParamPreservingLink href={href} {...domNode.attribs}>
|
|
127
|
+
{children}
|
|
128
|
+
</QueryParamPreservingLink>
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
|
|
109
134
|
// Add copy button to codehilite blocks
|
|
110
135
|
const addCopyButtonToCodehilite: TransformFn = (
|
|
111
136
|
reactNode: ReactNode,
|
|
@@ -198,6 +223,7 @@ function parseHtml({
|
|
|
198
223
|
|
|
199
224
|
const transformFunctions: TransformFn[] = [
|
|
200
225
|
addCopyButtonToCodehilite,
|
|
226
|
+
preserveQueryParamsInAnchorLinks,
|
|
201
227
|
removeWrappingBodyTags,
|
|
202
228
|
removeWrappingHtmlTags,
|
|
203
229
|
];
|
|
@@ -18,7 +18,14 @@ const sanitizeHtmlAtom = atom<boolean>((get) => {
|
|
|
18
18
|
return false;
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
let isInAppMode = true;
|
|
22
|
+
try {
|
|
23
|
+
isInAppMode = getInitialAppMode() === "read";
|
|
24
|
+
} catch {
|
|
25
|
+
// If it fails to get the initial app mode, we default to sanitizing.
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
|
|
22
29
|
// Apps need to run javascript and load external resources.
|
|
23
30
|
if (isInAppMode) {
|
|
24
31
|
return false;
|
|
@@ -57,7 +57,6 @@ import { Alert, AlertTitle } from "@/components/ui/alert";
|
|
|
57
57
|
import { Button } from "@/components/ui/button";
|
|
58
58
|
import { DelayMount } from "@/components/utils/delay-mount";
|
|
59
59
|
import { type CellId, findCellId } from "@/core/cells/ids";
|
|
60
|
-
import { getFeatureFlag } from "@/core/config/feature-flag";
|
|
61
60
|
import { slotsController } from "@/core/slots/slots";
|
|
62
61
|
import { store } from "@/core/state/jotai";
|
|
63
62
|
import { isStaticNotebook } from "@/core/static/static-state";
|
|
@@ -85,15 +84,12 @@ import {
|
|
|
85
84
|
type CsvURL = string;
|
|
86
85
|
export type TableData<T> = T[] | CsvURL;
|
|
87
86
|
|
|
88
|
-
interface ColumnSummariesArgs {
|
|
89
|
-
precompute: boolean;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
87
|
interface ColumnSummaries<T = unknown> {
|
|
93
88
|
data: TableData<T> | null | undefined;
|
|
94
89
|
stats: Record<ColumnName, ColumnHeaderStats>;
|
|
95
90
|
bin_values: Record<ColumnName, BinValues>;
|
|
96
91
|
value_counts: Record<ColumnName, ValueCounts>;
|
|
92
|
+
show_charts: boolean;
|
|
97
93
|
is_disabled?: boolean;
|
|
98
94
|
}
|
|
99
95
|
|
|
@@ -198,9 +194,7 @@ interface Data<T> {
|
|
|
198
194
|
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
|
|
199
195
|
type DataTableFunctions = {
|
|
200
196
|
download_as: DownloadAsArgs;
|
|
201
|
-
get_column_summaries: <T>(
|
|
202
|
-
opts: ColumnSummariesArgs,
|
|
203
|
-
) => Promise<ColumnSummaries<T>>;
|
|
197
|
+
get_column_summaries: <T>(opts: {}) => Promise<ColumnSummaries<T>>;
|
|
204
198
|
search: <T>(req: {
|
|
205
199
|
sort?: {
|
|
206
200
|
by: string;
|
|
@@ -281,19 +275,16 @@ export const DataTablePlugin = createPlugin<S>("marimo-table")
|
|
|
281
275
|
)
|
|
282
276
|
.withFunctions<DataTableFunctions>({
|
|
283
277
|
download_as: DownloadAsSchema,
|
|
284
|
-
get_column_summaries: rpc
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
z.
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
is_disabled: z.boolean().optional(),
|
|
295
|
-
}),
|
|
296
|
-
),
|
|
278
|
+
get_column_summaries: rpc.input(z.looseObject({})).output(
|
|
279
|
+
z.object({
|
|
280
|
+
data: z.union([z.string(), z.array(z.looseObject({}))]).nullable(),
|
|
281
|
+
stats: z.record(z.string(), columnStats),
|
|
282
|
+
bin_values: z.record(z.string(), binValues),
|
|
283
|
+
value_counts: z.record(z.string(), valueCounts),
|
|
284
|
+
show_charts: z.boolean(),
|
|
285
|
+
is_disabled: z.boolean().optional(),
|
|
286
|
+
}),
|
|
287
|
+
),
|
|
297
288
|
search: rpc
|
|
298
289
|
.input(
|
|
299
290
|
z.object({
|
|
@@ -598,8 +589,6 @@ export const LoadingDataTableComponent = memo(
|
|
|
598
589
|
);
|
|
599
590
|
}, [data?.totalRows]);
|
|
600
591
|
|
|
601
|
-
const precompute = getFeatureFlag("performant_table_charts");
|
|
602
|
-
|
|
603
592
|
// Column summaries
|
|
604
593
|
const { data: columnSummaries, error: columnSummariesError } = useAsyncData<
|
|
605
594
|
ColumnSummaries<T>
|
|
@@ -607,9 +596,15 @@ export const LoadingDataTableComponent = memo(
|
|
|
607
596
|
// TODO: props.get_column_summaries is always true,
|
|
608
597
|
// so we are unable to detect if the function is registered
|
|
609
598
|
if (props.totalRows === 0 || !props.showColumnSummaries) {
|
|
610
|
-
return {
|
|
599
|
+
return {
|
|
600
|
+
data: null,
|
|
601
|
+
stats: {},
|
|
602
|
+
bin_values: {},
|
|
603
|
+
value_counts: {},
|
|
604
|
+
show_charts: false,
|
|
605
|
+
};
|
|
611
606
|
}
|
|
612
|
-
return props.get_column_summaries({
|
|
607
|
+
return props.get_column_summaries({});
|
|
613
608
|
}, [
|
|
614
609
|
props.get_column_summaries,
|
|
615
610
|
props.showColumnSummaries,
|
|
@@ -778,8 +773,7 @@ const DataTableComponent = ({
|
|
|
778
773
|
columnSummaries.bin_values,
|
|
779
774
|
columnSummaries.value_counts,
|
|
780
775
|
{
|
|
781
|
-
includeCharts:
|
|
782
|
-
usePreComputedValues: getFeatureFlag("performant_table_charts"),
|
|
776
|
+
includeCharts: columnSummaries.show_charts,
|
|
783
777
|
},
|
|
784
778
|
);
|
|
785
779
|
}, [fieldTypes, columnSummaries]);
|
|
@@ -4,14 +4,15 @@ import * as cql from "compassql/build/src";
|
|
|
4
4
|
import { createStore, Provider, useAtomValue } from "jotai";
|
|
5
5
|
import { ListFilterIcon } from "lucide-react";
|
|
6
6
|
import React, { type JSX, useMemo } from "react";
|
|
7
|
-
import {
|
|
8
|
-
import
|
|
7
|
+
import { VegaEmbed, type VegaEmbedProps } from "react-vega";
|
|
8
|
+
import { tooltipHandler } from "@/components/charts/tooltip";
|
|
9
|
+
import { augmentSpecWithData } from "@/components/data-table/charts/chart-spec/spec";
|
|
9
10
|
import { Badge } from "@/components/ui/badge";
|
|
10
11
|
import { Button } from "@/components/ui/button";
|
|
11
12
|
import { Tooltip } from "@/components/ui/tooltip";
|
|
12
13
|
import { useAsyncData } from "@/hooks/useAsyncData";
|
|
13
14
|
import { useOnMount } from "@/hooks/useLifecycle";
|
|
14
|
-
import { useTheme } from "@/theme/useTheme";
|
|
15
|
+
import { type ResolvedTheme, useTheme } from "@/theme/useTheme";
|
|
15
16
|
import { Objects } from "@/utils/objects";
|
|
16
17
|
import { ErrorBanner } from "../common/error-banner";
|
|
17
18
|
import { vegaLoadData } from "../vega/loader";
|
|
@@ -69,14 +70,20 @@ interface DataTableProps extends DataExplorerData {
|
|
|
69
70
|
setValue: (value: DataExplorerState) => void;
|
|
70
71
|
}
|
|
71
72
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
73
|
+
function chartOptions(theme: ResolvedTheme): VegaEmbedProps["options"] {
|
|
74
|
+
return {
|
|
75
|
+
padding: { left: 20, right: 20, top: 20, bottom: 20 },
|
|
76
|
+
actions: {
|
|
77
|
+
export: { svg: true, png: true },
|
|
78
|
+
source: false,
|
|
79
|
+
compiled: false,
|
|
80
|
+
editor: false,
|
|
81
|
+
},
|
|
82
|
+
theme: theme === "dark" ? "dark" : undefined,
|
|
83
|
+
tooltip: tooltipHandler.call,
|
|
84
|
+
renderer: "canvas",
|
|
85
|
+
};
|
|
86
|
+
}
|
|
80
87
|
|
|
81
88
|
export default ConnectedDataExplorerComponent;
|
|
82
89
|
|
|
@@ -128,15 +135,14 @@ export const DataExplorerComponent = ({
|
|
|
128
135
|
return <ColumnSummary schema={schema} />;
|
|
129
136
|
}
|
|
130
137
|
|
|
138
|
+
const spec = mainPlot.spec;
|
|
139
|
+
const responsiveSpec = makeResponsive(spec);
|
|
140
|
+
// TODO: We can optimize by updating the data dynamically. https://github.com/vega/react-vega?tab=readme-ov-file#recipes
|
|
141
|
+
const augmentedSpec = augmentSpecWithData(responsiveSpec, chartData);
|
|
142
|
+
|
|
131
143
|
return (
|
|
132
144
|
<div className="flex overflow-y-auto justify-center items-center flex-1 w-[90%]">
|
|
133
|
-
<
|
|
134
|
-
data={{ source: chartData }}
|
|
135
|
-
padding={PADDING}
|
|
136
|
-
actions={ACTIONS}
|
|
137
|
-
spec={makeResponsive(mainPlot.spec)}
|
|
138
|
-
theme={theme === "dark" ? "dark" : undefined}
|
|
139
|
-
/>
|
|
145
|
+
<VegaEmbed spec={augmentedSpec} options={chartOptions(theme)} />
|
|
140
146
|
</div>
|
|
141
147
|
);
|
|
142
148
|
};
|
|
@@ -205,12 +211,10 @@ export const DataExplorerComponent = ({
|
|
|
205
211
|
</Tooltip>
|
|
206
212
|
}
|
|
207
213
|
>
|
|
208
|
-
<
|
|
209
|
-
|
|
214
|
+
<VegaEmbed
|
|
215
|
+
options={chartOptions(theme)}
|
|
210
216
|
key={idx}
|
|
211
|
-
actions={false}
|
|
212
217
|
spec={plot.spec}
|
|
213
|
-
theme={theme === "dark" ? "dark" : undefined}
|
|
214
218
|
/>
|
|
215
219
|
</HorizontalCarouselItem>
|
|
216
220
|
))}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
/* Copyright 2024 Marimo. All rights reserved. */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-base-to-string */
|
|
3
3
|
import type { FieldQuery } from "compassql/build/src/query/encoding";
|
|
4
|
-
import { isAggregateOp } from "
|
|
5
|
-
import type { FieldFunction, TimeUnitOp } from "./types";
|
|
4
|
+
import { type FieldFunction, isAggregateOp, type TimeUnitOp } from "./types";
|
|
6
5
|
|
|
7
6
|
// This code is adapted and simplified from https://github.com/vega/voyager
|
|
8
7
|
|
|
@@ -1,19 +1,70 @@
|
|
|
1
1
|
/* Copyright 2024 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
+
import { isString } from "lodash-es";
|
|
4
|
+
import type {
|
|
5
|
+
ArgmaxDef,
|
|
6
|
+
ArgminDef,
|
|
7
|
+
} from "vega-lite/types_unstable/aggregate.d.ts";
|
|
8
|
+
import type { isAggregateOp as isAggregateOpVega } from "vega-lite/types_unstable/aggregate.js";
|
|
9
|
+
import type { AggregateOp } from "vega-typings";
|
|
10
|
+
|
|
11
|
+
// Vega doesn't expose the constant, so we define all here
|
|
12
|
+
const AGGREGATE_OPS: readonly AggregateOp[] = [
|
|
13
|
+
"argmax",
|
|
14
|
+
"argmin",
|
|
15
|
+
"average",
|
|
16
|
+
"count",
|
|
17
|
+
"distinct",
|
|
18
|
+
"exponential",
|
|
19
|
+
"exponentialb",
|
|
20
|
+
"product",
|
|
21
|
+
"max",
|
|
22
|
+
"mean",
|
|
23
|
+
"median",
|
|
24
|
+
"min",
|
|
25
|
+
"missing",
|
|
26
|
+
"q1",
|
|
27
|
+
"q3",
|
|
28
|
+
"ci0",
|
|
29
|
+
"ci1",
|
|
30
|
+
"stderr",
|
|
31
|
+
"stdev",
|
|
32
|
+
"stdevp",
|
|
33
|
+
"sum",
|
|
34
|
+
"valid",
|
|
35
|
+
"values",
|
|
36
|
+
"variance",
|
|
37
|
+
"variancep",
|
|
38
|
+
] as const;
|
|
39
|
+
|
|
3
40
|
// Subset of aggregate operations that we support
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
41
|
+
const SUPPORTED_AGGREGATE_OPS: readonly AggregateOp[] = [
|
|
42
|
+
"average",
|
|
43
|
+
"count",
|
|
44
|
+
"distinct",
|
|
45
|
+
"max",
|
|
46
|
+
"mean",
|
|
47
|
+
"median",
|
|
48
|
+
"min",
|
|
49
|
+
"q1",
|
|
50
|
+
"q3",
|
|
51
|
+
"stderr",
|
|
52
|
+
"stdev",
|
|
53
|
+
"sum",
|
|
54
|
+
];
|
|
55
|
+
type SupportedAggregateOp = (typeof SUPPORTED_AGGREGATE_OPS)[number];
|
|
56
|
+
|
|
57
|
+
// We implement our own isAggregateOp because
|
|
58
|
+
// The vega-lite types_unstable import path fails in Vite (module resolution issue)
|
|
59
|
+
export const isAggregateOp: typeof isAggregateOpVega = (
|
|
60
|
+
a: string | ArgminDef | ArgmaxDef,
|
|
61
|
+
): a is AggregateOp => {
|
|
62
|
+
if (!isString(a)) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
return AGGREGATE_OPS.includes(a as AggregateOp);
|
|
67
|
+
};
|
|
17
68
|
|
|
18
69
|
// Subset of time units that we support
|
|
19
70
|
export type TimeUnitOp =
|
|
@@ -29,4 +80,4 @@ export type TimeUnitOp =
|
|
|
29
80
|
| "yearmonthdate"
|
|
30
81
|
| "monthdate";
|
|
31
82
|
|
|
32
|
-
export type FieldFunction =
|
|
83
|
+
export type FieldFunction = SupportedAggregateOp | "bin" | TimeUnitOp;
|
|
@@ -11,8 +11,7 @@ import type { SpecQuery } from "compassql/build/src/query/spec";
|
|
|
11
11
|
import { getTopResultTreeItem, isResultTree } from "compassql/build/src/result";
|
|
12
12
|
import type { Schema } from "compassql/build/src/schema";
|
|
13
13
|
import { contains } from "vega-lite";
|
|
14
|
-
import {
|
|
15
|
-
import type { NamedData } from "vega-lite/build/src/data";
|
|
14
|
+
import type { NamedData } from "vega-lite/types_unstable/data.js";
|
|
16
15
|
import { type EncodingChannel, fromFieldQuery } from "../encoding";
|
|
17
16
|
import { toSpecQuery } from "../spec";
|
|
18
17
|
import type { ChartSpec } from "../state/types";
|
|
@@ -21,13 +20,14 @@ import {
|
|
|
21
20
|
addQuantitativeField,
|
|
22
21
|
addTemporalField,
|
|
23
22
|
} from "./field-suggestion";
|
|
24
|
-
import
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
import {
|
|
24
|
+
NONPOSITION_SCALE_CHANNELS,
|
|
25
|
+
type PlotFieldInfo,
|
|
26
|
+
type QueryCreator,
|
|
27
|
+
type Result,
|
|
28
|
+
type ResultingCharts,
|
|
29
|
+
type ResultPlot,
|
|
30
|
+
type TopLevelFacetedUnitSpec,
|
|
31
31
|
} from "./types";
|
|
32
32
|
import { hasWildcards, isQueryEmpty } from "./utils";
|
|
33
33
|
|