@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,29 @@
|
|
|
1
|
+
function formatLinkValue(value) {
|
|
2
|
+
const n = Number(value ?? 0);
|
|
3
|
+
if (n >= 1e3) {
|
|
4
|
+
const k = n / 1e3;
|
|
5
|
+
return `${Number.isInteger(k) ? k.toString() : k.toFixed(1)}K`;
|
|
6
|
+
}
|
|
7
|
+
return n.toString();
|
|
8
|
+
}
|
|
9
|
+
function formatNodeValue(value) {
|
|
10
|
+
return typeof value === "number" ? `$${value.toFixed(2)}` : "";
|
|
11
|
+
}
|
|
12
|
+
function formatLegendValue(value, toFixed = 0) {
|
|
13
|
+
if (!Number.isFinite(value)) return "0";
|
|
14
|
+
if (Math.abs(value) < 1e3) return value.toFixed(toFixed);
|
|
15
|
+
const abbreviations = ["B", "M", "K"];
|
|
16
|
+
for (let i = 0; i < abbreviations.length; i++) {
|
|
17
|
+
const unit = Math.pow(1e3, abbreviations.length - i);
|
|
18
|
+
if (Math.abs(value) >= unit) {
|
|
19
|
+
return `${(value / unit).toFixed(1)} ${abbreviations[i]}`;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return value.toFixed(toFixed);
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
formatLegendValue,
|
|
26
|
+
formatLinkValue,
|
|
27
|
+
formatNodeValue
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sources":["../../../../src/components/network-graph/lib/format.ts"],"sourcesContent":["/** Client `toK` — link label text. */\nexport function formatLinkValue(value: number | undefined): string {\n const n = Number(value ?? 0);\n if (n >= 1000) {\n const k = n / 1000;\n return `${Number.isInteger(k) ? k.toString() : k.toFixed(1)}K`;\n }\n return n.toString();\n}\n\n/** Client node label value row. */\nexport function formatNodeValue(value: number | undefined): string {\n return typeof value === 'number' ? `$${value.toFixed(2)}` : '';\n}\n\n/** Client `Legends.formatValue` — abbreviated bucket boundary. */\nexport function formatLegendValue(value: number, toFixed = 0): string {\n if (!Number.isFinite(value)) return '0';\n if (Math.abs(value) < 1000) return value.toFixed(toFixed);\n\n const abbreviations = ['B', 'M', 'K'];\n for (let i = 0; i < abbreviations.length; i++) {\n const unit = Math.pow(1000, abbreviations.length - i);\n if (Math.abs(value) >= unit) {\n return `${(value / unit).toFixed(1)} ${abbreviations[i]}`;\n }\n }\n return value.toFixed(toFixed);\n}\n"],"names":[],"mappings":"AACO,SAAS,gBAAgB,OAAmC;AACjE,QAAM,IAAI,OAAO,SAAS,CAAC;AAC3B,MAAI,KAAK,KAAM;AACb,UAAM,IAAI,IAAI;AACd,WAAO,GAAG,OAAO,UAAU,CAAC,IAAI,EAAE,SAAA,IAAa,EAAE,QAAQ,CAAC,CAAC;AAAA,EAC7D;AACA,SAAO,EAAE,SAAA;AACX;AAGO,SAAS,gBAAgB,OAAmC;AACjE,SAAO,OAAO,UAAU,WAAW,IAAI,MAAM,QAAQ,CAAC,CAAC,KAAK;AAC9D;AAGO,SAAS,kBAAkB,OAAe,UAAU,GAAW;AACpE,MAAI,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AACpC,MAAI,KAAK,IAAI,KAAK,IAAI,IAAM,QAAO,MAAM,QAAQ,OAAO;AAExD,QAAM,gBAAgB,CAAC,KAAK,KAAK,GAAG;AACpC,WAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,UAAM,OAAO,KAAK,IAAI,KAAM,cAAc,SAAS,CAAC;AACpD,QAAI,KAAK,IAAI,KAAK,KAAK,MAAM;AAC3B,aAAO,IAAI,QAAQ,MAAM,QAAQ,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC;AAAA,IACzD;AAAA,EACF;AACA,SAAO,MAAM,QAAQ,OAAO;AAC9B;"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { type NetworkGraphFusePayload, type NetworkGraphInput, type NetworkGraphModel, type NetworkGraphPayload, type NetworkLegendRange, type NetworkLink, type NetworkLinkKind, type NetworkNode, type NetworkRange, type NetworkSizeKey, } from './types.js';
|
|
2
|
+
export { MAX_NETWORK_LINKS, MAX_NETWORK_NODES, normalizeNetworkGraphData, } from './normalize.js';
|
|
3
|
+
export { DEFAULT_NODE_COLOR, FULL_RANGE, INITIAL_NODE_RADIUS_RATIO, LABEL_ALWAYS_ABOVE, LINK_COLORS, LINK_LABEL_COLORS, LINK_WIDTH, NODE_BORDER_WIDTH, NODE_COLORS, NODE_LABEL_COLORS, NODE_SIZES, NODE_TYPE_COLORS, SHADOW_RADIUS_RATIO, SIZE_KEYS, isFullRange, legendRanges, networkForces, nodeColor, nodeRadius, nodeSizeKey, rangeIndexOf, scaleLinkWidthByMax, shadowRadius, visibleNodeIds, type NetworkForces, } from './domain.js';
|
|
4
|
+
export { formatLegendValue, formatLinkValue, formatNodeValue, } from './format.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/network-graph/lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,cAAc,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,yBAAyB,EACzB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,mBAAmB,EACnB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,aAAa,EACb,SAAS,EACT,UAAU,EACV,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { NetworkGraphInput, NetworkGraphModel } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Mark caps for chat: a node costs eight SVG elements plus a label, a link
|
|
4
|
+
* costs a line plus a label pill. Denser payloads keep their largest members.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MAX_NETWORK_NODES = 250;
|
|
7
|
+
export declare const MAX_NETWORK_LINKS = 600;
|
|
8
|
+
/** Normalize FuseDash widget or chat payloads into a force-graph model. */
|
|
9
|
+
export declare function normalizeNetworkGraphData(input: NetworkGraphInput | null | undefined): NetworkGraphModel;
|
|
10
|
+
//# sourceMappingURL=normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.d.ts","sourceRoot":"","sources":["../../../../src/components/network-graph/lib/normalize.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,iBAAiB,EACjB,iBAAiB,EAIlB,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,eAAO,MAAM,iBAAiB,MAAM,CAAC;AACrC,eAAO,MAAM,iBAAiB,MAAM,CAAC;AAgKrC,2EAA2E;AAC3E,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAC1C,iBAAiB,CAiBnB"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { generateBreakPoints } from "../../../utils/breakpoints.js";
|
|
2
|
+
import { pickQualitativePalette } from "../../../utils/fuse-palette.js";
|
|
3
|
+
import { NODE_TYPE_COLORS } from "./domain.js";
|
|
4
|
+
const MAX_NETWORK_NODES = 250;
|
|
5
|
+
const MAX_NETWORK_LINKS = 600;
|
|
6
|
+
const LINK_KINDS = ["primary", "neutral", "secondary"];
|
|
7
|
+
const EMPTY_MODEL = {
|
|
8
|
+
nodes: [],
|
|
9
|
+
links: [],
|
|
10
|
+
breakpoints: [],
|
|
11
|
+
maxLinkValue: 1
|
|
12
|
+
};
|
|
13
|
+
function emptyModel() {
|
|
14
|
+
return { ...EMPTY_MODEL, nodes: [], links: [], breakpoints: [] };
|
|
15
|
+
}
|
|
16
|
+
function isRecord(value) {
|
|
17
|
+
return !!value && typeof value === "object" && !Array.isArray(value);
|
|
18
|
+
}
|
|
19
|
+
function optionalString(value) {
|
|
20
|
+
return typeof value === "string" && value.trim() ? value : void 0;
|
|
21
|
+
}
|
|
22
|
+
function finiteNumber(value) {
|
|
23
|
+
const n = typeof value === "number" ? value : Number(value);
|
|
24
|
+
return Number.isFinite(n) ? n : void 0;
|
|
25
|
+
}
|
|
26
|
+
function toNode(raw) {
|
|
27
|
+
if (!isRecord(raw)) return null;
|
|
28
|
+
const id = raw.id == null ? "" : String(raw.id);
|
|
29
|
+
if (!id) return null;
|
|
30
|
+
return {
|
|
31
|
+
id,
|
|
32
|
+
label: optionalString(raw.label) ?? id,
|
|
33
|
+
value: finiteNumber(raw.value),
|
|
34
|
+
type: raw.type == null ? "" : String(raw.type),
|
|
35
|
+
color: optionalString(raw.color),
|
|
36
|
+
img: optionalString(raw.img)
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function toLinkKind(raw) {
|
|
40
|
+
return LINK_KINDS.includes(raw) ? raw : "neutral";
|
|
41
|
+
}
|
|
42
|
+
function collectNodes(raw) {
|
|
43
|
+
const byId = /* @__PURE__ */ new Map();
|
|
44
|
+
for (const entry of raw) {
|
|
45
|
+
const node = toNode(entry);
|
|
46
|
+
if (node && !byId.has(node.id)) byId.set(node.id, node);
|
|
47
|
+
}
|
|
48
|
+
const nodes = [...byId.values()];
|
|
49
|
+
if (nodes.length <= MAX_NETWORK_NODES) return nodes;
|
|
50
|
+
return nodes.slice().sort((a, b) => (b.value ?? 0) - (a.value ?? 0)).slice(0, MAX_NETWORK_NODES);
|
|
51
|
+
}
|
|
52
|
+
function collectLinks(raw, known) {
|
|
53
|
+
const seen = /* @__PURE__ */ new Set();
|
|
54
|
+
const links = [];
|
|
55
|
+
raw.forEach((entry, index) => {
|
|
56
|
+
if (!isRecord(entry)) return;
|
|
57
|
+
const source = entry.source == null ? "" : String(entry.source);
|
|
58
|
+
const target = entry.target == null ? "" : String(entry.target);
|
|
59
|
+
if (!source || !target || source === target) return;
|
|
60
|
+
if (!known.has(source) || !known.has(target)) return;
|
|
61
|
+
const id = entry.id == null ? `${source}->${target}-${index}` : String(entry.id);
|
|
62
|
+
if (seen.has(id)) return;
|
|
63
|
+
seen.add(id);
|
|
64
|
+
links.push({
|
|
65
|
+
id,
|
|
66
|
+
source,
|
|
67
|
+
target,
|
|
68
|
+
value: finiteNumber(entry.value) ?? 0,
|
|
69
|
+
type: toLinkKind(entry.type)
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
if (links.length <= MAX_NETWORK_LINKS) return links;
|
|
73
|
+
return links.slice().sort((a, b) => b.value - a.value).slice(0, MAX_NETWORK_LINKS);
|
|
74
|
+
}
|
|
75
|
+
function paintUnknownTypes(nodes) {
|
|
76
|
+
const unknown = [];
|
|
77
|
+
for (const node of nodes) {
|
|
78
|
+
if (!node.type || NODE_TYPE_COLORS[node.type] || unknown.includes(node.type)) continue;
|
|
79
|
+
unknown.push(node.type);
|
|
80
|
+
}
|
|
81
|
+
if (!unknown.length) return;
|
|
82
|
+
const palette = pickQualitativePalette(0, unknown.length);
|
|
83
|
+
for (const node of nodes) {
|
|
84
|
+
if (node.color) continue;
|
|
85
|
+
const index = unknown.indexOf(node.type);
|
|
86
|
+
if (index >= 0) node.color = palette[index % palette.length];
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function buildModel(rawNodes, rawLinks) {
|
|
90
|
+
let nodes = collectNodes(rawNodes);
|
|
91
|
+
if (!nodes.length) {
|
|
92
|
+
const derived = /* @__PURE__ */ new Map();
|
|
93
|
+
for (const entry of rawLinks) {
|
|
94
|
+
if (!isRecord(entry)) continue;
|
|
95
|
+
for (const key of ["source", "target"]) {
|
|
96
|
+
const id = entry[key] == null ? "" : String(entry[key]);
|
|
97
|
+
if (id && !derived.has(id)) derived.set(id, { id, label: id, type: "" });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
nodes = collectNodes([...derived.values()]);
|
|
101
|
+
}
|
|
102
|
+
if (!nodes.length) return emptyModel();
|
|
103
|
+
paintUnknownTypes(nodes);
|
|
104
|
+
const links = collectLinks(rawLinks, new Set(nodes.map((n) => n.id)));
|
|
105
|
+
const values = nodes.map((n) => n.value).filter((v) => typeof v === "number");
|
|
106
|
+
return {
|
|
107
|
+
nodes,
|
|
108
|
+
links,
|
|
109
|
+
breakpoints: values.length ? generateBreakPoints(values, 7) : [],
|
|
110
|
+
maxLinkValue: links.reduce((max, l) => Math.max(max, l.value), 0) || 1
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
function normalizeFuse(payload) {
|
|
114
|
+
const first = Array.isArray(payload.data) ? payload.data[0] : void 0;
|
|
115
|
+
if (!isRecord(first)) return emptyModel();
|
|
116
|
+
return buildModel(
|
|
117
|
+
Array.isArray(first.nodes) ? first.nodes : [],
|
|
118
|
+
Array.isArray(first.links) ? first.links : []
|
|
119
|
+
);
|
|
120
|
+
}
|
|
121
|
+
function normalizeNetworkGraphData(input) {
|
|
122
|
+
if (!input) return emptyModel();
|
|
123
|
+
if (Array.isArray(input)) return buildModel([], input);
|
|
124
|
+
if (isRecord(input) && (Array.isArray(input.nodes) || Array.isArray(input.links))) {
|
|
125
|
+
return buildModel(
|
|
126
|
+
Array.isArray(input.nodes) ? input.nodes : [],
|
|
127
|
+
Array.isArray(input.links) ? input.links : []
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
if (isRecord(input) && Array.isArray(input.data)) {
|
|
131
|
+
return normalizeFuse(input);
|
|
132
|
+
}
|
|
133
|
+
return emptyModel();
|
|
134
|
+
}
|
|
135
|
+
export {
|
|
136
|
+
MAX_NETWORK_LINKS,
|
|
137
|
+
MAX_NETWORK_NODES,
|
|
138
|
+
normalizeNetworkGraphData
|
|
139
|
+
};
|
|
140
|
+
//# sourceMappingURL=normalize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize.js","sources":["../../../../src/components/network-graph/lib/normalize.ts"],"sourcesContent":["import { generateBreakPoints } from '../../../utils/breakpoints.js';\nimport { pickQualitativePalette } from '../../../utils/fuse-palette.js';\n\nimport { NODE_TYPE_COLORS } from './domain.js';\n\nimport type {\n NetworkGraphFusePayload,\n NetworkGraphInput,\n NetworkGraphModel,\n NetworkLink,\n NetworkLinkKind,\n NetworkNode,\n} from './types.js';\n\n/**\n * Mark caps for chat: a node costs eight SVG elements plus a label, a link\n * costs a line plus a label pill. Denser payloads keep their largest members.\n */\nexport const MAX_NETWORK_NODES = 250;\nexport const MAX_NETWORK_LINKS = 600;\n\nconst LINK_KINDS: NetworkLinkKind[] = ['primary', 'neutral', 'secondary'];\n\nconst EMPTY_MODEL: NetworkGraphModel = {\n nodes: [],\n links: [],\n breakpoints: [],\n maxLinkValue: 1,\n};\n\nfunction emptyModel(): NetworkGraphModel {\n return { ...EMPTY_MODEL, nodes: [], links: [], breakpoints: [] };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction optionalString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim() ? value : undefined;\n}\n\nfunction finiteNumber(value: unknown): number | undefined {\n const n = typeof value === 'number' ? value : Number(value);\n return Number.isFinite(n) ? n : undefined;\n}\n\nfunction toNode(raw: unknown): NetworkNode | null {\n if (!isRecord(raw)) return null;\n const id = raw.id == null ? '' : String(raw.id);\n if (!id) return null;\n return {\n id,\n label: optionalString(raw.label) ?? id,\n value: finiteNumber(raw.value),\n type: raw.type == null ? '' : String(raw.type),\n color: optionalString(raw.color),\n img: optionalString(raw.img),\n };\n}\n\nfunction toLinkKind(raw: unknown): NetworkLinkKind {\n return LINK_KINDS.includes(raw as NetworkLinkKind)\n ? (raw as NetworkLinkKind)\n : 'neutral';\n}\n\nfunction collectNodes(raw: unknown[]): NetworkNode[] {\n const byId = new Map<string, NetworkNode>();\n for (const entry of raw) {\n const node = toNode(entry);\n if (node && !byId.has(node.id)) byId.set(node.id, node);\n }\n const nodes = [...byId.values()];\n if (nodes.length <= MAX_NETWORK_NODES) return nodes;\n return nodes\n .slice()\n .sort((a, b) => (b.value ?? 0) - (a.value ?? 0))\n .slice(0, MAX_NETWORK_NODES);\n}\n\nfunction collectLinks(raw: unknown[], known: Set<string>): NetworkLink[] {\n const seen = new Set<string>();\n const links: NetworkLink[] = [];\n\n raw.forEach((entry, index) => {\n if (!isRecord(entry)) return;\n const source = entry.source == null ? '' : String(entry.source);\n const target = entry.target == null ? '' : String(entry.target);\n // A self link draws as a zero-length stroke — it costs marks and shows\n // nothing, so it never reaches the plot.\n if (!source || !target || source === target) return;\n if (!known.has(source) || !known.has(target)) return;\n\n const id = entry.id == null ? `${source}->${target}-${index}` : String(entry.id);\n if (seen.has(id)) return;\n seen.add(id);\n\n links.push({\n id,\n source,\n target,\n value: finiteNumber(entry.value) ?? 0,\n type: toLinkKind(entry.type),\n });\n });\n\n if (links.length <= MAX_NETWORK_LINKS) return links;\n return links\n .slice()\n .sort((a, b) => b.value - a.value)\n .slice(0, MAX_NETWORK_LINKS);\n}\n\n/**\n * `NODE_TYPE_COLORS` only covers the categories the client ships. Anything else\n * (the default mock's `investment_bank`, `asset_management`, …) would collapse\n * onto one slate fill, so unknown categories draw from the qualitative palette\n * in first-seen order instead.\n */\nfunction paintUnknownTypes(nodes: NetworkNode[]): void {\n const unknown: string[] = [];\n for (const node of nodes) {\n if (!node.type || NODE_TYPE_COLORS[node.type] || unknown.includes(node.type)) continue;\n unknown.push(node.type);\n }\n if (!unknown.length) return;\n\n const palette = pickQualitativePalette(0, unknown.length);\n for (const node of nodes) {\n if (node.color) continue;\n const index = unknown.indexOf(node.type);\n if (index >= 0) node.color = palette[index % palette.length];\n }\n}\n\nfunction buildModel(rawNodes: unknown[], rawLinks: unknown[]): NetworkGraphModel {\n let nodes = collectNodes(rawNodes);\n\n if (!nodes.length) {\n // Links-only payloads describe their own endpoints.\n const derived = new Map<string, NetworkNode>();\n for (const entry of rawLinks) {\n if (!isRecord(entry)) continue;\n for (const key of ['source', 'target'] as const) {\n const id = entry[key] == null ? '' : String(entry[key]);\n if (id && !derived.has(id)) derived.set(id, { id, label: id, type: '' });\n }\n }\n nodes = collectNodes([...derived.values()]);\n }\n\n if (!nodes.length) return emptyModel();\n\n paintUnknownTypes(nodes);\n\n const links = collectLinks(rawLinks, new Set(nodes.map((n) => n.id)));\n const values = nodes\n .map((n) => n.value)\n .filter((v): v is number => typeof v === 'number');\n\n return {\n nodes,\n links,\n breakpoints: values.length ? generateBreakPoints(values, 7) : [],\n maxLinkValue: links.reduce((max, l) => Math.max(max, l.value), 0) || 1,\n };\n}\n\n/** Client `extractGraphDataFromWidget` — the graph lives in `widget.data[0]`. */\nfunction normalizeFuse(payload: NetworkGraphFusePayload): NetworkGraphModel {\n const first = Array.isArray(payload.data) ? payload.data[0] : undefined;\n if (!isRecord(first)) return emptyModel();\n return buildModel(\n Array.isArray(first.nodes) ? first.nodes : [],\n Array.isArray(first.links) ? first.links : [],\n );\n}\n\n/** Normalize FuseDash widget or chat payloads into a force-graph model. */\nexport function normalizeNetworkGraphData(\n input: NetworkGraphInput | null | undefined,\n): NetworkGraphModel {\n if (!input) return emptyModel();\n\n if (Array.isArray(input)) return buildModel([], input);\n\n if (isRecord(input) && (Array.isArray(input.nodes) || Array.isArray(input.links))) {\n return buildModel(\n Array.isArray(input.nodes) ? input.nodes : [],\n Array.isArray(input.links) ? input.links : [],\n );\n }\n\n if (isRecord(input) && Array.isArray(input.data)) {\n return normalizeFuse(input as NetworkGraphFusePayload);\n }\n\n return emptyModel();\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** Node size buckets, smallest → largest (client `SIZE_KEYS`). */
|
|
2
|
+
export type NetworkSizeKey = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';
|
|
3
|
+
/** Link stroke palette key (client `LINK_COLORS`). */
|
|
4
|
+
export type NetworkLinkKind = 'primary' | 'neutral' | 'secondary';
|
|
5
|
+
export interface NetworkNode {
|
|
6
|
+
id: string;
|
|
7
|
+
/** Drawn as the label title; falls back to the id. */
|
|
8
|
+
label: string;
|
|
9
|
+
/** Drives the size bucket and the label's value row. */
|
|
10
|
+
value?: number;
|
|
11
|
+
/** Category key resolved through `NODE_TYPE_COLORS`. */
|
|
12
|
+
type: string;
|
|
13
|
+
/** Explicit colour — wins over `type`. */
|
|
14
|
+
color?: string;
|
|
15
|
+
/** Avatar URL, clipped to the node circle. */
|
|
16
|
+
img?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface NetworkLink {
|
|
19
|
+
id: string;
|
|
20
|
+
source: string;
|
|
21
|
+
target: string;
|
|
22
|
+
/** Label text and, while the link is active, its stroke width. */
|
|
23
|
+
value: number;
|
|
24
|
+
type: NetworkLinkKind;
|
|
25
|
+
}
|
|
26
|
+
export interface NetworkGraphModel {
|
|
27
|
+
nodes: NetworkNode[];
|
|
28
|
+
links: NetworkLink[];
|
|
29
|
+
/** Seven quantile breaks over node values — size buckets and legend rows. */
|
|
30
|
+
breakpoints: number[];
|
|
31
|
+
/** Largest link value; active links scale their width against it. */
|
|
32
|
+
maxLinkValue: number;
|
|
33
|
+
}
|
|
34
|
+
/** Legend bucket: a value range and the node radius it stands for. */
|
|
35
|
+
export interface NetworkLegendRange {
|
|
36
|
+
start: number;
|
|
37
|
+
end: number;
|
|
38
|
+
radius: number;
|
|
39
|
+
}
|
|
40
|
+
/** Inclusive-left, exclusive-right bucket window from the legend slider. */
|
|
41
|
+
export interface NetworkRange {
|
|
42
|
+
leftSlider: number;
|
|
43
|
+
rightSlider: number;
|
|
44
|
+
}
|
|
45
|
+
/** Chat payload that already describes the graph. */
|
|
46
|
+
export interface NetworkGraphPayload {
|
|
47
|
+
nodes?: unknown[];
|
|
48
|
+
links?: unknown[];
|
|
49
|
+
}
|
|
50
|
+
/** FuseDash widget payload — the graph lives in `data[0]`. */
|
|
51
|
+
export interface NetworkGraphFusePayload {
|
|
52
|
+
data?: unknown;
|
|
53
|
+
name?: string;
|
|
54
|
+
}
|
|
55
|
+
export type NetworkGraphInput = NetworkGraphPayload | NetworkGraphFusePayload | unknown[];
|
|
56
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/network-graph/lib/types.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAE9E,sDAAsD;AACtD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,4EAA4E;AAC5E,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,qDAAqD;AACrD,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,iBAAiB,GACzB,mBAAmB,GACnB,uBAAuB,GACvB,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
"id": "network-graph",
|
|
3
|
+
"tag": "ui9000-network-graph",
|
|
4
|
+
"title": "Network Graph",
|
|
5
|
+
"description": "Chat-optimized FuseDash NetworkGraph rewritten in D3 (d3-force/-drag/-zoom). Value-sized nodes, category colours, click-to-focus links, and a size-bucket legend filter. No Redux.",
|
|
6
|
+
"chartTypeKeys": ["networkGraphChart"],
|
|
7
|
+
"source": "client/libs/shared/components/src/Widgets/NetworkGraph/",
|
|
8
|
+
"stack": "d3",
|
|
9
|
+
"lazyImport": "@fusedashlabs/widgets/lazy/network-graph",
|
|
10
|
+
"entry": "@fusedashlabs/widgets/network-graph",
|
|
11
|
+
"usageConditions": {
|
|
12
|
+
"host": "mcp-chat",
|
|
13
|
+
"notFor": "fusedash-editor",
|
|
14
|
+
"mapsExcluded": true
|
|
15
|
+
},
|
|
16
|
+
"allowedActions": ["hover", "select", "drag", "zoom", "filter", "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": "object",
|
|
25
|
+
"description": "FuseDash WidgetItem-shaped payload — the graph lives in data[0].",
|
|
26
|
+
"required": ["data"],
|
|
27
|
+
"properties": {
|
|
28
|
+
"name": { "type": "string" },
|
|
29
|
+
"data": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"items": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"properties": {
|
|
34
|
+
"nodes": { "type": "array", "items": { "$ref": "#/$defs/node" } },
|
|
35
|
+
"links": { "type": "array", "items": { "$ref": "#/$defs/link" } }
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"type": "object",
|
|
43
|
+
"description": "Graph payload from chat.",
|
|
44
|
+
"properties": {
|
|
45
|
+
"nodes": { "type": "array", "items": { "$ref": "#/$defs/node" } },
|
|
46
|
+
"links": { "type": "array", "items": { "$ref": "#/$defs/link" } }
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"type": "array",
|
|
51
|
+
"description": "Links only — node ids are derived from the endpoints.",
|
|
52
|
+
"items": { "$ref": "#/$defs/link" }
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
"chart-title": { "type": "string" },
|
|
57
|
+
"show-header": { "type": "boolean", "default": true },
|
|
58
|
+
"show-legend": { "type": "boolean", "default": true },
|
|
59
|
+
"show-tooltip": { "type": "boolean", "default": true }
|
|
60
|
+
},
|
|
61
|
+
"required": ["data"],
|
|
62
|
+
"$defs": {
|
|
63
|
+
"node": {
|
|
64
|
+
"type": "object",
|
|
65
|
+
"required": ["id"],
|
|
66
|
+
"properties": {
|
|
67
|
+
"id": { "type": "string" },
|
|
68
|
+
"label": { "type": "string" },
|
|
69
|
+
"value": { "type": "number", "description": "Drives the size bucket." },
|
|
70
|
+
"type": { "type": "string", "description": "Category key → node colour." },
|
|
71
|
+
"color": { "type": "string" },
|
|
72
|
+
"img": { "type": "string", "description": "Avatar URL clipped to the node circle." }
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"link": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"required": ["source", "target"],
|
|
78
|
+
"properties": {
|
|
79
|
+
"id": { "type": "string" },
|
|
80
|
+
"source": { "type": "string" },
|
|
81
|
+
"target": { "type": "string" },
|
|
82
|
+
"value": { "type": "number" },
|
|
83
|
+
"type": { "type": "string", "enum": ["primary", "neutral", "secondary"] }
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
;
|
|
90
|
+
|
|
91
|
+
export default _default;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const id = "network-graph";
|
|
2
|
+
const tag = "ui9000-network-graph";
|
|
3
|
+
const title = "Network Graph";
|
|
4
|
+
const description = "Chat-optimized FuseDash NetworkGraph rewritten in D3 (d3-force/-drag/-zoom). Value-sized nodes, category colours, click-to-focus links, and a size-bucket legend filter. No Redux.";
|
|
5
|
+
const chartTypeKeys = ["networkGraphChart"];
|
|
6
|
+
const source = "client/libs/shared/components/src/Widgets/NetworkGraph/";
|
|
7
|
+
const stack = "d3";
|
|
8
|
+
const lazyImport = "@fusedashlabs/widgets/lazy/network-graph";
|
|
9
|
+
const entry = "@fusedashlabs/widgets/network-graph";
|
|
10
|
+
const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": true };
|
|
11
|
+
const allowedActions = ["hover", "select", "drag", "zoom", "filter", "resize"];
|
|
12
|
+
const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "data": { "oneOf": [{ "type": "object", "description": "FuseDash WidgetItem-shaped payload — the graph lives in data[0].", "required": ["data"], "properties": { "name": { "type": "string" }, "data": { "type": "array", "items": { "type": "object", "properties": { "nodes": { "type": "array", "items": { "$ref": "#/$defs/node" } }, "links": { "type": "array", "items": { "$ref": "#/$defs/link" } } } } } } }, { "type": "object", "description": "Graph payload from chat.", "properties": { "nodes": { "type": "array", "items": { "$ref": "#/$defs/node" } }, "links": { "type": "array", "items": { "$ref": "#/$defs/link" } } } }, { "type": "array", "description": "Links only — node ids are derived from the endpoints.", "items": { "$ref": "#/$defs/link" } }] }, "chart-title": { "type": "string" }, "show-header": { "type": "boolean", "default": true }, "show-legend": { "type": "boolean", "default": true }, "show-tooltip": { "type": "boolean", "default": true } }, "required": ["data"], "$defs": { "node": { "type": "object", "required": ["id"], "properties": { "id": { "type": "string" }, "label": { "type": "string" }, "value": { "type": "number", "description": "Drives the size bucket." }, "type": { "type": "string", "description": "Category key → node colour." }, "color": { "type": "string" }, "img": { "type": "string", "description": "Avatar URL clipped to the node circle." } } }, "link": { "type": "object", "required": ["source", "target"], "properties": { "id": { "type": "string" }, "source": { "type": "string" }, "target": { "type": "string" }, "value": { "type": "number" }, "type": { "type": "string", "enum": ["primary", "neutral", "secondary"] } } } } };
|
|
13
|
+
const networkGraphMeta = {
|
|
14
|
+
id,
|
|
15
|
+
tag,
|
|
16
|
+
title,
|
|
17
|
+
description,
|
|
18
|
+
chartTypeKeys,
|
|
19
|
+
source,
|
|
20
|
+
stack,
|
|
21
|
+
lazyImport,
|
|
22
|
+
entry,
|
|
23
|
+
usageConditions,
|
|
24
|
+
allowedActions,
|
|
25
|
+
propsSchema
|
|
26
|
+
};
|
|
27
|
+
export {
|
|
28
|
+
allowedActions,
|
|
29
|
+
chartTypeKeys,
|
|
30
|
+
networkGraphMeta as default,
|
|
31
|
+
description,
|
|
32
|
+
entry,
|
|
33
|
+
id,
|
|
34
|
+
lazyImport,
|
|
35
|
+
propsSchema,
|
|
36
|
+
source,
|
|
37
|
+
stack,
|
|
38
|
+
tag,
|
|
39
|
+
title,
|
|
40
|
+
usageConditions
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=metadata.json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { WidgetTheme } from '../../../types/index.js';
|
|
2
|
+
import { NetworkGraphModel } from '../lib/index.js';
|
|
3
|
+
export interface RenderNetworkGraphOptions {
|
|
4
|
+
model: NetworkGraphModel;
|
|
5
|
+
/** `null` shows every node; otherwise only these ids stay visible. */
|
|
6
|
+
visibleIds: Set<string> | null;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
theme: WidgetTheme;
|
|
10
|
+
/** Selection carried across a redraw (legend filtering keeps it). */
|
|
11
|
+
activeNodeId?: string | null;
|
|
12
|
+
/** Fired when a node is clicked; `null` when the same node is clicked again. */
|
|
13
|
+
onSelect?: (id: string | null) => void;
|
|
14
|
+
/** Drag-to-pan plus ctrl/cmd + wheel zoom. */
|
|
15
|
+
enableZoom?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Live handle on a mounted graph. The element keeps this so the legend filter
|
|
19
|
+
* and container resizes can update the plot in place instead of rebuilding it.
|
|
20
|
+
*/
|
|
21
|
+
export interface NetworkGraphController {
|
|
22
|
+
/** Legend filter — toggles node/link visibility, the layout is untouched. */
|
|
23
|
+
setVisibleIds(visibleIds: Set<string> | null): void;
|
|
24
|
+
/** Container resize — re-frames the settled layout, runs no new force ticks. */
|
|
25
|
+
resize(width: number, height: number): void;
|
|
26
|
+
}
|
|
27
|
+
/** Stop the simulation attached to `container`, keeping its layout for the next draw. */
|
|
28
|
+
export declare function stopNetworkGraph(container: HTMLElement): void;
|
|
29
|
+
/**
|
|
30
|
+
* Legend filter. Returns `false` when no graph is mounted so the caller can fall
|
|
31
|
+
* back to a full render; on success nothing is rebuilt and the camera holds.
|
|
32
|
+
*/
|
|
33
|
+
export declare function updateNetworkGraphVisibility(container: HTMLElement, visibleIds: Set<string> | null): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Container resize. Returns `false` when no graph is mounted; otherwise the
|
|
36
|
+
* settled layout is re-framed without re-running the force simulation.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resizeNetworkGraph(container: HTMLElement, width: number, height: number): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* FuseDash NetworkGraph — a d3-force layout of image/colour nodes joined by
|
|
41
|
+
* value-weighted links. The client lays out on a fixed 2000x1375 canvas and
|
|
42
|
+
* zooms into it; chat gives the chart its container instead, so the simulation
|
|
43
|
+
* runs in container coordinates with the spatial forces scaled to match.
|
|
44
|
+
*/
|
|
45
|
+
export declare function renderNetworkGraph(container: HTMLElement, options: RenderNetworkGraphOptions): NetworkGraphController | null;
|
|
46
|
+
//# sourceMappingURL=draw.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draw.d.ts","sourceRoot":"","sources":["../../../../src/components/network-graph/render/draw.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAgBL,KAAK,iBAAiB,EAGvB,MAAM,iBAAiB,CAAC;AAqCzB,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,iBAAiB,CAAC;IACzB,sEAAsE;IACtE,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gFAAgF;IAChF,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvC,8CAA8C;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA8BD;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,6EAA6E;IAC7E,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IACpD,gFAAgF;IAChF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAgDD,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,WAAW,GAAG,IAAI,CAY7D;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,GAC7B,OAAO,CAKT;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,WAAW,EACtB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAKT;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,WAAW,EACtB,OAAO,EAAE,yBAAyB,GACjC,sBAAsB,GAAG,IAAI,CAqT/B"}
|