@marimo-team/islands 0.17.1 → 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/plotly/PlotlyPlugin.tsx +9 -2
- 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
|
@@ -1,10 +1,22 @@
|
|
|
1
1
|
/* Copyright 2024 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
//
|
|
3
|
+
// Fallback spec
|
|
4
4
|
|
|
5
5
|
import { mint, orange, slate } from "@radix-ui/colors";
|
|
6
|
-
import type {
|
|
6
|
+
import type { TopLevelSpec } from "vega-lite";
|
|
7
|
+
import type { Scale } from "vega-lite/types_unstable/scale.js";
|
|
8
|
+
// @ts-expect-error vega-typings does not include formats
|
|
9
|
+
import { formats } from "vega-loader";
|
|
10
|
+
import { asRemoteURL } from "@/core/runtime/config";
|
|
7
11
|
import type { TopLevelFacetedUnitSpec } from "@/plugins/impl/data-explorer/queries/types";
|
|
12
|
+
import { arrow } from "@/plugins/impl/vega/formats";
|
|
13
|
+
import { parseCsvData } from "@/plugins/impl/vega/loader";
|
|
14
|
+
import {
|
|
15
|
+
byteStringToBinary,
|
|
16
|
+
extractBase64FromDataURL,
|
|
17
|
+
isDataURLString,
|
|
18
|
+
typedAtob,
|
|
19
|
+
} from "@/utils/json/base64";
|
|
8
20
|
|
|
9
21
|
export function getLegacyNumericSpec(
|
|
10
22
|
column: string,
|
|
@@ -240,3 +252,67 @@ export function getLegacyBooleanSpec(
|
|
|
240
252
|
],
|
|
241
253
|
} as TopLevelFacetedUnitSpec; // "layer" not in TopLevelFacetedUnitSpec
|
|
242
254
|
}
|
|
255
|
+
|
|
256
|
+
// Arrow formats have a magic number at the beginning of the file.
|
|
257
|
+
const ARROW_MAGIC_NUMBER = "ARROW1";
|
|
258
|
+
|
|
259
|
+
// register arrow reader under type 'arrow'
|
|
260
|
+
formats("arrow", arrow);
|
|
261
|
+
|
|
262
|
+
export function getDataSpecAndSourceName<T>(data: string | T[]): {
|
|
263
|
+
dataSpec: TopLevelSpec["data"];
|
|
264
|
+
sourceName: "data_0" | "source_0";
|
|
265
|
+
} {
|
|
266
|
+
let dataSpec: TopLevelSpec["data"];
|
|
267
|
+
let sourceName: "data_0" | "source_0";
|
|
268
|
+
|
|
269
|
+
// Data may come in from a few different sources:
|
|
270
|
+
// - A URL
|
|
271
|
+
// - A CSV data URI (e.g. "data:text/csv;base64,...")
|
|
272
|
+
// - A CSV string (e.g. "a,b,c\n1,2,3\n4,5,6")
|
|
273
|
+
// - An array of objects
|
|
274
|
+
// For each case, we need to set up the data spec and source name appropriately.
|
|
275
|
+
// If its a file, the source name will be "source_0", otherwise it will be "data_0".
|
|
276
|
+
// We have a few snapshot tests to ensure that the spec is correct for each case.
|
|
277
|
+
if (typeof data === "string") {
|
|
278
|
+
if (data.startsWith("./@file") || data.startsWith("/@file")) {
|
|
279
|
+
dataSpec = { url: asRemoteURL(data).href };
|
|
280
|
+
sourceName = "source_0";
|
|
281
|
+
} else if (isDataURLString(data)) {
|
|
282
|
+
sourceName = "data_0";
|
|
283
|
+
const base64 = extractBase64FromDataURL(data);
|
|
284
|
+
const decoded = typedAtob(base64);
|
|
285
|
+
|
|
286
|
+
// eslint-disable-next-line unicorn/prefer-ternary
|
|
287
|
+
if (decoded.startsWith(ARROW_MAGIC_NUMBER)) {
|
|
288
|
+
// @ts-expect-error vega-typings does not include arrow format
|
|
289
|
+
dataSpec = {
|
|
290
|
+
values: byteStringToBinary(decoded),
|
|
291
|
+
format: { type: "arrow" },
|
|
292
|
+
};
|
|
293
|
+
} else {
|
|
294
|
+
// Assume it's a CSV string
|
|
295
|
+
dataSpec = { values: parseCsvData(decoded) };
|
|
296
|
+
}
|
|
297
|
+
} else {
|
|
298
|
+
// Assume it's a CSV string
|
|
299
|
+
dataSpec = { values: parseCsvData(data) };
|
|
300
|
+
sourceName = "data_0";
|
|
301
|
+
}
|
|
302
|
+
} else {
|
|
303
|
+
dataSpec = { values: data };
|
|
304
|
+
sourceName = "source_0";
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
return { dataSpec, sourceName };
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
export function getScale(sourceName: string): Scale {
|
|
311
|
+
return {
|
|
312
|
+
align: 0,
|
|
313
|
+
paddingInner: 0,
|
|
314
|
+
paddingOuter: {
|
|
315
|
+
expr: `length(data('${sourceName}')) == 2 ? 1 : length(data('${sourceName}')) == 3 ? 0.5 : length(data('${sourceName}')) == 4 ? 0 : 0`,
|
|
316
|
+
},
|
|
317
|
+
};
|
|
318
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* Copyright 2024 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
|
-
import type { StringFieldDef } from "vega-lite/
|
|
3
|
+
import type { StringFieldDef } from "vega-lite/types_unstable/channeldef.js";
|
|
4
4
|
import { Logger } from "@/utils/Logger";
|
|
5
5
|
import type { BinValues } from "../types";
|
|
6
6
|
|
|
@@ -24,154 +24,355 @@ describe("sqlCode", () => {
|
|
|
24
24
|
name: "email" as const,
|
|
25
25
|
} as DataTableColumn;
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
27
|
+
describe("basic SQL generation", () => {
|
|
28
|
+
it("should generate basic SQL without sqlTableContext", () => {
|
|
29
|
+
const result = sqlCode({ table: mockTable, columnName: mockColumn.name });
|
|
30
|
+
expect(result).toBe(
|
|
31
|
+
"_df = mo.sql(f'SELECT \"email\" FROM users LIMIT 100')",
|
|
32
|
+
);
|
|
33
|
+
});
|
|
33
34
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
const result = sqlCode({
|
|
44
|
-
table: mockTable,
|
|
45
|
-
columnName: mockColumn.name,
|
|
46
|
-
sqlTableContext,
|
|
47
|
-
});
|
|
48
|
-
expect(result).toBe('_df = mo.sql(f"SELECT email FROM users LIMIT 100")');
|
|
49
|
-
});
|
|
35
|
+
it("should generate SQL with default schema", () => {
|
|
36
|
+
const sqlTableContext: SQLTableContext = {
|
|
37
|
+
engine: DUCKDB_ENGINE,
|
|
38
|
+
schema: "public",
|
|
39
|
+
defaultSchema: "public",
|
|
40
|
+
defaultDatabase: "mydb",
|
|
41
|
+
database: "mydb",
|
|
42
|
+
dialect: "duckdb",
|
|
43
|
+
};
|
|
50
44
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
45
|
+
const result = sqlCode({
|
|
46
|
+
table: mockTable,
|
|
47
|
+
columnName: mockColumn.name,
|
|
48
|
+
sqlTableContext,
|
|
49
|
+
});
|
|
50
|
+
expect(result).toBe(
|
|
51
|
+
'_df = mo.sql(f"""\nSELECT "email" FROM "users" LIMIT 100\n""")',
|
|
52
|
+
);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
it("should generate SQL with non-default schema", () => {
|
|
56
|
+
const sqlTableContext: SQLTableContext = {
|
|
57
|
+
engine: DUCKDB_ENGINE,
|
|
58
|
+
schema: "analytics",
|
|
59
|
+
defaultSchema: "public",
|
|
60
|
+
defaultDatabase: "mydb",
|
|
61
|
+
database: "mydb",
|
|
62
|
+
dialect: "duckdb",
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const result = sqlCode({
|
|
66
|
+
table: mockTable,
|
|
67
|
+
columnName: mockColumn.name,
|
|
68
|
+
sqlTableContext,
|
|
69
|
+
});
|
|
70
|
+
expect(result).toBe(
|
|
71
|
+
'_df = mo.sql(f"""\nSELECT "email" FROM "analytics"."users" LIMIT 100\n""")',
|
|
72
|
+
);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
it("should generate SQL with non-default engine", () => {
|
|
76
|
+
const sqlTableContext: SQLTableContext = {
|
|
77
|
+
engine: "snowflake",
|
|
78
|
+
schema: "public",
|
|
79
|
+
defaultSchema: "public",
|
|
80
|
+
defaultDatabase: "mydb",
|
|
81
|
+
database: "mydb",
|
|
82
|
+
dialect: "snowflake",
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const result = sqlCode({
|
|
86
|
+
table: mockTable,
|
|
87
|
+
columnName: mockColumn.name,
|
|
88
|
+
sqlTableContext,
|
|
89
|
+
});
|
|
90
|
+
expect(result).toBe(
|
|
91
|
+
'_df = mo.sql(f"""\nSELECT email FROM users LIMIT 100\n""", engine=snowflake)',
|
|
92
|
+
);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
it("should generate SQL with non-default database", () => {
|
|
96
|
+
const sqlTableContext: SQLTableContext = {
|
|
97
|
+
engine: DUCKDB_ENGINE,
|
|
98
|
+
schema: "public",
|
|
99
|
+
defaultSchema: "public",
|
|
100
|
+
defaultDatabase: "memory",
|
|
101
|
+
database: "remote",
|
|
102
|
+
dialect: "duckdb",
|
|
103
|
+
};
|
|
69
104
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
105
|
+
const result = sqlCode({
|
|
106
|
+
table: mockTable,
|
|
107
|
+
columnName: mockColumn.name,
|
|
108
|
+
sqlTableContext,
|
|
109
|
+
});
|
|
110
|
+
expect(result).toBe(
|
|
111
|
+
'_df = mo.sql(f"""\nSELECT "email" FROM "remote"."users" LIMIT 100\n""")',
|
|
112
|
+
);
|
|
113
|
+
});
|
|
114
|
+
|
|
115
|
+
it("should generate SQL for schemaless tables", () => {
|
|
116
|
+
const sqlTableContext: SQLTableContext = {
|
|
117
|
+
engine: DUCKDB_ENGINE,
|
|
118
|
+
schema: "",
|
|
119
|
+
defaultDatabase: "mydb",
|
|
120
|
+
database: "mydb",
|
|
121
|
+
dialect: "duckdb",
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
const result = sqlCode({
|
|
125
|
+
table: mockTable,
|
|
126
|
+
columnName: mockColumn.name,
|
|
127
|
+
sqlTableContext,
|
|
128
|
+
});
|
|
129
|
+
expect(result).toBe(
|
|
130
|
+
'_df = mo.sql(f"""\nSELECT "email" FROM "users" LIMIT 100\n""")',
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
const sqlTableContext2: SQLTableContext = {
|
|
134
|
+
engine: DUCKDB_ENGINE,
|
|
135
|
+
schema: "",
|
|
136
|
+
defaultDatabase: "remote",
|
|
137
|
+
database: "another_db",
|
|
138
|
+
dialect: "duckdb",
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
const result2 = sqlCode({
|
|
142
|
+
table: mockTable,
|
|
143
|
+
columnName: mockColumn.name,
|
|
144
|
+
sqlTableContext: sqlTableContext2,
|
|
145
|
+
});
|
|
146
|
+
expect(result2).toBe(
|
|
147
|
+
'_df = mo.sql(f"""\nSELECT "email" FROM "another_db"."users" LIMIT 100\n""")',
|
|
148
|
+
);
|
|
149
|
+
});
|
|
87
150
|
});
|
|
88
151
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
152
|
+
describe("BigQuery dialect", () => {
|
|
153
|
+
it("should use backticks for table names", () => {
|
|
154
|
+
const sqlTableContext: SQLTableContext = {
|
|
155
|
+
engine: "bigquery",
|
|
156
|
+
schema: "public",
|
|
157
|
+
defaultSchema: "public",
|
|
158
|
+
defaultDatabase: "mydb",
|
|
159
|
+
database: "mydb",
|
|
160
|
+
dialect: "bigquery",
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
const result = sqlCode({
|
|
164
|
+
table: mockTable,
|
|
165
|
+
columnName: mockColumn.name,
|
|
166
|
+
sqlTableContext,
|
|
167
|
+
});
|
|
168
|
+
expect(result).toBe(
|
|
169
|
+
'_df = mo.sql(f"""\nSELECT email FROM `users` LIMIT 100\n""", engine=bigquery)',
|
|
170
|
+
);
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
it("should use backticks for database.schema.table", () => {
|
|
174
|
+
const sqlTableContext: SQLTableContext = {
|
|
175
|
+
engine: "bigquery",
|
|
176
|
+
schema: "sales",
|
|
177
|
+
defaultSchema: "public",
|
|
178
|
+
defaultDatabase: "mydb",
|
|
179
|
+
database: "remote",
|
|
180
|
+
dialect: "bigquery",
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
const result = sqlCode({
|
|
184
|
+
table: mockTable,
|
|
185
|
+
columnName: mockColumn.name,
|
|
186
|
+
sqlTableContext,
|
|
187
|
+
});
|
|
188
|
+
expect(result).toBe(
|
|
189
|
+
'_df = mo.sql(f"""\nSELECT email FROM `remote.sales.users` LIMIT 100\n""", engine=bigquery)',
|
|
190
|
+
);
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
it("should handle case-insensitive dialect name", () => {
|
|
194
|
+
const sqlTableContext: SQLTableContext = {
|
|
195
|
+
engine: "bigquery",
|
|
196
|
+
schema: "public",
|
|
197
|
+
defaultSchema: "public",
|
|
198
|
+
defaultDatabase: "mydb",
|
|
199
|
+
database: "mydb",
|
|
200
|
+
dialect: "BigQuery",
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
const result = sqlCode({
|
|
204
|
+
table: mockTable,
|
|
205
|
+
columnName: mockColumn.name,
|
|
206
|
+
sqlTableContext,
|
|
207
|
+
});
|
|
208
|
+
expect(result).toBe(
|
|
209
|
+
'_df = mo.sql(f"""\nSELECT email FROM `users` LIMIT 100\n""", engine=bigquery)',
|
|
210
|
+
);
|
|
211
|
+
});
|
|
106
212
|
});
|
|
107
213
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
214
|
+
describe("MSSQL dialect", () => {
|
|
215
|
+
it("should use TOP 100 instead of LIMIT", () => {
|
|
216
|
+
const sqlTableContext: SQLTableContext = {
|
|
217
|
+
engine: "mssql",
|
|
218
|
+
schema: "dbo",
|
|
219
|
+
defaultSchema: "dbo",
|
|
220
|
+
defaultDatabase: "master",
|
|
221
|
+
database: "master",
|
|
222
|
+
dialect: "mssql",
|
|
223
|
+
};
|
|
224
|
+
|
|
225
|
+
const result = sqlCode({
|
|
226
|
+
table: mockTable,
|
|
227
|
+
columnName: mockColumn.name,
|
|
228
|
+
sqlTableContext,
|
|
229
|
+
});
|
|
230
|
+
expect(result).toBe(
|
|
231
|
+
'_df = mo.sql(f"""\nSELECT TOP 100 email FROM users\n""", engine=mssql)',
|
|
232
|
+
);
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
it("should use TOP 100 with database and schema prefix", () => {
|
|
236
|
+
const sqlTableContext: SQLTableContext = {
|
|
237
|
+
engine: "mssql",
|
|
238
|
+
schema: "sales",
|
|
239
|
+
defaultSchema: "dbo",
|
|
240
|
+
defaultDatabase: "master",
|
|
241
|
+
database: "analytics",
|
|
242
|
+
dialect: "mssql",
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
const result = sqlCode({
|
|
246
|
+
table: mockTable,
|
|
247
|
+
columnName: mockColumn.name,
|
|
248
|
+
sqlTableContext,
|
|
249
|
+
});
|
|
250
|
+
expect(result).toBe(
|
|
251
|
+
'_df = mo.sql(f"""\nSELECT TOP 100 email FROM analytics.sales.users\n""", engine=mssql)',
|
|
252
|
+
);
|
|
253
|
+
});
|
|
125
254
|
});
|
|
126
255
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
256
|
+
describe("TimescaleDB and PostgreSQL dialect", () => {
|
|
257
|
+
it("should wrap table name with double quotes", () => {
|
|
258
|
+
const sqlTableContext: SQLTableContext = {
|
|
259
|
+
engine: "timescaledb",
|
|
260
|
+
schema: "public",
|
|
261
|
+
defaultSchema: "public",
|
|
262
|
+
defaultDatabase: "mydb",
|
|
263
|
+
database: "mydb",
|
|
264
|
+
dialect: "timescaledb",
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
const result = sqlCode({
|
|
268
|
+
table: mockTable,
|
|
269
|
+
columnName: mockColumn.name,
|
|
270
|
+
sqlTableContext,
|
|
271
|
+
});
|
|
272
|
+
expect(result).toBe(
|
|
273
|
+
'_df = mo.sql(f"""\nSELECT "email" FROM "users" LIMIT 100\n""", engine=timescaledb)',
|
|
274
|
+
);
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
it("should wrap database, schema, and table name with double quotes", () => {
|
|
278
|
+
const sqlTableContext: SQLTableContext = {
|
|
279
|
+
engine: "timescaledb",
|
|
280
|
+
schema: "sales",
|
|
281
|
+
defaultSchema: "public",
|
|
282
|
+
defaultDatabase: "mydb",
|
|
283
|
+
database: "remote",
|
|
284
|
+
dialect: "timescaledb",
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
const result = sqlCode({
|
|
288
|
+
table: mockTable,
|
|
289
|
+
columnName: mockColumn.name,
|
|
290
|
+
sqlTableContext,
|
|
291
|
+
});
|
|
292
|
+
expect(result).toBe(
|
|
293
|
+
'_df = mo.sql(f"""\nSELECT "email" FROM "remote"."sales"."users" LIMIT 100\n""", engine=timescaledb)',
|
|
294
|
+
);
|
|
295
|
+
});
|
|
296
|
+
|
|
297
|
+
it("should handle schemaless database with double quotes", () => {
|
|
298
|
+
const sqlTableContext: SQLTableContext = {
|
|
299
|
+
engine: "postgres",
|
|
300
|
+
schema: "",
|
|
301
|
+
defaultDatabase: "mydb",
|
|
302
|
+
database: "remote",
|
|
303
|
+
dialect: "postgres",
|
|
304
|
+
};
|
|
305
|
+
|
|
306
|
+
const result = sqlCode({
|
|
307
|
+
table: mockTable,
|
|
308
|
+
columnName: mockColumn.name,
|
|
309
|
+
sqlTableContext,
|
|
310
|
+
});
|
|
311
|
+
expect(result).toBe(
|
|
312
|
+
'_df = mo.sql(f"""\nSELECT "email" FROM "remote"."users" LIMIT 100\n""", engine=postgres)',
|
|
313
|
+
);
|
|
314
|
+
});
|
|
315
|
+
|
|
316
|
+
it("should not quote * column name", () => {
|
|
317
|
+
const sqlTableContext: SQLTableContext = {
|
|
318
|
+
engine: "postgres",
|
|
319
|
+
schema: "public",
|
|
320
|
+
defaultSchema: "public",
|
|
321
|
+
defaultDatabase: "mydb",
|
|
322
|
+
database: "mydb",
|
|
323
|
+
dialect: "postgres",
|
|
324
|
+
};
|
|
325
|
+
|
|
326
|
+
const result = sqlCode({
|
|
327
|
+
table: mockTable,
|
|
328
|
+
columnName: "*",
|
|
329
|
+
sqlTableContext,
|
|
330
|
+
});
|
|
331
|
+
expect(result).toBe(
|
|
332
|
+
'_df = mo.sql(f"""\nSELECT * FROM "users" LIMIT 100\n""", engine=postgres)',
|
|
333
|
+
);
|
|
334
|
+
});
|
|
144
335
|
});
|
|
145
336
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
337
|
+
describe("fallback behavior", () => {
|
|
338
|
+
it("should use default formatter for unknown dialect", () => {
|
|
339
|
+
const sqlTableContext: SQLTableContext = {
|
|
340
|
+
engine: "postgres",
|
|
341
|
+
schema: "public",
|
|
342
|
+
defaultSchema: "public",
|
|
343
|
+
defaultDatabase: "mydb",
|
|
344
|
+
database: "mydb",
|
|
345
|
+
dialect: "unknown_dialect",
|
|
346
|
+
};
|
|
347
|
+
|
|
348
|
+
const result = sqlCode({
|
|
349
|
+
table: mockTable,
|
|
350
|
+
columnName: mockColumn.name,
|
|
351
|
+
sqlTableContext,
|
|
352
|
+
});
|
|
353
|
+
expect(result).toBe(
|
|
354
|
+
'_df = mo.sql(f"""\nSELECT email FROM users LIMIT 100\n""", engine=postgres)',
|
|
355
|
+
);
|
|
356
|
+
});
|
|
357
|
+
|
|
358
|
+
it("should use default formatter when dialect is not provided", () => {
|
|
359
|
+
const sqlTableContext: SQLTableContext = {
|
|
360
|
+
engine: "postgres",
|
|
361
|
+
schema: "public",
|
|
362
|
+
defaultSchema: "public",
|
|
363
|
+
defaultDatabase: "mydb",
|
|
364
|
+
database: "mydb",
|
|
365
|
+
dialect: "",
|
|
366
|
+
};
|
|
367
|
+
|
|
368
|
+
const result = sqlCode({
|
|
369
|
+
table: mockTable,
|
|
370
|
+
columnName: mockColumn.name,
|
|
371
|
+
sqlTableContext,
|
|
372
|
+
});
|
|
373
|
+
expect(result).toBe(
|
|
374
|
+
'_df = mo.sql(f"""\nSELECT email FROM users LIMIT 100\n""", engine=postgres)',
|
|
375
|
+
);
|
|
376
|
+
});
|
|
176
377
|
});
|
|
177
378
|
});
|
|
@@ -21,6 +21,7 @@ import type { TopLevelFacetedUnitSpec } from "@/plugins/impl/data-explorer/queri
|
|
|
21
21
|
import { type Theme, useTheme } from "@/theme/useTheme";
|
|
22
22
|
import { Events } from "@/utils/events";
|
|
23
23
|
import { prettyNumber } from "@/utils/numbers";
|
|
24
|
+
import { LazyVegaEmbed } from "../charts/lazy";
|
|
24
25
|
import type { ColumnHeaderStatsKey } from "../data-table/types";
|
|
25
26
|
import { CopyClipboardIcon } from "../icons/copy-icon";
|
|
26
27
|
import { Spinner } from "../icons/spinner";
|
|
@@ -30,10 +31,6 @@ import { ColumnPreviewContainer } from "./components";
|
|
|
30
31
|
import { InstallPackageButton } from "./install-package-button";
|
|
31
32
|
import { convertStatsName, sqlCode } from "./utils";
|
|
32
33
|
|
|
33
|
-
const LazyVegaLite = React.lazy(() =>
|
|
34
|
-
import("react-vega").then((m) => ({ default: m.VegaLite })),
|
|
35
|
-
);
|
|
36
|
-
|
|
37
34
|
export const DatasetColumnPreview: React.FC<{
|
|
38
35
|
table: DataTable;
|
|
39
36
|
column: DataTableColumn;
|
|
@@ -226,12 +223,15 @@ export function renderChart(chartSpec: string, theme: Theme) {
|
|
|
226
223
|
|
|
227
224
|
return (
|
|
228
225
|
<Suspense fallback={LoadingChart}>
|
|
229
|
-
<
|
|
226
|
+
<LazyVegaEmbed
|
|
230
227
|
spec={updateSpec(JSON.parse(chartSpec) as TopLevelFacetedUnitSpec)}
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
228
|
+
options={{
|
|
229
|
+
theme: theme === "dark" ? "dark" : "vox",
|
|
230
|
+
height: 100,
|
|
231
|
+
width: "container" as unknown as number,
|
|
232
|
+
actions: false,
|
|
233
|
+
renderer: "canvas",
|
|
234
|
+
}}
|
|
235
235
|
/>
|
|
236
236
|
</Suspense>
|
|
237
237
|
);
|
|
@@ -214,6 +214,7 @@ export const DataSources: React.FC = () => {
|
|
|
214
214
|
databaseName={database.name}
|
|
215
215
|
hasSearch={hasSearch}
|
|
216
216
|
searchValue={searchValue}
|
|
217
|
+
dialect={connection.dialect}
|
|
217
218
|
/>
|
|
218
219
|
</DatabaseItem>
|
|
219
220
|
))}
|
|
@@ -340,6 +341,7 @@ const SchemaList: React.FC<{
|
|
|
340
341
|
schemas: DatabaseSchema[];
|
|
341
342
|
defaultSchema?: string | null;
|
|
342
343
|
defaultDatabase?: string | null;
|
|
344
|
+
dialect: string;
|
|
343
345
|
engineName: string;
|
|
344
346
|
databaseName: string;
|
|
345
347
|
hasSearch: boolean;
|
|
@@ -348,6 +350,7 @@ const SchemaList: React.FC<{
|
|
|
348
350
|
schemas,
|
|
349
351
|
defaultSchema,
|
|
350
352
|
defaultDatabase,
|
|
353
|
+
dialect,
|
|
351
354
|
engineName,
|
|
352
355
|
databaseName,
|
|
353
356
|
hasSearch,
|
|
@@ -384,6 +387,7 @@ const SchemaList: React.FC<{
|
|
|
384
387
|
schema: schema.name,
|
|
385
388
|
defaultSchema: defaultSchema,
|
|
386
389
|
defaultDatabase: defaultDatabase,
|
|
390
|
+
dialect: dialect,
|
|
387
391
|
}}
|
|
388
392
|
/>
|
|
389
393
|
</SchemaItem>
|