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
|
// Fill-between utility functions for ScatterPlot fill regions
|
|
2
2
|
// Each fill edge is traced through its boundary's own points with the same curve the series line
|
|
3
|
-
// uses (
|
|
4
|
-
// edge
|
|
5
|
-
//
|
|
3
|
+
// uses (a series edge inherits the series' `line_style.curve`, default monotoneX), so an unclipped
|
|
4
|
+
// fill edge coincides with the line it borders. When an edge is clipped (x_range / partial
|
|
5
|
+
// overlap), inserted endpoints are evaluated on a monotone-cubic approximation: sub-pixel for
|
|
6
|
+
// monotoneX/linear/step, but natural/basis/catmullRom edges can deviate more at the clip points.
|
|
6
7
|
import { curveBasis, curveCardinal, curveCatmullRom, curveLinear, curveMonotoneX, curveMonotoneY, curveNatural, curveStep, curveStepAfter, curveStepBefore, line, } from 'd3-shape';
|
|
7
8
|
// Epsilon value for log scale clamping (to avoid log(0) = -Infinity)
|
|
8
9
|
export const LOG_EPSILON = 1e-10;
|
|
@@ -91,9 +92,12 @@ export function monotone_interpolate(xs, ys, x, tangents) {
|
|
|
91
92
|
const p1 = ys[lo] + dx * tang[lo];
|
|
92
93
|
const p2 = ys[lo + 1] - dx * tang[lo + 1];
|
|
93
94
|
const p3 = ys[lo + 1];
|
|
94
|
-
const
|
|
95
|
-
const mu = 1 -
|
|
96
|
-
return mu * mu * mu * p0 +
|
|
95
|
+
const frac = (x - x0) / span;
|
|
96
|
+
const mu = 1 - frac;
|
|
97
|
+
return (mu * mu * mu * p0 +
|
|
98
|
+
3 * mu * mu * frac * p1 +
|
|
99
|
+
3 * mu * frac * frac * p2 +
|
|
100
|
+
frac * frac * frac * p3);
|
|
97
101
|
}
|
|
98
102
|
// Curve types whose interior follows a (near-)monotone cubic; evaluated via monotone_interpolate.
|
|
99
103
|
// Others (linear/step) evaluate piecewise (exact for them at clip points).
|
|
@@ -142,6 +146,19 @@ const finite_points = (xs, ys) => clean_pts(Array.from({ length: Math.min(xs.len
|
|
|
142
146
|
x: xs[idx],
|
|
143
147
|
y: ys[idx],
|
|
144
148
|
})));
|
|
149
|
+
// Bridge the public LineCurve vocabulary (series `line_style.curve`) to FillCurveType names so
|
|
150
|
+
// a series fill edge traces with the same curve as its rendered line. Default: monotoneX.
|
|
151
|
+
const LINE_CURVE_TO_FILL = {
|
|
152
|
+
linear: `linear`,
|
|
153
|
+
monotone: `monotoneX`,
|
|
154
|
+
natural: `natural`,
|
|
155
|
+
step: `step`,
|
|
156
|
+
basis: `basis`,
|
|
157
|
+
'catmull-rom': `catmullRom`,
|
|
158
|
+
};
|
|
159
|
+
const line_curve_to_fill = (curve) =>
|
|
160
|
+
// ?? monotoneX guards an unknown string from an untyped (Python/JSON) caller
|
|
161
|
+
(curve ? LINE_CURVE_TO_FILL[curve] : undefined) ?? `monotoneX`;
|
|
145
162
|
// Resolve a boundary to native points + curve in data coordinates. `companion` supplies x
|
|
146
163
|
// positions for boundaries that don't define their own (constant/axis/function/data-without-x).
|
|
147
164
|
export function resolve_boundary_points(boundary, series, domains, companion) {
|
|
@@ -154,15 +171,16 @@ export function resolve_boundary_points(boundary, series, domains, companion) {
|
|
|
154
171
|
points: horizontal(span_xs, y),
|
|
155
172
|
curve: `linear`,
|
|
156
173
|
});
|
|
157
|
-
//
|
|
158
|
-
|
|
174
|
+
// function / data edges trace with monotoneX by default; a series edge inherits the
|
|
175
|
+
// series' own line curve so the fill border coincides with the rendered line
|
|
176
|
+
const curved_edge = (points, curve = `monotoneX`) => (points.length > 0 ? { points, curve } : null);
|
|
159
177
|
if (typeof boundary === `number`)
|
|
160
178
|
return flat_edge(boundary);
|
|
161
179
|
if (boundary.type === `series`) {
|
|
162
180
|
const resolved = resolve_series_ref(boundary, series);
|
|
163
181
|
if (!resolved)
|
|
164
182
|
return null;
|
|
165
|
-
return curved_edge(finite_points(resolved.x, resolved.y));
|
|
183
|
+
return curved_edge(finite_points(resolved.x, resolved.y), line_curve_to_fill(resolved.line_style?.curve));
|
|
166
184
|
}
|
|
167
185
|
if (boundary.type === `constant`)
|
|
168
186
|
return flat_edge(boundary.value);
|
|
@@ -342,6 +360,10 @@ const CURVE_MAP = {
|
|
|
342
360
|
natural: curveNatural,
|
|
343
361
|
};
|
|
344
362
|
const get_curve = (curve_type) => CURVE_MAP[curve_type] ?? curveMonotoneX;
|
|
363
|
+
// Resolve a public LineCurve (a series' `line_style.curve`) to its d3 CurveFactory. Single source
|
|
364
|
+
// of truth shared by Line.svelte and PlotMarginals.svelte (composes the LineCurve -> FillCurveType
|
|
365
|
+
// -> CurveFactory maps); unknown/undefined falls back to curveMonotoneX.
|
|
366
|
+
export const line_curve_factory = (curve) => get_curve(line_curve_to_fill(curve));
|
|
345
367
|
const trace = (points, curve_type) => line()
|
|
346
368
|
.x((pt) => pt.x)
|
|
347
369
|
.y((pt) => pt.y)
|
|
@@ -375,6 +397,9 @@ export function convert_error_band_to_fill_region(error_band, series, default_co
|
|
|
375
397
|
return {
|
|
376
398
|
id: error_band.id,
|
|
377
399
|
label: error_band.label,
|
|
400
|
+
// band edges are data boundaries (default monotoneX); inherit the central series' line
|
|
401
|
+
// curve so the band traces with the same curve as the line it brackets
|
|
402
|
+
curve: line_curve_to_fill(resolved.line_style?.curve),
|
|
378
403
|
upper: { type: `data`, x, values: y.map((val, idx) => val + upper_err[idx]) },
|
|
379
404
|
lower: { type: `data`, x, values: y.map((val, idx) => val - lower_err[idx]) },
|
|
380
405
|
fill: error_band.fill ?? default_color ?? `#4e79a7`,
|
package/dist/plot/core/index.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
import { type Point2D, type Vec2 } from '../../math';
|
|
2
|
-
import type { AxisRanges, ScaleType, Y2SyncConfig, Y2SyncMode } from './types';
|
|
2
|
+
import type { AxisRanges, InitialRanges, ScaleType, Y2SyncConfig, Y2SyncMode } from './types';
|
|
3
3
|
export declare function get_relative_coords(evt: MouseEvent, element?: EventTarget | null): Point2D | null;
|
|
4
4
|
export declare function closest_data_idx(event: Event, attr: string, root?: Element | null): number | null;
|
|
5
5
|
export declare function normalize_y2_sync(sync: Y2SyncConfig | Y2SyncMode | undefined): Y2SyncConfig;
|
|
6
6
|
export declare function sync_y2_range(y1_range: Vec2, y2_base_range: Vec2, sync: Y2SyncConfig): Vec2;
|
|
7
|
+
export declare const snapshot_ranges: ({ x, x2, y, y2 }: AxisRanges) => InitialRanges;
|
|
7
8
|
export declare function pan_range_by_pixels(range: Vec2, pixel_delta: number, pixel_span: number, scale_type?: ScaleType): Vec2;
|
|
8
9
|
export declare function zoom_range_by_factor(range: Vec2, factor: number, scale_type?: ScaleType): Vec2;
|
|
9
10
|
export declare const to_epoch_num: (val: number | Date) => number;
|
|
10
11
|
export declare function remove_drag_listeners(move_handlers: ((evt: MouseEvent) => void)[], up_handlers: ((evt: MouseEvent) => void)[]): void;
|
|
11
12
|
export declare const sorted_range: (a: number, b: number) => Vec2;
|
|
13
|
+
export declare function invert_rect_range(scale: {
|
|
14
|
+
invert: (px: number) => number | Date;
|
|
15
|
+
}, a_px: number, b_px: number): Vec2 | null;
|
|
12
16
|
export declare const vec2_equal: (a: Vec2, b: Vec2) => boolean;
|
|
13
17
|
export declare const axis_ranges_equal: (a: AxisRanges, b: AxisRanges) => boolean;
|
|
14
18
|
type AxisRangeOverride = {
|
|
@@ -7,8 +7,6 @@ export function get_relative_coords(evt, element = evt.currentTarget) {
|
|
|
7
7
|
if (!(element instanceof Element))
|
|
8
8
|
return null;
|
|
9
9
|
const box = element.getBoundingClientRect();
|
|
10
|
-
if (!box)
|
|
11
|
-
return null;
|
|
12
10
|
return { x: evt.clientX - box.left, y: evt.clientY - box.top };
|
|
13
11
|
}
|
|
14
12
|
// Resolve a delegated event to the integer value of the nearest ancestor's data
|
|
@@ -91,6 +89,13 @@ function axis_transform(scale_type) {
|
|
|
91
89
|
}
|
|
92
90
|
return { to: (val) => val, from: (val) => val };
|
|
93
91
|
}
|
|
92
|
+
// Snapshot the four axis ranges as fresh tuples at pan/zoom/touch interaction start
|
|
93
|
+
export const snapshot_ranges = ({ x, x2, y, y2 }) => ({
|
|
94
|
+
initial_x_range: [...x],
|
|
95
|
+
initial_x2_range: [...x2],
|
|
96
|
+
initial_y_range: [...y],
|
|
97
|
+
initial_y2_range: [...y2],
|
|
98
|
+
});
|
|
94
99
|
// Pan a range by a pixel delta, uniformly in screen space: linear axes shift by a
|
|
95
100
|
// constant amount, log axes by a constant factor (which also can't cross zero).
|
|
96
101
|
// `pixel_span` is the plot's pixel extent along the axis.
|
|
@@ -133,6 +138,13 @@ export function remove_drag_listeners(move_handlers, up_handlers) {
|
|
|
133
138
|
// Sorted [min, max] from two scalar bounds (rect-zoom inverts drag start/end,
|
|
134
139
|
// which arrive in either order depending on drag direction)
|
|
135
140
|
export const sorted_range = (a, b) => [Math.min(a, b), Math.max(a, b)];
|
|
141
|
+
// Invert a drag-rect edge pair through a scale to a sorted finite data range
|
|
142
|
+
// (time scales invert to Dates, coerced to epoch numbers). Returns null when
|
|
143
|
+
// either bound is non-finite or the range is degenerate (zero span).
|
|
144
|
+
export function invert_rect_range(scale, a_px, b_px) {
|
|
145
|
+
const range = sorted_range(to_epoch_num(scale.invert(a_px)), to_epoch_num(scale.invert(b_px)));
|
|
146
|
+
return range.every(Number.isFinite) && range[0] !== range[1] ? range : null;
|
|
147
|
+
}
|
|
136
148
|
// Strict per-bound equality of two [min, max] ranges
|
|
137
149
|
export const vec2_equal = (a, b) => a[0] === b[0] && a[1] === b[1];
|
|
138
150
|
// True when all four axis ranges match. The range-sync effects use this to skip
|
|
@@ -5,7 +5,8 @@ export type Sides = {
|
|
|
5
5
|
l?: number;
|
|
6
6
|
r?: number;
|
|
7
7
|
};
|
|
8
|
-
export declare const LABEL_GAP_DEFAULT =
|
|
8
|
+
export declare const LABEL_GAP_DEFAULT = 20;
|
|
9
|
+
export declare const DEFAULT_PLOT_PADDING: Required<Sides>;
|
|
9
10
|
export declare function y2_axis_label_x(axis: AxisConfig, width: number, pad_r: number, max_tick_width: number): number;
|
|
10
11
|
export declare const filter_padding: (padding: Partial<Sides> | undefined | null, defaults: Required<Sides>) => Required<Sides>;
|
|
11
12
|
export declare function measure_text_width(text: string, font?: string): number;
|
|
@@ -30,6 +31,7 @@ export interface AutoPaddingConfig {
|
|
|
30
31
|
export declare const measure_max_tick_width: (ticks: (string | number)[], format?: string) => number;
|
|
31
32
|
export declare const TICK_LABEL_HEIGHT = 16;
|
|
32
33
|
export declare const AXIS_LABEL_HEIGHT = 20;
|
|
34
|
+
export declare const AXIS_TITLE_OFFSET: number;
|
|
33
35
|
export declare const calc_auto_padding: ({ padding, default_padding, x2_axis, y_axis, y2_axis, label_gap, }: AutoPaddingConfig) => Required<Sides>;
|
|
34
36
|
export declare function constrain_tooltip_position(cursor_x: number, cursor_y: number, tooltip_width: number, tooltip_height: number, viewport_width: number, viewport_height: number, options?: {
|
|
35
37
|
offset?: number;
|
package/dist/plot/core/layout.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { format_value } from '../../labels';
|
|
2
2
|
import { euclidean_dist } from '../../math';
|
|
3
3
|
// Default gap between tick labels and axis labels
|
|
4
|
-
export const LABEL_GAP_DEFAULT =
|
|
4
|
+
export const LABEL_GAP_DEFAULT = 20;
|
|
5
|
+
// Default plot padding (px) reserved for axis ticks/labels, shared by
|
|
6
|
+
// Histogram/BarPlot/BoxPlot/BinnedScatterPlot (ScatterPlot keeps its own bespoke default)
|
|
7
|
+
export const DEFAULT_PLOT_PADDING = { t: 20, b: 60, l: 60, r: 20 };
|
|
5
8
|
// X position for a right-side (y2) axis label: past the plot edge plus tick shift and
|
|
6
9
|
// measured tick-label width (both zero when tick labels render inside the plot)
|
|
7
10
|
export function y2_axis_label_x(axis, width, pad_r, max_tick_width) {
|
|
@@ -56,22 +59,28 @@ export const measure_max_tick_width = (ticks, format = ``) => ticks.length === 0
|
|
|
56
59
|
export const TICK_LABEL_HEIGHT = 16;
|
|
57
60
|
// Estimated height of an axis label (font-size ~14px + margin)
|
|
58
61
|
export const AXIS_LABEL_HEIGHT = 20;
|
|
62
|
+
// Distance from an x/x2 axis baseline to the title center.
|
|
63
|
+
export const AXIS_TITLE_OFFSET = TICK_LABEL_HEIGHT + LABEL_GAP_DEFAULT;
|
|
59
64
|
export const calc_auto_padding = ({ padding, default_padding, x2_axis = {}, y_axis = {}, y2_axis = {}, label_gap = LABEL_GAP_DEFAULT, }) => {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
+
// Padding for a vertical-axis side (y/y2): when ticks render, reserve widest tick label + gap +
|
|
66
|
+
// the rotated axis-title width (mirrors the `t` branch's AXIS_LABEL_HEIGHT) so a wide tick label
|
|
67
|
+
// can't overlap the title. With no tick labels (e.g. no y2 series) reserve nothing extra.
|
|
68
|
+
const side_pad = (axis, default_side) => {
|
|
69
|
+
const ticks = axis.tick_values ?? [];
|
|
70
|
+
if (ticks.length === 0)
|
|
71
|
+
return default_side;
|
|
72
|
+
return Math.max(default_side, measure_max_tick_width(ticks, axis.format ?? ``) +
|
|
73
|
+
label_gap +
|
|
74
|
+
(axis.label ? AXIS_LABEL_HEIGHT : 0));
|
|
75
|
+
};
|
|
65
76
|
return {
|
|
66
77
|
t: padding.t ??
|
|
67
|
-
(
|
|
78
|
+
((x2_axis.tick_values ?? []).length > 0
|
|
68
79
|
? Math.max(default_padding.t, TICK_LABEL_HEIGHT + label_gap + (x2_axis.label ? AXIS_LABEL_HEIGHT : 0))
|
|
69
80
|
: default_padding.t),
|
|
70
81
|
b: padding.b ?? default_padding.b,
|
|
71
|
-
l: padding.l ??
|
|
72
|
-
|
|
73
|
-
r: padding.r ??
|
|
74
|
-
Math.max(default_padding.r, measure_max_tick_width(y2_ticks, y2_format) + label_gap),
|
|
82
|
+
l: padding.l ?? side_pad(y_axis, default_padding.l),
|
|
83
|
+
r: padding.r ?? side_pad(y2_axis, default_padding.r),
|
|
75
84
|
};
|
|
76
85
|
};
|
|
77
86
|
// Constrain tooltip position within bounds, flipping to opposite side if overflow
|
|
@@ -216,9 +225,9 @@ export function compute_element_placement(config) {
|
|
|
216
225
|
? (effective_y_max - effective_y_min) / (grid_resolution - 1)
|
|
217
226
|
: 0;
|
|
218
227
|
// Precompute plot corners (constant across all candidates)
|
|
219
|
-
const plot_left =
|
|
228
|
+
const plot_left = valid_x_min;
|
|
220
229
|
const plot_right = plot_bounds.x + plot_bounds.width - axis_clearance;
|
|
221
|
-
const plot_top =
|
|
230
|
+
const plot_top = valid_y_min;
|
|
222
231
|
const plot_bottom = plot_bounds.y + plot_bounds.height - axis_clearance;
|
|
223
232
|
const max_corner_dist = euclidean_dist([plot_left, plot_top], [plot_right, plot_bottom]);
|
|
224
233
|
for (let grid_x = 0; grid_x < grid_resolution; grid_x++) {
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import type { Vec2 } from '../../math';
|
|
2
|
+
import type { Rect, Sides } from './layout';
|
|
3
|
+
import type { LineCurve, ScaleType } from './types';
|
|
4
|
+
import type { Snippet } from 'svelte';
|
|
5
|
+
export type MarginalSide = `top` | `bottom` | `left` | `right`;
|
|
6
|
+
export type MarginalType = `histogram` | `kde` | `cdf` | `rug`;
|
|
7
|
+
export type MarginalPlacement = `auto` | `flush` | `outer`;
|
|
8
|
+
export type MarginalNormalize = `count` | `density` | `probability`;
|
|
9
|
+
export type MarginalAxisBinding = `x1` | `x2` | `y1` | `y2`;
|
|
10
|
+
export declare const MARGINAL_SIDES: readonly ["top", "bottom", "left", "right"];
|
|
11
|
+
export type MarginalCurve = {
|
|
12
|
+
kind: `bars`;
|
|
13
|
+
bins: {
|
|
14
|
+
pos0: number;
|
|
15
|
+
pos1: number;
|
|
16
|
+
value: number;
|
|
17
|
+
}[];
|
|
18
|
+
max: number;
|
|
19
|
+
} | {
|
|
20
|
+
kind: `line`;
|
|
21
|
+
points: {
|
|
22
|
+
pos: number;
|
|
23
|
+
value: number;
|
|
24
|
+
}[];
|
|
25
|
+
max: number;
|
|
26
|
+
} | {
|
|
27
|
+
kind: `rug`;
|
|
28
|
+
positions: number[];
|
|
29
|
+
};
|
|
30
|
+
export interface MarginalComputeContext {
|
|
31
|
+
config: ResolvedMarginalConfig;
|
|
32
|
+
side: MarginalSide;
|
|
33
|
+
positional_range: Vec2;
|
|
34
|
+
scale_type: ScaleType;
|
|
35
|
+
}
|
|
36
|
+
export interface MarginalConfig {
|
|
37
|
+
type?: MarginalType;
|
|
38
|
+
size?: number;
|
|
39
|
+
gap?: number;
|
|
40
|
+
placement?: MarginalPlacement;
|
|
41
|
+
axis?: MarginalAxisBinding;
|
|
42
|
+
bins?: number;
|
|
43
|
+
bandwidth?: number | `silverman` | `scott`;
|
|
44
|
+
normalize?: MarginalNormalize;
|
|
45
|
+
per_series?: boolean;
|
|
46
|
+
color?: string;
|
|
47
|
+
fill?: string;
|
|
48
|
+
fill_opacity?: number;
|
|
49
|
+
stroke?: string;
|
|
50
|
+
stroke_width?: number;
|
|
51
|
+
opacity?: number;
|
|
52
|
+
curve?: LineCurve;
|
|
53
|
+
value_range?: Vec2;
|
|
54
|
+
value_axis?: boolean;
|
|
55
|
+
label?: string;
|
|
56
|
+
data?: readonly number[] | ((ctx: MarginalComputeContext) => readonly number[]);
|
|
57
|
+
reduce?: (values: number[], weights: number[] | undefined, ctx: MarginalComputeContext) => MarginalCurve;
|
|
58
|
+
snippet?: Snippet<[MarginalRenderContext]>;
|
|
59
|
+
hover?: boolean;
|
|
60
|
+
tooltip?: Snippet<[MarginalHover]>;
|
|
61
|
+
class?: string;
|
|
62
|
+
style?: string;
|
|
63
|
+
}
|
|
64
|
+
export type ResolvedMarginalConfig = MarginalConfig & {
|
|
65
|
+
type: MarginalType;
|
|
66
|
+
size: number;
|
|
67
|
+
gap: number;
|
|
68
|
+
placement: MarginalPlacement;
|
|
69
|
+
per_series: boolean;
|
|
70
|
+
bins: number;
|
|
71
|
+
bandwidth: number | `silverman` | `scott`;
|
|
72
|
+
stroke_width: number;
|
|
73
|
+
opacity: number;
|
|
74
|
+
value_axis: boolean;
|
|
75
|
+
};
|
|
76
|
+
export type MarginalSideInput = boolean | MarginalType | MarginalConfig;
|
|
77
|
+
export type MarginalsProp = boolean | MarginalType | Partial<Record<MarginalSide, MarginalSideInput>>;
|
|
78
|
+
export type ResolvedMarginals = Record<MarginalSide, ResolvedMarginalConfig | null>;
|
|
79
|
+
export interface MarginalSeriesInput {
|
|
80
|
+
x?: ArrayLike<number>;
|
|
81
|
+
y?: ArrayLike<number>;
|
|
82
|
+
weight?: ArrayLike<number>;
|
|
83
|
+
color: string;
|
|
84
|
+
label?: string;
|
|
85
|
+
visible?: boolean;
|
|
86
|
+
x_axis?: `x1` | `x2`;
|
|
87
|
+
y_axis?: `y1` | `y2`;
|
|
88
|
+
}
|
|
89
|
+
export interface MarginalSeriesCurve {
|
|
90
|
+
series_idx: number;
|
|
91
|
+
color: string;
|
|
92
|
+
label?: string;
|
|
93
|
+
curve: MarginalCurve;
|
|
94
|
+
}
|
|
95
|
+
export type ScaleFn = (value: number) => number;
|
|
96
|
+
export interface MarginalAxis {
|
|
97
|
+
scale: ScaleFn;
|
|
98
|
+
range: Vec2;
|
|
99
|
+
scale_type?: ScaleType;
|
|
100
|
+
format?: string;
|
|
101
|
+
tick_label?: (value: number) => string | undefined;
|
|
102
|
+
label?: string;
|
|
103
|
+
}
|
|
104
|
+
export type MarginalAxes = {
|
|
105
|
+
x1: MarginalAxis;
|
|
106
|
+
x2?: MarginalAxis;
|
|
107
|
+
y1: MarginalAxis;
|
|
108
|
+
y2?: MarginalAxis;
|
|
109
|
+
};
|
|
110
|
+
export declare const marginal_axis: (scale: ScaleFn, range: Vec2, axis: {
|
|
111
|
+
scale_type?: ScaleType;
|
|
112
|
+
format?: string;
|
|
113
|
+
label?: string;
|
|
114
|
+
}, tick_label?: (value: number) => string | undefined) => MarginalAxis;
|
|
115
|
+
export interface MarginalRenderContext extends MarginalComputeContext {
|
|
116
|
+
rect: Rect;
|
|
117
|
+
positional_scale: ScaleFn;
|
|
118
|
+
value_scale: ScaleFn;
|
|
119
|
+
baseline: number;
|
|
120
|
+
curves: MarginalSeriesCurve[];
|
|
121
|
+
series: MarginalSeriesInput[];
|
|
122
|
+
format?: string;
|
|
123
|
+
tick_label?: (value: number) => string | undefined;
|
|
124
|
+
axis_title?: string;
|
|
125
|
+
}
|
|
126
|
+
export declare const MARGINAL_HIT_TOLERANCE_PX = 10;
|
|
127
|
+
export interface MarginalHover {
|
|
128
|
+
side: MarginalSide;
|
|
129
|
+
x: number;
|
|
130
|
+
y: number;
|
|
131
|
+
color: string;
|
|
132
|
+
label?: string;
|
|
133
|
+
kind: MarginalCurve[`kind`];
|
|
134
|
+
pos: number;
|
|
135
|
+
pos0?: number;
|
|
136
|
+
pos1?: number;
|
|
137
|
+
value?: number;
|
|
138
|
+
config: ResolvedMarginalConfig;
|
|
139
|
+
scale_type: ScaleType;
|
|
140
|
+
format?: string;
|
|
141
|
+
pos_label?: string;
|
|
142
|
+
axis_title?: string;
|
|
143
|
+
}
|
|
144
|
+
export declare function marginal_hit(ctx: MarginalRenderContext, px: number, py: number): MarginalHover | null;
|
|
145
|
+
export declare const MARGINAL_DEFAULTS: {
|
|
146
|
+
type: MarginalType;
|
|
147
|
+
size: number;
|
|
148
|
+
gap: number;
|
|
149
|
+
placement: MarginalPlacement;
|
|
150
|
+
per_series: boolean;
|
|
151
|
+
bins: number;
|
|
152
|
+
bandwidth: "silverman";
|
|
153
|
+
stroke_width: number;
|
|
154
|
+
opacity: number;
|
|
155
|
+
value_axis: boolean;
|
|
156
|
+
};
|
|
157
|
+
export declare function normalize_marginals(prop: MarginalsProp | undefined, default_sides?: Partial<Record<MarginalSide, MarginalSideInput>>): ResolvedMarginals;
|
|
158
|
+
export declare function reserve_marginal_pad(resolved: ResolvedMarginals): Required<Sides>;
|
|
159
|
+
export declare const add_sides: (a: Required<Sides>, b: Required<Sides>) => Required<Sides>;
|
|
160
|
+
export declare const default_axis_for_side: (side: MarginalSide) => MarginalAxisBinding;
|
|
161
|
+
export declare const marginal_axis_presence: (top: boolean, right: boolean) => Record<MarginalSide, boolean>;
|
|
162
|
+
export declare function marginal_strip_rect(side: MarginalSide, pad: Required<Sides>, width: number, height: number, config: ResolvedMarginalConfig, has_axis: boolean): Rect;
|
|
163
|
+
export declare function marginal_value_scale(side: MarginalSide, rect: Rect, domain: Vec2): {
|
|
164
|
+
scale: (value: number) => number;
|
|
165
|
+
baseline: number;
|
|
166
|
+
};
|
|
167
|
+
export declare function compute_marginal_curve(positions: ArrayLike<number>, weights: ArrayLike<number> | undefined, config: ResolvedMarginalConfig, positional_range: Vec2, scale_type: ScaleType): MarginalCurve;
|
|
168
|
+
export declare const curves_max: (curves: MarginalCurve[]) => number;
|
|
169
|
+
export declare const default_marginal_label: (config: ResolvedMarginalConfig) => string;
|
|
170
|
+
export declare const marginal_value_format: (config: ResolvedMarginalConfig) => string;
|