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
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { AxisConfig } from '../plot';
|
|
2
2
|
import type { ComponentProps, Snippet } from 'svelte';
|
|
3
3
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
4
|
+
import type { DiagramInput } from './diagram-input';
|
|
4
5
|
import PhaseDiagramControls from './PhaseDiagramControls.svelte';
|
|
5
|
-
import type { PhaseDiagramConfig, PhaseDiagramData, PhaseDiagramTooltipConfig, PhaseHoverInfo, PhaseRegion } from './types';
|
|
6
|
+
import type { LeverRuleMode, PhaseDiagramConfig, PhaseDiagramData, PhaseDiagramTooltipConfig, PhaseHoverInfo, PhaseRegion } from './types';
|
|
6
7
|
type Props = HTMLAttributes<HTMLDivElement> & {
|
|
7
8
|
data: PhaseDiagramData;
|
|
8
9
|
config?: Partial<PhaseDiagramConfig>;
|
|
@@ -24,6 +25,9 @@ type Props = HTMLAttributes<HTMLDivElement> & {
|
|
|
24
25
|
export_pane_open?: boolean;
|
|
25
26
|
png_dpi?: number;
|
|
26
27
|
export_filename?: string;
|
|
28
|
+
lever_rule_mode?: LeverRuleMode;
|
|
29
|
+
diagram_input?: DiagramInput | null;
|
|
30
|
+
editor_open?: boolean;
|
|
27
31
|
x_axis?: AxisConfig;
|
|
28
32
|
y_axis?: AxisConfig;
|
|
29
33
|
tooltip?: Snippet<[PhaseHoverInfo]> | PhaseDiagramTooltipConfig | false;
|
|
@@ -35,6 +39,6 @@ type Props = HTMLAttributes<HTMLDivElement> & {
|
|
|
35
39
|
}
|
|
36
40
|
]>;
|
|
37
41
|
};
|
|
38
|
-
declare const IsobaricBinaryPhaseDiagram: import("svelte").Component<Props, {}, "fullscreen" | "controls_open" | "x_axis" | "y_axis" | "
|
|
42
|
+
declare const IsobaricBinaryPhaseDiagram: import("svelte").Component<Props, {}, "fullscreen" | "controls_open" | "x_axis" | "y_axis" | "show_grid" | "wrapper" | "hovered_region" | "config" | "show_boundaries" | "show_labels" | "show_special_points" | "show_component_labels" | "png_dpi" | "export_pane_open" | "lever_rule_mode" | "editor_open" | "diagram_input" | "display_temp_unit">;
|
|
39
43
|
type IsobaricBinaryPhaseDiagram = ReturnType<typeof IsobaricBinaryPhaseDiagram>;
|
|
40
44
|
export default IsobaricBinaryPhaseDiagram;
|
|
@@ -1,44 +1,105 @@
|
|
|
1
|
-
<script lang="ts"
|
|
2
|
-
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
//
|
|
22
|
-
|
|
23
|
-
//
|
|
24
|
-
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
:
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
// NOTE: Axis config objects must be reassigned (not mutated) to trigger $bindable reactivity.
|
|
3
|
+
import { css_color_to_hex } from '../colors'
|
|
4
|
+
import { format_num } from '../labels'
|
|
5
|
+
import SettingsSection from '../layout/SettingsSection.svelte'
|
|
6
|
+
import DraggablePane from '../overlays/DraggablePane.svelte'
|
|
7
|
+
import type { AxisConfig } from '../plot'
|
|
8
|
+
import type { ComponentProps, Snippet } from 'svelte'
|
|
9
|
+
import { tooltip } from 'svelte-multiselect/attachments'
|
|
10
|
+
import type { LeverRuleMode, PhaseDiagramConfig, PhaseDiagramData } from './types'
|
|
11
|
+
import { merge_phase_diagram_config, PHASE_DIAGRAM_DEFAULTS } from './utils'
|
|
12
|
+
|
|
13
|
+
type Props = Omit<ComponentProps<typeof DraggablePane>, `children`> & {
|
|
14
|
+
controls_open?: boolean
|
|
15
|
+
// Visibility toggles
|
|
16
|
+
show_boundaries?: boolean
|
|
17
|
+
show_labels?: boolean
|
|
18
|
+
show_special_points?: boolean
|
|
19
|
+
show_grid?: boolean
|
|
20
|
+
show_component_labels?: boolean
|
|
21
|
+
// Configuration
|
|
22
|
+
config?: Partial<PhaseDiagramConfig>
|
|
23
|
+
// Lever rule mode
|
|
24
|
+
lever_rule_mode?: LeverRuleMode
|
|
25
|
+
// Axis configuration
|
|
26
|
+
x_axis?: AxisConfig
|
|
27
|
+
y_axis?: AxisConfig
|
|
28
|
+
// Data for context (components, units, etc.)
|
|
29
|
+
data?: PhaseDiagramData
|
|
30
|
+
// Export settings
|
|
31
|
+
enable_export?: boolean
|
|
32
|
+
png_dpi?: number
|
|
33
|
+
// Pane customization
|
|
34
|
+
pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`]
|
|
35
|
+
toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
|
|
36
|
+
// Custom content snippets
|
|
37
|
+
children?: Snippet<[{ controls_open: boolean }]>
|
|
38
|
+
post_children?: Snippet<[{ controls_open: boolean }]>
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
let {
|
|
42
|
+
controls_open = $bindable(false),
|
|
43
|
+
// Visibility toggles
|
|
44
|
+
show_boundaries = $bindable(PHASE_DIAGRAM_DEFAULTS.show_boundaries),
|
|
45
|
+
show_labels = $bindable(PHASE_DIAGRAM_DEFAULTS.show_labels),
|
|
46
|
+
show_special_points = $bindable(PHASE_DIAGRAM_DEFAULTS.show_special_points),
|
|
47
|
+
show_grid = $bindable(PHASE_DIAGRAM_DEFAULTS.show_grid),
|
|
48
|
+
show_component_labels = $bindable(PHASE_DIAGRAM_DEFAULTS.show_component_labels),
|
|
49
|
+
// Configuration
|
|
50
|
+
config = $bindable({}),
|
|
51
|
+
// Lever rule mode
|
|
52
|
+
lever_rule_mode = $bindable(`horizontal`),
|
|
53
|
+
// Axis configuration
|
|
54
|
+
x_axis = $bindable({}),
|
|
55
|
+
y_axis = $bindable({}),
|
|
56
|
+
// Data
|
|
57
|
+
data,
|
|
58
|
+
// Export
|
|
59
|
+
enable_export = true,
|
|
60
|
+
png_dpi = $bindable(PHASE_DIAGRAM_DEFAULTS.png_dpi),
|
|
61
|
+
// Pane props
|
|
62
|
+
pane_props = {},
|
|
63
|
+
toggle_props = {},
|
|
64
|
+
// Snippets
|
|
65
|
+
children,
|
|
66
|
+
post_children,
|
|
67
|
+
...rest
|
|
68
|
+
}: Props = $props()
|
|
69
|
+
|
|
70
|
+
// Merged config using shared helper
|
|
71
|
+
const merged_config = $derived(merge_phase_diagram_config(config))
|
|
72
|
+
|
|
73
|
+
// Helper to update top-level config properties (e.g., font_size, special_point_radius)
|
|
74
|
+
function update_config<K extends keyof PhaseDiagramConfig>(
|
|
75
|
+
key: K,
|
|
76
|
+
value: PhaseDiagramConfig[K],
|
|
77
|
+
) {
|
|
78
|
+
config = { ...config, [key]: value }
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Helper to update nested config properties
|
|
82
|
+
function update_nested<
|
|
83
|
+
K extends keyof Pick<PhaseDiagramConfig, `colors` | `tie_line`>,
|
|
84
|
+
>(
|
|
85
|
+
key: K,
|
|
86
|
+
prop: string,
|
|
87
|
+
value: string | number,
|
|
88
|
+
) {
|
|
89
|
+
config = { ...config, [key]: { ...config[key], [prop]: value } }
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Derive component info from data
|
|
93
|
+
const component_a = $derived(data?.components?.[0])
|
|
94
|
+
const component_b = $derived(data?.components?.[1])
|
|
95
|
+
const title = $derived(
|
|
96
|
+
component_a && component_b
|
|
97
|
+
? `${component_a}-${component_b} Phase Diagram`
|
|
98
|
+
: `Phase Diagram Controls`,
|
|
99
|
+
)
|
|
100
|
+
const temp_unit = $derived(data?.temperature_unit ?? `K`)
|
|
101
|
+
const comp_unit = $derived(data?.composition_unit ?? `at%`)
|
|
102
|
+
const has_special_points = $derived((data?.special_points?.length ?? 0) > 0)
|
|
42
103
|
</script>
|
|
43
104
|
|
|
44
105
|
<!-- Reusable snippet for number + range input pairs -->
|
|
@@ -65,7 +126,7 @@ const has_special_points = $derived((data?.special_points?.length ?? 0) > 0);
|
|
|
65
126
|
pane_props={{
|
|
66
127
|
...pane_props,
|
|
67
128
|
class: `phase-diagram-controls-pane ${pane_props?.class ?? ``}`,
|
|
68
|
-
style:
|
|
129
|
+
style: pane_props?.style ?? ``,
|
|
69
130
|
}}
|
|
70
131
|
toggle_props={{
|
|
71
132
|
title: controls_open ? `` : `Phase diagram controls`,
|
|
@@ -200,14 +261,29 @@ const has_special_points = $derived((data?.special_points?.length ?? 0) > 0);
|
|
|
200
261
|
title="Tie-line Display"
|
|
201
262
|
current_values={{
|
|
202
263
|
...merged_config.tie_line,
|
|
264
|
+
lever_rule_mode,
|
|
203
265
|
}}
|
|
204
266
|
on_reset={() => {
|
|
205
267
|
config = {
|
|
206
268
|
...config,
|
|
207
269
|
tie_line: { ...PHASE_DIAGRAM_DEFAULTS.tie_line },
|
|
208
270
|
}
|
|
271
|
+
lever_rule_mode = `horizontal`
|
|
209
272
|
}}
|
|
210
273
|
>
|
|
274
|
+
<span {@attach tooltip({ content: `Direction of the lever rule tie-line` })}>
|
|
275
|
+
Direction
|
|
276
|
+
<div class="pane-row">
|
|
277
|
+
<label>
|
|
278
|
+
<input type="radio" bind:group={lever_rule_mode} value="horizontal" />
|
|
279
|
+
Horizontal
|
|
280
|
+
</label>
|
|
281
|
+
<label>
|
|
282
|
+
<input type="radio" bind:group={lever_rule_mode} value="vertical" />
|
|
283
|
+
Vertical
|
|
284
|
+
</label>
|
|
285
|
+
</div>
|
|
286
|
+
</span>
|
|
211
287
|
{@render num_range(
|
|
212
288
|
`Line width`,
|
|
213
289
|
merged_config.tie_line.stroke_width,
|
|
@@ -215,7 +291,7 @@ const has_special_points = $derived((data?.special_points?.length ?? 0) > 0);
|
|
|
215
291
|
5,
|
|
216
292
|
0.5,
|
|
217
293
|
(val) => update_nested(`tie_line`, `stroke_width`, val),
|
|
218
|
-
`Thickness of the
|
|
294
|
+
`Thickness of the tie-line`,
|
|
219
295
|
)}
|
|
220
296
|
{@render num_range(
|
|
221
297
|
`Endpoint radius`,
|
|
@@ -291,6 +367,7 @@ const has_special_points = $derived((data?.special_points?.length ?? 0) > 0);
|
|
|
291
367
|
min={72}
|
|
292
368
|
max={600}
|
|
293
369
|
step={50}
|
|
370
|
+
style="width: 3.5em"
|
|
294
371
|
bind:value={png_dpi}
|
|
295
372
|
/>
|
|
296
373
|
<input
|
|
@@ -313,14 +390,16 @@ const has_special_points = $derived((data?.special_points?.length ?? 0) > 0);
|
|
|
313
390
|
:global(.phase-diagram-controls-pane) {
|
|
314
391
|
font-size: 0.85em;
|
|
315
392
|
max-width: 320px;
|
|
393
|
+
--pane-padding: 10px;
|
|
394
|
+
--pane-gap: 4px;
|
|
316
395
|
}
|
|
317
396
|
:global(.phase-diagram-controls-pane section) {
|
|
318
397
|
display: flex;
|
|
319
398
|
flex-direction: column;
|
|
320
|
-
gap:
|
|
399
|
+
gap: 4pt;
|
|
321
400
|
}
|
|
322
401
|
:global(.phase-diagram-controls-pane h4) {
|
|
323
|
-
margin:
|
|
402
|
+
margin: 6pt 0 2pt !important;
|
|
324
403
|
}
|
|
325
404
|
:global(.phase-diagram-controls-pane h4:first-of-type) {
|
|
326
405
|
margin-top: 0 !important;
|
|
@@ -328,18 +407,16 @@ const has_special_points = $derived((data?.special_points?.length ?? 0) > 0);
|
|
|
328
407
|
.pane-row {
|
|
329
408
|
display: flex;
|
|
330
409
|
gap: 12pt;
|
|
331
|
-
justify-content: space-between;
|
|
332
|
-
width: 100%;
|
|
333
410
|
}
|
|
334
411
|
.visibility-grid {
|
|
335
|
-
display:
|
|
336
|
-
|
|
337
|
-
gap:
|
|
412
|
+
display: flex;
|
|
413
|
+
flex-wrap: wrap;
|
|
414
|
+
gap: 4pt 10pt;
|
|
338
415
|
}
|
|
339
416
|
.color-grid {
|
|
340
417
|
display: grid;
|
|
341
418
|
grid-template-columns: repeat(3, 1fr);
|
|
342
|
-
gap:
|
|
419
|
+
gap: 6pt;
|
|
343
420
|
}
|
|
344
421
|
.color-grid label {
|
|
345
422
|
flex-direction: column;
|
|
@@ -355,6 +432,9 @@ const has_special_points = $derived((data?.special_points?.length ?? 0) > 0);
|
|
|
355
432
|
font-size: inherit;
|
|
356
433
|
font-family: inherit;
|
|
357
434
|
}
|
|
435
|
+
input[type='number'] {
|
|
436
|
+
width: 3.5em;
|
|
437
|
+
}
|
|
358
438
|
input[type='range'] {
|
|
359
439
|
flex: 1;
|
|
360
440
|
min-width: 40px;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import DraggablePane from '../overlays/DraggablePane.svelte';
|
|
2
2
|
import type { AxisConfig } from '../plot';
|
|
3
3
|
import type { ComponentProps, Snippet } from 'svelte';
|
|
4
|
-
import type { PhaseDiagramConfig, PhaseDiagramData } from './types';
|
|
4
|
+
import type { LeverRuleMode, PhaseDiagramConfig, PhaseDiagramData } from './types';
|
|
5
5
|
type Props = Omit<ComponentProps<typeof DraggablePane>, `children`> & {
|
|
6
6
|
controls_open?: boolean;
|
|
7
7
|
show_boundaries?: boolean;
|
|
@@ -10,6 +10,7 @@ type Props = Omit<ComponentProps<typeof DraggablePane>, `children`> & {
|
|
|
10
10
|
show_grid?: boolean;
|
|
11
11
|
show_component_labels?: boolean;
|
|
12
12
|
config?: Partial<PhaseDiagramConfig>;
|
|
13
|
+
lever_rule_mode?: LeverRuleMode;
|
|
13
14
|
x_axis?: AxisConfig;
|
|
14
15
|
y_axis?: AxisConfig;
|
|
15
16
|
data?: PhaseDiagramData;
|
|
@@ -24,6 +25,6 @@ type Props = Omit<ComponentProps<typeof DraggablePane>, `children`> & {
|
|
|
24
25
|
controls_open: boolean;
|
|
25
26
|
}]>;
|
|
26
27
|
};
|
|
27
|
-
declare const PhaseDiagramControls: import("svelte").Component<Props, {}, "controls_open" | "x_axis" | "y_axis" | "
|
|
28
|
+
declare const PhaseDiagramControls: import("svelte").Component<Props, {}, "controls_open" | "x_axis" | "y_axis" | "show_grid" | "config" | "show_boundaries" | "show_labels" | "show_special_points" | "show_component_labels" | "png_dpi" | "lever_rule_mode">;
|
|
28
29
|
type PhaseDiagramControls = ReturnType<typeof PhaseDiagramControls>;
|
|
29
30
|
export default PhaseDiagramControls;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { JsonTree } from '../layout/json-tree'
|
|
3
|
+
import { set_at_path } from '../layout/json-tree/utils'
|
|
4
|
+
import DraggablePane from '../overlays/DraggablePane.svelte'
|
|
5
|
+
import type { ComponentProps } from 'svelte'
|
|
6
|
+
import { build_diagram } from './build-diagram'
|
|
7
|
+
import type { DiagramInput } from './diagram-input'
|
|
8
|
+
import type { PhaseDiagramData } from './types'
|
|
9
|
+
|
|
10
|
+
let {
|
|
11
|
+
editor_open = $bindable(false),
|
|
12
|
+
diagram_input = $bindable<DiagramInput | null>(null),
|
|
13
|
+
data = null,
|
|
14
|
+
ondata,
|
|
15
|
+
icon_style = ``,
|
|
16
|
+
toggle_props: caller_toggle_props = {},
|
|
17
|
+
}: {
|
|
18
|
+
editor_open?: boolean
|
|
19
|
+
diagram_input?: DiagramInput | null
|
|
20
|
+
data?: PhaseDiagramData | null
|
|
21
|
+
ondata?: (data: PhaseDiagramData) => void
|
|
22
|
+
icon_style?: string
|
|
23
|
+
toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
|
|
24
|
+
} = $props()
|
|
25
|
+
|
|
26
|
+
// The source object currently displayed (DiagramInput or PhaseDiagramData)
|
|
27
|
+
const display_source = $derived(diagram_input ?? data)
|
|
28
|
+
|
|
29
|
+
const root_label = `diagram`
|
|
30
|
+
|
|
31
|
+
// Brief error flash when an edit is rejected by build_diagram
|
|
32
|
+
let rejection_msg = $state<string | null>(null)
|
|
33
|
+
let rejection_timer: ReturnType<typeof setTimeout> | undefined
|
|
34
|
+
|
|
35
|
+
function show_rejection(msg: string) {
|
|
36
|
+
if (rejection_timer) clearTimeout(rejection_timer)
|
|
37
|
+
rejection_msg = msg
|
|
38
|
+
rejection_timer = setTimeout(() => (rejection_msg = null), 3000)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Shared format detection: true if obj looks like a DiagramInput
|
|
42
|
+
function is_diagram_input(obj: Record<string, unknown>): boolean {
|
|
43
|
+
const meta = obj.meta as Record<string, unknown> | undefined
|
|
44
|
+
return Boolean(meta && Array.isArray(meta.components) && `curves` in obj)
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Handle inline value edits from JsonTree
|
|
48
|
+
function handle_change(path: string, new_value: unknown, _old_value: unknown) {
|
|
49
|
+
if (!display_source) return
|
|
50
|
+
const updated = set_at_path(display_source, path, new_value, root_label)
|
|
51
|
+
|
|
52
|
+
if (is_diagram_input(updated as Record<string, unknown>)) {
|
|
53
|
+
try {
|
|
54
|
+
build_diagram(updated as DiagramInput)
|
|
55
|
+
diagram_input = updated as DiagramInput
|
|
56
|
+
} catch (error) {
|
|
57
|
+
const msg = error instanceof Error ? error.message : String(error)
|
|
58
|
+
show_rejection(msg)
|
|
59
|
+
}
|
|
60
|
+
return
|
|
61
|
+
}
|
|
62
|
+
// PhaseDiagramData format — clear diagram_input so rebuilt_data doesn't shadow
|
|
63
|
+
diagram_input = null
|
|
64
|
+
ondata?.(updated as PhaseDiagramData)
|
|
65
|
+
}
|
|
66
|
+
</script>
|
|
67
|
+
|
|
68
|
+
<DraggablePane
|
|
69
|
+
bind:show={editor_open}
|
|
70
|
+
open_icon="Cross"
|
|
71
|
+
closed_icon="Edit"
|
|
72
|
+
{icon_style}
|
|
73
|
+
persistent
|
|
74
|
+
pane_props={{ class: `pd-editor-pane` }}
|
|
75
|
+
toggle_props={{
|
|
76
|
+
class: `pd-editor-toggle`,
|
|
77
|
+
title: editor_open ? `` : `Edit diagram data`,
|
|
78
|
+
...caller_toggle_props,
|
|
79
|
+
}}
|
|
80
|
+
max_width="600px"
|
|
81
|
+
>
|
|
82
|
+
{#if rejection_msg}
|
|
83
|
+
<div class="rejection-flash">{rejection_msg}</div>
|
|
84
|
+
{/if}
|
|
85
|
+
{#if display_source}
|
|
86
|
+
<JsonTree
|
|
87
|
+
value={display_source}
|
|
88
|
+
{root_label}
|
|
89
|
+
default_fold_level={2}
|
|
90
|
+
download_filename="diagram-data.json"
|
|
91
|
+
editable
|
|
92
|
+
onchange={handle_change}
|
|
93
|
+
/>
|
|
94
|
+
{:else}
|
|
95
|
+
<p class="placeholder">
|
|
96
|
+
No diagram data loaded. Drop an SVG or JSON file onto the diagram.
|
|
97
|
+
</p>
|
|
98
|
+
{/if}
|
|
99
|
+
</DraggablePane>
|
|
100
|
+
|
|
101
|
+
<style>
|
|
102
|
+
.rejection-flash {
|
|
103
|
+
color: #d32f2f;
|
|
104
|
+
font-size: 11px;
|
|
105
|
+
padding: 4px 8px;
|
|
106
|
+
background: rgba(211, 47, 47, 0.08);
|
|
107
|
+
border-radius: 3px;
|
|
108
|
+
word-break: break-word;
|
|
109
|
+
animation: fade-out 3s ease-out forwards;
|
|
110
|
+
}
|
|
111
|
+
@keyframes fade-out {
|
|
112
|
+
0%, 80% {
|
|
113
|
+
opacity: 1;
|
|
114
|
+
}
|
|
115
|
+
100% {
|
|
116
|
+
opacity: 0;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
.placeholder {
|
|
120
|
+
color: var(--text-muted, #888);
|
|
121
|
+
font-style: italic;
|
|
122
|
+
text-align: center;
|
|
123
|
+
padding: 20px;
|
|
124
|
+
margin: 0;
|
|
125
|
+
}
|
|
126
|
+
</style>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import DraggablePane from '../overlays/DraggablePane.svelte';
|
|
2
|
+
import type { ComponentProps } from 'svelte';
|
|
3
|
+
import type { DiagramInput } from './diagram-input';
|
|
4
|
+
import type { PhaseDiagramData } from './types';
|
|
5
|
+
type $$ComponentProps = {
|
|
6
|
+
editor_open?: boolean;
|
|
7
|
+
diagram_input?: DiagramInput | null;
|
|
8
|
+
data?: PhaseDiagramData | null;
|
|
9
|
+
ondata?: (data: PhaseDiagramData) => void;
|
|
10
|
+
icon_style?: string;
|
|
11
|
+
toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`];
|
|
12
|
+
};
|
|
13
|
+
declare const PhaseDiagramEditorPane: import("svelte").Component<$$ComponentProps, {}, "editor_open" | "diagram_input">;
|
|
14
|
+
type PhaseDiagramEditorPane = ReturnType<typeof PhaseDiagramEditorPane>;
|
|
15
|
+
export default PhaseDiagramEditorPane;
|