matterviz 0.3.7 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Icon.svelte +7 -4
- package/dist/MillerIndexInput.svelte +1 -1
- package/dist/api/optimade.js +32 -26
- package/dist/app.css +0 -3
- package/dist/brillouin/BrillouinZone.svelte +76 -148
- package/dist/brillouin/BrillouinZone.svelte.d.ts +6 -14
- package/dist/brillouin/BrillouinZoneExportPane.svelte +43 -96
- package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +9 -32
- package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +2 -3
- package/dist/brillouin/BrillouinZoneScene.svelte +97 -205
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +4 -23
- package/dist/brillouin/BrillouinZoneTooltip.svelte +16 -25
- package/dist/brillouin/ReciprocalVectors.svelte +39 -0
- package/dist/brillouin/ReciprocalVectors.svelte.d.ts +9 -0
- package/dist/brillouin/compute.d.ts +2 -0
- package/dist/brillouin/compute.js +89 -90
- package/dist/brillouin/geometry.d.ts +8 -0
- package/dist/brillouin/geometry.js +57 -0
- package/dist/brillouin/index.d.ts +2 -0
- package/dist/brillouin/index.js +2 -0
- package/dist/brillouin/types.d.ts +2 -2
- package/dist/chempot-diagram/ChemPotDiagram.svelte +14 -13
- package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +1 -1
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +109 -203
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +4 -1
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +180 -470
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +7 -1
- package/dist/chempot-diagram/async-compute.svelte.js +3 -1
- package/dist/chempot-diagram/chempot-worker.js +2 -1
- package/dist/chempot-diagram/color.d.ts +3 -6
- package/dist/chempot-diagram/color.js +5 -5
- package/dist/chempot-diagram/compute.d.ts +4 -4
- package/dist/chempot-diagram/compute.js +20 -20
- package/dist/chempot-diagram/controls-state.svelte.d.ts +10 -0
- package/dist/chempot-diagram/controls-state.svelte.js +42 -0
- package/dist/chempot-diagram/export.d.ts +47 -0
- package/dist/chempot-diagram/export.js +133 -0
- package/dist/chempot-diagram/index.d.ts +1 -0
- package/dist/chempot-diagram/index.js +1 -0
- package/dist/chempot-diagram/pointer.d.ts +0 -10
- package/dist/chempot-diagram/pointer.js +4 -4
- package/dist/chempot-diagram/types.d.ts +3 -3
- package/dist/colors/index.js +8 -7
- package/dist/composition/FormulaFilter.svelte +18 -11
- package/dist/composition/PieChart.svelte +11 -10
- package/dist/composition/chem-sys.d.ts +8 -0
- package/dist/composition/chem-sys.js +86 -0
- package/dist/composition/format.js +7 -4
- package/dist/composition/index.d.ts +1 -0
- package/dist/composition/index.js +1 -0
- package/dist/composition/parse.d.ts +0 -1
- package/dist/composition/parse.js +41 -31
- package/dist/controls.d.ts +1 -0
- package/dist/controls.js +0 -1
- package/dist/convex-hull/ConvexHull.svelte +8 -10
- package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -4
- package/dist/convex-hull/ConvexHull2D.svelte +106 -185
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull3D.svelte +179 -683
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull4D.svelte +183 -687
- package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHullChrome.svelte +268 -0
- package/dist/convex-hull/ConvexHullChrome.svelte.d.ts +30 -0
- package/dist/convex-hull/ConvexHullControls.svelte +88 -7
- package/dist/convex-hull/ConvexHullControls.svelte.d.ts +7 -6
- package/dist/convex-hull/ConvexHullInfoPane.svelte +18 -5
- package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +6 -5
- package/dist/convex-hull/ConvexHullStats.svelte +36 -175
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +3 -1
- package/dist/convex-hull/ConvexHullTooltip.svelte +11 -2
- package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +2 -1
- package/dist/convex-hull/GasPressureControls.svelte +4 -4
- package/dist/convex-hull/TemperatureSlider.svelte +2 -2
- package/dist/convex-hull/barycentric-coords.d.ts +2 -4
- package/dist/convex-hull/barycentric-coords.js +6 -33
- package/dist/convex-hull/canvas-interactions.svelte.d.ts +79 -0
- package/dist/convex-hull/canvas-interactions.svelte.js +278 -0
- package/dist/convex-hull/demo-temperature.d.ts +1 -1
- package/dist/convex-hull/demo-temperature.js +20 -22
- package/dist/convex-hull/gas-thermodynamics.d.ts +2 -2
- package/dist/convex-hull/gas-thermodynamics.js +22 -30
- package/dist/convex-hull/helpers.d.ts +42 -7
- package/dist/convex-hull/helpers.js +171 -78
- package/dist/convex-hull/hull-state.svelte.d.ts +44 -0
- package/dist/convex-hull/hull-state.svelte.js +124 -0
- package/dist/convex-hull/index.d.ts +10 -8
- package/dist/convex-hull/index.js +7 -2
- package/dist/convex-hull/thermodynamics.js +136 -960
- package/dist/convex-hull/types.d.ts +13 -5
- package/dist/convex-hull/types.js +12 -0
- package/dist/coordination/CoordinationBarPlot.svelte +27 -34
- package/dist/coordination/CoordinationBarPlot.svelte.d.ts +1 -1
- package/dist/element/BohrAtom.svelte +2 -1
- package/dist/element/index.d.ts +4 -0
- package/dist/element/index.js +18 -0
- package/dist/feedback/DragOverlay.svelte +3 -1
- package/dist/feedback/DragOverlay.svelte.d.ts +1 -0
- package/dist/feedback/StatusMessage.svelte +13 -3
- package/dist/fermi-surface/FermiSlice.svelte +13 -5
- package/dist/fermi-surface/FermiSurface.svelte +78 -151
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +5 -14
- package/dist/fermi-surface/FermiSurfaceControls.svelte +1 -1
- package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceScene.svelte +72 -221
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +3 -23
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +8 -34
- package/dist/fermi-surface/compute.js +67 -66
- package/dist/fermi-surface/export.js +6 -16
- package/dist/fermi-surface/index.d.ts +0 -1
- package/dist/fermi-surface/index.js +0 -1
- package/dist/fermi-surface/parse.d.ts +1 -1
- package/dist/fermi-surface/parse.js +71 -79
- package/dist/fermi-surface/types.d.ts +3 -2
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +69 -52
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +4 -3
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +3 -2
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +5 -5
- package/dist/heatmap-matrix/index.d.ts +3 -2
- package/dist/heatmap-matrix/index.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/io/ExportPane.svelte +166 -0
- package/dist/io/ExportPane.svelte.d.ts +17 -0
- package/dist/io/decompress.js +5 -4
- package/dist/io/export.d.ts +9 -5
- package/dist/io/export.js +77 -51
- package/dist/io/fetch.d.ts +2 -1
- package/dist/io/fetch.js +5 -1
- package/dist/io/file-drop.d.ts +8 -1
- package/dist/io/file-drop.js +48 -36
- package/dist/io/index.d.ts +2 -0
- package/dist/io/index.js +10 -0
- package/dist/io/types.d.ts +13 -0
- package/dist/io/url-drop.js +64 -33
- package/dist/isosurface/parse.js +52 -51
- package/dist/isosurface/slice.js +5 -4
- package/dist/isosurface/types.js +1 -1
- package/dist/keyboard.d.ts +3 -0
- package/dist/keyboard.js +23 -0
- package/dist/labels.d.ts +1 -1
- package/dist/labels.js +9 -8
- package/dist/layout/FullscreenButton.svelte +33 -0
- package/dist/layout/FullscreenButton.svelte.d.ts +10 -0
- package/dist/layout/FullscreenToggle.svelte +8 -14
- package/dist/layout/PropertyFilter.svelte +3 -2
- package/dist/layout/SettingsSection.svelte +1 -1
- package/dist/layout/ViewerChrome.svelte +116 -0
- package/dist/layout/ViewerChrome.svelte.d.ts +17 -0
- package/dist/layout/fullscreen.d.ts +4 -0
- package/dist/layout/fullscreen.svelte.d.ts +8 -0
- package/dist/layout/fullscreen.svelte.js +37 -0
- package/dist/layout/index.d.ts +3 -0
- package/dist/layout/index.js +3 -0
- package/dist/layout/json-tree/JsonNode.svelte +1 -1
- package/dist/layout/json-tree/JsonTree.svelte +2 -2
- package/dist/layout/json-tree/utils.js +5 -4
- package/dist/marching-cubes.js +8 -13
- package/dist/math.d.ts +12 -4
- package/dist/math.js +42 -30
- package/dist/overlays/DraggablePane.svelte +4 -4
- package/dist/overlays/index.d.ts +4 -0
- package/dist/periodic-table/PeriodicTable.svelte +27 -15
- package/dist/periodic-table/PropertySelect.svelte +1 -0
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +9 -3
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +1 -1
- package/dist/phase-diagram/PhaseDiagramControls.svelte +3 -2
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +4 -3
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +4 -2
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +2 -3
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +47 -132
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +3 -4
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +1 -1
- package/dist/phase-diagram/build-diagram.js +2 -2
- package/dist/phase-diagram/colors.js +1 -1
- package/dist/phase-diagram/parse.d.ts +2 -1
- package/dist/phase-diagram/parse.js +6 -5
- package/dist/phase-diagram/types.d.ts +1 -1
- package/dist/phase-diagram/utils.d.ts +3 -3
- package/dist/phase-diagram/utils.js +8 -12
- package/dist/plot/{BarPlot.svelte → bar/BarPlot.svelte} +246 -841
- package/dist/plot/{BarPlot.svelte.d.ts → bar/BarPlot.svelte.d.ts} +8 -16
- package/dist/plot/{BarPlotControls.svelte → bar/BarPlotControls.svelte} +6 -5
- package/dist/plot/{BarPlotControls.svelte.d.ts → bar/BarPlotControls.svelte.d.ts} +3 -3
- package/dist/plot/{SpacegroupBarPlot.svelte → bar/SpacegroupBarPlot.svelte} +8 -7
- package/dist/plot/{SpacegroupBarPlot.svelte.d.ts → bar/SpacegroupBarPlot.svelte.d.ts} +1 -1
- package/dist/plot/bar/data.d.ts +40 -0
- package/dist/plot/bar/data.js +154 -0
- package/dist/plot/bar/geometry.d.ts +39 -0
- package/dist/plot/bar/geometry.js +60 -0
- package/dist/plot/bar/index.d.ts +3 -0
- package/dist/plot/bar/index.js +3 -0
- package/dist/plot/box/BoxPlot.svelte +1292 -0
- package/dist/plot/box/BoxPlot.svelte.d.ts +95 -0
- package/dist/plot/box/BoxPlotControls.svelte +109 -0
- package/dist/plot/box/BoxPlotControls.svelte.d.ts +19 -0
- package/dist/plot/box/Violin.svelte +14 -0
- package/dist/plot/box/Violin.svelte.d.ts +70 -0
- package/dist/plot/box/box-plot.d.ts +56 -0
- package/dist/plot/box/box-plot.js +129 -0
- package/dist/plot/box/index.d.ts +5 -0
- package/dist/plot/box/index.js +5 -0
- package/dist/plot/box/kde.d.ts +17 -0
- package/dist/plot/box/kde.js +160 -0
- package/dist/plot/box/quantile.d.ts +3 -0
- package/dist/plot/box/quantile.js +53 -0
- package/dist/plot/{auto-place.d.ts → core/auto-place.d.ts} +1 -1
- package/dist/plot/{auto-place.js → core/auto-place.js} +6 -3
- package/dist/plot/core/axis-utils.d.ts +46 -0
- package/dist/plot/core/axis-utils.js +110 -0
- package/dist/plot/{AxisLabel.svelte → core/components/AxisLabel.svelte} +2 -2
- package/dist/plot/{AxisLabel.svelte.d.ts → core/components/AxisLabel.svelte.d.ts} +1 -1
- package/dist/plot/{ColorBar.svelte → core/components/ColorBar.svelte} +41 -38
- package/dist/plot/{ColorBar.svelte.d.ts → core/components/ColorBar.svelte.d.ts} +7 -6
- package/dist/plot/{ColorScaleSelect.svelte → core/components/ColorScaleSelect.svelte} +4 -3
- package/dist/plot/{ColorScaleSelect.svelte.d.ts → core/components/ColorScaleSelect.svelte.d.ts} +2 -2
- package/dist/plot/core/components/ControlPane.svelte +46 -0
- package/dist/plot/core/components/ControlPane.svelte.d.ts +13 -0
- package/dist/plot/{FillArea.svelte → core/components/FillArea.svelte} +17 -6
- package/dist/plot/{FillArea.svelte.d.ts → core/components/FillArea.svelte.d.ts} +1 -1
- package/dist/plot/{InteractiveAxisLabel.svelte → core/components/InteractiveAxisLabel.svelte} +3 -3
- package/dist/plot/{InteractiveAxisLabel.svelte.d.ts → core/components/InteractiveAxisLabel.svelte.d.ts} +2 -2
- package/dist/plot/{Line.svelte → core/components/Line.svelte} +33 -15
- package/dist/plot/{Line.svelte.d.ts → core/components/Line.svelte.d.ts} +3 -2
- package/dist/plot/{PlotAxis.svelte → core/components/PlotAxis.svelte} +9 -6
- package/dist/plot/{PlotAxis.svelte.d.ts → core/components/PlotAxis.svelte.d.ts} +5 -3
- package/dist/plot/{PlotControls.svelte → core/components/PlotControls.svelte} +17 -29
- package/dist/plot/core/components/PlotControls.svelte.d.ts +4 -0
- package/dist/plot/{PlotLegend.svelte → core/components/PlotLegend.svelte} +21 -10
- package/dist/plot/{PlotLegend.svelte.d.ts → core/components/PlotLegend.svelte.d.ts} +3 -2
- package/dist/plot/{PlotTooltip.svelte → core/components/PlotTooltip.svelte} +17 -1
- package/dist/plot/{PlotTooltip.svelte.d.ts → core/components/PlotTooltip.svelte.d.ts} +8 -0
- package/dist/plot/{PortalSelect.svelte → core/components/PortalSelect.svelte} +11 -7
- package/dist/plot/{ReferenceLine.svelte → core/components/ReferenceLine.svelte} +3 -3
- package/dist/plot/{ReferenceLine.svelte.d.ts → core/components/ReferenceLine.svelte.d.ts} +1 -1
- package/dist/plot/{ReferenceLine3D.svelte → core/components/ReferenceLine3D.svelte} +5 -5
- package/dist/plot/{ReferenceLine3D.svelte.d.ts → core/components/ReferenceLine3D.svelte.d.ts} +5 -5
- package/dist/plot/{ReferencePlane.svelte → core/components/ReferencePlane.svelte} +8 -8
- package/dist/plot/{ReferencePlane.svelte.d.ts → core/components/ReferencePlane.svelte.d.ts} +5 -5
- package/dist/plot/{ZeroLines.svelte → core/components/ZeroLines.svelte} +3 -3
- package/dist/plot/{ZeroLines.svelte.d.ts → core/components/ZeroLines.svelte.d.ts} +3 -3
- package/dist/plot/{ZoomRect.svelte → core/components/ZoomRect.svelte} +1 -1
- package/dist/plot/{ZoomRect.svelte.d.ts → core/components/ZoomRect.svelte.d.ts} +1 -1
- package/dist/plot/core/components/index.d.ts +17 -0
- package/dist/plot/core/components/index.js +17 -0
- package/dist/plot/{data-cleaning.d.ts → core/data-cleaning.d.ts} +71 -1
- package/dist/plot/{data-cleaning.js → core/data-cleaning.js} +21 -23
- package/dist/plot/{data-transform.d.ts → core/data-transform.d.ts} +2 -2
- package/dist/plot/{data-transform.js → core/data-transform.js} +3 -3
- package/dist/plot/core/fill-utils.d.ts +34 -0
- package/dist/plot/core/fill-utils.js +391 -0
- package/dist/plot/core/index.d.ts +10 -0
- package/dist/plot/core/index.js +11 -0
- package/dist/plot/core/interactions.d.ts +39 -0
- package/dist/plot/core/interactions.js +209 -0
- package/dist/plot/{layout.d.ts → core/layout.d.ts} +1 -0
- package/dist/plot/{layout.js → core/layout.js} +16 -8
- package/dist/plot/core/pan-zoom.svelte.d.ts +35 -0
- package/dist/plot/core/pan-zoom.svelte.js +221 -0
- package/dist/plot/core/placed-tween.svelte.d.ts +21 -0
- package/dist/plot/core/placed-tween.svelte.js +68 -0
- package/dist/plot/{reference-line.d.ts → core/reference-line.d.ts} +11 -11
- package/dist/plot/{reference-line.js → core/reference-line.js} +29 -42
- package/dist/plot/core/scales.d.ts +40 -0
- package/dist/plot/{scales.js → core/scales.js} +94 -93
- package/dist/plot/core/svg.d.ts +3 -0
- package/dist/plot/core/svg.js +41 -0
- package/dist/plot/{types.d.ts → core/types.d.ts} +36 -85
- package/dist/plot/{types.js → core/types.js} +1 -1
- package/dist/plot/{utils → core/utils}/label-placement.d.ts +3 -3
- package/dist/plot/{utils → core/utils}/label-placement.js +3 -3
- package/dist/plot/core/utils/series-visibility.d.ts +26 -0
- package/dist/plot/{utils → core/utils}/series-visibility.js +29 -2
- package/dist/plot/core/utils.d.ts +12 -0
- package/dist/plot/core/utils.js +27 -0
- package/dist/plot/{Histogram.svelte → histogram/Histogram.svelte} +174 -551
- package/dist/plot/{Histogram.svelte.d.ts → histogram/Histogram.svelte.d.ts} +2 -2
- package/dist/plot/{HistogramControls.svelte → histogram/HistogramControls.svelte} +6 -6
- package/dist/plot/{HistogramControls.svelte.d.ts → histogram/HistogramControls.svelte.d.ts} +4 -4
- package/dist/plot/histogram/index.d.ts +2 -0
- package/dist/plot/histogram/index.js +2 -0
- package/dist/plot/index.d.ts +8 -41
- package/dist/plot/index.js +10 -39
- package/dist/plot/sankey/Sankey.svelte +697 -0
- package/dist/plot/sankey/Sankey.svelte.d.ts +74 -0
- package/dist/plot/sankey/SankeyControls.svelte +98 -0
- package/dist/plot/sankey/SankeyControls.svelte.d.ts +19 -0
- package/dist/plot/sankey/index.d.ts +4 -0
- package/dist/plot/sankey/index.js +3 -0
- package/dist/plot/sankey/sankey-types.d.ts +42 -0
- package/dist/plot/sankey/sankey-types.js +4 -0
- package/dist/plot/sankey/sankey.d.ts +52 -0
- package/dist/plot/sankey/sankey.js +189 -0
- package/dist/plot/{BinnedScatterPlot.svelte → scatter/BinnedScatterPlot.svelte} +64 -64
- package/dist/plot/{BinnedScatterPlot.svelte.d.ts → scatter/BinnedScatterPlot.svelte.d.ts} +6 -6
- package/dist/plot/{ElementScatter.svelte → scatter/ElementScatter.svelte} +6 -6
- package/dist/plot/{ElementScatter.svelte.d.ts → scatter/ElementScatter.svelte.d.ts} +2 -2
- package/dist/plot/{ScatterPlot.svelte → scatter/ScatterPlot.svelte} +297 -1008
- package/dist/plot/{ScatterPlot.svelte.d.ts → scatter/ScatterPlot.svelte.d.ts} +10 -18
- package/dist/plot/{ScatterPlotControls.svelte → scatter/ScatterPlotControls.svelte} +6 -5
- package/dist/plot/{ScatterPlotControls.svelte.d.ts → scatter/ScatterPlotControls.svelte.d.ts} +2 -2
- package/dist/plot/{ScatterPoint.svelte → scatter/ScatterPoint.svelte} +7 -7
- package/dist/plot/{ScatterPoint.svelte.d.ts → scatter/ScatterPoint.svelte.d.ts} +3 -3
- package/dist/plot/{adaptive-density.d.ts → scatter/adaptive-density.d.ts} +14 -4
- package/dist/plot/{adaptive-density.js → scatter/adaptive-density.js} +46 -20
- package/dist/plot/{binned-scatter-types.d.ts → scatter/binned-scatter-types.d.ts} +5 -12
- package/dist/plot/scatter/index.d.ts +7 -0
- package/dist/plot/scatter/index.js +5 -0
- package/dist/plot/scatter/scatter-data.d.ts +19 -0
- package/dist/plot/scatter/scatter-data.js +212 -0
- package/dist/plot/{ScatterPlot3D.svelte → scatter-3d/ScatterPlot3D.svelte} +25 -34
- package/dist/plot/{ScatterPlot3D.svelte.d.ts → scatter-3d/ScatterPlot3D.svelte.d.ts} +9 -17
- package/dist/plot/{ScatterPlot3DControls.svelte → scatter-3d/ScatterPlot3DControls.svelte} +14 -14
- package/dist/plot/{ScatterPlot3DControls.svelte.d.ts → scatter-3d/ScatterPlot3DControls.svelte.d.ts} +6 -6
- package/dist/plot/{ScatterPlot3DScene.svelte → scatter-3d/ScatterPlot3DScene.svelte} +129 -128
- package/dist/plot/{ScatterPlot3DScene.svelte.d.ts → scatter-3d/ScatterPlot3DScene.svelte.d.ts} +6 -15
- package/dist/plot/{Surface3D.svelte → scatter-3d/Surface3D.svelte} +7 -6
- package/dist/plot/{Surface3D.svelte.d.ts → scatter-3d/Surface3D.svelte.d.ts} +5 -4
- package/dist/plot/scatter-3d/index.d.ts +4 -0
- package/dist/plot/scatter-3d/index.js +4 -0
- package/dist/plot/sunburst/Sunburst.svelte +1041 -0
- package/dist/plot/sunburst/Sunburst.svelte.d.ts +97 -0
- package/dist/plot/sunburst/SunburstControls.svelte +200 -0
- package/dist/plot/sunburst/SunburstControls.svelte.d.ts +26 -0
- package/dist/plot/sunburst/index.d.ts +4 -0
- package/dist/plot/sunburst/index.js +4 -0
- package/dist/plot/sunburst/render.d.ts +34 -0
- package/dist/plot/sunburst/render.js +122 -0
- package/dist/plot/sunburst/sunburst.d.ts +62 -0
- package/dist/plot/sunburst/sunburst.js +269 -0
- package/dist/rdf/RdfPlot.svelte +2 -1
- package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
- package/dist/rdf/calc-rdf.js +11 -24
- package/dist/sanitize.js +14 -3
- package/dist/scene/SceneCamera.svelte +62 -0
- package/dist/scene/SceneCamera.svelte.d.ts +19 -0
- package/dist/scene/bind-renderer.svelte.d.ts +2 -0
- package/dist/scene/bind-renderer.svelte.js +14 -0
- package/dist/scene/index.d.ts +4 -0
- package/dist/scene/index.js +5 -0
- package/dist/scene/props.js +52 -0
- package/dist/scene/types.d.ts +26 -0
- package/dist/scene/types.js +1 -0
- package/dist/settings.d.ts +79 -3
- package/dist/settings.js +321 -1
- package/dist/spectral/Bands.svelte +47 -36
- package/dist/spectral/Bands.svelte.d.ts +6 -6
- package/dist/spectral/BandsAndDos.svelte +23 -25
- package/dist/spectral/BrillouinBandsDos.svelte +42 -30
- package/dist/spectral/Dos.svelte +15 -23
- package/dist/spectral/Dos.svelte.d.ts +4 -3
- package/dist/spectral/helpers.d.ts +8 -6
- package/dist/spectral/helpers.js +137 -65
- package/dist/state.svelte.d.ts +0 -7
- package/dist/state.svelte.js +0 -6
- package/dist/structure/Arrow.svelte +2 -4
- package/dist/structure/AtomLegend.svelte +8 -9
- package/dist/structure/AtomLegend.svelte.d.ts +1 -1
- package/dist/structure/CanvasTooltip.svelte +1 -0
- package/dist/structure/CellSelect.svelte +12 -5
- package/dist/structure/CellSelect.svelte.d.ts +2 -1
- package/dist/structure/Cylinder.svelte +12 -8
- package/dist/structure/Cylinder.svelte.d.ts +4 -1
- package/dist/structure/Lattice.svelte +2 -2
- package/dist/structure/Structure.svelte +365 -423
- package/dist/structure/Structure.svelte.d.ts +5 -15
- package/dist/structure/StructureControls.svelte +217 -2
- package/dist/structure/StructureControls.svelte.d.ts +5 -3
- package/dist/structure/StructureExportPane.svelte +54 -156
- package/dist/structure/StructureExportPane.svelte.d.ts +4 -5
- package/dist/structure/StructureInfoPane.svelte +10 -9
- package/dist/structure/StructureInfoPane.svelte.d.ts +5 -5
- package/dist/structure/StructureScene.svelte +376 -208
- package/dist/structure/StructureScene.svelte.d.ts +22 -20
- package/dist/structure/{label-placement.d.ts → atom-label-placement.d.ts} +3 -3
- package/dist/structure/{label-placement.js → atom-label-placement.js} +15 -5
- package/dist/structure/atom-properties.d.ts +1 -1
- package/dist/structure/atom-properties.js +17 -22
- package/dist/structure/bond-order-perception.js +3 -5
- package/dist/structure/bonding.d.ts +4 -0
- package/dist/structure/bonding.js +134 -63
- package/dist/structure/export.d.ts +24 -4
- package/dist/structure/export.js +89 -143
- package/dist/structure/index.d.ts +4 -4
- package/dist/structure/index.js +3 -3
- package/dist/structure/measure.d.ts +3 -2
- package/dist/structure/measure.js +6 -5
- package/dist/structure/parse.d.ts +3 -2
- package/dist/structure/parse.js +419 -438
- package/dist/structure/partial-occupancy.d.ts +0 -1
- package/dist/structure/partial-occupancy.js +1 -1
- package/dist/structure/pbc.d.ts +1 -1
- package/dist/structure/pbc.js +190 -13
- package/dist/structure/polyhedra.d.ts +41 -0
- package/dist/structure/polyhedra.js +602 -0
- package/dist/structure/site.d.ts +4 -0
- package/dist/structure/site.js +1 -0
- package/dist/structure/supercell.js +3 -2
- package/dist/structure/validation.js +5 -6
- package/dist/symmetry/SymmetryElementControls.svelte +69 -0
- package/dist/symmetry/SymmetryElementControls.svelte.d.ts +9 -0
- package/dist/symmetry/SymmetryElements.svelte +354 -0
- package/dist/symmetry/SymmetryElements.svelte.d.ts +24 -0
- package/dist/symmetry/SymmetryStats.svelte +113 -8
- package/dist/symmetry/WyckoffTable.svelte +68 -7
- package/dist/symmetry/WyckoffTable.svelte.d.ts +3 -0
- package/dist/symmetry/cell-transform.js +7 -14
- package/dist/symmetry/index.d.ts +14 -4
- package/dist/symmetry/index.js +291 -72
- package/dist/symmetry/spacegroups.d.ts +12 -1
- package/dist/symmetry/spacegroups.js +63 -14
- package/dist/symmetry/symmetry-elements.d.ts +33 -0
- package/dist/symmetry/symmetry-elements.js +521 -0
- package/dist/symmetry/wyckoff-db.d.ts +9 -0
- package/dist/symmetry/wyckoff-db.js +87 -0
- package/dist/table/HeatmapTable.svelte +66 -25
- package/dist/table/HeatmapTable.svelte.d.ts +1 -1
- package/dist/table/index.d.ts +1 -3
- package/dist/table/index.js +1 -1
- package/dist/theme/index.js +8 -8
- package/dist/tooltip/KCoords.svelte +45 -0
- package/dist/tooltip/KCoords.svelte.d.ts +8 -0
- package/dist/tooltip/index.d.ts +1 -0
- package/dist/tooltip/index.js +1 -0
- package/dist/trajectory/Trajectory.svelte +123 -100
- package/dist/trajectory/Trajectory.svelte.d.ts +11 -22
- package/dist/trajectory/TrajectoryExportPane.svelte +17 -25
- package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +4 -5
- package/dist/trajectory/TrajectoryInfoPane.svelte +5 -3
- package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +3 -2
- package/dist/trajectory/constants.js +6 -2
- package/dist/trajectory/extract.js +17 -37
- package/dist/trajectory/format-detect.d.ts +1 -1
- package/dist/trajectory/format-detect.js +27 -19
- package/dist/trajectory/frame-reader.d.ts +0 -1
- package/dist/trajectory/frame-reader.js +63 -162
- package/dist/trajectory/helpers.d.ts +10 -2
- package/dist/trajectory/helpers.js +56 -36
- package/dist/trajectory/index.js +1 -1
- package/dist/trajectory/parse/ase.d.ts +9 -1
- package/dist/trajectory/parse/ase.js +47 -32
- package/dist/trajectory/parse/diagnostics.d.ts +3 -0
- package/dist/trajectory/parse/diagnostics.js +14 -0
- package/dist/trajectory/parse/hdf5.js +1 -1
- package/dist/trajectory/parse/index.d.ts +1 -1
- package/dist/trajectory/parse/index.js +65 -105
- package/dist/trajectory/parse/lammps.d.ts +0 -2
- package/dist/trajectory/parse/lammps.js +8 -6
- package/dist/trajectory/parse/pymatgen.d.ts +2 -0
- package/dist/trajectory/parse/pymatgen.js +74 -0
- package/dist/trajectory/parse/vasp.js +38 -18
- package/dist/trajectory/parse/xyz.d.ts +13 -1
- package/dist/trajectory/parse/xyz.js +102 -94
- package/dist/trajectory/plotting.d.ts +1 -2
- package/dist/trajectory/plotting.js +16 -113
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +7 -5
- package/dist/xrd/XrdPlot.svelte +16 -30
- package/dist/xrd/broadening.d.ts +2 -1
- package/dist/xrd/calc-xrd.js +18 -20
- package/dist/xrd/index.d.ts +2 -2
- package/dist/xrd/parse.js +2 -2
- package/package.json +43 -26
- package/dist/element/data.json +0 -11864
- package/dist/fermi-surface/marching-cubes.d.ts +0 -2
- package/dist/fermi-surface/marching-cubes.js +0 -2
- package/dist/plot/PlotControls.svelte.d.ts +0 -4
- package/dist/plot/axis-utils.d.ts +0 -19
- package/dist/plot/axis-utils.js +0 -78
- package/dist/plot/defaults.d.ts +0 -19
- package/dist/plot/defaults.js +0 -9
- package/dist/plot/fill-utils.d.ts +0 -46
- package/dist/plot/fill-utils.js +0 -322
- package/dist/plot/hover-lock.svelte.d.ts +0 -14
- package/dist/plot/hover-lock.svelte.js +0 -46
- package/dist/plot/interactions.d.ts +0 -12
- package/dist/plot/interactions.js +0 -101
- package/dist/plot/scales.d.ts +0 -48
- package/dist/plot/svg.d.ts +0 -1
- package/dist/plot/svg.js +0 -11
- package/dist/plot/utils/series-visibility.d.ts +0 -15
- package/dist/plot/utils.d.ts +0 -1
- package/dist/plot/utils.js +0 -14
- /package/dist/plot/{PortalSelect.svelte.d.ts → core/components/PortalSelect.svelte.d.ts} +0 -0
- /package/dist/plot/{binned-scatter-types.js → scatter/binned-scatter-types.js} +0 -0
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { BrillouinZoneData } from '../brillouin'
|
|
3
|
-
import {
|
|
4
|
-
|
|
3
|
+
import {
|
|
4
|
+
cartesian_to_fractional,
|
|
5
|
+
default_camera_position,
|
|
6
|
+
k_lattice_inverse,
|
|
7
|
+
k_space_size,
|
|
8
|
+
polyhedron_centroid,
|
|
9
|
+
polyhedron_geometry,
|
|
10
|
+
ReciprocalVectors,
|
|
11
|
+
} from '../brillouin'
|
|
12
|
+
import type { D3InterpolateName } from '../colors'
|
|
13
|
+
import { get_d3_interpolator } from '../colors'
|
|
14
|
+
import type { Matrix4Tuple, Vec2, Vec3 } from '../math'
|
|
5
15
|
import * as math from '../math'
|
|
6
|
-
import
|
|
16
|
+
import { bind_renderer, build_orbit_props, SceneCamera } from '../scene'
|
|
17
|
+
import type { SceneControlProps, ThreltePointerEvent } from '../scene'
|
|
7
18
|
import { DEFAULTS } from '../settings'
|
|
8
|
-
import {
|
|
9
|
-
import { T
|
|
19
|
+
import { Cylinder } from '../structure'
|
|
20
|
+
import { T } from '@threlte/core'
|
|
10
21
|
import * as extras from '@threlte/extras'
|
|
11
|
-
import * as d3_sc from 'd3-scale-chromatic'
|
|
12
|
-
import type { ComponentProps } from 'svelte'
|
|
13
22
|
import { SvelteMap } from 'svelte/reactivity'
|
|
14
|
-
import type { Camera, Scene } from 'three'
|
|
15
23
|
import {
|
|
16
24
|
BackSide,
|
|
17
25
|
BufferAttribute,
|
|
@@ -33,9 +41,6 @@
|
|
|
33
41
|
RepresentationMode,
|
|
34
42
|
} from './types'
|
|
35
43
|
|
|
36
|
-
// Threlte pointer event type for mesh interactions
|
|
37
|
-
type ThreltePointerEvent = { point: Vector3; nativeEvent: PointerEvent }
|
|
38
|
-
|
|
39
44
|
let {
|
|
40
45
|
fermi_data = $bindable(),
|
|
41
46
|
bz_data = $bindable(),
|
|
@@ -75,15 +80,13 @@
|
|
|
75
80
|
directional_light = DEFAULTS.structure.directional_light,
|
|
76
81
|
gizmo = DEFAULTS.structure.show_gizmo,
|
|
77
82
|
auto_rotate = DEFAULTS.structure.auto_rotate,
|
|
78
|
-
camera_is_moving = $bindable(false),
|
|
79
83
|
scene = $bindable(),
|
|
80
84
|
camera = $bindable(),
|
|
81
85
|
hover_data = $bindable<FermiHoverData | null>(null),
|
|
82
|
-
}: {
|
|
86
|
+
}: SceneControlProps & {
|
|
83
87
|
fermi_data?: FermiSurfaceData
|
|
84
88
|
bz_data?: BrillouinZoneData
|
|
85
89
|
camera_position?: Vec3 | undefined
|
|
86
|
-
camera_projection?: CameraProjection
|
|
87
90
|
color_property?: ColorProperty
|
|
88
91
|
color_scale?: string
|
|
89
92
|
representation?: RepresentationMode
|
|
@@ -101,33 +104,20 @@
|
|
|
101
104
|
clip_position?: number
|
|
102
105
|
clip_flip?: boolean
|
|
103
106
|
vector_scale?: number
|
|
104
|
-
rotation_damping?: number
|
|
105
|
-
max_zoom?: number
|
|
106
|
-
min_zoom?: number
|
|
107
|
-
rotate_speed?: number
|
|
108
|
-
zoom_speed?: number
|
|
109
|
-
pan_speed?: number
|
|
110
|
-
zoom_to_cursor?: boolean
|
|
111
|
-
fov?: number
|
|
112
|
-
initial_zoom?: number
|
|
113
|
-
ambient_light?: number
|
|
114
|
-
directional_light?: number
|
|
115
|
-
gizmo?: boolean | ComponentProps<typeof extras.Gizmo>
|
|
116
|
-
auto_rotate?: number
|
|
117
|
-
camera_is_moving?: boolean
|
|
118
|
-
scene?: Scene
|
|
119
|
-
camera?: Camera
|
|
120
107
|
hover_data?: FermiHoverData | null
|
|
121
108
|
} = $props()
|
|
122
109
|
|
|
123
|
-
const threlte =
|
|
110
|
+
const threlte = bind_renderer(
|
|
111
|
+
(threlte_scene, threlte_camera) => {
|
|
112
|
+
scene = threlte_scene
|
|
113
|
+
camera = threlte_camera
|
|
114
|
+
},
|
|
115
|
+
// Enable object sorting for proper depth ordering of transparent surfaces
|
|
116
|
+
(renderer) => (renderer.sortObjects = true),
|
|
117
|
+
)
|
|
124
118
|
|
|
125
|
-
//
|
|
126
|
-
|
|
127
|
-
if (!fermi_data?.k_lattice) return 10
|
|
128
|
-
const mags = fermi_data.k_lattice.map((vec) => Math.hypot(...vec))
|
|
129
|
-
return mags.reduce((sum, mag) => sum + mag, 0) / 3
|
|
130
|
-
}
|
|
119
|
+
// Characteristic scene size, used for clipping and camera positioning
|
|
120
|
+
const scene_size = $derived(k_space_size(fermi_data?.k_lattice))
|
|
131
121
|
|
|
132
122
|
// Compute clipping plane based on axis and position
|
|
133
123
|
// Plane equation: dot(normal, point) + constant >= 0 means point is visible
|
|
@@ -138,7 +128,7 @@
|
|
|
138
128
|
const normal_arr: Vec3 = [0, 0, 0]
|
|
139
129
|
normal_arr[axis_idx] = clip_flip ? -1 : 1
|
|
140
130
|
|
|
141
|
-
const scaled_position = clip_position *
|
|
131
|
+
const scaled_position = clip_position * scene_size
|
|
142
132
|
// constant = -position for normal case (keep points >= position)
|
|
143
133
|
// constant = +position for flipped case (keep points <= position)
|
|
144
134
|
const constant = clip_flip ? scaled_position : -scaled_position
|
|
@@ -159,24 +149,8 @@
|
|
|
159
149
|
}
|
|
160
150
|
})
|
|
161
151
|
|
|
162
|
-
$effect(() => {
|
|
163
|
-
scene = threlte.scene
|
|
164
|
-
camera = threlte.camera.current
|
|
165
|
-
if (threlte.renderer) {
|
|
166
|
-
// Enable object sorting for proper depth ordering of transparent surfaces
|
|
167
|
-
threlte.renderer.sortObjects = true
|
|
168
|
-
Object.assign(threlte.renderer.domElement, { __renderer: threlte.renderer })
|
|
169
|
-
}
|
|
170
|
-
})
|
|
171
|
-
|
|
172
152
|
extras.interactivity()
|
|
173
153
|
|
|
174
|
-
// Get color interpolator from d3
|
|
175
|
-
const get_interpolator = (name: string): (t: number) => string => {
|
|
176
|
-
const fn = d3_sc[name as keyof typeof d3_sc]
|
|
177
|
-
return typeof fn === `function` ? fn : d3_sc.interpolateViridis
|
|
178
|
-
}
|
|
179
|
-
|
|
180
154
|
// Filter surfaces based on selected bands
|
|
181
155
|
let visible_surfaces = $derived(
|
|
182
156
|
fermi_data?.isosurfaces.filter((surface) =>
|
|
@@ -216,7 +190,7 @@
|
|
|
216
190
|
})
|
|
217
191
|
|
|
218
192
|
// Compute property range for color scaling
|
|
219
|
-
let property_range = $derived.by(():
|
|
193
|
+
let property_range = $derived.by((): Vec2 => {
|
|
220
194
|
if (color_property !== `velocity` && color_property !== `custom`) {
|
|
221
195
|
return [0, 1]
|
|
222
196
|
}
|
|
@@ -247,7 +221,7 @@
|
|
|
247
221
|
const normalized = max_val > min_val
|
|
248
222
|
? (prop - min_val) / (max_val - min_val)
|
|
249
223
|
: 0.5
|
|
250
|
-
return
|
|
224
|
+
return get_d3_interpolator(color_scale as D3InterpolateName)(normalized)
|
|
251
225
|
}
|
|
252
226
|
// Spin coloring
|
|
253
227
|
if (color_property === `spin` && surface.spin) {
|
|
@@ -377,108 +351,30 @@
|
|
|
377
351
|
}
|
|
378
352
|
})
|
|
379
353
|
|
|
380
|
-
//
|
|
381
|
-
const rotation_target = $derived
|
|
382
|
-
if (bz_data?.vertices && bz_data.vertices.length > 0) {
|
|
383
|
-
const sum = bz_data.vertices.reduce(
|
|
384
|
-
(acc, vert) => math.add(acc, vert),
|
|
385
|
-
[0, 0, 0] as Vec3,
|
|
386
|
-
)
|
|
387
|
-
return math.scale(sum, 1 / bz_data.vertices.length)
|
|
388
|
-
}
|
|
389
|
-
return [0, 0, 0]
|
|
390
|
-
})
|
|
391
|
-
|
|
392
|
-
// Scene size for camera positioning (uses helper function defined earlier)
|
|
393
|
-
const scene_size = $derived(get_scene_size())
|
|
354
|
+
// BZ centroid as rotation center
|
|
355
|
+
const rotation_target = $derived(polyhedron_centroid(bz_data?.vertices))
|
|
394
356
|
|
|
395
|
-
const computed_camera_position = $derived
|
|
396
|
-
()
|
|
397
|
-
camera_position || ([10, 3, 8].map((coord) =>
|
|
398
|
-
coord * Math.max(1, scene_size)
|
|
399
|
-
) as Vec3),
|
|
357
|
+
const computed_camera_position = $derived(
|
|
358
|
+
camera_position || default_camera_position(scene_size),
|
|
400
359
|
)
|
|
401
360
|
|
|
402
|
-
const
|
|
403
|
-
|
|
404
|
-
className: `responsive-gizmo`,
|
|
405
|
-
...Object.fromEntries(
|
|
406
|
-
[...AXIS_COLORS, ...NEG_AXIS_COLORS].map(([axis, color, hover]) => [
|
|
407
|
-
axis,
|
|
408
|
-
{
|
|
409
|
-
color,
|
|
410
|
-
labelColor: `#111`,
|
|
411
|
-
opacity: axis.startsWith(`n`) ? 0.9 : 0.8,
|
|
412
|
-
hover: {
|
|
413
|
-
color: hover,
|
|
414
|
-
labelColor: `#222`,
|
|
415
|
-
opacity: axis.startsWith(`n`) ? 1 : 0.9,
|
|
416
|
-
},
|
|
417
|
-
},
|
|
418
|
-
]),
|
|
419
|
-
),
|
|
420
|
-
...(typeof gizmo === `object` ? gizmo : {}),
|
|
421
|
-
offset: { left: 5, bottom: 5 },
|
|
422
|
-
})
|
|
423
|
-
|
|
424
|
-
const is_ortho = $derived(camera_projection === `orthographic`)
|
|
425
|
-
const orbit_controls_props = $derived({
|
|
426
|
-
position: [0, 0, 0],
|
|
361
|
+
const orbit_controls_props = $derived(build_orbit_props({
|
|
362
|
+
camera_projection,
|
|
427
363
|
target: rotation_target,
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
autoRotate: Boolean(auto_rotate),
|
|
438
|
-
autoRotateSpeed: auto_rotate,
|
|
439
|
-
enableDamping: Boolean(rotation_damping),
|
|
440
|
-
dampingFactor: rotation_damping,
|
|
441
|
-
onstart: () => (camera_is_moving = true),
|
|
442
|
-
onend: () => (camera_is_moving = false),
|
|
443
|
-
})
|
|
444
|
-
|
|
445
|
-
const vector_colors = [`red`, `green`, `blue`]
|
|
446
|
-
const vector_labels = [`b₁`, `b₂`, `b₃`]
|
|
364
|
+
rotate_speed,
|
|
365
|
+
zoom_speed,
|
|
366
|
+
zoom_to_cursor,
|
|
367
|
+
pan_speed,
|
|
368
|
+
max_zoom,
|
|
369
|
+
min_zoom,
|
|
370
|
+
auto_rotate,
|
|
371
|
+
rotation_damping,
|
|
372
|
+
}))
|
|
447
373
|
|
|
448
374
|
// Create BZ geometry
|
|
449
|
-
const bz_geometry = $derived
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
const positions: number[] = []
|
|
453
|
-
const normals: number[] = []
|
|
454
|
-
|
|
455
|
-
for (const face of bz_data.faces) {
|
|
456
|
-
if (face.length < 3) continue
|
|
457
|
-
|
|
458
|
-
for (let face_idx = 1; face_idx < face.length - 1; face_idx++) {
|
|
459
|
-
const indices = [face[0], face[face_idx], face[face_idx + 1]]
|
|
460
|
-
if (indices.some((idx) => idx < 0 || idx >= bz_data.vertices.length)) continue
|
|
461
|
-
const [v0, v1, v2] = indices.map((idx) => bz_data.vertices[idx])
|
|
462
|
-
positions.push(...v0, ...v1, ...v2)
|
|
463
|
-
|
|
464
|
-
const e1: Vec3 = math.subtract(v1, v0)
|
|
465
|
-
const e2: Vec3 = math.subtract(v2, v0)
|
|
466
|
-
const normal_vec = math.cross_3d(e1, e2)
|
|
467
|
-
const len = Math.hypot(...normal_vec)
|
|
468
|
-
const norm = len > 1e-10 ? normal_vec.map((coord) => coord / len) : [0, 0, 0]
|
|
469
|
-
normals.push(...norm, ...norm, ...norm)
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
|
|
473
|
-
const geometry = new BufferGeometry()
|
|
474
|
-
geometry.setAttribute(
|
|
475
|
-
`position`,
|
|
476
|
-
new BufferAttribute(new Float32Array(positions), 3),
|
|
477
|
-
)
|
|
478
|
-
geometry.setAttribute(`normal`, new BufferAttribute(new Float32Array(normals), 3))
|
|
479
|
-
geometry.computeBoundingSphere()
|
|
480
|
-
return geometry
|
|
481
|
-
})
|
|
375
|
+
const bz_geometry = $derived(
|
|
376
|
+
bz_data ? polyhedron_geometry(bz_data.vertices, bz_data.faces) : null,
|
|
377
|
+
)
|
|
482
378
|
|
|
483
379
|
$effect(() => {
|
|
484
380
|
const prev_geometry = bz_geometry
|
|
@@ -516,26 +412,12 @@
|
|
|
516
412
|
return { ...base, color: surface_color }
|
|
517
413
|
}
|
|
518
414
|
|
|
519
|
-
//
|
|
520
|
-
const k_lattice_inv = $derived
|
|
521
|
-
if (!fermi_data?.k_lattice) return null
|
|
522
|
-
try {
|
|
523
|
-
return math.matrix_inverse_3x3(fermi_data.k_lattice)
|
|
524
|
-
} catch {
|
|
525
|
-
return null
|
|
526
|
-
}
|
|
527
|
-
})
|
|
415
|
+
// Inverse of k_lattice for Cartesian->fractional conversion (cached)
|
|
416
|
+
const k_lattice_inv = $derived(k_lattice_inverse(fermi_data?.k_lattice))
|
|
528
417
|
|
|
529
418
|
// Throttle state for pointer move events to avoid O(n) vertex lookups causing jank
|
|
530
419
|
let last_hover_time = 0
|
|
531
420
|
|
|
532
|
-
// Convert Cartesian k-coordinates to fractional (reciprocal lattice units)
|
|
533
|
-
// Returns null if k_lattice is unavailable or inversion failed
|
|
534
|
-
function cartesian_to_fractional(cart: Vec3): Vec3 | null {
|
|
535
|
-
if (!k_lattice_inv) return null
|
|
536
|
-
return math.mat3x3_vec3_multiply(k_lattice_inv, cart)
|
|
537
|
-
}
|
|
538
|
-
|
|
539
421
|
// Find index of nearest vertex to a point in a surface
|
|
540
422
|
function find_nearest_vertex(surface: Isosurface, point: Vec3): number {
|
|
541
423
|
let [min_dist, nearest_idx] = [Infinity, 0]
|
|
@@ -564,7 +446,7 @@
|
|
|
564
446
|
): FermiHoverData {
|
|
565
447
|
// event.point is in world space (after sym_matrix transformation)
|
|
566
448
|
const position_cartesian: Vec3 = [event.point.x, event.point.y, event.point.z]
|
|
567
|
-
const position_fractional = cartesian_to_fractional(position_cartesian)
|
|
449
|
+
const position_fractional = cartesian_to_fractional(k_lattice_inv, position_cartesian)
|
|
568
450
|
|
|
569
451
|
// Transform world-space point to local space for nearest-vertex lookup
|
|
570
452
|
// surface.vertices are in local space (raw geometry before sym_matrix)
|
|
@@ -610,26 +492,20 @@
|
|
|
610
492
|
last_hover_time = now
|
|
611
493
|
hover_data = create_hover_data(event, surface, surface_color, sym_idx, sym_matrix)
|
|
612
494
|
}
|
|
495
|
+
|
|
496
|
+
const clear_hover = () => {
|
|
497
|
+
hover_data = null
|
|
498
|
+
}
|
|
613
499
|
</script>
|
|
614
500
|
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
{
|
|
622
|
-
|
|
623
|
-
makeDefault
|
|
624
|
-
position={computed_camera_position}
|
|
625
|
-
zoom={initial_zoom}
|
|
626
|
-
near={-100}
|
|
627
|
-
>
|
|
628
|
-
<extras.OrbitControls {...orbit_controls_props}>
|
|
629
|
-
{#if gizmo}<extras.Gizmo {...gizmo_props} />{/if}
|
|
630
|
-
</extras.OrbitControls>
|
|
631
|
-
</T.OrthographicCamera>
|
|
632
|
-
{/if}
|
|
501
|
+
<SceneCamera
|
|
502
|
+
{camera_projection}
|
|
503
|
+
position={computed_camera_position}
|
|
504
|
+
{fov}
|
|
505
|
+
zoom={initial_zoom}
|
|
506
|
+
orbit_props={orbit_controls_props}
|
|
507
|
+
{gizmo}
|
|
508
|
+
/>
|
|
633
509
|
|
|
634
510
|
<T.DirectionalLight position={[3, 10, 10]} intensity={directional_light} />
|
|
635
511
|
<T.DirectionalLight position={[-3, -5, -10]} intensity={directional_light * 0.5} />
|
|
@@ -657,21 +533,11 @@
|
|
|
657
533
|
|
|
658
534
|
<!-- Reciprocal lattice vectors -->
|
|
659
535
|
{#if show_vectors && fermi_data?.k_lattice}
|
|
660
|
-
|
|
661
|
-
{
|
|
662
|
-
{
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
vector={scaled_vec}
|
|
666
|
-
color={vector_colors[idx]}
|
|
667
|
-
scale={1}
|
|
668
|
-
/>
|
|
669
|
-
<extras.HTML center position={label_position}>
|
|
670
|
-
<span style:color={vector_colors[idx]} style:font-size="1.2em">
|
|
671
|
-
{vector_labels[idx]}
|
|
672
|
-
</span>
|
|
673
|
-
</extras.HTML>
|
|
674
|
-
{/each}
|
|
536
|
+
<ReciprocalVectors
|
|
537
|
+
k_lattice={fermi_data.k_lattice}
|
|
538
|
+
{vector_scale}
|
|
539
|
+
size={scene_size}
|
|
540
|
+
/>
|
|
675
541
|
{/if}
|
|
676
542
|
|
|
677
543
|
<!-- Fermi surfaces (with optional symmetry tiling) -->
|
|
@@ -697,9 +563,7 @@
|
|
|
697
563
|
{renderOrder}
|
|
698
564
|
onpointermove={(event: ThreltePointerEvent) =>
|
|
699
565
|
handle_pointer_move(event, surface, surface_color, sym_idx, sym_matrix)}
|
|
700
|
-
onpointerleave={
|
|
701
|
-
hover_data = null
|
|
702
|
-
}}
|
|
566
|
+
onpointerleave={clear_hover}
|
|
703
567
|
>
|
|
704
568
|
<T.MeshBasicMaterial
|
|
705
569
|
color={surface_color}
|
|
@@ -720,9 +584,7 @@
|
|
|
720
584
|
renderOrder={renderOrder * 2}
|
|
721
585
|
onpointermove={(event: ThreltePointerEvent) =>
|
|
722
586
|
handle_pointer_move(event, surface, surface_color, sym_idx, sym_matrix)}
|
|
723
|
-
onpointerleave={
|
|
724
|
-
hover_data = null
|
|
725
|
-
}}
|
|
587
|
+
onpointerleave={clear_hover}
|
|
726
588
|
>
|
|
727
589
|
<T.MeshStandardMaterial
|
|
728
590
|
{...get_material_props(surface_color, use_vertex_colors, surface_idx, `back`)}
|
|
@@ -739,9 +601,7 @@
|
|
|
739
601
|
renderOrder={renderOrder * 2 + 1}
|
|
740
602
|
onpointermove={(event: ThreltePointerEvent) =>
|
|
741
603
|
handle_pointer_move(event, surface, surface_color, sym_idx, sym_matrix)}
|
|
742
|
-
onpointerleave={
|
|
743
|
-
hover_data = null
|
|
744
|
-
}}
|
|
604
|
+
onpointerleave={clear_hover}
|
|
745
605
|
>
|
|
746
606
|
<T.MeshStandardMaterial
|
|
747
607
|
{...get_material_props(
|
|
@@ -764,9 +624,7 @@
|
|
|
764
624
|
{renderOrder}
|
|
765
625
|
onpointermove={(event: ThreltePointerEvent) =>
|
|
766
626
|
handle_pointer_move(event, surface, surface_color, sym_idx, sym_matrix)}
|
|
767
|
-
onpointerleave={
|
|
768
|
-
hover_data = null
|
|
769
|
-
}}
|
|
627
|
+
onpointerleave={clear_hover}
|
|
770
628
|
>
|
|
771
629
|
<T.MeshStandardMaterial
|
|
772
630
|
{...get_material_props(
|
|
@@ -785,10 +643,3 @@
|
|
|
785
643
|
{/if}
|
|
786
644
|
{/each}
|
|
787
645
|
</T.Group>
|
|
788
|
-
|
|
789
|
-
<style>
|
|
790
|
-
:global(.fermi-surface .responsive-gizmo) {
|
|
791
|
-
width: clamp(70px, 18cqmin, 100px) !important;
|
|
792
|
-
height: clamp(70px, 18cqmin, 100px) !important;
|
|
793
|
-
}
|
|
794
|
-
</style>
|
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import type { BrillouinZoneData } from '../brillouin';
|
|
2
2
|
import type { Vec3 } from '../math';
|
|
3
|
-
import type {
|
|
4
|
-
import * as extras from '@threlte/extras';
|
|
5
|
-
import type { ComponentProps } from 'svelte';
|
|
6
|
-
import type { Camera, Scene } from 'three';
|
|
3
|
+
import type { SceneControlProps } from '../scene';
|
|
7
4
|
import type { ColorProperty, FermiHoverData, FermiSurfaceData, RepresentationMode } from './types';
|
|
8
|
-
type $$ComponentProps = {
|
|
5
|
+
type $$ComponentProps = SceneControlProps & {
|
|
9
6
|
fermi_data?: FermiSurfaceData;
|
|
10
7
|
bz_data?: BrillouinZoneData;
|
|
11
8
|
camera_position?: Vec3 | undefined;
|
|
12
|
-
camera_projection?: CameraProjection;
|
|
13
9
|
color_property?: ColorProperty;
|
|
14
10
|
color_scale?: string;
|
|
15
11
|
representation?: RepresentationMode;
|
|
@@ -27,24 +23,8 @@ type $$ComponentProps = {
|
|
|
27
23
|
clip_position?: number;
|
|
28
24
|
clip_flip?: boolean;
|
|
29
25
|
vector_scale?: number;
|
|
30
|
-
rotation_damping?: number;
|
|
31
|
-
max_zoom?: number;
|
|
32
|
-
min_zoom?: number;
|
|
33
|
-
rotate_speed?: number;
|
|
34
|
-
zoom_speed?: number;
|
|
35
|
-
pan_speed?: number;
|
|
36
|
-
zoom_to_cursor?: boolean;
|
|
37
|
-
fov?: number;
|
|
38
|
-
initial_zoom?: number;
|
|
39
|
-
ambient_light?: number;
|
|
40
|
-
directional_light?: number;
|
|
41
|
-
gizmo?: boolean | ComponentProps<typeof extras.Gizmo>;
|
|
42
|
-
auto_rotate?: number;
|
|
43
|
-
camera_is_moving?: boolean;
|
|
44
|
-
scene?: Scene;
|
|
45
|
-
camera?: Camera;
|
|
46
26
|
hover_data?: FermiHoverData | null;
|
|
47
27
|
};
|
|
48
|
-
declare const FermiSurfaceScene: import("svelte").Component<$$ComponentProps, {}, "
|
|
28
|
+
declare const FermiSurfaceScene: import("svelte").Component<$$ComponentProps, {}, "scene" | "camera" | "camera_projection" | "camera_position" | "surface_opacity" | "bz_data" | "hover_data" | "fermi_data">;
|
|
49
29
|
type FermiSurfaceScene = ReturnType<typeof FermiSurfaceScene>;
|
|
50
30
|
export default FermiSurfaceScene;
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
// Tooltip component for Fermi surface hover information
|
|
3
3
|
// Displays band index, spin, k-coordinates, and optional property values
|
|
4
|
-
import { format_num
|
|
5
|
-
import { TooltipContent } from '../tooltip'
|
|
4
|
+
import { format_num } from '../labels'
|
|
5
|
+
import { KCoords, TooltipContent } from '../tooltip'
|
|
6
6
|
import type { FermiHoverData, FermiTooltipProp } from './types'
|
|
7
7
|
|
|
8
|
-
let {
|
|
9
|
-
hover_data,
|
|
10
|
-
tooltip,
|
|
11
|
-
}: {
|
|
8
|
+
let { hover_data, tooltip }: {
|
|
12
9
|
hover_data: FermiHoverData
|
|
13
10
|
tooltip?: FermiTooltipProp
|
|
14
11
|
} = $props()
|
|
@@ -23,18 +20,10 @@
|
|
|
23
20
|
{/if}
|
|
24
21
|
</div>
|
|
25
22
|
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
</div>
|
|
31
|
-
{#if hover_data.position_fractional}
|
|
32
|
-
<div class="coord-row">
|
|
33
|
-
<span class="coord-label">k (frac):</span>
|
|
34
|
-
<span class="coord-values">{format_vec3(hover_data.position_fractional)}</span>
|
|
35
|
-
</div>
|
|
36
|
-
{/if}
|
|
37
|
-
</div>
|
|
23
|
+
<KCoords
|
|
24
|
+
cartesian={hover_data.position_cartesian}
|
|
25
|
+
fractional={hover_data.position_fractional}
|
|
26
|
+
/>
|
|
38
27
|
|
|
39
28
|
{#if hover_data.property_value != null}
|
|
40
29
|
<div class="property-row">
|
|
@@ -56,7 +45,7 @@
|
|
|
56
45
|
|
|
57
46
|
<style>
|
|
58
47
|
.tooltip-content {
|
|
59
|
-
max-width: var(--tooltip-max-width,
|
|
48
|
+
max-width: var(--tooltip-max-width, 250px);
|
|
60
49
|
}
|
|
61
50
|
.tooltip-title {
|
|
62
51
|
display: flex;
|
|
@@ -78,21 +67,6 @@
|
|
|
78
67
|
background: #377eb8;
|
|
79
68
|
color: white;
|
|
80
69
|
}
|
|
81
|
-
.coords-section {
|
|
82
|
-
margin: 4px 0;
|
|
83
|
-
}
|
|
84
|
-
.coord-row {
|
|
85
|
-
display: flex;
|
|
86
|
-
gap: 4px;
|
|
87
|
-
font-size: 0.9em;
|
|
88
|
-
}
|
|
89
|
-
.coord-label {
|
|
90
|
-
opacity: 0.8;
|
|
91
|
-
min-width: 55px;
|
|
92
|
-
}
|
|
93
|
-
.coord-values {
|
|
94
|
-
font-family: monospace;
|
|
95
|
-
}
|
|
96
70
|
.property-row {
|
|
97
71
|
margin-top: 4px;
|
|
98
72
|
font-size: 0.9em;
|