matterviz 0.4.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/EmptyState.svelte +10 -4
- package/dist/FilePicker.svelte +12 -14
- package/dist/Icon.svelte +7 -4
- package/dist/MillerIndexInput.svelte +2 -2
- package/dist/app.css +53 -0
- package/dist/brillouin/BrillouinZone.svelte +132 -219
- package/dist/brillouin/BrillouinZone.svelte.d.ts +9 -20
- package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
- package/dist/brillouin/BrillouinZoneExportPane.svelte +47 -96
- package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +15 -42
- package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +2 -3
- package/dist/brillouin/BrillouinZoneScene.svelte +63 -230
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +3 -23
- 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 +80 -77
- 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 +33 -38
- package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +1 -1
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +143 -246
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +4 -1
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +652 -976
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +7 -1
- package/dist/chempot-diagram/async-compute.svelte.js +1 -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 +3 -3
- package/dist/chempot-diagram/compute.js +3 -1
- 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.d.ts +0 -4
- package/dist/colors/index.js +21 -22
- package/dist/composition/BarChart.svelte +37 -31
- package/dist/composition/BubbleChart.svelte +17 -17
- package/dist/composition/Composition.svelte +7 -11
- package/dist/composition/Formula.svelte +18 -25
- package/dist/composition/FormulaFilter.svelte +96 -98
- package/dist/composition/PieChart.svelte +60 -46
- package/dist/composition/chem-sys.js +3 -2
- package/dist/composition/format.js +4 -3
- package/dist/composition/index.d.ts +2 -0
- package/dist/composition/index.js +14 -0
- package/dist/composition/parse.d.ts +2 -3
- package/dist/composition/parse.js +27 -28
- package/dist/constants.js +11 -9
- package/dist/controls.d.ts +1 -0
- package/dist/controls.js +0 -1
- package/dist/convex-hull/ConvexHull.svelte +20 -25
- package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -4
- package/dist/convex-hull/ConvexHull2D.svelte +176 -256
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull3D.svelte +269 -804
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull4D.svelte +236 -755
- package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHullChrome.svelte +264 -0
- package/dist/convex-hull/ConvexHullChrome.svelte.d.ts +30 -0
- package/dist/convex-hull/ConvexHullControls.svelte +128 -49
- 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 +210 -351
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +3 -1
- package/dist/convex-hull/ConvexHullTooltip.svelte +16 -14
- package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +2 -1
- package/dist/convex-hull/GasPressureControls.svelte +5 -12
- package/dist/convex-hull/StructurePopup.svelte +17 -21
- package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
- package/dist/convex-hull/TemperatureSlider.svelte +4 -10
- package/dist/convex-hull/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 +279 -0
- package/dist/convex-hull/helpers.d.ts +47 -17
- package/dist/convex-hull/helpers.js +186 -101
- 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 +9 -7
- package/dist/convex-hull/index.js +7 -2
- package/dist/convex-hull/thermodynamics.js +109 -937
- package/dist/convex-hull/types.d.ts +12 -4
- package/dist/convex-hull/types.js +12 -0
- package/dist/coordination/CoordinationBarPlot.svelte +41 -43
- 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 +6 -8
- package/dist/element/ElementHeading.svelte +4 -1
- package/dist/element/ElementPhoto.svelte +11 -9
- package/dist/element/ElementStats.svelte +12 -10
- package/dist/element/ElementTile.svelte +24 -29
- package/dist/element/ElementTile.svelte.d.ts +1 -1
- package/dist/element/Nucleus.svelte +4 -2
- package/dist/element/data.d.ts +1 -2
- package/dist/element/helpers.d.ts +4 -0
- package/dist/element/helpers.js +18 -0
- package/dist/element/index.d.ts +1 -0
- package/dist/element/index.js +3 -0
- package/dist/feedback/DragOverlay.svelte +5 -3
- package/dist/feedback/DragOverlay.svelte.d.ts +2 -1
- package/dist/feedback/StatusMessage.svelte +20 -7
- package/dist/fermi-surface/FermiSlice.svelte +21 -18
- package/dist/fermi-surface/FermiSurface.svelte +78 -165
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +9 -20
- package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
- package/dist/fermi-surface/FermiSurfaceScene.svelte +93 -272
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +3 -23
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
- package/dist/fermi-surface/compute.js +14 -13
- package/dist/fermi-surface/export.js +4 -15
- 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 +84 -97
- package/dist/fermi-surface/types.d.ts +2 -2
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +161 -185
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +6 -5
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +12 -9
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +5 -5
- package/dist/heatmap-matrix/index.d.ts +8 -2
- package/dist/icons.d.ts +4 -0
- package/dist/icons.js +4 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/io/ExportPane.svelte +170 -0
- package/dist/io/ExportPane.svelte.d.ts +17 -0
- package/dist/io/decompress.d.ts +2 -1
- package/dist/io/decompress.js +22 -36
- package/dist/io/export.d.ts +9 -1
- package/dist/io/export.js +37 -29
- package/dist/io/fetch.d.ts +2 -4
- package/dist/io/fetch.js +0 -11
- package/dist/io/file-drop.d.ts +7 -0
- package/dist/io/file-drop.js +13 -0
- package/dist/io/index.d.ts +1 -0
- package/dist/io/index.js +3 -0
- package/dist/io/is-binary.d.ts +9 -0
- package/dist/io/is-binary.js +45 -1
- package/dist/io/types.d.ts +13 -0
- package/dist/io/url-drop.js +13 -25
- package/dist/isosurface/Isosurface.svelte +17 -23
- package/dist/isosurface/IsosurfaceControls.svelte +37 -42
- package/dist/isosurface/parse-vaspwave.d.ts +3 -0
- package/dist/isosurface/parse-vaspwave.js +138 -0
- package/dist/isosurface/parse.js +50 -48
- package/dist/labels.d.ts +6 -2
- package/dist/labels.js +44 -14
- package/dist/layout/FullscreenButton.svelte +34 -0
- package/dist/layout/FullscreenButton.svelte.d.ts +10 -0
- package/dist/layout/FullscreenToggle.svelte +12 -12
- package/dist/layout/InfoCard.svelte +7 -18
- package/dist/layout/InfoTag.svelte +1 -3
- package/dist/layout/NumberRangeInput.svelte +46 -0
- package/dist/layout/NumberRangeInput.svelte.d.ts +12 -0
- package/dist/layout/PropertyFilter.svelte +2 -6
- package/dist/layout/SettingsSection.svelte +21 -17
- package/dist/layout/SubpageGrid.svelte +3 -1
- package/dist/layout/ViewerChrome.svelte +115 -0
- package/dist/layout/ViewerChrome.svelte.d.ts +18 -0
- package/dist/layout/fullscreen.d.ts +4 -0
- package/dist/layout/fullscreen.js +3 -5
- package/dist/layout/fullscreen.svelte.d.ts +8 -0
- package/dist/layout/fullscreen.svelte.js +36 -0
- package/dist/layout/index.d.ts +4 -0
- package/dist/layout/index.js +4 -0
- package/dist/layout/json-tree/JsonNode.svelte +8 -11
- package/dist/layout/json-tree/JsonTree.svelte +53 -77
- package/dist/layout/json-tree/JsonValue.svelte +7 -15
- package/dist/layout/json-tree/utils.js +14 -23
- package/dist/math.d.ts +9 -3
- package/dist/math.js +37 -21
- package/dist/overlays/ContextMenu.svelte +4 -2
- package/dist/overlays/CopyButton.svelte +11 -5
- package/dist/overlays/DragControlTab.svelte +6 -1
- package/dist/overlays/DraggablePane.svelte +81 -26
- package/dist/overlays/DraggablePane.svelte.d.ts +1 -0
- package/dist/overlays/GlassChip.svelte +30 -0
- package/dist/overlays/GlassChip.svelte.d.ts +8 -0
- package/dist/overlays/InfoPaneCards.svelte +11 -23
- package/dist/overlays/index.d.ts +11 -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 +115 -146
- package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
- package/dist/periodic-table/PeriodicTableControls.svelte +11 -63
- package/dist/periodic-table/TableInset.svelte +9 -4
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +50 -71
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
- package/dist/phase-diagram/PhaseDiagramControls.svelte +73 -96
- 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 +49 -134
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +3 -4
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
- package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
- package/dist/phase-diagram/build-diagram.js +3 -3
- package/dist/phase-diagram/colors.js +1 -1
- package/dist/phase-diagram/diagram-input.d.ts +1 -2
- package/dist/phase-diagram/parse.d.ts +2 -1
- package/dist/phase-diagram/parse.js +15 -15
- package/dist/phase-diagram/svg-to-diagram.js +21 -15
- package/dist/phase-diagram/utils.js +2 -3
- package/dist/plot/bar/BarPlot.svelte +494 -692
- package/dist/plot/bar/BarPlot.svelte.d.ts +9 -15
- package/dist/plot/bar/BarPlotControls.svelte +1 -3
- package/dist/plot/bar/BarPlotControls.svelte.d.ts +5 -7
- package/dist/plot/bar/SpacegroupBarPlot.svelte +31 -37
- package/dist/plot/bar/data.d.ts +5 -4
- package/dist/plot/bar/data.js +2 -1
- package/dist/plot/box/BoxPlot.svelte +361 -439
- package/dist/plot/box/BoxPlot.svelte.d.ts +6 -3
- package/dist/plot/box/BoxPlotControls.svelte.d.ts +1 -1
- package/dist/plot/box/Violin.svelte.d.ts +2 -1
- package/dist/plot/box/box-plot.d.ts +3 -2
- package/dist/plot/box/box-plot.js +6 -3
- package/dist/plot/box/kde.d.ts +2 -1
- package/dist/plot/box/kde.js +4 -4
- package/dist/plot/core/auto-place.d.ts +1 -1
- package/dist/plot/core/auto-place.js +5 -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 +106 -111
- package/dist/plot/core/components/ColorBar.svelte.d.ts +5 -4
- 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 +21 -11
- package/dist/plot/core/components/Line.svelte.d.ts +5 -2
- package/dist/plot/core/components/PlotAxis.svelte +42 -18
- package/dist/plot/core/components/PlotAxis.svelte.d.ts +2 -1
- package/dist/plot/core/components/PlotControls.svelte +65 -41
- package/dist/plot/core/components/PlotControls.svelte.d.ts +1 -1
- 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 +56 -59
- package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +4 -4
- package/dist/plot/core/components/ReferencePlane.svelte +9 -10
- package/dist/plot/core/components/ReferencePlane.svelte.d.ts +4 -4
- 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 +29 -476
- package/dist/plot/core/data-transform.js +9 -5
- package/dist/plot/core/fill-utils.d.ts +7 -4
- package/dist/plot/core/fill-utils.js +34 -9
- package/dist/plot/core/index.d.ts +1 -0
- package/dist/plot/core/index.js +1 -0
- package/dist/plot/core/interactions.d.ts +5 -1
- package/dist/plot/core/interactions.js +14 -2
- package/dist/plot/core/layout.d.ts +3 -1
- package/dist/plot/core/layout.js +22 -13
- package/dist/plot/core/marginals.d.ts +170 -0
- package/dist/plot/core/marginals.js +436 -0
- package/dist/plot/core/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/core/reference-line.d.ts +10 -10
- package/dist/plot/core/reference-line.js +7 -7
- package/dist/plot/core/scales.d.ts +40 -25
- package/dist/plot/core/scales.js +49 -21
- package/dist/plot/core/svg.d.ts +2 -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 +47 -331
- package/dist/plot/core/types.js +23 -20
- package/dist/plot/core/utils/hierarchy-chart.d.ts +51 -0
- package/dist/plot/core/utils/hierarchy-chart.js +179 -0
- package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
- package/dist/plot/core/utils/hierarchy-labels.js +99 -0
- package/dist/plot/core/utils/label-placement.d.ts +1 -1
- package/dist/plot/core/utils/label-placement.js +5 -5
- package/dist/plot/core/utils.d.ts +2 -1
- package/dist/plot/histogram/Histogram.svelte +373 -631
- package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
- package/dist/plot/histogram/HistogramControls.svelte +30 -28
- package/dist/plot/histogram/HistogramControls.svelte.d.ts +1 -1
- 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 +79 -73
- package/dist/plot/sankey/Sankey.svelte.d.ts +3 -3
- package/dist/plot/sankey/SankeyControls.svelte +22 -16
- package/dist/plot/sankey/sankey.js +3 -1
- package/dist/plot/scatter/BinnedScatterPlot.svelte +264 -112
- package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +11 -4
- package/dist/plot/scatter/ElementScatter.svelte +4 -1
- package/dist/plot/scatter/ScatterPlot.svelte +623 -821
- package/dist/plot/scatter/ScatterPlot.svelte.d.ts +9 -15
- package/dist/plot/scatter/ScatterPlotControls.svelte +18 -19
- package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
- package/dist/plot/scatter/ScatterPoint.svelte +16 -9
- package/dist/plot/scatter/binned-scatter-types.d.ts +6 -12
- package/dist/plot/scatter/binned-scatter-types.js +6 -1
- package/dist/plot/scatter/index.d.ts +1 -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 +40 -60
- package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +6 -14
- package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +17 -15
- package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +5 -5
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +232 -234
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +5 -14
- package/dist/plot/scatter-3d/Surface3D.svelte +9 -17
- package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +4 -3
- package/dist/plot/sunburst/Sunburst.svelte +256 -338
- package/dist/plot/sunburst/Sunburst.svelte.d.ts +4 -3
- 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 +14 -4
- package/dist/plot/treemap/Treemap.svelte +907 -0
- package/dist/plot/treemap/Treemap.svelte.d.ts +84 -0
- package/dist/plot/treemap/index.d.ts +3 -0
- package/dist/plot/treemap/index.js +4 -0
- package/dist/plot/treemap/treemap.d.ts +26 -0
- package/dist/plot/treemap/treemap.js +99 -0
- package/dist/rdf/RdfPlot.svelte +22 -26
- package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
- package/dist/rdf/calc-rdf.js +4 -8
- package/dist/sanitize.js +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 +22 -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 +33 -11
- package/dist/settings.js +136 -51
- package/dist/spectral/Bands.svelte +231 -237
- package/dist/spectral/Bands.svelte.d.ts +3 -2
- package/dist/spectral/BandsAndDos.svelte +29 -29
- package/dist/spectral/BrillouinBandsDos.svelte +21 -29
- package/dist/spectral/Dos.svelte +75 -77
- package/dist/spectral/Dos.svelte.d.ts +2 -1
- package/dist/spectral/helpers.d.ts +9 -9
- package/dist/spectral/helpers.js +66 -70
- package/dist/state.svelte.d.ts +0 -7
- package/dist/state.svelte.js +5 -24
- package/dist/structure/Arrow.svelte +6 -21
- package/dist/structure/ArrowInstances.svelte +160 -0
- package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
- package/dist/structure/AtomLegend.svelte +115 -75
- package/dist/structure/AtomLegend.svelte.d.ts +1 -1
- package/dist/structure/Bond.svelte +31 -23
- package/dist/structure/CanvasTooltip.svelte +16 -3
- package/dist/structure/CellSelect.svelte +22 -29
- package/dist/structure/CellSelect.svelte.d.ts +2 -1
- 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 +725 -735
- package/dist/structure/Structure.svelte.d.ts +8 -16
- package/dist/structure/StructureCarousel.svelte +630 -0
- package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
- package/dist/structure/StructureControls.svelte +298 -325
- package/dist/structure/StructureControls.svelte.d.ts +5 -3
- package/dist/structure/StructureExportPane.svelte +62 -168
- package/dist/structure/StructureExportPane.svelte.d.ts +4 -5
- package/dist/structure/StructureInfoPane.svelte +77 -69
- package/dist/structure/StructureInfoPane.svelte.d.ts +6 -6
- package/dist/structure/StructureScene.svelte +758 -600
- package/dist/structure/StructureScene.svelte.d.ts +24 -20
- package/dist/structure/StructureViewport.svelte +386 -0
- package/dist/structure/StructureViewport.svelte.d.ts +63 -0
- package/dist/structure/atom-label-placement.d.ts +18 -0
- package/dist/structure/atom-label-placement.js +115 -0
- package/dist/structure/atom-properties.d.ts +3 -1
- package/dist/structure/atom-properties.js +115 -54
- package/dist/structure/bond-order-perception.js +2 -4
- package/dist/structure/bonding.d.ts +12 -2
- package/dist/structure/bonding.js +172 -73
- package/dist/structure/edit-history.d.ts +6 -0
- package/dist/structure/edit-history.js +27 -0
- package/dist/structure/export.d.ts +25 -4
- package/dist/structure/export.js +103 -153
- package/dist/structure/format-detect.d.ts +1 -0
- package/dist/structure/format-detect.js +22 -0
- package/dist/structure/geometry.d.ts +9 -0
- package/dist/structure/geometry.js +27 -0
- package/dist/structure/index.d.ts +18 -1
- package/dist/structure/index.js +15 -2
- package/dist/structure/measure.d.ts +1 -1
- package/dist/structure/measure.js +6 -12
- package/dist/structure/parse.d.ts +5 -3
- package/dist/structure/parse.js +551 -567
- package/dist/structure/partial-occupancy.d.ts +0 -1
- package/dist/structure/partial-occupancy.js +5 -3
- package/dist/structure/pbc.d.ts +1 -1
- package/dist/structure/pbc.js +204 -51
- package/dist/structure/polyhedra.d.ts +40 -0
- package/dist/structure/polyhedra.js +587 -0
- package/dist/structure/site.d.ts +4 -0
- package/dist/structure/site.js +1 -0
- package/dist/structure/supercell.d.ts +1 -2
- package/dist/structure/supercell.js +10 -15
- 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 +350 -0
- package/dist/symmetry/SymmetryElements.svelte.d.ts +24 -0
- package/dist/symmetry/SymmetryStats.svelte +142 -49
- package/dist/symmetry/WyckoffTable.svelte +58 -16
- package/dist/symmetry/WyckoffTable.svelte.d.ts +3 -0
- package/dist/symmetry/cell-transform.js +8 -14
- package/dist/symmetry/index.d.ts +15 -4
- package/dist/symmetry/index.js +308 -81
- package/dist/symmetry/spacegroups.d.ts +5 -1
- package/dist/symmetry/spacegroups.js +18 -3
- 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 +1104 -378
- package/dist/table/HeatmapTable.svelte.d.ts +12 -2
- package/dist/table/ToggleMenu.svelte +5 -12
- package/dist/table/index.d.ts +21 -6
- package/dist/table/index.js +34 -21
- package/dist/theme/ThemeControl.svelte +16 -8
- package/dist/theme/index.d.ts +1 -5
- package/dist/theme/index.js +4 -10
- package/dist/theme/themes.mjs +14 -7
- package/dist/tooltip/KCoords.svelte +4 -1
- package/dist/tooltip/TooltipContent.svelte +2 -5
- package/dist/trajectory/Trajectory.svelte +556 -352
- package/dist/trajectory/Trajectory.svelte.d.ts +10 -22
- package/dist/trajectory/TrajectoryError.svelte +11 -8
- package/dist/trajectory/TrajectoryExportPane.svelte +28 -54
- package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +4 -5
- package/dist/trajectory/TrajectoryInfoPane.svelte +88 -99
- package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +3 -2
- package/dist/trajectory/constants.js +6 -2
- package/dist/trajectory/extract.js +73 -71
- package/dist/trajectory/format-detect.d.ts +0 -1
- package/dist/trajectory/format-detect.js +13 -17
- package/dist/trajectory/frame-reader.d.ts +2 -1
- package/dist/trajectory/frame-reader.js +74 -136
- package/dist/trajectory/helpers.d.ts +12 -2
- package/dist/trajectory/helpers.js +68 -37
- package/dist/trajectory/index.d.ts +1 -0
- package/dist/trajectory/index.js +3 -0
- 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/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 +3 -4
- package/dist/trajectory/parse/index.js +68 -119
- package/dist/trajectory/parse/lammps.d.ts +0 -2
- package/dist/trajectory/parse/lammps.js +14 -16
- package/dist/trajectory/parse/pymatgen.d.ts +2 -0
- package/dist/trajectory/parse/pymatgen.js +74 -0
- package/dist/trajectory/parse/vasp.js +13 -9
- package/dist/trajectory/parse/vaspout-electronic.d.ts +13 -0
- package/dist/trajectory/parse/vaspout-electronic.js +207 -0
- package/dist/trajectory/parse/vaspout-h5.d.ts +5 -0
- package/dist/trajectory/parse/vaspout-h5.js +284 -0
- package/dist/trajectory/parse/xyz.d.ts +9 -21
- package/dist/trajectory/parse/xyz.js +38 -39
- package/dist/trajectory/plotting.d.ts +8 -10
- package/dist/trajectory/plotting.js +102 -127
- package/dist/utils.d.ts +4 -0
- package/dist/utils.js +8 -1
- package/dist/xrd/XrdPlot.svelte +56 -85
- package/dist/xrd/broadening.d.ts +2 -1
- package/dist/xrd/broadening.js +2 -1
- package/dist/xrd/calc-xrd.js +8 -15
- package/dist/xrd/index.d.ts +2 -2
- package/dist/xrd/parse.d.ts +0 -1
- package/dist/xrd/parse.js +56 -73
- package/package.json +77 -36
- package/dist/api/mp.d.ts +0 -6
- package/dist/api/mp.js +0 -22
- 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/core/hover-lock.svelte.d.ts +0 -14
- package/dist/plot/core/hover-lock.svelte.js +0 -45
- package/dist/plot/sunburst/SunburstControls.svelte +0 -200
- package/dist/structure/label-placement.d.ts +0 -14
- package/dist/structure/label-placement.js +0 -72
|
@@ -2,11 +2,10 @@ import type { ElementSymbol } from '../element';
|
|
|
2
2
|
import type { CompositionType } from './';
|
|
3
3
|
export declare const ATOMIC_NUMBER_TO_SYMBOL: Record<number, ElementSymbol>;
|
|
4
4
|
export declare const SYMBOL_TO_ATOMIC_NUMBER: Partial<CompositionType>;
|
|
5
|
-
export declare const ATOMIC_WEIGHTS: Map<"
|
|
6
|
-
export declare const ELEMENT_ELECTRONEGATIVITY_MAP: Map<"
|
|
5
|
+
export declare const ATOMIC_WEIGHTS: Map<"Ac" | "Ag" | "Al" | "Am" | "Ar" | "As" | "At" | "Au" | "B" | "Ba" | "Be" | "Bh" | "Bi" | "Bk" | "Br" | "C" | "Ca" | "Cd" | "Ce" | "Cf" | "Cl" | "Cm" | "Co" | "Cr" | "Cs" | "Cu" | "Db" | "Dy" | "Er" | "Es" | "Eu" | "F" | "Fe" | "Fm" | "Fr" | "Ga" | "Gd" | "Ge" | "H" | "He" | "Hf" | "Hg" | "Ho" | "Hs" | "I" | "In" | "Ir" | "K" | "Kr" | "La" | "Li" | "Lr" | "Lu" | "Md" | "Mg" | "Mn" | "Mo" | "Mt" | "N" | "Na" | "Nb" | "Nd" | "Ne" | "Ni" | "No" | "Np" | "O" | "Os" | "P" | "Pa" | "Pb" | "Pd" | "Pm" | "Po" | "Pr" | "Pt" | "Pu" | "Ra" | "Rb" | "Re" | "Rf" | "Rh" | "Rn" | "Ru" | "S" | "Sb" | "Sc" | "Se" | "Sg" | "Si" | "Sm" | "Sn" | "Sr" | "Ta" | "Tb" | "Tc" | "Te" | "Th" | "Ti" | "Tl" | "Tm" | "U" | "V" | "W" | "Xe" | "Y" | "Yb" | "Zn" | "Zr" | "Ds" | "Rg" | "Cn" | "Nh" | "Fl" | "Mc" | "Lv" | "Ts" | "Og", number>;
|
|
6
|
+
export declare const ELEMENT_ELECTRONEGATIVITY_MAP: Map<"Ac" | "Ag" | "Al" | "Am" | "Ar" | "As" | "At" | "Au" | "B" | "Ba" | "Be" | "Bh" | "Bi" | "Bk" | "Br" | "C" | "Ca" | "Cd" | "Ce" | "Cf" | "Cl" | "Cm" | "Co" | "Cr" | "Cs" | "Cu" | "Db" | "Dy" | "Er" | "Es" | "Eu" | "F" | "Fe" | "Fm" | "Fr" | "Ga" | "Gd" | "Ge" | "H" | "He" | "Hf" | "Hg" | "Ho" | "Hs" | "I" | "In" | "Ir" | "K" | "Kr" | "La" | "Li" | "Lr" | "Lu" | "Md" | "Mg" | "Mn" | "Mo" | "Mt" | "N" | "Na" | "Nb" | "Nd" | "Ne" | "Ni" | "No" | "Np" | "O" | "Os" | "P" | "Pa" | "Pb" | "Pd" | "Pm" | "Po" | "Pr" | "Pt" | "Pu" | "Ra" | "Rb" | "Re" | "Rf" | "Rh" | "Rn" | "Ru" | "S" | "Sb" | "Sc" | "Se" | "Sg" | "Si" | "Sm" | "Sn" | "Sr" | "Ta" | "Tb" | "Tc" | "Te" | "Th" | "Ti" | "Tl" | "Tm" | "U" | "V" | "W" | "Xe" | "Y" | "Yb" | "Zn" | "Zr" | "Ds" | "Rg" | "Cn" | "Nh" | "Fl" | "Mc" | "Lv" | "Ts" | "Og", number>;
|
|
7
7
|
export declare const ELEM_NAME_TO_SYMBOL: Record<string, ElementSymbol>;
|
|
8
8
|
export declare const ELEM_SYMBOL_TO_NAME: Partial<Record<ElementSymbol, string>>;
|
|
9
|
-
export declare const is_valid_element: (sym: string) => sym is ElementSymbol;
|
|
10
9
|
export declare const atomic_num_to_symbols: (atomic_composition: Record<number, number>) => CompositionType;
|
|
11
10
|
export declare const atomic_symbol_to_num: (symbol_composition: CompositionType) => Record<number, number>;
|
|
12
11
|
export declare const parse_formula: (formula: string) => CompositionType;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { element_data } from '../element';
|
|
1
|
+
import { default as element_data } from '../element/data';
|
|
2
|
+
import { is_elem_symbol } from '../element/helpers';
|
|
2
3
|
import { ELEM_SYMBOLS } from '../labels';
|
|
3
4
|
// Create symbol/number/mass/electronegativity lookup maps for O(1) access
|
|
4
5
|
export const ATOMIC_NUMBER_TO_SYMBOL = {};
|
|
@@ -16,8 +17,6 @@ for (const element of element_data) {
|
|
|
16
17
|
ELEM_NAME_TO_SYMBOL[element.name] = element.symbol;
|
|
17
18
|
ELEM_SYMBOL_TO_NAME[element.symbol] = element.name;
|
|
18
19
|
}
|
|
19
|
-
// Type guard: check if a string is a valid element symbol
|
|
20
|
-
export const is_valid_element = (sym) => ELEM_SYMBOLS.includes(sym);
|
|
21
20
|
// Check if object has atomic numbers as keys (1-118)
|
|
22
21
|
const is_atomic_number_composition = (obj) => {
|
|
23
22
|
const keys = Object.keys(obj);
|
|
@@ -26,7 +25,7 @@ const is_atomic_number_composition = (obj) => {
|
|
|
26
25
|
atomic_nums.every((atomic_num) => Number.isInteger(atomic_num) && Object.hasOwn(ATOMIC_NUMBER_TO_SYMBOL, atomic_num)));
|
|
27
26
|
};
|
|
28
27
|
const format_state = (state) => (state > 0 ? `+` : ``) + state;
|
|
29
|
-
const parse_count = (count) => (count ?
|
|
28
|
+
const parse_count = (count) => (count ? Number(count) : 1);
|
|
30
29
|
const format_count = (count) => {
|
|
31
30
|
if (!Number.isFinite(count))
|
|
32
31
|
return `${count}`;
|
|
@@ -51,7 +50,7 @@ export const atomic_num_to_symbols = (atomic_composition) => {
|
|
|
51
50
|
export const atomic_symbol_to_num = (symbol_composition) => {
|
|
52
51
|
const atomic_composition = {};
|
|
53
52
|
for (const [symbol, amount] of Object.entries(symbol_composition)) {
|
|
54
|
-
if (!
|
|
53
|
+
if (!is_elem_symbol(symbol))
|
|
55
54
|
throw new Error(`Invalid element symbol: ${symbol}`);
|
|
56
55
|
const atomic_num = SYMBOL_TO_ATOMIC_NUMBER[symbol];
|
|
57
56
|
if (!atomic_num)
|
|
@@ -65,9 +64,9 @@ export const atomic_symbol_to_num = (symbol_composition) => {
|
|
|
65
64
|
// Expand parentheses in chemical formulas
|
|
66
65
|
const expand_parentheses = (formula) => {
|
|
67
66
|
while (formula.includes(`(`)) {
|
|
68
|
-
const expanded = formula.replaceAll(/\(([^()]+)\)(
|
|
67
|
+
const expanded = formula.replaceAll(/\((?<group>[^()]+)\)(?<multiplier>\d+(?:\.\d+)?|\.\d+)?/g, (_match, group, multiplier) => {
|
|
69
68
|
const mult = parse_count(multiplier);
|
|
70
|
-
return group.replaceAll(/([A-Z][a-z]?)(
|
|
69
|
+
return group.replaceAll(/(?<element>[A-Z][a-z]?)(?<count>\d+(?:\.\d+)?|\.\d+)?/g, (_m, element, count) => {
|
|
71
70
|
const count_str = format_count(parse_count(count) * mult);
|
|
72
71
|
return element + (count_str === `1` ? `` : count_str);
|
|
73
72
|
});
|
|
@@ -89,11 +88,11 @@ export const parse_formula = (formula) => {
|
|
|
89
88
|
for (const [seg_idx, segment] of segments.entries()) {
|
|
90
89
|
// only hydrate segments (after a separator) carry a leading multiplier
|
|
91
90
|
const coeff = seg_idx > 0 ? /^(?:\d+(?:\.\d+)?|\.\d+)/.exec(segment)?.[0] : undefined;
|
|
92
|
-
const multiplier = coeff ?
|
|
91
|
+
const multiplier = coeff ? Number(coeff) : 1;
|
|
93
92
|
const expanded = expand_parentheses(segment.slice(coeff?.length ?? 0));
|
|
94
|
-
for (const match of expanded.matchAll(/([A-Z][a-z]?)(
|
|
93
|
+
for (const match of expanded.matchAll(/(?<element>[A-Z][a-z]?)(?<count>\d+(?:\.\d+)?|\.\d+)?/g)) {
|
|
95
94
|
const [, element, count] = match;
|
|
96
|
-
if (!
|
|
95
|
+
if (!is_elem_symbol(element))
|
|
97
96
|
throw new Error(`Invalid element symbol: ${element}`);
|
|
98
97
|
composition[element] = (composition[element] ?? 0) + parse_count(count) * multiplier;
|
|
99
98
|
}
|
|
@@ -107,7 +106,7 @@ export const normalize_composition = (composition) => {
|
|
|
107
106
|
}
|
|
108
107
|
const normalized = {};
|
|
109
108
|
for (const [element, amount] of Object.entries(composition)) {
|
|
110
|
-
if (typeof amount === `number` && amount > 0 &&
|
|
109
|
+
if (typeof amount === `number` && amount > 0 && is_elem_symbol(element)) {
|
|
111
110
|
normalized[element] = amount;
|
|
112
111
|
}
|
|
113
112
|
}
|
|
@@ -125,7 +124,7 @@ export const sanitize_composition_keys = (composition) => {
|
|
|
125
124
|
if (typeof amount !== `number` || amount <= 0)
|
|
126
125
|
continue;
|
|
127
126
|
// Extract first valid element symbol from key (e.g. "B0." -> "B", "Fe2+" -> "Fe")
|
|
128
|
-
const elem = (key.match(/[A-Z][a-z]?/g) ?? []).find(
|
|
127
|
+
const elem = (key.match(/[A-Z][a-z]?/g) ?? []).find(is_elem_symbol);
|
|
129
128
|
if (elem)
|
|
130
129
|
sanitized[elem] = (sanitized[elem] || 0) + amount;
|
|
131
130
|
}
|
|
@@ -139,7 +138,7 @@ export const fractional_composition = (composition, by_weight = false) => {
|
|
|
139
138
|
const filtered = Object.fromEntries(Object.entries(composition).filter(([, amount]) => amount > 0));
|
|
140
139
|
if (by_weight) {
|
|
141
140
|
const element_weights = Object.fromEntries(Object.entries(filtered).map(([element, amount]) => {
|
|
142
|
-
if (!
|
|
141
|
+
if (!is_elem_symbol(element))
|
|
143
142
|
throw new Error(`Unknown element: ${element}`);
|
|
144
143
|
const atomic_mass = ATOMIC_WEIGHTS.get(element);
|
|
145
144
|
if (!atomic_mass)
|
|
@@ -191,14 +190,14 @@ export const get_reduced_formula = (composition) => {
|
|
|
191
190
|
return composition;
|
|
192
191
|
const reduced = {};
|
|
193
192
|
for (const [elem, amt] of Object.entries(composition)) {
|
|
194
|
-
if (
|
|
193
|
+
if (is_elem_symbol(elem))
|
|
195
194
|
reduced[elem] = amt / divisor;
|
|
196
195
|
}
|
|
197
196
|
return reduced;
|
|
198
197
|
};
|
|
199
198
|
// Calculate molecular weight (sum of atomic masses * amounts)
|
|
200
199
|
export const get_molecular_weight = (composition) => Object.entries(composition).reduce((total, [elem, amount]) => {
|
|
201
|
-
const mass =
|
|
200
|
+
const mass = is_elem_symbol(elem) ? (ATOMIC_WEIGHTS.get(elem) ?? 0) : 0;
|
|
202
201
|
return total + mass * amount;
|
|
203
202
|
}, 0);
|
|
204
203
|
// Parse oxidation state string (e.g. "+2", "2+", "-", "[2-]") to number
|
|
@@ -208,12 +207,12 @@ const parse_oxidation_state = (oxidation_str) => {
|
|
|
208
207
|
return oxidation_str === `+` ? 1 : -1;
|
|
209
208
|
}
|
|
210
209
|
// Handle formats like "2+", "+2", "2-", "-2"
|
|
211
|
-
const ox_match = /([+-]?)(
|
|
210
|
+
const ox_match = /(?<sign_before>[+-]?)(?<number>\d+)(?<sign_after>[+-]?)/.exec(oxidation_str);
|
|
212
211
|
if (!ox_match)
|
|
213
212
|
return 0;
|
|
214
213
|
const [, sign_before, number, sign_after] = ox_match;
|
|
215
214
|
const sign = sign_before || sign_after || `+`;
|
|
216
|
-
return sign === `-` ? -
|
|
215
|
+
return sign === `-` ? -Number(number) : Number(number);
|
|
217
216
|
};
|
|
218
217
|
// Parse chemical formula string with oxidation states into structured data.
|
|
219
218
|
// Supports both ^2+ and [2+] syntax for oxidation states.
|
|
@@ -231,7 +230,7 @@ export const parse_formula_with_oxidation = (formula, strict = false) => {
|
|
|
231
230
|
// - just oxidation: (?:\^([+-]?\d+[+-]?|[+-])|\[([+-]?\d+[+-]?|[+-])\])
|
|
232
231
|
// - just count: count
|
|
233
232
|
// - neither
|
|
234
|
-
const regex = /([A-Z][a-z]?)(?:(?:\^([+-]?\d+[+-]?|[+-])|\[([+-]?\d+[+-]?|[+-])\])((?:\d+(?:\.\d+)?|\.\d+)?)|((?:\d+(?:\.\d+)?|\.\d+))(?:\^([+-]?\d+[+-]?|[+-])|\[([+-]?\d+[+-]?|[+-])\])?)?/g;
|
|
233
|
+
const regex = /(?<element>[A-Z][a-z]?)(?:(?:\^(?<oxi_caret>[+-]?\d+[+-]?|[+-])|\[(?<oxi_bracket>[+-]?\d+[+-]?|[+-])\])(?<count_after>(?:\d+(?:\.\d+)?|\.\d+)?)|(?<count_before>(?:\d+(?:\.\d+)?|\.\d+))(?:\^(?<oxi_caret_2>[+-]?\d+[+-]?|[+-])|\[(?<oxi_bracket_2>[+-]?\d+[+-]?|[+-])\])?)?/g;
|
|
235
234
|
let match;
|
|
236
235
|
let orig_idx = 0;
|
|
237
236
|
while ((match = regex.exec(cleaned_formula)) !== null) {
|
|
@@ -241,7 +240,7 @@ export const parse_formula_with_oxidation = (formula, strict = false) => {
|
|
|
241
240
|
const oxidation_str = match[2] || match[3] || match[6] || match[7];
|
|
242
241
|
const count_str = match[4] || match[5];
|
|
243
242
|
const count = parse_count(count_str);
|
|
244
|
-
if (!
|
|
243
|
+
if (!is_elem_symbol(element))
|
|
245
244
|
throw new Error(`Invalid element symbol: ${element}`);
|
|
246
245
|
const oxidation_state = oxidation_str ? parse_oxidation_state(oxidation_str) : undefined;
|
|
247
246
|
// Find or add element entry
|
|
@@ -269,7 +268,7 @@ export const parse_formula_with_oxidation = (formula, strict = false) => {
|
|
|
269
268
|
};
|
|
270
269
|
// Convert OxiComposition to ElementWithOxidation array
|
|
271
270
|
// Does not preserve original order since objects don't have a defined order
|
|
272
|
-
export const oxi_composition_to_elements = (composition) => Object.entries(composition).flatMap(([element, { amount, oxidation_state }], idx) =>
|
|
271
|
+
export const oxi_composition_to_elements = (composition) => Object.entries(composition).flatMap(([element, { amount, oxidation_state }], idx) => is_elem_symbol(element) ? [{ element, amount, oxidation_state, orig_idx: idx }] : []);
|
|
273
272
|
// Extract element symbols from a chemical formula.
|
|
274
273
|
// Default (unique=true, sorted=true): "NbZr2Nb" -> ["Nb", "Zr"]
|
|
275
274
|
// unique=false: Fast token extraction preserving order without parentheses expansion
|
|
@@ -283,12 +282,12 @@ export function extract_formula_elements(formula, { unique = true, sorted = true
|
|
|
283
282
|
const matches = formula.match(/[A-Z][a-z]?/g) ?? [];
|
|
284
283
|
const elements = [];
|
|
285
284
|
for (const match of matches) {
|
|
286
|
-
if (
|
|
285
|
+
if (is_elem_symbol(match))
|
|
287
286
|
elements.push(match);
|
|
288
287
|
}
|
|
289
288
|
return elements;
|
|
290
289
|
}
|
|
291
|
-
const symbols = Object.keys(parse_formula(formula)).filter(
|
|
290
|
+
const symbols = Object.keys(parse_formula(formula)).filter(is_elem_symbol);
|
|
292
291
|
return sorted ? symbols.sort() : symbols;
|
|
293
292
|
}
|
|
294
293
|
// Generate all non-empty subsets of a chemical system as hyphenated strings.
|
|
@@ -302,7 +301,7 @@ export function generate_chem_sys_subspaces(input) {
|
|
|
302
301
|
else if (Array.isArray(input)) {
|
|
303
302
|
const uniq = [...new Set(input)];
|
|
304
303
|
for (const elem of uniq) {
|
|
305
|
-
if (!
|
|
304
|
+
if (!is_elem_symbol(elem))
|
|
306
305
|
throw new Error(`Invalid element symbol: ${elem}`);
|
|
307
306
|
}
|
|
308
307
|
elements = uniq;
|
|
@@ -310,7 +309,7 @@ export function generate_chem_sys_subspaces(input) {
|
|
|
310
309
|
else {
|
|
311
310
|
elements = [];
|
|
312
311
|
for (const elem of Object.keys(input)) {
|
|
313
|
-
if (!
|
|
312
|
+
if (!is_elem_symbol(elem))
|
|
314
313
|
throw new Error(`Invalid element symbol: ${elem}`);
|
|
315
314
|
elements.push(elem);
|
|
316
315
|
}
|
|
@@ -354,7 +353,7 @@ export function parse_chemsys_with_wildcards(input) {
|
|
|
354
353
|
if (token === `*`) {
|
|
355
354
|
wildcard_count++;
|
|
356
355
|
}
|
|
357
|
-
else if (
|
|
356
|
+
else if (is_elem_symbol(token)) {
|
|
358
357
|
elements.push(token);
|
|
359
358
|
}
|
|
360
359
|
else {
|
|
@@ -389,7 +388,7 @@ export function parse_formula_with_wildcards(formula) {
|
|
|
389
388
|
// Regex to match either:
|
|
390
389
|
// 1. Standard element symbol with optional decimal count
|
|
391
390
|
// 2. Wildcard with optional decimal count
|
|
392
|
-
const regex = /([A-Z][a-z]?)((?:\d+(?:\.\d+)?|\.\d+)?)|(
|
|
391
|
+
const regex = /(?<element>[A-Z][a-z]?)(?<count>(?:\d+(?:\.\d+)?|\.\d+)?)|(?<wildcard>\*)(?<wildcard_count>(?:\d+(?:\.\d+)?|\.\d+)?)/g;
|
|
393
392
|
let match;
|
|
394
393
|
while ((match = regex.exec(cleaned)) !== null) {
|
|
395
394
|
if (match[3] === `*`) {
|
|
@@ -401,7 +400,7 @@ export function parse_formula_with_wildcards(formula) {
|
|
|
401
400
|
// Element symbol match
|
|
402
401
|
const element = match[1];
|
|
403
402
|
const count = parse_count(match[2]);
|
|
404
|
-
if (!
|
|
403
|
+
if (!is_elem_symbol(element)) {
|
|
405
404
|
throw new Error(`Invalid element symbol: ${element}`);
|
|
406
405
|
}
|
|
407
406
|
tokens.push({ element, count });
|
|
@@ -422,7 +421,7 @@ export function matches_chemsys_wildcard(formula, explicit_elements, wildcard_co
|
|
|
422
421
|
// Must contain all explicit elements
|
|
423
422
|
const formula_set = new Set(formula_elements);
|
|
424
423
|
for (const elem of explicit_elements) {
|
|
425
|
-
if (!
|
|
424
|
+
if (!is_elem_symbol(elem) || !formula_set.has(elem))
|
|
426
425
|
return false;
|
|
427
426
|
}
|
|
428
427
|
return true;
|
package/dist/constants.js
CHANGED
|
@@ -61,9 +61,11 @@ export const TRAJ_KEYWORDS_REGEX = new RegExp(`(^|[-_.])(${TRAJ_KEYWORDS.join(`|
|
|
|
61
61
|
export const STRUCT_KEYWORDS_REGEX = new RegExp(`(${STRUCT_KEYWORDS.join(`|`)})`, `i`);
|
|
62
62
|
export const STRUCT_KEYWORDS_STRICT_REGEX = new RegExp(`(${STRUCT_KEYWORDS_STRICT.join(`|`)})`, `i`);
|
|
63
63
|
export const TRAJ_KEYWORDS_SIMPLE_REGEX = new RegExp(`(${TRAJ_KEYWORDS.join(`|`)})`, `i`);
|
|
64
|
+
// Build a case-insensitive `\.(ext1|ext2|...)$` regex from extensions (leading dots stripped)
|
|
65
|
+
const ext_regex = (exts) => new RegExp(`\\.(${exts.map((ext) => ext.slice(1)).join(`|`)})$`, `i`);
|
|
64
66
|
// File extensions for different file types
|
|
65
67
|
export const TRAJ_EXTENSIONS = Object.freeze([`.traj`, `.xtc`, `.lammpstrj`]);
|
|
66
|
-
export const TRAJ_EXTENSIONS_REGEX =
|
|
68
|
+
export const TRAJ_EXTENSIONS_REGEX = ext_regex(TRAJ_EXTENSIONS);
|
|
67
69
|
export const STRUCTURE_EXTENSIONS = Object.freeze([
|
|
68
70
|
`.cif`,
|
|
69
71
|
`.mcif`,
|
|
@@ -79,7 +81,7 @@ export const STRUCTURE_EXTENSIONS = Object.freeze([
|
|
|
79
81
|
`.sdf`,
|
|
80
82
|
`.mmcif`,
|
|
81
83
|
]);
|
|
82
|
-
export const STRUCTURE_EXTENSIONS_REGEX =
|
|
84
|
+
export const STRUCTURE_EXTENSIONS_REGEX = ext_regex(STRUCTURE_EXTENSIONS);
|
|
83
85
|
export const TRAJ_FALLBACK_EXTENSIONS = Object.freeze([
|
|
84
86
|
`.dat`,
|
|
85
87
|
`.data`,
|
|
@@ -87,13 +89,13 @@ export const TRAJ_FALLBACK_EXTENSIONS = Object.freeze([
|
|
|
87
89
|
`.out`,
|
|
88
90
|
`.json`,
|
|
89
91
|
]);
|
|
90
|
-
export const TRAJ_FALLBACK_EXTENSIONS_REGEX =
|
|
92
|
+
export const TRAJ_FALLBACK_EXTENSIONS_REGEX = ext_regex(TRAJ_FALLBACK_EXTENSIONS);
|
|
91
93
|
// Special regex patterns
|
|
92
|
-
export const VASP_FILES_REGEX = /(?:^|[\\/_.-])(poscar|contcar|potcar|incar|kpoints|outcar)(?:[\\/_.-]|$)/i;
|
|
93
|
-
export const VASP_VOLUMETRIC_REGEX = /(?:^|[\\/_.-])(chgcar|aeccar[012]?|elfcar|locpot|parchg)(?:[\\/_.-]|$)/i;
|
|
94
|
+
export const VASP_FILES_REGEX = /(?:^|[\\/_.-])(?:poscar|contcar|potcar|incar|kpoints|outcar)(?:[\\/_.-]|$)/i;
|
|
95
|
+
export const VASP_VOLUMETRIC_REGEX = /(?:^|[\\/_.-])(?:chgcar|aeccar[012]?|elfcar|locpot|parchg)(?:[\\/_.-]|$)/i;
|
|
94
96
|
export const XDATCAR_REGEX = /xdatcar/i;
|
|
95
|
-
export const CONFIG_DIRS_REGEX = /(?:^|[\\/])(
|
|
96
|
-
export const MD_SIM_EXCLUDE_REGEX = /md_simulation\.(out|txt|yml|py|csv|html|css|md|js|ts)$/i;
|
|
97
|
-
export const XYZ_EXTXYZ_REGEX = /\.(xyz|extxyz)$/i;
|
|
97
|
+
export const CONFIG_DIRS_REGEX = /(?:^|[\\/])(?:\.vscode|\.idea|\.nyc_output|\.cache|\.tmp|\.temp|node_modules|dist|build|coverage)(?:[\\/]|$)/i;
|
|
98
|
+
export const MD_SIM_EXCLUDE_REGEX = /md_simulation\.(?:out|txt|yml|py|csv|html|css|md|js|ts)$/i;
|
|
99
|
+
export const XYZ_EXTXYZ_REGEX = /\.(?:xyz|extxyz)$/i;
|
|
98
100
|
// Compression extensions regex (shared across files)
|
|
99
|
-
export const COMPRESSION_EXTENSIONS_REGEX =
|
|
101
|
+
export const COMPRESSION_EXTENSIONS_REGEX = ext_regex(COMPRESSION_EXTENSIONS);
|
package/dist/controls.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export type ShowControlsConfig = {
|
|
|
5
5
|
style?: string;
|
|
6
6
|
};
|
|
7
7
|
export type ShowControlsProp = ControlsVisibility | ShowControlsConfig | boolean;
|
|
8
|
+
export type ShowControlsState = ReturnType<typeof normalize_show_controls>;
|
|
8
9
|
export declare function normalize_show_controls(prop: ShowControlsProp | undefined): {
|
|
9
10
|
mode: ControlsVisibility;
|
|
10
11
|
hidden: Set<string>;
|
package/dist/controls.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// Controls visibility configuration for visualization components
|
|
2
2
|
// Manages visibility of control buttons in Structure, Trajectory, BrillouinZone
|
|
3
|
-
// Normalize show_controls prop into consistent config with helper methods
|
|
4
3
|
export function normalize_show_controls(prop) {
|
|
5
4
|
// Extract mode, hidden, style from various prop forms
|
|
6
5
|
let mode = `hover`;
|
|
@@ -8,18 +8,15 @@
|
|
|
8
8
|
import ConvexHull3D from './ConvexHull3D.svelte'
|
|
9
9
|
import ConvexHull4D from './ConvexHull4D.svelte'
|
|
10
10
|
import type { BaseConvexHullProps, Hull3DProps } from './index'
|
|
11
|
-
import type { GasSpecies, GasThermodynamicsConfig } from './types'
|
|
12
11
|
|
|
13
12
|
// Union type combining all possible props from 2D, 3D, and 4D components
|
|
14
13
|
// each specific component will only use its relevant props from this super set
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
gas_pressures?: Partial<Record<GasSpecies, number>>
|
|
22
|
-
}
|
|
14
|
+
// (gas_config/gas_pressures already come from BaseConvexHullProps)
|
|
15
|
+
type ConvexHullProps = BaseConvexHullProps &
|
|
16
|
+
Hull3DProps & {
|
|
17
|
+
x_axis?: AxisConfig
|
|
18
|
+
y_axis?: AxisConfig
|
|
19
|
+
}
|
|
23
20
|
|
|
24
21
|
let {
|
|
25
22
|
entries = [],
|
|
@@ -28,14 +25,13 @@
|
|
|
28
25
|
wrapper = $bindable(),
|
|
29
26
|
show_stable = $bindable(true),
|
|
30
27
|
show_unstable = $bindable(true),
|
|
28
|
+
hidden_categories = $bindable([]),
|
|
31
29
|
show_hull_faces = $bindable(true),
|
|
32
|
-
hull_face_opacity: hull_face_opacity_prop = $bindable(
|
|
33
|
-
undefined as number | undefined,
|
|
34
|
-
),
|
|
30
|
+
hull_face_opacity: hull_face_opacity_prop = $bindable(undefined as number | undefined),
|
|
35
31
|
color_mode = $bindable(`energy`),
|
|
36
32
|
color_scale = $bindable(`interpolateViridis`),
|
|
37
33
|
info_pane_open = $bindable(false),
|
|
38
|
-
|
|
34
|
+
controls_open = $bindable(false),
|
|
39
35
|
max_hull_dist_show_phases = $bindable(0.1),
|
|
40
36
|
max_hull_dist_show_labels = $bindable(0.1),
|
|
41
37
|
show_stable_labels = $bindable(true),
|
|
@@ -87,12 +83,11 @@
|
|
|
87
83
|
hull_face_opacity_prop = hull_face_opacity
|
|
88
84
|
})
|
|
89
85
|
|
|
90
|
-
// Map element count to
|
|
91
|
-
//
|
|
92
|
-
//
|
|
86
|
+
// Map element count to component. Deliberate cast: the wrapper passes the prop superset
|
|
87
|
+
// while each component declares only its dimension's props (2D lacks Hull3DProps, 3D/4D
|
|
88
|
+
// lack x/y_axis), so a constructor union wouldn't compile. Svelte ignores extra props.
|
|
93
89
|
const ConvexHullComponent = $derived(
|
|
94
|
-
{ 2: ConvexHull2D, 3: ConvexHull3D, 4: ConvexHull4D }[element_count] ??
|
|
95
|
-
null,
|
|
90
|
+
{ 2: ConvexHull2D, 3: ConvexHull3D, 4: ConvexHull4D }[element_count] ?? null,
|
|
96
91
|
) as Component<ConvexHullProps> | null
|
|
97
92
|
</script>
|
|
98
93
|
|
|
@@ -104,12 +99,13 @@
|
|
|
104
99
|
bind:wrapper
|
|
105
100
|
bind:show_stable
|
|
106
101
|
bind:show_unstable
|
|
102
|
+
bind:hidden_categories
|
|
107
103
|
bind:show_hull_faces
|
|
108
104
|
bind:hull_face_opacity
|
|
109
105
|
bind:color_mode
|
|
110
106
|
bind:color_scale
|
|
111
107
|
bind:info_pane_open
|
|
112
|
-
bind:
|
|
108
|
+
bind:controls_open
|
|
113
109
|
bind:max_hull_dist_show_phases
|
|
114
110
|
bind:max_hull_dist_show_labels
|
|
115
111
|
bind:show_stable_labels
|
|
@@ -127,14 +123,13 @@
|
|
|
127
123
|
{:else}
|
|
128
124
|
<!-- Error state for unsupported dimensionalities -->
|
|
129
125
|
<div class="convex-hull-error">
|
|
130
|
-
<div
|
|
131
|
-
style="text-align: center; padding: 2em; color: var(--convex-hull-text-color, #666)"
|
|
132
|
-
>
|
|
126
|
+
<div style="text-align: center; padding: 2em; color: var(--convex-hull-text-color, #666)">
|
|
133
127
|
<h3 id="unsupported-chemical-system" style="margin: 0 0 1em 0">Unsupported Chemical System</h3>
|
|
134
128
|
<p style="margin: 0">
|
|
135
|
-
Convex hulls require 2, 3, or 4 elements. Found {element_count} element{
|
|
136
|
-
|
|
137
|
-
|
|
129
|
+
Convex hulls require 2, 3, or 4 elements. Found {element_count} element{element_count ===
|
|
130
|
+
1
|
|
131
|
+
? ``
|
|
132
|
+
: `s`}:
|
|
138
133
|
</p>
|
|
139
134
|
<p style="margin: 0.5em 0 0 0; font-weight: bold">
|
|
140
135
|
{elements.join(`, `)}
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import type { AxisConfig } from '../plot';
|
|
2
2
|
import type { Component } from 'svelte';
|
|
3
3
|
import type { BaseConvexHullProps, Hull3DProps } from './index';
|
|
4
|
-
import type { GasSpecies, GasThermodynamicsConfig } from './types';
|
|
5
4
|
type ConvexHullProps = BaseConvexHullProps & Hull3DProps & {
|
|
6
5
|
x_axis?: AxisConfig;
|
|
7
6
|
y_axis?: AxisConfig;
|
|
8
|
-
gas_config?: GasThermodynamicsConfig;
|
|
9
|
-
gas_pressures?: Partial<Record<GasSpecies, number>>;
|
|
10
7
|
};
|
|
11
|
-
declare const ConvexHull: Component<ConvexHullProps, {}, "
|
|
8
|
+
declare const ConvexHull: Component<ConvexHullProps, {}, "display" | "fullscreen" | "wrapper" | "controls_open" | "color_scale" | "info_pane_open" | "temperature" | "show_hull_faces" | "hull_face_opacity" | "color_mode" | "show_stable" | "show_unstable" | "show_stable_labels" | "show_unstable_labels" | "max_hull_dist_show_phases" | "max_hull_dist_show_labels" | "hidden_categories" | "energy_source_mode" | "stable_entries" | "unstable_entries" | "phase_stats" | "highlighted_entries" | "selected_entry" | "gas_pressures">;
|
|
12
9
|
type ConvexHull = ReturnType<typeof ConvexHull>;
|
|
13
10
|
export default ConvexHull;
|