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
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import { luminance } from '../../../colors'
|
|
2
|
+
import { get_d3_interpolator, luminance } from '../../../colors'
|
|
3
3
|
import Spinner from '../../../feedback/Spinner.svelte'
|
|
4
4
|
import { format_num } from '../../../labels'
|
|
5
5
|
import { sanitize_html } from '../../../sanitize'
|
|
6
|
+
import { clamp01 } from '../../../utils'
|
|
6
7
|
import type { Vec2 } from '../../../math'
|
|
7
8
|
import * as math from '../../../math'
|
|
8
9
|
import { format } from 'd3-format'
|
|
@@ -20,11 +21,15 @@
|
|
|
20
21
|
Orientation,
|
|
21
22
|
ScaleType,
|
|
22
23
|
} from '../types'
|
|
23
|
-
import {
|
|
24
|
+
import {
|
|
25
|
+
get_arcsinh_threshold,
|
|
26
|
+
get_scale_type_name,
|
|
27
|
+
SCALE_DEFAULTS,
|
|
28
|
+
} from '../types'
|
|
24
29
|
|
|
25
30
|
let {
|
|
26
31
|
title = $bindable(),
|
|
27
|
-
color_scale = $bindable(
|
|
32
|
+
color_scale = $bindable(SCALE_DEFAULTS.scheme),
|
|
28
33
|
bar_style = undefined,
|
|
29
34
|
title_style = undefined,
|
|
30
35
|
wrapper_style = undefined,
|
|
@@ -59,7 +64,7 @@
|
|
|
59
64
|
wrapper_style?: string
|
|
60
65
|
tick_labels?: (string | number)[] | number
|
|
61
66
|
tick_format?: string
|
|
62
|
-
range?:
|
|
67
|
+
range?: Vec2
|
|
63
68
|
// tick_side determines tick placement relative to orientation:
|
|
64
69
|
// 'primary' = bottom (horizontal) / right (vertical), outside bar
|
|
65
70
|
// 'secondary' = top (horizontal) / left (vertical), outside bar
|
|
@@ -72,18 +77,18 @@
|
|
|
72
77
|
steps?: number
|
|
73
78
|
// computed "nice" range resulting from snapping ticks
|
|
74
79
|
// https://github.com/d3/d3-scale/issues/86
|
|
75
|
-
nice_range?:
|
|
80
|
+
nice_range?: Vec2
|
|
76
81
|
// type of scale to use for ticks and potentially color (if color_scale_fn not provided)
|
|
77
82
|
scale_type?: ScaleType
|
|
78
83
|
// Optional pre-configured d3 color scale function
|
|
79
84
|
color_scale_fn?: (value: number) => string
|
|
80
85
|
// Optional domain for pre-configured color scale function
|
|
81
|
-
color_scale_domain?:
|
|
86
|
+
color_scale_domain?: Vec2
|
|
82
87
|
// Property selection options (makes title interactive)
|
|
83
88
|
property_options?: AxisOption[]
|
|
84
89
|
selected_property_key?: string
|
|
85
90
|
data_loader?: ColorBarDataLoaderFn
|
|
86
|
-
on_property_change?: (key: string, range:
|
|
91
|
+
on_property_change?: (key: string, range: Vec2) => void
|
|
87
92
|
// Color scale selection options
|
|
88
93
|
color_scale_options?: ColorScaleOption[]
|
|
89
94
|
selected_color_scale_key?: string
|
|
@@ -104,10 +109,9 @@
|
|
|
104
109
|
if (orientation === `horizontal`) {
|
|
105
110
|
return tick_side === `primary` ? `top` : `bottom`
|
|
106
111
|
} // orientation === `vertical`
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
112
|
+
// If ticks are primary (right), default label to left
|
|
113
|
+
// If ticks are secondary (left), default label to right
|
|
114
|
+
return tick_side === `primary` ? `left` : `right`
|
|
111
115
|
})
|
|
112
116
|
|
|
113
117
|
// Number of ticks to generate
|
|
@@ -115,29 +119,43 @@
|
|
|
115
119
|
Array.isArray(tick_labels)
|
|
116
120
|
? tick_labels.length
|
|
117
121
|
: typeof tick_labels === `number`
|
|
118
|
-
|
|
119
|
-
|
|
122
|
+
? tick_labels
|
|
123
|
+
: 5,
|
|
120
124
|
)
|
|
121
125
|
|
|
126
|
+
// Log scales need positive bounds: a non-positive max falls back to linear
|
|
127
|
+
// (with a warning), a non-positive min is clamped to LOG_EPS.
|
|
128
|
+
const prepare_log_domain = (
|
|
129
|
+
min: number,
|
|
130
|
+
max: number,
|
|
131
|
+
context: string,
|
|
132
|
+
): { min: number; use_log: boolean } => {
|
|
133
|
+
if (max <= 0) {
|
|
134
|
+
console.warn(
|
|
135
|
+
`Log scale requires a positive max value ${context}. Received max=${max}. Falling back to linear.`,
|
|
136
|
+
)
|
|
137
|
+
return { min, use_log: false }
|
|
138
|
+
}
|
|
139
|
+
if (min <= 0) {
|
|
140
|
+
console.warn(
|
|
141
|
+
`Log scale received non-positive min value (${min}) ${context}. Using epsilon=${math.LOG_EPS} instead.`,
|
|
142
|
+
)
|
|
143
|
+
return { min: math.LOG_EPS, use_log: true }
|
|
144
|
+
}
|
|
145
|
+
return { min, use_log: true }
|
|
146
|
+
}
|
|
147
|
+
|
|
122
148
|
// Scale for ticks - based *only* on 'range' prop and 'scale_type' for ticks
|
|
123
149
|
let scale_for_ticks = $derived.by(() => {
|
|
124
150
|
const type_name = get_scale_type_name(scale_type)
|
|
125
|
-
let use_log_for_ticks = type_name === `log`
|
|
126
151
|
let [scale_min, scale_max] = range
|
|
127
|
-
|
|
128
|
-
// Validate range for log scale ticks and apply epsilon if needed
|
|
152
|
+
let use_log_for_ticks = type_name === `log`
|
|
129
153
|
if (use_log_for_ticks) {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
} else if (scale_min <= 0) {
|
|
136
|
-
console.warn(
|
|
137
|
-
`Log scale received non-positive min value (${scale_min}) for ticks. Using epsilon=${math.LOG_EPS} instead.`,
|
|
138
|
-
)
|
|
139
|
-
scale_min = math.LOG_EPS // Substitute with epsilon
|
|
140
|
-
}
|
|
154
|
+
;({ min: scale_min, use_log: use_log_for_ticks } = prepare_log_domain(
|
|
155
|
+
scale_min,
|
|
156
|
+
scale_max,
|
|
157
|
+
`for ticks`,
|
|
158
|
+
))
|
|
141
159
|
}
|
|
142
160
|
|
|
143
161
|
// For arcsinh, use our custom scale
|
|
@@ -208,11 +226,13 @@
|
|
|
208
226
|
if (
|
|
209
227
|
Math.abs(Math.log10(nice_min) % 1) < FRACTIONAL_TOL &&
|
|
210
228
|
!power_of_10_ticks.includes(nice_min)
|
|
211
|
-
)
|
|
229
|
+
)
|
|
230
|
+
power_of_10_ticks.unshift(nice_min)
|
|
212
231
|
if (
|
|
213
232
|
Math.abs(Math.log10(nice_max) % 1) < FRACTIONAL_TOL &&
|
|
214
233
|
!power_of_10_ticks.includes(nice_max)
|
|
215
|
-
)
|
|
234
|
+
)
|
|
235
|
+
power_of_10_ticks.push(nice_max)
|
|
216
236
|
|
|
217
237
|
// If no powers of 10 are within range (e.g. [0.1, 0.9]), fall back to D3 ticks?
|
|
218
238
|
// Or just return filtered list which might be empty?
|
|
@@ -242,7 +262,6 @@
|
|
|
242
262
|
const fraction = idx / (n_ticks - 1)
|
|
243
263
|
return scale_min + fraction * (scale_max - scale_min)
|
|
244
264
|
})
|
|
245
|
-
|
|
246
265
|
})
|
|
247
266
|
|
|
248
267
|
// Update nice_range binding when snapping ticks
|
|
@@ -261,7 +280,7 @@
|
|
|
261
280
|
if (color_scale_fn) return color_scale_fn // Prioritize passed function
|
|
262
281
|
|
|
263
282
|
// Fallback: create function from scheme name/function in 'color_scale' prop
|
|
264
|
-
let interpolator =
|
|
283
|
+
let interpolator = get_d3_interpolator(SCALE_DEFAULTS.scheme) // Default interpolator
|
|
265
284
|
if (typeof color_scale === `string`) {
|
|
266
285
|
const func_name = color_scale.startsWith(`interpolate`)
|
|
267
286
|
? color_scale
|
|
@@ -269,9 +288,7 @@
|
|
|
269
288
|
if (func_name in d3_sc) {
|
|
270
289
|
interpolator = d3_sc[func_name as D3InterpolateName]
|
|
271
290
|
} else {
|
|
272
|
-
console.error(
|
|
273
|
-
`Color scale '${color_scale}' not found. Falling back on 'Viridis'.`,
|
|
274
|
-
)
|
|
291
|
+
console.error(`Color scale '${color_scale}' not found. Falling back on 'Viridis'.`)
|
|
275
292
|
}
|
|
276
293
|
} else if (typeof color_scale === `function`) {
|
|
277
294
|
// User passed a function (assumed interpolator [0,1] -> color)
|
|
@@ -285,23 +302,17 @@
|
|
|
285
302
|
// Use scale_type for fallback scale creation too. Validate domain for log.
|
|
286
303
|
let use_log_fallback = type_name === `log`
|
|
287
304
|
if (use_log_fallback) {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
} else if (min_val <= 0) {
|
|
294
|
-
console.warn(
|
|
295
|
-
`Log scale received non-positive min value (${min_val}) for fallback scale. Using epsilon=${math.LOG_EPS} instead.`,
|
|
296
|
-
)
|
|
297
|
-
min_val = math.LOG_EPS // Substitute with epsilon
|
|
298
|
-
}
|
|
305
|
+
;({ min: min_val, use_log: use_log_fallback } = prepare_log_domain(
|
|
306
|
+
min_val,
|
|
307
|
+
max_val,
|
|
308
|
+
`for fallback scale`,
|
|
309
|
+
))
|
|
299
310
|
}
|
|
300
311
|
|
|
301
312
|
// Use potentially adjusted min/max for domain (ascending)
|
|
302
313
|
const lo = Math.min(min_val, max_val)
|
|
303
314
|
const hi = Math.max(min_val, max_val)
|
|
304
|
-
const domain_for_scale:
|
|
315
|
+
const domain_for_scale: Vec2 = [lo, hi]
|
|
305
316
|
|
|
306
317
|
// For arcsinh, create a custom color scale
|
|
307
318
|
if (type_name === `arcsinh`) {
|
|
@@ -312,7 +323,7 @@
|
|
|
312
323
|
return (value: number): string => {
|
|
313
324
|
const t_val = Math.asinh(value / threshold)
|
|
314
325
|
const normalized = t_max === t_min ? 0.5 : (t_val - t_min) / (t_max - t_min)
|
|
315
|
-
return interpolator(
|
|
326
|
+
return interpolator(clamp01(normalized))
|
|
316
327
|
}
|
|
317
328
|
}
|
|
318
329
|
|
|
@@ -335,27 +346,25 @@
|
|
|
335
346
|
// Validate domain for log interpolation and apply epsilon if needed
|
|
336
347
|
let use_log_interp = type_name === `log`
|
|
337
348
|
let adjusted_min_ramp = min_ramp_domain
|
|
338
|
-
|
|
339
|
-
|
|
349
|
+
const adjusted_max_ramp = max_ramp_domain
|
|
340
350
|
if (use_log_interp) {
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
} else if (min_ramp_domain <= 0) {
|
|
347
|
-
console.warn(
|
|
348
|
-
`Log scale specified for gradient, but min domain value (${min_ramp_domain}) is not positive. Using epsilon=${math.LOG_EPS} instead.`,
|
|
349
|
-
)
|
|
350
|
-
adjusted_min_ramp = math.LOG_EPS // Substitute with epsilon
|
|
351
|
-
}
|
|
351
|
+
;({ min: adjusted_min_ramp, use_log: use_log_interp } = prepare_log_domain(
|
|
352
|
+
min_ramp_domain,
|
|
353
|
+
max_ramp_domain,
|
|
354
|
+
`for gradient`,
|
|
355
|
+
))
|
|
352
356
|
}
|
|
353
357
|
|
|
354
358
|
const n_steps = Math.max(2, Math.floor(steps)) // guard against steps <= 1 to avoid NaN/degenerate gradients
|
|
355
359
|
|
|
356
360
|
// Pre-compute loop-invariant values for each scale type
|
|
357
|
-
let log_min = 0,
|
|
358
|
-
|
|
361
|
+
let log_min = 0,
|
|
362
|
+
log_max = 0,
|
|
363
|
+
log_span = 0
|
|
364
|
+
let asinh_threshold = 1,
|
|
365
|
+
asinh_min = 0,
|
|
366
|
+
asinh_max = 0,
|
|
367
|
+
asinh_span = 0
|
|
359
368
|
const linear_span = max_ramp_domain - min_ramp_domain
|
|
360
369
|
|
|
361
370
|
if (use_log_interp) {
|
|
@@ -375,13 +384,12 @@
|
|
|
375
384
|
let data_value: number
|
|
376
385
|
|
|
377
386
|
if (use_log_interp) {
|
|
378
|
-
data_value = log_span === 0
|
|
379
|
-
? adjusted_min_ramp
|
|
380
|
-
: 10 ** (log_min + fraction * log_span)
|
|
387
|
+
data_value = log_span === 0 ? adjusted_min_ramp : 10 ** (log_min + fraction * log_span)
|
|
381
388
|
} else if (type_name === `arcsinh`) {
|
|
382
|
-
data_value =
|
|
383
|
-
|
|
384
|
-
|
|
389
|
+
data_value =
|
|
390
|
+
asinh_span === 0
|
|
391
|
+
? min_ramp_domain
|
|
392
|
+
: Math.sinh(asinh_min + fraction * asinh_span) * asinh_threshold
|
|
385
393
|
} else {
|
|
386
394
|
data_value = min_ramp_domain + fraction * linear_span
|
|
387
395
|
}
|
|
@@ -398,15 +406,9 @@
|
|
|
398
406
|
|
|
399
407
|
// CSS variables for bar width/height based on orientation
|
|
400
408
|
let final_bar_style = $derived(
|
|
401
|
-
`--cbar-width: ${
|
|
402
|
-
|
|
403
|
-
};
|
|
404
|
-
--cbar-height: ${
|
|
405
|
-
orientation === `vertical` ? `100%` : `var(--cbar-thickness, 10px)`
|
|
406
|
-
};
|
|
407
|
-
background: linear-gradient(${grad_dir}, ${ramped.join(`, `)}); ${
|
|
408
|
-
bar_style ?? ``
|
|
409
|
-
}`,
|
|
409
|
+
`--cbar-width: ${orientation === `horizontal` ? `100%` : `var(--cbar-thickness, 10px)`};
|
|
410
|
+
--cbar-height: ${orientation === `vertical` ? `100%` : `var(--cbar-thickness, 10px)`};
|
|
411
|
+
background: linear-gradient(${grad_dir}, ${ramped.join(`, `)}); ${bar_style ?? ``}`,
|
|
410
412
|
)
|
|
411
413
|
|
|
412
414
|
// Calculate additional margin for main label if it overlaps with ticks
|
|
@@ -415,11 +417,14 @@
|
|
|
415
417
|
if (tick_side === `inside`) return ``
|
|
416
418
|
|
|
417
419
|
// Determine concrete side outside ticks are on
|
|
418
|
-
const concrete_outside_tick_side =
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
420
|
+
const concrete_outside_tick_side =
|
|
421
|
+
orientation === `horizontal`
|
|
422
|
+
? tick_side === `primary`
|
|
423
|
+
? `bottom`
|
|
424
|
+
: `top`
|
|
425
|
+
: tick_side === `primary`
|
|
426
|
+
? `right`
|
|
427
|
+
: `left`
|
|
423
428
|
|
|
424
429
|
if (actual_title_side !== concrete_outside_tick_side) return ``
|
|
425
430
|
|
|
@@ -443,8 +448,7 @@
|
|
|
443
448
|
? `max-width: var(--cbar-label-max-width, 2em);`
|
|
444
449
|
: ``
|
|
445
450
|
|
|
446
|
-
return `${size_constraint} ${label_overlap_margin_style} ${title_style ?? ``}
|
|
447
|
-
.trim()
|
|
451
|
+
return `${size_constraint} ${label_overlap_margin_style} ${title_style ?? ``}`.trim()
|
|
448
452
|
})
|
|
449
453
|
|
|
450
454
|
function get_tick_text_color(tick_value: number): string | null {
|
|
@@ -462,9 +466,7 @@
|
|
|
462
466
|
}
|
|
463
467
|
|
|
464
468
|
let has_property_select = $derived(property_options && property_options.length > 0)
|
|
465
|
-
let has_color_scale_select = $derived(
|
|
466
|
-
color_scale_options && color_scale_options.length > 0,
|
|
467
|
-
)
|
|
469
|
+
let has_color_scale_select = $derived(color_scale_options && color_scale_options.length > 0)
|
|
468
470
|
let has_any_select = $derived(has_property_select || has_color_scale_select)
|
|
469
471
|
|
|
470
472
|
// Keep bindable selected keys valid so state matches the select's first-option fallback.
|
|
@@ -522,35 +524,31 @@
|
|
|
522
524
|
// Align items based on orientation and title position
|
|
523
525
|
let div_style = $derived(`
|
|
524
526
|
--cbar-wrapper-align-items: ${
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
527
|
+
orientation === `vertical` &&
|
|
528
|
+
(actual_title_side === `left` || actual_title_side === `right`)
|
|
529
|
+
? `stretch`
|
|
530
|
+
: `center`
|
|
531
|
+
};
|
|
530
532
|
--cbar-label-display: ${
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
533
|
+
orientation === `vertical` &&
|
|
534
|
+
(actual_title_side === `left` || actual_title_side === `right`)
|
|
535
|
+
? `flex`
|
|
536
|
+
: `inline-block`
|
|
537
|
+
};
|
|
536
538
|
height: ${
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
};
|
|
541
|
-
min-height: ${
|
|
542
|
-
orientation === `vertical` ? `var(--cbar-min-height, 150px)` : `auto`
|
|
543
|
-
};
|
|
539
|
+
orientation === `vertical` ? `var(--cbar-height, 100%)` : `var(--cbar-height, auto)`
|
|
540
|
+
};
|
|
541
|
+
min-height: ${orientation === `vertical` ? `var(--cbar-min-height, 150px)` : `auto`};
|
|
544
542
|
max-height: ${
|
|
545
|
-
|
|
546
|
-
|
|
543
|
+
orientation === `vertical` ? `var(--cbar-max-height, 1000px)` : `none`
|
|
544
|
+
}; ${wrapper_style ?? ``}`)
|
|
547
545
|
</script>
|
|
548
546
|
|
|
549
547
|
<div
|
|
550
548
|
style:flex-direction={wrapper_flex_dir}
|
|
551
549
|
{...rest}
|
|
552
550
|
style={div_style + (rest.style ?? ``)}
|
|
553
|
-
class=
|
|
551
|
+
class={[`colorbar`, rest.class]}
|
|
554
552
|
>
|
|
555
553
|
{#if title || has_any_select}
|
|
556
554
|
<div class="title-row {actual_title_side} {orientation}" style={actual_title_style}>
|
|
@@ -583,10 +581,7 @@
|
|
|
583
581
|
</div>
|
|
584
582
|
{/if}
|
|
585
583
|
<div style={final_bar_style} class="bar">
|
|
586
|
-
{#each tick_side === `inside` ? ticks_array.slice(1, -1) : ticks_array as
|
|
587
|
-
tick_label
|
|
588
|
-
(tick_label)
|
|
589
|
-
}
|
|
584
|
+
{#each tick_side === `inside` ? ticks_array.slice(1, -1) : ticks_array as tick_label (tick_label)}
|
|
590
585
|
{@const position_percent =
|
|
591
586
|
// Use derived scale's mapping function to get position percent
|
|
592
587
|
scale_for_ticks(tick_label)}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Vec2 } from '../../../math';
|
|
1
2
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
2
3
|
import type { AxisOption, ColorBarDataLoaderFn, ColorScaleOption, Orientation, ScaleType } from '../types';
|
|
3
4
|
type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
|
|
@@ -9,19 +10,19 @@ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
|
|
|
9
10
|
wrapper_style?: string;
|
|
10
11
|
tick_labels?: (string | number)[] | number;
|
|
11
12
|
tick_format?: string;
|
|
12
|
-
range?:
|
|
13
|
+
range?: Vec2;
|
|
13
14
|
tick_side?: `primary` | `secondary` | `inside`;
|
|
14
15
|
orientation?: Orientation;
|
|
15
16
|
snap_ticks?: boolean;
|
|
16
17
|
steps?: number;
|
|
17
|
-
nice_range?:
|
|
18
|
+
nice_range?: Vec2;
|
|
18
19
|
scale_type?: ScaleType;
|
|
19
20
|
color_scale_fn?: (value: number) => string;
|
|
20
|
-
color_scale_domain?:
|
|
21
|
+
color_scale_domain?: Vec2;
|
|
21
22
|
property_options?: AxisOption[];
|
|
22
23
|
selected_property_key?: string;
|
|
23
24
|
data_loader?: ColorBarDataLoaderFn;
|
|
24
|
-
on_property_change?: (key: string, range:
|
|
25
|
+
on_property_change?: (key: string, range: Vec2) => void;
|
|
25
26
|
color_scale_options?: ColorScaleOption[];
|
|
26
27
|
selected_color_scale_key?: string;
|
|
27
28
|
on_color_scale_change?: (key: string) => void;
|
|
@@ -4,11 +4,7 @@
|
|
|
4
4
|
import { interpolatePath } from 'd3-interpolate-path'
|
|
5
5
|
import { untrack } from 'svelte'
|
|
6
6
|
import { Tween, type TweenOptions } from 'svelte/motion'
|
|
7
|
-
import type {
|
|
8
|
-
FillGradient,
|
|
9
|
-
FillHandlerEvent,
|
|
10
|
-
FillRegion,
|
|
11
|
-
} from '../types'
|
|
7
|
+
import type { FillGradient, FillHandlerEvent, FillRegion } from '../types'
|
|
12
8
|
import { unique_id } from '../utils'
|
|
13
9
|
|
|
14
10
|
let {
|
|
@@ -37,22 +33,20 @@
|
|
|
37
33
|
|
|
38
34
|
// Stable instance ID for gradient uniqueness (generated once per component instance)
|
|
39
35
|
const instance_id = unique_id()
|
|
40
|
-
let gradient_id = $derived(
|
|
41
|
-
`fill-gradient-${region.id ?? region_idx}-${instance_id}`,
|
|
42
|
-
)
|
|
36
|
+
let gradient_id = $derived(`fill-gradient-${region.id ?? region_idx}-${instance_id}`)
|
|
43
37
|
|
|
44
38
|
// On hover (without an explicit hover_style), noticeably raise opacity. A faint fill (e.g. a
|
|
45
39
|
// low-alpha rgba color at the default 0.3 fill-opacity) is otherwise nearly invisible, so a mere
|
|
46
40
|
// brightness filter reads as "no change". An explicit hover_style.fill_opacity always wins.
|
|
47
41
|
let effective_opacity = $derived(
|
|
48
42
|
is_hovered
|
|
49
|
-
? region.hover_style?.fill_opacity ?? Math.min(1, (region.fill_opacity ?? 0.3) + 0.4)
|
|
50
|
-
: region.fill_opacity ?? 0.3,
|
|
43
|
+
? (region.hover_style?.fill_opacity ?? Math.min(1, (region.fill_opacity ?? 0.3) + 0.4))
|
|
44
|
+
: (region.fill_opacity ?? 0.3),
|
|
51
45
|
)
|
|
52
46
|
let effective_fill = $derived(
|
|
53
47
|
is_hovered && region.hover_style?.fill
|
|
54
48
|
? region.hover_style.fill
|
|
55
|
-
: region.fill ?? `steelblue
|
|
49
|
+
: (region.fill ?? `steelblue`),
|
|
56
50
|
)
|
|
57
51
|
let path_fill = $derived(
|
|
58
52
|
typeof effective_fill === `object` ? `url(#${gradient_id})` : effective_fill,
|
|
@@ -137,8 +131,9 @@
|
|
|
137
131
|
// Construct FillHandlerEvent from MouseEvent
|
|
138
132
|
function construct_event(event: MouseEvent): FillHandlerEvent {
|
|
139
133
|
const current = event.currentTarget
|
|
140
|
-
const rect = (
|
|
141
|
-
|
|
134
|
+
const rect = (
|
|
135
|
+
current instanceof SVGElement ? current.ownerSVGElement : null
|
|
136
|
+
)?.getBoundingClientRect()
|
|
142
137
|
const px = event.clientX - (rect?.left ?? 0)
|
|
143
138
|
const py = event.clientY - (rect?.top ?? 0)
|
|
144
139
|
const raw_x = x_scale_fn.invert?.(px) ?? 0
|
|
@@ -159,9 +154,7 @@
|
|
|
159
154
|
}
|
|
160
155
|
|
|
161
156
|
// Type guard for gradient fill
|
|
162
|
-
const is_gradient = (
|
|
163
|
-
fill: string | FillGradient | undefined,
|
|
164
|
-
): fill is FillGradient =>
|
|
157
|
+
const is_gradient = (fill: string | FillGradient | undefined): fill is FillGradient =>
|
|
165
158
|
typeof fill === `object` && fill !== null && `type` in fill
|
|
166
159
|
</script>
|
|
167
160
|
|
|
@@ -220,7 +213,7 @@
|
|
|
220
213
|
fill={path_fill}
|
|
221
214
|
fill-opacity={effective_opacity}
|
|
222
215
|
stroke={hover_stroke ?? `none`}
|
|
223
|
-
stroke-width={hover_stroke ? region.hover_style?.stroke_width ?? 1.5 : 0}
|
|
216
|
+
stroke-width={hover_stroke ? (region.hover_style?.stroke_width ?? 1.5) : 0}
|
|
224
217
|
/>
|
|
225
218
|
</g>
|
|
226
219
|
|