matterviz 0.3.1 → 0.3.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 -2
- package/dist/FilePicker.svelte +154 -96
- package/dist/Icon.svelte +20 -14
- package/dist/MillerIndexInput.svelte +27 -21
- package/dist/api/optimade.js +6 -6
- package/dist/app.css +216 -178
- package/dist/brillouin/BrillouinZone.svelte +299 -198
- package/dist/brillouin/BrillouinZone.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneControls.svelte +32 -5
- package/dist/brillouin/BrillouinZoneExportPane.svelte +74 -55
- package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +99 -68
- package/dist/brillouin/BrillouinZoneScene.svelte +277 -165
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneTooltip.svelte +17 -7
- package/dist/brillouin/compute.js +11 -6
- package/dist/chempot-diagram/ChemPotDiagram.svelte +327 -0
- package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +847 -0
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3194 -0
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
- package/dist/chempot-diagram/ChemPotScene3D.svelte +11 -0
- package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
- package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
- package/dist/chempot-diagram/async-compute.svelte.js +77 -0
- package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
- package/dist/chempot-diagram/chempot-worker.js +11 -0
- package/dist/chempot-diagram/color.d.ts +10 -0
- package/dist/chempot-diagram/color.js +32 -0
- package/dist/chempot-diagram/compute.d.ts +48 -0
- package/dist/chempot-diagram/compute.js +812 -0
- package/dist/chempot-diagram/index.d.ts +6 -0
- package/dist/chempot-diagram/index.js +6 -0
- package/dist/chempot-diagram/pointer.d.ts +16 -0
- package/dist/chempot-diagram/pointer.js +40 -0
- package/dist/chempot-diagram/temperature.d.ts +15 -0
- package/dist/chempot-diagram/temperature.js +36 -0
- package/dist/chempot-diagram/types.d.ts +86 -0
- package/dist/chempot-diagram/types.js +28 -0
- package/dist/colors/index.d.ts +3 -1
- package/dist/colors/index.js +9 -3
- package/dist/composition/BarChart.svelte +141 -77
- package/dist/composition/BubbleChart.svelte +107 -52
- package/dist/composition/Composition.svelte +100 -79
- package/dist/composition/Formula.svelte +108 -62
- package/dist/composition/FormulaFilter.svelte +973 -353
- package/dist/composition/FormulaFilter.svelte.d.ts +35 -1
- package/dist/composition/PieChart.svelte +199 -99
- package/dist/composition/PieChart.svelte.d.ts +1 -1
- package/dist/composition/format.d.ts +5 -0
- package/dist/composition/format.js +20 -3
- package/dist/composition/parse.js +14 -9
- package/dist/convex-hull/ConvexHull.svelte +93 -38
- package/dist/convex-hull/ConvexHull2D.svelte +551 -393
- package/dist/convex-hull/ConvexHull3D.svelte +1303 -825
- package/dist/convex-hull/ConvexHull4D.svelte +1012 -686
- package/dist/convex-hull/ConvexHullControls.svelte +115 -28
- package/dist/convex-hull/ConvexHullInfoPane.svelte +29 -3
- package/dist/convex-hull/ConvexHullStats.svelte +821 -249
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +6 -1
- package/dist/convex-hull/ConvexHullTooltip.svelte +41 -16
- package/dist/convex-hull/GasPressureControls.svelte +104 -61
- package/dist/convex-hull/StructurePopup.svelte +25 -4
- package/dist/convex-hull/TemperatureSlider.svelte +45 -25
- package/dist/convex-hull/barycentric-coords.js +13 -7
- package/dist/convex-hull/demo-temperature.d.ts +6 -0
- package/dist/convex-hull/demo-temperature.js +40 -0
- package/dist/convex-hull/gas-thermodynamics.js +17 -12
- package/dist/convex-hull/helpers.d.ts +10 -1
- package/dist/convex-hull/helpers.js +79 -38
- package/dist/convex-hull/index.d.ts +1 -0
- package/dist/convex-hull/index.js +1 -0
- package/dist/convex-hull/thermodynamics.d.ts +8 -21
- package/dist/convex-hull/thermodynamics.js +163 -69
- package/dist/convex-hull/types.d.ts +12 -12
- package/dist/convex-hull/types.js +0 -12
- package/dist/coordination/CoordinationBarPlot.svelte +232 -176
- package/dist/element/BohrAtom.svelte +56 -13
- package/dist/element/ElementHeading.svelte +7 -2
- package/dist/element/ElementPhoto.svelte +15 -9
- package/dist/element/ElementStats.svelte +10 -4
- package/dist/element/ElementTile.svelte +137 -73
- package/dist/element/Nucleus.svelte +39 -11
- package/dist/element/data.js +2 -14
- package/dist/element/data.json.gz +0 -0
- package/dist/element/types.d.ts +1 -0
- package/dist/feedback/ClickFeedback.svelte +16 -5
- package/dist/feedback/DragOverlay.svelte +10 -2
- package/dist/feedback/Spinner.svelte +4 -2
- package/dist/feedback/StatusMessage.svelte +8 -2
- package/dist/fermi-surface/FermiSlice.svelte +118 -88
- package/dist/fermi-surface/FermiSurface.svelte +336 -239
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceControls.svelte +113 -46
- package/dist/fermi-surface/FermiSurfaceScene.svelte +536 -343
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +14 -5
- package/dist/fermi-surface/compute.js +16 -20
- package/dist/fermi-surface/parse.js +37 -33
- package/dist/fermi-surface/symmetry.js +2 -7
- package/dist/fermi-surface/types.d.ts +3 -5
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +1527 -0
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
- package/dist/heatmap-matrix/index.d.ts +53 -0
- package/dist/heatmap-matrix/index.js +100 -0
- package/dist/heatmap-matrix/shared.d.ts +2 -0
- package/dist/heatmap-matrix/shared.js +4 -0
- package/dist/icons.d.ts +111 -0
- package/dist/icons.js +158 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.js +5 -2
- package/dist/io/decompress.js +1 -1
- package/dist/io/export.d.ts +3 -0
- package/dist/io/export.js +138 -140
- package/dist/io/file-drop.d.ts +7 -0
- package/dist/io/file-drop.js +43 -0
- package/dist/io/index.d.ts +2 -2
- package/dist/io/index.js +2 -112
- package/dist/io/is-binary.js +2 -3
- package/dist/io/types.d.ts +1 -0
- package/dist/io/url-drop.d.ts +2 -0
- package/dist/io/url-drop.js +117 -0
- package/dist/isosurface/Isosurface.svelte +220 -110
- package/dist/isosurface/IsosurfaceControls.svelte +65 -28
- package/dist/isosurface/parse.js +104 -56
- package/dist/isosurface/slice.d.ts +2 -1
- package/dist/isosurface/slice.js +8 -13
- package/dist/isosurface/types.d.ts +14 -1
- package/dist/isosurface/types.js +152 -5
- package/dist/labels.d.ts +2 -1
- package/dist/labels.js +12 -8
- package/dist/layout/FullscreenToggle.svelte +11 -2
- package/dist/layout/InfoCard.svelte +38 -6
- package/dist/layout/InfoTag.svelte +125 -94
- package/dist/layout/PropertyFilter.svelte +82 -37
- package/dist/layout/SettingsSection.svelte +85 -55
- package/dist/layout/SubpageGrid.svelte +82 -0
- package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
- package/dist/layout/index.d.ts +1 -0
- package/dist/layout/index.js +1 -0
- package/dist/layout/json-tree/JsonNode.svelte +266 -223
- package/dist/layout/json-tree/JsonTree.svelte +516 -429
- package/dist/layout/json-tree/JsonTree.svelte.d.ts +1 -1
- package/dist/layout/json-tree/JsonValue.svelte +281 -173
- package/dist/layout/json-tree/types.d.ts +10 -2
- package/dist/layout/json-tree/utils.d.ts +2 -0
- package/dist/layout/json-tree/utils.js +37 -2
- package/dist/marching-cubes.js +25 -2
- package/dist/math.d.ts +20 -17
- package/dist/math.js +474 -57
- package/dist/overlays/ContextMenu.svelte +66 -40
- package/dist/overlays/DraggablePane.svelte +331 -154
- package/dist/overlays/DraggablePane.svelte.d.ts +2 -0
- package/dist/periodic-table/PeriodicTable.svelte +278 -145
- package/dist/periodic-table/PeriodicTableControls.svelte +178 -128
- package/dist/periodic-table/PropertySelect.svelte +25 -7
- package/dist/periodic-table/TableInset.svelte +8 -3
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +559 -267
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -2
- package/dist/phase-diagram/PhaseDiagramControls.svelte +131 -51
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +3 -2
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +160 -110
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +8 -1
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +217 -86
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +6 -3
- package/dist/phase-diagram/TdbInfoPanel.svelte +28 -4
- package/dist/phase-diagram/build-diagram.js +9 -9
- package/dist/phase-diagram/colors.js +1 -3
- package/dist/phase-diagram/index.d.ts +2 -0
- package/dist/phase-diagram/index.js +2 -0
- package/dist/phase-diagram/parse.js +10 -9
- package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
- package/dist/phase-diagram/svg-to-diagram.js +869 -0
- package/dist/phase-diagram/types.d.ts +10 -0
- package/dist/phase-diagram/utils.d.ts +8 -4
- package/dist/phase-diagram/utils.js +219 -74
- package/dist/plot/AxisLabel.svelte +51 -0
- package/dist/plot/AxisLabel.svelte.d.ts +16 -0
- package/dist/plot/BarPlot.svelte +1461 -768
- package/dist/plot/BarPlot.svelte.d.ts +3 -3
- package/dist/plot/BarPlotControls.svelte +33 -6
- package/dist/plot/BarPlotControls.svelte.d.ts +1 -1
- package/dist/plot/ColorBar.svelte +533 -383
- package/dist/plot/ColorBar.svelte.d.ts +1 -1
- package/dist/plot/ColorScaleSelect.svelte +28 -7
- package/dist/plot/ElementScatter.svelte +38 -16
- package/dist/plot/FillArea.svelte +152 -92
- package/dist/plot/Histogram.svelte +1162 -709
- package/dist/plot/Histogram.svelte.d.ts +1 -1
- package/dist/plot/HistogramControls.svelte +81 -18
- package/dist/plot/HistogramControls.svelte.d.ts +6 -2
- package/dist/plot/InteractiveAxisLabel.svelte +34 -11
- package/dist/plot/InteractiveAxisLabel.svelte.d.ts +1 -1
- package/dist/plot/Line.svelte +63 -28
- package/dist/plot/PlotControls.svelte +221 -96
- package/dist/plot/PlotControls.svelte.d.ts +1 -1
- package/dist/plot/PlotLegend.svelte +174 -91
- package/dist/plot/PlotTooltip.svelte +45 -6
- package/dist/plot/PortalSelect.svelte +175 -146
- package/dist/plot/ReferenceLine.svelte +77 -22
- package/dist/plot/ReferenceLine.svelte.d.ts +1 -0
- package/dist/plot/ReferenceLine3D.svelte +132 -107
- package/dist/plot/ReferencePlane.svelte +146 -123
- package/dist/plot/ScatterPlot.svelte +1880 -1156
- package/dist/plot/ScatterPlot.svelte.d.ts +3 -3
- package/dist/plot/ScatterPlot3D.svelte +256 -131
- package/dist/plot/ScatterPlot3D.svelte.d.ts +2 -2
- package/dist/plot/ScatterPlot3DControls.svelte +300 -297
- package/dist/plot/ScatterPlot3DControls.svelte.d.ts +2 -1
- package/dist/plot/ScatterPlot3DScene.svelte +608 -406
- package/dist/plot/ScatterPlot3DScene.svelte.d.ts +2 -2
- package/dist/plot/ScatterPlotControls.svelte +150 -70
- package/dist/plot/ScatterPlotControls.svelte.d.ts +1 -1
- package/dist/plot/ScatterPoint.svelte +98 -26
- package/dist/plot/ScatterPoint.svelte.d.ts +1 -0
- package/dist/plot/SpacegroupBarPlot.svelte +142 -85
- package/dist/plot/Surface3D.svelte +159 -108
- package/dist/plot/ZeroLines.svelte +96 -0
- package/dist/plot/ZeroLines.svelte.d.ts +32 -0
- package/dist/plot/ZoomRect.svelte +23 -0
- package/dist/plot/ZoomRect.svelte.d.ts +8 -0
- package/dist/plot/axis-utils.d.ts +1 -1
- package/dist/plot/axis-utils.js +1 -3
- package/dist/plot/data-cleaning.js +12 -28
- package/dist/plot/data-transform.js +2 -1
- package/dist/plot/fill-utils.js +2 -0
- package/dist/plot/index.d.ts +6 -2
- package/dist/plot/index.js +6 -2
- package/dist/plot/interactions.d.ts +8 -10
- package/dist/plot/interactions.js +2 -3
- package/dist/plot/layout.d.ts +11 -2
- package/dist/plot/layout.js +44 -17
- package/dist/plot/reference-line.d.ts +5 -22
- package/dist/plot/reference-line.js +12 -84
- package/dist/plot/scales.js +24 -36
- package/dist/plot/types.d.ts +53 -40
- package/dist/plot/types.js +12 -7
- package/dist/plot/utils/label-placement.d.ts +32 -15
- package/dist/plot/utils/label-placement.js +227 -63
- package/dist/plot/utils/series-visibility.js +2 -3
- package/dist/plot/utils.d.ts +1 -0
- package/dist/plot/utils.js +14 -0
- package/dist/rdf/RdfPlot.svelte +173 -132
- package/dist/rdf/calc-rdf.js +4 -5
- package/dist/sanitize.d.ts +4 -0
- package/dist/sanitize.js +107 -0
- package/dist/settings.d.ts +21 -6
- package/dist/settings.js +63 -19
- package/dist/spectral/Bands.svelte +963 -412
- package/dist/spectral/Bands.svelte.d.ts +22 -2
- package/dist/spectral/BandsAndDos.svelte +90 -49
- package/dist/spectral/BrillouinBandsDos.svelte +151 -93
- package/dist/spectral/Dos.svelte +389 -258
- package/dist/spectral/helpers.d.ts +23 -1
- package/dist/spectral/helpers.js +119 -51
- package/dist/spectral/types.d.ts +2 -0
- package/dist/state.svelte.d.ts +1 -1
- package/dist/state.svelte.js +3 -2
- package/dist/structure/Arrow.svelte +59 -20
- package/dist/structure/AtomLegend.svelte +231 -129
- package/dist/structure/AtomLegend.svelte.d.ts +1 -1
- package/dist/structure/Bond.svelte +73 -47
- package/dist/structure/CanvasTooltip.svelte +10 -2
- package/dist/structure/CellSelect.svelte +148 -51
- package/dist/structure/Cylinder.svelte +33 -17
- package/dist/structure/Lattice.svelte +88 -33
- package/dist/structure/Structure.svelte +1077 -821
- package/dist/structure/Structure.svelte.d.ts +1 -1
- package/dist/structure/StructureControls.svelte +373 -139
- package/dist/structure/StructureControls.svelte.d.ts +1 -1
- package/dist/structure/StructureExportPane.svelte +124 -89
- package/dist/structure/StructureExportPane.svelte.d.ts +1 -1
- package/dist/structure/StructureInfoPane.svelte +304 -231
- package/dist/structure/StructureScene.svelte +919 -445
- package/dist/structure/StructureScene.svelte.d.ts +16 -7
- package/dist/structure/atom-properties.d.ts +6 -2
- package/dist/structure/atom-properties.js +42 -29
- package/dist/structure/bonding.js +6 -7
- package/dist/structure/export.js +22 -34
- package/dist/structure/ferrox-wasm-types.d.ts +3 -2
- package/dist/structure/ferrox-wasm-types.js +0 -3
- package/dist/structure/ferrox-wasm.d.ts +3 -2
- package/dist/structure/ferrox-wasm.js +2 -3
- package/dist/structure/index.d.ts +16 -0
- package/dist/structure/index.js +88 -6
- package/dist/structure/measure.d.ts +2 -2
- package/dist/structure/measure.js +4 -44
- package/dist/structure/parse.js +130 -155
- package/dist/structure/partial-occupancy.d.ts +25 -0
- package/dist/structure/partial-occupancy.js +99 -0
- package/dist/structure/pbc.d.ts +1 -0
- package/dist/structure/pbc.js +16 -6
- package/dist/structure/supercell.d.ts +2 -2
- package/dist/structure/supercell.js +12 -22
- package/dist/structure/validation.js +5 -3
- package/dist/symmetry/SymmetryStats.svelte +94 -37
- package/dist/symmetry/WyckoffTable.svelte +42 -14
- package/dist/symmetry/cell-transform.js +5 -3
- package/dist/symmetry/index.d.ts +7 -4
- package/dist/symmetry/index.js +87 -21
- package/dist/symmetry/spacegroups.js +148 -148
- package/dist/table/HeatmapTable.svelte +1112 -516
- package/dist/table/HeatmapTable.svelte.d.ts +12 -1
- package/dist/table/ToggleMenu.svelte +125 -90
- package/dist/table/index.d.ts +2 -0
- package/dist/table/index.js +2 -4
- package/dist/theme/ThemeControl.svelte +21 -12
- package/dist/time.js +4 -1
- package/dist/tooltip/TooltipContent.svelte +33 -8
- package/dist/trajectory/Trajectory.svelte +889 -687
- package/dist/trajectory/TrajectoryError.svelte +14 -3
- package/dist/trajectory/TrajectoryExportPane.svelte +148 -90
- package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +1 -1
- package/dist/trajectory/TrajectoryInfoPane.svelte +272 -143
- package/dist/trajectory/constants.d.ts +6 -0
- package/dist/trajectory/constants.js +7 -0
- package/dist/trajectory/extract.js +13 -31
- package/dist/trajectory/format-detect.d.ts +9 -0
- package/dist/trajectory/format-detect.js +76 -0
- package/dist/trajectory/frame-reader.d.ts +17 -0
- package/dist/trajectory/frame-reader.js +332 -0
- package/dist/trajectory/helpers.d.ts +14 -0
- package/dist/trajectory/helpers.js +172 -0
- package/dist/trajectory/index.d.ts +1 -0
- package/dist/trajectory/index.js +23 -14
- package/dist/trajectory/parse/ase.d.ts +2 -0
- package/dist/trajectory/parse/ase.js +77 -0
- package/dist/trajectory/parse/hdf5.d.ts +2 -0
- package/dist/trajectory/parse/hdf5.js +129 -0
- package/dist/trajectory/parse/index.d.ts +12 -0
- package/dist/trajectory/parse/index.js +299 -0
- package/dist/trajectory/parse/lammps.d.ts +5 -0
- package/dist/trajectory/parse/lammps.js +179 -0
- package/dist/trajectory/parse/vasp.d.ts +2 -0
- package/dist/trajectory/parse/vasp.js +68 -0
- package/dist/trajectory/parse/xyz.d.ts +2 -0
- package/dist/trajectory/parse/xyz.js +110 -0
- package/dist/trajectory/plotting.js +13 -8
- package/dist/trajectory/types.d.ts +11 -0
- package/dist/trajectory/types.js +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +17 -0
- package/dist/xrd/XrdPlot.svelte +337 -245
- package/dist/xrd/broadening.js +14 -9
- package/dist/xrd/calc-xrd.js +12 -19
- package/dist/xrd/parse.d.ts +1 -1
- package/dist/xrd/parse.js +17 -17
- package/package.json +103 -101
- package/readme.md +4 -4
- package/dist/trajectory/parse.d.ts +0 -42
- package/dist/trajectory/parse.js +0 -1267
- /package/dist/element/{data.json.d.ts → data.json.gz.d.ts} +0 -0
- /package/dist/theme/{themes.js → themes.mjs} +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { PhaseData } from '../convex-hull/types';
|
|
2
|
+
import type { ChemPotDiagramConfig, ChemPotHoverInfo } from './types';
|
|
3
|
+
type $$ComponentProps = {
|
|
4
|
+
entries: PhaseData[];
|
|
5
|
+
config?: ChemPotDiagramConfig;
|
|
6
|
+
width?: number;
|
|
7
|
+
height?: number;
|
|
8
|
+
temperature?: number;
|
|
9
|
+
interpolate_temperature?: boolean;
|
|
10
|
+
max_interpolation_gap?: number;
|
|
11
|
+
hover_info?: ChemPotHoverInfo | null;
|
|
12
|
+
render_local_tooltip?: boolean;
|
|
13
|
+
};
|
|
14
|
+
declare const ChemPotDiagram3D: import("svelte").Component<$$ComponentProps, {}, "temperature" | "height" | "width" | "hover_info">;
|
|
15
|
+
type ChemPotDiagram3D = ReturnType<typeof ChemPotDiagram3D>;
|
|
16
|
+
export default ChemPotDiagram3D;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
// Scene wrapper that enables Threlte pointer events for hover tooltips.
|
|
3
|
+
// Must be rendered inside <Canvas>, mirroring ScatterPlot3DScene / StructureScene pattern.
|
|
4
|
+
import { interactivity } from '@threlte/extras'
|
|
5
|
+
import type { Snippet } from 'svelte'
|
|
6
|
+
|
|
7
|
+
let { children }: { children?: Snippet } = $props()
|
|
8
|
+
interactivity()
|
|
9
|
+
</script>
|
|
10
|
+
|
|
11
|
+
{@render children?.()}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
type $$ComponentProps = {
|
|
3
|
+
children?: Snippet;
|
|
4
|
+
};
|
|
5
|
+
declare const ChemPotScene3D: import("svelte").Component<$$ComponentProps, {}, "">;
|
|
6
|
+
type ChemPotScene3D = ReturnType<typeof ChemPotScene3D>;
|
|
7
|
+
export default ChemPotScene3D;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Async wrapper for compute_chempot_diagram via Web Worker.
|
|
2
|
+
// Falls back to synchronous main-thread computation during SSR.
|
|
3
|
+
import { compute_chempot_diagram, formula_key_from_composition } from './compute';
|
|
4
|
+
let worker = null;
|
|
5
|
+
let next_id = 0;
|
|
6
|
+
const pending = new Map();
|
|
7
|
+
const pending_by_key = new Map();
|
|
8
|
+
function make_compute_request_key(entries, config) {
|
|
9
|
+
const keyed_entries = entries
|
|
10
|
+
.map((entry) => [
|
|
11
|
+
formula_key_from_composition(entry.composition),
|
|
12
|
+
entry.energy,
|
|
13
|
+
entry.energy_per_atom ?? ``,
|
|
14
|
+
entry.e_form_per_atom ?? ``,
|
|
15
|
+
entry.is_stable ?? ``,
|
|
16
|
+
entry.e_above_hull ?? ``,
|
|
17
|
+
entry.exclude_from_hull ?? ``,
|
|
18
|
+
].join(`:`))
|
|
19
|
+
.sort();
|
|
20
|
+
return `${keyed_entries.join(`,`)}|${JSON.stringify(config)}`;
|
|
21
|
+
}
|
|
22
|
+
function track_pending(request_key, promise) {
|
|
23
|
+
pending_by_key.set(request_key, promise);
|
|
24
|
+
promise.then(() => pending_by_key.delete(request_key), () => pending_by_key.delete(request_key));
|
|
25
|
+
return promise;
|
|
26
|
+
}
|
|
27
|
+
function get_worker() {
|
|
28
|
+
if (typeof Worker === `undefined`)
|
|
29
|
+
return null;
|
|
30
|
+
if (!worker) {
|
|
31
|
+
worker = new Worker(new URL(`./chempot-worker.ts`, import.meta.url), { type: `module` });
|
|
32
|
+
worker.onmessage = ({ data: { id, result, error } }) => {
|
|
33
|
+
const req = pending.get(id);
|
|
34
|
+
if (!req)
|
|
35
|
+
return;
|
|
36
|
+
pending.delete(id);
|
|
37
|
+
if (error || !result)
|
|
38
|
+
req.reject(new Error(error ?? `Worker returned null`));
|
|
39
|
+
else
|
|
40
|
+
req.resolve(result);
|
|
41
|
+
};
|
|
42
|
+
worker.onerror = (event) => {
|
|
43
|
+
event.preventDefault();
|
|
44
|
+
const err = new Error(event.message || `Worker initialization error`);
|
|
45
|
+
for (const req of pending.values())
|
|
46
|
+
req.reject(err);
|
|
47
|
+
pending.clear();
|
|
48
|
+
worker = null;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return worker;
|
|
52
|
+
}
|
|
53
|
+
export function compute_chempot_async(entries, config = {}) {
|
|
54
|
+
const request_key = make_compute_request_key(entries, config);
|
|
55
|
+
const existing = pending_by_key.get(request_key);
|
|
56
|
+
if (existing)
|
|
57
|
+
return existing;
|
|
58
|
+
const wkr = get_worker();
|
|
59
|
+
// SSR / no-Worker fallback: run synchronously (wrapped so throws → rejections)
|
|
60
|
+
if (!wkr) {
|
|
61
|
+
const promise = Promise.resolve().then(() => compute_chempot_diagram(entries, config));
|
|
62
|
+
return track_pending(request_key, promise);
|
|
63
|
+
}
|
|
64
|
+
const promise = new Promise((resolve, reject) => {
|
|
65
|
+
const id = ++next_id;
|
|
66
|
+
pending.set(id, { resolve, reject });
|
|
67
|
+
try {
|
|
68
|
+
// $state.snapshot strips Svelte $state proxies (not structured-cloneable)
|
|
69
|
+
wkr.postMessage($state.snapshot({ id, entries, config }));
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
pending.delete(id);
|
|
73
|
+
reject(err instanceof Error ? err : new Error(String(err)));
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
return track_pending(request_key, promise);
|
|
77
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { compute_chempot_diagram } from './compute';
|
|
2
|
+
self.onmessage = (event) => {
|
|
3
|
+
const { id, entries, config } = event.data;
|
|
4
|
+
try {
|
|
5
|
+
const result = compute_chempot_diagram(entries, config);
|
|
6
|
+
postMessage({ id, result, error: null });
|
|
7
|
+
}
|
|
8
|
+
catch (err) {
|
|
9
|
+
postMessage({ id, result: null, error: err instanceof Error ? err.message : String(err) });
|
|
10
|
+
}
|
|
11
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type D3InterpolateName } from '../colors';
|
|
2
|
+
/** Resolve D3 interpolator with optional reverse for chempot color scales. */
|
|
3
|
+
export declare function get_chempot_interpolator(name: D3InterpolateName, reverse: boolean): (t: number) => string;
|
|
4
|
+
/** Build sequential color scale from values and D3 interpolator name. */
|
|
5
|
+
export declare function make_chempot_color_scale(values: number[], interpolator_name: D3InterpolateName, reverse: boolean): ((val: number) => string) | null;
|
|
6
|
+
/** Resolve color bar props for chempot diagrams (interpolator + domain). */
|
|
7
|
+
export declare function get_chempot_color_bar_config(color_scale: D3InterpolateName, reverse: boolean): {
|
|
8
|
+
color_scale_fn: (t: number) => string;
|
|
9
|
+
color_scale_domain: [number, number];
|
|
10
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { get_d3_interpolator } from '../colors';
|
|
2
|
+
import { scaleSequential } from 'd3-scale';
|
|
3
|
+
/** Resolve D3 interpolator with optional reverse for chempot color scales. */
|
|
4
|
+
export function get_chempot_interpolator(name, reverse) {
|
|
5
|
+
const raw = get_d3_interpolator(name);
|
|
6
|
+
return reverse ? (t) => raw(1 - t) : raw;
|
|
7
|
+
}
|
|
8
|
+
/** Build sequential color scale from values and D3 interpolator name. */
|
|
9
|
+
export function make_chempot_color_scale(values, interpolator_name, reverse) {
|
|
10
|
+
const finite_values = values.filter(Number.isFinite);
|
|
11
|
+
if (finite_values.length === 0)
|
|
12
|
+
return null;
|
|
13
|
+
let [min_value, max_raw_value] = [finite_values[0], finite_values[0]];
|
|
14
|
+
for (let idx = 1; idx < finite_values.length; idx++) {
|
|
15
|
+
if (finite_values[idx] < min_value)
|
|
16
|
+
min_value = finite_values[idx];
|
|
17
|
+
if (finite_values[idx] > max_raw_value)
|
|
18
|
+
max_raw_value = finite_values[idx];
|
|
19
|
+
}
|
|
20
|
+
const max_value = Math.max(max_raw_value, min_value + 1e-6);
|
|
21
|
+
return scaleSequential(get_chempot_interpolator(interpolator_name, reverse)).domain([
|
|
22
|
+
min_value,
|
|
23
|
+
max_value,
|
|
24
|
+
]);
|
|
25
|
+
}
|
|
26
|
+
/** Resolve color bar props for chempot diagrams (interpolator + domain). */
|
|
27
|
+
export function get_chempot_color_bar_config(color_scale, reverse) {
|
|
28
|
+
return {
|
|
29
|
+
color_scale_fn: get_chempot_interpolator(color_scale, reverse),
|
|
30
|
+
color_scale_domain: [0, 1],
|
|
31
|
+
};
|
|
32
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { PhaseData } from '../convex-hull/types';
|
|
2
|
+
import { type ChemPotDiagramConfig, type ChemPotDiagramData } from './types';
|
|
3
|
+
export declare function get_energy_per_atom(entry: PhaseData): number;
|
|
4
|
+
export declare function formula_key_from_composition(composition: Record<string, number>): string;
|
|
5
|
+
export declare function get_min_entries_and_el_refs(entries: PhaseData[]): {
|
|
6
|
+
min_entries: PhaseData[];
|
|
7
|
+
el_refs: Record<string, PhaseData>;
|
|
8
|
+
};
|
|
9
|
+
export declare function compute_form_energy_per_atom(entry: PhaseData, el_refs: Record<string, PhaseData>): number;
|
|
10
|
+
export declare function best_form_energy_for_formula(entries: PhaseData[], formula: string, el_refs: Record<string, PhaseData>): number | undefined;
|
|
11
|
+
export declare function renormalize_entries(entries: PhaseData[], el_refs: Record<string, PhaseData>, elements: string[]): PhaseData[];
|
|
12
|
+
export declare function build_hyperplanes(min_entries: PhaseData[], el_refs: Record<string, PhaseData>, elements: string[]): {
|
|
13
|
+
hyperplanes: number[][];
|
|
14
|
+
hyperplane_entries: PhaseData[];
|
|
15
|
+
};
|
|
16
|
+
export declare function build_border_hyperplanes(lims: [number, number][]): number[][];
|
|
17
|
+
export declare function compute_domains(hyperplanes: number[][], border_hyperplanes: number[][], hyperplane_entries: PhaseData[], dim: number): Record<string, number[][]>;
|
|
18
|
+
export declare function apply_element_padding(domains: Record<string, number[][]>, elem_indices: number[], padding: number, default_min_limit: number): number[];
|
|
19
|
+
export declare function pad_domain_points(pts: number[][], elem_indices: number[], new_lims: number[], default_min_limit: number, padding: number): number[][];
|
|
20
|
+
export declare function build_axis_ranges(points: number[][], elements: string[]): {
|
|
21
|
+
element: string;
|
|
22
|
+
min_val: number;
|
|
23
|
+
max_val: number;
|
|
24
|
+
}[];
|
|
25
|
+
export declare function simple_pca(data: number[][], k?: number): {
|
|
26
|
+
scores: number[][];
|
|
27
|
+
eigenvectors: number[][];
|
|
28
|
+
};
|
|
29
|
+
export declare function orthonormal_2d(line_pts: number[][]): [number, number];
|
|
30
|
+
export declare function dedup_points(pts: number[][], tol?: number): {
|
|
31
|
+
unique: number[][];
|
|
32
|
+
orig_indices: number[];
|
|
33
|
+
};
|
|
34
|
+
export declare function get_3d_domain_simplexes_and_ann_loc(points_3d: number[][]): {
|
|
35
|
+
simplex_indices: number[][];
|
|
36
|
+
ann_loc: number[];
|
|
37
|
+
};
|
|
38
|
+
export declare function bbox_diagonal(points: number[][]): number;
|
|
39
|
+
export declare function scale_to_font_range(sizes: number[], min_font: number, max_font: number): number[];
|
|
40
|
+
export interface VisibleDomainLabel {
|
|
41
|
+
formula: string;
|
|
42
|
+
position: [number, number, number];
|
|
43
|
+
label_font_size: number;
|
|
44
|
+
}
|
|
45
|
+
export declare function get_visible_domain_labels(face_positions: ArrayLike<number>, face_domain_map: string[], label_font_size_by_formula: ReadonlyMap<string, number>, pinned_labels?: VisibleDomainLabel[]): VisibleDomainLabel[];
|
|
46
|
+
export declare function get_ternary_combinations(elements: string[]): string[][];
|
|
47
|
+
export declare function make_nd_cache_key(entries: PhaseData[], formal_chempots: boolean, default_min_limit: number, limits: ChemPotDiagramConfig[`limits`]): string;
|
|
48
|
+
export declare function compute_chempot_diagram(entries: PhaseData[], config?: ChemPotDiagramConfig): ChemPotDiagramData;
|