matterviz 0.3.4 → 0.3.6
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/.vscode/launch.json +13 -0
- package/.vscodeignore +7 -0
- package/dist/assets/STLExporter-BpTH3YHE.js +8 -0
- package/dist/assets/browser-DdDecX_W.js +1 -0
- package/dist/assets/export-qgn-H9y6.js +2 -0
- package/dist/assets/main-DiKYzti2.css +1 -0
- package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
- package/dist/extension.js +31293 -0
- package/dist/src/lib/FilePicker.svelte +360 -0
- package/dist/src/lib/MillerIndexInput.svelte +66 -0
- package/dist/src/lib/api/mp.ts +26 -0
- package/dist/src/lib/api/optimade.ts +204 -0
- package/dist/src/lib/app.css +247 -0
- package/dist/src/lib/brillouin/BrillouinZone.svelte +549 -0
- package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
- package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
- package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
- package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
- package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
- package/dist/src/lib/brillouin/compute.ts +529 -0
- package/dist/src/lib/brillouin/index.ts +8 -0
- package/dist/src/lib/brillouin/types.ts +51 -0
- package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
- package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
- package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
- package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
- package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
- package/dist/src/lib/chempot-diagram/color.ts +42 -0
- package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
- package/dist/src/lib/chempot-diagram/index.ts +6 -0
- package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
- package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
- package/dist/src/lib/chempot-diagram/types.ts +130 -0
- package/dist/src/lib/colors/index.ts +249 -0
- package/dist/src/lib/composition/BarChart.svelte +297 -0
- package/dist/src/lib/composition/BubbleChart.svelte +218 -0
- package/dist/src/lib/composition/Composition.svelte +165 -0
- package/dist/src/lib/composition/Formula.svelte +268 -0
- package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
- package/dist/src/lib/composition/PieChart.svelte +323 -0
- package/dist/src/lib/composition/format.ts +155 -0
- package/dist/src/lib/composition/index.ts +37 -0
- package/dist/src/lib/composition/parse.ts +605 -0
- package/dist/src/lib/constants.ts +134 -0
- package/dist/src/lib/controls.ts +42 -0
- package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
- package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
- package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
- package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
- package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
- package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
- package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
- package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
- package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
- package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
- package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
- package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
- package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
- package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
- package/dist/src/lib/convex-hull/helpers.ts +932 -0
- package/dist/src/lib/convex-hull/index.ts +202 -0
- package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
- package/dist/src/lib/convex-hull/types.ts +267 -0
- package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
- package/dist/src/lib/coordination/calc-coordination.ts +93 -0
- package/dist/src/lib/coordination/index.ts +9 -0
- package/dist/src/lib/effects.svelte.ts +48 -0
- package/dist/src/lib/element/BohrAtom.svelte +147 -0
- package/dist/src/lib/element/ElementHeading.svelte +26 -0
- package/dist/src/lib/element/ElementPhoto.svelte +57 -0
- package/dist/src/lib/element/ElementStats.svelte +80 -0
- package/dist/src/lib/element/ElementTile.svelte +484 -0
- package/dist/src/lib/element/data.json.gz.d.ts +4 -0
- package/dist/src/lib/element/data.ts +14 -0
- package/dist/src/lib/element/index.ts +8 -0
- package/dist/src/lib/element/types.ts +62 -0
- package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
- package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
- package/dist/src/lib/feedback/index.ts +4 -0
- package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
- package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
- package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
- package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
- package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
- package/dist/src/lib/fermi-surface/compute.ts +728 -0
- package/dist/src/lib/fermi-surface/constants.ts +32 -0
- package/dist/src/lib/fermi-surface/export.ts +64 -0
- package/dist/src/lib/fermi-surface/index.ts +14 -0
- package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
- package/dist/src/lib/fermi-surface/parse.ts +574 -0
- package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
- package/dist/src/lib/fermi-surface/types.ts +159 -0
- package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
- package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
- package/dist/src/lib/heatmap-matrix/index.ts +167 -0
- package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
- package/dist/src/lib/icons.ts +650 -0
- package/dist/src/lib/index.ts +61 -0
- package/dist/src/lib/io/decompress.ts +92 -0
- package/dist/src/lib/io/export.ts +385 -0
- package/dist/src/lib/io/fetch.ts +46 -0
- package/dist/src/lib/io/file-drop.ts +51 -0
- package/dist/src/lib/io/index.ts +7 -0
- package/dist/src/lib/io/is-binary.ts +24 -0
- package/dist/src/lib/io/types.ts +8 -0
- package/dist/src/lib/io/url-drop.ts +141 -0
- package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
- package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
- package/dist/src/lib/isosurface/index.ts +7 -0
- package/dist/src/lib/isosurface/parse.ts +656 -0
- package/dist/src/lib/isosurface/slice.ts +175 -0
- package/dist/src/lib/isosurface/types.ts +309 -0
- package/dist/src/lib/labels.ts +320 -0
- package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
- package/dist/src/lib/layout/InfoCard.svelte +120 -0
- package/dist/src/lib/layout/InfoTag.svelte +185 -0
- package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
- package/dist/src/lib/layout/SettingsSection.svelte +148 -0
- package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
- package/dist/src/lib/layout/fullscreen.ts +65 -0
- package/dist/src/lib/layout/index.ts +11 -0
- package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
- package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
- package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
- package/dist/src/lib/layout/json-tree/index.ts +3 -0
- package/dist/src/lib/layout/json-tree/types.ts +126 -0
- package/dist/src/lib/layout/json-tree/utils.ts +682 -0
- package/dist/src/lib/marching-cubes.ts +614 -0
- package/dist/src/lib/math.ts +1081 -0
- package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
- package/dist/src/lib/overlays/CopyButton.svelte +45 -0
- package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
- package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
- package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
- package/dist/src/lib/overlays/index.ts +3 -0
- package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
- package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
- package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
- package/dist/src/lib/periodic-table/index.ts +12 -0
- package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
- package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
- package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
- package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
- package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
- package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
- package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
- package/dist/src/lib/phase-diagram/colors.ts +58 -0
- package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
- package/dist/src/lib/phase-diagram/index.ts +13 -0
- package/dist/src/lib/phase-diagram/parse.ts +348 -0
- package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
- package/dist/src/lib/phase-diagram/types.ts +144 -0
- package/dist/src/lib/phase-diagram/utils.ts +775 -0
- package/dist/src/lib/plot/AxisLabel.svelte +51 -0
- package/dist/src/lib/plot/BarPlot.svelte +2113 -0
- package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
- package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
- package/dist/src/lib/plot/ColorBar.svelte +721 -0
- package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
- package/dist/src/lib/plot/ElementScatter.svelte +63 -0
- package/dist/src/lib/plot/FillArea.svelte +223 -0
- package/dist/src/lib/plot/Histogram.svelte +1558 -0
- package/dist/src/lib/plot/HistogramControls.svelte +212 -0
- package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
- package/dist/src/lib/plot/Line.svelte +84 -0
- package/dist/src/lib/plot/PlotAxis.svelte +169 -0
- package/dist/src/lib/plot/PlotControls.svelte +537 -0
- package/dist/src/lib/plot/PlotLegend.svelte +569 -0
- package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
- package/dist/src/lib/plot/PortalSelect.svelte +253 -0
- package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
- package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
- package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
- package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
- package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
- package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
- package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
- package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
- package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
- package/dist/src/lib/plot/Surface3D.svelte +197 -0
- package/dist/src/lib/plot/ZeroLines.svelte +97 -0
- package/dist/src/lib/plot/ZoomRect.svelte +23 -0
- package/dist/src/lib/plot/adaptive-density.ts +316 -0
- package/dist/src/lib/plot/auto-place.ts +184 -0
- package/dist/src/lib/plot/axis-utils.ts +122 -0
- package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
- package/dist/src/lib/plot/data-cleaning.ts +1069 -0
- package/dist/src/lib/plot/data-transform.ts +69 -0
- package/dist/src/lib/plot/defaults.ts +9 -0
- package/dist/src/lib/plot/fill-utils.ts +494 -0
- package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
- package/dist/src/lib/plot/index.ts +53 -0
- package/dist/src/lib/plot/interactions.ts +119 -0
- package/dist/src/lib/plot/layout.ts +425 -0
- package/dist/src/lib/plot/reference-line.ts +426 -0
- package/dist/src/lib/plot/scales.ts +654 -0
- package/dist/src/lib/plot/svg.ts +23 -0
- package/dist/src/lib/plot/types.ts +1144 -0
- package/dist/src/lib/plot/utils/label-placement.ts +541 -0
- package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
- package/dist/src/lib/plot/utils.ts +11 -0
- package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
- package/dist/src/lib/rdf/calc-rdf.ts +167 -0
- package/dist/src/lib/rdf/index.ts +27 -0
- package/dist/src/lib/sanitize.ts +126 -0
- package/dist/src/lib/settings.ts +1479 -0
- package/dist/src/lib/spectral/Bands.svelte +1040 -0
- package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
- package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
- package/dist/src/lib/spectral/Dos.svelte +697 -0
- package/dist/src/lib/spectral/helpers.ts +1381 -0
- package/dist/src/lib/spectral/index.ts +8 -0
- package/dist/src/lib/spectral/types.ts +112 -0
- package/dist/src/lib/state.svelte.ts +64 -0
- package/dist/src/lib/structure/Arrow.svelte +72 -0
- package/dist/src/lib/structure/AtomLegend.svelte +815 -0
- package/dist/src/lib/structure/Bond.svelte +140 -0
- package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
- package/dist/src/lib/structure/CellSelect.svelte +349 -0
- package/dist/src/lib/structure/Cylinder.svelte +45 -0
- package/dist/src/lib/structure/Lattice.svelte +196 -0
- package/dist/src/lib/structure/Structure.svelte +2248 -0
- package/dist/src/lib/structure/StructureControls.svelte +1273 -0
- package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
- package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
- package/dist/src/lib/structure/StructureScene.svelte +2255 -0
- package/dist/src/lib/structure/atom-properties.ts +316 -0
- package/dist/src/lib/structure/bond-order-perception.ts +447 -0
- package/dist/src/lib/structure/bonding.ts +944 -0
- package/dist/src/lib/structure/export.ts +861 -0
- package/dist/src/lib/structure/index.ts +291 -0
- package/dist/src/lib/structure/label-placement.ts +130 -0
- package/dist/src/lib/structure/measure.ts +45 -0
- package/dist/src/lib/structure/parse.ts +1705 -0
- package/dist/src/lib/structure/partial-occupancy.ts +183 -0
- package/dist/src/lib/structure/pbc.ts +164 -0
- package/dist/src/lib/structure/supercell.ts +226 -0
- package/dist/src/lib/structure/validation.ts +11 -0
- package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
- package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
- package/dist/src/lib/symmetry/cell-transform.ts +118 -0
- package/dist/src/lib/symmetry/index.ts +348 -0
- package/dist/src/lib/symmetry/spacegroups.ts +404 -0
- package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
- package/dist/src/lib/table/ToggleMenu.svelte +385 -0
- package/dist/src/lib/table/index.ts +139 -0
- package/dist/src/lib/theme/ThemeControl.svelte +53 -0
- package/dist/src/lib/theme/index.ts +107 -0
- package/dist/src/lib/theme/themes.mjs +297 -0
- package/dist/src/lib/time.ts +71 -0
- package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
- package/dist/src/lib/tooltip/index.ts +2 -0
- package/dist/src/lib/tooltip/types.ts +13 -0
- package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
- package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
- package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
- package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
- package/dist/src/lib/trajectory/constants.ts +7 -0
- package/dist/src/lib/trajectory/extract.ts +196 -0
- package/dist/src/lib/trajectory/format-detect.ts +96 -0
- package/dist/src/lib/trajectory/frame-reader.ts +456 -0
- package/dist/src/lib/trajectory/helpers.ts +217 -0
- package/dist/src/lib/trajectory/index.ts +218 -0
- package/dist/src/lib/trajectory/parse/ase.ts +109 -0
- package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
- package/dist/src/lib/trajectory/parse/index.ts +411 -0
- package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
- package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
- package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
- package/dist/src/lib/trajectory/plotting.ts +599 -0
- package/dist/src/lib/trajectory/types.ts +13 -0
- package/dist/src/lib/utils.ts +56 -0
- package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
- package/dist/src/lib/xrd/broadening.ts +130 -0
- package/dist/src/lib/xrd/calc-xrd.ts +397 -0
- package/dist/src/lib/xrd/index.ts +38 -0
- package/dist/src/lib/xrd/parse.ts +858 -0
- package/dist/webview.js +29421 -0
- package/icon.png +0 -0
- package/license +1 -1
- 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/package.json +1461 -231
- package/readme.md +171 -98
- package/scripts/sync-config.ts +101 -0
- package/src/declarations.d.ts +2 -0
- package/src/extension.ts +972 -0
- package/src/node-io.ts +65 -0
- package/src/types.ts +17 -0
- package/src/webview/JsonBrowser.svelte +1079 -0
- package/src/webview/PlotPanel.svelte +346 -0
- package/src/webview/detect.ts +444 -0
- package/src/webview/main.ts +764 -0
- package/src/webview/plot-utils.ts +250 -0
- 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 +604 -0
- package/tests/extension.test.ts +2041 -0
- package/tests/node-io.test.ts +39 -0
- package/tests/plot-utils.test.ts +302 -0
- package/tests/vite-plugin-json-gz.test.ts +114 -0
- package/tests/vscode-mock.ts +18 -0
- package/tests/webview.test.ts +231 -0
- package/tsconfig.json +20 -0
- package/vite-plugin-json-gz.ts +29 -0
- package/vite.config.ts +34 -0
- package/vite.extension.config.ts +34 -0
- package/dist/EmptyState.svelte.d.ts +0 -9
- package/dist/FilePicker.svelte +0 -360
- package/dist/FilePicker.svelte.d.ts +0 -17
- package/dist/Icon.svelte.d.ts +0 -13
- package/dist/MillerIndexInput.svelte +0 -66
- package/dist/MillerIndexInput.svelte.d.ts +0 -7
- package/dist/api/mp.d.ts +0 -6
- package/dist/api/mp.js +0 -22
- package/dist/api/optimade.d.ts +0 -45
- package/dist/api/optimade.js +0 -135
- package/dist/app.css +0 -240
- package/dist/brillouin/BrillouinZone.svelte +0 -543
- package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
- package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
- package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
- package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
- package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
- package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
- package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
- package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
- package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
- package/dist/brillouin/compute.d.ts +0 -17
- package/dist/brillouin/compute.js +0 -422
- package/dist/brillouin/index.d.ts +0 -8
- package/dist/brillouin/index.js +0 -8
- package/dist/brillouin/types.d.ts +0 -48
- package/dist/brillouin/types.js +0 -1
- package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
- package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
- package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
- package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
- package/dist/chempot-diagram/async-compute.svelte.js +0 -77
- package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
- package/dist/chempot-diagram/chempot-worker.js +0 -11
- package/dist/chempot-diagram/color.d.ts +0 -10
- package/dist/chempot-diagram/color.js +0 -32
- package/dist/chempot-diagram/compute.d.ts +0 -48
- package/dist/chempot-diagram/compute.js +0 -812
- package/dist/chempot-diagram/index.d.ts +0 -6
- package/dist/chempot-diagram/index.js +0 -6
- package/dist/chempot-diagram/pointer.d.ts +0 -16
- package/dist/chempot-diagram/pointer.js +0 -40
- package/dist/chempot-diagram/temperature.d.ts +0 -15
- package/dist/chempot-diagram/temperature.js +0 -36
- package/dist/chempot-diagram/types.d.ts +0 -86
- package/dist/chempot-diagram/types.js +0 -28
- package/dist/colors/index.d.ts +0 -47
- package/dist/colors/index.js +0 -203
- package/dist/composition/BarChart.svelte +0 -297
- package/dist/composition/BarChart.svelte.d.ts +0 -39
- package/dist/composition/BubbleChart.svelte +0 -218
- package/dist/composition/BubbleChart.svelte.d.ts +0 -28
- package/dist/composition/Composition.svelte +0 -164
- package/dist/composition/Composition.svelte.d.ts +0 -15
- package/dist/composition/Formula.svelte +0 -265
- package/dist/composition/Formula.svelte.d.ts +0 -19
- package/dist/composition/FormulaFilter.svelte +0 -1259
- package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
- package/dist/composition/PieChart.svelte +0 -323
- package/dist/composition/PieChart.svelte.d.ts +0 -37
- package/dist/composition/format.d.ts +0 -15
- package/dist/composition/format.js +0 -109
- package/dist/composition/index.d.ts +0 -20
- package/dist/composition/index.js +0 -14
- package/dist/composition/parse.d.ts +0 -55
- package/dist/composition/parse.js +0 -459
- package/dist/constants.d.ts +0 -29
- package/dist/constants.js +0 -105
- package/dist/controls.d.ts +0 -14
- package/dist/controls.js +0 -30
- package/dist/convex-hull/ConvexHull.svelte +0 -157
- package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
- package/dist/convex-hull/ConvexHull2D.svelte +0 -813
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
- package/dist/convex-hull/ConvexHull3D.svelte +0 -1788
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
- package/dist/convex-hull/ConvexHull4D.svelte +0 -1374
- package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
- package/dist/convex-hull/ConvexHullControls.svelte +0 -546
- package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
- package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -115
- package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
- package/dist/convex-hull/ConvexHullStats.svelte +0 -905
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
- package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
- package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
- package/dist/convex-hull/GasPressureControls.svelte +0 -247
- package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
- package/dist/convex-hull/StructurePopup.svelte +0 -116
- package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
- package/dist/convex-hull/TemperatureSlider.svelte +0 -137
- package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
- package/dist/convex-hull/barycentric-coords.d.ts +0 -18
- package/dist/convex-hull/barycentric-coords.js +0 -182
- package/dist/convex-hull/demo-temperature.d.ts +0 -6
- package/dist/convex-hull/demo-temperature.js +0 -40
- package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
- package/dist/convex-hull/gas-thermodynamics.js +0 -316
- package/dist/convex-hull/helpers.d.ts +0 -103
- package/dist/convex-hull/helpers.js +0 -671
- package/dist/convex-hull/index.d.ts +0 -118
- package/dist/convex-hull/index.js +0 -57
- package/dist/convex-hull/thermodynamics.d.ts +0 -66
- package/dist/convex-hull/thermodynamics.js +0 -1752
- package/dist/convex-hull/types.d.ts +0 -162
- package/dist/convex-hull/types.js +0 -36
- package/dist/coordination/CoordinationBarPlot.svelte +0 -311
- package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
- package/dist/coordination/calc-coordination.d.ts +0 -15
- package/dist/coordination/calc-coordination.js +0 -63
- package/dist/coordination/index.d.ts +0 -8
- package/dist/coordination/index.js +0 -7
- package/dist/element/BohrAtom.svelte +0 -149
- package/dist/element/BohrAtom.svelte.d.ts +0 -20
- package/dist/element/ElementHeading.svelte +0 -26
- package/dist/element/ElementHeading.svelte.d.ts +0 -8
- package/dist/element/ElementPhoto.svelte +0 -57
- package/dist/element/ElementPhoto.svelte.d.ts +0 -9
- package/dist/element/ElementStats.svelte +0 -80
- package/dist/element/ElementStats.svelte.d.ts +0 -8
- package/dist/element/ElementTile.svelte +0 -484
- package/dist/element/ElementTile.svelte.d.ts +0 -29
- package/dist/element/Nucleus.svelte.d.ts +0 -17
- package/dist/element/data.d.ts +0 -3
- package/dist/element/data.js +0 -2
- package/dist/element/data.json.gz.d.ts +0 -2
- package/dist/element/index.d.ts +0 -8
- package/dist/element/index.js +0 -8
- package/dist/element/types.d.ts +0 -57
- package/dist/element/types.js +0 -1
- package/dist/feedback/ClickFeedback.svelte +0 -58
- package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
- package/dist/feedback/DragOverlay.svelte +0 -42
- package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
- package/dist/feedback/Spinner.svelte.d.ts +0 -7
- package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
- package/dist/feedback/index.d.ts +0 -4
- package/dist/feedback/index.js +0 -4
- package/dist/fermi-surface/FermiSlice.svelte +0 -189
- package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
- package/dist/fermi-surface/FermiSurface.svelte +0 -597
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
- package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
- package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
- package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
- package/dist/fermi-surface/compute.d.ts +0 -5
- package/dist/fermi-surface/compute.js +0 -538
- package/dist/fermi-surface/constants.d.ts +0 -9
- package/dist/fermi-surface/constants.js +0 -27
- package/dist/fermi-surface/export.d.ts +0 -5
- package/dist/fermi-surface/export.js +0 -63
- package/dist/fermi-surface/index.d.ts +0 -12
- package/dist/fermi-surface/index.js +0 -13
- package/dist/fermi-surface/marching-cubes.d.ts +0 -2
- package/dist/fermi-surface/marching-cubes.js +0 -2
- package/dist/fermi-surface/parse.d.ts +0 -2
- package/dist/fermi-surface/parse.js +0 -495
- package/dist/fermi-surface/symmetry.d.ts +0 -3
- package/dist/fermi-surface/symmetry.js +0 -46
- package/dist/fermi-surface/types.d.ts +0 -113
- package/dist/fermi-surface/types.js +0 -4
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
- package/dist/heatmap-matrix/index.d.ts +0 -53
- package/dist/heatmap-matrix/index.js +0 -100
- package/dist/heatmap-matrix/shared.d.ts +0 -2
- package/dist/heatmap-matrix/shared.js +0 -4
- package/dist/icons.d.ts +0 -569
- package/dist/icons.js +0 -648
- package/dist/index.d.ts +0 -39
- package/dist/index.js +0 -39
- package/dist/io/decompress.d.ts +0 -10
- package/dist/io/decompress.js +0 -69
- package/dist/io/export.d.ts +0 -16
- package/dist/io/export.js +0 -312
- package/dist/io/fetch.d.ts +0 -5
- package/dist/io/fetch.js +0 -39
- package/dist/io/file-drop.d.ts +0 -7
- package/dist/io/file-drop.js +0 -43
- package/dist/io/index.d.ts +0 -7
- package/dist/io/index.js +0 -7
- package/dist/io/is-binary.d.ts +0 -1
- package/dist/io/is-binary.js +0 -5
- package/dist/io/types.d.ts +0 -8
- package/dist/io/types.js +0 -1
- package/dist/io/url-drop.d.ts +0 -2
- package/dist/io/url-drop.js +0 -117
- package/dist/isosurface/Isosurface.svelte +0 -285
- package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
- package/dist/isosurface/IsosurfaceControls.svelte +0 -291
- package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
- package/dist/isosurface/index.d.ts +0 -5
- package/dist/isosurface/index.js +0 -6
- package/dist/isosurface/parse.d.ts +0 -6
- package/dist/isosurface/parse.js +0 -553
- package/dist/isosurface/slice.d.ts +0 -11
- package/dist/isosurface/slice.js +0 -140
- package/dist/isosurface/types.d.ts +0 -56
- package/dist/isosurface/types.js +0 -227
- package/dist/labels.d.ts +0 -53
- package/dist/labels.js +0 -274
- package/dist/layout/FullscreenToggle.svelte +0 -50
- package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
- package/dist/layout/InfoCard.svelte +0 -120
- package/dist/layout/InfoCard.svelte.d.ts +0 -21
- package/dist/layout/InfoTag.svelte +0 -183
- package/dist/layout/InfoTag.svelte.d.ts +0 -19
- package/dist/layout/PropertyFilter.svelte +0 -244
- package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
- package/dist/layout/SettingsSection.svelte +0 -148
- package/dist/layout/SettingsSection.svelte.d.ts +0 -17
- package/dist/layout/SubpageGrid.svelte +0 -82
- package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
- package/dist/layout/fullscreen.d.ts +0 -9
- package/dist/layout/fullscreen.js +0 -53
- package/dist/layout/index.d.ts +0 -10
- package/dist/layout/index.js +0 -8
- package/dist/layout/json-tree/JsonNode.svelte +0 -547
- package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
- package/dist/layout/json-tree/JsonTree.svelte +0 -1222
- package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
- package/dist/layout/json-tree/JsonValue.svelte +0 -334
- package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
- package/dist/layout/json-tree/index.d.ts +0 -3
- package/dist/layout/json-tree/index.js +0 -3
- package/dist/layout/json-tree/types.d.ts +0 -73
- package/dist/layout/json-tree/types.js +0 -3
- package/dist/layout/json-tree/utils.d.ts +0 -29
- package/dist/layout/json-tree/utils.js +0 -648
- package/dist/marching-cubes.d.ts +0 -14
- package/dist/marching-cubes.js +0 -542
- package/dist/math.d.ts +0 -91
- package/dist/math.js +0 -896
- package/dist/overlays/ContextMenu.svelte +0 -162
- package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
- package/dist/overlays/DraggablePane.svelte +0 -564
- package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
- package/dist/overlays/index.d.ts +0 -2
- package/dist/overlays/index.js +0 -2
- package/dist/periodic-table/PeriodicTable.svelte +0 -469
- package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
- package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
- package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
- package/dist/periodic-table/PropertySelect.svelte +0 -37
- package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
- package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
- package/dist/periodic-table/index.d.ts +0 -10
- package/dist/periodic-table/index.js +0 -4
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
- package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -451
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
- package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
- package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
- package/dist/phase-diagram/build-diagram.d.ts +0 -11
- package/dist/phase-diagram/build-diagram.js +0 -167
- package/dist/phase-diagram/colors.d.ts +0 -35
- package/dist/phase-diagram/colors.js +0 -51
- package/dist/phase-diagram/diagram-input.d.ts +0 -33
- package/dist/phase-diagram/diagram-input.js +0 -3
- package/dist/phase-diagram/index.d.ts +0 -13
- package/dist/phase-diagram/index.js +0 -13
- package/dist/phase-diagram/parse.d.ts +0 -55
- package/dist/phase-diagram/parse.js +0 -276
- package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
- package/dist/phase-diagram/svg-to-diagram.js +0 -869
- package/dist/phase-diagram/types.d.ts +0 -99
- package/dist/phase-diagram/types.js +0 -1
- package/dist/phase-diagram/utils.d.ts +0 -118
- package/dist/phase-diagram/utils.js +0 -606
- package/dist/plot/AxisLabel.svelte +0 -51
- package/dist/plot/AxisLabel.svelte.d.ts +0 -16
- package/dist/plot/BarPlot.svelte +0 -2256
- package/dist/plot/BarPlot.svelte.d.ts +0 -82
- package/dist/plot/BarPlotControls.svelte +0 -66
- package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
- package/dist/plot/ColorBar.svelte +0 -719
- package/dist/plot/ColorBar.svelte.d.ts +0 -31
- package/dist/plot/ColorScaleSelect.svelte +0 -54
- package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
- package/dist/plot/ElementScatter.svelte +0 -63
- package/dist/plot/ElementScatter.svelte.d.ts +0 -14
- package/dist/plot/FillArea.svelte +0 -226
- package/dist/plot/FillArea.svelte.d.ts +0 -20
- package/dist/plot/Histogram.svelte +0 -1654
- package/dist/plot/Histogram.svelte.d.ts +0 -50
- package/dist/plot/HistogramControls.svelte +0 -212
- package/dist/plot/HistogramControls.svelte.d.ts +0 -22
- package/dist/plot/InteractiveAxisLabel.svelte +0 -94
- package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
- package/dist/plot/Line.svelte +0 -85
- package/dist/plot/Line.svelte.d.ts +0 -15
- package/dist/plot/PlotControls.svelte +0 -537
- package/dist/plot/PlotControls.svelte.d.ts +0 -4
- package/dist/plot/PlotLegend.svelte +0 -498
- package/dist/plot/PlotLegend.svelte.d.ts +0 -25
- package/dist/plot/PlotTooltip.svelte +0 -67
- package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
- package/dist/plot/PortalSelect.svelte +0 -253
- package/dist/plot/PortalSelect.svelte.d.ts +0 -16
- package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
- package/dist/plot/ReferenceLine3D.svelte +0 -154
- package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
- package/dist/plot/ReferencePlane.svelte +0 -178
- package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
- package/dist/plot/ScatterPlot.svelte +0 -2831
- package/dist/plot/ScatterPlot.svelte.d.ts +0 -92
- package/dist/plot/ScatterPlot3D.svelte +0 -499
- package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
- package/dist/plot/ScatterPlot3DControls.svelte +0 -437
- package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
- package/dist/plot/ScatterPlot3DScene.svelte +0 -912
- package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
- package/dist/plot/ScatterPlotControls.svelte +0 -307
- package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
- package/dist/plot/ScatterPoint.svelte +0 -185
- package/dist/plot/ScatterPoint.svelte.d.ts +0 -19
- package/dist/plot/SpacegroupBarPlot.svelte +0 -292
- package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
- package/dist/plot/Surface3D.svelte +0 -200
- package/dist/plot/Surface3D.svelte.d.ts +0 -13
- package/dist/plot/ZeroLines.svelte +0 -96
- package/dist/plot/ZeroLines.svelte.d.ts +0 -32
- package/dist/plot/ZoomRect.svelte +0 -23
- package/dist/plot/ZoomRect.svelte.d.ts +0 -8
- package/dist/plot/axis-utils.d.ts +0 -19
- package/dist/plot/axis-utils.js +0 -80
- package/dist/plot/data-cleaning.d.ts +0 -37
- package/dist/plot/data-cleaning.js +0 -855
- package/dist/plot/data-transform.d.ts +0 -16
- package/dist/plot/data-transform.js +0 -45
- package/dist/plot/defaults.d.ts +0 -19
- package/dist/plot/defaults.js +0 -9
- package/dist/plot/fill-utils.d.ts +0 -51
- package/dist/plot/fill-utils.js +0 -337
- package/dist/plot/hover-lock.svelte.d.ts +0 -14
- package/dist/plot/hover-lock.svelte.js +0 -46
- package/dist/plot/index.d.ts +0 -43
- package/dist/plot/index.js +0 -37
- package/dist/plot/interactions.d.ts +0 -12
- package/dist/plot/interactions.js +0 -100
- package/dist/plot/layout.d.ts +0 -60
- package/dist/plot/layout.js +0 -230
- package/dist/plot/reference-line.d.ts +0 -60
- package/dist/plot/reference-line.js +0 -316
- package/dist/plot/scales.d.ts +0 -48
- package/dist/plot/scales.js +0 -484
- package/dist/plot/svg.d.ts +0 -1
- package/dist/plot/svg.js +0 -11
- package/dist/plot/types.d.ts +0 -863
- package/dist/plot/types.js +0 -103
- package/dist/plot/utils/label-placement.d.ts +0 -47
- package/dist/plot/utils/label-placement.js +0 -256
- package/dist/plot/utils/series-visibility.d.ts +0 -9
- package/dist/plot/utils/series-visibility.js +0 -67
- package/dist/plot/utils.d.ts +0 -1
- package/dist/plot/utils.js +0 -14
- package/dist/rdf/RdfPlot.svelte +0 -247
- package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
- package/dist/rdf/calc-rdf.d.ts +0 -4
- package/dist/rdf/calc-rdf.js +0 -111
- package/dist/rdf/index.d.ts +0 -23
- package/dist/rdf/index.js +0 -2
- package/dist/sanitize.d.ts +0 -4
- package/dist/sanitize.js +0 -107
- package/dist/settings.d.ts +0 -253
- package/dist/settings.js +0 -1123
- package/dist/spectral/Bands.svelte +0 -1040
- package/dist/spectral/Bands.svelte.d.ts +0 -40
- package/dist/spectral/BandsAndDos.svelte +0 -128
- package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
- package/dist/spectral/BrillouinBandsDos.svelte +0 -248
- package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
- package/dist/spectral/Dos.svelte +0 -697
- package/dist/spectral/Dos.svelte.d.ts +0 -29
- package/dist/spectral/helpers.d.ts +0 -117
- package/dist/spectral/helpers.js +0 -1023
- package/dist/spectral/index.d.ts +0 -6
- package/dist/spectral/index.js +0 -7
- package/dist/spectral/types.d.ts +0 -84
- package/dist/spectral/types.js +0 -2
- package/dist/state.svelte.d.ts +0 -25
- package/dist/state.svelte.js +0 -45
- package/dist/structure/Arrow.svelte +0 -72
- package/dist/structure/Arrow.svelte.d.ts +0 -15
- package/dist/structure/AtomLegend.svelte +0 -798
- package/dist/structure/AtomLegend.svelte.d.ts +0 -34
- package/dist/structure/Bond.svelte +0 -140
- package/dist/structure/Bond.svelte.d.ts +0 -9
- package/dist/structure/CanvasTooltip.svelte +0 -33
- package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
- package/dist/structure/CellSelect.svelte +0 -351
- package/dist/structure/CellSelect.svelte.d.ts +0 -13
- package/dist/structure/Cylinder.svelte +0 -45
- package/dist/structure/Cylinder.svelte.d.ts +0 -10
- package/dist/structure/Lattice.svelte +0 -196
- package/dist/structure/Lattice.svelte.d.ts +0 -17
- package/dist/structure/Structure.svelte +0 -1857
- package/dist/structure/Structure.svelte.d.ts +0 -83
- package/dist/structure/StructureControls.svelte +0 -1184
- package/dist/structure/StructureControls.svelte.d.ts +0 -31
- package/dist/structure/StructureExportPane.svelte +0 -251
- package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
- package/dist/structure/StructureInfoPane.svelte +0 -434
- package/dist/structure/StructureInfoPane.svelte.d.ts +0 -18
- package/dist/structure/StructureScene.svelte +0 -1574
- package/dist/structure/StructureScene.svelte.d.ts +0 -104
- package/dist/structure/atom-properties.d.ts +0 -37
- package/dist/structure/atom-properties.js +0 -198
- package/dist/structure/bonding.d.ts +0 -33
- package/dist/structure/bonding.js +0 -304
- package/dist/structure/export.d.ts +0 -20
- package/dist/structure/export.js +0 -725
- package/dist/structure/ferrox-wasm-types.d.ts +0 -46
- package/dist/structure/ferrox-wasm-types.js +0 -18
- package/dist/structure/ferrox-wasm.d.ts +0 -94
- package/dist/structure/ferrox-wasm.js +0 -249
- package/dist/structure/index.d.ts +0 -110
- package/dist/structure/index.js +0 -168
- package/dist/structure/measure.d.ts +0 -6
- package/dist/structure/measure.js +0 -29
- package/dist/structure/parse.d.ts +0 -65
- package/dist/structure/parse.js +0 -1374
- package/dist/structure/partial-occupancy.d.ts +0 -25
- package/dist/structure/partial-occupancy.js +0 -99
- package/dist/structure/pbc.d.ts +0 -9
- package/dist/structure/pbc.js +0 -123
- package/dist/structure/supercell.d.ts +0 -8
- package/dist/structure/supercell.js +0 -137
- package/dist/structure/validation.d.ts +0 -2
- package/dist/structure/validation.js +0 -10
- package/dist/symmetry/SymmetryStats.svelte +0 -226
- package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
- package/dist/symmetry/WyckoffTable.svelte +0 -113
- package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
- package/dist/symmetry/cell-transform.d.ts +0 -12
- package/dist/symmetry/cell-transform.js +0 -77
- package/dist/symmetry/index.d.ts +0 -43
- package/dist/symmetry/index.js +0 -229
- package/dist/symmetry/spacegroups.d.ts +0 -9
- package/dist/symmetry/spacegroups.js +0 -394
- package/dist/table/HeatmapTable.svelte +0 -1854
- package/dist/table/HeatmapTable.svelte.d.ts +0 -49
- package/dist/table/ToggleMenu.svelte +0 -376
- package/dist/table/ToggleMenu.svelte.d.ts +0 -11
- package/dist/table/index.d.ts +0 -74
- package/dist/table/index.js +0 -38
- package/dist/theme/ThemeControl.svelte +0 -53
- package/dist/theme/ThemeControl.svelte.d.ts +0 -9
- package/dist/theme/index.d.ts +0 -29
- package/dist/theme/index.js +0 -79
- package/dist/theme/themes.mjs +0 -285
- package/dist/time.d.ts +0 -4
- package/dist/time.js +0 -70
- package/dist/tooltip/TooltipContent.svelte +0 -58
- package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
- package/dist/tooltip/index.d.ts +0 -2
- package/dist/tooltip/index.js +0 -2
- package/dist/tooltip/types.d.ts +0 -8
- package/dist/tooltip/types.js +0 -1
- package/dist/trajectory/Trajectory.svelte +0 -1517
- package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
- package/dist/trajectory/TrajectoryError.svelte +0 -128
- package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
- package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
- package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
- package/dist/trajectory/TrajectoryInfoPane.svelte +0 -387
- package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
- package/dist/trajectory/constants.d.ts +0 -6
- package/dist/trajectory/constants.js +0 -7
- package/dist/trajectory/extract.d.ts +0 -5
- package/dist/trajectory/extract.js +0 -162
- package/dist/trajectory/format-detect.d.ts +0 -9
- package/dist/trajectory/format-detect.js +0 -76
- package/dist/trajectory/frame-reader.d.ts +0 -17
- package/dist/trajectory/frame-reader.js +0 -332
- package/dist/trajectory/helpers.d.ts +0 -14
- package/dist/trajectory/helpers.js +0 -172
- package/dist/trajectory/index.d.ts +0 -63
- package/dist/trajectory/index.js +0 -126
- package/dist/trajectory/parse/ase.d.ts +0 -2
- package/dist/trajectory/parse/ase.js +0 -77
- package/dist/trajectory/parse/hdf5.d.ts +0 -2
- package/dist/trajectory/parse/hdf5.js +0 -129
- package/dist/trajectory/parse/index.d.ts +0 -12
- package/dist/trajectory/parse/index.js +0 -299
- package/dist/trajectory/parse/lammps.d.ts +0 -5
- package/dist/trajectory/parse/lammps.js +0 -179
- package/dist/trajectory/parse/vasp.d.ts +0 -2
- package/dist/trajectory/parse/vasp.js +0 -68
- package/dist/trajectory/parse/xyz.d.ts +0 -2
- package/dist/trajectory/parse/xyz.js +0 -110
- package/dist/trajectory/plotting.d.ts +0 -28
- package/dist/trajectory/plotting.js +0 -423
- package/dist/trajectory/types.d.ts +0 -11
- package/dist/trajectory/types.js +0 -1
- package/dist/utils.d.ts +0 -5
- package/dist/utils.js +0 -36
- package/dist/xrd/XrdPlot.svelte +0 -615
- package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
- package/dist/xrd/broadening.d.ts +0 -20
- package/dist/xrd/broadening.js +0 -97
- package/dist/xrd/calc-xrd.d.ts +0 -37
- package/dist/xrd/calc-xrd.js +0 -337
- package/dist/xrd/index.d.ts +0 -37
- package/dist/xrd/index.js +0 -4
- package/dist/xrd/parse.d.ts +0 -13
- package/dist/xrd/parse.js +0 -749
- /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
- /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
- /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
- /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
- /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
- /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
- /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
- /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
- /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
- /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
- /package/dist/{element → src/lib/element}/data.json +0 -0
- /package/dist/{element → src/lib/element}/data.json.gz +0 -0
- /package/dist/{element → src/lib/element}/data.schema.json +0 -0
- /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
- /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
- /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
- /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
- /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
- /package/dist/{xrd → src/lib/xrd}/atomic_scattering_params.json +0 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { default as ChemPotDiagram } from './ChemPotDiagram.svelte'
|
|
2
|
+
export { default as ChemPotDiagram2D } from './ChemPotDiagram2D.svelte'
|
|
3
|
+
export { default as ChemPotDiagram3D } from './ChemPotDiagram3D.svelte'
|
|
4
|
+
export { compute_chempot_async } from './async-compute.svelte'
|
|
5
|
+
export { compute_chempot_diagram, get_ternary_combinations } from './compute'
|
|
6
|
+
export * from './types'
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Event/pointer normalization for hover tooltips.
|
|
2
|
+
// Handles DOM events and Threlte/Three.js event wrappers (nativeEvent, srcEvent).
|
|
3
|
+
const is_pointer_like_event = (event_val: unknown): event_val is PointerEvent | MouseEvent =>
|
|
4
|
+
(typeof PointerEvent !== `undefined` && event_val instanceof PointerEvent) ||
|
|
5
|
+
(typeof MouseEvent !== `undefined` && event_val instanceof MouseEvent)
|
|
6
|
+
|
|
7
|
+
export function get_pointer_coords(
|
|
8
|
+
raw_event: unknown,
|
|
9
|
+
): { clientX: number; clientY: number } | null {
|
|
10
|
+
if (is_pointer_like_event(raw_event)) {
|
|
11
|
+
return raw_event
|
|
12
|
+
}
|
|
13
|
+
if (!raw_event || typeof raw_event !== `object`) return null
|
|
14
|
+
const event_obj = raw_event as {
|
|
15
|
+
nativeEvent?: unknown
|
|
16
|
+
srcEvent?: unknown
|
|
17
|
+
clientX?: number
|
|
18
|
+
clientY?: number
|
|
19
|
+
}
|
|
20
|
+
if (is_pointer_like_event(event_obj.nativeEvent)) {
|
|
21
|
+
return event_obj.nativeEvent
|
|
22
|
+
}
|
|
23
|
+
if (is_pointer_like_event(event_obj.srcEvent)) {
|
|
24
|
+
return event_obj.srcEvent
|
|
25
|
+
}
|
|
26
|
+
const client_x = event_obj.clientX
|
|
27
|
+
const client_y = event_obj.clientY
|
|
28
|
+
if (typeof client_x === `number` && typeof client_y === `number`) {
|
|
29
|
+
return { clientX: client_x, clientY: client_y }
|
|
30
|
+
}
|
|
31
|
+
return null
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Convert pointer event to container-relative coords for tooltip placement. */
|
|
35
|
+
export function get_hover_pointer(
|
|
36
|
+
raw_event: unknown,
|
|
37
|
+
container_rect: DOMRect | null | undefined,
|
|
38
|
+
): { x: number; y: number } | null {
|
|
39
|
+
const pointer_event = get_pointer_coords(raw_event)
|
|
40
|
+
if (!pointer_event) return null
|
|
41
|
+
const offset_x = container_rect?.left ?? 0
|
|
42
|
+
const offset_y = container_rect?.top ?? 0
|
|
43
|
+
const x = pointer_event.clientX - offset_x + 4
|
|
44
|
+
const y = pointer_event.clientY - offset_y + 4
|
|
45
|
+
return { x, y }
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** Add hover pointer to an info object for tooltip placement. */
|
|
49
|
+
export function with_hover_pointer<T extends { pointer?: { x: number; y: number } }>(
|
|
50
|
+
info: Omit<T, `pointer`>,
|
|
51
|
+
raw_event: unknown,
|
|
52
|
+
container_rect: DOMRect | null | undefined,
|
|
53
|
+
): T {
|
|
54
|
+
const pointer = get_hover_pointer(raw_event, container_rect)
|
|
55
|
+
return { ...info, pointer: pointer ?? undefined } as T
|
|
56
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import {
|
|
2
|
+
analyze_temperature_data,
|
|
3
|
+
filter_entries_at_temperature,
|
|
4
|
+
} from '$lib/convex-hull/helpers'
|
|
5
|
+
import type { PhaseData } from '$lib/convex-hull/types'
|
|
6
|
+
import type { ChemPotDiagramConfig } from './types'
|
|
7
|
+
import { CHEMPOT_DEFAULTS } from './types'
|
|
8
|
+
|
|
9
|
+
interface TempFilterProps {
|
|
10
|
+
interpolate_temperature?: boolean
|
|
11
|
+
max_interpolation_gap?: number
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface ResolvedTempFilterOptions {
|
|
15
|
+
interpolate: boolean
|
|
16
|
+
max_interpolation_gap: number
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface TempFilterPayload {
|
|
20
|
+
has_temp_data: boolean
|
|
21
|
+
available_temperatures: number[]
|
|
22
|
+
temp_filtered_entries: PhaseData[]
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export const get_projection_source_entries = (
|
|
26
|
+
entries: PhaseData[],
|
|
27
|
+
temp_filtered_entries: PhaseData[],
|
|
28
|
+
): PhaseData[] => (temp_filtered_entries.length > 0 ? temp_filtered_entries : entries)
|
|
29
|
+
|
|
30
|
+
const resolve_temp_filter_options = (
|
|
31
|
+
config: ChemPotDiagramConfig,
|
|
32
|
+
props: TempFilterProps,
|
|
33
|
+
): ResolvedTempFilterOptions => ({
|
|
34
|
+
interpolate:
|
|
35
|
+
config.interpolate_temperature ??
|
|
36
|
+
props.interpolate_temperature ??
|
|
37
|
+
CHEMPOT_DEFAULTS.interpolate_temperature,
|
|
38
|
+
max_interpolation_gap:
|
|
39
|
+
config.max_interpolation_gap ??
|
|
40
|
+
props.max_interpolation_gap ??
|
|
41
|
+
CHEMPOT_DEFAULTS.max_interpolation_gap,
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
export function get_temp_filter_payload(
|
|
45
|
+
entries: PhaseData[],
|
|
46
|
+
temperature: number | undefined,
|
|
47
|
+
config: ChemPotDiagramConfig,
|
|
48
|
+
props: TempFilterProps,
|
|
49
|
+
): TempFilterPayload {
|
|
50
|
+
const { has_temp_data, available_temperatures } = analyze_temperature_data(entries)
|
|
51
|
+
if (!has_temp_data || temperature === undefined) {
|
|
52
|
+
return { has_temp_data, available_temperatures, temp_filtered_entries: entries }
|
|
53
|
+
}
|
|
54
|
+
const filter_options = resolve_temp_filter_options(config, props)
|
|
55
|
+
const temp_filtered_entries = filter_entries_at_temperature(
|
|
56
|
+
entries,
|
|
57
|
+
temperature,
|
|
58
|
+
filter_options,
|
|
59
|
+
)
|
|
60
|
+
return { has_temp_data, available_temperatures, temp_filtered_entries }
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function get_valid_temperature(
|
|
64
|
+
temperature: number | undefined,
|
|
65
|
+
has_temp_data: boolean,
|
|
66
|
+
available_temperatures: number[],
|
|
67
|
+
): number | undefined {
|
|
68
|
+
if (!has_temp_data || available_temperatures.length === 0) return temperature
|
|
69
|
+
const min_temperature = available_temperatures[0]
|
|
70
|
+
const max_temperature = available_temperatures.at(-1) ?? min_temperature
|
|
71
|
+
if (temperature === undefined) return min_temperature
|
|
72
|
+
if (available_temperatures.includes(temperature)) return temperature
|
|
73
|
+
if (temperature >= min_temperature && temperature <= max_temperature) {
|
|
74
|
+
return temperature
|
|
75
|
+
}
|
|
76
|
+
return min_temperature
|
|
77
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import type { D3InterpolateName } from '$lib/colors'
|
|
2
|
+
import type { PhaseData } from '$lib/convex-hull/types'
|
|
3
|
+
import type { Point2D } from '$lib/math'
|
|
4
|
+
|
|
5
|
+
// Per-element chemical potential bounds [min, max] in eV
|
|
6
|
+
// Default is [-50, 0] matching pymatgen
|
|
7
|
+
export type ChemPotLimits = Partial<Record<string, [number, number]>>
|
|
8
|
+
|
|
9
|
+
export type ChemPotColorMode = `none` | `energy` | `formation_energy` | `arity` | `entries`
|
|
10
|
+
|
|
11
|
+
// For quaternary+ systems: "single" shows one 3D diagram with projection switcher,
|
|
12
|
+
// "grid" shows all C(n,3) ternary projections simultaneously
|
|
13
|
+
export type ChemPotProjectionMode = `single` | `grid`
|
|
14
|
+
|
|
15
|
+
// Visual and behavioral configuration for the diagram
|
|
16
|
+
export interface ChemPotDiagramConfig {
|
|
17
|
+
// Plot formal (reference) chemical potentials mu_X - mu_X^0, or absolute DFT energies mu_X
|
|
18
|
+
formal_chempots?: boolean // default true
|
|
19
|
+
// Lower bound for unspecified element limits (eV)
|
|
20
|
+
default_min_limit?: number // default -50
|
|
21
|
+
// Padding (eV) to trim default_min_limit bounding box for cleaner plots
|
|
22
|
+
element_padding?: number // default 1.0
|
|
23
|
+
// Whether to label stable phases by formula
|
|
24
|
+
label_stable?: boolean // default true
|
|
25
|
+
// Which 2 or 3 elements to use as axes (default: first 2 or 3 from entries)
|
|
26
|
+
elements?: string[]
|
|
27
|
+
// Per-element chemical potential bounds
|
|
28
|
+
limits?: ChemPotLimits
|
|
29
|
+
// 3D only: overlay domains for specified formulas (can be from other chemical systems)
|
|
30
|
+
formulas_to_draw?: string[]
|
|
31
|
+
draw_formula_meshes?: boolean // default true
|
|
32
|
+
draw_formula_lines?: boolean // default true
|
|
33
|
+
formula_colors?: string[] // default Dark2 palette
|
|
34
|
+
show_tooltip?: boolean // default true
|
|
35
|
+
tooltip_detail_level?: `compact` | `detailed` // default detailed
|
|
36
|
+
// Region coloring mode for 3D diagram
|
|
37
|
+
color_mode?: ChemPotColorMode // default none
|
|
38
|
+
// D3 interpolator for continuous color scales (energy, formation_energy, entries)
|
|
39
|
+
color_scale?: D3InterpolateName // default interpolateSpectral
|
|
40
|
+
// Reverse the color scale direction
|
|
41
|
+
reverse_color_scale?: boolean // default true
|
|
42
|
+
// Enable linear interpolation for temperatures not in the data (default: true)
|
|
43
|
+
interpolate_temperature?: boolean
|
|
44
|
+
// Maximum temperature gap (Kelvin) allowed for interpolation (default: 500)
|
|
45
|
+
max_interpolation_gap?: number
|
|
46
|
+
// For quaternary+ systems: show one diagram with projection switcher ("single")
|
|
47
|
+
// or all C(n,3) ternary projections in a grid ("grid"). Default: "single"
|
|
48
|
+
projection_mode?: ChemPotProjectionMode
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Computed chemical potential diagram data
|
|
52
|
+
export interface ChemPotDiagramData {
|
|
53
|
+
// Stability domains keyed by reduced formula
|
|
54
|
+
domains: Record<string, number[][]>
|
|
55
|
+
// Sorted element list for this diagram
|
|
56
|
+
elements: string[]
|
|
57
|
+
// Elemental reference entries keyed by element symbol
|
|
58
|
+
el_refs: Record<string, PhaseData>
|
|
59
|
+
// Minimum-energy entries per composition
|
|
60
|
+
min_entries: PhaseData[]
|
|
61
|
+
// Hyperplane data: rows of [x_1, ..., x_n, -E_per_atom]
|
|
62
|
+
hyperplanes: number[][]
|
|
63
|
+
// Entries corresponding to hyperplanes (same order)
|
|
64
|
+
hyperplane_entries: PhaseData[]
|
|
65
|
+
// Axis limits array: [[min, max], ...] per element
|
|
66
|
+
lims: [number, number][]
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export interface ChemPotHoverInfoBase {
|
|
70
|
+
formula: string
|
|
71
|
+
view: `2d` | `3d`
|
|
72
|
+
pointer?: Point2D
|
|
73
|
+
n_points: number
|
|
74
|
+
axis_ranges: AxisRangeData[]
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export interface AxisRangeData {
|
|
78
|
+
element: string
|
|
79
|
+
min_val: number
|
|
80
|
+
max_val: number
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export interface ChemPotHoverInfo2D extends ChemPotHoverInfoBase {
|
|
84
|
+
view: `2d`
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface ChemPotHoverInfo3D extends ChemPotHoverInfoBase {
|
|
88
|
+
view: `3d`
|
|
89
|
+
n_vertices: number
|
|
90
|
+
n_edges: number
|
|
91
|
+
ann_loc: number[]
|
|
92
|
+
touches_limits: string[]
|
|
93
|
+
is_elemental: boolean
|
|
94
|
+
is_draw_formula: boolean
|
|
95
|
+
matching_entry_count: number
|
|
96
|
+
min_energy_per_atom: number | null
|
|
97
|
+
max_energy_per_atom: number | null
|
|
98
|
+
neighbors: string[]
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export type ChemPotHoverInfo = ChemPotHoverInfo2D | ChemPotHoverInfo3D
|
|
102
|
+
|
|
103
|
+
// Default configuration values
|
|
104
|
+
export const CHEMPOT_DEFAULTS = {
|
|
105
|
+
formal_chempots: true,
|
|
106
|
+
default_min_limit: -50,
|
|
107
|
+
element_padding: 1.0,
|
|
108
|
+
label_stable: true,
|
|
109
|
+
draw_formula_meshes: true,
|
|
110
|
+
draw_formula_lines: true,
|
|
111
|
+
show_tooltip: true,
|
|
112
|
+
tooltip_detail_level: `detailed`,
|
|
113
|
+
color_mode: `formation_energy` as ChemPotColorMode,
|
|
114
|
+
color_scale: `interpolateSpectral` as D3InterpolateName,
|
|
115
|
+
reverse_color_scale: true,
|
|
116
|
+
interpolate_temperature: true,
|
|
117
|
+
max_interpolation_gap: 500,
|
|
118
|
+
projection_mode: `single` as ChemPotProjectionMode,
|
|
119
|
+
// Dark2 qualitative palette (same as pymatgen/plotly default)
|
|
120
|
+
formula_colors: [
|
|
121
|
+
`#1b9e77`,
|
|
122
|
+
`#d95f02`,
|
|
123
|
+
`#7570b3`,
|
|
124
|
+
`#e7298a`,
|
|
125
|
+
`#66a61e`,
|
|
126
|
+
`#e6ab02`,
|
|
127
|
+
`#a6761d`,
|
|
128
|
+
`#666666`,
|
|
129
|
+
],
|
|
130
|
+
} as const
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { rgb } from 'd3-color'
|
|
2
|
+
import * as d3_sc from 'd3-scale-chromatic'
|
|
3
|
+
import type { Vec3 } from '$lib/math'
|
|
4
|
+
import type { ELEM_SYMBOLS } from '$lib/labels'
|
|
5
|
+
import alloy_colors from './alloy-colors.json' with { type: 'json' }
|
|
6
|
+
import dark_mode_colors from './dark-mode-colors.json' with { type: 'json' }
|
|
7
|
+
import jmol_colors from './jmol-colors.json' with { type: 'json' }
|
|
8
|
+
import muted_colors from './muted-colors.json' with { type: 'json' }
|
|
9
|
+
import pastel_colors from './pastel-colors.json' with { type: 'json' }
|
|
10
|
+
import vesta_colors from './vesta-colors.json' with { type: 'json' }
|
|
11
|
+
|
|
12
|
+
// Extract color scheme interpolate function names from d3-scale-chromatic
|
|
13
|
+
export type D3InterpolateName = keyof typeof d3_sc & `interpolate${string}`
|
|
14
|
+
export type D3ColorSchemeName = D3InterpolateName extends `interpolate${infer Name}`
|
|
15
|
+
? Name
|
|
16
|
+
: never
|
|
17
|
+
export const get_d3_interpolator = (name: D3InterpolateName): ((t: number) => string) => {
|
|
18
|
+
const candidate = d3_sc[name]
|
|
19
|
+
return typeof candidate === `function` ? candidate : d3_sc.interpolateViridis
|
|
20
|
+
}
|
|
21
|
+
export const COLOR_SCALE_TYPES = [`continuous`, `categorical`] as const
|
|
22
|
+
export type ColorScaleType = (typeof COLOR_SCALE_TYPES)[number]
|
|
23
|
+
|
|
24
|
+
// color values have to be in hex format since that's the only format
|
|
25
|
+
// <input type="color"> supports
|
|
26
|
+
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/color#value
|
|
27
|
+
export const DEFAULT_CATEGORY_COLORS: Record<string, string> = {
|
|
28
|
+
'diatomic nonmetal': `#ff8c00`, // darkorange
|
|
29
|
+
'noble gas': `#9932cc`, // darkorchid
|
|
30
|
+
'alkali metal': `#006400`, // darkgreen
|
|
31
|
+
'alkaline earth metal': `#483d8b`, // darkslateblue
|
|
32
|
+
metalloid: `#b8860b`, // darkgoldenrod
|
|
33
|
+
'polyatomic nonmetal': `#a52a2a`, // brown
|
|
34
|
+
'transition metal': `#571e6c`,
|
|
35
|
+
'post-transition metal': `#938d4a`,
|
|
36
|
+
lanthanide: `#58748e`,
|
|
37
|
+
actinide: `#6495ed`, // cornflowerblue
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export const AXIS_COLORS = [
|
|
41
|
+
// [axis name, color, hover color]
|
|
42
|
+
[`x`, `#d75555`, `#e66666`],
|
|
43
|
+
[`y`, `#55b855`, `#66c966`],
|
|
44
|
+
[`z`, `#5555d7`, `#6666e6`],
|
|
45
|
+
] as const
|
|
46
|
+
export const NEG_AXIS_COLORS = [
|
|
47
|
+
[`nx`, `#b84444`, `#cc5555`],
|
|
48
|
+
[`ny`, `#44a044`, `#55b155`],
|
|
49
|
+
[`nz`, `#4444b8`, `#5555c9`],
|
|
50
|
+
] as const
|
|
51
|
+
|
|
52
|
+
export type RGBColor = Vec3
|
|
53
|
+
export type ElementColorScheme = Record<(typeof ELEM_SYMBOLS)[number], RGBColor>
|
|
54
|
+
|
|
55
|
+
const rgb_scheme_to_hex = (obj: Record<string, number[]>): Record<string, string> =>
|
|
56
|
+
Object.fromEntries(
|
|
57
|
+
Object.entries(obj)
|
|
58
|
+
.filter(([, val]) => val.length >= 3)
|
|
59
|
+
.map(([key, val]) => [key, rgb(val[0], val[1], val[2]).formatHex()]),
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
export const vesta_hex = rgb_scheme_to_hex(vesta_colors)
|
|
63
|
+
export const jmol_hex = rgb_scheme_to_hex(jmol_colors)
|
|
64
|
+
export const alloy_hex = rgb_scheme_to_hex(alloy_colors)
|
|
65
|
+
export const pastel_hex = rgb_scheme_to_hex(pastel_colors)
|
|
66
|
+
export const muted_hex = rgb_scheme_to_hex(muted_colors)
|
|
67
|
+
export const dark_mode_hex = rgb_scheme_to_hex(dark_mode_colors)
|
|
68
|
+
|
|
69
|
+
export const ELEMENT_COLOR_SCHEMES = {
|
|
70
|
+
Vesta: vesta_hex,
|
|
71
|
+
Jmol: jmol_hex,
|
|
72
|
+
Alloy: alloy_hex,
|
|
73
|
+
Pastel: pastel_hex,
|
|
74
|
+
Muted: muted_hex,
|
|
75
|
+
'Dark Mode': dark_mode_hex,
|
|
76
|
+
} as const
|
|
77
|
+
|
|
78
|
+
export type ColorSchemeName = keyof typeof ELEMENT_COLOR_SCHEMES
|
|
79
|
+
export const default_element_colors = { ...vesta_hex }
|
|
80
|
+
|
|
81
|
+
// Helper function to detect if a value is a color string
|
|
82
|
+
export const is_color = (val: unknown): val is string => {
|
|
83
|
+
if (typeof val !== `string`) return false
|
|
84
|
+
// Check for hex colors, rgb/rgba, hsl/hsla, color(), var(), and named colors
|
|
85
|
+
// Exclude incomplete function prefixes like 'rgb', 'hsl', 'var', 'color'
|
|
86
|
+
return /^(#[0-9a-f]{3,8}|rgba?\([^)]+\)|hsla?\([^)]+\)|color\([^)]+\)|var\([^)]+\)|(?!rgb$|hsl$|var$|color$)[a-z]+)$/i.test(
|
|
87
|
+
val.trim(),
|
|
88
|
+
)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export const PLOT_COLORS = [
|
|
92
|
+
// Color series for e.g. line plots
|
|
93
|
+
`#63b3ed`,
|
|
94
|
+
`#68d391`,
|
|
95
|
+
`#fbd38d`,
|
|
96
|
+
`#fc8181`,
|
|
97
|
+
`#d6bcfa`,
|
|
98
|
+
`#4fd1c7`,
|
|
99
|
+
`#f687b3`,
|
|
100
|
+
`#fed7d7`,
|
|
101
|
+
`#bee3f8`,
|
|
102
|
+
`#c6f6d5`,
|
|
103
|
+
] as const
|
|
104
|
+
|
|
105
|
+
// calculate human-perceived brightness from RGB color
|
|
106
|
+
export function luminance(clr: string) {
|
|
107
|
+
const { r, g, b } = rgb(clr)
|
|
108
|
+
|
|
109
|
+
return (0.299 * r + 0.587 * g + 0.114 * b) / 255 // https://stackoverflow.com/a/596243
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// get background color of passed DOM node, or recurse up the DOM tree if current node is transparent
|
|
113
|
+
export function get_bg_color(
|
|
114
|
+
elem: HTMLElement | null,
|
|
115
|
+
bg_color: string | null = null,
|
|
116
|
+
): string {
|
|
117
|
+
if (bg_color) return bg_color
|
|
118
|
+
// recurse up the DOM tree to find the first non-transparent background color
|
|
119
|
+
const transparent = `rgba(0, 0, 0, 0)`
|
|
120
|
+
if (!elem) return transparent // if no DOM node, return transparent
|
|
121
|
+
|
|
122
|
+
const bg = getComputedStyle(elem).backgroundColor // get node background color
|
|
123
|
+
if (bg !== transparent) return bg // if not transparent, return it
|
|
124
|
+
return get_bg_color(elem.parentElement) // otherwise recurse up the DOM tree
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
export interface ContrastOptions {
|
|
128
|
+
bg_color?: string
|
|
129
|
+
luminance_threshold?: number
|
|
130
|
+
choices?: [string, string]
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export function pick_contrast_color(options: ContrastOptions = {}) {
|
|
134
|
+
const { bg_color, luminance_threshold = 0.7, choices = [`black`, `white`] } = options
|
|
135
|
+
const light_bg = luminance(bg_color ?? `white`) > luminance_threshold
|
|
136
|
+
return light_bg ? choices[0] : choices[1] // dark text for light backgrounds, light for dark
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// Svelte attachment that automatically picks dark or light text color to maximize contrast with node's background color
|
|
140
|
+
export const contrast_color =
|
|
141
|
+
(options: ContrastOptions = {}) =>
|
|
142
|
+
(node: HTMLElement) => {
|
|
143
|
+
node.style.color = pick_contrast_color({ ...options, bg_color: get_bg_color(node) })
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
const is_valid_bg = (bg: string): boolean =>
|
|
147
|
+
bg !== `` && bg !== `rgba(0, 0, 0, 0)` && bg !== `transparent`
|
|
148
|
+
|
|
149
|
+
// Detect and return the page background color from html/body elements or user preferences
|
|
150
|
+
export function get_page_background(
|
|
151
|
+
fallback_dark = `#1a1a1a`,
|
|
152
|
+
fallback_light = `#ffffff`,
|
|
153
|
+
): string {
|
|
154
|
+
if (typeof window === `undefined`) return ``
|
|
155
|
+
|
|
156
|
+
// Try to get background from html or body
|
|
157
|
+
const html_bg = getComputedStyle(document.documentElement).backgroundColor
|
|
158
|
+
const body_bg = getComputedStyle(document.body).backgroundColor
|
|
159
|
+
|
|
160
|
+
// Check if background is not transparent/unset
|
|
161
|
+
// Prefer body background as it's more likely to be styled by the theme
|
|
162
|
+
if (is_valid_bg(body_bg)) return body_bg
|
|
163
|
+
if (is_valid_bg(html_bg)) return html_bg
|
|
164
|
+
|
|
165
|
+
// Fall back to prefers-color-scheme
|
|
166
|
+
const prefers_dark = globalThis.matchMedia(`(prefers-color-scheme: dark)`).matches
|
|
167
|
+
return prefers_dark ? fallback_dark : fallback_light
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// Detect dark mode: checks data-theme attribute, localStorage, then OS preference
|
|
171
|
+
export function is_dark_mode(): boolean {
|
|
172
|
+
if (typeof document === `undefined`) return false
|
|
173
|
+
const data_theme = document.documentElement.dataset.theme
|
|
174
|
+
if (data_theme === `dark` || data_theme === `light`) return data_theme === `dark`
|
|
175
|
+
try {
|
|
176
|
+
const stored = localStorage.getItem(`theme`)
|
|
177
|
+
if (stored === `dark` || stored === `light`) return stored === `dark`
|
|
178
|
+
} catch {
|
|
179
|
+
/* localStorage throws in private browsing mode */
|
|
180
|
+
}
|
|
181
|
+
return globalThis.matchMedia?.(`(prefers-color-scheme: dark)`).matches ?? false
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Watch for dark mode changes and call callback on each change. Returns cleanup function.
|
|
185
|
+
export function watch_dark_mode(on_change: (dark: boolean) => void): () => void {
|
|
186
|
+
if (typeof document === `undefined`) return () => {} // No-op in SSR
|
|
187
|
+
const notify = () => on_change(is_dark_mode())
|
|
188
|
+
|
|
189
|
+
const observer = new MutationObserver(notify)
|
|
190
|
+
observer.observe(document.documentElement, {
|
|
191
|
+
attributes: true,
|
|
192
|
+
attributeFilter: [`data-theme`],
|
|
193
|
+
})
|
|
194
|
+
|
|
195
|
+
const on_storage = (ev: StorageEvent) => {
|
|
196
|
+
if (ev.key === `theme`) notify()
|
|
197
|
+
}
|
|
198
|
+
globalThis.addEventListener(`storage`, on_storage)
|
|
199
|
+
|
|
200
|
+
const media_query = globalThis.matchMedia?.(`(prefers-color-scheme: dark)`)
|
|
201
|
+
media_query?.addEventListener(`change`, notify)
|
|
202
|
+
|
|
203
|
+
return () => {
|
|
204
|
+
observer.disconnect()
|
|
205
|
+
globalThis.removeEventListener(`storage`, on_storage)
|
|
206
|
+
media_query?.removeEventListener(`change`, notify)
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Convert a CSS color string to hex format for use with <input type="color">.
|
|
211
|
+
// Returns fallback for CSS variables, transparent, invalid colors, or undefined.
|
|
212
|
+
// Uses d3-color for robust parsing of named colors, rgb(), hsl(), etc.
|
|
213
|
+
export function css_color_to_hex(color: string | undefined, fallback: string): string {
|
|
214
|
+
if (!color || color.startsWith(`var(`)) return fallback
|
|
215
|
+
if (color === `transparent`) return `#ffffff`
|
|
216
|
+
const parsed = rgb(color)
|
|
217
|
+
return Number.isNaN(parsed.r) ? fallback : parsed.formatHex()
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Add or modify the alpha channel of a color.
|
|
221
|
+
// Supports hex (#rgb, #rgba, #rrggbb, #rrggbbaa), rgb(), and rgba() formats.
|
|
222
|
+
// Returns the color in rgba() format, or the original color if format is unsupported.
|
|
223
|
+
export function add_alpha(color: string, alpha: number): string {
|
|
224
|
+
// Clamp alpha to valid CSS range [0, 1]
|
|
225
|
+
const clamped_alpha = Math.max(0, Math.min(1, alpha))
|
|
226
|
+
|
|
227
|
+
// Handle hex colors (#rgb, #rgba, #rrggbb, #rrggbbaa)
|
|
228
|
+
if (color.startsWith(`#`)) {
|
|
229
|
+
const hex = color.slice(1)
|
|
230
|
+
// Guard against malformed hex (only 3, 4, 6, or 8 chars are valid)
|
|
231
|
+
if (![3, 4, 6, 8].includes(hex.length)) return color
|
|
232
|
+
|
|
233
|
+
// Extract RGB, ignoring any existing alpha channel
|
|
234
|
+
const is_short = hex.length === 3 || hex.length === 4
|
|
235
|
+
const red = parseInt(is_short ? hex[0] + hex[0] : hex.slice(0, 2), 16)
|
|
236
|
+
const green = parseInt(is_short ? hex[1] + hex[1] : hex.slice(2, 4), 16)
|
|
237
|
+
const blue = parseInt(is_short ? hex[2] + hex[2] : hex.slice(4, 6), 16)
|
|
238
|
+
return `rgba(${red}, ${green}, ${blue}, ${clamped_alpha})`
|
|
239
|
+
}
|
|
240
|
+
// Handle rgb() colors
|
|
241
|
+
if (color.startsWith(`rgb(`)) {
|
|
242
|
+
return color.replace(`rgb(`, `rgba(`).replace(`)`, `, ${clamped_alpha})`)
|
|
243
|
+
}
|
|
244
|
+
// Handle rgba() - replace existing alpha (supports scientific notation like 1e-5)
|
|
245
|
+
if (color.startsWith(`rgba(`)) {
|
|
246
|
+
return color.replace(/,\s*[\d.eE\-+]+\)$/, `, ${clamped_alpha})`)
|
|
247
|
+
}
|
|
248
|
+
return color
|
|
249
|
+
}
|