matterviz 0.4.1 → 0.4.2
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/dist/EmptyState.svelte +10 -4
- package/dist/FilePicker.svelte +12 -14
- package/dist/Icon.svelte +7 -4
- package/dist/MillerIndexInput.svelte +2 -2
- package/dist/app.css +53 -0
- package/dist/brillouin/BrillouinZone.svelte +75 -85
- package/dist/brillouin/BrillouinZone.svelte.d.ts +5 -7
- package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
- package/dist/brillouin/BrillouinZoneExportPane.svelte +18 -14
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +6 -10
- package/dist/brillouin/BrillouinZoneScene.svelte +26 -39
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
- package/dist/chempot-diagram/ChemPotDiagram.svelte +33 -38
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +62 -74
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +1 -1
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +511 -547
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +1 -1
- package/dist/chempot-diagram/async-compute.svelte.js +1 -1
- package/dist/chempot-diagram/controls-state.svelte.js +1 -1
- package/dist/colors/index.d.ts +0 -4
- package/dist/colors/index.js +19 -20
- package/dist/composition/BarChart.svelte +37 -31
- package/dist/composition/BubbleChart.svelte +17 -17
- package/dist/composition/Composition.svelte +7 -11
- package/dist/composition/Formula.svelte +18 -25
- package/dist/composition/FormulaFilter.svelte +92 -95
- package/dist/composition/PieChart.svelte +55 -41
- package/dist/composition/format.js +1 -1
- package/dist/composition/index.d.ts +2 -0
- package/dist/composition/index.js +14 -0
- package/dist/composition/parse.d.ts +2 -2
- package/dist/composition/parse.js +11 -10
- package/dist/constants.js +11 -9
- package/dist/convex-hull/ConvexHull.svelte +12 -15
- package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull2D.svelte +93 -92
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull3D.svelte +109 -140
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull4D.svelte +75 -94
- package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHullChrome.svelte +36 -40
- package/dist/convex-hull/ConvexHullControls.svelte +46 -48
- package/dist/convex-hull/ConvexHullStats.svelte +193 -195
- package/dist/convex-hull/ConvexHullTooltip.svelte +5 -12
- package/dist/convex-hull/GasPressureControls.svelte +5 -12
- package/dist/convex-hull/StructurePopup.svelte +17 -21
- package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
- package/dist/convex-hull/TemperatureSlider.svelte +4 -10
- package/dist/convex-hull/canvas-interactions.svelte.js +2 -1
- package/dist/convex-hull/helpers.d.ts +8 -10
- package/dist/convex-hull/helpers.js +36 -36
- package/dist/convex-hull/hull-state.svelte.d.ts +1 -1
- package/dist/convex-hull/thermodynamics.js +18 -17
- package/dist/coordination/CoordinationBarPlot.svelte +38 -33
- package/dist/coordination/CoordinationBarPlot.svelte.d.ts +1 -1
- package/dist/coordination/calc-coordination.d.ts +1 -1
- package/dist/coordination/calc-coordination.js +28 -25
- package/dist/element/BohrAtom.svelte +5 -8
- package/dist/element/ElementHeading.svelte +4 -1
- package/dist/element/ElementPhoto.svelte +11 -9
- package/dist/element/ElementStats.svelte +12 -10
- package/dist/element/ElementTile.svelte +24 -29
- package/dist/element/Nucleus.svelte +4 -2
- package/dist/element/data.d.ts +1 -2
- package/dist/element/helpers.d.ts +4 -0
- package/dist/element/helpers.js +18 -0
- package/dist/element/index.d.ts +1 -4
- package/dist/element/index.js +3 -18
- package/dist/feedback/DragOverlay.svelte +5 -5
- package/dist/feedback/DragOverlay.svelte.d.ts +2 -2
- package/dist/feedback/StatusMessage.svelte +7 -4
- package/dist/fermi-surface/FermiSlice.svelte +21 -18
- package/dist/fermi-surface/FermiSurface.svelte +14 -22
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +5 -7
- package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
- package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceScene.svelte +37 -64
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
- package/dist/fermi-surface/compute.js +3 -3
- package/dist/fermi-surface/parse.js +22 -24
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +109 -148
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +2 -2
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +9 -7
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +1 -1
- package/dist/heatmap-matrix/index.d.ts +5 -0
- package/dist/icons.d.ts +4 -0
- package/dist/icons.js +4 -0
- package/dist/io/ExportPane.svelte +10 -6
- package/dist/io/decompress.d.ts +2 -1
- package/dist/io/decompress.js +22 -35
- package/dist/io/export.d.ts +4 -0
- package/dist/io/export.js +5 -1
- package/dist/io/fetch.d.ts +0 -3
- package/dist/io/fetch.js +0 -11
- package/dist/io/index.d.ts +0 -1
- package/dist/io/index.js +2 -9
- package/dist/io/is-binary.d.ts +9 -0
- package/dist/io/is-binary.js +45 -1
- package/dist/io/url-drop.js +13 -25
- package/dist/isosurface/Isosurface.svelte +17 -23
- package/dist/isosurface/IsosurfaceControls.svelte +37 -42
- package/dist/isosurface/parse-vaspwave.d.ts +3 -0
- package/dist/isosurface/parse-vaspwave.js +138 -0
- package/dist/isosurface/parse.js +6 -6
- package/dist/labels.d.ts +6 -2
- package/dist/labels.js +43 -13
- package/dist/layout/FullscreenButton.svelte +2 -1
- package/dist/layout/FullscreenToggle.svelte +10 -4
- package/dist/layout/InfoCard.svelte +7 -18
- package/dist/layout/InfoTag.svelte +1 -3
- package/dist/layout/NumberRangeInput.svelte +46 -0
- package/dist/layout/NumberRangeInput.svelte.d.ts +12 -0
- package/dist/layout/PropertyFilter.svelte +2 -6
- package/dist/layout/SettingsSection.svelte +21 -17
- package/dist/layout/SubpageGrid.svelte +3 -1
- package/dist/layout/ViewerChrome.svelte +9 -10
- package/dist/layout/ViewerChrome.svelte.d.ts +2 -1
- package/dist/layout/fullscreen.js +3 -5
- package/dist/layout/fullscreen.svelte.js +1 -2
- package/dist/layout/index.d.ts +1 -0
- package/dist/layout/index.js +1 -0
- package/dist/layout/json-tree/JsonNode.svelte +8 -11
- package/dist/layout/json-tree/JsonTree.svelte +53 -77
- package/dist/layout/json-tree/JsonValue.svelte +7 -15
- package/dist/layout/json-tree/utils.js +14 -23
- package/dist/math.d.ts +2 -0
- package/dist/math.js +19 -0
- package/dist/overlays/ContextMenu.svelte +4 -2
- package/dist/overlays/CopyButton.svelte +11 -5
- package/dist/overlays/DragControlTab.svelte +6 -1
- package/dist/overlays/DraggablePane.svelte +81 -26
- package/dist/overlays/DraggablePane.svelte.d.ts +1 -0
- package/dist/overlays/GlassChip.svelte +30 -0
- package/dist/overlays/GlassChip.svelte.d.ts +8 -0
- package/dist/overlays/InfoPaneCards.svelte +11 -23
- package/dist/overlays/index.d.ts +7 -0
- package/dist/overlays/index.js +26 -0
- package/dist/overlays/portal.d.ts +2 -0
- package/dist/overlays/portal.js +14 -0
- package/dist/periodic-table/PeriodicTable.svelte +113 -145
- package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
- package/dist/periodic-table/PeriodicTableControls.svelte +11 -63
- package/dist/periodic-table/TableInset.svelte +9 -4
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +50 -71
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
- package/dist/phase-diagram/PhaseDiagramControls.svelte +70 -94
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +1 -1
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +2 -1
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +12 -12
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
- package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
- package/dist/phase-diagram/build-diagram.js +3 -3
- package/dist/phase-diagram/diagram-input.d.ts +1 -2
- package/dist/phase-diagram/parse.js +15 -15
- package/dist/phase-diagram/svg-to-diagram.js +21 -15
- package/dist/phase-diagram/utils.js +2 -3
- package/dist/plot/bar/BarPlot.svelte +430 -391
- package/dist/plot/bar/BarPlot.svelte.d.ts +2 -0
- package/dist/plot/bar/BarPlotControls.svelte +1 -3
- package/dist/plot/bar/BarPlotControls.svelte.d.ts +4 -6
- package/dist/plot/bar/SpacegroupBarPlot.svelte +29 -36
- package/dist/plot/bar/data.d.ts +5 -4
- package/dist/plot/bar/data.js +2 -1
- package/dist/plot/box/BoxPlot.svelte +301 -209
- package/dist/plot/box/BoxPlot.svelte.d.ts +2 -0
- package/dist/plot/box/Violin.svelte.d.ts +1 -0
- package/dist/plot/box/box-plot.js +1 -1
- package/dist/plot/core/auto-place.js +1 -1
- package/dist/plot/core/axis-utils.d.ts +12 -7
- package/dist/plot/core/axis-utils.js +48 -48
- package/dist/plot/core/components/AxisLabel.svelte +82 -20
- package/dist/plot/core/components/AxisLabel.svelte.d.ts +1 -0
- package/dist/plot/core/components/ColorBar.svelte +101 -106
- package/dist/plot/core/components/ColorScaleSelect.svelte +1 -1
- package/dist/plot/core/components/FillArea.svelte +10 -17
- package/dist/plot/core/components/HierarchyControls.svelte +249 -0
- package/dist/plot/{sunburst/SunburstControls.svelte.d.ts → core/components/HierarchyControls.svelte.d.ts} +12 -8
- package/dist/plot/core/components/InteractiveAxisLabel.svelte +1 -1
- package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +1 -1
- package/dist/plot/core/components/Line.svelte +18 -9
- package/dist/plot/core/components/Line.svelte.d.ts +2 -0
- package/dist/plot/core/components/PlotAxis.svelte +40 -17
- package/dist/plot/core/components/PlotControls.svelte +65 -41
- package/dist/plot/core/components/PlotLegend.svelte +31 -35
- package/dist/plot/core/components/PlotMarginals.svelte +616 -0
- package/dist/plot/core/components/PlotMarginals.svelte.d.ts +15 -0
- package/dist/plot/core/components/PlotTooltip.svelte +1 -1
- package/dist/plot/core/components/PortalSelect.svelte +4 -8
- package/dist/plot/core/components/ReferenceLine.svelte +27 -24
- package/dist/plot/core/components/ReferenceLine3D.svelte +54 -57
- package/dist/plot/core/components/ReferencePlane.svelte +7 -8
- package/dist/plot/core/components/ZeroLines.svelte +4 -8
- package/dist/plot/core/components/ZoomRect.svelte +1 -2
- package/dist/plot/core/components/index.d.ts +1 -0
- package/dist/plot/core/components/index.js +1 -0
- package/dist/plot/core/data-cleaning-signal.d.ts +46 -0
- package/dist/plot/core/data-cleaning-signal.js +467 -0
- package/dist/plot/core/data-cleaning.d.ts +2 -42
- package/dist/plot/core/data-cleaning.js +27 -474
- package/dist/plot/core/data-transform.js +9 -5
- package/dist/plot/core/fill-utils.d.ts +3 -1
- package/dist/plot/core/fill-utils.js +28 -6
- package/dist/plot/core/index.d.ts +1 -0
- package/dist/plot/core/index.js +1 -0
- package/dist/plot/core/interactions.js +0 -2
- package/dist/plot/core/layout.d.ts +3 -1
- package/dist/plot/core/layout.js +22 -13
- package/dist/plot/core/marginals.d.ts +170 -0
- package/dist/plot/core/marginals.js +436 -0
- package/dist/plot/core/reference-line.js +1 -1
- package/dist/plot/core/scales.d.ts +23 -0
- package/dist/plot/core/scales.js +39 -13
- package/dist/plot/core/types/fills.d.ts +101 -0
- package/dist/plot/core/types/fills.js +15 -0
- package/dist/plot/core/types/plot-3d.d.ts +87 -0
- package/dist/plot/core/types/plot-3d.js +4 -0
- package/dist/plot/core/types/reference-lines.d.ts +140 -0
- package/dist/plot/core/types/reference-lines.js +9 -0
- package/dist/plot/core/types.d.ts +29 -324
- package/dist/plot/core/types.js +23 -20
- package/dist/plot/core/utils/hierarchy-chart.d.ts +51 -0
- package/dist/plot/core/utils/hierarchy-chart.js +179 -0
- package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
- package/dist/plot/core/utils/hierarchy-labels.js +99 -0
- package/dist/plot/core/utils/label-placement.js +2 -2
- package/dist/plot/histogram/Histogram.svelte +304 -325
- package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
- package/dist/plot/histogram/HistogramControls.svelte +30 -28
- package/dist/plot/histogram/histogram.d.ts +31 -0
- package/dist/plot/histogram/histogram.js +70 -0
- package/dist/plot/histogram/index.d.ts +1 -0
- package/dist/plot/histogram/index.js +1 -0
- package/dist/plot/index.d.ts +1 -0
- package/dist/plot/index.js +1 -0
- package/dist/plot/sankey/Sankey.svelte +78 -69
- package/dist/plot/sankey/Sankey.svelte.d.ts +2 -2
- package/dist/plot/sankey/SankeyControls.svelte +22 -16
- package/dist/plot/scatter/BinnedScatterPlot.svelte +263 -109
- package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +7 -0
- package/dist/plot/scatter/ElementScatter.svelte +4 -1
- package/dist/plot/scatter/ScatterPlot.svelte +477 -385
- package/dist/plot/scatter/ScatterPlot.svelte.d.ts +2 -0
- package/dist/plot/scatter/ScatterPlotControls.svelte +18 -19
- package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
- package/dist/plot/scatter/ScatterPoint.svelte +16 -9
- package/dist/plot/scatter/binned-scatter-types.d.ts +3 -2
- package/dist/plot/scatter/binned-scatter-types.js +6 -1
- package/dist/plot/scatter/scatter-data.d.ts +1 -1
- package/dist/plot/scatter/scatter-data.js +8 -7
- package/dist/plot/scatter-3d/ScatterPlot3D.svelte +25 -34
- package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +2 -2
- package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +8 -5
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +113 -116
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +2 -2
- package/dist/plot/scatter-3d/Surface3D.svelte +4 -13
- package/dist/plot/sunburst/Sunburst.svelte +251 -329
- package/dist/plot/sunburst/Sunburst.svelte.d.ts +2 -2
- package/dist/plot/sunburst/index.d.ts +1 -1
- package/dist/plot/sunburst/index.js +2 -1
- package/dist/plot/sunburst/render.d.ts +2 -2
- package/dist/plot/sunburst/render.js +47 -22
- package/dist/plot/sunburst/sunburst.d.ts +5 -1
- package/dist/plot/sunburst/sunburst.js +10 -3
- package/dist/plot/treemap/Treemap.svelte +907 -0
- package/dist/plot/treemap/Treemap.svelte.d.ts +84 -0
- package/dist/plot/treemap/index.d.ts +3 -0
- package/dist/plot/treemap/index.js +4 -0
- package/dist/plot/treemap/treemap.d.ts +26 -0
- package/dist/plot/treemap/treemap.js +99 -0
- package/dist/rdf/RdfPlot.svelte +22 -26
- package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
- package/dist/rdf/calc-rdf.js +4 -8
- package/dist/sanitize.js +1 -1
- package/dist/scene/bind-renderer.svelte.js +14 -6
- package/dist/settings.d.ts +19 -9
- package/dist/settings.js +77 -50
- package/dist/spectral/Bands.svelte +223 -230
- package/dist/spectral/BandsAndDos.svelte +11 -9
- package/dist/spectral/BrillouinBandsDos.svelte +19 -27
- package/dist/spectral/Dos.svelte +70 -73
- package/dist/spectral/helpers.d.ts +3 -3
- package/dist/spectral/helpers.js +25 -35
- package/dist/state.svelte.js +5 -18
- package/dist/structure/Arrow.svelte +5 -18
- package/dist/structure/ArrowInstances.svelte +160 -0
- package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
- package/dist/structure/AtomLegend.svelte +115 -75
- package/dist/structure/AtomLegend.svelte.d.ts +1 -1
- package/dist/structure/Bond.svelte +31 -23
- package/dist/structure/CanvasTooltip.svelte +15 -3
- package/dist/structure/CellSelect.svelte +11 -26
- package/dist/structure/Cylinder.svelte +24 -40
- package/dist/structure/InstancedAtoms.svelte +114 -0
- package/dist/structure/InstancedAtoms.svelte.d.ts +15 -0
- package/dist/structure/Lattice.svelte +85 -149
- package/dist/structure/SiteLabels.svelte +122 -0
- package/dist/structure/SiteLabels.svelte.d.ts +18 -0
- package/dist/structure/Structure.svelte +473 -419
- package/dist/structure/Structure.svelte.d.ts +4 -2
- package/dist/structure/StructureCarousel.svelte +630 -0
- package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
- package/dist/structure/StructureControls.svelte +157 -399
- package/dist/structure/StructureControls.svelte.d.ts +1 -1
- package/dist/structure/StructureExportPane.svelte +17 -21
- package/dist/structure/StructureInfoPane.svelte +72 -66
- package/dist/structure/StructureInfoPane.svelte.d.ts +1 -1
- package/dist/structure/StructureScene.svelte +467 -476
- package/dist/structure/StructureScene.svelte.d.ts +3 -1
- package/dist/structure/StructureViewport.svelte +386 -0
- package/dist/structure/StructureViewport.svelte.d.ts +63 -0
- package/dist/structure/atom-label-placement.d.ts +16 -12
- package/dist/structure/atom-label-placement.js +70 -37
- package/dist/structure/atom-properties.d.ts +2 -0
- package/dist/structure/atom-properties.js +104 -38
- package/dist/structure/bonding.d.ts +10 -3
- package/dist/structure/bonding.js +84 -28
- package/dist/structure/edit-history.d.ts +6 -0
- package/dist/structure/edit-history.js +27 -0
- package/dist/structure/export.d.ts +1 -0
- package/dist/structure/export.js +39 -31
- package/dist/structure/format-detect.d.ts +1 -0
- package/dist/structure/format-detect.js +22 -0
- package/dist/structure/geometry.d.ts +9 -0
- package/dist/structure/geometry.js +27 -0
- package/dist/structure/index.d.ts +16 -1
- package/dist/structure/index.js +13 -2
- package/dist/structure/measure.d.ts +1 -1
- package/dist/structure/measure.js +6 -12
- package/dist/structure/parse.d.ts +2 -1
- package/dist/structure/parse.js +243 -222
- package/dist/structure/partial-occupancy.js +4 -2
- package/dist/structure/pbc.js +78 -98
- package/dist/structure/polyhedra.d.ts +0 -1
- package/dist/structure/polyhedra.js +3 -18
- package/dist/structure/supercell.d.ts +1 -2
- package/dist/structure/supercell.js +7 -13
- package/dist/symmetry/SymmetryElements.svelte +11 -15
- package/dist/symmetry/SymmetryStats.svelte +56 -68
- package/dist/symmetry/WyckoffTable.svelte +5 -24
- package/dist/symmetry/cell-transform.js +1 -0
- package/dist/symmetry/index.d.ts +1 -0
- package/dist/symmetry/index.js +8 -2
- package/dist/symmetry/spacegroups.js +3 -2
- package/dist/table/HeatmapTable.svelte +1102 -365
- package/dist/table/HeatmapTable.svelte.d.ts +12 -2
- package/dist/table/ToggleMenu.svelte +5 -12
- package/dist/table/index.d.ts +21 -6
- package/dist/table/index.js +34 -21
- package/dist/theme/ThemeControl.svelte +16 -8
- package/dist/theme/index.d.ts +1 -5
- package/dist/theme/index.js +4 -10
- package/dist/theme/themes.mjs +14 -7
- package/dist/tooltip/KCoords.svelte +4 -1
- package/dist/tooltip/TooltipContent.svelte +2 -5
- package/dist/trajectory/Trajectory.svelte +515 -308
- package/dist/trajectory/Trajectory.svelte.d.ts +1 -1
- package/dist/trajectory/TrajectoryError.svelte +11 -8
- package/dist/trajectory/TrajectoryExportPane.svelte +14 -31
- package/dist/trajectory/TrajectoryInfoPane.svelte +85 -97
- package/dist/trajectory/extract.js +56 -34
- package/dist/trajectory/format-detect.js +11 -9
- package/dist/trajectory/frame-reader.d.ts +2 -0
- package/dist/trajectory/frame-reader.js +33 -29
- package/dist/trajectory/helpers.d.ts +2 -0
- package/dist/trajectory/helpers.js +18 -7
- package/dist/trajectory/index.d.ts +1 -0
- package/dist/trajectory/index.js +3 -0
- package/dist/trajectory/parse/h5-utils.d.ts +13 -0
- package/dist/trajectory/parse/h5-utils.js +109 -0
- package/dist/trajectory/parse/hdf5.d.ts +1 -1
- package/dist/trajectory/parse/hdf5.js +116 -106
- package/dist/trajectory/parse/index.d.ts +2 -3
- package/dist/trajectory/parse/index.js +17 -20
- package/dist/trajectory/parse/lammps.js +8 -12
- package/dist/trajectory/parse/vasp.js +10 -7
- package/dist/trajectory/parse/vaspout-electronic.d.ts +13 -0
- package/dist/trajectory/parse/vaspout-electronic.js +207 -0
- package/dist/trajectory/parse/vaspout-h5.d.ts +5 -0
- package/dist/trajectory/parse/vaspout-h5.js +284 -0
- package/dist/trajectory/parse/xyz.js +11 -7
- package/dist/trajectory/plotting.d.ts +8 -9
- package/dist/trajectory/plotting.js +99 -27
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +7 -0
- package/dist/xrd/XrdPlot.svelte +47 -61
- package/dist/xrd/broadening.js +2 -1
- package/dist/xrd/calc-xrd.js +2 -4
- package/dist/xrd/parse.d.ts +0 -1
- package/dist/xrd/parse.js +56 -73
- package/package.json +61 -33
- package/dist/api/mp.d.ts +0 -6
- package/dist/api/mp.js +0 -22
- package/dist/plot/sunburst/SunburstControls.svelte +0 -200
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { AxisLoadError, BarStyle, DataLoaderFn, HistogramHandlerProps, PanConfig, RefLine, RefLineEvent } from '..';
|
|
2
|
+
import type { MarginalsProp } from '../core/marginals';
|
|
2
3
|
import type { BasePlotProps, DataSeries, LegendConfig, PlotConfig } from '../core/types';
|
|
3
4
|
import type { Snippet } from 'svelte';
|
|
4
5
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
@@ -11,13 +12,11 @@ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & BasePlotProps & PlotCon
|
|
|
11
12
|
selected_property?: string;
|
|
12
13
|
mode?: `single` | `overlay`;
|
|
13
14
|
tooltip?: Snippet<[HistogramHandlerProps]>;
|
|
14
|
-
header_controls?: Snippet<[
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
}
|
|
20
|
-
]>;
|
|
15
|
+
header_controls?: Snippet<[{
|
|
16
|
+
height: number;
|
|
17
|
+
width: number;
|
|
18
|
+
fullscreen: boolean;
|
|
19
|
+
}]>;
|
|
21
20
|
controls_extra?: Snippet<[Required<PlotConfig>]>;
|
|
22
21
|
change?: (data: {
|
|
23
22
|
value: number;
|
|
@@ -44,6 +43,7 @@ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & BasePlotProps & PlotCon
|
|
|
44
43
|
on_axis_change?: (axis: `x` | `x2` | `y` | `y2`, key: string, new_series: DataSeries[]) => void;
|
|
45
44
|
on_error?: (error: AxisLoadError) => void;
|
|
46
45
|
pan?: PanConfig;
|
|
46
|
+
marginals?: MarginalsProp;
|
|
47
47
|
};
|
|
48
48
|
declare const Histogram: import("svelte").Component<$$ComponentProps, {}, "mode" | "show_controls" | "fullscreen" | "series" | "bins" | "show_legend" | "selected_property" | "hovered" | "ref_lines" | "controls_open">;
|
|
49
49
|
type Histogram = ReturnType<typeof Histogram>;
|
|
@@ -74,20 +74,16 @@
|
|
|
74
74
|
}}
|
|
75
75
|
>
|
|
76
76
|
<div class="pane-row">
|
|
77
|
-
<label
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
min="5"
|
|
81
|
-
max="100"
|
|
82
|
-
step="5"
|
|
83
|
-
bind:value={bins}
|
|
84
|
-
/>
|
|
77
|
+
<label
|
|
78
|
+
>Bins:
|
|
79
|
+
<input type="range" min="5" max="100" step="5" bind:value={bins} />
|
|
85
80
|
</label>
|
|
86
81
|
<input type="number" min="5" max="100" step="5" bind:value={bins} />
|
|
87
82
|
</div>
|
|
88
83
|
{#if has_multiple_series}
|
|
89
84
|
<div class="pane-row">
|
|
90
|
-
<label
|
|
85
|
+
<label
|
|
86
|
+
>Mode:
|
|
91
87
|
<select bind:value={mode}>
|
|
92
88
|
<option value="single">Single</option>
|
|
93
89
|
<option value="overlay">Overlay</option>
|
|
@@ -96,7 +92,8 @@
|
|
|
96
92
|
</div>
|
|
97
93
|
{#if mode === `single`}
|
|
98
94
|
<div class="pane-row">
|
|
99
|
-
<label
|
|
95
|
+
<label
|
|
96
|
+
>Property:
|
|
100
97
|
<select bind:value={selected_property}>
|
|
101
98
|
<option value="">All</option>
|
|
102
99
|
{#each series_options as option (option)}
|
|
@@ -125,15 +122,18 @@
|
|
|
125
122
|
{#if visible_series.length === 1}
|
|
126
123
|
<label>Fill: <input type="color" bind:value={bar.color} /></label>
|
|
127
124
|
{/if}
|
|
128
|
-
<label
|
|
125
|
+
<label
|
|
126
|
+
>Opacity:
|
|
129
127
|
<input type="range" min="0" max="1" step="0.05" bind:value={bar.opacity} />
|
|
130
128
|
<input type="number" min="0" max="1" step="0.05" bind:value={bar.opacity} />
|
|
131
129
|
</label>
|
|
132
|
-
<label
|
|
130
|
+
<label
|
|
131
|
+
>Stroke Width:
|
|
133
132
|
<input type="range" min="0" max="5" step="0.1" bind:value={bar.stroke_width} />
|
|
134
133
|
<input type="number" min="0" max="5" step="0.1" bind:value={bar.stroke_width} />
|
|
135
134
|
</label>
|
|
136
|
-
<label
|
|
135
|
+
<label
|
|
136
|
+
>Stroke Color:
|
|
137
137
|
<input type="color" bind:value={bar.stroke_color} />
|
|
138
138
|
<input
|
|
139
139
|
type="range"
|
|
@@ -143,13 +143,7 @@
|
|
|
143
143
|
bind:value={bar.stroke_opacity}
|
|
144
144
|
title="Opacity"
|
|
145
145
|
/>
|
|
146
|
-
<input
|
|
147
|
-
type="number"
|
|
148
|
-
min="0"
|
|
149
|
-
max="1"
|
|
150
|
-
step="0.05"
|
|
151
|
-
bind:value={bar.stroke_opacity}
|
|
152
|
-
/>
|
|
146
|
+
<input type="number" min="0" max="1" step="0.05" bind:value={bar.stroke_opacity} />
|
|
153
147
|
</label>
|
|
154
148
|
{/if}
|
|
155
149
|
</SettingsSection>
|
|
@@ -188,25 +182,33 @@
|
|
|
188
182
|
class="pane-grid"
|
|
189
183
|
style="grid-template-columns: 1fr 1fr"
|
|
190
184
|
>
|
|
191
|
-
<label
|
|
185
|
+
<label
|
|
186
|
+
>X: <select bind:value={x_axis.scale_type}>
|
|
192
187
|
<option value="linear">Linear</option>
|
|
193
188
|
<option value="log">Log</option>
|
|
194
|
-
</select></label
|
|
189
|
+
</select></label
|
|
190
|
+
>
|
|
195
191
|
{#if has_x2_points}
|
|
196
|
-
<label
|
|
192
|
+
<label
|
|
193
|
+
>X2: <select bind:value={x2_axis.scale_type}>
|
|
197
194
|
<option value="linear">Linear</option>
|
|
198
195
|
<option value="log">Log</option>
|
|
199
|
-
</select></label
|
|
196
|
+
</select></label
|
|
197
|
+
>
|
|
200
198
|
{/if}
|
|
201
|
-
<label
|
|
199
|
+
<label
|
|
200
|
+
>Y: <select bind:value={y_axis.scale_type}>
|
|
202
201
|
<option value="linear">Linear</option>
|
|
203
202
|
<option value="log">Log</option>
|
|
204
|
-
</select></label
|
|
203
|
+
</select></label
|
|
204
|
+
>
|
|
205
205
|
{#if has_y2_points}
|
|
206
|
-
<label
|
|
206
|
+
<label
|
|
207
|
+
>Y2: <select bind:value={y2_axis.scale_type}>
|
|
207
208
|
<option value="linear">Linear</option>
|
|
208
209
|
<option value="log">Log</option>
|
|
209
|
-
</select></label
|
|
210
|
+
</select></label
|
|
211
|
+
>
|
|
210
212
|
{/if}
|
|
211
213
|
</SettingsSection>
|
|
212
214
|
</PlotControls>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Vec2 } from '../../math';
|
|
2
|
+
import type { AxisConfig, DataSeries, ScaleType } from '../core/types';
|
|
3
|
+
type RangeLimit = [number | null, number | null];
|
|
4
|
+
type BinConfig = {
|
|
5
|
+
x_domain: Vec2;
|
|
6
|
+
x2_domain: Vec2;
|
|
7
|
+
bin_count: number;
|
|
8
|
+
};
|
|
9
|
+
export declare function log_safe_range(axis: Pick<AxisConfig, `range` | `scale_type`>): RangeLimit;
|
|
10
|
+
export declare function compute_histogram_bins(entries: readonly {
|
|
11
|
+
series_data: DataSeries;
|
|
12
|
+
series_idx: number;
|
|
13
|
+
}[], { x_domain, x2_domain, has_x2, bin_count, series_color, }: BinConfig & {
|
|
14
|
+
has_x2: boolean;
|
|
15
|
+
series_color: (series_data: DataSeries) => string;
|
|
16
|
+
}): {
|
|
17
|
+
id: string | number;
|
|
18
|
+
series_idx: number;
|
|
19
|
+
label: string;
|
|
20
|
+
color: string;
|
|
21
|
+
bins: import("d3-array").Bin<number, number>[];
|
|
22
|
+
max_count: number;
|
|
23
|
+
x_axis: "x1" | "x2" | undefined;
|
|
24
|
+
y_axis: "y1" | "y2" | undefined;
|
|
25
|
+
}[];
|
|
26
|
+
export declare function compute_count_range(series_list: readonly DataSeries[], { x_domain, x2_domain, bin_count, scale_type, y_limit, range_padding, }: BinConfig & {
|
|
27
|
+
scale_type: ScaleType;
|
|
28
|
+
y_limit: RangeLimit;
|
|
29
|
+
range_padding: number;
|
|
30
|
+
}): Vec2;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Pure binning/range helpers extracted from Histogram.svelte (no reactivity, no pixel scales) so the numeric logic is unit-testable.
|
|
2
|
+
import { bin, max } from 'd3-array';
|
|
3
|
+
import { get_nice_data_range } from '../core/scales';
|
|
4
|
+
import { get_scale_type_name } from '../core/types';
|
|
5
|
+
// On a log axis any bound <= 0 is invalid, so treat it as unset (null): callers then fall back to
|
|
6
|
+
// the positive count-based bound rather than pinning the log domain at <= 0 (a broken scale).
|
|
7
|
+
export function log_safe_range(axis) {
|
|
8
|
+
const [lo, hi] = axis.range ?? [null, null];
|
|
9
|
+
if (get_scale_type_name(axis.scale_type ?? `linear`) !== `log`)
|
|
10
|
+
return [lo, hi];
|
|
11
|
+
// drop any bound <= 0 (guard the type first: `null <= 0` is true in JS)
|
|
12
|
+
const drop_non_positive = (bound) => typeof bound === `number` && bound <= 0 ? null : bound;
|
|
13
|
+
return [drop_non_positive(lo), drop_non_positive(hi)];
|
|
14
|
+
}
|
|
15
|
+
// Bin each selected series over the domain of the x-axis it renders on (d3 bin() drops
|
|
16
|
+
// out-of-domain values). Pad-independent so the obstacle field can reuse it.
|
|
17
|
+
export function compute_histogram_bins(entries, { x_domain, x2_domain, has_x2, bin_count, series_color, }) {
|
|
18
|
+
const hist_generator = bin().domain([x_domain[0], x_domain[1]]).thresholds(bin_count);
|
|
19
|
+
const x2_hist_generator = has_x2
|
|
20
|
+
? bin().domain([x2_domain[0], x2_domain[1]]).thresholds(bin_count)
|
|
21
|
+
: null;
|
|
22
|
+
return entries.map(({ series_data, series_idx }) => {
|
|
23
|
+
const use_x2 = series_data.x_axis === `x2`;
|
|
24
|
+
const active_hist = use_x2 && x2_hist_generator ? x2_hist_generator : hist_generator;
|
|
25
|
+
const bins_arr = active_hist(series_data.y);
|
|
26
|
+
return {
|
|
27
|
+
id: series_data.id ?? series_idx,
|
|
28
|
+
series_idx,
|
|
29
|
+
label: series_data.label ?? `Series ${series_idx + 1}`,
|
|
30
|
+
color: series_color(series_data),
|
|
31
|
+
bins: bins_arr,
|
|
32
|
+
max_count: max(bins_arr, (data) => data.length) ?? 0,
|
|
33
|
+
x_axis: series_data.x_axis,
|
|
34
|
+
y_axis: series_data.y_axis,
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
// Compute a nice [min, max] count range for a set of series, binning each over its own x-domain.
|
|
39
|
+
// On log count axes the lower bound sits just below the smallest non-empty bin so singleton tail
|
|
40
|
+
// bins don't collapse to zero height; linear/arcsinh axes start from 0.
|
|
41
|
+
export function compute_count_range(series_list, { x_domain, x2_domain, bin_count, scale_type, y_limit, range_padding, }) {
|
|
42
|
+
const type_name = get_scale_type_name(scale_type);
|
|
43
|
+
// no-data fallback: a positive floor on log (counts can't be <= 0), else 0
|
|
44
|
+
const empty_range = [type_name === `log` ? 1 : 0, 1];
|
|
45
|
+
if (series_list.length === 0)
|
|
46
|
+
return empty_range;
|
|
47
|
+
const counts = series_list.flatMap((srs) => {
|
|
48
|
+
const hist = bin()
|
|
49
|
+
.domain(srs.x_axis === `x2` ? x2_domain : x_domain)
|
|
50
|
+
.thresholds(bin_count);
|
|
51
|
+
return hist(srs.y)
|
|
52
|
+
.map((data) => data.length)
|
|
53
|
+
.filter((count) => count > 0);
|
|
54
|
+
});
|
|
55
|
+
const max_count = Math.max(0, ...counts);
|
|
56
|
+
if (max_count <= 0)
|
|
57
|
+
return empty_range;
|
|
58
|
+
const min_count = type_name === `log` ? Math.min(...counts) : 0;
|
|
59
|
+
const [y0, y1] = get_nice_data_range([
|
|
60
|
+
{ x: min_count, y: 0 },
|
|
61
|
+
{ x: max_count, y: 0 },
|
|
62
|
+
], ({ x }) => x, y_limit, scale_type, range_padding, false);
|
|
63
|
+
// For log count axes, start just below the smallest non-empty bin so singleton tail bins
|
|
64
|
+
// don't collapse to zero height at the baseline. y_limit is pre-sanitized log-safe, so a null
|
|
65
|
+
// (incl. dropped non-positive) lower correctly falls back to the positive minimum.
|
|
66
|
+
if (type_name === `log`)
|
|
67
|
+
return [y_limit[0] ?? min_count / 1.1, y1];
|
|
68
|
+
// For linear/arcsinh, start from 0
|
|
69
|
+
return [Math.max(0, y0), y1];
|
|
70
|
+
}
|
package/dist/plot/index.d.ts
CHANGED
package/dist/plot/index.js
CHANGED
|
@@ -18,10 +18,14 @@
|
|
|
18
18
|
} from '..'
|
|
19
19
|
import { DEFAULT_SERIES_COLORS, PlotLegend, PlotTooltip, SankeyControls } from '..'
|
|
20
20
|
import { closest_data_idx } from '../core/interactions'
|
|
21
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
compute_element_placement,
|
|
23
|
+
constrain_tooltip_position,
|
|
24
|
+
filter_padding,
|
|
25
|
+
} from '../core/layout'
|
|
22
26
|
import type { Sides } from '../core/layout'
|
|
23
27
|
import { compute_sankey_layout } from './sankey'
|
|
24
|
-
import type { PositionedLink, PositionedNode} from './sankey'
|
|
28
|
+
import type { PositionedLink, PositionedNode } from './sankey'
|
|
25
29
|
import { unique_id } from '../core/utils'
|
|
26
30
|
import { DEFAULTS } from '../../settings'
|
|
27
31
|
import { type Snippet, untrack } from 'svelte'
|
|
@@ -64,47 +68,44 @@
|
|
|
64
68
|
header_controls,
|
|
65
69
|
controls_extra,
|
|
66
70
|
...rest
|
|
67
|
-
}: HTMLAttributes<HTMLDivElement> &
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
header_controls?: Snippet<[{ height: number; width: number; fullscreen: boolean }]>
|
|
106
|
-
controls_extra?: Snippet<[{ orientation: SankeyOrientation }]>
|
|
107
|
-
} = $props()
|
|
71
|
+
}: HTMLAttributes<HTMLDivElement> &
|
|
72
|
+
Omit<BasePlotProps, `change`> & {
|
|
73
|
+
data?: SankeyData<Metadata>
|
|
74
|
+
orientation?: SankeyOrientation
|
|
75
|
+
node_width?: number
|
|
76
|
+
node_padding?: number
|
|
77
|
+
node_align?: SankeyNodeAlign
|
|
78
|
+
iterations?: number
|
|
79
|
+
link_opacity?: number
|
|
80
|
+
link_color_mode?: SankeyLinkColorMode
|
|
81
|
+
show_node_labels?: boolean
|
|
82
|
+
node_label?: (node: PositionedNode) => string
|
|
83
|
+
value_format?: string
|
|
84
|
+
padding?: Sides
|
|
85
|
+
legend?: LegendConfig | null
|
|
86
|
+
show_legend?: boolean
|
|
87
|
+
tooltip?: Snippet<[SankeyHandlerProps<Metadata>]>
|
|
88
|
+
// Fully replace the default node rect / link ribbon. NOTE: this also replaces the
|
|
89
|
+
// built-in hover/focus/click + tooltip wiring, so re-implement any interactivity
|
|
90
|
+
// you need inside the snippet.
|
|
91
|
+
node_content?: Snippet<[{ node: PositionedNode; color: string }]>
|
|
92
|
+
link_content?: Snippet<[{ link: PositionedLink; color: string }]>
|
|
93
|
+
change?: (data: SankeyHandlerProps<Metadata> | null) => void
|
|
94
|
+
on_node_click?: (
|
|
95
|
+
data: SankeyNodeHandlerProps<Metadata> & { event: MouseEvent | KeyboardEvent },
|
|
96
|
+
) => void
|
|
97
|
+
on_node_hover?: (
|
|
98
|
+
data: (SankeyNodeHandlerProps<Metadata> & { event: MouseEvent | FocusEvent }) | null,
|
|
99
|
+
) => void
|
|
100
|
+
on_link_click?: (
|
|
101
|
+
data: SankeyLinkHandlerProps<Metadata> & { event: MouseEvent | KeyboardEvent },
|
|
102
|
+
) => void
|
|
103
|
+
on_link_hover?: (
|
|
104
|
+
data: (SankeyLinkHandlerProps<Metadata> & { event: MouseEvent | FocusEvent }) | null,
|
|
105
|
+
) => void
|
|
106
|
+
header_controls?: Snippet<[{ height: number; width: number; fullscreen: boolean }]>
|
|
107
|
+
controls_extra?: Snippet<[{ orientation: SankeyOrientation }]>
|
|
108
|
+
} = $props()
|
|
108
109
|
|
|
109
110
|
let [width, height] = $state([0, 0])
|
|
110
111
|
let wrapper: HTMLDivElement | undefined = $state()
|
|
@@ -126,8 +127,8 @@
|
|
|
126
127
|
|
|
127
128
|
// Resolved node colors (per node_idx), explicit color or cycled palette
|
|
128
129
|
let node_colors = $derived(
|
|
129
|
-
data.nodes.map(
|
|
130
|
-
node.color ?? DEFAULT_SERIES_COLORS[idx % DEFAULT_SERIES_COLORS.length]
|
|
130
|
+
data.nodes.map(
|
|
131
|
+
(node, idx) => node.color ?? DEFAULT_SERIES_COLORS[idx % DEFAULT_SERIES_COLORS.length],
|
|
131
132
|
),
|
|
132
133
|
)
|
|
133
134
|
|
|
@@ -160,9 +161,7 @@
|
|
|
160
161
|
})
|
|
161
162
|
|
|
162
163
|
// node_idx -> positioned node (array order is preserved by d3-sankey, but map is safer)
|
|
163
|
-
let node_by_idx = $derived(
|
|
164
|
-
new Map(layout.nodes.map((node) => [node.node_idx, node])),
|
|
165
|
-
)
|
|
164
|
+
let node_by_idx = $derived(new Map(layout.nodes.map((node) => [node.node_idx, node])))
|
|
166
165
|
|
|
167
166
|
const node_id_at = (node_idx: number): string | number =>
|
|
168
167
|
node_by_idx.get(node_idx)?.id ?? node_idx
|
|
@@ -220,7 +219,10 @@
|
|
|
220
219
|
|
|
221
220
|
const link_stroke_opacity = (link: PositionedLink): number => {
|
|
222
221
|
if (link_dim(link)) return link_opacity * 0.15
|
|
223
|
-
if (active)
|
|
222
|
+
if (active)
|
|
223
|
+
return active.links.has(link.link_idx)
|
|
224
|
+
? Math.min(1, link_opacity + 0.35)
|
|
225
|
+
: link_opacity * 0.25
|
|
224
226
|
return link_opacity
|
|
225
227
|
}
|
|
226
228
|
|
|
@@ -271,7 +273,8 @@
|
|
|
271
273
|
hover_info = make_node_props(node)
|
|
272
274
|
hover_pos = event_pos(event) ?? node_center(node)
|
|
273
275
|
change(hover_info)
|
|
274
|
-
if (event)
|
|
276
|
+
if (event)
|
|
277
|
+
on_node_hover?.({ ...(hover_info as SankeyNodeHandlerProps<Metadata>), event })
|
|
275
278
|
} else {
|
|
276
279
|
hovered_node = null
|
|
277
280
|
hover_info = null
|
|
@@ -288,7 +291,8 @@
|
|
|
288
291
|
hover_info = make_link_props(link)
|
|
289
292
|
hover_pos = event_pos(event) ?? { x: pad.l + link.mid.x, y: pad.t + link.mid.y }
|
|
290
293
|
change(hover_info)
|
|
291
|
-
if (event)
|
|
294
|
+
if (event)
|
|
295
|
+
on_link_hover?.({ ...(hover_info as SankeyLinkHandlerProps<Metadata>), event })
|
|
292
296
|
} else {
|
|
293
297
|
hovered_link = null
|
|
294
298
|
hover_info = null
|
|
@@ -299,12 +303,12 @@
|
|
|
299
303
|
|
|
300
304
|
const link_from_event = (event: Event): PositionedLink | null => {
|
|
301
305
|
const idx = closest_data_idx(event, `data-sankey-link-idx`, svg_element)
|
|
302
|
-
return idx == null ? null : layout.links[idx] ?? null
|
|
306
|
+
return idx == null ? null : (layout.links[idx] ?? null)
|
|
303
307
|
}
|
|
304
308
|
|
|
305
309
|
const node_from_event = (event: Event): PositionedNode | null => {
|
|
306
310
|
const idx = closest_data_idx(event, `data-sankey-node-idx`, svg_element)
|
|
307
|
-
return idx == null ? null : node_by_idx.get(idx) ?? null
|
|
311
|
+
return idx == null ? null : (node_by_idx.get(idx) ?? null)
|
|
308
312
|
}
|
|
309
313
|
|
|
310
314
|
function handle_link_hover_event(event: MouseEvent | FocusEvent) {
|
|
@@ -364,7 +368,7 @@
|
|
|
364
368
|
label: node.label ?? `${node.id ?? idx}`,
|
|
365
369
|
visible: !muted_nodes.has(node.id ?? idx),
|
|
366
370
|
display_style: { symbol_type: `Square` as const, symbol_color: node_colors[idx] },
|
|
367
|
-
}))
|
|
371
|
+
})),
|
|
368
372
|
)
|
|
369
373
|
|
|
370
374
|
function toggle_node(series_idx: number) {
|
|
@@ -409,7 +413,7 @@
|
|
|
409
413
|
bind:clientWidth={width}
|
|
410
414
|
bind:clientHeight={height}
|
|
411
415
|
{...rest}
|
|
412
|
-
class=
|
|
416
|
+
class={[`sankey`, rest.class]}
|
|
413
417
|
class:fullscreen
|
|
414
418
|
>
|
|
415
419
|
{#if width && height}
|
|
@@ -517,7 +521,9 @@
|
|
|
517
521
|
rx="1"
|
|
518
522
|
role={on_node_click ? `button` : undefined}
|
|
519
523
|
tabindex={on_node_click ? 0 : undefined}
|
|
520
|
-
aria-label={on_node_click
|
|
524
|
+
aria-label={on_node_click
|
|
525
|
+
? `${node.label ?? node.id}: ${node.value}`
|
|
526
|
+
: undefined}
|
|
521
527
|
style:cursor={on_node_click ? `pointer` : `default`}
|
|
522
528
|
/>
|
|
523
529
|
{/if}
|
|
@@ -528,8 +534,8 @@
|
|
|
528
534
|
x={lbl.x}
|
|
529
535
|
y={lbl.y}
|
|
530
536
|
text-anchor={lbl.anchor}
|
|
531
|
-
dominant-baseline={lbl.baseline}
|
|
532
|
-
>
|
|
537
|
+
dominant-baseline={lbl.baseline}>{node_text(node)}</text
|
|
538
|
+
>
|
|
533
539
|
{/if}
|
|
534
540
|
</g>
|
|
535
541
|
{/each}
|
|
@@ -550,9 +556,10 @@
|
|
|
550
556
|
)}
|
|
551
557
|
<!-- Solid chip bg (PlotTooltip auto-contrasts text). Links use the source node
|
|
552
558
|
color so gradient/static ribbons (url(...)/var(...)) still get a readable color. -->
|
|
553
|
-
{@const tip_bg =
|
|
554
|
-
|
|
555
|
-
|
|
559
|
+
{@const tip_bg =
|
|
560
|
+
hover_info.type === `node`
|
|
561
|
+
? hover_info.color
|
|
562
|
+
: (node_colors[hover_info.source_idx] ?? `rgba(0, 0, 0, 0.7)`)}
|
|
556
563
|
<PlotTooltip
|
|
557
564
|
x={tip.x}
|
|
558
565
|
y={tip.y}
|
|
@@ -563,13 +570,13 @@
|
|
|
563
570
|
{#if tooltip}
|
|
564
571
|
{@render tooltip(hover_info)}
|
|
565
572
|
{:else if hover_info.type === `node`}
|
|
566
|
-
<strong>{hover_info.label ?? hover_info.id}</strong>: {
|
|
567
|
-
|
|
568
|
-
|
|
573
|
+
<strong>{hover_info.label ?? hover_info.id}</strong>: {format_value(
|
|
574
|
+
hover_info.value,
|
|
575
|
+
value_format,
|
|
576
|
+
)}
|
|
569
577
|
{:else}
|
|
570
|
-
{hover_info.source_label ?? hover_info.source_idx} → {
|
|
571
|
-
hover_info.
|
|
572
|
-
}: {format_value(hover_info.value, value_format)}
|
|
578
|
+
{hover_info.source_label ?? hover_info.source_idx} → {hover_info.target_label ??
|
|
579
|
+
hover_info.target_idx}: {format_value(hover_info.value, value_format)}
|
|
573
580
|
{/if}
|
|
574
581
|
</PlotTooltip>
|
|
575
582
|
{/if}
|
|
@@ -583,7 +590,7 @@
|
|
|
583
590
|
series_data={legend_data}
|
|
584
591
|
on_toggle={legend?.on_toggle ?? toggle_node}
|
|
585
592
|
on_item_hover={(item) =>
|
|
586
|
-
|
|
593
|
+
(hovered_node = item != null && item.series_idx >= 0 ? item.series_idx : null)}
|
|
587
594
|
style={`position: absolute; left: ${legend_left}px; top: ${legend_top}px; pointer-events: auto; ${
|
|
588
595
|
legend?.style ?? ``
|
|
589
596
|
}`}
|
|
@@ -663,7 +670,9 @@
|
|
|
663
670
|
.sankey :global(.pane-toggle),
|
|
664
671
|
.sankey .header-controls {
|
|
665
672
|
opacity: 0;
|
|
666
|
-
transition:
|
|
673
|
+
transition:
|
|
674
|
+
opacity 0.2s,
|
|
675
|
+
background-color 0.2s;
|
|
667
676
|
}
|
|
668
677
|
.sankey:hover :global(.pane-toggle),
|
|
669
678
|
.sankey:hover .header-controls,
|
|
@@ -51,7 +51,7 @@ declare function $$render<Metadata extends Record<string, unknown> = Record<stri
|
|
|
51
51
|
}]>;
|
|
52
52
|
};
|
|
53
53
|
exports: {};
|
|
54
|
-
bindings: "
|
|
54
|
+
bindings: "orientation" | "show_controls" | "data" | "fullscreen" | "hovered" | "controls_open" | "node_align" | "node_width" | "node_padding" | "link_opacity" | "show_node_labels";
|
|
55
55
|
slots: {};
|
|
56
56
|
events: {};
|
|
57
57
|
};
|
|
@@ -59,7 +59,7 @@ declare class __sveltets_Render<Metadata extends Record<string, unknown> = Recor
|
|
|
59
59
|
props(): ReturnType<typeof $$render<Metadata>>['props'];
|
|
60
60
|
events(): ReturnType<typeof $$render<Metadata>>['events'];
|
|
61
61
|
slots(): ReturnType<typeof $$render<Metadata>>['slots'];
|
|
62
|
-
bindings(): "
|
|
62
|
+
bindings(): "orientation" | "show_controls" | "data" | "fullscreen" | "hovered" | "controls_open" | "node_align" | "node_width" | "node_padding" | "link_opacity" | "show_node_labels";
|
|
63
63
|
exports(): {};
|
|
64
64
|
}
|
|
65
65
|
interface $$IsomorphicComponent {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import { SettingsSection } from '../../layout'
|
|
2
|
+
import { NumberRangeInput, SettingsSection } from '../../layout'
|
|
3
3
|
import type { SankeyNodeAlign, SankeyOrientation } from '..'
|
|
4
4
|
import ControlPane from '../core/components/ControlPane.svelte'
|
|
5
5
|
import { DEFAULTS } from '../../settings'
|
|
@@ -74,21 +74,27 @@
|
|
|
74
74
|
<option value="center">Center</option>
|
|
75
75
|
</select>
|
|
76
76
|
</label>
|
|
77
|
-
<
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
77
|
+
<NumberRangeInput
|
|
78
|
+
min={4}
|
|
79
|
+
max={60}
|
|
80
|
+
step={1}
|
|
81
|
+
bind:value={node_width}
|
|
82
|
+
style="flex: 1 1 100%">Node width:</NumberRangeInput
|
|
83
|
+
>
|
|
84
|
+
<NumberRangeInput
|
|
85
|
+
min={0}
|
|
86
|
+
max={40}
|
|
87
|
+
step={1}
|
|
88
|
+
bind:value={node_padding}
|
|
89
|
+
style="flex: 1 1 100%">Node padding:</NumberRangeInput
|
|
90
|
+
>
|
|
91
|
+
<NumberRangeInput
|
|
92
|
+
min={0.05}
|
|
93
|
+
max={1}
|
|
94
|
+
step={0.05}
|
|
95
|
+
bind:value={link_opacity}
|
|
96
|
+
style="flex: 1 1 100%">Link opacity:</NumberRangeInput
|
|
97
|
+
>
|
|
92
98
|
<label style="flex: 1 1 100%">
|
|
93
99
|
<input type="checkbox" bind:checked={show_node_labels} />
|
|
94
100
|
Show node labels
|