@fusedashlabs/widgets 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +72 -17
- package/README.md +24 -26
- package/dist/components/area-chart/element/ui9000-area-chart.d.ts +1 -1
- package/dist/components/area-grouped-bar-chart/element/ui9000-area-grouped-bar-chart.d.ts +1 -1
- package/dist/components/area-grouped-bar-chart/lib/normalize.js +3 -3
- package/dist/components/area-grouped-bar-chart/lib/normalize.js.map +1 -1
- package/dist/components/bar-chart/element/ui9000-bar-chart.d.ts +1 -1
- package/dist/components/bias-variance-tradeoff-chart/element/styles.d.ts +7 -0
- package/dist/components/bias-variance-tradeoff-chart/element/styles.d.ts.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/element/styles.js +13 -0
- package/dist/components/bias-variance-tradeoff-chart/element/styles.js.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.d.ts +27 -0
- package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.d.ts.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.js +173 -0
- package/dist/components/bias-variance-tradeoff-chart/element/ui9000-bias-variance-tradeoff-chart.js.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/index.d.ts +5 -0
- package/dist/components/bias-variance-tradeoff-chart/index.d.ts.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/index.js +19 -0
- package/dist/components/bias-variance-tradeoff-chart/index.js.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/domain.d.ts +8 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/domain.d.ts.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/domain.js +37 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/domain.js.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/format.d.ts +3 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/format.d.ts.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/format.js +9 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/format.js.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/index.d.ts +5 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/index.d.ts.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/normalize.d.ts +4 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/normalize.d.ts.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/normalize.js +135 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/normalize.js.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/types.d.ts +47 -0
- package/dist/components/bias-variance-tradeoff-chart/lib/types.d.ts.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/metadata.json.d.ts +41 -0
- package/dist/components/bias-variance-tradeoff-chart/metadata.json.js +42 -0
- package/dist/components/bias-variance-tradeoff-chart/metadata.json.js.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/render/draw.d.ts +31 -0
- package/dist/components/bias-variance-tradeoff-chart/render/draw.d.ts.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/render/draw.js +203 -0
- package/dist/components/bias-variance-tradeoff-chart/render/draw.js.map +1 -0
- package/dist/components/bias-variance-tradeoff-chart/render/index.d.ts +2 -0
- package/dist/components/bias-variance-tradeoff-chart/render/index.d.ts.map +1 -0
- package/dist/components/box-plot-chart/element/ui9000-box-plot-chart.d.ts +1 -1
- package/dist/components/bubble-chart/element/ui9000-bubble-chart.d.ts +1 -1
- package/dist/components/chart-renderer/lib/registry.d.ts.map +1 -1
- package/dist/components/chart-renderer/lib/registry.js +12 -0
- package/dist/components/chart-renderer/lib/registry.js.map +1 -1
- package/dist/components/donut-chart/element/ui9000-donut-chart.d.ts +1 -1
- package/dist/components/donut-group-chart/element/ui9000-donut-group-chart.d.ts +1 -1
- package/dist/components/gini-impurity-entropy-chart/element/styles.d.ts +2 -0
- package/dist/components/gini-impurity-entropy-chart/element/styles.d.ts.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/element/styles.js +72 -0
- package/dist/components/gini-impurity-entropy-chart/element/styles.js.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.d.ts +36 -0
- package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.d.ts.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.js +186 -0
- package/dist/components/gini-impurity-entropy-chart/element/ui9000-gini-impurity-entropy-chart.js.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/index.d.ts +5 -0
- package/dist/components/gini-impurity-entropy-chart/index.d.ts.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/index.js +32 -0
- package/dist/components/gini-impurity-entropy-chart/index.js.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/lib/domain.d.ts +9 -0
- package/dist/components/gini-impurity-entropy-chart/lib/domain.d.ts.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/lib/domain.js +32 -0
- package/dist/components/gini-impurity-entropy-chart/lib/domain.js.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/lib/format.d.ts +10 -0
- package/dist/components/gini-impurity-entropy-chart/lib/format.d.ts.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/lib/format.js +22 -0
- package/dist/components/gini-impurity-entropy-chart/lib/format.js.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/lib/index.d.ts +7 -0
- package/dist/components/gini-impurity-entropy-chart/lib/index.d.ts.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/lib/normalize.d.ts +7 -0
- package/dist/components/gini-impurity-entropy-chart/lib/normalize.d.ts.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/lib/normalize.js +117 -0
- package/dist/components/gini-impurity-entropy-chart/lib/normalize.js.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/lib/overlays.d.ts +19 -0
- package/dist/components/gini-impurity-entropy-chart/lib/overlays.d.ts.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/lib/overlays.js +63 -0
- package/dist/components/gini-impurity-entropy-chart/lib/overlays.js.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/lib/series.d.ts +12 -0
- package/dist/components/gini-impurity-entropy-chart/lib/series.d.ts.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/lib/series.js +45 -0
- package/dist/components/gini-impurity-entropy-chart/lib/series.js.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/lib/types.d.ts +83 -0
- package/dist/components/gini-impurity-entropy-chart/lib/types.d.ts.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/lib/types.js +19 -0
- package/dist/components/gini-impurity-entropy-chart/lib/types.js.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/metadata.json.d.ts +115 -0
- package/dist/components/gini-impurity-entropy-chart/metadata.json.js +42 -0
- package/dist/components/gini-impurity-entropy-chart/metadata.json.js.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/render/draw.d.ts +40 -0
- package/dist/components/gini-impurity-entropy-chart/render/draw.d.ts.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/render/draw.js +160 -0
- package/dist/components/gini-impurity-entropy-chart/render/draw.js.map +1 -0
- package/dist/components/gini-impurity-entropy-chart/render/index.d.ts +2 -0
- package/dist/components/gini-impurity-entropy-chart/render/index.d.ts.map +1 -0
- package/dist/components/histogram-chart/element/ui9000-histogram-chart.d.ts +1 -1
- package/dist/components/kpi-widget/element/ui9000-kpi-widget.d.ts +1 -1
- package/dist/components/kpi-widget/element/ui9000-kpi-widget.js +1 -1
- package/dist/components/line-chart/element/ui9000-line-chart.d.ts +1 -1
- package/dist/components/lollipop/element/ui9000-lollipop.d.ts +1 -1
- package/dist/components/network-graph/element/styles.d.ts +2 -0
- package/dist/components/network-graph/element/styles.d.ts.map +1 -0
- package/dist/components/network-graph/element/styles.js +152 -0
- package/dist/components/network-graph/element/styles.js.map +1 -0
- package/dist/components/network-graph/element/ui9000-network-graph.d.ts +43 -0
- package/dist/components/network-graph/element/ui9000-network-graph.d.ts.map +1 -0
- package/dist/components/network-graph/element/ui9000-network-graph.js +230 -0
- package/dist/components/network-graph/element/ui9000-network-graph.js.map +1 -0
- package/dist/components/network-graph/index.d.ts +5 -0
- package/dist/components/network-graph/index.d.ts.map +1 -0
- package/dist/components/network-graph/index.js +37 -0
- package/dist/components/network-graph/index.js.map +1 -0
- package/dist/components/network-graph/lib/domain.d.ts +96 -0
- package/dist/components/network-graph/lib/domain.d.ts.map +1 -0
- package/dist/components/network-graph/lib/domain.js +211 -0
- package/dist/components/network-graph/lib/domain.js.map +1 -0
- package/dist/components/network-graph/lib/format.d.ts +7 -0
- package/dist/components/network-graph/lib/format.d.ts.map +1 -0
- package/dist/components/network-graph/lib/format.js +29 -0
- package/dist/components/network-graph/lib/format.js.map +1 -0
- package/dist/components/network-graph/lib/index.d.ts +5 -0
- package/dist/components/network-graph/lib/index.d.ts.map +1 -0
- package/dist/components/network-graph/lib/normalize.d.ts +10 -0
- package/dist/components/network-graph/lib/normalize.d.ts.map +1 -0
- package/dist/components/network-graph/lib/normalize.js +140 -0
- package/dist/components/network-graph/lib/normalize.js.map +1 -0
- package/dist/components/network-graph/lib/types.d.ts +56 -0
- package/dist/components/network-graph/lib/types.d.ts.map +1 -0
- package/dist/components/network-graph/metadata.json.d.ts +91 -0
- package/dist/components/network-graph/metadata.json.js +42 -0
- package/dist/components/network-graph/metadata.json.js.map +1 -0
- package/dist/components/network-graph/render/draw.d.ts +46 -0
- package/dist/components/network-graph/render/draw.d.ts.map +1 -0
- package/dist/components/network-graph/render/draw.js +468 -0
- package/dist/components/network-graph/render/draw.js.map +1 -0
- package/dist/components/network-graph/render/index.d.ts +2 -0
- package/dist/components/network-graph/render/index.d.ts.map +1 -0
- package/dist/components/parallel-coordinates-chart/element/styles.d.ts +2 -0
- package/dist/components/parallel-coordinates-chart/element/styles.d.ts.map +1 -0
- package/dist/components/parallel-coordinates-chart/element/styles.js +71 -0
- package/dist/components/parallel-coordinates-chart/element/styles.js.map +1 -0
- package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.d.ts +33 -0
- package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.d.ts.map +1 -0
- package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.js +182 -0
- package/dist/components/parallel-coordinates-chart/element/ui9000-parallel-coordinates-chart.js.map +1 -0
- package/dist/components/parallel-coordinates-chart/index.d.ts +5 -0
- package/dist/components/parallel-coordinates-chart/index.d.ts.map +1 -0
- package/dist/components/parallel-coordinates-chart/index.js +23 -0
- package/dist/components/parallel-coordinates-chart/index.js.map +1 -0
- package/dist/components/parallel-coordinates-chart/lib/domain.d.ts +14 -0
- package/dist/components/parallel-coordinates-chart/lib/domain.d.ts.map +1 -0
- package/dist/components/parallel-coordinates-chart/lib/domain.js +28 -0
- package/dist/components/parallel-coordinates-chart/lib/domain.js.map +1 -0
- package/dist/components/parallel-coordinates-chart/lib/format.d.ts +12 -0
- package/dist/components/parallel-coordinates-chart/lib/format.d.ts.map +1 -0
- package/dist/components/parallel-coordinates-chart/lib/format.js +18 -0
- package/dist/components/parallel-coordinates-chart/lib/format.js.map +1 -0
- package/dist/components/parallel-coordinates-chart/lib/index.d.ts +5 -0
- package/dist/components/parallel-coordinates-chart/lib/index.d.ts.map +1 -0
- package/dist/components/parallel-coordinates-chart/lib/normalize.d.ts +23 -0
- package/dist/components/parallel-coordinates-chart/lib/normalize.d.ts.map +1 -0
- package/dist/components/parallel-coordinates-chart/lib/normalize.js +156 -0
- package/dist/components/parallel-coordinates-chart/lib/normalize.js.map +1 -0
- package/dist/components/parallel-coordinates-chart/lib/types.d.ts +48 -0
- package/dist/components/parallel-coordinates-chart/lib/types.d.ts.map +1 -0
- package/dist/components/parallel-coordinates-chart/metadata.json.d.ts +103 -0
- package/dist/components/parallel-coordinates-chart/metadata.json.js +45 -0
- package/dist/components/parallel-coordinates-chart/metadata.json.js.map +1 -0
- package/dist/components/parallel-coordinates-chart/render/draw.d.ts +30 -0
- package/dist/components/parallel-coordinates-chart/render/draw.d.ts.map +1 -0
- package/dist/components/parallel-coordinates-chart/render/draw.js +160 -0
- package/dist/components/parallel-coordinates-chart/render/draw.js.map +1 -0
- package/dist/components/parallel-coordinates-chart/render/index.d.ts +2 -0
- package/dist/components/parallel-coordinates-chart/render/index.d.ts.map +1 -0
- package/dist/components/pie-chart/element/ui9000-pie-chart.d.ts +1 -1
- package/dist/components/polar-area-chart/element/styles.d.ts +2 -0
- package/dist/components/polar-area-chart/element/styles.d.ts.map +1 -0
- package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.d.ts +29 -0
- package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.d.ts.map +1 -0
- package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.js +167 -0
- package/dist/components/polar-area-chart/element/ui9000-polar-area-chart.js.map +1 -0
- package/dist/components/polar-area-chart/index.d.ts +5 -0
- package/dist/components/polar-area-chart/index.d.ts.map +1 -0
- package/dist/components/polar-area-chart/index.js +18 -0
- package/dist/components/polar-area-chart/index.js.map +1 -0
- package/dist/components/polar-area-chart/lib/domain.d.ts +25 -0
- package/dist/components/polar-area-chart/lib/domain.d.ts.map +1 -0
- package/dist/components/polar-area-chart/lib/domain.js +47 -0
- package/dist/components/polar-area-chart/lib/domain.js.map +1 -0
- package/dist/components/polar-area-chart/lib/index.d.ts +4 -0
- package/dist/components/polar-area-chart/lib/index.d.ts.map +1 -0
- package/dist/components/polar-area-chart/lib/normalize.d.ts +4 -0
- package/dist/components/polar-area-chart/lib/normalize.d.ts.map +1 -0
- package/dist/components/polar-area-chart/lib/normalize.js +117 -0
- package/dist/components/polar-area-chart/lib/normalize.js.map +1 -0
- package/dist/components/polar-area-chart/lib/types.d.ts +43 -0
- package/dist/components/polar-area-chart/lib/types.d.ts.map +1 -0
- package/dist/components/polar-area-chart/metadata.json.d.ts +79 -0
- package/dist/components/polar-area-chart/metadata.json.js +42 -0
- package/dist/components/polar-area-chart/metadata.json.js.map +1 -0
- package/dist/components/polar-area-chart/render/draw.d.ts +25 -0
- package/dist/components/polar-area-chart/render/draw.d.ts.map +1 -0
- package/dist/components/polar-area-chart/render/draw.js +127 -0
- package/dist/components/polar-area-chart/render/draw.js.map +1 -0
- package/dist/components/polar-area-chart/render/index.d.ts +2 -0
- package/dist/components/polar-area-chart/render/index.d.ts.map +1 -0
- package/dist/components/punchcard-chart/element/ui9000-punchcard-chart.d.ts +1 -1
- package/dist/components/radar-chart/element/ui9000-radar-chart.d.ts +1 -1
- package/dist/components/radial-bar-chart/element/styles.d.ts +2 -0
- package/dist/components/radial-bar-chart/element/styles.d.ts.map +1 -0
- package/dist/components/radial-bar-chart/element/styles.js +53 -0
- package/dist/components/radial-bar-chart/element/styles.js.map +1 -0
- package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.d.ts +35 -0
- package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.d.ts.map +1 -0
- package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.js +174 -0
- package/dist/components/radial-bar-chart/element/ui9000-radial-bar-chart.js.map +1 -0
- package/dist/components/radial-bar-chart/index.d.ts +5 -0
- package/dist/components/radial-bar-chart/index.d.ts.map +1 -0
- package/dist/components/radial-bar-chart/index.js +21 -0
- package/dist/components/radial-bar-chart/index.js.map +1 -0
- package/dist/components/radial-bar-chart/lib/domain.d.ts +47 -0
- package/dist/components/radial-bar-chart/lib/domain.d.ts.map +1 -0
- package/dist/components/radial-bar-chart/lib/domain.js +50 -0
- package/dist/components/radial-bar-chart/lib/domain.js.map +1 -0
- package/dist/components/radial-bar-chart/lib/format.d.ts +6 -0
- package/dist/components/radial-bar-chart/lib/format.d.ts.map +1 -0
- package/dist/components/radial-bar-chart/lib/format.js +12 -0
- package/dist/components/radial-bar-chart/lib/format.js.map +1 -0
- package/dist/components/radial-bar-chart/lib/index.d.ts +5 -0
- package/dist/components/radial-bar-chart/lib/index.d.ts.map +1 -0
- package/dist/components/radial-bar-chart/lib/normalize.d.ts +4 -0
- package/dist/components/radial-bar-chart/lib/normalize.d.ts.map +1 -0
- package/dist/components/radial-bar-chart/lib/normalize.js +92 -0
- package/dist/components/radial-bar-chart/lib/normalize.js.map +1 -0
- package/dist/components/radial-bar-chart/lib/types.d.ts +34 -0
- package/dist/components/radial-bar-chart/lib/types.d.ts.map +1 -0
- package/dist/components/radial-bar-chart/metadata.json.d.ts +62 -0
- package/dist/components/radial-bar-chart/metadata.json.js +42 -0
- package/dist/components/radial-bar-chart/metadata.json.js.map +1 -0
- package/dist/components/radial-bar-chart/render/draw.d.ts +29 -0
- package/dist/components/radial-bar-chart/render/draw.d.ts.map +1 -0
- package/dist/components/radial-bar-chart/render/draw.js +92 -0
- package/dist/components/radial-bar-chart/render/draw.js.map +1 -0
- package/dist/components/radial-bar-chart/render/index.d.ts +2 -0
- package/dist/components/radial-bar-chart/render/index.d.ts.map +1 -0
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.d.ts +1 -1
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.js +2 -1
- package/dist/components/sankey-chart/element/ui9000-sankey-chart.js.map +1 -1
- package/dist/components/sankey-chart/index.js +4 -2
- package/dist/components/sankey-chart/index.js.map +1 -1
- package/dist/components/sankey-chart/lib/domain.d.ts +2 -2
- package/dist/components/sankey-chart/lib/domain.d.ts.map +1 -1
- package/dist/components/sankey-chart/lib/domain.js +1 -13
- package/dist/components/sankey-chart/lib/domain.js.map +1 -1
- package/dist/components/sankey-chart/lib/format.d.ts +1 -2
- package/dist/components/sankey-chart/lib/format.d.ts.map +1 -1
- package/dist/components/sankey-chart/lib/format.js +3 -7
- package/dist/components/sankey-chart/lib/format.js.map +1 -1
- package/dist/components/scatter-plot-chart/element/ui9000-scatter-plot.d.ts +1 -1
- package/dist/components/scatter-sparkline-chart/element/ui9000-scatter-sparkline-chart.d.ts +1 -1
- package/dist/components/spark-area-chart/element/ui9000-spark-area-chart.d.ts +1 -1
- package/dist/components/spark-line-chart/element/ui9000-spark-line-chart.d.ts +1 -1
- package/dist/components/step-line-chart/element/ui9000-step-line-chart.d.ts +1 -1
- package/dist/components/violin-chart/element/ui9000-violin-chart.d.ts +1 -1
- package/dist/components/waterfall-chart/element/ui9000-waterfall-chart.d.ts +1 -1
- package/dist/element/ui9000-chart-base.d.ts +2 -2
- package/dist/index.d.ts +14 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +110 -13
- package/dist/index.js.map +1 -1
- package/dist/lazy/bias-variance-tradeoff-chart.d.ts +4 -0
- package/dist/lazy/bias-variance-tradeoff-chart.d.ts.map +1 -0
- package/dist/lazy/bias-variance-tradeoff-chart.js +5 -0
- package/dist/lazy/bias-variance-tradeoff-chart.js.map +1 -0
- package/dist/lazy/gini-impurity-entropy-chart.d.ts +4 -0
- package/dist/lazy/gini-impurity-entropy-chart.d.ts.map +1 -0
- package/dist/lazy/gini-impurity-entropy-chart.js +5 -0
- package/dist/lazy/gini-impurity-entropy-chart.js.map +1 -0
- package/dist/lazy/index.d.ts +7 -1
- package/dist/lazy/index.d.ts.map +1 -1
- package/dist/lazy/index.js +48 -0
- package/dist/lazy/index.js.map +1 -1
- package/dist/lazy/network-graph.d.ts +4 -0
- package/dist/lazy/network-graph.d.ts.map +1 -0
- package/dist/lazy/network-graph.js +5 -0
- package/dist/lazy/network-graph.js.map +1 -0
- package/dist/lazy/parallel-coordinates-chart.d.ts +4 -0
- package/dist/lazy/parallel-coordinates-chart.d.ts.map +1 -0
- package/dist/lazy/parallel-coordinates-chart.js +5 -0
- package/dist/lazy/parallel-coordinates-chart.js.map +1 -0
- package/dist/lazy/polar-area-chart.d.ts +4 -0
- package/dist/lazy/polar-area-chart.d.ts.map +1 -0
- package/dist/lazy/polar-area-chart.js +5 -0
- package/dist/lazy/polar-area-chart.js.map +1 -0
- package/dist/lazy/radial-bar-chart.d.ts +4 -0
- package/dist/lazy/radial-bar-chart.d.ts.map +1 -0
- package/dist/lazy/radial-bar-chart.js +5 -0
- package/dist/lazy/radial-bar-chart.js.map +1 -0
- package/dist/utils/breakpoints.d.ts +7 -0
- package/dist/utils/breakpoints.d.ts.map +1 -0
- package/dist/utils/breakpoints.js +17 -0
- package/dist/utils/breakpoints.js.map +1 -0
- package/dist/utils/chart-helpers.d.ts +21 -0
- package/dist/utils/chart-helpers.d.ts.map +1 -1
- package/dist/utils/chart-helpers.js +54 -0
- package/dist/utils/chart-helpers.js.map +1 -1
- package/dist/utils/format-text.d.ts +17 -0
- package/dist/utils/format-text.d.ts.map +1 -0
- package/dist/utils/format-text.js +26 -0
- package/dist/utils/format-text.js.map +1 -0
- package/dist/utils/fusedash-visual.d.ts +143 -0
- package/dist/utils/fusedash-visual.d.ts.map +1 -1
- package/dist/utils/fusedash-visual.js +114 -1
- package/dist/utils/fusedash-visual.js.map +1 -1
- package/package.json +56 -4
- package/dist/node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directive.js +0 -28
- package/dist/node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directive.js.map +0 -1
- package/dist/node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/style-map.js +0 -37
- package/dist/node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/directives/style-map.js.map +0 -1
- package/dist/node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/lit-html.js +0 -231
- package/dist/node_modules/.pnpm/lit-html@3.3.3/node_modules/lit-html/lit-html.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain.js","sources":["../../../../src/components/gini-impurity-entropy-chart/lib/domain.ts"],"sourcesContent":["import type { GiniSeries } from './types.js';\n\n/** Widths a flat domain is padded by so a constant curve still has a range. */\nconst FLAT_DOMAIN_EPSILON = 1e-6;\n\nfunction extentOf(values: number[], fallback: [number, number]): [number, number] {\n let min = Infinity;\n let max = -Infinity;\n for (const v of values) {\n if (!Number.isFinite(v)) continue;\n if (v < min) min = v;\n if (v > max) max = v;\n }\n if (!Number.isFinite(min) || !Number.isFinite(max)) return fallback;\n // Client: `sameP` / `sameY` widen a degenerate domain instead of clamping.\n if (!(max > min)) return [min - FLAT_DOMAIN_EPSILON, max + FLAT_DOMAIN_EPSILON];\n return [min, max];\n}\n\n/**\n * X domain from every sampled `p`. The client fits the data rather than\n * assuming [0, 1], so a partial probability sweep still fills the plot.\n */\nexport function collectPExtent(series: GiniSeries[]): [number, number] {\n const values: number[] = [];\n for (const s of series) {\n for (const point of s.points) values.push(point.p);\n }\n return extentOf(values, [0, 1]);\n}\n\n/** Y domain from every metric value — not zero-anchored, matching the client. */\nexport function collectValueExtent(series: GiniSeries[]): [number, number] {\n const values: number[] = [];\n for (const s of series) {\n for (const point of s.points) values.push(point.value);\n }\n return extentOf(values, [0, 1]);\n}\n"],"names":[],"mappings":"AAGA,MAAM,sBAAsB;AAE5B,SAAS,SAAS,QAAkB,UAA8C;AAChF,MAAI,MAAM;AACV,MAAI,MAAM;AACV,aAAW,KAAK,QAAQ;AACtB,QAAI,CAAC,OAAO,SAAS,CAAC,EAAG;AACzB,QAAI,IAAI,IAAK,OAAM;AACnB,QAAI,IAAI,IAAK,OAAM;AAAA,EACrB;AACA,MAAI,CAAC,OAAO,SAAS,GAAG,KAAK,CAAC,OAAO,SAAS,GAAG,EAAG,QAAO;AAE3D,MAAI,EAAE,MAAM,KAAM,QAAO,CAAC,MAAM,qBAAqB,MAAM,mBAAmB;AAC9E,SAAO,CAAC,KAAK,GAAG;AAClB;AAMO,SAAS,eAAe,QAAwC;AACrE,QAAM,SAAmB,CAAA;AACzB,aAAW,KAAK,QAAQ;AACtB,eAAW,SAAS,EAAE,OAAQ,QAAO,KAAK,MAAM,CAAC;AAAA,EACnD;AACA,SAAO,SAAS,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChC;AAGO,SAAS,mBAAmB,QAAwC;AACzE,QAAM,SAAmB,CAAA;AACzB,aAAW,KAAK,QAAQ;AACtB,eAAW,SAAS,EAAE,OAAQ,QAAO,KAAK,MAAM,KAAK;AAAA,EACvD;AACA,SAAO,SAAS,QAAQ,CAAC,GAAG,CAAC,CAAC;AAChC;"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Client Y ticks use `d3-format(".1f")`. Impurity indices live in [0, 1], so a
|
|
3
|
+
* single decimal is right; anything larger falls back to compact notation.
|
|
4
|
+
*/
|
|
5
|
+
export declare function formatImpurityTick(value: number): string;
|
|
6
|
+
/** X ticks / tooltip probabilities — trims the trailing zeros `.1f` would add. */
|
|
7
|
+
export declare function formatProbability(value: number): string;
|
|
8
|
+
/** Tooltip readout for a metric value. */
|
|
9
|
+
export declare function formatImpurityValue(value: number): string;
|
|
10
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../../src/components/gini-impurity-entropy-chart/lib/format.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,kFAAkF;AAClF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED,0CAA0C;AAC1C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { formatCompactNumber } from "../../../utils/fusedash-visual.js";
|
|
2
|
+
function formatImpurityTick(value) {
|
|
3
|
+
if (!Number.isFinite(value)) return "";
|
|
4
|
+
if (Math.abs(value) >= 1e3) return formatCompactNumber(value, 1);
|
|
5
|
+
return value.toFixed(1);
|
|
6
|
+
}
|
|
7
|
+
function formatProbability(value) {
|
|
8
|
+
if (!Number.isFinite(value)) return "";
|
|
9
|
+
if (Number.isInteger(value)) return String(value);
|
|
10
|
+
return String(Number(value.toFixed(4)));
|
|
11
|
+
}
|
|
12
|
+
function formatImpurityValue(value) {
|
|
13
|
+
if (!Number.isFinite(value)) return "";
|
|
14
|
+
if (Math.abs(value) >= 1e3) return formatCompactNumber(value, 2);
|
|
15
|
+
return value.toFixed(3);
|
|
16
|
+
}
|
|
17
|
+
export {
|
|
18
|
+
formatImpurityTick,
|
|
19
|
+
formatImpurityValue,
|
|
20
|
+
formatProbability
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sources":["../../../../src/components/gini-impurity-entropy-chart/lib/format.ts"],"sourcesContent":["import { formatCompactNumber } from '../../../utils/fusedash-visual.js';\n\n/**\n * Client Y ticks use `d3-format(\".1f\")`. Impurity indices live in [0, 1], so a\n * single decimal is right; anything larger falls back to compact notation.\n */\nexport function formatImpurityTick(value: number): string {\n if (!Number.isFinite(value)) return '';\n if (Math.abs(value) >= 1000) return formatCompactNumber(value, 1);\n return value.toFixed(1);\n}\n\n/** X ticks / tooltip probabilities — trims the trailing zeros `.1f` would add. */\nexport function formatProbability(value: number): string {\n if (!Number.isFinite(value)) return '';\n if (Number.isInteger(value)) return String(value);\n return String(Number(value.toFixed(4)));\n}\n\n/** Tooltip readout for a metric value. */\nexport function formatImpurityValue(value: number): string {\n if (!Number.isFinite(value)) return '';\n if (Math.abs(value) >= 1000) return formatCompactNumber(value, 2);\n return value.toFixed(3);\n}\n"],"names":[],"mappings":";AAMO,SAAS,mBAAmB,OAAuB;AACxD,MAAI,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AACpC,MAAI,KAAK,IAAI,KAAK,KAAK,IAAM,QAAO,oBAAoB,OAAO,CAAC;AAChE,SAAO,MAAM,QAAQ,CAAC;AACxB;AAGO,SAAS,kBAAkB,OAAuB;AACvD,MAAI,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AACpC,MAAI,OAAO,UAAU,KAAK,EAAG,QAAO,OAAO,KAAK;AAChD,SAAO,OAAO,OAAO,MAAM,QAAQ,CAAC,CAAC,CAAC;AACxC;AAGO,SAAS,oBAAoB,OAAuB;AACzD,MAAI,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AACpC,MAAI,KAAK,IAAI,KAAK,KAAK,IAAM,QAAO,oBAAoB,OAAO,CAAC;AAChE,SAAO,MAAM,QAAQ,CAAC;AACxB;"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { DEFAULT_SERIES_KEYS, DEFAULT_SERIES_STYLE, DEFAULT_Y_LABEL, SERIES_LABELS, type GiniImpurityEntropyChartData, type GiniImpurityEntropyFusePayload, type GiniImpurityEntropyModel, type GiniOverlays, type GiniSeries, type GiniSeriesPoint, } from './types.js';
|
|
2
|
+
export { normalizeGiniImpurityEntropyData, type GiniOverlayFlags, } from './normalize.js';
|
|
3
|
+
export { extractSeriesFromData, nearestPoint } from './series.js';
|
|
4
|
+
export { collectPExtent, collectValueExtent } from './domain.js';
|
|
5
|
+
export { giniImpurity, resolveOverlays, splitAnnotation, type SplitAnnotation, } from './overlays.js';
|
|
6
|
+
export { formatImpurityTick, formatImpurityValue, formatProbability, } from './format.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/gini-impurity-entropy-chart/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,aAAa,EACb,KAAK,4BAA4B,EACjC,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,eAAe,GACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gCAAgC,EAChC,KAAK,gBAAgB,GACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DataPoint } from '../../../types/index.js';
|
|
2
|
+
import { GiniImpurityEntropyChartData, GiniImpurityEntropyFusePayload, GiniImpurityEntropyModel, GiniOverlays } from './types.js';
|
|
3
|
+
/** Host-supplied overlay switches; each falls back to the widget `meta`. */
|
|
4
|
+
export type GiniOverlayFlags = Pick<Partial<GiniOverlays>, 'showPHat' | 'showCI' | 'showSplit'>;
|
|
5
|
+
/** Normalize chat / FuseDash WidgetItem payloads into one impurity-curve model. */
|
|
6
|
+
export declare function normalizeGiniImpurityEntropyData(input: DataPoint[] | GiniImpurityEntropyChartData | GiniImpurityEntropyFusePayload | null | undefined, flags?: GiniOverlayFlags): GiniImpurityEntropyModel;
|
|
7
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../src/components/gini-impurity-entropy-chart/lib/normalize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AASzD,OAAO,EAKL,KAAK,4BAA4B,EACjC,KAAK,8BAA8B,EACnC,KAAK,wBAAwB,EAC7B,KAAK,YAAY,EAGlB,MAAM,YAAY,CAAC;AAEpB,4EAA4E;AAC5E,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,OAAO,CAAC,YAAY,CAAC,EACrB,UAAU,GAAG,QAAQ,GAAG,WAAW,CACpC,CAAC;AA+HF,mFAAmF;AACnF,wBAAgB,gCAAgC,CAC9C,KAAK,EACD,SAAS,EAAE,GACX,4BAA4B,GAC5B,8BAA8B,GAC9B,IAAI,GACJ,SAAS,EACb,KAAK,GAAE,gBAAqB,GAC3B,wBAAwB,CAqB1B"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { resolveFormattingColor } from "../../../utils/fuse-palette.js";
|
|
2
|
+
import { isFuseWidgetPayload, firstField } from "../../../utils/fuse-widget.js";
|
|
3
|
+
import { resolveOverlays } from "./overlays.js";
|
|
4
|
+
import { extractSeriesFromData } from "./series.js";
|
|
5
|
+
import { DEFAULT_Y_LABEL, DEFAULT_SERIES_KEYS, SERIES_LABELS, DEFAULT_SERIES_STYLE } from "./types.js";
|
|
6
|
+
function emptyModel(flags) {
|
|
7
|
+
return {
|
|
8
|
+
series: [],
|
|
9
|
+
xLabel: "",
|
|
10
|
+
yLabel: DEFAULT_Y_LABEL,
|
|
11
|
+
overlays: resolveOverlays(null, flags)
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function resolveSeriesKeys(yAxe) {
|
|
15
|
+
const keys = Array.isArray(yAxe) ? yAxe.map(String).filter(Boolean) : [];
|
|
16
|
+
if (keys.length > 0 && keys[0] !== "value") return keys;
|
|
17
|
+
return DEFAULT_SERIES_KEYS;
|
|
18
|
+
}
|
|
19
|
+
function styleFor(key, index, count, formatting) {
|
|
20
|
+
const preset = DEFAULT_SERIES_STYLE[key];
|
|
21
|
+
if (preset) return preset;
|
|
22
|
+
return {
|
|
23
|
+
color: resolveFormattingColor(formatting, key, count),
|
|
24
|
+
dash: index > 0 ? "5,5" : void 0
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function toSeries(points, key, index, count, formatting) {
|
|
28
|
+
const { color, dash } = styleFor(key, index, count, formatting);
|
|
29
|
+
return {
|
|
30
|
+
id: key,
|
|
31
|
+
name: SERIES_LABELS[key] ?? key,
|
|
32
|
+
color,
|
|
33
|
+
dash,
|
|
34
|
+
points
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function fromFuseWidget(widget, flags) {
|
|
38
|
+
var _a, _b, _c, _d;
|
|
39
|
+
const xField = firstField(widget.xAxe) ?? "p";
|
|
40
|
+
const keys = resolveSeriesKeys(widget.yAxe);
|
|
41
|
+
const extracted = extractSeriesFromData(widget.data, xField, keys);
|
|
42
|
+
const series = keys.filter((key) => {
|
|
43
|
+
var _a2;
|
|
44
|
+
return (_a2 = extracted[key]) == null ? void 0 : _a2.length;
|
|
45
|
+
}).map(
|
|
46
|
+
(key, index, kept) => toSeries(extracted[key], key, index, kept.length, widget.formatting)
|
|
47
|
+
);
|
|
48
|
+
return {
|
|
49
|
+
series,
|
|
50
|
+
xLabel: ((_b = (_a = widget.axisDetails) == null ? void 0 : _a[xField]) == null ? void 0 : _b.label) ?? xField,
|
|
51
|
+
yLabel: ((_d = (_c = widget.axisDetails) == null ? void 0 : _c.value) == null ? void 0 : _d.label) ?? DEFAULT_Y_LABEL,
|
|
52
|
+
overlays: resolveOverlays(widget.meta, flags)
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function toPoints(raw) {
|
|
56
|
+
const points = [];
|
|
57
|
+
for (const item of raw) {
|
|
58
|
+
const p = Number(item == null ? void 0 : item.x);
|
|
59
|
+
const value = Number(item == null ? void 0 : item.y);
|
|
60
|
+
if (!Number.isFinite(p) || !Number.isFinite(value)) continue;
|
|
61
|
+
points.push({ p, value });
|
|
62
|
+
}
|
|
63
|
+
return points.sort((a, b) => a.p - b.p);
|
|
64
|
+
}
|
|
65
|
+
function fromChatPayload(chart, flags) {
|
|
66
|
+
const base = {
|
|
67
|
+
xLabel: chart.xLabel ?? "",
|
|
68
|
+
yLabel: chart.yLabel ?? DEFAULT_Y_LABEL,
|
|
69
|
+
overlays: resolveOverlays(chart.meta, flags)
|
|
70
|
+
};
|
|
71
|
+
const rawSeries = chart.series ?? [];
|
|
72
|
+
if (rawSeries.length) {
|
|
73
|
+
const series = [];
|
|
74
|
+
rawSeries.forEach((s, index) => {
|
|
75
|
+
const points2 = toPoints(s.points ?? []);
|
|
76
|
+
if (!points2.length) return;
|
|
77
|
+
const preset = DEFAULT_SERIES_STYLE[s.id];
|
|
78
|
+
series.push({
|
|
79
|
+
id: s.id || `series-${index}`,
|
|
80
|
+
name: s.name ?? SERIES_LABELS[s.id] ?? s.id,
|
|
81
|
+
color: s.color ?? (preset == null ? void 0 : preset.color) ?? resolveFormattingColor(null, s.id, rawSeries.length),
|
|
82
|
+
dash: s.dash ?? (preset == null ? void 0 : preset.dash),
|
|
83
|
+
points: points2
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
return { ...base, series };
|
|
87
|
+
}
|
|
88
|
+
const points = toPoints(chart.points ?? []);
|
|
89
|
+
if (!points.length) return { ...base, series: [] };
|
|
90
|
+
return {
|
|
91
|
+
...base,
|
|
92
|
+
series: [toSeries(points, DEFAULT_SERIES_KEYS[1], 0, 1, null)]
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function normalizeGiniImpurityEntropyData(input, flags = {}) {
|
|
96
|
+
if (!input) return emptyModel(flags);
|
|
97
|
+
if (Array.isArray(input)) {
|
|
98
|
+
const points = toPoints(
|
|
99
|
+
input.map((d) => ({ x: d == null ? void 0 : d.label, y: Number(d == null ? void 0 : d.value) }))
|
|
100
|
+
);
|
|
101
|
+
if (!points.length) return emptyModel(flags);
|
|
102
|
+
return {
|
|
103
|
+
series: [toSeries(points, DEFAULT_SERIES_KEYS[1], 0, 1, null)],
|
|
104
|
+
xLabel: "",
|
|
105
|
+
yLabel: DEFAULT_Y_LABEL,
|
|
106
|
+
overlays: resolveOverlays(null, flags)
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
if (isFuseWidgetPayload(input)) {
|
|
110
|
+
return fromFuseWidget(input, flags);
|
|
111
|
+
}
|
|
112
|
+
return fromChatPayload(input, flags);
|
|
113
|
+
}
|
|
114
|
+
export {
|
|
115
|
+
normalizeGiniImpurityEntropyData
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sources":["../../../../src/components/gini-impurity-entropy-chart/lib/normalize.ts"],"sourcesContent":["import type { DataPoint } from '../../../types/index.js';\nimport { resolveFormattingColor } from '../../../utils/fuse-palette.js';\nimport {\n firstField,\n isFuseWidgetPayload,\n type FuseWidgetLike,\n} from '../../../utils/fuse-widget.js';\nimport { resolveOverlays } from './overlays.js';\nimport { extractSeriesFromData } from './series.js';\nimport {\n DEFAULT_SERIES_KEYS,\n DEFAULT_SERIES_STYLE,\n DEFAULT_Y_LABEL,\n SERIES_LABELS,\n type GiniImpurityEntropyChartData,\n type GiniImpurityEntropyFusePayload,\n type GiniImpurityEntropyModel,\n type GiniOverlays,\n type GiniSeries,\n type GiniSeriesPoint,\n} from './types.js';\n\n/** Host-supplied overlay switches; each falls back to the widget `meta`. */\nexport type GiniOverlayFlags = Pick<\n Partial<GiniOverlays>,\n 'showPHat' | 'showCI' | 'showSplit'\n>;\n\nfunction emptyModel(flags: GiniOverlayFlags): GiniImpurityEntropyModel {\n return {\n series: [],\n xLabel: '',\n yLabel: DEFAULT_Y_LABEL,\n overlays: resolveOverlays(null, flags),\n };\n}\n\n/**\n * Client rule: `yAxe` names the metric columns, except for the placeholder\n * `\"value\"` the editor writes before a metric is picked.\n */\nfunction resolveSeriesKeys(yAxe: FuseWidgetLike['yAxe']): string[] {\n const keys = Array.isArray(yAxe) ? yAxe.map(String).filter(Boolean) : [];\n if (keys.length > 0 && keys[0] !== 'value') return keys;\n return DEFAULT_SERIES_KEYS;\n}\n\n/** Fixed metric style first (client `DEFAULT_SERIES_STYLE`), palette after. */\nfunction styleFor(\n key: string,\n index: number,\n count: number,\n formatting: FuseWidgetLike['formatting'],\n): { color: string; dash?: string } {\n const preset = DEFAULT_SERIES_STYLE[key];\n if (preset) return preset;\n return {\n color: resolveFormattingColor(formatting, key, count),\n dash: index > 0 ? '5,5' : undefined,\n };\n}\n\nfunction toSeries(\n points: GiniSeriesPoint[],\n key: string,\n index: number,\n count: number,\n formatting: FuseWidgetLike['formatting'],\n): GiniSeries {\n const { color, dash } = styleFor(key, index, count, formatting);\n return {\n id: key,\n name: SERIES_LABELS[key] ?? key,\n color,\n dash,\n points,\n };\n}\n\nfunction fromFuseWidget(\n widget: GiniImpurityEntropyFusePayload,\n flags: GiniOverlayFlags,\n): GiniImpurityEntropyModel {\n const xField = firstField(widget.xAxe) ?? 'p';\n const keys = resolveSeriesKeys(widget.yAxe);\n const extracted = extractSeriesFromData(widget.data, xField, keys);\n\n const series = keys\n .filter((key) => extracted[key]?.length)\n .map((key, index, kept) =>\n toSeries(extracted[key], key, index, kept.length, widget.formatting),\n );\n\n return {\n series,\n xLabel: widget.axisDetails?.[xField]?.label ?? xField,\n yLabel: widget.axisDetails?.value?.label ?? DEFAULT_Y_LABEL,\n overlays: resolveOverlays(widget.meta, flags),\n };\n}\n\nfunction toPoints(\n raw: Array<{ x: number | string; y: number }>,\n): GiniSeriesPoint[] {\n const points: GiniSeriesPoint[] = [];\n for (const item of raw) {\n const p = Number(item?.x);\n const value = Number(item?.y);\n if (!Number.isFinite(p) || !Number.isFinite(value)) continue;\n points.push({ p, value });\n }\n return points.sort((a, b) => a.p - b.p);\n}\n\nfunction fromChatPayload(\n chart: GiniImpurityEntropyChartData,\n flags: GiniOverlayFlags,\n): GiniImpurityEntropyModel {\n const base = {\n xLabel: chart.xLabel ?? '',\n yLabel: chart.yLabel ?? DEFAULT_Y_LABEL,\n overlays: resolveOverlays(chart.meta, flags),\n };\n\n const rawSeries = chart.series ?? [];\n if (rawSeries.length) {\n const series: GiniSeries[] = [];\n rawSeries.forEach((s, index) => {\n const points = toPoints(s.points ?? []);\n if (!points.length) return;\n const preset = DEFAULT_SERIES_STYLE[s.id];\n series.push({\n id: s.id || `series-${index}`,\n name: s.name ?? SERIES_LABELS[s.id] ?? s.id,\n color:\n s.color ??\n preset?.color ??\n resolveFormattingColor(null, s.id, rawSeries.length),\n dash: s.dash ?? preset?.dash,\n points,\n });\n });\n return { ...base, series };\n }\n\n const points = toPoints(chart.points ?? []);\n if (!points.length) return { ...base, series: [] };\n return {\n ...base,\n series: [toSeries(points, DEFAULT_SERIES_KEYS[1], 0, 1, null)],\n };\n}\n\n/** Normalize chat / FuseDash WidgetItem payloads into one impurity-curve model. */\nexport function normalizeGiniImpurityEntropyData(\n input:\n | DataPoint[]\n | GiniImpurityEntropyChartData\n | GiniImpurityEntropyFusePayload\n | null\n | undefined,\n flags: GiniOverlayFlags = {},\n): GiniImpurityEntropyModel {\n if (!input) return emptyModel(flags);\n\n if (Array.isArray(input)) {\n const points = toPoints(\n input.map((d) => ({ x: d?.label, y: Number(d?.value) })),\n );\n if (!points.length) return emptyModel(flags);\n return {\n series: [toSeries(points, DEFAULT_SERIES_KEYS[1], 0, 1, null)],\n xLabel: '',\n yLabel: DEFAULT_Y_LABEL,\n overlays: resolveOverlays(null, flags),\n };\n }\n\n if (isFuseWidgetPayload(input)) {\n return fromFuseWidget(input as GiniImpurityEntropyFusePayload, flags);\n }\n\n return fromChatPayload(input as GiniImpurityEntropyChartData, flags);\n}\n"],"names":["_a","points"],"mappings":";;;;;AA4BA,SAAS,WAAW,OAAmD;AACrE,SAAO;AAAA,IACL,QAAQ,CAAA;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU,gBAAgB,MAAM,KAAK;AAAA,EAAA;AAEzC;AAMA,SAAS,kBAAkB,MAAwC;AACjE,QAAM,OAAO,MAAM,QAAQ,IAAI,IAAI,KAAK,IAAI,MAAM,EAAE,OAAO,OAAO,IAAI,CAAA;AACtE,MAAI,KAAK,SAAS,KAAK,KAAK,CAAC,MAAM,QAAS,QAAO;AACnD,SAAO;AACT;AAGA,SAAS,SACP,KACA,OACA,OACA,YACkC;AAClC,QAAM,SAAS,qBAAqB,GAAG;AACvC,MAAI,OAAQ,QAAO;AACnB,SAAO;AAAA,IACL,OAAO,uBAAuB,YAAY,KAAK,KAAK;AAAA,IACpD,MAAM,QAAQ,IAAI,QAAQ;AAAA,EAAA;AAE9B;AAEA,SAAS,SACP,QACA,KACA,OACA,OACA,YACY;AACZ,QAAM,EAAE,OAAO,SAAS,SAAS,KAAK,OAAO,OAAO,UAAU;AAC9D,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,MAAM,cAAc,GAAG,KAAK;AAAA,IAC5B;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,SAAS,eACP,QACA,OAC0B;;AAC1B,QAAM,SAAS,WAAW,OAAO,IAAI,KAAK;AAC1C,QAAM,OAAO,kBAAkB,OAAO,IAAI;AAC1C,QAAM,YAAY,sBAAsB,OAAO,MAAM,QAAQ,IAAI;AAEjE,QAAM,SAAS,KACZ,OAAO,CAAC;;AAAQ,YAAAA,MAAA,UAAU,GAAG,MAAb,gBAAAA,IAAgB;AAAA,GAAM,EACtC;AAAA,IAAI,CAAC,KAAK,OAAO,SAChB,SAAS,UAAU,GAAG,GAAG,KAAK,OAAO,KAAK,QAAQ,OAAO,UAAU;AAAA,EAAA;AAGvE,SAAO;AAAA,IACL;AAAA,IACA,UAAQ,kBAAO,gBAAP,mBAAqB,YAArB,mBAA8B,UAAS;AAAA,IAC/C,UAAQ,kBAAO,gBAAP,mBAAoB,UAApB,mBAA2B,UAAS;AAAA,IAC5C,UAAU,gBAAgB,OAAO,MAAM,KAAK;AAAA,EAAA;AAEhD;AAEA,SAAS,SACP,KACmB;AACnB,QAAM,SAA4B,CAAA;AAClC,aAAW,QAAQ,KAAK;AACtB,UAAM,IAAI,OAAO,6BAAM,CAAC;AACxB,UAAM,QAAQ,OAAO,6BAAM,CAAC;AAC5B,QAAI,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,OAAO,SAAS,KAAK,EAAG;AACpD,WAAO,KAAK,EAAE,GAAG,MAAA,CAAO;AAAA,EAC1B;AACA,SAAO,OAAO,KAAK,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;AACxC;AAEA,SAAS,gBACP,OACA,OAC0B;AAC1B,QAAM,OAAO;AAAA,IACX,QAAQ,MAAM,UAAU;AAAA,IACxB,QAAQ,MAAM,UAAU;AAAA,IACxB,UAAU,gBAAgB,MAAM,MAAM,KAAK;AAAA,EAAA;AAG7C,QAAM,YAAY,MAAM,UAAU,CAAA;AAClC,MAAI,UAAU,QAAQ;AACpB,UAAM,SAAuB,CAAA;AAC7B,cAAU,QAAQ,CAAC,GAAG,UAAU;AAC9B,YAAMC,UAAS,SAAS,EAAE,UAAU,CAAA,CAAE;AACtC,UAAI,CAACA,QAAO,OAAQ;AACpB,YAAM,SAAS,qBAAqB,EAAE,EAAE;AACxC,aAAO,KAAK;AAAA,QACV,IAAI,EAAE,MAAM,UAAU,KAAK;AAAA,QAC3B,MAAM,EAAE,QAAQ,cAAc,EAAE,EAAE,KAAK,EAAE;AAAA,QACzC,OACE,EAAE,UACF,iCAAQ,UACR,uBAAuB,MAAM,EAAE,IAAI,UAAU,MAAM;AAAA,QACrD,MAAM,EAAE,SAAQ,iCAAQ;AAAA,QACxB,QAAAA;AAAAA,MAAA,CACD;AAAA,IACH,CAAC;AACD,WAAO,EAAE,GAAG,MAAM,OAAA;AAAA,EACpB;AAEA,QAAM,SAAS,SAAS,MAAM,UAAU,CAAA,CAAE;AAC1C,MAAI,CAAC,OAAO,OAAQ,QAAO,EAAE,GAAG,MAAM,QAAQ,GAAC;AAC/C,SAAO;AAAA,IACL,GAAG;AAAA,IACH,QAAQ,CAAC,SAAS,QAAQ,oBAAoB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAAA,EAAA;AAEjE;AAGO,SAAS,iCACd,OAMA,QAA0B,IACA;AAC1B,MAAI,CAAC,MAAO,QAAO,WAAW,KAAK;AAEnC,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,UAAM,SAAS;AAAA,MACb,MAAM,IAAI,CAAC,OAAO,EAAE,GAAG,uBAAG,OAAO,GAAG,OAAO,uBAAG,KAAK,IAAI;AAAA,IAAA;AAEzD,QAAI,CAAC,OAAO,OAAQ,QAAO,WAAW,KAAK;AAC3C,WAAO;AAAA,MACL,QAAQ,CAAC,SAAS,QAAQ,oBAAoB,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;AAAA,MAC7D,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,UAAU,gBAAgB,MAAM,KAAK;AAAA,IAAA;AAAA,EAEzC;AAEA,MAAI,oBAAoB,KAAK,GAAG;AAC9B,WAAO,eAAe,OAAyC,KAAK;AAAA,EACtE;AAEA,SAAO,gBAAgB,OAAuC,KAAK;AACrE;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { GiniOverlays } from './types.js';
|
|
2
|
+
/** Binary Gini impurity — the curve the split annotation is measured against. */
|
|
3
|
+
export declare function giniImpurity(p: number): number;
|
|
4
|
+
/**
|
|
5
|
+
* Merge widget `meta` with host flags. Client precedence: an explicit prop wins
|
|
6
|
+
* over `meta`, and every overlay stays off when neither says otherwise.
|
|
7
|
+
*/
|
|
8
|
+
export declare function resolveOverlays(meta: Partial<GiniOverlays> | null | undefined, flags?: Pick<Partial<GiniOverlays>, 'showPHat' | 'showCI' | 'showSplit'>): GiniOverlays;
|
|
9
|
+
export interface SplitAnnotation {
|
|
10
|
+
pLeft: number;
|
|
11
|
+
pRight: number;
|
|
12
|
+
leftValue: number;
|
|
13
|
+
rightValue: number;
|
|
14
|
+
/** Impurity reduction: parent Gini − child-weighted Gini */
|
|
15
|
+
delta: number;
|
|
16
|
+
}
|
|
17
|
+
/** Client split annotation — child markers plus the ΔGini they buy. */
|
|
18
|
+
export declare function splitAnnotation(overlays: GiniOverlays): SplitAnnotation | null;
|
|
19
|
+
//# sourceMappingURL=overlays.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlays.d.ts","sourceRoot":"","sources":["../../../../src/components/gini-impurity-entropy-chart/lib/overlays.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,iFAAiF;AACjF,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAgCD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,GAAG,SAAS,EAC9C,KAAK,GAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAM,GAC3E,YAAY,CAUd;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,uEAAuE;AACvE,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,YAAY,GACrB,eAAe,GAAG,IAAI,CAqBxB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
function giniImpurity(p) {
|
|
2
|
+
return 2 * p * (1 - p);
|
|
3
|
+
}
|
|
4
|
+
function clamp01(value) {
|
|
5
|
+
return Math.max(0, Math.min(1, value));
|
|
6
|
+
}
|
|
7
|
+
function readNumber(value) {
|
|
8
|
+
return typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
9
|
+
}
|
|
10
|
+
function readCi(value) {
|
|
11
|
+
if (!Array.isArray(value) || value.length < 2) return void 0;
|
|
12
|
+
const lo = readNumber(value[0]);
|
|
13
|
+
const hi = readNumber(value[1]);
|
|
14
|
+
if (lo === void 0 || hi === void 0) return void 0;
|
|
15
|
+
return [clamp01(Math.min(lo, hi)), clamp01(Math.max(lo, hi))];
|
|
16
|
+
}
|
|
17
|
+
function readSplit(value) {
|
|
18
|
+
if (!value || typeof value !== "object") return void 0;
|
|
19
|
+
const raw = value;
|
|
20
|
+
const pLeft = readNumber(raw.pLeft);
|
|
21
|
+
const pRight = readNumber(raw.pRight);
|
|
22
|
+
if (pLeft === void 0 || pRight === void 0) return void 0;
|
|
23
|
+
return {
|
|
24
|
+
pLeft: clamp01(pLeft),
|
|
25
|
+
pRight: clamp01(pRight),
|
|
26
|
+
nLeft: readNumber(raw.nLeft),
|
|
27
|
+
nRight: readNumber(raw.nRight)
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function resolveOverlays(meta, flags = {}) {
|
|
31
|
+
const pHat = readNumber(meta == null ? void 0 : meta.pHat);
|
|
32
|
+
return {
|
|
33
|
+
pHat: pHat === void 0 ? void 0 : clamp01(pHat),
|
|
34
|
+
ci: readCi(meta == null ? void 0 : meta.ci),
|
|
35
|
+
split: readSplit(meta == null ? void 0 : meta.split),
|
|
36
|
+
showPHat: flags.showPHat ?? (meta == null ? void 0 : meta.showPHat) ?? false,
|
|
37
|
+
showCI: flags.showCI ?? (meta == null ? void 0 : meta.showCI) ?? false,
|
|
38
|
+
showSplit: flags.showSplit ?? (meta == null ? void 0 : meta.showSplit) ?? false
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function splitAnnotation(overlays) {
|
|
42
|
+
if (!overlays.showSplit || !overlays.split) return null;
|
|
43
|
+
const { pLeft, pRight } = overlays.split;
|
|
44
|
+
const nLeft = overlays.split.nLeft ?? 1;
|
|
45
|
+
const nRight = overlays.split.nRight ?? 1;
|
|
46
|
+
const total = nLeft + nRight;
|
|
47
|
+
if (!(total > 0)) return null;
|
|
48
|
+
const weighted = nLeft / total * giniImpurity(pLeft) + nRight / total * giniImpurity(pRight);
|
|
49
|
+
const parent = giniImpurity(overlays.pHat ?? 0.5);
|
|
50
|
+
return {
|
|
51
|
+
pLeft,
|
|
52
|
+
pRight,
|
|
53
|
+
leftValue: giniImpurity(pLeft),
|
|
54
|
+
rightValue: giniImpurity(pRight),
|
|
55
|
+
delta: parent - weighted
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export {
|
|
59
|
+
giniImpurity,
|
|
60
|
+
resolveOverlays,
|
|
61
|
+
splitAnnotation
|
|
62
|
+
};
|
|
63
|
+
//# sourceMappingURL=overlays.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlays.js","sources":["../../../../src/components/gini-impurity-entropy-chart/lib/overlays.ts"],"sourcesContent":["import type { GiniOverlays } from './types.js';\n\n/** Binary Gini impurity — the curve the split annotation is measured against. */\nexport function giniImpurity(p: number): number {\n return 2 * p * (1 - p);\n}\n\nfunction clamp01(value: number): number {\n return Math.max(0, Math.min(1, value));\n}\n\nfunction readNumber(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined;\n}\n\nfunction readCi(value: unknown): [number, number] | undefined {\n if (!Array.isArray(value) || value.length < 2) return undefined;\n const lo = readNumber(value[0]);\n const hi = readNumber(value[1]);\n if (lo === undefined || hi === undefined) return undefined;\n return [clamp01(Math.min(lo, hi)), clamp01(Math.max(lo, hi))];\n}\n\nfunction readSplit(value: unknown): GiniOverlays['split'] {\n if (!value || typeof value !== 'object') return undefined;\n const raw = value as Record<string, unknown>;\n const pLeft = readNumber(raw.pLeft);\n const pRight = readNumber(raw.pRight);\n if (pLeft === undefined || pRight === undefined) return undefined;\n return {\n pLeft: clamp01(pLeft),\n pRight: clamp01(pRight),\n nLeft: readNumber(raw.nLeft),\n nRight: readNumber(raw.nRight),\n };\n}\n\n/**\n * Merge widget `meta` with host flags. Client precedence: an explicit prop wins\n * over `meta`, and every overlay stays off when neither says otherwise.\n */\nexport function resolveOverlays(\n meta: Partial<GiniOverlays> | null | undefined,\n flags: Pick<Partial<GiniOverlays>, 'showPHat' | 'showCI' | 'showSplit'> = {},\n): GiniOverlays {\n const pHat = readNumber(meta?.pHat);\n return {\n pHat: pHat === undefined ? undefined : clamp01(pHat),\n ci: readCi(meta?.ci),\n split: readSplit(meta?.split),\n showPHat: flags.showPHat ?? meta?.showPHat ?? false,\n showCI: flags.showCI ?? meta?.showCI ?? false,\n showSplit: flags.showSplit ?? meta?.showSplit ?? false,\n };\n}\n\nexport interface SplitAnnotation {\n pLeft: number;\n pRight: number;\n leftValue: number;\n rightValue: number;\n /** Impurity reduction: parent Gini − child-weighted Gini */\n delta: number;\n}\n\n/** Client split annotation — child markers plus the ΔGini they buy. */\nexport function splitAnnotation(\n overlays: GiniOverlays,\n): SplitAnnotation | null {\n if (!overlays.showSplit || !overlays.split) return null;\n\n const { pLeft, pRight } = overlays.split;\n const nLeft = overlays.split.nLeft ?? 1;\n const nRight = overlays.split.nRight ?? 1;\n const total = nLeft + nRight;\n if (!(total > 0)) return null;\n\n const weighted =\n (nLeft / total) * giniImpurity(pLeft) +\n (nRight / total) * giniImpurity(pRight);\n const parent = giniImpurity(overlays.pHat ?? 0.5);\n\n return {\n pLeft,\n pRight,\n leftValue: giniImpurity(pLeft),\n rightValue: giniImpurity(pRight),\n delta: parent - weighted,\n };\n}\n"],"names":[],"mappings":"AAGO,SAAS,aAAa,GAAmB;AAC9C,SAAO,IAAI,KAAK,IAAI;AACtB;AAEA,SAAS,QAAQ,OAAuB;AACtC,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC;AACvC;AAEA,SAAS,WAAW,OAAoC;AACtD,SAAO,OAAO,UAAU,YAAY,OAAO,SAAS,KAAK,IAAI,QAAQ;AACvE;AAEA,SAAS,OAAO,OAA8C;AAC5D,MAAI,CAAC,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,EAAG,QAAO;AACtD,QAAM,KAAK,WAAW,MAAM,CAAC,CAAC;AAC9B,QAAM,KAAK,WAAW,MAAM,CAAC,CAAC;AAC9B,MAAI,OAAO,UAAa,OAAO,OAAW,QAAO;AACjD,SAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,CAAC,GAAG,QAAQ,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC;AAC9D;AAEA,SAAS,UAAU,OAAuC;AACxD,MAAI,CAAC,SAAS,OAAO,UAAU,SAAU,QAAO;AAChD,QAAM,MAAM;AACZ,QAAM,QAAQ,WAAW,IAAI,KAAK;AAClC,QAAM,SAAS,WAAW,IAAI,MAAM;AACpC,MAAI,UAAU,UAAa,WAAW,OAAW,QAAO;AACxD,SAAO;AAAA,IACL,OAAO,QAAQ,KAAK;AAAA,IACpB,QAAQ,QAAQ,MAAM;AAAA,IACtB,OAAO,WAAW,IAAI,KAAK;AAAA,IAC3B,QAAQ,WAAW,IAAI,MAAM;AAAA,EAAA;AAEjC;AAMO,SAAS,gBACd,MACA,QAA0E,IAC5D;AACd,QAAM,OAAO,WAAW,6BAAM,IAAI;AAClC,SAAO;AAAA,IACL,MAAM,SAAS,SAAY,SAAY,QAAQ,IAAI;AAAA,IACnD,IAAI,OAAO,6BAAM,EAAE;AAAA,IACnB,OAAO,UAAU,6BAAM,KAAK;AAAA,IAC5B,UAAU,MAAM,aAAY,6BAAM,aAAY;AAAA,IAC9C,QAAQ,MAAM,WAAU,6BAAM,WAAU;AAAA,IACxC,WAAW,MAAM,cAAa,6BAAM,cAAa;AAAA,EAAA;AAErD;AAYO,SAAS,gBACd,UACwB;AACxB,MAAI,CAAC,SAAS,aAAa,CAAC,SAAS,MAAO,QAAO;AAEnD,QAAM,EAAE,OAAO,OAAA,IAAW,SAAS;AACnC,QAAM,QAAQ,SAAS,MAAM,SAAS;AACtC,QAAM,SAAS,SAAS,MAAM,UAAU;AACxC,QAAM,QAAQ,QAAQ;AACtB,MAAI,EAAE,QAAQ,GAAI,QAAO;AAEzB,QAAM,WACH,QAAQ,QAAS,aAAa,KAAK,IACnC,SAAS,QAAS,aAAa,MAAM;AACxC,QAAM,SAAS,aAAa,SAAS,QAAQ,GAAG;AAEhD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,WAAW,aAAa,KAAK;AAAA,IAC7B,YAAY,aAAa,MAAM;AAAA,IAC/B,OAAO,SAAS;AAAA,EAAA;AAEpB;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GiniSeriesPoint } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Client `extractSeriesFromData`: one series per metric column, keyed by the
|
|
4
|
+
* x-axis column, sorted ascending by `p`.
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractSeriesFromData(data: unknown, xField: string, seriesKeys?: string[]): Record<string, GiniSeriesPoint[]>;
|
|
7
|
+
/**
|
|
8
|
+
* Client `getNearestValue`, returning the point so the crosshair can sit on it.
|
|
9
|
+
* Binary search over the `p`-sorted series — keeps hover off the O(n) path.
|
|
10
|
+
*/
|
|
11
|
+
export declare function nearestPoint(points: GiniSeriesPoint[], p: number): GiniSeriesPoint | null;
|
|
12
|
+
//# sourceMappingURL=series.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"series.d.ts","sourceRoot":"","sources":["../../../../src/components/gini-impurity-entropy-chart/lib/series.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAEvE;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,MAAM,EAAE,GACpB,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAuBnC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,eAAe,EAAE,EACzB,CAAC,EAAE,MAAM,GACR,eAAe,GAAG,IAAI,CAsBxB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { DEFAULT_SERIES_KEYS } from "./types.js";
|
|
2
|
+
function extractSeriesFromData(data, xField, seriesKeys) {
|
|
3
|
+
const rows = Array.isArray(data) ? data : [];
|
|
4
|
+
const keys = (seriesKeys == null ? void 0 : seriesKeys.length) ? seriesKeys : DEFAULT_SERIES_KEYS;
|
|
5
|
+
const result = {};
|
|
6
|
+
for (const key of keys) result[key] = [];
|
|
7
|
+
for (const row of rows) {
|
|
8
|
+
if (!row || typeof row !== "object") continue;
|
|
9
|
+
const p = Number(row[xField]);
|
|
10
|
+
if (!Number.isFinite(p)) continue;
|
|
11
|
+
for (const key of keys) {
|
|
12
|
+
if (row[key] === void 0) continue;
|
|
13
|
+
const value = Number(row[key]);
|
|
14
|
+
if (Number.isFinite(value)) result[key].push({ p, value });
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
for (const key of keys) result[key].sort((a, b) => a.p - b.p);
|
|
18
|
+
return result;
|
|
19
|
+
}
|
|
20
|
+
function nearestPoint(points, p) {
|
|
21
|
+
if (!points.length) return null;
|
|
22
|
+
let lo = 0;
|
|
23
|
+
let hi = points.length - 1;
|
|
24
|
+
while (lo < hi) {
|
|
25
|
+
const mid = lo + hi >> 1;
|
|
26
|
+
if (points[mid].p < p) lo = mid + 1;
|
|
27
|
+
else hi = mid;
|
|
28
|
+
}
|
|
29
|
+
let best = points[lo];
|
|
30
|
+
let bestDist = Math.abs(best.p - p);
|
|
31
|
+
for (const candidate of [points[lo - 1], points[lo + 1]]) {
|
|
32
|
+
if (!candidate) continue;
|
|
33
|
+
const dist = Math.abs(candidate.p - p);
|
|
34
|
+
if (dist < bestDist) {
|
|
35
|
+
best = candidate;
|
|
36
|
+
bestDist = dist;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return best;
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
extractSeriesFromData,
|
|
43
|
+
nearestPoint
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=series.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"series.js","sources":["../../../../src/components/gini-impurity-entropy-chart/lib/series.ts"],"sourcesContent":["import { DEFAULT_SERIES_KEYS, type GiniSeriesPoint } from './types.js';\n\n/**\n * Client `extractSeriesFromData`: one series per metric column, keyed by the\n * x-axis column, sorted ascending by `p`.\n */\nexport function extractSeriesFromData(\n data: unknown,\n xField: string,\n seriesKeys?: string[],\n): Record<string, GiniSeriesPoint[]> {\n const rows = Array.isArray(data)\n ? (data as Array<Record<string, unknown>>)\n : [];\n const keys = seriesKeys?.length ? seriesKeys : DEFAULT_SERIES_KEYS;\n\n const result: Record<string, GiniSeriesPoint[]> = {};\n for (const key of keys) result[key] = [];\n\n for (const row of rows) {\n if (!row || typeof row !== 'object') continue;\n const p = Number(row[xField]);\n if (!Number.isFinite(p)) continue;\n\n for (const key of keys) {\n if (row[key] === undefined) continue;\n const value = Number(row[key]);\n if (Number.isFinite(value)) result[key].push({ p, value });\n }\n }\n\n for (const key of keys) result[key].sort((a, b) => a.p - b.p);\n return result;\n}\n\n/**\n * Client `getNearestValue`, returning the point so the crosshair can sit on it.\n * Binary search over the `p`-sorted series — keeps hover off the O(n) path.\n */\nexport function nearestPoint(\n points: GiniSeriesPoint[],\n p: number,\n): GiniSeriesPoint | null {\n if (!points.length) return null;\n\n let lo = 0;\n let hi = points.length - 1;\n while (lo < hi) {\n const mid = (lo + hi) >> 1;\n if (points[mid].p < p) lo = mid + 1;\n else hi = mid;\n }\n\n let best = points[lo];\n let bestDist = Math.abs(best.p - p);\n for (const candidate of [points[lo - 1], points[lo + 1]]) {\n if (!candidate) continue;\n const dist = Math.abs(candidate.p - p);\n if (dist < bestDist) {\n best = candidate;\n bestDist = dist;\n }\n }\n return best;\n}\n"],"names":[],"mappings":";AAMO,SAAS,sBACd,MACA,QACA,YACmC;AACnC,QAAM,OAAO,MAAM,QAAQ,IAAI,IAC1B,OACD,CAAA;AACJ,QAAM,QAAO,yCAAY,UAAS,aAAa;AAE/C,QAAM,SAA4C,CAAA;AAClD,aAAW,OAAO,KAAM,QAAO,GAAG,IAAI,CAAA;AAEtC,aAAW,OAAO,MAAM;AACtB,QAAI,CAAC,OAAO,OAAO,QAAQ,SAAU;AACrC,UAAM,IAAI,OAAO,IAAI,MAAM,CAAC;AAC5B,QAAI,CAAC,OAAO,SAAS,CAAC,EAAG;AAEzB,eAAW,OAAO,MAAM;AACtB,UAAI,IAAI,GAAG,MAAM,OAAW;AAC5B,YAAM,QAAQ,OAAO,IAAI,GAAG,CAAC;AAC7B,UAAI,OAAO,SAAS,KAAK,EAAG,QAAO,GAAG,EAAE,KAAK,EAAE,GAAG,OAAO;AAAA,IAC3D;AAAA,EACF;AAEA,aAAW,OAAO,KAAM,QAAO,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;AAC5D,SAAO;AACT;AAMO,SAAS,aACd,QACA,GACwB;AACxB,MAAI,CAAC,OAAO,OAAQ,QAAO;AAE3B,MAAI,KAAK;AACT,MAAI,KAAK,OAAO,SAAS;AACzB,SAAO,KAAK,IAAI;AACd,UAAM,MAAO,KAAK,MAAO;AACzB,QAAI,OAAO,GAAG,EAAE,IAAI,QAAQ,MAAM;AAAA,QAC7B,MAAK;AAAA,EACZ;AAEA,MAAI,OAAO,OAAO,EAAE;AACpB,MAAI,WAAW,KAAK,IAAI,KAAK,IAAI,CAAC;AAClC,aAAW,aAAa,CAAC,OAAO,KAAK,CAAC,GAAG,OAAO,KAAK,CAAC,CAAC,GAAG;AACxD,QAAI,CAAC,UAAW;AAChB,UAAM,OAAO,KAAK,IAAI,UAAU,IAAI,CAAC;AACrC,QAAI,OAAO,UAAU;AACnB,aAAO;AACP,iBAAW;AAAA,IACb;AAAA,EACF;AACA,SAAO;AACT;"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { FuseWidgetLike } from '../../../utils/fuse-widget.js';
|
|
2
|
+
/** One sample of an impurity curve: probability `p` → metric `value`. */
|
|
3
|
+
export interface GiniSeriesPoint {
|
|
4
|
+
p: number;
|
|
5
|
+
value: number;
|
|
6
|
+
}
|
|
7
|
+
export interface GiniSeries {
|
|
8
|
+
/** Metric column name — `entropy`, `gini`, `mis`, … */
|
|
9
|
+
id: string;
|
|
10
|
+
/** Display name for legend / tooltip */
|
|
11
|
+
name: string;
|
|
12
|
+
color: string;
|
|
13
|
+
/** SVG `stroke-dasharray`; undefined draws a solid curve */
|
|
14
|
+
dash?: string;
|
|
15
|
+
points: GiniSeriesPoint[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Decision-tree annotations the client reads from `widget.meta`. Each one is
|
|
19
|
+
* off unless the host turns it on, matching the client `showPHat` / `showCI` /
|
|
20
|
+
* `showSplit` props.
|
|
21
|
+
*/
|
|
22
|
+
export interface GiniOverlays {
|
|
23
|
+
/** Observed class proportion — drawn as a vertical guide */
|
|
24
|
+
pHat?: number;
|
|
25
|
+
/** Confidence interval around `pHat` — drawn as a shaded band */
|
|
26
|
+
ci?: [number, number];
|
|
27
|
+
/** Candidate split; the annotation reports its Gini reduction */
|
|
28
|
+
split?: {
|
|
29
|
+
pLeft: number;
|
|
30
|
+
nLeft?: number;
|
|
31
|
+
pRight: number;
|
|
32
|
+
nRight?: number;
|
|
33
|
+
};
|
|
34
|
+
showPHat: boolean;
|
|
35
|
+
showCI: boolean;
|
|
36
|
+
showSplit: boolean;
|
|
37
|
+
}
|
|
38
|
+
export interface GiniImpurityEntropyModel {
|
|
39
|
+
series: GiniSeries[];
|
|
40
|
+
xLabel: string;
|
|
41
|
+
yLabel: string;
|
|
42
|
+
overlays: GiniOverlays;
|
|
43
|
+
}
|
|
44
|
+
/** Chat payload: one metric per series, x carried as a number. */
|
|
45
|
+
export interface GiniImpurityEntropyChartData {
|
|
46
|
+
points?: Array<{
|
|
47
|
+
x: number | string;
|
|
48
|
+
y: number;
|
|
49
|
+
}>;
|
|
50
|
+
series?: Array<{
|
|
51
|
+
id: string;
|
|
52
|
+
name?: string;
|
|
53
|
+
color?: string;
|
|
54
|
+
dash?: string;
|
|
55
|
+
points: Array<{
|
|
56
|
+
x: number | string;
|
|
57
|
+
y: number;
|
|
58
|
+
}>;
|
|
59
|
+
}>;
|
|
60
|
+
xLabel?: string;
|
|
61
|
+
yLabel?: string;
|
|
62
|
+
meta?: Partial<GiniOverlays>;
|
|
63
|
+
}
|
|
64
|
+
/** FuseDash `DEFAULT_GINI_IMPUITY_ENTROPY` plus the fields this widget reads. */
|
|
65
|
+
export type GiniImpurityEntropyFusePayload = FuseWidgetLike & {
|
|
66
|
+
name?: string;
|
|
67
|
+
axisDetails?: Record<string, {
|
|
68
|
+
label?: string;
|
|
69
|
+
}> | null;
|
|
70
|
+
meta?: Partial<GiniOverlays> | null;
|
|
71
|
+
};
|
|
72
|
+
/** Client fallback when `yAxe` carries no metric columns. */
|
|
73
|
+
export declare const DEFAULT_SERIES_KEYS: string[];
|
|
74
|
+
/** Client `DEFAULT_SERIES_STYLE` — fixed look for the three known metrics. */
|
|
75
|
+
export declare const DEFAULT_SERIES_STYLE: Record<string, {
|
|
76
|
+
color: string;
|
|
77
|
+
dash?: string;
|
|
78
|
+
}>;
|
|
79
|
+
/** Client `SERIES_LABELS`. */
|
|
80
|
+
export declare const SERIES_LABELS: Record<string, string>;
|
|
81
|
+
/** Client default when `axisDetails.value.label` is absent. */
|
|
82
|
+
export declare const DEFAULT_Y_LABEL = "Impurity Index";
|
|
83
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/gini-impurity-entropy-chart/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEpE,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,uDAAuD;IACvD,EAAE,EAAE,MAAM,CAAC;IACX,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,4DAA4D;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtB,iEAAiE;IACjE,KAAK,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3E,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;CACxB;AAED,kEAAkE;AAClE,MAAM,WAAW,4BAA4B;IAC3C,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,MAAM,CAAC,EAAE,KAAK,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,KAAK,CAAC;YAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;YAAC,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAClD,CAAC,CAAC;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9B;AAED,iFAAiF;AACjF,MAAM,MAAM,8BAA8B,GAAG,cAAc,GAAG;IAC5D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;CACrC,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,mBAAmB,UAA6B,CAAC;AAE9D,8EAA8E;AAC9E,eAAO,MAAM,oBAAoB,EAAE,MAAM,CACvC,MAAM,EACN;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAKjC,CAAC;AAEF,8BAA8B;AAC9B,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAIhD,CAAC;AAEF,+DAA+D;AAC/D,eAAO,MAAM,eAAe,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const DEFAULT_SERIES_KEYS = ["entropy", "gini", "mis"];
|
|
2
|
+
const DEFAULT_SERIES_STYLE = {
|
|
3
|
+
entropy: { color: "#36C4A5" },
|
|
4
|
+
gini: { color: "#473DD9", dash: "5,5" },
|
|
5
|
+
mis: { color: "#56546D", dash: "5,5" }
|
|
6
|
+
};
|
|
7
|
+
const SERIES_LABELS = {
|
|
8
|
+
entropy: "Entropy",
|
|
9
|
+
gini: "Gini Impurity",
|
|
10
|
+
mis: "Misclassification Error"
|
|
11
|
+
};
|
|
12
|
+
const DEFAULT_Y_LABEL = "Impurity Index";
|
|
13
|
+
export {
|
|
14
|
+
DEFAULT_SERIES_KEYS,
|
|
15
|
+
DEFAULT_SERIES_STYLE,
|
|
16
|
+
DEFAULT_Y_LABEL,
|
|
17
|
+
SERIES_LABELS
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../src/components/gini-impurity-entropy-chart/lib/types.ts"],"sourcesContent":["import type { FuseWidgetLike } from '../../../utils/fuse-widget.js';\n\n/** One sample of an impurity curve: probability `p` → metric `value`. */\nexport interface GiniSeriesPoint {\n p: number;\n value: number;\n}\n\nexport interface GiniSeries {\n /** Metric column name — `entropy`, `gini`, `mis`, … */\n id: string;\n /** Display name for legend / tooltip */\n name: string;\n color: string;\n /** SVG `stroke-dasharray`; undefined draws a solid curve */\n dash?: string;\n points: GiniSeriesPoint[];\n}\n\n/**\n * Decision-tree annotations the client reads from `widget.meta`. Each one is\n * off unless the host turns it on, matching the client `showPHat` / `showCI` /\n * `showSplit` props.\n */\nexport interface GiniOverlays {\n /** Observed class proportion — drawn as a vertical guide */\n pHat?: number;\n /** Confidence interval around `pHat` — drawn as a shaded band */\n ci?: [number, number];\n /** Candidate split; the annotation reports its Gini reduction */\n split?: { pLeft: number; nLeft?: number; pRight: number; nRight?: number };\n showPHat: boolean;\n showCI: boolean;\n showSplit: boolean;\n}\n\nexport interface GiniImpurityEntropyModel {\n series: GiniSeries[];\n xLabel: string;\n yLabel: string;\n overlays: GiniOverlays;\n}\n\n/** Chat payload: one metric per series, x carried as a number. */\nexport interface GiniImpurityEntropyChartData {\n points?: Array<{ x: number | string; y: number }>;\n series?: Array<{\n id: string;\n name?: string;\n color?: string;\n dash?: string;\n points: Array<{ x: number | string; y: number }>;\n }>;\n xLabel?: string;\n yLabel?: string;\n meta?: Partial<GiniOverlays>;\n}\n\n/** FuseDash `DEFAULT_GINI_IMPUITY_ENTROPY` plus the fields this widget reads. */\nexport type GiniImpurityEntropyFusePayload = FuseWidgetLike & {\n name?: string;\n axisDetails?: Record<string, { label?: string }> | null;\n meta?: Partial<GiniOverlays> | null;\n};\n\n/** Client fallback when `yAxe` carries no metric columns. */\nexport const DEFAULT_SERIES_KEYS = ['entropy', 'gini', 'mis'];\n\n/** Client `DEFAULT_SERIES_STYLE` — fixed look for the three known metrics. */\nexport const DEFAULT_SERIES_STYLE: Record<\n string,\n { color: string; dash?: string }\n> = {\n entropy: { color: '#36C4A5' },\n gini: { color: '#473DD9', dash: '5,5' },\n mis: { color: '#56546D', dash: '5,5' },\n};\n\n/** Client `SERIES_LABELS`. */\nexport const SERIES_LABELS: Record<string, string> = {\n entropy: 'Entropy',\n gini: 'Gini Impurity',\n mis: 'Misclassification Error',\n};\n\n/** Client default when `axisDetails.value.label` is absent. */\nexport const DEFAULT_Y_LABEL = 'Impurity Index';\n"],"names":[],"mappings":"AAkEO,MAAM,sBAAsB,CAAC,WAAW,QAAQ,KAAK;AAGrD,MAAM,uBAGT;AAAA,EACF,SAAS,EAAE,OAAO,UAAA;AAAA,EAClB,MAAM,EAAE,OAAO,WAAW,MAAM,MAAA;AAAA,EAChC,KAAK,EAAE,OAAO,WAAW,MAAM,MAAA;AACjC;AAGO,MAAM,gBAAwC;AAAA,EACnD,SAAS;AAAA,EACT,MAAM;AAAA,EACN,KAAK;AACP;AAGO,MAAM,kBAAkB;"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
"id": "gini-impurity-entropy-chart",
|
|
3
|
+
"tag": "ui9000-gini-impurity-entropy-chart",
|
|
4
|
+
"title": "Gini Impurity & Entropy Chart",
|
|
5
|
+
"description": "Chat-optimized decision-tree impurity chart rewritten in D3. Entropy / Gini / misclassification curves over the class probability p, with optional p-hat, confidence-interval and split annotations.",
|
|
6
|
+
"chartTypeKeys": ["giniImpurityEntropyChart"],
|
|
7
|
+
"source": "client/libs/shared/components/src/Widgets/GiniImpurityEntropyChart/",
|
|
8
|
+
"stack": "d3",
|
|
9
|
+
"lazyImport": "@ui9000/widgets/lazy/gini-impurity-entropy-chart",
|
|
10
|
+
"entry": "@ui9000/widgets/gini-impurity-entropy-chart",
|
|
11
|
+
"usageConditions": {
|
|
12
|
+
"host": "mcp-chat",
|
|
13
|
+
"notFor": "fusedash-editor",
|
|
14
|
+
"mapsExcluded": true
|
|
15
|
+
},
|
|
16
|
+
"allowedActions": ["hover", "resize"],
|
|
17
|
+
"propsSchema": {
|
|
18
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
19
|
+
"type": "object",
|
|
20
|
+
"properties": {
|
|
21
|
+
"data": {
|
|
22
|
+
"oneOf": [
|
|
23
|
+
{
|
|
24
|
+
"type": "array",
|
|
25
|
+
"items": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"required": ["label", "value"],
|
|
28
|
+
"properties": {
|
|
29
|
+
"label": { "type": ["string", "number"] },
|
|
30
|
+
"value": { "type": "number" }
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"type": "object",
|
|
36
|
+
"properties": {
|
|
37
|
+
"points": {
|
|
38
|
+
"type": "array",
|
|
39
|
+
"items": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"required": ["x", "y"],
|
|
42
|
+
"properties": {
|
|
43
|
+
"x": { "type": ["number", "string"] },
|
|
44
|
+
"y": { "type": "number" }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"series": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"items": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"required": ["id", "points"],
|
|
53
|
+
"properties": {
|
|
54
|
+
"id": { "type": "string" },
|
|
55
|
+
"name": { "type": "string" },
|
|
56
|
+
"color": { "type": "string" },
|
|
57
|
+
"dash": { "type": "string" },
|
|
58
|
+
"points": {
|
|
59
|
+
"type": "array",
|
|
60
|
+
"items": {
|
|
61
|
+
"type": "object",
|
|
62
|
+
"required": ["x", "y"],
|
|
63
|
+
"properties": {
|
|
64
|
+
"x": { "type": ["number", "string"] },
|
|
65
|
+
"y": { "type": "number" }
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
"xLabel": { "type": "string" },
|
|
73
|
+
"yLabel": { "type": "string" },
|
|
74
|
+
"meta": {
|
|
75
|
+
"type": "object",
|
|
76
|
+
"properties": {
|
|
77
|
+
"pHat": { "type": "number", "minimum": 0, "maximum": 1 },
|
|
78
|
+
"ci": {
|
|
79
|
+
"type": "array",
|
|
80
|
+
"items": { "type": "number" },
|
|
81
|
+
"minItems": 2,
|
|
82
|
+
"maxItems": 2
|
|
83
|
+
},
|
|
84
|
+
"split": {
|
|
85
|
+
"type": "object",
|
|
86
|
+
"required": ["pLeft", "pRight"],
|
|
87
|
+
"properties": {
|
|
88
|
+
"pLeft": { "type": "number" },
|
|
89
|
+
"nLeft": { "type": "number" },
|
|
90
|
+
"pRight": { "type": "number" },
|
|
91
|
+
"nRight": { "type": "number" }
|
|
92
|
+
}
|
|
93
|
+
},
|
|
94
|
+
"showPHat": { "type": "boolean" },
|
|
95
|
+
"showCI": { "type": "boolean" },
|
|
96
|
+
"showSplit": { "type": "boolean" }
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
"showGrid": { "type": "boolean", "default": true },
|
|
104
|
+
"showLegend": { "type": "boolean", "default": true },
|
|
105
|
+
"showTooltip": { "type": "boolean", "default": true },
|
|
106
|
+
"showPHat": { "type": "boolean", "default": false },
|
|
107
|
+
"showCI": { "type": "boolean", "default": false },
|
|
108
|
+
"showSplit": { "type": "boolean", "default": false }
|
|
109
|
+
},
|
|
110
|
+
"required": ["data"]
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
;
|
|
114
|
+
|
|
115
|
+
export default _default;
|