matterviz 0.4.1 → 0.4.3
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 +48 -60
- package/dist/Icon.svelte +7 -4
- package/dist/MillerIndexInput.svelte +2 -2
- package/dist/api/optimade.js +10 -7
- package/dist/app.css +68 -0
- package/dist/brillouin/BrillouinZone.svelte +90 -91
- 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 +46 -68
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
- package/dist/brillouin/compute.js +10 -16
- package/dist/brillouin/geometry.js +2 -2
- package/dist/chempot-diagram/ChemPotDiagram.svelte +48 -50
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +61 -169
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +1 -1
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +559 -755
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +1 -1
- package/dist/chempot-diagram/async-compute.svelte.js +13 -14
- package/dist/chempot-diagram/color.d.ts +21 -1
- package/dist/chempot-diagram/color.js +70 -1
- package/dist/chempot-diagram/compute.d.ts +7 -0
- package/dist/chempot-diagram/compute.js +85 -26
- package/dist/chempot-diagram/controls-state.svelte.js +1 -1
- package/dist/chempot-diagram/export.js +1 -6
- package/dist/chempot-diagram/temperature.js +9 -10
- package/dist/colors/index.d.ts +0 -4
- package/dist/colors/index.js +19 -20
- package/dist/composition/BarChart.svelte +30 -26
- package/dist/composition/BubbleChart.svelte +17 -17
- package/dist/composition/Composition.svelte +10 -19
- package/dist/composition/Formula.svelte +20 -27
- package/dist/composition/FormulaFilter.svelte +115 -184
- package/dist/composition/PieChart.svelte +55 -41
- package/dist/composition/format.js +7 -9
- 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 +61 -115
- package/dist/constants.d.ts +0 -1
- package/dist/constants.js +17 -26
- 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 -94
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull3D.svelte +127 -186
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull4D.svelte +131 -180
- 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 +18 -22
- 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/gas-thermodynamics.js +21 -53
- package/dist/convex-hull/helpers.d.ts +8 -10
- package/dist/convex-hull/helpers.js +37 -43
- package/dist/convex-hull/hull-state.svelte.d.ts +1 -1
- package/dist/convex-hull/thermodynamics.js +37 -44
- package/dist/coordination/CoordinationBarPlot.svelte +49 -53
- 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 -9
- 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 +44 -67
- package/dist/element/Nucleus.svelte +4 -2
- package/dist/element/data.d.ts +3 -2
- package/dist/element/data.js +5 -1
- package/dist/element/helpers.d.ts +4 -0
- package/dist/element/helpers.js +18 -0
- package/dist/element/index.d.ts +2 -5
- package/dist/element/index.js +4 -19
- 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 +35 -44
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +7 -13
- package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
- package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceScene.svelte +64 -136
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
- package/dist/fermi-surface/compute.js +25 -58
- package/dist/fermi-surface/parse.js +54 -88
- package/dist/file-viewer/JsonBrowser.svelte +1043 -0
- package/dist/file-viewer/JsonBrowser.svelte.d.ts +9 -0
- package/dist/file-viewer/PlotPanel.svelte +350 -0
- package/dist/file-viewer/PlotPanel.svelte.d.ts +9 -0
- package/dist/file-viewer/TrajectoryWithDos.svelte +30 -0
- package/dist/file-viewer/TrajectoryWithDos.svelte.d.ts +10 -0
- package/dist/file-viewer/detect.d.ts +11 -0
- package/dist/file-viewer/detect.js +381 -0
- package/dist/file-viewer/eligibility.d.ts +4 -0
- package/dist/file-viewer/eligibility.js +53 -0
- package/dist/file-viewer/host-protocol.d.ts +50 -0
- package/dist/file-viewer/host-transfer.d.ts +25 -0
- package/dist/file-viewer/host-transfer.js +42 -0
- package/dist/file-viewer/index.d.ts +5 -0
- package/dist/file-viewer/index.js +5 -0
- package/dist/file-viewer/main.d.ts +44 -0
- package/dist/file-viewer/main.js +535 -0
- package/dist/file-viewer/parse.d.ts +9 -0
- package/dist/file-viewer/parse.js +170 -0
- package/dist/file-viewer/plot-utils.d.ts +24 -0
- package/dist/file-viewer/plot-utils.js +191 -0
- package/dist/file-viewer/types.d.ts +4 -0
- package/dist/file-viewer/types.js +5 -0
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +153 -219
- 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/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/io/ExportPane.svelte +11 -7
- package/dist/io/decompress.d.ts +4 -1
- package/dist/io/decompress.js +24 -36
- package/dist/io/export.d.ts +11 -4
- package/dist/io/export.js +75 -19
- package/dist/io/fetch.d.ts +0 -3
- package/dist/io/fetch.js +0 -11
- package/dist/io/file-drop.js +60 -35
- 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.d.ts +2 -0
- package/dist/io/url-drop.js +40 -40
- package/dist/isosurface/Isosurface.svelte +700 -215
- package/dist/isosurface/Isosurface.svelte.d.ts +7 -1
- package/dist/isosurface/IsosurfaceControls.svelte +590 -116
- package/dist/isosurface/IsosurfaceControls.svelte.d.ts +1 -1
- package/dist/isosurface/VolumeSlice.svelte +224 -0
- package/dist/isosurface/VolumeSlice.svelte.d.ts +28 -0
- package/dist/isosurface/coloring.d.ts +20 -0
- package/dist/isosurface/coloring.js +118 -0
- package/dist/isosurface/geometry-worker-types.d.ts +38 -0
- package/dist/isosurface/geometry.worker.d.ts +1 -0
- package/dist/isosurface/geometry.worker.js +59 -0
- package/dist/isosurface/grid.d.ts +10 -0
- package/dist/isosurface/grid.js +31 -0
- package/dist/isosurface/index.d.ts +4 -0
- package/dist/isosurface/index.js +4 -0
- 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/isosurface/profile.d.ts +12 -0
- package/dist/isosurface/profile.js +19 -0
- package/dist/isosurface/sampling.d.ts +34 -0
- package/dist/isosurface/sampling.js +408 -0
- package/dist/isosurface/slice-rendering.d.ts +13 -0
- package/dist/isosurface/slice-rendering.js +79 -0
- package/dist/isosurface/slice.d.ts +22 -2
- package/dist/isosurface/slice.js +200 -116
- package/dist/isosurface/types.d.ts +24 -1
- package/dist/isosurface/types.js +120 -8
- package/dist/json-path.d.ts +4 -0
- package/dist/json-path.js +89 -0
- package/dist/labels.d.ts +6 -2
- package/dist/labels.js +44 -14
- package/dist/layout/FullscreenButton.svelte +2 -1
- package/dist/layout/FullscreenToggle.svelte +10 -4
- package/dist/layout/InfoCard.svelte +8 -21
- 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 +57 -62
- package/dist/layout/SettingsSection.svelte.d.ts +6 -7
- package/dist/layout/SubpageGrid.svelte +3 -1
- package/dist/layout/ViewerChrome.svelte +16 -11
- 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 +22 -59
- package/dist/layout/json-tree/JsonTree.svelte +101 -172
- package/dist/layout/json-tree/JsonValue.svelte +9 -32
- package/dist/layout/json-tree/utils.d.ts +0 -3
- package/dist/layout/json-tree/utils.js +50 -188
- package/dist/marching-cubes.d.ts +8 -1
- package/dist/marching-cubes.js +115 -48
- package/dist/math.d.ts +5 -2
- package/dist/math.js +48 -38
- package/dist/overlays/ContextMenu.svelte +19 -34
- package/dist/overlays/CopyButton.svelte +11 -5
- package/dist/overlays/DragControlTab.svelte +6 -1
- package/dist/overlays/DraggablePane.svelte +110 -74
- package/dist/overlays/DraggablePane.svelte.d.ts +2 -1
- package/dist/overlays/GlassChip.svelte +32 -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 +37 -115
- package/dist/periodic-table/TableInset.svelte +9 -4
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +68 -105
- 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 +4 -9
- 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 +28 -27
- package/dist/phase-diagram/utils.js +2 -3
- package/dist/plot/bar/BarPlot.svelte +461 -426
- 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 +46 -77
- package/dist/plot/bar/data.d.ts +5 -4
- package/dist/plot/bar/data.js +2 -1
- package/dist/plot/box/BoxPlot.svelte +322 -226
- 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.d.ts +1 -1
- package/dist/plot/core/auto-place.js +2 -2
- 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.d.ts +1 -2
- package/dist/plot/core/data-transform.js +9 -15
- 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 +15 -6
- package/dist/plot/core/layout.js +57 -38
- package/dist/plot/core/marginals.d.ts +170 -0
- package/dist/plot/core/marginals.js +436 -0
- package/dist/plot/core/pan-zoom.svelte.d.ts +2 -4
- package/dist/plot/core/pan-zoom.svelte.js +34 -17
- package/dist/plot/core/placed-tween.svelte.d.ts +3 -0
- package/dist/plot/core/placed-tween.svelte.js +68 -21
- 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/svg.js +0 -1
- 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 +52 -0
- package/dist/plot/core/utils/hierarchy-chart.js +191 -0
- package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
- package/dist/plot/core/utils/hierarchy-labels.js +100 -0
- package/dist/plot/core/utils/label-placement.js +2 -2
- package/dist/plot/histogram/Histogram.svelte +314 -340
- 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/sankey/sankey.js +13 -9
- package/dist/plot/scatter/BinnedScatterPlot.svelte +311 -141
- package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +7 -0
- package/dist/plot/scatter/ElementScatter.svelte +4 -1
- package/dist/plot/scatter/ScatterPlot.svelte +517 -410
- 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/adaptive-density.d.ts +1 -1
- package/dist/plot/scatter/adaptive-density.js +36 -20
- 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 +269 -347
- 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 +1022 -0
- package/dist/plot/treemap/Treemap.svelte.d.ts +90 -0
- package/dist/plot/treemap/index.d.ts +4 -0
- package/dist/plot/treemap/index.js +4 -0
- package/dist/plot/treemap/labels.d.ts +38 -0
- package/dist/plot/treemap/labels.js +80 -0
- package/dist/plot/treemap/treemap.d.ts +28 -0
- package/dist/plot/treemap/treemap.js +102 -0
- package/dist/rdf/RdfPlot.svelte +37 -59
- package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
- package/dist/rdf/calc-rdf.js +63 -52
- package/dist/rdf/index.d.ts +0 -1
- package/dist/sanitize.js +85 -27
- package/dist/scene/SceneCamera.svelte +1 -1
- package/dist/scene/SceneCamera.svelte.d.ts +1 -1
- package/dist/scene/bind-renderer.svelte.js +14 -6
- package/dist/scene/index.d.ts +1 -2
- package/dist/scene/index.js +1 -1
- package/dist/scene/{props.js → props.svelte.js} +15 -1
- package/dist/settings.d.ts +19 -9
- package/dist/settings.js +229 -525
- package/dist/spectral/Bands.svelte +207 -221
- package/dist/spectral/BandsAndDos.svelte +11 -9
- package/dist/spectral/BrillouinBandsDos.svelte +19 -42
- package/dist/spectral/Dos.svelte +92 -93
- package/dist/spectral/helpers.d.ts +3 -3
- package/dist/spectral/helpers.js +65 -140
- 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 +120 -85
- package/dist/structure/AtomLegend.svelte.d.ts +2 -3
- package/dist/structure/Bond.svelte +31 -23
- package/dist/structure/CanvasTooltip.svelte +15 -3
- package/dist/structure/CellSelect.svelte +45 -35
- 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 +636 -504
- package/dist/structure/Structure.svelte.d.ts +4 -2
- package/dist/structure/StructureCarousel.svelte +637 -0
- package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
- package/dist/structure/StructureControls.svelte +165 -425
- package/dist/structure/StructureControls.svelte.d.ts +1 -1
- package/dist/structure/StructureExportPane.svelte +17 -21
- package/dist/structure/StructureInfoPane.svelte +128 -133
- package/dist/structure/StructureInfoPane.svelte.d.ts +1 -1
- package/dist/structure/StructureScene.svelte +535 -578
- package/dist/structure/StructureScene.svelte.d.ts +6 -2
- package/dist/structure/StructureViewport.svelte +451 -0
- package/dist/structure/StructureViewport.svelte.d.ts +65 -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 +105 -38
- package/dist/structure/bond-order-perception.js +3 -8
- package/dist/structure/bonding.d.ts +9 -3
- package/dist/structure/bonding.js +95 -46
- 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 +89 -105
- package/dist/structure/format-detect.d.ts +1 -0
- package/dist/structure/format-detect.js +20 -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 +15 -10
- 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 +272 -313
- package/dist/structure/partial-occupancy.js +10 -5
- package/dist/structure/pbc.js +85 -107
- package/dist/structure/polyhedra.d.ts +0 -1
- package/dist/structure/polyhedra.js +7 -21
- package/dist/structure/prop-groups.d.ts +85 -0
- package/dist/structure/prop-groups.js +18 -0
- 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 +55 -71
- package/dist/symmetry/WyckoffTable.svelte +10 -28
- package/dist/symmetry/cell-transform.js +6 -14
- package/dist/symmetry/index.d.ts +1 -0
- package/dist/symmetry/index.js +13 -10
- package/dist/symmetry/spacegroups.js +3 -2
- package/dist/table/HeatmapTable.svelte +1142 -447
- package/dist/table/HeatmapTable.svelte.d.ts +12 -2
- package/dist/table/ToggleMenu.svelte +168 -53
- package/dist/table/ToggleMenu.svelte.d.ts +1 -1
- 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/embedded.d.ts +18 -0
- package/dist/theme/embedded.js +206 -0
- package/dist/theme/index.d.ts +5 -5
- package/dist/theme/index.js +5 -12
- package/dist/theme/themes.mjs +44 -66
- package/dist/tooltip/KCoords.svelte +4 -1
- package/dist/tooltip/TooltipContent.svelte +3 -6
- package/dist/tooltip/TooltipContent.svelte.d.ts +1 -1
- package/dist/tooltip/index.d.ts +8 -1
- package/dist/trajectory/Trajectory.svelte +613 -386
- package/dist/trajectory/Trajectory.svelte.d.ts +1 -1
- package/dist/trajectory/TrajectoryError.svelte +12 -74
- package/dist/trajectory/TrajectoryExportPane.svelte +14 -32
- package/dist/trajectory/TrajectoryInfoPane.svelte +127 -164
- package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +2 -1
- package/dist/trajectory/extract.js +61 -49
- package/dist/trajectory/format-detect.d.ts +2 -0
- package/dist/trajectory/format-detect.js +17 -13
- package/dist/trajectory/frame-reader.d.ts +2 -0
- package/dist/trajectory/frame-reader.js +35 -32
- package/dist/trajectory/helpers.d.ts +2 -0
- package/dist/trajectory/helpers.js +34 -56
- package/dist/trajectory/index.d.ts +1 -0
- package/dist/trajectory/index.js +5 -8
- package/dist/trajectory/parse/ase.js +1 -1
- 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 +6 -6
- package/dist/trajectory/parse/index.js +25 -33
- 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 +4 -0
- package/dist/trajectory/parse/vaspout-h5.js +281 -0
- package/dist/trajectory/parse/xyz.js +59 -9
- package/dist/trajectory/plotting.d.ts +8 -9
- package/dist/trajectory/plotting.js +113 -64
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +7 -0
- package/dist/xrd/XrdPlot.svelte +79 -118
- package/dist/xrd/broadening.js +2 -1
- package/dist/xrd/calc-xrd.js +24 -62
- package/dist/xrd/parse.d.ts +0 -1
- package/dist/xrd/parse.js +69 -95
- package/package.json +94 -34
- package/readme.md +6 -5
- package/dist/api/mp.d.ts +0 -6
- package/dist/api/mp.js +0 -22
- package/dist/plot/sunburst/SunburstControls.svelte +0 -200
- package/dist/scene/types.d.ts +0 -26
- package/dist/tooltip/types.d.ts +0 -8
- package/dist/trajectory/constants.d.ts +0 -6
- package/dist/trajectory/constants.js +0 -11
- /package/dist/{scene/types.js → file-viewer/host-protocol.js} +0 -0
- /package/dist/{tooltip/types.js → isosurface/geometry-worker-types.js} +0 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ElementSymbol } from './types';
|
|
2
|
+
export declare const is_elem_symbol: (symbol: string) => symbol is ElementSymbol;
|
|
3
|
+
export declare const coerce_elem_symbol: (symbol: string) => ElementSymbol | undefined;
|
|
4
|
+
export declare const FALLBACK_ELEMENTS: readonly ["H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne"];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ELEM_SYMBOLS } from '../labels';
|
|
2
|
+
// Set-backed O(1) element-symbol guard shared by all parsers
|
|
3
|
+
const ELEM_SYMBOL_SET = new Set(ELEM_SYMBOLS);
|
|
4
|
+
export const is_elem_symbol = (symbol) => ELEM_SYMBOL_SET.has(symbol);
|
|
5
|
+
export const coerce_elem_symbol = (symbol) => is_elem_symbol(symbol) ? symbol : undefined;
|
|
6
|
+
// Default element symbols used when a file omits or mangles element info
|
|
7
|
+
export const FALLBACK_ELEMENTS = [
|
|
8
|
+
`H`,
|
|
9
|
+
`He`,
|
|
10
|
+
`Li`,
|
|
11
|
+
`Be`,
|
|
12
|
+
`B`,
|
|
13
|
+
`C`,
|
|
14
|
+
`N`,
|
|
15
|
+
`O`,
|
|
16
|
+
`F`,
|
|
17
|
+
`Ne`,
|
|
18
|
+
];
|
package/dist/element/index.d.ts
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import type { ElementSymbol } from './types';
|
|
2
1
|
export type * from './types';
|
|
3
2
|
export { default as BohrAtom } from './BohrAtom.svelte';
|
|
4
|
-
export { default as element_data } from './data';
|
|
3
|
+
export { default as element_data, element_by_symbol } from './data';
|
|
5
4
|
export { default as ElementHeading } from './ElementHeading.svelte';
|
|
6
5
|
export { default as ElementPhoto } from './ElementPhoto.svelte';
|
|
7
6
|
export { default as ElementStats } from './ElementStats.svelte';
|
|
8
7
|
export { default as ElementTile } from './ElementTile.svelte';
|
|
8
|
+
export * from './helpers';
|
|
9
9
|
export { default as Nucleus } from './Nucleus.svelte';
|
|
10
|
-
export declare const is_elem_symbol: (symbol: string) => symbol is ElementSymbol;
|
|
11
|
-
export declare const coerce_elem_symbol: (symbol: string) => ElementSymbol | undefined;
|
|
12
|
-
export declare const FALLBACK_ELEMENTS: readonly ["H", "He", "Li", "Be", "B", "C", "N", "O", "F", "Ne"];
|
package/dist/element/index.js
CHANGED
|
@@ -1,25 +1,10 @@
|
|
|
1
|
-
import { ELEM_SYMBOLS } from '../labels';
|
|
2
1
|
export { default as BohrAtom } from './BohrAtom.svelte';
|
|
3
|
-
export { default as element_data } from './data';
|
|
2
|
+
export { default as element_data, element_by_symbol } from './data';
|
|
4
3
|
export { default as ElementHeading } from './ElementHeading.svelte';
|
|
5
4
|
export { default as ElementPhoto } from './ElementPhoto.svelte';
|
|
6
5
|
export { default as ElementStats } from './ElementStats.svelte';
|
|
7
6
|
export { default as ElementTile } from './ElementTile.svelte';
|
|
7
|
+
// Pure helpers live in ./helpers (no Svelte imports) so parser modules can use
|
|
8
|
+
// them inside Web Workers; re-exported here for everyone else.
|
|
9
|
+
export * from './helpers';
|
|
8
10
|
export { default as Nucleus } from './Nucleus.svelte';
|
|
9
|
-
// Set-backed O(1) element-symbol guard shared by all parsers
|
|
10
|
-
const ELEM_SYMBOL_SET = new Set(ELEM_SYMBOLS);
|
|
11
|
-
export const is_elem_symbol = (symbol) => ELEM_SYMBOL_SET.has(symbol);
|
|
12
|
-
export const coerce_elem_symbol = (symbol) => is_elem_symbol(symbol) ? symbol : undefined;
|
|
13
|
-
// Default element symbols used when a file omits or mangles element info
|
|
14
|
-
export const FALLBACK_ELEMENTS = [
|
|
15
|
-
`H`,
|
|
16
|
-
`He`,
|
|
17
|
-
`Li`,
|
|
18
|
-
`Be`,
|
|
19
|
-
`B`,
|
|
20
|
-
`C`,
|
|
21
|
-
`N`,
|
|
22
|
-
`O`,
|
|
23
|
-
`F`,
|
|
24
|
-
`Ne`,
|
|
25
|
-
];
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import Icon from '../Icon.svelte'
|
|
3
|
+
import type { HTMLAttributes } from 'svelte/elements'
|
|
3
4
|
|
|
4
5
|
let {
|
|
5
6
|
visible = false,
|
|
6
|
-
message = `Drop
|
|
7
|
-
|
|
7
|
+
message = `Drop file to load`,
|
|
8
|
+
...rest
|
|
8
9
|
}: {
|
|
9
10
|
visible?: boolean
|
|
10
11
|
message?: string
|
|
11
|
-
|
|
12
|
-
} = $props()
|
|
12
|
+
} & HTMLAttributes<HTMLDivElement> = $props()
|
|
13
13
|
</script>
|
|
14
14
|
|
|
15
15
|
{#if visible}
|
|
16
|
-
<div class=
|
|
16
|
+
<div {...rest} class={[`drag-overlay`, rest.class]}>
|
|
17
17
|
<div class="drag-message">
|
|
18
18
|
<Icon icon="Info" />
|
|
19
19
|
<span>{message}</span>
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'svelte/elements';
|
|
1
2
|
type $$ComponentProps = {
|
|
2
3
|
visible?: boolean;
|
|
3
4
|
message?: string;
|
|
4
|
-
|
|
5
|
-
};
|
|
5
|
+
} & HTMLAttributes<HTMLDivElement>;
|
|
6
6
|
declare const DragOverlay: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
7
7
|
type DragOverlay = ReturnType<typeof DragOverlay>;
|
|
8
8
|
export default DragOverlay;
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import type { HTMLAttributes } from 'svelte/elements'
|
|
3
3
|
|
|
4
|
-
let {
|
|
4
|
+
let {
|
|
5
|
+
message = $bindable(),
|
|
6
|
+
type = `info`,
|
|
7
|
+
dismissible = false,
|
|
8
|
+
...rest
|
|
9
|
+
}: {
|
|
5
10
|
message?: string
|
|
6
11
|
type?: `info` | `error` | `warning`
|
|
7
12
|
dismissible?: boolean
|
|
@@ -17,9 +22,7 @@
|
|
|
17
22
|
>
|
|
18
23
|
{message}
|
|
19
24
|
{#if dismissible}
|
|
20
|
-
<button onclick={() => (message = undefined)} aria-label="Dismiss message">
|
|
21
|
-
✕
|
|
22
|
-
</button>
|
|
25
|
+
<button onclick={() => (message = undefined)} aria-label="Dismiss message"> ✕ </button>
|
|
23
26
|
{/if}
|
|
24
27
|
</div>
|
|
25
28
|
{/if}
|
|
@@ -86,7 +86,10 @@
|
|
|
86
86
|
const isolines = slice_data?.isolines
|
|
87
87
|
if (!isolines?.length) return { min: [-1, -1], max: [1, 1] }
|
|
88
88
|
|
|
89
|
-
let xmin = Infinity,
|
|
89
|
+
let xmin = Infinity,
|
|
90
|
+
xmax = -Infinity,
|
|
91
|
+
ymin = Infinity,
|
|
92
|
+
ymax = -Infinity
|
|
90
93
|
for (const iso of isolines) {
|
|
91
94
|
for (const pt of iso.points_2d) {
|
|
92
95
|
if (pt[0] < xmin) xmin = pt[0]
|
|
@@ -97,13 +100,14 @@
|
|
|
97
100
|
}
|
|
98
101
|
if (!isFinite(xmin)) return { min: [-1, -1], max: [1, 1] }
|
|
99
102
|
|
|
100
|
-
const pad = 0.1,
|
|
103
|
+
const pad = 0.1,
|
|
104
|
+
rx = xmax - xmin || 1,
|
|
105
|
+
ry = ymax - ymin || 1
|
|
101
106
|
return {
|
|
102
107
|
min: [xmin - rx * pad, ymin - ry * pad],
|
|
103
108
|
max: [xmax + rx * pad, ymax + ry * pad],
|
|
104
109
|
}
|
|
105
110
|
})
|
|
106
|
-
|
|
107
111
|
function toggle_band(series_idx: number) {
|
|
108
112
|
const band = slice_data?.isolines[series_idx]?.band_index
|
|
109
113
|
if (band === undefined) return
|
|
@@ -114,9 +118,7 @@
|
|
|
114
118
|
function isolate_band(series_idx: number) {
|
|
115
119
|
const band = slice_data?.isolines[series_idx]?.band_index
|
|
116
120
|
if (band === undefined) return
|
|
117
|
-
const all_bands = [
|
|
118
|
-
...new Set(slice_data?.isolines.map((iso) => iso.band_index)),
|
|
119
|
-
]
|
|
121
|
+
const all_bands = [...new Set(slice_data?.isolines.map((iso) => iso.band_index))]
|
|
120
122
|
const is_solo = all_bands.every((bid) => bid === band || hidden_bands.has(bid))
|
|
121
123
|
hidden_bands.clear()
|
|
122
124
|
if (!is_solo) {
|
|
@@ -127,8 +129,7 @@
|
|
|
127
129
|
}
|
|
128
130
|
|
|
129
131
|
// Returns null if SVG not found, making export failures explicit
|
|
130
|
-
const export_svg = (): string | null =>
|
|
131
|
-
wrapper?.querySelector(`svg`)?.outerHTML ?? null
|
|
132
|
+
const export_svg = (): string | null => wrapper?.querySelector(`svg`)?.outerHTML ?? null
|
|
132
133
|
</script>
|
|
133
134
|
|
|
134
135
|
<ScatterPlot
|
|
@@ -143,16 +144,16 @@
|
|
|
143
144
|
controls={{ show: false }}
|
|
144
145
|
fullscreen_toggle={false}
|
|
145
146
|
legend={show_legend && series.length > 0
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
147
|
+
? {
|
|
148
|
+
on_toggle: toggle_band,
|
|
149
|
+
on_double_click: isolate_band,
|
|
150
|
+
draggable: false,
|
|
151
|
+
// pin bottom-right so it clears the top-left title/controls overlay (e.g. in the demo)
|
|
152
|
+
style: `left: auto; top: auto; right: 8px; bottom: 8px`,
|
|
153
|
+
}
|
|
154
|
+
: null}
|
|
154
155
|
padding={{ t: 5, b: 5, l: 5, r: 5 }}
|
|
155
|
-
class=
|
|
156
|
+
class={[`fermi-slice`, rest.class]}
|
|
156
157
|
style={rest.style}
|
|
157
158
|
>
|
|
158
159
|
{#snippet user_content({ x_scale_fn, y_scale_fn, pad, width, height })}
|
|
@@ -192,6 +193,8 @@
|
|
|
192
193
|
}
|
|
193
194
|
.fermi-label {
|
|
194
195
|
fill: var(--fermi-surface-axis-color, #888);
|
|
195
|
-
font:
|
|
196
|
+
font:
|
|
197
|
+
12px system-ui,
|
|
198
|
+
sans-serif;
|
|
196
199
|
}
|
|
197
200
|
</style>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import EmptyState from '../EmptyState.svelte'
|
|
6
6
|
import { StatusMessage } from '../feedback'
|
|
7
7
|
import Spinner from '../feedback/Spinner.svelte'
|
|
8
|
-
import
|
|
8
|
+
import * as io from '../io'
|
|
9
9
|
import { type FullscreenToggleProp, toggle_fullscreen, ViewerChrome } from '../layout'
|
|
10
10
|
import { sync_fullscreen } from '../layout/fullscreen.svelte'
|
|
11
11
|
import { PlotTooltip } from '../plot'
|
|
@@ -34,13 +34,9 @@
|
|
|
34
34
|
RepresentationMode,
|
|
35
35
|
} from './types'
|
|
36
36
|
|
|
37
|
-
type
|
|
37
|
+
type FermiFullscreenData = {
|
|
38
38
|
fermi_data?: FermiSurfaceData
|
|
39
|
-
band_data?: BandGridData
|
|
40
39
|
bz_data?: BrillouinZoneData
|
|
41
|
-
filename?: string
|
|
42
|
-
file_size?: number
|
|
43
|
-
error_msg?: string
|
|
44
40
|
fullscreen?: boolean
|
|
45
41
|
}
|
|
46
42
|
|
|
@@ -136,13 +132,11 @@
|
|
|
136
132
|
spinner_props?: ComponentProps<typeof Spinner>
|
|
137
133
|
loading?: boolean
|
|
138
134
|
error_msg?: string
|
|
139
|
-
children?: Snippet<
|
|
140
|
-
[{ fermi_data?: FermiSurfaceData; bz_data?: BrillouinZoneData }]
|
|
141
|
-
>
|
|
135
|
+
children?: Snippet<[{ fermi_data?: FermiSurfaceData; bz_data?: BrillouinZoneData }]>
|
|
142
136
|
on_file_drop?: (filename: string) => void
|
|
143
137
|
on_file_load?: (data: FermiFileLoadData) => void
|
|
144
138
|
on_error?: (data: FermiErrorData) => void
|
|
145
|
-
on_fullscreen_change?: (data:
|
|
139
|
+
on_fullscreen_change?: (data: FermiFullscreenData) => void
|
|
146
140
|
on_mu_change?: (mu: number) => void
|
|
147
141
|
tooltip_config?: Snippet<[{ hover_data: FermiHoverData }]> | FermiTooltipConfig
|
|
148
142
|
on_point_hover?: (data: FermiHoverData | null) => void
|
|
@@ -173,17 +167,12 @@
|
|
|
173
167
|
// Yield to browser so spinner can render before heavy computation
|
|
174
168
|
const tick = () =>
|
|
175
169
|
new Promise<void>((resolve) =>
|
|
176
|
-
requestAnimationFrame(() => requestAnimationFrame(() => resolve()))
|
|
170
|
+
requestAnimationFrame(() => requestAnimationFrame(() => resolve())),
|
|
177
171
|
)
|
|
178
172
|
|
|
179
173
|
// Parse and load Fermi surface from content (async for UI responsiveness)
|
|
180
|
-
async function parse_fermi_content(
|
|
181
|
-
content
|
|
182
|
-
filename: string,
|
|
183
|
-
) {
|
|
184
|
-
const text = content instanceof ArrayBuffer
|
|
185
|
-
? new TextDecoder().decode(content)
|
|
186
|
-
: content
|
|
174
|
+
async function parse_fermi_content(content: string | ArrayBuffer, filename: string) {
|
|
175
|
+
const text = content instanceof ArrayBuffer ? new TextDecoder().decode(content) : content
|
|
187
176
|
|
|
188
177
|
// parse_fermi_file throws a descriptive error when parsing fails
|
|
189
178
|
const parsed = parse_fermi_file(text, filename)
|
|
@@ -208,9 +197,7 @@
|
|
|
208
197
|
try {
|
|
209
198
|
await parse_fermi_content(content, filename)
|
|
210
199
|
} catch (err) {
|
|
211
|
-
error_msg = `Failed to parse ${filename}: ${
|
|
212
|
-
to_error(err).message
|
|
213
|
-
}`
|
|
200
|
+
error_msg = `Failed to parse ${filename}: ${to_error(err).message}`
|
|
214
201
|
on_error?.({ error_msg, filename })
|
|
215
202
|
}
|
|
216
203
|
}
|
|
@@ -277,11 +264,10 @@
|
|
|
277
264
|
// Compute BZ when structure or fermi_data changes
|
|
278
265
|
$effect(() => {
|
|
279
266
|
// Get k_lattice from available sources (priority order)
|
|
280
|
-
const k_lattice =
|
|
267
|
+
const k_lattice =
|
|
268
|
+
fermi_data?.k_lattice ??
|
|
281
269
|
band_data?.k_lattice ??
|
|
282
|
-
(structure?.lattice?.matrix
|
|
283
|
-
? reciprocal_lattice(structure.lattice.matrix)
|
|
284
|
-
: null)
|
|
270
|
+
(structure?.lattice?.matrix ? reciprocal_lattice(structure.lattice.matrix) : null)
|
|
285
271
|
|
|
286
272
|
if (!k_lattice) {
|
|
287
273
|
bz_data = undefined
|
|
@@ -313,23 +299,26 @@
|
|
|
313
299
|
// Load from URL (with race condition protection for rapid URL changes)
|
|
314
300
|
let load_id = 0
|
|
315
301
|
$effect(() => {
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
})
|
|
329
|
-
|
|
302
|
+
const requested_url = data_url
|
|
303
|
+
if (!requested_url || fermi_data || band_data) return
|
|
304
|
+
const current_load_id = ++load_id
|
|
305
|
+
loading = true
|
|
306
|
+
error_msg = undefined
|
|
307
|
+
io.load_from_url(requested_url, (content, filename) => {
|
|
308
|
+
if (current_load_id !== load_id) return
|
|
309
|
+
return safe_parse(content, filename)
|
|
310
|
+
})
|
|
311
|
+
.catch((err) => {
|
|
312
|
+
if (current_load_id !== load_id) return
|
|
313
|
+
error_msg = to_error(err).message
|
|
314
|
+
on_error?.({ error_msg, filename: io.basename_from_url(requested_url) })
|
|
315
|
+
})
|
|
316
|
+
.finally(() => {
|
|
317
|
+
if (current_load_id === load_id) loading = false
|
|
318
|
+
})
|
|
330
319
|
})
|
|
331
320
|
|
|
332
|
-
const handle_file_drop = create_file_drop_handler({
|
|
321
|
+
const handle_file_drop = io.create_file_drop_handler({
|
|
333
322
|
allow: () => allow_file_drop,
|
|
334
323
|
on_drop: async (content, filename) => {
|
|
335
324
|
on_file_drop?.(filename)
|
|
@@ -361,8 +350,7 @@
|
|
|
361
350
|
set_fullscreen: (val) => (fullscreen = val),
|
|
362
351
|
bg_css_var: `--fermi-bg-fullscreen`,
|
|
363
352
|
on_request_error: () => (fullscreen = false),
|
|
364
|
-
on_change: (val) =>
|
|
365
|
-
on_fullscreen_change?.({ fermi_data, bz_data, fullscreen: val }),
|
|
353
|
+
on_change: (val) => on_fullscreen_change?.({ fermi_data, bz_data, fullscreen: val }),
|
|
366
354
|
})
|
|
367
355
|
</script>
|
|
368
356
|
|
|
@@ -379,9 +367,12 @@
|
|
|
379
367
|
onmouseenter={() => (hovered = true)}
|
|
380
368
|
onmouseleave={() => (hovered = false)}
|
|
381
369
|
ondrop={handle_file_drop}
|
|
382
|
-
{...drag_over_handlers({
|
|
370
|
+
{...io.drag_over_handlers({
|
|
371
|
+
allow: () => allow_file_drop,
|
|
372
|
+
set_dragover: (over) => (dragover = over),
|
|
373
|
+
})}
|
|
383
374
|
{...rest}
|
|
384
|
-
class=
|
|
375
|
+
class={[`fermi-surface`, rest.class]}
|
|
385
376
|
>
|
|
386
377
|
{@render children?.({ fermi_data, bz_data })}
|
|
387
378
|
{#if loading}
|
|
@@ -7,13 +7,9 @@ import type { Crystal } from '../structure';
|
|
|
7
7
|
import type { ComponentProps, Snippet } from 'svelte';
|
|
8
8
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
9
9
|
import type { BandGridData, ColorProperty, FermiErrorData, FermiFileLoadData, FermiHoverData, FermiSurfaceData, FermiTooltipConfig, RepresentationMode } from './types';
|
|
10
|
-
type
|
|
10
|
+
type FermiFullscreenData = {
|
|
11
11
|
fermi_data?: FermiSurfaceData;
|
|
12
|
-
band_data?: BandGridData;
|
|
13
12
|
bz_data?: BrillouinZoneData;
|
|
14
|
-
filename?: string;
|
|
15
|
-
file_size?: number;
|
|
16
|
-
error_msg?: string;
|
|
17
13
|
fullscreen?: boolean;
|
|
18
14
|
};
|
|
19
15
|
type $$ComponentProps = {
|
|
@@ -52,16 +48,14 @@ type $$ComponentProps = {
|
|
|
52
48
|
spinner_props?: ComponentProps<typeof Spinner>;
|
|
53
49
|
loading?: boolean;
|
|
54
50
|
error_msg?: string;
|
|
55
|
-
children?: Snippet<[
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}
|
|
60
|
-
]>;
|
|
51
|
+
children?: Snippet<[{
|
|
52
|
+
fermi_data?: FermiSurfaceData;
|
|
53
|
+
bz_data?: BrillouinZoneData;
|
|
54
|
+
}]>;
|
|
61
55
|
on_file_drop?: (filename: string) => void;
|
|
62
56
|
on_file_load?: (data: FermiFileLoadData) => void;
|
|
63
57
|
on_error?: (data: FermiErrorData) => void;
|
|
64
|
-
on_fullscreen_change?: (data:
|
|
58
|
+
on_fullscreen_change?: (data: FermiFullscreenData) => void;
|
|
65
59
|
on_mu_change?: (mu: number) => void;
|
|
66
60
|
tooltip_config?: Snippet<[{
|
|
67
61
|
hover_data: FermiHoverData;
|
|
@@ -69,6 +63,6 @@ type $$ComponentProps = {
|
|
|
69
63
|
on_point_hover?: (data: FermiHoverData | null) => void;
|
|
70
64
|
on_hover?: (data: FermiHoverData | null) => void;
|
|
71
65
|
} & HTMLAttributes<HTMLDivElement>;
|
|
72
|
-
declare const FermiSurface: import("svelte").Component<$$ComponentProps, {}, "height" | "width" | "dragover" | "fullscreen" | "wrapper" | "hovered" | "controls_open" | "
|
|
66
|
+
declare const FermiSurface: import("svelte").Component<$$ComponentProps, {}, "height" | "width" | "dragover" | "fullscreen" | "wrapper" | "hovered" | "controls_open" | "camera_projection" | "color_scale" | "loading" | "error_msg" | "surface_opacity" | "show_vectors" | "bz_data" | "mu" | "selected_bands" | "interpolation_factor" | "fermi_data" | "band_data" | "color_property" | "representation" | "show_bz" | "bz_opacity" | "tile_bz" | "clip_enabled" | "clip_axis" | "clip_position" | "clip_flip">;
|
|
73
67
|
type FermiSurface = ReturnType<typeof FermiSurface>;
|
|
74
68
|
export default FermiSurface;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import SettingsSection from '../layout/SettingsSection.svelte'
|
|
3
3
|
import DraggablePane from '../overlays/DraggablePane.svelte'
|
|
4
4
|
import type { CameraProjection } from '../settings'
|
|
5
|
-
import { make_change_detector } from '../utils'
|
|
5
|
+
import { make_change_detector, parse_num_token } from '../utils'
|
|
6
6
|
import type { Snippet } from 'svelte'
|
|
7
7
|
import type {
|
|
8
8
|
BandGridData,
|
|
@@ -90,8 +90,8 @@
|
|
|
90
90
|
let available_bands = $derived(
|
|
91
91
|
fermi_data
|
|
92
92
|
? [...new Set(fermi_data.isosurfaces.map((iso) => iso.band_index))].toSorted(
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
(a, b) => a - b,
|
|
94
|
+
)
|
|
95
95
|
: [],
|
|
96
96
|
)
|
|
97
97
|
let available_bands_key = $derived(available_bands.join(`,`))
|
|
@@ -119,8 +119,7 @@
|
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
function handle_mu_change(event: Event & { currentTarget: HTMLInputElement }) {
|
|
122
|
-
const
|
|
123
|
-
const parsed = parseFloat(trimmed)
|
|
122
|
+
const parsed = parse_num_token(event.currentTarget.value)
|
|
124
123
|
// Only update mu when input is valid; keep last valid value during transient
|
|
125
124
|
// invalid states (e.g. empty string while user is typing a new value)
|
|
126
125
|
if (Number.isFinite(parsed)) {
|
|
@@ -147,14 +146,7 @@
|
|
|
147
146
|
>
|
|
148
147
|
<label>
|
|
149
148
|
<span>μ offset (eV):</span>
|
|
150
|
-
<input
|
|
151
|
-
type="range"
|
|
152
|
-
min="-1"
|
|
153
|
-
max="1"
|
|
154
|
-
step="0.01"
|
|
155
|
-
value={mu}
|
|
156
|
-
oninput={handle_mu_change}
|
|
157
|
-
/>
|
|
149
|
+
<input type="range" min="-1" max="1" step="0.01" value={mu} oninput={handle_mu_change} />
|
|
158
150
|
<input
|
|
159
151
|
type="number"
|
|
160
152
|
step="0.01"
|
|
@@ -300,13 +292,7 @@
|
|
|
300
292
|
</label>
|
|
301
293
|
<label>
|
|
302
294
|
<span>Position:</span>
|
|
303
|
-
<input
|
|
304
|
-
type="range"
|
|
305
|
-
min="-1"
|
|
306
|
-
max="1"
|
|
307
|
-
step="0.01"
|
|
308
|
-
bind:value={clip_position}
|
|
309
|
-
/>
|
|
295
|
+
<input type="range" min="-1" max="1" step="0.01" bind:value={clip_position} />
|
|
310
296
|
<span class="value">{clip_position.toFixed(2)}</span>
|
|
311
297
|
</label>
|
|
312
298
|
<label>
|
|
@@ -30,6 +30,6 @@ type $$ComponentProps = {
|
|
|
30
30
|
band_data?: BandGridData;
|
|
31
31
|
}]>;
|
|
32
32
|
};
|
|
33
|
-
declare const FermiSurfaceControls: import("svelte").Component<$$ComponentProps, {}, "controls_open" | "
|
|
33
|
+
declare const FermiSurfaceControls: import("svelte").Component<$$ComponentProps, {}, "controls_open" | "camera_projection" | "color_scale" | "surface_opacity" | "show_vectors" | "mu" | "selected_bands" | "interpolation_factor" | "color_property" | "representation" | "show_bz" | "bz_opacity" | "tile_bz" | "clip_enabled" | "clip_axis" | "clip_position" | "clip_flip">;
|
|
34
34
|
type FermiSurfaceControls = ReturnType<typeof FermiSurfaceControls>;
|
|
35
35
|
export default FermiSurfaceControls;
|