@malloy-publisher/sdk 0.0.138 → 0.0.140
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/README.md +122 -1
- package/dist/ServerProvider-Bzid56gJ.cjs.js +1 -0
- package/dist/{ServerProvider-B8JWg8Mo.es.js → ServerProvider-D-y63tG0.es.js} +68 -68
- package/dist/client/api.d.ts +18 -0
- package/dist/client/index.cjs.js +1 -1
- package/dist/client/index.es.js +1 -1
- package/dist/components/Notebook/Notebook.d.ts +4 -1
- package/dist/components/filter/DimensionFilter.d.ts +43 -0
- package/dist/components/filter/index.d.ts +4 -0
- package/dist/components/filter/utils.d.ts +75 -0
- package/dist/components/index.d.ts +7 -6
- package/dist/components/styles.d.ts +3 -3
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/useDimensionFilters.d.ts +84 -0
- package/dist/hooks/useDimensionFiltersFromSpec.d.ts +52 -0
- package/dist/hooks/useDimensionFiltersQuery.d.ts +79 -0
- package/dist/hooks/useDimensionalFilterRangeData.d.ts +106 -0
- package/dist/index.cjs.js +141 -112
- package/dist/index.d.ts +3 -2
- package/dist/index.es.js +47795 -39755
- package/dist/sdk.css +1 -1
- package/package.json +23 -18
- package/src/components/Home/Home.tsx +15 -11
- package/src/components/Notebook/Notebook.tsx +315 -31
- package/src/components/RenderedResult/RenderedResult.tsx +22 -3
- package/src/components/filter/DimensionFilter.tsx +738 -0
- package/src/components/filter/index.ts +20 -0
- package/src/components/filter/utils.ts +354 -0
- package/src/components/highlighter.ts +14 -6
- package/src/components/index.ts +7 -6
- package/src/hooks/index.ts +31 -0
- package/src/hooks/useDimensionFilters.ts +322 -0
- package/src/hooks/useDimensionFiltersFromSpec.ts +117 -0
- package/src/hooks/useDimensionFiltersQuery.ts +300 -0
- package/src/hooks/useDimensionalFilterRangeData.ts +758 -0
- package/src/index.ts +3 -2
- package/dist/ServerProvider-DC74Txr5.cjs.js +0 -1
- package/dist/abap-BmBUA35e.es.js +0 -6
- package/dist/abap-Dwt2rH6y.cjs.js +0 -1
- package/dist/actionscript-3-mj8Uhnsc.cjs.js +0 -1
- package/dist/actionscript-3-zFUbzQa9.es.js +0 -6
- package/dist/ada-CBvPkFpZ.es.js +0 -6
- package/dist/ada-DZM58Vqs.cjs.js +0 -1
- package/dist/andromeeda-BXc5FOIb.cjs.js +0 -1
- package/dist/andromeeda-uXNdzNpk.es.js +0 -4
- package/dist/angular-html-B60m4jt-.cjs.js +0 -1
- package/dist/angular-html-D3aW1y6T.es.js +0 -32
- package/dist/angular-ts-Jud40GrY.es.js +0 -21
- package/dist/angular-ts-SIlYrqkG.cjs.js +0 -1
- package/dist/apache-CVNlsSDc.es.js +0 -6
- package/dist/apache-D7v5fxtZ.cjs.js +0 -1
- package/dist/apex-4hrAnw0a.cjs.js +0 -1
- package/dist/apex-DFk3KRB1.es.js +0 -6
- package/dist/apl-CKSaOFbt.cjs.js +0 -1
- package/dist/apl-pE3PRTDr.es.js +0 -16
- package/dist/applescript-CYMR_y0g.es.js +0 -6
- package/dist/applescript-Cnd3Dxju.cjs.js +0 -1
- package/dist/ara-4QmU5e04.es.js +0 -6
- package/dist/ara-BQ2aGbFQ.cjs.js +0 -1
- package/dist/asciidoc-C6nYvw8K.cjs.js +0 -1
- package/dist/asciidoc-v_1bjgUg.es.js +0 -6
- package/dist/asm-CQnBVCj-.cjs.js +0 -1
- package/dist/asm-RC0Yh-NZ.es.js +0 -6
- package/dist/astro-Be6fybGX.es.js +0 -16
- package/dist/astro-KhYkz6Xu.cjs.js +0 -1
- package/dist/aurora-x-BwoVEUWZ.es.js +0 -4
- package/dist/aurora-x-C5IpmIOG.cjs.js +0 -1
- package/dist/awk-DUx4h__E.cjs.js +0 -1
- package/dist/awk-gPH8MVMW.es.js +0 -6
- package/dist/ayu-dark-Cv7nTiif.cjs.js +0 -1
- package/dist/ayu-dark-CxPZkpb2.es.js +0 -4
- package/dist/ballerina-CXlzbmzl.cjs.js +0 -1
- package/dist/ballerina-kvLnRU_e.es.js +0 -6
- package/dist/bat-BHYy44sT.es.js +0 -6
- package/dist/bat-DlMT9sut.cjs.js +0 -1
- package/dist/beancount-CyyiuUzM.cjs.js +0 -1
- package/dist/beancount-D-MADTs_.es.js +0 -6
- package/dist/berry-B0EjuzrL.cjs.js +0 -1
- package/dist/berry-Ci9U0o4h.es.js +0 -6
- package/dist/bibtex-CX618D15.es.js +0 -6
- package/dist/bibtex-CfoG9xRq.cjs.js +0 -1
- package/dist/bicep-D6PH_9IY.cjs.js +0 -1
- package/dist/bicep-iuYiPopT.es.js +0 -6
- package/dist/blade-C0tMuk8f.cjs.js +0 -1
- package/dist/blade-DmXp5Zcz.es.js +0 -18
- package/dist/bsl-CfHcite8.cjs.js +0 -1
- package/dist/bsl-NPX_d-bb.es.js +0 -8
- package/dist/c-C4sXGJZM.cjs.js +0 -1
- package/dist/c-DASdrs7p.es.js +0 -6
- package/dist/cadence-BDALQi26.es.js +0 -6
- package/dist/cadence-Dq2CYzXG.cjs.js +0 -1
- package/dist/cairo-17kO8-kb.es.js +0 -8
- package/dist/cairo-CcKpJkyf.cjs.js +0 -1
- package/dist/catppuccin-frappe-BrTOiad2.es.js +0 -4
- package/dist/catppuccin-frappe-DXAedND3.cjs.js +0 -1
- package/dist/catppuccin-latte-D-dc_R4m.es.js +0 -4
- package/dist/catppuccin-latte-mwGw3-Ej.cjs.js +0 -1
- package/dist/catppuccin-macchiato-DN4jOp0G.es.js +0 -4
- package/dist/catppuccin-macchiato-cQCk9ADg.cjs.js +0 -1
- package/dist/catppuccin-mocha-B8yCE3-3.es.js +0 -4
- package/dist/catppuccin-mocha-ClSzDZSl.cjs.js +0 -1
- package/dist/clarity-CNgV2Ths.es.js +0 -6
- package/dist/clarity-ytMkUD5Q.cjs.js +0 -1
- package/dist/clojure-B_Wv414H.cjs.js +0 -1
- package/dist/clojure-CsKKFGwv.es.js +0 -6
- package/dist/cmake-Dr-A3iJx.es.js +0 -6
- package/dist/cmake-TBUaQXYY.cjs.js +0 -1
- package/dist/cobol-BzcJm6ie.es.js +0 -10
- package/dist/cobol-DXFNH4EH.cjs.js +0 -1
- package/dist/codeowners-Bt9yU6NX.es.js +0 -6
- package/dist/codeowners-QhPK6lIJ.cjs.js +0 -1
- package/dist/codeql-B7Q9tkDJ.cjs.js +0 -1
- package/dist/codeql-DBNTqJi1.es.js +0 -6
- package/dist/coffee-GRRSkgX1.cjs.js +0 -1
- package/dist/coffee-q2iaxUnQ.es.js +0 -8
- package/dist/common-lisp-Ced3ctK5.cjs.js +0 -1
- package/dist/common-lisp-r7ZEOG7T.es.js +0 -6
- package/dist/coq-BTRB4iqi.cjs.js +0 -1
- package/dist/coq-CB6Pv_W9.es.js +0 -6
- package/dist/cpp-CPOvHZqs.cjs.js +0 -1
- package/dist/cpp-CPQtoCcU.es.js +0 -18
- package/dist/crystal-BY_Cg265.es.js +0 -18
- package/dist/crystal-C6AG-iew.cjs.js +0 -1
- package/dist/csharp-CYWRhZ2R.es.js +0 -6
- package/dist/csharp-TKds-MhG.cjs.js +0 -1
- package/dist/css-B0kbn78J.cjs.js +0 -1
- package/dist/css-D1aVdRIU.es.js +0 -6
- package/dist/csv-BVJjiaC3.cjs.js +0 -1
- package/dist/csv-DvCncUGQ.es.js +0 -6
- package/dist/cue-BXMrmvay.es.js +0 -6
- package/dist/cue-Cz4J-rnd.cjs.js +0 -1
- package/dist/cypher-DTm5zNR1.es.js +0 -6
- package/dist/cypher-DuKTiyez.cjs.js +0 -1
- package/dist/d-BW9Wd7aK.cjs.js +0 -1
- package/dist/d-D6ZXmn3l.es.js +0 -6
- package/dist/dark-plus-Cd5emcYO.cjs.js +0 -1
- package/dist/dark-plus-pUHDTVV0.es.js +0 -4
- package/dist/dart-CWs-er6b.cjs.js +0 -1
- package/dist/dart-Dz59Is3F.es.js +0 -6
- package/dist/dax-CDxFL2Kb.cjs.js +0 -1
- package/dist/dax-DTVGzydb.es.js +0 -6
- package/dist/desktop-CFgo0jo7.cjs.js +0 -1
- package/dist/desktop-Db9vb-dl.es.js +0 -6
- package/dist/diff-BsEkKwI8.cjs.js +0 -1
- package/dist/diff-XmNrvgM1.es.js +0 -6
- package/dist/docker-DWH2onkn.es.js +0 -6
- package/dist/docker-hwiw4W8I.cjs.js +0 -1
- package/dist/dotenv-4337wvzu.es.js +0 -6
- package/dist/dotenv-CJ5o3G1C.cjs.js +0 -1
- package/dist/dracula-BNgwAJ-d.cjs.js +0 -1
- package/dist/dracula-BtZx2Kac.es.js +0 -4
- package/dist/dracula-soft-BHZ7sHFu.cjs.js +0 -1
- package/dist/dracula-soft-BKa-aqBv.es.js +0 -4
- package/dist/dream-maker-CvvfrJSx.es.js +0 -6
- package/dist/dream-maker-DBharE9Q.cjs.js +0 -1
- package/dist/edge-DI6_BHKG.es.js +0 -12
- package/dist/edge-i77KJtJz.cjs.js +0 -1
- package/dist/elixir-D00NoPSM.cjs.js +0 -1
- package/dist/elixir-ic9y5jcd.es.js +0 -8
- package/dist/elm-Bhj5Vf-e.cjs.js +0 -1
- package/dist/elm-DxnUqUaW.es.js +0 -8
- package/dist/emacs-lisp-BAefI874.es.js +0 -6
- package/dist/emacs-lisp-CDDyFsvQ.cjs.js +0 -1
- package/dist/erb-Cbj2YePa.es.js +0 -10
- package/dist/erb-Dybaw01v.cjs.js +0 -1
- package/dist/erlang-3VgdrQXV.cjs.js +0 -1
- package/dist/erlang-CmIiwF3I.es.js +0 -6
- package/dist/everforest-dark-DMCBqXCK.es.js +0 -4
- package/dist/everforest-dark-_sBMomR1.cjs.js +0 -1
- package/dist/everforest-light-BbXl82Em.es.js +0 -4
- package/dist/everforest-light-H0xoYxl0.cjs.js +0 -1
- package/dist/fennel-BvcDRFAV.cjs.js +0 -1
- package/dist/fennel-DNqkz9pE.es.js +0 -6
- package/dist/fish-CnamI0Ar.cjs.js +0 -1
- package/dist/fish-DIm72t2T.es.js +0 -6
- package/dist/fluent-BapTxJsC.es.js +0 -6
- package/dist/fluent-DFpT66K8.cjs.js +0 -1
- package/dist/fortran-fixed-form-DECY15PY.es.js +0 -8
- package/dist/fortran-fixed-form-u_RcUPMu.cjs.js +0 -1
- package/dist/fortran-free-form-CNDsBFUj.es.js +0 -6
- package/dist/fortran-free-form-IaGrWIda.cjs.js +0 -1
- package/dist/fsharp-B-aK2rr3.cjs.js +0 -1
- package/dist/fsharp-D2ZqviWP.es.js +0 -8
- package/dist/gdresource-BBAqNWe4.cjs.js +0 -1
- package/dist/gdresource-RIsK8sku.es.js +0 -10
- package/dist/gdscript-5N_43TPQ.cjs.js +0 -1
- package/dist/gdscript-D7aheHm-.es.js +0 -6
- package/dist/gdshader-BGJEsM2Z.es.js +0 -6
- package/dist/gdshader-Bl85Hrm5.cjs.js +0 -1
- package/dist/genie-C9gPjc6J.es.js +0 -6
- package/dist/genie-DGsxMAbQ.cjs.js +0 -1
- package/dist/gherkin-CVV6nEUH.cjs.js +0 -1
- package/dist/gherkin-bka1Exbx.es.js +0 -6
- package/dist/git-commit-BRJ1E4Bx.es.js +0 -8
- package/dist/git-commit-CwfgI4fD.cjs.js +0 -1
- package/dist/git-rebase-C3X7aMpn.es.js +0 -8
- package/dist/git-rebase-DUvbIQDw.cjs.js +0 -1
- package/dist/github-dark-BKL9xNgN.cjs.js +0 -1
- package/dist/github-dark-DenFmJkN.es.js +0 -4
- package/dist/github-dark-default-BJPUVz4H.es.js +0 -4
- package/dist/github-dark-default-Dsv5MuSi.cjs.js +0 -1
- package/dist/github-dark-dimmed-CtB9hz8U.cjs.js +0 -1
- package/dist/github-dark-dimmed-DUshB20C.es.js +0 -4
- package/dist/github-dark-high-contrast-BqZVM-jF.cjs.js +0 -1
- package/dist/github-dark-high-contrast-D3aGCnF8.es.js +0 -4
- package/dist/github-light-BFTOhCbz.cjs.js +0 -1
- package/dist/github-light-JYsPkUQd.es.js +0 -4
- package/dist/github-light-default-BZoWH9dH.cjs.js +0 -1
- package/dist/github-light-default-D99KPAby.es.js +0 -4
- package/dist/github-light-high-contrast-BbmZE-Mp.es.js +0 -4
- package/dist/github-light-high-contrast-Ks3kPGJU.cjs.js +0 -1
- package/dist/gleam-B4k9YFGD.es.js +0 -6
- package/dist/gleam-nR4mjrhK.cjs.js +0 -1
- package/dist/glimmer-js-C4MQf3Na.es.js +0 -14
- package/dist/glimmer-js-CNfyUqSb.cjs.js +0 -1
- package/dist/glimmer-ts-Bp7_dELi.cjs.js +0 -1
- package/dist/glimmer-ts-CoYpqZrZ.es.js +0 -14
- package/dist/glsl-BYTq1Tfl.es.js +0 -8
- package/dist/glsl-CIu1PL9X.cjs.js +0 -1
- package/dist/gnuplot-CurtDYoJ.cjs.js +0 -1
- package/dist/gnuplot-DnWoRZt-.es.js +0 -6
- package/dist/go-BErP6iv1.es.js +0 -6
- package/dist/go-CM9_GlwL.cjs.js +0 -1
- package/dist/graphql-BnnSMMC2.cjs.js +0 -1
- package/dist/graphql-g3nHRc0M.es.js +0 -14
- package/dist/groovy-BaVp9Il5.cjs.js +0 -1
- package/dist/groovy-IWs5-NIO.es.js +0 -6
- package/dist/hack-BVxH3fsq.cjs.js +0 -1
- package/dist/hack-wPAsyujS.es.js +0 -10
- package/dist/haml-4TJ757dz.es.js +0 -10
- package/dist/haml-vutdexHh.cjs.js +0 -1
- package/dist/handlebars-7GDLw__F.es.js +0 -14
- package/dist/handlebars-COmZnO8P.cjs.js +0 -1
- package/dist/haskell-CtlGos0K.es.js +0 -6
- package/dist/haskell-suhyCHEm.cjs.js +0 -1
- package/dist/haxe-BIQU1qHi.cjs.js +0 -1
- package/dist/haxe-CZZ33vZw.es.js +0 -6
- package/dist/hcl-6hOg9WP4.es.js +0 -6
- package/dist/hcl-CbQ1yCnz.cjs.js +0 -1
- package/dist/hjson-CgwED-oz.es.js +0 -6
- package/dist/hjson-Ddklb4QM.cjs.js +0 -1
- package/dist/hlsl-3-lv4gi7.es.js +0 -6
- package/dist/hlsl-B4NkiBfC.cjs.js +0 -1
- package/dist/houston-BDYrDoDW.es.js +0 -4
- package/dist/houston-T57H3gQZ.cjs.js +0 -1
- package/dist/html-Dc-Bg17s.cjs.js +0 -1
- package/dist/html-PSPajZka.es.js +0 -10
- package/dist/html-derivative-Brb3b4aI.es.js +0 -8
- package/dist/html-derivative-CY9mJeT0.cjs.js +0 -1
- package/dist/http-BrKsebcH.cjs.js +0 -1
- package/dist/http-CWBcr-Ch.es.js +0 -14
- package/dist/hxml-DLduiIv3.es.js +0 -8
- package/dist/hxml-DbGPHkY4.cjs.js +0 -1
- package/dist/hy-C2xHhR6I.es.js +0 -6
- package/dist/hy-DpyTdO3T.cjs.js +0 -1
- package/dist/imba-BEYqRZzB.es.js +0 -8
- package/dist/imba-CAIkF-GD.cjs.js +0 -1
- package/dist/ini-BUcvsX-U.es.js +0 -6
- package/dist/ini-CymULaw_.cjs.js +0 -1
- package/dist/java-B7odJ7Ap.es.js +0 -6
- package/dist/java-Bn1Lvoni.cjs.js +0 -1
- package/dist/javascript-Bnnicc83.cjs.js +0 -1
- package/dist/javascript-fa8UlHZE.es.js +0 -6
- package/dist/jinja-BoeZymy4.cjs.js +0 -1
- package/dist/jinja-DKLHYjK0.es.js +0 -11
- package/dist/jison-C0DlFEjB.cjs.js +0 -1
- package/dist/jison-CzPfUIvM.es.js +0 -8
- package/dist/json-71t8ZF9g.es.js +0 -6
- package/dist/json-y-J1j5EW.cjs.js +0 -1
- package/dist/json5-CzvlWgZ7.cjs.js +0 -1
- package/dist/json5-Z7F6rA6a.es.js +0 -6
- package/dist/jsonc-BnhWfmQw.cjs.js +0 -1
- package/dist/jsonc-Dphhs4m2.es.js +0 -6
- package/dist/jsonl-BbGkWPJz.cjs.js +0 -1
- package/dist/jsonl-D9jj92Gg.es.js +0 -6
- package/dist/jsonnet-Bn--UDZ1.cjs.js +0 -1
- package/dist/jsonnet-DEQ7IUoJ.es.js +0 -6
- package/dist/jssm-4CSVp8lc.cjs.js +0 -1
- package/dist/jssm-j74e88UX.es.js +0 -6
- package/dist/jsx-Bkesy5tT.es.js +0 -6
- package/dist/jsx-D8YwVp-7.cjs.js +0 -1
- package/dist/julia-B_r6juN7.es.js +0 -16
- package/dist/julia-DLxGoAlk.cjs.js +0 -1
- package/dist/kanagawa-dragon-BJZF7xDr.cjs.js +0 -1
- package/dist/kanagawa-dragon-CiKur4Hl.es.js +0 -4
- package/dist/kanagawa-lotus-BKu-smKu.es.js +0 -4
- package/dist/kanagawa-lotus-BhgzmRV4.cjs.js +0 -1
- package/dist/kanagawa-wave-BgJip59C.cjs.js +0 -1
- package/dist/kanagawa-wave-CQwozSzG.es.js +0 -4
- package/dist/kotlin-DCgZY7Ii.es.js +0 -6
- package/dist/kotlin-DDI6myF6.cjs.js +0 -1
- package/dist/kusto-Cw029H-v.es.js +0 -6
- package/dist/kusto-OZxALJZT.cjs.js +0 -1
- package/dist/laserwave--izBLY1I.cjs.js +0 -1
- package/dist/laserwave-6a00oqik.es.js +0 -4
- package/dist/latex-CXOK56Uv.cjs.js +0 -1
- package/dist/latex-GxBxlqbc.es.js +0 -8
- package/dist/lean-CYSet4vs.es.js +0 -6
- package/dist/lean-D1iY-35j.cjs.js +0 -1
- package/dist/less-DIaY7vQJ.cjs.js +0 -1
- package/dist/less-DQA4v-Nm.es.js +0 -6
- package/dist/light-plus-B5D0le0o.cjs.js +0 -1
- package/dist/light-plus-CZuVqSLX.es.js +0 -4
- package/dist/liquid-BYouVITI.cjs.js +0 -1
- package/dist/liquid-BxBkR-z5.es.js +0 -14
- package/dist/log-BIXUeBaj.cjs.js +0 -1
- package/dist/log-D2eRfqDn.es.js +0 -6
- package/dist/logo-B2d3b27P.cjs.js +0 -1
- package/dist/logo-QEAtGWZ9.es.js +0 -6
- package/dist/lua-B2_GGnC5.cjs.js +0 -1
- package/dist/lua-DeXVjwzF.es.js +0 -8
- package/dist/luau-BjYGiqID.es.js +0 -6
- package/dist/luau-CvqAeq4F.cjs.js +0 -1
- package/dist/make-BjuHP00g.es.js +0 -6
- package/dist/make-Oob5Z9Pk.cjs.js +0 -1
- package/dist/markdown-B6guhLWd.es.js +0 -6
- package/dist/markdown-BGBuj4LZ.cjs.js +0 -1
- package/dist/marko-CS7eEGs3.cjs.js +0 -1
- package/dist/marko-DwPYPpB3.es.js +0 -14
- package/dist/material-theme-D6KBX41T.es.js +0 -4
- package/dist/material-theme-Dj0-OyRN.cjs.js +0 -1
- package/dist/material-theme-darker-CkRroheE.es.js +0 -4
- package/dist/material-theme-darker-Dvfs29ir.cjs.js +0 -1
- package/dist/material-theme-lighter-BUBw43Yz.es.js +0 -4
- package/dist/material-theme-lighter-EU3ZGl_r.cjs.js +0 -1
- package/dist/material-theme-ocean-ClGX14Ja.es.js +0 -4
- package/dist/material-theme-ocean-px_3Pwqa.cjs.js +0 -1
- package/dist/material-theme-palenight-38jxvsGX.cjs.js +0 -1
- package/dist/material-theme-palenight-C1RVm8K1.es.js +0 -4
- package/dist/matlab-BpQlIJiw.es.js +0 -6
- package/dist/matlab-CbN2rF6P.cjs.js +0 -1
- package/dist/mdc-Bkl-bu_Z.cjs.js +0 -1
- package/dist/mdc-X4YjkufV.es.js +0 -12
- package/dist/mdx-Cl31h8mi.cjs.js +0 -1
- package/dist/mdx-DIoECIFU.es.js +0 -6
- package/dist/mermaid-BZ7WHNIe.es.js +0 -6
- package/dist/mermaid-CSogK_LM.cjs.js +0 -1
- package/dist/min-dark-C7ak0t6c.es.js +0 -4
- package/dist/min-dark-tt5o_I5e.cjs.js +0 -1
- package/dist/min-light-CKFxVcPp.es.js +0 -4
- package/dist/min-light-tmTHl_CQ.cjs.js +0 -1
- package/dist/mipsasm-BseoYJQp.cjs.js +0 -1
- package/dist/mipsasm-DusDYkFc.es.js +0 -6
- package/dist/mojo-CY9jaezJ.es.js +0 -6
- package/dist/mojo-D8QAG3Ze.cjs.js +0 -1
- package/dist/monokai-C1KBYcO0.es.js +0 -4
- package/dist/monokai-DMIxv6MM.cjs.js +0 -1
- package/dist/move-ChphFumd.es.js +0 -6
- package/dist/move-DaBrcjat.cjs.js +0 -1
- package/dist/narrat-Dz4d7OmN.es.js +0 -6
- package/dist/narrat-oOfAO4q8.cjs.js +0 -1
- package/dist/nextflow-BxJSKvPb.cjs.js +0 -1
- package/dist/nextflow-DW0Yq9a2.es.js +0 -6
- package/dist/nginx-ChI-VqNT.es.js +0 -8
- package/dist/nginx-LuyFICzP.cjs.js +0 -1
- package/dist/night-owl-BN78kThQ.cjs.js +0 -1
- package/dist/night-owl-Bm2rzalh.es.js +0 -4
- package/dist/nim-BiJA-5u7.es.js +0 -20
- package/dist/nim-DkC83hsN.cjs.js +0 -1
- package/dist/nix-Cg5uV_xg.es.js +0 -6
- package/dist/nix-DNME0Ea7.cjs.js +0 -1
- package/dist/nord-CC5OiUXg.es.js +0 -4
- package/dist/nord-Ca5AGUWc.cjs.js +0 -1
- package/dist/nushell-BfRnzRWn.es.js +0 -6
- package/dist/nushell-DI9Z3l3M.cjs.js +0 -1
- package/dist/objective-c-BGg9R27G.es.js +0 -6
- package/dist/objective-c-DVx8Rcni.cjs.js +0 -1
- package/dist/objective-cpp-CJ3y3V_5.es.js +0 -6
- package/dist/objective-cpp-s6XI7Jvk.cjs.js +0 -1
- package/dist/ocaml-BZLsfx_o.es.js +0 -6
- package/dist/ocaml-kUzDDUf2.cjs.js +0 -1
- package/dist/one-dark-pro-D7-kP8fv.es.js +0 -4
- package/dist/one-dark-pro-JOzzHStv.cjs.js +0 -1
- package/dist/one-light-020-h_lv.cjs.js +0 -1
- package/dist/one-light-D9sNaUtq.es.js +0 -4
- package/dist/pascal-D509_I72.cjs.js +0 -1
- package/dist/pascal-l2bqd7Dz.es.js +0 -6
- package/dist/perl-CkXYjL3t.es.js +0 -16
- package/dist/perl-DUnCLRB_.cjs.js +0 -1
- package/dist/php-D0k1sQr6.cjs.js +0 -1
- package/dist/php-q40Yjh5d.es.js +0 -18
- package/dist/plastic-CSTz3KZp.es.js +0 -4
- package/dist/plastic-r5piqq-S.cjs.js +0 -1
- package/dist/plsql-C_qH_YOK.cjs.js +0 -1
- package/dist/plsql-oVq_K_wH.es.js +0 -6
- package/dist/po-5jaeIyVd.es.js +0 -6
- package/dist/po-CBsLQIcu.cjs.js +0 -1
- package/dist/poimandres-BLP3NNjc.cjs.js +0 -1
- package/dist/poimandres-C-VADXHD.es.js +0 -4
- package/dist/polar-De-CDeYv.cjs.js +0 -1
- package/dist/polar-wcLp8ci7.es.js +0 -6
- package/dist/postcss-BZ3MNRIJ.es.js +0 -6
- package/dist/postcss-BtcsgaYj.cjs.js +0 -1
- package/dist/powerquery-B0rHn13V.cjs.js +0 -1
- package/dist/powerquery-CgRa2XRw.es.js +0 -6
- package/dist/powershell-Diwyv8Eh.es.js +0 -6
- package/dist/powershell-rCX2OYXT.cjs.js +0 -1
- package/dist/prisma-BaaUHYMp.cjs.js +0 -1
- package/dist/prisma-COL_v1x4.es.js +0 -6
- package/dist/prolog-CuvJOxqT.es.js +0 -6
- package/dist/prolog-DrXD2tGS.cjs.js +0 -1
- package/dist/proto-BtmQjBQu.cjs.js +0 -1
- package/dist/proto-o9HLmF90.es.js +0 -6
- package/dist/pug-Br4hpvIv.es.js +0 -12
- package/dist/pug-CFQMpTUe.cjs.js +0 -1
- package/dist/puppet-cIrXIuy8.cjs.js +0 -1
- package/dist/puppet-wpGOnQp5.es.js +0 -6
- package/dist/purescript-B_1NgE2N.es.js +0 -6
- package/dist/purescript-CX9QPs2N.cjs.js +0 -1
- package/dist/python-B9x3euv6.cjs.js +0 -1
- package/dist/python-xYxLFJY-.es.js +0 -6
- package/dist/qml-CzqrIM5W.cjs.js +0 -1
- package/dist/qml-D5gi21kK.es.js +0 -8
- package/dist/qmldir-BInDYbpo.es.js +0 -6
- package/dist/qmldir-DNF9H2ir.cjs.js +0 -1
- package/dist/qss-C744dLby.cjs.js +0 -1
- package/dist/qss-D-h4NdUG.es.js +0 -6
- package/dist/r-DgOc9oMe.cjs.js +0 -1
- package/dist/r-F-9I-ITZ.es.js +0 -6
- package/dist/racket-BoD1TBFT.es.js +0 -6
- package/dist/racket-Do9_vqnd.cjs.js +0 -1
- package/dist/raku-BW8wAUIz.cjs.js +0 -1
- package/dist/raku-IaYcw19m.es.js +0 -6
- package/dist/razor-Bt_t1YJb.es.js +0 -10
- package/dist/razor-COQhlwWF.cjs.js +0 -1
- package/dist/red-7y8PH7HH.es.js +0 -4
- package/dist/red-BQGOv1D5.cjs.js +0 -1
- package/dist/reg-CGWN_v-z.cjs.js +0 -1
- package/dist/reg-CMUdAgIP.es.js +0 -6
- package/dist/regexp-GiFkbxS-.es.js +0 -6
- package/dist/regexp-N7Z4hEeU.cjs.js +0 -1
- package/dist/rel-BYqA7mnV.cjs.js +0 -1
- package/dist/rel-BaRn3QX7.es.js +0 -6
- package/dist/riscv-B9V3SsvW.es.js +0 -6
- package/dist/riscv-ayQMUpo9.cjs.js +0 -1
- package/dist/rose-pine-DKEdv1Oe.cjs.js +0 -1
- package/dist/rose-pine-DhT-HZE9.es.js +0 -4
- package/dist/rose-pine-dawn-Bvt6DtVH.cjs.js +0 -1
- package/dist/rose-pine-dawn-DiCjL2i4.es.js +0 -4
- package/dist/rose-pine-moon-BNmGHlcn.es.js +0 -4
- package/dist/rose-pine-moon-cHuJy0Ng.cjs.js +0 -1
- package/dist/rst-BmKw97ch.es.js +0 -22
- package/dist/rst-Bq-h_T5U.cjs.js +0 -1
- package/dist/ruby-Bw5IEIKD.cjs.js +0 -1
- package/dist/ruby-cs7BSa_9.es.js +0 -30
- package/dist/rust-BnFKGEfa.cjs.js +0 -1
- package/dist/rust-Pc7DCsZD.es.js +0 -6
- package/dist/sas-BWKaSYkZ.cjs.js +0 -1
- package/dist/sas-DgvHx4mL.es.js +0 -8
- package/dist/sass-B9gYryDE.cjs.js +0 -1
- package/dist/sass-iCyS6eP9.es.js +0 -6
- package/dist/scala-C85dOwSU.cjs.js +0 -1
- package/dist/scala-Cly-fENF.es.js +0 -6
- package/dist/scheme-B_XUaARm.cjs.js +0 -1
- package/dist/scheme-Zi24oEYu.es.js +0 -6
- package/dist/scss-B_hSZppj.es.js +0 -8
- package/dist/scss-CV3c8_Y7.cjs.js +0 -1
- package/dist/sdbl-7Y5u0OW0.cjs.js +0 -1
- package/dist/sdbl-BBamrXFL.es.js +0 -6
- package/dist/shaderlab-CJ8U2E2w.cjs.js +0 -1
- package/dist/shaderlab-U9mqcu_f.es.js +0 -8
- package/dist/shellscript-3DYM9fut.cjs.js +0 -1
- package/dist/shellscript-Dn0-btNd.es.js +0 -6
- package/dist/shellsession-CbKmorC3.cjs.js +0 -1
- package/dist/shellsession-LvXGClmj.es.js +0 -8
- package/dist/slack-dark-akqwQ7ED.cjs.js +0 -1
- package/dist/slack-dark-i7wN4OET.es.js +0 -4
- package/dist/slack-ochin-BoQQWmTv.cjs.js +0 -1
- package/dist/slack-ochin-ndHf0LoP.es.js +0 -4
- package/dist/smalltalk-CCvytUuW.cjs.js +0 -1
- package/dist/smalltalk-Cns31tKw.es.js +0 -6
- package/dist/snazzy-light-BlSJXAu4.es.js +0 -4
- package/dist/snazzy-light-D_IwRieF.cjs.js +0 -1
- package/dist/solarized-dark-UTmkh7lw.es.js +0 -4
- package/dist/solarized-dark-gmm-WbDC.cjs.js +0 -1
- package/dist/solarized-light-BheCkDPT.es.js +0 -4
- package/dist/solarized-light-DzcxRSZP.cjs.js +0 -1
- package/dist/solidity-BG_k8fA_.es.js +0 -6
- package/dist/solidity-BcNcjFC4.cjs.js +0 -1
- package/dist/soy-B2d9ZydM.cjs.js +0 -1
- package/dist/soy-C0yEn39K.es.js +0 -8
- package/dist/sparql-CiBxIK0g.cjs.js +0 -1
- package/dist/sparql-CuZaxpno.es.js +0 -8
- package/dist/splunk-CTqDjQdo.es.js +0 -6
- package/dist/splunk-CzITjJj7.cjs.js +0 -1
- package/dist/sql-BqWZrLHB.cjs.js +0 -1
- package/dist/sql-DCkt643-.es.js +0 -6
- package/dist/ssh-config-DHHGll-v.es.js +0 -6
- package/dist/ssh-config-DUPeuEdB.cjs.js +0 -1
- package/dist/stata-B8m3qL-x.cjs.js +0 -1
- package/dist/stata-Dv81f34z.es.js +0 -8
- package/dist/stylus-ByHs6N-o.cjs.js +0 -1
- package/dist/stylus-n_9f0QQ5.es.js +0 -6
- package/dist/svelte-CfLoBBrI.cjs.js +0 -1
- package/dist/svelte-SoJd35Jr.es.js +0 -14
- package/dist/swift-BAWqNR8A.es.js +0 -6
- package/dist/swift-C5DnOriA.cjs.js +0 -1
- package/dist/synthwave-84-BBRLOmNT.cjs.js +0 -1
- package/dist/synthwave-84-NU3C_KFZ.es.js +0 -4
- package/dist/system-verilog-ClPLYLwh.cjs.js +0 -1
- package/dist/system-verilog-Cui-g-ut.es.js +0 -6
- package/dist/systemd-BASX0DlX.cjs.js +0 -1
- package/dist/systemd-CsKYQIQK.es.js +0 -6
- package/dist/talonscript-D2dGh8FO.es.js +0 -6
- package/dist/talonscript-DkCSnLHD.cjs.js +0 -1
- package/dist/tasl-BAQJK7KZ.cjs.js +0 -1
- package/dist/tasl-D3W8HMV6.es.js +0 -6
- package/dist/tcl-2y0Fuc4S.es.js +0 -6
- package/dist/tcl-CwJAYTvh.cjs.js +0 -1
- package/dist/templ-BSMv2wKZ.cjs.js +0 -1
- package/dist/templ-C7he2afp.es.js +0 -12
- package/dist/terraform-BGW6Oerf.es.js +0 -6
- package/dist/terraform-s-pzyVvp.cjs.js +0 -1
- package/dist/tex-B0y3cEZp.es.js +0 -8
- package/dist/tex-DwtFCA08.cjs.js +0 -1
- package/dist/tokyo-night-9T7_vGSy.cjs.js +0 -1
- package/dist/tokyo-night-LhP3hHhi.es.js +0 -4
- package/dist/toml-CQSfOn0e.es.js +0 -6
- package/dist/toml-CyMM7IXy.cjs.js +0 -1
- package/dist/ts-tags-C5-4VQhf.es.js +0 -41
- package/dist/ts-tags-MIr66hKK.cjs.js +0 -1
- package/dist/tsv-BtvSkaG0.es.js +0 -6
- package/dist/tsv-DqNGnuVj.cjs.js +0 -1
- package/dist/tsx-DiGsgWT8.es.js +0 -6
- package/dist/tsx-DpBRUnKC.cjs.js +0 -1
- package/dist/turtle-BJ2wmjPc.es.js +0 -6
- package/dist/turtle-DfO3eAsu.cjs.js +0 -1
- package/dist/twig-BzjoX4ZJ.cjs.js +0 -1
- package/dist/twig-OmkATFdv.es.js +0 -18
- package/dist/typescript-BqvpT6pB.cjs.js +0 -1
- package/dist/typescript-buWNZFwO.es.js +0 -6
- package/dist/typespec-P-ZVy8yC.cjs.js +0 -1
- package/dist/typespec-bLbdsxJL.es.js +0 -6
- package/dist/typst-BVh2IsT9.cjs.js +0 -1
- package/dist/typst-Y9_SmXTs.es.js +0 -6
- package/dist/v-BUlE9136.cjs.js +0 -1
- package/dist/v-wa8Orrdd.es.js +0 -6
- package/dist/vala-BIymb2K_.cjs.js +0 -1
- package/dist/vala-DRdriFr_.es.js +0 -6
- package/dist/vb-E2_-jk4M.es.js +0 -6
- package/dist/vb-IXOh8mqV.cjs.js +0 -1
- package/dist/verilog-B1iBoR5_.es.js +0 -6
- package/dist/verilog-BiglCqvO.cjs.js +0 -1
- package/dist/vesper-CJsaOsSM.es.js +0 -4
- package/dist/vesper-DqLWLxOu.cjs.js +0 -1
- package/dist/vhdl-CJUzuS2t.cjs.js +0 -1
- package/dist/vhdl-CRVaAhXk.es.js +0 -6
- package/dist/viml-B-zWOd7Z.es.js +0 -6
- package/dist/viml-B1nKLcgt.cjs.js +0 -1
- package/dist/vitesse-black-BoGvW84i.es.js +0 -4
- package/dist/vitesse-black-MF-1S1MG.cjs.js +0 -1
- package/dist/vitesse-dark-Cym-eLtO.es.js +0 -4
- package/dist/vitesse-dark-SIffJYSe.cjs.js +0 -1
- package/dist/vitesse-light-CcmG315c.es.js +0 -4
- package/dist/vitesse-light-U63SkYGT.cjs.js +0 -1
- package/dist/vue-DCwwWMGI.es.js +0 -31
- package/dist/vue-DYZqcRaZ.cjs.js +0 -1
- package/dist/vue-html-CdPbyrq1.cjs.js +0 -1
- package/dist/vue-html-sRE_Ny23.es.js +0 -10
- package/dist/vyper-CO9xUkIY.cjs.js +0 -1
- package/dist/vyper-DWutKXpa.es.js +0 -6
- package/dist/wasm-Bv5f0gKv.es.js +0 -6
- package/dist/wasm-CdIThIat.cjs.js +0 -1
- package/dist/wenyan-BMYnfus1.es.js +0 -6
- package/dist/wenyan-BSJ3fk7e.cjs.js +0 -1
- package/dist/wgsl-DnPoPGDU.es.js +0 -6
- package/dist/wgsl-d3zZE7ZN.cjs.js +0 -1
- package/dist/wikitext-BRCqXN2g.cjs.js +0 -1
- package/dist/wikitext-CntM04PE.es.js +0 -6
- package/dist/wolfram-C3rR92zj.cjs.js +0 -1
- package/dist/wolfram-Ws5qPlX9.es.js +0 -6
- package/dist/xml-BRLTD55J.cjs.js +0 -1
- package/dist/xml-Ch1q_kJp.es.js +0 -8
- package/dist/xsl-DyL8yqXw.es.js +0 -8
- package/dist/xsl-ETbYGV_-.cjs.js +0 -1
- package/dist/yaml-7DV6pRKj.cjs.js +0 -1
- package/dist/yaml-Bbg74JKr.es.js +0 -6
- package/dist/zenscript-BWMxwjeH.cjs.js +0 -1
- package/dist/zenscript-C0RKE4nU.es.js +0 -6
- package/dist/zig-D6SXBGNm.es.js +0 -6
- package/dist/zig-yAcNfpgW.cjs.js +0 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { DimensionSpec, DimensionValue } from '../../hooks/useDimensionalFilterRangeData';
|
|
2
|
+
import { FilterSelection } from '../../hooks/useDimensionFilters';
|
|
3
|
+
/**
|
|
4
|
+
* Type for the retrieval function used by Retrieval filter type
|
|
5
|
+
*/
|
|
6
|
+
export type RetrievalFunction = (query: string, spec: DimensionSpec) => Promise<DimensionValue[]>;
|
|
7
|
+
/**
|
|
8
|
+
* Props for DimensionFilter component
|
|
9
|
+
*/
|
|
10
|
+
export interface DimensionFilterProps {
|
|
11
|
+
/** The dimension specification */
|
|
12
|
+
spec: DimensionSpec;
|
|
13
|
+
/** Available values for this dimension */
|
|
14
|
+
values: DimensionValue[];
|
|
15
|
+
/** Current filter selection (optional) */
|
|
16
|
+
selection?: FilterSelection | null;
|
|
17
|
+
/** Callback when filter changes */
|
|
18
|
+
onChange: (selection: FilterSelection | null) => void;
|
|
19
|
+
/** Retrieval function for semantic search (required for Retrieval filter type) */
|
|
20
|
+
retrievalFn?: RetrievalFunction;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* DimensionFilter component - Renders appropriate filter UI based on dimension type
|
|
24
|
+
*
|
|
25
|
+
* This component dynamically renders the appropriate filter UI based on the dimension's
|
|
26
|
+
* filter type and selected match type. It supports:
|
|
27
|
+
* - Star filters: Dropdown selection or text search
|
|
28
|
+
* - MinMax filters: Numeric input with comparison operators
|
|
29
|
+
* - DateMinMax filters: Date pickers with date comparison operators
|
|
30
|
+
*
|
|
31
|
+
* @param props - Component props including spec, values, selection, and onChange callback
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* <DimensionFilter
|
|
36
|
+
* spec={{ dimensionName: "category", filterType: "Star" }}
|
|
37
|
+
* values={categoryValues}
|
|
38
|
+
* selection={currentSelection}
|
|
39
|
+
* onChange={(selection) => updateFilter("category", selection)}
|
|
40
|
+
* />
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function DimensionFilter({ spec, values, selection, onChange, retrievalFn, }: DimensionFilterProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { DimensionFilter } from './DimensionFilter';
|
|
2
|
+
export type { DimensionFilterProps, RetrievalFunction, } from './DimensionFilter';
|
|
3
|
+
export { extractDimensionSpecs, extractSourceFromQuery, generateFilterClause, getJoinedSources, injectWhereClause, parseAllSourceInfos, parseDimensionFilterAnnotation, parseNotebookFilterAnnotation, } from './utils';
|
|
4
|
+
export type { DimensionFilterAnnotation, FilterSpec, NotebookFilterConfig, } from './utils';
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { DimensionSpec, FilterType } from '../../hooks/useDimensionalFilterRangeData';
|
|
2
|
+
import { FilterSelection } from '../../hooks/useDimensionFilters';
|
|
3
|
+
import * as Malloy from "@malloydata/malloy-interfaces";
|
|
4
|
+
/**
|
|
5
|
+
* A single filter specification with source and dimension
|
|
6
|
+
* Parsed from "source.dimension" string format
|
|
7
|
+
*/
|
|
8
|
+
export interface FilterSpec {
|
|
9
|
+
source: string;
|
|
10
|
+
dimension: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Configuration parsed from notebook ##(filter) annotation
|
|
14
|
+
*/
|
|
15
|
+
export interface NotebookFilterConfig {
|
|
16
|
+
filters: FilterSpec[];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Filter annotation parsed from dimension #(filter) tag
|
|
20
|
+
*/
|
|
21
|
+
export interface DimensionFilterAnnotation {
|
|
22
|
+
type: FilterType;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Get the names of all sources that are joined into a given source
|
|
26
|
+
* Looks for fields with kind: "join" in the SourceInfo
|
|
27
|
+
*/
|
|
28
|
+
export declare function getJoinedSources(sourceInfo: Malloy.SourceInfo): Set<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Parse ##(filter) annotation from notebook annotations
|
|
31
|
+
* Format: ##(filters) ["source.dimension", "source2.dimension2", ...]
|
|
32
|
+
* Returns the filter config or null if not found
|
|
33
|
+
*/
|
|
34
|
+
export declare function parseNotebookFilterAnnotation(annotations: string[] | undefined): NotebookFilterConfig | null;
|
|
35
|
+
/**
|
|
36
|
+
* Parse #(filter) annotation from a dimension annotation string
|
|
37
|
+
* Returns the filter annotation or null if not found
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseDimensionFilterAnnotation(annotation: string): DimensionFilterAnnotation | null;
|
|
40
|
+
/**
|
|
41
|
+
* Parse all source infos from notebook cells and create a map of source_name -> SourceInfo
|
|
42
|
+
* Also returns the model path from the first import statement found
|
|
43
|
+
*/
|
|
44
|
+
export declare function parseAllSourceInfos(cells: Array<{
|
|
45
|
+
type?: string;
|
|
46
|
+
newSources?: string[];
|
|
47
|
+
text?: string;
|
|
48
|
+
}>): {
|
|
49
|
+
sourceInfoMap: Map<string, Malloy.SourceInfo>;
|
|
50
|
+
modelPath: string;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Extract dimension specs from SourceInfo map based on filter specs from notebook annotation
|
|
54
|
+
* Looks for #(filter) annotations on the dimensions to determine filter types
|
|
55
|
+
* Each spec includes source and model for proper query routing
|
|
56
|
+
*/
|
|
57
|
+
export declare function extractDimensionSpecs(sourceInfoMap: Map<string, Malloy.SourceInfo>, filterSpecs: FilterSpec[], modelPath: string): DimensionSpec[];
|
|
58
|
+
/**
|
|
59
|
+
* Generate a Malloy WHERE clause filter string from filter selections
|
|
60
|
+
* Uses source.dimension format only for joined sources (not the query's main source)
|
|
61
|
+
*/
|
|
62
|
+
export declare function generateFilterClause(activeFilters: FilterSelection[], dimensionToSourceMap: Map<string, string>, querySourceName: string | null): string;
|
|
63
|
+
/**
|
|
64
|
+
* Extract the source name from a Malloy query
|
|
65
|
+
* Handles patterns like:
|
|
66
|
+
* - "run: source_name -> ..."
|
|
67
|
+
* - "run: source_name->view_name"
|
|
68
|
+
* Returns null if no source name can be extracted
|
|
69
|
+
*/
|
|
70
|
+
export declare function extractSourceFromQuery(query: string): string | null;
|
|
71
|
+
/**
|
|
72
|
+
* Injects a where clause into a Malloy query by appending "+ {where: ...}"
|
|
73
|
+
* Uses Malloy's refinement syntax which works with any query pattern.
|
|
74
|
+
*/
|
|
75
|
+
export declare function injectWhereClause(query: string, filterClause: string): string;
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
+
export { AnalyzePackageButton } from './AnalyzePackageButton';
|
|
2
|
+
export { useRouterClickHandler } from './click_helper';
|
|
3
|
+
export * from './filter';
|
|
4
|
+
export * from './Home';
|
|
5
|
+
export * from './Loading';
|
|
1
6
|
export * from './Model';
|
|
2
7
|
export * from './Notebook';
|
|
3
|
-
export * from './Workbook';
|
|
4
8
|
export * from './Package';
|
|
5
9
|
export * from './Project';
|
|
6
10
|
export * from './QueryResult';
|
|
7
|
-
export * from './
|
|
8
|
-
export * from './Loading';
|
|
9
|
-
export { useRouterClickHandler } from './click_helper';
|
|
11
|
+
export * from './RenderedResult';
|
|
10
12
|
export { ServerProvider, useServer } from './ServerProvider';
|
|
11
13
|
export type { ServerContextValue, ServerProviderProps } from './ServerProvider';
|
|
12
|
-
export
|
|
14
|
+
export * from './Workbook';
|
|
13
15
|
export type { WorkbookStorage } from './Workbook';
|
|
14
|
-
export * from './RenderedResult';
|
|
@@ -3,9 +3,9 @@ import { CardOwnProps, Theme, CardContentOwnProps, CardMediaOwnProps } from '@mu
|
|
|
3
3
|
import { CommonProps } from '@mui/material/OverridableComponent';
|
|
4
4
|
import { DetailedHTMLProps, HTMLAttributes } from 'react';
|
|
5
5
|
import { MUIStyledCommonProps } from '@mui/system';
|
|
6
|
-
export declare const StyledCard: StyledComponent< CardOwnProps & CommonProps & Omit< DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "style" | "classes" | "children" | "
|
|
6
|
+
export declare const StyledCard: StyledComponent< CardOwnProps & CommonProps & Omit< DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "style" | "classes" | "children" | "elevation" | "square" | "sx" | "variant" | "raised"> & MUIStyledCommonProps<Theme>, {}, {}>;
|
|
7
7
|
export declare const StyledCardContent: StyledComponent< CardContentOwnProps & CommonProps & Omit< DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "style" | "classes" | "children" | "sx"> & MUIStyledCommonProps<Theme>, {}, {}>;
|
|
8
|
-
export declare const StyledCardMedia: StyledComponent< CardMediaOwnProps & CommonProps & Omit< DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "style" | "classes" | "
|
|
8
|
+
export declare const StyledCardMedia: StyledComponent< CardMediaOwnProps & CommonProps & Omit< DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "style" | "classes" | "image" | "children" | "sx" | "src"> & MUIStyledCommonProps<Theme>, {}, {}>;
|
|
9
9
|
export declare const CleanNotebookContainer: StyledComponent<MUIStyledCommonProps<Theme>, DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
10
10
|
export declare const CleanNotebookHeader: StyledComponent<MUIStyledCommonProps<Theme>, DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
11
11
|
export declare const CleanNotebookSection: StyledComponent<MUIStyledCommonProps<Theme>, DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -17,7 +17,7 @@ export declare const StyledExplorerPage: StyledComponent<MUIStyledCommonProps<Th
|
|
|
17
17
|
export declare const StyledExplorerBanner: StyledComponent<MUIStyledCommonProps<Theme>, DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
18
18
|
export declare const StyledExplorerContent: StyledComponent<MUIStyledCommonProps<Theme>, DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
19
19
|
export declare const StyledExplorerPanel: StyledComponent<MUIStyledCommonProps<Theme>, DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
20
|
-
export declare const PackageCard: StyledComponent< CardOwnProps & CommonProps & Omit< DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "style" | "classes" | "children" | "
|
|
20
|
+
export declare const PackageCard: StyledComponent< CardOwnProps & CommonProps & Omit< DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "style" | "classes" | "children" | "elevation" | "square" | "sx" | "variant" | "raised"> & MUIStyledCommonProps<Theme>, {}, {}>;
|
|
21
21
|
export declare const PackageCardContent: StyledComponent< CardContentOwnProps & CommonProps & Omit< DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "className" | "style" | "classes" | "children" | "sx"> & MUIStyledCommonProps<Theme>, {}, {}>;
|
|
22
22
|
export declare const PackageSectionTitle: StyledComponent<MUIStyledCommonProps<Theme>, DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
23
23
|
export declare const PackageContainer: StyledComponent<MUIStyledCommonProps<Theme>, DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { useDimensionFilters, type DimensionFilterState, type FilterSelection, type MatchType, type UseDimensionFiltersParams, type UseDimensionFiltersResult, } from './useDimensionFilters';
|
|
2
|
+
export { useDimensionFiltersFromSpec, type DimensionFiltersConfig, type UseDimensionFiltersFromSpecOptions, } from './useDimensionFiltersFromSpec';
|
|
3
|
+
export { useDimensionFiltersQuery, type DimensionFiltersQueryResult, type UseDimensionFiltersQueryParams, } from './useDimensionFiltersQuery';
|
|
4
|
+
export { useDimensionalFilterRangeData, type DimensionalFilterRangeDataResult, type DimensionSpec, type DimensionValue, type DimensionValues, type FilterType, type UseDimensionalFilterRangeDataParams, } from './useDimensionalFilterRangeData';
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { DimensionSpec } from './useDimensionalFilterRangeData';
|
|
2
|
+
/**
|
|
3
|
+
* Match types for filtering dimensions
|
|
4
|
+
*/
|
|
5
|
+
export type MatchType = "Equals" | "Contains" | "After" | "Before" | "Less Than" | "Greater Than" | "Between" | "Concept Search";
|
|
6
|
+
/**
|
|
7
|
+
* Primitive types that can be used as filter values
|
|
8
|
+
*/
|
|
9
|
+
export type FilterValuePrimitive = string | number | boolean | Date;
|
|
10
|
+
/**
|
|
11
|
+
* Type for filter values - can be a single value or an array for multi-select
|
|
12
|
+
*/
|
|
13
|
+
export type FilterValue = FilterValuePrimitive | FilterValuePrimitive[];
|
|
14
|
+
/**
|
|
15
|
+
* A selected filter value with its match type
|
|
16
|
+
*/
|
|
17
|
+
export interface FilterSelection {
|
|
18
|
+
dimensionName: string;
|
|
19
|
+
matchType: MatchType;
|
|
20
|
+
value: FilterValue;
|
|
21
|
+
value2?: FilterValuePrimitive;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Complete filter state including the dimension spec and selection
|
|
25
|
+
*/
|
|
26
|
+
export interface DimensionFilterState {
|
|
27
|
+
spec: DimensionSpec;
|
|
28
|
+
selection: FilterSelection | null;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parameters for the useDimensionFilters hook
|
|
32
|
+
*/
|
|
33
|
+
export interface UseDimensionFiltersParams {
|
|
34
|
+
/** Dimension specifications (each includes source and model) */
|
|
35
|
+
dimensionSpecs: DimensionSpec[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Result from the useDimensionFilters hook
|
|
39
|
+
*/
|
|
40
|
+
export interface UseDimensionFiltersResult {
|
|
41
|
+
/** Current filter states */
|
|
42
|
+
filterStates: Map<string, DimensionFilterState>;
|
|
43
|
+
/** Update a filter selection */
|
|
44
|
+
updateFilter: (dimensionName: string, selection: FilterSelection | null) => void;
|
|
45
|
+
/** Clear a specific filter */
|
|
46
|
+
clearFilter: (dimensionName: string) => void;
|
|
47
|
+
/** Clear all filters */
|
|
48
|
+
clearAllFilters: () => void;
|
|
49
|
+
/** Get active filters (with selections) */
|
|
50
|
+
getActiveFilters: () => FilterSelection[];
|
|
51
|
+
/** Generate Malloy query fragment for active filters */
|
|
52
|
+
generateWhereClause: () => string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Custom hook to manage dimension filter state and generate Malloy queries
|
|
56
|
+
*
|
|
57
|
+
* This hook maintains filter state for multiple dimensions and provides utilities
|
|
58
|
+
* to generate Malloy WHERE clauses based on the active filters.
|
|
59
|
+
*
|
|
60
|
+
* @param params - Parameters including dimension specs (each with source and model)
|
|
61
|
+
* @returns Filter state management functions and query generation
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```tsx
|
|
65
|
+
* const { filterStates, updateFilter, generateWhereClause } = useDimensionFilters({
|
|
66
|
+
* dimensionSpecs: [
|
|
67
|
+
* { dimensionName: "category", filterType: "Star", source: "my_source", model: "model.malloy" },
|
|
68
|
+
* { dimensionName: "price", filterType: "MinMax", source: "my_source", model: "model.malloy" },
|
|
69
|
+
* ],
|
|
70
|
+
* });
|
|
71
|
+
*
|
|
72
|
+
* // Update a filter
|
|
73
|
+
* updateFilter("category", {
|
|
74
|
+
* dimensionName: "category",
|
|
75
|
+
* matchType: "Equals",
|
|
76
|
+
* value: "Electronics"
|
|
77
|
+
* });
|
|
78
|
+
*
|
|
79
|
+
* // Generate query
|
|
80
|
+
* const whereClause = generateWhereClause();
|
|
81
|
+
* // Returns: "where `category` = 'Electronics'"
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare function useDimensionFilters(params: UseDimensionFiltersParams): UseDimensionFiltersResult;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { DimensionSpec, DimensionValues } from './useDimensionalFilterRangeData';
|
|
2
|
+
import { DimensionFilterState, FilterSelection } from './useDimensionFilters';
|
|
3
|
+
/**
|
|
4
|
+
* Configuration for dimensional filters
|
|
5
|
+
*/
|
|
6
|
+
export interface DimensionFiltersConfig {
|
|
7
|
+
/** Project name */
|
|
8
|
+
project: string;
|
|
9
|
+
/** Package name */
|
|
10
|
+
package: string;
|
|
11
|
+
/** Version ID (optional) */
|
|
12
|
+
versionId?: string;
|
|
13
|
+
/** Index limit for retrieval queries */
|
|
14
|
+
indexLimit: number;
|
|
15
|
+
/** Dimension specifications for filters (each includes source and model) */
|
|
16
|
+
dimensionSpecs: DimensionSpec[];
|
|
17
|
+
/** Fields/columns to group by in the query (if not specified, uses select *) */
|
|
18
|
+
selectFields?: string[];
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Options passed to useDimensionFiltersFromSpec
|
|
22
|
+
*/
|
|
23
|
+
export interface UseDimensionFiltersFromSpecOptions {
|
|
24
|
+
config: DimensionFiltersConfig;
|
|
25
|
+
/** Maximum number of results to return from query (default: 100) */
|
|
26
|
+
queryLimit?: number;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Combined hook that manages dimensional filters, data fetching, and query execution
|
|
30
|
+
* from a single configuration object.
|
|
31
|
+
*
|
|
32
|
+
* @param config - Configuration containing project, package, dimension specs, and index limit
|
|
33
|
+
* @param queryLimit - Maximum number of results to return from query (default: 100)
|
|
34
|
+
* @returns All state and methods needed for dimensional filtering UI
|
|
35
|
+
*/
|
|
36
|
+
export declare function useDimensionFiltersFromSpec(config: DimensionFiltersConfig, queryLimit?: number): {
|
|
37
|
+
filterStates: Map<string, DimensionFilterState>;
|
|
38
|
+
updateFilter: (dimensionName: string, selection: FilterSelection | null) => void;
|
|
39
|
+
clearAllFilters: () => void;
|
|
40
|
+
activeFilters: FilterSelection[];
|
|
41
|
+
data: DimensionValues;
|
|
42
|
+
noRowsMatchedFilter: boolean;
|
|
43
|
+
isLoading: boolean;
|
|
44
|
+
isInitialLoading: boolean;
|
|
45
|
+
isError: boolean;
|
|
46
|
+
error: Error;
|
|
47
|
+
refetch: () => void;
|
|
48
|
+
embeddedQueryResult: string;
|
|
49
|
+
queryString: string;
|
|
50
|
+
executeQuery: () => void;
|
|
51
|
+
canExecute: boolean;
|
|
52
|
+
};
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { FilterSelection } from './useDimensionFilters';
|
|
2
|
+
/**
|
|
3
|
+
* Parameters for the useDimensionFiltersQuery hook
|
|
4
|
+
*/
|
|
5
|
+
export interface UseDimensionFiltersQueryParams {
|
|
6
|
+
/** Project name */
|
|
7
|
+
project: string;
|
|
8
|
+
/** Package name */
|
|
9
|
+
package: string;
|
|
10
|
+
/** Model path */
|
|
11
|
+
model: string;
|
|
12
|
+
/** Source name within the model */
|
|
13
|
+
source: string;
|
|
14
|
+
/** Active filter selections */
|
|
15
|
+
filterSelections: FilterSelection[];
|
|
16
|
+
/** Optional fields to select in the query */
|
|
17
|
+
fields?: string[];
|
|
18
|
+
/** Maximum number of results to return (default: 1000) */
|
|
19
|
+
limit?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Result from the useDimensionFiltersQuery hook
|
|
23
|
+
*/
|
|
24
|
+
export interface DimensionFiltersQueryResult {
|
|
25
|
+
/** Embedded query result string suitable for rendering with EmbeddedQueryResult */
|
|
26
|
+
embeddedQueryResult: string | null;
|
|
27
|
+
/** The generated Malloy query string (preview only, not executed) */
|
|
28
|
+
queryString: string;
|
|
29
|
+
/** The resource URI for the model */
|
|
30
|
+
resourceUri: string;
|
|
31
|
+
/** Function to execute the query and generate the embedded result */
|
|
32
|
+
executeQuery: () => void;
|
|
33
|
+
/** Whether a query can be executed (has filter selections) */
|
|
34
|
+
canExecute: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Custom hook to generate an embedded Malloy query with dimensional filters
|
|
38
|
+
*
|
|
39
|
+
* This hook takes filter selections from useDimensionFilters, builds a complete
|
|
40
|
+
* Malloy query with WHERE clauses, and provides a function to execute the query
|
|
41
|
+
* and create an embedded query result string that can be rendered with the
|
|
42
|
+
* EmbeddedQueryResult component.
|
|
43
|
+
*
|
|
44
|
+
* The query is not executed automatically - you must call executeQuery() to
|
|
45
|
+
* generate the embedded result.
|
|
46
|
+
*
|
|
47
|
+
* @param params - Parameters including model info, source, and filter selections
|
|
48
|
+
* @returns Query metadata, embedded result, and execute function
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```tsx
|
|
52
|
+
* const { filterStates, getActiveFilters } = useDimensionFilters({
|
|
53
|
+
* dimensionSpecs: [
|
|
54
|
+
* { dimensionName: "category", filterType: "Star", source: "my_source", model: "model.malloy" },
|
|
55
|
+
* ],
|
|
56
|
+
* });
|
|
57
|
+
*
|
|
58
|
+
* const { embeddedQueryResult, executeQuery, canExecute } = useDimensionFiltersQuery({
|
|
59
|
+
* project: "my-project",
|
|
60
|
+
* package: "my-package",
|
|
61
|
+
* model: "model.malloy",
|
|
62
|
+
* source: "my_source",
|
|
63
|
+
* filterSelections: getActiveFilters(),
|
|
64
|
+
* fields: ["category", "price", "quantity"],
|
|
65
|
+
* limit: 1000, // Optional: defaults to 1000
|
|
66
|
+
* });
|
|
67
|
+
*
|
|
68
|
+
* // Execute button
|
|
69
|
+
* <Button onClick={executeQuery} disabled={!canExecute}>
|
|
70
|
+
* Execute Query
|
|
71
|
+
* </Button>
|
|
72
|
+
*
|
|
73
|
+
* // Render with EmbeddedQueryResult component
|
|
74
|
+
* {embeddedQueryResult && (
|
|
75
|
+
* <EmbeddedQueryResult embeddedQueryResult={embeddedQueryResult} />
|
|
76
|
+
* )}
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export declare function useDimensionFiltersQuery(params: UseDimensionFiltersQueryParams): DimensionFiltersQueryResult;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { FilterSelection, FilterValuePrimitive } from './useDimensionFilters';
|
|
2
|
+
/**
|
|
3
|
+
* Filter types for dimensions
|
|
4
|
+
*/
|
|
5
|
+
export type FilterType = "NONE" | "Star" | "MinMax" | "DateMinMax" | "Retrieval" | "Boolean";
|
|
6
|
+
/**
|
|
7
|
+
* Specification for a dimension to filter
|
|
8
|
+
*/
|
|
9
|
+
export interface DimensionSpec {
|
|
10
|
+
/** Name of the dimension field */
|
|
11
|
+
dimensionName: string;
|
|
12
|
+
/** Type of filter to apply */
|
|
13
|
+
filterType: FilterType;
|
|
14
|
+
/** Source name within the model */
|
|
15
|
+
source: string;
|
|
16
|
+
/** Model path */
|
|
17
|
+
model: string;
|
|
18
|
+
/** Minimum similarity score for Retrieval filter type (default: 0.1) */
|
|
19
|
+
minSimilarityScore?: number;
|
|
20
|
+
/** Optional list of static values to use for the dropdown instead of querying */
|
|
21
|
+
values?: string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Value information for a dimension
|
|
25
|
+
*/
|
|
26
|
+
export interface DimensionValue {
|
|
27
|
+
value: FilterValuePrimitive;
|
|
28
|
+
count?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Result type mapping dimension names to their values
|
|
32
|
+
*/
|
|
33
|
+
export type DimensionValues = Map<string, DimensionValue[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Parameters for the useDimensionalFilterRangeData hook
|
|
36
|
+
*/
|
|
37
|
+
export interface UseDimensionalFilterRangeDataParams {
|
|
38
|
+
/** Project name */
|
|
39
|
+
project: string;
|
|
40
|
+
/** Package name */
|
|
41
|
+
package: string;
|
|
42
|
+
/** List of dimension specifications (each includes source and model) */
|
|
43
|
+
dimensionSpecs: DimensionSpec[];
|
|
44
|
+
/** Version ID (optional) */
|
|
45
|
+
versionId?: string;
|
|
46
|
+
/** Whether the query should be enabled */
|
|
47
|
+
enabled?: boolean;
|
|
48
|
+
/** Maximum number of index results to return (default: 1000) */
|
|
49
|
+
indexLimit?: number;
|
|
50
|
+
/** Active filter selections to apply when fetching dimension values (optional) */
|
|
51
|
+
activeFilters?: FilterSelection[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Result from the useDimensionalFilterRangeData hook
|
|
55
|
+
*/
|
|
56
|
+
export interface DimensionalFilterRangeDataResult {
|
|
57
|
+
/** Map of dimension names to their values */
|
|
58
|
+
data: DimensionValues | undefined;
|
|
59
|
+
/** Whether no rows matched the filter */
|
|
60
|
+
noRowsMatchedFilter: boolean;
|
|
61
|
+
/** Whether the query is loading */
|
|
62
|
+
isLoading: boolean;
|
|
63
|
+
/** Whether the query encountered an error */
|
|
64
|
+
isError: boolean;
|
|
65
|
+
/** Error object if query failed */
|
|
66
|
+
error: Error | null;
|
|
67
|
+
/** Refetch function to manually trigger the query */
|
|
68
|
+
refetch: () => void;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Custom hook to fetch dimensional filter values from a Malloy model
|
|
72
|
+
*
|
|
73
|
+
* This hook uses Malloy's built-in `index` operator to create dimensional search indexes
|
|
74
|
+
* for the specified dimensions. The index operator efficiently returns distinct values
|
|
75
|
+
* and ranges for dimensions in a single query.
|
|
76
|
+
*
|
|
77
|
+
* Filter types:
|
|
78
|
+
* - NONE: Display only, no values fetched
|
|
79
|
+
* - Star: Fetches all distinct values with counts (for string fields)
|
|
80
|
+
* - MinMax: Fetches minimum and maximum values (for numeric fields as ranges)
|
|
81
|
+
* - DateMinMax: Fetches minimum and maximum values (for date fields as Date objects)
|
|
82
|
+
* - Retrieval: Uses retrieval, no values fetched
|
|
83
|
+
*
|
|
84
|
+
* Reference: https://docs.malloydata.dev/documentation/patterns/dim_index
|
|
85
|
+
*
|
|
86
|
+
* The hook groups dimension specs by source/model combination and runs separate
|
|
87
|
+
* index queries for each group, then merges the results.
|
|
88
|
+
*
|
|
89
|
+
* @param params - Parameters including project, package, and dimension specs (each with source/model)
|
|
90
|
+
* @returns Query result with dimension values map, loading state, and error information
|
|
91
|
+
*
|
|
92
|
+
* @example
|
|
93
|
+
* ```tsx
|
|
94
|
+
* const { data, isLoading, error } = useDimensionalFilterRangeData({
|
|
95
|
+
* project: "my-project",
|
|
96
|
+
* package: "my-package",
|
|
97
|
+
* dimensionSpecs: [
|
|
98
|
+
* { dimensionName: "category", filterType: "Star", source: "my_source", model: "model.malloy" },
|
|
99
|
+
* { dimensionName: "price", filterType: "MinMax", source: "my_source", model: "model.malloy" },
|
|
100
|
+
* { dimensionName: "status", filterType: "Star", source: "other_source", model: "other.malloy" },
|
|
101
|
+
* ],
|
|
102
|
+
* indexLimit: 1000, // Optional: set higher if needed for many Star dimensions
|
|
103
|
+
* });
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
export declare function useDimensionalFilterRangeData(params: UseDimensionalFilterRangeDataParams): DimensionalFilterRangeDataResult;
|