@marimo-team/islands 0.22.1-dev105 → 0.22.1-dev3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ConnectedDataExplorerComponent-CTfvzyMi.js → ConnectedDataExplorerComponent-Dl1grr8z.js} +12 -12
- package/dist/{_basePickBy-DEctY8Qy.js → _basePickBy-QjOmBDRE.js} +3 -10
- package/dist/{_baseSet-Bk810b_4.js → _baseSet-xgn1IbGV.js} +8 -1
- package/dist/{_baseUniq-B1NzzhU7.js → _baseUniq-B4eL5sTC.js} +2 -2
- package/dist/{any-language-editor-Bj-3432h.js → any-language-editor-CT_9yBde.js} +18 -18
- package/dist/apl-C1bki_dE.js +4 -0
- package/dist/{arc-CEWBr4jc.js → arc-DLJpPF9M.js} +2 -2
- package/dist/architecture-7HQA4BMR-BRyVh_Za.js +6 -0
- package/dist/{architectureDiagram-VXUJARFQ-BKlUkb-q.js → architectureDiagram-VXUJARFQ-vxgYGIMP.js} +19 -19
- package/dist/arrays-Du-jRBAy.js +55 -0
- package/dist/asciiarmor-BdlkCCRr.js +4 -0
- package/dist/asn1-CvE30hox.js +4 -0
- package/dist/{blockDiagram-VD42YOAC-DvgBlX1D.js → blockDiagram-VD42YOAC-C7x6YTH7.js} +14 -14
- package/dist/brainfuck-BalwWy1a.js +4 -0
- package/dist/{c4Diagram-YG6GDRKO-BN-xpNUK.js → c4Diagram-YG6GDRKO-Cx4oseGg.js} +6 -6
- package/dist/{capabilities-BC3mzKnw.js → capabilities-26mwv03y.js} +1 -1
- package/dist/{channel-Dz_ka_DS.js → channel-C_50jIAn.js} +1 -1
- package/dist/{chat-ui-BvK3aDSR.js → chat-ui-CtqUthFR.js} +19 -19
- package/dist/{chunk-4BX2VUAB-BChPAwlt.js → chunk-4BX2VUAB-C2skOn1Z.js} +1 -1
- package/dist/{chunk-4F5CHEZ2-9eJ5uB6a.js → chunk-4F5CHEZ2-Dvo_CFnR.js} +1 -1
- package/dist/{chunk-55IACEB6-wWyiO7Qo.js → chunk-55IACEB6-DRsSqxbU.js} +1 -1
- package/dist/{chunk-5FQGJX7Z-DHiDX6JT.js → chunk-5FQGJX7Z-C428iZBW.js} +3 -3
- package/dist/{chunk-ABZYJK2D-DYZpeLRO.js → chunk-ABZYJK2D-D5YIs71w.js} +3 -3
- package/dist/{chunk-ATLVNIR6-9VSIMo3q.js → chunk-ATLVNIR6-CyOjzOcf.js} +2 -2
- package/dist/{chunk-B2363JML-CkfqLBeZ.js → chunk-B2363JML-BzZqINRO.js} +1 -1
- package/dist/{chunk-B4BG7PRW-CyIVj-RO.js → chunk-B4BG7PRW-ZJeV3KdD.js} +7 -7
- package/dist/{chunk-CVBHYZKI-DqdOZevv.js → chunk-CVBHYZKI-BXHgce-x.js} +1 -1
- package/dist/{chunk-DI55MBZ5-kmoX4_PJ.js → chunk-DI55MBZ5-Dx_wwX6l.js} +6 -6
- package/dist/{chunk-EXTU4WIE-anbpETeD.js → chunk-EXTU4WIE-CgefpSXQ.js} +2 -2
- package/dist/{chunk-FMBD7UC4-WPL5C7Yr.js → chunk-FMBD7UC4-BjIaI-XO.js} +1 -1
- package/dist/{chunk-FRFDVMJY-DiBbw2aO.js → chunk-FRFDVMJY-Derq8UzY.js} +1 -1
- package/dist/{chunk-HN2XXSSU-GC9oeSst.js → chunk-HN2XXSSU-DAhNp1ig.js} +1 -1
- package/dist/{chunk-JA3XYJ7Z-DT9thFja.js → chunk-JA3XYJ7Z-CcIOIFpc.js} +3 -3
- package/dist/{chunk-JZLCHNYA-CoUG-3_5.js → chunk-JZLCHNYA-CgO0GG1p.js} +6 -6
- package/dist/{chunk-MI3HLSF2-CAUClZTk.js → chunk-MI3HLSF2-AKwFNP3m.js} +1 -1
- package/dist/{chunk-N4CR4FBY-CgZCueW4.js → chunk-N4CR4FBY-2qzGzAxT.js} +7 -7
- package/dist/{chunk-PL6DKKU2-B93gSUY5.js → chunk-PL6DKKU2-KoG71Zin.js} +1 -1
- package/dist/{chunk-QN33PNHL-T-uF7h40.js → chunk-QN33PNHL-Dp1qBo28.js} +2 -2
- package/dist/{chunk-QXUST7PY-D1a8s9iP.js → chunk-QXUST7PY-BxmmeIwf.js} +10 -10
- package/dist/{chunk-QZHKN3VN-cTJMhkeY.js → chunk-QZHKN3VN-BK9tlbfw.js} +1 -1
- package/dist/{chunk-S3R3BYOJ-KAv7zltL.js → chunk-S3R3BYOJ-D3Rys9ZW.js} +6 -6
- package/dist/{chunk-SJTYNZTY-CxP2rIlm.js → chunk-SJTYNZTY-Co-DhKAG.js} +1 -1
- package/dist/{chunk-TCCFYFTB-BrhaBdR8.js → chunk-TCCFYFTB-BAhzIqBO.js} +6 -6
- package/dist/{chunk-TQ3KTPDO-C0j_j938.js → chunk-TQ3KTPDO-DxYI735Z.js} +1 -1
- package/dist/{chunk-TZMSLE5B-BY2BhygM.js → chunk-TZMSLE5B-Dxumt0wv.js} +3 -3
- package/dist/{chunk-UMXZTB3W-BDwe1tzK.js → chunk-UMXZTB3W-CuahpKin.js} +1 -1
- package/dist/classDiagram-2ON5EDUG-DkOvXRlx.js +30 -0
- package/dist/classDiagram-v2-WZHVMYZB-CYoFMQKE.js +30 -0
- package/dist/{clike-D8Yzpo0X.js → clike-B90WKs4D.js} +1 -1
- package/dist/clojure-CUC2I1hM.js +4 -0
- package/dist/{clone-DgKKB0qR.js → clone-DDndUqI0.js} +1 -1
- package/dist/cmake-8PcMxXnB.js +4 -0
- package/dist/cobol-DkkkDz5v.js +4 -0
- package/dist/{code-block-37QAKDTI-CdeP6GC3.js → code-block-37QAKDTI-D9EnJeBI.js} +1 -1
- package/dist/coffeescript-CCupxOZf.js +4 -0
- package/dist/commonlisp-DhUfGX6b.js +4 -0
- package/dist/{constants-CXiS0vdr.js → constants-D1Am36hX.js} +1 -1
- package/dist/{cose-bilkent-S5V4N54A-CFYo67PX.js → cose-bilkent-S5V4N54A-DvCk1aXi.js} +2 -2
- package/dist/crystal-DSaw6rFQ.js +4 -0
- package/dist/css-D4QDewkG.js +4 -0
- package/dist/cypher-CrYVqw_F.js +4 -0
- package/dist/d-Cr3H3pPx.js +4 -0
- package/dist/{dagre-6UL2VRFP-CblBywCi.js → dagre-6UL2VRFP-BXBaU8PB.js} +16 -16
- package/dist/{dagre-lLfkMavw.js → dagre-D3dlYz-r.js} +9 -19
- package/dist/{data-grid-overlay-editor-nQBPvGNe.js → data-grid-overlay-editor-nZux6_d2.js} +2 -2
- package/dist/{diagram-PSM6KHXK-CEWNAeex.js → diagram-PSM6KHXK-CJxjk4LG.js} +22 -22
- package/dist/{diagram-QEK2KX5R-DvNPI6r6.js → diagram-QEK2KX5R-IMILPh_p.js} +17 -17
- package/dist/{diagram-S2PKOQOG-Bd8sWp1V.js → diagram-S2PKOQOG-6O0g6Boj.js} +17 -17
- package/dist/diff-ODiZJGls.js +4 -0
- package/dist/{dist-5XnuIjzQ.js → dist-5nTQE2yt.js} +2 -2
- package/dist/dist-B0R_ZM4-.js +6 -0
- package/dist/dist-B4a9_9pj.js +5 -0
- package/dist/{dist-DqWKkHpR.js → dist-B6Op2ogv.js} +2 -2
- package/dist/{dist-n5m_P2Mr.js → dist-B9KLrfoh.js} +1 -1
- package/dist/dist-BCSUKEwO.js +5 -0
- package/dist/{dist-B7Wxocl4.js → dist-BJ3fhRYu.js} +2 -2
- package/dist/dist-BONIDQq6.js +5 -0
- package/dist/{dist-C-8pSTml.js → dist-BUSLKXcu.js} +2 -2
- package/dist/dist-BYeRx2hb.js +5 -0
- package/dist/{dist-nggqqIVv.js → dist-BemtTYzN.js} +5 -5
- package/dist/{dist-DM6PPTtq.js → dist-BiZZAo22.js} +1 -1
- package/dist/{dist-DS6k03oP.js → dist-BkXs8bw0.js} +1 -1
- package/dist/{dist-CgCO1-j-.js → dist-BoNJsA65.js} +1 -1
- package/dist/{dist-_k5rxRQI.js → dist-Brb6VNc4.js} +2 -2
- package/dist/{dist-B5pakFbT.js → dist-C-EcLtO9.js} +1 -1
- package/dist/{dist-CD0aazOL.js → dist-C0XYIHKJ.js} +1 -1
- package/dist/{dist-C6R5LnmH.js → dist-C9qF7MRB.js} +2 -2
- package/dist/{dist-DFBgTyQ4.js → dist-CBwMSFDu.js} +2 -2
- package/dist/{dist-BnIjtwRq.js → dist-CQidOwep.js} +3 -3
- package/dist/{dist-BKKbDTix.js → dist-CTwGwcQ8.js} +2 -2
- package/dist/{dist-B7pzGu3v.js → dist-CVqlhD3M.js} +2 -2
- package/dist/{dist-Dv7FDx1_.js → dist-Ci_jEudG.js} +1 -1
- package/dist/{dist-xzh9kCE-.js → dist-CnFp2Kcl.js} +2 -2
- package/dist/{dist-BqO6WmbK.js → dist-CxAX99oC.js} +2 -2
- package/dist/{dist-DJ3EjUNc.js → dist-DBXPlQ0D.js} +1 -1
- package/dist/{dist-DUY_SIWT.js → dist-DBYL08Lu.js} +4 -4
- package/dist/{dist-DInzmbT2.js → dist-DLNKBPsk.js} +4 -4
- package/dist/{dist-C_tLMuB0.js → dist-DStU8He1.js} +2 -2
- package/dist/dist-DZjX5TYv.js +5 -0
- package/dist/{dist-B4HRhSlD.js → dist-Dg65j0em.js} +1 -1
- package/dist/{dist-Ck4gp1Wp.js → dist-DjaZNkZ7.js} +3 -3
- package/dist/dist-Dkw9x6kc.js +5 -0
- package/dist/{dist-BnCNDnA7.js → dist-DmFS6KZW.js} +3 -3
- package/dist/dist-Ds6UaXGR.js +6 -0
- package/dist/{dist-DqezbmBd.js → dist-DwmxBUOe.js} +2 -2
- package/dist/dist-KuEJ1Q53.js +8 -0
- package/dist/dist-S72WNyTZ.js +5 -0
- package/dist/dist-bTG-yssT.js +5 -0
- package/dist/dist-diF0sguc.js +8 -0
- package/dist/dist-mJ84BIgu.js +8 -0
- package/dist/{dist-CDXh0OSg.js → dist-qoCY8giM.js} +2 -2
- package/dist/{dist-BmqJ8_Hr.js → dist-v-1kgqZ3.js} +1 -1
- package/dist/dist-wSIhFWQz.js +8 -0
- package/dist/{dockerfile-m9DOSpI5.js → dockerfile-DfXhjEUG.js} +1 -1
- package/dist/dtd-C-t2Rk7F.js +4 -0
- package/dist/dylan-B4ctBLGp.js +4 -0
- package/dist/ecl-DqWfymni.js +4 -0
- package/dist/eiffel-DjBKKAr7.js +4 -0
- package/dist/elm--fxeC0FV.js +4 -0
- package/dist/{erDiagram-Q2GNP2WA-C5bM6dcx.js → erDiagram-Q2GNP2WA-sho7Cl9f.js} +15 -15
- package/dist/erlang-CaKXCX6H.js +4 -0
- package/dist/{esm-C9_jY_wu.js → esm-CMg2ABu6.js} +2 -2
- package/dist/{esm-BBsFNcPe.js → esm-cqK9POGH.js} +105 -105
- package/dist/{factor-Nva0iSXt.js → factor--4HHM8Rw.js} +1 -1
- package/dist/factor-DlLO5EFS.js +4 -0
- package/dist/{flowDiagram-NV44I4VS-CULNNnl6.js → flowDiagram-NV44I4VS-C4nY4Fbz.js} +17 -17
- package/dist/forth-rOO6LVj_.js +4 -0
- package/dist/fortran-CUg15VGR.js +4 -0
- package/dist/{ganttDiagram-JELNMOA3-DIi-PAjP.js → ganttDiagram-JELNMOA3-CtxNcCM2.js} +10 -10
- package/dist/gas-BMRJspiW.js +4 -0
- package/dist/{get-CqYRpAGT.js → get-CqrzlV1v.js} +1 -1
- package/dist/gherkin-DRxzijZU.js +4 -0
- package/dist/{gitGraph-G5XIXVHT-S7ypWRtz.js → gitGraph-G5XIXVHT-SL6TDof6.js} +3 -3
- package/dist/{gitGraphDiagram-V2S2FVAM-BGDZsLhF.js → gitGraphDiagram-V2S2FVAM-D9885mxd.js} +17 -17
- package/dist/{glide-data-editor-D0IYL4_F.js → glide-data-editor-CkVEV-Gk.js} +8 -8
- package/dist/{graphlib-TFMRsJse.js → graphlib-CxWdvYQt.js} +2 -2
- package/dist/groovy-BmrQ8pUP.js +4 -0
- package/dist/haskell-BuaYfKOz.js +4 -0
- package/dist/haxe-DcH9eA0a.js +5 -0
- package/dist/idl-DGlcm4Ls.js +4 -0
- package/dist/{info-VBDWY6EO-CRCLLsdb.js → info-VBDWY6EO-6MXPTSmi.js} +3 -3
- package/dist/infoDiagram-HS3SLOUP-Bw2FlRwF.js +30 -0
- package/dist/{input-C5uUN4xL.js → input-BSde8uV4.js} +4 -4
- package/dist/javascript-CeTk7rzr.js +4 -0
- package/dist/{journeyDiagram-XKPGCS4Q-DUANVNzR.js → journeyDiagram-XKPGCS4Q-BXlCEth8.js} +7 -7
- package/dist/julia-BoP_q1gm.js +4 -0
- package/dist/{kanban-definition-3W4ZIXB7-dEyZPMAd.js → kanban-definition-3W4ZIXB7-CorxzSYm.js} +12 -12
- package/dist/{katex-Ckd8lBne.js → katex-CkLtKXwv.js} +1 -1
- package/dist/{label-DwSVaniz.js → label-DTNqw9tv.js} +1 -1
- package/dist/{line-LK_5q2B9.js → line-PAEmCpyD.js} +3 -3
- package/dist/{linear-CJ6ctpF3.js → linear-v57w-fIs.js} +4 -4
- package/dist/livescript-B7IMN-ba.js +4 -0
- package/dist/{loader-DrMJeyDu.js → loader-3c9hT4kT.js} +1 -1
- package/dist/lua-q1InavKb.js +4 -0
- package/dist/main.js +4354 -4397
- package/dist/mathematica-DvR8-_EI.js +4 -0
- package/dist/mbox-7h5MNBS_.js +4 -0
- package/dist/{mermaid-4DMBBIKO-C2ajbN0u.js → mermaid-4DMBBIKO-Cw46o6DN.js} +1 -1
- package/dist/{mermaid-Bwy7OYzI.js → mermaid-CEKslOkI.js} +46 -46
- package/dist/{mermaid-parser.core-DDGHdNnp.js → mermaid-parser.core-cq4YDee-.js} +8 -8
- package/dist/{mhchem-DAXq6Zll.js → mhchem-BuY5LDSq.js} +1 -1
- package/dist/{mindmap-definition-VGOIOE7T-jZ7-PfhM.js → mindmap-definition-VGOIOE7T-DRsT8UaN.js} +14 -14
- package/dist/mirc-D-XM8A5c.js +4 -0
- package/dist/mllike-BQGkkbmf.js +6 -0
- package/dist/modelica-D_yRj_WU.js +4 -0
- package/dist/mscgen-B-rltAjp.js +6 -0
- package/dist/mumps-2kh8TU2b.js +4 -0
- package/dist/{nsis-DgKbDAVQ.js → nsis-B6EN9LWI.js} +1 -1
- package/dist/nsis-CtusEqwb.js +4 -0
- package/dist/ntriples-BdAXw6zV.js +4 -0
- package/dist/{number-overlay-editor-BqzX9dHu.js → number-overlay-editor-DxLoVuuE.js} +1 -1
- package/dist/octave-CsNFmVp5.js +4 -0
- package/dist/{once-BfpiMcdf.js → once-CZno0h-b.js} +1 -1
- package/dist/{ordinal-COPPjmMz.js → ordinal-D7fa8Sey.js} +1 -1
- package/dist/oz-odIXCrKd.js +4 -0
- package/dist/{packet-DYOGHKS2-DPTC67cY.js → packet-DYOGHKS2-Dw08gMaZ.js} +3 -3
- package/dist/pascal-B9Mfk3Fo.js +4 -0
- package/dist/perl-C48inLcz.js +4 -0
- package/dist/{pie-VRWISCQL-DfbgsrV5.js → pie-VRWISCQL-C5SPSvT8.js} +3 -3
- package/dist/{pieDiagram-ADFJNKIX-BiAFdzOP.js → pieDiagram-ADFJNKIX-DhJ1Cx2O.js} +22 -22
- package/dist/pig-uwRtAssU.js +4 -0
- package/dist/powershell-CXqlca-i.js +4 -0
- package/dist/{precisionRound-Duzbr5ur.js → precisionRound-CGLoV26P.js} +1 -1
- package/dist/{process-output-CT8hHGp6.js → process-output-KyzWazB-.js} +163 -163
- package/dist/properties-D6Zu1rpK.js +4 -0
- package/dist/protobuf-BlNNWZaR.js +4 -0
- package/dist/pug-DytcK7bv.js +4 -0
- package/dist/{pug-CTpLcc1b.js → pug-xrm7jQ2R.js} +1 -1
- package/dist/puppet-lJ8Ok3iY.js +4 -0
- package/dist/python-cMaF7kUp.js +4 -0
- package/dist/q-Dgt2HYQh.js +4 -0
- package/dist/{quadrantDiagram-AYHSOK5B-CZjWO4oG.js → quadrantDiagram-AYHSOK5B-DXUFIWlz.js} +5 -5
- package/dist/r-Bm4S4awf.js +4 -0
- package/dist/{radar-ZZBFDIW7-B5Hwx2a8.js → radar-ZZBFDIW7-BvY0bgSg.js} +3 -3
- package/dist/range-CYz5jI--.js +17 -0
- package/dist/{react-vega-JMnqwKtN.js → react-vega-CzRAIHrv.js} +18 -18
- package/dist/react-vega-DayQmZjG.js +9 -0
- package/dist/{requirementDiagram-UZGBJVZJ-D9PkMDa5.js → requirementDiagram-UZGBJVZJ-DO_gtQIb.js} +14 -14
- package/dist/rpm-_8LbzMVc.js +5 -0
- package/dist/ruby-Cr8IJ5VZ.js +4 -0
- package/dist/{sankeyDiagram-TZEHDZUN-DuCG1ouO.js → sankeyDiagram-TZEHDZUN-OZzXEkuG.js} +5 -5
- package/dist/sas-CFcSfo2_.js +4 -0
- package/dist/scheme-N4XRoKgc.js +4 -0
- package/dist/{sequenceDiagram-WL72ISMW-BLJqizTv.js → sequenceDiagram-WL72ISMW-K7nZRifV.js} +8 -8
- package/dist/shell-B4L7f_ds.js +4 -0
- package/dist/sieve-UI6J3Gm0.js +4 -0
- package/dist/{slides-component-BsaaAy66.js → slides-component-CIcSvFh7.js} +1 -1
- package/dist/smalltalk-BuaPZAZU.js +4 -0
- package/dist/sparql-1rKrq463.js +4 -0
- package/dist/{spec-BLAZSydG.js → spec-DYaR1rJh.js} +2 -2
- package/dist/{src-szye8OCw.js → src-DbP20yFZ.js} +1 -1
- package/dist/{stateDiagram-FKZM4ZOC-CmZfv4_-.js → stateDiagram-FKZM4ZOC-DzXJZAq7.js} +19 -19
- package/dist/stateDiagram-v2-4FDKWEC3-BZBPUmyF.js +29 -0
- package/dist/{step-1PmBKr2y.js → step-qd10PbTJ.js} +1 -1
- package/dist/stex-CZyTRGVB.js +4 -0
- package/dist/style.css +1 -1
- package/dist/stylus-DvSovJEP.js +4 -0
- package/dist/swift-D-_E7Yyb.js +4 -0
- package/dist/tcl-Di5sAVHN.js +4 -0
- package/dist/textile-Benwt66z.js +4 -0
- package/dist/{time-B8tcX_hU.js → time-Bdnxi22U.js} +4 -4
- package/dist/{timeline-definition-IT6M3QCI-C7yv4fEk.js → timeline-definition-IT6M3QCI-DNoLAh-i.js} +4 -4
- package/dist/{toDate-BWaG12Pv.js → toDate-D6VXexnV.js} +2 -2
- package/dist/toml-CeOvPOkY.js +4 -0
- package/dist/{treemap-GDKQZRPO-B_LAAEIM.js → treemap-GDKQZRPO-C5OoxpmV.js} +3 -3
- package/dist/troff-DJN9hfgu.js +4 -0
- package/dist/ttcn-DQW2Psjf.js +4 -0
- package/dist/ttcn-cfg-zFG_MNpg.js +4 -0
- package/dist/turtle-DHRyNlSc.js +4 -0
- package/dist/{types-Dqw69fPc.js → types-CQ-RbYxp.js} +1 -1
- package/dist/{useAsyncData-Dqt2tV1E.js → useAsyncData-Cd4Urlww.js} +2 -2
- package/dist/{useDeepCompareMemoize-D2PKDkrk.js → useDeepCompareMemoize-X7clcrcQ.js} +3 -3
- package/dist/{useIframeCapabilities-DlwLttZw.js → useIframeCapabilities-BVQrlRBd.js} +1 -1
- package/dist/{useLifecycle-CJ_5Z4Mk.js → useLifecycle-Dids8BPm.js} +1 -1
- package/dist/{useTheme-BIAKDAh6.js → useTheme-Dm1WaAGy.js} +1 -1
- package/dist/vb-CXWH9DD-.js +4 -0
- package/dist/vbscript-qr8qVck5.js +4 -0
- package/dist/{vega-component-CTOT0vRO.js → vega-component-A6unyUJS.js} +12 -12
- package/dist/{vega-loader.browser-hMqVC9bf.js → vega-loader.browser-DqEcFOPD.js} +3 -3
- package/dist/velocity-C_9pUJRx.js +4 -0
- package/dist/verilog-DxBstgBa.js +4 -0
- package/dist/vhdl-odUxAbE6.js +4 -0
- package/dist/webidl-Dfn5Rku4.js +4 -0
- package/dist/xquery-CrJs6SXr.js +4 -0
- package/dist/{xychartDiagram-PRI3JC2R-DC0-6FAB.js → xychartDiagram-PRI3JC2R-ehVeySMW.js} +13 -13
- package/dist/yacas-B-uDDLZe.js +4 -0
- package/dist/z80-51gxgAXE.js +4 -0
- package/package.json +1 -1
- package/src/components/data-table/TableBottomBar.tsx +165 -0
- package/src/components/data-table/TableTopBar.tsx +141 -0
- package/src/components/data-table/data-table.tsx +29 -36
- package/src/components/data-table/export-actions.tsx +231 -0
- package/src/components/data-table/pagination.tsx +171 -251
- package/src/components/data-table/range-focus/__tests__/cell-selection-stats.test.tsx +16 -12
- package/src/components/data-table/range-focus/cell-selection-stats.tsx +9 -2
- package/src/plugins/impl/DataTablePlugin.tsx +4 -0
- package/dist/apl-Y7yFAg6_.js +0 -4
- package/dist/architecture-7HQA4BMR-SvLOcNCN.js +0 -6
- package/dist/arrays--2cd0hte.js +0 -59
- package/dist/asciiarmor-Bl8b2p0w.js +0 -4
- package/dist/asn1-BF6cywqm.js +0 -4
- package/dist/brainfuck-BuqydWe3.js +0 -4
- package/dist/classDiagram-2ON5EDUG-LT-Hu_dE.js +0 -30
- package/dist/classDiagram-v2-WZHVMYZB-G4qrOqlY.js +0 -30
- package/dist/clojure-CAHAWK5H.js +0 -4
- package/dist/cmake-BogDc4GF.js +0 -4
- package/dist/cobol-DRnpeU4u.js +0 -4
- package/dist/coffeescript-9MgX7RN8.js +0 -4
- package/dist/commonlisp-CVz2KONN.js +0 -4
- package/dist/crystal-td8mwLG5.js +0 -4
- package/dist/css-BK451dBn.js +0 -4
- package/dist/cypher-DuNPR6Ie.js +0 -4
- package/dist/d-DL6oP_-2.js +0 -4
- package/dist/diff-D9CplOBj.js +0 -4
- package/dist/dist-BOx8CJbo.js +0 -5
- package/dist/dist-BYoWtcAc.js +0 -5
- package/dist/dist-BaGdTXK1.js +0 -5
- package/dist/dist-BhGA2ia0.js +0 -8
- package/dist/dist-BoHuwe5C.js +0 -5
- package/dist/dist-CJ-2wW2z.js +0 -8
- package/dist/dist-Ccbo2rCF.js +0 -8
- package/dist/dist-CwayJLIO.js +0 -5
- package/dist/dist-D-jpfI6q.js +0 -6
- package/dist/dist-DShjplLu.js +0 -8
- package/dist/dist-DhBqFguQ.js +0 -5
- package/dist/dist-DiCgMCy4.js +0 -6
- package/dist/dist-Dqa-QKVa.js +0 -5
- package/dist/dist-OFv2DOPe.js +0 -5
- package/dist/dtd-Ce1c54UO.js +0 -4
- package/dist/dylan-B43wjIwg.js +0 -4
- package/dist/ecl-DK-fZmir.js +0 -4
- package/dist/eiffel-CNuvvPqD.js +0 -4
- package/dist/elm-DZEkBjgQ.js +0 -4
- package/dist/erlang-Dw4PDZV_.js +0 -4
- package/dist/factor-C9JRv63g.js +0 -4
- package/dist/forth-CKhoqn4e.js +0 -4
- package/dist/fortran-Do51bToK.js +0 -4
- package/dist/gas-BZfL3Uwh.js +0 -4
- package/dist/gherkin-BwQh4ehw.js +0 -4
- package/dist/groovy-CG5kCGiv.js +0 -4
- package/dist/haskell-BKii9uTg.js +0 -4
- package/dist/haxe-Bsz30J8x.js +0 -5
- package/dist/idl-BlxgaPKj.js +0 -4
- package/dist/infoDiagram-HS3SLOUP-fkZhmVE7.js +0 -30
- package/dist/javascript-SNhUvTcB.js +0 -4
- package/dist/julia-CGZzaDyk.js +0 -4
- package/dist/livescript-Cj6cX-Ys.js +0 -4
- package/dist/lua-BcVHrD8f.js +0 -4
- package/dist/mathematica-DLY8ZGoJ.js +0 -4
- package/dist/mbox-BNTsMWS5.js +0 -4
- package/dist/mirc-oyeOBir2.js +0 -4
- package/dist/mllike-ByxznKQw.js +0 -6
- package/dist/modelica-DNLhoyD8.js +0 -4
- package/dist/mscgen-DkZltsli.js +0 -6
- package/dist/mumps-TTiQB1xv.js +0 -4
- package/dist/nsis-RT1O1Ph8.js +0 -4
- package/dist/ntriples-CxsCiZ7Z.js +0 -4
- package/dist/octave-CkLh5tpW.js +0 -4
- package/dist/oz-yI7U9eVH.js +0 -4
- package/dist/pascal-CQK8sfDe.js +0 -4
- package/dist/perl-BEG8-kZl.js +0 -4
- package/dist/pig-DLLCqQaR.js +0 -4
- package/dist/powershell-CtjMkVO_.js +0 -4
- package/dist/properties-Domeb57z.js +0 -4
- package/dist/protobuf-0yk85TV6.js +0 -4
- package/dist/pug-B-BiNkM-.js +0 -4
- package/dist/puppet-C0N4vevK.js +0 -4
- package/dist/python-BZFa8G3C.js +0 -4
- package/dist/q-gcj7dgJv.js +0 -4
- package/dist/r-DavzTuPU.js +0 -4
- package/dist/react-vega-DfxWeueH.js +0 -9
- package/dist/rpm-bPj31ya8.js +0 -5
- package/dist/ruby-3UzzijjE.js +0 -4
- package/dist/sas-D9upmCP9.js +0 -4
- package/dist/scheme-DqWYzIFR.js +0 -4
- package/dist/shell-w63nkNmU.js +0 -4
- package/dist/sieve-Dz_ISrl6.js +0 -4
- package/dist/smalltalk-BXZ14pkr.js +0 -4
- package/dist/sparql-Boyc0wkb.js +0 -4
- package/dist/stateDiagram-v2-4FDKWEC3-BpOH8Bgl.js +0 -29
- package/dist/stex-DYK84lGq.js +0 -4
- package/dist/stylus-m9L_f1X1.js +0 -4
- package/dist/swift-C4TGn99K.js +0 -4
- package/dist/tcl-D_L0cfYZ.js +0 -4
- package/dist/textile-BAofYdKN.js +0 -4
- package/dist/toml-DCDKACLL.js +0 -4
- package/dist/troff-JHOU2VZK.js +0 -4
- package/dist/ttcn-Cxhng3qq.js +0 -4
- package/dist/ttcn-cfg-DJgUIu5n.js +0 -4
- package/dist/turtle-DKYkKZjV.js +0 -4
- package/dist/vb-C9rpn9hN.js +0 -4
- package/dist/vbscript-BQ7rxQU0.js +0 -4
- package/dist/velocity-C8WXmzLz.js +0 -4
- package/dist/verilog-BUXJEyEq.js +0 -4
- package/dist/vhdl-C18YIXfF.js +0 -4
- package/dist/webidl-D97EKzDx.js +0 -4
- package/dist/xquery-BZM6yzG2.js +0 -4
- package/dist/yacas-CXKck-Ok.js +0 -4
- package/dist/z80-BbF6ykWc.js +0 -4
- package/src/components/data-table/TableActions.tsx +0 -170
- package/src/components/data-table/download-actions.tsx +0 -224
- /package/dist/{ImageComparisonComponent-B5q26YVi.js → ImageComparisonComponent-DY3J_vIU.js} +0 -0
- /package/dist/{Plot-syRHsk-l.js → Plot-WhbJAbBh.js} +0 -0
- /package/dist/{apl-BqjtmlWW.js → apl-Oc3bL26_.js} +0 -0
- /package/dist/{array-D7wW5QoO.js → array-ByIS7m3B.js} +0 -0
- /package/dist/{asciiarmor-D9C9bbeV.js → asciiarmor-DTbPh2VI.js} +0 -0
- /package/dist/{asn1-D_zR1ubK.js → asn1-CGhwu1Ri.js} +0 -0
- /package/dist/{asterisk-B0dLLA8Z.js → asterisk-BApaB_8m.js} +0 -0
- /package/dist/{brainfuck-79SC7EYA.js → brainfuck-CA0L8lRq.js} +0 -0
- /package/dist/{chunk-DR5Q36YT-BxPcQ21t.js → chunk-DR5Q36YT-C40cYcy5.js} +0 -0
- /package/dist/{click-outside-container-DNfggvIW.js → click-outside-container-vCXhHl-R.js} +0 -0
- /package/dist/{clike-DFDX2jWq.js → clike-CEtUBPHD.js} +0 -0
- /package/dist/{clojure-Bb3Od9By.js → clojure-BszjvdGo.js} +0 -0
- /package/dist/{cmake-DYGUYEtU.js → cmake-B2Gvps8b.js} +0 -0
- /package/dist/{cobol-CcWmcAFT.js → cobol-DuMch8nn.js} +0 -0
- /package/dist/{coffeescript-BVa1qoL6.js → coffeescript-L9aKXVsJ.js} +0 -0
- /package/dist/{colors-6DRQ0kEF.js → colors-IJ-2cn2o.js} +0 -0
- /package/dist/{common-keywords-Bz8dNfWa.js → common-keywords-CsU75Ked.js} +0 -0
- /package/dist/{commonlisp-zi51jgUH.js → commonlisp-CrtdssxB.js} +0 -0
- /package/dist/{crystal-QjpegJHM.js → crystal-vvNY0LpY.js} +0 -0
- /package/dist/{css-B_GfJtcK.js → css-B1GdzqT1.js} +0 -0
- /package/dist/{cypher-BVuYJpGf.js → cypher-BtZvV7bW.js} +0 -0
- /package/dist/{cytoscape.esm-BYAuS6uS.js → cytoscape.esm-CRfNlsPy.js} +0 -0
- /package/dist/{d-BT97RiQI.js → d-B0UN3V-Z.js} +0 -0
- /package/dist/{defaultLocale-B_A76Zpk.js → defaultLocale-Bxoo2-30.js} +0 -0
- /package/dist/{defaultLocale-DjFHq3Xk.js → defaultLocale-qS7DaAmi.js} +0 -0
- /package/dist/{diff-CHd93v7L.js → diff-DOpgjj1W.js} +0 -0
- /package/dist/{dist-CqR8FBcH.js → dist-BjWd_Ei9.js} +0 -0
- /package/dist/{dist-CORAUsE1.js → dist-KZI_BHqV.js} +0 -0
- /package/dist/{dtd-akLFIRuZ.js → dtd-Ctnjxrle.js} +0 -0
- /package/dist/{duckdb-keywords-CQAIHMbC.js → duckdb-keywords-DjrZdCO2.js} +0 -0
- /package/dist/{dylan-Iy-rgNOc.js → dylan-DFXkoaZy.js} +0 -0
- /package/dist/{ebnf-CTkZpZPT.js → ebnf-XJCIl_em.js} +0 -0
- /package/dist/{ecl-BhUXC_aR.js → ecl-C1NExZip.js} +0 -0
- /package/dist/{eiffel-DIRAlWPD.js → eiffel-uXVGgleg.js} +0 -0
- /package/dist/{elm-BDgVzkJ4.js → elm-CBOFnnib.js} +0 -0
- /package/dist/{emotion-is-prop-valid.esm-DdzHpbbG.js → emotion-is-prop-valid.esm-CJVjyntJ.js} +0 -0
- /package/dist/{erlang-Djcs_NwB.js → erlang-DMnrT8XK.js} +0 -0
- /package/dist/{error-banner-DkDzvax3.js → error-banner-Bx9kIgrs.js} +0 -0
- /package/dist/{esm-BRwAuUu2.js → esm-D4gzqVRq.js} +0 -0
- /package/dist/{fcl-OXoT8w4k.js → fcl-fh4Mj0bc.js} +0 -0
- /package/dist/{forth-c_NTahPv.js → forth-DDpxS4nw.js} +0 -0
- /package/dist/{fortran-Bpxt27dn.js → fortran-B6uYqQMz.js} +0 -0
- /package/dist/{gas-RVBts6ZK.js → gas-BKnWzuFz.js} +0 -0
- /package/dist/{gherkin-Hf6PTauh.js → gherkin-pBt0wT4X.js} +0 -0
- /package/dist/{groovy-CKjO-cRi.js → groovy-DKsn4ppB.js} +0 -0
- /package/dist/{haskell-DC1Gan6v.js → haskell-BJVBJQcy.js} +0 -0
- /package/dist/{haxe-Bpne--ot.js → haxe-rLN5UZU5.js} +0 -0
- /package/dist/{http-CPVO27fZ.js → http-CbJFDV7c.js} +0 -0
- /package/dist/{idl-GRIbMIEq.js → idl-B4mwMAo-.js} +0 -0
- /package/dist/{init-BfRhston.js → init-Cge3yl4r.js} +0 -0
- /package/dist/{invariant-CzjtdzpE.js → invariant-D4hPsZFI.js} +0 -0
- /package/dist/{isEmpty-D_Jzlmqv.js → isEmpty-BQtUinxJ.js} +0 -0
- /package/dist/{javascript-nS0zxWNO.js → javascript-Hf2NLNC0.js} +0 -0
- /package/dist/{julia-CQpdTxmO.js → julia-GGpx21YN.js} +0 -0
- /package/dist/{katex-Dg42UEnr.js → katex-CQ_cP8Uu.js} +0 -0
- /package/dist/{livescript-D5kqrQol.js → livescript-CSvXMspZ.js} +0 -0
- /package/dist/{lua-CKifrpGK.js → lua-CVMR5LMW.js} +0 -0
- /package/dist/{main-C01_ic0d.js → main-CvkAPtaq.js} +0 -0
- /package/dist/{math-BbMyrONz.js → math-CEWMqgbD.js} +0 -0
- /package/dist/{mathematica-CxT3f_fi.js → mathematica-JENNt-p4.js} +0 -0
- /package/dist/{mbox-C2_n_I9h.js → mbox-mzifoc8E.js} +0 -0
- /package/dist/{memoize-CwWm-NpB.js → memoize-CuHciEBb.js} +0 -0
- /package/dist/{merge-Byt9w-nO.js → merge-CA_buyY3.js} +0 -0
- /package/dist/{micromark-factory-space-YUxUai1y.js → micromark-factory-space-BHslBP9f.js} +0 -0
- /package/dist/{mirc-BTQeASBH.js → mirc-BXoiItvN.js} +0 -0
- /package/dist/{mllike-BxO6Hl5N.js → mllike-H-KR9OuH.js} +0 -0
- /package/dist/{modelica-DuivZReX.js → modelica-B6Hm3mMl.js} +0 -0
- /package/dist/{mscgen-DwD83FOm.js → mscgen-D8TF_Hei.js} +0 -0
- /package/dist/{mumps-CdVjp3OE.js → mumps-CD-kNPt4.js} +0 -0
- /package/dist/{nginx-Bi9TuNqb.js → nginx-9EZQIKsh.js} +0 -0
- /package/dist/{node-sql-parser-Bet3kHkt.js → node-sql-parser-DIe6Cq_-.js} +0 -0
- /package/dist/{now-uNLDfbuW.js → now-CXAdKY5k.js} +0 -0
- /package/dist/{ntriples-DBS60qLp.js → ntriples-DgnpxU40.js} +0 -0
- /package/dist/{octave-BL0tQUFC.js → octave-CkobqyVm.js} +0 -0
- /package/dist/{oz-DBrG4vwi.js → oz-ChDLd9tS.js} +0 -0
- /package/dist/{pascal-BWV9h8yS.js → pascal-CvlkwK7E.js} +0 -0
- /package/dist/{path-C_x2ySFi.js → path-B-82hpi8.js} +0 -0
- /package/dist/{perl-Bm5a83JW.js → perl-BNEFTNbM.js} +0 -0
- /package/dist/{pig-CbJDoHaE.js → pig-Cd1DMS7P.js} +0 -0
- /package/dist/{powershell-tG44m5Cy.js → powershell-CPxA0zpc.js} +0 -0
- /package/dist/{properties-DUZGzdb1.js → properties-BaFBm-Xa.js} +0 -0
- /package/dist/{protobuf-CcoKXY0d.js → protobuf-BQV_-X0H.js} +0 -0
- /package/dist/{puppet-BH73L_Gw.js → puppet-LXLST0mx.js} +0 -0
- /package/dist/{purify.es-BwXbuO3r.js → purify.es-ukiMXY-F.js} +0 -0
- /package/dist/{python-NJIxLTZp.js → python-DLjLzX4k.js} +0 -0
- /package/dist/{q-MotBNA65.js → q-DswTX1Y9.js} +0 -0
- /package/dist/{r-BUgBPae7.js → r-CO7NpMwE.js} +0 -0
- /package/dist/{range-DwpxnYuB.js → range-BYuZFTbA.js} +0 -0
- /package/dist/{rpm-C_PaGodG.js → rpm-BlmEDT6r.js} +0 -0
- /package/dist/{ruby-DFLM2XD8.js → ruby-BTPKgeZZ.js} +0 -0
- /package/dist/{sas-BMyyu8oO.js → sas-DTDTiNO8.js} +0 -0
- /package/dist/{scheme-Qet9zYAe.js → scheme-UzAAg4GJ.js} +0 -0
- /package/dist/{shell-BKHx4Jjo.js → shell-DQ0hQCsB.js} +0 -0
- /package/dist/{sieve-CVo7dc4j.js → sieve-BVyYIx9u.js} +0 -0
- /package/dist/{simple-mode-CVFBIo6d.js → simple-mode-Dryu-fC9.js} +0 -0
- /package/dist/{smalltalk-BHr2nCth.js → smalltalk-DAdMAHTu.js} +0 -0
- /package/dist/{solr-Bt9XtM2H.js → solr-Bn6k51kO.js} +0 -0
- /package/dist/{sparql-QSu0ZCcc.js → sparql-Bi7quYgw.js} +0 -0
- /package/dist/{spreadsheet-BWfuwc0V.js → spreadsheet-UpVklYg7.js} +0 -0
- /package/dist/{sql-BdV3YOCG.js → sql-qyORs189.js} +0 -0
- /package/dist/{stex-Btoi8e7I.js → stex-Ze8D4R_5.js} +0 -0
- /package/dist/{stylus-CLZH9-Ps.js → stylus-jhpzcQ6Y.js} +0 -0
- /package/dist/{swift-JNDJdNIE.js → swift-BrO8qThZ.js} +0 -0
- /package/dist/{tcl-J5aE7aj5.js → tcl-s5QI5gv3.js} +0 -0
- /package/dist/{textile-6Hn05XQM.js → textile-ClhvJrxM.js} +0 -0
- /package/dist/{tiddlywiki-BWn8rSwJ.js → tiddlywiki-CmAAqw9M.js} +0 -0
- /package/dist/{tiki-XORjA1c3.js → tiki-DzCRe_s0.js} +0 -0
- /package/dist/{timer-pEiW44EO.js → timer-BPKOAfmx.js} +0 -0
- /package/dist/{toml-BceyeuiF.js → toml-TFa3EJQE.js} +0 -0
- /package/dist/{treemap-BzS5cW_6.js → treemap-CmLtUuWe.js} +0 -0
- /package/dist/{troff-DeMyd5Pf.js → troff-SqLg0heF.js} +0 -0
- /package/dist/{ttcn-DurvvcB-.js → ttcn-Cfrap7HJ.js} +0 -0
- /package/dist/{ttcn-cfg-BuYui6Rv.js → ttcn-cfg-Dopc-iwE.js} +0 -0
- /package/dist/{turtle-CD8Qf-tp.js → turtle-Dt52DvVH.js} +0 -0
- /package/dist/{vb-BklM-Nqk.js → vb-D1pAvfDe.js} +0 -0
- /package/dist/{vbscript-DbMEEX0d.js → vbscript-DZ7RBxn5.js} +0 -0
- /package/dist/{velocity-CERL-_vq.js → velocity-Csau7eZy.js} +0 -0
- /package/dist/{verilog-BD6jNce6.js → verilog-gXlZACs5.js} +0 -0
- /package/dist/{vhdl-U-1_N98i.js → vhdl-NaUWbI1B.js} +0 -0
- /package/dist/{webidl-IUn0dzoa.js → webidl-BJmPjW01.js} +0 -0
- /package/dist/{xquery-QeeHdSO2.js → xquery-CJIPsC0g.js} +0 -0
- /package/dist/{yacas-C9XcEPAJ.js → yacas-8f2Vjiiz.js} +0 -0
- /package/dist/{z80-C-nD1oRy.js → z80-s5Xk2hCP.js} +0 -0
|
@@ -37,16 +37,15 @@ import type { CellStyleState } from "./cell-styling/types";
|
|
|
37
37
|
import { ColumnFormattingFeature } from "./column-formatting/feature";
|
|
38
38
|
import { ColumnWrappingFeature } from "./column-wrapping/feature";
|
|
39
39
|
import { CopyColumnFeature } from "./copy-column/feature";
|
|
40
|
-
import type {
|
|
40
|
+
import type { ExportActionProps } from "./export-actions";
|
|
41
41
|
import { FilterPills } from "./filter-pills";
|
|
42
42
|
import { FocusRowFeature } from "./focus-row/feature";
|
|
43
43
|
import { useColumnPinning } from "./hooks/use-column-pinning";
|
|
44
44
|
import { useScrollContainerHeight } from "./hooks/use-scroll-container-height";
|
|
45
|
-
import { CellSelectionStats } from "./range-focus/cell-selection-stats";
|
|
46
45
|
import { CellSelectionProvider } from "./range-focus/provider";
|
|
47
46
|
import { DataTableBody, renderTableHeader } from "./renderers";
|
|
48
|
-
import {
|
|
49
|
-
import {
|
|
47
|
+
import { TableBottomBar } from "./TableBottomBar";
|
|
48
|
+
import { TableTopBar } from "./TableTopBar";
|
|
50
49
|
import {
|
|
51
50
|
type DataTableSelection,
|
|
52
51
|
MIN_ROWS_TO_VIRTUALIZE,
|
|
@@ -54,7 +53,7 @@ import {
|
|
|
54
53
|
} from "./types";
|
|
55
54
|
import { getStableRowId } from "./utils";
|
|
56
55
|
|
|
57
|
-
interface DataTableProps<TData> extends Partial<
|
|
56
|
+
interface DataTableProps<TData> extends Partial<ExportActionProps> {
|
|
58
57
|
wrapperClassName?: string;
|
|
59
58
|
className?: string;
|
|
60
59
|
maxHeight?: number;
|
|
@@ -99,6 +98,7 @@ interface DataTableProps<TData> extends Partial<DownloadActionProps> {
|
|
|
99
98
|
onViewedRowChange?: OnChangeFn<number>;
|
|
100
99
|
// Others
|
|
101
100
|
showChartBuilder?: boolean;
|
|
101
|
+
isChartBuilderOpen?: boolean;
|
|
102
102
|
showPageSizeSelector?: boolean;
|
|
103
103
|
showTableExplorer?: boolean;
|
|
104
104
|
togglePanel?: (panelType: PanelType) => void;
|
|
@@ -143,6 +143,7 @@ const DataTableInternal = <TData,>({
|
|
|
143
143
|
freezeColumnsRight,
|
|
144
144
|
toggleDisplayHeader,
|
|
145
145
|
showChartBuilder,
|
|
146
|
+
isChartBuilderOpen,
|
|
146
147
|
showPageSizeSelector,
|
|
147
148
|
showTableExplorer,
|
|
148
149
|
togglePanel,
|
|
@@ -151,7 +152,6 @@ const DataTableInternal = <TData,>({
|
|
|
151
152
|
viewedRowIdx,
|
|
152
153
|
onViewedRowChange,
|
|
153
154
|
}: DataTableProps<TData>) => {
|
|
154
|
-
const [isSearchEnabled, setIsSearchEnabled] = React.useState<boolean>(false);
|
|
155
155
|
const [showLoadingBar, setShowLoadingBar] = React.useState<boolean>(false);
|
|
156
156
|
const { locale } = useLocale();
|
|
157
157
|
|
|
@@ -284,15 +284,19 @@ const DataTableInternal = <TData,>({
|
|
|
284
284
|
<FilterPills filters={filters} table={table} />
|
|
285
285
|
<CellSelectionProvider>
|
|
286
286
|
<div className={cn(className || "rounded-md border overflow-hidden")}>
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
287
|
+
<TableTopBar
|
|
288
|
+
enableSearch={enableSearch}
|
|
289
|
+
searchQuery={searchQuery}
|
|
290
|
+
onSearchQueryChange={onSearchQueryChange}
|
|
291
|
+
reloading={reloading}
|
|
292
|
+
showChartBuilder={showChartBuilder}
|
|
293
|
+
isChartBuilderOpen={isChartBuilderOpen}
|
|
294
|
+
toggleDisplayHeader={toggleDisplayHeader}
|
|
295
|
+
showTableExplorer={showTableExplorer}
|
|
296
|
+
togglePanel={togglePanel}
|
|
297
|
+
isAnyPanelOpen={isAnyPanelOpen}
|
|
298
|
+
downloadAs={downloadAs}
|
|
299
|
+
/>
|
|
296
300
|
<Table className="relative" ref={tableRef}>
|
|
297
301
|
{showLoadingBar && (
|
|
298
302
|
<thead className="absolute top-0 left-0 h-[3px] w-1/2 bg-primary animate-slide" />
|
|
@@ -308,28 +312,17 @@ const DataTableInternal = <TData,>({
|
|
|
308
312
|
/>
|
|
309
313
|
</Table>
|
|
310
314
|
</div>
|
|
311
|
-
<
|
|
315
|
+
<TableBottomBar
|
|
316
|
+
totalColumns={totalColumns}
|
|
317
|
+
pagination={pagination}
|
|
318
|
+
selection={selection}
|
|
319
|
+
onRowSelectionChange={onRowSelectionChange}
|
|
320
|
+
table={table}
|
|
321
|
+
getRowIds={getRowIds}
|
|
322
|
+
showPageSizeSelector={showPageSizeSelector}
|
|
323
|
+
tableLoading={reloading}
|
|
324
|
+
/>
|
|
312
325
|
</CellSelectionProvider>
|
|
313
|
-
<TableActions
|
|
314
|
-
enableSearch={enableSearch}
|
|
315
|
-
totalColumns={totalColumns}
|
|
316
|
-
onSearchQueryChange={onSearchQueryChange}
|
|
317
|
-
isSearchEnabled={isSearchEnabled}
|
|
318
|
-
setIsSearchEnabled={setIsSearchEnabled}
|
|
319
|
-
pagination={pagination}
|
|
320
|
-
selection={selection}
|
|
321
|
-
onRowSelectionChange={onRowSelectionChange}
|
|
322
|
-
table={table}
|
|
323
|
-
downloadAs={downloadAs}
|
|
324
|
-
getRowIds={getRowIds}
|
|
325
|
-
toggleDisplayHeader={toggleDisplayHeader}
|
|
326
|
-
showChartBuilder={showChartBuilder}
|
|
327
|
-
showPageSizeSelector={showPageSizeSelector}
|
|
328
|
-
showTableExplorer={showTableExplorer}
|
|
329
|
-
togglePanel={togglePanel}
|
|
330
|
-
isAnyPanelOpen={isAnyPanelOpen}
|
|
331
|
-
tableLoading={reloading}
|
|
332
|
-
/>
|
|
333
326
|
</div>
|
|
334
327
|
);
|
|
335
328
|
};
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
BracesIcon,
|
|
5
|
+
BrickWallIcon,
|
|
6
|
+
DownloadIcon,
|
|
7
|
+
FileTextIcon,
|
|
8
|
+
TableIcon,
|
|
9
|
+
} from "lucide-react";
|
|
10
|
+
import React from "react";
|
|
11
|
+
import { useLocale } from "react-aria";
|
|
12
|
+
import { logNever } from "@/utils/assertNever";
|
|
13
|
+
import { cn } from "@/utils/cn";
|
|
14
|
+
import { copyToClipboard } from "@/utils/copy";
|
|
15
|
+
import { downloadByURL } from "@/utils/download";
|
|
16
|
+
import { prettyError } from "@/utils/errors";
|
|
17
|
+
import { Filenames } from "@/utils/filenames";
|
|
18
|
+
import {
|
|
19
|
+
jsonParseWithSpecialChar,
|
|
20
|
+
jsonToMarkdown,
|
|
21
|
+
jsonToTSV,
|
|
22
|
+
} from "@/utils/json/json-parser";
|
|
23
|
+
import { Button } from "../ui/button";
|
|
24
|
+
import {
|
|
25
|
+
DropdownMenu,
|
|
26
|
+
DropdownMenuContent,
|
|
27
|
+
DropdownMenuItem,
|
|
28
|
+
DropdownMenuLabel,
|
|
29
|
+
DropdownMenuSeparator,
|
|
30
|
+
DropdownMenuTrigger,
|
|
31
|
+
} from "../ui/dropdown-menu";
|
|
32
|
+
import { Tooltip } from "../ui/tooltip";
|
|
33
|
+
import { toast } from "../ui/use-toast";
|
|
34
|
+
|
|
35
|
+
type DownloadFormat = "csv" | "json" | "parquet";
|
|
36
|
+
|
|
37
|
+
export interface ExportActionProps {
|
|
38
|
+
downloadAs: (req: { format: DownloadFormat }) => Promise<{
|
|
39
|
+
url: string;
|
|
40
|
+
filename: string;
|
|
41
|
+
}>;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const FILE_TYPES = {
|
|
45
|
+
CSV: {
|
|
46
|
+
label: "CSV",
|
|
47
|
+
format: "csv",
|
|
48
|
+
description: "Comma-separated values",
|
|
49
|
+
icon: TableIcon,
|
|
50
|
+
},
|
|
51
|
+
JSON: {
|
|
52
|
+
label: "JSON",
|
|
53
|
+
format: "json",
|
|
54
|
+
description: "Raw JSON data",
|
|
55
|
+
icon: BracesIcon,
|
|
56
|
+
},
|
|
57
|
+
PARQUET: {
|
|
58
|
+
label: "Parquet",
|
|
59
|
+
format: "parquet",
|
|
60
|
+
description: "Columnar binary format",
|
|
61
|
+
icon: BrickWallIcon,
|
|
62
|
+
},
|
|
63
|
+
TSV: {
|
|
64
|
+
label: "TSV",
|
|
65
|
+
format: "tsv",
|
|
66
|
+
description: "Best for Excel and Google Sheets",
|
|
67
|
+
icon: TableIcon,
|
|
68
|
+
},
|
|
69
|
+
MARKDOWN: {
|
|
70
|
+
label: "Markdown",
|
|
71
|
+
format: "markdown",
|
|
72
|
+
description: "Preserves hyperlinks and formatting",
|
|
73
|
+
icon: FileTextIcon,
|
|
74
|
+
},
|
|
75
|
+
} as const;
|
|
76
|
+
|
|
77
|
+
const downloadOptions = [FILE_TYPES.CSV, FILE_TYPES.JSON, FILE_TYPES.PARQUET];
|
|
78
|
+
const copyOptions = [
|
|
79
|
+
FILE_TYPES.TSV,
|
|
80
|
+
FILE_TYPES.JSON,
|
|
81
|
+
FILE_TYPES.CSV,
|
|
82
|
+
FILE_TYPES.MARKDOWN,
|
|
83
|
+
];
|
|
84
|
+
|
|
85
|
+
export const ExportMenu: React.FC<ExportActionProps> = (props) => {
|
|
86
|
+
const { locale } = useLocale();
|
|
87
|
+
const [open, setOpen] = React.useState(false);
|
|
88
|
+
|
|
89
|
+
const button = (
|
|
90
|
+
<Button
|
|
91
|
+
data-testid="export-button"
|
|
92
|
+
size="xs"
|
|
93
|
+
variant="text"
|
|
94
|
+
className={cn(
|
|
95
|
+
"print:hidden text-xs gap-1",
|
|
96
|
+
open ? "text-primary" : "text-muted-foreground",
|
|
97
|
+
)}
|
|
98
|
+
>
|
|
99
|
+
<DownloadIcon className="w-3.5 h-3.5" />
|
|
100
|
+
Export
|
|
101
|
+
</Button>
|
|
102
|
+
);
|
|
103
|
+
|
|
104
|
+
const getDownloadResult = (format: DownloadFormat) => {
|
|
105
|
+
return props.downloadAs({ format }).catch((error) => {
|
|
106
|
+
toast({
|
|
107
|
+
title: "Failed to download",
|
|
108
|
+
description: "message" in error ? error.message : String(error),
|
|
109
|
+
});
|
|
110
|
+
throw error;
|
|
111
|
+
});
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const handleClipboardCopy = async (
|
|
115
|
+
format: (typeof copyOptions)[number]["format"],
|
|
116
|
+
) => {
|
|
117
|
+
let text: string;
|
|
118
|
+
|
|
119
|
+
switch (format) {
|
|
120
|
+
case "tsv": {
|
|
121
|
+
const { url } = await getDownloadResult("json");
|
|
122
|
+
const json = await fetchJson(url);
|
|
123
|
+
text = jsonToTSV(json, locale);
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
case "json": {
|
|
127
|
+
const { url } = await getDownloadResult("json");
|
|
128
|
+
const json = await fetchJson(url);
|
|
129
|
+
text = JSON.stringify(json, null, 2);
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
case "csv": {
|
|
133
|
+
const { url } = await getDownloadResult("csv");
|
|
134
|
+
const csv = await fetchText(url);
|
|
135
|
+
text = csv;
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
case "markdown": {
|
|
139
|
+
const { url } = await getDownloadResult("json");
|
|
140
|
+
const json = await fetchJson(url);
|
|
141
|
+
text = jsonToMarkdown(json);
|
|
142
|
+
break;
|
|
143
|
+
}
|
|
144
|
+
default:
|
|
145
|
+
logNever(format);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
await copyToClipboard(text);
|
|
150
|
+
toast({
|
|
151
|
+
title: "Copied to clipboard",
|
|
152
|
+
});
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
return (
|
|
156
|
+
<DropdownMenu modal={false} open={open} onOpenChange={setOpen}>
|
|
157
|
+
<Tooltip content="Export" open={open ? false : undefined}>
|
|
158
|
+
<DropdownMenuTrigger asChild={true}>{button}</DropdownMenuTrigger>
|
|
159
|
+
</Tooltip>
|
|
160
|
+
<DropdownMenuContent side="bottom" className="print:hidden">
|
|
161
|
+
<DropdownMenuLabel className="text-xs text-muted-foreground">
|
|
162
|
+
Download
|
|
163
|
+
</DropdownMenuLabel>
|
|
164
|
+
{downloadOptions.map((option) => (
|
|
165
|
+
<DropdownMenuItem
|
|
166
|
+
key={option.label}
|
|
167
|
+
onSelect={async () => {
|
|
168
|
+
const { url, filename } = await getDownloadResult(option.format);
|
|
169
|
+
const ext = option.format;
|
|
170
|
+
const rawName = (filename ?? "").trim();
|
|
171
|
+
const baseName =
|
|
172
|
+
Filenames.withoutExtension(rawName) || "download";
|
|
173
|
+
downloadByURL(url, `${baseName}.${ext}`);
|
|
174
|
+
}}
|
|
175
|
+
>
|
|
176
|
+
<option.icon className="mo-dropdown-icon" />
|
|
177
|
+
<div className="flex flex-col">
|
|
178
|
+
<span>{option.label}</span>
|
|
179
|
+
<span className="text-xs text-muted-foreground">
|
|
180
|
+
{option.description}
|
|
181
|
+
</span>
|
|
182
|
+
</div>
|
|
183
|
+
</DropdownMenuItem>
|
|
184
|
+
))}
|
|
185
|
+
<DropdownMenuSeparator />
|
|
186
|
+
<DropdownMenuLabel className="text-xs text-muted-foreground">
|
|
187
|
+
Copy to clipboard
|
|
188
|
+
</DropdownMenuLabel>
|
|
189
|
+
{copyOptions.map((option) => (
|
|
190
|
+
<DropdownMenuItem
|
|
191
|
+
key={option.label}
|
|
192
|
+
onSelect={async () => {
|
|
193
|
+
try {
|
|
194
|
+
await handleClipboardCopy(option.format);
|
|
195
|
+
} catch (error) {
|
|
196
|
+
toast({
|
|
197
|
+
title: "Failed to copy to clipboard",
|
|
198
|
+
description: prettyError(error),
|
|
199
|
+
variant: "danger",
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
}}
|
|
203
|
+
>
|
|
204
|
+
<option.icon className="mo-dropdown-icon" />
|
|
205
|
+
<div className="flex flex-col">
|
|
206
|
+
<span>{option.label}</span>
|
|
207
|
+
<span className="text-xs text-muted-foreground">
|
|
208
|
+
{option.description}
|
|
209
|
+
</span>
|
|
210
|
+
</div>
|
|
211
|
+
</DropdownMenuItem>
|
|
212
|
+
))}
|
|
213
|
+
</DropdownMenuContent>
|
|
214
|
+
</DropdownMenu>
|
|
215
|
+
);
|
|
216
|
+
};
|
|
217
|
+
|
|
218
|
+
function fetchJson(url: string): Promise<Record<string, unknown>[]> {
|
|
219
|
+
return fetchText(url).then(
|
|
220
|
+
jsonParseWithSpecialChar<Record<string, unknown>[]>,
|
|
221
|
+
);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
function fetchText(url: string): Promise<string> {
|
|
225
|
+
return fetch(url).then((res) => {
|
|
226
|
+
if (!res.ok) {
|
|
227
|
+
throw new Error(res.statusText);
|
|
228
|
+
}
|
|
229
|
+
return res.text();
|
|
230
|
+
});
|
|
231
|
+
}
|