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
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
// Shared canvas-interaction scaffold (runes-in-closure factory) for ConvexHull3D/4D.
|
|
2
|
+
import { set_fullscreen_bg, setup_fullscreen_effect } from '../layout';
|
|
3
|
+
import * as helpers from './helpers';
|
|
4
|
+
export function create_canvas_interactions(inputs) {
|
|
5
|
+
const [zoom_min, zoom_max] = inputs.wheel_clamp;
|
|
6
|
+
// Performance optimization: coalesce renders into one rAF
|
|
7
|
+
let frame_id = 0;
|
|
8
|
+
// Interaction state
|
|
9
|
+
let is_dragging = $state(false);
|
|
10
|
+
let drag_started = $state(false);
|
|
11
|
+
let last_mouse = $state({ x: 0, y: 0 });
|
|
12
|
+
let hover_data = $state.raw(null);
|
|
13
|
+
let copy_feedback = $state({ visible: false, position: { x: 0, y: 0 } });
|
|
14
|
+
// Drag and drop state
|
|
15
|
+
let drag_over = $state(false);
|
|
16
|
+
// Structure popup state
|
|
17
|
+
let modal_open = $state(false);
|
|
18
|
+
let selected_structure = $state(null);
|
|
19
|
+
let modal_place_right = $state(true);
|
|
20
|
+
// Keep selection, hover, and popup pointing at current plot entry objects
|
|
21
|
+
$effect(() => {
|
|
22
|
+
const current_selection = helpers.current_entry(inputs.selected_entry(), inputs.plot_entries());
|
|
23
|
+
if (inputs.selected_entry() && !current_selection)
|
|
24
|
+
inputs.set_selected_entry(null);
|
|
25
|
+
else if (current_selection &&
|
|
26
|
+
!helpers.same_entry(current_selection, inputs.selected_entry()))
|
|
27
|
+
inputs.set_selected_entry(current_selection);
|
|
28
|
+
const current_hover = helpers.current_entry(hover_data?.entry, inputs.plot_entries());
|
|
29
|
+
if (hover_data?.entry && !current_hover) {
|
|
30
|
+
hover_data = null;
|
|
31
|
+
inputs.on_point_hover()?.(null);
|
|
32
|
+
}
|
|
33
|
+
else if (hover_data && current_hover && current_hover !== hover_data.entry) {
|
|
34
|
+
hover_data = { ...hover_data, entry: current_hover };
|
|
35
|
+
}
|
|
36
|
+
if (modal_open) {
|
|
37
|
+
const structure = current_selection && inputs.extract_structure(current_selection);
|
|
38
|
+
if (structure)
|
|
39
|
+
selected_structure = structure;
|
|
40
|
+
else {
|
|
41
|
+
modal_open = false;
|
|
42
|
+
selected_structure = null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
// Shared selection logic for click and Enter key
|
|
47
|
+
function select_entry(entry) {
|
|
48
|
+
inputs.on_point_click()?.(entry);
|
|
49
|
+
if (inputs.enable_click_selection()) {
|
|
50
|
+
inputs.set_selected_entry(entry);
|
|
51
|
+
if (inputs.enable_structure_preview()) {
|
|
52
|
+
const structure = inputs.extract_structure(entry);
|
|
53
|
+
if (structure) {
|
|
54
|
+
selected_structure = structure;
|
|
55
|
+
modal_place_right = helpers.calculate_modal_side(inputs.wrapper());
|
|
56
|
+
modal_open = true;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const handle_keydown = (event) => {
|
|
62
|
+
const target = event.target;
|
|
63
|
+
if (target instanceof HTMLElement && /INPUT|TEXTAREA/.test(target.tagName))
|
|
64
|
+
return;
|
|
65
|
+
// Stop canvas-originated keydown re-running on wrapper (both have onkeydown)
|
|
66
|
+
if (target === inputs.canvas())
|
|
67
|
+
event.stopPropagation();
|
|
68
|
+
if (event.key === `Escape` && modal_open) {
|
|
69
|
+
close_structure_popup();
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
// Handle Enter for keyboard accessibility - select hovered entry
|
|
73
|
+
if (event.key === `Enter`) {
|
|
74
|
+
const entry = hover_data?.entry;
|
|
75
|
+
if (entry)
|
|
76
|
+
select_entry(entry);
|
|
77
|
+
else if (modal_open)
|
|
78
|
+
close_structure_popup();
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
inputs.actions()[event.key.toLowerCase()]?.();
|
|
82
|
+
};
|
|
83
|
+
async function handle_file_drop(event) {
|
|
84
|
+
drag_over = false;
|
|
85
|
+
const data = await helpers.parse_hull_entries_from_drop(event);
|
|
86
|
+
if (data)
|
|
87
|
+
inputs.on_file_drop()?.(data);
|
|
88
|
+
}
|
|
89
|
+
const set_drag_over = (over) => (event) => {
|
|
90
|
+
event.preventDefault();
|
|
91
|
+
drag_over = over;
|
|
92
|
+
};
|
|
93
|
+
const handle_drag_over = set_drag_over(true);
|
|
94
|
+
const handle_drag_leave = set_drag_over(false);
|
|
95
|
+
async function copy_entry_data(entry, position) {
|
|
96
|
+
await helpers.copy_entry_to_clipboard(entry, position, (visible, pos) => {
|
|
97
|
+
copy_feedback.visible = visible;
|
|
98
|
+
copy_feedback.position = pos;
|
|
99
|
+
}, inputs.entry_category());
|
|
100
|
+
}
|
|
101
|
+
function handle_mouse_down(event) {
|
|
102
|
+
is_dragging = true;
|
|
103
|
+
drag_started = false;
|
|
104
|
+
hover_data = null;
|
|
105
|
+
inputs.on_point_hover()?.(null);
|
|
106
|
+
last_mouse = { x: event.clientX, y: event.clientY };
|
|
107
|
+
}
|
|
108
|
+
const handle_mouse_move = (event) => {
|
|
109
|
+
if (!is_dragging)
|
|
110
|
+
return;
|
|
111
|
+
const [dx, dy] = [event.clientX - last_mouse.x, event.clientY - last_mouse.y];
|
|
112
|
+
// Mark as drag if any movement occurred
|
|
113
|
+
if (dx !== 0 || dy !== 0)
|
|
114
|
+
drag_started = true;
|
|
115
|
+
// With Cmd/Ctrl held: pan the view instead of rotating
|
|
116
|
+
inputs.on_drag(dx, dy, event.metaKey || event.ctrlKey);
|
|
117
|
+
last_mouse = { x: event.clientX, y: event.clientY };
|
|
118
|
+
};
|
|
119
|
+
const handle_mouse_up = () => {
|
|
120
|
+
// leave drag_started set so the trailing click can detect a concluded drag;
|
|
121
|
+
// handle_click reads then clears it, and handle_mouse_down resets it next interaction
|
|
122
|
+
is_dragging = false;
|
|
123
|
+
};
|
|
124
|
+
const handle_wheel = (event) => {
|
|
125
|
+
event.preventDefault();
|
|
126
|
+
const zoomed = inputs.zoom() * (event.deltaY > 0 ? 0.98 : 1.02);
|
|
127
|
+
inputs.set_zoom(Math.max(zoom_min, Math.min(zoom_max, zoomed)));
|
|
128
|
+
};
|
|
129
|
+
const handle_hover = (event) => {
|
|
130
|
+
if (is_dragging)
|
|
131
|
+
return;
|
|
132
|
+
const entry = find_entry_at_mouse(event);
|
|
133
|
+
hover_data = entry ? { entry, position: { x: event.clientX, y: event.clientY } } : null;
|
|
134
|
+
inputs.on_point_hover()?.(hover_data);
|
|
135
|
+
};
|
|
136
|
+
const find_entry_at_mouse = (event) => helpers.find_hull_entry_at_mouse(inputs.canvas(), event, inputs.visible_entries(), inputs.project_point);
|
|
137
|
+
const handle_click = (event) => {
|
|
138
|
+
event.stopPropagation();
|
|
139
|
+
const was_drag = drag_started; // Check if this was a drag operation (any mouse movement during drag)
|
|
140
|
+
drag_started = false; // Reset for next interaction
|
|
141
|
+
if (was_drag)
|
|
142
|
+
return; // Don't trigger click if this was a drag
|
|
143
|
+
const entry = find_entry_at_mouse(event);
|
|
144
|
+
if (!entry) {
|
|
145
|
+
if (modal_open)
|
|
146
|
+
close_structure_popup();
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
select_entry(entry);
|
|
150
|
+
};
|
|
151
|
+
function close_structure_popup() {
|
|
152
|
+
modal_open = false;
|
|
153
|
+
selected_structure = null;
|
|
154
|
+
inputs.set_selected_entry(null);
|
|
155
|
+
}
|
|
156
|
+
const handle_double_click = (event) => {
|
|
157
|
+
const entry = find_entry_at_mouse(event);
|
|
158
|
+
if (entry)
|
|
159
|
+
void copy_entry_data(entry, { x: event.clientX, y: event.clientY });
|
|
160
|
+
};
|
|
161
|
+
function render_once() {
|
|
162
|
+
if (frame_id)
|
|
163
|
+
return;
|
|
164
|
+
frame_id = requestAnimationFrame(() => {
|
|
165
|
+
inputs.render_frame();
|
|
166
|
+
frame_id = 0;
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
function update_canvas_size() {
|
|
170
|
+
const canvas = inputs.canvas();
|
|
171
|
+
if (!canvas)
|
|
172
|
+
return;
|
|
173
|
+
const dpr = globalThis.devicePixelRatio || 1;
|
|
174
|
+
const container = canvas.parentElement;
|
|
175
|
+
const rect = container?.getBoundingClientRect();
|
|
176
|
+
const [width, height] = rect ? [rect.width, rect.height] : [400, 400];
|
|
177
|
+
// Only update canvas dimensions if they actually changed
|
|
178
|
+
// (assigning canvas.width/height clears the canvas even if values are the same)
|
|
179
|
+
const new_width = Math.max(0, Math.round(width * dpr));
|
|
180
|
+
const new_height = Math.max(0, Math.round(height * dpr));
|
|
181
|
+
if (!inputs.ctx() || canvas.width !== new_width || canvas.height !== new_height) {
|
|
182
|
+
canvas.width = new_width;
|
|
183
|
+
canvas.height = new_height;
|
|
184
|
+
const ctx = canvas.getContext(`2d`);
|
|
185
|
+
inputs.set_ctx(ctx);
|
|
186
|
+
if (ctx) {
|
|
187
|
+
ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
|
|
188
|
+
ctx.imageSmoothingEnabled = true;
|
|
189
|
+
ctx.imageSmoothingQuality = `high`;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
inputs.set_canvas_dims({ width, height, scale: Math.min(width, height) / 600 });
|
|
193
|
+
render_once();
|
|
194
|
+
}
|
|
195
|
+
$effect(() => {
|
|
196
|
+
const canvas = inputs.canvas();
|
|
197
|
+
if (!canvas)
|
|
198
|
+
return undefined;
|
|
199
|
+
update_canvas_size(); // Initial setup
|
|
200
|
+
// Watch for resize events - only update canvas, don't reset camera
|
|
201
|
+
const resize_observer = new ResizeObserver(update_canvas_size);
|
|
202
|
+
const container = canvas.parentElement;
|
|
203
|
+
if (container)
|
|
204
|
+
resize_observer.observe(container);
|
|
205
|
+
return () => {
|
|
206
|
+
if (frame_id)
|
|
207
|
+
cancelAnimationFrame(frame_id);
|
|
208
|
+
resize_observer.disconnect(); // Cleanup on unmount
|
|
209
|
+
};
|
|
210
|
+
});
|
|
211
|
+
// Fullscreen handling with camera reset
|
|
212
|
+
let was_fullscreen = $state(inputs.fullscreen());
|
|
213
|
+
$effect(() => {
|
|
214
|
+
setup_fullscreen_effect(inputs.fullscreen(), inputs.wrapper(), (entering) => {
|
|
215
|
+
if (entering !== was_fullscreen) {
|
|
216
|
+
inputs.on_fullscreen_change();
|
|
217
|
+
was_fullscreen = entering;
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
set_fullscreen_bg(inputs.wrapper(), inputs.fullscreen(), inputs.fullscreen_bg_var);
|
|
221
|
+
});
|
|
222
|
+
// Performance: Pre-compute and cache all point projections + depth sorting
|
|
223
|
+
const sorted_points_cache = $derived.by(() => {
|
|
224
|
+
if (!inputs.canvas() || inputs.visible_entries().length === 0)
|
|
225
|
+
return [];
|
|
226
|
+
return inputs
|
|
227
|
+
.visible_entries()
|
|
228
|
+
.map((entry) => ({
|
|
229
|
+
entry,
|
|
230
|
+
projected: inputs.project_point(entry.x, entry.y, entry.z),
|
|
231
|
+
}))
|
|
232
|
+
.sort((left, right) => left.projected.depth - right.projected.depth);
|
|
233
|
+
});
|
|
234
|
+
return {
|
|
235
|
+
get is_dragging() {
|
|
236
|
+
return is_dragging;
|
|
237
|
+
},
|
|
238
|
+
get hover_data() {
|
|
239
|
+
return hover_data;
|
|
240
|
+
},
|
|
241
|
+
get drag_over() {
|
|
242
|
+
return drag_over;
|
|
243
|
+
},
|
|
244
|
+
get modal_open() {
|
|
245
|
+
return modal_open;
|
|
246
|
+
},
|
|
247
|
+
get selected_structure() {
|
|
248
|
+
return selected_structure;
|
|
249
|
+
},
|
|
250
|
+
get modal_place_right() {
|
|
251
|
+
return modal_place_right;
|
|
252
|
+
},
|
|
253
|
+
get sorted_points_cache() {
|
|
254
|
+
return sorted_points_cache;
|
|
255
|
+
},
|
|
256
|
+
copy_feedback, // stable $state proxy; mutated in place for ClickFeedback binding
|
|
257
|
+
// Event handler groups, spread onto their target elements by ConvexHull3D/4D
|
|
258
|
+
canvas_handlers: {
|
|
259
|
+
onmousedown: handle_mouse_down,
|
|
260
|
+
onmousemove: handle_hover,
|
|
261
|
+
onclick: handle_click,
|
|
262
|
+
onkeydown: handle_keydown,
|
|
263
|
+
ondblclick: handle_double_click,
|
|
264
|
+
onwheel: handle_wheel,
|
|
265
|
+
},
|
|
266
|
+
wrapper_handlers: {
|
|
267
|
+
onkeydown: handle_keydown,
|
|
268
|
+
ondrop: handle_file_drop,
|
|
269
|
+
ondragover: handle_drag_over,
|
|
270
|
+
ondragleave: handle_drag_leave,
|
|
271
|
+
},
|
|
272
|
+
// document-level so drags continue outside the canvas; attached individually
|
|
273
|
+
// since <svelte:document> rejects spread attributes
|
|
274
|
+
handle_mouse_move,
|
|
275
|
+
handle_mouse_up,
|
|
276
|
+
close_structure_popup,
|
|
277
|
+
render_once,
|
|
278
|
+
};
|
|
279
|
+
}
|
|
@@ -1,25 +1,39 @@
|
|
|
1
1
|
import { type D3InterpolateName } from '../colors';
|
|
2
2
|
import type { EnergyModeInfo } from './';
|
|
3
3
|
import type { ElementSymbol } from '../element';
|
|
4
|
-
import type {
|
|
5
|
-
import {
|
|
6
|
-
export { DEFAULT_GAS_TEMP };
|
|
4
|
+
import type { AnyStructure } from '../structure';
|
|
5
|
+
import type { ConvexHullConfig, EntryCategoryConfig, GasAnalysis, GasThermodynamicsConfig, HighlightStyle, MarkerSymbol, PhaseData } from './types';
|
|
6
|
+
export { DEFAULT_GAS_TEMP } from './types';
|
|
7
7
|
export declare const HULL_STABILITY_TOL = 0.000001;
|
|
8
|
-
export declare function compute_hull_stability(raw_distance: number, exclude_from_hull?: boolean, tol?: number): {
|
|
9
|
-
e_above_hull: number;
|
|
10
|
-
is_stable: boolean;
|
|
8
|
+
export declare function compute_hull_stability(raw_distance: number | null | undefined, exclude_from_hull?: boolean, tol?: number): {
|
|
9
|
+
e_above_hull: number | undefined;
|
|
10
|
+
is_stable: boolean | undefined;
|
|
11
11
|
};
|
|
12
12
|
type StabilityEntry = {
|
|
13
13
|
is_stable?: boolean;
|
|
14
14
|
e_above_hull?: number;
|
|
15
15
|
};
|
|
16
|
+
export declare const extract_structure_from_entry: (entries: PhaseData[], entry: {
|
|
17
|
+
entry_id?: string;
|
|
18
|
+
}) => AnyStructure | null;
|
|
19
|
+
export declare const array_min: (values: readonly number[]) => number;
|
|
20
|
+
export declare const array_max: (values: readonly number[]) => number;
|
|
21
|
+
export declare const hull_distance_range: (entries: PhaseData[]) => [number, number];
|
|
16
22
|
export declare const entry_is_stable: (entry: StabilityEntry, tol?: number) => boolean;
|
|
23
|
+
export declare const entry_within_hull_dist: (entry: StabilityEntry, max_dist: number) => boolean;
|
|
17
24
|
export declare const is_on_hull: (entry: PhaseData, tol?: number) => boolean;
|
|
18
25
|
export declare const get_arity: (entry: PhaseData) => number;
|
|
19
26
|
export declare const is_unary_entry: (entry: PhaseData) => boolean;
|
|
20
27
|
export declare const entry_is_unstable: (entry: StabilityEntry) => boolean;
|
|
21
|
-
|
|
22
|
-
export declare
|
|
28
|
+
type CategorySource = Pick<PhaseData, `data` | `attributes`>;
|
|
29
|
+
export declare function get_entry_category(entry: CategorySource, config: EntryCategoryConfig | null | undefined): string | null;
|
|
30
|
+
export declare function apply_category_markers(entries: (PhaseData & {
|
|
31
|
+
marker?: MarkerSymbol;
|
|
32
|
+
})[], config: EntryCategoryConfig | null | undefined): (PhaseData & {
|
|
33
|
+
marker?: MarkerSymbol;
|
|
34
|
+
})[];
|
|
35
|
+
export declare const entry_is_visible: (entry: StabilityEntry & CategorySource, show_stable: boolean, show_unstable: boolean, category?: EntryCategoryConfig | null, hidden_categories?: readonly string[]) => boolean;
|
|
36
|
+
export declare const visible_entries: <Entry extends StabilityEntry & CategorySource>(entries: readonly Entry[], show_stable: boolean, show_unstable: boolean, category?: EntryCategoryConfig | null, hidden_categories?: readonly string[]) => Entry[];
|
|
23
37
|
export declare function get_energy_color_scale(color_mode: `stability` | `energy`, color_scale: D3InterpolateName, plot_entries: {
|
|
24
38
|
e_above_hull?: number;
|
|
25
39
|
}[]): ((value: number) => string) | null;
|
|
@@ -37,7 +51,7 @@ export declare function current_entry<Entry extends {
|
|
|
37
51
|
export declare function same_entry<Entry extends {
|
|
38
52
|
entry_id?: string;
|
|
39
53
|
}>(a: Entry | null | undefined, b: Entry | null | undefined): boolean;
|
|
40
|
-
export declare function build_entry_tooltip_text(entry: PhaseData): string;
|
|
54
|
+
export declare function build_entry_tooltip_text(entry: PhaseData, category?: EntryCategoryConfig | null): string;
|
|
41
55
|
export declare function find_hull_entry_at_mouse<T extends {
|
|
42
56
|
x: number;
|
|
43
57
|
y: number;
|
|
@@ -49,6 +63,7 @@ export declare function find_hull_entry_at_mouse<T extends {
|
|
|
49
63
|
x: number;
|
|
50
64
|
y: number;
|
|
51
65
|
}): T | null;
|
|
66
|
+
export declare const hull_style_css: (colors: ConvexHullConfig[`colors`] | undefined) => string;
|
|
52
67
|
export declare function calculate_modal_side(wrapper: HTMLDivElement | undefined): boolean;
|
|
53
68
|
export declare function compute_energy_mode_info(entries: PhaseData[], // Array of phase entries to analyze
|
|
54
69
|
find_lowest_energy_unary_refs_fn: (entries: PhaseData[]) => Record<string, PhaseData>, // Function to find unary references
|
|
@@ -63,7 +78,7 @@ export declare function copy_entry_to_clipboard(entry: PhaseData, position: {
|
|
|
63
78
|
}, on_feedback: (visible: boolean, pos: {
|
|
64
79
|
x: number;
|
|
65
80
|
y: number;
|
|
66
|
-
}) => void): Promise<void>;
|
|
81
|
+
}) => void, category?: EntryCategoryConfig | null): Promise<void>;
|
|
67
82
|
export declare const DEFAULT_HIGHLIGHT_STYLE: Required<HighlightStyle>;
|
|
68
83
|
export declare const merge_highlight_style: (custom_style: HighlightStyle | undefined) => Required<HighlightStyle>;
|
|
69
84
|
export declare function is_entry_highlighted<T extends {
|
|
@@ -88,6 +103,27 @@ export declare function draw_selection_highlight(ctx: CanvasRenderingContext2D,
|
|
|
88
103
|
y: number;
|
|
89
104
|
}, base_size: number, container_scale: number, pulse_time: number, pulse_opacity: number): void;
|
|
90
105
|
export declare function get_canvas_text_color(dark_mode: boolean, element?: HTMLElement | null): string;
|
|
106
|
+
export declare function draw_hull_points<Entry extends PhaseData & {
|
|
107
|
+
z: number;
|
|
108
|
+
size?: number;
|
|
109
|
+
marker?: MarkerSymbol;
|
|
110
|
+
}>(ctx: CanvasRenderingContext2D, sorted_points: {
|
|
111
|
+
entry: Entry;
|
|
112
|
+
projected: {
|
|
113
|
+
x: number;
|
|
114
|
+
y: number;
|
|
115
|
+
};
|
|
116
|
+
}[], opts: {
|
|
117
|
+
scale: number;
|
|
118
|
+
shadow_factor: number;
|
|
119
|
+
selected_entry: Entry | null;
|
|
120
|
+
is_highlighted: (entry: Entry) => boolean;
|
|
121
|
+
get_point_color: (entry: Entry) => string;
|
|
122
|
+
highlight_style: Required<HighlightStyle>;
|
|
123
|
+
pulse_time: number;
|
|
124
|
+
pulse_opacity: number;
|
|
125
|
+
}): void;
|
|
126
|
+
export declare function marker_path_data(radius: number, marker: MarkerSymbol): string | null;
|
|
91
127
|
export declare function create_marker_path(size: number, marker?: MarkerSymbol): Path2D;
|
|
92
128
|
export interface TemperatureAnalysis {
|
|
93
129
|
has_temp_data: boolean;
|
|
@@ -103,15 +139,9 @@ export interface TemperatureFilterOptions {
|
|
|
103
139
|
max_interpolation_gap?: number;
|
|
104
140
|
}
|
|
105
141
|
export declare function filter_entries_at_temperature(entries: PhaseData[], T: number, options?: TemperatureFilterOptions): PhaseData[];
|
|
106
|
-
export declare function safe_analyze_gas_data(entries: PhaseData[], config?: GasThermodynamicsConfig): GasAnalysis;
|
|
107
|
-
export declare function safe_apply_gas_corrections(entries: PhaseData[], config: GasThermodynamicsConfig | undefined, T: number): PhaseData[];
|
|
108
142
|
export declare function get_gas_corrected_entries(entries: PhaseData[], gas_config: GasThermodynamicsConfig | undefined, gas_pressures: Partial<Record<string, number>>, temperature: number): {
|
|
109
143
|
entries: PhaseData[];
|
|
110
144
|
analysis: GasAnalysis;
|
|
111
145
|
merged_config: GasThermodynamicsConfig | undefined;
|
|
112
146
|
};
|
|
113
|
-
export declare function get_entry_label(entry:
|
|
114
|
-
reduced_formula?: string;
|
|
115
|
-
name?: string;
|
|
116
|
-
composition: Record<string, number>;
|
|
117
|
-
}, elements?: ElementSymbol[]): string;
|
|
147
|
+
export declare function get_entry_label(entry: Pick<PhaseData, `reduced_formula` | `name` | `composition`>, elements?: ElementSymbol[]): string;
|