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,5 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { D3InterpolateName } from '../colors'
|
|
3
|
+
import { clamp01 } from '../utils'
|
|
3
4
|
import {
|
|
4
5
|
add_alpha,
|
|
5
6
|
AXIS_COLORS,
|
|
@@ -17,7 +18,12 @@
|
|
|
17
18
|
import { format_num } from '../labels'
|
|
18
19
|
import { to_radians, type Point3D, type Vec2, type Vec3 } from '../math'
|
|
19
20
|
import { ColorBar } from '../plot'
|
|
20
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
centered_rect,
|
|
23
|
+
pad_rect,
|
|
24
|
+
rects_overlap,
|
|
25
|
+
rect_within_rect,
|
|
26
|
+
} from '../plot/core/layout'
|
|
21
27
|
import type { Rect } from '../plot/core/layout'
|
|
22
28
|
import { create_pulse_animation } from '../effects.svelte'
|
|
23
29
|
import { DEFAULTS } from '../settings'
|
|
@@ -76,9 +82,7 @@
|
|
|
76
82
|
),
|
|
77
83
|
element_colors = vesta_hex,
|
|
78
84
|
color_mode = $bindable(DEFAULTS.convex_hull.ternary.color_mode),
|
|
79
|
-
color_scale = $bindable(
|
|
80
|
-
DEFAULTS.convex_hull.ternary.color_scale as D3InterpolateName,
|
|
81
|
-
),
|
|
85
|
+
color_scale = $bindable(DEFAULTS.convex_hull.ternary.color_scale as D3InterpolateName),
|
|
82
86
|
info_pane_open = $bindable(DEFAULTS.convex_hull.ternary.info_pane_open),
|
|
83
87
|
controls_open = $bindable(DEFAULTS.convex_hull.ternary.legend_pane_open),
|
|
84
88
|
max_hull_dist_show_phases = $bindable(
|
|
@@ -88,9 +92,7 @@
|
|
|
88
92
|
DEFAULTS.convex_hull.ternary.max_hull_dist_show_labels,
|
|
89
93
|
),
|
|
90
94
|
show_stable_labels = $bindable(DEFAULTS.convex_hull.ternary.show_stable_labels),
|
|
91
|
-
show_unstable_labels = $bindable(
|
|
92
|
-
DEFAULTS.convex_hull.ternary.show_unstable_labels,
|
|
93
|
-
),
|
|
95
|
+
show_unstable_labels = $bindable(DEFAULTS.convex_hull.ternary.show_unstable_labels),
|
|
94
96
|
on_file_drop,
|
|
95
97
|
enable_click_selection = true,
|
|
96
98
|
enable_structure_preview = true,
|
|
@@ -110,9 +112,10 @@
|
|
|
110
112
|
children,
|
|
111
113
|
tooltip,
|
|
112
114
|
...rest
|
|
113
|
-
}: BaseConvexHullProps<ConvexHullEntry> &
|
|
114
|
-
|
|
115
|
-
|
|
115
|
+
}: BaseConvexHullProps<ConvexHullEntry> &
|
|
116
|
+
Hull3DProps & {
|
|
117
|
+
highlight_style?: HighlightStyle
|
|
118
|
+
} = $props()
|
|
116
119
|
|
|
117
120
|
const merged_controls = $derived({ ...default_controls, ...controls })
|
|
118
121
|
const controls_config = $derived(normalize_show_controls(show_controls))
|
|
@@ -140,11 +143,11 @@
|
|
|
140
143
|
show_unstable: () => show_unstable,
|
|
141
144
|
entry_category: () => entry_category,
|
|
142
145
|
hidden_categories: () => hidden_categories,
|
|
143
|
-
keep_plot_entry:
|
|
144
|
-
set_temperature: (next_temp) => temperature = next_temp,
|
|
145
|
-
set_max_hull_dist_show_phases: (value) => max_hull_dist_show_phases = value,
|
|
146
|
-
set_stable_entries: (value) => stable_entries = value,
|
|
147
|
-
set_unstable_entries: (value) => unstable_entries = value,
|
|
146
|
+
keep_plot_entry: helpers.entry_within_hull_dist,
|
|
147
|
+
set_temperature: (next_temp) => (temperature = next_temp),
|
|
148
|
+
set_max_hull_dist_show_phases: (value) => (max_hull_dist_show_phases = value),
|
|
149
|
+
set_stable_entries: (value) => (stable_entries = value),
|
|
150
|
+
set_unstable_entries: (value) => (unstable_entries = value),
|
|
148
151
|
})
|
|
149
152
|
const has_temp_data = $derived(hull_data.has_temp_data)
|
|
150
153
|
const gas_analysis = $derived(hull_data.gas_analysis)
|
|
@@ -159,11 +162,7 @@
|
|
|
159
162
|
if (elements.length !== 3) return []
|
|
160
163
|
try {
|
|
161
164
|
// Pass precomputed el_refs to avoid recomputing in error diagnostics
|
|
162
|
-
const coords = get_ternary_3d_coordinates(
|
|
163
|
-
pd_data.entries,
|
|
164
|
-
elements,
|
|
165
|
-
pd_data.el_refs,
|
|
166
|
-
)
|
|
165
|
+
const coords = get_ternary_3d_coordinates(pd_data.entries, elements, pd_data.el_refs)
|
|
167
166
|
return coords
|
|
168
167
|
} catch (error) {
|
|
169
168
|
console.error(`Error computing ternary coordinates:`, error)
|
|
@@ -196,8 +195,10 @@
|
|
|
196
195
|
if (hull_data.energy_mode !== `on-the-fly`) return coords_entries
|
|
197
196
|
const pts = coords_entries.map(({ x, y, z }) => ({ x, y, z }))
|
|
198
197
|
const raw_dists = thermo.compute_e_above_hull_for_points(pts, hull_model)
|
|
198
|
+
// non-finite distance (no covering hull face) -> unknown, handled by compute_hull_stability
|
|
199
199
|
return coords_entries.map((entry, idx) => ({
|
|
200
|
-
...entry,
|
|
200
|
+
...entry,
|
|
201
|
+
...compute_hull_stability(raw_dists[idx], entry.exclude_from_hull),
|
|
201
202
|
}))
|
|
202
203
|
})
|
|
203
204
|
|
|
@@ -224,23 +225,11 @@
|
|
|
224
225
|
let gizmo_active = $state(false)
|
|
225
226
|
|
|
226
227
|
// Convert elevation/azimuth (degrees) to Three.js camera position + up vector.
|
|
227
|
-
function gizmo_camera(
|
|
228
|
-
elev_deg: number,
|
|
229
|
-
azim_deg: number,
|
|
230
|
-
): { position: Vec3; up: Vec3 } {
|
|
228
|
+
function gizmo_camera(elev_deg: number, azim_deg: number): { position: Vec3; up: Vec3 } {
|
|
231
229
|
const [elev, azim] = [to_radians(elev_deg), to_radians(azim_deg)]
|
|
232
|
-
const [se, ce, sa, ca] = [
|
|
233
|
-
Math.sin(elev),
|
|
234
|
-
Math.cos(elev),
|
|
235
|
-
Math.sin(azim),
|
|
236
|
-
Math.cos(azim),
|
|
237
|
-
]
|
|
230
|
+
const [se, ce, sa, ca] = [Math.sin(elev), Math.cos(elev), Math.sin(azim), Math.cos(azim)]
|
|
238
231
|
return {
|
|
239
|
-
position: [
|
|
240
|
-
-sa * se * GIZMO_CAM_DIST,
|
|
241
|
-
-ca * se * GIZMO_CAM_DIST,
|
|
242
|
-
ce * GIZMO_CAM_DIST,
|
|
243
|
-
],
|
|
232
|
+
position: [-sa * se * GIZMO_CAM_DIST, -ca * se * GIZMO_CAM_DIST, ce * GIZMO_CAM_DIST],
|
|
244
233
|
up: [sa * ce, ca * ce, se],
|
|
245
234
|
}
|
|
246
235
|
}
|
|
@@ -256,7 +245,7 @@
|
|
|
256
245
|
camera.center_x = 0
|
|
257
246
|
// 0.6 matches the draw_data_points() scale factor that maps data coords to canvas pixels
|
|
258
247
|
const scale = Math.min(canvas_dims.width, canvas_dims.height) * 0.6 * camera.zoom
|
|
259
|
-
camera.center_y = Math.sqrt(3) / 12 * scale * Math.cos(to_radians(elev_deg))
|
|
248
|
+
camera.center_y = (Math.sqrt(3) / 12) * scale * Math.cos(to_radians(elev_deg))
|
|
260
249
|
}
|
|
261
250
|
|
|
262
251
|
// Sync: ConvexHull3D → Three.js gizmo camera (on main canvas drag)
|
|
@@ -276,14 +265,15 @@
|
|
|
276
265
|
const cam = gizmo_cam_ref
|
|
277
266
|
if (!cam) return
|
|
278
267
|
const { x: cx, y: cy, z: cz } = cam.position
|
|
279
|
-
const dist = Math.
|
|
268
|
+
const dist = Math.hypot(cx, cy, cz)
|
|
280
269
|
if (dist < 1e-6) return
|
|
281
270
|
const elev_rad = Math.acos(Math.max(-1, Math.min(1, cz / dist)))
|
|
282
271
|
const sin_elev = Math.sin(elev_rad)
|
|
283
|
-
const azim_deg =
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
272
|
+
const azim_deg =
|
|
273
|
+
Math.abs(sin_elev) > 1e-6
|
|
274
|
+
? (Math.atan2(-cx / (dist * sin_elev), -cy / (dist * sin_elev)) * 180) / Math.PI
|
|
275
|
+
: 0
|
|
276
|
+
const elev_deg = (elev_rad * 180) / Math.PI
|
|
287
277
|
camera.elevation = elev_deg
|
|
288
278
|
camera.azimuth = azim_deg
|
|
289
279
|
center_camera(elev_deg)
|
|
@@ -291,14 +281,15 @@
|
|
|
291
281
|
|
|
292
282
|
// Gizmo axis colors (constant — AXIS_COLORS/NEG_AXIS_COLORS never change)
|
|
293
283
|
const gizmo_axis_options = Object.fromEntries(
|
|
294
|
-
[...AXIS_COLORS, ...NEG_AXIS_COLORS].map((
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
284
|
+
[...AXIS_COLORS, ...NEG_AXIS_COLORS].map(([axis, color, hover_color]) => [
|
|
285
|
+
axis,
|
|
286
|
+
{
|
|
287
|
+
color,
|
|
288
|
+
labelColor: `#111`,
|
|
289
|
+
opacity: 0.85,
|
|
290
|
+
hover: { color: hover_color, labelColor: `#222`, opacity: 1 },
|
|
291
|
+
},
|
|
292
|
+
]),
|
|
302
293
|
)
|
|
303
294
|
|
|
304
295
|
// Extract placement from gizmo options (not a Threlte Gizmo prop)
|
|
@@ -328,12 +319,12 @@
|
|
|
328
319
|
canvas: () => canvas,
|
|
329
320
|
wrapper: () => wrapper,
|
|
330
321
|
ctx: () => ctx,
|
|
331
|
-
set_ctx: (context) => ctx = context,
|
|
332
|
-
set_canvas_dims: (dims) => canvas_dims = dims,
|
|
322
|
+
set_ctx: (context) => (ctx = context),
|
|
323
|
+
set_canvas_dims: (dims) => (canvas_dims = dims),
|
|
333
324
|
visible_entries: () => visible_entries,
|
|
334
325
|
plot_entries: () => plot_entries,
|
|
335
326
|
selected_entry: () => selected_entry,
|
|
336
|
-
set_selected_entry: (entry) => selected_entry = entry,
|
|
327
|
+
set_selected_entry: (entry) => (selected_entry = entry),
|
|
337
328
|
fullscreen: () => fullscreen,
|
|
338
329
|
enable_click_selection: () => enable_click_selection,
|
|
339
330
|
enable_structure_preview: () => enable_structure_preview,
|
|
@@ -342,7 +333,7 @@
|
|
|
342
333
|
on_file_drop: () => on_file_drop,
|
|
343
334
|
entry_category: () => entry_category,
|
|
344
335
|
zoom: () => camera.zoom,
|
|
345
|
-
set_zoom: (zoom) => camera.zoom = zoom,
|
|
336
|
+
set_zoom: (zoom) => (camera.zoom = zoom),
|
|
346
337
|
project_point: project_3d_point,
|
|
347
338
|
extract_structure: extract_structure_from_entry,
|
|
348
339
|
render_frame,
|
|
@@ -369,11 +360,11 @@
|
|
|
369
360
|
camera.azimuth = 0
|
|
370
361
|
center_camera(0)
|
|
371
362
|
},
|
|
372
|
-
b: () => color_mode = color_mode === `stability` ? `energy` : `stability
|
|
373
|
-
s: () => show_stable = !show_stable,
|
|
374
|
-
u: () => show_unstable = !show_unstable,
|
|
375
|
-
h: () => show_hull_faces = !show_hull_faces,
|
|
376
|
-
l: () => show_stable_labels = !show_stable_labels,
|
|
363
|
+
b: () => (color_mode = color_mode === `stability` ? `energy` : `stability`),
|
|
364
|
+
s: () => (show_stable = !show_stable),
|
|
365
|
+
u: () => (show_unstable = !show_unstable),
|
|
366
|
+
h: () => (show_hull_faces = !show_hull_faces),
|
|
367
|
+
l: () => (show_stable_labels = !show_stable_labels),
|
|
377
368
|
}),
|
|
378
369
|
})
|
|
379
370
|
const { render_once } = interactions
|
|
@@ -390,9 +381,7 @@
|
|
|
390
381
|
let pulse_opacity = $derived(0.3 + 0.4 * pulse.unit)
|
|
391
382
|
|
|
392
383
|
// Merge highlight style with defaults
|
|
393
|
-
const merged_highlight_style = $derived(
|
|
394
|
-
helpers.merge_highlight_style(highlight_style),
|
|
395
|
-
)
|
|
384
|
+
const merged_highlight_style = $derived(helpers.merge_highlight_style(highlight_style))
|
|
396
385
|
|
|
397
386
|
// Helper to check if entry is highlighted
|
|
398
387
|
const is_highlighted = (entry: ConvexHullEntry): boolean =>
|
|
@@ -444,7 +433,7 @@
|
|
|
444
433
|
|
|
445
434
|
// Cache energy color scale per frame/setting
|
|
446
435
|
const energy_color_scale = $derived.by(() =>
|
|
447
|
-
helpers.get_energy_color_scale(color_mode, color_scale, plot_entries)
|
|
436
|
+
helpers.get_energy_color_scale(color_mode, color_scale, plot_entries),
|
|
448
437
|
)
|
|
449
438
|
|
|
450
439
|
// Convex hull statistics - compute internally and expose via bindable prop
|
|
@@ -460,10 +449,7 @@
|
|
|
460
449
|
): { x: number; y: number; depth: number } {
|
|
461
450
|
if (!canvas) return { x: 0, y: 0, depth: 0 }
|
|
462
451
|
|
|
463
|
-
const [elev, azim] = [
|
|
464
|
-
(camera.elevation * Math.PI) / 180,
|
|
465
|
-
(camera.azimuth * Math.PI) / 180,
|
|
466
|
-
]
|
|
452
|
+
const [elev, azim] = [(camera.elevation * Math.PI) / 180, (camera.azimuth * Math.PI) / 180]
|
|
467
453
|
const [cos_az, sin_az, cos_el, sin_el] = [
|
|
468
454
|
Math.cos(azim),
|
|
469
455
|
Math.sin(azim),
|
|
@@ -518,10 +504,7 @@
|
|
|
518
504
|
ctx.stroke()
|
|
519
505
|
|
|
520
506
|
// Draw vertical edges from corners (from most negative to 0 formation energy)
|
|
521
|
-
const vertical_edges = get_triangle_vertical_edges(
|
|
522
|
-
e_form_min,
|
|
523
|
-
e_form_max,
|
|
524
|
-
)
|
|
507
|
+
const vertical_edges = get_triangle_vertical_edges(e_form_min, e_form_max)
|
|
525
508
|
ctx.beginPath()
|
|
526
509
|
for (const [v1, v2] of vertical_edges) {
|
|
527
510
|
const proj1 = project_3d_point(v1.x, v1.y, v1.z)
|
|
@@ -562,15 +545,11 @@
|
|
|
562
545
|
ctx.textAlign = `center`
|
|
563
546
|
ctx.textBaseline = `middle`
|
|
564
547
|
|
|
565
|
-
for (
|
|
566
|
-
let idx = 0;
|
|
567
|
-
idx < TRIANGLE_VERTICES.length && idx < elements.length;
|
|
568
|
-
idx++
|
|
569
|
-
) {
|
|
548
|
+
for (let idx = 0; idx < TRIANGLE_VERTICES.length && idx < elements.length; idx++) {
|
|
570
549
|
const [x, y] = TRIANGLE_VERTICES[idx]
|
|
571
550
|
const dx = x - centroid.x
|
|
572
551
|
const dy = y - centroid.y
|
|
573
|
-
const length = Math.
|
|
552
|
+
const length = Math.hypot(dx, dy)
|
|
574
553
|
const distance = 0.05
|
|
575
554
|
|
|
576
555
|
const label_pos = {
|
|
@@ -596,14 +575,10 @@
|
|
|
596
575
|
|
|
597
576
|
// Find the vertex that projects to the leftmost x-position (changes with rotation)
|
|
598
577
|
const projected_vertices = TRIANGLE_VERTICES.map(([vx, vy]) =>
|
|
599
|
-
project_3d_point(vx, vy, e_mid)
|
|
578
|
+
project_3d_point(vx, vy, e_mid),
|
|
600
579
|
)
|
|
601
580
|
const leftmost_idx = projected_vertices.reduce(
|
|
602
|
-
(
|
|
603
|
-
min_idx,
|
|
604
|
-
proj,
|
|
605
|
-
idx,
|
|
606
|
-
) => (proj.x < projected_vertices[min_idx].x ? idx : min_idx),
|
|
581
|
+
(min_idx, proj, idx) => (proj.x < projected_vertices[min_idx].x ? idx : min_idx),
|
|
607
582
|
0,
|
|
608
583
|
)
|
|
609
584
|
const [axis_x, axis_y] = TRIANGLE_VERTICES[leftmost_idx]
|
|
@@ -667,10 +642,8 @@
|
|
|
667
642
|
let energy_face_scale: ((val: number) => string) | null = null
|
|
668
643
|
let min_face_e_form = 0
|
|
669
644
|
if (hull_face_color_mode === `formation_energy`) {
|
|
670
|
-
const all_e_form = hull_faces.flatMap((tri) =>
|
|
671
|
-
|
|
672
|
-
)
|
|
673
|
-
min_face_e_form = Math.min(...all_e_form)
|
|
645
|
+
const all_e_form = hull_faces.flatMap((tri) => tri.vertices.map((vertex) => vertex.z))
|
|
646
|
+
min_face_e_form = helpers.array_min(all_e_form)
|
|
674
647
|
energy_face_scale = helpers.get_energy_color_scale(
|
|
675
648
|
`energy`,
|
|
676
649
|
color_scale,
|
|
@@ -681,10 +654,7 @@
|
|
|
681
654
|
}
|
|
682
655
|
|
|
683
656
|
// Helper to get face color based on mode
|
|
684
|
-
const get_face_color = (
|
|
685
|
-
tri: typeof hull_faces[0],
|
|
686
|
-
tri_idx: number,
|
|
687
|
-
): string => {
|
|
657
|
+
const get_face_color = (tri: (typeof hull_faces)[0], tri_idx: number): string => {
|
|
688
658
|
if (hull_face_color_mode === `uniform`) {
|
|
689
659
|
return hull_face_color
|
|
690
660
|
}
|
|
@@ -711,11 +681,7 @@
|
|
|
711
681
|
|
|
712
682
|
// Sort faces by depth for proper rendering
|
|
713
683
|
const faces_with_depth = hull_faces.map((tri, tri_idx) => {
|
|
714
|
-
const centroid_proj = project_3d_point(
|
|
715
|
-
tri.centroid.x,
|
|
716
|
-
tri.centroid.y,
|
|
717
|
-
tri.centroid.z,
|
|
718
|
-
)
|
|
684
|
+
const centroid_proj = project_3d_point(tri.centroid.x, tri.centroid.y, tri.centroid.z)
|
|
719
685
|
return { tri, tri_idx, depth: centroid_proj.depth }
|
|
720
686
|
})
|
|
721
687
|
|
|
@@ -740,16 +706,21 @@
|
|
|
740
706
|
const a3 = norm_alpha?.(p3.z) ?? 0
|
|
741
707
|
|
|
742
708
|
// Solve a*x + b*y + c = alpha at the three projected vertices
|
|
743
|
-
const x1 = proj1.x,
|
|
744
|
-
|
|
745
|
-
const
|
|
709
|
+
const x1 = proj1.x,
|
|
710
|
+
y1 = proj1.y
|
|
711
|
+
const x2 = proj2.x,
|
|
712
|
+
y2 = proj2.y
|
|
713
|
+
const x3 = proj3.x,
|
|
714
|
+
y3 = proj3.y
|
|
746
715
|
const det = x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)
|
|
747
|
-
let coef_a = 0,
|
|
716
|
+
let coef_a = 0,
|
|
717
|
+
coef_b = 0,
|
|
718
|
+
coef_c = (a1 + a2 + a3) / 3
|
|
748
719
|
if (Math.abs(det) > 1e-9) {
|
|
749
720
|
coef_a = (a1 * (y2 - y3) + a2 * (y3 - y1) + a3 * (y1 - y2)) / det
|
|
750
721
|
coef_b = (a1 * (x3 - x2) + a2 * (x1 - x3) + a3 * (x2 - x1)) / det
|
|
751
|
-
coef_c =
|
|
752
|
-
a3 * (x1 * y2 - x2 * y1)) /
|
|
722
|
+
coef_c =
|
|
723
|
+
(a1 * (x2 * y3 - x3 * y2) + a2 * (x3 * y1 - x1 * y3) + a3 * (x1 * y2 - x2 * y1)) /
|
|
753
724
|
det
|
|
754
725
|
}
|
|
755
726
|
|
|
@@ -826,7 +797,7 @@
|
|
|
826
797
|
const denom = Math.max(1e-6, max_fe - min_fe)
|
|
827
798
|
return (value: number) => {
|
|
828
799
|
// alpha 0 at 0 eV, goes to hull_face_opacity at most negative energy
|
|
829
|
-
const energy_fraction =
|
|
800
|
+
const energy_fraction = clamp01((value - min_fe) / denom)
|
|
830
801
|
const alpha = (1 - energy_fraction) * hull_face_opacity
|
|
831
802
|
return add_alpha(hull_face_color, alpha)
|
|
832
803
|
}
|
|
@@ -940,18 +911,21 @@
|
|
|
940
911
|
ctx.textBaseline = `top`
|
|
941
912
|
const label_height = hull_label_font_size + 2
|
|
942
913
|
|
|
943
|
-
const label_entries = helpers
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
(
|
|
949
|
-
(
|
|
950
|
-
|
|
951
|
-
|
|
914
|
+
const label_entries = helpers
|
|
915
|
+
.get_composition_label_entries(
|
|
916
|
+
visible_entries.filter((entry) => {
|
|
917
|
+
if (entry.is_element) return false
|
|
918
|
+
const is_stable_point = helpers.entry_is_stable(entry)
|
|
919
|
+
return (
|
|
920
|
+
(is_stable_point && show_stable_labels) ||
|
|
921
|
+
(!is_stable_point &&
|
|
922
|
+
show_unstable_labels &&
|
|
923
|
+
(entry.e_above_hull ?? 0) <= max_hull_dist_show_labels)
|
|
924
|
+
)
|
|
925
|
+
}),
|
|
926
|
+
)
|
|
952
927
|
.sort((entry_1, entry_2) => {
|
|
953
|
-
const energy_diff = label_priority_energy(entry_1) -
|
|
954
|
-
label_priority_energy(entry_2)
|
|
928
|
+
const energy_diff = label_priority_energy(entry_1) - label_priority_energy(entry_2)
|
|
955
929
|
if (energy_diff !== 0) return energy_diff
|
|
956
930
|
return (entry_1.e_above_hull ?? 0) - (entry_2.e_above_hull ?? 0)
|
|
957
931
|
})
|
|
@@ -971,17 +945,13 @@
|
|
|
971
945
|
const is_stable_point = helpers.entry_is_stable(entry)
|
|
972
946
|
const point_size = (entry.size || (is_stable_point ? 6 : 4)) * canvas_dims.scale
|
|
973
947
|
const text_width = measure_formula_segments(ctx, formula_segments)
|
|
974
|
-
const placements = get_label_placements(
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
rect_within_rect(candidate.rect, canvas_rect) &&
|
|
982
|
-
!occupied_rects.some((occupied_rect) =>
|
|
983
|
-
rects_overlap(candidate.rect, occupied_rect)
|
|
984
|
-
)
|
|
948
|
+
const placements = get_label_placements(projected, point_size, text_width, label_height)
|
|
949
|
+
const placement = placements.find(
|
|
950
|
+
(candidate) =>
|
|
951
|
+
rect_within_rect(candidate.rect, canvas_rect) &&
|
|
952
|
+
!occupied_rects.some((occupied_rect) =>
|
|
953
|
+
rects_overlap(candidate.rect, occupied_rect),
|
|
954
|
+
),
|
|
985
955
|
)
|
|
986
956
|
if (!placement) continue
|
|
987
957
|
|
|
@@ -1029,7 +999,7 @@
|
|
|
1029
999
|
|
|
1030
1000
|
// Reactive dark mode detection for canvas text color
|
|
1031
1001
|
let dark_mode = $state(is_dark_mode())
|
|
1032
|
-
$effect(() => watch_dark_mode((dark) => dark_mode = dark))
|
|
1002
|
+
$effect(() => watch_dark_mode((dark) => (dark_mode = dark)))
|
|
1033
1003
|
const text_color = $derived(helpers.get_canvas_text_color(dark_mode))
|
|
1034
1004
|
|
|
1035
1005
|
// Performance: Cache canvas dimensions and formation energy range
|
|
@@ -1060,7 +1030,7 @@
|
|
|
1060
1030
|
|
|
1061
1031
|
<div
|
|
1062
1032
|
{...rest}
|
|
1063
|
-
class=
|
|
1033
|
+
class={[`convex-hull-3d`, rest.class]}
|
|
1064
1034
|
class:dragover={interactions.drag_over}
|
|
1065
1035
|
style={`${style}; ${rest.style ?? ``}`}
|
|
1066
1036
|
data-has-selection={selected_entry !== null}
|
|
@@ -1073,11 +1043,11 @@
|
|
|
1073
1043
|
aria-label="Ternary convex hull visualization"
|
|
1074
1044
|
>
|
|
1075
1045
|
{@render children?.({
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1046
|
+
stable_entries,
|
|
1047
|
+
unstable_entries,
|
|
1048
|
+
highlighted_entries,
|
|
1049
|
+
selected_entry,
|
|
1050
|
+
})}
|
|
1081
1051
|
<h3 style="position: absolute; left: 1em; top: 1ex; margin: 0; font-weight: 500">
|
|
1082
1052
|
{@html sanitize_html(merged_controls.title || phase_stats?.chemical_system || ``)}
|
|
1083
1053
|
</h3>
|
|
@@ -1109,9 +1079,7 @@
|
|
|
1109
1079
|
|
|
1110
1080
|
<!-- Formation Energy Faces Color Bar (bottom-right corner) -->
|
|
1111
1081
|
<!-- Only show for uniform/formation_energy modes where face color relates to E_form -->
|
|
1112
|
-
{#if plot_entries.length > 0 && show_hull_faces &&
|
|
1113
|
-
(hull_face_color_mode === `uniform` ||
|
|
1114
|
-
hull_face_color_mode === `formation_energy`)}
|
|
1082
|
+
{#if plot_entries.length > 0 && show_hull_faces && (hull_face_color_mode === `uniform` || hull_face_color_mode === `formation_energy`)}
|
|
1115
1083
|
<ColorBar
|
|
1116
1084
|
title="Formation energy (eV/atom)"
|
|
1117
1085
|
color_scale_fn={e_form_color_scale_fn}
|
|
@@ -1169,7 +1137,7 @@
|
|
|
1169
1137
|
<div class="gizmo-wrapper {controls_config.class}" data-placement={gizmo_placement}>
|
|
1170
1138
|
<Canvas
|
|
1171
1139
|
createRenderer={(cvs: HTMLCanvasElement) =>
|
|
1172
|
-
|
|
1140
|
+
new WebGLRenderer({ canvas: cvs, alpha: true, antialias: true })}
|
|
1173
1141
|
>
|
|
1174
1142
|
<T.PerspectiveCamera
|
|
1175
1143
|
makeDefault
|
|
@@ -1199,11 +1167,13 @@
|
|
|
1199
1167
|
</div>
|
|
1200
1168
|
{/if}
|
|
1201
1169
|
|
|
1202
|
-
{#if (has_temp_data && temperature !== undefined) ||
|
|
1203
|
-
(gas_analysis.has_gas_dependent_elements && merged_gas_config)}
|
|
1170
|
+
{#if (has_temp_data && temperature !== undefined) || (gas_analysis.has_gas_dependent_elements && merged_gas_config)}
|
|
1204
1171
|
<div class="right-controls">
|
|
1205
1172
|
{#if has_temp_data && temperature !== undefined}
|
|
1206
|
-
<TemperatureSlider
|
|
1173
|
+
<TemperatureSlider
|
|
1174
|
+
available_temperatures={hull_data.available_temperatures}
|
|
1175
|
+
bind:temperature
|
|
1176
|
+
/>
|
|
1207
1177
|
{/if}
|
|
1208
1178
|
{#if gas_analysis.has_gas_dependent_elements && merged_gas_config}
|
|
1209
1179
|
<GasPressureControls
|
|
@@ -1214,7 +1184,6 @@
|
|
|
1214
1184
|
{/if}
|
|
1215
1185
|
</div>
|
|
1216
1186
|
{/if}
|
|
1217
|
-
|
|
1218
1187
|
</div>
|
|
1219
1188
|
|
|
1220
1189
|
<style>
|
|
@@ -3,6 +3,6 @@ import type { ConvexHullEntry, HighlightStyle } from './types';
|
|
|
3
3
|
type $$ComponentProps = BaseConvexHullProps<ConvexHullEntry> & Hull3DProps & {
|
|
4
4
|
highlight_style?: HighlightStyle;
|
|
5
5
|
};
|
|
6
|
-
declare const ConvexHull3D: import("svelte").Component<$$ComponentProps, {}, "
|
|
6
|
+
declare const ConvexHull3D: import("svelte").Component<$$ComponentProps, {}, "fullscreen" | "wrapper" | "controls_open" | "color_scale" | "info_pane_open" | "temperature" | "show_hull_faces" | "hull_face_opacity" | "hull_face_color_mode" | "color_mode" | "show_stable" | "show_unstable" | "show_stable_labels" | "show_unstable_labels" | "max_hull_dist_show_phases" | "max_hull_dist_show_labels" | "hidden_categories" | "energy_source_mode" | "stable_entries" | "unstable_entries" | "phase_stats" | "highlighted_entries" | "selected_entry" | "gas_pressures">;
|
|
7
7
|
type ConvexHull3D = ReturnType<typeof ConvexHull3D>;
|
|
8
8
|
export default ConvexHull3D;
|