@marimo-team/islands 0.21.2-dev63 → 0.21.2-dev69
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-DkSulho5.js → ConnectedDataExplorerComponent-CLLlotD4.js} +1 -1
- package/dist/{any-language-editor-B_YcSEs7.js → any-language-editor-BBegsg-m.js} +10 -10
- package/dist/apl-e1B5LPEL.js +4 -0
- package/dist/{arc-DfkSnvZm.js → arc-CHF8PiiF.js} +2 -2
- package/dist/{architecture-7HQA4BMR-BVuGBj38.js → architecture-7HQA4BMR-KeUc82D1.js} +1 -1
- package/dist/{architectureDiagram-VXUJARFQ-CTttozWW.js → architectureDiagram-VXUJARFQ-CIl7H_7A.js} +16 -16
- package/dist/asciiarmor-B-gwgesP.js +4 -0
- package/dist/asn1-DF2ckRB4.js +4 -0
- package/dist/{blockDiagram-VD42YOAC-DPCYZecD.js → blockDiagram-VD42YOAC-Bxg4bo7H.js} +11 -11
- package/dist/brainfuck-4G-7_gq_.js +4 -0
- package/dist/{c4Diagram-YG6GDRKO-BAE3Buci.js → c4Diagram-YG6GDRKO-k4TEDUb8.js} +5 -5
- package/dist/{channel-DApRnm6b.js → channel-CCR8wXOx.js} +1 -1
- package/dist/{chat-ui-DIuq4Mn6.js → chat-ui-D4ay_SFE.js} +2 -3
- package/dist/{chunk-4BX2VUAB-BtdcCA7H.js → chunk-4BX2VUAB-BwfrWBqN.js} +1 -1
- package/dist/{chunk-55IACEB6-hJraQgx2.js → chunk-55IACEB6-D8THf2mi.js} +1 -1
- package/dist/{chunk-5FQGJX7Z-DwBOYBMa.js → chunk-5FQGJX7Z-Cz2QbNIw.js} +1502 -2844
- package/dist/{chunk-ABZYJK2D-DFnIGLNd.js → chunk-ABZYJK2D-NPoevJcI.js} +2 -2
- package/dist/{chunk-ATLVNIR6-4HgRPLgX.js → chunk-ATLVNIR6-DAhC1FCG.js} +2 -2
- package/dist/{chunk-B4BG7PRW-Bp8FDZTb.js → chunk-B4BG7PRW-BDmytgmO.js} +7 -7
- package/dist/{chunk-CVBHYZKI-B_c5YBcW.js → chunk-CVBHYZKI-B6xhgaBd.js} +1 -1
- package/dist/{chunk-DI55MBZ5-CtD9lSpd.js → chunk-DI55MBZ5-C6iNEV8U.js} +6 -6
- package/dist/{chunk-EXTU4WIE-QrN2mPtn.js → chunk-EXTU4WIE-BtA6WdD4.js} +2 -2
- package/dist/{chunk-FMBD7UC4-B34QcQBj.js → chunk-FMBD7UC4-CHdus51S.js} +1 -1
- package/dist/{chunk-HN2XXSSU-E3n-Ys7Z.js → chunk-HN2XXSSU-2Vfbq-kU.js} +1 -1
- package/dist/{chunk-JA3XYJ7Z-B9-EWihm.js → chunk-JA3XYJ7Z-BeXqAsc9.js} +3 -3
- package/dist/{chunk-JZLCHNYA-CIx__-bR.js → chunk-JZLCHNYA-ibE7xTEx.js} +6 -6
- package/dist/{chunk-MI3HLSF2-CUYEasXO.js → chunk-MI3HLSF2-Do0-KRc0.js} +1 -1
- package/dist/{chunk-N4CR4FBY-Cl9KH_W1.js → chunk-N4CR4FBY-CHAcubAf.js} +7 -7
- package/dist/{chunk-QN33PNHL-DV6ID85v.js → chunk-QN33PNHL-CDWJY_kT.js} +2 -2
- package/dist/{chunk-QXUST7PY-CaiIvoL5.js → chunk-QXUST7PY-CV37xRZd.js} +10 -10
- package/dist/{chunk-QZHKN3VN-CBBP4d0M.js → chunk-QZHKN3VN-B_Mdb8GC.js} +1 -1
- package/dist/{chunk-S3R3BYOJ-CQOhwRBS.js → chunk-S3R3BYOJ-CGlk8NH-.js} +4 -4
- package/dist/{chunk-TZMSLE5B-BkqhN89K.js → chunk-TZMSLE5B-DfY6C3FB.js} +3 -3
- package/dist/classDiagram-2ON5EDUG-DbWOiPgs.js +30 -0
- package/dist/classDiagram-v2-WZHVMYZB-COnXBrRA.js +30 -0
- package/dist/{clike-jRoJKo3I.js → clike-7lgyEYRk.js} +1 -1
- package/dist/clojure-CUybM11R.js +4 -0
- package/dist/cmake-BPjGcuDL.js +4 -0
- package/dist/cobol-BETk_nb6.js +4 -0
- package/dist/{code-block-37QAKDTI-Dae3xvB0.js → code-block-37QAKDTI-DW3JC11U.js} +1 -1
- package/dist/coffeescript-CManZxXL.js +4 -0
- package/dist/commonlisp-DWkn7GW8.js +4 -0
- package/dist/{cose-bilkent-S5V4N54A-DvPVjKwP.js → cose-bilkent-S5V4N54A-DXHZkJKX.js} +2 -2
- package/dist/crystal-CCbg5EUH.js +4 -0
- package/dist/css-By8eo-XS.js +4 -0
- package/dist/cypher-DwfHg3nP.js +4 -0
- package/dist/d-Brs1wNbw.js +4 -0
- package/dist/{dagre-6UL2VRFP-ABg-WzQ3.js → dagre-6UL2VRFP-B8UW0fXE.js} +10 -10
- package/dist/{data-grid-overlay-editor-eVOR1Bqn.js → data-grid-overlay-editor-CpL5Zajy.js} +2 -2
- package/dist/{diagram-PSM6KHXK-D6zP_W1d.js → diagram-PSM6KHXK-DGD-j1bM.js} +18 -18
- package/dist/{diagram-QEK2KX5R-CuHhFHzr.js → diagram-QEK2KX5R-DgsT6ZW4.js} +14 -14
- package/dist/{diagram-S2PKOQOG-B2AqkaRk.js → diagram-S2PKOQOG-CDh5Ij8z.js} +14 -14
- package/dist/diff-DJIRmJ1g.js +4 -0
- package/dist/dist-BHGf2Zey.js +5 -0
- package/dist/dist-BImOGJZM.js +5 -0
- package/dist/dist-BbJfmCHJ.js +5 -0
- package/dist/{dist-Cxn9man7.js → dist-C0v-nFs_.js} +1 -1
- package/dist/{dist-CZ4qwYvJ.js → dist-C9TDg2aq.js} +1 -1
- package/dist/{dist-BwZY8Lt9.js → dist-CKVkWFcB.js} +1 -1
- package/dist/dist-CN4RKgNR.js +5 -0
- package/dist/{dist-CXayp1fR.js → dist-CVOkf_3P.js} +1 -1
- package/dist/dist-CwEBZkrQ.js +550 -0
- package/dist/dist-D6YTv0Kj.js +5 -0
- package/dist/{dist-DUTgSV0a.js → dist-D9vawryf.js} +1 -1
- package/dist/{dist-DcoiQ51H.js → dist-DasJgTvL.js} +1 -1
- package/dist/{dist-Don9K0di.js → dist-Ui51qXMz.js} +1 -1
- package/dist/dist-d2msfN-B.js +5 -0
- package/dist/{dist-DD2s3ocF.js → dist-uR-o9IVx.js} +1 -1
- package/dist/{dockerfile-Bhphd7by.js → dockerfile-DG6A2DdH.js} +1 -1
- package/dist/dtd-Dyiazv4N.js +4 -0
- package/dist/dylan-D8Fcw7NA.js +4 -0
- package/dist/ecl-CjKp8Vii.js +4 -0
- package/dist/eiffel-K9ViOX5r.js +4 -0
- package/dist/elm-B5NVtRco.js +4 -0
- package/dist/{erDiagram-Q2GNP2WA-DEGS1PP7.js → erDiagram-Q2GNP2WA-CGK0SUdu.js} +14 -14
- package/dist/erlang-BnLzgk7R.js +4 -0
- package/dist/{esm-dotk-2cB.js → esm-CCD9xN05.js} +96 -96
- package/dist/{factor-DNC3EI9I.js → factor-Bq2mGIHt.js} +1 -1
- package/dist/factor-C7f9Jz5R.js +4 -0
- package/dist/{flowDiagram-NV44I4VS-_NtC_MIa.js → flowDiagram-NV44I4VS-PjhviPI_.js} +16 -16
- package/dist/forth-rGM8jLao.js +4 -0
- package/dist/fortran-B3acSe0i.js +4 -0
- package/dist/{ganttDiagram-JELNMOA3-0iqJp9II.js → ganttDiagram-JELNMOA3-CUVtQqgT.js} +7 -7
- package/dist/gas-Bb1Vmv_N.js +4 -0
- package/dist/gherkin-C9Lyidgd.js +4 -0
- package/dist/{gitGraph-G5XIXVHT-D5dIC-Yj.js → gitGraph-G5XIXVHT-B6b-Z3mr.js} +1 -1
- package/dist/{gitGraphDiagram-V2S2FVAM-DmWsIkI5.js → gitGraphDiagram-V2S2FVAM-CNdrlK1I.js} +14 -14
- package/dist/{glide-data-editor-BkO3-23t.js → glide-data-editor-DQEuWuu_.js} +4 -4
- package/dist/groovy-DQk6XcGH.js +4 -0
- package/dist/haskell-mV0Vw9gv.js +4 -0
- package/dist/haxe-DqxN89zH.js +5 -0
- package/dist/idl-ya8W561J.js +4 -0
- package/dist/{info-VBDWY6EO-DTO3vFfS.js → info-VBDWY6EO-DfFl0Z8H.js} +1 -1
- package/dist/{infoDiagram-HS3SLOUP-UrOFax1c.js → infoDiagram-HS3SLOUP-DGimKb9k.js} +12 -12
- package/dist/javascript-CgqgptVu.js +4 -0
- package/dist/{journeyDiagram-XKPGCS4Q-m64vZmxT.js → journeyDiagram-XKPGCS4Q-CyoESVVb.js} +6 -6
- package/dist/julia-CFQ-HusI.js +4 -0
- package/dist/{kanban-definition-3W4ZIXB7-ZLe0Kp41.js → kanban-definition-3W4ZIXB7-Doc2YV80.js} +11 -11
- package/dist/{katex-DAGMFHph.js → katex-qPqrBHZ8.js} +1 -1
- package/dist/{line-C5s_12ee.js → line-BWRi3U3S.js} +3 -3
- package/dist/{linear-Cii2AMNm.js → linear-DZ8_CGCd.js} +2 -2
- package/dist/livescript-D__3TmDo.js +4 -0
- package/dist/lua-Bytcgj_W.js +4 -0
- package/dist/main.js +3457 -3422
- package/dist/mathematica-DJhvVKvl.js +4 -0
- package/dist/mbox-IGHPCjfR.js +4 -0
- package/dist/{mermaid-4DMBBIKO-0oQV6SKJ.js → mermaid-4DMBBIKO-DQdI9xDR.js} +1 -1
- package/dist/{mermaid-CP8gAOdP.js → mermaid-CzWpf81s.js} +41 -41
- package/dist/{mermaid-parser.core-Ldbqm2U2.js → mermaid-parser.core-CrrqF1ZZ.js} +7 -7
- package/dist/{mhchem-BGHMIfq6.js → mhchem-BwoRNwg_.js} +1 -1
- package/dist/micromark-factory-space-DQCQsiYz.js +1341 -0
- package/dist/{mindmap-definition-VGOIOE7T-BkJfqjP5.js → mindmap-definition-VGOIOE7T-L2ybicpO.js} +13 -13
- package/dist/mirc-tcwvVugm.js +4 -0
- package/dist/mllike-Dx91i62r.js +6 -0
- package/dist/modelica-_SRt-yU5.js +4 -0
- package/dist/mscgen-GZrGS9gt.js +6 -0
- package/dist/mumps-Cv3ygyod.js +4 -0
- package/dist/nsis-BU7GeGbI.js +4 -0
- package/dist/{nsis-CROWDZ9a.js → nsis-i9_sgigf.js} +1 -1
- package/dist/ntriples-CL-FCYXb.js +4 -0
- package/dist/{number-overlay-editor-B5y1rc-k.js → number-overlay-editor-D2Y0RpcH.js} +1 -1
- package/dist/octave-Dc6_3DIu.js +4 -0
- package/dist/{ordinal-Bz8O-XbW.js → ordinal-B4zYMadD.js} +1 -1
- package/dist/oz-DpUAJCXf.js +4 -0
- package/dist/{packet-DYOGHKS2-BWNLyWLh.js → packet-DYOGHKS2-DIf3Dotq.js} +1 -1
- package/dist/pascal-B17mncXs.js +4 -0
- package/dist/perl-BTpK97q9.js +4 -0
- package/dist/{pie-VRWISCQL-BNm0ZeOM.js → pie-VRWISCQL-Dj_gvPcD.js} +1 -1
- package/dist/{pieDiagram-ADFJNKIX-CLJoguev.js → pieDiagram-ADFJNKIX-x5w7q6Yp.js} +19 -19
- package/dist/pig-CFb638Ap.js +4 -0
- package/dist/powershell-Cxo-_2A5.js +4 -0
- package/dist/{process-output-BzDV74px.js → process-output-Cv8vQ4At.js} +4238 -4809
- package/dist/properties-BPgT1xTB.js +4 -0
- package/dist/protobuf-BgHBaIIK.js +4 -0
- package/dist/pug-25-oS0SG.js +4 -0
- package/dist/{pug-CSWat1rd.js → pug-BhE2JRSg.js} +1 -1
- package/dist/puppet-DarIr20S.js +4 -0
- package/dist/python-BqmOsBsi.js +4 -0
- package/dist/q-D3QJCTup.js +4 -0
- package/dist/{quadrantDiagram-AYHSOK5B-Bym-JxLx.js → quadrantDiagram-AYHSOK5B-D5j_5qG_.js} +3 -3
- package/dist/r-Cz_yBX4z.js +4 -0
- package/dist/{radar-ZZBFDIW7-CEhz-hUS.js → radar-ZZBFDIW7-DXDVq3gi.js} +1 -1
- package/dist/{react-vega-DZOOS-W4.js → react-vega-BBUxfZoV.js} +13 -13
- package/dist/{react-vega-CY82WAG3.js → react-vega-Cs3lfDw8.js} +1 -1
- package/dist/{requirementDiagram-UZGBJVZJ-CD_V4itb.js → requirementDiagram-UZGBJVZJ-3SoJH6yP.js} +13 -13
- package/dist/rpm-DGOtYwAI.js +5 -0
- package/dist/ruby-DBZu4rPc.js +4 -0
- package/dist/{sankeyDiagram-TZEHDZUN-CW3Bo_62.js → sankeyDiagram-TZEHDZUN-fGkFNe5q.js} +4 -4
- package/dist/sas-Dd1D9qTq.js +4 -0
- package/dist/scheme-BmDjvTHX.js +4 -0
- package/dist/{sequenceDiagram-WL72ISMW-BfAHIhk3.js → sequenceDiagram-WL72ISMW-BE2uTn_d.js} +7 -7
- package/dist/shell-BL8zFSaj.js +4 -0
- package/dist/sieve-BAx2WqUP.js +4 -0
- package/dist/smalltalk-CYRzF7VV.js +4 -0
- package/dist/sparql-YWaDRO4A.js +4 -0
- package/dist/{src-Bf2iLOlr.js → src-BY0BGg6V.js} +1 -1
- package/dist/{stateDiagram-FKZM4ZOC-CCfvnS3_.js → stateDiagram-FKZM4ZOC-Dmk9IAOx.js} +16 -16
- package/dist/stateDiagram-v2-4FDKWEC3-BGF0BvU6.js +29 -0
- package/dist/{step-CWipAYTY.js → step-DGAGWg3y.js} +1 -1
- package/dist/stylus-lYsyLFc1.js +4 -0
- package/dist/swift-ClQz9z1n.js +4 -0
- package/dist/tcl-B3jhsfqY.js +4 -0
- package/dist/textile-Cb1Dw7Aq.js +4 -0
- package/dist/{time-B31vFOEZ.js → time-C_pvjzP0.js} +2 -2
- package/dist/{timeline-definition-IT6M3QCI-BwyDPLz1.js → timeline-definition-IT6M3QCI-CvB4yGrN.js} +3 -3
- package/dist/toml-nHZhetdO.js +4 -0
- package/dist/{treemap-GDKQZRPO-BdsKcX7e.js → treemap-GDKQZRPO-CIG6WH-x.js} +1 -1
- package/dist/troff-DuJAGWKH.js +4 -0
- package/dist/ttcn-BxrcwP21.js +4 -0
- package/dist/ttcn-cfg-BAg_9dcc.js +4 -0
- package/dist/turtle-zCq949as.js +4 -0
- package/dist/vb-De5hElus.js +4 -0
- package/dist/vbscript-Cypcpv4F.js +4 -0
- package/dist/{vega-component-DX1QtRQE.js → vega-component-BQNW4qnB.js} +1 -1
- package/dist/velocity-Di7l-yhe.js +4 -0
- package/dist/verilog-Bzi-S3g2.js +4 -0
- package/dist/vhdl-B0ZZITaW.js +4 -0
- package/dist/webidl-0sviiRcN.js +4 -0
- package/dist/xquery-B4qMVWaB.js +4 -0
- package/dist/{xychartDiagram-PRI3JC2R-D-Of-r2y.js → xychartDiagram-PRI3JC2R-BbEInSqY.js} +10 -10
- package/dist/yacas-Jt25Fuv8.js +4 -0
- package/dist/z80-CrcbYzmp.js +4 -0
- package/package.json +1 -1
- package/src/__mocks__/requests.ts +1 -0
- 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/datasources/datasources.tsx +45 -0
- package/src/components/markdown/markdown-renderer.tsx +18 -2
- package/src/core/datasets/__tests__/data-source.test.ts +88 -1
- package/src/core/datasets/data-source-connections.ts +44 -0
- package/src/core/datasets/request-registry.ts +13 -0
- package/src/core/islands/bridge.ts +1 -0
- package/src/core/islands/main.ts +1 -0
- package/src/core/kernel/messages.ts +2 -0
- package/src/core/network/requests-lazy.ts +1 -0
- package/src/core/network/requests-network.ts +8 -0
- package/src/core/network/requests-static.ts +1 -0
- package/src/core/network/requests-toasting.tsx +1 -0
- package/src/core/network/types.ts +2 -0
- package/src/core/wasm/bridge.ts +10 -0
- package/src/core/websocket/useMarimoKernelConnection.tsx +4 -0
- package/src/plugins/impl/DataTablePlugin.tsx +27 -0
- package/dist/apl-Bw2VYJky.js +0 -4
- package/dist/asciiarmor-eqY4ZaG6.js +0 -4
- package/dist/asn1-Ch439-Sl.js +0 -4
- package/dist/brainfuck-CYhvoM5D.js +0 -4
- package/dist/classDiagram-2ON5EDUG-BKvGPmV7.js +0 -30
- package/dist/classDiagram-v2-WZHVMYZB-CUmRCVhz.js +0 -30
- package/dist/clojure-Dlp86hGI.js +0 -4
- package/dist/cmake-CW_qEITI.js +0 -4
- package/dist/cobol-XHu3WWjZ.js +0 -4
- package/dist/coffeescript-Bb6YS_bL.js +0 -4
- package/dist/commonlisp-BjSiOQCp.js +0 -4
- package/dist/crystal-BqTYUvZ7.js +0 -4
- package/dist/css-DADryIYo.js +0 -4
- package/dist/cypher-CNn306Oc.js +0 -4
- package/dist/d-D-tppFsq.js +0 -4
- package/dist/diff-BWHM7ple.js +0 -4
- package/dist/dist-BV8p87LG.js +0 -5
- package/dist/dist-CHmkCdpG.js +0 -5
- package/dist/dist-C__dRIDe.js +0 -5
- package/dist/dist-DjYymnvA.js +0 -5
- package/dist/dist-E9OVwuXi.js +0 -5
- package/dist/dist-s8cGIbEf.js +0 -5
- package/dist/dtd-_uCqoALQ.js +0 -4
- package/dist/dylan-C9RDQBgd.js +0 -4
- package/dist/ecl-D-cNcvrL.js +0 -4
- package/dist/eiffel-pwlnpFTa.js +0 -4
- package/dist/elm-Bw5cHXv0.js +0 -4
- package/dist/erlang-_hA30h6l.js +0 -4
- package/dist/factor-DmR0sS2X.js +0 -4
- package/dist/forth-Cp4B_BYs.js +0 -4
- package/dist/fortran-2KtXs5Vb.js +0 -4
- package/dist/gas-106_zOMN.js +0 -4
- package/dist/gherkin-CHK85w0F.js +0 -4
- package/dist/groovy-Bl2mjKn9.js +0 -4
- package/dist/haskell-BzHGL977.js +0 -4
- package/dist/haxe-BWQFLp-3.js +0 -5
- package/dist/idl-C28UwC1n.js +0 -4
- package/dist/javascript-DgLCEZTn.js +0 -4
- package/dist/julia-BPiwS_8t.js +0 -4
- package/dist/livescript-D--_lQnE.js +0 -4
- package/dist/lua-CsDs748O.js +0 -4
- package/dist/mathematica-BYQ9GF6F.js +0 -4
- package/dist/mbox-C7kaFMhK.js +0 -4
- package/dist/mirc-C2209Et3.js +0 -4
- package/dist/mllike-BLT4EygN.js +0 -6
- package/dist/modelica-DdJRZ_hL.js +0 -4
- package/dist/mscgen-CG9noCbk.js +0 -6
- package/dist/mumps-V-rMtaoS.js +0 -4
- package/dist/nsis-BaCxxbYc.js +0 -4
- package/dist/ntriples-2dOF8Rwr.js +0 -4
- package/dist/octave-DgJBCpUf.js +0 -4
- package/dist/oz-B4DqLn0e.js +0 -4
- package/dist/pascal-CzxJky4Q.js +0 -4
- package/dist/perl-BXxwSvR1.js +0 -4
- package/dist/pig-C6uUbdgq.js +0 -4
- package/dist/powershell-ByH1IK0s.js +0 -4
- package/dist/properties-D9ixNGHK.js +0 -4
- package/dist/protobuf-CL5MO5Bo.js +0 -4
- package/dist/pug-j1GtIGnO.js +0 -4
- package/dist/puppet-DAaSZQRF.js +0 -4
- package/dist/python-DWLse_Hh.js +0 -4
- package/dist/q-JRlUfaV4.js +0 -4
- package/dist/r-J8uFHie7.js +0 -4
- package/dist/rpm-C85hbO48.js +0 -5
- package/dist/ruby-D9HeYYQS.js +0 -4
- package/dist/sas-D4mSim4H.js +0 -4
- package/dist/scheme-DNmM-DGy.js +0 -4
- package/dist/shell-BS8ZwLUy.js +0 -4
- package/dist/sieve-B8TCe-_m.js +0 -4
- package/dist/smalltalk-CkAXTqlf.js +0 -4
- package/dist/sparql-Bt75sj2n.js +0 -4
- package/dist/stateDiagram-v2-4FDKWEC3-Dd_xAZiD.js +0 -29
- package/dist/stylus-BM4XGc6j.js +0 -4
- package/dist/swift-BRG-gyk5.js +0 -4
- package/dist/tcl-Bp61skpb.js +0 -4
- package/dist/textile-vndc5V2p.js +0 -4
- package/dist/toml-CMpRzNl5.js +0 -4
- package/dist/troff-BNSfnnQn.js +0 -4
- package/dist/ttcn-CILP7Q2P.js +0 -4
- package/dist/ttcn-cfg-Cs5Ekdhk.js +0 -4
- package/dist/turtle-1zFjsw2L.js +0 -4
- package/dist/vb-CCqDJO0q.js +0 -4
- package/dist/vbscript-CtqCxNqL.js +0 -4
- package/dist/velocity-BRacwoCp.js +0 -4
- package/dist/verilog-CdotQ5hS.js +0 -4
- package/dist/vhdl-CRMFlLc_.js +0 -4
- package/dist/webidl-Bo-4Hfyi.js +0 -4
- package/dist/xquery-CgMQN-7i.js +0 -4
- package/dist/yacas-6ORYe5fj.js +0 -4
- package/dist/z80-tFLqkB9-.js +0 -4
- /package/dist/{ImageComparisonComponent-gxt3EfyS.js → ImageComparisonComponent-BC00mJmw.js} +0 -0
- /package/dist/{Plot-Do8S2SQJ.js → Plot-B1ahrLui.js} +0 -0
- /package/dist/{apl-hy2nkDJ0.js → apl-99A7dLQe.js} +0 -0
- /package/dist/{array-tvvEqPy7.js → array-B-MVxRIF.js} +0 -0
- /package/dist/{asciiarmor-Bp85a1XA.js → asciiarmor-DLEhpFDx.js} +0 -0
- /package/dist/{asn1-CCINh2Tb.js → asn1-CMrcTsT4.js} +0 -0
- /package/dist/{asterisk-DaVJJDnV.js → asterisk-BUZwqih-.js} +0 -0
- /package/dist/{brainfuck-CWERNqpi.js → brainfuck-ChPt5yBe.js} +0 -0
- /package/dist/{chunk-4F5CHEZ2-trdcsslU.js → chunk-4F5CHEZ2-BigWQaTs.js} +0 -0
- /package/dist/{chunk-B2363JML-BFAcnt5i.js → chunk-B2363JML-DOYwB798.js} +0 -0
- /package/dist/{chunk-DR5Q36YT-BflwErH1.js → chunk-DR5Q36YT-CP69aZS_.js} +0 -0
- /package/dist/{chunk-FRFDVMJY-Bdi7sRSt.js → chunk-FRFDVMJY-Bo7Hv3UF.js} +0 -0
- /package/dist/{chunk-PL6DKKU2-BBQnb9JJ.js → chunk-PL6DKKU2-D3wYz-iW.js} +0 -0
- /package/dist/{chunk-SJTYNZTY-upm-bCUI.js → chunk-SJTYNZTY-Bauwp2-p.js} +0 -0
- /package/dist/{chunk-TQ3KTPDO-BYnhW5aQ.js → chunk-TQ3KTPDO-TjHW8xfv.js} +0 -0
- /package/dist/{chunk-UMXZTB3W-CmrAYToU.js → chunk-UMXZTB3W-DdRiIIOF.js} +0 -0
- /package/dist/{click-outside-container-D6Q_AEkf.js → click-outside-container-DB_bTXRG.js} +0 -0
- /package/dist/{clike-BclwMGdw.js → clike-CE0fXfM_.js} +0 -0
- /package/dist/{clojure-ygiDe_M6.js → clojure-QkBEMU-g.js} +0 -0
- /package/dist/{cmake-CqV32d9p.js → cmake-CU1jX7Mo.js} +0 -0
- /package/dist/{cobol-BC90RNzo.js → cobol-DMOKzzky.js} +0 -0
- /package/dist/{coffeescript-XlUo917R.js → coffeescript-DjnjLyfk.js} +0 -0
- /package/dist/{colors-CQAOa8cK.js → colors-Cn2p_FA3.js} +0 -0
- /package/dist/{common-keywords-FBrXPTcz.js → common-keywords-hbLeU7VU.js} +0 -0
- /package/dist/{commonlisp-BlMWxO2z.js → commonlisp-CYd9iOSe.js} +0 -0
- /package/dist/{crystal-BJriHwL7.js → crystal-Dy55yoYG.js} +0 -0
- /package/dist/{css-De5CPzak.js → css-CNU8w3HJ.js} +0 -0
- /package/dist/{cypher-CF3pgZHB.js → cypher-q47DGzK7.js} +0 -0
- /package/dist/{cytoscape.esm-GAzDZorR.js → cytoscape.esm-WbbDoCfu.js} +0 -0
- /package/dist/{d-DnmSJuVB.js → d-jEkaLvxX.js} +0 -0
- /package/dist/{diff-5fTcVlce.js → diff-vb2-unFN.js} +0 -0
- /package/dist/{dist-CWmTJeFK.js → dist-1-E4bC9V.js} +0 -0
- /package/dist/{dist-BcxBN3cs.js → dist-APyhcmvq.js} +0 -0
- /package/dist/{dist-9a7ktdXy.js → dist-B5thW2rT.js} +0 -0
- /package/dist/{dist-DaQ8gl6t.js → dist-BJvk9DSp.js} +0 -0
- /package/dist/{dist-WV8DSzVp.js → dist-BLrc9iNb.js} +0 -0
- /package/dist/{dist-BGdYVvOu.js → dist-C89sHDXk.js} +0 -0
- /package/dist/{dist-D_qEwdMV.js → dist-CGH6Jw-c.js} +0 -0
- /package/dist/{dist-C4UxHJAP.js → dist-CQ3XmGIH.js} +0 -0
- /package/dist/{dist-Ddms9oaj.js → dist-CYuoqvce.js} +0 -0
- /package/dist/{dist-B1fHT_HN.js → dist-CxczluAk.js} +0 -0
- /package/dist/{dist-BU99V51x.js → dist-DFBjYgbq.js} +0 -0
- /package/dist/{dist-CiisiGJh.js → dist-DbyoYfBn.js} +0 -0
- /package/dist/{dist-DkQrPBbq.js → dist-Dk13KZ54.js} +0 -0
- /package/dist/{dist-BJ43gqCe.js → dist-Dl9_0tkc.js} +0 -0
- /package/dist/{dist-BS0c9rME.js → dist-aW74oyUt.js} +0 -0
- /package/dist/{dist-XpVxGq0K.js → dist-iM9VwH8Z.js} +0 -0
- /package/dist/{dist-CMY2xBYw.js → dist-zGOEySUQ.js} +0 -0
- /package/dist/{dtd-CExSJ830.js → dtd-C9kR-bXa.js} +0 -0
- /package/dist/{duckdb-keywords-CvJhR_Yd.js → duckdb-keywords-CZ_ZTscu.js} +0 -0
- /package/dist/{dylan-D45mme_B.js → dylan-BLckrK-V.js} +0 -0
- /package/dist/{ebnf-2D4Ctp3y.js → ebnf-WEXPLEWb.js} +0 -0
- /package/dist/{ecl-Dt8H2ySk.js → ecl-CEsf6XVg.js} +0 -0
- /package/dist/{eiffel-BVH48wKK.js → eiffel-2KGZNzx6.js} +0 -0
- /package/dist/{elm-lLkDwz-w.js → elm-D2s3K5wF.js} +0 -0
- /package/dist/{erlang-Ct2FydHU.js → erlang-0PMFOndk.js} +0 -0
- /package/dist/{esm-CuMA4YP0.js → esm-Bb_hbWan.js} +0 -0
- /package/dist/{fcl-Ccj8Z5Xd.js → fcl-B_Gv5Jfx.js} +0 -0
- /package/dist/{forth-CXoVo3MY.js → forth-DG89iUsu.js} +0 -0
- /package/dist/{fortran-CgtioF-z.js → fortran-ytKsAVvu.js} +0 -0
- /package/dist/{gas-DA6wSQkj.js → gas-Cg2Fm0N2.js} +0 -0
- /package/dist/{gherkin-Cn3rybYZ.js → gherkin-B87FEnZ-.js} +0 -0
- /package/dist/{groovy-CGOZjiuH.js → groovy-Dcs08AWD.js} +0 -0
- /package/dist/{haskell-BWI76WET.js → haskell-cwkOuhx6.js} +0 -0
- /package/dist/{haxe-CovtkFbk.js → haxe-DWEo4q10.js} +0 -0
- /package/dist/{http-_DVAYWoR.js → http-Dc2fv19V.js} +0 -0
- /package/dist/{idl-SJSctwSZ.js → idl-WWQwDcRV.js} +0 -0
- /package/dist/{init-uv0kkh4g.js → init-D-g0ONX1.js} +0 -0
- /package/dist/{javascript-BzIdRGKh.js → javascript-BeR74dxD.js} +0 -0
- /package/dist/{julia-B3EQ2bxh.js → julia-UlvCUYGL.js} +0 -0
- /package/dist/{katex-CywHdYBC.js → katex-B7pMJpE0.js} +0 -0
- /package/dist/{livescript-BtVSE9jj.js → livescript-GPmFcmYV.js} +0 -0
- /package/dist/{lua-B1Esbvm1.js → lua-DYoT_0zM.js} +0 -0
- /package/dist/{math-DFcdCCU8.js → math-BYK36kWZ.js} +0 -0
- /package/dist/{mathematica-BLPJnY-e.js → mathematica-DSFIQlbG.js} +0 -0
- /package/dist/{mbox-C86ZBpjz.js → mbox-ej8lFMdL.js} +0 -0
- /package/dist/{mirc-Cqv8ECOt.js → mirc-CAdIdvHQ.js} +0 -0
- /package/dist/{mllike-BCn8p2Mf.js → mllike-CjTB1lHF.js} +0 -0
- /package/dist/{modelica-eD-847KF.js → modelica-BB68FYMa.js} +0 -0
- /package/dist/{mscgen-BtzXm_zS.js → mscgen-BkbzgGGI.js} +0 -0
- /package/dist/{mumps-BUx23-bh.js → mumps-Cu-28E9F.js} +0 -0
- /package/dist/{nginx-DasThI7R.js → nginx-ComVAAGN.js} +0 -0
- /package/dist/{node-sql-parser-CHcmQ9Ms.js → node-sql-parser-DNGGJ-Rw.js} +0 -0
- /package/dist/{ntriples-naSVo-bH.js → ntriples-D9cQiZxZ.js} +0 -0
- /package/dist/{octave-B-zftwnK.js → octave-BvtAnPX0.js} +0 -0
- /package/dist/{oz-OUZbVKrv.js → oz-COaVHk2E.js} +0 -0
- /package/dist/{pascal-C-c-17Ts.js → pascal-BFpqVD2x.js} +0 -0
- /package/dist/{path-BGaWgPKg.js → path-Du6n3sOU.js} +0 -0
- /package/dist/{perl-BBIS1zw3.js → perl-DaiORxHP.js} +0 -0
- /package/dist/{pig-B10mtuLC.js → pig-DFzRhmsF.js} +0 -0
- /package/dist/{powershell-SyaENm-A.js → powershell-BG2LQNKN.js} +0 -0
- /package/dist/{properties-BiiMVvre.js → properties-CqJJR5QY.js} +0 -0
- /package/dist/{protobuf-Cj2_antD.js → protobuf-WwDYV1yY.js} +0 -0
- /package/dist/{puppet-ZeJ9I40T.js → puppet-QNY3w_uN.js} +0 -0
- /package/dist/{python-mR64qk6D.js → python-4QrQ3Ugi.js} +0 -0
- /package/dist/{q-C_IMU433.js → q-DhwXuxE2.js} +0 -0
- /package/dist/{r-BKx4ZcIe.js → r-Df-nkR25.js} +0 -0
- /package/dist/{rpm-Dc3zEGCn.js → rpm-Cokue07s.js} +0 -0
- /package/dist/{ruby-eSClttk1.js → ruby-DrYcL3qF.js} +0 -0
- /package/dist/{sas-7VEmwDJB.js → sas-CoiPirA5.js} +0 -0
- /package/dist/{scheme-CpP6oEOD.js → scheme-CwFLjzHv.js} +0 -0
- /package/dist/{shell-CfNoZJks.js → shell-BFV-R24I.js} +0 -0
- /package/dist/{sieve-dzMMB941.js → sieve-CxwXF5T9.js} +0 -0
- /package/dist/{simple-mode-CnNH5BDk.js → simple-mode-DTaJtKPt.js} +0 -0
- /package/dist/{slides-component-oCf7w4PF.js → slides-component-Cjo6LzW9.js} +0 -0
- /package/dist/{smalltalk-BVDNd2a5.js → smalltalk-QivVOCtX.js} +0 -0
- /package/dist/{solr-RZ9uTl59.js → solr-DTkyqJ-Z.js} +0 -0
- /package/dist/{sparql-Br2qWoOi.js → sparql-nKsFk8j7.js} +0 -0
- /package/dist/{spreadsheet-BNNUNXA2.js → spreadsheet-CER0raqY.js} +0 -0
- /package/dist/{sql-B4x8IkwU.js → sql-ByOoEONQ.js} +0 -0
- /package/dist/{stylus-Ca_-WKcu.js → stylus-BLKQAycn.js} +0 -0
- /package/dist/{swift-CiBr8lL9.js → swift-CJoKqiKj.js} +0 -0
- /package/dist/{tcl-DpMdOyXx.js → tcl-YTeYFNUc.js} +0 -0
- /package/dist/{textile-Dc0EKY-e.js → textile-C6rKQqMQ.js} +0 -0
- /package/dist/{tiddlywiki-DI0mF2WJ.js → tiddlywiki-Cr9xyOY1.js} +0 -0
- /package/dist/{tiki-2HU6XLLn.js → tiki-D5JONyfZ.js} +0 -0
- /package/dist/{timer-YZl28NYN.js → timer-D7JVdX9U.js} +0 -0
- /package/dist/{toml-Cz56KCq3.js → toml-DxlPGbRy.js} +0 -0
- /package/dist/{treemap-D-ka1hvx.js → treemap-qFGzn7xk.js} +0 -0
- /package/dist/{troff-QPYfPg8n.js → troff-DFCfH7Ku.js} +0 -0
- /package/dist/{ttcn-Bd8ZFglh.js → ttcn-DAW-ERVP.js} +0 -0
- /package/dist/{ttcn-cfg-BRegYnOz.js → ttcn-cfg-CpJ8b7EN.js} +0 -0
- /package/dist/{turtle-BtxTFbJ2.js → turtle-BneV2f8L.js} +0 -0
- /package/dist/{vb-BPcnlamW.js → vb-D973Vxxh.js} +0 -0
- /package/dist/{vbscript-RpXS5Rn-.js → vbscript-Dckaq3YO.js} +0 -0
- /package/dist/{velocity-toRwXi-i.js → velocity-DKty-GUC.js} +0 -0
- /package/dist/{verilog-B1fdOBGb.js → verilog-aNaK_biA.js} +0 -0
- /package/dist/{vhdl-D-vWFb2W.js → vhdl-CQuehnQy.js} +0 -0
- /package/dist/{webidl-QJDW0ZyQ.js → webidl-Bhg8vaMr.js} +0 -0
- /package/dist/{xquery-DMMT83Vl.js → xquery-D2q16GaM.js} +0 -0
- /package/dist/{yacas-CvzqlDJ_.js → yacas-DHGOHnNa.js} +0 -0
- /package/dist/{z80-DqdgHy0p.js → z80-BPhTmO22.js} +0 -0
|
@@ -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);
|
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
INTERNAL_SQL_ENGINES,
|
|
29
29
|
} from "@/core/datasets/engines";
|
|
30
30
|
import {
|
|
31
|
+
PreviewSQLSchemaList,
|
|
31
32
|
PreviewSQLTable,
|
|
32
33
|
PreviewSQLTableList,
|
|
33
34
|
} from "@/core/datasets/request-registry";
|
|
@@ -80,6 +81,7 @@ const INDENT = {
|
|
|
80
81
|
database: "pl-4",
|
|
81
82
|
schemaEmpty: "pl-8",
|
|
82
83
|
schema: "pl-7",
|
|
84
|
+
schemaLoading: "pl-8",
|
|
83
85
|
tableLoading: "pl-11",
|
|
84
86
|
tableSchemaless: "pl-8",
|
|
85
87
|
tableWithSchema: "pl-12",
|
|
@@ -369,6 +371,49 @@ const SchemaList: React.FC<{
|
|
|
369
371
|
hasSearch,
|
|
370
372
|
searchValue,
|
|
371
373
|
}) => {
|
|
374
|
+
const { addSchemaList } = useDataSourceActions();
|
|
375
|
+
const [schemasRequested, setSchemasRequested] = React.useState(false);
|
|
376
|
+
|
|
377
|
+
// Custom loading state, we need to wait for the data to propagate once requested
|
|
378
|
+
// useAsyncData's loading state may return false before data has propagated
|
|
379
|
+
const [schemasLoading, setSchemasLoading] = React.useState(false);
|
|
380
|
+
|
|
381
|
+
const { isPending, error } = useAsyncData(async () => {
|
|
382
|
+
if (schemas.length === 0 && engineName && !schemasRequested) {
|
|
383
|
+
setSchemasRequested(true);
|
|
384
|
+
setSchemasLoading(true);
|
|
385
|
+
try {
|
|
386
|
+
const previewSchemaList = await PreviewSQLSchemaList.request({
|
|
387
|
+
engine: engineName,
|
|
388
|
+
database: databaseName,
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
addSchemaList({
|
|
392
|
+
schemas: previewSchemaList.schemas ?? [],
|
|
393
|
+
sqlSchemaContext: {
|
|
394
|
+
engine: engineName,
|
|
395
|
+
database: databaseName,
|
|
396
|
+
},
|
|
397
|
+
});
|
|
398
|
+
} finally {
|
|
399
|
+
setSchemasLoading(false);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}, [schemas.length, engineName, databaseName, schemasRequested]);
|
|
403
|
+
|
|
404
|
+
if (isPending || schemasLoading) {
|
|
405
|
+
return (
|
|
406
|
+
<LoadingState
|
|
407
|
+
message="Loading schemas..."
|
|
408
|
+
className={INDENT.schemaLoading}
|
|
409
|
+
/>
|
|
410
|
+
);
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
if (error) {
|
|
414
|
+
return <ErrorState error={error} className={INDENT.schemaLoading} />;
|
|
415
|
+
}
|
|
416
|
+
|
|
372
417
|
if (schemas.length === 0) {
|
|
373
418
|
return (
|
|
374
419
|
<EmptyState
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
|
|
3
3
|
import { EditorView } from "@codemirror/view";
|
|
4
|
-
import { math } from "@streamdown/math";
|
|
5
4
|
import { useAtomValue } from "jotai";
|
|
6
5
|
import { BetweenHorizontalStartIcon } from "lucide-react";
|
|
7
6
|
import { memo, Suspense, useState } from "react";
|
|
@@ -13,6 +12,7 @@ import { useLastFocusedCellId } from "@/core/cells/focus";
|
|
|
13
12
|
import { MarkdownLanguageAdapter } from "@/core/codemirror/language/languages/markdown";
|
|
14
13
|
import { SQLLanguageAdapter } from "@/core/codemirror/language/languages/sql/sql";
|
|
15
14
|
import { autoInstantiateAtom } from "@/core/config/config";
|
|
15
|
+
import { useAsyncData } from "@/hooks/useAsyncData";
|
|
16
16
|
import { LazyAnyLanguageCodeMirror } from "@/plugins/impl/code/LazyAnyLanguageCodeMirror";
|
|
17
17
|
import { useTheme } from "@/theme/useTheme";
|
|
18
18
|
import { copyToClipboard } from "@/utils/copy";
|
|
@@ -166,11 +166,27 @@ const COMPONENTS: Components = {
|
|
|
166
166
|
},
|
|
167
167
|
};
|
|
168
168
|
|
|
169
|
+
// Lazy-load the math plugin to keep katex (~264 KB) out of the critical path.
|
|
170
|
+
// The first render works without math; once loaded, it re-renders with math support.
|
|
171
|
+
let mathPluginCache: StreamdownProps["plugins"] | undefined;
|
|
172
|
+
const useMathPlugin = () => {
|
|
173
|
+
const { data: plugins } = useAsyncData(async () => {
|
|
174
|
+
if (mathPluginCache) {
|
|
175
|
+
return mathPluginCache;
|
|
176
|
+
}
|
|
177
|
+
const mod = await import("@streamdown/math");
|
|
178
|
+
mathPluginCache = { math: mod.math };
|
|
179
|
+
return mathPluginCache;
|
|
180
|
+
}, []);
|
|
181
|
+
return plugins;
|
|
182
|
+
};
|
|
183
|
+
|
|
169
184
|
export const MarkdownRenderer = memo(({ content }: { content: string }) => {
|
|
185
|
+
const plugins = useMathPlugin();
|
|
170
186
|
return (
|
|
171
187
|
<Streamdown
|
|
172
188
|
components={COMPONENTS}
|
|
173
|
-
plugins={
|
|
189
|
+
plugins={plugins}
|
|
174
190
|
className="mo-markdown-renderer"
|
|
175
191
|
>
|
|
176
192
|
{content}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
import { beforeEach, describe, expect, it } from "vitest";
|
|
3
3
|
import { variableName } from "@/__tests__/branded";
|
|
4
|
-
import type { DataTable } from "@/core/kernel/messages";
|
|
4
|
+
import type { DatabaseSchema, DataTable } from "@/core/kernel/messages";
|
|
5
5
|
import type { VariableName } from "@/core/variables/types";
|
|
6
6
|
import {
|
|
7
7
|
type DataSourceConnection,
|
|
@@ -209,6 +209,93 @@ describe("filtering data sources", () => {
|
|
|
209
209
|
});
|
|
210
210
|
});
|
|
211
211
|
|
|
212
|
+
describe("add schema list", () => {
|
|
213
|
+
const connections: DataSourceConnection[] = [
|
|
214
|
+
{
|
|
215
|
+
name: "conn1" as ConnectionName,
|
|
216
|
+
source: "sqlite",
|
|
217
|
+
display_name: "SQLite DB",
|
|
218
|
+
dialect: "sqlite",
|
|
219
|
+
databases: [
|
|
220
|
+
{
|
|
221
|
+
name: "db1",
|
|
222
|
+
schemas: [],
|
|
223
|
+
dialect: "sqlite",
|
|
224
|
+
},
|
|
225
|
+
],
|
|
226
|
+
},
|
|
227
|
+
];
|
|
228
|
+
|
|
229
|
+
// Helper function to add schema list
|
|
230
|
+
const addSchemaList = (
|
|
231
|
+
schemas: DatabaseSchema[],
|
|
232
|
+
engine: string,
|
|
233
|
+
database: string,
|
|
234
|
+
) => {
|
|
235
|
+
return reducer(baseState, {
|
|
236
|
+
type: "addSchemaList",
|
|
237
|
+
payload: {
|
|
238
|
+
schemas,
|
|
239
|
+
sqlSchemaContext: { engine, database },
|
|
240
|
+
},
|
|
241
|
+
});
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
let baseState: DataSourceState;
|
|
245
|
+
|
|
246
|
+
beforeEach(() => {
|
|
247
|
+
baseState = addConnection(connections, baseState);
|
|
248
|
+
expect(baseState.connectionsMap.size).toBe(defaultConnSize + 1);
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
it("adds schema list to a specific database", () => {
|
|
252
|
+
const schemaList: DatabaseSchema[] = [
|
|
253
|
+
{ name: "public", tables: [] },
|
|
254
|
+
{ name: "analytics", tables: [] },
|
|
255
|
+
];
|
|
256
|
+
const newState = addSchemaList(schemaList, "conn1", "db1");
|
|
257
|
+
|
|
258
|
+
const conn1 = newState.connectionsMap.get("conn1" as ConnectionName);
|
|
259
|
+
const db1 = conn1?.databases.find((db) => db.name === "db1");
|
|
260
|
+
expect(db1?.schemas).toEqual(schemaList);
|
|
261
|
+
});
|
|
262
|
+
|
|
263
|
+
it("updates schema list for a database", () => {
|
|
264
|
+
const schemaList: DatabaseSchema[] = [
|
|
265
|
+
{ name: "public", tables: [] },
|
|
266
|
+
{ name: "analytics", tables: [] },
|
|
267
|
+
];
|
|
268
|
+
const newState = addSchemaList(schemaList, "conn1", "db1");
|
|
269
|
+
|
|
270
|
+
const conn1 = newState.connectionsMap.get("conn1" as ConnectionName);
|
|
271
|
+
const db1 = conn1?.databases.find((db) => db.name === "db1");
|
|
272
|
+
expect(db1?.schemas).toEqual(schemaList);
|
|
273
|
+
|
|
274
|
+
// update with new schema list
|
|
275
|
+
const newSchemaList: DatabaseSchema[] = [
|
|
276
|
+
{ name: "public", tables: [] },
|
|
277
|
+
{ name: "sales", tables: [] },
|
|
278
|
+
];
|
|
279
|
+
const updatedState = addSchemaList(newSchemaList, "conn1", "db1");
|
|
280
|
+
|
|
281
|
+
const newConn = updatedState.connectionsMap.get("conn1" as ConnectionName);
|
|
282
|
+
const newDb1 = newConn?.databases.find((db) => db.name === "db1");
|
|
283
|
+
expect(newDb1?.schemas).toEqual(newSchemaList);
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
it("does not add schema list if database does not exist", () => {
|
|
287
|
+
const schemaList: DatabaseSchema[] = [
|
|
288
|
+
{ name: "public", tables: [] },
|
|
289
|
+
{ name: "analytics", tables: [] },
|
|
290
|
+
];
|
|
291
|
+
const newState = addSchemaList(schemaList, "conn1", "non_existent_db");
|
|
292
|
+
|
|
293
|
+
const conn1 = newState.connectionsMap.get("conn1" as ConnectionName);
|
|
294
|
+
const db1 = conn1?.databases.find((db) => db.name === "db1");
|
|
295
|
+
expect(db1?.schemas.length).toBe(0);
|
|
296
|
+
});
|
|
297
|
+
});
|
|
298
|
+
|
|
212
299
|
describe("add table list", () => {
|
|
213
300
|
const connections: DataSourceConnection[] = [
|
|
214
301
|
{
|
|
@@ -5,6 +5,7 @@ import { isSchemaless } from "@/components/datasources/utils";
|
|
|
5
5
|
import { createReducerAndAtoms } from "@/utils/createReducer";
|
|
6
6
|
import { Logger } from "@/utils/Logger";
|
|
7
7
|
import type {
|
|
8
|
+
DatabaseSchema,
|
|
8
9
|
DataSourceConnection as DataSourceConnectionType,
|
|
9
10
|
DataTable,
|
|
10
11
|
} from "../kernel/messages";
|
|
@@ -43,6 +44,11 @@ export interface DataSourceState {
|
|
|
43
44
|
connectionsMap: ConnectionsMap;
|
|
44
45
|
}
|
|
45
46
|
|
|
47
|
+
export interface SQLSchemaContext {
|
|
48
|
+
engine: string;
|
|
49
|
+
database: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
46
52
|
export interface SQLTableContext {
|
|
47
53
|
engine: string;
|
|
48
54
|
database: string;
|
|
@@ -134,6 +140,44 @@ const {
|
|
|
134
140
|
};
|
|
135
141
|
},
|
|
136
142
|
|
|
143
|
+
// Add schema list to a specific database in a connection
|
|
144
|
+
addSchemaList: (
|
|
145
|
+
state: DataSourceState,
|
|
146
|
+
opts: {
|
|
147
|
+
schemas: DatabaseSchema[];
|
|
148
|
+
sqlSchemaContext: SQLSchemaContext;
|
|
149
|
+
},
|
|
150
|
+
): DataSourceState => {
|
|
151
|
+
const { schemas, sqlSchemaContext } = opts;
|
|
152
|
+
const { connectionsMap, latestEngineSelected } = state;
|
|
153
|
+
const connectionName = sqlSchemaContext.engine as ConnectionName;
|
|
154
|
+
const conn = connectionsMap.get(connectionName);
|
|
155
|
+
|
|
156
|
+
if (!conn) {
|
|
157
|
+
return state;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
const newMap = new Map(connectionsMap);
|
|
161
|
+
const newConn: DataSourceConnection = {
|
|
162
|
+
...conn,
|
|
163
|
+
databases: conn.databases.map((db) => {
|
|
164
|
+
if (db.name !== sqlSchemaContext.database) {
|
|
165
|
+
return db;
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
...db,
|
|
169
|
+
schemas: schemas,
|
|
170
|
+
};
|
|
171
|
+
}),
|
|
172
|
+
};
|
|
173
|
+
newMap.set(connectionName, newConn);
|
|
174
|
+
|
|
175
|
+
return {
|
|
176
|
+
latestEngineSelected: latestEngineSelected,
|
|
177
|
+
connectionsMap: newMap,
|
|
178
|
+
};
|
|
179
|
+
},
|
|
180
|
+
|
|
137
181
|
// Add table list to a specific schema in a connection
|
|
138
182
|
addTableList: (
|
|
139
183
|
state: DataSourceState,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/* Copyright 2026 Marimo. All rights reserved. */
|
|
2
2
|
import type {
|
|
3
|
+
SQLSchemaListPreview,
|
|
3
4
|
SQLTableListPreview,
|
|
4
5
|
SQLTablePreview,
|
|
5
6
|
ValidateSQLResult,
|
|
@@ -8,6 +9,7 @@ import { CachingRequestRegistry } from "../network/CachingRequestRegistry";
|
|
|
8
9
|
import { DeferredRequestRegistry } from "../network/DeferredRequestRegistry";
|
|
9
10
|
import { getRequestClient } from "../network/requests";
|
|
10
11
|
import type {
|
|
12
|
+
ListSQLSchemasRequest,
|
|
11
13
|
ListSQLTablesRequest,
|
|
12
14
|
PreviewSQLTableRequest,
|
|
13
15
|
ValidateSQLRequest,
|
|
@@ -28,6 +30,17 @@ export const PreviewSQLTable = new DeferredRequestRegistry<
|
|
|
28
30
|
});
|
|
29
31
|
});
|
|
30
32
|
|
|
33
|
+
export const PreviewSQLSchemaList = new DeferredRequestRegistry<
|
|
34
|
+
Omit<ListSQLSchemasRequest, "requestId">,
|
|
35
|
+
SQLSchemaListPreview
|
|
36
|
+
>("sql-schema-list-preview", async (requestId, req) => {
|
|
37
|
+
const client = getRequestClient();
|
|
38
|
+
await client.previewSQLSchemaList({
|
|
39
|
+
requestId: requestId,
|
|
40
|
+
...req,
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
|
|
31
44
|
export const PreviewSQLTableList = new DeferredRequestRegistry<
|
|
32
45
|
Omit<ListSQLTablesRequest, "requestId">,
|
|
33
46
|
SQLTableListPreview
|
|
@@ -169,6 +169,7 @@ export class IslandsPyodideBridge implements RunRequests, EditRequests {
|
|
|
169
169
|
previewDatasetColumn = throwNotImplemented;
|
|
170
170
|
previewSQLTable = throwNotImplemented;
|
|
171
171
|
previewSQLTableList = throwNotImplemented;
|
|
172
|
+
previewSQLSchemaList = throwNotImplemented;
|
|
172
173
|
previewDataSourceConnection = throwNotImplemented;
|
|
173
174
|
validateSQL = throwNotImplemented;
|
|
174
175
|
openFile = throwNotImplemented;
|
package/src/core/islands/main.ts
CHANGED
|
@@ -121,6 +121,7 @@ export async function initialize() {
|
|
|
121
121
|
case "data-column-preview":
|
|
122
122
|
case "sql-table-preview":
|
|
123
123
|
case "sql-table-list-preview":
|
|
124
|
+
case "sql-schema-list-preview":
|
|
124
125
|
case "datasets":
|
|
125
126
|
case "data-source-connections":
|
|
126
127
|
case "validate-sql-result":
|
|
@@ -41,6 +41,8 @@ export type DataColumnPreview = NotificationMessageData<"data-column-preview">;
|
|
|
41
41
|
export type SQLTablePreview = NotificationMessageData<"sql-table-preview">;
|
|
42
42
|
export type SQLTableListPreview =
|
|
43
43
|
NotificationMessageData<"sql-table-list-preview">;
|
|
44
|
+
export type SQLSchemaListPreview =
|
|
45
|
+
NotificationMessageData<"sql-schema-list-preview">;
|
|
44
46
|
export type ValidateSQLResult = NotificationMessageData<"validate-sql-result">;
|
|
45
47
|
export type SecretKeysResult = NotificationMessageData<"secret-keys-result">;
|
|
46
48
|
export type StartupLogs = NotificationMessageData<"startup-logs">;
|
|
@@ -112,6 +112,7 @@ const ACTIONS: Record<keyof AllRequests, Action> = {
|
|
|
112
112
|
previewDatasetColumn: "waitForConnectionOpen",
|
|
113
113
|
previewSQLTable: "waitForConnectionOpen",
|
|
114
114
|
previewSQLTableList: "waitForConnectionOpen",
|
|
115
|
+
previewSQLSchemaList: "waitForConnectionOpen",
|
|
115
116
|
previewDataSourceConnection: "waitForConnectionOpen",
|
|
116
117
|
validateSQL: "waitForConnectionOpen",
|
|
117
118
|
listStorageEntries: "waitForConnectionOpen",
|
|
@@ -244,6 +244,14 @@ export function createNetworkRequests(): EditRequests & RunRequests {
|
|
|
244
244
|
})
|
|
245
245
|
.then(handleResponseReturnNull);
|
|
246
246
|
},
|
|
247
|
+
previewSQLSchemaList: (request) => {
|
|
248
|
+
return getClient()
|
|
249
|
+
.POST("/api/datasources/preview_sql_schema_list", {
|
|
250
|
+
body: request,
|
|
251
|
+
params: getParams(),
|
|
252
|
+
})
|
|
253
|
+
.then(handleResponseReturnNull);
|
|
254
|
+
},
|
|
247
255
|
previewDataSourceConnection: (request) => {
|
|
248
256
|
return getClient()
|
|
249
257
|
.POST("/api/datasources/preview_datasource_connection", {
|
|
@@ -57,6 +57,7 @@ export function createStaticRequests(): EditRequests & RunRequests {
|
|
|
57
57
|
previewDatasetColumn: throwNotInEditMode,
|
|
58
58
|
previewSQLTable: throwNotInEditMode,
|
|
59
59
|
previewSQLTableList: throwNotInEditMode,
|
|
60
|
+
previewSQLSchemaList: throwNotInEditMode,
|
|
60
61
|
previewDataSourceConnection: throwNotInEditMode,
|
|
61
62
|
validateSQL: throwNotInEditMode,
|
|
62
63
|
openFile: throwNotInEditMode,
|
|
@@ -42,6 +42,7 @@ export function createErrorToastingRequests(
|
|
|
42
42
|
previewDatasetColumn: "Failed to fetch data sources",
|
|
43
43
|
previewSQLTable: "Failed to fetch SQL table",
|
|
44
44
|
previewSQLTableList: "Failed to fetch SQL table list",
|
|
45
|
+
previewSQLSchemaList: "Failed to fetch SQL schema list",
|
|
45
46
|
previewDataSourceConnection: "Failed to preview data source connection",
|
|
46
47
|
validateSQL: "Failed to validate SQL",
|
|
47
48
|
openFile: "Failed to open file",
|
|
@@ -59,6 +59,7 @@ export type PreviewDatasetColumnRequest =
|
|
|
59
59
|
schemas["PreviewDatasetColumnRequest"];
|
|
60
60
|
export type PreviewSQLTableRequest = schemas["PreviewSQLTableRequest"];
|
|
61
61
|
export type ListSQLTablesRequest = schemas["ListSQLTablesRequest"];
|
|
62
|
+
export type ListSQLSchemasRequest = schemas["ListSQLSchemasRequest"];
|
|
62
63
|
export type ListDataSourceConnectionRequest =
|
|
63
64
|
schemas["ListDataSourceConnectionRequest"];
|
|
64
65
|
export type ValidateSQLRequest = schemas["ValidateSQLRequest"];
|
|
@@ -151,6 +152,7 @@ export interface EditRequests {
|
|
|
151
152
|
previewDatasetColumn: (request: PreviewDatasetColumnRequest) => Promise<null>;
|
|
152
153
|
previewSQLTable: (request: PreviewSQLTableRequest) => Promise<null>;
|
|
153
154
|
previewSQLTableList: (request: ListSQLTablesRequest) => Promise<null>;
|
|
155
|
+
previewSQLSchemaList: (request: ListSQLSchemasRequest) => Promise<null>;
|
|
154
156
|
previewDataSourceConnection: (
|
|
155
157
|
request: ListDataSourceConnectionRequest,
|
|
156
158
|
) => Promise<null>;
|