@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,98 @@
|
|
|
1
|
+
import { css } from "lit";
|
|
2
|
+
const inspectorStyles = css`
|
|
3
|
+
.root {
|
|
4
|
+
padding: 12px;
|
|
5
|
+
display: flex;
|
|
6
|
+
flex-direction: column;
|
|
7
|
+
gap: 16px;
|
|
8
|
+
}
|
|
9
|
+
.head {
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-wrap: wrap;
|
|
12
|
+
align-items: baseline;
|
|
13
|
+
gap: 8px 16px;
|
|
14
|
+
}
|
|
15
|
+
h2 {
|
|
16
|
+
margin: 0;
|
|
17
|
+
font-size: 15px;
|
|
18
|
+
line-height: 20px;
|
|
19
|
+
}
|
|
20
|
+
h3 {
|
|
21
|
+
margin: 0 0 6px;
|
|
22
|
+
font-size: 12px;
|
|
23
|
+
line-height: 16px;
|
|
24
|
+
letter-spacing: 0.04em;
|
|
25
|
+
text-transform: uppercase;
|
|
26
|
+
color: var(--ui9000-color-text-muted, #6b7280);
|
|
27
|
+
}
|
|
28
|
+
dl {
|
|
29
|
+
margin: 0;
|
|
30
|
+
display: grid;
|
|
31
|
+
grid-template-columns: minmax(0, max-content) minmax(0, 1fr);
|
|
32
|
+
gap: 2px 12px;
|
|
33
|
+
}
|
|
34
|
+
dt {
|
|
35
|
+
color: var(--ui9000-color-text-muted, #6b7280);
|
|
36
|
+
}
|
|
37
|
+
dd {
|
|
38
|
+
margin: 0;
|
|
39
|
+
}
|
|
40
|
+
.badge {
|
|
41
|
+
display: inline-block;
|
|
42
|
+
padding: 1px 8px;
|
|
43
|
+
border-radius: 999px;
|
|
44
|
+
border: 1px solid var(--ui9000-color-border, #e5e7eb);
|
|
45
|
+
font-size: 12px;
|
|
46
|
+
font-weight: 600;
|
|
47
|
+
}
|
|
48
|
+
.badge[data-band='low'] {
|
|
49
|
+
border-color: transparent;
|
|
50
|
+
background: var(--ui9000-color-risk-low, #d1fae5);
|
|
51
|
+
}
|
|
52
|
+
.badge[data-band='medium'] {
|
|
53
|
+
border-color: transparent;
|
|
54
|
+
background: var(--ui9000-color-risk-medium, #fef3c7);
|
|
55
|
+
}
|
|
56
|
+
.badge[data-band='high'] {
|
|
57
|
+
border-color: transparent;
|
|
58
|
+
background: var(--ui9000-color-risk-high, #fee2e2);
|
|
59
|
+
}
|
|
60
|
+
.badge[data-kind='winner'] {
|
|
61
|
+
border-color: transparent;
|
|
62
|
+
background: var(--ui9000-color-primary, #473dd9);
|
|
63
|
+
color: #fff;
|
|
64
|
+
}
|
|
65
|
+
.list li {
|
|
66
|
+
padding: 6px 0;
|
|
67
|
+
}
|
|
68
|
+
.list li:last-child {
|
|
69
|
+
border-bottom: none;
|
|
70
|
+
}
|
|
71
|
+
.row-head {
|
|
72
|
+
display: flex;
|
|
73
|
+
gap: 8px;
|
|
74
|
+
align-items: baseline;
|
|
75
|
+
}
|
|
76
|
+
.id {
|
|
77
|
+
font-weight: 600;
|
|
78
|
+
}
|
|
79
|
+
.score {
|
|
80
|
+
font-variant-numeric: tabular-nums;
|
|
81
|
+
color: var(--ui9000-color-text-muted, #6b7280);
|
|
82
|
+
}
|
|
83
|
+
.reasons {
|
|
84
|
+
list-style: disc;
|
|
85
|
+
margin: 2px 0 0;
|
|
86
|
+
padding-left: 18px;
|
|
87
|
+
color: var(--ui9000-color-text-muted, #6b7280);
|
|
88
|
+
}
|
|
89
|
+
.chips {
|
|
90
|
+
display: flex;
|
|
91
|
+
flex-wrap: wrap;
|
|
92
|
+
gap: 6px;
|
|
93
|
+
}
|
|
94
|
+
`;
|
|
95
|
+
export {
|
|
96
|
+
inspectorStyles
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.js","sources":["../../../../src/components/inspector/element/styles.ts"],"sourcesContent":["import { css } from 'lit';\n\nexport const inspectorStyles = css`\n .root {\n padding: 12px;\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n .head {\n display: flex;\n flex-wrap: wrap;\n align-items: baseline;\n gap: 8px 16px;\n }\n h2 {\n margin: 0;\n font-size: 15px;\n line-height: 20px;\n }\n h3 {\n margin: 0 0 6px;\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.04em;\n text-transform: uppercase;\n color: var(--ui9000-color-text-muted, #6b7280);\n }\n dl {\n margin: 0;\n display: grid;\n grid-template-columns: minmax(0, max-content) minmax(0, 1fr);\n gap: 2px 12px;\n }\n dt {\n color: var(--ui9000-color-text-muted, #6b7280);\n }\n dd {\n margin: 0;\n }\n .badge {\n display: inline-block;\n padding: 1px 8px;\n border-radius: 999px;\n border: 1px solid var(--ui9000-color-border, #e5e7eb);\n font-size: 12px;\n font-weight: 600;\n }\n .badge[data-band='low'] {\n border-color: transparent;\n background: var(--ui9000-color-risk-low, #d1fae5);\n }\n .badge[data-band='medium'] {\n border-color: transparent;\n background: var(--ui9000-color-risk-medium, #fef3c7);\n }\n .badge[data-band='high'] {\n border-color: transparent;\n background: var(--ui9000-color-risk-high, #fee2e2);\n }\n .badge[data-kind='winner'] {\n border-color: transparent;\n background: var(--ui9000-color-primary, #473dd9);\n color: #fff;\n }\n .list li {\n padding: 6px 0;\n }\n .list li:last-child {\n border-bottom: none;\n }\n .row-head {\n display: flex;\n gap: 8px;\n align-items: baseline;\n }\n .id {\n font-weight: 600;\n }\n .score {\n font-variant-numeric: tabular-nums;\n color: var(--ui9000-color-text-muted, #6b7280);\n }\n .reasons {\n list-style: disc;\n margin: 2px 0 0;\n padding-left: 18px;\n color: var(--ui9000-color-text-muted, #6b7280);\n }\n .chips {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n }\n`;\n"],"names":[],"mappings":";AAEO,MAAM,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { LitElement, PropertyValues } from 'lit';
|
|
2
|
+
/**
|
|
3
|
+
* Renders one frozen decision trace (`trace.v2.json`). Props only: the trace
|
|
4
|
+
* arrives as JSON on the `trace` attribute, nothing is fetched, and every value
|
|
5
|
+
* is bound as a Lit text node — no `innerHTML`. Traces carrying dataset rows are
|
|
6
|
+
* refused rather than rendered.
|
|
7
|
+
*/
|
|
8
|
+
export declare class Ui9000Inspector extends LitElement {
|
|
9
|
+
static styles: import('lit').CSSResult[];
|
|
10
|
+
traceJson: string;
|
|
11
|
+
/** Overrides the panel's accessible name. */
|
|
12
|
+
panelLabel: string;
|
|
13
|
+
private _result;
|
|
14
|
+
private refresh;
|
|
15
|
+
connectedCallback(): void;
|
|
16
|
+
willUpdate(changed: PropertyValues): void;
|
|
17
|
+
render(): import('lit-html').TemplateResult<1>;
|
|
18
|
+
private panelName;
|
|
19
|
+
}
|
|
20
|
+
export declare function registerInspector(): void;
|
|
21
|
+
declare global {
|
|
22
|
+
interface HTMLElementTagNameMap {
|
|
23
|
+
'ui9000-inspector': Ui9000Inspector;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=ui9000-inspector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui9000-inspector.d.ts","sourceRoot":"","sources":["../../../../src/components/inspector/element/ui9000-inspector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAW,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAWrE;;;;;GAKG;AACH,qBACa,eAAgB,SAAQ,UAAU;IAC7C,OAAgB,MAAM,4BAAoC;IAG1D,SAAS,SAAQ;IAEjB,6CAA6C;IAE7C,UAAU,SAAM;IAGhB,OAAO,CAAC,OAAO,CAA6D;IAE5E,OAAO,CAAC,OAAO;IAIN,iBAAiB,IAAI,IAAI;IAKzB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIzC,MAAM;IAiGf,OAAO,CAAC,SAAS;CAIlB;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,eAAe,CAAC;KACrC;CACF"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { LitElement, html, nothing } from "lit";
|
|
2
|
+
import { property, state, customElement } from "lit/decorators.js";
|
|
3
|
+
import { surfaceStyles } from "../../../element/surface-styles.js";
|
|
4
|
+
import { parseJsonAttr } from "../../../utils/chart-helpers.js";
|
|
5
|
+
import { normalizeTrace } from "../lib/normalize.js";
|
|
6
|
+
import { inspectorStyles } from "./styles.js";
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
10
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
11
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
12
|
+
if (decorator = decorators[i])
|
|
13
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
14
|
+
if (kind && result) __defProp(target, key, result);
|
|
15
|
+
return result;
|
|
16
|
+
};
|
|
17
|
+
const NOT_RECORDED = "not recorded";
|
|
18
|
+
let Ui9000Inspector = class extends LitElement {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.traceJson = "{}";
|
|
22
|
+
this.panelLabel = "";
|
|
23
|
+
this._result = { ok: false, blocked: "Trace required" };
|
|
24
|
+
}
|
|
25
|
+
refresh() {
|
|
26
|
+
this._result = normalizeTrace(parseJsonAttr(this.traceJson, null));
|
|
27
|
+
}
|
|
28
|
+
connectedCallback() {
|
|
29
|
+
super.connectedCallback();
|
|
30
|
+
this.refresh();
|
|
31
|
+
}
|
|
32
|
+
willUpdate(changed) {
|
|
33
|
+
if (changed.has("traceJson")) this.refresh();
|
|
34
|
+
}
|
|
35
|
+
render() {
|
|
36
|
+
const result = this._result;
|
|
37
|
+
if (!result.ok) {
|
|
38
|
+
return html`<p class="blocked" role="status">${result.blocked}</p>`;
|
|
39
|
+
}
|
|
40
|
+
const model = result.model;
|
|
41
|
+
return html`
|
|
42
|
+
<section class="root" role="region" aria-label=${this.panelName(model)}>
|
|
43
|
+
<div class="head">
|
|
44
|
+
<h2>Decision trace</h2>
|
|
45
|
+
<dl>
|
|
46
|
+
<dt>Objective</dt>
|
|
47
|
+
<dd>${model.objective}</dd>
|
|
48
|
+
<dt>Winner</dt>
|
|
49
|
+
<dd>
|
|
50
|
+
${model.winner ? html`<span class="badge" data-kind="winner">${model.winner}</span>` : html`<span class="muted">${NOT_RECORDED}</span>`}
|
|
51
|
+
</dd>
|
|
52
|
+
<dt>Risk band</dt>
|
|
53
|
+
<dd>
|
|
54
|
+
${model.riskBand ? html`<span class="badge" data-band=${model.riskBand}>${model.riskBand}</span>` : model.unrecognizedRiskBand ? html`<span class="muted">${model.unrecognizedRiskBand} (unrecognized)</span>` : html`<span class="muted">${NOT_RECORDED}</span>`}
|
|
55
|
+
</dd>
|
|
56
|
+
<dt>Outcome</dt>
|
|
57
|
+
<dd>${model.outcome ?? html`<span class="muted">${NOT_RECORDED}</span>`}</dd>
|
|
58
|
+
</dl>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<section class="profile">
|
|
62
|
+
<h3>Profile</h3>
|
|
63
|
+
${model.profile.length === 0 ? html`<p class="muted">No profile keys recorded</p>` : html`<dl>
|
|
64
|
+
${model.profile.map(
|
|
65
|
+
(entry) => html`<dt>${entry.key}</dt><dd>${entry.value}</dd>`
|
|
66
|
+
)}
|
|
67
|
+
</dl>`}
|
|
68
|
+
</section>
|
|
69
|
+
|
|
70
|
+
<section class="candidates">
|
|
71
|
+
<h3>Candidates</h3>
|
|
72
|
+
${model.candidates.length === 0 ? html`<p class="muted">No candidates recorded</p>` : html`<ul class="list">
|
|
73
|
+
${model.candidates.map(
|
|
74
|
+
(candidate) => html`
|
|
75
|
+
<li>
|
|
76
|
+
<div class="row-head">
|
|
77
|
+
<span class="id">${candidate.id}</span>
|
|
78
|
+
<span class="score">score ${candidate.score}</span>
|
|
79
|
+
</div>
|
|
80
|
+
${candidate.reasons.length === 0 ? nothing : html`<ul class="reasons">
|
|
81
|
+
${candidate.reasons.map((reason) => html`<li>${reason}</li>`)}
|
|
82
|
+
</ul>`}
|
|
83
|
+
</li>
|
|
84
|
+
`
|
|
85
|
+
)}
|
|
86
|
+
</ul>`}
|
|
87
|
+
${model.tieBreak ? html`<p class="muted">Tie-break: ${model.tieBreak}</p>` : nothing}
|
|
88
|
+
</section>
|
|
89
|
+
|
|
90
|
+
<section class="rejections">
|
|
91
|
+
<h3>Rejections</h3>
|
|
92
|
+
${model.rejections.length === 0 ? html`<p class="muted">No rejections recorded</p>` : html`<ul class="list">
|
|
93
|
+
${model.rejections.map(
|
|
94
|
+
(rejection) => html`
|
|
95
|
+
<li>
|
|
96
|
+
<div class="row-head">
|
|
97
|
+
<span class="id">${rejection.id}</span>
|
|
98
|
+
</div>
|
|
99
|
+
<span class="muted">${rejection.reason}</span>
|
|
100
|
+
</li>
|
|
101
|
+
`
|
|
102
|
+
)}
|
|
103
|
+
</ul>`}
|
|
104
|
+
</section>
|
|
105
|
+
|
|
106
|
+
<section class="actions-section">
|
|
107
|
+
<h3>Actions</h3>
|
|
108
|
+
${model.actions.length === 0 ? html`<p class="muted">No actions recorded</p>` : html`<div class="chips">
|
|
109
|
+
${model.actions.map((action) => html`<span class="badge">${action}</span>`)}
|
|
110
|
+
</div>`}
|
|
111
|
+
</section>
|
|
112
|
+
</section>
|
|
113
|
+
`;
|
|
114
|
+
}
|
|
115
|
+
panelName(model) {
|
|
116
|
+
const label = this.panelLabel.trim();
|
|
117
|
+
return label || `Decision trace — ${model.objective}`;
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
Ui9000Inspector.styles = [surfaceStyles, inspectorStyles];
|
|
121
|
+
__decorateClass([
|
|
122
|
+
property({ type: String, attribute: "trace" })
|
|
123
|
+
], Ui9000Inspector.prototype, "traceJson", 2);
|
|
124
|
+
__decorateClass([
|
|
125
|
+
property({ type: String, attribute: "panel-label" })
|
|
126
|
+
], Ui9000Inspector.prototype, "panelLabel", 2);
|
|
127
|
+
__decorateClass([
|
|
128
|
+
state()
|
|
129
|
+
], Ui9000Inspector.prototype, "_result", 2);
|
|
130
|
+
Ui9000Inspector = __decorateClass([
|
|
131
|
+
customElement("ui9000-inspector")
|
|
132
|
+
], Ui9000Inspector);
|
|
133
|
+
function registerInspector() {
|
|
134
|
+
if (!customElements.get("ui9000-inspector")) {
|
|
135
|
+
customElements.define("ui9000-inspector", Ui9000Inspector);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
export {
|
|
139
|
+
Ui9000Inspector,
|
|
140
|
+
registerInspector
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=ui9000-inspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui9000-inspector.js","sources":["../../../../src/components/inspector/element/ui9000-inspector.ts"],"sourcesContent":["import { html, LitElement, nothing, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { surfaceStyles } from '../../../element/surface-styles.js';\nimport { parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport { normalizeTrace } from '../lib/normalize.js';\nimport type { InspectorModel, NormalizedTrace } from '../lib/types.js';\nimport { inspectorStyles } from './styles.js';\n\nconst NOT_RECORDED = 'not recorded';\n\n/**\n * Renders one frozen decision trace (`trace.v2.json`). Props only: the trace\n * arrives as JSON on the `trace` attribute, nothing is fetched, and every value\n * is bound as a Lit text node — no `innerHTML`. Traces carrying dataset rows are\n * refused rather than rendered.\n */\n@customElement('ui9000-inspector')\nexport class Ui9000Inspector extends LitElement {\n static override styles = [surfaceStyles, inspectorStyles];\n\n @property({ type: String, attribute: 'trace' })\n traceJson = '{}';\n\n /** Overrides the panel's accessible name. */\n @property({ type: String, attribute: 'panel-label' })\n panelLabel = '';\n\n @state()\n private _result: NormalizedTrace = { ok: false, blocked: 'Trace required' };\n\n private refresh(): void {\n this._result = normalizeTrace(parseJsonAttr<unknown>(this.traceJson, null));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.refresh();\n }\n\n override willUpdate(changed: PropertyValues): void {\n if (changed.has('traceJson')) this.refresh();\n }\n\n override render() {\n const result = this._result;\n if (!result.ok) {\n return html`<p class=\"blocked\" role=\"status\">${result.blocked}</p>`;\n }\n const model = result.model;\n return html`\n <section class=\"root\" role=\"region\" aria-label=${this.panelName(model)}>\n <div class=\"head\">\n <h2>Decision trace</h2>\n <dl>\n <dt>Objective</dt>\n <dd>${model.objective}</dd>\n <dt>Winner</dt>\n <dd>\n ${model.winner\n ? html`<span class=\"badge\" data-kind=\"winner\">${model.winner}</span>`\n : html`<span class=\"muted\">${NOT_RECORDED}</span>`}\n </dd>\n <dt>Risk band</dt>\n <dd>\n ${model.riskBand\n ? html`<span class=\"badge\" data-band=${model.riskBand}>${model.riskBand}</span>`\n : model.unrecognizedRiskBand\n ? html`<span class=\"muted\">${model.unrecognizedRiskBand} (unrecognized)</span>`\n : html`<span class=\"muted\">${NOT_RECORDED}</span>`}\n </dd>\n <dt>Outcome</dt>\n <dd>${model.outcome ?? html`<span class=\"muted\">${NOT_RECORDED}</span>`}</dd>\n </dl>\n </div>\n\n <section class=\"profile\">\n <h3>Profile</h3>\n ${model.profile.length === 0\n ? html`<p class=\"muted\">No profile keys recorded</p>`\n : html`<dl>\n ${model.profile.map(\n (entry) => html`<dt>${entry.key}</dt><dd>${entry.value}</dd>`,\n )}\n </dl>`}\n </section>\n\n <section class=\"candidates\">\n <h3>Candidates</h3>\n ${model.candidates.length === 0\n ? html`<p class=\"muted\">No candidates recorded</p>`\n : html`<ul class=\"list\">\n ${model.candidates.map(\n (candidate) => html`\n <li>\n <div class=\"row-head\">\n <span class=\"id\">${candidate.id}</span>\n <span class=\"score\">score ${candidate.score}</span>\n </div>\n ${candidate.reasons.length === 0\n ? nothing\n : html`<ul class=\"reasons\">\n ${candidate.reasons.map((reason) => html`<li>${reason}</li>`)}\n </ul>`}\n </li>\n `,\n )}\n </ul>`}\n ${model.tieBreak ? html`<p class=\"muted\">Tie-break: ${model.tieBreak}</p>` : nothing}\n </section>\n\n <section class=\"rejections\">\n <h3>Rejections</h3>\n ${model.rejections.length === 0\n ? html`<p class=\"muted\">No rejections recorded</p>`\n : html`<ul class=\"list\">\n ${model.rejections.map(\n (rejection) => html`\n <li>\n <div class=\"row-head\">\n <span class=\"id\">${rejection.id}</span>\n </div>\n <span class=\"muted\">${rejection.reason}</span>\n </li>\n `,\n )}\n </ul>`}\n </section>\n\n <section class=\"actions-section\">\n <h3>Actions</h3>\n ${model.actions.length === 0\n ? html`<p class=\"muted\">No actions recorded</p>`\n : html`<div class=\"chips\">\n ${model.actions.map((action) => html`<span class=\"badge\">${action}</span>`)}\n </div>`}\n </section>\n </section>\n `;\n }\n\n private panelName(model: InspectorModel): string {\n const label = this.panelLabel.trim();\n return label || `Decision trace — ${model.objective}`;\n }\n}\n\nexport function registerInspector(): void {\n if (!customElements.get('ui9000-inspector')) {\n customElements.define('ui9000-inspector', Ui9000Inspector);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-inspector': Ui9000Inspector;\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { Ui9000Inspector, registerInspector } from './element/ui9000-inspector.js';
|
|
2
|
+
export { normalizeTrace, traceHasRows, TRACE_RISK_BANDS, type InspectorModel, type NormalizedTrace, type TraceCandidate, type TraceProfileEntry, type TraceRejection, type TraceRiskBand, } from './lib/index.js';
|
|
3
|
+
export { default as inspectorMetadata } from './metadata.json';
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/inspector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACnF,OAAO,EACL,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Ui9000Inspector, registerInspector } from "./element/ui9000-inspector.js";
|
|
2
|
+
import { normalizeTrace, traceHasRows } from "./lib/normalize.js";
|
|
3
|
+
import { TRACE_RISK_BANDS } from "./lib/types.js";
|
|
4
|
+
import { default as default2 } from "./metadata.json.js";
|
|
5
|
+
export {
|
|
6
|
+
TRACE_RISK_BANDS,
|
|
7
|
+
Ui9000Inspector,
|
|
8
|
+
default2 as inspectorMetadata,
|
|
9
|
+
normalizeTrace,
|
|
10
|
+
registerInspector,
|
|
11
|
+
traceHasRows
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { normalizeTrace, traceHasRows } from './normalize.js';
|
|
2
|
+
export { TRACE_RISK_BANDS, type InspectorModel, type NormalizedTrace, type TraceCandidate, type TraceProfileEntry, type TraceRejection, type TraceRiskBand, } from './types.js';
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/inspector/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EACL,gBAAgB,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,aAAa,GACnB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../src/components/inspector/lib/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,eAAe,EAKrB,MAAM,YAAY,CAAC;AAKpB,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAQpD;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAwB5D"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { TRACE_RISK_BANDS } from "./types.js";
|
|
2
|
+
const ROW_KEYS = /* @__PURE__ */ new Set(["rows", "data"]);
|
|
3
|
+
function traceHasRows(value) {
|
|
4
|
+
if (Array.isArray(value)) return value.some(traceHasRows);
|
|
5
|
+
if (!value || typeof value !== "object") return false;
|
|
6
|
+
for (const [key, child] of Object.entries(value)) {
|
|
7
|
+
if (ROW_KEYS.has(key) && Array.isArray(child)) return true;
|
|
8
|
+
if (traceHasRows(child)) return true;
|
|
9
|
+
}
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
function normalizeTrace(raw) {
|
|
13
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
|
|
14
|
+
return { ok: false, blocked: "Trace required" };
|
|
15
|
+
}
|
|
16
|
+
if (traceHasRows(raw)) {
|
|
17
|
+
return { ok: false, blocked: "Trace must not contain dataset rows" };
|
|
18
|
+
}
|
|
19
|
+
const trace = raw;
|
|
20
|
+
const objective = text(trace.objective);
|
|
21
|
+
if (!objective) {
|
|
22
|
+
return { ok: false, blocked: "Trace objective required" };
|
|
23
|
+
}
|
|
24
|
+
const model = {
|
|
25
|
+
objective,
|
|
26
|
+
profile: profileEntries(trace.profile),
|
|
27
|
+
candidates: candidates(trace.candidates),
|
|
28
|
+
winner: text(trace.winner) || null,
|
|
29
|
+
rejections: rejections(trace.rejections),
|
|
30
|
+
actions: stringList(trace.actions),
|
|
31
|
+
...readRiskBand(trace.riskBand),
|
|
32
|
+
outcome: text(trace.outcome) || null,
|
|
33
|
+
tieBreak: text(trace.tieBreak) || null
|
|
34
|
+
};
|
|
35
|
+
return { ok: true, model };
|
|
36
|
+
}
|
|
37
|
+
function profileEntries(raw) {
|
|
38
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return [];
|
|
39
|
+
const entries = [];
|
|
40
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
41
|
+
if (typeof value === "boolean") entries.push({ key, value: value ? "yes" : "no" });
|
|
42
|
+
else if (typeof value === "number" && Number.isFinite(value)) {
|
|
43
|
+
entries.push({ key, value: String(value) });
|
|
44
|
+
} else if (typeof value === "string" && value.trim()) {
|
|
45
|
+
entries.push({ key, value: value.trim() });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return entries;
|
|
49
|
+
}
|
|
50
|
+
function candidates(raw) {
|
|
51
|
+
if (!Array.isArray(raw)) return [];
|
|
52
|
+
const out = [];
|
|
53
|
+
for (const item of raw) {
|
|
54
|
+
if (!item || typeof item !== "object" || Array.isArray(item)) continue;
|
|
55
|
+
const candidate = item;
|
|
56
|
+
const id = text(candidate.id);
|
|
57
|
+
if (!id) continue;
|
|
58
|
+
const score = typeof candidate.score === "number" && Number.isFinite(candidate.score) ? candidate.score : 0;
|
|
59
|
+
out.push({ id, score, reasons: stringList(candidate.reasons) });
|
|
60
|
+
}
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
function rejections(raw) {
|
|
64
|
+
if (!Array.isArray(raw)) return [];
|
|
65
|
+
const out = [];
|
|
66
|
+
for (const item of raw) {
|
|
67
|
+
if (!item || typeof item !== "object" || Array.isArray(item)) continue;
|
|
68
|
+
const rejection = item;
|
|
69
|
+
const id = text(rejection.id);
|
|
70
|
+
if (!id) continue;
|
|
71
|
+
out.push({ id, reason: text(rejection.reason) || "No reason recorded" });
|
|
72
|
+
}
|
|
73
|
+
return out;
|
|
74
|
+
}
|
|
75
|
+
function readRiskBand(raw) {
|
|
76
|
+
const recorded = text(raw);
|
|
77
|
+
if (!recorded) return { riskBand: null, unrecognizedRiskBand: null };
|
|
78
|
+
const band = recorded.toLowerCase();
|
|
79
|
+
if (TRACE_RISK_BANDS.includes(band)) {
|
|
80
|
+
return { riskBand: band, unrecognizedRiskBand: null };
|
|
81
|
+
}
|
|
82
|
+
return { riskBand: null, unrecognizedRiskBand: recorded };
|
|
83
|
+
}
|
|
84
|
+
function stringList(raw) {
|
|
85
|
+
if (!Array.isArray(raw)) return [];
|
|
86
|
+
return raw.map(text).filter((value) => value.length > 0);
|
|
87
|
+
}
|
|
88
|
+
function text(raw) {
|
|
89
|
+
return typeof raw === "string" ? raw.trim() : "";
|
|
90
|
+
}
|
|
91
|
+
export {
|
|
92
|
+
normalizeTrace,
|
|
93
|
+
traceHasRows
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sources":["../../../../src/components/inspector/lib/normalize.ts"],"sourcesContent":["import {\n TRACE_RISK_BANDS,\n type InspectorModel,\n type NormalizedTrace,\n type TraceCandidate,\n type TraceProfileEntry,\n type TraceRejection,\n type TraceRiskBand,\n} from './types.js';\n\n/** Mirrors `assertTraceHasNoRows` in packages/core — a trace is a decision, never data. */\nconst ROW_KEYS = new Set(['rows', 'data']);\n\nexport function traceHasRows(value: unknown): boolean {\n if (Array.isArray(value)) return value.some(traceHasRows);\n if (!value || typeof value !== 'object') return false;\n for (const [key, child] of Object.entries(value)) {\n if (ROW_KEYS.has(key) && Array.isArray(child)) return true;\n if (traceHasRows(child)) return true;\n }\n return false;\n}\n\nexport function normalizeTrace(raw: unknown): NormalizedTrace {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return { ok: false, blocked: 'Trace required' };\n }\n if (traceHasRows(raw)) {\n return { ok: false, blocked: 'Trace must not contain dataset rows' };\n }\n const trace = raw as Record<string, unknown>;\n const objective = text(trace.objective);\n if (!objective) {\n return { ok: false, blocked: 'Trace objective required' };\n }\n const model: InspectorModel = {\n objective,\n profile: profileEntries(trace.profile),\n candidates: candidates(trace.candidates),\n winner: text(trace.winner) || null,\n rejections: rejections(trace.rejections),\n actions: stringList(trace.actions),\n ...readRiskBand(trace.riskBand),\n outcome: text(trace.outcome) || null,\n tieBreak: text(trace.tieBreak) || null,\n };\n return { ok: true, model };\n}\n\nfunction profileEntries(raw: unknown): TraceProfileEntry[] {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return [];\n const entries: TraceProfileEntry[] = [];\n for (const [key, value] of Object.entries(raw)) {\n if (typeof value === 'boolean') entries.push({ key, value: value ? 'yes' : 'no' });\n else if (typeof value === 'number' && Number.isFinite(value)) {\n entries.push({ key, value: String(value) });\n } else if (typeof value === 'string' && value.trim()) {\n entries.push({ key, value: value.trim() });\n }\n }\n return entries;\n}\n\nfunction candidates(raw: unknown): TraceCandidate[] {\n if (!Array.isArray(raw)) return [];\n const out: TraceCandidate[] = [];\n for (const item of raw) {\n if (!item || typeof item !== 'object' || Array.isArray(item)) continue;\n const candidate = item as Record<string, unknown>;\n const id = text(candidate.id);\n if (!id) continue;\n const score = typeof candidate.score === 'number' && Number.isFinite(candidate.score)\n ? candidate.score\n : 0;\n out.push({ id, score, reasons: stringList(candidate.reasons) });\n }\n return out;\n}\n\nfunction rejections(raw: unknown): TraceRejection[] {\n if (!Array.isArray(raw)) return [];\n const out: TraceRejection[] = [];\n for (const item of raw) {\n if (!item || typeof item !== 'object' || Array.isArray(item)) continue;\n const rejection = item as Record<string, unknown>;\n const id = text(rejection.id);\n if (!id) continue;\n out.push({ id, reason: text(rejection.reason) || 'No reason recorded' });\n }\n return out;\n}\n\nfunction readRiskBand(raw: unknown): Pick<InspectorModel, 'riskBand' | 'unrecognizedRiskBand'> {\n const recorded = text(raw);\n if (!recorded) return { riskBand: null, unrecognizedRiskBand: null };\n const band = recorded.toLowerCase();\n if ((TRACE_RISK_BANDS as readonly string[]).includes(band)) {\n return { riskBand: band as TraceRiskBand, unrecognizedRiskBand: null };\n }\n return { riskBand: null, unrecognizedRiskBand: recorded };\n}\n\nfunction stringList(raw: unknown): string[] {\n if (!Array.isArray(raw)) return [];\n return raw.map(text).filter((value) => value.length > 0);\n}\n\nfunction text(raw: unknown): string {\n return typeof raw === 'string' ? raw.trim() : '';\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shapes the inspector renders, per `trace.v2.json` in this folder.
|
|
3
|
+
* S4-03 publishes the real trace shape; until then that contract is the source
|
|
4
|
+
* of truth and v1 traces (no winner / riskBand / outcome) still render.
|
|
5
|
+
*/
|
|
6
|
+
export declare const TRACE_RISK_BANDS: readonly ["low", "medium", "high"];
|
|
7
|
+
export type TraceRiskBand = (typeof TRACE_RISK_BANDS)[number];
|
|
8
|
+
export type TraceCandidate = {
|
|
9
|
+
id: string;
|
|
10
|
+
score: number;
|
|
11
|
+
reasons: string[];
|
|
12
|
+
};
|
|
13
|
+
export type TraceRejection = {
|
|
14
|
+
id: string;
|
|
15
|
+
reason: string;
|
|
16
|
+
};
|
|
17
|
+
/** One closed-profile key with its value already formatted for display. */
|
|
18
|
+
export type TraceProfileEntry = {
|
|
19
|
+
key: string;
|
|
20
|
+
value: string;
|
|
21
|
+
};
|
|
22
|
+
/** Everything the panel renders. Text only — no rows, no markup. */
|
|
23
|
+
export type InspectorModel = {
|
|
24
|
+
objective: string;
|
|
25
|
+
profile: TraceProfileEntry[];
|
|
26
|
+
candidates: TraceCandidate[];
|
|
27
|
+
winner: string | null;
|
|
28
|
+
rejections: TraceRejection[];
|
|
29
|
+
actions: string[];
|
|
30
|
+
riskBand: TraceRiskBand | null;
|
|
31
|
+
/** Present when the trace sent a riskBand outside low | medium | high. */
|
|
32
|
+
unrecognizedRiskBand: string | null;
|
|
33
|
+
outcome: string | null;
|
|
34
|
+
tieBreak: string | null;
|
|
35
|
+
};
|
|
36
|
+
/** Fail-closed: a trace the panel refuses says why instead of rendering. */
|
|
37
|
+
export type NormalizedTrace = {
|
|
38
|
+
ok: true;
|
|
39
|
+
model: InspectorModel;
|
|
40
|
+
} | {
|
|
41
|
+
ok: false;
|
|
42
|
+
blocked: string;
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/inspector/lib/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,gBAAgB,oCAAqC,CAAC;AAEnE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,2EAA2E;AAC3E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,oEAAoE;AACpE,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,0EAA0E;IAC1E,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB,CAAC;AAEF,4EAA4E;AAC5E,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,GACnC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../src/components/inspector/lib/types.ts"],"sourcesContent":["/**\n * Shapes the inspector renders, per `trace.v2.json` in this folder.\n * S4-03 publishes the real trace shape; until then that contract is the source\n * of truth and v1 traces (no winner / riskBand / outcome) still render.\n */\n\nexport const TRACE_RISK_BANDS = ['low', 'medium', 'high'] as const;\n\nexport type TraceRiskBand = (typeof TRACE_RISK_BANDS)[number];\n\nexport type TraceCandidate = {\n id: string;\n score: number;\n reasons: string[];\n};\n\nexport type TraceRejection = {\n id: string;\n reason: string;\n};\n\n/** One closed-profile key with its value already formatted for display. */\nexport type TraceProfileEntry = {\n key: string;\n value: string;\n};\n\n/** Everything the panel renders. Text only — no rows, no markup. */\nexport type InspectorModel = {\n objective: string;\n profile: TraceProfileEntry[];\n candidates: TraceCandidate[];\n winner: string | null;\n rejections: TraceRejection[];\n actions: string[];\n riskBand: TraceRiskBand | null;\n /** Present when the trace sent a riskBand outside low | medium | high. */\n unrecognizedRiskBand: string | null;\n outcome: string | null;\n tieBreak: string | null;\n};\n\n/** Fail-closed: a trace the panel refuses says why instead of rendering. */\nexport type NormalizedTrace =\n | { ok: true; model: InspectorModel }\n | { ok: false; blocked: string };\n"],"names":[],"mappings":"AAMO,MAAM,mBAAmB,CAAC,OAAO,UAAU,MAAM;"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
"id": "inspector",
|
|
3
|
+
"tag": "ui9000-inspector",
|
|
4
|
+
"title": "Inspector",
|
|
5
|
+
"description": "Renders one frozen decision trace: objective, profile keys, candidates with scores, winner, rejections with reasons, actions, risk band and outcome. Props only, and it refuses a trace carrying dataset rows.",
|
|
6
|
+
"chartTypeKeys": [],
|
|
7
|
+
"source": "ui9000-widgets S4-08",
|
|
8
|
+
"stack": "lit",
|
|
9
|
+
"entry": "@ui9000/widgets/inspector",
|
|
10
|
+
"tier": "host",
|
|
11
|
+
"usageConditions": {
|
|
12
|
+
"host": "mcp-chat",
|
|
13
|
+
"notFor": "fusedash-editor",
|
|
14
|
+
"mapsExcluded": true,
|
|
15
|
+
"rowsExcluded": true,
|
|
16
|
+
"traceContract": "trace.v2.json (this folder) until S4-03 publishes the shape"
|
|
17
|
+
},
|
|
18
|
+
"allowedActions": ["resize"],
|
|
19
|
+
"accessibility": {
|
|
20
|
+
"nameFrom": "panel-label, else \"Decision trace — <objective>\"",
|
|
21
|
+
"keyboard": ["Tab past the panel — it is display only"],
|
|
22
|
+
"shadowBoundary": "Do not use aria-labelledby across the host; the panel region carries aria-label."
|
|
23
|
+
},
|
|
24
|
+
"propsSchema": {
|
|
25
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
26
|
+
"type": "object",
|
|
27
|
+
"properties": {
|
|
28
|
+
"trace": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"description": "Decision trace JSON — see trace.v2.json in this folder. v1 traces render with winner, riskBand and outcome shown as not recorded.",
|
|
31
|
+
"$ref": "./trace.v2.json"
|
|
32
|
+
},
|
|
33
|
+
"panelLabel": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"description": "Overrides the panel's accessible name."
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"required": ["trace"]
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
;
|
|
42
|
+
|
|
43
|
+
export default _default;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const id = "inspector";
|
|
2
|
+
const tag = "ui9000-inspector";
|
|
3
|
+
const title = "Inspector";
|
|
4
|
+
const description = "Renders one frozen decision trace: objective, profile keys, candidates with scores, winner, rejections with reasons, actions, risk band and outcome. Props only, and it refuses a trace carrying dataset rows.";
|
|
5
|
+
const chartTypeKeys = [];
|
|
6
|
+
const source = "ui9000-widgets S4-08";
|
|
7
|
+
const stack = "lit";
|
|
8
|
+
const entry = "@ui9000/widgets/inspector";
|
|
9
|
+
const tier = "host";
|
|
10
|
+
const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": true, "rowsExcluded": true, "traceContract": "trace.v2.json (this folder) until S4-03 publishes the shape" };
|
|
11
|
+
const allowedActions = ["resize"];
|
|
12
|
+
const accessibility = { "nameFrom": 'panel-label, else "Decision trace — <objective>"', "keyboard": ["Tab past the panel — it is display only"], "shadowBoundary": "Do not use aria-labelledby across the host; the panel region carries aria-label." };
|
|
13
|
+
const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "trace": { "type": "object", "description": "Decision trace JSON — see trace.v2.json in this folder. v1 traces render with winner, riskBand and outcome shown as not recorded.", "$ref": "./trace.v2.json" }, "panelLabel": { "type": "string", "description": "Overrides the panel's accessible name." } }, "required": ["trace"] };
|
|
14
|
+
const metadata = {
|
|
15
|
+
id,
|
|
16
|
+
tag,
|
|
17
|
+
title,
|
|
18
|
+
description,
|
|
19
|
+
chartTypeKeys,
|
|
20
|
+
source,
|
|
21
|
+
stack,
|
|
22
|
+
entry,
|
|
23
|
+
tier,
|
|
24
|
+
usageConditions,
|
|
25
|
+
allowedActions,
|
|
26
|
+
accessibility,
|
|
27
|
+
propsSchema
|
|
28
|
+
};
|
|
29
|
+
export {
|
|
30
|
+
accessibility,
|
|
31
|
+
allowedActions,
|
|
32
|
+
chartTypeKeys,
|
|
33
|
+
metadata as default,
|
|
34
|
+
description,
|
|
35
|
+
entry,
|
|
36
|
+
id,
|
|
37
|
+
propsSchema,
|
|
38
|
+
source,
|
|
39
|
+
stack,
|
|
40
|
+
tag,
|
|
41
|
+
tier,
|
|
42
|
+
title,
|
|
43
|
+
usageConditions
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=metadata.json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -3,10 +3,10 @@ import { styleMap } from "lit/directives/style-map.js";
|
|
|
3
3
|
import { property, state, customElement } from "lit/decorators.js";
|
|
4
4
|
import { Ui9000ChartElement } from "../../../element/ui9000-chart-base.js";
|
|
5
5
|
import { parseJsonAttr } from "../../../utils/chart-helpers.js";
|
|
6
|
-
import { kpiWidgetStyles } from "./styles.js";
|
|
7
6
|
import { normalizeKpiData } from "../lib/normalize.js";
|
|
8
|
-
import { getKpiGridColumns, getAdvancedSplitLayout, MIN_KPI_CELL_WIDTH, getKpiGridScrollAxis } from "../lib/grid.js";
|
|
9
7
|
import { visualisationChartType } from "../lib/extract.js";
|
|
8
|
+
import { getKpiGridColumns, getAdvancedSplitLayout, MIN_KPI_CELL_WIDTH, getKpiGridScrollAxis } from "../lib/grid.js";
|
|
9
|
+
import { kpiWidgetStyles } from "./styles.js";
|
|
10
10
|
import { chartShellStyles } from "../../../element/chart-shell-styles.js";
|
|
11
11
|
var __defProp = Object.defineProperty;
|
|
12
12
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { registerKpiWidget } from "./element/ui9000-kpi-widget.js";
|
|
2
2
|
import { Ui9000KpiWidget } from "./element/ui9000-kpi-widget.js";
|
|
3
|
-
import {
|
|
4
|
-
import { MIN_KPI_CELL_WIDTH, getAdvancedSplitLayout, getKpiGridColumns, getKpiGridScrollAxis } from "./lib/grid.js";
|
|
3
|
+
import { normalizeKpiData } from "./lib/normalize.js";
|
|
5
4
|
import { extractCardsFromKpi, isAdvancedKpiItem } from "./lib/extract.js";
|
|
6
5
|
import { formatKpiValue, splitFormattedKpiValue } from "./lib/format.js";
|
|
7
|
-
import {
|
|
6
|
+
import { MIN_KPI_CELL_WIDTH, getAdvancedSplitLayout, getKpiGridColumns, getKpiGridScrollAxis } from "./lib/grid.js";
|
|
7
|
+
import { default as default2 } from "./metadata.json.js";
|
|
8
8
|
export {
|
|
9
9
|
MIN_KPI_CELL_WIDTH,
|
|
10
10
|
Ui9000KpiWidget,
|