matterviz 0.3.5 → 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/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 +1460 -215
- 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/brillouin/BrillouinZone.svelte +0 -546
- 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 -426
- 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 -78
- 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 -99
- 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 -814
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
- package/dist/convex-hull/ConvexHull3D.svelte +0 -1790
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
- package/dist/convex-hull/ConvexHull4D.svelte +0 -1386
- 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 -122
- package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
- package/dist/convex-hull/ConvexHullStats.svelte +0 -922
- 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 -689
- 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 -147
- 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 -2
- 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 -600
- 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 -74
- package/dist/io/export.d.ts +0 -16
- package/dist/io/export.js +0 -316
- 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 -20
- 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 -548
- 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 -649
- 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/CopyButton.svelte +0 -45
- package/dist/overlays/CopyButton.svelte.d.ts +0 -8
- package/dist/overlays/DraggablePane.svelte +0 -564
- package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
- package/dist/overlays/InfoPaneCards.svelte +0 -149
- package/dist/overlays/InfoPaneCards.svelte.d.ts +0 -22
- 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 -1084
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
- package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -449
- 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 -867
- 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 -2265
- package/dist/plot/BarPlot.svelte.d.ts +0 -83
- 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 -225
- package/dist/plot/FillArea.svelte.d.ts +0 -21
- package/dist/plot/Histogram.svelte +0 -1672
- 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 -84
- 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 -569
- package/dist/plot/PlotLegend.svelte.d.ts +0 -29
- 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 -2845
- package/dist/plot/ScatterPlot.svelte.d.ts +0 -93
- package/dist/plot/ScatterPlot3D.svelte +0 -502
- 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 -191
- package/dist/plot/ScatterPoint.svelte.d.ts +0 -21
- package/dist/plot/SpacegroupBarPlot.svelte +0 -293
- 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 -37
- 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 -859
- 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 -114
- package/dist/settings.d.ts +0 -255
- package/dist/settings.js +0 -1132
- 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 -1999
- package/dist/structure/Structure.svelte.d.ts +0 -87
- package/dist/structure/StructureControls.svelte +0 -1298
- 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 -735
- package/dist/structure/StructureInfoPane.svelte.d.ts +0 -19
- package/dist/structure/StructureScene.svelte +0 -1905
- package/dist/structure/StructureScene.svelte.d.ts +0 -108
- package/dist/structure/atom-properties.d.ts +0 -37
- package/dist/structure/atom-properties.js +0 -200
- package/dist/structure/bond-order-perception.d.ts +0 -13
- package/dist/structure/bond-order-perception.js +0 -367
- package/dist/structure/bonding.d.ts +0 -42
- package/dist/structure/bonding.js +0 -525
- package/dist/structure/export.d.ts +0 -20
- package/dist/structure/export.js +0 -727
- package/dist/structure/index.d.ts +0 -125
- package/dist/structure/index.js +0 -171
- package/dist/structure/label-placement.d.ts +0 -14
- package/dist/structure/label-placement.js +0 -72
- package/dist/structure/measure.d.ts +0 -6
- package/dist/structure/measure.js +0 -29
- package/dist/structure/parse.d.ts +0 -66
- package/dist/structure/parse.js +0 -1363
- 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 -170
- 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 -91
- 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 -313
- 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 -73
- package/dist/trajectory/parse/hdf5.d.ts +0 -2
- package/dist/trajectory/parse/hdf5.js +0 -127
- 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/{app.css → src/lib/app.css} +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,654 @@
|
|
|
1
|
+
import type { D3ColorSchemeName, D3InterpolateName } from '$lib/colors'
|
|
2
|
+
import * as math from '$lib/math'
|
|
3
|
+
import type { Point, ScaleType, TimeInterval } from '$lib/plot'
|
|
4
|
+
import { get_arcsinh_threshold, get_scale_type_name, is_time_scale } from '$lib/plot/types'
|
|
5
|
+
import { extent, range } from 'd3-array'
|
|
6
|
+
import type { ScaleContinuousNumeric, ScaleTime } from 'd3-scale'
|
|
7
|
+
import {
|
|
8
|
+
scaleLinear,
|
|
9
|
+
scaleLog,
|
|
10
|
+
scaleSequential,
|
|
11
|
+
scaleSequentialLog,
|
|
12
|
+
scaleTime,
|
|
13
|
+
} from 'd3-scale'
|
|
14
|
+
import * as d3_sc from 'd3-scale-chromatic'
|
|
15
|
+
|
|
16
|
+
// Type for ticks parameter - can be count, array of values, time interval, or object mapping values to labels
|
|
17
|
+
export type TicksOption = number | number[] | TimeInterval | Record<number, string>
|
|
18
|
+
|
|
19
|
+
// Dedupe and sort numeric array (used in tick generation)
|
|
20
|
+
const dedupe_sort = (arr: number[]): number[] => [...new Set(arr)].sort((a, b) => a - b)
|
|
21
|
+
|
|
22
|
+
// --- Arcsinh Scale Implementation ---
|
|
23
|
+
// The arcsinh scale provides smooth transition between linear (near zero) and
|
|
24
|
+
// logarithmic (for large |x|) behavior. Unlike log, it handles negative values.
|
|
25
|
+
// Formula: y = asinh(x / threshold) = ln(x/c + sqrt((x/c)² + 1))
|
|
26
|
+
|
|
27
|
+
// Interface for arcsinh scale (D3-compatible)
|
|
28
|
+
// Accepts both number and Date for compatibility with time-based data
|
|
29
|
+
export interface ArcsinhScale {
|
|
30
|
+
(value: number | Date): number
|
|
31
|
+
domain(): [number, number]
|
|
32
|
+
domain(domain: [number, number]): ArcsinhScale
|
|
33
|
+
range(): [number, number]
|
|
34
|
+
range(range: [number, number]): ArcsinhScale
|
|
35
|
+
invert(value: number): number
|
|
36
|
+
copy(): ArcsinhScale
|
|
37
|
+
ticks(count?: number): number[]
|
|
38
|
+
threshold: number
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Union type for all scale functions used in plots
|
|
42
|
+
export type PlotScaleFn =
|
|
43
|
+
| ScaleContinuousNumeric<number, number>
|
|
44
|
+
| ScaleTime<number, number>
|
|
45
|
+
| ArcsinhScale
|
|
46
|
+
|
|
47
|
+
// Create an arcsinh scale with configurable threshold
|
|
48
|
+
export function scale_arcsinh(threshold = 1): ArcsinhScale {
|
|
49
|
+
if (!Number.isFinite(threshold) || threshold <= 0) {
|
|
50
|
+
throw new Error(`arcsinh threshold must be a positive finite number, got ${threshold}`)
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
let current_domain: [number, number] = [0, 1]
|
|
54
|
+
let current_range: [number, number] = [0, 1]
|
|
55
|
+
|
|
56
|
+
// Forward transform: data value → arcsinh-space
|
|
57
|
+
const arcsinh_transform = (x: number): number => Math.asinh(x / threshold)
|
|
58
|
+
|
|
59
|
+
// Inverse transform: arcsinh-space → data value
|
|
60
|
+
const sinh_transform = (y: number): number => Math.sinh(y) * threshold
|
|
61
|
+
|
|
62
|
+
// Map from data domain to output range
|
|
63
|
+
// Accepts Date for compatibility with D3 time scales
|
|
64
|
+
const scale = ((value: number | Date): number => {
|
|
65
|
+
const num_value = value instanceof Date ? value.getTime() : value
|
|
66
|
+
const [d_min, d_max] = current_domain
|
|
67
|
+
const [r_min, r_max] = current_range
|
|
68
|
+
|
|
69
|
+
// Handle identical domain endpoints (degenerate case)
|
|
70
|
+
if (d_max === d_min) return (r_min + r_max) / 2
|
|
71
|
+
|
|
72
|
+
// Transform domain endpoints
|
|
73
|
+
const t_min = arcsinh_transform(d_min)
|
|
74
|
+
const t_max = arcsinh_transform(d_max)
|
|
75
|
+
|
|
76
|
+
// Transform input value
|
|
77
|
+
const t_val = arcsinh_transform(num_value)
|
|
78
|
+
|
|
79
|
+
// Linear interpolation in transformed space
|
|
80
|
+
if (t_max === t_min) return (r_min + r_max) / 2
|
|
81
|
+
const t = (t_val - t_min) / (t_max - t_min)
|
|
82
|
+
return r_min + t * (r_max - r_min)
|
|
83
|
+
}) as ArcsinhScale
|
|
84
|
+
|
|
85
|
+
// Domain getter/setter
|
|
86
|
+
scale.domain = function (domain?: [number, number]): [number, number] | ArcsinhScale {
|
|
87
|
+
if (domain === undefined) return current_domain
|
|
88
|
+
current_domain = domain
|
|
89
|
+
return scale
|
|
90
|
+
} as ArcsinhScale[`domain`]
|
|
91
|
+
|
|
92
|
+
// Range getter/setter
|
|
93
|
+
scale.range = function (output_range?: [number, number]): [number, number] | ArcsinhScale {
|
|
94
|
+
if (output_range === undefined) return current_range
|
|
95
|
+
current_range = output_range
|
|
96
|
+
return scale
|
|
97
|
+
} as ArcsinhScale[`range`]
|
|
98
|
+
|
|
99
|
+
// Invert: screen position → data value
|
|
100
|
+
scale.invert = (value: number): number => {
|
|
101
|
+
const [d_min, d_max] = current_domain
|
|
102
|
+
const [r_min, r_max] = current_range
|
|
103
|
+
|
|
104
|
+
// Handle identical domain endpoints (degenerate case)
|
|
105
|
+
if (d_max === d_min) return (d_min + d_max) / 2
|
|
106
|
+
|
|
107
|
+
// Transform domain endpoints
|
|
108
|
+
const t_min = arcsinh_transform(d_min)
|
|
109
|
+
const t_max = arcsinh_transform(d_max)
|
|
110
|
+
|
|
111
|
+
// Inverse linear interpolation
|
|
112
|
+
if (r_max === r_min) return (d_min + d_max) / 2
|
|
113
|
+
const t = (value - r_min) / (r_max - r_min)
|
|
114
|
+
const t_val = t_min + t * (t_max - t_min)
|
|
115
|
+
|
|
116
|
+
// Inverse transform
|
|
117
|
+
return sinh_transform(t_val)
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Copy the scale
|
|
121
|
+
scale.copy = (): ArcsinhScale => {
|
|
122
|
+
const copy = scale_arcsinh(threshold)
|
|
123
|
+
copy.domain(current_domain)
|
|
124
|
+
copy.range(current_range)
|
|
125
|
+
return copy
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// Generate nice ticks for arcsinh scale
|
|
129
|
+
scale.ticks = (count = 10): number[] => {
|
|
130
|
+
return generate_arcsinh_ticks(current_domain[0], current_domain[1], threshold, count)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
scale.threshold = threshold
|
|
134
|
+
|
|
135
|
+
return scale
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Generate nice tick values for arcsinh scale
|
|
139
|
+
// Strategy: symmetric around zero when possible, with powers of 10 for large values
|
|
140
|
+
// Note: For small count values (1 or 2) on mixed ranges, zero takes priority as the
|
|
141
|
+
// most important tick. E.g., count=1 yields [0], count=2 yields [0] plus one boundary.
|
|
142
|
+
export function generate_arcsinh_ticks(
|
|
143
|
+
min: number,
|
|
144
|
+
max: number,
|
|
145
|
+
threshold = 1,
|
|
146
|
+
count = 10,
|
|
147
|
+
): number[] {
|
|
148
|
+
// Guard against invalid/non-positive threshold to prevent division issues
|
|
149
|
+
const safe_threshold = Math.max(threshold, Number.EPSILON)
|
|
150
|
+
// Normalize reversed domains (min > max)
|
|
151
|
+
const [lo, hi] = min <= max ? [min, max] : [max, min]
|
|
152
|
+
|
|
153
|
+
// For purely positive or purely negative ranges, use log-like spacing
|
|
154
|
+
if (lo >= 0) {
|
|
155
|
+
return generate_positive_arcsinh_ticks(lo, hi, safe_threshold, count)
|
|
156
|
+
}
|
|
157
|
+
if (hi <= 0) {
|
|
158
|
+
// Negative range: mirror the positive logic
|
|
159
|
+
return generate_positive_arcsinh_ticks(-hi, -lo, safe_threshold, count)
|
|
160
|
+
.map((tick) => -tick)
|
|
161
|
+
.toReversed()
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// Mixed range: symmetric ticks around zero (includes_zero is always true here)
|
|
165
|
+
// For very small counts, we prioritize zero as the most meaningful tick
|
|
166
|
+
const half_count = Math.floor((count - 1) / 2)
|
|
167
|
+
const ticks: number[] = [0]
|
|
168
|
+
|
|
169
|
+
// Add positive ticks
|
|
170
|
+
const pos_ticks = generate_positive_arcsinh_ticks(0, hi, safe_threshold, half_count)
|
|
171
|
+
ticks.push(...pos_ticks.filter((tick) => tick > 0))
|
|
172
|
+
|
|
173
|
+
// Add negative ticks (mirror of positive)
|
|
174
|
+
const neg_ticks = generate_positive_arcsinh_ticks(0, -lo, safe_threshold, half_count)
|
|
175
|
+
ticks.push(...neg_ticks.filter((tick) => tick > 0).map((tick) => -tick))
|
|
176
|
+
|
|
177
|
+
// For small counts where half_count is 0 or 1, ensure at least some boundary coverage
|
|
178
|
+
if (half_count <= 1 && count >= 2) {
|
|
179
|
+
// Add boundaries if not already present and we have room
|
|
180
|
+
const sorted = dedupe_sort(ticks)
|
|
181
|
+
if (sorted.length < count) {
|
|
182
|
+
// Snap the larger-magnitude boundary to a clean power of 10 (raw extremes would render
|
|
183
|
+
// as long unrounded labels); keeps some coverage for very small tick counts.
|
|
184
|
+
const boundary = Math.abs(hi) >= Math.abs(lo) ? hi : lo
|
|
185
|
+
const nice = Math.sign(boundary) * 10 ** Math.floor(Math.log10(Math.abs(boundary)))
|
|
186
|
+
if (Number.isFinite(nice) && nice !== 0 && !sorted.includes(nice)) ticks.push(nice)
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
return dedupe_sort(ticks)
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Generate positive arcsinh ticks (helper)
|
|
194
|
+
// Ensures domain boundaries (min, max) are included when they provide meaningful
|
|
195
|
+
// visual anchors that powers-of-10 alone might miss.
|
|
196
|
+
function generate_positive_arcsinh_ticks(
|
|
197
|
+
min: number,
|
|
198
|
+
max: number,
|
|
199
|
+
threshold: number,
|
|
200
|
+
count: number,
|
|
201
|
+
): number[] {
|
|
202
|
+
if (count <= 0 || max <= min) return []
|
|
203
|
+
|
|
204
|
+
const ticks: number[] = []
|
|
205
|
+
|
|
206
|
+
// For values near threshold, use linear-like spacing
|
|
207
|
+
// For values >> threshold, use log-like spacing (powers of 10)
|
|
208
|
+
|
|
209
|
+
if (max <= threshold * 2) {
|
|
210
|
+
// Small range: use linear ticks
|
|
211
|
+
const step = (max - min) / count
|
|
212
|
+
for (let idx = 0; idx <= count; idx++) {
|
|
213
|
+
const val = min + step * idx
|
|
214
|
+
if (val >= min && val <= max) ticks.push(val)
|
|
215
|
+
}
|
|
216
|
+
} else {
|
|
217
|
+
// Large range: combine linear near zero with powers of 10.
|
|
218
|
+
// Domain endpoints are intentionally NOT added as ticks: raw extremes render as long
|
|
219
|
+
// unrounded labels (e.g. 1325.8239811994677). Powers of 10 plus 2x/5x multiples below
|
|
220
|
+
// already give clean round ticks; pass axis.ticks/axis.format for custom labels.
|
|
221
|
+
|
|
222
|
+
// Add threshold as a tick if in range
|
|
223
|
+
if (threshold >= min && threshold <= max) ticks.push(threshold)
|
|
224
|
+
|
|
225
|
+
// Add powers of 10 that are in range
|
|
226
|
+
const min_power = Math.floor(Math.log10(Math.max(min, threshold / 10)))
|
|
227
|
+
const max_power = Math.ceil(Math.log10(max))
|
|
228
|
+
|
|
229
|
+
for (let power = min_power; power <= max_power; power++) {
|
|
230
|
+
const val = Math.pow(10, power)
|
|
231
|
+
if (val >= min && val <= max) ticks.push(val)
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// Add intermediate values (2x, 5x) for sparser regions
|
|
235
|
+
if (ticks.length < count) {
|
|
236
|
+
for (let power = min_power; power < max_power; power++) {
|
|
237
|
+
const base = Math.pow(10, power)
|
|
238
|
+
for (const mult of [2, 5]) {
|
|
239
|
+
const val = base * mult
|
|
240
|
+
if (val >= min && val <= max) ticks.push(val)
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
return dedupe_sort(ticks)
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Create a scale function based on type, domain, and range
|
|
250
|
+
// Note: Time scales are handled separately via create_time_scale() since ScaleTime
|
|
251
|
+
// has incompatible types (invert returns Date, not number). Use is_time_scale()
|
|
252
|
+
// to detect time mode and call create_time_scale() directly when needed.
|
|
253
|
+
export function create_scale(
|
|
254
|
+
scale_type: ScaleType,
|
|
255
|
+
domain: [number, number],
|
|
256
|
+
output_range: [number, number],
|
|
257
|
+
): ScaleContinuousNumeric<number, number> | ArcsinhScale {
|
|
258
|
+
const [min_val, max_val] = domain
|
|
259
|
+
const type_name = get_scale_type_name(scale_type)
|
|
260
|
+
|
|
261
|
+
if (type_name === `log`) {
|
|
262
|
+
return scaleLog()
|
|
263
|
+
.domain([Math.max(min_val, math.LOG_EPS), max_val])
|
|
264
|
+
.range(output_range)
|
|
265
|
+
}
|
|
266
|
+
if (type_name === `arcsinh`) {
|
|
267
|
+
const threshold = get_arcsinh_threshold(scale_type)
|
|
268
|
+
return scale_arcsinh(threshold).domain(domain).range(output_range)
|
|
269
|
+
}
|
|
270
|
+
// For 'time' or 'linear', return linear scale (time scales need create_time_scale())
|
|
271
|
+
return scaleLinear().domain(domain).range(output_range)
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
// Create a time scale for time-based data
|
|
275
|
+
export const create_time_scale = (domain: [number, number], output_range: [number, number]) =>
|
|
276
|
+
scaleTime()
|
|
277
|
+
.domain([new Date(domain[0]), new Date(domain[1])])
|
|
278
|
+
.range(output_range)
|
|
279
|
+
|
|
280
|
+
// Unified tick generation function
|
|
281
|
+
export function generate_ticks(
|
|
282
|
+
domain: [number, number],
|
|
283
|
+
scale_type: ScaleType,
|
|
284
|
+
ticks_option: TicksOption | undefined,
|
|
285
|
+
scale_fn: PlotScaleFn, // D3 scale function with .ticks() method
|
|
286
|
+
options: {
|
|
287
|
+
format?: string // For detecting time format
|
|
288
|
+
default_count?: number // Default tick count
|
|
289
|
+
interval_padding?: number // Padding for interval mode
|
|
290
|
+
} = {},
|
|
291
|
+
): number[] {
|
|
292
|
+
const { format, default_count = 8, interval_padding = 0.1 } = options
|
|
293
|
+
const [min_val, max_val] = domain
|
|
294
|
+
|
|
295
|
+
// If ticks_option is an object (value-to-label mapping), extract values
|
|
296
|
+
if (ticks_option && typeof ticks_option === `object` && !Array.isArray(ticks_option)) {
|
|
297
|
+
const [domain_min, domain_max] = [Math.min(...domain), Math.max(...domain)]
|
|
298
|
+
return Object.keys(ticks_option)
|
|
299
|
+
.map(Number)
|
|
300
|
+
.filter((val) => Number.isFinite(val) && val >= domain_min && val <= domain_max)
|
|
301
|
+
.sort((a, b) => a - b)
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
// If ticks_option is already an array, use it directly
|
|
305
|
+
if (Array.isArray(ticks_option)) return ticks_option
|
|
306
|
+
|
|
307
|
+
// Time-based ticks (explicit scale_type: 'time' or format heuristic for backwards compatibility)
|
|
308
|
+
if (is_time_scale(scale_type, format)) {
|
|
309
|
+
const time_scale = scaleTime().domain([new Date(min_val), new Date(max_val)])
|
|
310
|
+
|
|
311
|
+
let count = 10 // default
|
|
312
|
+
if (typeof ticks_option === `number`) {
|
|
313
|
+
count =
|
|
314
|
+
ticks_option < 0
|
|
315
|
+
? Math.ceil((max_val - min_val) / Math.abs(ticks_option) / 86_400_000) // milliseconds per day
|
|
316
|
+
: ticks_option
|
|
317
|
+
} else if (typeof ticks_option === `string`) {
|
|
318
|
+
count = ticks_option === `day` ? 30 : ticks_option === `month` ? 12 : 10
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
const ticks = time_scale.ticks(count)
|
|
322
|
+
|
|
323
|
+
if (typeof ticks_option === `string`) {
|
|
324
|
+
if (ticks_option === `month`) {
|
|
325
|
+
return ticks.filter((d: Date) => d.getDate() === 1).map((d: Date) => d.getTime())
|
|
326
|
+
}
|
|
327
|
+
if (ticks_option === `year`) {
|
|
328
|
+
return ticks
|
|
329
|
+
.filter((d: Date) => d.getMonth() === 0 && d.getDate() === 1)
|
|
330
|
+
.map((d: Date) => d.getTime())
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
return ticks.map((d: Date) => d.getTime())
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
const type_name = get_scale_type_name(scale_type)
|
|
337
|
+
|
|
338
|
+
// Log scale ticks
|
|
339
|
+
if (type_name === `log`) return generate_log_ticks(min_val, max_val, ticks_option)
|
|
340
|
+
|
|
341
|
+
// Arcsinh scale ticks
|
|
342
|
+
if (type_name === `arcsinh`) {
|
|
343
|
+
const threshold = get_arcsinh_threshold(scale_type)
|
|
344
|
+
const tick_count =
|
|
345
|
+
typeof ticks_option === `number` && ticks_option > 0 ? ticks_option : default_count
|
|
346
|
+
return generate_arcsinh_ticks(min_val, max_val, threshold, tick_count)
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
// Linear scale with interval (negative number indicates interval)
|
|
350
|
+
if (typeof ticks_option === `number` && ticks_option < 0) {
|
|
351
|
+
const interval = Math.abs(ticks_option)
|
|
352
|
+
const start = Math.ceil(min_val / interval) * interval
|
|
353
|
+
return range(start, max_val + interval * interval_padding, interval)
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
// Default ticks using scale function
|
|
357
|
+
const tick_count =
|
|
358
|
+
typeof ticks_option === `number` && ticks_option > 0 ? ticks_option : default_count
|
|
359
|
+
|
|
360
|
+
const ticks = scale_fn.ticks(tick_count)
|
|
361
|
+
return ticks.map(Number)
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
// Calculate domain from array of values (simple version)
|
|
365
|
+
export function calculate_domain(
|
|
366
|
+
values: number[],
|
|
367
|
+
scale_type: ScaleType = `linear`,
|
|
368
|
+
): [number, number] {
|
|
369
|
+
const [min_val, max_val] = extent(values)
|
|
370
|
+
if (min_val === undefined || max_val === undefined) return [0, 1]
|
|
371
|
+
|
|
372
|
+
const type_name = get_scale_type_name(scale_type)
|
|
373
|
+
// Only log scale needs domain clamping to positive values
|
|
374
|
+
// Arcsinh and linear can handle any values
|
|
375
|
+
return type_name === `log` ? [Math.max(min_val, math.LOG_EPS), max_val] : [min_val, max_val]
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
// Advanced domain calculation with padding and nice boundaries (from ScatterPlot)
|
|
379
|
+
export function get_nice_data_range(
|
|
380
|
+
points: Point[],
|
|
381
|
+
get_value: (p: Point) => number,
|
|
382
|
+
limits: [number | null, number | null],
|
|
383
|
+
scale_type: ScaleType,
|
|
384
|
+
padding_factor: number,
|
|
385
|
+
is_time = false,
|
|
386
|
+
): [number, number] {
|
|
387
|
+
const [min, max] = limits
|
|
388
|
+
const [min_ext, max_ext] = extent(points, get_value)
|
|
389
|
+
let data_min = min ?? min_ext ?? 0
|
|
390
|
+
let data_max = max ?? max_ext ?? 1
|
|
391
|
+
const type_name = get_scale_type_name(scale_type)
|
|
392
|
+
|
|
393
|
+
// Apply padding *only if* limits were NOT provided
|
|
394
|
+
if (min === null && max === null && points.length > 0) {
|
|
395
|
+
if (data_min !== data_max) {
|
|
396
|
+
// Apply percentage padding based on scale type if there's a range
|
|
397
|
+
const span = data_max - data_min
|
|
398
|
+
if (is_time) {
|
|
399
|
+
const padding_ms = span * padding_factor
|
|
400
|
+
data_min = data_min - padding_ms
|
|
401
|
+
data_max = data_max + padding_ms
|
|
402
|
+
} else if (type_name === `log`) {
|
|
403
|
+
const log_min = Math.log10(Math.max(data_min, math.LOG_EPS))
|
|
404
|
+
const log_max = Math.log10(Math.max(data_max, math.LOG_EPS))
|
|
405
|
+
const log_span = log_max - log_min
|
|
406
|
+
data_min = Math.pow(10, log_min - log_span * padding_factor)
|
|
407
|
+
data_max = Math.pow(10, log_max + log_span * padding_factor)
|
|
408
|
+
} else if (type_name === `arcsinh`) {
|
|
409
|
+
// Arcsinh: apply padding in arcsinh-transformed space
|
|
410
|
+
// Guard against extremely small thresholds that could cause precision issues
|
|
411
|
+
const threshold = Math.max(get_arcsinh_threshold(scale_type), Number.EPSILON)
|
|
412
|
+
const asinh_min = Math.asinh(data_min / threshold)
|
|
413
|
+
const asinh_max = Math.asinh(data_max / threshold)
|
|
414
|
+
const asinh_span = asinh_max - asinh_min
|
|
415
|
+
data_min = Math.sinh(asinh_min - asinh_span * padding_factor) * threshold
|
|
416
|
+
data_max = Math.sinh(asinh_max + asinh_span * padding_factor) * threshold
|
|
417
|
+
} else {
|
|
418
|
+
// Linear scale
|
|
419
|
+
const padding_abs = span * padding_factor
|
|
420
|
+
data_min = data_min - padding_abs
|
|
421
|
+
data_max = data_max + padding_abs
|
|
422
|
+
}
|
|
423
|
+
} else {
|
|
424
|
+
// Handle single data point case with fixed relative padding
|
|
425
|
+
if (is_time) {
|
|
426
|
+
const one_day = 86_400_000 // milliseconds in a day
|
|
427
|
+
data_min = data_min - one_day
|
|
428
|
+
data_max = data_max + one_day
|
|
429
|
+
} else if (type_name === `log`) {
|
|
430
|
+
data_min = Math.max(math.LOG_EPS, data_min / 1.1) // 10% multiplicative padding
|
|
431
|
+
data_max = data_max * 1.1
|
|
432
|
+
} else if (type_name === `arcsinh`) {
|
|
433
|
+
// Arcsinh: 10% padding in transformed space
|
|
434
|
+
// Guard against extremely small thresholds that could cause precision issues
|
|
435
|
+
const threshold = Math.max(get_arcsinh_threshold(scale_type), Number.EPSILON)
|
|
436
|
+
const asinh_val = Math.asinh(data_min / threshold)
|
|
437
|
+
const padding = Math.abs(asinh_val) * 0.1 || 0.1 // Use 0.1 if transformed value is 0 (i.e. data_min = 0)
|
|
438
|
+
data_min = Math.sinh(asinh_val - padding) * threshold
|
|
439
|
+
data_max = Math.sinh(asinh_val + padding) * threshold
|
|
440
|
+
} else {
|
|
441
|
+
const padding_abs = data_min === 0 ? 1 : Math.abs(data_min * 0.1) // 10% additive padding, or 1 if value is 0
|
|
442
|
+
data_min = data_min - padding_abs
|
|
443
|
+
data_max = data_max + padding_abs
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
// If time or no range after padding, return the (potentially padded) domain directly
|
|
449
|
+
if (is_time || data_min === data_max) return [data_min, data_max]
|
|
450
|
+
|
|
451
|
+
// Use D3's nice() to create pretty boundaries
|
|
452
|
+
// For arcsinh, we don't use D3's nice() - just return padded domain
|
|
453
|
+
if (type_name === `arcsinh`) {
|
|
454
|
+
return [data_min, data_max]
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
// Create the scale with the *padded* data domain
|
|
458
|
+
const scale =
|
|
459
|
+
type_name === `log`
|
|
460
|
+
? scaleLog().domain([
|
|
461
|
+
Math.max(data_min, math.LOG_EPS),
|
|
462
|
+
Math.max(data_max, data_min * 1.1),
|
|
463
|
+
]) // Ensure log domain > 0
|
|
464
|
+
: scaleLinear().domain([data_min, data_max])
|
|
465
|
+
|
|
466
|
+
scale.nice()
|
|
467
|
+
const [nice_min = data_min, nice_max = data_max] = scale.domain()
|
|
468
|
+
return [nice_min, nice_max]
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
// Generate logarithmic ticks (from ScatterPlot)
|
|
472
|
+
export function generate_log_ticks(
|
|
473
|
+
min: number,
|
|
474
|
+
max: number,
|
|
475
|
+
ticks_option?: TicksOption,
|
|
476
|
+
): number[] {
|
|
477
|
+
// If ticks_option is already an array, use it directly
|
|
478
|
+
if (Array.isArray(ticks_option)) return ticks_option
|
|
479
|
+
min = Math.max(min, math.LOG_EPS)
|
|
480
|
+
// Ensure a strictly increasing domain for tick generation
|
|
481
|
+
max = Math.max(max, min * 1.1)
|
|
482
|
+
|
|
483
|
+
const min_power = Math.floor(Math.log10(min))
|
|
484
|
+
const max_power = Math.ceil(Math.log10(max))
|
|
485
|
+
|
|
486
|
+
// For very wide ranges, extend the range to include more ticks
|
|
487
|
+
const range_size = max_power - min_power
|
|
488
|
+
const extended_min_power =
|
|
489
|
+
range_size <= 2 ? min_power - 1 : min_power - Math.max(1, Math.floor(range_size / 4))
|
|
490
|
+
const extended_max_power = range_size <= 2 ? max_power + 1 : max_power
|
|
491
|
+
|
|
492
|
+
const powers = range(extended_min_power, extended_max_power + 1).map((power: number) =>
|
|
493
|
+
Math.pow(10, power),
|
|
494
|
+
)
|
|
495
|
+
|
|
496
|
+
// For narrow ranges, include intermediate values
|
|
497
|
+
if (max_power - min_power < 3 && typeof ticks_option === `number` && ticks_option > 5) {
|
|
498
|
+
const detailed_ticks: number[] = []
|
|
499
|
+
powers.forEach((power: number) => {
|
|
500
|
+
detailed_ticks.push(power)
|
|
501
|
+
if (power * 2 <= Math.pow(10, extended_max_power)) detailed_ticks.push(power * 2)
|
|
502
|
+
if (power * 5 <= Math.pow(10, extended_max_power)) detailed_ticks.push(power * 5)
|
|
503
|
+
})
|
|
504
|
+
return detailed_ticks.filter((tick) => tick >= min && tick <= max)
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
return powers.filter((power) => power >= min && power <= max)
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
// Get custom label for a tick value if provided, otherwise return null
|
|
511
|
+
export function get_tick_label(
|
|
512
|
+
tick_value: number,
|
|
513
|
+
ticks_option: TicksOption | undefined,
|
|
514
|
+
): string | null {
|
|
515
|
+
if (ticks_option && typeof ticks_option === `object` && !Array.isArray(ticks_option)) {
|
|
516
|
+
return ticks_option[tick_value] ?? null
|
|
517
|
+
}
|
|
518
|
+
return null
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
// Create a color scale function from configuration
|
|
522
|
+
export function create_color_scale(
|
|
523
|
+
color_scale_config:
|
|
524
|
+
| {
|
|
525
|
+
type?: ScaleType
|
|
526
|
+
scheme?: D3ColorSchemeName | D3InterpolateName
|
|
527
|
+
value_range?: [number, number]
|
|
528
|
+
}
|
|
529
|
+
| string,
|
|
530
|
+
auto_color_range: [number, number],
|
|
531
|
+
) {
|
|
532
|
+
const scheme =
|
|
533
|
+
typeof color_scale_config === `string` ? color_scale_config : color_scale_config.scheme
|
|
534
|
+
const candidate_interpolator = Object.entries(d3_sc).find(([key]) => key === scheme)?.[1]
|
|
535
|
+
const interpolator =
|
|
536
|
+
typeof candidate_interpolator === `function`
|
|
537
|
+
? candidate_interpolator
|
|
538
|
+
: d3_sc.interpolateViridis
|
|
539
|
+
const [min_val, max_val] =
|
|
540
|
+
(typeof color_scale_config === `string` ? undefined : color_scale_config.value_range) ??
|
|
541
|
+
auto_color_range
|
|
542
|
+
const scale_type =
|
|
543
|
+
typeof color_scale_config === `string` ? undefined : color_scale_config.type
|
|
544
|
+
|
|
545
|
+
const type_name = get_scale_type_name(scale_type)
|
|
546
|
+
|
|
547
|
+
if (type_name === `log`) {
|
|
548
|
+
return scaleSequentialLog(interpolator).domain([
|
|
549
|
+
Math.max(min_val, math.LOG_EPS),
|
|
550
|
+
Math.max(max_val, min_val * 1.1),
|
|
551
|
+
])
|
|
552
|
+
}
|
|
553
|
+
if (type_name === `arcsinh`) {
|
|
554
|
+
// For arcsinh color scale, we create a custom scale that wraps the interpolator
|
|
555
|
+
const threshold = get_arcsinh_threshold(scale_type)
|
|
556
|
+
return create_arcsinh_color_scale(interpolator, [min_val, max_val], threshold)
|
|
557
|
+
}
|
|
558
|
+
return scaleSequential(interpolator).domain([min_val, max_val])
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
// Create an arcsinh-based color scale (custom sequential scale)
|
|
562
|
+
// Returns a D3-compatible scale with both getter and setter for domain
|
|
563
|
+
// Scale function reads from closure state on each call for stable identity
|
|
564
|
+
function create_arcsinh_color_scale(
|
|
565
|
+
interpolator: (t: number) => string,
|
|
566
|
+
initial_domain: [number, number],
|
|
567
|
+
threshold: number,
|
|
568
|
+
) {
|
|
569
|
+
// Guard against extremely small thresholds that could cause precision issues
|
|
570
|
+
const safe_threshold = Math.max(threshold, Number.EPSILON)
|
|
571
|
+
let current_domain = initial_domain
|
|
572
|
+
|
|
573
|
+
type ArcsinhColorScale = ((value: number) => string) & {
|
|
574
|
+
domain: {
|
|
575
|
+
(): [number, number]
|
|
576
|
+
(new_domain: [number, number]): ArcsinhColorScale
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
|
|
580
|
+
// Single scale function that reads current domain on each call
|
|
581
|
+
const scale = ((value: number): string => {
|
|
582
|
+
const [d_min, d_max] = current_domain
|
|
583
|
+
// Handle identical domain endpoints - return middle of color range
|
|
584
|
+
if (d_max === d_min) return interpolator(0.5)
|
|
585
|
+
|
|
586
|
+
const t_min = Math.asinh(d_min / safe_threshold)
|
|
587
|
+
const t_max = Math.asinh(d_max / safe_threshold)
|
|
588
|
+
const t_val = Math.asinh(value / safe_threshold)
|
|
589
|
+
// Normalize to [0, 1]
|
|
590
|
+
const normalized = t_max === t_min ? 0.5 : (t_val - t_min) / (t_max - t_min)
|
|
591
|
+
return interpolator(Math.max(0, Math.min(1, normalized)))
|
|
592
|
+
}) as ArcsinhColorScale
|
|
593
|
+
|
|
594
|
+
// Domain getter/setter for D3 compatibility - returns same scale instance
|
|
595
|
+
scale.domain = function (new_domain?: [number, number]) {
|
|
596
|
+
if (new_domain === undefined) return current_domain
|
|
597
|
+
current_domain = new_domain
|
|
598
|
+
return scale
|
|
599
|
+
} as ArcsinhColorScale[`domain`]
|
|
600
|
+
|
|
601
|
+
return scale
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
// Create a size scale function from configuration
|
|
605
|
+
export function create_size_scale(
|
|
606
|
+
config: {
|
|
607
|
+
type?: ScaleType
|
|
608
|
+
radius_range?: [number, number]
|
|
609
|
+
value_range?: [number, number]
|
|
610
|
+
},
|
|
611
|
+
all_size_values: (number | null)[],
|
|
612
|
+
) {
|
|
613
|
+
const [min_radius, max_radius] = config.radius_range ?? [2, 10]
|
|
614
|
+
const auto_range =
|
|
615
|
+
all_size_values.length > 0
|
|
616
|
+
? extent(all_size_values.filter((val): val is number => val !== null))
|
|
617
|
+
: [0, 1]
|
|
618
|
+
const [min_val, max_val] = config.value_range ?? auto_range
|
|
619
|
+
const safe_min = min_val ?? 0
|
|
620
|
+
const safe_max = max_val ?? (safe_min > 0 ? safe_min * 1.1 : 1)
|
|
621
|
+
|
|
622
|
+
const type_name = get_scale_type_name(config.type)
|
|
623
|
+
|
|
624
|
+
if (type_name === `log`) {
|
|
625
|
+
return scaleLog()
|
|
626
|
+
.domain([Math.max(safe_min, math.LOG_EPS), Math.max(safe_max, safe_min * 1.1)])
|
|
627
|
+
.range([min_radius, max_radius])
|
|
628
|
+
.clamp(true)
|
|
629
|
+
}
|
|
630
|
+
if (type_name === `arcsinh`) {
|
|
631
|
+
// Create arcsinh-based size scale
|
|
632
|
+
const threshold = get_arcsinh_threshold(config.type)
|
|
633
|
+
const arcsinh_scale = scale_arcsinh(threshold)
|
|
634
|
+
.domain([safe_min, safe_max])
|
|
635
|
+
.range([min_radius, max_radius])
|
|
636
|
+
|
|
637
|
+
type ClampedSizeScale = ((value: number) => number) & {
|
|
638
|
+
domain: () => [number, number]
|
|
639
|
+
range: () => [number, number]
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
// Wrap with clamping
|
|
643
|
+
const clamped_scale = ((value: number): number => {
|
|
644
|
+
const result = arcsinh_scale(value)
|
|
645
|
+
return Math.max(min_radius, Math.min(max_radius, result))
|
|
646
|
+
}) as ClampedSizeScale
|
|
647
|
+
|
|
648
|
+
clamped_scale.domain = () => arcsinh_scale.domain()
|
|
649
|
+
clamped_scale.range = () => arcsinh_scale.range()
|
|
650
|
+
return clamped_scale
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
return scaleLinear().domain([safe_min, safe_max]).range([min_radius, max_radius]).clamp(true)
|
|
654
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// SVG path and rendering utilities for plot components.
|
|
2
|
+
|
|
3
|
+
//
|
|
4
|
+
// Generate SVG path for a bar with rounded corners on the "free" end (away from axis).
|
|
5
|
+
// For vertical bars, rounds top corners. For horizontal bars, rounds right corners.
|
|
6
|
+
export function bar_path(
|
|
7
|
+
x: number,
|
|
8
|
+
y: number,
|
|
9
|
+
w: number,
|
|
10
|
+
h: number,
|
|
11
|
+
r: number,
|
|
12
|
+
vertical: boolean = true,
|
|
13
|
+
): string {
|
|
14
|
+
if (r <= 0) return `M${x},${y}h${w}v${h}h${-w}Z`
|
|
15
|
+
|
|
16
|
+
return vertical
|
|
17
|
+
? `M${x},${y + h}V${y + r}A${r},${r} 0 0 1 ${x + r},${y}H${
|
|
18
|
+
x + w - r
|
|
19
|
+
}A${r},${r} 0 0 1 ${x + w},${y + r}V${y + h}Z`
|
|
20
|
+
: `M${x},${y}H${x + w - r}A${r},${r} 0 0 1 ${x + w},${y + r}V${
|
|
21
|
+
y + h - r
|
|
22
|
+
}A${r},${r} 0 0 1 ${x + w - r},${y + h}H${x}Z`
|
|
23
|
+
}
|