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,444 @@
|
|
|
1
|
+
// Data type detection for JSON values -- determines which visualization component to use.
|
|
2
|
+
// Used by JsonBrowser to detect renderable items in JSON trees and by main.ts
|
|
3
|
+
// to decide whether to show the browser or render directly.
|
|
4
|
+
|
|
5
|
+
import { is_optimade_raw } from '$lib/structure/parse'
|
|
6
|
+
|
|
7
|
+
// Visualization types that can be rendered in the extension
|
|
8
|
+
export type RenderableType =
|
|
9
|
+
| `structure`
|
|
10
|
+
| `fermi_surface`
|
|
11
|
+
| `band_grid`
|
|
12
|
+
| `convex_hull`
|
|
13
|
+
| `volumetric`
|
|
14
|
+
| `phase_diagram`
|
|
15
|
+
| `band_structure`
|
|
16
|
+
| `dos`
|
|
17
|
+
| `bands_and_dos`
|
|
18
|
+
| `brillouin_zone`
|
|
19
|
+
| `xrd`
|
|
20
|
+
| `table`
|
|
21
|
+
| `plot`
|
|
22
|
+
|
|
23
|
+
// Human-readable labels for badge display
|
|
24
|
+
export const TYPE_LABELS: Record<RenderableType, string> = {
|
|
25
|
+
structure: `Structure`,
|
|
26
|
+
fermi_surface: `Fermi Surface`,
|
|
27
|
+
band_grid: `Band Grid`,
|
|
28
|
+
convex_hull: `Convex Hull`,
|
|
29
|
+
volumetric: `Volumetric`,
|
|
30
|
+
phase_diagram: `Phase Diagram`,
|
|
31
|
+
band_structure: `Band Structure`,
|
|
32
|
+
dos: `DOS`,
|
|
33
|
+
bands_and_dos: `Bands + DOS`,
|
|
34
|
+
brillouin_zone: `Brillouin Zone`,
|
|
35
|
+
xrd: `XRD`,
|
|
36
|
+
table: `Table`,
|
|
37
|
+
plot: `Plot`,
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Badge colors per type (CSS color values)
|
|
41
|
+
export const TYPE_COLORS: Record<RenderableType, string> = {
|
|
42
|
+
structure: `#4fc3f7`,
|
|
43
|
+
fermi_surface: `#ab47bc`,
|
|
44
|
+
band_grid: `#7e57c2`,
|
|
45
|
+
convex_hull: `#66bb6a`,
|
|
46
|
+
volumetric: `#ffa726`,
|
|
47
|
+
phase_diagram: `#ef5350`,
|
|
48
|
+
band_structure: `#29b6f6`,
|
|
49
|
+
dos: `#26a69a`,
|
|
50
|
+
bands_and_dos: `#5c6bc0`,
|
|
51
|
+
brillouin_zone: `#8d6e63`,
|
|
52
|
+
xrd: `#ec407a`,
|
|
53
|
+
table: `#78909c`,
|
|
54
|
+
plot: `#7c3aed`,
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// === Type Guards ===
|
|
58
|
+
|
|
59
|
+
// Narrows unknown to a non-array object record; used by every type guard below
|
|
60
|
+
const as_record = (obj: unknown): Record<string, unknown> | null =>
|
|
61
|
+
obj && typeof obj === `object` && !Array.isArray(obj)
|
|
62
|
+
? (obj as Record<string, unknown>)
|
|
63
|
+
: null
|
|
64
|
+
|
|
65
|
+
// Check that `key` on `data` is an Array with exactly `len` elements (or any length if omitted)
|
|
66
|
+
const has_array = (data: Record<string, unknown>, key: string, len?: number): boolean => {
|
|
67
|
+
const val = data[key]
|
|
68
|
+
return Array.isArray(val) && (len === undefined || val.length === len)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Structure: must have non-empty `sites` array where first site has `species` + coordinates
|
|
72
|
+
function is_structure(obj: unknown): boolean {
|
|
73
|
+
const data = as_record(obj)
|
|
74
|
+
if (!data || !has_array(data, `sites`)) return false
|
|
75
|
+
const sites = data.sites as unknown[]
|
|
76
|
+
if (sites.length === 0) return false
|
|
77
|
+
const first_site = as_record(sites[0])
|
|
78
|
+
if (!first_site) return false
|
|
79
|
+
const has_species = Array.isArray(first_site.species) && first_site.species.length > 0
|
|
80
|
+
return has_species && (Array.isArray(first_site.abc) || Array.isArray(first_site.xyz))
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// FermiSurfaceData: pre-computed isosurfaces with reciprocal lattice info
|
|
84
|
+
function is_fermi_surface(obj: unknown): boolean {
|
|
85
|
+
const data = as_record(obj)
|
|
86
|
+
if (!data) return false
|
|
87
|
+
return (
|
|
88
|
+
has_array(data, `isosurfaces`) &&
|
|
89
|
+
has_array(data, `k_lattice`, 3) &&
|
|
90
|
+
typeof data.fermi_energy === `number` &&
|
|
91
|
+
(data.reciprocal_cell === `wigner_seitz` || data.reciprocal_cell === `parallelepiped`) &&
|
|
92
|
+
!!as_record(data.metadata)
|
|
93
|
+
)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// BandGridData: raw band energies on a k-grid (needs marching cubes extraction)
|
|
97
|
+
function is_band_grid(obj: unknown): boolean {
|
|
98
|
+
const data = as_record(obj)
|
|
99
|
+
if (!data) return false
|
|
100
|
+
return (
|
|
101
|
+
has_array(data, `energies`) &&
|
|
102
|
+
has_array(data, `k_grid`, 3) &&
|
|
103
|
+
has_array(data, `k_lattice`, 3) &&
|
|
104
|
+
typeof data.fermi_energy === `number` &&
|
|
105
|
+
typeof data.n_bands === `number` &&
|
|
106
|
+
typeof data.n_spins === `number`
|
|
107
|
+
)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// ConvexHull entries: array of objects with `composition` (object) + energy field
|
|
111
|
+
// Accepts `energy`, `e_form_per_atom`, or `energy_per_atom` as the energy key
|
|
112
|
+
function is_convex_hull_entries(obj: unknown): boolean {
|
|
113
|
+
if (!Array.isArray(obj) || obj.length < 2) return false
|
|
114
|
+
// Check first few entries to avoid false positives on random arrays
|
|
115
|
+
return obj.slice(0, 3).every((item) => {
|
|
116
|
+
const entry = as_record(item)
|
|
117
|
+
return (
|
|
118
|
+
entry &&
|
|
119
|
+
as_record(entry.composition) &&
|
|
120
|
+
(typeof entry.energy === `number` ||
|
|
121
|
+
typeof entry.e_form_per_atom === `number` ||
|
|
122
|
+
typeof entry.energy_per_atom === `number`)
|
|
123
|
+
)
|
|
124
|
+
})
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// VolumetricData: 3D scalar grid with lattice info
|
|
128
|
+
function is_volumetric(obj: unknown): boolean {
|
|
129
|
+
const data = as_record(obj)
|
|
130
|
+
if (!data || !has_array(data, `grid`)) return false
|
|
131
|
+
// grid must be a 3D array (array of arrays of arrays)
|
|
132
|
+
const grid = data.grid as unknown[]
|
|
133
|
+
if (grid.length === 0) return false
|
|
134
|
+
const first_slice = grid[0]
|
|
135
|
+
if (!Array.isArray(first_slice) || !first_slice.length || !Array.isArray(first_slice[0]))
|
|
136
|
+
return false
|
|
137
|
+
return (
|
|
138
|
+
has_array(data, `grid_dims`, 3) &&
|
|
139
|
+
has_array(data, `lattice`, 3) &&
|
|
140
|
+
has_array(data, `origin`, 3) &&
|
|
141
|
+
!!as_record(data.data_range) &&
|
|
142
|
+
typeof data.periodic === `boolean`
|
|
143
|
+
)
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// PhaseDiagramData: binary phase diagram with components, regions, boundaries
|
|
147
|
+
function is_phase_diagram(obj: unknown): boolean {
|
|
148
|
+
const data = as_record(obj)
|
|
149
|
+
if (!data) return false
|
|
150
|
+
if (!has_array(data, `components`, 2)) return false
|
|
151
|
+
const [comp_a, comp_b] = data.components as unknown[]
|
|
152
|
+
if (typeof comp_a !== `string` || typeof comp_b !== `string`) return false
|
|
153
|
+
return (
|
|
154
|
+
has_array(data, `regions`) &&
|
|
155
|
+
has_array(data, `boundaries`) &&
|
|
156
|
+
has_array(data, `temperature_range`, 2)
|
|
157
|
+
)
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// BandStructure: normalized format (qpoints, branches, bands, nb_bands)
|
|
161
|
+
// or pymatgen format (kpoints, branches, bands with spin keys, labels_dict)
|
|
162
|
+
function is_band_structure(obj: unknown): boolean {
|
|
163
|
+
const data = as_record(obj)
|
|
164
|
+
if (!data) return false
|
|
165
|
+
if (!has_array(data, `branches`) || (data.branches as unknown[]).length === 0) {
|
|
166
|
+
return false
|
|
167
|
+
}
|
|
168
|
+
if (!as_record(data.labels_dict)) return false
|
|
169
|
+
// Normalized format
|
|
170
|
+
if (
|
|
171
|
+
has_array(data, `qpoints`) &&
|
|
172
|
+
has_array(data, `bands`) &&
|
|
173
|
+
typeof data.nb_bands === `number`
|
|
174
|
+
)
|
|
175
|
+
return true
|
|
176
|
+
// Pymatgen format: kpoints + bands object (not array) + efermi
|
|
177
|
+
if (has_array(data, `kpoints`) && as_record(data.bands)) {
|
|
178
|
+
return typeof data.efermi === `number`
|
|
179
|
+
}
|
|
180
|
+
return false
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
// DOS: pymatgen CompleteDos format or normalized DosData
|
|
184
|
+
// CompleteDos: has energies, densities, efermi, and @class containing "Dos"
|
|
185
|
+
// DosData: has type ("phonon"|"electronic"), frequencies/energies, densities
|
|
186
|
+
function is_dos(obj: unknown): boolean {
|
|
187
|
+
const data = as_record(obj)
|
|
188
|
+
if (!data) return false
|
|
189
|
+
const has_spectra = has_array(data, `energies`) || has_array(data, `frequencies`)
|
|
190
|
+
// pymatgen CompleteDos format
|
|
191
|
+
if (
|
|
192
|
+
typeof data[`@class`] === `string` &&
|
|
193
|
+
(data[`@class`] as string).includes(`Dos`) &&
|
|
194
|
+
has_spectra &&
|
|
195
|
+
data.densities !== undefined
|
|
196
|
+
)
|
|
197
|
+
return true
|
|
198
|
+
// Normalized DosData format
|
|
199
|
+
if (
|
|
200
|
+
(data.type === `phonon` || data.type === `electronic`) &&
|
|
201
|
+
has_spectra &&
|
|
202
|
+
has_array(data, `densities`)
|
|
203
|
+
)
|
|
204
|
+
return true
|
|
205
|
+
return false
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// BandsAndDos: object containing both band_structure and dos data at the same level.
|
|
209
|
+
// Must be a focused wrapper (few keys), not a large object that happens to have both.
|
|
210
|
+
function is_bands_and_dos(obj: unknown): boolean {
|
|
211
|
+
const data = as_record(obj)
|
|
212
|
+
if (!data) return false
|
|
213
|
+
const keys = Object.keys(data).filter((key) => !key.startsWith(`@`) && !key.startsWith(`_`))
|
|
214
|
+
// Wrapper format: { band_structure: {...}, dos: {...} } with few extra keys
|
|
215
|
+
const has_bands = as_record(data.band_structure) && is_band_structure(data.band_structure)
|
|
216
|
+
const has_dos_key = as_record(data.dos) && is_dos(data.dos)
|
|
217
|
+
if (has_bands && has_dos_key && keys.length <= 5) return true
|
|
218
|
+
// Combined-fields format: single object with both band structure and DOS fields mixed in
|
|
219
|
+
const has_bands_fields = has_array(data, `branches`) && as_record(data.labels_dict)
|
|
220
|
+
const has_dos_fields =
|
|
221
|
+
(has_array(data, `energies`) || has_array(data, `frequencies`)) &&
|
|
222
|
+
data.densities !== undefined &&
|
|
223
|
+
(data.atom_dos !== undefined || data.spd_dos !== undefined)
|
|
224
|
+
return !!(has_bands_fields && has_dos_fields)
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// BrillouinZone: reciprocal lattice data with optional k-path info
|
|
228
|
+
// Matches objects with a lattice that has reciprocal vectors (k_lattice or reciprocal_lattice)
|
|
229
|
+
// and optionally k-path points/labels for overlaying on the zone
|
|
230
|
+
function is_brillouin_zone(obj: unknown): boolean {
|
|
231
|
+
const data = as_record(obj)
|
|
232
|
+
if (!data) return false
|
|
233
|
+
// Must have reciprocal lattice vectors (3x3 matrix)
|
|
234
|
+
const has_k_lattice =
|
|
235
|
+
has_array(data, `k_lattice`, 3) || has_array(data, `reciprocal_lattice`, 3)
|
|
236
|
+
if (!has_k_lattice) return false
|
|
237
|
+
// Must have k-path or explicit BZ data to distinguish from Fermi surface data
|
|
238
|
+
// (Fermi surface also has k_lattice but additionally has isosurfaces)
|
|
239
|
+
if (has_array(data, `isosurfaces`)) return false // that's a Fermi surface, not a plain BZ
|
|
240
|
+
// Accept if it has k_path labels/points, or a structure with lattice
|
|
241
|
+
return (
|
|
242
|
+
has_array(data, `k_path`) ||
|
|
243
|
+
has_array(data, `k_points`) ||
|
|
244
|
+
!!as_record(data.k_labels) ||
|
|
245
|
+
!!as_record(data.labels_dict) ||
|
|
246
|
+
data.bz_order !== undefined
|
|
247
|
+
)
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
// XRD pattern: x + y arrays of equal length (2-theta angles vs intensities)
|
|
251
|
+
// with optional hkls (Miller indices) and d_hkls (d-spacings)
|
|
252
|
+
function is_xrd_pattern(obj: unknown): boolean {
|
|
253
|
+
const data = as_record(obj)
|
|
254
|
+
if (!data) return false
|
|
255
|
+
if (!has_array(data, `x`) || !has_array(data, `y`)) return false
|
|
256
|
+
const x_arr = data.x as unknown[]
|
|
257
|
+
const y_arr = data.y as unknown[]
|
|
258
|
+
if (x_arr.length !== y_arr.length || x_arr.length === 0) return false
|
|
259
|
+
// Must have numeric x/y values
|
|
260
|
+
if (typeof x_arr[0] !== `number` || typeof y_arr[0] !== `number`) return false
|
|
261
|
+
// Distinguish from generic scatter data: XRD patterns typically have hkls or d_hkls,
|
|
262
|
+
// or have @class containing "Xrd"
|
|
263
|
+
return (
|
|
264
|
+
has_array(data, `hkls`) ||
|
|
265
|
+
has_array(data, `d_hkls`) ||
|
|
266
|
+
(typeof data[`@class`] === `string` && (data[`@class`] as string).includes(`Xrd`)) ||
|
|
267
|
+
typeof data.wavelength === `number`
|
|
268
|
+
)
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// Tabular data: array of objects with consistent keys (row-based table format)
|
|
272
|
+
// or object with parallel arrays (column-based format)
|
|
273
|
+
function is_tabular_data(obj: unknown): boolean {
|
|
274
|
+
// Row-based: array of objects with string keys and numeric/string values
|
|
275
|
+
if (Array.isArray(obj) && obj.length >= 3) {
|
|
276
|
+
const first = as_record(obj[0])
|
|
277
|
+
const second = as_record(obj[1])
|
|
278
|
+
if (!first || !second) return false
|
|
279
|
+
const first_keys = Object.keys(first)
|
|
280
|
+
if (first_keys.length < 2) return false
|
|
281
|
+
// Check that rows have consistent keys and mostly numeric/string values
|
|
282
|
+
const second_keys = Object.keys(second)
|
|
283
|
+
const overlap = first_keys.filter((key) => second_keys.includes(key))
|
|
284
|
+
if (overlap.length < first_keys.length * 0.5) return false
|
|
285
|
+
// At least some values should be numbers (not just metadata objects)
|
|
286
|
+
const num_count = first_keys.filter((key) => typeof first[key] === `number`).length
|
|
287
|
+
return num_count >= 1
|
|
288
|
+
}
|
|
289
|
+
// Column-based: object where multiple values are equal-length arrays
|
|
290
|
+
const data = as_record(obj)
|
|
291
|
+
if (!data) return false
|
|
292
|
+
const entries = Object.entries(data)
|
|
293
|
+
if (entries.length < 2) return false
|
|
294
|
+
const array_entries = entries.filter(([, val]) => Array.isArray(val) && val.length > 0)
|
|
295
|
+
if (array_entries.length < 2) return false
|
|
296
|
+
// Check that arrays have consistent lengths
|
|
297
|
+
const lengths = array_entries.map(([, val]) => (val as unknown[]).length)
|
|
298
|
+
const first_len = lengths[0]
|
|
299
|
+
if (!lengths.every((len) => len === first_len)) return false
|
|
300
|
+
// At least one column must contain numbers
|
|
301
|
+
return array_entries.some(([, val]) => typeof (val as unknown[])[0] === `number`)
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// Plottable data: tabular data with at least 2 numeric columns (enough for a scatter plot).
|
|
305
|
+
// Samples multiple rows/elements to handle leading nulls.
|
|
306
|
+
export function is_plottable_data(obj: unknown): boolean {
|
|
307
|
+
if (!is_tabular_data(obj)) return false
|
|
308
|
+
if (Array.isArray(obj)) {
|
|
309
|
+
const sample = obj.slice(0, 10).map(as_record).filter(Boolean) as Record<string, unknown>[]
|
|
310
|
+
if (sample.length === 0) return false
|
|
311
|
+
const all_keys = new Set(sample.flatMap(Object.keys))
|
|
312
|
+
const num_cols = [...all_keys].filter((key) =>
|
|
313
|
+
sample.some((row) => typeof row[key] === `number`),
|
|
314
|
+
).length
|
|
315
|
+
return num_cols >= 2
|
|
316
|
+
}
|
|
317
|
+
const data = as_record(obj)
|
|
318
|
+
if (!data) return false
|
|
319
|
+
const array_entries = Object.entries(data).filter(
|
|
320
|
+
([, val]) => Array.isArray(val) && (val as unknown[]).length > 0,
|
|
321
|
+
)
|
|
322
|
+
const num_cols = array_entries.filter(([, val]) =>
|
|
323
|
+
(val as unknown[]).some((elem) => typeof elem === `number`),
|
|
324
|
+
).length
|
|
325
|
+
return num_cols >= 2
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// === Main Detection Function ===
|
|
329
|
+
|
|
330
|
+
// Detect the visualization type for a given JSON value.
|
|
331
|
+
// Returns the type if the value matches a known format, or null if not renderable.
|
|
332
|
+
// Checks are ordered from most specific to least specific to minimize false positives.
|
|
333
|
+
export function detect_view_type(value: unknown): RenderableType | null {
|
|
334
|
+
if (value == null) return null
|
|
335
|
+
|
|
336
|
+
// OPTIMADE format (special structure variant) -- check before generic structure
|
|
337
|
+
if (as_record(value) && is_optimade_raw(value)) return `structure`
|
|
338
|
+
|
|
339
|
+
// Fermi surface (pre-computed isosurfaces) -- very specific shape
|
|
340
|
+
if (is_fermi_surface(value)) return `fermi_surface`
|
|
341
|
+
|
|
342
|
+
// Band grid data (raw k-grid energies) -- very specific shape
|
|
343
|
+
if (is_band_grid(value)) return `band_grid`
|
|
344
|
+
|
|
345
|
+
// Phase diagram -- specific shape with components + regions + boundaries
|
|
346
|
+
if (is_phase_diagram(value)) return `phase_diagram`
|
|
347
|
+
|
|
348
|
+
// Combined bands + DOS -- check before individual band/dos checks
|
|
349
|
+
if (is_bands_and_dos(value)) return `bands_and_dos`
|
|
350
|
+
|
|
351
|
+
// Band structure -- qpoints + branches + bands
|
|
352
|
+
if (is_band_structure(value)) return `band_structure`
|
|
353
|
+
|
|
354
|
+
// DOS -- energies/frequencies + densities
|
|
355
|
+
if (is_dos(value)) return `dos`
|
|
356
|
+
|
|
357
|
+
// Brillouin zone -- reciprocal lattice with k-path info
|
|
358
|
+
if (is_brillouin_zone(value)) return `brillouin_zone`
|
|
359
|
+
|
|
360
|
+
// XRD pattern -- x/y arrays with hkls or d_hkls
|
|
361
|
+
if (is_xrd_pattern(value)) return `xrd`
|
|
362
|
+
|
|
363
|
+
// Volumetric data -- 3D grid with lattice
|
|
364
|
+
if (is_volumetric(value)) return `volumetric`
|
|
365
|
+
|
|
366
|
+
// Structure (pymatgen-style) -- check after more specific types since
|
|
367
|
+
// structures are common building blocks inside other data types
|
|
368
|
+
if (is_structure(value)) return `structure`
|
|
369
|
+
|
|
370
|
+
// Convex hull entries -- array check last (most generic)
|
|
371
|
+
if (is_convex_hull_entries(value)) return `convex_hull`
|
|
372
|
+
|
|
373
|
+
// Tabular data -- most generic, check last
|
|
374
|
+
if (is_tabular_data(value)) return `table`
|
|
375
|
+
|
|
376
|
+
return null
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// === Renderable Path Scanner ===
|
|
380
|
+
|
|
381
|
+
interface RenderablePath {
|
|
382
|
+
type: RenderableType
|
|
383
|
+
label: string
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
// Recursively scan a JSON object to find all paths that contain renderable data.
|
|
387
|
+
// Returns a Map of JSON path strings to their detected type.
|
|
388
|
+
// Used to show badges on JsonTree nodes indicating which subtrees contain visualizable data.
|
|
389
|
+
export function scan_renderable_paths(
|
|
390
|
+
obj: unknown,
|
|
391
|
+
prefix: string = ``,
|
|
392
|
+
max_depth: number = 10,
|
|
393
|
+
): Map<string, RenderablePath> {
|
|
394
|
+
const results = new Map<string, RenderablePath>()
|
|
395
|
+
const visited = new WeakSet<object>()
|
|
396
|
+
|
|
397
|
+
function walk(value: unknown, path: string, depth: number): void {
|
|
398
|
+
if (depth > max_depth) return
|
|
399
|
+
if (value == null) return
|
|
400
|
+
if (typeof value !== `object`) return
|
|
401
|
+
|
|
402
|
+
// Circular reference protection
|
|
403
|
+
const obj_ref = value as object
|
|
404
|
+
if (visited.has(obj_ref)) return
|
|
405
|
+
visited.add(obj_ref)
|
|
406
|
+
|
|
407
|
+
// Check if this value itself is renderable
|
|
408
|
+
const detected_type = detect_view_type(value)
|
|
409
|
+
if (detected_type) {
|
|
410
|
+
results.set(path, { type: detected_type, label: TYPE_LABELS[detected_type] })
|
|
411
|
+
// If tabular data is also plottable, register a plot badge too
|
|
412
|
+
if (detected_type === `table` && is_plottable_data(value)) {
|
|
413
|
+
const plot_path = path ? `${path}\x00plot` : `\x00plot`
|
|
414
|
+
results.set(plot_path, { type: `plot`, label: TYPE_LABELS.plot })
|
|
415
|
+
}
|
|
416
|
+
// Don't recurse into renderable objects -- their children are part of the data
|
|
417
|
+
return
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
// Recurse into children
|
|
421
|
+
if (Array.isArray(value)) {
|
|
422
|
+
// For arrays, only scan first few elements to avoid huge arrays
|
|
423
|
+
const scan_count = Math.min(value.length, 20)
|
|
424
|
+
for (let idx = 0; idx < scan_count; idx++) {
|
|
425
|
+
const child_path = path ? `${path}[${idx}]` : `[${idx}]`
|
|
426
|
+
walk(value[idx], child_path, depth + 1)
|
|
427
|
+
}
|
|
428
|
+
} else {
|
|
429
|
+
for (const [key, child_value] of Object.entries(value as Record<string, unknown>)) {
|
|
430
|
+
// Use bracket notation for keys containing dots to avoid ambiguity in resolve_path
|
|
431
|
+
const segment = key.includes(`.`) ? `["${key}"]` : key
|
|
432
|
+
const child_path = path
|
|
433
|
+
? key.includes(`.`)
|
|
434
|
+
? `${path}${segment}`
|
|
435
|
+
: `${path}.${segment}`
|
|
436
|
+
: segment
|
|
437
|
+
walk(child_value, child_path, depth + 1)
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
walk(obj, prefix, 0)
|
|
443
|
+
return results
|
|
444
|
+
}
|