matterviz 0.3.6 → 0.3.7
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.d.ts +9 -0
- package/dist/FilePicker.svelte +360 -0
- package/dist/FilePicker.svelte.d.ts +17 -0
- package/dist/Icon.svelte.d.ts +13 -0
- package/dist/MillerIndexInput.svelte +66 -0
- package/dist/MillerIndexInput.svelte.d.ts +7 -0
- package/dist/api/mp.d.ts +6 -0
- package/dist/api/mp.js +22 -0
- package/dist/api/optimade.d.ts +45 -0
- package/dist/api/optimade.js +135 -0
- package/dist/brillouin/BrillouinZone.svelte +549 -0
- package/dist/brillouin/BrillouinZone.svelte.d.ts +83 -0
- package/dist/brillouin/BrillouinZoneControls.svelte +144 -0
- package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +17 -0
- package/dist/brillouin/BrillouinZoneExportPane.svelte +146 -0
- package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +15 -0
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +146 -0
- package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +13 -0
- package/dist/brillouin/BrillouinZoneScene.svelte +476 -0
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +48 -0
- package/dist/brillouin/BrillouinZoneTooltip.svelte +92 -0
- package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +8 -0
- package/dist/brillouin/compute.d.ts +17 -0
- package/dist/brillouin/compute.js +426 -0
- package/dist/brillouin/index.d.ts +8 -0
- package/dist/brillouin/index.js +7 -0
- package/dist/brillouin/types.d.ts +43 -0
- package/dist/brillouin/types.js +1 -0
- package/dist/chempot-diagram/ChemPotDiagram.svelte +327 -0
- package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
- package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
- package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
- package/dist/chempot-diagram/async-compute.svelte.js +78 -0
- package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
- package/dist/chempot-diagram/chempot-worker.js +11 -0
- package/dist/chempot-diagram/color.d.ts +10 -0
- package/dist/chempot-diagram/color.js +32 -0
- package/dist/chempot-diagram/compute.d.ts +48 -0
- package/dist/chempot-diagram/compute.js +806 -0
- package/dist/chempot-diagram/index.d.ts +6 -0
- package/dist/chempot-diagram/index.js +6 -0
- package/dist/chempot-diagram/pointer.d.ts +16 -0
- package/dist/chempot-diagram/pointer.js +40 -0
- package/dist/chempot-diagram/temperature.d.ts +15 -0
- package/dist/chempot-diagram/temperature.js +34 -0
- package/dist/chempot-diagram/types.d.ts +81 -0
- package/dist/chempot-diagram/types.js +28 -0
- package/dist/colors/index.d.ts +47 -0
- package/dist/colors/index.js +203 -0
- package/dist/composition/BarChart.svelte +297 -0
- package/dist/composition/BarChart.svelte.d.ts +39 -0
- package/dist/composition/BubbleChart.svelte +218 -0
- package/dist/composition/BubbleChart.svelte.d.ts +28 -0
- package/dist/composition/Composition.svelte +165 -0
- package/dist/composition/Composition.svelte.d.ts +15 -0
- package/dist/composition/Formula.svelte +268 -0
- package/dist/composition/Formula.svelte.d.ts +19 -0
- package/dist/composition/FormulaFilter.svelte +1257 -0
- package/dist/composition/FormulaFilter.svelte.d.ts +51 -0
- package/dist/composition/PieChart.svelte +323 -0
- package/dist/composition/PieChart.svelte.d.ts +37 -0
- package/dist/composition/format.d.ts +15 -0
- package/dist/composition/format.js +109 -0
- package/dist/composition/index.d.ts +20 -0
- package/dist/composition/index.js +14 -0
- package/dist/composition/parse.d.ts +56 -0
- package/dist/composition/parse.js +474 -0
- package/dist/constants.d.ts +29 -0
- package/dist/constants.js +99 -0
- package/dist/controls.d.ts +14 -0
- package/dist/controls.js +30 -0
- package/dist/convex-hull/ConvexHull.svelte +157 -0
- package/dist/convex-hull/ConvexHull.svelte.d.ts +13 -0
- package/dist/convex-hull/ConvexHull2D.svelte +825 -0
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +11 -0
- package/dist/convex-hull/ConvexHull3D.svelte +1801 -0
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +8 -0
- package/dist/convex-hull/ConvexHull4D.svelte +1398 -0
- package/dist/convex-hull/ConvexHull4D.svelte.d.ts +8 -0
- package/dist/convex-hull/ConvexHullControls.svelte +535 -0
- package/dist/convex-hull/ConvexHullControls.svelte.d.ts +48 -0
- package/dist/convex-hull/ConvexHullInfoPane.svelte +125 -0
- package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +20 -0
- package/dist/convex-hull/ConvexHullStats.svelte +929 -0
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +17 -0
- package/dist/convex-hull/ConvexHullTooltip.svelte +131 -0
- package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +33 -0
- package/dist/convex-hull/GasPressureControls.svelte +247 -0
- package/dist/convex-hull/GasPressureControls.svelte.d.ts +11 -0
- package/dist/convex-hull/StructurePopup.svelte +151 -0
- package/dist/convex-hull/StructurePopup.svelte.d.ts +18 -0
- package/dist/convex-hull/TemperatureSlider.svelte.d.ts +8 -0
- package/dist/convex-hull/barycentric-coords.d.ts +18 -0
- package/dist/convex-hull/barycentric-coords.js +182 -0
- package/dist/convex-hull/demo-temperature.d.ts +6 -0
- package/dist/convex-hull/demo-temperature.js +40 -0
- package/dist/convex-hull/gas-thermodynamics.d.ts +16 -0
- package/dist/convex-hull/gas-thermodynamics.js +314 -0
- package/dist/convex-hull/helpers.d.ts +114 -0
- package/dist/convex-hull/helpers.js +710 -0
- package/dist/convex-hull/index.d.ts +119 -0
- package/dist/convex-hull/index.js +58 -0
- package/dist/convex-hull/thermodynamics.d.ts +67 -0
- package/dist/convex-hull/thermodynamics.js +1752 -0
- package/dist/convex-hull/types.d.ts +162 -0
- package/dist/convex-hull/types.js +36 -0
- package/dist/coordination/CoordinationBarPlot.svelte +311 -0
- package/dist/coordination/CoordinationBarPlot.svelte.d.ts +30 -0
- package/dist/coordination/calc-coordination.d.ts +15 -0
- package/dist/coordination/calc-coordination.js +63 -0
- package/dist/coordination/index.d.ts +8 -0
- package/dist/coordination/index.js +7 -0
- package/dist/effects.svelte.d.ts +12 -0
- package/dist/effects.svelte.js +37 -0
- package/dist/element/BohrAtom.svelte.d.ts +20 -0
- package/dist/element/ElementHeading.svelte +26 -0
- package/dist/element/ElementHeading.svelte.d.ts +8 -0
- package/dist/element/ElementPhoto.svelte +57 -0
- package/dist/element/ElementPhoto.svelte.d.ts +9 -0
- package/dist/element/ElementStats.svelte +80 -0
- package/dist/element/ElementStats.svelte.d.ts +8 -0
- package/dist/element/ElementTile.svelte +484 -0
- package/dist/element/ElementTile.svelte.d.ts +29 -0
- package/dist/element/Nucleus.svelte.d.ts +17 -0
- package/dist/element/data.d.ts +2 -0
- package/dist/element/data.js +2 -0
- package/dist/element/index.d.ts +8 -0
- package/dist/element/index.js +7 -0
- package/dist/element/types.d.ts +57 -0
- package/dist/element/types.js +1 -0
- package/dist/feedback/ClickFeedback.svelte +58 -0
- package/dist/feedback/ClickFeedback.svelte.d.ts +12 -0
- package/dist/feedback/DragOverlay.svelte +42 -0
- package/dist/feedback/DragOverlay.svelte.d.ts +7 -0
- package/dist/feedback/Spinner.svelte.d.ts +7 -0
- package/dist/feedback/StatusMessage.svelte.d.ts +9 -0
- package/dist/feedback/index.d.ts +4 -0
- package/dist/feedback/index.js +4 -0
- package/dist/fermi-surface/FermiSlice.svelte +189 -0
- package/dist/fermi-surface/FermiSlice.svelte.d.ts +24 -0
- package/dist/fermi-surface/FermiSurface.svelte +600 -0
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +83 -0
- package/dist/fermi-surface/FermiSurfaceControls.svelte +448 -0
- package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +35 -0
- package/dist/fermi-surface/FermiSurfaceScene.svelte +794 -0
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +50 -0
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +8 -0
- package/dist/fermi-surface/compute.d.ts +5 -0
- package/dist/fermi-surface/compute.js +538 -0
- package/dist/fermi-surface/constants.d.ts +9 -0
- package/dist/fermi-surface/constants.js +27 -0
- package/dist/fermi-surface/export.d.ts +5 -0
- package/dist/fermi-surface/export.js +50 -0
- package/dist/fermi-surface/index.d.ts +12 -0
- package/dist/fermi-surface/index.js +13 -0
- package/dist/fermi-surface/marching-cubes.d.ts +2 -0
- package/dist/fermi-surface/marching-cubes.js +2 -0
- package/dist/fermi-surface/parse.d.ts +2 -0
- package/dist/fermi-surface/parse.js +491 -0
- package/dist/fermi-surface/symmetry.d.ts +3 -0
- package/dist/fermi-surface/symmetry.js +46 -0
- package/dist/fermi-surface/types.d.ts +110 -0
- package/dist/fermi-surface/types.js +4 -0
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
- package/dist/heatmap-matrix/index.d.ts +53 -0
- package/dist/heatmap-matrix/index.js +100 -0
- package/dist/heatmap-matrix/shared.d.ts +2 -0
- package/dist/heatmap-matrix/shared.js +4 -0
- package/dist/icons.d.ts +569 -0
- package/dist/icons.js +648 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +39 -0
- package/dist/io/decompress.d.ts +11 -0
- package/dist/io/decompress.js +74 -0
- package/dist/io/export.d.ts +16 -0
- package/dist/io/export.js +316 -0
- package/dist/io/fetch.d.ts +5 -0
- package/dist/io/fetch.js +39 -0
- package/dist/io/file-drop.d.ts +7 -0
- package/dist/io/file-drop.js +43 -0
- package/dist/io/index.d.ts +7 -0
- package/dist/io/index.js +6 -0
- package/dist/io/is-binary.d.ts +1 -0
- package/dist/io/is-binary.js +20 -0
- package/dist/io/types.d.ts +8 -0
- package/dist/io/types.js +1 -0
- package/dist/io/url-drop.d.ts +2 -0
- package/dist/io/url-drop.js +123 -0
- package/dist/isosurface/Isosurface.svelte +285 -0
- package/dist/isosurface/Isosurface.svelte.d.ts +8 -0
- package/dist/isosurface/IsosurfaceControls.svelte +277 -0
- package/dist/isosurface/IsosurfaceControls.svelte.d.ts +9 -0
- package/dist/isosurface/index.d.ts +5 -0
- package/dist/isosurface/index.js +6 -0
- package/dist/isosurface/parse.d.ts +6 -0
- package/dist/isosurface/parse.js +553 -0
- package/dist/isosurface/slice.d.ts +11 -0
- package/dist/isosurface/slice.js +140 -0
- package/dist/isosurface/types.d.ts +56 -0
- package/dist/isosurface/types.js +227 -0
- package/dist/labels.d.ts +53 -0
- package/dist/labels.js +277 -0
- package/dist/layout/FullscreenToggle.svelte +50 -0
- package/dist/layout/FullscreenToggle.svelte.d.ts +7 -0
- package/dist/layout/InfoCard.svelte +120 -0
- package/dist/layout/InfoCard.svelte.d.ts +21 -0
- package/dist/layout/InfoTag.svelte +185 -0
- package/dist/layout/InfoTag.svelte.d.ts +19 -0
- package/dist/layout/PropertyFilter.svelte +246 -0
- package/dist/layout/PropertyFilter.svelte.d.ts +24 -0
- package/dist/layout/SettingsSection.svelte +148 -0
- package/dist/layout/SettingsSection.svelte.d.ts +17 -0
- package/dist/layout/SubpageGrid.svelte +82 -0
- package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
- package/dist/layout/fullscreen.d.ts +9 -0
- package/dist/layout/fullscreen.js +53 -0
- package/dist/layout/index.d.ts +10 -0
- package/dist/layout/index.js +8 -0
- package/dist/layout/json-tree/JsonNode.svelte +548 -0
- package/dist/layout/json-tree/JsonNode.svelte.d.ts +11 -0
- package/dist/layout/json-tree/JsonTree.svelte +1230 -0
- package/dist/layout/json-tree/JsonTree.svelte.d.ts +6 -0
- package/dist/layout/json-tree/JsonValue.svelte.d.ts +9 -0
- package/dist/layout/json-tree/index.d.ts +3 -0
- package/dist/layout/json-tree/index.js +3 -0
- package/dist/layout/json-tree/types.d.ts +74 -0
- package/dist/layout/json-tree/types.js +2 -0
- package/dist/layout/json-tree/utils.d.ts +29 -0
- package/dist/layout/json-tree/utils.js +641 -0
- package/dist/marching-cubes.d.ts +14 -0
- package/dist/marching-cubes.js +540 -0
- package/dist/math.d.ts +101 -0
- package/dist/math.js +905 -0
- package/dist/overlays/ContextMenu.svelte +162 -0
- package/dist/overlays/ContextMenu.svelte.d.ts +25 -0
- package/dist/overlays/CopyButton.svelte +45 -0
- package/dist/overlays/CopyButton.svelte.d.ts +8 -0
- package/dist/overlays/DragControlTab.svelte +98 -0
- package/dist/overlays/DragControlTab.svelte.d.ts +8 -0
- package/dist/overlays/DraggablePane.svelte +487 -0
- package/dist/overlays/DraggablePane.svelte.d.ts +36 -0
- package/dist/overlays/InfoPaneCards.svelte +149 -0
- package/dist/overlays/InfoPaneCards.svelte.d.ts +22 -0
- package/dist/overlays/index.d.ts +3 -0
- package/dist/overlays/index.js +3 -0
- package/dist/periodic-table/PeriodicTable.svelte +469 -0
- package/dist/periodic-table/PeriodicTable.svelte.d.ts +55 -0
- package/dist/periodic-table/PeriodicTableControls.svelte +557 -0
- package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +24 -0
- package/dist/periodic-table/PropertySelect.svelte +37 -0
- package/dist/periodic-table/PropertySelect.svelte.d.ts +13 -0
- package/dist/periodic-table/TableInset.svelte.d.ts +9 -0
- package/dist/periodic-table/index.d.ts +10 -0
- package/dist/periodic-table/index.js +4 -0
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +44 -0
- package/dist/phase-diagram/PhaseDiagramControls.svelte +444 -0
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +30 -0
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +19 -0
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +16 -0
- package/dist/phase-diagram/TdbInfoPanel.svelte +203 -0
- package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +12 -0
- package/dist/phase-diagram/build-diagram.d.ts +11 -0
- package/dist/phase-diagram/build-diagram.js +160 -0
- package/dist/phase-diagram/colors.d.ts +35 -0
- package/dist/phase-diagram/colors.js +51 -0
- package/dist/phase-diagram/diagram-input.d.ts +29 -0
- package/dist/phase-diagram/diagram-input.js +3 -0
- package/dist/phase-diagram/index.d.ts +13 -0
- package/dist/phase-diagram/index.js +11 -0
- package/dist/phase-diagram/parse.d.ts +55 -0
- package/dist/phase-diagram/parse.js +272 -0
- package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
- package/dist/phase-diagram/svg-to-diagram.js +867 -0
- package/dist/phase-diagram/types.d.ts +93 -0
- package/dist/phase-diagram/types.js +1 -0
- package/dist/phase-diagram/utils.d.ts +118 -0
- package/dist/phase-diagram/utils.js +604 -0
- package/dist/plot/AxisLabel.svelte +51 -0
- package/dist/plot/AxisLabel.svelte.d.ts +16 -0
- package/dist/plot/BarPlot.svelte +2113 -0
- package/dist/plot/BarPlot.svelte.d.ts +84 -0
- package/dist/plot/BarPlotControls.svelte +66 -0
- package/dist/plot/BarPlotControls.svelte.d.ts +18 -0
- package/dist/plot/BinnedScatterPlot.svelte +1114 -0
- package/dist/plot/BinnedScatterPlot.svelte.d.ts +66 -0
- package/dist/plot/ColorBar.svelte +721 -0
- package/dist/plot/ColorBar.svelte.d.ts +31 -0
- package/dist/plot/ColorScaleSelect.svelte +54 -0
- package/dist/plot/ColorScaleSelect.svelte.d.ts +15 -0
- package/dist/plot/ElementScatter.svelte +63 -0
- package/dist/plot/ElementScatter.svelte.d.ts +14 -0
- package/dist/plot/FillArea.svelte.d.ts +21 -0
- package/dist/plot/Histogram.svelte +1558 -0
- package/dist/plot/Histogram.svelte.d.ts +50 -0
- package/dist/plot/HistogramControls.svelte +212 -0
- package/dist/plot/HistogramControls.svelte.d.ts +22 -0
- package/dist/plot/InteractiveAxisLabel.svelte +96 -0
- package/dist/plot/InteractiveAxisLabel.svelte.d.ts +14 -0
- package/dist/plot/Line.svelte +84 -0
- package/dist/plot/Line.svelte.d.ts +15 -0
- package/dist/plot/PlotAxis.svelte +169 -0
- package/dist/plot/PlotAxis.svelte.d.ts +24 -0
- package/dist/plot/PlotControls.svelte +537 -0
- package/dist/plot/PlotControls.svelte.d.ts +4 -0
- package/dist/plot/PlotLegend.svelte +569 -0
- package/dist/plot/PlotLegend.svelte.d.ts +29 -0
- package/dist/plot/PlotTooltip.svelte +67 -0
- package/dist/plot/PlotTooltip.svelte.d.ts +17 -0
- package/dist/plot/PortalSelect.svelte +253 -0
- package/dist/plot/PortalSelect.svelte.d.ts +16 -0
- package/dist/plot/ReferenceLine.svelte.d.ts +20 -0
- package/dist/plot/ReferenceLine3D.svelte +156 -0
- package/dist/plot/ReferenceLine3D.svelte.d.ts +14 -0
- package/dist/plot/ReferencePlane.svelte +175 -0
- package/dist/plot/ReferencePlane.svelte.d.ts +14 -0
- package/dist/plot/ScatterPlot.svelte +2778 -0
- package/dist/plot/ScatterPlot.svelte.d.ts +96 -0
- package/dist/plot/ScatterPlot3D.svelte +529 -0
- package/dist/plot/ScatterPlot3D.svelte.d.ts +95 -0
- package/dist/plot/ScatterPlot3DControls.svelte +437 -0
- package/dist/plot/ScatterPlot3DControls.svelte.d.ts +20 -0
- package/dist/plot/ScatterPlot3DScene.svelte +912 -0
- package/dist/plot/ScatterPlot3DScene.svelte.d.ts +74 -0
- package/dist/plot/ScatterPlotControls.svelte +306 -0
- package/dist/plot/ScatterPlotControls.svelte.d.ts +17 -0
- package/dist/plot/ScatterPoint.svelte +182 -0
- package/dist/plot/ScatterPoint.svelte.d.ts +22 -0
- package/dist/plot/SpacegroupBarPlot.svelte +293 -0
- package/dist/plot/SpacegroupBarPlot.svelte.d.ts +9 -0
- package/dist/plot/Surface3D.svelte +197 -0
- package/dist/plot/Surface3D.svelte.d.ts +13 -0
- package/dist/plot/ZeroLines.svelte +97 -0
- package/dist/plot/ZeroLines.svelte.d.ts +33 -0
- package/dist/plot/ZoomRect.svelte +23 -0
- package/dist/plot/ZoomRect.svelte.d.ts +8 -0
- package/dist/plot/adaptive-density.d.ts +69 -0
- package/dist/plot/adaptive-density.js +191 -0
- package/dist/plot/auto-place.d.ts +43 -0
- package/dist/plot/auto-place.js +122 -0
- package/dist/plot/axis-utils.d.ts +19 -0
- package/dist/plot/axis-utils.js +78 -0
- package/dist/plot/binned-scatter-types.d.ts +59 -0
- package/dist/plot/binned-scatter-types.js +1 -0
- package/dist/plot/data-cleaning.d.ts +37 -0
- package/dist/plot/data-cleaning.js +855 -0
- package/dist/plot/data-transform.d.ts +16 -0
- package/dist/plot/data-transform.js +45 -0
- package/dist/plot/defaults.d.ts +19 -0
- package/dist/plot/defaults.js +9 -0
- package/dist/plot/fill-utils.d.ts +46 -0
- package/dist/plot/fill-utils.js +322 -0
- package/dist/plot/hover-lock.svelte.d.ts +14 -0
- package/dist/plot/hover-lock.svelte.js +46 -0
- package/dist/plot/index.d.ts +41 -0
- package/dist/plot/index.js +39 -0
- package/dist/plot/interactions.d.ts +12 -0
- package/dist/plot/interactions.js +101 -0
- package/dist/plot/layout.d.ts +78 -0
- package/dist/plot/layout.js +273 -0
- package/dist/plot/reference-line.d.ts +60 -0
- package/dist/plot/reference-line.js +314 -0
- package/dist/plot/scales.d.ts +48 -0
- package/dist/plot/scales.js +481 -0
- package/dist/plot/svg.d.ts +1 -0
- package/dist/plot/svg.js +11 -0
- package/dist/plot/types.d.ts +831 -0
- package/dist/plot/types.js +99 -0
- package/dist/plot/utils/label-placement.d.ts +68 -0
- package/dist/plot/utils/label-placement.js +326 -0
- package/dist/plot/utils/series-visibility.d.ts +15 -0
- package/dist/plot/utils/series-visibility.js +85 -0
- package/dist/plot/utils.d.ts +1 -0
- package/dist/plot/utils.js +14 -0
- package/dist/rdf/RdfPlot.svelte +247 -0
- package/dist/rdf/RdfPlot.svelte.d.ts +27 -0
- package/dist/rdf/calc-rdf.d.ts +4 -0
- package/dist/rdf/calc-rdf.js +111 -0
- package/dist/rdf/index.d.ts +23 -0
- package/dist/rdf/index.js +2 -0
- package/dist/sanitize.d.ts +6 -0
- package/dist/sanitize.js +116 -0
- package/dist/settings.d.ts +255 -0
- package/dist/settings.js +1132 -0
- package/dist/spectral/Bands.svelte +1040 -0
- package/dist/spectral/Bands.svelte.d.ts +40 -0
- package/dist/spectral/BandsAndDos.svelte +134 -0
- package/dist/spectral/BandsAndDos.svelte.d.ts +18 -0
- package/dist/spectral/BrillouinBandsDos.svelte +252 -0
- package/dist/spectral/BrillouinBandsDos.svelte.d.ts +20 -0
- package/dist/spectral/Dos.svelte +697 -0
- package/dist/spectral/Dos.svelte.d.ts +29 -0
- package/dist/spectral/helpers.d.ts +119 -0
- package/dist/spectral/helpers.js +1032 -0
- package/dist/spectral/index.d.ts +6 -0
- package/dist/spectral/index.js +6 -0
- package/dist/spectral/types.d.ts +84 -0
- package/dist/spectral/types.js +2 -0
- package/dist/state.svelte.d.ts +25 -0
- package/dist/state.svelte.js +45 -0
- package/dist/structure/Arrow.svelte +72 -0
- package/dist/structure/Arrow.svelte.d.ts +15 -0
- package/dist/structure/AtomLegend.svelte +815 -0
- package/dist/structure/AtomLegend.svelte.d.ts +35 -0
- package/dist/structure/Bond.svelte +140 -0
- package/dist/structure/Bond.svelte.d.ts +9 -0
- package/dist/structure/CanvasTooltip.svelte +33 -0
- package/dist/structure/CanvasTooltip.svelte.d.ts +12 -0
- package/dist/structure/CellSelect.svelte +349 -0
- package/dist/structure/CellSelect.svelte.d.ts +13 -0
- package/dist/structure/Cylinder.svelte +45 -0
- package/dist/structure/Cylinder.svelte.d.ts +10 -0
- package/dist/structure/Lattice.svelte +196 -0
- package/dist/structure/Lattice.svelte.d.ts +17 -0
- package/dist/structure/Structure.svelte +2248 -0
- package/dist/structure/Structure.svelte.d.ts +89 -0
- package/dist/structure/StructureControls.svelte +1273 -0
- package/dist/structure/StructureControls.svelte.d.ts +31 -0
- package/dist/structure/StructureExportPane.svelte +252 -0
- package/dist/structure/StructureExportPane.svelte.d.ts +17 -0
- package/dist/structure/StructureInfoPane.svelte +737 -0
- package/dist/structure/StructureInfoPane.svelte.d.ts +19 -0
- package/dist/structure/StructureScene.svelte +2255 -0
- package/dist/structure/StructureScene.svelte.d.ts +111 -0
- package/dist/structure/atom-properties.d.ts +37 -0
- package/dist/structure/atom-properties.js +200 -0
- package/dist/structure/bond-order-perception.d.ts +13 -0
- package/dist/structure/bond-order-perception.js +384 -0
- package/dist/structure/bonding.d.ts +68 -0
- package/dist/structure/bonding.js +696 -0
- package/dist/structure/export.d.ts +20 -0
- package/dist/structure/export.js +727 -0
- package/dist/structure/index.d.ts +126 -0
- package/dist/structure/index.js +169 -0
- package/dist/structure/label-placement.d.ts +14 -0
- package/dist/structure/label-placement.js +72 -0
- package/dist/structure/measure.d.ts +6 -0
- package/dist/structure/measure.js +29 -0
- package/dist/structure/parse.d.ts +66 -0
- package/dist/structure/parse.js +1392 -0
- package/dist/structure/partial-occupancy.d.ts +25 -0
- package/dist/structure/partial-occupancy.js +99 -0
- package/dist/structure/pbc.d.ts +9 -0
- package/dist/structure/pbc.js +123 -0
- package/dist/structure/supercell.d.ts +8 -0
- package/dist/structure/supercell.js +170 -0
- package/dist/structure/validation.d.ts +2 -0
- package/dist/structure/validation.js +10 -0
- package/dist/symmetry/SymmetryStats.svelte +226 -0
- package/dist/symmetry/SymmetryStats.svelte.d.ts +21 -0
- package/dist/symmetry/WyckoffTable.svelte +120 -0
- package/dist/symmetry/WyckoffTable.svelte.d.ts +11 -0
- package/dist/symmetry/cell-transform.d.ts +12 -0
- package/dist/symmetry/cell-transform.js +91 -0
- package/dist/symmetry/index.d.ts +43 -0
- package/dist/symmetry/index.js +228 -0
- package/dist/symmetry/spacegroups.d.ts +9 -0
- package/dist/symmetry/spacegroups.js +394 -0
- package/dist/table/HeatmapTable.svelte +1833 -0
- package/dist/table/HeatmapTable.svelte.d.ts +49 -0
- package/dist/table/ToggleMenu.svelte +385 -0
- package/dist/table/ToggleMenu.svelte.d.ts +11 -0
- package/dist/table/index.d.ts +74 -0
- package/dist/table/index.js +38 -0
- package/dist/theme/ThemeControl.svelte +53 -0
- package/dist/theme/ThemeControl.svelte.d.ts +9 -0
- package/dist/theme/index.d.ts +29 -0
- package/dist/theme/index.js +79 -0
- package/dist/time.d.ts +4 -0
- package/dist/time.js +70 -0
- package/dist/tooltip/TooltipContent.svelte +58 -0
- package/dist/tooltip/TooltipContent.svelte.d.ts +31 -0
- package/dist/tooltip/index.d.ts +2 -0
- package/dist/tooltip/index.js +1 -0
- package/dist/tooltip/types.d.ts +8 -0
- package/dist/tooltip/types.js +1 -0
- package/dist/trajectory/Trajectory.svelte +1545 -0
- package/dist/trajectory/Trajectory.svelte.d.ts +77 -0
- package/dist/trajectory/TrajectoryError.svelte +128 -0
- package/dist/trajectory/TrajectoryError.svelte.d.ts +13 -0
- package/dist/trajectory/TrajectoryExportPane.svelte +357 -0
- package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +17 -0
- package/dist/trajectory/TrajectoryInfoPane.svelte +313 -0
- package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +17 -0
- package/dist/trajectory/constants.d.ts +6 -0
- package/dist/trajectory/constants.js +7 -0
- package/dist/trajectory/extract.d.ts +5 -0
- package/dist/trajectory/extract.js +162 -0
- package/dist/trajectory/format-detect.d.ts +9 -0
- package/dist/trajectory/format-detect.js +76 -0
- package/dist/trajectory/frame-reader.d.ts +17 -0
- package/dist/trajectory/frame-reader.js +332 -0
- package/dist/trajectory/helpers.d.ts +15 -0
- package/dist/trajectory/helpers.js +164 -0
- package/dist/trajectory/index.d.ts +63 -0
- package/dist/trajectory/index.js +126 -0
- package/dist/trajectory/parse/ase.d.ts +2 -0
- package/dist/trajectory/parse/ase.js +73 -0
- package/dist/trajectory/parse/hdf5.d.ts +2 -0
- package/dist/trajectory/parse/hdf5.js +127 -0
- package/dist/trajectory/parse/index.d.ts +12 -0
- package/dist/trajectory/parse/index.js +298 -0
- package/dist/trajectory/parse/lammps.d.ts +5 -0
- package/dist/trajectory/parse/lammps.js +179 -0
- package/dist/trajectory/parse/vasp.d.ts +2 -0
- package/dist/trajectory/parse/vasp.js +68 -0
- package/dist/trajectory/parse/xyz.d.ts +2 -0
- package/dist/trajectory/parse/xyz.js +110 -0
- package/dist/trajectory/plotting.d.ts +28 -0
- package/dist/trajectory/plotting.js +423 -0
- package/dist/trajectory/types.d.ts +11 -0
- package/dist/trajectory/types.js +1 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.js +45 -0
- package/dist/xrd/XrdPlot.svelte +615 -0
- package/dist/xrd/XrdPlot.svelte.d.ts +28 -0
- package/dist/xrd/broadening.d.ts +20 -0
- package/dist/xrd/broadening.js +97 -0
- package/dist/xrd/calc-xrd.d.ts +37 -0
- package/dist/xrd/calc-xrd.js +336 -0
- package/dist/xrd/index.d.ts +37 -0
- package/dist/xrd/index.js +4 -0
- package/dist/xrd/parse.d.ts +13 -0
- package/dist/xrd/parse.js +749 -0
- package/license +1 -1
- package/package.json +232 -1457
- package/readme.md +98 -171
- package/.vscode/launch.json +0 -13
- package/.vscodeignore +0 -7
- package/dist/assets/STLExporter-BpTH3YHE.js +0 -8
- package/dist/assets/browser-DdDecX_W.js +0 -1
- package/dist/assets/export-qgn-H9y6.js +0 -2
- package/dist/assets/main-DiKYzti2.css +0 -1
- package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
- package/dist/extension.js +0 -31293
- package/dist/src/lib/FilePicker.svelte +0 -360
- package/dist/src/lib/MillerIndexInput.svelte +0 -66
- package/dist/src/lib/api/mp.ts +0 -26
- package/dist/src/lib/api/optimade.ts +0 -204
- package/dist/src/lib/brillouin/BrillouinZone.svelte +0 -549
- package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +0 -144
- package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +0 -146
- package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +0 -146
- package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +0 -476
- package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +0 -92
- package/dist/src/lib/brillouin/compute.ts +0 -529
- package/dist/src/lib/brillouin/index.ts +0 -8
- package/dist/src/lib/brillouin/types.ts +0 -51
- package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +0 -327
- package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +0 -846
- package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +0 -3193
- package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +0 -94
- package/dist/src/lib/chempot-diagram/chempot-worker.ts +0 -11
- package/dist/src/lib/chempot-diagram/color.ts +0 -42
- package/dist/src/lib/chempot-diagram/compute.ts +0 -1014
- package/dist/src/lib/chempot-diagram/index.ts +0 -6
- package/dist/src/lib/chempot-diagram/pointer.ts +0 -56
- package/dist/src/lib/chempot-diagram/temperature.ts +0 -77
- package/dist/src/lib/chempot-diagram/types.ts +0 -130
- package/dist/src/lib/colors/index.ts +0 -249
- package/dist/src/lib/composition/BarChart.svelte +0 -297
- package/dist/src/lib/composition/BubbleChart.svelte +0 -218
- package/dist/src/lib/composition/Composition.svelte +0 -165
- package/dist/src/lib/composition/Formula.svelte +0 -268
- package/dist/src/lib/composition/FormulaFilter.svelte +0 -1257
- package/dist/src/lib/composition/PieChart.svelte +0 -323
- package/dist/src/lib/composition/format.ts +0 -155
- package/dist/src/lib/composition/index.ts +0 -37
- package/dist/src/lib/composition/parse.ts +0 -605
- package/dist/src/lib/constants.ts +0 -134
- package/dist/src/lib/controls.ts +0 -42
- package/dist/src/lib/convex-hull/ConvexHull.svelte +0 -157
- package/dist/src/lib/convex-hull/ConvexHull2D.svelte +0 -825
- package/dist/src/lib/convex-hull/ConvexHull3D.svelte +0 -1801
- package/dist/src/lib/convex-hull/ConvexHull4D.svelte +0 -1398
- package/dist/src/lib/convex-hull/ConvexHullControls.svelte +0 -535
- package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +0 -125
- package/dist/src/lib/convex-hull/ConvexHullStats.svelte +0 -929
- package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +0 -131
- package/dist/src/lib/convex-hull/GasPressureControls.svelte +0 -247
- package/dist/src/lib/convex-hull/StructurePopup.svelte +0 -151
- package/dist/src/lib/convex-hull/barycentric-coords.ts +0 -246
- package/dist/src/lib/convex-hull/demo-temperature.ts +0 -63
- package/dist/src/lib/convex-hull/gas-thermodynamics.ts +0 -405
- package/dist/src/lib/convex-hull/helpers.ts +0 -932
- package/dist/src/lib/convex-hull/index.ts +0 -202
- package/dist/src/lib/convex-hull/thermodynamics.ts +0 -2192
- package/dist/src/lib/convex-hull/types.ts +0 -267
- package/dist/src/lib/coordination/CoordinationBarPlot.svelte +0 -311
- package/dist/src/lib/coordination/calc-coordination.ts +0 -93
- package/dist/src/lib/coordination/index.ts +0 -9
- package/dist/src/lib/effects.svelte.ts +0 -48
- package/dist/src/lib/element/ElementHeading.svelte +0 -26
- package/dist/src/lib/element/ElementPhoto.svelte +0 -57
- package/dist/src/lib/element/ElementStats.svelte +0 -80
- package/dist/src/lib/element/ElementTile.svelte +0 -484
- package/dist/src/lib/element/data.ts +0 -14
- package/dist/src/lib/element/index.ts +0 -8
- package/dist/src/lib/element/types.ts +0 -62
- package/dist/src/lib/feedback/ClickFeedback.svelte +0 -58
- package/dist/src/lib/feedback/DragOverlay.svelte +0 -42
- package/dist/src/lib/feedback/index.ts +0 -4
- package/dist/src/lib/fermi-surface/FermiSlice.svelte +0 -189
- package/dist/src/lib/fermi-surface/FermiSurface.svelte +0 -600
- package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +0 -448
- package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +0 -794
- package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
- package/dist/src/lib/fermi-surface/compute.ts +0 -728
- package/dist/src/lib/fermi-surface/constants.ts +0 -32
- package/dist/src/lib/fermi-surface/export.ts +0 -64
- package/dist/src/lib/fermi-surface/index.ts +0 -14
- package/dist/src/lib/fermi-surface/marching-cubes.ts +0 -3
- package/dist/src/lib/fermi-surface/parse.ts +0 -574
- package/dist/src/lib/fermi-surface/symmetry.ts +0 -56
- package/dist/src/lib/fermi-surface/types.ts +0 -159
- package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +0 -1545
- package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
- package/dist/src/lib/heatmap-matrix/index.ts +0 -167
- package/dist/src/lib/heatmap-matrix/shared.ts +0 -7
- package/dist/src/lib/icons.ts +0 -650
- package/dist/src/lib/index.ts +0 -61
- package/dist/src/lib/io/decompress.ts +0 -92
- package/dist/src/lib/io/export.ts +0 -385
- package/dist/src/lib/io/fetch.ts +0 -46
- package/dist/src/lib/io/file-drop.ts +0 -51
- package/dist/src/lib/io/index.ts +0 -7
- package/dist/src/lib/io/is-binary.ts +0 -24
- package/dist/src/lib/io/types.ts +0 -8
- package/dist/src/lib/io/url-drop.ts +0 -141
- package/dist/src/lib/isosurface/Isosurface.svelte +0 -285
- package/dist/src/lib/isosurface/IsosurfaceControls.svelte +0 -277
- package/dist/src/lib/isosurface/index.ts +0 -7
- package/dist/src/lib/isosurface/parse.ts +0 -656
- package/dist/src/lib/isosurface/slice.ts +0 -175
- package/dist/src/lib/isosurface/types.ts +0 -309
- package/dist/src/lib/labels.ts +0 -320
- package/dist/src/lib/layout/FullscreenToggle.svelte +0 -50
- package/dist/src/lib/layout/InfoCard.svelte +0 -120
- package/dist/src/lib/layout/InfoTag.svelte +0 -185
- package/dist/src/lib/layout/PropertyFilter.svelte +0 -246
- package/dist/src/lib/layout/SettingsSection.svelte +0 -148
- package/dist/src/lib/layout/SubpageGrid.svelte +0 -82
- package/dist/src/lib/layout/fullscreen.ts +0 -65
- package/dist/src/lib/layout/index.ts +0 -11
- package/dist/src/lib/layout/json-tree/JsonNode.svelte +0 -548
- package/dist/src/lib/layout/json-tree/JsonTree.svelte +0 -1230
- package/dist/src/lib/layout/json-tree/index.ts +0 -3
- package/dist/src/lib/layout/json-tree/types.ts +0 -126
- package/dist/src/lib/layout/json-tree/utils.ts +0 -682
- package/dist/src/lib/marching-cubes.ts +0 -614
- package/dist/src/lib/math.ts +0 -1081
- package/dist/src/lib/overlays/ContextMenu.svelte +0 -162
- package/dist/src/lib/overlays/CopyButton.svelte +0 -45
- package/dist/src/lib/overlays/DragControlTab.svelte +0 -98
- package/dist/src/lib/overlays/DraggablePane.svelte +0 -487
- package/dist/src/lib/overlays/InfoPaneCards.svelte +0 -149
- package/dist/src/lib/overlays/index.ts +0 -3
- package/dist/src/lib/periodic-table/PeriodicTable.svelte +0 -469
- package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +0 -557
- package/dist/src/lib/periodic-table/PropertySelect.svelte +0 -37
- package/dist/src/lib/periodic-table/index.ts +0 -12
- package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
- package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +0 -444
- package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
- package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +0 -184
- package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +0 -391
- package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +0 -203
- package/dist/src/lib/phase-diagram/build-diagram.ts +0 -186
- package/dist/src/lib/phase-diagram/colors.ts +0 -58
- package/dist/src/lib/phase-diagram/diagram-input.ts +0 -40
- package/dist/src/lib/phase-diagram/index.ts +0 -13
- package/dist/src/lib/phase-diagram/parse.ts +0 -348
- package/dist/src/lib/phase-diagram/svg-to-diagram.ts +0 -1023
- package/dist/src/lib/phase-diagram/types.ts +0 -144
- package/dist/src/lib/phase-diagram/utils.ts +0 -775
- package/dist/src/lib/plot/AxisLabel.svelte +0 -51
- package/dist/src/lib/plot/BarPlot.svelte +0 -2113
- package/dist/src/lib/plot/BarPlotControls.svelte +0 -66
- package/dist/src/lib/plot/BinnedScatterPlot.svelte +0 -1114
- package/dist/src/lib/plot/ColorBar.svelte +0 -721
- package/dist/src/lib/plot/ColorScaleSelect.svelte +0 -54
- package/dist/src/lib/plot/ElementScatter.svelte +0 -63
- package/dist/src/lib/plot/Histogram.svelte +0 -1558
- package/dist/src/lib/plot/HistogramControls.svelte +0 -212
- package/dist/src/lib/plot/InteractiveAxisLabel.svelte +0 -96
- package/dist/src/lib/plot/Line.svelte +0 -84
- package/dist/src/lib/plot/PlotAxis.svelte +0 -169
- package/dist/src/lib/plot/PlotControls.svelte +0 -537
- package/dist/src/lib/plot/PlotLegend.svelte +0 -569
- package/dist/src/lib/plot/PlotTooltip.svelte +0 -67
- package/dist/src/lib/plot/PortalSelect.svelte +0 -253
- package/dist/src/lib/plot/ReferenceLine3D.svelte +0 -156
- package/dist/src/lib/plot/ReferencePlane.svelte +0 -175
- package/dist/src/lib/plot/ScatterPlot.svelte +0 -2778
- package/dist/src/lib/plot/ScatterPlot3D.svelte +0 -529
- package/dist/src/lib/plot/ScatterPlot3DControls.svelte +0 -437
- package/dist/src/lib/plot/ScatterPlot3DScene.svelte +0 -912
- package/dist/src/lib/plot/ScatterPlotControls.svelte +0 -306
- package/dist/src/lib/plot/ScatterPoint.svelte +0 -182
- package/dist/src/lib/plot/SpacegroupBarPlot.svelte +0 -293
- package/dist/src/lib/plot/Surface3D.svelte +0 -197
- package/dist/src/lib/plot/ZeroLines.svelte +0 -97
- package/dist/src/lib/plot/ZoomRect.svelte +0 -23
- package/dist/src/lib/plot/adaptive-density.ts +0 -316
- package/dist/src/lib/plot/auto-place.ts +0 -184
- package/dist/src/lib/plot/axis-utils.ts +0 -122
- package/dist/src/lib/plot/binned-scatter-types.ts +0 -83
- package/dist/src/lib/plot/data-cleaning.ts +0 -1069
- package/dist/src/lib/plot/data-transform.ts +0 -69
- package/dist/src/lib/plot/defaults.ts +0 -9
- package/dist/src/lib/plot/fill-utils.ts +0 -494
- package/dist/src/lib/plot/hover-lock.svelte.ts +0 -60
- package/dist/src/lib/plot/index.ts +0 -53
- package/dist/src/lib/plot/interactions.ts +0 -119
- package/dist/src/lib/plot/layout.ts +0 -425
- package/dist/src/lib/plot/reference-line.ts +0 -426
- package/dist/src/lib/plot/scales.ts +0 -654
- package/dist/src/lib/plot/svg.ts +0 -23
- package/dist/src/lib/plot/types.ts +0 -1144
- package/dist/src/lib/plot/utils/label-placement.ts +0 -541
- package/dist/src/lib/plot/utils/series-visibility.ts +0 -140
- package/dist/src/lib/plot/utils.ts +0 -11
- package/dist/src/lib/rdf/RdfPlot.svelte +0 -247
- package/dist/src/lib/rdf/calc-rdf.ts +0 -167
- package/dist/src/lib/rdf/index.ts +0 -27
- package/dist/src/lib/sanitize.ts +0 -126
- package/dist/src/lib/settings.ts +0 -1479
- package/dist/src/lib/spectral/Bands.svelte +0 -1040
- package/dist/src/lib/spectral/BandsAndDos.svelte +0 -134
- package/dist/src/lib/spectral/BrillouinBandsDos.svelte +0 -252
- package/dist/src/lib/spectral/Dos.svelte +0 -697
- package/dist/src/lib/spectral/helpers.ts +0 -1381
- package/dist/src/lib/spectral/index.ts +0 -8
- package/dist/src/lib/spectral/types.ts +0 -112
- package/dist/src/lib/state.svelte.ts +0 -64
- package/dist/src/lib/structure/Arrow.svelte +0 -72
- package/dist/src/lib/structure/AtomLegend.svelte +0 -815
- package/dist/src/lib/structure/Bond.svelte +0 -140
- package/dist/src/lib/structure/CanvasTooltip.svelte +0 -33
- package/dist/src/lib/structure/CellSelect.svelte +0 -349
- package/dist/src/lib/structure/Cylinder.svelte +0 -45
- package/dist/src/lib/structure/Lattice.svelte +0 -196
- package/dist/src/lib/structure/Structure.svelte +0 -2248
- package/dist/src/lib/structure/StructureControls.svelte +0 -1273
- package/dist/src/lib/structure/StructureExportPane.svelte +0 -252
- package/dist/src/lib/structure/StructureInfoPane.svelte +0 -737
- package/dist/src/lib/structure/StructureScene.svelte +0 -2255
- package/dist/src/lib/structure/atom-properties.ts +0 -316
- package/dist/src/lib/structure/bond-order-perception.ts +0 -447
- package/dist/src/lib/structure/bonding.ts +0 -944
- package/dist/src/lib/structure/export.ts +0 -861
- package/dist/src/lib/structure/index.ts +0 -291
- package/dist/src/lib/structure/label-placement.ts +0 -130
- package/dist/src/lib/structure/measure.ts +0 -45
- package/dist/src/lib/structure/parse.ts +0 -1705
- package/dist/src/lib/structure/partial-occupancy.ts +0 -183
- package/dist/src/lib/structure/pbc.ts +0 -164
- package/dist/src/lib/structure/supercell.ts +0 -226
- package/dist/src/lib/structure/validation.ts +0 -11
- package/dist/src/lib/symmetry/SymmetryStats.svelte +0 -226
- package/dist/src/lib/symmetry/WyckoffTable.svelte +0 -120
- package/dist/src/lib/symmetry/cell-transform.ts +0 -118
- package/dist/src/lib/symmetry/index.ts +0 -348
- package/dist/src/lib/symmetry/spacegroups.ts +0 -404
- package/dist/src/lib/table/HeatmapTable.svelte +0 -1833
- package/dist/src/lib/table/ToggleMenu.svelte +0 -385
- package/dist/src/lib/table/index.ts +0 -139
- package/dist/src/lib/theme/ThemeControl.svelte +0 -53
- package/dist/src/lib/theme/index.ts +0 -107
- package/dist/src/lib/time.ts +0 -71
- package/dist/src/lib/tooltip/TooltipContent.svelte +0 -58
- package/dist/src/lib/tooltip/index.ts +0 -2
- package/dist/src/lib/tooltip/types.ts +0 -13
- package/dist/src/lib/trajectory/Trajectory.svelte +0 -1545
- package/dist/src/lib/trajectory/TrajectoryError.svelte +0 -128
- package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +0 -357
- package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +0 -313
- package/dist/src/lib/trajectory/constants.ts +0 -7
- package/dist/src/lib/trajectory/extract.ts +0 -196
- package/dist/src/lib/trajectory/format-detect.ts +0 -96
- package/dist/src/lib/trajectory/frame-reader.ts +0 -456
- package/dist/src/lib/trajectory/helpers.ts +0 -217
- package/dist/src/lib/trajectory/index.ts +0 -218
- package/dist/src/lib/trajectory/parse/ase.ts +0 -109
- package/dist/src/lib/trajectory/parse/hdf5.ts +0 -173
- package/dist/src/lib/trajectory/parse/index.ts +0 -411
- package/dist/src/lib/trajectory/parse/lammps.ts +0 -215
- package/dist/src/lib/trajectory/parse/vasp.ts +0 -102
- package/dist/src/lib/trajectory/parse/xyz.ts +0 -143
- package/dist/src/lib/trajectory/plotting.ts +0 -599
- package/dist/src/lib/trajectory/types.ts +0 -13
- package/dist/src/lib/utils.ts +0 -56
- package/dist/src/lib/xrd/XrdPlot.svelte +0 -615
- package/dist/src/lib/xrd/broadening.ts +0 -130
- package/dist/src/lib/xrd/calc-xrd.ts +0 -397
- package/dist/src/lib/xrd/index.ts +0 -38
- package/dist/src/lib/xrd/parse.ts +0 -858
- package/dist/webview.js +0 -29421
- package/icon.png +0 -0
- package/matterviz-0.3.2.vsix +0 -0
- package/matterviz-0.3.4.vsix +0 -0
- package/matterviz-0.3.5.vsix +0 -0
- package/scripts/sync-config.ts +0 -101
- package/src/declarations.d.ts +0 -2
- package/src/extension.ts +0 -972
- package/src/node-io.ts +0 -65
- package/src/types.ts +0 -17
- package/src/webview/JsonBrowser.svelte +0 -1079
- package/src/webview/PlotPanel.svelte +0 -346
- package/src/webview/detect.ts +0 -444
- package/src/webview/main.ts +0 -764
- package/src/webview/plot-utils.ts +0 -250
- package/test-fixtures/all-viz-types.json.gz +0 -0
- package/test-fixtures/plot-demo-data.json.gz +0 -0
- package/tests/detect.test.ts +0 -604
- package/tests/extension.test.ts +0 -2041
- package/tests/node-io.test.ts +0 -39
- package/tests/plot-utils.test.ts +0 -302
- package/tests/vite-plugin-json-gz.test.ts +0 -114
- package/tests/vscode-mock.ts +0 -18
- package/tests/webview.test.ts +0 -231
- package/tsconfig.json +0 -20
- package/vite-plugin-json-gz.ts +0 -29
- package/vite.config.ts +0 -34
- package/vite.extension.config.ts +0 -34
- /package/dist/{src/lib/EmptyState.svelte → EmptyState.svelte} +0 -0
- /package/dist/{src/lib/Icon.svelte → Icon.svelte} +0 -0
- /package/dist/{src/lib/app.css → app.css} +0 -0
- /package/dist/{src/lib/chempot-diagram → chempot-diagram}/ChemPotScene3D.svelte +0 -0
- /package/dist/{src/lib/colors → colors}/alloy-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/dark-mode-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/jmol-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/muted-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/pastel-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/vesta-colors.json +0 -0
- /package/dist/{src/lib/convex-hull → convex-hull}/TemperatureSlider.svelte +0 -0
- /package/dist/{src/lib/element → element}/BohrAtom.svelte +0 -0
- /package/dist/{src/lib/element → element}/Nucleus.svelte +0 -0
- /package/dist/{src/lib/element → element}/data.json +0 -0
- /package/dist/{src/lib/element → element}/data.json.gz +0 -0
- /package/dist/{src/lib/element → element}/data.json.gz.d.ts +0 -0
- /package/dist/{src/lib/element → element}/data.schema.json +0 -0
- /package/dist/{src/lib/element-image-urls.json → element-image-urls.json} +0 -0
- /package/dist/{src/lib/feedback → feedback}/Spinner.svelte +0 -0
- /package/dist/{src/lib/feedback → feedback}/StatusMessage.svelte +0 -0
- /package/dist/{src/lib/layout → layout}/json-tree/JsonValue.svelte +0 -0
- /package/dist/{src/lib/periodic-table → periodic-table}/TableInset.svelte +0 -0
- /package/dist/{src/lib/plot → plot}/FillArea.svelte +0 -0
- /package/dist/{src/lib/plot → plot}/ReferenceLine.svelte +0 -0
- /package/dist/{src/lib/theme → theme}/themes.mjs +0 -0
- /package/dist/{src/lib/xrd → xrd}/atomic_scattering_params.json +0 -0
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// Get relative coordinates from a mouse event
|
|
2
|
+
export function get_relative_coords(evt) {
|
|
3
|
+
const current_target = evt.currentTarget;
|
|
4
|
+
if (!(current_target instanceof SVGElement))
|
|
5
|
+
return null;
|
|
6
|
+
const svg_box = current_target.getBoundingClientRect();
|
|
7
|
+
if (!svg_box)
|
|
8
|
+
return null;
|
|
9
|
+
return { x: evt.clientX - svg_box.left, y: evt.clientY - svg_box.top };
|
|
10
|
+
}
|
|
11
|
+
// Normalize Y2 sync config (handle shorthand string vs full object)
|
|
12
|
+
export function normalize_y2_sync(sync) {
|
|
13
|
+
if (!sync || sync === `none`)
|
|
14
|
+
return { mode: `none` };
|
|
15
|
+
if (typeof sync === `string`)
|
|
16
|
+
return { mode: sync };
|
|
17
|
+
return sync;
|
|
18
|
+
}
|
|
19
|
+
// Helper to check if all values in ranges are finite
|
|
20
|
+
const all_finite = (...ranges) => ranges.every(([a, b]) => Number.isFinite(a) && Number.isFinite(b));
|
|
21
|
+
// Calculate synced y2 range based on sync mode
|
|
22
|
+
export function sync_y2_range(y1_range, y2_base_range, sync) {
|
|
23
|
+
if (sync.mode === `none`)
|
|
24
|
+
return y2_base_range;
|
|
25
|
+
if (!all_finite(y1_range, y2_base_range))
|
|
26
|
+
return y2_base_range;
|
|
27
|
+
// Synced: Y2 has exact same range as Y1
|
|
28
|
+
if (sync.mode === `synced`) {
|
|
29
|
+
return [y1_range[0], y1_range[1]];
|
|
30
|
+
}
|
|
31
|
+
// Align: Position so align_val (default 0) is at same relative position on both axes
|
|
32
|
+
// Y2 range expands as needed to show all data while maintaining alignment
|
|
33
|
+
if (sync.mode === `align`) {
|
|
34
|
+
const align_val = sync.align_value ?? 0;
|
|
35
|
+
const y1_span = y1_range[1] - y1_range[0];
|
|
36
|
+
if (y1_span === 0)
|
|
37
|
+
return y2_base_range;
|
|
38
|
+
// Where is align_val in Y1's range? (0 = bottom, 1 = top)
|
|
39
|
+
const rel_pos = (align_val - y1_range[0]) / y1_span;
|
|
40
|
+
// Ensure Y2 range includes both align_val and all data
|
|
41
|
+
const y2_min_data = Math.min(y2_base_range[0], align_val);
|
|
42
|
+
const y2_max_data = Math.max(y2_base_range[1], align_val);
|
|
43
|
+
// Calculate minimum span needed to fit all data while keeping align_val at rel_pos
|
|
44
|
+
// Constraints: y2_min <= y2_min_data AND y2_max >= y2_max_data
|
|
45
|
+
let y2_span = y2_max_data - y2_min_data;
|
|
46
|
+
if (rel_pos > 0) {
|
|
47
|
+
y2_span = Math.max(y2_span, (align_val - y2_min_data) / rel_pos);
|
|
48
|
+
}
|
|
49
|
+
if (rel_pos < 1) {
|
|
50
|
+
y2_span = Math.max(y2_span, (y2_max_data - align_val) / (1 - rel_pos));
|
|
51
|
+
}
|
|
52
|
+
const y2_min_computed = align_val - rel_pos * y2_span;
|
|
53
|
+
const y2_max_computed = align_val + (1 - rel_pos) * y2_span;
|
|
54
|
+
// When align_val is outside y1_range (rel_pos < 0 or > 1), the formula can produce
|
|
55
|
+
// a range that omits y2_base_range or align_val. Ensure both are always included.
|
|
56
|
+
const y2_min = Math.min(y2_min_computed, y2_base_range[0], align_val);
|
|
57
|
+
const y2_max = Math.max(y2_max_computed, y2_base_range[1], align_val);
|
|
58
|
+
return [y2_min, y2_max];
|
|
59
|
+
}
|
|
60
|
+
return y2_base_range;
|
|
61
|
+
}
|
|
62
|
+
// Shift a range by a delta amount (no bounds constraint for free panning)
|
|
63
|
+
export const pan_range = (current, delta) => [
|
|
64
|
+
current[0] + delta,
|
|
65
|
+
current[1] + delta,
|
|
66
|
+
];
|
|
67
|
+
// Convert pixel delta to data delta using current data range and pixel range
|
|
68
|
+
export function pixels_to_data_delta(pixel_delta, data_range, pixel_range) {
|
|
69
|
+
if (pixel_range === 0)
|
|
70
|
+
return 0;
|
|
71
|
+
const data_span = data_range[1] - data_range[0];
|
|
72
|
+
return (pixel_delta / pixel_range) * data_span;
|
|
73
|
+
}
|
|
74
|
+
// Threshold for distinguishing pinch-zoom from pan in touch gestures
|
|
75
|
+
// Scale change > this value triggers zoom instead of pan
|
|
76
|
+
export const PINCH_ZOOM_THRESHOLD = 0.1;
|
|
77
|
+
// Helper to check if range is the default [0, 1] sentinel (no data)
|
|
78
|
+
// Note: min === 0 handles -0 correctly since -0 === 0 in JavaScript
|
|
79
|
+
const is_default_range = ([min, max]) => min === 0 && max === 1;
|
|
80
|
+
// Adopt the new data range, unless all series were hidden (sentinel [0, 1] fallback).
|
|
81
|
+
// NOTE: [0, 1] is the "no data" sentinel - when all series are hidden, auto ranges
|
|
82
|
+
// fall back to [0, 1]. Actual data spanning exactly [0, 1] is a rare edge case.
|
|
83
|
+
export function expand_range_if_needed(current, new_range) {
|
|
84
|
+
// Guard against NaN/Infinity - prefer valid range, fall back to sentinel [0, 1] if both invalid
|
|
85
|
+
const current_valid = all_finite(current);
|
|
86
|
+
const new_valid = all_finite(new_range);
|
|
87
|
+
if (!current_valid && !new_valid)
|
|
88
|
+
return { range: [0, 1], changed: true };
|
|
89
|
+
if (!new_valid)
|
|
90
|
+
return { range: current, changed: false };
|
|
91
|
+
if (!current_valid)
|
|
92
|
+
return { range: new_range, changed: true };
|
|
93
|
+
// When all series are hidden, auto ranges fall back to [0, 1] sentinel.
|
|
94
|
+
// Don't shrink to that — preserve the current view so it doesn't jump.
|
|
95
|
+
if (!is_default_range(current) && is_default_range(new_range)) {
|
|
96
|
+
return { range: current, changed: false };
|
|
97
|
+
}
|
|
98
|
+
// Otherwise adopt the new range directly (both expand and shrink)
|
|
99
|
+
const changed = new_range[0] !== current[0] || new_range[1] !== current[1];
|
|
100
|
+
return { range: new_range, changed };
|
|
101
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import type { AxisConfig } from './types';
|
|
2
|
+
export type Sides = {
|
|
3
|
+
t?: number;
|
|
4
|
+
b?: number;
|
|
5
|
+
l?: number;
|
|
6
|
+
r?: number;
|
|
7
|
+
};
|
|
8
|
+
export declare const LABEL_GAP_DEFAULT = 30;
|
|
9
|
+
export declare const filter_padding: (padding: Partial<Sides> | undefined | null, defaults: Required<Sides>) => Required<Sides>;
|
|
10
|
+
export declare function measure_text_width(text: string, font?: string): number;
|
|
11
|
+
export declare function measure_full_footprint(el: HTMLElement): {
|
|
12
|
+
width: number;
|
|
13
|
+
height: number;
|
|
14
|
+
};
|
|
15
|
+
export interface AutoPaddingConfig {
|
|
16
|
+
padding: Partial<Sides>;
|
|
17
|
+
default_padding: Required<Sides>;
|
|
18
|
+
x2_axis?: AxisConfig & {
|
|
19
|
+
tick_values?: (string | number)[];
|
|
20
|
+
};
|
|
21
|
+
y_axis?: AxisConfig & {
|
|
22
|
+
tick_values?: (string | number)[];
|
|
23
|
+
};
|
|
24
|
+
y2_axis?: AxisConfig & {
|
|
25
|
+
tick_values?: (string | number)[];
|
|
26
|
+
};
|
|
27
|
+
label_gap?: number;
|
|
28
|
+
}
|
|
29
|
+
export declare const measure_max_tick_width: (ticks: (string | number)[], format?: string) => number;
|
|
30
|
+
export declare const TICK_LABEL_HEIGHT = 16;
|
|
31
|
+
export declare const AXIS_LABEL_HEIGHT = 20;
|
|
32
|
+
export declare const calc_auto_padding: ({ padding, default_padding, x2_axis, y_axis, y2_axis, label_gap, }: AutoPaddingConfig) => Required<Sides>;
|
|
33
|
+
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?: {
|
|
34
|
+
offset?: number;
|
|
35
|
+
offset_x?: number;
|
|
36
|
+
offset_y?: number;
|
|
37
|
+
}): {
|
|
38
|
+
x: number;
|
|
39
|
+
y: number;
|
|
40
|
+
};
|
|
41
|
+
export interface Rect {
|
|
42
|
+
x: number;
|
|
43
|
+
y: number;
|
|
44
|
+
width: number;
|
|
45
|
+
height: number;
|
|
46
|
+
}
|
|
47
|
+
export declare const pad_rect: (rect: Rect, padding: number) => Rect;
|
|
48
|
+
export declare const centered_rect: (center_x: number, top_y: number, width: number, height: number) => Rect;
|
|
49
|
+
export declare const rect_within_rect: (rect: Rect, bounds: Rect) => boolean;
|
|
50
|
+
export interface ElementPlacementConfig {
|
|
51
|
+
plot_bounds: Rect;
|
|
52
|
+
element_size: {
|
|
53
|
+
width: number;
|
|
54
|
+
height: number;
|
|
55
|
+
};
|
|
56
|
+
element?: HTMLElement | null;
|
|
57
|
+
axis_clearance?: number;
|
|
58
|
+
exclude_rects?: Rect[];
|
|
59
|
+
points: {
|
|
60
|
+
x: number;
|
|
61
|
+
y: number;
|
|
62
|
+
}[];
|
|
63
|
+
grid_resolution?: number;
|
|
64
|
+
}
|
|
65
|
+
export interface ElementPlacementResult {
|
|
66
|
+
x: number;
|
|
67
|
+
y: number;
|
|
68
|
+
score: number;
|
|
69
|
+
}
|
|
70
|
+
export declare const rects_overlap: (r1: Rect, r2: Rect) => boolean;
|
|
71
|
+
export declare function sample_series_obstacle_points(pixel_points: {
|
|
72
|
+
x: number;
|
|
73
|
+
y: number;
|
|
74
|
+
}[], draws_line: boolean, step: number): {
|
|
75
|
+
x: number;
|
|
76
|
+
y: number;
|
|
77
|
+
}[];
|
|
78
|
+
export declare function compute_element_placement(config: ElementPlacementConfig): ElementPlacementResult;
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { format_value } from '../labels';
|
|
2
|
+
import { euclidean_dist } from '../math';
|
|
3
|
+
// Default gap between tick labels and axis labels
|
|
4
|
+
export const LABEL_GAP_DEFAULT = 30;
|
|
5
|
+
// Filter undefined values from padding to prevent overriding defaults when spreading
|
|
6
|
+
// Guards against undefined/null padding inputs (common for optional props)
|
|
7
|
+
export const filter_padding = (padding, defaults) => ({
|
|
8
|
+
...defaults,
|
|
9
|
+
...Object.fromEntries(Object.entries(padding ?? {}).filter(([, v]) => v !== undefined)),
|
|
10
|
+
});
|
|
11
|
+
// Measure text width using canvas (singleton pattern for performance)
|
|
12
|
+
let measurement_canvas = null;
|
|
13
|
+
export function measure_text_width(text, font = `12px sans-serif`) {
|
|
14
|
+
if (typeof document === `undefined`)
|
|
15
|
+
return 0;
|
|
16
|
+
measurement_canvas ??= document.createElement(`canvas`);
|
|
17
|
+
const ctx = measurement_canvas.getContext(`2d`);
|
|
18
|
+
if (!ctx)
|
|
19
|
+
return 0;
|
|
20
|
+
ctx.font = font;
|
|
21
|
+
return ctx.measureText(text).width;
|
|
22
|
+
}
|
|
23
|
+
// Measure an element's full visual footprint, including descendants that overflow its
|
|
24
|
+
// offset box. Colorbar tick labels are position:absolute outside the bar, so
|
|
25
|
+
// offsetWidth/offsetHeight underestimate the space they actually occupy — which lets
|
|
26
|
+
// auto-placement put the colorbar where its labels overlap the axes.
|
|
27
|
+
export function measure_full_footprint(el) {
|
|
28
|
+
const root = el.getBoundingClientRect();
|
|
29
|
+
let right = root.right;
|
|
30
|
+
let bottom = root.bottom;
|
|
31
|
+
for (const child of el.querySelectorAll(`*`)) {
|
|
32
|
+
const rect = child.getBoundingClientRect();
|
|
33
|
+
if (rect.width === 0 && rect.height === 0)
|
|
34
|
+
continue;
|
|
35
|
+
right = Math.max(right, rect.right);
|
|
36
|
+
bottom = Math.max(bottom, rect.bottom);
|
|
37
|
+
}
|
|
38
|
+
return { width: right - root.left, height: bottom - root.top };
|
|
39
|
+
}
|
|
40
|
+
// Measure the widest formatted tick label. Used for auto-padding and label placement.
|
|
41
|
+
export const measure_max_tick_width = (ticks, format = ``) => ticks.length === 0
|
|
42
|
+
? 0
|
|
43
|
+
: Math.max(...ticks.map((tick) => {
|
|
44
|
+
const label = typeof tick === `string` ? tick : format_value(tick, format);
|
|
45
|
+
return measure_text_width(label, `12px sans-serif`);
|
|
46
|
+
}));
|
|
47
|
+
// Estimated height of a single tick label line (font-size 0.8em ≈ 12px + leading)
|
|
48
|
+
export const TICK_LABEL_HEIGHT = 16;
|
|
49
|
+
// Estimated height of an axis label (font-size ~14px + margin)
|
|
50
|
+
export const AXIS_LABEL_HEIGHT = 20;
|
|
51
|
+
export const calc_auto_padding = ({ padding, default_padding, x2_axis = {}, y_axis = {}, y2_axis = {}, label_gap = LABEL_GAP_DEFAULT, }) => {
|
|
52
|
+
const x2_ticks = x2_axis.tick_values ?? [];
|
|
53
|
+
const y_ticks = y_axis.tick_values ?? [];
|
|
54
|
+
const y_format = y_axis.format ?? ``;
|
|
55
|
+
const y2_ticks = y2_axis.tick_values ?? [];
|
|
56
|
+
const y2_format = y2_axis.format ?? ``;
|
|
57
|
+
return {
|
|
58
|
+
t: padding.t ??
|
|
59
|
+
(x2_ticks.length > 0
|
|
60
|
+
? Math.max(default_padding.t, TICK_LABEL_HEIGHT + label_gap + (x2_axis.label ? AXIS_LABEL_HEIGHT : 0))
|
|
61
|
+
: default_padding.t),
|
|
62
|
+
b: padding.b ?? default_padding.b,
|
|
63
|
+
l: padding.l ??
|
|
64
|
+
Math.max(default_padding.l, measure_max_tick_width(y_ticks, y_format) + label_gap),
|
|
65
|
+
r: padding.r ??
|
|
66
|
+
Math.max(default_padding.r, measure_max_tick_width(y2_ticks, y2_format) + label_gap),
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
// Constrain tooltip position within bounds, flipping to opposite side if overflow
|
|
70
|
+
// offset_x/offset_y control initial positioning: positive = right/down, negative = left/up
|
|
71
|
+
export function constrain_tooltip_position(cursor_x, cursor_y, tooltip_width, tooltip_height, viewport_width, viewport_height, options = {}) {
|
|
72
|
+
const { offset = 10 } = options;
|
|
73
|
+
const offset_x = options.offset_x ?? offset;
|
|
74
|
+
const offset_y = options.offset_y ?? offset;
|
|
75
|
+
// Position to left of cursor if right-side placement overflows (and vice versa)
|
|
76
|
+
const flip_x = offset_x >= 0
|
|
77
|
+
? cursor_x + offset_x + tooltip_width > viewport_width
|
|
78
|
+
: cursor_x + offset_x - tooltip_width < 0;
|
|
79
|
+
// Position above cursor if bottom placement overflows (and vice versa)
|
|
80
|
+
const flip_y = offset_y >= 0
|
|
81
|
+
? cursor_y + offset_y + tooltip_height > viewport_height
|
|
82
|
+
: cursor_y + offset_y - tooltip_height < 0;
|
|
83
|
+
// Calculate position: apply offset, flip if needed
|
|
84
|
+
const abs_offset_x = Math.abs(offset_x);
|
|
85
|
+
const abs_offset_y = Math.abs(offset_y);
|
|
86
|
+
// Determine X position based on preferred side and flip state
|
|
87
|
+
let raw_x;
|
|
88
|
+
if (offset_x >= 0) {
|
|
89
|
+
// Prefer right side: flip to left if overflows
|
|
90
|
+
raw_x = flip_x ? cursor_x - abs_offset_x - tooltip_width : cursor_x + abs_offset_x;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
// Prefer left side: flip to right if overflows
|
|
94
|
+
raw_x = flip_x ? cursor_x + abs_offset_x : cursor_x - abs_offset_x - tooltip_width;
|
|
95
|
+
}
|
|
96
|
+
// Determine Y position based on preferred side and flip state
|
|
97
|
+
let raw_y;
|
|
98
|
+
if (offset_y >= 0) {
|
|
99
|
+
// Prefer bottom: flip to top if overflows
|
|
100
|
+
raw_y = flip_y ? cursor_y - abs_offset_y - tooltip_height : cursor_y + abs_offset_y;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
// Prefer top: flip to bottom if overflows
|
|
104
|
+
raw_y = flip_y ? cursor_y + abs_offset_y : cursor_y - abs_offset_y - tooltip_height;
|
|
105
|
+
}
|
|
106
|
+
// Clamp to viewport bounds
|
|
107
|
+
const x_pos = Math.max(0, Math.min(raw_x, viewport_width - tooltip_width));
|
|
108
|
+
const y_pos = Math.max(0, Math.min(raw_y, viewport_height - tooltip_height));
|
|
109
|
+
return { x: x_pos, y: y_pos };
|
|
110
|
+
}
|
|
111
|
+
export const pad_rect = (rect, padding) => ({
|
|
112
|
+
x: rect.x - padding,
|
|
113
|
+
y: rect.y - padding,
|
|
114
|
+
width: rect.width + 2 * padding,
|
|
115
|
+
height: rect.height + 2 * padding,
|
|
116
|
+
});
|
|
117
|
+
export const centered_rect = (center_x, top_y, width, height) => ({
|
|
118
|
+
x: center_x - width / 2,
|
|
119
|
+
y: top_y,
|
|
120
|
+
width,
|
|
121
|
+
height,
|
|
122
|
+
});
|
|
123
|
+
export const rect_within_rect = (rect, bounds) => rect.x >= bounds.x &&
|
|
124
|
+
rect.x + rect.width <= bounds.x + bounds.width &&
|
|
125
|
+
rect.y >= bounds.y &&
|
|
126
|
+
rect.y + rect.height <= bounds.y + bounds.height;
|
|
127
|
+
// Scoring constants
|
|
128
|
+
const EXCLUSION_PENALTY = 1000;
|
|
129
|
+
const DISTANCE_WEIGHT = 0.001;
|
|
130
|
+
// Strong corner preference: corners can have 3-4 more overlapping points and still win
|
|
131
|
+
const CORNER_WEIGHT = 5.0;
|
|
132
|
+
const MAX_SAMPLE_POINTS = 500;
|
|
133
|
+
// Check if a point is inside a rectangle
|
|
134
|
+
const point_in_rect = (point, rect) => point.x >= rect.x &&
|
|
135
|
+
point.x <= rect.x + rect.width &&
|
|
136
|
+
point.y >= rect.y &&
|
|
137
|
+
point.y <= rect.y + rect.height;
|
|
138
|
+
// Check if two rectangles overlap
|
|
139
|
+
export const rects_overlap = (r1, r2) => !(r1.x + r1.width <= r2.x ||
|
|
140
|
+
r2.x + r2.width <= r1.x ||
|
|
141
|
+
r1.y + r1.height <= r2.y ||
|
|
142
|
+
r2.y + r2.height <= r1.y);
|
|
143
|
+
// Build placement obstacles for one series' pixel-space polyline. Always includes the finite
|
|
144
|
+
// vertices; when the series draws a connecting line, also walks each segment between
|
|
145
|
+
// consecutive finite vertices at ~step px so legend/colorbar auto-placement avoids the line,
|
|
146
|
+
// not just sparse markers (e.g. a steep y=x^2 line has few markers but a long visible segment).
|
|
147
|
+
export function sample_series_obstacle_points(pixel_points, draws_line, step) {
|
|
148
|
+
const obstacles = [];
|
|
149
|
+
let prev = null;
|
|
150
|
+
for (const point of pixel_points) {
|
|
151
|
+
if (!isFinite(point.x) || !isFinite(point.y)) {
|
|
152
|
+
prev = null; // non-finite breaks the line; don't sample across the gap
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
obstacles.push(point);
|
|
156
|
+
if (draws_line && prev && step > 0) {
|
|
157
|
+
const n_samples = Math.floor(Math.hypot(point.x - prev.x, point.y - prev.y) / step);
|
|
158
|
+
for (let idx = 1; idx < n_samples; idx++) {
|
|
159
|
+
const frac = idx / n_samples;
|
|
160
|
+
obstacles.push({
|
|
161
|
+
x: prev.x + (point.x - prev.x) * frac,
|
|
162
|
+
y: prev.y + (point.y - prev.y) * frac,
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
prev = point;
|
|
167
|
+
}
|
|
168
|
+
return obstacles;
|
|
169
|
+
}
|
|
170
|
+
// Find the best placement position using continuous grid sampling
|
|
171
|
+
// Scores each candidate position by:
|
|
172
|
+
// 1. Number of data points overlapping the element bounds (fewer = better)
|
|
173
|
+
// 2. Overlap with exclusion rectangles (heavy penalty)
|
|
174
|
+
// 3. Distance to nearest point (tie-breaker, farther = better)
|
|
175
|
+
export function compute_element_placement(config) {
|
|
176
|
+
const { plot_bounds, element_size, element, axis_clearance = 12, exclude_rects = [], points, grid_resolution: raw_resolution = 10, } = config;
|
|
177
|
+
// Ensure grid_resolution >= 2 to avoid division by zero in step calculation
|
|
178
|
+
const grid_resolution = Math.max(2, raw_resolution);
|
|
179
|
+
// Measure the element's full footprint (incl. descendants that overflow its box,
|
|
180
|
+
// such as colorbar tick labels) once it's laid out; fall back to element_size before
|
|
181
|
+
// first render. Centralizing this keeps every plot's auto-placement overlap-free.
|
|
182
|
+
const { width: elem_width, height: elem_height } = element?.offsetWidth && element?.offsetHeight
|
|
183
|
+
? measure_full_footprint(element)
|
|
184
|
+
: element_size;
|
|
185
|
+
// Calculate valid placement region (plot bounds minus axis clearance)
|
|
186
|
+
const valid_x_min = plot_bounds.x + axis_clearance;
|
|
187
|
+
const valid_y_min = plot_bounds.y + axis_clearance;
|
|
188
|
+
const valid_x_max = plot_bounds.x + plot_bounds.width - axis_clearance - elem_width;
|
|
189
|
+
const valid_y_max = plot_bounds.y + plot_bounds.height - axis_clearance - elem_height;
|
|
190
|
+
// Handle case where element is too large for the valid region
|
|
191
|
+
const effective_x_min = Math.min(valid_x_min, valid_x_max);
|
|
192
|
+
const effective_x_max = Math.max(valid_x_min, valid_x_max);
|
|
193
|
+
const effective_y_min = Math.min(valid_y_min, valid_y_max);
|
|
194
|
+
const effective_y_max = Math.max(valid_y_min, valid_y_max);
|
|
195
|
+
// Subsample points for performance
|
|
196
|
+
const sampled_points = points.length > MAX_SAMPLE_POINTS
|
|
197
|
+
? Array.from({ length: MAX_SAMPLE_POINTS }, (_, idx) => points[Math.floor((idx * points.length) / MAX_SAMPLE_POINTS)])
|
|
198
|
+
: points;
|
|
199
|
+
let best_result = {
|
|
200
|
+
x: effective_x_min,
|
|
201
|
+
y: effective_y_min,
|
|
202
|
+
score: -Infinity,
|
|
203
|
+
};
|
|
204
|
+
// Sample candidate positions on a grid
|
|
205
|
+
const x_step = effective_x_max > effective_x_min
|
|
206
|
+
? (effective_x_max - effective_x_min) / (grid_resolution - 1)
|
|
207
|
+
: 0;
|
|
208
|
+
const y_step = effective_y_max > effective_y_min
|
|
209
|
+
? (effective_y_max - effective_y_min) / (grid_resolution - 1)
|
|
210
|
+
: 0;
|
|
211
|
+
// Precompute plot corners (constant across all candidates)
|
|
212
|
+
const plot_left = plot_bounds.x + axis_clearance;
|
|
213
|
+
const plot_right = plot_bounds.x + plot_bounds.width - axis_clearance;
|
|
214
|
+
const plot_top = plot_bounds.y + axis_clearance;
|
|
215
|
+
const plot_bottom = plot_bounds.y + plot_bounds.height - axis_clearance;
|
|
216
|
+
const max_corner_dist = euclidean_dist([plot_left, plot_top], [plot_right, plot_bottom]);
|
|
217
|
+
for (let grid_x = 0; grid_x < grid_resolution; grid_x++) {
|
|
218
|
+
for (let grid_y = 0; grid_y < grid_resolution; grid_y++) {
|
|
219
|
+
const cand_x = effective_x_min + grid_x * x_step;
|
|
220
|
+
const cand_y = effective_y_min + grid_y * y_step;
|
|
221
|
+
const cand_rect = {
|
|
222
|
+
x: cand_x,
|
|
223
|
+
y: cand_y,
|
|
224
|
+
width: elem_width,
|
|
225
|
+
height: elem_height,
|
|
226
|
+
};
|
|
227
|
+
// Check for overlap with exclusion rectangles first (early rejection)
|
|
228
|
+
let exclusion_penalty = 0;
|
|
229
|
+
for (const excl_rect of exclude_rects) {
|
|
230
|
+
if (rects_overlap(cand_rect, excl_rect)) {
|
|
231
|
+
exclusion_penalty += EXCLUSION_PENALTY;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// Count points overlapping this candidate position
|
|
235
|
+
let overlap_count = 0;
|
|
236
|
+
let min_distance_sq = Infinity;
|
|
237
|
+
const center_x = cand_x + elem_width / 2;
|
|
238
|
+
const center_y = cand_y + elem_height / 2;
|
|
239
|
+
for (const point of sampled_points) {
|
|
240
|
+
if (point_in_rect(point, cand_rect)) {
|
|
241
|
+
overlap_count++;
|
|
242
|
+
}
|
|
243
|
+
// Track distance to nearest point for tie-breaking
|
|
244
|
+
const dx = point.x - center_x;
|
|
245
|
+
const dy = point.y - center_y;
|
|
246
|
+
const dist_sq = dx * dx + dy * dy;
|
|
247
|
+
if (dist_sq < min_distance_sq) {
|
|
248
|
+
min_distance_sq = dist_sq;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
// Score: fewer overlaps = better (less negative)
|
|
252
|
+
// Add small distance bonus for tie-breaking
|
|
253
|
+
// When no points exist, min_distance_sq stays Infinity - treat as 0 (no distance bonus)
|
|
254
|
+
const min_distance = min_distance_sq === Infinity ? 0 : Math.sqrt(min_distance_sq);
|
|
255
|
+
// Corner preference: use element's actual corner (not center) for distance
|
|
256
|
+
// This ensures a wide element at the left edge gets proper corner credit
|
|
257
|
+
const elem_right = cand_x + element_size.width;
|
|
258
|
+
const elem_bottom = cand_y + element_size.height;
|
|
259
|
+
// Distance from element's matching corner to each plot corner
|
|
260
|
+
const min_corner_dist = Math.min(euclidean_dist([cand_x, cand_y], [plot_left, plot_top]), // top-left
|
|
261
|
+
euclidean_dist([elem_right, cand_y], [plot_right, plot_top]), // top-right
|
|
262
|
+
euclidean_dist([cand_x, elem_bottom], [plot_left, plot_bottom]), // bottom-left
|
|
263
|
+
euclidean_dist([elem_right, elem_bottom], [plot_right, plot_bottom]));
|
|
264
|
+
// Higher bonus for positions closer to corners (0 = at corner, 1 = far from all)
|
|
265
|
+
const corner_bonus = max_corner_dist > 0 ? (1 - min_corner_dist / max_corner_dist) * CORNER_WEIGHT : 0;
|
|
266
|
+
const score = -overlap_count + min_distance * DISTANCE_WEIGHT + corner_bonus - exclusion_penalty;
|
|
267
|
+
if (score > best_result.score) {
|
|
268
|
+
best_result = { x: cand_x, y: cand_y, score };
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return best_result;
|
|
273
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { RefLine, RefLineValue } from './types';
|
|
2
|
+
export type IndexedRefLine = RefLine & {
|
|
3
|
+
idx: number;
|
|
4
|
+
};
|
|
5
|
+
export declare function index_ref_lines(ref_lines: RefLine[] | undefined): IndexedRefLine[];
|
|
6
|
+
export interface RefLinesByZIndex {
|
|
7
|
+
below_grid: IndexedRefLine[];
|
|
8
|
+
below_lines: IndexedRefLine[];
|
|
9
|
+
below_points: IndexedRefLine[];
|
|
10
|
+
above_all: IndexedRefLine[];
|
|
11
|
+
}
|
|
12
|
+
export declare function group_ref_lines_by_z(lines: IndexedRefLine[]): RefLinesByZIndex;
|
|
13
|
+
export declare function normalize_value(value: RefLineValue): number;
|
|
14
|
+
export declare const normalize_point: (point: [RefLineValue, RefLineValue]) => [number, number];
|
|
15
|
+
export declare function resolve_line_endpoints(ref_line: RefLine, { x_min, x_max, y_min, y_max, }: {
|
|
16
|
+
x_min: number;
|
|
17
|
+
x_max: number;
|
|
18
|
+
y_min: number;
|
|
19
|
+
y_max: number;
|
|
20
|
+
}, { x_scale, x2_scale, y_scale, y2_scale, }: {
|
|
21
|
+
x_scale: (val: number) => number;
|
|
22
|
+
x2_scale?: (val: number) => number;
|
|
23
|
+
y_scale: (val: number) => number;
|
|
24
|
+
y2_scale?: (val: number) => number;
|
|
25
|
+
}): [number, number, number, number] | null;
|
|
26
|
+
interface AnnotationPosition {
|
|
27
|
+
x: number;
|
|
28
|
+
y: number;
|
|
29
|
+
text_anchor: `start` | `middle` | `end`;
|
|
30
|
+
dominant_baseline: `auto` | `middle` | `hanging`;
|
|
31
|
+
rotation?: number;
|
|
32
|
+
}
|
|
33
|
+
export declare function calculate_annotation_position(x1: number, y1: number, x2: number, y2: number, annotation: {
|
|
34
|
+
position?: `start` | `center` | `end`;
|
|
35
|
+
side?: `above` | `below` | `left` | `right`;
|
|
36
|
+
offset?: {
|
|
37
|
+
x?: number;
|
|
38
|
+
y?: number;
|
|
39
|
+
};
|
|
40
|
+
gap?: number;
|
|
41
|
+
edge_padding?: number;
|
|
42
|
+
rotate?: boolean;
|
|
43
|
+
}): AnnotationPosition;
|
|
44
|
+
export interface Scene3DParams {
|
|
45
|
+
scene_x: number;
|
|
46
|
+
scene_y: number;
|
|
47
|
+
scene_z: number;
|
|
48
|
+
x_range: [number, number];
|
|
49
|
+
y_range: [number, number];
|
|
50
|
+
z_range: [number, number];
|
|
51
|
+
}
|
|
52
|
+
/** Apply span constraints or use full range as fallback */
|
|
53
|
+
export declare const span_or: (span: [number | null, number | null] | undefined, range: [number, number]) => [number, number];
|
|
54
|
+
export declare function normalize_to_scene(value: number, [min_val, max_val]: [number, number], scene_size: number): number;
|
|
55
|
+
export declare function create_to_threejs(params: Scene3DParams): (user_x: number, user_y: number, user_z: number) => {
|
|
56
|
+
x: number;
|
|
57
|
+
y: number;
|
|
58
|
+
z: number;
|
|
59
|
+
};
|
|
60
|
+
export {};
|