matterviz 0.4.1 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/EmptyState.svelte +10 -4
- package/dist/FilePicker.svelte +48 -60
- package/dist/Icon.svelte +7 -4
- package/dist/MillerIndexInput.svelte +2 -2
- package/dist/api/optimade.js +10 -7
- package/dist/app.css +68 -0
- package/dist/brillouin/BrillouinZone.svelte +90 -91
- package/dist/brillouin/BrillouinZone.svelte.d.ts +5 -7
- package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
- package/dist/brillouin/BrillouinZoneExportPane.svelte +18 -14
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +6 -10
- package/dist/brillouin/BrillouinZoneScene.svelte +46 -68
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
- package/dist/brillouin/compute.js +10 -16
- package/dist/brillouin/geometry.js +2 -2
- package/dist/chempot-diagram/ChemPotDiagram.svelte +48 -50
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +61 -169
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +1 -1
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +559 -755
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +1 -1
- package/dist/chempot-diagram/async-compute.svelte.js +13 -14
- package/dist/chempot-diagram/color.d.ts +21 -1
- package/dist/chempot-diagram/color.js +70 -1
- package/dist/chempot-diagram/compute.d.ts +7 -0
- package/dist/chempot-diagram/compute.js +85 -26
- package/dist/chempot-diagram/controls-state.svelte.js +1 -1
- package/dist/chempot-diagram/export.js +1 -6
- package/dist/chempot-diagram/temperature.js +9 -10
- package/dist/colors/index.d.ts +0 -4
- package/dist/colors/index.js +19 -20
- package/dist/composition/BarChart.svelte +30 -26
- package/dist/composition/BubbleChart.svelte +17 -17
- package/dist/composition/Composition.svelte +10 -19
- package/dist/composition/Formula.svelte +20 -27
- package/dist/composition/FormulaFilter.svelte +115 -184
- package/dist/composition/PieChart.svelte +55 -41
- package/dist/composition/format.js +7 -9
- package/dist/composition/index.d.ts +2 -0
- package/dist/composition/index.js +14 -0
- package/dist/composition/parse.d.ts +2 -2
- package/dist/composition/parse.js +61 -115
- package/dist/constants.d.ts +0 -1
- package/dist/constants.js +17 -26
- package/dist/convex-hull/ConvexHull.svelte +12 -15
- package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull2D.svelte +93 -94
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull3D.svelte +127 -186
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHull4D.svelte +131 -180
- package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
- package/dist/convex-hull/ConvexHullChrome.svelte +36 -40
- package/dist/convex-hull/ConvexHullControls.svelte +46 -48
- package/dist/convex-hull/ConvexHullStats.svelte +193 -195
- package/dist/convex-hull/ConvexHullTooltip.svelte +5 -12
- package/dist/convex-hull/GasPressureControls.svelte +5 -12
- package/dist/convex-hull/StructurePopup.svelte +18 -22
- package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
- package/dist/convex-hull/TemperatureSlider.svelte +4 -10
- package/dist/convex-hull/canvas-interactions.svelte.js +2 -1
- package/dist/convex-hull/gas-thermodynamics.js +21 -53
- package/dist/convex-hull/helpers.d.ts +8 -10
- package/dist/convex-hull/helpers.js +37 -43
- package/dist/convex-hull/hull-state.svelte.d.ts +1 -1
- package/dist/convex-hull/thermodynamics.js +37 -44
- package/dist/coordination/CoordinationBarPlot.svelte +49 -53
- 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 +5 -9
- 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 +44 -67
- package/dist/element/Nucleus.svelte +4 -2
- package/dist/element/data.d.ts +3 -2
- package/dist/element/data.js +5 -1
- package/dist/element/helpers.d.ts +4 -0
- package/dist/element/helpers.js +18 -0
- package/dist/element/index.d.ts +2 -5
- package/dist/element/index.js +4 -19
- package/dist/feedback/DragOverlay.svelte +5 -5
- package/dist/feedback/DragOverlay.svelte.d.ts +2 -2
- package/dist/feedback/StatusMessage.svelte +7 -4
- package/dist/fermi-surface/FermiSlice.svelte +21 -18
- package/dist/fermi-surface/FermiSurface.svelte +35 -44
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +7 -13
- package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
- package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceScene.svelte +64 -136
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
- package/dist/fermi-surface/compute.js +25 -58
- package/dist/fermi-surface/parse.js +54 -88
- package/dist/file-viewer/JsonBrowser.svelte +1043 -0
- package/dist/file-viewer/JsonBrowser.svelte.d.ts +9 -0
- package/dist/file-viewer/PlotPanel.svelte +350 -0
- package/dist/file-viewer/PlotPanel.svelte.d.ts +9 -0
- package/dist/file-viewer/TrajectoryWithDos.svelte +30 -0
- package/dist/file-viewer/TrajectoryWithDos.svelte.d.ts +10 -0
- package/dist/file-viewer/detect.d.ts +11 -0
- package/dist/file-viewer/detect.js +381 -0
- package/dist/file-viewer/eligibility.d.ts +4 -0
- package/dist/file-viewer/eligibility.js +53 -0
- package/dist/file-viewer/host-protocol.d.ts +50 -0
- package/dist/file-viewer/host-transfer.d.ts +25 -0
- package/dist/file-viewer/host-transfer.js +42 -0
- package/dist/file-viewer/index.d.ts +5 -0
- package/dist/file-viewer/index.js +5 -0
- package/dist/file-viewer/main.d.ts +44 -0
- package/dist/file-viewer/main.js +535 -0
- package/dist/file-viewer/parse.d.ts +9 -0
- package/dist/file-viewer/parse.js +170 -0
- package/dist/file-viewer/plot-utils.d.ts +24 -0
- package/dist/file-viewer/plot-utils.js +191 -0
- package/dist/file-viewer/types.d.ts +4 -0
- package/dist/file-viewer/types.js +5 -0
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +153 -219
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +2 -2
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +9 -7
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +1 -1
- package/dist/heatmap-matrix/index.d.ts +5 -0
- package/dist/icons.d.ts +4 -0
- package/dist/icons.js +4 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/io/ExportPane.svelte +11 -7
- package/dist/io/decompress.d.ts +4 -1
- package/dist/io/decompress.js +24 -36
- package/dist/io/export.d.ts +11 -4
- package/dist/io/export.js +75 -19
- package/dist/io/fetch.d.ts +0 -3
- package/dist/io/fetch.js +0 -11
- package/dist/io/file-drop.js +60 -35
- package/dist/io/index.d.ts +0 -1
- package/dist/io/index.js +2 -9
- package/dist/io/is-binary.d.ts +9 -0
- package/dist/io/is-binary.js +45 -1
- package/dist/io/url-drop.d.ts +2 -0
- package/dist/io/url-drop.js +40 -40
- package/dist/isosurface/Isosurface.svelte +700 -215
- package/dist/isosurface/Isosurface.svelte.d.ts +7 -1
- package/dist/isosurface/IsosurfaceControls.svelte +590 -116
- package/dist/isosurface/IsosurfaceControls.svelte.d.ts +1 -1
- package/dist/isosurface/VolumeSlice.svelte +224 -0
- package/dist/isosurface/VolumeSlice.svelte.d.ts +28 -0
- package/dist/isosurface/coloring.d.ts +20 -0
- package/dist/isosurface/coloring.js +118 -0
- package/dist/isosurface/geometry-worker-types.d.ts +38 -0
- package/dist/isosurface/geometry.worker.d.ts +1 -0
- package/dist/isosurface/geometry.worker.js +59 -0
- package/dist/isosurface/grid.d.ts +10 -0
- package/dist/isosurface/grid.js +31 -0
- package/dist/isosurface/index.d.ts +4 -0
- package/dist/isosurface/index.js +4 -0
- package/dist/isosurface/parse-vaspwave.d.ts +3 -0
- package/dist/isosurface/parse-vaspwave.js +138 -0
- package/dist/isosurface/parse.js +6 -6
- package/dist/isosurface/profile.d.ts +12 -0
- package/dist/isosurface/profile.js +19 -0
- package/dist/isosurface/sampling.d.ts +34 -0
- package/dist/isosurface/sampling.js +408 -0
- package/dist/isosurface/slice-rendering.d.ts +13 -0
- package/dist/isosurface/slice-rendering.js +79 -0
- package/dist/isosurface/slice.d.ts +22 -2
- package/dist/isosurface/slice.js +200 -116
- package/dist/isosurface/types.d.ts +24 -1
- package/dist/isosurface/types.js +120 -8
- package/dist/json-path.d.ts +4 -0
- package/dist/json-path.js +89 -0
- package/dist/labels.d.ts +6 -2
- package/dist/labels.js +44 -14
- package/dist/layout/FullscreenButton.svelte +2 -1
- package/dist/layout/FullscreenToggle.svelte +10 -4
- package/dist/layout/InfoCard.svelte +8 -21
- 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 +57 -62
- package/dist/layout/SettingsSection.svelte.d.ts +6 -7
- package/dist/layout/SubpageGrid.svelte +3 -1
- package/dist/layout/ViewerChrome.svelte +16 -11
- package/dist/layout/ViewerChrome.svelte.d.ts +2 -1
- package/dist/layout/fullscreen.js +3 -5
- package/dist/layout/fullscreen.svelte.js +1 -2
- package/dist/layout/index.d.ts +1 -0
- package/dist/layout/index.js +1 -0
- package/dist/layout/json-tree/JsonNode.svelte +22 -59
- package/dist/layout/json-tree/JsonTree.svelte +101 -172
- package/dist/layout/json-tree/JsonValue.svelte +9 -32
- package/dist/layout/json-tree/utils.d.ts +0 -3
- package/dist/layout/json-tree/utils.js +50 -188
- package/dist/marching-cubes.d.ts +8 -1
- package/dist/marching-cubes.js +115 -48
- package/dist/math.d.ts +5 -2
- package/dist/math.js +48 -38
- package/dist/overlays/ContextMenu.svelte +19 -34
- package/dist/overlays/CopyButton.svelte +11 -5
- package/dist/overlays/DragControlTab.svelte +6 -1
- package/dist/overlays/DraggablePane.svelte +110 -74
- package/dist/overlays/DraggablePane.svelte.d.ts +2 -1
- package/dist/overlays/GlassChip.svelte +32 -0
- package/dist/overlays/GlassChip.svelte.d.ts +8 -0
- package/dist/overlays/InfoPaneCards.svelte +11 -23
- package/dist/overlays/index.d.ts +7 -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 +113 -145
- package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
- package/dist/periodic-table/PeriodicTableControls.svelte +37 -115
- package/dist/periodic-table/TableInset.svelte +9 -4
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +68 -105
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
- package/dist/phase-diagram/PhaseDiagramControls.svelte +70 -94
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +1 -1
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +2 -1
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +12 -12
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
- package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
- package/dist/phase-diagram/build-diagram.js +4 -9
- package/dist/phase-diagram/diagram-input.d.ts +1 -2
- package/dist/phase-diagram/parse.js +15 -15
- package/dist/phase-diagram/svg-to-diagram.js +28 -27
- package/dist/phase-diagram/utils.js +2 -3
- package/dist/plot/bar/BarPlot.svelte +461 -426
- package/dist/plot/bar/BarPlot.svelte.d.ts +2 -0
- package/dist/plot/bar/BarPlotControls.svelte +1 -3
- package/dist/plot/bar/BarPlotControls.svelte.d.ts +4 -6
- package/dist/plot/bar/SpacegroupBarPlot.svelte +46 -77
- package/dist/plot/bar/data.d.ts +5 -4
- package/dist/plot/bar/data.js +2 -1
- package/dist/plot/box/BoxPlot.svelte +322 -226
- package/dist/plot/box/BoxPlot.svelte.d.ts +2 -0
- package/dist/plot/box/Violin.svelte.d.ts +1 -0
- package/dist/plot/box/box-plot.js +1 -1
- package/dist/plot/core/auto-place.d.ts +1 -1
- package/dist/plot/core/auto-place.js +2 -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 +101 -106
- 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 +18 -9
- package/dist/plot/core/components/Line.svelte.d.ts +2 -0
- package/dist/plot/core/components/PlotAxis.svelte +40 -17
- package/dist/plot/core/components/PlotControls.svelte +65 -41
- 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 +54 -57
- package/dist/plot/core/components/ReferencePlane.svelte +7 -8
- 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 +27 -474
- package/dist/plot/core/data-transform.d.ts +1 -2
- package/dist/plot/core/data-transform.js +9 -15
- package/dist/plot/core/fill-utils.d.ts +3 -1
- package/dist/plot/core/fill-utils.js +28 -6
- package/dist/plot/core/index.d.ts +1 -0
- package/dist/plot/core/index.js +1 -0
- package/dist/plot/core/interactions.js +0 -2
- package/dist/plot/core/layout.d.ts +15 -6
- package/dist/plot/core/layout.js +57 -38
- 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 +2 -4
- package/dist/plot/core/pan-zoom.svelte.js +34 -17
- package/dist/plot/core/placed-tween.svelte.d.ts +3 -0
- package/dist/plot/core/placed-tween.svelte.js +68 -21
- package/dist/plot/core/reference-line.js +1 -1
- package/dist/plot/core/scales.d.ts +23 -0
- package/dist/plot/core/scales.js +39 -13
- package/dist/plot/core/svg.js +0 -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 +29 -324
- package/dist/plot/core/types.js +23 -20
- package/dist/plot/core/utils/hierarchy-chart.d.ts +52 -0
- package/dist/plot/core/utils/hierarchy-chart.js +191 -0
- package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
- package/dist/plot/core/utils/hierarchy-labels.js +100 -0
- package/dist/plot/core/utils/label-placement.js +2 -2
- package/dist/plot/histogram/Histogram.svelte +314 -340
- package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
- package/dist/plot/histogram/HistogramControls.svelte +30 -28
- 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 +78 -69
- package/dist/plot/sankey/Sankey.svelte.d.ts +2 -2
- package/dist/plot/sankey/SankeyControls.svelte +22 -16
- package/dist/plot/sankey/sankey.js +13 -9
- package/dist/plot/scatter/BinnedScatterPlot.svelte +311 -141
- package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +7 -0
- package/dist/plot/scatter/ElementScatter.svelte +4 -1
- package/dist/plot/scatter/ScatterPlot.svelte +517 -410
- package/dist/plot/scatter/ScatterPlot.svelte.d.ts +2 -0
- 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/adaptive-density.d.ts +1 -1
- package/dist/plot/scatter/adaptive-density.js +36 -20
- package/dist/plot/scatter/binned-scatter-types.d.ts +3 -2
- package/dist/plot/scatter/binned-scatter-types.js +6 -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 +25 -34
- package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +2 -2
- package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +8 -5
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +113 -116
- package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +2 -2
- package/dist/plot/scatter-3d/Surface3D.svelte +4 -13
- package/dist/plot/sunburst/Sunburst.svelte +269 -347
- package/dist/plot/sunburst/Sunburst.svelte.d.ts +2 -2
- 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 +10 -3
- package/dist/plot/treemap/Treemap.svelte +1022 -0
- package/dist/plot/treemap/Treemap.svelte.d.ts +90 -0
- package/dist/plot/treemap/index.d.ts +4 -0
- package/dist/plot/treemap/index.js +4 -0
- package/dist/plot/treemap/labels.d.ts +38 -0
- package/dist/plot/treemap/labels.js +80 -0
- package/dist/plot/treemap/treemap.d.ts +28 -0
- package/dist/plot/treemap/treemap.js +102 -0
- package/dist/rdf/RdfPlot.svelte +37 -59
- package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
- package/dist/rdf/calc-rdf.js +63 -52
- package/dist/rdf/index.d.ts +0 -1
- package/dist/sanitize.js +85 -27
- package/dist/scene/SceneCamera.svelte +1 -1
- package/dist/scene/SceneCamera.svelte.d.ts +1 -1
- package/dist/scene/bind-renderer.svelte.js +14 -6
- package/dist/scene/index.d.ts +1 -2
- package/dist/scene/index.js +1 -1
- package/dist/scene/{props.js → props.svelte.js} +15 -1
- package/dist/settings.d.ts +19 -9
- package/dist/settings.js +229 -525
- package/dist/spectral/Bands.svelte +207 -221
- package/dist/spectral/BandsAndDos.svelte +11 -9
- package/dist/spectral/BrillouinBandsDos.svelte +19 -42
- package/dist/spectral/Dos.svelte +92 -93
- package/dist/spectral/helpers.d.ts +3 -3
- package/dist/spectral/helpers.js +65 -140
- package/dist/state.svelte.js +5 -18
- package/dist/structure/Arrow.svelte +5 -18
- package/dist/structure/ArrowInstances.svelte +160 -0
- package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
- package/dist/structure/AtomLegend.svelte +120 -85
- package/dist/structure/AtomLegend.svelte.d.ts +2 -3
- package/dist/structure/Bond.svelte +31 -23
- package/dist/structure/CanvasTooltip.svelte +15 -3
- package/dist/structure/CellSelect.svelte +45 -35
- 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 +636 -504
- package/dist/structure/Structure.svelte.d.ts +4 -2
- package/dist/structure/StructureCarousel.svelte +637 -0
- package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
- package/dist/structure/StructureControls.svelte +165 -425
- package/dist/structure/StructureControls.svelte.d.ts +1 -1
- package/dist/structure/StructureExportPane.svelte +17 -21
- package/dist/structure/StructureInfoPane.svelte +128 -133
- package/dist/structure/StructureInfoPane.svelte.d.ts +1 -1
- package/dist/structure/StructureScene.svelte +535 -578
- package/dist/structure/StructureScene.svelte.d.ts +6 -2
- package/dist/structure/StructureViewport.svelte +451 -0
- package/dist/structure/StructureViewport.svelte.d.ts +65 -0
- package/dist/structure/atom-label-placement.d.ts +16 -12
- package/dist/structure/atom-label-placement.js +70 -37
- package/dist/structure/atom-properties.d.ts +2 -0
- package/dist/structure/atom-properties.js +105 -38
- package/dist/structure/bond-order-perception.js +3 -8
- package/dist/structure/bonding.d.ts +9 -3
- package/dist/structure/bonding.js +95 -46
- package/dist/structure/edit-history.d.ts +6 -0
- package/dist/structure/edit-history.js +27 -0
- package/dist/structure/export.d.ts +1 -0
- package/dist/structure/export.js +89 -105
- package/dist/structure/format-detect.d.ts +1 -0
- package/dist/structure/format-detect.js +20 -0
- package/dist/structure/geometry.d.ts +9 -0
- package/dist/structure/geometry.js +27 -0
- package/dist/structure/index.d.ts +16 -1
- package/dist/structure/index.js +15 -10
- package/dist/structure/measure.d.ts +1 -1
- package/dist/structure/measure.js +6 -12
- package/dist/structure/parse.d.ts +2 -1
- package/dist/structure/parse.js +272 -313
- package/dist/structure/partial-occupancy.js +10 -5
- package/dist/structure/pbc.js +85 -107
- package/dist/structure/polyhedra.d.ts +0 -1
- package/dist/structure/polyhedra.js +7 -21
- package/dist/structure/prop-groups.d.ts +85 -0
- package/dist/structure/prop-groups.js +18 -0
- package/dist/structure/supercell.d.ts +1 -2
- package/dist/structure/supercell.js +7 -13
- package/dist/symmetry/SymmetryElements.svelte +11 -15
- package/dist/symmetry/SymmetryStats.svelte +55 -71
- package/dist/symmetry/WyckoffTable.svelte +10 -28
- package/dist/symmetry/cell-transform.js +6 -14
- package/dist/symmetry/index.d.ts +1 -0
- package/dist/symmetry/index.js +13 -10
- package/dist/symmetry/spacegroups.js +3 -2
- package/dist/table/HeatmapTable.svelte +1142 -447
- package/dist/table/HeatmapTable.svelte.d.ts +12 -2
- package/dist/table/ToggleMenu.svelte +168 -53
- package/dist/table/ToggleMenu.svelte.d.ts +1 -1
- 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/embedded.d.ts +18 -0
- package/dist/theme/embedded.js +206 -0
- package/dist/theme/index.d.ts +5 -5
- package/dist/theme/index.js +5 -12
- package/dist/theme/themes.mjs +44 -66
- package/dist/tooltip/KCoords.svelte +4 -1
- package/dist/tooltip/TooltipContent.svelte +3 -6
- package/dist/tooltip/TooltipContent.svelte.d.ts +1 -1
- package/dist/tooltip/index.d.ts +8 -1
- package/dist/trajectory/Trajectory.svelte +613 -386
- package/dist/trajectory/Trajectory.svelte.d.ts +1 -1
- package/dist/trajectory/TrajectoryError.svelte +12 -74
- package/dist/trajectory/TrajectoryExportPane.svelte +14 -32
- package/dist/trajectory/TrajectoryInfoPane.svelte +127 -164
- package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +2 -1
- package/dist/trajectory/extract.js +61 -49
- package/dist/trajectory/format-detect.d.ts +2 -0
- package/dist/trajectory/format-detect.js +17 -13
- package/dist/trajectory/frame-reader.d.ts +2 -0
- package/dist/trajectory/frame-reader.js +35 -32
- package/dist/trajectory/helpers.d.ts +2 -0
- package/dist/trajectory/helpers.js +34 -56
- package/dist/trajectory/index.d.ts +1 -0
- package/dist/trajectory/index.js +5 -8
- package/dist/trajectory/parse/ase.js +1 -1
- 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 +6 -6
- package/dist/trajectory/parse/index.js +25 -33
- package/dist/trajectory/parse/lammps.js +8 -12
- package/dist/trajectory/parse/vasp.js +10 -7
- 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 +4 -0
- package/dist/trajectory/parse/vaspout-h5.js +281 -0
- package/dist/trajectory/parse/xyz.js +59 -9
- package/dist/trajectory/plotting.d.ts +8 -9
- package/dist/trajectory/plotting.js +113 -64
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +7 -0
- package/dist/xrd/XrdPlot.svelte +79 -118
- package/dist/xrd/broadening.js +2 -1
- package/dist/xrd/calc-xrd.js +24 -62
- package/dist/xrd/parse.d.ts +0 -1
- package/dist/xrd/parse.js +69 -95
- package/package.json +94 -34
- package/readme.md +6 -5
- package/dist/api/mp.d.ts +0 -6
- package/dist/api/mp.js +0 -22
- package/dist/plot/sunburst/SunburstControls.svelte +0 -200
- package/dist/scene/types.d.ts +0 -26
- package/dist/tooltip/types.d.ts +0 -8
- package/dist/trajectory/constants.d.ts +0 -6
- package/dist/trajectory/constants.js +0 -11
- /package/dist/{scene/types.js → file-viewer/host-protocol.js} +0 -0
- /package/dist/{tooltip/types.js → isosurface/geometry-worker-types.js} +0 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
// Theme Detection for Embedded MatterViz Views
|
|
2
|
+
import { luminance } from '../colors';
|
|
3
|
+
import { COLOR_THEMES } from './';
|
|
4
|
+
// oxlint-disable-next-line import/no-unassigned-import -- registers built-in themes
|
|
5
|
+
import './themes.mjs';
|
|
6
|
+
// Per-element watcher (callback + last-seen theme for dedup + the element's own
|
|
7
|
+
// Shadow-host observer). Widgets can mount in different roots with different
|
|
8
|
+
// themes, so each is tracked and torn down independently.
|
|
9
|
+
const element_watchers = new Map();
|
|
10
|
+
// Shared document observer + media-query listener, created with the first widget
|
|
11
|
+
// and disconnected with the last (counted via element_watchers.size).
|
|
12
|
+
let doc_observer = null;
|
|
13
|
+
let media_query_listener = null;
|
|
14
|
+
// Pending debounce timer shared across all mutation sources; cleared before each
|
|
15
|
+
// reschedule so bursts of mutations collapse into a single notify_theme_change.
|
|
16
|
+
let notify_timer = null;
|
|
17
|
+
const observe_opts = { attributes: true, attributeFilter: [`class`, `data-theme`] };
|
|
18
|
+
export function detect_parent_theme(target_element) {
|
|
19
|
+
try {
|
|
20
|
+
// Check Shadow DOM context
|
|
21
|
+
if (target_element) {
|
|
22
|
+
const root_node = target_element.getRootNode();
|
|
23
|
+
if (root_node !== document && root_node instanceof ShadowRoot) {
|
|
24
|
+
const theme = check_element_hierarchy(root_node.host);
|
|
25
|
+
if (theme)
|
|
26
|
+
return theme;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
// Check document theme indicators
|
|
30
|
+
const theme_classes = [
|
|
31
|
+
`dark-theme`,
|
|
32
|
+
`light-theme`,
|
|
33
|
+
`vscode-dark`,
|
|
34
|
+
`vscode-light`,
|
|
35
|
+
`dark`,
|
|
36
|
+
`light`,
|
|
37
|
+
];
|
|
38
|
+
for (const cls of theme_classes) {
|
|
39
|
+
if (document.body.classList.contains(cls)) {
|
|
40
|
+
return cls.includes(`dark`) ? `dark` : `light`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// System preference
|
|
44
|
+
if (globalThis.matchMedia) {
|
|
45
|
+
if (globalThis.matchMedia(`(prefers-color-scheme: dark)`).matches)
|
|
46
|
+
return `dark`;
|
|
47
|
+
if (globalThis.matchMedia(`(prefers-color-scheme: light)`).matches)
|
|
48
|
+
return `light`;
|
|
49
|
+
}
|
|
50
|
+
// Jupyter Lab theme API
|
|
51
|
+
const jupyter_theme = globalThis.jupyterlab?.application?.shell?.dataset?.theme;
|
|
52
|
+
if (jupyter_theme) {
|
|
53
|
+
return jupyter_theme.includes(`dark`) ? `dark` : `light`;
|
|
54
|
+
}
|
|
55
|
+
// Jupyter CSS custom properties
|
|
56
|
+
const jp_bg = getComputedStyle(document.documentElement).getPropertyValue(`--jp-layout-color0`);
|
|
57
|
+
if (jp_bg) {
|
|
58
|
+
const is_dark = is_dark_color(jp_bg);
|
|
59
|
+
if (is_dark !== null)
|
|
60
|
+
return is_dark ? `dark` : `light`;
|
|
61
|
+
}
|
|
62
|
+
// Analyze background colors
|
|
63
|
+
const backgrounds = [
|
|
64
|
+
getComputedStyle(document.body).backgroundColor,
|
|
65
|
+
getComputedStyle(document.documentElement).backgroundColor,
|
|
66
|
+
];
|
|
67
|
+
for (const bg of backgrounds) {
|
|
68
|
+
const is_dark = is_dark_color(bg);
|
|
69
|
+
if (is_dark !== null)
|
|
70
|
+
return is_dark ? `dark` : `light`;
|
|
71
|
+
}
|
|
72
|
+
return `light`;
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
console.warn(`Theme detection failed, defaulting to light:`, error);
|
|
76
|
+
return `light`;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function check_element_hierarchy(element) {
|
|
80
|
+
let current_element = element;
|
|
81
|
+
while (current_element) {
|
|
82
|
+
// Check classes
|
|
83
|
+
const class_list = current_element.classList;
|
|
84
|
+
if (class_list.contains(`dark-theme`) ||
|
|
85
|
+
class_list.contains(`vscode-dark`) ||
|
|
86
|
+
class_list.contains(`dark`))
|
|
87
|
+
return `dark`;
|
|
88
|
+
if (class_list.contains(`light-theme`) ||
|
|
89
|
+
class_list.contains(`vscode-light`) ||
|
|
90
|
+
class_list.contains(`light`))
|
|
91
|
+
return `light`;
|
|
92
|
+
// Check data attributes
|
|
93
|
+
const data_theme = current_element.getAttribute(`data-theme`);
|
|
94
|
+
if (data_theme === `dark`)
|
|
95
|
+
return `dark`;
|
|
96
|
+
if (data_theme === `light`)
|
|
97
|
+
return `light`;
|
|
98
|
+
// Check computed styles
|
|
99
|
+
const computed_style = getComputedStyle(current_element);
|
|
100
|
+
const bg_color = computed_style.backgroundColor;
|
|
101
|
+
const text_color = computed_style.color;
|
|
102
|
+
const is_dark = is_dark_color(bg_color);
|
|
103
|
+
if (is_dark !== null)
|
|
104
|
+
return is_dark ? `dark` : `light`;
|
|
105
|
+
const text_is_dark = is_dark_color(text_color);
|
|
106
|
+
if (text_is_dark !== null)
|
|
107
|
+
return text_is_dark ? `light` : `dark`;
|
|
108
|
+
current_element = current_element.parentElement;
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
function is_dark_color(color) {
|
|
113
|
+
if (!color || [`transparent`, `rgba(0, 0, 0, 0)`, `initial`, `inherit`].includes(color)) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
return luminance(color) < 0.5;
|
|
117
|
+
}
|
|
118
|
+
function notify_theme_change() {
|
|
119
|
+
notify_timer = null;
|
|
120
|
+
// Re-detect every element's theme; notify only those whose theme changed.
|
|
121
|
+
for (const [element, watcher] of element_watchers) {
|
|
122
|
+
const new_theme = detect_parent_theme(element);
|
|
123
|
+
if (new_theme !== watcher.theme) {
|
|
124
|
+
watcher.theme = new_theme;
|
|
125
|
+
watcher.callback(new_theme);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const schedule_notify = () => {
|
|
130
|
+
// Debounce: cancel any pending notify so only the latest mutation burst fires.
|
|
131
|
+
if (notify_timer)
|
|
132
|
+
clearTimeout(notify_timer);
|
|
133
|
+
notify_timer = setTimeout(notify_theme_change, 10);
|
|
134
|
+
};
|
|
135
|
+
function on_dom_mutation(mutations) {
|
|
136
|
+
if (mutations.some((mut) => mut.type === `attributes` &&
|
|
137
|
+
(mut.attributeName === `class` || mut.attributeName === `data-theme`)))
|
|
138
|
+
schedule_notify();
|
|
139
|
+
}
|
|
140
|
+
// Register a widget element + its theme-change callback. Returns a disposer that
|
|
141
|
+
// removes this element's subscriber and Shadow-host observer and, once the last
|
|
142
|
+
// widget is gone, disconnects the shared document/media-query watchers (fixing a
|
|
143
|
+
// leak where observers stayed attached for the page's lifetime).
|
|
144
|
+
export function watch_theme(target_element, callback) {
|
|
145
|
+
try {
|
|
146
|
+
// Shared document-level + system-preference watchers (created once for all).
|
|
147
|
+
if (!doc_observer) {
|
|
148
|
+
doc_observer = new MutationObserver(on_dom_mutation);
|
|
149
|
+
doc_observer.observe(document.documentElement, observe_opts);
|
|
150
|
+
if (document.body)
|
|
151
|
+
doc_observer.observe(document.body, observe_opts);
|
|
152
|
+
}
|
|
153
|
+
if (!media_query_listener && globalThis.matchMedia) {
|
|
154
|
+
media_query_listener = globalThis.matchMedia(`(prefers-color-scheme: dark)`);
|
|
155
|
+
media_query_listener.addEventListener(`change`, schedule_notify);
|
|
156
|
+
}
|
|
157
|
+
// Shadow DOM hosts (e.g. marimo cells) carry the theme class/data-theme but
|
|
158
|
+
// aren't reachable from document, so observe each widget's host individually
|
|
159
|
+
// (not just the first widget's).
|
|
160
|
+
let shadow_observer = null;
|
|
161
|
+
const root_node = target_element.getRootNode();
|
|
162
|
+
if (root_node instanceof ShadowRoot) {
|
|
163
|
+
shadow_observer = new MutationObserver(on_dom_mutation);
|
|
164
|
+
shadow_observer.observe(root_node.host, observe_opts);
|
|
165
|
+
}
|
|
166
|
+
element_watchers.set(target_element, {
|
|
167
|
+
callback,
|
|
168
|
+
theme: detect_parent_theme(target_element),
|
|
169
|
+
shadow_observer,
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
console.warn(`Failed to setup theme watchers:`, error);
|
|
174
|
+
}
|
|
175
|
+
return () => {
|
|
176
|
+
element_watchers.get(target_element)?.shadow_observer?.disconnect();
|
|
177
|
+
element_watchers.delete(target_element);
|
|
178
|
+
if (element_watchers.size > 0)
|
|
179
|
+
return; // other widgets still need shared watchers
|
|
180
|
+
if (notify_timer) {
|
|
181
|
+
clearTimeout(notify_timer); // drop a pending notify; no widgets left to update
|
|
182
|
+
notify_timer = null;
|
|
183
|
+
}
|
|
184
|
+
doc_observer?.disconnect();
|
|
185
|
+
doc_observer = null;
|
|
186
|
+
media_query_listener?.removeEventListener(`change`, schedule_notify);
|
|
187
|
+
media_query_listener = null;
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
export function get_theme_css(theme_type, is_shadow_dom = false) {
|
|
191
|
+
const theme_name = COLOR_THEMES[theme_type];
|
|
192
|
+
// Get theme data (matterviz/themes.js sets this)
|
|
193
|
+
const theme = globalThis.MATTERVIZ_THEMES?.[theme_name];
|
|
194
|
+
const css_map = globalThis.MATTERVIZ_CSS_MAP;
|
|
195
|
+
if (!theme || !css_map) {
|
|
196
|
+
console.warn(`Theme data not available, skipping theme application`);
|
|
197
|
+
return ``;
|
|
198
|
+
}
|
|
199
|
+
const css_vars = Object.entries(theme)
|
|
200
|
+
.map(([key, value]) => (css_map[key] ? `${css_map[key]}: ${value};` : ``))
|
|
201
|
+
.filter(Boolean)
|
|
202
|
+
.join(`\n\t`);
|
|
203
|
+
// Use :host for Shadow DOM, :root for regular DOM
|
|
204
|
+
const selector = is_shadow_dom ? `:host` : `:root`;
|
|
205
|
+
return `${selector} {\n\t${css_vars}\n}`;
|
|
206
|
+
}
|
package/dist/theme/index.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
declare global {
|
|
2
|
+
var MATTERVIZ_THEMES: Record<string, Record<string, string>> | undefined;
|
|
3
|
+
var MATTERVIZ_CSS_MAP: Record<string, string> | undefined;
|
|
4
|
+
}
|
|
5
|
+
export declare const THEME_STORAGE_KEY = "matterviz-theme";
|
|
1
6
|
export declare const COLOR_THEMES: {
|
|
2
7
|
readonly light: "light";
|
|
3
8
|
readonly dark: "dark";
|
|
@@ -22,8 +27,3 @@ export declare const get_theme_preference: () => ThemeMode;
|
|
|
22
27
|
export declare const save_theme_preference: (mode: ThemeMode) => void;
|
|
23
28
|
export declare const get_system_mode: () => ThemeType;
|
|
24
29
|
export declare const apply_theme_to_dom: (mode: ThemeMode) => void;
|
|
25
|
-
export declare const light_theme: () => any;
|
|
26
|
-
export declare const dark_theme: () => any;
|
|
27
|
-
export declare const white_theme: () => any;
|
|
28
|
-
export declare const black_theme: () => any;
|
|
29
|
-
export declare const get_theme_by_name: (name: ThemeName) => any;
|
package/dist/theme/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Theme System for MatterViz
|
|
2
2
|
const is_browser = typeof window !== `undefined`;
|
|
3
|
-
const
|
|
3
|
+
export const THEME_STORAGE_KEY = `matterviz-theme`;
|
|
4
4
|
// Core theme constants
|
|
5
5
|
export const COLOR_THEMES = {
|
|
6
6
|
light: `light`,
|
|
@@ -32,7 +32,7 @@ export const get_theme_preference = () => {
|
|
|
32
32
|
if (!is_browser)
|
|
33
33
|
return AUTO_THEME;
|
|
34
34
|
try {
|
|
35
|
-
const saved = localStorage[
|
|
35
|
+
const saved = localStorage[THEME_STORAGE_KEY];
|
|
36
36
|
return is_valid_theme_mode(saved ?? ``) ? saved : AUTO_THEME;
|
|
37
37
|
}
|
|
38
38
|
catch {
|
|
@@ -41,13 +41,13 @@ export const get_theme_preference = () => {
|
|
|
41
41
|
};
|
|
42
42
|
export const save_theme_preference = (mode) => {
|
|
43
43
|
try {
|
|
44
|
-
localStorage[
|
|
44
|
+
localStorage[THEME_STORAGE_KEY] = mode;
|
|
45
45
|
}
|
|
46
46
|
catch {
|
|
47
47
|
// Silently fail if localStorage is unavailable
|
|
48
48
|
}
|
|
49
49
|
};
|
|
50
|
-
export const get_system_mode = () => is_browser && matchMedia(`(prefers-color-scheme: dark)`)
|
|
50
|
+
export const get_system_mode = () => is_browser && globalThis.matchMedia?.(`(prefers-color-scheme: dark)`)?.matches
|
|
51
51
|
? COLOR_THEMES.dark
|
|
52
52
|
: COLOR_THEMES.light;
|
|
53
53
|
export const apply_theme_to_dom = (mode) => {
|
|
@@ -68,12 +68,5 @@ export const apply_theme_to_dom = (mode) => {
|
|
|
68
68
|
});
|
|
69
69
|
root.setAttribute(`data-theme`, resolved);
|
|
70
70
|
// Set color-scheme to ensure form elements respect the theme
|
|
71
|
-
|
|
72
|
-
root.style.setProperty(`color-scheme`, color_scheme);
|
|
71
|
+
root.style.setProperty(`color-scheme`, THEME_TYPE[resolved]);
|
|
73
72
|
};
|
|
74
|
-
// Theme getters
|
|
75
|
-
export const light_theme = () => globalThis.MATTERVIZ_THEMES?.[COLOR_THEMES.light] ?? {};
|
|
76
|
-
export const dark_theme = () => globalThis.MATTERVIZ_THEMES?.[COLOR_THEMES.dark] ?? {};
|
|
77
|
-
export const white_theme = () => globalThis.MATTERVIZ_THEMES?.[COLOR_THEMES.white] ?? {};
|
|
78
|
-
export const black_theme = () => globalThis.MATTERVIZ_THEMES?.[COLOR_THEMES.black] ?? {};
|
|
79
|
-
export const get_theme_by_name = (name) => globalThis.MATTERVIZ_THEMES?.[name] ?? {};
|
package/dist/theme/themes.mjs
CHANGED
|
@@ -2,23 +2,21 @@
|
|
|
2
2
|
// Note: This file needs to be symlinked into static/ to be importable by app.html before initial page render to prevent flashing colors before client-side JS kicks in. It also needs to be in src/lib so it gets packaged and shipped to NPM for use by the anywidgets in pymatviz.
|
|
3
3
|
// Can't use exports in this file as would then require type="module" in app.html to import which would defer until after HTML is ready (module files are always deferred).
|
|
4
4
|
|
|
5
|
-
// Text colors
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const page_bg_light = `#f1f3f5` // Light gray
|
|
13
|
-
const page_bg_dark = `#18171c` // Very dark blue
|
|
14
|
-
const page_bg_white = `#ffffff` // Pure white
|
|
15
|
-
const page_bg_black = `#000000` // Pure black
|
|
5
|
+
// Text colors (also GitHub corner bg + plot legend item color)
|
|
6
|
+
const txt = {
|
|
7
|
+
light: `#374151`, // Dark gray
|
|
8
|
+
dark: `#eee`, // Light gray
|
|
9
|
+
white: `#000000`, // Black
|
|
10
|
+
black: `#f5f5f5`, // Off-white
|
|
11
|
+
}
|
|
16
12
|
|
|
17
|
-
//
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
13
|
+
// Page backgrounds (also fullscreen structure bg + GitHub corner fg)
|
|
14
|
+
const page_bg = {
|
|
15
|
+
light: `#f1f3f5`, // Light gray
|
|
16
|
+
dark: `#18171c`, // Very dark blue
|
|
17
|
+
white: `#ffffff`, // Pure white
|
|
18
|
+
black: `#000000`, // Pure black
|
|
19
|
+
}
|
|
22
20
|
|
|
23
21
|
// Accents
|
|
24
22
|
const acc_light = `#4f46e5` // Indigo
|
|
@@ -26,7 +24,7 @@ const acc_dark = `cornflowerblue` // Light blue
|
|
|
26
24
|
const acc_white = `#2563eb` // Blue
|
|
27
25
|
const acc_black = `cornflowerblue`
|
|
28
26
|
|
|
29
|
-
// Helper
|
|
27
|
+
// Helper for common button-like background patterns
|
|
30
28
|
const btn_bg = (dark_op, light_op) => ({
|
|
31
29
|
light: `rgba(0, 0, 0, ${light_op})`,
|
|
32
30
|
dark: `rgba(255, 255, 255, ${dark_op})`,
|
|
@@ -34,22 +32,21 @@ const btn_bg = (dark_op, light_op) => ({
|
|
|
34
32
|
black: `rgba(255, 255, 255, ${dark_op})`,
|
|
35
33
|
})
|
|
36
34
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
35
|
+
// Slight contrast shading drawn behind plot SVGs and structure canvases so they read
|
|
36
|
+
// as panels sitting on top of the page background. Shared so a plot and a structure
|
|
37
|
+
// shown side by side (e.g. trajectory view) get an identical tint. Kept subtle; light
|
|
38
|
+
// modes darken, dark modes lighten.
|
|
39
|
+
const canvas_bg = {
|
|
40
|
+
light: `rgba(0, 0, 0, 0.03)`,
|
|
41
|
+
dark: `rgba(255, 255, 255, 0.07)`,
|
|
42
|
+
white: `rgba(0, 0, 0, 0.025)`,
|
|
43
|
+
black: `rgba(255, 255, 255, 0.1)`,
|
|
44
|
+
}
|
|
43
45
|
|
|
44
46
|
const themes = {
|
|
45
47
|
// Core colors
|
|
46
|
-
'page-bg':
|
|
47
|
-
|
|
48
|
-
dark: page_bg_dark,
|
|
49
|
-
white: page_bg_white,
|
|
50
|
-
black: page_bg_black,
|
|
51
|
-
},
|
|
52
|
-
'text-color': { light: txt_light, dark: txt_dark, white: txt_white, black: txt_black },
|
|
48
|
+
'page-bg': page_bg,
|
|
49
|
+
'text-color': txt,
|
|
53
50
|
'surface-bg': {
|
|
54
51
|
light: `rgb(237, 238, 239)`,
|
|
55
52
|
dark: `rgb(33, 36, 43)`,
|
|
@@ -57,10 +54,10 @@ const themes = {
|
|
|
57
54
|
black: `rgb(19, 19, 19)`,
|
|
58
55
|
},
|
|
59
56
|
'border-color': {
|
|
60
|
-
light:
|
|
61
|
-
dark:
|
|
62
|
-
white:
|
|
63
|
-
black:
|
|
57
|
+
light: `#d1d5db`, // Gray border
|
|
58
|
+
dark: `#404040`, // Dark gray border
|
|
59
|
+
white: `#d1d5db`,
|
|
60
|
+
black: `#404040`,
|
|
64
61
|
},
|
|
65
62
|
'accent-color': {
|
|
66
63
|
light: acc_light,
|
|
@@ -147,7 +144,12 @@ const themes = {
|
|
|
147
144
|
'btn-disabled-bg': btn_bg(0.1, 0.05),
|
|
148
145
|
|
|
149
146
|
// Tooltips
|
|
150
|
-
'tooltip-bg':
|
|
147
|
+
'tooltip-bg': {
|
|
148
|
+
light: `rgba(243, 244, 246, 0.95)`,
|
|
149
|
+
dark: `rgba(0, 40, 60, 0.95)`,
|
|
150
|
+
white: `rgba(255, 255, 255, 0.98)`,
|
|
151
|
+
black: `rgba(20, 20, 20, 0.98)`,
|
|
152
|
+
},
|
|
151
153
|
'canvas-tooltip-bg': {
|
|
152
154
|
light: `rgba(226, 232, 240, 0.96)`,
|
|
153
155
|
dark: `rgba(15, 23, 42, 0.96)`,
|
|
@@ -167,19 +169,10 @@ const themes = {
|
|
|
167
169
|
black: `1px solid rgba(255, 255, 255, 0.075)`,
|
|
168
170
|
},
|
|
169
171
|
|
|
170
|
-
//
|
|
171
|
-
'
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
white: `rgba(0, 0, 0, 0.01)`,
|
|
175
|
-
black: `rgba(255, 255, 255, 0.1)`,
|
|
176
|
-
},
|
|
177
|
-
'struct-bg-fullscreen': {
|
|
178
|
-
light: page_bg_light,
|
|
179
|
-
dark: page_bg_dark,
|
|
180
|
-
white: page_bg_white,
|
|
181
|
-
black: page_bg_black,
|
|
182
|
-
},
|
|
172
|
+
// Plot & structure canvas backgrounds (shared subtle panel shading)
|
|
173
|
+
'plot-bg': canvas_bg,
|
|
174
|
+
'struct-bg': canvas_bg,
|
|
175
|
+
'struct-bg-fullscreen': page_bg,
|
|
183
176
|
|
|
184
177
|
// Pane backgrounds (DraggablePane, etc.)
|
|
185
178
|
'pane-bg': {
|
|
@@ -250,26 +243,11 @@ const themes = {
|
|
|
250
243
|
white: `1px solid rgba(0, 0, 0, 0.1)`,
|
|
251
244
|
black: `1px solid rgba(255, 255, 255, 0.1)`,
|
|
252
245
|
},
|
|
253
|
-
'plot-legend-item-color':
|
|
254
|
-
light: txt_light,
|
|
255
|
-
dark: txt_dark,
|
|
256
|
-
white: txt_white,
|
|
257
|
-
black: txt_black,
|
|
258
|
-
},
|
|
246
|
+
'plot-legend-item-color': txt,
|
|
259
247
|
'plot-legend-item-hover-bg-color': btn_bg(0.1, 0.1),
|
|
260
248
|
|
|
261
|
-
'github-corner-color':
|
|
262
|
-
|
|
263
|
-
dark: page_bg_dark,
|
|
264
|
-
white: page_bg_white,
|
|
265
|
-
black: page_bg_black,
|
|
266
|
-
},
|
|
267
|
-
'github-corner-bg': {
|
|
268
|
-
light: txt_light,
|
|
269
|
-
dark: txt_dark,
|
|
270
|
-
white: txt_white,
|
|
271
|
-
black: txt_black,
|
|
272
|
-
},
|
|
249
|
+
'github-corner-color': page_bg,
|
|
250
|
+
'github-corner-bg': txt,
|
|
273
251
|
'github-corner-bg-hover': {
|
|
274
252
|
light: `#1e40af`, // Darker, more modest blue for light mode
|
|
275
253
|
dark: `#60a5fa`, // Lighter blue for dark mode
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
// - If tooltip is a config object, render prefix/suffix around the default content
|
|
5
5
|
// - Otherwise, render just the default content
|
|
6
6
|
import { sanitize_html } from '../sanitize'
|
|
7
|
+
import type { TooltipConfig } from './'
|
|
7
8
|
import type { Snippet } from 'svelte'
|
|
8
|
-
import type { TooltipConfig } from './types'
|
|
9
9
|
|
|
10
10
|
let {
|
|
11
11
|
data,
|
|
@@ -20,9 +20,7 @@
|
|
|
20
20
|
} = $props()
|
|
21
21
|
|
|
22
22
|
const is_snippet = $derived(typeof tooltip === `function`)
|
|
23
|
-
const config = $derived(
|
|
24
|
-
!is_snippet && tooltip ? (tooltip as TooltipConfig<T>) : null,
|
|
25
|
-
)
|
|
23
|
+
const config = $derived(!is_snippet && tooltip ? (tooltip as TooltipConfig<T>) : null)
|
|
26
24
|
const prefix = $derived(
|
|
27
25
|
typeof config?.prefix === `function` ? config.prefix(data) : config?.prefix,
|
|
28
26
|
)
|
|
@@ -47,8 +45,7 @@
|
|
|
47
45
|
.tooltip-prefix {
|
|
48
46
|
margin-bottom: 6px;
|
|
49
47
|
padding-bottom: 6px;
|
|
50
|
-
border-bottom: 1px solid
|
|
51
|
-
var(--tooltip-border, var(--border, rgba(128, 128, 128, 0.3)));
|
|
48
|
+
border-bottom: 1px solid var(--tooltip-border, var(--border, rgba(128, 128, 128, 0.3)));
|
|
52
49
|
}
|
|
53
50
|
.tooltip-suffix {
|
|
54
51
|
margin-top: 6px;
|
package/dist/tooltip/index.d.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
export type TooltipConfig<T> = {
|
|
3
|
+
prefix?: string | ((data: T) => string);
|
|
4
|
+
suffix?: string | ((data: T) => string);
|
|
5
|
+
};
|
|
6
|
+
export type TooltipProp<T, SnippetArgs extends unknown[] = [{
|
|
7
|
+
hover_data: T;
|
|
8
|
+
}]> = Snippet<SnippetArgs> | TooltipConfig<T>;
|
|
1
9
|
export { default as KCoords } from './KCoords.svelte';
|
|
2
10
|
export { default as TooltipContent } from './TooltipContent.svelte';
|
|
3
|
-
export type * from './types';
|