@fusedashlabs/widgets 0.5.0 → 0.6.0
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 +21 -1
- package/README.md +10 -13
- package/dist/catalog/load.js +86 -82
- package/dist/catalog/load.js.map +1 -1
- package/dist/components/area-chart/element/ui9000-area-chart.d.ts +0 -1
- package/dist/components/area-chart/element/ui9000-area-chart.d.ts.map +1 -1
- package/dist/components/area-chart/element/ui9000-area-chart.js +10 -27
- package/dist/components/area-chart/element/ui9000-area-chart.js.map +1 -1
- package/dist/components/area-chart/index.js +1 -1
- package/dist/components/area-grouped-bar-chart/element/ui9000-area-grouped-bar-chart.d.ts +1 -2
- package/dist/components/area-grouped-bar-chart/element/ui9000-area-grouped-bar-chart.d.ts.map +1 -1
- package/dist/components/area-grouped-bar-chart/element/ui9000-area-grouped-bar-chart.js +11 -27
- package/dist/components/area-grouped-bar-chart/element/ui9000-area-grouped-bar-chart.js.map +1 -1
- package/dist/components/area-grouped-bar-chart/index.js +1 -1
- package/dist/components/bar-chart/element/styles.js +1 -1
- package/dist/components/bar-chart/element/styles.js.map +1 -1
- package/dist/components/bar-chart/element/ui9000-bar-chart.d.ts +0 -1
- package/dist/components/bar-chart/element/ui9000-bar-chart.d.ts.map +1 -1
- package/dist/components/bar-chart/element/ui9000-bar-chart.js +10 -30
- package/dist/components/bar-chart/element/ui9000-bar-chart.js.map +1 -1
- package/dist/components/bar-chart/index.js +3 -3
- package/dist/components/bar-chart/metadata.json.d.ts +6 -0
- package/dist/components/bar-chart/metadata.json.js +1 -1
- package/dist/components/bias-variance-tradeoff-chart/element/styles.js +3 -1
- package/dist/components/bias-variance-tradeoff-chart/element/styles.js.map +1 -1
- package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.d.ts +0 -1
- package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.d.ts.map +1 -1
- package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.js +13 -36
- package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.js.map +1 -1
- package/dist/components/bias-variance-tradeoff-chart/index.js +3 -3
- package/dist/components/box-plot-chart/element/ui9000-box-plot-chart.d.ts +0 -1
- package/dist/components/box-plot-chart/element/ui9000-box-plot-chart.d.ts.map +1 -1
- package/dist/components/box-plot-chart/element/ui9000-box-plot-chart.js +13 -35
- package/dist/components/box-plot-chart/element/ui9000-box-plot-chart.js.map +1 -1
- package/dist/components/box-plot-chart/index.js +2 -2
- package/dist/components/box-plot-chart/render/draw.js +1 -1
- package/dist/components/bubble-chart/element/ui9000-bubble-chart.d.ts +0 -1
- package/dist/components/bubble-chart/element/ui9000-bubble-chart.d.ts.map +1 -1
- package/dist/components/bubble-chart/element/ui9000-bubble-chart.js +7 -25
- package/dist/components/bubble-chart/element/ui9000-bubble-chart.js.map +1 -1
- package/dist/components/bubble-chart/index.js +1 -1
- package/dist/components/chart-renderer/element/styles.d.ts.map +1 -1
- package/dist/components/chart-renderer/element/styles.js +4 -0
- package/dist/components/chart-renderer/element/styles.js.map +1 -1
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.d.ts +10 -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 +40 -4
- package/dist/components/chart-renderer/element/ui9000-chart-renderer.js.map +1 -1
- package/dist/components/chart-renderer/index.js +1 -1
- package/dist/components/chart-renderer/lib/registry.d.ts.map +1 -1
- package/dist/components/chart-renderer/lib/registry.js +2 -0
- package/dist/components/chart-renderer/lib/registry.js.map +1 -1
- package/dist/components/custom-widget/element/ui9000-custom-widget.js +2 -2
- package/dist/components/custom-widget/index.js +1 -1
- package/dist/components/donut-chart/element/ui9000-donut-chart.d.ts +0 -1
- package/dist/components/donut-chart/element/ui9000-donut-chart.d.ts.map +1 -1
- package/dist/components/donut-chart/element/ui9000-donut-chart.js +11 -23
- package/dist/components/donut-chart/element/ui9000-donut-chart.js.map +1 -1
- package/dist/components/donut-chart/index.js +2 -2
- package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.d.ts +0 -2
- package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.d.ts.map +1 -1
- package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.js +12 -35
- package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.js.map +1 -1
- package/dist/components/gini-impurity-entropy-chart/index.js +5 -5
- package/dist/components/gini-impurity-entropy-chart/render/draw.js +1 -1
- package/dist/components/histogram-chart/element/ui9000-histogram-chart.d.ts +0 -1
- package/dist/components/histogram-chart/element/ui9000-histogram-chart.d.ts.map +1 -1
- package/dist/components/histogram-chart/element/ui9000-histogram-chart.js +10 -26
- package/dist/components/histogram-chart/element/ui9000-histogram-chart.js.map +1 -1
- package/dist/components/histogram-chart/index.js +2 -2
- package/dist/components/histogram-chart/lib/normalize.d.ts.map +1 -1
- package/dist/components/histogram-chart/lib/normalize.js +1 -3
- package/dist/components/histogram-chart/lib/normalize.js.map +1 -1
- package/dist/components/inspector/element/styles.d.ts +2 -0
- package/dist/components/inspector/element/styles.d.ts.map +1 -0
- package/dist/components/inspector/element/styles.js +98 -0
- package/dist/components/inspector/element/styles.js.map +1 -0
- package/dist/components/inspector/element/ui9000-inspector.d.ts +26 -0
- package/dist/components/inspector/element/ui9000-inspector.d.ts.map +1 -0
- package/dist/components/inspector/element/ui9000-inspector.js +142 -0
- package/dist/components/inspector/element/ui9000-inspector.js.map +1 -0
- package/dist/components/inspector/index.d.ts +4 -0
- package/dist/components/inspector/index.d.ts.map +1 -0
- package/dist/components/inspector/index.js +13 -0
- package/dist/components/inspector/index.js.map +1 -0
- package/dist/components/inspector/lib/index.d.ts +3 -0
- package/dist/components/inspector/lib/index.d.ts.map +1 -0
- package/dist/components/inspector/lib/normalize.d.ts +4 -0
- package/dist/components/inspector/lib/normalize.d.ts.map +1 -0
- package/dist/components/inspector/lib/normalize.js +95 -0
- package/dist/components/inspector/lib/normalize.js.map +1 -0
- package/dist/components/inspector/lib/types.d.ts +44 -0
- package/dist/components/inspector/lib/types.d.ts.map +1 -0
- package/dist/components/inspector/lib/types.js +5 -0
- package/dist/components/inspector/lib/types.js.map +1 -0
- package/dist/components/inspector/metadata.json.d.ts +43 -0
- package/dist/components/inspector/metadata.json.js +45 -0
- package/dist/components/inspector/metadata.json.js.map +1 -0
- package/dist/components/kpi-widget/element/ui9000-kpi-widget.js +2 -2
- package/dist/components/kpi-widget/index.js +3 -3
- package/dist/components/line-chart/element/ui9000-line-chart.d.ts +0 -1
- package/dist/components/line-chart/element/ui9000-line-chart.d.ts.map +1 -1
- package/dist/components/line-chart/element/ui9000-line-chart.js +6 -24
- package/dist/components/line-chart/element/ui9000-line-chart.js.map +1 -1
- package/dist/components/line-chart/index.js +2 -2
- package/dist/components/line-chart/render/draw.d.ts.map +1 -1
- package/dist/components/line-chart/render/draw.js +1 -1
- package/dist/components/line-chart/render/draw.js.map +1 -1
- package/dist/components/lollipop/element/ui9000-lollipop.d.ts +0 -1
- package/dist/components/lollipop/element/ui9000-lollipop.d.ts.map +1 -1
- package/dist/components/lollipop/element/ui9000-lollipop.js +7 -25
- package/dist/components/lollipop/element/ui9000-lollipop.js.map +1 -1
- package/dist/components/lollipop/index.js +2 -2
- package/dist/components/map-chart/element/ui9000-map-chart.d.ts +0 -1
- package/dist/components/map-chart/element/ui9000-map-chart.d.ts.map +1 -1
- package/dist/components/map-chart/element/ui9000-map-chart.js +16 -25
- package/dist/components/map-chart/element/ui9000-map-chart.js.map +1 -1
- package/dist/components/map-chart/index.js +4 -4
- package/dist/components/map-chart/lib/domain.js +1 -1
- package/dist/components/map-chart/lib/geo-index.d.ts.map +1 -1
- package/dist/components/map-chart/lib/geo-index.js +5 -0
- package/dist/components/map-chart/lib/geo-index.js.map +1 -1
- package/dist/components/matrix-chart/element/ui9000-matrix-chart.d.ts +1 -2
- package/dist/components/matrix-chart/element/ui9000-matrix-chart.d.ts.map +1 -1
- package/dist/components/matrix-chart/element/ui9000-matrix-chart.js +16 -26
- package/dist/components/matrix-chart/element/ui9000-matrix-chart.js.map +1 -1
- package/dist/components/matrix-chart/index.js +2 -2
- package/dist/components/network-graph/element/ui9000-network-graph.d.ts.map +1 -1
- package/dist/components/network-graph/element/ui9000-network-graph.js +5 -4
- package/dist/components/network-graph/element/ui9000-network-graph.js.map +1 -1
- package/dist/components/network-graph/index.js +3 -3
- package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.d.ts +0 -1
- package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.d.ts.map +1 -1
- package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.js +7 -30
- package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.js.map +1 -1
- package/dist/components/parallel-coordinates-chart/index.js +3 -3
- package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.d.ts +0 -1
- package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.d.ts.map +1 -1
- package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.js +7 -23
- package/dist/components/partial-dependence-chart/element/ui9000-partial-dependence-chart.js.map +1 -1
- package/dist/components/partial-dependence-chart/index.js +2 -2
- package/dist/components/pie-chart/element/ui9000-pie-chart.d.ts +0 -1
- package/dist/components/pie-chart/element/ui9000-pie-chart.d.ts.map +1 -1
- package/dist/components/pie-chart/element/ui9000-pie-chart.js +11 -23
- package/dist/components/pie-chart/element/ui9000-pie-chart.js.map +1 -1
- package/dist/components/pie-chart/index.js +2 -2
- package/dist/components/pie-chart/lib/normalize.js +1 -1
- package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.d.ts +0 -1
- 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 +14 -23
- package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.js.map +1 -1
- package/dist/components/polar-area-chart/index.js +1 -1
- package/dist/components/punchcard-chart/element/ui9000-punchcard-chart.d.ts +0 -1
- package/dist/components/punchcard-chart/element/ui9000-punchcard-chart.d.ts.map +1 -1
- package/dist/components/punchcard-chart/element/ui9000-punchcard-chart.js +6 -24
- package/dist/components/punchcard-chart/element/ui9000-punchcard-chart.js.map +1 -1
- package/dist/components/punchcard-chart/index.js +2 -2
- package/dist/components/punchcard-chart/render/draw.js +1 -1
- package/dist/components/radar-chart/element/ui9000-radar-chart.d.ts +0 -1
- package/dist/components/radar-chart/element/ui9000-radar-chart.d.ts.map +1 -1
- package/dist/components/radar-chart/element/ui9000-radar-chart.js +8 -25
- package/dist/components/radar-chart/element/ui9000-radar-chart.js.map +1 -1
- package/dist/components/radar-chart/index.js +2 -2
- package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.d.ts +0 -1
- package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.d.ts.map +1 -1
- package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.js +14 -25
- package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.js.map +1 -1
- package/dist/components/radial-bar-chart/index.js +3 -3
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.d.ts +0 -3
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.d.ts.map +1 -1
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.js +19 -37
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.js.map +1 -1
- package/dist/components/sankey-chart/index.js +3 -3
- package/dist/components/scatter-plot-chart/element/ui9000-scatter-plot.d.ts +0 -1
- package/dist/components/scatter-plot-chart/element/ui9000-scatter-plot.d.ts.map +1 -1
- package/dist/components/scatter-plot-chart/element/ui9000-scatter-plot.js +8 -23
- package/dist/components/scatter-plot-chart/element/ui9000-scatter-plot.js.map +1 -1
- package/dist/components/scatter-plot-chart/index.js +1 -1
- package/dist/components/scatter-sparkline-chart/element/ui9000-scatter-sparkline-chart.d.ts +0 -1
- package/dist/components/scatter-sparkline-chart/element/ui9000-scatter-sparkline-chart.d.ts.map +1 -1
- package/dist/components/scatter-sparkline-chart/element/ui9000-scatter-sparkline-chart.js +12 -50
- package/dist/components/scatter-sparkline-chart/element/ui9000-scatter-sparkline-chart.js.map +1 -1
- package/dist/components/scatter-sparkline-chart/index.js +3 -3
- package/dist/components/scatter-sparkline-chart/render/draw.js +1 -1
- package/dist/components/spark-area-chart/element/ui9000-spark-area-chart.d.ts +0 -1
- package/dist/components/spark-area-chart/element/ui9000-spark-area-chart.d.ts.map +1 -1
- package/dist/components/spark-area-chart/element/ui9000-spark-area-chart.js +10 -30
- package/dist/components/spark-area-chart/element/ui9000-spark-area-chart.js.map +1 -1
- package/dist/components/spark-area-chart/index.js +2 -2
- package/dist/components/spark-line-chart/element/ui9000-spark-line-chart.d.ts +0 -1
- package/dist/components/spark-line-chart/element/ui9000-spark-line-chart.d.ts.map +1 -1
- package/dist/components/spark-line-chart/element/ui9000-spark-line-chart.js +10 -30
- package/dist/components/spark-line-chart/element/ui9000-spark-line-chart.js.map +1 -1
- package/dist/components/spark-line-chart/index.js +2 -2
- package/dist/components/status-gauge-widget/element/styles.d.ts +7 -0
- package/dist/components/status-gauge-widget/element/styles.d.ts.map +1 -0
- package/dist/components/status-gauge-widget/element/styles.js +266 -0
- package/dist/components/status-gauge-widget/element/styles.js.map +1 -0
- package/dist/components/status-gauge-widget/element/ui9000-status-gauge-widget.d.ts +29 -0
- package/dist/components/status-gauge-widget/element/ui9000-status-gauge-widget.d.ts.map +1 -0
- package/dist/components/status-gauge-widget/element/ui9000-status-gauge-widget.js +154 -0
- package/dist/components/status-gauge-widget/element/ui9000-status-gauge-widget.js.map +1 -0
- package/dist/components/status-gauge-widget/index.d.ts +4 -0
- package/dist/components/status-gauge-widget/index.d.ts.map +1 -0
- package/dist/components/status-gauge-widget/index.js +12 -0
- package/dist/components/status-gauge-widget/index.js.map +1 -0
- package/dist/components/status-gauge-widget/lib/index.d.ts +3 -0
- package/dist/components/status-gauge-widget/lib/index.d.ts.map +1 -0
- package/dist/components/status-gauge-widget/lib/normalize.d.ts +8 -0
- package/dist/components/status-gauge-widget/lib/normalize.d.ts.map +1 -0
- package/dist/components/status-gauge-widget/lib/normalize.js +111 -0
- package/dist/components/status-gauge-widget/lib/normalize.js.map +1 -0
- package/dist/components/status-gauge-widget/lib/types.d.ts +56 -0
- package/dist/components/status-gauge-widget/lib/types.d.ts.map +1 -0
- package/dist/components/status-gauge-widget/metadata.json.d.ts +20 -0
- package/dist/components/status-gauge-widget/metadata.json.js +39 -0
- package/dist/components/status-gauge-widget/metadata.json.js.map +1 -0
- package/dist/components/status-gauge-widget/render/draw.d.ts +4 -0
- package/dist/components/status-gauge-widget/render/draw.d.ts.map +1 -0
- package/dist/components/status-gauge-widget/render/draw.js +60 -0
- package/dist/components/status-gauge-widget/render/draw.js.map +1 -0
- package/dist/components/step-line-chart/element/ui9000-step-line-chart.d.ts +0 -1
- package/dist/components/step-line-chart/element/ui9000-step-line-chart.d.ts.map +1 -1
- package/dist/components/step-line-chart/element/ui9000-step-line-chart.js +10 -30
- package/dist/components/step-line-chart/element/ui9000-step-line-chart.js.map +1 -1
- package/dist/components/step-line-chart/index.js +2 -2
- package/dist/components/treemap-chart/element/ui9000-treemap-chart.d.ts +0 -1
- package/dist/components/treemap-chart/element/ui9000-treemap-chart.d.ts.map +1 -1
- package/dist/components/treemap-chart/element/ui9000-treemap-chart.js +5 -24
- package/dist/components/treemap-chart/element/ui9000-treemap-chart.js.map +1 -1
- package/dist/components/treemap-chart/index.js +4 -4
- package/dist/components/violin-chart/element/ui9000-violin-chart.js +1 -1
- package/dist/components/violin-chart/index.js +2 -2
- package/dist/components/violin-chart/render/draw.js +1 -1
- package/dist/components/waterfall-chart/element/ui9000-waterfall-chart.d.ts +0 -1
- package/dist/components/waterfall-chart/element/ui9000-waterfall-chart.d.ts.map +1 -1
- package/dist/components/waterfall-chart/element/ui9000-waterfall-chart.js +11 -29
- package/dist/components/waterfall-chart/element/ui9000-waterfall-chart.js.map +1 -1
- package/dist/components/waterfall-chart/index.js +2 -2
- package/dist/element/chart-shell-render.d.ts +3 -0
- package/dist/element/chart-shell-render.d.ts.map +1 -1
- package/dist/element/chart-shell-render.js +80 -19
- package/dist/element/chart-shell-render.js.map +1 -1
- package/dist/element/chart-shell-styles.d.ts +5 -1
- package/dist/element/chart-shell-styles.d.ts.map +1 -1
- package/dist/element/chart-shell-styles.js +126 -7
- package/dist/element/chart-shell-styles.js.map +1 -1
- package/dist/element/chart-tooltip-portal.d.ts +29 -0
- package/dist/element/chart-tooltip-portal.d.ts.map +1 -0
- package/dist/element/chart-tooltip-portal.js +278 -0
- package/dist/element/chart-tooltip-portal.js.map +1 -0
- package/dist/element/header-icons.d.ts +18 -0
- package/dist/element/header-icons.d.ts.map +1 -0
- package/dist/element/header-icons.js +44 -0
- package/dist/element/header-icons.js.map +1 -0
- package/dist/element/ui9000-chart-base.d.ts +19 -0
- package/dist/element/ui9000-chart-base.d.ts.map +1 -1
- package/dist/element/ui9000-chart-base.js +34 -0
- package/dist/element/ui9000-chart-base.js.map +1 -1
- package/dist/element/widget-header.d.ts +35 -0
- package/dist/element/widget-header.d.ts.map +1 -0
- package/dist/element/widget-header.js +59 -0
- package/dist/element/widget-header.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +74 -64
- package/dist/index.js.map +1 -1
- package/dist/lazy/index.d.ts +2 -1
- package/dist/lazy/index.d.ts.map +1 -1
- package/dist/lazy/index.js +8 -0
- package/dist/lazy/index.js.map +1 -1
- package/dist/lazy/status-gauge-widget.d.ts +4 -0
- package/dist/lazy/status-gauge-widget.d.ts.map +1 -0
- package/dist/lazy/status-gauge-widget.js +5 -0
- package/dist/lazy/status-gauge-widget.js.map +1 -0
- package/dist/utils/chart-shell.d.ts +1 -1
- package/dist/utils/chart-shell.d.ts.map +1 -1
- package/dist/utils/chart-shell.js +4 -6
- package/dist/utils/chart-shell.js.map +1 -1
- package/dist/utils/lit-draw.d.ts +1 -0
- package/dist/utils/lit-draw.d.ts.map +1 -1
- package/dist/utils/lit-draw.js +4 -1
- package/dist/utils/lit-draw.js.map +1 -1
- package/package.json +19 -3
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
const HOVER_ATTR = "data-ui9000-chart-tooltip";
|
|
2
|
+
const LABEL_ATTR = "data-ui9000-label-tooltip";
|
|
3
|
+
const STYLE_ID = "ui9000-chart-tooltip-style";
|
|
4
|
+
let hoverOwner = null;
|
|
5
|
+
let labelOwner = null;
|
|
6
|
+
const TOOLTIP_CSS = `
|
|
7
|
+
.ui9000-chart-tooltip {
|
|
8
|
+
position: absolute;
|
|
9
|
+
z-index: 1000;
|
|
10
|
+
display: none;
|
|
11
|
+
flex-direction: column;
|
|
12
|
+
gap: 8px;
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
min-width: 110px;
|
|
15
|
+
padding: 8px 12px;
|
|
16
|
+
border: 1px solid var(--colors-neutral-border-weakest, #dfe1e4);
|
|
17
|
+
border-radius: 6px;
|
|
18
|
+
background: var(--colors-neutral-background-base, #fff);
|
|
19
|
+
color: var(--colors-neutral-text-default, #444547);
|
|
20
|
+
box-shadow:
|
|
21
|
+
0 2px 4px 0 rgba(20, 28, 44, 0.06),
|
|
22
|
+
0 4px 8px 2px rgba(20, 28, 44, 0.06);
|
|
23
|
+
pointer-events: none;
|
|
24
|
+
font-family: var(--ui9000-font-family, system-ui, sans-serif);
|
|
25
|
+
opacity: 0;
|
|
26
|
+
scale: 0.8;
|
|
27
|
+
}
|
|
28
|
+
.ui9000-chart-tooltip.is-open {
|
|
29
|
+
display: flex;
|
|
30
|
+
animation: ui9000-tooltip-in 0.2s forwards;
|
|
31
|
+
}
|
|
32
|
+
@keyframes ui9000-tooltip-in {
|
|
33
|
+
to { opacity: 1; scale: 1; }
|
|
34
|
+
}
|
|
35
|
+
.ui9000-chart-tooltip__title {
|
|
36
|
+
margin: 0;
|
|
37
|
+
font-size: 14px;
|
|
38
|
+
font-weight: 500;
|
|
39
|
+
line-height: 16px;
|
|
40
|
+
text-align: left;
|
|
41
|
+
}
|
|
42
|
+
.ui9000-chart-tooltip__rows {
|
|
43
|
+
display: flex;
|
|
44
|
+
flex-direction: column;
|
|
45
|
+
min-width: 110px;
|
|
46
|
+
}
|
|
47
|
+
.ui9000-chart-tooltip__row {
|
|
48
|
+
display: flex;
|
|
49
|
+
width: 100%;
|
|
50
|
+
justify-content: space-between;
|
|
51
|
+
flex-direction: row;
|
|
52
|
+
gap: 8px;
|
|
53
|
+
border-bottom: 1px dashed var(--colors-neutral-border-weakest, #dfe1e4);
|
|
54
|
+
}
|
|
55
|
+
.ui9000-chart-tooltip__row:last-child {
|
|
56
|
+
border: none;
|
|
57
|
+
}
|
|
58
|
+
.ui9000-chart-tooltip__label {
|
|
59
|
+
font-size: 12px;
|
|
60
|
+
line-height: 14px;
|
|
61
|
+
font-weight: 400;
|
|
62
|
+
margin: 2px 0;
|
|
63
|
+
min-width: 60px;
|
|
64
|
+
max-width: 120px;
|
|
65
|
+
max-height: 2lh;
|
|
66
|
+
overflow: hidden;
|
|
67
|
+
word-wrap: break-all;
|
|
68
|
+
text-overflow: ellipsis;
|
|
69
|
+
opacity: 0.6;
|
|
70
|
+
}
|
|
71
|
+
.ui9000-chart-tooltip__value {
|
|
72
|
+
font-size: 12px;
|
|
73
|
+
line-height: 14px;
|
|
74
|
+
font-weight: 500;
|
|
75
|
+
margin: 2px 0;
|
|
76
|
+
width: max-content;
|
|
77
|
+
}
|
|
78
|
+
.ui9000-chart-tooltip::after,
|
|
79
|
+
.ui9000-chart-tooltip::before {
|
|
80
|
+
content: "";
|
|
81
|
+
position: absolute;
|
|
82
|
+
top: var(--ui9000-tip-top, 100%);
|
|
83
|
+
left: var(--ui9000-tip-left, 25px);
|
|
84
|
+
width: 0;
|
|
85
|
+
height: 0;
|
|
86
|
+
translate: -50%;
|
|
87
|
+
}
|
|
88
|
+
.ui9000-chart-tooltip[data-side='bottom']::after {
|
|
89
|
+
border-right: 5px solid transparent;
|
|
90
|
+
border-top: 8px solid var(--colors-neutral-background-base, #fff);
|
|
91
|
+
border-left: 5px solid transparent;
|
|
92
|
+
}
|
|
93
|
+
.ui9000-chart-tooltip[data-side='top']::after {
|
|
94
|
+
border-right: 5px solid transparent;
|
|
95
|
+
border-bottom: 8px solid var(--colors-neutral-background-base, #fff);
|
|
96
|
+
border-left: 5px solid transparent;
|
|
97
|
+
}
|
|
98
|
+
.ui9000-chart-tooltip[data-side='bottom']::before {
|
|
99
|
+
opacity: 0.1;
|
|
100
|
+
border-right: 7px solid transparent;
|
|
101
|
+
border-top: 8px solid #000;
|
|
102
|
+
border-left: 7px solid transparent;
|
|
103
|
+
}
|
|
104
|
+
.ui9000-chart-tooltip[data-side='top']::before {
|
|
105
|
+
opacity: 0.1;
|
|
106
|
+
border-right: 7px solid transparent;
|
|
107
|
+
border-bottom: 8px solid #000;
|
|
108
|
+
border-left: 7px solid transparent;
|
|
109
|
+
}
|
|
110
|
+
.ui9000-label-tooltip {
|
|
111
|
+
position: absolute;
|
|
112
|
+
z-index: 100;
|
|
113
|
+
display: none;
|
|
114
|
+
box-sizing: border-box;
|
|
115
|
+
padding: 2px 5px;
|
|
116
|
+
border: 1px solid var(--colors-neutral-border-weakest, #dfe1e4);
|
|
117
|
+
border-radius: 5px;
|
|
118
|
+
background: var(--colors-neutral-background-base, #fff);
|
|
119
|
+
color: var(--colors-neutral-text-weak, #6c7584);
|
|
120
|
+
font-family: var(--ui9000-font-family, system-ui, sans-serif);
|
|
121
|
+
font-size: 11px;
|
|
122
|
+
font-weight: 400;
|
|
123
|
+
line-height: 1.35;
|
|
124
|
+
pointer-events: none;
|
|
125
|
+
white-space: nowrap;
|
|
126
|
+
}
|
|
127
|
+
.ui9000-label-tooltip.is-open {
|
|
128
|
+
display: block;
|
|
129
|
+
}
|
|
130
|
+
`;
|
|
131
|
+
function ensureStyle() {
|
|
132
|
+
if (typeof document === "undefined") return;
|
|
133
|
+
if (document.getElementById(STYLE_ID)) return;
|
|
134
|
+
const style = document.createElement("style");
|
|
135
|
+
style.id = STYLE_ID;
|
|
136
|
+
style.textContent = TOOLTIP_CSS;
|
|
137
|
+
document.head.appendChild(style);
|
|
138
|
+
}
|
|
139
|
+
function hoverRoot() {
|
|
140
|
+
if (typeof document === "undefined") return null;
|
|
141
|
+
ensureStyle();
|
|
142
|
+
let el = document.querySelector(`[${HOVER_ATTR}]`);
|
|
143
|
+
if (!el) {
|
|
144
|
+
el = document.createElement("div");
|
|
145
|
+
el.setAttribute(HOVER_ATTR, "");
|
|
146
|
+
el.className = "ui9000-chart-tooltip";
|
|
147
|
+
el.dataset.side = "bottom";
|
|
148
|
+
document.body.appendChild(el);
|
|
149
|
+
}
|
|
150
|
+
return el;
|
|
151
|
+
}
|
|
152
|
+
function labelRoot() {
|
|
153
|
+
if (typeof document === "undefined") return null;
|
|
154
|
+
ensureStyle();
|
|
155
|
+
let el = document.querySelector(`[${LABEL_ATTR}]`);
|
|
156
|
+
if (!el) {
|
|
157
|
+
el = document.createElement("div");
|
|
158
|
+
el.setAttribute(LABEL_ATTR, "");
|
|
159
|
+
el.className = "ui9000-label-tooltip";
|
|
160
|
+
document.body.appendChild(el);
|
|
161
|
+
}
|
|
162
|
+
return el;
|
|
163
|
+
}
|
|
164
|
+
function fillHover(el, content) {
|
|
165
|
+
el.replaceChildren();
|
|
166
|
+
if (content.title) {
|
|
167
|
+
const title = document.createElement("div");
|
|
168
|
+
title.className = "ui9000-chart-tooltip__title name";
|
|
169
|
+
title.textContent = content.title;
|
|
170
|
+
el.appendChild(title);
|
|
171
|
+
}
|
|
172
|
+
if (!content.rows.length) return;
|
|
173
|
+
const rows = document.createElement("div");
|
|
174
|
+
rows.className = "ui9000-chart-tooltip__rows";
|
|
175
|
+
for (const row of content.rows) {
|
|
176
|
+
const line = document.createElement("div");
|
|
177
|
+
line.className = "ui9000-chart-tooltip__row row";
|
|
178
|
+
if (row.label) {
|
|
179
|
+
const label = document.createElement("div");
|
|
180
|
+
label.className = "ui9000-chart-tooltip__label";
|
|
181
|
+
label.textContent = row.label;
|
|
182
|
+
line.appendChild(label);
|
|
183
|
+
}
|
|
184
|
+
const value = document.createElement("div");
|
|
185
|
+
value.className = "ui9000-chart-tooltip__value";
|
|
186
|
+
value.textContent = row.value;
|
|
187
|
+
line.appendChild(value);
|
|
188
|
+
rows.appendChild(line);
|
|
189
|
+
}
|
|
190
|
+
el.appendChild(rows);
|
|
191
|
+
}
|
|
192
|
+
function placeHover(el, event) {
|
|
193
|
+
const tooltipWidth = el.offsetWidth;
|
|
194
|
+
const tooltipHeight = el.offsetHeight;
|
|
195
|
+
const triangleHeight = 8;
|
|
196
|
+
const triangleWidth = 6;
|
|
197
|
+
const offsetX = 25;
|
|
198
|
+
const offsetY = triangleHeight;
|
|
199
|
+
const edge = 5;
|
|
200
|
+
const { pageX, pageY, clientX, clientY } = event;
|
|
201
|
+
let newX = pageX - offsetX;
|
|
202
|
+
let newY = pageY - tooltipHeight - offsetY;
|
|
203
|
+
let atEdge = false;
|
|
204
|
+
let triangleLeft = offsetX;
|
|
205
|
+
let triangleTop = "100%";
|
|
206
|
+
let side = "bottom";
|
|
207
|
+
const viewportWidth = window.innerWidth || tooltipWidth;
|
|
208
|
+
if (clientX + tooltipWidth + edge >= viewportWidth) {
|
|
209
|
+
newX = viewportWidth - tooltipWidth - edge - offsetX;
|
|
210
|
+
atEdge = true;
|
|
211
|
+
} else if (clientX - offsetX <= edge) {
|
|
212
|
+
newX = edge;
|
|
213
|
+
atEdge = true;
|
|
214
|
+
}
|
|
215
|
+
if (tooltipHeight + triangleHeight + edge >= clientY) {
|
|
216
|
+
newY = pageY + triangleHeight;
|
|
217
|
+
triangleTop = `${-triangleHeight}px`;
|
|
218
|
+
side = "top";
|
|
219
|
+
}
|
|
220
|
+
if (atEdge && tooltipWidth > 0) {
|
|
221
|
+
triangleLeft = Math.min(
|
|
222
|
+
Math.max(clientX - newX, edge + triangleWidth / 2),
|
|
223
|
+
tooltipWidth - edge - triangleWidth / 2
|
|
224
|
+
);
|
|
225
|
+
}
|
|
226
|
+
el.style.left = `${newX}px`;
|
|
227
|
+
el.style.top = `${newY}px`;
|
|
228
|
+
el.style.setProperty("--ui9000-tip-left", `${triangleLeft}px`);
|
|
229
|
+
el.style.setProperty("--ui9000-tip-top", triangleTop);
|
|
230
|
+
el.dataset.side = side;
|
|
231
|
+
}
|
|
232
|
+
function presentChartTooltip(owner, event, content) {
|
|
233
|
+
const el = hoverRoot();
|
|
234
|
+
if (!el) return;
|
|
235
|
+
const opening = hoverOwner !== owner || !el.classList.contains("is-open");
|
|
236
|
+
hoverOwner = owner;
|
|
237
|
+
fillHover(el, content);
|
|
238
|
+
el.classList.add("is-open");
|
|
239
|
+
placeHover(el, event);
|
|
240
|
+
if (opening) {
|
|
241
|
+
el.classList.remove("is-open");
|
|
242
|
+
void el.offsetWidth;
|
|
243
|
+
el.classList.add("is-open");
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
function dismissChartTooltip(owner) {
|
|
247
|
+
var _a;
|
|
248
|
+
if (hoverOwner !== owner) return;
|
|
249
|
+
hoverOwner = null;
|
|
250
|
+
(_a = hoverRoot()) == null ? void 0 : _a.classList.remove("is-open");
|
|
251
|
+
}
|
|
252
|
+
function presentLabelTooltip(owner, event, text) {
|
|
253
|
+
const el = labelRoot();
|
|
254
|
+
if (!el) return;
|
|
255
|
+
labelOwner = owner;
|
|
256
|
+
el.textContent = text;
|
|
257
|
+
el.style.left = `${event.pageX}px`;
|
|
258
|
+
el.style.top = `${event.pageY - 25}px`;
|
|
259
|
+
el.classList.add("is-open");
|
|
260
|
+
}
|
|
261
|
+
function dismissLabelTooltip(owner) {
|
|
262
|
+
var _a;
|
|
263
|
+
if (labelOwner !== owner) return;
|
|
264
|
+
labelOwner = null;
|
|
265
|
+
(_a = labelRoot()) == null ? void 0 : _a.classList.remove("is-open");
|
|
266
|
+
}
|
|
267
|
+
function dismissTooltips(owner) {
|
|
268
|
+
dismissChartTooltip(owner);
|
|
269
|
+
dismissLabelTooltip(owner);
|
|
270
|
+
}
|
|
271
|
+
export {
|
|
272
|
+
dismissChartTooltip,
|
|
273
|
+
dismissLabelTooltip,
|
|
274
|
+
dismissTooltips,
|
|
275
|
+
presentChartTooltip,
|
|
276
|
+
presentLabelTooltip
|
|
277
|
+
};
|
|
278
|
+
//# sourceMappingURL=chart-tooltip-portal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chart-tooltip-portal.js","sources":["../../src/element/chart-tooltip-portal.ts"],"sourcesContent":["/**\n * Chart hover tooltip and axis-label tooltip, ported from the client.\n * Both are mounted on document.body so dashboard overflow does not clip them.\n *\n * Hover card matches `@fuselab-creative/design-system` Tooltip plus the\n * label/value rows from the client TooltipContent.\n * Axis-label chip matches `Widgets/components/LabelTooltip`.\n */\n\nexport type ChartTooltipRow = { label: string; value: string };\n\nexport type ChartTooltipContent = {\n title?: string;\n rows: ChartTooltipRow[];\n};\n\ntype PointerEventLike = {\n pageX: number;\n pageY: number;\n clientX: number;\n clientY: number;\n};\n\nconst HOVER_ATTR = 'data-ui9000-chart-tooltip';\nconst LABEL_ATTR = 'data-ui9000-label-tooltip';\nconst STYLE_ID = 'ui9000-chart-tooltip-style';\n\nlet hoverOwner: HTMLElement | null = null;\nlet labelOwner: HTMLElement | null = null;\n\nconst TOOLTIP_CSS = `\n.ui9000-chart-tooltip {\n position: absolute;\n z-index: 1000;\n display: none;\n flex-direction: column;\n gap: 8px;\n box-sizing: border-box;\n min-width: 110px;\n padding: 8px 12px;\n border: 1px solid var(--colors-neutral-border-weakest, #dfe1e4);\n border-radius: 6px;\n background: var(--colors-neutral-background-base, #fff);\n color: var(--colors-neutral-text-default, #444547);\n box-shadow:\n 0 2px 4px 0 rgba(20, 28, 44, 0.06),\n 0 4px 8px 2px rgba(20, 28, 44, 0.06);\n pointer-events: none;\n font-family: var(--ui9000-font-family, system-ui, sans-serif);\n opacity: 0;\n scale: 0.8;\n}\n.ui9000-chart-tooltip.is-open {\n display: flex;\n animation: ui9000-tooltip-in 0.2s forwards;\n}\n@keyframes ui9000-tooltip-in {\n to { opacity: 1; scale: 1; }\n}\n.ui9000-chart-tooltip__title {\n margin: 0;\n font-size: 14px;\n font-weight: 500;\n line-height: 16px;\n text-align: left;\n}\n.ui9000-chart-tooltip__rows {\n display: flex;\n flex-direction: column;\n min-width: 110px;\n}\n.ui9000-chart-tooltip__row {\n display: flex;\n width: 100%;\n justify-content: space-between;\n flex-direction: row;\n gap: 8px;\n border-bottom: 1px dashed var(--colors-neutral-border-weakest, #dfe1e4);\n}\n.ui9000-chart-tooltip__row:last-child {\n border: none;\n}\n.ui9000-chart-tooltip__label {\n font-size: 12px;\n line-height: 14px;\n font-weight: 400;\n margin: 2px 0;\n min-width: 60px;\n max-width: 120px;\n max-height: 2lh;\n overflow: hidden;\n word-wrap: break-all;\n text-overflow: ellipsis;\n opacity: 0.6;\n}\n.ui9000-chart-tooltip__value {\n font-size: 12px;\n line-height: 14px;\n font-weight: 500;\n margin: 2px 0;\n width: max-content;\n}\n.ui9000-chart-tooltip::after,\n.ui9000-chart-tooltip::before {\n content: \"\";\n position: absolute;\n top: var(--ui9000-tip-top, 100%);\n left: var(--ui9000-tip-left, 25px);\n width: 0;\n height: 0;\n translate: -50%;\n}\n.ui9000-chart-tooltip[data-side='bottom']::after {\n border-right: 5px solid transparent;\n border-top: 8px solid var(--colors-neutral-background-base, #fff);\n border-left: 5px solid transparent;\n}\n.ui9000-chart-tooltip[data-side='top']::after {\n border-right: 5px solid transparent;\n border-bottom: 8px solid var(--colors-neutral-background-base, #fff);\n border-left: 5px solid transparent;\n}\n.ui9000-chart-tooltip[data-side='bottom']::before {\n opacity: 0.1;\n border-right: 7px solid transparent;\n border-top: 8px solid #000;\n border-left: 7px solid transparent;\n}\n.ui9000-chart-tooltip[data-side='top']::before {\n opacity: 0.1;\n border-right: 7px solid transparent;\n border-bottom: 8px solid #000;\n border-left: 7px solid transparent;\n}\n.ui9000-label-tooltip {\n position: absolute;\n z-index: 100;\n display: none;\n box-sizing: border-box;\n padding: 2px 5px;\n border: 1px solid var(--colors-neutral-border-weakest, #dfe1e4);\n border-radius: 5px;\n background: var(--colors-neutral-background-base, #fff);\n color: var(--colors-neutral-text-weak, #6c7584);\n font-family: var(--ui9000-font-family, system-ui, sans-serif);\n font-size: 11px;\n font-weight: 400;\n line-height: 1.35;\n pointer-events: none;\n white-space: nowrap;\n}\n.ui9000-label-tooltip.is-open {\n display: block;\n}\n`;\n\nfunction ensureStyle(): void {\n if (typeof document === 'undefined') return;\n if (document.getElementById(STYLE_ID)) return;\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = TOOLTIP_CSS;\n document.head.appendChild(style);\n}\n\nfunction hoverRoot(): HTMLDivElement | null {\n if (typeof document === 'undefined') return null;\n ensureStyle();\n let el = document.querySelector(`[${HOVER_ATTR}]`) as HTMLDivElement | null;\n if (!el) {\n el = document.createElement('div');\n el.setAttribute(HOVER_ATTR, '');\n el.className = 'ui9000-chart-tooltip';\n el.dataset.side = 'bottom';\n document.body.appendChild(el);\n }\n return el;\n}\n\nfunction labelRoot(): HTMLDivElement | null {\n if (typeof document === 'undefined') return null;\n ensureStyle();\n let el = document.querySelector(`[${LABEL_ATTR}]`) as HTMLDivElement | null;\n if (!el) {\n el = document.createElement('div');\n el.setAttribute(LABEL_ATTR, '');\n el.className = 'ui9000-label-tooltip';\n document.body.appendChild(el);\n }\n return el;\n}\n\nfunction fillHover(el: HTMLDivElement, content: ChartTooltipContent): void {\n el.replaceChildren();\n if (content.title) {\n const title = document.createElement('div');\n title.className = 'ui9000-chart-tooltip__title name';\n title.textContent = content.title;\n el.appendChild(title);\n }\n if (!content.rows.length) return;\n const rows = document.createElement('div');\n rows.className = 'ui9000-chart-tooltip__rows';\n for (const row of content.rows) {\n const line = document.createElement('div');\n line.className = 'ui9000-chart-tooltip__row row';\n if (row.label) {\n const label = document.createElement('div');\n label.className = 'ui9000-chart-tooltip__label';\n label.textContent = row.label;\n line.appendChild(label);\n }\n const value = document.createElement('div');\n value.className = 'ui9000-chart-tooltip__value';\n value.textContent = row.value;\n line.appendChild(value);\n rows.appendChild(line);\n }\n el.appendChild(rows);\n}\n\nfunction placeHover(el: HTMLDivElement, event: PointerEventLike): void {\n const tooltipWidth = el.offsetWidth;\n const tooltipHeight = el.offsetHeight;\n const triangleHeight = 8;\n const triangleWidth = 6;\n const offsetX = 25;\n const offsetY = triangleHeight;\n const edge = 5;\n const { pageX, pageY, clientX, clientY } = event;\n\n let newX = pageX - offsetX;\n let newY = pageY - tooltipHeight - offsetY;\n let atEdge = false;\n let triangleLeft = offsetX;\n let triangleTop = '100%';\n let side: 'top' | 'bottom' = 'bottom';\n\n const viewportWidth = window.innerWidth || tooltipWidth;\n if (clientX + tooltipWidth + edge >= viewportWidth) {\n newX = viewportWidth - tooltipWidth - edge - offsetX;\n atEdge = true;\n } else if (clientX - offsetX <= edge) {\n newX = edge;\n atEdge = true;\n }\n\n if (tooltipHeight + triangleHeight + edge >= clientY) {\n newY = pageY + triangleHeight;\n triangleTop = `${-triangleHeight}px`;\n side = 'top';\n }\n\n if (atEdge && tooltipWidth > 0) {\n triangleLeft = Math.min(\n Math.max(clientX - newX, edge + triangleWidth / 2),\n tooltipWidth - edge - triangleWidth / 2,\n );\n }\n\n el.style.left = `${newX}px`;\n el.style.top = `${newY}px`;\n el.style.setProperty('--ui9000-tip-left', `${triangleLeft}px`);\n el.style.setProperty('--ui9000-tip-top', triangleTop);\n el.dataset.side = side;\n}\n\nexport function presentChartTooltip(\n owner: HTMLElement,\n event: PointerEventLike,\n content: ChartTooltipContent,\n): void {\n const el = hoverRoot();\n if (!el) return;\n const opening = hoverOwner !== owner || !el.classList.contains('is-open');\n hoverOwner = owner;\n fillHover(el, content);\n el.classList.add('is-open');\n placeHover(el, event);\n if (opening) {\n el.classList.remove('is-open');\n void el.offsetWidth;\n el.classList.add('is-open');\n }\n}\n\nexport function dismissChartTooltip(owner: HTMLElement): void {\n if (hoverOwner !== owner) return;\n hoverOwner = null;\n hoverRoot()?.classList.remove('is-open');\n}\n\nexport function presentLabelTooltip(\n owner: HTMLElement,\n event: PointerEventLike,\n text: string,\n): void {\n const el = labelRoot();\n if (!el) return;\n labelOwner = owner;\n el.textContent = text;\n el.style.left = `${event.pageX}px`;\n el.style.top = `${event.pageY - 25}px`;\n el.classList.add('is-open');\n}\n\nexport function dismissLabelTooltip(owner: HTMLElement): void {\n if (labelOwner !== owner) return;\n labelOwner = null;\n labelRoot()?.classList.remove('is-open');\n}\n\nexport function dismissTooltips(owner: HTMLElement): void {\n dismissChartTooltip(owner);\n dismissLabelTooltip(owner);\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { SVGTemplateResult } from 'lit';
|
|
2
|
+
/** Carbon OverflowMenuHorizontal, rendered at 16. */
|
|
3
|
+
export declare const iconOverflow: SVGTemplateResult;
|
|
4
|
+
/** Carbon Download, 16px glyph. */
|
|
5
|
+
export declare const iconDownload: SVGTemplateResult;
|
|
6
|
+
/** Carbon TrashCan, rendered at 16. */
|
|
7
|
+
export declare const iconRemove: SVGTemplateResult;
|
|
8
|
+
/** Carbon SettingsAdjust, rendered at 16. */
|
|
9
|
+
export declare const iconSettings: SVGTemplateResult;
|
|
10
|
+
/** Client `ai-filled.svg`. Keeps its own fill; the button color must not recolor it. */
|
|
11
|
+
export declare const iconChat: import('lit-html').TemplateResult<2>;
|
|
12
|
+
/** Client `tableIcon.svg`. */
|
|
13
|
+
export declare const iconTable: SVGTemplateResult;
|
|
14
|
+
/** Client `FeedBackIcon.svg`. */
|
|
15
|
+
export declare const iconFeedback: SVGTemplateResult;
|
|
16
|
+
/** Client `report-icon.svg` (Add to page). */
|
|
17
|
+
export declare const iconPage: SVGTemplateResult;
|
|
18
|
+
//# sourceMappingURL=header-icons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header-icons.d.ts","sourceRoot":"","sources":["../../src/element/header-icons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,iBAAiB,EAAE,MAAM,KAAK,CAAC;AAclD,qDAAqD;AACrD,eAAO,MAAM,YAAY,mBAGxB,CAAC;AAEF,mCAAmC;AACnC,eAAO,MAAM,YAAY,mBAGxB,CAAC;AAEF,uCAAuC;AACvC,eAAO,MAAM,UAAU,mBAGtB,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,YAAY,mBAGxB,CAAC;AAEF,wFAAwF;AACxF,eAAO,MAAM,QAAQ,sCAA+7B,CAAC;AAEr9B,8BAA8B;AAC9B,eAAO,MAAM,SAAS,mBAGrB,CAAC;AAEF,iCAAiC;AACjC,eAAO,MAAM,YAAY,mBAGxB,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,QAAQ,mBAGpB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { svg } from "lit";
|
|
2
|
+
function glyph(viewBox, paths) {
|
|
3
|
+
return svg`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="${viewBox}" fill="currentColor" aria-hidden="true">${paths}</svg>`;
|
|
4
|
+
}
|
|
5
|
+
const iconOverflow = glyph(
|
|
6
|
+
"0 0 32 32",
|
|
7
|
+
svg`<circle cx="8" cy="16" r="2"></circle><circle cx="16" cy="16" r="2"></circle><circle cx="24" cy="16" r="2"></circle>`
|
|
8
|
+
);
|
|
9
|
+
const iconDownload = glyph(
|
|
10
|
+
"0 0 16 16",
|
|
11
|
+
svg`<path d="M13 7 12.3 6.3 8.5 10.1 8.5 1 7.5 1 7.5 10.1 3.7 6.3 3 7 8 12z"></path><path d="M13,12v2H3v-2H2v2l0,0c0,0.6,0.4,1,1,1h10c0.6,0,1-0.4,1-1l0,0v-2H13z"></path>`
|
|
12
|
+
);
|
|
13
|
+
const iconRemove = glyph(
|
|
14
|
+
"0 0 32 32",
|
|
15
|
+
svg`<path d="M12 12H14V24H12z"></path><path d="M18 12H20V24H18z"></path><path d="M4,6V8H6V28a2,2,0,0,0,2,2H24a2,2,0,0,0,2-2V8h2V6ZM8,28V8H24V28Z"></path><path d="M12 2H20V4H12z"></path>`
|
|
16
|
+
);
|
|
17
|
+
const iconSettings = glyph(
|
|
18
|
+
"0 0 32 32",
|
|
19
|
+
svg`<path d="M30,8h-4.1c-0.5-2.3-2.5-4-4.9-4s-4.4,1.7-4.9,4H2v2h14.1c0.5,2.3,2.5,4,4.9,4s4.4-1.7,4.9-4H30V8z M21,12c-1.7,0-3-1.3-3-3 s1.3-3,3-3s3,1.3,3,3S22.7,12,21,12z"></path><path d="M2,24h4.1c0.5,2.3,2.5,4,4.9,4s4.4-1.7,4.9-4H30v-2H15.9c-0.5-2.3-2.5-4-4.9-4s-4.4,1.7-4.9,4H2V24z M11,20c1.7,0,3,1.3,3,3 s-1.3,3-3,3s-3-1.3-3-3S9.3,20,11,20z"></path>`
|
|
20
|
+
);
|
|
21
|
+
const iconChat = svg`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><path fill="var(--colors-primary-icon-weaker, #9ea1fa)" fill-rule="evenodd" d="M.867 6.18a7.3 7.3 0 0 1 .76-1.86 7.36 7.36 0 0 1 9.221-3.105 2.9 2.9 0 0 1 1.278 1.605 2.92 2.92 0 0 1-.18 2.243l-.044.082-.007.011-.075.127-.002.004-.1.171-7.992-.05h-.175a3.57 3.57 0 0 0-2.83 1.498 7 7 0 0 1 .146-.726m.584.836A2.92 2.92 0 0 0 .7 8.939a7.36 7.36 0 0 0 9.992 5.913 3.55 3.55 0 0 1-1.634-.58 3.6 3.6 0 0 1-1.085-1.133l-.007-.012-.076-.134-3.948-6.939-.001.002-.205-.007h-.027l-.132-.001h-.03a2.94 2.94 0 0 0-2.096.968m6.89 5.476.004.006h.007l.09.17.005.009.006.012q.03.056.063.11l.005.009.002.003.006.01a2.94 2.94 0 0 0 2.308 1.4q.098.007.194.007c.521 0 1.009-.137 1.432-.375a7.362 7.362 0 0 0 .123-11.611c.251.548.352 1.134.316 1.705-.032.49-.163.97-.387 1.407l.004.003-.065.111-.075.127-.015.027-.28.478z" clip-rule="evenodd"></path></svg>`;
|
|
22
|
+
const iconTable = glyph(
|
|
23
|
+
"0 0 16 16",
|
|
24
|
+
svg`<path d="M13.5 1.5h-11a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h11a1 1 0 0 0 1-1v-11a1 1 0 0 0-1-1m0 1v2h-11v-2zm-5 3h5V9h-5zM7.5 9h-5V5.5h5zm-5 1h5v3.5h-5zm6 3.5V10h5v3.5z"></path>`
|
|
25
|
+
);
|
|
26
|
+
const iconFeedback = glyph(
|
|
27
|
+
"0 0 16 16",
|
|
28
|
+
svg`<path fill-rule="evenodd" d="M8 6.48c0 .699-.306 1.348-.814 1.812A2.75 2.75 0 0 1 5.334 9H0V4.418l1.369-1.874L1.767 0h1.566c.326 0 .655.118.91.35.259.237.423.577.424.953V2.74h1.667a1.7 1.7 0 0 1 1.145.44c.32.293.52.71.521 1.167zM3.667 3.74V1.303a.3.3 0 0 0-.098-.215A.35.35 0 0 0 3.333 1h-.71l-.304 1.938L1 4.744V8h4.333c.442 0 .866-.16 1.178-.446A1.46 1.46 0 0 0 7 6.478v-2.13a.58.58 0 0 0-.196-.43.7.7 0 0 0-.47-.179H3.666zM8 9.52c0-.699.306-1.348.814-1.812A2.75 2.75 0 0 1 10.666 7H16v4.582l-1.369 1.874L14.233 16h-1.566c-.326 0-.655-.118-.91-.35a1.3 1.3 0 0 1-.424-.954v-1.435H9.666a1.7 1.7 0 0 1-1.145-.44c-.32-.293-.52-.71-.521-1.168zm4.333 2.74v2.436c0 .08.035.158.098.215a.35.35 0 0 0 .236.089h.71l.304-1.938L15 11.256V8h-4.333c-.442 0-.866.16-1.178.446A1.46 1.46 0 0 0 9 9.522v2.13c0 .162.07.316.196.43a.7.7 0 0 0 .47.179h2.667z" clip-rule="evenodd"></path>`
|
|
29
|
+
);
|
|
30
|
+
const iconPage = glyph(
|
|
31
|
+
"0 0 16 16",
|
|
32
|
+
svg`<path d="M9 9H5v1h4zM11 6.5H5v1h6zM7.5 11.5H5v1h2.5z"></path><path d="M12.5 2.5H11V2a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1v.5H3.5a1 1 0 0 0-1 1V14a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1V3.5a1 1 0 0 0-1-1M6 2h4v2H6zm6.5 12h-9V3.5H5V5h6V3.5h1.5z"></path>`
|
|
33
|
+
);
|
|
34
|
+
export {
|
|
35
|
+
iconChat,
|
|
36
|
+
iconDownload,
|
|
37
|
+
iconFeedback,
|
|
38
|
+
iconOverflow,
|
|
39
|
+
iconPage,
|
|
40
|
+
iconRemove,
|
|
41
|
+
iconSettings,
|
|
42
|
+
iconTable
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=header-icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header-icons.js","sources":["../../src/element/header-icons.ts"],"sourcesContent":["import { svg, type SVGTemplateResult } from 'lit';\n\n/**\n * Header icons from the FuseDash widget menu.\n * Overflow, download, remove, and settings are Carbon icons at 16px\n * (Apache-2.0). Chat, table, feedback, and add-to-page are the same SVGs\n * the client menu renders next to those Carbon icons.\n * Clip paths from the source files are the 16×16 viewBox, so they are omitted.\n */\n\nfunction glyph(viewBox: string, paths: SVGTemplateResult): SVGTemplateResult {\n return svg`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"${viewBox}\" fill=\"currentColor\" aria-hidden=\"true\">${paths}</svg>`;\n}\n\n/** Carbon OverflowMenuHorizontal, rendered at 16. */\nexport const iconOverflow = glyph(\n '0 0 32 32',\n svg`<circle cx=\"8\" cy=\"16\" r=\"2\"></circle><circle cx=\"16\" cy=\"16\" r=\"2\"></circle><circle cx=\"24\" cy=\"16\" r=\"2\"></circle>`,\n);\n\n/** Carbon Download, 16px glyph. */\nexport const iconDownload = glyph(\n '0 0 16 16',\n svg`<path d=\"M13 7 12.3 6.3 8.5 10.1 8.5 1 7.5 1 7.5 10.1 3.7 6.3 3 7 8 12z\"></path><path d=\"M13,12v2H3v-2H2v2l0,0c0,0.6,0.4,1,1,1h10c0.6,0,1-0.4,1-1l0,0v-2H13z\"></path>`,\n);\n\n/** Carbon TrashCan, rendered at 16. */\nexport const iconRemove = glyph(\n '0 0 32 32',\n svg`<path d=\"M12 12H14V24H12z\"></path><path d=\"M18 12H20V24H18z\"></path><path d=\"M4,6V8H6V28a2,2,0,0,0,2,2H24a2,2,0,0,0,2-2V8h2V6ZM8,28V8H24V28Z\"></path><path d=\"M12 2H20V4H12z\"></path>`,\n);\n\n/** Carbon SettingsAdjust, rendered at 16. */\nexport const iconSettings = glyph(\n '0 0 32 32',\n svg`<path d=\"M30,8h-4.1c-0.5-2.3-2.5-4-4.9-4s-4.4,1.7-4.9,4H2v2h14.1c0.5,2.3,2.5,4,4.9,4s4.4-1.7,4.9-4H30V8z M21,12c-1.7,0-3-1.3-3-3 s1.3-3,3-3s3,1.3,3,3S22.7,12,21,12z\"></path><path d=\"M2,24h4.1c0.5,2.3,2.5,4,4.9,4s4.4-1.7,4.9-4H30v-2H15.9c-0.5-2.3-2.5-4-4.9-4s-4.4,1.7-4.9,4H2V24z M11,20c1.7,0,3,1.3,3,3 s-1.3,3-3,3s-3-1.3-3-3S9.3,20,11,20z\"></path>`,\n);\n\n/** Client `ai-filled.svg`. Keeps its own fill; the button color must not recolor it. */\nexport const iconChat = svg`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\"><path fill=\"var(--colors-primary-icon-weaker, #9ea1fa)\" fill-rule=\"evenodd\" d=\"M.867 6.18a7.3 7.3 0 0 1 .76-1.86 7.36 7.36 0 0 1 9.221-3.105 2.9 2.9 0 0 1 1.278 1.605 2.92 2.92 0 0 1-.18 2.243l-.044.082-.007.011-.075.127-.002.004-.1.171-7.992-.05h-.175a3.57 3.57 0 0 0-2.83 1.498 7 7 0 0 1 .146-.726m.584.836A2.92 2.92 0 0 0 .7 8.939a7.36 7.36 0 0 0 9.992 5.913 3.55 3.55 0 0 1-1.634-.58 3.6 3.6 0 0 1-1.085-1.133l-.007-.012-.076-.134-3.948-6.939-.001.002-.205-.007h-.027l-.132-.001h-.03a2.94 2.94 0 0 0-2.096.968m6.89 5.476.004.006h.007l.09.17.005.009.006.012q.03.056.063.11l.005.009.002.003.006.01a2.94 2.94 0 0 0 2.308 1.4q.098.007.194.007c.521 0 1.009-.137 1.432-.375a7.362 7.362 0 0 0 .123-11.611c.251.548.352 1.134.316 1.705-.032.49-.163.97-.387 1.407l.004.003-.065.111-.075.127-.015.027-.28.478z\" clip-rule=\"evenodd\"></path></svg>`;\n\n/** Client `tableIcon.svg`. */\nexport const iconTable = glyph(\n '0 0 16 16',\n svg`<path d=\"M13.5 1.5h-11a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h11a1 1 0 0 0 1-1v-11a1 1 0 0 0-1-1m0 1v2h-11v-2zm-5 3h5V9h-5zM7.5 9h-5V5.5h5zm-5 1h5v3.5h-5zm6 3.5V10h5v3.5z\"></path>`,\n);\n\n/** Client `FeedBackIcon.svg`. */\nexport const iconFeedback = glyph(\n '0 0 16 16',\n svg`<path fill-rule=\"evenodd\" d=\"M8 6.48c0 .699-.306 1.348-.814 1.812A2.75 2.75 0 0 1 5.334 9H0V4.418l1.369-1.874L1.767 0h1.566c.326 0 .655.118.91.35.259.237.423.577.424.953V2.74h1.667a1.7 1.7 0 0 1 1.145.44c.32.293.52.71.521 1.167zM3.667 3.74V1.303a.3.3 0 0 0-.098-.215A.35.35 0 0 0 3.333 1h-.71l-.304 1.938L1 4.744V8h4.333c.442 0 .866-.16 1.178-.446A1.46 1.46 0 0 0 7 6.478v-2.13a.58.58 0 0 0-.196-.43.7.7 0 0 0-.47-.179H3.666zM8 9.52c0-.699.306-1.348.814-1.812A2.75 2.75 0 0 1 10.666 7H16v4.582l-1.369 1.874L14.233 16h-1.566c-.326 0-.655-.118-.91-.35a1.3 1.3 0 0 1-.424-.954v-1.435H9.666a1.7 1.7 0 0 1-1.145-.44c-.32-.293-.52-.71-.521-1.168zm4.333 2.74v2.436c0 .08.035.158.098.215a.35.35 0 0 0 .236.089h.71l.304-1.938L15 11.256V8h-4.333c-.442 0-.866.16-1.178.446A1.46 1.46 0 0 0 9 9.522v2.13c0 .162.07.316.196.43a.7.7 0 0 0 .47.179h2.667z\" clip-rule=\"evenodd\"></path>`,\n);\n\n/** Client `report-icon.svg` (Add to page). */\nexport const iconPage = glyph(\n '0 0 16 16',\n svg`<path d=\"M9 9H5v1h4zM11 6.5H5v1h6zM7.5 11.5H5v1h2.5z\"></path><path d=\"M12.5 2.5H11V2a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1v.5H3.5a1 1 0 0 0-1 1V14a1 1 0 0 0 1 1h9a1 1 0 0 0 1-1V3.5a1 1 0 0 0-1-1M6 2h4v2H6zm6.5 12h-9V3.5H5V5h6V3.5h1.5z\"></path>`,\n);\n"],"names":[],"mappings":";AAUA,SAAS,MAAM,SAAiB,OAA6C;AAC3E,SAAO,8EAA8E,OAAO,4CAA4C,KAAK;AAC/I;AAGO,MAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AACF;AAGO,MAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AACF;AAGO,MAAM,aAAa;AAAA,EACxB;AAAA,EACA;AACF;AAGO,MAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AACF;AAGO,MAAM,WAAW;AAGjB,MAAM,YAAY;AAAA,EACvB;AAAA,EACA;AACF;AAGO,MAAM,eAAe;AAAA,EAC1B;AAAA,EACA;AACF;AAGO,MAAM,WAAW;AAAA,EACtB;AAAA,EACA;AACF;"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { LitElement, nothing } from 'lit';
|
|
2
|
+
import { ChartTooltipContent } from './chart-tooltip-portal.js';
|
|
2
3
|
import { chartShellStyles } from './chart-shell-styles.js';
|
|
3
4
|
import { LabelTooltipState } from '../utils/chart-shell.js';
|
|
5
|
+
import { WidgetHeaderHandlers, WidgetHeaderVariant } from './widget-header.js';
|
|
4
6
|
/** Shared widget chrome: header, axis-label tooltip, menu. */
|
|
5
7
|
export declare abstract class Ui9000ChartElement extends LitElement {
|
|
6
8
|
dataJson: string;
|
|
@@ -11,11 +13,28 @@ export declare abstract class Ui9000ChartElement extends LitElement {
|
|
|
11
13
|
* chart inside their own chrome could not suppress the header.
|
|
12
14
|
*/
|
|
13
15
|
showHeader: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* `chat` (default): title + download menu, always visible.
|
|
18
|
+
* `dash`: dashboard chrome — chat, overflow actions, settings — shown only
|
|
19
|
+
* when the matching handler is set. Chat and overflow appear on hover.
|
|
20
|
+
*/
|
|
21
|
+
headerVariant: WidgetHeaderVariant;
|
|
22
|
+
/**
|
|
23
|
+
* Host callbacks. Not a Lit property, so assigning them re-renders the
|
|
24
|
+
* header without redrawing the plot.
|
|
25
|
+
*/
|
|
26
|
+
private _headerHandlers;
|
|
27
|
+
get headerHandlers(): WidgetHeaderHandlers;
|
|
28
|
+
set headerHandlers(value: WidgetHeaderHandlers);
|
|
14
29
|
protected _labelTooltip: LabelTooltipState;
|
|
15
30
|
protected _menuOpen: boolean;
|
|
16
31
|
protected _onDocClick: () => void;
|
|
17
32
|
connectedCallback(): void;
|
|
18
33
|
disconnectedCallback(): void;
|
|
34
|
+
/** Hover card on document.body. Matches the client chart tooltip. */
|
|
35
|
+
protected openTooltip(event: MouseEvent, content: ChartTooltipContent): void;
|
|
36
|
+
protected closeTooltip(): void;
|
|
37
|
+
protected closeAllTooltips(): void;
|
|
19
38
|
protected headerTitle(): string;
|
|
20
39
|
protected axisLabelHandlers(): import('../utils/axis-labels.js').AxisLabelTooltipHandlers;
|
|
21
40
|
protected renderShellHeader(title: string): import('lit-html').TemplateResult | typeof nothing;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui9000-chart-base.d.ts","sourceRoot":"","sources":["../../src/element/ui9000-chart-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAM3D,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"ui9000-chart-base.d.ts","sourceRoot":"","sources":["../../src/element/ui9000-chart-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAG1C,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAM3D,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAC;AAE5B,8DAA8D;AAC9D,8BAAsB,kBAAmB,SAAQ,UAAU;IAEzD,QAAQ,SAAQ;IAGhB,UAAU,SAAM;IAEhB;;;;OAIG;IAQH,UAAU,UAAQ;IAElB;;;;OAIG;IAOH,aAAa,EAAE,mBAAmB,CAAU;IAE5C;;;OAGG;IACH,OAAO,CAAC,eAAe,CAA4B;IAEnD,IAAI,cAAc,IAAI,oBAAoB,CAEzC;IAED,IAAI,cAAc,CAAC,KAAK,EAAE,oBAAoB,EAK7C;IAGD,SAAS,CAAC,aAAa,EAAE,iBAAiB,CAAQ;IAGlD,SAAS,CAAC,SAAS,UAAS;IAE5B,SAAS,CAAC,WAAW,QAAO,IAAI,CAE9B;IAEO,iBAAiB,IAAI,IAAI;IAKzB,oBAAoB,IAAI,IAAI;IAMrC,qEAAqE;IACrE,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAI5E,SAAS,CAAC,YAAY,IAAI,IAAI;IAI9B,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAIlC,SAAS,CAAC,WAAW,IAAI,MAAM;IAI/B,SAAS,CAAC,iBAAiB;IAM3B,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM;IAkBzC,SAAS,CAAC,uBAAuB;CAGlC;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { LitElement, nothing } from "lit";
|
|
2
2
|
import { property, state } from "lit/decorators.js";
|
|
3
|
+
import { dismissTooltips, presentChartTooltip, dismissChartTooltip } from "./chart-tooltip-portal.js";
|
|
3
4
|
import { renderWidgetHeader, renderLabelTooltip, dispatchChartDownload } from "./chart-shell-render.js";
|
|
4
5
|
import { resolveHeaderTitle, createAxisLabelHandlers } from "../utils/chart-shell.js";
|
|
6
|
+
import { resolveHeaderVariant } from "./widget-header.js";
|
|
5
7
|
var __defProp = Object.defineProperty;
|
|
6
8
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
7
9
|
var result = void 0;
|
|
@@ -17,20 +19,42 @@ class Ui9000ChartElement extends LitElement {
|
|
|
17
19
|
this.dataJson = "[]";
|
|
18
20
|
this.chartTitle = "";
|
|
19
21
|
this.showHeader = true;
|
|
22
|
+
this.headerVariant = "chat";
|
|
23
|
+
this._headerHandlers = {};
|
|
20
24
|
this._labelTooltip = null;
|
|
21
25
|
this._menuOpen = false;
|
|
22
26
|
this._onDocClick = () => {
|
|
23
27
|
this._menuOpen = false;
|
|
24
28
|
};
|
|
25
29
|
}
|
|
30
|
+
get headerHandlers() {
|
|
31
|
+
return this._headerHandlers;
|
|
32
|
+
}
|
|
33
|
+
set headerHandlers(value) {
|
|
34
|
+
const next = value ?? {};
|
|
35
|
+
if (next === this._headerHandlers) return;
|
|
36
|
+
this._headerHandlers = next;
|
|
37
|
+
this.requestUpdate();
|
|
38
|
+
}
|
|
26
39
|
connectedCallback() {
|
|
27
40
|
super.connectedCallback();
|
|
28
41
|
document.addEventListener("click", this._onDocClick);
|
|
29
42
|
}
|
|
30
43
|
disconnectedCallback() {
|
|
31
44
|
document.removeEventListener("click", this._onDocClick);
|
|
45
|
+
dismissTooltips(this);
|
|
32
46
|
super.disconnectedCallback();
|
|
33
47
|
}
|
|
48
|
+
/** Hover card on document.body. Matches the client chart tooltip. */
|
|
49
|
+
openTooltip(event, content) {
|
|
50
|
+
presentChartTooltip(this, event, content);
|
|
51
|
+
}
|
|
52
|
+
closeTooltip() {
|
|
53
|
+
dismissChartTooltip(this);
|
|
54
|
+
}
|
|
55
|
+
closeAllTooltips() {
|
|
56
|
+
dismissTooltips(this);
|
|
57
|
+
}
|
|
34
58
|
headerTitle() {
|
|
35
59
|
return resolveHeaderTitle(this.chartTitle, this.dataJson, this.showHeader);
|
|
36
60
|
}
|
|
@@ -43,6 +67,8 @@ class Ui9000ChartElement extends LitElement {
|
|
|
43
67
|
if (!title) return nothing;
|
|
44
68
|
return renderWidgetHeader({
|
|
45
69
|
title,
|
|
70
|
+
variant: this.headerVariant,
|
|
71
|
+
handlers: this._headerHandlers,
|
|
46
72
|
menuOpen: this._menuOpen,
|
|
47
73
|
onMenuToggle: (e) => {
|
|
48
74
|
e.stopPropagation();
|
|
@@ -73,6 +99,14 @@ __decorateClass([
|
|
|
73
99
|
attribute: "show-header"
|
|
74
100
|
})
|
|
75
101
|
], Ui9000ChartElement.prototype, "showHeader");
|
|
102
|
+
__decorateClass([
|
|
103
|
+
property({
|
|
104
|
+
attribute: "header-variant",
|
|
105
|
+
converter: {
|
|
106
|
+
fromAttribute: (value) => resolveHeaderVariant(value)
|
|
107
|
+
}
|
|
108
|
+
})
|
|
109
|
+
], Ui9000ChartElement.prototype, "headerVariant");
|
|
76
110
|
__decorateClass([
|
|
77
111
|
state()
|
|
78
112
|
], Ui9000ChartElement.prototype, "_labelTooltip");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui9000-chart-base.js","sources":["../../src/element/ui9000-chart-base.ts"],"sourcesContent":["import { LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\n\nimport { chartShellStyles } from './chart-shell-styles.js';\nimport {\n dispatchChartDownload,\n renderLabelTooltip,\n renderWidgetHeader,\n} from './chart-shell-render.js';\nimport {\n createAxisLabelHandlers,\n resolveHeaderTitle,\n type LabelTooltipState,\n} from '../utils/chart-shell.js';\n\n/** Shared widget chrome: header, axis-label tooltip, menu. */\nexport abstract class Ui9000ChartElement extends LitElement {\n @property({ type: String, attribute: 'data' })\n dataJson = '[]';\n\n @property({ type: String, attribute: 'chart-title' })\n chartTitle = '';\n\n /**\n * On by default; `show-header=\"false\"` turns it off. A plain `type: Boolean`\n * property would read any present attribute as true, so hosts that embed a\n * chart inside their own chrome could not suppress the header.\n */\n @property({\n converter: {\n fromAttribute: (value: string | null): boolean => value !== null && value !== 'false',\n toAttribute: (value: boolean): string => (value ? '' : 'false'),\n },\n attribute: 'show-header',\n })\n showHeader = true;\n\n @state()\n protected _labelTooltip: LabelTooltipState = null;\n\n @state()\n protected _menuOpen = false;\n\n protected _onDocClick = (): void => {\n this._menuOpen = false;\n };\n\n override connectedCallback(): void {\n super.connectedCallback();\n document.addEventListener('click', this._onDocClick);\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener('click', this._onDocClick);\n super.disconnectedCallback();\n }\n\n protected headerTitle(): string {\n return resolveHeaderTitle(this.chartTitle, this.dataJson, this.showHeader);\n }\n\n protected axisLabelHandlers() {\n return createAxisLabelHandlers(this, (t) => {\n this._labelTooltip = t;\n });\n }\n\n protected renderShellHeader(title: string) {\n if (!title) return nothing;\n return renderWidgetHeader({\n title,\n menuOpen: this._menuOpen,\n onMenuToggle: (e: Event) => {\n e.stopPropagation();\n this._menuOpen = !this._menuOpen;\n },\n onMenuClose: () => {\n this._menuOpen = false;\n },\n onDownload: () => dispatchChartDownload(this),\n });\n }\n\n protected renderShellLabelTooltip() {\n return renderLabelTooltip(this._labelTooltip);\n }\n}\n\nexport { chartShellStyles };\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ui9000-chart-base.js","sources":["../../src/element/ui9000-chart-base.ts"],"sourcesContent":["import { LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\n\nimport {\n dismissChartTooltip,\n dismissTooltips,\n presentChartTooltip,\n type ChartTooltipContent,\n} from './chart-tooltip-portal.js';\nimport { chartShellStyles } from './chart-shell-styles.js';\nimport {\n dispatchChartDownload,\n renderLabelTooltip,\n renderWidgetHeader,\n} from './chart-shell-render.js';\nimport {\n createAxisLabelHandlers,\n resolveHeaderTitle,\n type LabelTooltipState,\n} from '../utils/chart-shell.js';\nimport {\n resolveHeaderVariant,\n type WidgetHeaderHandlers,\n type WidgetHeaderVariant,\n} from './widget-header.js';\n\n/** Shared widget chrome: header, axis-label tooltip, menu. */\nexport abstract class Ui9000ChartElement extends LitElement {\n @property({ type: String, attribute: 'data' })\n dataJson = '[]';\n\n @property({ type: String, attribute: 'chart-title' })\n chartTitle = '';\n\n /**\n * On by default; `show-header=\"false\"` turns it off. A plain `type: Boolean`\n * property would read any present attribute as true, so hosts that embed a\n * chart inside their own chrome could not suppress the header.\n */\n @property({\n converter: {\n fromAttribute: (value: string | null): boolean => value !== null && value !== 'false',\n toAttribute: (value: boolean): string => (value ? '' : 'false'),\n },\n attribute: 'show-header',\n })\n showHeader = true;\n\n /**\n * `chat` (default): title + download menu, always visible.\n * `dash`: dashboard chrome — chat, overflow actions, settings — shown only\n * when the matching handler is set. Chat and overflow appear on hover.\n */\n @property({\n attribute: 'header-variant',\n converter: {\n fromAttribute: (value: string | null): WidgetHeaderVariant => resolveHeaderVariant(value),\n },\n })\n headerVariant: WidgetHeaderVariant = 'chat';\n\n /**\n * Host callbacks. Not a Lit property, so assigning them re-renders the\n * header without redrawing the plot.\n */\n private _headerHandlers: WidgetHeaderHandlers = {};\n\n get headerHandlers(): WidgetHeaderHandlers {\n return this._headerHandlers;\n }\n\n set headerHandlers(value: WidgetHeaderHandlers) {\n const next = value ?? {};\n if (next === this._headerHandlers) return;\n this._headerHandlers = next;\n this.requestUpdate();\n }\n\n @state()\n protected _labelTooltip: LabelTooltipState = null;\n\n @state()\n protected _menuOpen = false;\n\n protected _onDocClick = (): void => {\n this._menuOpen = false;\n };\n\n override connectedCallback(): void {\n super.connectedCallback();\n document.addEventListener('click', this._onDocClick);\n }\n\n override disconnectedCallback(): void {\n document.removeEventListener('click', this._onDocClick);\n dismissTooltips(this);\n super.disconnectedCallback();\n }\n\n /** Hover card on document.body. Matches the client chart tooltip. */\n protected openTooltip(event: MouseEvent, content: ChartTooltipContent): void {\n presentChartTooltip(this, event, content);\n }\n\n protected closeTooltip(): void {\n dismissChartTooltip(this);\n }\n\n protected closeAllTooltips(): void {\n dismissTooltips(this);\n }\n\n protected headerTitle(): string {\n return resolveHeaderTitle(this.chartTitle, this.dataJson, this.showHeader);\n }\n\n protected axisLabelHandlers() {\n return createAxisLabelHandlers(this, (t) => {\n this._labelTooltip = t;\n });\n }\n\n protected renderShellHeader(title: string) {\n if (!title) return nothing;\n return renderWidgetHeader({\n title,\n variant: this.headerVariant,\n handlers: this._headerHandlers,\n menuOpen: this._menuOpen,\n onMenuToggle: (e: Event) => {\n e.stopPropagation();\n this._menuOpen = !this._menuOpen;\n },\n onMenuClose: () => {\n this._menuOpen = false;\n },\n onDownload: () => dispatchChartDownload(this),\n });\n }\n\n protected renderShellLabelTooltip() {\n return renderLabelTooltip(this._labelTooltip);\n }\n}\n\nexport { chartShellStyles };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AA2BO,MAAe,2BAA2B,WAAW;AAAA,EAArD,cAAA;AAAA,UAAA,GAAA,SAAA;AAEL,SAAA,WAAW;AAGX,SAAA,aAAa;AAcb,SAAA,aAAa;AAab,SAAA,gBAAqC;AAMrC,SAAQ,kBAAwC,CAAA;AAchD,SAAU,gBAAmC;AAG7C,SAAU,YAAY;AAEtB,SAAU,cAAc,MAAY;AAClC,WAAK,YAAY;AAAA,IACnB;AAAA,EAAA;AAAA,EAnBA,IAAI,iBAAuC;AACzC,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAI,eAAe,OAA6B;AAC9C,UAAM,OAAO,SAAS,CAAA;AACtB,QAAI,SAAS,KAAK,gBAAiB;AACnC,SAAK,kBAAkB;AACvB,SAAK,cAAA;AAAA,EACP;AAAA,EAYS,oBAA0B;AACjC,UAAM,kBAAA;AACN,aAAS,iBAAiB,SAAS,KAAK,WAAW;AAAA,EACrD;AAAA,EAES,uBAA6B;AACpC,aAAS,oBAAoB,SAAS,KAAK,WAAW;AACtD,oBAAgB,IAAI;AACpB,UAAM,qBAAA;AAAA,EACR;AAAA;AAAA,EAGU,YAAY,OAAmB,SAAoC;AAC3E,wBAAoB,MAAM,OAAO,OAAO;AAAA,EAC1C;AAAA,EAEU,eAAqB;AAC7B,wBAAoB,IAAI;AAAA,EAC1B;AAAA,EAEU,mBAAyB;AACjC,oBAAgB,IAAI;AAAA,EACtB;AAAA,EAEU,cAAsB;AAC9B,WAAO,mBAAmB,KAAK,YAAY,KAAK,UAAU,KAAK,UAAU;AAAA,EAC3E;AAAA,EAEU,oBAAoB;AAC5B,WAAO,wBAAwB,MAAM,CAAC,MAAM;AAC1C,WAAK,gBAAgB;AAAA,IACvB,CAAC;AAAA,EACH;AAAA,EAEU,kBAAkB,OAAe;AACzC,QAAI,CAAC,MAAO,QAAO;AACnB,WAAO,mBAAmB;AAAA,MACxB;AAAA,MACA,SAAS,KAAK;AAAA,MACd,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,cAAc,CAAC,MAAa;AAC1B,UAAE,gBAAA;AACF,aAAK,YAAY,CAAC,KAAK;AAAA,MACzB;AAAA,MACA,aAAa,MAAM;AACjB,aAAK,YAAY;AAAA,MACnB;AAAA,MACA,YAAY,MAAM,sBAAsB,IAAI;AAAA,IAAA,CAC7C;AAAA,EACH;AAAA,EAEU,0BAA0B;AAClC,WAAO,mBAAmB,KAAK,aAAa;AAAA,EAC9C;AACF;AAlHE,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,QAAQ;AAAA,GADzB,mBAEpB,WAAA,UAAA;AAGA,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,eAAe;AAAA,GAJhC,mBAKpB,WAAA,YAAA;AAcA,gBAAA;AAAA,EAPC,SAAS;AAAA,IACR,WAAW;AAAA,MACT,eAAe,CAAC,UAAkC,UAAU,QAAQ,UAAU;AAAA,MAC9E,aAAa,CAAC,UAA4B,QAAQ,KAAK;AAAA,IAAA;AAAA,IAEzD,WAAW;AAAA,EAAA,CACZ;AAAA,GAlBmB,mBAmBpB,WAAA,YAAA;AAaA,gBAAA;AAAA,EANC,SAAS;AAAA,IACR,WAAW;AAAA,IACX,WAAW;AAAA,MACT,eAAe,CAAC,UAA8C,qBAAqB,KAAK;AAAA,IAAA;AAAA,EAC1F,CACD;AAAA,GA/BmB,mBAgCpB,WAAA,eAAA;AAoBU,gBAAA;AAAA,EADT,MAAA;AAAM,GAnDa,mBAoDV,WAAA,eAAA;AAGA,gBAAA;AAAA,EADT,MAAA;AAAM,GAtDa,mBAuDV,WAAA,WAAA;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Host callbacks for the widget chrome. The chart never talks to Redux —
|
|
3
|
+
* the client (or any host) assigns these and implements the action.
|
|
4
|
+
* A button is rendered only when its handler is set, except chat download,
|
|
5
|
+
* which stays available and falls back to the `ui9000-download` event.
|
|
6
|
+
*/
|
|
7
|
+
export type WidgetHeaderHandlers = {
|
|
8
|
+
onOpenChat?: () => void;
|
|
9
|
+
onViewAsTable?: () => void;
|
|
10
|
+
onProvideFeedback?: () => void;
|
|
11
|
+
onSaveToReport?: () => void;
|
|
12
|
+
onDownloadImage?: () => void;
|
|
13
|
+
onRemove?: () => void;
|
|
14
|
+
onOpenSettings?: () => void;
|
|
15
|
+
};
|
|
16
|
+
/** `chat` = MCP / charts iframe. `dash` = FuseDash dashboard widget. */
|
|
17
|
+
export type WidgetHeaderVariant = 'chat' | 'dash';
|
|
18
|
+
export type HeaderMenuItem = {
|
|
19
|
+
id: string;
|
|
20
|
+
label: string;
|
|
21
|
+
/** Chat download with no host handler emits `ui9000-download`. */
|
|
22
|
+
fallbackDownload?: boolean;
|
|
23
|
+
};
|
|
24
|
+
export type HeaderChrome = {
|
|
25
|
+
variant: WidgetHeaderVariant;
|
|
26
|
+
showChat: boolean;
|
|
27
|
+
showSettings: boolean;
|
|
28
|
+
showMenu: boolean;
|
|
29
|
+
showRemove: boolean;
|
|
30
|
+
items: HeaderMenuItem[];
|
|
31
|
+
};
|
|
32
|
+
export declare function resolveHeaderVariant(value: string | null | undefined): WidgetHeaderVariant;
|
|
33
|
+
export declare function resolveHeaderChrome(variant: WidgetHeaderVariant, handlers: WidgetHeaderHandlers): HeaderChrome;
|
|
34
|
+
export declare function headerMenuHandler(item: HeaderMenuItem, handlers: WidgetHeaderHandlers): (() => void) | undefined;
|
|
35
|
+
//# sourceMappingURL=widget-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget-header.d.ts","sourceRoot":"","sources":["../../src/element/widget-header.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B,CAAC;AAEF,wEAAwE;AACxE,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB,CAAC;AAEF,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAC/B,mBAAmB,CAErB;AAED,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,oBAAoB,GAC7B,YAAY,CAqCd;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,cAAc,EACpB,QAAQ,EAAE,oBAAoB,GAC7B,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAa1B"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
function resolveHeaderVariant(value) {
|
|
2
|
+
return value === "dash" ? "dash" : "chat";
|
|
3
|
+
}
|
|
4
|
+
function resolveHeaderChrome(variant, handlers) {
|
|
5
|
+
if (variant === "chat") {
|
|
6
|
+
return {
|
|
7
|
+
variant,
|
|
8
|
+
showChat: false,
|
|
9
|
+
showSettings: false,
|
|
10
|
+
showMenu: true,
|
|
11
|
+
showRemove: false,
|
|
12
|
+
items: [
|
|
13
|
+
{
|
|
14
|
+
id: "download-image",
|
|
15
|
+
label: "Download image",
|
|
16
|
+
fallbackDownload: !handlers.onDownloadImage
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const items = [];
|
|
22
|
+
if (handlers.onViewAsTable) items.push({ id: "view-table", label: "View as table" });
|
|
23
|
+
if (handlers.onProvideFeedback) {
|
|
24
|
+
items.push({ id: "provide-feedback", label: "Provide feedback" });
|
|
25
|
+
}
|
|
26
|
+
if (handlers.onSaveToReport) items.push({ id: "save-report", label: "Add to page" });
|
|
27
|
+
if (handlers.onDownloadImage) {
|
|
28
|
+
items.push({ id: "download-image", label: "Download image" });
|
|
29
|
+
}
|
|
30
|
+
const showRemove = !!handlers.onRemove;
|
|
31
|
+
return {
|
|
32
|
+
variant,
|
|
33
|
+
showChat: !!handlers.onOpenChat,
|
|
34
|
+
showSettings: !!handlers.onOpenSettings,
|
|
35
|
+
showMenu: items.length > 0 || showRemove,
|
|
36
|
+
showRemove,
|
|
37
|
+
items
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function headerMenuHandler(item, handlers) {
|
|
41
|
+
switch (item.id) {
|
|
42
|
+
case "view-table":
|
|
43
|
+
return handlers.onViewAsTable;
|
|
44
|
+
case "provide-feedback":
|
|
45
|
+
return handlers.onProvideFeedback;
|
|
46
|
+
case "save-report":
|
|
47
|
+
return handlers.onSaveToReport;
|
|
48
|
+
case "download-image":
|
|
49
|
+
return handlers.onDownloadImage;
|
|
50
|
+
default:
|
|
51
|
+
return void 0;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export {
|
|
55
|
+
headerMenuHandler,
|
|
56
|
+
resolveHeaderChrome,
|
|
57
|
+
resolveHeaderVariant
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=widget-header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"widget-header.js","sources":["../../src/element/widget-header.ts"],"sourcesContent":["/**\n * Host callbacks for the widget chrome. The chart never talks to Redux —\n * the client (or any host) assigns these and implements the action.\n * A button is rendered only when its handler is set, except chat download,\n * which stays available and falls back to the `ui9000-download` event.\n */\nexport type WidgetHeaderHandlers = {\n onOpenChat?: () => void;\n onViewAsTable?: () => void;\n onProvideFeedback?: () => void;\n onSaveToReport?: () => void;\n onDownloadImage?: () => void;\n onRemove?: () => void;\n onOpenSettings?: () => void;\n};\n\n/** `chat` = MCP / charts iframe. `dash` = FuseDash dashboard widget. */\nexport type WidgetHeaderVariant = 'chat' | 'dash';\n\nexport type HeaderMenuItem = {\n id: string;\n label: string;\n /** Chat download with no host handler emits `ui9000-download`. */\n fallbackDownload?: boolean;\n};\n\nexport type HeaderChrome = {\n variant: WidgetHeaderVariant;\n showChat: boolean;\n showSettings: boolean;\n showMenu: boolean;\n showRemove: boolean;\n items: HeaderMenuItem[];\n};\n\nexport function resolveHeaderVariant(\n value: string | null | undefined,\n): WidgetHeaderVariant {\n return value === 'dash' ? 'dash' : 'chat';\n}\n\nexport function resolveHeaderChrome(\n variant: WidgetHeaderVariant,\n handlers: WidgetHeaderHandlers,\n): HeaderChrome {\n if (variant === 'chat') {\n return {\n variant,\n showChat: false,\n showSettings: false,\n showMenu: true,\n showRemove: false,\n items: [\n {\n id: 'download-image',\n label: 'Download image',\n fallbackDownload: !handlers.onDownloadImage,\n },\n ],\n };\n }\n\n const items: HeaderMenuItem[] = [];\n if (handlers.onViewAsTable) items.push({ id: 'view-table', label: 'View as table' });\n if (handlers.onProvideFeedback) {\n items.push({ id: 'provide-feedback', label: 'Provide feedback' });\n }\n if (handlers.onSaveToReport) items.push({ id: 'save-report', label: 'Add to page' });\n if (handlers.onDownloadImage) {\n items.push({ id: 'download-image', label: 'Download image' });\n }\n\n const showRemove = !!handlers.onRemove;\n return {\n variant,\n showChat: !!handlers.onOpenChat,\n showSettings: !!handlers.onOpenSettings,\n showMenu: items.length > 0 || showRemove,\n showRemove,\n items,\n };\n}\n\nexport function headerMenuHandler(\n item: HeaderMenuItem,\n handlers: WidgetHeaderHandlers,\n): (() => void) | undefined {\n switch (item.id) {\n case 'view-table':\n return handlers.onViewAsTable;\n case 'provide-feedback':\n return handlers.onProvideFeedback;\n case 'save-report':\n return handlers.onSaveToReport;\n case 'download-image':\n return handlers.onDownloadImage;\n default:\n return undefined;\n }\n}\n"],"names":[],"mappings":"AAmCO,SAAS,qBACd,OACqB;AACrB,SAAO,UAAU,SAAS,SAAS;AACrC;AAEO,SAAS,oBACd,SACA,UACc;AACd,MAAI,YAAY,QAAQ;AACtB,WAAO;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV,cAAc;AAAA,MACd,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,OAAO;AAAA,QACL;AAAA,UACE,IAAI;AAAA,UACJ,OAAO;AAAA,UACP,kBAAkB,CAAC,SAAS;AAAA,QAAA;AAAA,MAC9B;AAAA,IACF;AAAA,EAEJ;AAEA,QAAM,QAA0B,CAAA;AAChC,MAAI,SAAS,cAAe,OAAM,KAAK,EAAE,IAAI,cAAc,OAAO,iBAAiB;AACnF,MAAI,SAAS,mBAAmB;AAC9B,UAAM,KAAK,EAAE,IAAI,oBAAoB,OAAO,oBAAoB;AAAA,EAClE;AACA,MAAI,SAAS,eAAgB,OAAM,KAAK,EAAE,IAAI,eAAe,OAAO,eAAe;AACnF,MAAI,SAAS,iBAAiB;AAC5B,UAAM,KAAK,EAAE,IAAI,kBAAkB,OAAO,kBAAkB;AAAA,EAC9D;AAEA,QAAM,aAAa,CAAC,CAAC,SAAS;AAC9B,SAAO;AAAA,IACL;AAAA,IACA,UAAU,CAAC,CAAC,SAAS;AAAA,IACrB,cAAc,CAAC,CAAC,SAAS;AAAA,IACzB,UAAU,MAAM,SAAS,KAAK;AAAA,IAC9B;AAAA,IACA;AAAA,EAAA;AAEJ;AAEO,SAAS,kBACd,MACA,UAC0B;AAC1B,UAAQ,KAAK,IAAA;AAAA,IACX,KAAK;AACH,aAAO,SAAS;AAAA,IAClB,KAAK;AACH,aAAO,SAAS;AAAA,IAClB,KAAK;AACH,aAAO,SAAS;AAAA,IAClB,KAAK;AACH,aAAO,SAAS;AAAA,IAClB;AACE,aAAO;AAAA,EAAA;AAEb;"}
|