@fusedashlabs/widgets 0.3.1 → 0.4.1
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/CHANGELOG.md +37 -0
- package/README.md +1 -1
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts +2 -0
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts.map +1 -1
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.js +23 -2
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.js.map +1 -1
- package/dist/components/chart-renderer/lib/registry.d.ts.map +1 -1
- package/dist/components/chart-renderer/lib/registry.js +20 -5
- package/dist/components/chart-renderer/lib/registry.js.map +1 -1
- package/dist/components/chart-renderer/lib/types.d.ts +5 -0
- package/dist/components/chart-renderer/lib/types.d.ts.map +1 -1
- package/dist/components/donut-chart/element/ui9000-donut-chart.js +1 -1
- package/dist/components/donut-chart/element/ui9000-donut-chart.js.map +1 -1
- package/dist/components/kpi-widget/element/styles.d.ts.map +1 -1
- package/dist/components/kpi-widget/element/styles.js +268 -5
- package/dist/components/kpi-widget/element/styles.js.map +1 -1
- package/dist/components/kpi-widget/element/ui9000-kpi-widget.d.ts +10 -1
- package/dist/components/kpi-widget/element/ui9000-kpi-widget.d.ts.map +1 -1
- package/dist/components/kpi-widget/element/ui9000-kpi-widget.js +154 -27
- package/dist/components/kpi-widget/element/ui9000-kpi-widget.js.map +1 -1
- package/dist/components/kpi-widget/index.d.ts +1 -1
- package/dist/components/kpi-widget/index.d.ts.map +1 -1
- package/dist/components/kpi-widget/index.js +7 -4
- package/dist/components/kpi-widget/lib/extract.d.ts +5 -1
- package/dist/components/kpi-widget/lib/extract.d.ts.map +1 -1
- package/dist/components/kpi-widget/lib/extract.js +110 -34
- package/dist/components/kpi-widget/lib/extract.js.map +1 -1
- package/dist/components/kpi-widget/lib/format.d.ts +5 -0
- package/dist/components/kpi-widget/lib/format.d.ts.map +1 -1
- package/dist/components/kpi-widget/lib/format.js +10 -1
- package/dist/components/kpi-widget/lib/format.js.map +1 -1
- package/dist/components/kpi-widget/lib/grid.d.ts +5 -0
- package/dist/components/kpi-widget/lib/grid.d.ts.map +1 -1
- package/dist/components/kpi-widget/lib/grid.js +18 -0
- package/dist/components/kpi-widget/lib/grid.js.map +1 -1
- package/dist/components/kpi-widget/lib/index.d.ts +5 -5
- package/dist/components/kpi-widget/lib/index.d.ts.map +1 -1
- package/dist/components/kpi-widget/lib/normalize.d.ts +2 -0
- package/dist/components/kpi-widget/lib/normalize.d.ts.map +1 -1
- package/dist/components/kpi-widget/lib/normalize.js +73 -12
- package/dist/components/kpi-widget/lib/normalize.js.map +1 -1
- package/dist/components/kpi-widget/lib/types.d.ts +41 -0
- package/dist/components/kpi-widget/lib/types.d.ts.map +1 -1
- package/dist/components/kpi-widget/metadata.json.d.ts +1 -1
- package/dist/components/kpi-widget/metadata.json.js +1 -1
- package/dist/components/lollipop/element/styles.d.ts.map +1 -1
- package/dist/components/lollipop/element/styles.js +19 -1
- package/dist/components/lollipop/element/styles.js.map +1 -1
- package/dist/components/lollipop/element/ui9000-lollipop.d.ts +6 -1
- package/dist/components/lollipop/element/ui9000-lollipop.d.ts.map +1 -1
- package/dist/components/lollipop/element/ui9000-lollipop.js +68 -7
- package/dist/components/lollipop/element/ui9000-lollipop.js.map +1 -1
- package/dist/components/lollipop/index.d.ts +1 -1
- package/dist/components/lollipop/index.d.ts.map +1 -1
- package/dist/components/lollipop/index.js +2 -0
- package/dist/components/lollipop/index.js.map +1 -1
- package/dist/components/lollipop/lib/domain.d.ts +16 -1
- package/dist/components/lollipop/lib/domain.d.ts.map +1 -1
- package/dist/components/lollipop/lib/domain.js +56 -1
- package/dist/components/lollipop/lib/domain.js.map +1 -1
- package/dist/components/lollipop/lib/index.d.ts +3 -2
- package/dist/components/lollipop/lib/index.d.ts.map +1 -1
- package/dist/components/lollipop/lib/layout.d.ts +16 -0
- package/dist/components/lollipop/lib/layout.d.ts.map +1 -0
- package/dist/components/lollipop/lib/layout.js +16 -0
- package/dist/components/lollipop/lib/layout.js.map +1 -0
- package/dist/components/lollipop/lib/types.d.ts +5 -0
- package/dist/components/lollipop/lib/types.d.ts.map +1 -1
- package/dist/components/lollipop/metadata.json.d.ts +10 -0
- package/dist/components/lollipop/metadata.json.js +4 -1
- package/dist/components/lollipop/metadata.json.js.map +1 -1
- package/dist/components/lollipop/render/draw.d.ts +8 -1
- package/dist/components/lollipop/render/draw.d.ts.map +1 -1
- package/dist/components/lollipop/render/draw.js +155 -84
- package/dist/components/lollipop/render/draw.js.map +1 -1
- package/dist/components/map-chart/element/styles.d.ts +2 -0
- package/dist/components/map-chart/element/styles.d.ts.map +1 -0
- package/dist/components/map-chart/element/styles.js +372 -0
- package/dist/components/map-chart/element/styles.js.map +1 -0
- package/dist/components/map-chart/element/ui9000-map-chart.d.ts +54 -0
- package/dist/components/map-chart/element/ui9000-map-chart.d.ts.map +1 -0
- package/dist/components/map-chart/element/ui9000-map-chart.js +539 -0
- package/dist/components/map-chart/element/ui9000-map-chart.js.map +1 -0
- package/dist/components/map-chart/index.d.ts +5 -0
- package/dist/components/map-chart/index.d.ts.map +1 -0
- package/dist/components/map-chart/index.js +29 -0
- package/dist/components/map-chart/index.js.map +1 -0
- package/dist/components/map-chart/lib/constants.d.ts +34 -0
- package/dist/components/map-chart/lib/constants.d.ts.map +1 -0
- package/dist/components/map-chart/lib/constants.js +122 -0
- package/dist/components/map-chart/lib/constants.js.map +1 -0
- package/dist/components/map-chart/lib/domain.d.ts +12 -0
- package/dist/components/map-chart/lib/domain.d.ts.map +1 -0
- package/dist/components/map-chart/lib/domain.js +105 -0
- package/dist/components/map-chart/lib/domain.js.map +1 -0
- package/dist/components/map-chart/lib/format.d.ts +8 -0
- package/dist/components/map-chart/lib/format.d.ts.map +1 -0
- package/dist/components/map-chart/lib/format.js +45 -0
- package/dist/components/map-chart/lib/format.js.map +1 -0
- package/dist/components/map-chart/lib/geo-index.d.ts +7 -0
- package/dist/components/map-chart/lib/geo-index.d.ts.map +1 -0
- package/dist/components/map-chart/lib/geo-index.js +200 -0
- package/dist/components/map-chart/lib/geo-index.js.map +1 -0
- package/dist/components/map-chart/lib/geojson.d.ts +5 -0
- package/dist/components/map-chart/lib/geojson.d.ts.map +1 -0
- package/dist/components/map-chart/lib/geojson.js +47 -0
- package/dist/components/map-chart/lib/geojson.js.map +1 -0
- package/dist/components/map-chart/lib/index.d.ts +13 -0
- package/dist/components/map-chart/lib/index.d.ts.map +1 -0
- package/dist/components/map-chart/lib/join.d.ts +7 -0
- package/dist/components/map-chart/lib/join.d.ts.map +1 -0
- package/dist/components/map-chart/lib/join.js +156 -0
- package/dist/components/map-chart/lib/join.js.map +1 -0
- package/dist/components/map-chart/lib/legend.d.ts +45 -0
- package/dist/components/map-chart/lib/legend.d.ts.map +1 -0
- package/dist/components/map-chart/lib/legend.js +108 -0
- package/dist/components/map-chart/lib/legend.js.map +1 -0
- package/dist/components/map-chart/lib/normalize.d.ts +3 -0
- package/dist/components/map-chart/lib/normalize.d.ts.map +1 -0
- package/dist/components/map-chart/lib/normalize.js +177 -0
- package/dist/components/map-chart/lib/normalize.js.map +1 -0
- package/dist/components/map-chart/lib/pmtiles.d.ts +41 -0
- package/dist/components/map-chart/lib/pmtiles.d.ts.map +1 -0
- package/dist/components/map-chart/lib/pmtiles.js +112 -0
- package/dist/components/map-chart/lib/pmtiles.js.map +1 -0
- package/dist/components/map-chart/lib/types.d.ts +128 -0
- package/dist/components/map-chart/lib/types.d.ts.map +1 -0
- package/dist/components/map-chart/metadata.json.d.ts +83 -0
- package/dist/components/map-chart/metadata.json.js +42 -0
- package/dist/components/map-chart/metadata.json.js.map +1 -0
- package/dist/components/map-chart/render/draw.d.ts +24 -0
- package/dist/components/map-chart/render/draw.d.ts.map +1 -0
- package/dist/components/map-chart/render/draw.js +456 -0
- package/dist/components/map-chart/render/draw.js.map +1 -0
- package/dist/components/map-chart/render/index.d.ts +2 -0
- package/dist/components/map-chart/render/index.d.ts.map +1 -0
- package/dist/components/matrix-chart/element/styles.d.ts +2 -0
- package/dist/components/matrix-chart/element/styles.d.ts.map +1 -0
- package/dist/components/matrix-chart/element/styles.js +97 -0
- package/dist/components/matrix-chart/element/styles.js.map +1 -0
- package/dist/components/matrix-chart/element/ui9000-matrix-chart.d.ts +39 -0
- package/dist/components/matrix-chart/element/ui9000-matrix-chart.d.ts.map +1 -0
- package/dist/components/matrix-chart/element/ui9000-matrix-chart.js +238 -0
- package/dist/components/matrix-chart/element/ui9000-matrix-chart.js.map +1 -0
- package/dist/components/matrix-chart/index.d.ts +5 -0
- package/dist/components/matrix-chart/index.d.ts.map +1 -0
- package/dist/components/matrix-chart/index.js +20 -0
- package/dist/components/matrix-chart/lib/domain.d.ts +7 -0
- package/dist/components/matrix-chart/lib/domain.d.ts.map +1 -0
- package/dist/components/matrix-chart/lib/domain.js +58 -0
- package/dist/components/matrix-chart/lib/domain.js.map +1 -0
- package/dist/components/matrix-chart/lib/format.d.ts +5 -0
- package/dist/components/matrix-chart/lib/format.d.ts.map +1 -0
- package/dist/components/matrix-chart/lib/format.js +16 -0
- package/dist/components/matrix-chart/lib/format.js.map +1 -0
- package/dist/components/matrix-chart/lib/index.d.ts +5 -0
- package/dist/components/matrix-chart/lib/index.d.ts.map +1 -0
- package/dist/components/matrix-chart/lib/normalize.d.ts +5 -0
- package/dist/components/matrix-chart/lib/normalize.d.ts.map +1 -0
- package/dist/components/matrix-chart/lib/normalize.js +165 -0
- package/dist/components/matrix-chart/lib/normalize.js.map +1 -0
- package/dist/components/matrix-chart/lib/types.d.ts +33 -0
- package/dist/components/matrix-chart/lib/types.d.ts.map +1 -0
- package/dist/components/matrix-chart/metadata.json.d.ts +110 -0
- package/dist/components/matrix-chart/metadata.json.js +42 -0
- package/dist/components/matrix-chart/metadata.json.js.map +1 -0
- package/dist/components/matrix-chart/render/draw.d.ts +63 -0
- package/dist/components/matrix-chart/render/draw.d.ts.map +1 -0
- package/dist/components/matrix-chart/render/draw.js +225 -0
- package/dist/components/matrix-chart/render/draw.js.map +1 -0
- package/dist/components/matrix-chart/render/index.d.ts +2 -0
- package/dist/components/matrix-chart/render/index.d.ts.map +1 -0
- package/dist/components/network-graph/element/styles.d.ts.map +1 -1
- package/dist/components/network-graph/element/styles.js +177 -57
- package/dist/components/network-graph/element/styles.js.map +1 -1
- package/dist/components/network-graph/element/ui9000-network-graph.d.ts +4 -0
- package/dist/components/network-graph/element/ui9000-network-graph.d.ts.map +1 -1
- package/dist/components/network-graph/element/ui9000-network-graph.js +116 -39
- package/dist/components/network-graph/element/ui9000-network-graph.js.map +1 -1
- package/dist/components/network-graph/lib/domain.d.ts +2 -2
- package/dist/components/network-graph/lib/domain.js.map +1 -1
- package/dist/components/network-graph/lib/index.d.ts +1 -0
- package/dist/components/network-graph/lib/index.d.ts.map +1 -1
- package/dist/components/network-graph/lib/legend.d.ts +15 -0
- package/dist/components/network-graph/lib/legend.d.ts.map +1 -0
- package/dist/components/network-graph/lib/legend.js +35 -0
- package/dist/components/network-graph/lib/legend.js.map +1 -0
- package/dist/components/network-graph/render/draw.d.ts +4 -1
- package/dist/components/network-graph/render/draw.d.ts.map +1 -1
- package/dist/components/network-graph/render/draw.js +34 -9
- package/dist/components/network-graph/render/draw.js.map +1 -1
- package/dist/components/partial-dependence-chart/element/styles.d.ts +2 -0
- package/dist/components/partial-dependence-chart/element/styles.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/element/styles.js +48 -0
- package/dist/components/partial-dependence-chart/element/styles.js.map +1 -0
- package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.d.ts +30 -0
- package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.js +163 -0
- package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.js.map +1 -0
- package/dist/components/partial-dependence-chart/index.d.ts +5 -0
- package/dist/components/partial-dependence-chart/index.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/index.js +18 -0
- package/dist/components/partial-dependence-chart/index.js.map +1 -0
- package/dist/components/partial-dependence-chart/lib/domain.d.ts +6 -0
- package/dist/components/partial-dependence-chart/lib/domain.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/lib/domain.js +16 -0
- package/dist/components/partial-dependence-chart/lib/domain.js.map +1 -0
- package/dist/components/partial-dependence-chart/lib/index.d.ts +5 -0
- package/dist/components/partial-dependence-chart/lib/index.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/lib/normalize.d.ts +4 -0
- package/dist/components/partial-dependence-chart/lib/normalize.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/lib/normalize.js +167 -0
- package/dist/components/partial-dependence-chart/lib/normalize.js.map +1 -0
- package/dist/components/partial-dependence-chart/lib/series.d.ts +15 -0
- package/dist/components/partial-dependence-chart/lib/series.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/lib/series.js +63 -0
- package/dist/components/partial-dependence-chart/lib/series.js.map +1 -0
- package/dist/components/partial-dependence-chart/lib/types.d.ts +50 -0
- package/dist/components/partial-dependence-chart/lib/types.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/metadata.json.d.ts +80 -0
- package/dist/components/partial-dependence-chart/metadata.json.js +42 -0
- package/dist/components/partial-dependence-chart/metadata.json.js.map +1 -0
- package/dist/components/partial-dependence-chart/render/draw.d.ts +34 -0
- package/dist/components/partial-dependence-chart/render/draw.d.ts.map +1 -0
- package/dist/components/partial-dependence-chart/render/draw.js +95 -0
- package/dist/components/partial-dependence-chart/render/draw.js.map +1 -0
- package/dist/components/partial-dependence-chart/render/index.d.ts +2 -0
- package/dist/components/partial-dependence-chart/render/index.d.ts.map +1 -0
- package/dist/components/pie-chart/element/styles.d.ts.map +1 -1
- package/dist/components/pie-chart/element/styles.js +34 -1
- package/dist/components/pie-chart/element/styles.js.map +1 -1
- package/dist/components/pie-chart/element/ui9000-pie-chart.d.ts +0 -2
- package/dist/components/pie-chart/element/ui9000-pie-chart.d.ts.map +1 -1
- package/dist/components/pie-chart/element/ui9000-pie-chart.js +2 -8
- package/dist/components/pie-chart/element/ui9000-pie-chart.js.map +1 -1
- package/dist/components/pie-chart/metadata.json.d.ts +1 -7
- package/dist/components/pie-chart/metadata.json.js +2 -2
- package/dist/components/polar-area-chart/element/styles.d.ts +1 -1
- package/dist/components/polar-area-chart/element/styles.d.ts.map +1 -1
- package/dist/components/{donut-group-chart → polar-area-chart}/element/styles.js +9 -27
- package/dist/components/polar-area-chart/element/styles.js.map +1 -0
- package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.d.ts.map +1 -1
- package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.js +4 -3
- package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.js.map +1 -1
- package/dist/components/polar-area-chart/index.d.ts +1 -1
- package/dist/components/polar-area-chart/index.d.ts.map +1 -1
- package/dist/components/polar-area-chart/index.js +2 -1
- package/dist/components/polar-area-chart/lib/domain.d.ts +8 -0
- package/dist/components/polar-area-chart/lib/domain.d.ts.map +1 -1
- package/dist/components/polar-area-chart/lib/domain.js +20 -0
- package/dist/components/polar-area-chart/lib/domain.js.map +1 -1
- package/dist/components/polar-area-chart/lib/index.d.ts +1 -1
- package/dist/components/polar-area-chart/lib/index.d.ts.map +1 -1
- package/dist/components/polar-area-chart/lib/normalize.d.ts.map +1 -1
- package/dist/components/polar-area-chart/lib/normalize.js +72 -6
- package/dist/components/polar-area-chart/lib/normalize.js.map +1 -1
- package/dist/components/polar-area-chart/lib/types.d.ts +6 -1
- package/dist/components/polar-area-chart/lib/types.d.ts.map +1 -1
- package/dist/components/polar-area-chart/metadata.json.d.ts +1 -1
- package/dist/components/polar-area-chart/metadata.json.js +1 -1
- package/dist/components/polar-area-chart/render/draw.d.ts.map +1 -1
- package/dist/components/polar-area-chart/render/draw.js +2 -2
- package/dist/components/polar-area-chart/render/draw.js.map +1 -1
- package/dist/components/punchcard-chart/metadata.json.d.ts +1 -1
- package/dist/components/punchcard-chart/metadata.json.js +1 -1
- package/dist/components/sankey-chart/element/styles.d.ts.map +1 -1
- package/dist/components/sankey-chart/element/styles.js +7 -27
- package/dist/components/sankey-chart/element/styles.js.map +1 -1
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.d.ts +5 -5
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.d.ts.map +1 -1
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.js +37 -35
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.js.map +1 -1
- package/dist/components/treemap-chart/element/styles.d.ts +2 -0
- package/dist/components/treemap-chart/element/styles.d.ts.map +1 -0
- package/dist/components/treemap-chart/element/styles.js +141 -0
- package/dist/components/treemap-chart/element/styles.js.map +1 -0
- package/dist/components/treemap-chart/element/ui9000-treemap-chart.d.ts +35 -0
- package/dist/components/treemap-chart/element/ui9000-treemap-chart.d.ts.map +1 -0
- package/dist/components/treemap-chart/element/ui9000-treemap-chart.js +177 -0
- package/dist/components/treemap-chart/element/ui9000-treemap-chart.js.map +1 -0
- package/dist/components/treemap-chart/index.d.ts +5 -0
- package/dist/components/treemap-chart/index.d.ts.map +1 -0
- package/dist/components/treemap-chart/index.js +22 -0
- package/dist/components/treemap-chart/index.js.map +1 -0
- package/dist/components/treemap-chart/lib/color.d.ts +25 -0
- package/dist/components/treemap-chart/lib/color.d.ts.map +1 -0
- package/dist/components/treemap-chart/lib/color.js +67 -0
- package/dist/components/treemap-chart/lib/color.js.map +1 -0
- package/dist/components/treemap-chart/lib/format.d.ts +7 -0
- package/dist/components/treemap-chart/lib/format.d.ts.map +1 -0
- package/dist/components/treemap-chart/lib/format.js +9 -0
- package/dist/components/treemap-chart/lib/format.js.map +1 -0
- package/dist/components/treemap-chart/lib/index.d.ts +6 -0
- package/dist/components/treemap-chart/lib/index.d.ts.map +1 -0
- package/dist/components/treemap-chart/lib/layout.d.ts +18 -0
- package/dist/components/treemap-chart/lib/layout.d.ts.map +1 -0
- package/dist/components/treemap-chart/lib/layout.js +31 -0
- package/dist/components/treemap-chart/lib/layout.js.map +1 -0
- package/dist/components/treemap-chart/lib/normalize.d.ts +4 -0
- package/dist/components/treemap-chart/lib/normalize.d.ts.map +1 -0
- package/dist/components/treemap-chart/lib/normalize.js +182 -0
- package/dist/components/treemap-chart/lib/normalize.js.map +1 -0
- package/dist/components/treemap-chart/lib/types.d.ts +63 -0
- package/dist/components/treemap-chart/lib/types.d.ts.map +1 -0
- package/dist/components/treemap-chart/metadata.json.d.ts +126 -0
- package/dist/components/treemap-chart/metadata.json.js +45 -0
- package/dist/components/treemap-chart/render/draw.d.ts +24 -0
- package/dist/components/treemap-chart/render/draw.d.ts.map +1 -0
- package/dist/components/treemap-chart/render/draw.js +124 -0
- package/dist/components/treemap-chart/render/draw.js.map +1 -0
- package/dist/components/treemap-chart/render/index.d.ts +2 -0
- package/dist/components/treemap-chart/render/index.d.ts.map +1 -0
- package/dist/element/chart-legend-render.d.ts +5 -0
- package/dist/element/chart-legend-render.d.ts.map +1 -1
- package/dist/element/chart-legend-render.js +19 -1
- package/dist/element/chart-legend-render.js.map +1 -1
- package/dist/element/chart-shell-styles.d.ts.map +1 -1
- package/dist/element/chart-shell-styles.js +35 -0
- package/dist/element/chart-shell-styles.js.map +1 -1
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +91 -42
- package/dist/index.js.map +1 -1
- package/dist/lazy/index.d.ts +5 -2
- package/dist/lazy/index.d.ts.map +1 -1
- package/dist/lazy/index.js +32 -8
- package/dist/lazy/index.js.map +1 -1
- package/dist/lazy/map-chart.d.ts +4 -0
- package/dist/lazy/map-chart.d.ts.map +1 -0
- package/dist/lazy/map-chart.js +5 -0
- package/dist/lazy/map-chart.js.map +1 -0
- package/dist/lazy/matrix-chart.d.ts +4 -0
- package/dist/lazy/matrix-chart.d.ts.map +1 -0
- package/dist/lazy/matrix-chart.js +5 -0
- package/dist/lazy/matrix-chart.js.map +1 -0
- package/dist/lazy/partial-dependence-chart.d.ts +4 -0
- package/dist/lazy/partial-dependence-chart.d.ts.map +1 -0
- package/dist/lazy/partial-dependence-chart.js +5 -0
- package/dist/lazy/partial-dependence-chart.js.map +1 -0
- package/dist/lazy/treemap-chart.d.ts +4 -0
- package/dist/lazy/treemap-chart.d.ts.map +1 -0
- package/dist/lazy/treemap-chart.js +5 -0
- package/dist/lazy/treemap-chart.js.map +1 -0
- package/dist/utils/axis-units.d.ts +15 -0
- package/dist/utils/axis-units.d.ts.map +1 -0
- package/dist/utils/axis-units.js +27 -0
- package/dist/utils/axis-units.js.map +1 -0
- package/dist/utils/chart-helpers.d.ts +6 -6
- package/dist/utils/chart-helpers.d.ts.map +1 -1
- package/dist/utils/chart-helpers.js +31 -15
- package/dist/utils/chart-helpers.js.map +1 -1
- package/dist/utils/format-text.d.ts +5 -0
- package/dist/utils/format-text.d.ts.map +1 -1
- package/dist/utils/format-text.js +7 -0
- package/dist/utils/format-text.js.map +1 -1
- package/dist/utils/fuse-palette.d.ts +12 -0
- package/dist/utils/fuse-palette.d.ts.map +1 -1
- package/dist/utils/fuse-palette.js +23 -1
- package/dist/utils/fuse-palette.js.map +1 -1
- package/dist/utils/fuse-widget.d.ts +13 -4
- package/dist/utils/fuse-widget.d.ts.map +1 -1
- package/dist/utils/fuse-widget.js.map +1 -1
- package/dist/utils/fusedash-visual.d.ts +77 -52
- package/dist/utils/fusedash-visual.d.ts.map +1 -1
- package/dist/utils/fusedash-visual.js +55 -29
- package/dist/utils/fusedash-visual.js.map +1 -1
- package/package.json +48 -12
- package/dist/components/donut-group-chart/element/styles.d.ts +0 -2
- package/dist/components/donut-group-chart/element/styles.d.ts.map +0 -1
- package/dist/components/donut-group-chart/element/styles.js.map +0 -1
- package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.d.ts +0 -34
- package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.d.ts.map +0 -1
- package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.js +0 -169
- package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.js.map +0 -1
- package/dist/components/donut-group-chart/index.d.ts +0 -5
- package/dist/components/donut-group-chart/index.d.ts.map +0 -1
- package/dist/components/donut-group-chart/index.js +0 -23
- package/dist/components/donut-group-chart/lib/domain.d.ts +0 -39
- package/dist/components/donut-group-chart/lib/domain.d.ts.map +0 -1
- package/dist/components/donut-group-chart/lib/domain.js +0 -51
- package/dist/components/donut-group-chart/lib/domain.js.map +0 -1
- package/dist/components/donut-group-chart/lib/format.d.ts +0 -7
- package/dist/components/donut-group-chart/lib/format.d.ts.map +0 -1
- package/dist/components/donut-group-chart/lib/format.js +0 -21
- package/dist/components/donut-group-chart/lib/format.js.map +0 -1
- package/dist/components/donut-group-chart/lib/index.d.ts +0 -5
- package/dist/components/donut-group-chart/lib/index.d.ts.map +0 -1
- package/dist/components/donut-group-chart/lib/normalize.d.ts +0 -14
- package/dist/components/donut-group-chart/lib/normalize.d.ts.map +0 -1
- package/dist/components/donut-group-chart/lib/normalize.js +0 -98
- package/dist/components/donut-group-chart/lib/normalize.js.map +0 -1
- package/dist/components/donut-group-chart/lib/types.d.ts +0 -49
- package/dist/components/donut-group-chart/lib/types.d.ts.map +0 -1
- package/dist/components/donut-group-chart/metadata.json.d.ts +0 -113
- package/dist/components/donut-group-chart/metadata.json.js +0 -45
- package/dist/components/donut-group-chart/render/draw.d.ts +0 -44
- package/dist/components/donut-group-chart/render/draw.d.ts.map +0 -1
- package/dist/components/donut-group-chart/render/draw.js +0 -194
- package/dist/components/donut-group-chart/render/draw.js.map +0 -1
- package/dist/components/donut-group-chart/render/index.d.ts +0 -2
- package/dist/components/donut-group-chart/render/index.d.ts.map +0 -1
- package/dist/components/donut-group-chart/tests/fixtures.d.ts +0 -33
- package/dist/components/donut-group-chart/tests/fixtures.d.ts.map +0 -1
- package/dist/lazy/donut-group-chart.d.ts +0 -4
- package/dist/lazy/donut-group-chart.d.ts.map +0 -1
- package/dist/lazy/donut-group-chart.js +0 -5
- package/dist/lazy/donut-group-chart.js.map +0 -1
- /package/dist/components/{donut-group-chart → matrix-chart}/index.js.map +0 -0
- /package/dist/components/{donut-group-chart → treemap-chart}/metadata.json.js.map +0 -0
|
@@ -0,0 +1,539 @@
|
|
|
1
|
+
import { nothing, html } from "lit";
|
|
2
|
+
import { property, state, customElement } from "lit/decorators.js";
|
|
3
|
+
import { readCssVar, CSS_VARS } from "../../../context/widget-context.js";
|
|
4
|
+
import { Ui9000ChartElement } from "../../../element/ui9000-chart-base.js";
|
|
5
|
+
import { parseJsonAttr } from "../../../utils/chart-helpers.js";
|
|
6
|
+
import { chartPropsChanged } from "../../../utils/lit-draw.js";
|
|
7
|
+
import { fetchMapGeoJson } from "../lib/geojson.js";
|
|
8
|
+
import { joinLayerFeatures } from "../lib/join.js";
|
|
9
|
+
import { resizeMapChart, stopMapChart, renderMapChart } from "../render/draw.js";
|
|
10
|
+
import { mapChartStyles } from "./styles.js";
|
|
11
|
+
import { normalizeMapData } from "../lib/normalize.js";
|
|
12
|
+
import { defaultLayerSlider, slideThumb, legendLayerOrder, formatAverage, formatFieldLabel, rangeTrackOffset, thumbTrackPercent, MUTED_LEGEND_FILL, formatLegendBucket, sliderIndexFromPointer, legendSpikeHeight } from "../lib/legend.js";
|
|
13
|
+
import { formatMapValue } from "../lib/format.js";
|
|
14
|
+
import { DEFAULT_BUBBLES_RADIUS, sanitizeKey } from "../lib/constants.js";
|
|
15
|
+
import { chartShellStyles } from "../../../element/chart-shell-styles.js";
|
|
16
|
+
const __vite_import_meta_env__ = {};
|
|
17
|
+
var __defProp = Object.defineProperty;
|
|
18
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
19
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
20
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
21
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
22
|
+
if (decorator = decorators[i])
|
|
23
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
24
|
+
if (kind && result) __defProp(target, key, result);
|
|
25
|
+
return result;
|
|
26
|
+
};
|
|
27
|
+
const SPIKE_COLOR = "#939BA7";
|
|
28
|
+
function renderLegendSpike(index, id) {
|
|
29
|
+
const h = legendSpikeHeight(index);
|
|
30
|
+
return html`
|
|
31
|
+
<span class="legend-spike">
|
|
32
|
+
<svg width="25" height=${h} viewBox=${`0 0 25 ${h}`} fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
33
|
+
<mask
|
|
34
|
+
id=${`mask_${id}`}
|
|
35
|
+
style="mask-type:alpha"
|
|
36
|
+
maskUnits="userSpaceOnUse"
|
|
37
|
+
x="6"
|
|
38
|
+
y="0"
|
|
39
|
+
width="13"
|
|
40
|
+
height=${h}
|
|
41
|
+
>
|
|
42
|
+
<path
|
|
43
|
+
d=${`M18.1992 ${h - 0.75}L12.1992 0.25L6.19922 ${h - 0.75}Z`}
|
|
44
|
+
fill=${`url(#linear_gradient_${id})`}
|
|
45
|
+
/>
|
|
46
|
+
</mask>
|
|
47
|
+
<g mask=${`url(#mask_${id})`}>
|
|
48
|
+
<path d=${`M18.1992 ${h - 0.75}L12.1992 0.25L6.19922 ${h - 0.75}Z`} fill=${SPIKE_COLOR} />
|
|
49
|
+
</g>
|
|
50
|
+
<path
|
|
51
|
+
d=${`M22.1992 ${h - 0.75}H19.0291C18.5479 ${h - 0.75} 18.135 ${h - 0.1} 18.0463 ${h - 0.5}L12.1992 0.25L6.35216 ${h - 0.5}C6.26348 ${h - 0.1} 5.85051 ${h - 0.75} 5.36929 ${h - 0.75}H2.19922`}
|
|
52
|
+
stroke=${SPIKE_COLOR}
|
|
53
|
+
fill=${SPIKE_COLOR}
|
|
54
|
+
fill-opacity="0"
|
|
55
|
+
stroke-width="1"
|
|
56
|
+
/>
|
|
57
|
+
<defs>
|
|
58
|
+
<linearGradient
|
|
59
|
+
id=${`linear_gradient_${id}`}
|
|
60
|
+
x1="12.1992"
|
|
61
|
+
y1="0.25"
|
|
62
|
+
x2="12.1992"
|
|
63
|
+
y2=${h}
|
|
64
|
+
gradientUnits="userSpaceOnUse"
|
|
65
|
+
>
|
|
66
|
+
<stop stop-color=${SPIKE_COLOR} stop-opacity="0.7" />
|
|
67
|
+
<stop offset="1" stop-color=${SPIKE_COLOR} stop-opacity="0.2" />
|
|
68
|
+
</linearGradient>
|
|
69
|
+
</defs>
|
|
70
|
+
</svg>
|
|
71
|
+
</span>
|
|
72
|
+
`;
|
|
73
|
+
}
|
|
74
|
+
let Ui9000MapChart = class extends Ui9000ChartElement {
|
|
75
|
+
constructor() {
|
|
76
|
+
super(...arguments);
|
|
77
|
+
this.showLegend = true;
|
|
78
|
+
this.showTooltip = true;
|
|
79
|
+
this.mapboxToken = "";
|
|
80
|
+
this.geojsonBaseUrl = "";
|
|
81
|
+
this.pmtilesBaseUrl = "/pmtiles";
|
|
82
|
+
this._empty = false;
|
|
83
|
+
this._emptyReason = "No data";
|
|
84
|
+
this._tooltip = null;
|
|
85
|
+
this._layers = [];
|
|
86
|
+
this._sliders = {};
|
|
87
|
+
this._activeLayers = [];
|
|
88
|
+
this._legendOpen = true;
|
|
89
|
+
this._layerOpen = {};
|
|
90
|
+
this._model = null;
|
|
91
|
+
this._ctl = null;
|
|
92
|
+
this._legendKey = "";
|
|
93
|
+
this._raf = 0;
|
|
94
|
+
this._drawGen = 0;
|
|
95
|
+
}
|
|
96
|
+
connectedCallback() {
|
|
97
|
+
super.connectedCallback();
|
|
98
|
+
this._resizeObserver = new ResizeObserver(() => {
|
|
99
|
+
cancelAnimationFrame(this._raf);
|
|
100
|
+
this._raf = requestAnimationFrame(() => {
|
|
101
|
+
const root = this.chartRoot();
|
|
102
|
+
if (root && !resizeMapChart(root)) this.scheduleDraw();
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
this._resizeObserver.observe(this);
|
|
106
|
+
}
|
|
107
|
+
disconnectedCallback() {
|
|
108
|
+
var _a;
|
|
109
|
+
(_a = this._resizeObserver) == null ? void 0 : _a.disconnect();
|
|
110
|
+
cancelAnimationFrame(this._raf);
|
|
111
|
+
this.stopLegendDrag();
|
|
112
|
+
const root = this.chartRoot();
|
|
113
|
+
if (root) stopMapChart(root);
|
|
114
|
+
this._ctl = null;
|
|
115
|
+
super.disconnectedCallback();
|
|
116
|
+
}
|
|
117
|
+
updated(changed) {
|
|
118
|
+
if (changed.has("dataJson")) this._model = null;
|
|
119
|
+
if (changed.has("showTooltip") && !this.showTooltip) this._tooltip = null;
|
|
120
|
+
if (this.shouldRedraw(changed)) this.scheduleDraw();
|
|
121
|
+
}
|
|
122
|
+
shouldRedraw(changed) {
|
|
123
|
+
if (!chartPropsChanged(changed)) return false;
|
|
124
|
+
for (const key of changed.keys()) {
|
|
125
|
+
if (typeof key !== "string" || key.startsWith("_")) continue;
|
|
126
|
+
if (key === "showLegend" || key === "showTooltip") continue;
|
|
127
|
+
return true;
|
|
128
|
+
}
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
scheduleDraw() {
|
|
132
|
+
cancelAnimationFrame(this._raf);
|
|
133
|
+
this._raf = requestAnimationFrame(() => {
|
|
134
|
+
void this.draw();
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
chartRoot() {
|
|
138
|
+
var _a;
|
|
139
|
+
return ((_a = this.shadowRoot) == null ? void 0 : _a.querySelector(".chart-root")) ?? null;
|
|
140
|
+
}
|
|
141
|
+
token() {
|
|
142
|
+
if (this.mapboxToken.trim()) return this.mapboxToken.trim();
|
|
143
|
+
const runtime = typeof window !== "undefined" ? window.__RUNTIME_CONFIG__ : void 0;
|
|
144
|
+
if (runtime == null ? void 0 : runtime.MAPBOX_TOKEN) return runtime.MAPBOX_TOKEN;
|
|
145
|
+
const env = __vite_import_meta_env__;
|
|
146
|
+
return ((env == null ? void 0 : env.STORYBOOK_MAPBOX_TOKEN) || (env == null ? void 0 : env.VITE_MAPBOX_TOKEN) || "").trim();
|
|
147
|
+
}
|
|
148
|
+
pmtilesUrl() {
|
|
149
|
+
if (this.pmtilesBaseUrl.trim()) return this.pmtilesBaseUrl.trim();
|
|
150
|
+
const runtime = typeof window !== "undefined" ? window.__RUNTIME_CONFIG__ : void 0;
|
|
151
|
+
if (runtime == null ? void 0 : runtime.MAP_PMTILES_BASE_URL) return runtime.MAP_PMTILES_BASE_URL;
|
|
152
|
+
const env = __vite_import_meta_env__;
|
|
153
|
+
return ((env == null ? void 0 : env.STORYBOOK_MAP_PMTILES_BASE_URL) || (env == null ? void 0 : env.VITE_MAP_PMTILES_BASE_URL) || "/pmtiles").trim();
|
|
154
|
+
}
|
|
155
|
+
mode() {
|
|
156
|
+
const value = readCssVar(this, CSS_VARS.mode, "light");
|
|
157
|
+
return value === "dark" ? "dark" : "light";
|
|
158
|
+
}
|
|
159
|
+
async draw() {
|
|
160
|
+
var _a;
|
|
161
|
+
const root = this.chartRoot();
|
|
162
|
+
if (!root) return;
|
|
163
|
+
const gen = ++this._drawGen;
|
|
164
|
+
const parsed = parseJsonAttr(this.dataJson, null);
|
|
165
|
+
let model = this._model ?? normalizeMapData(parsed);
|
|
166
|
+
this._model = model;
|
|
167
|
+
if (!model.layers.length) {
|
|
168
|
+
this._empty = true;
|
|
169
|
+
this._emptyReason = "No data";
|
|
170
|
+
this._layers = [];
|
|
171
|
+
stopMapChart(root);
|
|
172
|
+
this._ctl = null;
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
const needsGeo = model.layers.some((layer) => !layer.features.length);
|
|
176
|
+
if (needsGeo && this.geojsonBaseUrl) {
|
|
177
|
+
const types = [...new Set(model.layers.map((l) => l.mapType))];
|
|
178
|
+
const loaded = await Promise.all(
|
|
179
|
+
types.map(async (mapType) => [mapType, await fetchMapGeoJson(mapType, this.geojsonBaseUrl)])
|
|
180
|
+
);
|
|
181
|
+
if (gen !== this._drawGen) return;
|
|
182
|
+
const byType = Object.fromEntries(loaded.filter((entry) => entry[1]));
|
|
183
|
+
model = {
|
|
184
|
+
...model,
|
|
185
|
+
layers: model.layers.map(
|
|
186
|
+
(layer) => layer.features.length ? layer : joinLayerFeatures(layer, byType[layer.mapType] ?? void 0)
|
|
187
|
+
)
|
|
188
|
+
};
|
|
189
|
+
this._model = model;
|
|
190
|
+
}
|
|
191
|
+
const token = this.token();
|
|
192
|
+
if (!token) {
|
|
193
|
+
this._empty = true;
|
|
194
|
+
this._emptyReason = "Mapbox token required";
|
|
195
|
+
this._layers = model.layers;
|
|
196
|
+
stopMapChart(root);
|
|
197
|
+
this._ctl = null;
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
const hasMarks = model.layers.some((layer) => layer.features.length > 0);
|
|
201
|
+
this._empty = !hasMarks;
|
|
202
|
+
this._emptyReason = hasMarks ? "No data" : model.layers.some((l) => l.matchTotal > 0 && l.matchHit === 0) ? "No locations matched the map boundaries" : "Map boundaries required";
|
|
203
|
+
this._layers = model.layers;
|
|
204
|
+
if (!hasMarks) {
|
|
205
|
+
stopMapChart(root);
|
|
206
|
+
this._ctl = null;
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
this.syncLegendState(model.layers);
|
|
210
|
+
const ctl = await renderMapChart(root, {
|
|
211
|
+
model,
|
|
212
|
+
token,
|
|
213
|
+
mode: this.mode(),
|
|
214
|
+
showTooltip: this.showTooltip,
|
|
215
|
+
pmtilesBaseUrl: this.pmtilesUrl(),
|
|
216
|
+
activeLayerIds: this._activeLayers,
|
|
217
|
+
sliders: this._sliders,
|
|
218
|
+
year: (_a = model.layers.find((layer) => layer.selectedYear)) == null ? void 0 : _a.selectedYear,
|
|
219
|
+
onHover: this.showTooltip ? (entry) => this.setTooltip(entry) : void 0
|
|
220
|
+
});
|
|
221
|
+
if (gen !== this._drawGen) {
|
|
222
|
+
ctl == null ? void 0 : ctl.destroy();
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
this._ctl = ctl;
|
|
226
|
+
if (!this._ctl) {
|
|
227
|
+
this._empty = true;
|
|
228
|
+
this._emptyReason = "Mapbox GL failed to load";
|
|
229
|
+
stopMapChart(root);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
syncLegendState(layers) {
|
|
233
|
+
const ids = layers.map((layer) => layer.layerId);
|
|
234
|
+
const key = ids.join("\0");
|
|
235
|
+
if (key !== this._legendKey) {
|
|
236
|
+
this._legendKey = key;
|
|
237
|
+
this._sliders = Object.fromEntries(
|
|
238
|
+
layers.map((layer) => [layer.layerId, defaultLayerSlider(layer.colorRanges.length)])
|
|
239
|
+
);
|
|
240
|
+
this._activeLayers = ids;
|
|
241
|
+
this._layerOpen = {};
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
const sliders = { ...this._sliders };
|
|
245
|
+
let slidersChanged = false;
|
|
246
|
+
for (const layer of layers) {
|
|
247
|
+
if (!sliders[layer.layerId]) {
|
|
248
|
+
sliders[layer.layerId] = defaultLayerSlider(layer.colorRanges.length);
|
|
249
|
+
slidersChanged = true;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (slidersChanged) this._sliders = sliders;
|
|
253
|
+
}
|
|
254
|
+
pushLegend() {
|
|
255
|
+
var _a;
|
|
256
|
+
(_a = this._ctl) == null ? void 0 : _a.applyLegend(this._activeLayers, this._sliders);
|
|
257
|
+
}
|
|
258
|
+
toggleLayer(layerId) {
|
|
259
|
+
const on = this._activeLayers.includes(layerId);
|
|
260
|
+
this._activeLayers = on ? this._activeLayers.filter((id) => id !== layerId) : [...this._activeLayers, layerId];
|
|
261
|
+
this.pushLegend();
|
|
262
|
+
}
|
|
263
|
+
toggleLayerOpen(layerId) {
|
|
264
|
+
this._layerOpen = { ...this._layerOpen, [layerId]: this._layerOpen[layerId] === false };
|
|
265
|
+
}
|
|
266
|
+
setSlider(layerId, edge, raw) {
|
|
267
|
+
const layer = this._layers.find((item) => item.layerId === layerId);
|
|
268
|
+
const rangeCount = (layer == null ? void 0 : layer.colorRanges.length) ?? 1;
|
|
269
|
+
const current = this._sliders[layerId] ?? defaultLayerSlider(rangeCount);
|
|
270
|
+
const next = slideThumb(current, edge, raw, rangeCount);
|
|
271
|
+
if (next.leftSlider === current.leftSlider && next.rightSlider === current.rightSlider) return;
|
|
272
|
+
this._sliders = { ...this._sliders, [layerId]: next };
|
|
273
|
+
this.pushLegend();
|
|
274
|
+
}
|
|
275
|
+
startThumbDrag(layerId, edge, e) {
|
|
276
|
+
const thumb = e.currentTarget;
|
|
277
|
+
if (!(thumb instanceof HTMLElement)) return;
|
|
278
|
+
const track = thumb.parentElement;
|
|
279
|
+
if (!track) return;
|
|
280
|
+
e.preventDefault();
|
|
281
|
+
e.stopPropagation();
|
|
282
|
+
thumb.setPointerCapture(e.pointerId);
|
|
283
|
+
this.stopLegendDrag();
|
|
284
|
+
const move = (ev) => {
|
|
285
|
+
const layer = this._layers.find((item) => item.layerId === layerId);
|
|
286
|
+
const max = (layer == null ? void 0 : layer.colorRanges.length) ?? 1;
|
|
287
|
+
const index = sliderIndexFromPointer(ev.clientX, track.getBoundingClientRect(), max);
|
|
288
|
+
this.setSlider(layerId, edge, index);
|
|
289
|
+
};
|
|
290
|
+
const up = (ev) => {
|
|
291
|
+
if (thumb.hasPointerCapture(ev.pointerId)) thumb.releasePointerCapture(ev.pointerId);
|
|
292
|
+
this.stopLegendDrag();
|
|
293
|
+
};
|
|
294
|
+
thumb.addEventListener("pointermove", move);
|
|
295
|
+
thumb.addEventListener("pointerup", up);
|
|
296
|
+
thumb.addEventListener("pointercancel", up);
|
|
297
|
+
this._legendDrag = { thumb, move, up };
|
|
298
|
+
move(e);
|
|
299
|
+
}
|
|
300
|
+
stopLegendDrag() {
|
|
301
|
+
const drag = this._legendDrag;
|
|
302
|
+
if (!drag) return;
|
|
303
|
+
drag.thumb.removeEventListener("pointermove", drag.move);
|
|
304
|
+
drag.thumb.removeEventListener("pointerup", drag.up);
|
|
305
|
+
drag.thumb.removeEventListener("pointercancel", drag.up);
|
|
306
|
+
this._legendDrag = void 0;
|
|
307
|
+
}
|
|
308
|
+
setTooltip(entry) {
|
|
309
|
+
var _a, _b;
|
|
310
|
+
if (!entry) {
|
|
311
|
+
this._tooltip = null;
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
const root = this.chartRoot();
|
|
315
|
+
const x = ((_a = entry.point) == null ? void 0 : _a.x) ?? ((root == null ? void 0 : root.clientWidth) ?? 0) / 2;
|
|
316
|
+
const y = ((_b = entry.point) == null ? void 0 : _b.y) ?? 48;
|
|
317
|
+
this._tooltip = {
|
|
318
|
+
x,
|
|
319
|
+
y,
|
|
320
|
+
title: entry.regionName,
|
|
321
|
+
value: `${entry.valueKey}: ${formatMapValue(entry.value)}`
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
matchNotice() {
|
|
325
|
+
const total = this._layers.reduce((sum, l) => sum + l.matchTotal, 0);
|
|
326
|
+
const hit = this._layers.reduce((sum, l) => sum + l.matchHit, 0);
|
|
327
|
+
if (total > 0 && hit === 0) {
|
|
328
|
+
return `0 of ${total} ${total === 1 ? "location" : "locations"} matched the map boundaries`;
|
|
329
|
+
}
|
|
330
|
+
return null;
|
|
331
|
+
}
|
|
332
|
+
renderLegend() {
|
|
333
|
+
if (!this.showLegend || this._empty) return nothing;
|
|
334
|
+
const layers = legendLayerOrder(this._layers.filter((layer) => layer.features.length > 0));
|
|
335
|
+
if (!layers.length) return nothing;
|
|
336
|
+
return html`
|
|
337
|
+
<div class="map-legend" part="legend">
|
|
338
|
+
<div class="legend-panel-header">
|
|
339
|
+
<p class="legend-kicker">Legend</p>
|
|
340
|
+
<button
|
|
341
|
+
type="button"
|
|
342
|
+
class="legend-chevron"
|
|
343
|
+
aria-expanded=${this._legendOpen}
|
|
344
|
+
aria-label=${this._legendOpen ? "Collapse legend" : "Expand legend"}
|
|
345
|
+
@click=${() => {
|
|
346
|
+
this._legendOpen = !this._legendOpen;
|
|
347
|
+
}}
|
|
348
|
+
></button>
|
|
349
|
+
</div>
|
|
350
|
+
${this._legendOpen ? html`<div class="legend-layers">
|
|
351
|
+
${layers.map((layer) => this.renderLegendLayer(layer))}
|
|
352
|
+
</div>` : nothing}
|
|
353
|
+
</div>
|
|
354
|
+
`;
|
|
355
|
+
}
|
|
356
|
+
renderLegendLayer(layer) {
|
|
357
|
+
const active = this._activeLayers.includes(layer.layerId);
|
|
358
|
+
const open = this._layerOpen[layer.layerId] !== false;
|
|
359
|
+
const slider = this._sliders[layer.layerId] ?? defaultLayerSlider(layer.colorRanges.length);
|
|
360
|
+
const ranges = layer.colorRanges;
|
|
361
|
+
const isBubble = layer.visualisationType === "bubbles";
|
|
362
|
+
const isSpike = layer.visualisationType === "spike";
|
|
363
|
+
const isMarkers = layer.visualisationType === "markers";
|
|
364
|
+
const showRamp = ranges.length > 0;
|
|
365
|
+
return html`
|
|
366
|
+
<div class="legend-layer">
|
|
367
|
+
<div class="legend-layer-header">
|
|
368
|
+
<label class="legend-check">
|
|
369
|
+
<input
|
|
370
|
+
type="checkbox"
|
|
371
|
+
.checked=${active}
|
|
372
|
+
@change=${(e) => {
|
|
373
|
+
e.stopPropagation();
|
|
374
|
+
this.toggleLayer(layer.layerId);
|
|
375
|
+
}}
|
|
376
|
+
/>
|
|
377
|
+
<span>${layer.layerName}</span>
|
|
378
|
+
</label>
|
|
379
|
+
<button
|
|
380
|
+
type="button"
|
|
381
|
+
class="legend-chevron"
|
|
382
|
+
aria-expanded=${open}
|
|
383
|
+
aria-label=${open ? `Collapse ${layer.layerName}` : `Expand ${layer.layerName}`}
|
|
384
|
+
@click=${() => this.toggleLayerOpen(layer.layerId)}
|
|
385
|
+
></button>
|
|
386
|
+
</div>
|
|
387
|
+
${open ? html`
|
|
388
|
+
<div class="legend-details">
|
|
389
|
+
<p class="legend-stat">
|
|
390
|
+
<span class="legend-avg">${formatAverage(layer.average)}</span>
|
|
391
|
+
${formatFieldLabel(layer.valueKey)}
|
|
392
|
+
</p>
|
|
393
|
+
${showRamp ? html`
|
|
394
|
+
<div class="legend-scale" data-kind=${layer.visualisationType}>
|
|
395
|
+
<div
|
|
396
|
+
class="legend-colors"
|
|
397
|
+
?data-qualitative=${isBubble || isSpike}
|
|
398
|
+
>
|
|
399
|
+
<div class="legend-range">
|
|
400
|
+
<div
|
|
401
|
+
class="legend-range-track"
|
|
402
|
+
style="left:${rangeTrackOffset("left", slider.leftSlider, ranges.length)}"
|
|
403
|
+
>
|
|
404
|
+
<button
|
|
405
|
+
type="button"
|
|
406
|
+
class="legend-thumb"
|
|
407
|
+
aria-label="Lowest ${layer.layerName} range"
|
|
408
|
+
style="left:${thumbTrackPercent(slider.leftSlider, ranges.length)}"
|
|
409
|
+
@pointerdown=${(e) => this.startThumbDrag(layer.layerId, "leftSlider", e)}
|
|
410
|
+
></button>
|
|
411
|
+
</div>
|
|
412
|
+
<div
|
|
413
|
+
class="legend-range-track"
|
|
414
|
+
style="right:${rangeTrackOffset("right", slider.rightSlider, ranges.length)}"
|
|
415
|
+
>
|
|
416
|
+
<button
|
|
417
|
+
type="button"
|
|
418
|
+
class="legend-thumb"
|
|
419
|
+
aria-label="Highest ${layer.layerName} range"
|
|
420
|
+
style="left:${thumbTrackPercent(slider.rightSlider, ranges.length)}"
|
|
421
|
+
@pointerdown=${(e) => this.startThumbDrag(layer.layerId, "rightSlider", e)}
|
|
422
|
+
></button>
|
|
423
|
+
</div>
|
|
424
|
+
</div>
|
|
425
|
+
<div class="legend-buckets">
|
|
426
|
+
${ranges.map((range, index) => {
|
|
427
|
+
const inRange = slider.leftSlider <= index && index < slider.rightSlider;
|
|
428
|
+
const fill = isBubble || isSpike ? MUTED_LEGEND_FILL : inRange ? range.color : MUTED_LEGEND_FILL;
|
|
429
|
+
const bubble = isBubble ? DEFAULT_BUBBLES_RADIUS[index] ?? 12 : 0;
|
|
430
|
+
const inner = bubble - 15 > 0 ? bubble - 15 : 0;
|
|
431
|
+
return html`<span
|
|
432
|
+
class="legend-bucket"
|
|
433
|
+
?data-bubble=${isBubble}
|
|
434
|
+
?data-inner=${inner > 0}
|
|
435
|
+
?data-qualitative=${isBubble || isSpike}
|
|
436
|
+
style="background:${fill};--bubble-size:${bubble}px;--inner-size:${inner}px"
|
|
437
|
+
></span>`;
|
|
438
|
+
})}
|
|
439
|
+
</div>
|
|
440
|
+
${isSpike ? html`<div class="legend-spikes">
|
|
441
|
+
${ranges.map(
|
|
442
|
+
(_range, index) => renderLegendSpike(
|
|
443
|
+
index,
|
|
444
|
+
`${sanitizeKey(layer.layerId)}_${index}`
|
|
445
|
+
)
|
|
446
|
+
)}
|
|
447
|
+
</div>` : nothing}
|
|
448
|
+
</div>
|
|
449
|
+
${isMarkers ? nothing : html`<div class="legend-values">
|
|
450
|
+
${ranges.map(
|
|
451
|
+
(range) => html`<span class="legend-value">${formatLegendBucket(range.start, 2)}</span>`
|
|
452
|
+
)}
|
|
453
|
+
</div>`}
|
|
454
|
+
</div>
|
|
455
|
+
` : nothing}
|
|
456
|
+
</div>
|
|
457
|
+
` : nothing}
|
|
458
|
+
</div>
|
|
459
|
+
`;
|
|
460
|
+
}
|
|
461
|
+
render() {
|
|
462
|
+
const title = this.headerTitle();
|
|
463
|
+
const notice = this.matchNotice();
|
|
464
|
+
return html`
|
|
465
|
+
<div class="widget-shell" part="shell">
|
|
466
|
+
${this.renderShellHeader(title)}
|
|
467
|
+
<div class="widget-body">
|
|
468
|
+
<div class="chart-root" part="chart" ?hidden=${this._empty}></div>
|
|
469
|
+
${this._empty ? html`<div class="empty" part="empty">${this._emptyReason}</div>` : nothing}
|
|
470
|
+
${this.renderLegend()}
|
|
471
|
+
${notice && !this._empty ? html`<div class="match-notice">${notice}</div>` : nothing}
|
|
472
|
+
${this._tooltip ? html`<div
|
|
473
|
+
class="tooltip"
|
|
474
|
+
part="tooltip"
|
|
475
|
+
style="left:${this._tooltip.x}px;top:${this._tooltip.y}px"
|
|
476
|
+
>
|
|
477
|
+
<div>${this._tooltip.title}</div>
|
|
478
|
+
<div>${this._tooltip.value}</div>
|
|
479
|
+
</div>` : nothing}
|
|
480
|
+
${this.renderShellLabelTooltip()}
|
|
481
|
+
</div>
|
|
482
|
+
</div>
|
|
483
|
+
`;
|
|
484
|
+
}
|
|
485
|
+
};
|
|
486
|
+
Ui9000MapChart.styles = [mapChartStyles, chartShellStyles];
|
|
487
|
+
__decorateClass([
|
|
488
|
+
property({ type: Boolean, attribute: "show-legend" })
|
|
489
|
+
], Ui9000MapChart.prototype, "showLegend", 2);
|
|
490
|
+
__decorateClass([
|
|
491
|
+
property({ type: Boolean, attribute: "show-tooltip" })
|
|
492
|
+
], Ui9000MapChart.prototype, "showTooltip", 2);
|
|
493
|
+
__decorateClass([
|
|
494
|
+
property({ type: String, attribute: "mapbox-token" })
|
|
495
|
+
], Ui9000MapChart.prototype, "mapboxToken", 2);
|
|
496
|
+
__decorateClass([
|
|
497
|
+
property({ type: String, attribute: "geojson-base-url" })
|
|
498
|
+
], Ui9000MapChart.prototype, "geojsonBaseUrl", 2);
|
|
499
|
+
__decorateClass([
|
|
500
|
+
property({ type: String, attribute: "pmtiles-base-url" })
|
|
501
|
+
], Ui9000MapChart.prototype, "pmtilesBaseUrl", 2);
|
|
502
|
+
__decorateClass([
|
|
503
|
+
state()
|
|
504
|
+
], Ui9000MapChart.prototype, "_empty", 2);
|
|
505
|
+
__decorateClass([
|
|
506
|
+
state()
|
|
507
|
+
], Ui9000MapChart.prototype, "_emptyReason", 2);
|
|
508
|
+
__decorateClass([
|
|
509
|
+
state()
|
|
510
|
+
], Ui9000MapChart.prototype, "_tooltip", 2);
|
|
511
|
+
__decorateClass([
|
|
512
|
+
state()
|
|
513
|
+
], Ui9000MapChart.prototype, "_layers", 2);
|
|
514
|
+
__decorateClass([
|
|
515
|
+
state()
|
|
516
|
+
], Ui9000MapChart.prototype, "_sliders", 2);
|
|
517
|
+
__decorateClass([
|
|
518
|
+
state()
|
|
519
|
+
], Ui9000MapChart.prototype, "_activeLayers", 2);
|
|
520
|
+
__decorateClass([
|
|
521
|
+
state()
|
|
522
|
+
], Ui9000MapChart.prototype, "_legendOpen", 2);
|
|
523
|
+
__decorateClass([
|
|
524
|
+
state()
|
|
525
|
+
], Ui9000MapChart.prototype, "_layerOpen", 2);
|
|
526
|
+
Ui9000MapChart = __decorateClass([
|
|
527
|
+
customElement("ui9000-map-chart")
|
|
528
|
+
], Ui9000MapChart);
|
|
529
|
+
function registerMapChart() {
|
|
530
|
+
if (!customElements.get("ui9000-map-chart")) {
|
|
531
|
+
customElements.define("ui9000-map-chart", Ui9000MapChart);
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
registerMapChart();
|
|
535
|
+
export {
|
|
536
|
+
Ui9000MapChart,
|
|
537
|
+
registerMapChart
|
|
538
|
+
};
|
|
539
|
+
//# sourceMappingURL=ui9000-map-chart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui9000-map-chart.js","sources":["../../../../src/components/map-chart/element/ui9000-map-chart.ts"],"sourcesContent":["import { html, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { CSS_VARS, readCssVar } from '../../../context/widget-context.js';\nimport { chartShellStyles, Ui9000ChartElement } from '../../../element/ui9000-chart-base.js';\nimport { parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport { chartPropsChanged } from '../../../utils/lit-draw.js';\nimport { fetchMapGeoJson } from '../lib/geojson.js';\nimport { joinLayerFeatures } from '../lib/join.js';\nimport {\n DEFAULT_BUBBLES_RADIUS,\n defaultLayerSlider,\n formatAverage,\n formatFieldLabel,\n formatLegendBucket,\n legendLayerOrder,\n legendSpikeHeight,\n MUTED_LEGEND_FILL,\n rangeTrackOffset,\n sanitizeKey,\n slideThumb,\n sliderIndexFromPointer,\n thumbTrackPercent,\n type LayerSlider,\n formatMapValue,\n normalizeMapData,\n type MapChartInput,\n type MapHoverEntry,\n type MapLayerModel,\n type MapModel,\n} from '../lib/index.js';\nimport { renderMapChart, resizeMapChart, stopMapChart, type MapChartController } from '../render/draw.js';\nimport { mapChartStyles } from './styles.js';\n\nconst SPIKE_COLOR = '#939BA7';\n\nfunction renderLegendSpike(index: number, id: string) {\n const h = legendSpikeHeight(index);\n return html`\n <span class=\"legend-spike\">\n <svg width=\"25\" height=${h} viewBox=${`0 0 25 ${h}`} fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <mask\n id=${`mask_${id}`}\n style=\"mask-type:alpha\"\n maskUnits=\"userSpaceOnUse\"\n x=\"6\"\n y=\"0\"\n width=\"13\"\n height=${h}\n >\n <path\n d=${`M18.1992 ${h - 0.75}L12.1992 0.25L6.19922 ${h - 0.75}Z`}\n fill=${`url(#linear_gradient_${id})`}\n />\n </mask>\n <g mask=${`url(#mask_${id})`}>\n <path d=${`M18.1992 ${h - 0.75}L12.1992 0.25L6.19922 ${h - 0.75}Z`} fill=${SPIKE_COLOR} />\n </g>\n <path\n d=${`M22.1992 ${h - 0.75}H19.0291C18.5479 ${h - 0.75} 18.135 ${h - 0.1} 18.0463 ${h - 0.5}L12.1992 0.25L6.35216 ${h - 0.5}C6.26348 ${h - 0.1} 5.85051 ${h - 0.75} 5.36929 ${h - 0.75}H2.19922`}\n stroke=${SPIKE_COLOR}\n fill=${SPIKE_COLOR}\n fill-opacity=\"0\"\n stroke-width=\"1\"\n />\n <defs>\n <linearGradient\n id=${`linear_gradient_${id}`}\n x1=\"12.1992\"\n y1=\"0.25\"\n x2=\"12.1992\"\n y2=${h}\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=${SPIKE_COLOR} stop-opacity=\"0.7\" />\n <stop offset=\"1\" stop-color=${SPIKE_COLOR} stop-opacity=\"0.2\" />\n </linearGradient>\n </defs>\n </svg>\n </span>\n `;\n}\n\ntype RuntimeConfig = {\n MAPBOX_TOKEN?: string;\n MAPBOX_DARK_TOKEN?: string;\n MAP_PMTILES_BASE_URL?: string;\n};\n\n@customElement('ui9000-map-chart')\nexport class Ui9000MapChart extends Ui9000ChartElement {\n static override styles = [mapChartStyles, chartShellStyles];\n\n @property({ type: Boolean, attribute: 'show-legend' })\n showLegend = true;\n\n @property({ type: Boolean, attribute: 'show-tooltip' })\n showTooltip = true;\n\n @property({ type: String, attribute: 'mapbox-token' })\n mapboxToken = '';\n\n @property({ type: String, attribute: 'geojson-base-url' })\n geojsonBaseUrl = '';\n\n @property({ type: String, attribute: 'pmtiles-base-url' })\n pmtilesBaseUrl = '/pmtiles';\n\n @state()\n private _empty = false;\n\n @state()\n private _emptyReason = 'No data';\n\n @state()\n private _tooltip: { x: number; y: number; title: string; value: string } | null = null;\n\n @state()\n private _layers: MapLayerModel[] = [];\n\n @state()\n private _sliders: Record<string, LayerSlider> = {};\n\n @state()\n private _activeLayers: string[] = [];\n\n @state()\n private _legendOpen = true;\n\n @state()\n private _layerOpen: Record<string, boolean> = {};\n\n private _model: MapModel | null = null;\n private _ctl: MapChartController | null = null;\n private _legendKey = '';\n private _legendDrag?: {\n thumb: HTMLElement;\n move: (e: PointerEvent) => void;\n up: (e: PointerEvent) => void;\n };\n private _resizeObserver?: ResizeObserver;\n private _raf = 0;\n private _drawGen = 0;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._resizeObserver = new ResizeObserver(() => {\n cancelAnimationFrame(this._raf);\n this._raf = requestAnimationFrame(() => {\n const root = this.chartRoot();\n if (root && !resizeMapChart(root)) this.scheduleDraw();\n });\n });\n this._resizeObserver.observe(this);\n }\n\n override disconnectedCallback(): void {\n this._resizeObserver?.disconnect();\n cancelAnimationFrame(this._raf);\n this.stopLegendDrag();\n const root = this.chartRoot();\n if (root) stopMapChart(root);\n this._ctl = null;\n super.disconnectedCallback();\n }\n\n override updated(changed: PropertyValues): void {\n if (changed.has('dataJson')) this._model = null;\n if (changed.has('showTooltip') && !this.showTooltip) this._tooltip = null;\n if (this.shouldRedraw(changed)) this.scheduleDraw();\n }\n\n private shouldRedraw(changed: PropertyValues): boolean {\n if (!chartPropsChanged(changed)) return false;\n for (const key of changed.keys()) {\n if (typeof key !== 'string' || key.startsWith('_')) continue;\n if (key === 'showLegend' || key === 'showTooltip') continue;\n return true;\n }\n return false;\n }\n\n private scheduleDraw(): void {\n cancelAnimationFrame(this._raf);\n this._raf = requestAnimationFrame(() => {\n void this.draw();\n });\n }\n\n private chartRoot(): HTMLElement | null {\n return (this.shadowRoot?.querySelector('.chart-root') as HTMLElement | null) ?? null;\n }\n\n private token(): string {\n if (this.mapboxToken.trim()) return this.mapboxToken.trim();\n const runtime =\n typeof window !== 'undefined'\n ? (window as Window & { __RUNTIME_CONFIG__?: RuntimeConfig }).__RUNTIME_CONFIG__\n : undefined;\n if (runtime?.MAPBOX_TOKEN) return runtime.MAPBOX_TOKEN;\n const env = (import.meta as { env?: Record<string, string | undefined> }).env;\n return (env?.STORYBOOK_MAPBOX_TOKEN || env?.VITE_MAPBOX_TOKEN || '').trim();\n }\n\n private pmtilesUrl(): string {\n if (this.pmtilesBaseUrl.trim()) return this.pmtilesBaseUrl.trim();\n const runtime =\n typeof window !== 'undefined'\n ? (window as Window & { __RUNTIME_CONFIG__?: RuntimeConfig }).__RUNTIME_CONFIG__\n : undefined;\n if (runtime?.MAP_PMTILES_BASE_URL) return runtime.MAP_PMTILES_BASE_URL;\n const env = (import.meta as { env?: Record<string, string | undefined> }).env;\n return (env?.STORYBOOK_MAP_PMTILES_BASE_URL || env?.VITE_MAP_PMTILES_BASE_URL || '/pmtiles').trim();\n }\n\n private mode(): 'light' | 'dark' {\n const value = readCssVar(this, CSS_VARS.mode, 'light');\n return value === 'dark' ? 'dark' : 'light';\n }\n\n private async draw(): Promise<void> {\n const root = this.chartRoot();\n if (!root) return;\n const gen = ++this._drawGen;\n\n const parsed = parseJsonAttr<MapChartInput>(this.dataJson, null);\n let model = this._model ?? normalizeMapData(parsed);\n this._model = model;\n\n if (!model.layers.length) {\n this._empty = true;\n this._emptyReason = 'No data';\n this._layers = [];\n stopMapChart(root);\n this._ctl = null;\n return;\n }\n\n const needsGeo = model.layers.some((layer) => !layer.features.length);\n if (needsGeo && this.geojsonBaseUrl) {\n const types = [...new Set(model.layers.map((l) => l.mapType))];\n const loaded = await Promise.all(\n types.map(async (mapType) => [mapType, await fetchMapGeoJson(mapType, this.geojsonBaseUrl)] as const),\n );\n if (gen !== this._drawGen) return;\n const byType = Object.fromEntries(loaded.filter((entry) => entry[1]));\n model = {\n ...model,\n layers: model.layers.map((layer) =>\n layer.features.length ? layer : joinLayerFeatures(layer, byType[layer.mapType] ?? undefined),\n ),\n };\n this._model = model;\n }\n\n const token = this.token();\n if (!token) {\n this._empty = true;\n this._emptyReason = 'Mapbox token required';\n this._layers = model.layers;\n stopMapChart(root);\n this._ctl = null;\n return;\n }\n\n const hasMarks = model.layers.some((layer) => layer.features.length > 0);\n this._empty = !hasMarks;\n this._emptyReason = hasMarks\n ? 'No data'\n : model.layers.some((l) => l.matchTotal > 0 && l.matchHit === 0)\n ? 'No locations matched the map boundaries'\n : 'Map boundaries required';\n this._layers = model.layers;\n if (!hasMarks) {\n stopMapChart(root);\n this._ctl = null;\n return;\n }\n this.syncLegendState(model.layers);\n\n const ctl = await renderMapChart(root, {\n model,\n token,\n mode: this.mode(),\n showTooltip: this.showTooltip,\n pmtilesBaseUrl: this.pmtilesUrl(),\n activeLayerIds: this._activeLayers,\n sliders: this._sliders,\n year: model.layers.find((layer) => layer.selectedYear)?.selectedYear,\n onHover: this.showTooltip\n ? (entry) => this.setTooltip(entry)\n : undefined,\n });\n if (gen !== this._drawGen) {\n ctl?.destroy();\n return;\n }\n this._ctl = ctl;\n if (!this._ctl) {\n this._empty = true;\n this._emptyReason = 'Mapbox GL failed to load';\n stopMapChart(root);\n }\n }\n\n private syncLegendState(layers: MapLayerModel[]): void {\n const ids = layers.map((layer) => layer.layerId);\n const key = ids.join('\\0');\n if (key !== this._legendKey) {\n this._legendKey = key;\n this._sliders = Object.fromEntries(\n layers.map((layer) => [layer.layerId, defaultLayerSlider(layer.colorRanges.length)]),\n );\n this._activeLayers = ids;\n this._layerOpen = {};\n return;\n }\n const sliders = { ...this._sliders };\n let slidersChanged = false;\n for (const layer of layers) {\n if (!sliders[layer.layerId]) {\n sliders[layer.layerId] = defaultLayerSlider(layer.colorRanges.length);\n slidersChanged = true;\n }\n }\n if (slidersChanged) this._sliders = sliders;\n }\n\n private pushLegend(): void {\n this._ctl?.applyLegend(this._activeLayers, this._sliders);\n }\n\n private toggleLayer(layerId: string): void {\n const on = this._activeLayers.includes(layerId);\n this._activeLayers = on\n ? this._activeLayers.filter((id) => id !== layerId)\n : [...this._activeLayers, layerId];\n this.pushLegend();\n }\n\n private toggleLayerOpen(layerId: string): void {\n this._layerOpen = { ...this._layerOpen, [layerId]: this._layerOpen[layerId] === false };\n }\n\n private setSlider(layerId: string, edge: 'leftSlider' | 'rightSlider', raw: number): void {\n const layer = this._layers.find((item) => item.layerId === layerId);\n const rangeCount = layer?.colorRanges.length ?? 1;\n const current = this._sliders[layerId] ?? defaultLayerSlider(rangeCount);\n const next = slideThumb(current, edge, raw, rangeCount);\n if (next.leftSlider === current.leftSlider && next.rightSlider === current.rightSlider) return;\n this._sliders = { ...this._sliders, [layerId]: next };\n this.pushLegend();\n }\n\n private startThumbDrag(layerId: string, edge: 'leftSlider' | 'rightSlider', e: PointerEvent): void {\n const thumb = e.currentTarget;\n if (!(thumb instanceof HTMLElement)) return;\n const track = thumb.parentElement;\n if (!track) return;\n e.preventDefault();\n e.stopPropagation();\n thumb.setPointerCapture(e.pointerId);\n this.stopLegendDrag();\n\n const move = (ev: PointerEvent) => {\n const layer = this._layers.find((item) => item.layerId === layerId);\n const max = layer?.colorRanges.length ?? 1;\n const index = sliderIndexFromPointer(ev.clientX, track.getBoundingClientRect(), max);\n this.setSlider(layerId, edge, index);\n };\n const up = (ev: PointerEvent) => {\n if (thumb.hasPointerCapture(ev.pointerId)) thumb.releasePointerCapture(ev.pointerId);\n this.stopLegendDrag();\n };\n thumb.addEventListener('pointermove', move);\n thumb.addEventListener('pointerup', up);\n thumb.addEventListener('pointercancel', up);\n this._legendDrag = { thumb, move, up };\n move(e);\n }\n\n private stopLegendDrag(): void {\n const drag = this._legendDrag;\n if (!drag) return;\n drag.thumb.removeEventListener('pointermove', drag.move);\n drag.thumb.removeEventListener('pointerup', drag.up);\n drag.thumb.removeEventListener('pointercancel', drag.up);\n this._legendDrag = undefined;\n }\n\n private setTooltip(entry: MapHoverEntry | null): void {\n if (!entry) {\n this._tooltip = null;\n return;\n }\n const root = this.chartRoot();\n const x = entry.point?.x ?? (root?.clientWidth ?? 0) / 2;\n const y = entry.point?.y ?? 48;\n this._tooltip = {\n x,\n y,\n title: entry.regionName,\n value: `${entry.valueKey}: ${formatMapValue(entry.value)}`,\n };\n }\n\n private matchNotice(): string | null {\n const total = this._layers.reduce((sum, l) => sum + l.matchTotal, 0);\n const hit = this._layers.reduce((sum, l) => sum + l.matchHit, 0);\n if (total > 0 && hit === 0) {\n return `0 of ${total} ${total === 1 ? 'location' : 'locations'} matched the map boundaries`;\n }\n return null;\n }\n\n private renderLegend() {\n if (!this.showLegend || this._empty) return nothing;\n const layers = legendLayerOrder(this._layers.filter((layer) => layer.features.length > 0));\n if (!layers.length) return nothing;\n\n return html`\n <div class=\"map-legend\" part=\"legend\">\n <div class=\"legend-panel-header\">\n <p class=\"legend-kicker\">Legend</p>\n <button\n type=\"button\"\n class=\"legend-chevron\"\n aria-expanded=${this._legendOpen}\n aria-label=${this._legendOpen ? 'Collapse legend' : 'Expand legend'}\n @click=${() => {\n this._legendOpen = !this._legendOpen;\n }}\n ></button>\n </div>\n ${this._legendOpen\n ? html`<div class=\"legend-layers\">\n ${layers.map((layer) => this.renderLegendLayer(layer))}\n </div>`\n : nothing}\n </div>\n `;\n }\n\n private renderLegendLayer(layer: MapLayerModel) {\n const active = this._activeLayers.includes(layer.layerId);\n const open = this._layerOpen[layer.layerId] !== false;\n const slider = this._sliders[layer.layerId] ?? defaultLayerSlider(layer.colorRanges.length);\n const ranges = layer.colorRanges;\n const isBubble = layer.visualisationType === 'bubbles';\n const isSpike = layer.visualisationType === 'spike';\n const isMarkers = layer.visualisationType === 'markers';\n const showRamp = ranges.length > 0;\n\n return html`\n <div class=\"legend-layer\">\n <div class=\"legend-layer-header\">\n <label class=\"legend-check\">\n <input\n type=\"checkbox\"\n .checked=${active}\n @change=${(e: Event) => {\n e.stopPropagation();\n this.toggleLayer(layer.layerId);\n }}\n />\n <span>${layer.layerName}</span>\n </label>\n <button\n type=\"button\"\n class=\"legend-chevron\"\n aria-expanded=${open}\n aria-label=${open ? `Collapse ${layer.layerName}` : `Expand ${layer.layerName}`}\n @click=${() => this.toggleLayerOpen(layer.layerId)}\n ></button>\n </div>\n ${open\n ? html`\n <div class=\"legend-details\">\n <p class=\"legend-stat\">\n <span class=\"legend-avg\">${formatAverage(layer.average)}</span>\n ${formatFieldLabel(layer.valueKey)}\n </p>\n ${showRamp\n ? html`\n <div class=\"legend-scale\" data-kind=${layer.visualisationType}>\n <div\n class=\"legend-colors\"\n ?data-qualitative=${isBubble || isSpike}\n >\n <div class=\"legend-range\">\n <div\n class=\"legend-range-track\"\n style=\"left:${rangeTrackOffset('left', slider.leftSlider, ranges.length)}\"\n >\n <button\n type=\"button\"\n class=\"legend-thumb\"\n aria-label=\"Lowest ${layer.layerName} range\"\n style=\"left:${thumbTrackPercent(slider.leftSlider, ranges.length)}\"\n @pointerdown=${(e: PointerEvent) =>\n this.startThumbDrag(layer.layerId, 'leftSlider', e)}\n ></button>\n </div>\n <div\n class=\"legend-range-track\"\n style=\"right:${rangeTrackOffset('right', slider.rightSlider, ranges.length)}\"\n >\n <button\n type=\"button\"\n class=\"legend-thumb\"\n aria-label=\"Highest ${layer.layerName} range\"\n style=\"left:${thumbTrackPercent(slider.rightSlider, ranges.length)}\"\n @pointerdown=${(e: PointerEvent) =>\n this.startThumbDrag(layer.layerId, 'rightSlider', e)}\n ></button>\n </div>\n </div>\n <div class=\"legend-buckets\">\n ${ranges.map((range, index) => {\n const inRange =\n slider.leftSlider <= index && index < slider.rightSlider;\n const fill =\n isBubble || isSpike\n ? MUTED_LEGEND_FILL\n : inRange\n ? range.color\n : MUTED_LEGEND_FILL;\n const bubble = isBubble ? (DEFAULT_BUBBLES_RADIUS[index] ?? 12) : 0;\n const inner = bubble - 15 > 0 ? bubble - 15 : 0;\n return html`<span\n class=\"legend-bucket\"\n ?data-bubble=${isBubble}\n ?data-inner=${inner > 0}\n ?data-qualitative=${isBubble || isSpike}\n style=\"background:${fill};--bubble-size:${bubble}px;--inner-size:${inner}px\"\n ></span>`;\n })}\n </div>\n ${isSpike\n ? html`<div class=\"legend-spikes\">\n ${ranges.map((_range, index) =>\n renderLegendSpike(\n index,\n `${sanitizeKey(layer.layerId)}_${index}`,\n ),\n )}\n </div>`\n : nothing}\n </div>\n ${isMarkers\n ? nothing\n : html`<div class=\"legend-values\">\n ${ranges.map(\n (range) =>\n html`<span class=\"legend-value\">${formatLegendBucket(range.start, 2)}</span>`,\n )}\n </div>`}\n </div>\n `\n : nothing}\n </div>\n `\n : nothing}\n </div>\n `;\n }\n\n override render() {\n const title = this.headerTitle();\n const notice = this.matchNotice();\n return html`\n <div class=\"widget-shell\" part=\"shell\">\n ${this.renderShellHeader(title)}\n <div class=\"widget-body\">\n <div class=\"chart-root\" part=\"chart\" ?hidden=${this._empty}></div>\n ${this._empty ? html`<div class=\"empty\" part=\"empty\">${this._emptyReason}</div>` : nothing}\n ${this.renderLegend()}\n ${notice && !this._empty ? html`<div class=\"match-notice\">${notice}</div>` : nothing}\n ${this._tooltip\n ? html`<div\n class=\"tooltip\"\n part=\"tooltip\"\n style=\"left:${this._tooltip.x}px;top:${this._tooltip.y}px\"\n >\n <div>${this._tooltip.title}</div>\n <div>${this._tooltip.value}</div>\n </div>`\n : nothing}\n ${this.renderShellLabelTooltip()}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-map-chart': Ui9000MapChart;\n }\n}\n\nexport function registerMapChart(): void {\n if (!customElements.get('ui9000-map-chart')) {\n customElements.define('ui9000-map-chart', Ui9000MapChart);\n }\n}\n\nregisterMapChart();\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { Ui9000MapChart, registerMapChart } from './element/ui9000-map-chart.js';
|
|
2
|
+
export { renderMapChart, resizeMapChart, stopMapChart, type MapChartController, type RenderMapChartOptions, } from './render/index.js';
|
|
3
|
+
export { GEOJSON_KEYS, createFeaturesIndex, fetchMapGeoJson, formatMapValue, generateColorRanges, getRegionId, inferMapTypeFromKeyNames, joinLayerFeatures, normalizeMapData, type MapChartInput, type MapHoverEntry, type MapLayerModel, type MapModel, } from './lib/index.js';
|
|
4
|
+
export { default as mapChartMetadata } from './metadata.json';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/map-chart/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjF,OAAO,EACL,cAAc,EACd,cAAc,EACd,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,QAAQ,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { registerMapChart } from "./element/ui9000-map-chart.js";
|
|
2
|
+
import { Ui9000MapChart } from "./element/ui9000-map-chart.js";
|
|
3
|
+
import { default as default2 } from "./metadata.json.js";
|
|
4
|
+
import { GEOJSON_KEYS } from "./lib/constants.js";
|
|
5
|
+
import { createFeaturesIndex, getRegionId, inferMapTypeFromKeyNames } from "./lib/geo-index.js";
|
|
6
|
+
import { fetchMapGeoJson } from "./lib/geojson.js";
|
|
7
|
+
import { formatMapValue } from "./lib/format.js";
|
|
8
|
+
import { generateColorRanges } from "./lib/domain.js";
|
|
9
|
+
import { joinLayerFeatures } from "./lib/join.js";
|
|
10
|
+
import { normalizeMapData } from "./lib/normalize.js";
|
|
11
|
+
import { renderMapChart, resizeMapChart, stopMapChart } from "./render/draw.js";
|
|
12
|
+
export {
|
|
13
|
+
GEOJSON_KEYS,
|
|
14
|
+
Ui9000MapChart,
|
|
15
|
+
createFeaturesIndex,
|
|
16
|
+
fetchMapGeoJson,
|
|
17
|
+
formatMapValue,
|
|
18
|
+
generateColorRanges,
|
|
19
|
+
getRegionId,
|
|
20
|
+
inferMapTypeFromKeyNames,
|
|
21
|
+
joinLayerFeatures,
|
|
22
|
+
default2 as mapChartMetadata,
|
|
23
|
+
normalizeMapData,
|
|
24
|
+
registerMapChart,
|
|
25
|
+
renderMapChart,
|
|
26
|
+
resizeMapChart,
|
|
27
|
+
stopMapChart
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;"}
|