nirs4all-ui 0.1.11 → 0.1.13
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/README.md +39 -1
- package/assets/brands/README.md +28 -8
- package/assets/brands/dag-ml/favicon.ico +0 -0
- package/assets/brands/dag-ml/horizontal-dark.svg +5 -0
- package/assets/brands/dag-ml/horizontal.png +0 -0
- package/assets/brands/dag-ml/horizontal.svg +5 -0
- package/assets/brands/dag-ml/icon-180.png +0 -0
- package/assets/brands/dag-ml/icon-256.png +0 -0
- package/assets/brands/dag-ml/icon-32.png +0 -0
- package/assets/brands/dag-ml/icon-512.png +0 -0
- package/assets/brands/dag-ml/icon.svg +3 -0
- package/assets/brands/dag-ml/og.png +0 -0
- package/assets/brands/dag-ml/stacked-dark.svg +5 -0
- package/assets/brands/dag-ml/stacked.png +0 -0
- package/assets/brands/dag-ml/stacked.svg +5 -0
- package/assets/brands/dag-ml-data/favicon.ico +0 -0
- package/assets/brands/dag-ml-data/horizontal-dark.svg +6 -0
- package/assets/brands/dag-ml-data/horizontal.png +0 -0
- package/assets/brands/dag-ml-data/horizontal.svg +6 -0
- package/assets/brands/dag-ml-data/icon-180.png +0 -0
- package/assets/brands/dag-ml-data/icon-256.png +0 -0
- package/assets/brands/dag-ml-data/icon-32.png +0 -0
- package/assets/brands/dag-ml-data/icon-512.png +0 -0
- package/assets/brands/dag-ml-data/icon.svg +3 -0
- package/assets/brands/dag-ml-data/og.png +0 -0
- package/assets/brands/dag-ml-data/stacked-dark.svg +6 -0
- package/assets/brands/dag-ml-data/stacked.png +0 -0
- package/assets/brands/dag-ml-data/stacked.svg +6 -0
- package/assets/brands/nirs4all/favicon.ico +0 -0
- package/assets/brands/nirs4all/horizontal-dark.svg +36 -0
- package/assets/brands/nirs4all/horizontal.png +0 -0
- package/assets/brands/nirs4all/horizontal.svg +35 -11
- package/assets/brands/nirs4all/icon-180.png +0 -0
- package/assets/brands/nirs4all/icon-256.png +0 -0
- package/assets/brands/nirs4all/icon-32.png +0 -0
- package/assets/brands/nirs4all/icon-512.png +0 -0
- package/assets/brands/nirs4all/icon.svg +32 -7
- package/assets/brands/nirs4all/og.png +0 -0
- package/assets/brands/nirs4all/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all/stacked.png +0 -0
- package/assets/brands/nirs4all/stacked.svg +35 -11
- package/assets/brands/nirs4all-benchmarks/favicon.ico +0 -0
- package/assets/brands/nirs4all-benchmarks/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-benchmarks/horizontal.png +0 -0
- package/assets/brands/nirs4all-benchmarks/horizontal.svg +37 -0
- package/assets/brands/nirs4all-benchmarks/icon-180.png +0 -0
- package/assets/brands/nirs4all-benchmarks/icon-256.png +0 -0
- package/assets/brands/nirs4all-benchmarks/icon-32.png +0 -0
- package/assets/brands/nirs4all-benchmarks/icon-512.png +0 -0
- package/assets/brands/nirs4all-benchmarks/icon.svg +33 -0
- package/assets/brands/nirs4all-benchmarks/og.png +0 -0
- package/assets/brands/nirs4all-benchmarks/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-benchmarks/stacked.png +0 -0
- package/assets/brands/nirs4all-benchmarks/stacked.svg +36 -0
- package/assets/brands/nirs4all-cluster/favicon.ico +0 -0
- package/assets/brands/nirs4all-cluster/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-cluster/horizontal.png +0 -0
- package/assets/brands/nirs4all-cluster/horizontal.svg +37 -0
- package/assets/brands/nirs4all-cluster/icon-180.png +0 -0
- package/assets/brands/nirs4all-cluster/icon-256.png +0 -0
- package/assets/brands/nirs4all-cluster/icon-32.png +0 -0
- package/assets/brands/nirs4all-cluster/icon-512.png +0 -0
- package/assets/brands/nirs4all-cluster/icon.svg +33 -0
- package/assets/brands/nirs4all-cluster/og.png +0 -0
- package/assets/brands/nirs4all-cluster/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-cluster/stacked.png +0 -0
- package/assets/brands/nirs4all-cluster/stacked.svg +36 -0
- package/assets/brands/nirs4all-core/favicon.ico +0 -0
- package/assets/brands/nirs4all-core/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-core/horizontal.png +0 -0
- package/assets/brands/nirs4all-core/horizontal.svg +36 -11
- package/assets/brands/nirs4all-core/icon-180.png +0 -0
- package/assets/brands/nirs4all-core/icon-256.png +0 -0
- package/assets/brands/nirs4all-core/icon-32.png +0 -0
- package/assets/brands/nirs4all-core/icon-512.png +0 -0
- package/assets/brands/nirs4all-core/icon.svg +32 -7
- package/assets/brands/nirs4all-core/og.png +0 -0
- package/assets/brands/nirs4all-core/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-core/stacked.png +0 -0
- package/assets/brands/nirs4all-core/stacked.svg +35 -11
- package/assets/brands/nirs4all-datasets/favicon.ico +0 -0
- package/assets/brands/nirs4all-datasets/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-datasets/horizontal.png +0 -0
- package/assets/brands/nirs4all-datasets/horizontal.svg +37 -0
- package/assets/brands/nirs4all-datasets/icon-180.png +0 -0
- package/assets/brands/nirs4all-datasets/icon-256.png +0 -0
- package/assets/brands/nirs4all-datasets/icon-32.png +0 -0
- package/assets/brands/nirs4all-datasets/icon-512.png +0 -0
- package/assets/brands/nirs4all-datasets/icon.svg +33 -0
- package/assets/brands/nirs4all-datasets/og.png +0 -0
- package/assets/brands/nirs4all-datasets/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-datasets/stacked.png +0 -0
- package/assets/brands/nirs4all-datasets/stacked.svg +36 -0
- package/assets/brands/nirs4all-device/favicon.ico +0 -0
- package/assets/brands/nirs4all-device/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-device/horizontal.png +0 -0
- package/assets/brands/nirs4all-device/horizontal.svg +37 -0
- package/assets/brands/nirs4all-device/icon-180.png +0 -0
- package/assets/brands/nirs4all-device/icon-256.png +0 -0
- package/assets/brands/nirs4all-device/icon-32.png +0 -0
- package/assets/brands/nirs4all-device/icon-512.png +0 -0
- package/assets/brands/nirs4all-device/icon.svg +33 -0
- package/assets/brands/nirs4all-device/og.png +0 -0
- package/assets/brands/nirs4all-device/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-device/stacked.png +0 -0
- package/assets/brands/nirs4all-device/stacked.svg +36 -0
- package/assets/brands/nirs4all-formats/favicon.ico +0 -0
- package/assets/brands/nirs4all-formats/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-formats/horizontal.png +0 -0
- package/assets/brands/nirs4all-formats/horizontal.svg +37 -0
- package/assets/brands/nirs4all-formats/icon-180.png +0 -0
- package/assets/brands/nirs4all-formats/icon-256.png +0 -0
- package/assets/brands/nirs4all-formats/icon-32.png +0 -0
- package/assets/brands/nirs4all-formats/icon-512.png +0 -0
- package/assets/brands/nirs4all-formats/icon.svg +33 -0
- package/assets/brands/nirs4all-formats/og.png +0 -0
- package/assets/brands/nirs4all-formats/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-formats/stacked.png +0 -0
- package/assets/brands/nirs4all-formats/stacked.svg +36 -0
- package/assets/brands/nirs4all-io/favicon.ico +0 -0
- package/assets/brands/nirs4all-io/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-io/horizontal.png +0 -0
- package/assets/brands/nirs4all-io/horizontal.svg +37 -0
- package/assets/brands/nirs4all-io/icon-180.png +0 -0
- package/assets/brands/nirs4all-io/icon-256.png +0 -0
- package/assets/brands/nirs4all-io/icon-32.png +0 -0
- package/assets/brands/nirs4all-io/icon-512.png +0 -0
- package/assets/brands/nirs4all-io/icon.svg +33 -0
- package/assets/brands/nirs4all-io/og.png +0 -0
- package/assets/brands/nirs4all-io/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-io/stacked.png +0 -0
- package/assets/brands/nirs4all-io/stacked.svg +36 -0
- package/assets/brands/nirs4all-methods/favicon.ico +0 -0
- package/assets/brands/nirs4all-methods/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-methods/horizontal.png +0 -0
- package/assets/brands/nirs4all-methods/horizontal.svg +37 -0
- package/assets/brands/nirs4all-methods/icon-180.png +0 -0
- package/assets/brands/nirs4all-methods/icon-256.png +0 -0
- package/assets/brands/nirs4all-methods/icon-32.png +0 -0
- package/assets/brands/nirs4all-methods/icon-512.png +0 -0
- package/assets/brands/nirs4all-methods/icon.svg +33 -0
- package/assets/brands/nirs4all-methods/og.png +0 -0
- package/assets/brands/nirs4all-methods/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-methods/stacked.png +0 -0
- package/assets/brands/nirs4all-methods/stacked.svg +36 -0
- package/assets/brands/nirs4all-papers/favicon.ico +0 -0
- package/assets/brands/nirs4all-papers/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-papers/horizontal.png +0 -0
- package/assets/brands/nirs4all-papers/horizontal.svg +37 -0
- package/assets/brands/nirs4all-papers/icon-180.png +0 -0
- package/assets/brands/nirs4all-papers/icon-256.png +0 -0
- package/assets/brands/nirs4all-papers/icon-32.png +0 -0
- package/assets/brands/nirs4all-papers/icon-512.png +0 -0
- package/assets/brands/nirs4all-papers/icon.svg +33 -0
- package/assets/brands/nirs4all-papers/og.png +0 -0
- package/assets/brands/nirs4all-papers/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-papers/stacked.png +0 -0
- package/assets/brands/nirs4all-papers/stacked.svg +36 -0
- package/assets/brands/nirs4all-providers/favicon.ico +0 -0
- package/assets/brands/nirs4all-providers/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-providers/horizontal.png +0 -0
- package/assets/brands/nirs4all-providers/horizontal.svg +36 -11
- package/assets/brands/nirs4all-providers/icon-180.png +0 -0
- package/assets/brands/nirs4all-providers/icon-256.png +0 -0
- package/assets/brands/nirs4all-providers/icon-32.png +0 -0
- package/assets/brands/nirs4all-providers/icon-512.png +0 -0
- package/assets/brands/nirs4all-providers/icon.svg +32 -7
- package/assets/brands/nirs4all-providers/og.png +0 -0
- package/assets/brands/nirs4all-providers/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-providers/stacked.png +0 -0
- package/assets/brands/nirs4all-providers/stacked.svg +35 -11
- package/assets/brands/nirs4all-quality/favicon.ico +0 -0
- package/assets/brands/nirs4all-quality/horizontal-dark.svg +36 -0
- package/assets/brands/nirs4all-quality/horizontal.svg +35 -11
- package/assets/brands/nirs4all-quality/icon-180.png +0 -0
- package/assets/brands/nirs4all-quality/icon-256.png +0 -0
- package/assets/brands/nirs4all-quality/icon-32.png +0 -0
- package/assets/brands/nirs4all-quality/icon-512.png +0 -0
- package/assets/brands/nirs4all-quality/icon.svg +32 -7
- package/assets/brands/nirs4all-quality/og.png +0 -0
- package/assets/brands/nirs4all-quality/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-quality/stacked.svg +35 -11
- package/assets/brands/nirs4all-repository/favicon.ico +0 -0
- package/assets/brands/nirs4all-repository/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-repository/horizontal.png +0 -0
- package/assets/brands/nirs4all-repository/horizontal.svg +37 -0
- package/assets/brands/nirs4all-repository/icon-180.png +0 -0
- package/assets/brands/nirs4all-repository/icon-256.png +0 -0
- package/assets/brands/nirs4all-repository/icon-32.png +0 -0
- package/assets/brands/nirs4all-repository/icon-512.png +0 -0
- package/assets/brands/nirs4all-repository/icon.svg +33 -0
- package/assets/brands/nirs4all-repository/og.png +0 -0
- package/assets/brands/nirs4all-repository/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-repository/stacked.png +0 -0
- package/assets/brands/nirs4all-repository/stacked.svg +36 -0
- package/assets/brands/nirs4all-studio/favicon.ico +0 -0
- package/assets/brands/nirs4all-studio/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-studio/horizontal.png +0 -0
- package/assets/brands/nirs4all-studio/horizontal.svg +37 -0
- package/assets/brands/nirs4all-studio/icon-180.png +0 -0
- package/assets/brands/nirs4all-studio/icon-256.png +0 -0
- package/assets/brands/nirs4all-studio/icon-32.png +0 -0
- package/assets/brands/nirs4all-studio/icon-512.png +0 -0
- package/assets/brands/nirs4all-studio/icon.svg +33 -0
- package/assets/brands/nirs4all-studio/og.png +0 -0
- package/assets/brands/nirs4all-studio/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-studio/stacked.png +0 -0
- package/assets/brands/nirs4all-studio/stacked.svg +36 -0
- package/assets/brands/nirs4all-tools/favicon.ico +0 -0
- package/assets/brands/nirs4all-tools/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-tools/horizontal.png +0 -0
- package/assets/brands/nirs4all-tools/horizontal.svg +37 -0
- package/assets/brands/nirs4all-tools/icon-180.png +0 -0
- package/assets/brands/nirs4all-tools/icon-256.png +0 -0
- package/assets/brands/nirs4all-tools/icon-32.png +0 -0
- package/assets/brands/nirs4all-tools/icon-512.png +0 -0
- package/assets/brands/nirs4all-tools/icon.svg +33 -0
- package/assets/brands/nirs4all-tools/og.png +0 -0
- package/assets/brands/nirs4all-tools/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-tools/stacked.png +0 -0
- package/assets/brands/nirs4all-tools/stacked.svg +36 -0
- package/assets/brands/nirs4all-ui/favicon.ico +0 -0
- package/assets/brands/nirs4all-ui/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-ui/horizontal.png +0 -0
- package/assets/brands/nirs4all-ui/horizontal.svg +36 -11
- package/assets/brands/nirs4all-ui/icon-180.png +0 -0
- package/assets/brands/nirs4all-ui/icon-256.png +0 -0
- package/assets/brands/nirs4all-ui/icon-32.png +0 -0
- package/assets/brands/nirs4all-ui/icon-512.png +0 -0
- package/assets/brands/nirs4all-ui/icon.svg +32 -7
- package/assets/brands/nirs4all-ui/og.png +0 -0
- package/assets/brands/nirs4all-ui/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-ui/stacked.png +0 -0
- package/assets/brands/nirs4all-ui/stacked.svg +35 -11
- package/assets/brands/nirs4all-web/favicon.ico +0 -0
- package/assets/brands/nirs4all-web/horizontal-dark.svg +37 -0
- package/assets/brands/nirs4all-web/horizontal.png +0 -0
- package/assets/brands/nirs4all-web/horizontal.svg +37 -0
- package/assets/brands/nirs4all-web/icon-180.png +0 -0
- package/assets/brands/nirs4all-web/icon-256.png +0 -0
- package/assets/brands/nirs4all-web/icon-32.png +0 -0
- package/assets/brands/nirs4all-web/icon-512.png +0 -0
- package/assets/brands/nirs4all-web/icon.svg +33 -0
- package/assets/brands/nirs4all-web/og.png +0 -0
- package/assets/brands/nirs4all-web/stacked-dark.svg +36 -0
- package/assets/brands/nirs4all-web/stacked.png +0 -0
- package/assets/brands/nirs4all-web/stacked.svg +36 -0
- package/assets/chains.css +601 -0
- package/assets/conformal.css +323 -0
- package/assets/dag.css +446 -0
- package/assets/motion/nirs-spectra.svg +26 -9
- package/assets/viz.css +152 -0
- package/dist/brand/index.d.ts +24 -126
- package/dist/brand/index.d.ts.map +1 -1
- package/dist/brand/index.js +52 -200
- package/dist/brand/index.js.map +1 -1
- package/dist/chains/ChainExplorer.d.ts +34 -0
- package/dist/chains/ChainExplorer.d.ts.map +1 -0
- package/dist/chains/ChainExplorer.js +119 -0
- package/dist/chains/ChainExplorer.js.map +1 -0
- package/dist/chains/ChainNodeHub.d.ts +31 -0
- package/dist/chains/ChainNodeHub.d.ts.map +1 -0
- package/dist/chains/ChainNodeHub.js +150 -0
- package/dist/chains/ChainNodeHub.js.map +1 -0
- package/dist/chains/ChainNodeOrbit.d.ts +31 -0
- package/dist/chains/ChainNodeOrbit.d.ts.map +1 -0
- package/dist/chains/ChainNodeOrbit.js +158 -0
- package/dist/chains/ChainNodeOrbit.js.map +1 -0
- package/dist/chains/ChainScoreBeeswarm.d.ts +25 -0
- package/dist/chains/ChainScoreBeeswarm.d.ts.map +1 -0
- package/dist/chains/ChainScoreBeeswarm.js +84 -0
- package/dist/chains/ChainScoreBeeswarm.js.map +1 -0
- package/dist/chains/NodeEffectForest.d.ts +33 -0
- package/dist/chains/NodeEffectForest.d.ts.map +1 -0
- package/dist/chains/NodeEffectForest.js +85 -0
- package/dist/chains/NodeEffectForest.js.map +1 -0
- package/dist/chains/PositionEffectHeatmap.d.ts +25 -0
- package/dist/chains/PositionEffectHeatmap.d.ts.map +1 -0
- package/dist/chains/PositionEffectHeatmap.js +77 -0
- package/dist/chains/PositionEffectHeatmap.js.map +1 -0
- package/dist/chains/SequenceEffectHeatmap.d.ts +22 -0
- package/dist/chains/SequenceEffectHeatmap.d.ts.map +1 -0
- package/dist/chains/SequenceEffectHeatmap.js +74 -0
- package/dist/chains/SequenceEffectHeatmap.js.map +1 -0
- package/dist/chains/_cx.d.ts +2 -0
- package/dist/chains/_cx.d.ts.map +1 -0
- package/dist/chains/_cx.js +8 -0
- package/dist/chains/_cx.js.map +1 -0
- package/dist/chains/analysis.d.ts +100 -0
- package/dist/chains/analysis.d.ts.map +1 -0
- package/dist/chains/analysis.js +440 -0
- package/dist/chains/analysis.js.map +1 -0
- package/dist/chains/colors.d.ts +26 -0
- package/dist/chains/colors.d.ts.map +1 -0
- package/dist/chains/colors.js +58 -0
- package/dist/chains/colors.js.map +1 -0
- package/dist/chains/contract.d.ts +54 -0
- package/dist/chains/contract.d.ts.map +1 -0
- package/dist/chains/contract.js +125 -0
- package/dist/chains/contract.js.map +1 -0
- package/dist/chains/index.d.ts +35 -0
- package/dist/chains/index.d.ts.map +1 -0
- package/dist/chains/index.js +41 -0
- package/dist/chains/index.js.map +1 -0
- package/dist/chains/normalize.d.ts +27 -0
- package/dist/chains/normalize.d.ts.map +1 -0
- package/dist/chains/normalize.js +104 -0
- package/dist/chains/normalize.js.map +1 -0
- package/dist/chains/radial.d.ts +21 -0
- package/dist/chains/radial.d.ts.map +1 -0
- package/dist/chains/radial.js +52 -0
- package/dist/chains/radial.js.map +1 -0
- package/dist/chains/types.d.ts +240 -0
- package/dist/chains/types.d.ts.map +1 -0
- package/dist/chains/types.js +52 -0
- package/dist/chains/types.js.map +1 -0
- package/dist/components/ConformalPredictionTree.d.ts +79 -0
- package/dist/components/ConformalPredictionTree.d.ts.map +1 -0
- package/dist/components/ConformalPredictionTree.js +223 -0
- package/dist/components/ConformalPredictionTree.js.map +1 -0
- package/dist/components/DatasetResultCard.d.ts +33 -0
- package/dist/components/DatasetResultCard.d.ts.map +1 -0
- package/dist/components/DatasetResultCard.js +9 -0
- package/dist/components/DatasetResultCard.js.map +1 -0
- package/dist/components/PerClassTable.d.ts +27 -0
- package/dist/components/PerClassTable.d.ts.map +1 -0
- package/dist/components/PerClassTable.js +9 -0
- package/dist/components/PerClassTable.js.map +1 -0
- package/dist/components/PredictionCard.d.ts +27 -0
- package/dist/components/PredictionCard.d.ts.map +1 -0
- package/dist/components/PredictionCard.js +6 -0
- package/dist/components/PredictionCard.js.map +1 -0
- package/dist/components/RankingsTable.d.ts +28 -0
- package/dist/components/RankingsTable.d.ts.map +1 -0
- package/dist/components/RankingsTable.js +14 -0
- package/dist/components/RankingsTable.js.map +1 -0
- package/dist/components/ScoreCardTree.d.ts +31 -0
- package/dist/components/ScoreCardTree.d.ts.map +1 -0
- package/dist/components/ScoreCardTree.js +17 -0
- package/dist/components/ScoreCardTree.js.map +1 -0
- package/dist/components/index.d.ts +6 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +6 -0
- package/dist/components/index.js.map +1 -1
- package/dist/conformal/index.d.ts +2 -0
- package/dist/conformal/index.d.ts.map +1 -0
- package/dist/conformal/index.js +2 -0
- package/dist/conformal/index.js.map +1 -0
- package/dist/conformal/result.d.ts +224 -0
- package/dist/conformal/result.d.ts.map +1 -0
- package/dist/conformal/result.js +461 -0
- package/dist/conformal/result.js.map +1 -0
- package/dist/dag/DagGraphView.d.ts +35 -0
- package/dist/dag/DagGraphView.d.ts.map +1 -0
- package/dist/dag/DagGraphView.js +424 -0
- package/dist/dag/DagGraphView.js.map +1 -0
- package/dist/dag/_cx.d.ts +2 -0
- package/dist/dag/_cx.d.ts.map +1 -0
- package/dist/dag/_cx.js +8 -0
- package/dist/dag/_cx.js.map +1 -0
- package/dist/dag/collapse.d.ts +81 -0
- package/dist/dag/collapse.d.ts.map +1 -0
- package/dist/dag/collapse.js +210 -0
- package/dist/dag/collapse.js.map +1 -0
- package/dist/dag/colors.d.ts +19 -0
- package/dist/dag/colors.d.ts.map +1 -0
- package/dist/dag/colors.js +54 -0
- package/dist/dag/colors.js.map +1 -0
- package/dist/dag/fromCompiledGraph.d.ts +27 -0
- package/dist/dag/fromCompiledGraph.d.ts.map +1 -0
- package/dist/dag/fromCompiledGraph.js +133 -0
- package/dist/dag/fromCompiledGraph.js.map +1 -0
- package/dist/dag/hierarchy.d.ts +38 -0
- package/dist/dag/hierarchy.d.ts.map +1 -0
- package/dist/dag/hierarchy.js +75 -0
- package/dist/dag/hierarchy.js.map +1 -0
- package/dist/dag/index.d.ts +28 -0
- package/dist/dag/index.d.ts.map +1 -0
- package/dist/dag/index.js +33 -0
- package/dist/dag/index.js.map +1 -0
- package/dist/dag/layout.d.ts +57 -0
- package/dist/dag/layout.d.ts.map +1 -0
- package/dist/dag/layout.js +267 -0
- package/dist/dag/layout.js.map +1 -0
- package/dist/dag/locale.d.ts +31 -0
- package/dist/dag/locale.d.ts.map +1 -0
- package/dist/dag/locale.js +32 -0
- package/dist/dag/locale.js.map +1 -0
- package/dist/dag/shape.d.ts +48 -0
- package/dist/dag/shape.d.ts.map +1 -0
- package/dist/dag/shape.js +263 -0
- package/dist/dag/shape.js.map +1 -0
- package/dist/dag/types.d.ts +106 -0
- package/dist/dag/types.d.ts.map +1 -0
- package/dist/dag/types.js +56 -0
- package/dist/dag/types.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/keywordRegistry/index.d.ts +9 -0
- package/dist/keywordRegistry/index.d.ts.map +1 -0
- package/dist/keywordRegistry/index.js +9 -0
- package/dist/keywordRegistry/index.js.map +1 -0
- package/dist/keywordRegistry/registry.d.ts +107 -0
- package/dist/keywordRegistry/registry.d.ts.map +1 -0
- package/dist/keywordRegistry/registry.js +234 -0
- package/dist/keywordRegistry/registry.js.map +1 -0
- package/dist/robustness/index.d.ts +12 -0
- package/dist/robustness/index.d.ts.map +1 -0
- package/dist/robustness/index.js +12 -0
- package/dist/robustness/index.js.map +1 -0
- package/dist/robustness/modes.d.ts +15 -0
- package/dist/robustness/modes.d.ts.map +1 -0
- package/dist/robustness/modes.js +64 -0
- package/dist/robustness/modes.js.map +1 -0
- package/dist/robustness/scenarios.d.ts +38 -0
- package/dist/robustness/scenarios.d.ts.map +1 -0
- package/dist/robustness/scenarios.js +159 -0
- package/dist/robustness/scenarios.js.map +1 -0
- package/dist/robustness/summary.d.ts +135 -0
- package/dist/robustness/summary.d.ts.map +1 -0
- package/dist/robustness/summary.js +284 -0
- package/dist/robustness/summary.js.map +1 -0
- package/dist/styles/index.d.ts +19 -1
- package/dist/styles/index.d.ts.map +1 -1
- package/dist/styles/index.js +21 -0
- package/dist/styles/index.js.map +1 -1
- package/dist/tuning/index.d.ts +3 -0
- package/dist/tuning/index.d.ts.map +1 -0
- package/dist/tuning/index.js +3 -0
- package/dist/tuning/index.js.map +1 -0
- package/dist/tuning/result.d.ts +144 -0
- package/dist/tuning/result.d.ts.map +1 -0
- package/dist/tuning/result.js +277 -0
- package/dist/tuning/result.js.map +1 -0
- package/dist/tuning/searchSpace.d.ts +54 -0
- package/dist/tuning/searchSpace.d.ts.map +1 -0
- package/dist/tuning/searchSpace.js +118 -0
- package/dist/tuning/searchSpace.js.map +1 -0
- package/dist/viz/BiasVarianceBars.d.ts +27 -0
- package/dist/viz/BiasVarianceBars.d.ts.map +1 -0
- package/dist/viz/BiasVarianceBars.js +53 -0
- package/dist/viz/BiasVarianceBars.js.map +1 -0
- package/dist/viz/BoxPlot.d.ts +24 -0
- package/dist/viz/BoxPlot.d.ts.map +1 -0
- package/dist/viz/BoxPlot.js +50 -0
- package/dist/viz/BoxPlot.js.map +1 -0
- package/dist/viz/ConformalIntervalStrip.d.ts +66 -0
- package/dist/viz/ConformalIntervalStrip.d.ts.map +1 -0
- package/dist/viz/ConformalIntervalStrip.js +167 -0
- package/dist/viz/ConformalIntervalStrip.js.map +1 -0
- package/dist/viz/ConfusionMatrix.d.ts +24 -0
- package/dist/viz/ConfusionMatrix.d.ts.map +1 -0
- package/dist/viz/ConfusionMatrix.js +39 -0
- package/dist/viz/ConfusionMatrix.js.map +1 -0
- package/dist/viz/FeatureImportanceBar.d.ts +26 -0
- package/dist/viz/FeatureImportanceBar.d.ts.map +1 -0
- package/dist/viz/FeatureImportanceBar.js +49 -0
- package/dist/viz/FeatureImportanceBar.js.map +1 -0
- package/dist/viz/FoldStabilityLines.d.ts +29 -0
- package/dist/viz/FoldStabilityLines.d.ts.map +1 -0
- package/dist/viz/FoldStabilityLines.js +57 -0
- package/dist/viz/FoldStabilityLines.js.map +1 -0
- package/dist/viz/Histogram.d.ts +33 -0
- package/dist/viz/Histogram.d.ts.map +1 -0
- package/dist/viz/Histogram.js +64 -0
- package/dist/viz/Histogram.js.map +1 -0
- package/dist/viz/PcaScatter.d.ts +36 -0
- package/dist/viz/PcaScatter.d.ts.map +1 -0
- package/dist/viz/PcaScatter.js +72 -0
- package/dist/viz/PcaScatter.js.map +1 -0
- package/dist/viz/PipelineFlow.d.ts +28 -0
- package/dist/viz/PipelineFlow.d.ts.map +1 -0
- package/dist/viz/PipelineFlow.js +57 -0
- package/dist/viz/PipelineFlow.js.map +1 -0
- package/dist/viz/PredictionScatter.d.ts +41 -0
- package/dist/viz/PredictionScatter.d.ts.map +1 -0
- package/dist/viz/PredictionScatter.js +41 -0
- package/dist/viz/PredictionScatter.js.map +1 -0
- package/dist/viz/ResidualPlot.d.ts +32 -0
- package/dist/viz/ResidualPlot.d.ts.map +1 -0
- package/dist/viz/ResidualPlot.js +58 -0
- package/dist/viz/ResidualPlot.js.map +1 -0
- package/dist/viz/ScoreHeatmap.d.ts +30 -0
- package/dist/viz/ScoreHeatmap.d.ts.map +1 -0
- package/dist/viz/ScoreHeatmap.js +61 -0
- package/dist/viz/ScoreHeatmap.js.map +1 -0
- package/dist/viz/ScoreSummary.d.ts +23 -0
- package/dist/viz/ScoreSummary.d.ts.map +1 -0
- package/dist/viz/ScoreSummary.js +32 -0
- package/dist/viz/ScoreSummary.js.map +1 -0
- package/dist/viz/ShapBeeswarm.d.ts +29 -0
- package/dist/viz/ShapBeeswarm.d.ts.map +1 -0
- package/dist/viz/ShapBeeswarm.js +60 -0
- package/dist/viz/ShapBeeswarm.js.map +1 -0
- package/dist/viz/SpectraPlot.d.ts +50 -0
- package/dist/viz/SpectraPlot.d.ts.map +1 -0
- package/dist/viz/SpectraPlot.js +46 -0
- package/dist/viz/SpectraPlot.js.map +1 -0
- package/dist/viz/WaterfallChart.d.ts +30 -0
- package/dist/viz/WaterfallChart.d.ts.map +1 -0
- package/dist/viz/WaterfallChart.js +73 -0
- package/dist/viz/WaterfallChart.js.map +1 -0
- package/dist/viz/_cx.d.ts +2 -0
- package/dist/viz/_cx.d.ts.map +1 -0
- package/dist/viz/_cx.js +8 -0
- package/dist/viz/_cx.js.map +1 -0
- package/dist/viz/geometry.d.ts +87 -0
- package/dist/viz/geometry.d.ts.map +1 -0
- package/dist/viz/geometry.js +208 -0
- package/dist/viz/geometry.js.map +1 -0
- package/dist/viz/index.d.ts +33 -0
- package/dist/viz/index.d.ts.map +1 -0
- package/dist/viz/index.js +38 -0
- package/dist/viz/index.js.map +1 -0
- package/dist/viz/theme.d.ts +50 -0
- package/dist/viz/theme.d.ts.map +1 -0
- package/dist/viz/theme.js +100 -0
- package/dist/viz/theme.js.map +1 -0
- package/package.json +34 -2
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState, } from "react";
|
|
3
|
+
import { clamp, round } from "../viz/geometry.js";
|
|
4
|
+
import { cx } from "./_cx.js";
|
|
5
|
+
import { categoryColor, DAG_CATEGORY_LABELS, DAG_EDGE_COLORS } from "./colors.js";
|
|
6
|
+
import { collapseAtDepth, computeEffectiveGraph, defaultCollapsed, } from "./collapse.js";
|
|
7
|
+
import { ancestorGroupIds, buildHierarchy } from "./hierarchy.js";
|
|
8
|
+
import { layoutDag } from "./layout.js";
|
|
9
|
+
import { resolveLabels } from "./locale.js";
|
|
10
|
+
import { GROUP_NODE_PREFIX } from "./collapse.js";
|
|
11
|
+
import { describeShapeDelta, formatShape, shapeChange, SHAPE_CHANGE_STYLE } from "./shape.js";
|
|
12
|
+
import { dagCategory } from "./types.js";
|
|
13
|
+
const MIN_K = 0.04;
|
|
14
|
+
const MAX_K = 2.4;
|
|
15
|
+
const CULL_MARGIN = 160;
|
|
16
|
+
function fitTransform(layout, width, height) {
|
|
17
|
+
if (width <= 0 || height <= 0 || layout.width <= 0 || layout.height <= 0)
|
|
18
|
+
return { x: 0, y: 0, k: 1 };
|
|
19
|
+
const pad = 44;
|
|
20
|
+
const k = clamp(Math.min((width - pad) / layout.width, (height - pad) / layout.height), MIN_K, 1.1);
|
|
21
|
+
return { x: (width - layout.width * k) / 2, y: (height - layout.height * k) / 2, k };
|
|
22
|
+
}
|
|
23
|
+
function worldViewport(t, width, height, margin) {
|
|
24
|
+
return {
|
|
25
|
+
x0: (-t.x - margin) / t.k,
|
|
26
|
+
y0: (-t.y - margin) / t.k,
|
|
27
|
+
x1: (width - t.x + margin) / t.k,
|
|
28
|
+
y1: (height - t.y + margin) / t.k,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
function nodeVisible(ln, v) {
|
|
32
|
+
return ln.x < v.x1 && ln.x + ln.w > v.x0 && ln.y < v.y1 && ln.y + ln.h > v.y0;
|
|
33
|
+
}
|
|
34
|
+
function edgeVisible(e, v) {
|
|
35
|
+
const minX = Math.min(e.sx, e.tx);
|
|
36
|
+
const maxX = Math.max(e.sx, e.tx);
|
|
37
|
+
const minY = Math.min(e.sy, e.ty);
|
|
38
|
+
const maxY = Math.max(e.sy, e.ty);
|
|
39
|
+
return minX < v.x1 && maxX > v.x0 && minY < v.y1 && maxY > v.y0;
|
|
40
|
+
}
|
|
41
|
+
function frameVisible(f, v) {
|
|
42
|
+
return f.x < v.x1 && f.x + f.w > v.x0 && f.y < v.y1 && f.y + f.h > v.y0;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Interactive viewer for a compiled DAG-ML graph of any size. Layered layout,
|
|
46
|
+
* pan / zoom, viewport culling and level-of-detail keep it responsive; the
|
|
47
|
+
* group hierarchy makes it readable at thousands of nodes by collapsing whole
|
|
48
|
+
* clusters into a single super-node. Presentational: local UI state only, no
|
|
49
|
+
* app state / IO / runtime execution.
|
|
50
|
+
*/
|
|
51
|
+
export function DagGraphView({ graph, width = 960, height = 620, direction: directionProp = "LR", initialCollapseDepth, title, className, colors, onSelectNode, showMinimap = true, showLegend = true, showInspector = true, showShapes = true, labels: labelsProp, }) {
|
|
52
|
+
const labels = resolveLabels(labelsProp);
|
|
53
|
+
const svgRef = useRef(null);
|
|
54
|
+
const drag = useRef(null);
|
|
55
|
+
const [direction, setDirection] = useState(directionProp);
|
|
56
|
+
const [shapesOn, setShapesOn] = useState(showShapes);
|
|
57
|
+
const hasShapes = useMemo(() => graph.nodes.some((n) => n.io != null), [graph.nodes]);
|
|
58
|
+
const hierarchy = useMemo(() => buildHierarchy(graph), [graph]);
|
|
59
|
+
const initial = useMemo(() => defaultCollapsed(hierarchy, graph.nodes.length, initialCollapseDepth !== undefined ? { depth: initialCollapseDepth } : {}), [hierarchy, graph.nodes.length, initialCollapseDepth]);
|
|
60
|
+
const [collapsed, setCollapsed] = useState(initial.collapsed);
|
|
61
|
+
const [depth, setDepth] = useState(initial.depth);
|
|
62
|
+
const [selected, setSelected] = useState(null);
|
|
63
|
+
const [hovered, setHovered] = useState(null);
|
|
64
|
+
const [query, setQuery] = useState("");
|
|
65
|
+
const [focusId, setFocusId] = useState(null);
|
|
66
|
+
const eff = useMemo(() => computeEffectiveGraph(graph, hierarchy, collapsed), [graph, hierarchy, collapsed]);
|
|
67
|
+
const layout = useMemo(() => layoutDag(eff, { direction, hierarchy }), [eff, direction, hierarchy]);
|
|
68
|
+
const [transform, setTransform] = useState(() => fitTransform(layout, width, height));
|
|
69
|
+
// keep the freshest layout / size available to imperative callbacks
|
|
70
|
+
const layoutRef = useRef(layout);
|
|
71
|
+
layoutRef.current = layout;
|
|
72
|
+
const sizeRef = useRef({ width, height });
|
|
73
|
+
sizeRef.current = { width, height };
|
|
74
|
+
const fit = useCallback(() => {
|
|
75
|
+
setTransform(fitTransform(layoutRef.current, sizeRef.current.width, sizeRef.current.height));
|
|
76
|
+
}, []);
|
|
77
|
+
// reset when the graph itself changes, and re-fit on graph / orientation change
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
setCollapsed(initial.collapsed);
|
|
80
|
+
setDepth(initial.depth);
|
|
81
|
+
setSelected(null);
|
|
82
|
+
onSelectNode?.(null);
|
|
83
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
84
|
+
}, [initial]);
|
|
85
|
+
useEffect(() => {
|
|
86
|
+
fit();
|
|
87
|
+
}, [initial, direction, fit]);
|
|
88
|
+
const zoomAt = useCallback((clientX, clientY, factor) => {
|
|
89
|
+
const svg = svgRef.current;
|
|
90
|
+
if (!svg)
|
|
91
|
+
return;
|
|
92
|
+
const rect = svg.getBoundingClientRect();
|
|
93
|
+
const px = clientX - rect.left;
|
|
94
|
+
const py = clientY - rect.top;
|
|
95
|
+
setTransform((t) => {
|
|
96
|
+
const k = clamp(t.k * factor, MIN_K, MAX_K);
|
|
97
|
+
const wx = (px - t.x) / t.k;
|
|
98
|
+
const wy = (py - t.y) / t.k;
|
|
99
|
+
return { k, x: px - wx * k, y: py - wy * k };
|
|
100
|
+
});
|
|
101
|
+
}, []);
|
|
102
|
+
// native, non-passive wheel listener so zoom doesn't scroll the page
|
|
103
|
+
useEffect(() => {
|
|
104
|
+
const svg = svgRef.current;
|
|
105
|
+
if (!svg)
|
|
106
|
+
return;
|
|
107
|
+
const onWheel = (e) => {
|
|
108
|
+
e.preventDefault();
|
|
109
|
+
zoomAt(e.clientX, e.clientY, Math.exp(-e.deltaY * 0.0015));
|
|
110
|
+
};
|
|
111
|
+
svg.addEventListener("wheel", onWheel, { passive: false });
|
|
112
|
+
return () => svg.removeEventListener("wheel", onWheel);
|
|
113
|
+
}, [zoomAt]);
|
|
114
|
+
const centerOn = useCallback((ln) => {
|
|
115
|
+
setTransform((t) => ({
|
|
116
|
+
k: t.k,
|
|
117
|
+
x: sizeRef.current.width / 2 - (ln.x + ln.w / 2) * t.k,
|
|
118
|
+
y: sizeRef.current.height / 2 - (ln.y + ln.h / 2) * t.k,
|
|
119
|
+
}));
|
|
120
|
+
}, []);
|
|
121
|
+
// once a focus target is laid out (after revealing it), center on it
|
|
122
|
+
useEffect(() => {
|
|
123
|
+
if (!focusId)
|
|
124
|
+
return;
|
|
125
|
+
const ln = layout.nodes.find((n) => n.node.id === focusId);
|
|
126
|
+
if (ln) {
|
|
127
|
+
centerOn(ln);
|
|
128
|
+
setFocusId(null);
|
|
129
|
+
}
|
|
130
|
+
}, [focusId, layout, centerOn]);
|
|
131
|
+
const expandGroup = useCallback((groupId) => {
|
|
132
|
+
setCollapsed((prev) => {
|
|
133
|
+
const next = new Set(prev);
|
|
134
|
+
next.delete(groupId);
|
|
135
|
+
for (const child of hierarchy.groups.get(groupId)?.children ?? [])
|
|
136
|
+
next.add(child);
|
|
137
|
+
return next;
|
|
138
|
+
});
|
|
139
|
+
}, [hierarchy]);
|
|
140
|
+
const collapseGroup = useCallback((groupId) => {
|
|
141
|
+
setCollapsed((prev) => {
|
|
142
|
+
const next = new Set(prev);
|
|
143
|
+
next.add(groupId);
|
|
144
|
+
const stack = [...(hierarchy.groups.get(groupId)?.children ?? [])];
|
|
145
|
+
while (stack.length) {
|
|
146
|
+
const child = stack.pop();
|
|
147
|
+
next.delete(child);
|
|
148
|
+
for (const grand of hierarchy.groups.get(child)?.children ?? [])
|
|
149
|
+
stack.push(grand);
|
|
150
|
+
}
|
|
151
|
+
return next;
|
|
152
|
+
});
|
|
153
|
+
}, [hierarchy]);
|
|
154
|
+
const revealNode = useCallback((nodeId) => {
|
|
155
|
+
const ancestors = ancestorGroupIds(hierarchy, nodeId);
|
|
156
|
+
if (ancestors.length === 0)
|
|
157
|
+
return;
|
|
158
|
+
setCollapsed((prev) => {
|
|
159
|
+
const next = new Set(prev);
|
|
160
|
+
for (const g of ancestors)
|
|
161
|
+
next.delete(g);
|
|
162
|
+
return next;
|
|
163
|
+
});
|
|
164
|
+
}, [hierarchy]);
|
|
165
|
+
const applyDepth = useCallback((next) => {
|
|
166
|
+
const clamped = clamp(next, 0, hierarchy.maxDepth + 1);
|
|
167
|
+
setDepth(clamped);
|
|
168
|
+
setCollapsed(collapseAtDepth(hierarchy, clamped));
|
|
169
|
+
}, [hierarchy]);
|
|
170
|
+
const submitSearch = useCallback(() => {
|
|
171
|
+
const q = query.trim().toLowerCase();
|
|
172
|
+
if (!q)
|
|
173
|
+
return;
|
|
174
|
+
const match = graph.nodes.find((n) => n.id.toLowerCase().includes(q) ||
|
|
175
|
+
(n.label ?? "").toLowerCase().includes(q) ||
|
|
176
|
+
(n.kind ?? "").toLowerCase().includes(q));
|
|
177
|
+
if (!match)
|
|
178
|
+
return;
|
|
179
|
+
revealNode(match.id);
|
|
180
|
+
setSelected(match.id);
|
|
181
|
+
onSelectNode?.(match.id);
|
|
182
|
+
setFocusId(match.id);
|
|
183
|
+
}, [query, graph.nodes, revealNode, onSelectNode]);
|
|
184
|
+
const zoomCenter = useCallback((factor) => {
|
|
185
|
+
const rect = svgRef.current?.getBoundingClientRect();
|
|
186
|
+
const cx0 = (rect?.left ?? 0) + sizeRef.current.width / 2;
|
|
187
|
+
const cy0 = (rect?.top ?? 0) + sizeRef.current.height / 2;
|
|
188
|
+
zoomAt(cx0, cy0, factor);
|
|
189
|
+
}, [zoomAt]);
|
|
190
|
+
// Resolve the interactive element under a screen point. Done via
|
|
191
|
+
// elementFromPoint (not the click target) because the stage sets pointer
|
|
192
|
+
// capture for panning, which retargets the browser `click` event to the
|
|
193
|
+
// <svg> itself — so a delegated onClick never sees the node.
|
|
194
|
+
const hitTarget = useCallback((clientX, clientY) => {
|
|
195
|
+
if (typeof document === "undefined")
|
|
196
|
+
return null;
|
|
197
|
+
return document.elementFromPoint(clientX, clientY)?.closest("[data-collapse-group],[data-node-id]") ?? null;
|
|
198
|
+
}, []);
|
|
199
|
+
const activate = useCallback((el) => {
|
|
200
|
+
if (!el) {
|
|
201
|
+
setSelected(null);
|
|
202
|
+
onSelectNode?.(null);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
const collapseId = el.getAttribute("data-collapse-group");
|
|
206
|
+
if (collapseId) {
|
|
207
|
+
collapseGroup(collapseId);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
const nodeId = el.getAttribute("data-node-id");
|
|
211
|
+
if (!nodeId)
|
|
212
|
+
return;
|
|
213
|
+
const groupId = el.getAttribute("data-group-id");
|
|
214
|
+
if (groupId) {
|
|
215
|
+
expandGroup(groupId);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
setSelected(nodeId);
|
|
219
|
+
onSelectNode?.(nodeId);
|
|
220
|
+
}
|
|
221
|
+
}, [collapseGroup, expandGroup, onSelectNode]);
|
|
222
|
+
const onContentOver = useCallback((e) => {
|
|
223
|
+
const el = e.target.closest("[data-node-id]");
|
|
224
|
+
setHovered(el ? el.getAttribute("data-node-id") : null);
|
|
225
|
+
}, []);
|
|
226
|
+
const onStagePointerDown = useCallback((e) => {
|
|
227
|
+
if (e.button !== 0)
|
|
228
|
+
return;
|
|
229
|
+
drag.current = { x: e.clientX, y: e.clientY, moved: false };
|
|
230
|
+
try {
|
|
231
|
+
e.currentTarget.setPointerCapture?.(e.pointerId);
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
/* no active pointer to capture (e.g. synthetic events) — panning still works */
|
|
235
|
+
}
|
|
236
|
+
}, []);
|
|
237
|
+
const onStagePointerMove = useCallback((e) => {
|
|
238
|
+
const d = drag.current;
|
|
239
|
+
if (!d)
|
|
240
|
+
return;
|
|
241
|
+
const dx = e.clientX - d.x;
|
|
242
|
+
const dy = e.clientY - d.y;
|
|
243
|
+
if (Math.abs(dx) + Math.abs(dy) > 3)
|
|
244
|
+
d.moved = true;
|
|
245
|
+
d.x = e.clientX;
|
|
246
|
+
d.y = e.clientY;
|
|
247
|
+
if (d.moved)
|
|
248
|
+
setTransform((t) => ({ ...t, x: t.x + dx, y: t.y + dy }));
|
|
249
|
+
}, []);
|
|
250
|
+
const onStagePointerUp = useCallback((e) => {
|
|
251
|
+
const d = drag.current;
|
|
252
|
+
drag.current = null;
|
|
253
|
+
try {
|
|
254
|
+
e.currentTarget.releasePointerCapture?.(e.pointerId);
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
/* pointer was never captured */
|
|
258
|
+
}
|
|
259
|
+
// A pan (moved) is never a click; a stationary press is a click — hit-test
|
|
260
|
+
// the real element under the pointer and expand/collapse/select it.
|
|
261
|
+
if (d && !d.moved)
|
|
262
|
+
activate(hitTarget(e.clientX, e.clientY));
|
|
263
|
+
}, [activate, hitTarget]);
|
|
264
|
+
// adjacency of the effective graph, for hover / selection emphasis
|
|
265
|
+
const incident = useMemo(() => {
|
|
266
|
+
const map = new Map();
|
|
267
|
+
const add = (node, edgeId) => {
|
|
268
|
+
const set = map.get(node) ?? new Set();
|
|
269
|
+
set.add(edgeId);
|
|
270
|
+
map.set(node, set);
|
|
271
|
+
};
|
|
272
|
+
for (const e of eff.edges) {
|
|
273
|
+
add(e.source, e.id);
|
|
274
|
+
add(e.target, e.id);
|
|
275
|
+
}
|
|
276
|
+
return map;
|
|
277
|
+
}, [eff.edges]);
|
|
278
|
+
const focusNode = hovered ?? selected;
|
|
279
|
+
const emphasizedEdges = useMemo(() => (focusNode ? incident.get(focusNode) ?? new Set() : null), [focusNode, incident]);
|
|
280
|
+
const neighborNodes = useMemo(() => {
|
|
281
|
+
if (!focusNode)
|
|
282
|
+
return null;
|
|
283
|
+
const set = new Set([focusNode]);
|
|
284
|
+
for (const e of eff.edges) {
|
|
285
|
+
if (e.source === focusNode)
|
|
286
|
+
set.add(e.target);
|
|
287
|
+
if (e.target === focusNode)
|
|
288
|
+
set.add(e.source);
|
|
289
|
+
}
|
|
290
|
+
return set;
|
|
291
|
+
}, [focusNode, eff.edges]);
|
|
292
|
+
const matches = useMemo(() => {
|
|
293
|
+
const q = query.trim().toLowerCase();
|
|
294
|
+
if (!q)
|
|
295
|
+
return null;
|
|
296
|
+
const set = new Set();
|
|
297
|
+
for (const ln of layout.nodes) {
|
|
298
|
+
const n = ln.node;
|
|
299
|
+
if (n.id.toLowerCase().includes(q) || n.label.toLowerCase().includes(q) || (n.kind ?? "").toLowerCase().includes(q)) {
|
|
300
|
+
set.add(n.id);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
return set;
|
|
304
|
+
}, [query, layout.nodes]);
|
|
305
|
+
const view = worldViewport(transform, width, height, CULL_MARGIN);
|
|
306
|
+
const visFrames = layout.frames.filter((f) => frameVisible(f, view));
|
|
307
|
+
const visEdges = layout.edges.filter((e) => edgeVisible(e, view));
|
|
308
|
+
const visNodes = layout.nodes.filter((ln) => nodeVisible(ln, view));
|
|
309
|
+
const screenNodeH = layout.nodeH * transform.k;
|
|
310
|
+
const lod = screenNodeH >= 26 ? 2 : screenNodeH >= 14 ? 1 : 0;
|
|
311
|
+
const presentCategories = useMemo(() => {
|
|
312
|
+
const set = new Set();
|
|
313
|
+
for (const n of eff.nodes)
|
|
314
|
+
set.add(n.category);
|
|
315
|
+
return [...set];
|
|
316
|
+
}, [eff.nodes]);
|
|
317
|
+
const selectedNode = useMemo(() => (selected ? graph.nodes.find((n) => n.id === selected) ?? null : null), [selected, graph.nodes]);
|
|
318
|
+
const contentTransform = `translate(${round(transform.x)} ${round(transform.y)}) scale(${transform.k.toFixed(4)})`;
|
|
319
|
+
const dim = matches !== null || neighborNodes !== null;
|
|
320
|
+
return (_jsxs("div", { className: cx("n4dag", className), style: { width, position: "relative" }, "data-direction": direction, role: "group", "aria-label": title ?? labels.title, children: [_jsxs("div", { className: "n4dag__toolbar", children: [_jsx("span", { className: "n4dag__title", children: title ?? graph.name ?? labels.title }), _jsxs("span", { className: "n4dag__counts", children: [eff.nodes.length, "/", graph.nodes.length, " ", labels.nodesVisible, " \u00B7 ", eff.edges.length, " ", labels.edges] }), _jsx("span", { className: "n4dag__spacer" }), _jsx("form", { className: "n4dag__search", onSubmit: (e) => {
|
|
321
|
+
e.preventDefault();
|
|
322
|
+
submitSearch();
|
|
323
|
+
}, children: _jsx("input", { className: "n4dag__search-input", type: "search", value: query, placeholder: labels.search, "aria-label": labels.search, onChange: (e) => setQuery(e.target.value) }) }), _jsxs("div", { className: "n4dag__group", role: "group", "aria-label": labels.depth, children: [_jsx("button", { className: "n4dag__btn", type: "button", onClick: () => applyDepth(depth - 1), "aria-label": `${labels.collapseAll} (−1)`, title: `${labels.depth} −`, children: "\u2212" }), _jsxs("span", { className: "n4dag__depth", "aria-live": "polite", children: [labels.depth, " ", Math.min(depth, hierarchy.maxDepth + 1)] }), _jsx("button", { className: "n4dag__btn", type: "button", onClick: () => applyDepth(depth + 1), "aria-label": `${labels.expandAll} (+1)`, title: `${labels.depth} +`, children: "+" })] }), _jsx("button", { className: "n4dag__btn n4dag__btn--text", type: "button", onClick: () => applyDepth(0), title: labels.collapseAll, children: labels.collapseAll }), _jsx("button", { className: "n4dag__btn n4dag__btn--text", type: "button", onClick: () => applyDepth(hierarchy.maxDepth + 1), title: labels.expandAll, children: labels.expandAll }), hasShapes ? (_jsx("button", { className: cx("n4dag__btn", "n4dag__btn--text", shapesOn && "n4dag__btn--on"), type: "button", "aria-pressed": shapesOn, onClick: () => setShapesOn((v) => !v), title: labels.shapes, children: labels.shapes })) : null, _jsx("button", { className: "n4dag__btn n4dag__btn--text", type: "button", onClick: () => setDirection((d) => (d === "LR" ? "TB" : "LR")), title: labels.direction, children: direction }), _jsxs("div", { className: "n4dag__group", role: "group", "aria-label": "zoom", children: [_jsx("button", { className: "n4dag__btn", type: "button", onClick: () => zoomCenter(1 / 1.25), "aria-label": labels.zoomOut, children: "\u2212" }), _jsx("button", { className: "n4dag__btn", type: "button", onClick: fit, title: labels.fit, "aria-label": labels.fit, children: "\u2922" }), _jsx("button", { className: "n4dag__btn", type: "button", onClick: () => zoomCenter(1.25), "aria-label": labels.zoomIn, children: "+" })] })] }), _jsxs("div", { className: "n4dag__stage", style: { height }, children: [_jsxs("svg", { ref: svgRef, className: "n4dag__canvas", width: width, height: height, viewBox: `0 0 ${width} ${height}`, role: "application", "aria-label": title ?? labels.title, onPointerDown: onStagePointerDown, onPointerMove: onStagePointerMove, onPointerUp: onStagePointerUp, children: [_jsx("defs", { children: _jsx("marker", { id: "n4dag-arrow", viewBox: "0 0 8 8", refX: "7", refY: "4", markerWidth: "6", markerHeight: "6", orient: "auto-start-reverse", children: _jsx("path", { d: "M0,0 L8,4 L0,8 z", className: "n4dag__arrowhead" }) }) }), layout.nodes.length === 0 ? (_jsx("text", { className: "n4dag__empty", x: width / 2, y: height / 2, textAnchor: "middle", children: labels.emptyGraph })) : null, _jsxs("g", { transform: contentTransform, onMouseOver: onContentOver, onMouseLeave: () => setHovered(null), children: [visFrames.map((f) => (_jsxs("g", { className: "n4dag__frame", "data-depth": f.depth, children: [_jsx("rect", { className: "n4dag__frame-box", x: f.x, y: f.y, width: f.w, height: f.h, rx: 12 }), _jsxs("g", { className: "n4dag__frame-header", "data-collapse-group": f.id, role: "button", tabIndex: -1, "aria-label": `${labels.collapseAll}: ${f.label}`, children: [_jsx("rect", { x: f.x, y: f.y, width: Math.min(f.w, Math.max(64, f.label.length * 7 + 26)), height: 18, rx: 9, className: "n4dag__frame-tab" }), _jsxs("text", { className: "n4dag__frame-label", x: f.x + 10, y: f.y + 13, children: ["\u2212 ", f.label] })] })] }, `f-${f.id}`))), _jsx("g", { className: "n4dag__edges", fill: "none", children: visEdges.map((e) => {
|
|
324
|
+
const emphasized = emphasizedEdges?.has(e.edge.id) ?? false;
|
|
325
|
+
const dimmed = dim && !emphasized;
|
|
326
|
+
return (_jsx("path", { className: cx("n4dag__edge", e.edge.oof && "n4dag__edge--oof", e.back && "n4dag__edge--back", emphasized && "n4dag__edge--on", dimmed && "n4dag__edge--dim"), d: e.path, stroke: edgeStroke(e.edge, emphasized), strokeWidth: emphasized ? 2.4 : e.edge.oof ? 1.8 : 1.3, markerEnd: lod === 2 ? "url(#n4dag-arrow)" : undefined }, `e-${e.edge.id}`));
|
|
327
|
+
}) }), shapesOn && lod === 2 ? (_jsx("g", { className: "n4dag__edge-shapes", children: visEdges.map((e) => e.edge.shape && e.edge.source.startsWith(GROUP_NODE_PREFIX) && !(dim && !(emphasizedEdges?.has(e.edge.id) ?? false)) ? (_jsx(EdgeShapeLabel, { mx: (e.sx + e.tx) / 2, my: (e.sy + e.ty) / 2, shape: e.edge.shape }, `es-${e.edge.id}`)) : null) })) : null, _jsx("g", { className: "n4dag__nodes", children: visNodes.map((ln) => (_jsx(NodeMark, { ln: ln, direction: direction, lod: lod, colors: colors, shapesOn: shapesOn, selected: selected === ln.node.id, hovered: hovered === ln.node.id, matched: matches?.has(ln.node.id) ?? false, dimmed: dim && !(neighborNodes?.has(ln.node.id) ?? false) && !(matches?.has(ln.node.id) ?? false), labels: labels }, `n-${ln.node.id}`))) })] })] }), showLegend && presentCategories.length > 0 ? (_jsx("div", { className: "n4dag__legend", "aria-label": labels.legend, children: presentCategories.map((c) => (_jsxs("span", { className: "n4dag__legend-item", children: [_jsx("span", { className: "n4dag__legend-swatch", style: { background: categoryColor(c, colors) } }), DAG_CATEGORY_LABELS[c]] }, c))) })) : null, showMinimap && layout.width > 0 ? (_jsx(Minimap, { layout: layout, transform: transform, width: width, height: height, colors: colors, onRecenter: setTransform })) : null, showInspector && selectedNode ? (_jsxs("aside", { className: "n4dag__inspector", "aria-label": selectedNode.label ?? selectedNode.id, children: [_jsx("button", { className: "n4dag__inspector-close", type: "button", onClick: () => {
|
|
328
|
+
setSelected(null);
|
|
329
|
+
onSelectNode?.(null);
|
|
330
|
+
}, "aria-label": labels.close, children: "\u00D7" }), _jsx(NodeInspector, { node: selectedNode, colors: colors, labels: labels })] })) : null] })] }));
|
|
331
|
+
}
|
|
332
|
+
function edgeStroke(edge, emphasized) {
|
|
333
|
+
if (emphasized && edge.kind)
|
|
334
|
+
return DAG_EDGE_COLORS[edge.kind];
|
|
335
|
+
if (edge.oof)
|
|
336
|
+
return DAG_EDGE_COLORS.prediction;
|
|
337
|
+
return "currentColor";
|
|
338
|
+
}
|
|
339
|
+
function EdgeShapeLabel({ mx, my, shape }) {
|
|
340
|
+
const text = formatShape(shape);
|
|
341
|
+
const wpx = text.length * 6.1 + 12;
|
|
342
|
+
return (_jsxs("g", { className: "n4dag__edge-shape", transform: `translate(${round(mx)} ${round(my)})`, children: [_jsx("rect", { className: "n4dag__edge-shape-bg", x: round(-wpx / 2), y: -8, width: round(wpx), height: 16, rx: 5 }), _jsx("text", { className: "n4dag__edge-shape-text", x: 0, y: 4, textAnchor: "middle", children: text })] }));
|
|
343
|
+
}
|
|
344
|
+
function NodeMark({ ln, direction, lod, colors, shapesOn, selected, hovered, matched, dimmed, labels }) {
|
|
345
|
+
const { node, x, y, w, h } = ln;
|
|
346
|
+
const color = categoryColor(node.category, colors);
|
|
347
|
+
const shape = !node.isGroup && shapesOn ? node.outShape : undefined;
|
|
348
|
+
const change = shape ? shapeChange(node.inShapes ?? [], shape) : "none";
|
|
349
|
+
const changeStyle = SHAPE_CHANGE_STYLE[change];
|
|
350
|
+
const hasSub = node.isGroup || !!node.detail || !!shape;
|
|
351
|
+
const active = selected || hovered || matched;
|
|
352
|
+
const dataAttrs = { "data-node-id": node.id };
|
|
353
|
+
if (node.isGroup && node.groupId)
|
|
354
|
+
dataAttrs["data-group-id"] = node.groupId;
|
|
355
|
+
if (lod === 0) {
|
|
356
|
+
return (_jsx("rect", { ...dataAttrs, className: cx("n4dag__node-lod", dimmed && "n4dag__node--dim"), x: x, y: y, width: w, height: h, rx: 3, fill: color, fillOpacity: matched ? 0.95 : 0.62, stroke: selected ? color : "none", strokeWidth: selected ? 3 : 0 }));
|
|
357
|
+
}
|
|
358
|
+
return (_jsxs("g", { ...dataAttrs, className: cx("n4dag__node", node.isGroup && "n4dag__node--group", selected && "n4dag__node--selected", hovered && "n4dag__node--hover", matched && "n4dag__node--match", dimmed && "n4dag__node--dim"), "data-category": node.category, role: "button", "aria-label": node.label, children: [node.isGroup ? (_jsxs(_Fragment, { children: [_jsx("rect", { x: x + 5, y: y + 5, width: w, height: h, rx: 9, className: "n4dag__node-stack", fill: color }), _jsx("rect", { x: x + 2.5, y: y + 2.5, width: w, height: h, rx: 9, className: "n4dag__node-stack", fill: color })] })) : null, _jsx("rect", { className: "n4dag__node-card", x: x, y: y, width: w, height: h, rx: 9, fill: `color-mix(in srgb, ${color} ${node.isGroup ? 20 : 12}%, var(--n4dag-node-bg, #ffffff))`, stroke: color, strokeOpacity: active ? 1 : 0.7, strokeWidth: selected ? 2.2 : active ? 1.6 : 1 }), direction === "LR" ? (_jsx("rect", { className: "n4dag__node-accent", x: x, y: y + 8, width: 4, height: h - 16, rx: 2, fill: color })) : (_jsx("rect", { className: "n4dag__node-accent", x: x + 8, y: y, width: w - 16, height: 4, rx: 2, fill: color })), _jsx("text", { className: "n4dag__node-label", x: x + 14, y: hasSub ? y + h / 2 - 3 : y + h / 2 + 4, children: truncate(node.label, direction === "LR" ? 22 : 20) }), lod === 2 && node.isGroup ? (_jsxs("text", { className: "n4dag__node-sub", x: x + 14, y: y + h / 2 + 12, children: [node.childCount, " ", labels.contains] })) : null, lod === 2 && !node.isGroup && shape ? (_jsxs("text", { className: "n4dag__node-shape", x: x + 14, y: y + h / 2 + 12, fill: changeStyle.tone || undefined, children: [changeStyle.glyph ? `${changeStyle.glyph} ` : "", truncate(formatShape(shape), direction === "LR" ? 22 : 20)] })) : lod === 2 && !node.isGroup && node.detail ? (_jsx("text", { className: "n4dag__node-sub", x: x + 14, y: y + h / 2 + 12, children: truncate(node.detail, direction === "LR" ? 24 : 22) })) : null, node.isGroup ? (_jsx("text", { className: "n4dag__node-expand", x: x + w - 12, y: y + 16, textAnchor: "end", children: "+" })) : null, shape && change !== "none" ? (_jsx("circle", { className: "n4dag__node-port", cx: direction === "LR" ? x + w : x + w / 2, cy: direction === "LR" ? y + h / 2 : y + h, r: 3.5, fill: changeStyle.tone, children: _jsx("title", { children: formatShape(shape) }) })) : null, lod === 2 && node.status ? _jsx("circle", { className: "n4dag__node-status", "data-status": node.status, cx: x + w - 12, cy: y + 12, r: 4 }) : null, lod === 2 && node.variants != null && node.variants > 1 ? (_jsxs("text", { className: "n4dag__node-badge", x: x + w - 10, y: y + h - 8, textAnchor: "end", children: ["\u00D7", node.variants] })) : null] }));
|
|
359
|
+
}
|
|
360
|
+
function Minimap({ layout, transform, width, height, colors, onRecenter }) {
|
|
361
|
+
const boxW = 188;
|
|
362
|
+
const boxH = 128;
|
|
363
|
+
const scale = Math.min(boxW / layout.width, boxH / layout.height);
|
|
364
|
+
const mw = layout.width * scale;
|
|
365
|
+
const mh = layout.height * scale;
|
|
366
|
+
const view = worldViewport(transform, width, height, 0);
|
|
367
|
+
// node dots are static per layout — recompute only when the layout changes,
|
|
368
|
+
// not on every pan/zoom (which only moves the viewport rectangle)
|
|
369
|
+
const dots = useMemo(() => {
|
|
370
|
+
const step = Math.max(1, Math.ceil(layout.nodes.length / 900));
|
|
371
|
+
const out = [];
|
|
372
|
+
layout.nodes.forEach((ln, i) => {
|
|
373
|
+
if (i % step !== 0)
|
|
374
|
+
return;
|
|
375
|
+
out.push({
|
|
376
|
+
id: ln.node.id,
|
|
377
|
+
x: ln.x * scale,
|
|
378
|
+
y: ln.y * scale,
|
|
379
|
+
w: Math.max(1.5, ln.w * scale),
|
|
380
|
+
h: Math.max(1.5, ln.h * scale),
|
|
381
|
+
fill: categoryColor(ln.node.category, colors),
|
|
382
|
+
});
|
|
383
|
+
});
|
|
384
|
+
return out;
|
|
385
|
+
}, [layout, scale, colors]);
|
|
386
|
+
const recenter = (e) => {
|
|
387
|
+
const rect = e.currentTarget.getBoundingClientRect();
|
|
388
|
+
const wx = (e.clientX - rect.left) / scale;
|
|
389
|
+
const wy = (e.clientY - rect.top) / scale;
|
|
390
|
+
onRecenter((t) => ({ k: t.k, x: width / 2 - wx * t.k, y: height / 2 - wy * t.k }));
|
|
391
|
+
};
|
|
392
|
+
return (_jsxs("svg", { className: "n4dag__minimap", width: mw, height: mh, viewBox: `0 0 ${round(mw)} ${round(mh)}`, "aria-hidden": "true", onPointerDown: recenter, onPointerMove: (e) => {
|
|
393
|
+
if (e.buttons === 1)
|
|
394
|
+
recenter(e);
|
|
395
|
+
}, children: [_jsx("rect", { className: "n4dag__minimap-bg", x: 0, y: 0, width: mw, height: mh, rx: 4 }), dots.map((d) => (_jsx("rect", { x: d.x, y: d.y, width: d.w, height: d.h, fill: d.fill, fillOpacity: 0.75 }, d.id))), _jsx("rect", { className: "n4dag__minimap-view", x: round(clamp(view.x0 * scale, 0, mw)), y: round(clamp(view.y0 * scale, 0, mh)), width: round(clamp((view.x1 - view.x0) * scale, 0, mw)), height: round(clamp((view.y1 - view.y0) * scale, 0, mh)) })] }));
|
|
396
|
+
}
|
|
397
|
+
function ShapeRow({ tag, shape, out }) {
|
|
398
|
+
return (_jsxs("div", { className: cx("n4dag__io-row", out && "n4dag__io-row--out"), children: [_jsx("span", { className: "n4dag__io-tag", children: tag }), _jsx("span", { className: "n4dag__io-shape n4dag__mono", children: formatShape(shape) }), shape.representation && shape.representation !== "prediction" ? _jsx("span", { className: "n4dag__io-rep", children: shape.representation }) : null, shape.note ? _jsx("span", { className: "n4dag__io-note", children: shape.note }) : null, shape.sources && shape.sources.length > 1 ? (_jsx("span", { className: "n4dag__io-sources", children: shape.sources.map((s) => `${s.name} (${s.features ?? "?"})`).join(" · ") })) : null] }));
|
|
399
|
+
}
|
|
400
|
+
function NodeInspector({ node, colors, labels }) {
|
|
401
|
+
const color = categoryColor(dagCategory(node.kind), colors);
|
|
402
|
+
const metaEntries = node.meta ? Object.entries(node.meta).slice(0, 12) : [];
|
|
403
|
+
const io = node.io;
|
|
404
|
+
const inputs = io?.in ?? [];
|
|
405
|
+
const delta = io?.out ? describeShapeDelta(inputs, io.out) : null;
|
|
406
|
+
return (_jsxs("div", { className: "n4dag__inspector-body", children: [_jsxs("div", { className: "n4dag__inspector-head", children: [_jsx("span", { className: "n4dag__inspector-dot", style: { background: color } }), _jsx("span", { className: "n4dag__inspector-title", children: node.label ?? node.id })] }), io && (inputs.length > 0 || io.out) ? (_jsxs("div", { className: "n4dag__io", children: [_jsx("div", { className: "n4dag__io-title", children: labels.shape }), inputs.map((s, i) => (_jsx(ShapeRow, { tag: inputs.length > 1 ? `${labels.shapeIn} ${i + 1}` : labels.shapeIn, shape: s }, `in-${i}`))), io.out ? _jsx(ShapeRow, { tag: labels.shapeOut, shape: io.out, out: true }) : null, delta ? _jsx("div", { className: "n4dag__io-delta", children: delta }) : null] })) : null, _jsxs("dl", { className: "n4dag__inspector-dl", children: [_jsxs("div", { children: [_jsx("dt", { children: "id" }), _jsx("dd", { className: "n4dag__mono", children: node.id })] }), node.kind ? (_jsxs("div", { children: [_jsx("dt", { children: "kind" }), _jsx("dd", { children: node.kind })] })) : null, node.detail ? (_jsxs("div", { children: [_jsx("dt", { children: "detail" }), _jsx("dd", { children: node.detail })] })) : null, node.status ? (_jsxs("div", { children: [_jsx("dt", { children: "status" }), _jsx("dd", { children: node.status })] })) : null, node.metric != null ? (_jsxs("div", { children: [_jsx("dt", { children: "metric" }), _jsx("dd", { className: "n4dag__mono", children: node.metric })] })) : null, node.variants != null ? (_jsxs("div", { children: [_jsx("dt", { children: "variants" }), _jsx("dd", { className: "n4dag__mono", children: node.variants })] })) : null, metaEntries.map(([k, v]) => (_jsxs("div", { children: [_jsx("dt", { children: k }), _jsx("dd", { className: "n4dag__mono", children: formatMeta(v) })] }, k)))] })] }));
|
|
407
|
+
}
|
|
408
|
+
function formatMeta(value) {
|
|
409
|
+
if (value === null)
|
|
410
|
+
return "null";
|
|
411
|
+
if (typeof value === "object") {
|
|
412
|
+
try {
|
|
413
|
+
return JSON.stringify(value);
|
|
414
|
+
}
|
|
415
|
+
catch {
|
|
416
|
+
return String(value);
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
return String(value);
|
|
420
|
+
}
|
|
421
|
+
function truncate(text, max) {
|
|
422
|
+
return text.length > max ? `${text.slice(0, max - 1)}…` : text;
|
|
423
|
+
}
|
|
424
|
+
//# sourceMappingURL=DagGraphView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DagGraphView.js","sourceRoot":"","sources":["../../src/dag/DagGraphView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_cx.d.ts","sourceRoot":"","sources":["../../src/dag/_cx.ts"],"names":[],"mappings":"AAGA,wBAAgB,EAAE,CAAC,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,GAAG,SAAS,CAGzF"}
|
package/dist/dag/_cx.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Internal class-name join helper for the `dag` domain (not exported from the
|
|
2
|
+
// package barrel). Mirrors the tiny helper used by the viz / lab / datasetBuilder
|
|
3
|
+
// domains so the graph view stays free of any external `clsx` dependency.
|
|
4
|
+
export function cx(...parts) {
|
|
5
|
+
const resolved = parts.filter((p) => typeof p === "string" && p.length > 0);
|
|
6
|
+
return resolved.length > 0 ? resolved.join(" ") : undefined;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=_cx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_cx.js","sourceRoot":"","sources":["../../src/dag/_cx.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,kFAAkF;AAClF,0EAA0E;AAC1E,MAAM,UAAU,EAAE,CAAC,GAAG,KAA+C;IACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzF,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Collapse a graph against a set of collapsed group ids → the *effective* graph
|
|
3
|
+
* actually drawn.
|
|
4
|
+
*
|
|
5
|
+
* Collapsing a cluster hides all of its leaf nodes and replaces them with a
|
|
6
|
+
* single super-node; every edge that crossed the cluster boundary is re-routed
|
|
7
|
+
* to that super-node, and edges fully inside a collapsed cluster disappear. This
|
|
8
|
+
* is what keeps a 6000-node graph readable: the effective graph shrinks to the
|
|
9
|
+
* clusters the user has chosen to open. Pure + testable — no layout, no React.
|
|
10
|
+
*/
|
|
11
|
+
import { type DagCategory, type DagEdgeKind, type DagGraph, type DagShape } from "./types.js";
|
|
12
|
+
import type { DagHierarchy } from "./hierarchy.js";
|
|
13
|
+
/** Prefix distinguishing a collapsed-group super-node id from a real node id. */
|
|
14
|
+
export declare const GROUP_NODE_PREFIX = "grp:";
|
|
15
|
+
export interface EffNode {
|
|
16
|
+
id: string;
|
|
17
|
+
isGroup: boolean;
|
|
18
|
+
category: DagCategory;
|
|
19
|
+
label: string;
|
|
20
|
+
detail?: string;
|
|
21
|
+
kind?: string;
|
|
22
|
+
status?: DagGraph["nodes"][number]["status"];
|
|
23
|
+
variants?: number;
|
|
24
|
+
metric?: number;
|
|
25
|
+
/** Innermost still-visible (expanded) group containing this node, or `null`. */
|
|
26
|
+
containerId: string | null;
|
|
27
|
+
/** Super-nodes only: number of leaf nodes hidden inside. */
|
|
28
|
+
childCount?: number;
|
|
29
|
+
/** Super-nodes only: the collapsed group id (drop `GROUP_NODE_PREFIX`). */
|
|
30
|
+
groupId?: string;
|
|
31
|
+
/** Real nodes only: dataset shape leaving this node. */
|
|
32
|
+
outShape?: DagShape;
|
|
33
|
+
/** Real nodes only: dataset shapes arriving at this node. */
|
|
34
|
+
inShapes?: readonly DagShape[];
|
|
35
|
+
}
|
|
36
|
+
export interface EffEdge {
|
|
37
|
+
id: string;
|
|
38
|
+
source: string;
|
|
39
|
+
target: string;
|
|
40
|
+
kind?: DagEdgeKind;
|
|
41
|
+
oof: boolean;
|
|
42
|
+
/** Number of underlying edges merged into this one. */
|
|
43
|
+
weight: number;
|
|
44
|
+
/** Shape flowing on the wire (the source node's output shape). */
|
|
45
|
+
shape?: DagShape;
|
|
46
|
+
}
|
|
47
|
+
export interface EffectiveGraph {
|
|
48
|
+
nodes: EffNode[];
|
|
49
|
+
edges: EffEdge[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Compute the effective (collapsed) graph. `collapsed` holds group ids from the
|
|
53
|
+
* {@link DagHierarchy}; an empty set returns the fully-expanded graph.
|
|
54
|
+
*/
|
|
55
|
+
export declare function computeEffectiveGraph(graph: DagGraph, hierarchy: DagHierarchy, collapsed: ReadonlySet<string>): EffectiveGraph;
|
|
56
|
+
/** Last `.`/`:`/`/` segment of an id — a readable fallback node label. */
|
|
57
|
+
export declare function shortLabel(id: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* Collapse every cluster at exactly `depth` (deeper ones are hidden inside them,
|
|
60
|
+
* so they need not be listed). `depth < 0` or `depth > maxDepth` → fully
|
|
61
|
+
* expanded. This is the primitive behind the depth stepper and expand/collapse
|
|
62
|
+
* all.
|
|
63
|
+
*/
|
|
64
|
+
export declare function collapseAtDepth(hierarchy: DagHierarchy, depth: number): Set<string>;
|
|
65
|
+
export interface DefaultCollapseOptions {
|
|
66
|
+
/** Force a specific collapse depth instead of auto-fitting. */
|
|
67
|
+
depth?: number;
|
|
68
|
+
/** Auto-fit target for the initial visible node count (default 160). */
|
|
69
|
+
targetVisible?: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Choose an initial collapse state. With an explicit `depth`, collapse to it.
|
|
73
|
+
* Otherwise pick the most-expanded depth whose visible node count still fits
|
|
74
|
+
* under `targetVisible` — so a small graph opens fully and a 6000-node graph
|
|
75
|
+
* opens as a handful of clusters.
|
|
76
|
+
*/
|
|
77
|
+
export declare function defaultCollapsed(hierarchy: DagHierarchy, totalNodes: number, options?: DefaultCollapseOptions): {
|
|
78
|
+
collapsed: Set<string>;
|
|
79
|
+
depth: number;
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=collapse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collapse.d.ts","sourceRoot":"","sources":["../../src/dag/collapse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3G,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,iFAAiF;AACjF,eAAO,MAAM,iBAAiB,SAAS,CAAC;AAExC,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gFAAgF;IAChF,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,OAAO,CAAC;IACb,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAqDD;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,YAAY,EACvB,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAC7B,cAAc,CAkFhB;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAOnF;AAED,MAAM,WAAW,sBAAsB;IACrC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,sBAA2B,GACnC;IAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAmC3C"}
|