@marimo-team/islands 0.21.2-dev62 → 0.21.2-dev64
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-BBPQRrDo.js → Combination-B_FmEi05.js} +3 -3
- package/dist/{ConnectedDataExplorerComponent-DrWDbHRV.js → ConnectedDataExplorerComponent-DkSulho5.js} +30 -29
- package/dist/{ImageComparisonComponent-BYQfAfSR.js → ImageComparisonComponent-gxt3EfyS.js} +1 -1
- package/dist/{Plot-DfUav0o0.js → Plot-Do8S2SQJ.js} +1 -1
- package/dist/{_baseIsEqual-CvgsjYoW.js → _baseIsEqual-QWfxbVqg.js} +1 -1
- package/dist/_basePickBy-Do49cXgl.js +34 -0
- package/dist/{_baseUniq-BUFhl85h.js → _baseUniq-vFmWNipH.js} +1 -1
- package/dist/{any-language-editor-BRpxklRq.js → any-language-editor-B_YcSEs7.js} +22 -21
- package/dist/apl-Bw2VYJky.js +4 -0
- package/dist/{arc-DXxE-tFl.js → arc-DfkSnvZm.js} +2 -2
- package/dist/architecture-7HQA4BMR-BVuGBj38.js +6 -0
- package/dist/{architectureDiagram-VXUJARFQ-Df0FNeBR.js → architectureDiagram-VXUJARFQ-CTttozWW.js} +19 -19
- package/dist/asciiarmor-eqY4ZaG6.js +4 -0
- package/dist/asn1-Ch439-Sl.js +4 -0
- package/dist/{blockDiagram-VD42YOAC-DszWqlLz.js → blockDiagram-VD42YOAC-DPCYZecD.js} +14 -14
- package/dist/brainfuck-CYhvoM5D.js +4 -0
- package/dist/{button-BKkuUpZh.js → button-B1ZgJ7Cc.js} +2 -2
- package/dist/{c4Diagram-YG6GDRKO-Dyj8LoUX.js → c4Diagram-YG6GDRKO-BAE3Buci.js} +6 -6
- package/dist/capabilities-DAGZLwa6.js +36 -0
- package/dist/{channel-CUFaIkTh.js → channel-DApRnm6b.js} +1 -1
- package/dist/chat-ui-DIuq4Mn6.js +7296 -0
- package/dist/{check-Diwc5emq.js → check-B2OoWw2h.js} +1 -1
- package/dist/{chunk-4BX2VUAB-CwMMQLZ_.js → chunk-4BX2VUAB-BtdcCA7H.js} +1 -1
- package/dist/{chunk-4F5CHEZ2-CRwwZ2ED.js → chunk-4F5CHEZ2-trdcsslU.js} +1 -1
- package/dist/{chunk-55IACEB6-Dj8CzJvE.js → chunk-55IACEB6-hJraQgx2.js} +1 -1
- package/dist/{chunk-5FQGJX7Z-BkzUmppO.js → chunk-5FQGJX7Z-DwBOYBMa.js} +4 -4
- package/dist/{chunk-ABZYJK2D-7QYXAAhe.js → chunk-ABZYJK2D-DFnIGLNd.js} +3 -3
- package/dist/{chunk-ATLVNIR6-pmHPAPSd.js → chunk-ATLVNIR6-4HgRPLgX.js} +2 -2
- package/dist/{chunk-B2363JML-BuBMltZc.js → chunk-B2363JML-BFAcnt5i.js} +1 -1
- package/dist/{chunk-B4BG7PRW-Dbta9cTX.js → chunk-B4BG7PRW-Bp8FDZTb.js} +7 -7
- package/dist/{chunk-CVBHYZKI-D8iwHsLF.js → chunk-CVBHYZKI-B_c5YBcW.js} +1 -1
- package/dist/{chunk-DI55MBZ5-DyKB35wC.js → chunk-DI55MBZ5-CtD9lSpd.js} +6 -6
- package/dist/{chunk-EXTU4WIE-BRFl4iNd.js → chunk-EXTU4WIE-QrN2mPtn.js} +2 -2
- package/dist/{chunk-FMBD7UC4-XTL4xAvH.js → chunk-FMBD7UC4-B34QcQBj.js} +1 -1
- package/dist/{chunk-FRFDVMJY-Bk2LD5Te.js → chunk-FRFDVMJY-Bdi7sRSt.js} +1 -1
- package/dist/{chunk-HN2XXSSU-CzO5Phf0.js → chunk-HN2XXSSU-E3n-Ys7Z.js} +1 -1
- package/dist/{chunk-JA3XYJ7Z-BkrY9SdL.js → chunk-JA3XYJ7Z-B9-EWihm.js} +3 -3
- package/dist/{chunk-JZLCHNYA-Bk_Lil-q.js → chunk-JZLCHNYA-CIx__-bR.js} +6 -6
- package/dist/{chunk-MI3HLSF2-DvCKDmpi.js → chunk-MI3HLSF2-CUYEasXO.js} +1 -1
- package/dist/{chunk-N4CR4FBY-f5n6meOd.js → chunk-N4CR4FBY-Cl9KH_W1.js} +7 -7
- package/dist/{chunk-PL6DKKU2-DiFkzMfM.js → chunk-PL6DKKU2-BBQnb9JJ.js} +1 -1
- package/dist/{chunk-QN33PNHL-CXfJywHv.js → chunk-QN33PNHL-DV6ID85v.js} +2 -2
- package/dist/{chunk-QXUST7PY-D7-26sj3.js → chunk-QXUST7PY-CaiIvoL5.js} +10 -10
- package/dist/{chunk-QZHKN3VN-CYbwZKgJ.js → chunk-QZHKN3VN-CBBP4d0M.js} +1 -1
- package/dist/{chunk-S3R3BYOJ-BRT9vd1R.js → chunk-S3R3BYOJ-CQOhwRBS.js} +6 -6
- package/dist/{chunk-SJTYNZTY-BvVkbShU.js → chunk-SJTYNZTY-upm-bCUI.js} +1 -1
- package/dist/{chunk-TCCFYFTB-DqxhgXG0.js → chunk-TCCFYFTB-C5_FjmXA.js} +15 -14
- package/dist/{chunk-TQ3KTPDO-CPkEruAA.js → chunk-TQ3KTPDO-BYnhW5aQ.js} +1 -1
- package/dist/{chunk-TZMSLE5B-DSfBOnzx.js → chunk-TZMSLE5B-BkqhN89K.js} +3 -3
- package/dist/{chunk-UMXZTB3W-C4ypIY3V.js → chunk-UMXZTB3W-CmrAYToU.js} +1 -1
- package/dist/classDiagram-2ON5EDUG-BKvGPmV7.js +30 -0
- package/dist/classDiagram-v2-WZHVMYZB-CUmRCVhz.js +30 -0
- package/dist/{clike-CLJYUAWw.js → clike-jRoJKo3I.js} +1 -1
- package/dist/clojure-Dlp86hGI.js +4 -0
- package/dist/{clone-CEQ-pda1.js → clone-BM9_Wkaf.js} +1 -1
- package/dist/cmake-CW_qEITI.js +4 -0
- package/dist/cobol-XHu3WWjZ.js +4 -0
- package/dist/{code-block-37QAKDTI-DV_ZyoUh.js → code-block-37QAKDTI-Dae3xvB0.js} +2 -2
- package/dist/coffeescript-Bb6YS_bL.js +4 -0
- package/dist/commonlisp-BjSiOQCp.js +4 -0
- package/dist/{constants-CytQ_3LM.js → constants-LmeAawHa.js} +3 -3
- package/dist/{copy-BjkXCUxP.js → copy-B7XqFjF_.js} +2 -2
- package/dist/{cose-bilkent-S5V4N54A-BCDTZDay.js → cose-bilkent-S5V4N54A-DvPVjKwP.js} +2 -2
- package/dist/crystal-BqTYUvZ7.js +4 -0
- package/dist/css-DADryIYo.js +4 -0
- package/dist/cypher-CNn306Oc.js +4 -0
- package/dist/d-D-tppFsq.js +4 -0
- package/dist/{dagre-6UL2VRFP-DGEbtmgU.js → dagre-6UL2VRFP-ABg-WzQ3.js} +16 -16
- package/dist/{dagre-BVnNvbvD.js → dagre-B3-rUlCT.js} +14 -14
- package/dist/{data-grid-overlay-editor-BD0BFHzy.js → data-grid-overlay-editor-eVOR1Bqn.js} +3 -3
- package/dist/{diagram-PSM6KHXK-CG_usglE.js → diagram-PSM6KHXK-D6zP_W1d.js} +22 -22
- package/dist/{diagram-QEK2KX5R-CtGFEwzJ.js → diagram-QEK2KX5R-CuHhFHzr.js} +17 -17
- package/dist/{diagram-S2PKOQOG-ClKAGmbv.js → diagram-S2PKOQOG-B2AqkaRk.js} +17 -17
- package/dist/diff-BWHM7ple.js +4 -0
- package/dist/{dist-i-ud9aCA.js → dist-9a7ktdXy.js} +1 -1
- package/dist/{dist-D_-CGmlh.js → dist-B1fHT_HN.js} +2 -2
- package/dist/{dist-BpMlUdNO.js → dist-BFe8Nc_2.js} +3 -3
- package/dist/{dist-COpDrwi-.js → dist-BJ43gqCe.js} +1 -1
- package/dist/{dist-B9EjSb9T.js → dist-BS0c9rME.js} +1 -1
- package/dist/{dist-CseYuPtL.js → dist-BU99V51x.js} +2 -2
- package/dist/dist-BV8p87LG.js +5 -0
- package/dist/{dist-CSEWGuDq.js → dist-BYr4a-wE.js} +1 -1
- package/dist/{dist-RNGn_-uD.js → dist-BcxBN3cs.js} +1 -1
- package/dist/{dist-C0Rnbr-_.js → dist-BiNtCiQ9.js} +4 -4
- package/dist/{dist-D4gcY469.js → dist-BrJQDkv_.js} +2 -2
- package/dist/{dist-BSfYc7vq.js → dist-BwZY8Lt9.js} +2 -2
- package/dist/{dist-C4K7pumm.js → dist-C16JG-Ok.js} +2 -2
- package/dist/{dist-DodLQWPg.js → dist-C4UxHJAP.js} +1 -1
- package/dist/dist-C8N7114Z.js +5 -0
- package/dist/dist-CHmkCdpG.js +5 -0
- package/dist/{dist-CDHl2i1x.js → dist-CMY2xBYw.js} +4 -4
- package/dist/{dist-BGZ7TWS9.js → dist-CSiTW5NO.js} +3 -3
- package/dist/{dist-DEj2X26M.js → dist-CWmTJeFK.js} +2 -2
- package/dist/dist-CXayp1fR.js +6 -0
- package/dist/dist-CZ4qwYvJ.js +8 -0
- package/dist/dist-C__dRIDe.js +5 -0
- package/dist/dist-Cbkga3s5.js +5 -0
- package/dist/{dist-D5NMgbbv.js → dist-CiisiGJh.js} +2 -2
- package/dist/{dist-Ux6dL_VB.js → dist-Cm4SOB1A.js} +1 -1
- package/dist/dist-Cxn9man7.js +8 -0
- package/dist/{dist-Bq5eYK43.js → dist-D75XqRaT.js} +2 -2
- package/dist/{dist-HoZO6brh.js → dist-DD2s3ocF.js} +2 -2
- package/dist/dist-DUTgSV0a.js +8 -0
- package/dist/{dist-Bq9zYwJs.js → dist-DUg5n_x5.js} +5 -5
- package/dist/{dist-gc9KgJuA.js → dist-D_qEwdMV.js} +1 -1
- package/dist/{dist-lNe4i1Nm.js → dist-DaQ8gl6t.js} +1 -1
- package/dist/dist-DcoiQ51H.js +6 -0
- package/dist/{dist-CPlGUbk-.js → dist-Dd9vDQtp.js} +2 -2
- package/dist/{dist-CAKwXCWI.js → dist-Ddms9oaj.js} +2 -2
- package/dist/dist-DjYymnvA.js +5 -0
- package/dist/{dist-Cl5iM8xL.js → dist-DkQrPBbq.js} +3 -3
- package/dist/dist-Don9K0di.js +8 -0
- package/dist/dist-E9OVwuXi.js +5 -0
- package/dist/{dist-DUretbKK.js → dist-WV8DSzVp.js} +2 -2
- package/dist/{dist-BFxYppVR.js → dist-XYBhoeSX.js} +4 -4
- package/dist/{dist-BUrWeMEP.js → dist-XpVxGq0K.js} +1 -1
- package/dist/{dist-DERtJN02.js → dist-Y9GfSR6_.js} +2 -2
- package/dist/dist-s8cGIbEf.js +5 -0
- package/dist/{dockerfile-BxhYdLHL.js → dockerfile-Bhphd7by.js} +1 -1
- package/dist/dtd-_uCqoALQ.js +4 -0
- package/dist/dylan-C9RDQBgd.js +4 -0
- package/dist/ecl-D-cNcvrL.js +4 -0
- package/dist/eiffel-pwlnpFTa.js +4 -0
- package/dist/elm-Bw5cHXv0.js +4 -0
- package/dist/{erDiagram-Q2GNP2WA-DPMseVVp.js → erDiagram-Q2GNP2WA-DEGS1PP7.js} +15 -15
- package/dist/erlang-_hA30h6l.js +4 -0
- package/dist/{error-banner-Dmi5ujan.js → error-banner-D-KBGvBj.js} +3 -3
- package/dist/esm-CxoKu9RN.js +2805 -0
- package/dist/esm-dotk-2cB.js +1587 -0
- package/dist/{factor-Png_OsVt.js → factor-DNC3EI9I.js} +1 -1
- package/dist/factor-DmR0sS2X.js +4 -0
- package/dist/{flowDiagram-NV44I4VS-BpAIFwW7.js → flowDiagram-NV44I4VS-_NtC_MIa.js} +17 -17
- package/dist/forth-Cp4B_BYs.js +4 -0
- package/dist/fortran-2KtXs5Vb.js +4 -0
- package/dist/{ganttDiagram-JELNMOA3-DXYghZ9C.js → ganttDiagram-JELNMOA3-0iqJp9II.js} +10 -10
- package/dist/gas-106_zOMN.js +4 -0
- package/dist/gherkin-CHK85w0F.js +4 -0
- package/dist/{gitGraph-G5XIXVHT-ChHUSAop.js → gitGraph-G5XIXVHT-D5dIC-Yj.js} +3 -3
- package/dist/{gitGraphDiagram-V2S2FVAM-CBL-7g3_.js → gitGraphDiagram-V2S2FVAM-DmWsIkI5.js} +17 -17
- package/dist/{glide-data-editor-858wsVkd.js → glide-data-editor-BkO3-23t.js} +94 -93
- package/dist/{graphlib-D18eZCT4.js → graphlib-CIQjMxKw.js} +6 -6
- package/dist/groovy-Bl2mjKn9.js +4 -0
- package/dist/{hasIn-B9AbGLj3.js → hasIn-eLCPDloT.js} +5 -5
- package/dist/haskell-BzHGL977.js +4 -0
- package/dist/haxe-BWQFLp-3.js +5 -0
- package/dist/idl-C28UwC1n.js +4 -0
- package/dist/{info-VBDWY6EO-CwyXEo8E.js → info-VBDWY6EO-DTO3vFfS.js} +3 -3
- package/dist/infoDiagram-HS3SLOUP-UrOFax1c.js +30 -0
- package/dist/{types-CGc7peZV.js → input-B8CM-AuM.js} +208 -405
- package/dist/{isEmpty-C-xMag79.js → isEmpty-CI9akcsL.js} +2 -2
- package/dist/{isString-D-vNYDBA.js → isString-xiQUcgm4.js} +1 -1
- package/dist/{isSymbol-Dyt2NSnN.js → isSymbol-DFp8040B.js} +1 -1
- package/dist/javascript-DgLCEZTn.js +4 -0
- package/dist/{journeyDiagram-XKPGCS4Q-D5BIjS4N.js → journeyDiagram-XKPGCS4Q-m64vZmxT.js} +7 -7
- package/dist/julia-BPiwS_8t.js +4 -0
- package/dist/{kanban-definition-3W4ZIXB7-DhDkqxFB.js → kanban-definition-3W4ZIXB7-ZLe0Kp41.js} +12 -12
- package/dist/{katex-pyO_klYC.js → katex-DAGMFHph.js} +1 -1
- package/dist/{label-BbpGrh4j.js → label-e5-84vsp.js} +10 -10
- package/dist/{line-C1k1rG3Z.js → line-C5s_12ee.js} +3 -3
- package/dist/{linear-DIp6l9sg.js → linear-Cii2AMNm.js} +4 -4
- package/dist/livescript-D--_lQnE.js +4 -0
- package/dist/{loader-CABJs6GU.js → loader-C51Irhxm.js} +3 -3
- package/dist/lua-CsDs748O.js +4 -0
- package/dist/main.js +34893 -71020
- package/dist/mathematica-BYQ9GF6F.js +4 -0
- package/dist/mbox-C7kaFMhK.js +4 -0
- package/dist/{memoize-Cs8aS5RW.js → memoize-zYM53m8l.js} +1 -1
- package/dist/{merge-NuyC7LN7.js → merge-CqBPpP0q.js} +1 -1
- package/dist/mermaid-4DMBBIKO-0oQV6SKJ.js +6 -0
- package/dist/{mermaid-CrKqsE2j.js → mermaid-CP8gAOdP.js} +50 -50
- package/dist/{mermaid-parser.core-OkWZ8nr-.js → mermaid-parser.core-Ldbqm2U2.js} +8 -8
- package/dist/{mhchem-DckvwtV8.js → mhchem-BGHMIfq6.js} +1 -1
- package/dist/{min-ECVRnCdn.js → min-IJGSWMpU.js} +8 -8
- package/dist/{mindmap-definition-VGOIOE7T-BxQi78Vl.js → mindmap-definition-VGOIOE7T-BkJfqjP5.js} +14 -14
- package/dist/mirc-C2209Et3.js +4 -0
- package/dist/mllike-BLT4EygN.js +6 -0
- package/dist/modelica-DdJRZ_hL.js +4 -0
- package/dist/mscgen-CG9noCbk.js +6 -0
- package/dist/mumps-V-rMtaoS.js +4 -0
- package/dist/{now-BC2mX0ZT.js → now-CnuN5fN5.js} +1 -1
- package/dist/nsis-BaCxxbYc.js +4 -0
- package/dist/{nsis-BrAITej_.js → nsis-CROWDZ9a.js} +1 -1
- package/dist/ntriples-2dOF8Rwr.js +4 -0
- package/dist/{number-overlay-editor-CQrncFlP.js → number-overlay-editor-B5y1rc-k.js} +1 -1
- package/dist/octave-DgJBCpUf.js +4 -0
- package/dist/{once-BqS42WgZ.js → once-DjP4Kbhy.js} +1 -1
- package/dist/{ordinal-Dcvf4J1m.js → ordinal-Bz8O-XbW.js} +1 -1
- package/dist/oz-B4DqLn0e.js +4 -0
- package/dist/{packet-DYOGHKS2-C62XQjZh.js → packet-DYOGHKS2-BWNLyWLh.js} +3 -3
- package/dist/pascal-CzxJky4Q.js +4 -0
- package/dist/perl-BXxwSvR1.js +4 -0
- package/dist/{pie-VRWISCQL-nfAKQJw3.js → pie-VRWISCQL-BNm0ZeOM.js} +3 -3
- package/dist/{pieDiagram-ADFJNKIX-DfSJXUHa.js → pieDiagram-ADFJNKIX-CLJoguev.js} +22 -22
- package/dist/pig-C6uUbdgq.js +4 -0
- package/dist/powershell-ByH1IK0s.js +4 -0
- package/dist/{precisionRound-BAc-kQ3q.js → precisionRound-C-DW449D.js} +1 -1
- package/dist/process-output-BzDV74px.js +28595 -0
- package/dist/properties-D9ixNGHK.js +4 -0
- package/dist/protobuf-CL5MO5Bo.js +4 -0
- package/dist/{pug-CH-17az-.js → pug-CSWat1rd.js} +1 -1
- package/dist/pug-j1GtIGnO.js +4 -0
- package/dist/puppet-DAaSZQRF.js +4 -0
- package/dist/python-DWLse_Hh.js +4 -0
- package/dist/q-JRlUfaV4.js +4 -0
- package/dist/{quadrantDiagram-AYHSOK5B-CAcVWXc-.js → quadrantDiagram-AYHSOK5B-Bym-JxLx.js} +5 -5
- package/dist/r-J8uFHie7.js +4 -0
- package/dist/{radar-ZZBFDIW7-lopS8_4j.js → radar-ZZBFDIW7-CEhz-hUS.js} +3 -3
- package/dist/{range-BKaWvVUE.js → range-DffmqG6L.js} +4 -3
- package/dist/react-vega-CY82WAG3.js +9 -0
- package/dist/{react-vega-C6kwcd86.js → react-vega-DZOOS-W4.js} +19 -19
- package/dist/{reduce-CqQo8ppc.js → reduce-CGwzfrDo.js} +5 -5
- package/dist/{requirementDiagram-UZGBJVZJ-BU7dwzFM.js → requirementDiagram-UZGBJVZJ-CD_V4itb.js} +14 -14
- package/dist/rpm-C85hbO48.js +5 -0
- package/dist/ruby-D9HeYYQS.js +4 -0
- package/dist/{sankeyDiagram-TZEHDZUN-BVJnR4_b.js → sankeyDiagram-TZEHDZUN-CW3Bo_62.js} +5 -5
- package/dist/sas-D4mSim4H.js +4 -0
- package/dist/scheme-DNmM-DGy.js +4 -0
- package/dist/{sequenceDiagram-WL72ISMW-CQcFQTwX.js → sequenceDiagram-WL72ISMW-BfAHIhk3.js} +8 -8
- package/dist/shell-BS8ZwLUy.js +4 -0
- package/dist/sieve-B8TCe-_m.js +4 -0
- package/dist/{slides-component-GkilRW21.js → slides-component-oCf7w4PF.js} +3 -3
- package/dist/smalltalk-CkAXTqlf.js +4 -0
- package/dist/sparql-Bt75sj2n.js +4 -0
- package/dist/{spec-oVDndBz4.js → spec-UGFYIDJb.js} +12 -431
- package/dist/{src-CHUphWwL.js → src-Bf2iLOlr.js} +1 -1
- package/dist/{stateDiagram-FKZM4ZOC-Dx9AIGDe.js → stateDiagram-FKZM4ZOC-CCfvnS3_.js} +19 -19
- package/dist/stateDiagram-v2-4FDKWEC3-Dd_xAZiD.js +29 -0
- package/dist/{step-BbmiiQdf.js → step-CWipAYTY.js} +1 -1
- package/dist/stex-BvZqVamL.js +4 -0
- package/dist/style.css +1 -1
- package/dist/stylus-BM4XGc6j.js +4 -0
- package/dist/swift-BRG-gyk5.js +4 -0
- package/dist/tcl-Bp61skpb.js +4 -0
- package/dist/textile-vndc5V2p.js +4 -0
- package/dist/{time-DFFVNc1Q.js → time-B31vFOEZ.js} +4 -4
- package/dist/{timeline-definition-IT6M3QCI-D8B3p7ID.js → timeline-definition-IT6M3QCI-BwyDPLz1.js} +4 -4
- package/dist/toDate-COI3hP-5.js +637 -0
- package/dist/toInteger-BUeg_O0F.js +15 -0
- package/dist/{toNumber-CbZ70FdN.js → toNumber-xFPoy1OI.js} +2 -2
- package/dist/{toString-DbIAWQpF.js → toString-CtXX84W6.js} +2 -2
- package/dist/toml-CMpRzNl5.js +4 -0
- package/dist/{tooltip-CKG75XQa.js → tooltip-DnI4CwIS.js} +4 -4
- package/dist/{treemap-GDKQZRPO-CkR-5ai2.js → treemap-GDKQZRPO-BdsKcX7e.js} +3 -3
- package/dist/troff-BNSfnnQn.js +4 -0
- package/dist/ttcn-CILP7Q2P.js +4 -0
- package/dist/ttcn-cfg-Cs5Ekdhk.js +4 -0
- package/dist/turtle-1zFjsw2L.js +4 -0
- package/dist/types-BqLAaq-i.js +209 -0
- package/dist/{uniq-H2E5nMLq.js → uniq-CCKqEs7T.js} +1 -1
- package/dist/{useAsyncData-CEjJxwFB.js → useAsyncData-BtHYXgXF.js} +2 -2
- package/dist/useDeepCompareMemoize-9dXEtK7u.js +124 -0
- package/dist/useIframeCapabilities-CzVvBDe8.js +13 -0
- package/dist/useLifecycle-Be1LUuEg.js +427 -0
- package/dist/{useTheme-CPybHVFN.js → useTheme-5GTtjXjy.js} +4 -4
- package/dist/vb-CCqDJO0q.js +4 -0
- package/dist/vbscript-CtqCxNqL.js +4 -0
- package/dist/{vega-component-CuPTCRp5.js → vega-component-DX1QtRQE.js} +198 -197
- package/dist/{vega-loader.browser-CQ-lnUkI.js → vega-loader.browser-DnqN5nbz.js} +3 -3
- package/dist/velocity-BRacwoCp.js +4 -0
- package/dist/verilog-CdotQ5hS.js +4 -0
- package/dist/vhdl-CRMFlLc_.js +4 -0
- package/dist/webidl-Bo-4Hfyi.js +4 -0
- package/dist/xquery-CgMQN-7i.js +4 -0
- package/dist/{xychartDiagram-PRI3JC2R-XO8FiQjU.js → xychartDiagram-PRI3JC2R-D-Of-r2y.js} +13 -13
- package/dist/yacas-6ORYe5fj.js +4 -0
- package/dist/z80-tFLqkB9-.js +4 -0
- package/package.json +1 -1
- package/src/components/app-config/__tests__/get-dirty-values.test.ts +1 -1
- package/src/components/app-config/get-dirty-values.ts +100 -0
- package/src/components/app-config/user-config-form.tsx +1 -97
- package/src/components/data-table/__tests__/columns.test.tsx +138 -0
- package/src/components/data-table/columns.tsx +44 -4
- package/src/components/data-table/filters.ts +1 -0
- package/src/components/editor/package-alert.tsx +1 -1
- package/src/plugins/impl/DataTablePlugin.tsx +27 -0
- package/src/plugins/impl/chat/ChatPlugin.tsx +6 -3
- package/dist/_basePickBy-pTDW2_2A.js +0 -47
- package/dist/apl-lHFVoxx7.js +0 -4
- package/dist/architecture-7HQA4BMR-BmtmhGMc.js +0 -6
- package/dist/asciiarmor-DqCdZUHI.js +0 -4
- package/dist/asn1-DEcwtw-q.js +0 -4
- package/dist/brainfuck-Bro9Oz5x.js +0 -4
- package/dist/classDiagram-2ON5EDUG-DphiMW3Y.js +0 -30
- package/dist/classDiagram-v2-WZHVMYZB-BH1x5h4a.js +0 -30
- package/dist/clojure-B2uhdQPa.js +0 -4
- package/dist/cmake-B9WXyQcc.js +0 -4
- package/dist/cobol-CPD3EJfO.js +0 -4
- package/dist/coffeescript-KD9TnEnS.js +0 -4
- package/dist/commonlisp-DNEULz_Q.js +0 -4
- package/dist/crystal-DVPNgAPQ.js +0 -4
- package/dist/css-fq3a1AH1.js +0 -4
- package/dist/cypher-Dtzq0BP7.js +0 -4
- package/dist/d-DcZudIhJ.js +0 -4
- package/dist/diff-D9BPDC3o.js +0 -4
- package/dist/dist-B4MxkKHf.js +0 -8
- package/dist/dist-BYghZv6b.js +0 -5
- package/dist/dist-Be-uQhz5.js +0 -6
- package/dist/dist-CB_xf0ju.js +0 -5
- package/dist/dist-CK0qFAbF.js +0 -8
- package/dist/dist-CYEk-qrr.js +0 -8
- package/dist/dist-CmKoWpMk.js +0 -5
- package/dist/dist-D1nf4IQl.js +0 -5
- package/dist/dist-Df3AcKpt.js +0 -6
- package/dist/dist-DgaFHt_I.js +0 -5
- package/dist/dist-Dk10C3ui.js +0 -5
- package/dist/dist-DtyPVMHR.js +0 -5
- package/dist/dist-ko7WnHAO.js +0 -5
- package/dist/dist-of7gLRFK.js +0 -8
- package/dist/dtd-FhG-tVom.js +0 -4
- package/dist/dylan-HWpZOBPw.js +0 -4
- package/dist/ecl-B_rcje1I.js +0 -4
- package/dist/eiffel-oqHyHs6f.js +0 -4
- package/dist/elm-B62RQEds.js +0 -4
- package/dist/erlang-CjRjjA-B.js +0 -4
- package/dist/esm-No_6eSQS.js +0 -4387
- package/dist/factor-CGH_TnIV.js +0 -4
- package/dist/forth-5N06oHNp.js +0 -4
- package/dist/fortran-wZ-sNg3h.js +0 -4
- package/dist/gas-3H4_FaS8.js +0 -4
- package/dist/gherkin-PEA2uy50.js +0 -4
- package/dist/groovy-DZzbvCP1.js +0 -4
- package/dist/haskell-CExLTzho.js +0 -4
- package/dist/haxe-f3pVb8qU.js +0 -5
- package/dist/idl-BbWlJ0gk.js +0 -4
- package/dist/infoDiagram-HS3SLOUP-BXGbfBss.js +0 -30
- package/dist/javascript-eMOhp6Aq.js +0 -4
- package/dist/julia-C6w3Rvqb.js +0 -4
- package/dist/livescript-ChQl9lD-.js +0 -4
- package/dist/lua-CiDvI96j.js +0 -4
- package/dist/mathematica-ClVO4k7N.js +0 -4
- package/dist/mbox-BEI7DeUg.js +0 -4
- package/dist/mermaid-4DMBBIKO-PVrJfEpX.js +0 -6
- package/dist/mirc-DwidJ3iH.js +0 -4
- package/dist/mllike-Dspdy0xJ.js +0 -6
- package/dist/modelica-CIUejP-L.js +0 -4
- package/dist/mscgen-BWXU4Omp.js +0 -6
- package/dist/mumps-PHFFoPk5.js +0 -4
- package/dist/nsis-B7xooKLf.js +0 -4
- package/dist/ntriples-DnOgtCzG.js +0 -4
- package/dist/octave-Cn5kH_QT.js +0 -4
- package/dist/oz-DR-sROpu.js +0 -4
- package/dist/pascal-CPKK1zcS.js +0 -4
- package/dist/perl-D7FuFdyd.js +0 -4
- package/dist/pig-CEXnOAnI.js +0 -4
- package/dist/powershell-BKvWab7q.js +0 -4
- package/dist/properties-7jnK_vYx.js +0 -4
- package/dist/protobuf-4rslMjEN.js +0 -4
- package/dist/pug-BVwdEv4r.js +0 -4
- package/dist/puppet-iSHg_1Z2.js +0 -4
- package/dist/python-tK3wUCn0.js +0 -4
- package/dist/q-DP_Dcoox.js +0 -4
- package/dist/r-C32wHLYu.js +0 -4
- package/dist/react-vega-CFUuchds.js +0 -9
- package/dist/rpm-BbDBUfs9.js +0 -5
- package/dist/ruby-COfWUiIr.js +0 -4
- package/dist/sas-y_Hue2-X.js +0 -4
- package/dist/scheme-7jTCqHw8.js +0 -4
- package/dist/shell-DAqJWXDk.js +0 -4
- package/dist/sieve-EaqnbCO3.js +0 -4
- package/dist/smalltalk-DL03YKLJ.js +0 -4
- package/dist/sparql-DTA-tQ_q.js +0 -4
- package/dist/stateDiagram-v2-4FDKWEC3-BIeUs-Ed.js +0 -29
- package/dist/stex-KfRnSHzF.js +0 -4
- package/dist/stylus-CfjeFry_.js +0 -4
- package/dist/swift-Dl0RRDbH.js +0 -4
- package/dist/tcl-wv9O7fLZ.js +0 -4
- package/dist/textile-DzMRCBcV.js +0 -4
- package/dist/toml-CyIWqgbe.js +0 -4
- package/dist/troff-_huin_CY.js +0 -4
- package/dist/ttcn-BEiJuYYc.js +0 -4
- package/dist/ttcn-cfg-DB6Ksh67.js +0 -4
- package/dist/turtle-DzhzGEum.js +0 -4
- package/dist/useDeepCompareMemoize-BWUwfh37.js +0 -755
- package/dist/useIframeCapabilities-OQaMKgZl.js +0 -46
- package/dist/vb-CngKZQHu.js +0 -4
- package/dist/vbscript-BV_8nbeM.js +0 -4
- package/dist/velocity-IqE7qYKE.js +0 -4
- package/dist/verilog-xtyaWTnc.js +0 -4
- package/dist/vhdl-BaqXCtf3.js +0 -4
- package/dist/webidl-BDB8PTTO.js +0 -4
- package/dist/xquery-BIC-qj9Z.js +0 -4
- package/dist/yacas-ifv5tftd.js +0 -4
- package/dist/z80-B8zOMVNt.js +0 -4
- /package/dist/{_arrayReduce-BfFy684W.js → _arrayReduce-6BJAuN54.js} +0 -0
- /package/dist/{_baseSlice-BrVixxuc.js → _baseSlice-bwIVgwNq.js} +0 -0
- /package/dist/{_hasUnicode-C32WqUu7.js → _hasUnicode-DOFcQHhs.js} +0 -0
- /package/dist/{apl-DRxKiEot.js → apl-hy2nkDJ0.js} +0 -0
- /package/dist/{array-D-nrDupM.js → array-tvvEqPy7.js} +0 -0
- /package/dist/{asciiarmor-C8HoXFIm.js → asciiarmor-Bp85a1XA.js} +0 -0
- /package/dist/{asn1-9Bo0DYT-.js → asn1-CCINh2Tb.js} +0 -0
- /package/dist/{asterisk-BsiuGzWq.js → asterisk-DaVJJDnV.js} +0 -0
- /package/dist/{brainfuck-Db8njC-p.js → brainfuck-CWERNqpi.js} +0 -0
- /package/dist/{chunk-DR5Q36YT-D4q96vNV.js → chunk-DR5Q36YT-BflwErH1.js} +0 -0
- /package/dist/{click-outside-container-CKfwEZqH.js → click-outside-container-D6Q_AEkf.js} +0 -0
- /package/dist/{clike-CFhUNtI5.js → clike-BclwMGdw.js} +0 -0
- /package/dist/{clojure-CX7oovsp.js → clojure-ygiDe_M6.js} +0 -0
- /package/dist/{clsx-D2KVTYnW.js → clsx-yW_RAw0K.js} +0 -0
- /package/dist/{cmake-C29AR2kk.js → cmake-CqV32d9p.js} +0 -0
- /package/dist/{cobol-CNkuRW9i.js → cobol-BC90RNzo.js} +0 -0
- /package/dist/{coffeescript-BJAbfGam.js → coffeescript-XlUo917R.js} +0 -0
- /package/dist/{colors-6nB_pSln.js → colors-CQAOa8cK.js} +0 -0
- /package/dist/{common-keywords-BAkLFdud.js → common-keywords-FBrXPTcz.js} +0 -0
- /package/dist/{commonlisp-BTNhj2l9.js → commonlisp-BlMWxO2z.js} +0 -0
- /package/dist/{crystal-CZc0nIm9.js → crystal-BJriHwL7.js} +0 -0
- /package/dist/{css-L2-0OTXc.js → css-De5CPzak.js} +0 -0
- /package/dist/{cypher-Dnc6MXl0.js → cypher-CF3pgZHB.js} +0 -0
- /package/dist/{cytoscape.esm-BXzSsA6N.js → cytoscape.esm-GAzDZorR.js} +0 -0
- /package/dist/{d-C6X9iIga.js → d-DnmSJuVB.js} +0 -0
- /package/dist/{defaultLocale-CfQ4kBaV.js → defaultLocale-Dr6Bz4JK.js} +0 -0
- /package/dist/{defaultLocale-Bklbu-Tp.js → defaultLocale-I3_GfJ4U.js} +0 -0
- /package/dist/{diff-ZzKinYqY.js → diff-5fTcVlce.js} +0 -0
- /package/dist/{dist-Bymy0kEH.js → dist-BGdYVvOu.js} +0 -0
- /package/dist/{dist-DOoqn-VL.js → dist-C4EV3aDt.js} +0 -0
- /package/dist/{dtd-CytEpkAo.js → dtd-CExSJ830.js} +0 -0
- /package/dist/{duckdb-keywords-C1WxmSfG.js → duckdb-keywords-CvJhR_Yd.js} +0 -0
- /package/dist/{dylan-CZByFBEQ.js → dylan-D45mme_B.js} +0 -0
- /package/dist/{ebnf-BF2FOt-m.js → ebnf-2D4Ctp3y.js} +0 -0
- /package/dist/{ecl-Cp7L1F5B.js → ecl-Dt8H2ySk.js} +0 -0
- /package/dist/{eiffel-C66yjnFL.js → eiffel-BVH48wKK.js} +0 -0
- /package/dist/{elm-DtHo-73e.js → elm-lLkDwz-w.js} +0 -0
- /package/dist/{emotion-is-prop-valid.esm-DtW2o230.js → emotion-is-prop-valid.esm-CflmeIys.js} +0 -0
- /package/dist/{erlang-C_sj44mF.js → erlang-Ct2FydHU.js} +0 -0
- /package/dist/{esm-BWftfC-A.js → esm-CuMA4YP0.js} +0 -0
- /package/dist/{fcl-BhLcvRo_.js → fcl-Ccj8Z5Xd.js} +0 -0
- /package/dist/{forth-CIDHh56T.js → forth-CXoVo3MY.js} +0 -0
- /package/dist/{fortran-BQrDVXRU.js → fortran-CgtioF-z.js} +0 -0
- /package/dist/{gas-D4HQPB0Q.js → gas-DA6wSQkj.js} +0 -0
- /package/dist/{gherkin-UB2gJHdT.js → gherkin-Cn3rybYZ.js} +0 -0
- /package/dist/{groovy-DVz6jkOx.js → groovy-CGOZjiuH.js} +0 -0
- /package/dist/{haskell-CpUdAPCz.js → haskell-BWI76WET.js} +0 -0
- /package/dist/{haxe-DCV5_cqD.js → haxe-CovtkFbk.js} +0 -0
- /package/dist/{http-C_TDb8VX.js → http-_DVAYWoR.js} +0 -0
- /package/dist/{idl-D7WCIgHw.js → idl-SJSctwSZ.js} +0 -0
- /package/dist/{init-Ci8VD8ZH.js → init-uv0kkh4g.js} +0 -0
- /package/dist/{invariant-D9QLJ4SZ.js → invariant-Ctm_8TNZ.js} +0 -0
- /package/dist/{isArrayLikeObject-BrYl-ETg.js → isArrayLikeObject-C-hFPChh.js} +0 -0
- /package/dist/{javascript-B2Rn0Lmd.js → javascript-BzIdRGKh.js} +0 -0
- /package/dist/{jsx-runtime-CTBg5pdT.js → jsx-runtime-9hcJiI23.js} +0 -0
- /package/dist/{julia-ApprtEaw.js → julia-B3EQ2bxh.js} +0 -0
- /package/dist/{katex-Bk_FvVSR.js → katex-CywHdYBC.js} +0 -0
- /package/dist/{livescript-BMLIlM7C.js → livescript-BtVSE9jj.js} +0 -0
- /package/dist/{lua-DdDaW3tC.js → lua-B1Esbvm1.js} +0 -0
- /package/dist/{main-Tj_-QTyF.js → main-sxFlUO_N.js} +0 -0
- /package/dist/{math-HUZifhTs.js → math-DFcdCCU8.js} +0 -0
- /package/dist/{mathematica-PnNN7c2Z.js → mathematica-BLPJnY-e.js} +0 -0
- /package/dist/{mbox-B84OtHBK.js → mbox-C86ZBpjz.js} +0 -0
- /package/dist/{mirc-BVWXJxIq.js → mirc-Cqv8ECOt.js} +0 -0
- /package/dist/{mllike-BawXWupH.js → mllike-BCn8p2Mf.js} +0 -0
- /package/dist/{modelica-C8-X4Hf_.js → modelica-eD-847KF.js} +0 -0
- /package/dist/{mscgen-BOM6dDj8.js → mscgen-BtzXm_zS.js} +0 -0
- /package/dist/{mumps-DQOY8n05.js → mumps-BUx23-bh.js} +0 -0
- /package/dist/{nginx-DkMgA__9.js → nginx-DasThI7R.js} +0 -0
- /package/dist/{node-sql-parser-D53LM_7b.js → node-sql-parser-CHcmQ9Ms.js} +0 -0
- /package/dist/{ntriples-DU8VrXdW.js → ntriples-naSVo-bH.js} +0 -0
- /package/dist/{octave-BzTIBsQ8.js → octave-B-zftwnK.js} +0 -0
- /package/dist/{oz-DKFcZsoi.js → oz-OUZbVKrv.js} +0 -0
- /package/dist/{pascal-DHBZ15pT.js → pascal-C-c-17Ts.js} +0 -0
- /package/dist/{path-BVI7RNUv.js → path-BGaWgPKg.js} +0 -0
- /package/dist/{perl-75NMI3w0.js → perl-BBIS1zw3.js} +0 -0
- /package/dist/{pig-B-HY1fo_.js → pig-B10mtuLC.js} +0 -0
- /package/dist/{powershell-DEH22U53.js → powershell-SyaENm-A.js} +0 -0
- /package/dist/{properties-B1MzBoJC.js → properties-BiiMVvre.js} +0 -0
- /package/dist/{protobuf-Dr14KV0p.js → protobuf-Cj2_antD.js} +0 -0
- /package/dist/{puppet-C4z38l7v.js → puppet-ZeJ9I40T.js} +0 -0
- /package/dist/{purify.es-DGenX2XH.js → purify.es-Co_dANLh.js} +0 -0
- /package/dist/{python-D2L7Nknt.js → python-mR64qk6D.js} +0 -0
- /package/dist/{q-PxipHfgS.js → q-C_IMU433.js} +0 -0
- /package/dist/{r-CEMMu_Tf.js → r-BKx4ZcIe.js} +0 -0
- /package/dist/{range-BToS7LsA.js → range-Bn3no95s.js} +0 -0
- /package/dist/{react-dom-CqtLRVZP.js → react-dom-BKwCWYPW.js} +0 -0
- /package/dist/{rpm-D3xyahkR.js → rpm-Dc3zEGCn.js} +0 -0
- /package/dist/{ruby-DwEkwdiu.js → ruby-eSClttk1.js} +0 -0
- /package/dist/{sas-L1W0BRft.js → sas-7VEmwDJB.js} +0 -0
- /package/dist/{scheme-CTybTrX0.js → scheme-CpP6oEOD.js} +0 -0
- /package/dist/{shell-BSx3LZnu.js → shell-CfNoZJks.js} +0 -0
- /package/dist/{sieve-BjUfbv-6.js → sieve-dzMMB941.js} +0 -0
- /package/dist/{simple-mode-IPZGFbI6.js → simple-mode-CnNH5BDk.js} +0 -0
- /package/dist/{smalltalk-BlzuYrMv.js → smalltalk-BVDNd2a5.js} +0 -0
- /package/dist/{solr-Cj_9RM4d.js → solr-RZ9uTl59.js} +0 -0
- /package/dist/{sparql-BXKjQ0cK.js → sparql-Br2qWoOi.js} +0 -0
- /package/dist/{spreadsheet-CifI10GO.js → spreadsheet-BNNUNXA2.js} +0 -0
- /package/dist/{sql-B0bFyY1c.js → sql-B4x8IkwU.js} +0 -0
- /package/dist/{stex-BIsgBmK4.js → stex-7yEw16Ww.js} +0 -0
- /package/dist/{stylus-CqrLLVnG.js → stylus-Ca_-WKcu.js} +0 -0
- /package/dist/{swift-DIqvj3_G.js → swift-CiBr8lL9.js} +0 -0
- /package/dist/{tcl-B8bOIGVK.js → tcl-DpMdOyXx.js} +0 -0
- /package/dist/{textile-DZsjavD_.js → textile-Dc0EKY-e.js} +0 -0
- /package/dist/{tiddlywiki-BbGdvEjx.js → tiddlywiki-DI0mF2WJ.js} +0 -0
- /package/dist/{tiki-BYesmRDo.js → tiki-2HU6XLLn.js} +0 -0
- /package/dist/{timer-CPsmIOdm.js → timer-YZl28NYN.js} +0 -0
- /package/dist/{toml-Uc7m08nl.js → toml-Cz56KCq3.js} +0 -0
- /package/dist/{treemap-DMn4tIJ7.js → treemap-D-ka1hvx.js} +0 -0
- /package/dist/{troff-GEl5wcXR.js → troff-QPYfPg8n.js} +0 -0
- /package/dist/{ttcn-pr4FDOLT.js → ttcn-Bd8ZFglh.js} +0 -0
- /package/dist/{ttcn-cfg-dZQ_fWTH.js → ttcn-cfg-BRegYnOz.js} +0 -0
- /package/dist/{turtle-TPRDOknA.js → turtle-BtxTFbJ2.js} +0 -0
- /package/dist/{vb-BJUAeTYr.js → vb-BPcnlamW.js} +0 -0
- /package/dist/{vbscript-CcJ6Z3ic.js → vbscript-RpXS5Rn-.js} +0 -0
- /package/dist/{velocity-pq4ZMzU3.js → velocity-toRwXi-i.js} +0 -0
- /package/dist/{verilog-timMNjHt.js → verilog-B1fdOBGb.js} +0 -0
- /package/dist/{vhdl-DYFbVKNm.js → vhdl-D-vWFb2W.js} +0 -0
- /package/dist/{webidl-pue9oqnb.js → webidl-QJDW0ZyQ.js} +0 -0
- /package/dist/{xquery-DeItGynK.js → xquery-DMMT83Vl.js} +0 -0
- /package/dist/{yacas-By2Qrjba.js → yacas-CvzqlDJ_.js} +0 -0
- /package/dist/{z80-C7iLsyPC.js → z80-DqdgHy0p.js} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { a as tickStep, n as precisionPrefix_default, r as precisionFixed_default, s as bisector, t as precisionRound_default } from "./precisionRound-
|
|
2
|
-
import { i as formatSpecifier, n as formatPrefix, r as locale_default, t as format$1 } from "./defaultLocale-
|
|
3
|
-
import { C as timeMinute, N as millisecond, S as utcHour, T as second, _ as utcSunday, a as formatLocale, b as utcDay, c as timeMonth, i as utcParse, l as utcMonth, n as timeParse, o as timeYear, p as timeSunday, r as utcFormat, s as utcYear, t as timeFormat, v as timeDay, w as utcMinute, x as timeHour } from "./defaultLocale-
|
|
1
|
+
import { a as tickStep, n as precisionPrefix_default, r as precisionFixed_default, s as bisector, t as precisionRound_default } from "./precisionRound-C-DW449D.js";
|
|
2
|
+
import { i as formatSpecifier, n as formatPrefix, r as locale_default, t as format$1 } from "./defaultLocale-I3_GfJ4U.js";
|
|
3
|
+
import { C as timeMinute, N as millisecond, S as utcHour, T as second, _ as utcSunday, a as formatLocale, b as utcDay, c as timeMonth, i as utcParse, l as utcMonth, n as timeParse, o as timeYear, p as timeSunday, r as utcFormat, s as utcYear, t as timeFormat, v as timeDay, w as utcMinute, x as timeHour } from "./defaultLocale-Dr6Bz4JK.js";
|
|
4
4
|
function accessor(o, P, F) {
|
|
5
5
|
return o.fields = P || [], o.fname = F, o;
|
|
6
6
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
2
|
-
import "./purify.es-
|
|
3
|
-
import { t as linear } from "./linear-
|
|
4
|
-
import { n as ordinal } from "./ordinal-
|
|
5
|
-
import { t as range } from "./range-
|
|
6
|
-
import "./defaultLocale-
|
|
7
|
-
import { t as line_default } from "./line-
|
|
8
|
-
import { i as cleanAndMerge } from "./chunk-S3R3BYOJ-
|
|
9
|
-
import { n as initRange } from "./init-
|
|
10
|
-
import { i as log, r as __name } from "./src-
|
|
11
|
-
import { B as setAccTitle, C as getDiagramTitle, I as sanitizeText, T as getThemeVariables3, U as setDiagramTitle, _ as getAccDescription, a as clear, c as configureSvgSize, d as defaultConfig_default, v as getAccTitle, y as getConfig, z as setAccDescription } from "./chunk-ABZYJK2D-
|
|
12
|
-
import { t as selectSvgElement } from "./chunk-EXTU4WIE-
|
|
13
|
-
import "./dist-
|
|
14
|
-
import { t as computeDimensionOfText } from "./chunk-JA3XYJ7Z-
|
|
2
|
+
import "./purify.es-Co_dANLh.js";
|
|
3
|
+
import { t as linear } from "./linear-Cii2AMNm.js";
|
|
4
|
+
import { n as ordinal } from "./ordinal-Bz8O-XbW.js";
|
|
5
|
+
import { t as range } from "./range-Bn3no95s.js";
|
|
6
|
+
import "./defaultLocale-I3_GfJ4U.js";
|
|
7
|
+
import { t as line_default } from "./line-C5s_12ee.js";
|
|
8
|
+
import { i as cleanAndMerge } from "./chunk-S3R3BYOJ-CQOhwRBS.js";
|
|
9
|
+
import { n as initRange } from "./init-uv0kkh4g.js";
|
|
10
|
+
import { i as log, r as __name } from "./src-Bf2iLOlr.js";
|
|
11
|
+
import { B as setAccTitle, C as getDiagramTitle, I as sanitizeText, T as getThemeVariables3, U as setDiagramTitle, _ as getAccDescription, a as clear, c as configureSvgSize, d as defaultConfig_default, v as getAccTitle, y as getConfig, z as setAccDescription } from "./chunk-ABZYJK2D-DFnIGLNd.js";
|
|
12
|
+
import { t as selectSvgElement } from "./chunk-EXTU4WIE-QrN2mPtn.js";
|
|
13
|
+
import "./dist-BGdYVvOu.js";
|
|
14
|
+
import { t as computeDimensionOfText } from "./chunk-JA3XYJ7Z-B9-EWihm.js";
|
|
15
15
|
function band() {
|
|
16
16
|
var e = ordinal().unknown(void 0), w = e.domain, T = e.range, D = 0, O = 1, k, A, j = false, M = 0, N = 0, P = 0.5;
|
|
17
17
|
delete e.unknown;
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { describe, expect, test } from "vitest";
|
|
4
4
|
import type { UserConfig } from "@/core/config/config-schema";
|
|
5
|
-
import { applyManualInjections, getDirtyValues } from "../
|
|
5
|
+
import { applyManualInjections, getDirtyValues } from "../get-dirty-values";
|
|
6
6
|
|
|
7
7
|
describe("getDirtyValues", () => {
|
|
8
8
|
test("extracts only dirty fields", () => {
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
|
+
|
|
3
|
+
import type { FieldPath, FieldValues } from "react-hook-form";
|
|
4
|
+
import type { UserConfig } from "@/core/config/config-schema";
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Extract only the values that have been modified (dirty) from form state.
|
|
8
|
+
* This prevents sending unchanged fields that could overwrite backend values.
|
|
9
|
+
*/
|
|
10
|
+
export function getDirtyValues<T extends FieldValues>(
|
|
11
|
+
values: T,
|
|
12
|
+
dirtyFields: Partial<Record<keyof T, unknown>>,
|
|
13
|
+
): Partial<T> {
|
|
14
|
+
const result: Partial<T> = {};
|
|
15
|
+
for (const key of Object.keys(dirtyFields) as (keyof T)[]) {
|
|
16
|
+
const dirty = dirtyFields[key];
|
|
17
|
+
const value = values[key];
|
|
18
|
+
|
|
19
|
+
// Skip if the value no longer exists (e.g., deleted from a record)
|
|
20
|
+
if (value === undefined) {
|
|
21
|
+
continue;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (dirty === true) {
|
|
25
|
+
result[key] = value;
|
|
26
|
+
} else if (typeof dirty === "object" && dirty !== null) {
|
|
27
|
+
// Nested object - recurse
|
|
28
|
+
const nested = getDirtyValues(
|
|
29
|
+
value as FieldValues,
|
|
30
|
+
dirty as Partial<Record<string, unknown>>,
|
|
31
|
+
);
|
|
32
|
+
if (Object.keys(nested).length > 0) {
|
|
33
|
+
result[key] = nested as T[keyof T];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
type ManualInjector = (
|
|
41
|
+
values: UserConfig,
|
|
42
|
+
dirtyValues: Partial<UserConfig>,
|
|
43
|
+
) => void;
|
|
44
|
+
|
|
45
|
+
const modelsAiInjection = (
|
|
46
|
+
values: UserConfig,
|
|
47
|
+
dirtyValues: Partial<UserConfig>,
|
|
48
|
+
) => {
|
|
49
|
+
dirtyValues.ai = {
|
|
50
|
+
...dirtyValues.ai,
|
|
51
|
+
models: {
|
|
52
|
+
...dirtyValues.ai?.models,
|
|
53
|
+
displayed_models: values.ai?.models?.displayed_models ?? [],
|
|
54
|
+
custom_models: values.ai?.models?.custom_models ?? [],
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
// Some fields (like AI model lists) have empty arrays as default values.
|
|
60
|
+
// If a user explicitly clears them, RHF won't mark them dirty, so we use
|
|
61
|
+
// touchedFields to force-include those values in the payload.
|
|
62
|
+
const MANUAL_INJECT_ENTRIES = [
|
|
63
|
+
["ai.models.displayed_models", modelsAiInjection],
|
|
64
|
+
["ai.models.custom_models", modelsAiInjection],
|
|
65
|
+
] as const satisfies readonly (readonly [
|
|
66
|
+
FieldPath<UserConfig>,
|
|
67
|
+
ManualInjector,
|
|
68
|
+
])[];
|
|
69
|
+
|
|
70
|
+
const MANUAL_INJECT_FIELDS = new Map(MANUAL_INJECT_ENTRIES);
|
|
71
|
+
|
|
72
|
+
const isTouchedPath = (
|
|
73
|
+
touched: unknown,
|
|
74
|
+
path: FieldPath<UserConfig>,
|
|
75
|
+
): boolean => {
|
|
76
|
+
if (!touched) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
let current: unknown = touched;
|
|
80
|
+
for (const segment of path.split(".")) {
|
|
81
|
+
if (typeof current !== "object" || current === null) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
current = (current as Record<string, unknown>)[segment];
|
|
85
|
+
}
|
|
86
|
+
return current === true;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export const applyManualInjections = (opts: {
|
|
90
|
+
values: UserConfig;
|
|
91
|
+
dirtyValues: Partial<UserConfig>;
|
|
92
|
+
touchedFields: unknown;
|
|
93
|
+
}) => {
|
|
94
|
+
const { values, dirtyValues, touchedFields } = opts;
|
|
95
|
+
for (const [fieldPath, injector] of MANUAL_INJECT_FIELDS) {
|
|
96
|
+
if (isTouchedPath(touchedFields, fieldPath)) {
|
|
97
|
+
injector(values, dirtyValues);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
};
|
|
@@ -15,7 +15,6 @@ import {
|
|
|
15
15
|
} from "lucide-react";
|
|
16
16
|
import React, { useId, useRef } from "react";
|
|
17
17
|
import { useLocale } from "react-aria";
|
|
18
|
-
import type { FieldPath, FieldValues } from "react-hook-form";
|
|
19
18
|
import { useForm } from "react-hook-form";
|
|
20
19
|
import type z from "zod";
|
|
21
20
|
import { Button } from "@/components/ui/button";
|
|
@@ -59,105 +58,10 @@ import { Tooltip } from "../ui/tooltip";
|
|
|
59
58
|
import { AiConfig } from "./ai-config";
|
|
60
59
|
import { formItemClasses, SettingGroup } from "./common";
|
|
61
60
|
import { DataForm } from "./data-form";
|
|
61
|
+
import { applyManualInjections, getDirtyValues } from "./get-dirty-values";
|
|
62
62
|
import { IsOverridden } from "./is-overridden";
|
|
63
63
|
import { OptionalFeatures } from "./optional-features";
|
|
64
64
|
|
|
65
|
-
/**
|
|
66
|
-
* Extract only the values that have been modified (dirty) from form state.
|
|
67
|
-
* This prevents sending unchanged fields that could overwrite backend values.
|
|
68
|
-
*/
|
|
69
|
-
export function getDirtyValues<T extends FieldValues>(
|
|
70
|
-
values: T,
|
|
71
|
-
dirtyFields: Partial<Record<keyof T, unknown>>,
|
|
72
|
-
): Partial<T> {
|
|
73
|
-
const result: Partial<T> = {};
|
|
74
|
-
for (const key of Object.keys(dirtyFields) as (keyof T)[]) {
|
|
75
|
-
const dirty = dirtyFields[key];
|
|
76
|
-
const value = values[key];
|
|
77
|
-
|
|
78
|
-
// Skip if the value no longer exists (e.g., deleted from a record)
|
|
79
|
-
if (value === undefined) {
|
|
80
|
-
continue;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
if (dirty === true) {
|
|
84
|
-
result[key] = value;
|
|
85
|
-
} else if (typeof dirty === "object" && dirty !== null) {
|
|
86
|
-
// Nested object - recurse
|
|
87
|
-
const nested = getDirtyValues(
|
|
88
|
-
value as FieldValues,
|
|
89
|
-
dirty as Partial<Record<string, unknown>>,
|
|
90
|
-
);
|
|
91
|
-
if (Object.keys(nested).length > 0) {
|
|
92
|
-
result[key] = nested as T[keyof T];
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return result;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
type ManualInjector = (
|
|
100
|
-
values: UserConfig,
|
|
101
|
-
dirtyValues: Partial<UserConfig>,
|
|
102
|
-
) => void;
|
|
103
|
-
|
|
104
|
-
const modelsAiInjection = (
|
|
105
|
-
values: UserConfig,
|
|
106
|
-
dirtyValues: Partial<UserConfig>,
|
|
107
|
-
) => {
|
|
108
|
-
dirtyValues.ai = {
|
|
109
|
-
...dirtyValues.ai,
|
|
110
|
-
models: {
|
|
111
|
-
...dirtyValues.ai?.models,
|
|
112
|
-
displayed_models: values.ai?.models?.displayed_models ?? [],
|
|
113
|
-
custom_models: values.ai?.models?.custom_models ?? [],
|
|
114
|
-
},
|
|
115
|
-
};
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
// Some fields (like AI model lists) have empty arrays as default values.
|
|
119
|
-
// If a user explicitly clears them, RHF won't mark them dirty, so we use
|
|
120
|
-
// touchedFields to force-include those values in the payload.
|
|
121
|
-
const MANUAL_INJECT_ENTRIES = [
|
|
122
|
-
["ai.models.displayed_models", modelsAiInjection],
|
|
123
|
-
["ai.models.custom_models", modelsAiInjection],
|
|
124
|
-
] as const satisfies readonly (readonly [
|
|
125
|
-
FieldPath<UserConfig>,
|
|
126
|
-
ManualInjector,
|
|
127
|
-
])[];
|
|
128
|
-
|
|
129
|
-
const MANUAL_INJECT_FIELDS = new Map(MANUAL_INJECT_ENTRIES);
|
|
130
|
-
|
|
131
|
-
const isTouchedPath = (
|
|
132
|
-
touched: unknown,
|
|
133
|
-
path: FieldPath<UserConfig>,
|
|
134
|
-
): boolean => {
|
|
135
|
-
if (!touched) {
|
|
136
|
-
return false;
|
|
137
|
-
}
|
|
138
|
-
let current: unknown = touched;
|
|
139
|
-
for (const segment of path.split(".")) {
|
|
140
|
-
if (typeof current !== "object" || current === null) {
|
|
141
|
-
return false;
|
|
142
|
-
}
|
|
143
|
-
current = (current as Record<string, unknown>)[segment];
|
|
144
|
-
}
|
|
145
|
-
return current === true;
|
|
146
|
-
};
|
|
147
|
-
|
|
148
|
-
export const applyManualInjections = (opts: {
|
|
149
|
-
values: UserConfig;
|
|
150
|
-
dirtyValues: Partial<UserConfig>;
|
|
151
|
-
touchedFields: unknown;
|
|
152
|
-
}) => {
|
|
153
|
-
const { values, dirtyValues, touchedFields } = opts;
|
|
154
|
-
for (const [fieldPath, injector] of MANUAL_INJECT_FIELDS) {
|
|
155
|
-
if (isTouchedPath(touchedFields, fieldPath)) {
|
|
156
|
-
injector(values, dirtyValues);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
};
|
|
160
|
-
|
|
161
65
|
const categories = [
|
|
162
66
|
{
|
|
163
67
|
id: "editor",
|
|
@@ -222,6 +222,75 @@ describe("generateColumns", () => {
|
|
|
222
222
|
expect(columns[1].meta?.dataType).toBe("number");
|
|
223
223
|
});
|
|
224
224
|
|
|
225
|
+
it("should auto right-align numeric columns", () => {
|
|
226
|
+
const columns = generateColumns({
|
|
227
|
+
rowHeaders: [],
|
|
228
|
+
selection: null,
|
|
229
|
+
fieldTypes,
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
// "age" is a number column — should auto right-align
|
|
233
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
234
|
+
const cell = (columns[1].cell as any)({
|
|
235
|
+
column: {
|
|
236
|
+
columnDef: columns[1],
|
|
237
|
+
},
|
|
238
|
+
renderValue: () => 25,
|
|
239
|
+
getValue: () => 25,
|
|
240
|
+
});
|
|
241
|
+
expect(cell?.props.className).toContain("text-right");
|
|
242
|
+
|
|
243
|
+
// "name" is a string column — should remain left-aligned
|
|
244
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
245
|
+
const nameCell = (columns[0].cell as any)({
|
|
246
|
+
column: {
|
|
247
|
+
columnDef: columns[0],
|
|
248
|
+
},
|
|
249
|
+
renderValue: () => "John",
|
|
250
|
+
getValue: () => "John",
|
|
251
|
+
});
|
|
252
|
+
expect(nameCell?.props.className).not.toContain("text-right");
|
|
253
|
+
});
|
|
254
|
+
|
|
255
|
+
it("should respect explicit textJustifyColumns over auto alignment", () => {
|
|
256
|
+
const columns = generateColumns({
|
|
257
|
+
rowHeaders: [],
|
|
258
|
+
selection: null,
|
|
259
|
+
fieldTypes,
|
|
260
|
+
textJustifyColumns: { age: "left" },
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
// "age" is numeric but explicitly set to left
|
|
264
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
265
|
+
const cell = (columns[1].cell as any)({
|
|
266
|
+
column: {
|
|
267
|
+
columnDef: columns[1],
|
|
268
|
+
},
|
|
269
|
+
renderValue: () => 25,
|
|
270
|
+
getValue: () => 25,
|
|
271
|
+
});
|
|
272
|
+
expect(cell?.props.className).not.toContain("text-right");
|
|
273
|
+
});
|
|
274
|
+
|
|
275
|
+
it("should set minFractionDigits from fractionDigitsByColumn", () => {
|
|
276
|
+
const numericFieldTypes: FieldTypesWithExternalType = [
|
|
277
|
+
["price", ["number", "float64"]],
|
|
278
|
+
["count", ["integer", "int64"]],
|
|
279
|
+
];
|
|
280
|
+
|
|
281
|
+
const columns = generateColumns({
|
|
282
|
+
rowHeaders: [],
|
|
283
|
+
selection: null,
|
|
284
|
+
fieldTypes: numericFieldTypes,
|
|
285
|
+
fractionDigitsByColumn: { price: 2 },
|
|
286
|
+
});
|
|
287
|
+
|
|
288
|
+
// price has 2 fraction digits
|
|
289
|
+
expect(columns[0].meta?.minFractionDigits).toBe(2);
|
|
290
|
+
// count not in fractionDigitsByColumn
|
|
291
|
+
expect(columns[1].meta?.minFractionDigits).toBeUndefined();
|
|
292
|
+
});
|
|
293
|
+
|
|
225
294
|
it("should handle text justification and wrapping", () => {
|
|
226
295
|
const columns = generateColumns({
|
|
227
296
|
rowHeaders: [],
|
|
@@ -572,6 +641,75 @@ describe("LocaleNumber", () => {
|
|
|
572
641
|
);
|
|
573
642
|
expect(container.textContent).toMatchInlineSnapshot(`"10,000,000,000"`);
|
|
574
643
|
});
|
|
644
|
+
|
|
645
|
+
it("should pad decimals with minFractionDigits", () => {
|
|
646
|
+
const { container } = render(
|
|
647
|
+
<I18nProvider locale="en-US">
|
|
648
|
+
<LocaleNumber value={42} minFractionDigits={2} />
|
|
649
|
+
</I18nProvider>,
|
|
650
|
+
);
|
|
651
|
+
expect(container.textContent).toMatchInlineSnapshot(`"42.00"`);
|
|
652
|
+
});
|
|
653
|
+
|
|
654
|
+
it("should pad to minFractionDigits for numbers with fewer decimals", () => {
|
|
655
|
+
const { container } = render(
|
|
656
|
+
<I18nProvider locale="en-US">
|
|
657
|
+
<LocaleNumber value={1234.5} minFractionDigits={3} />
|
|
658
|
+
</I18nProvider>,
|
|
659
|
+
);
|
|
660
|
+
expect(container.textContent).toMatchInlineSnapshot(`"1,234.500"`);
|
|
661
|
+
});
|
|
662
|
+
|
|
663
|
+
it("should not truncate decimals beyond minFractionDigits", () => {
|
|
664
|
+
const { container } = render(
|
|
665
|
+
<I18nProvider locale="en-US">
|
|
666
|
+
<LocaleNumber value={1.234_56} minFractionDigits={2} />
|
|
667
|
+
</I18nProvider>,
|
|
668
|
+
);
|
|
669
|
+
expect(container.textContent).toMatchInlineSnapshot(`"1.23456"`);
|
|
670
|
+
});
|
|
671
|
+
});
|
|
672
|
+
|
|
673
|
+
describe("renderCellValue with boolean values", () => {
|
|
674
|
+
const createMockColumn = () =>
|
|
675
|
+
({
|
|
676
|
+
id: "active",
|
|
677
|
+
columnDef: {
|
|
678
|
+
meta: {
|
|
679
|
+
dataType: "boolean" as const,
|
|
680
|
+
dtype: "bool",
|
|
681
|
+
},
|
|
682
|
+
},
|
|
683
|
+
getColumnFormatting: () => undefined,
|
|
684
|
+
getColumnWrapping: () => undefined,
|
|
685
|
+
applyColumnFormatting: (value: unknown) => value,
|
|
686
|
+
}) as unknown as Column<unknown>;
|
|
687
|
+
|
|
688
|
+
it("should render true as True", () => {
|
|
689
|
+
const mockColumn = createMockColumn();
|
|
690
|
+
const result = renderCellValue({
|
|
691
|
+
column: mockColumn,
|
|
692
|
+
renderValue: () => true,
|
|
693
|
+
getValue: () => true,
|
|
694
|
+
selectCell: undefined,
|
|
695
|
+
cellStyles: "",
|
|
696
|
+
});
|
|
697
|
+
const { container } = render(result);
|
|
698
|
+
expect(container.textContent).toBe("True");
|
|
699
|
+
});
|
|
700
|
+
|
|
701
|
+
it("should render false as False", () => {
|
|
702
|
+
const mockColumn = createMockColumn();
|
|
703
|
+
const result = renderCellValue({
|
|
704
|
+
column: mockColumn,
|
|
705
|
+
renderValue: () => false,
|
|
706
|
+
getValue: () => false,
|
|
707
|
+
selectCell: undefined,
|
|
708
|
+
cellStyles: "",
|
|
709
|
+
});
|
|
710
|
+
const { container } = render(result);
|
|
711
|
+
expect(container.textContent).toBe("False");
|
|
712
|
+
});
|
|
575
713
|
});
|
|
576
714
|
|
|
577
715
|
describe("renderCellValue with datetime values", () => {
|
|
@@ -112,6 +112,7 @@ export function generateColumns<T>({
|
|
|
112
112
|
headerTooltip,
|
|
113
113
|
showDataTypes,
|
|
114
114
|
calculateTopKRows,
|
|
115
|
+
fractionDigitsByColumn,
|
|
115
116
|
}: {
|
|
116
117
|
rowHeaders: FieldTypesWithExternalType;
|
|
117
118
|
selection: DataTableSelection;
|
|
@@ -122,6 +123,7 @@ export function generateColumns<T>({
|
|
|
122
123
|
headerTooltip?: Record<string, string>;
|
|
123
124
|
showDataTypes?: boolean;
|
|
124
125
|
calculateTopKRows?: CalculateTopKRows;
|
|
126
|
+
fractionDigitsByColumn?: Record<string, number>;
|
|
125
127
|
}): ColumnDef<T>[] {
|
|
126
128
|
// Row-headers are typically index columns
|
|
127
129
|
const rowHeadersSet = new Set(rowHeaders.map(([columnName]) => columnName));
|
|
@@ -138,6 +140,7 @@ export function generateColumns<T>({
|
|
|
138
140
|
rowHeader: isRowHeader,
|
|
139
141
|
dtype: types?.[1],
|
|
140
142
|
dataType: types?.[0],
|
|
143
|
+
minFractionDigits: fractionDigitsByColumn?.[key],
|
|
141
144
|
};
|
|
142
145
|
}
|
|
143
146
|
|
|
@@ -146,9 +149,23 @@ export function generateColumns<T>({
|
|
|
146
149
|
filterType: getFilterTypeForFieldType(types[0]),
|
|
147
150
|
dtype: types[1],
|
|
148
151
|
dataType: types[0],
|
|
152
|
+
minFractionDigits: fractionDigitsByColumn?.[key],
|
|
149
153
|
};
|
|
150
154
|
};
|
|
151
155
|
|
|
156
|
+
const getJustify = (key: string): "left" | "center" | "right" | undefined => {
|
|
157
|
+
// Explicit user override takes precedence
|
|
158
|
+
if (textJustifyColumns?.[key]) {
|
|
159
|
+
return textJustifyColumns[key];
|
|
160
|
+
}
|
|
161
|
+
// Auto right-align numeric columns
|
|
162
|
+
const dataType = getMeta(key).dataType;
|
|
163
|
+
if (dataType === "number" || dataType === "integer") {
|
|
164
|
+
return "right";
|
|
165
|
+
}
|
|
166
|
+
return undefined;
|
|
167
|
+
};
|
|
168
|
+
|
|
152
169
|
const columnKeys: string[] = [
|
|
153
170
|
...rowHeadersSet,
|
|
154
171
|
...fieldTypes.map(([columnName]) => columnName),
|
|
@@ -186,7 +203,7 @@ export function generateColumns<T>({
|
|
|
186
203
|
</div>
|
|
187
204
|
) : null;
|
|
188
205
|
|
|
189
|
-
const justify =
|
|
206
|
+
const justify = getJustify(key);
|
|
190
207
|
|
|
191
208
|
const headerWithType = (
|
|
192
209
|
<div
|
|
@@ -254,18 +271,21 @@ export function generateColumns<T>({
|
|
|
254
271
|
cell.toggleSelected?.();
|
|
255
272
|
}
|
|
256
273
|
|
|
257
|
-
const justify =
|
|
274
|
+
const justify = getJustify(key);
|
|
258
275
|
const wrapped = wrappedColumns?.includes(key);
|
|
259
276
|
const isCellSelected = cell?.getIsSelected?.() || false;
|
|
260
277
|
const canSelectCell =
|
|
261
278
|
(selection === "single-cell" || selection === "multi-cell") &&
|
|
262
279
|
!isCellSelected;
|
|
263
280
|
|
|
281
|
+
const dataType = column.columnDef.meta?.dataType;
|
|
282
|
+
const isNumeric = dataType === "number" || dataType === "integer";
|
|
264
283
|
const cellStyles = getCellStyleClass(
|
|
265
284
|
justify,
|
|
266
285
|
wrapped,
|
|
267
286
|
canSelectCell,
|
|
268
287
|
isCellSelected,
|
|
288
|
+
isNumeric,
|
|
269
289
|
);
|
|
270
290
|
|
|
271
291
|
const renderedCell = renderCellValue({
|
|
@@ -430,6 +450,7 @@ function getCellStyleClass(
|
|
|
430
450
|
wrapped: boolean | undefined,
|
|
431
451
|
canSelectCell: boolean,
|
|
432
452
|
isSelected: boolean,
|
|
453
|
+
isNumeric?: boolean,
|
|
433
454
|
): string {
|
|
434
455
|
return cn(
|
|
435
456
|
canSelectCell && "cursor-pointer",
|
|
@@ -438,6 +459,7 @@ function getCellStyleClass(
|
|
|
438
459
|
"w-full",
|
|
439
460
|
"text-left",
|
|
440
461
|
"truncate",
|
|
462
|
+
isNumeric && "tabular-nums",
|
|
441
463
|
justify === "center" && "text-center",
|
|
442
464
|
justify === "right" && "text-right",
|
|
443
465
|
wrapped && `${COLUMN_WRAPPING_STYLES} break-words`,
|
|
@@ -589,7 +611,18 @@ export function renderCellValue<TData, TValue>({
|
|
|
589
611
|
if (typeof value === "number") {
|
|
590
612
|
return (
|
|
591
613
|
<div onClick={selectCell} className={cellStyles}>
|
|
592
|
-
<LocaleNumber
|
|
614
|
+
<LocaleNumber
|
|
615
|
+
value={value}
|
|
616
|
+
minFractionDigits={column.columnDef.meta?.minFractionDigits}
|
|
617
|
+
/>
|
|
618
|
+
</div>
|
|
619
|
+
);
|
|
620
|
+
}
|
|
621
|
+
|
|
622
|
+
if (typeof value === "boolean") {
|
|
623
|
+
return (
|
|
624
|
+
<div onClick={selectCell} className={cellStyles}>
|
|
625
|
+
{value ? "True" : "False"}
|
|
593
626
|
</div>
|
|
594
627
|
);
|
|
595
628
|
}
|
|
@@ -635,9 +668,16 @@ export function renderCellValue<TData, TValue>({
|
|
|
635
668
|
);
|
|
636
669
|
}
|
|
637
670
|
|
|
638
|
-
export const LocaleNumber = ({
|
|
671
|
+
export const LocaleNumber = ({
|
|
672
|
+
value,
|
|
673
|
+
minFractionDigits,
|
|
674
|
+
}: {
|
|
675
|
+
value: number;
|
|
676
|
+
minFractionDigits?: number;
|
|
677
|
+
}) => {
|
|
639
678
|
const { locale } = useLocale();
|
|
640
679
|
const format = useNumberFormatter({
|
|
680
|
+
minimumFractionDigits: minFractionDigits,
|
|
641
681
|
maximumFractionDigits: maxFractionalDigits(locale),
|
|
642
682
|
});
|
|
643
683
|
return format.format(value);
|
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
type UserConfig,
|
|
45
45
|
UserConfigSchema,
|
|
46
46
|
} from "../../core/config/config-schema";
|
|
47
|
-
import { getDirtyValues } from "../app-config/
|
|
47
|
+
import { getDirtyValues } from "../app-config/get-dirty-values";
|
|
48
48
|
import { Button } from "../ui/button";
|
|
49
49
|
import {
|
|
50
50
|
DropdownMenu,
|
|
@@ -874,10 +874,35 @@ const DataTableComponent = ({
|
|
|
874
874
|
return memoizedUnclampedFieldTypes.slice(0, maxColumns);
|
|
875
875
|
}, [maxColumns, memoizedUnclampedFieldTypes]);
|
|
876
876
|
|
|
877
|
+
// Compute max fractional digits per numeric column for consistent formatting.
|
|
878
|
+
const computedFractionDigits = useMemo(() => {
|
|
879
|
+
const result: Record<string, number> = {};
|
|
880
|
+
if (data && data.length > 0) {
|
|
881
|
+
for (const [colName, types] of memoizedClampedFieldTypes) {
|
|
882
|
+
if (types[0] === "number") {
|
|
883
|
+
let maxDecimals = 0;
|
|
884
|
+
for (const row of data) {
|
|
885
|
+
const val = (row as Record<string, unknown>)[colName];
|
|
886
|
+
if (typeof val === "number" && Number.isFinite(val)) {
|
|
887
|
+
const str = String(val);
|
|
888
|
+
const dotIdx = str.indexOf(".");
|
|
889
|
+
if (dotIdx !== -1) {
|
|
890
|
+
maxDecimals = Math.max(maxDecimals, str.length - dotIdx - 1);
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
result[colName] = maxDecimals;
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
return result;
|
|
899
|
+
}, [data, memoizedClampedFieldTypes]);
|
|
900
|
+
|
|
877
901
|
const memoizedRowHeaders = useDeepCompareMemoize(rowHeaders);
|
|
878
902
|
const memoizedTextJustifyColumns = useDeepCompareMemoize(textJustifyColumns);
|
|
879
903
|
const memoizedWrappedColumns = useDeepCompareMemoize(wrappedColumns);
|
|
880
904
|
const memoizedChartSpecModel = useDeepCompareMemoize(chartSpecModel);
|
|
905
|
+
const fractionDigitsByColumn = useDeepCompareMemoize(computedFractionDigits);
|
|
881
906
|
const shownColumns = memoizedClampedFieldTypes.length;
|
|
882
907
|
|
|
883
908
|
// If the field types are not set, we don't show them
|
|
@@ -898,6 +923,7 @@ const DataTableComponent = ({
|
|
|
898
923
|
// Only show data types if they are explicitly set
|
|
899
924
|
showDataTypes: showDataTypes,
|
|
900
925
|
calculateTopKRows: calculate_top_k_rows,
|
|
926
|
+
fractionDigitsByColumn: fractionDigitsByColumn,
|
|
901
927
|
}),
|
|
902
928
|
[
|
|
903
929
|
selection,
|
|
@@ -909,6 +935,7 @@ const DataTableComponent = ({
|
|
|
909
935
|
memoizedWrappedColumns,
|
|
910
936
|
headerTooltip,
|
|
911
937
|
calculate_top_k_rows,
|
|
938
|
+
fractionDigitsByColumn,
|
|
912
939
|
],
|
|
913
940
|
);
|
|
914
941
|
|