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,1144 @@
|
|
|
1
|
+
import type { D3SymbolName } from '$lib/labels'
|
|
2
|
+
import type { Point2D, Point3D, Vec2, Vec3 } from '$lib/math'
|
|
3
|
+
import type DraggablePane from '$lib/overlays/DraggablePane.svelte'
|
|
4
|
+
import type { ComponentProps, Snippet } from 'svelte'
|
|
5
|
+
import type { HTMLAttributes } from 'svelte/elements'
|
|
6
|
+
import type { TweenOptions } from 'svelte/motion'
|
|
7
|
+
export type { TweenOptions } from 'svelte/motion'
|
|
8
|
+
import type { Sides } from './layout'
|
|
9
|
+
import type PlotLegend from './PlotLegend.svelte'
|
|
10
|
+
import type { TicksOption } from './scales'
|
|
11
|
+
|
|
12
|
+
export type XyShift = { x?: number; y?: number } // For optional shift/offset values
|
|
13
|
+
|
|
14
|
+
// Snapshot of axis ranges at interaction start (shared by pan/zoom/touch handlers)
|
|
15
|
+
export type InitialRanges = {
|
|
16
|
+
initial_x_range: Vec2
|
|
17
|
+
initial_x2_range: Vec2
|
|
18
|
+
initial_y_range: Vec2
|
|
19
|
+
initial_y2_range: Vec2
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type Point<Metadata = Record<string, unknown>> = {
|
|
23
|
+
x: number
|
|
24
|
+
y: number
|
|
25
|
+
metadata?: Metadata
|
|
26
|
+
offset?: Point2D
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface PointStyle {
|
|
30
|
+
fill?: string
|
|
31
|
+
radius?: number
|
|
32
|
+
stroke?: string
|
|
33
|
+
stroke_width?: number
|
|
34
|
+
stroke_opacity?: number
|
|
35
|
+
fill_opacity?: number
|
|
36
|
+
symbol_type?: D3SymbolName
|
|
37
|
+
symbol_size?: number | null // Optional override for marker size
|
|
38
|
+
shape?: string // Add optional shape (string for flexibility)
|
|
39
|
+
cursor?: string // Cursor style for the point
|
|
40
|
+
// Highlight support for phase diagrams and other use cases
|
|
41
|
+
is_highlighted?: boolean
|
|
42
|
+
highlight_color?: string
|
|
43
|
+
highlight_effect?: `pulse` | `glow` | `size` | `color` | `both`
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export interface HoverStyle {
|
|
47
|
+
enabled?: boolean
|
|
48
|
+
scale?: number
|
|
49
|
+
stroke?: string
|
|
50
|
+
stroke_width?: number
|
|
51
|
+
brightness?: number
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export interface LabelStyle {
|
|
55
|
+
text?: string
|
|
56
|
+
offset?: Point2D
|
|
57
|
+
font_size?: string
|
|
58
|
+
font_family?: string
|
|
59
|
+
auto_placement?: boolean // Enable/disable auto-placement
|
|
60
|
+
size?: { width: number; height: number }
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export interface BarStyle {
|
|
64
|
+
color?: string
|
|
65
|
+
opacity?: number
|
|
66
|
+
stroke_width?: number
|
|
67
|
+
stroke_color?: string
|
|
68
|
+
stroke_opacity?: number
|
|
69
|
+
border_radius?: number // Shorthand: sets both rx and ry to this value (lower priority than explicit rx/ry)
|
|
70
|
+
rx?: number // SVG rx attribute for horizontal corner radius (overrides border_radius)
|
|
71
|
+
ry?: number // SVG ry attribute for vertical corner radius (overrides border_radius)
|
|
72
|
+
[key: string]: unknown
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export interface LineStyle {
|
|
76
|
+
color?: string
|
|
77
|
+
width?: number
|
|
78
|
+
dash?: string
|
|
79
|
+
[key: string]: unknown
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Extend the base Point type to include optional styling and metadata
|
|
83
|
+
export interface PlotPoint<Metadata = Record<string, unknown>> extends Point<Metadata> {
|
|
84
|
+
color_value?: number | null
|
|
85
|
+
point_style?: PointStyle
|
|
86
|
+
point_hover?: HoverStyle
|
|
87
|
+
point_label?: LabelStyle
|
|
88
|
+
point_offset?: Point2D // Individual point offset (distinct from label offset)
|
|
89
|
+
point_tween?: TweenOptions<Point2D>
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export type Markers = `line` | `points` | `line+points` | `none`
|
|
93
|
+
|
|
94
|
+
// Define the structure for a data series in the plot
|
|
95
|
+
export interface DataSeries<Metadata = Record<string, unknown>> {
|
|
96
|
+
id?: string | number // Optional stable identifier for the series (used for keying)
|
|
97
|
+
x: readonly number[]
|
|
98
|
+
y: readonly number[]
|
|
99
|
+
// Optional marker display type override for this specific series
|
|
100
|
+
markers?: Markers
|
|
101
|
+
// Specify which x-axis to use: 'x1' (bottom, default) or 'x2' (top)
|
|
102
|
+
x_axis?: `x1` | `x2`
|
|
103
|
+
// Specify which y-axis to use: 'y1' (left, default) or 'y2' (right)
|
|
104
|
+
y_axis?: `y1` | `y2`
|
|
105
|
+
color_values?: (number | null)[] | null
|
|
106
|
+
size_values?: readonly (number | null)[] | null
|
|
107
|
+
metadata?: Metadata[] | Metadata // Can be array or single object
|
|
108
|
+
point_style?: PointStyle[] | PointStyle // Can be array or single object
|
|
109
|
+
point_hover?: HoverStyle[] | HoverStyle // Can be array or single object
|
|
110
|
+
point_label?: LabelStyle[] | LabelStyle // Can be array or single object
|
|
111
|
+
point_offset?: Point2D[] | Point2D // Can be array or single object
|
|
112
|
+
point_tween?: TweenOptions<Point2D>
|
|
113
|
+
visible?: boolean // Optional visibility flag
|
|
114
|
+
label?: string // Optional series label for legend
|
|
115
|
+
// Group name for organizing legend items. Series with the same legend_group
|
|
116
|
+
// are displayed together under a collapsible header. Click the header to toggle
|
|
117
|
+
// visibility of all series in the group, or the chevron to collapse/expand.
|
|
118
|
+
legend_group?: string
|
|
119
|
+
unit?: string // Optional unit for the series (e.g. "eV", "eV/Å", "GPa")
|
|
120
|
+
line_style?: {
|
|
121
|
+
stroke?: string
|
|
122
|
+
stroke_width?: number
|
|
123
|
+
line_dash?: string
|
|
124
|
+
}
|
|
125
|
+
// Internal fields used after processing (not provided by users)
|
|
126
|
+
filtered_data?: InternalPoint<Metadata>[]
|
|
127
|
+
_id?: string | number
|
|
128
|
+
orig_series_idx?: number // Original series index for consistent auto-cycling colors/symbols
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
// Represents the internal structure used within ScatterPlot, merging series-level and point-level data
|
|
132
|
+
export interface InternalPoint<
|
|
133
|
+
Metadata = Record<string, unknown>,
|
|
134
|
+
> extends PlotPoint<Metadata> {
|
|
135
|
+
series_idx: number // Index of the series this point belongs to
|
|
136
|
+
point_idx: number // Index of the point within its series
|
|
137
|
+
size_value?: number | null // Size value for the point
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
export interface Tooltip {
|
|
141
|
+
show: boolean
|
|
142
|
+
x: number
|
|
143
|
+
y: number
|
|
144
|
+
title?: string
|
|
145
|
+
items?: { label: string; value: string; color?: string }[]
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export interface HandlerProps<Metadata = Record<string, unknown>> {
|
|
149
|
+
x: number
|
|
150
|
+
y: number
|
|
151
|
+
metadata?: Metadata | null
|
|
152
|
+
label?: string | null
|
|
153
|
+
series_idx: number
|
|
154
|
+
x_axis: AxisConfig
|
|
155
|
+
x2_axis?: AxisConfig
|
|
156
|
+
y_axis: AxisConfig
|
|
157
|
+
y2_axis?: AxisConfig
|
|
158
|
+
fullscreen?: boolean
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export interface ScatterHandlerProps<
|
|
162
|
+
Metadata = Record<string, unknown>,
|
|
163
|
+
> extends HandlerProps<Metadata> {
|
|
164
|
+
cx: number
|
|
165
|
+
cy: number
|
|
166
|
+
x_formatted: string
|
|
167
|
+
y_formatted: string
|
|
168
|
+
color_value?: number | null
|
|
169
|
+
colorbar?: {
|
|
170
|
+
value?: number | null
|
|
171
|
+
title?: string | null
|
|
172
|
+
scale?: unknown
|
|
173
|
+
tick_format?: string | null
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
export type ScatterHandlerEvent<Metadata = Record<string, unknown>> =
|
|
177
|
+
ScatterHandlerProps<Metadata> & { event: MouseEvent; point: InternalPoint<Metadata> }
|
|
178
|
+
|
|
179
|
+
export interface BarHandlerProps<
|
|
180
|
+
Metadata = Record<string, unknown>,
|
|
181
|
+
> extends HandlerProps<Metadata> {
|
|
182
|
+
bar_idx: number
|
|
183
|
+
orient_x: number
|
|
184
|
+
orient_y: number
|
|
185
|
+
active_y_axis: `y1` | `y2`
|
|
186
|
+
active_x_axis: `x1` | `x2`
|
|
187
|
+
color: string
|
|
188
|
+
category_label?: string // original string category (undefined when numeric x)
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export interface HistogramHandlerProps<
|
|
192
|
+
Metadata = Record<string, unknown>,
|
|
193
|
+
> extends HandlerProps<Metadata> {
|
|
194
|
+
value: number
|
|
195
|
+
count: number
|
|
196
|
+
property: string
|
|
197
|
+
active_y_axis: `y1` | `y2`
|
|
198
|
+
active_x_axis: `x1` | `x2`
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export type TimeInterval = `day` | `month` | `year`
|
|
202
|
+
|
|
203
|
+
// Base scale type names
|
|
204
|
+
export type ScaleTypeName = `linear` | `log` | `arcsinh` | `time`
|
|
205
|
+
|
|
206
|
+
// Arcsinh scale configuration with optional threshold parameter
|
|
207
|
+
// threshold controls where linear→log transition occurs (default: 1)
|
|
208
|
+
// For |x| << threshold: behaves linearly
|
|
209
|
+
// For |x| >> threshold: behaves logarithmically
|
|
210
|
+
export interface ArcsinhScaleConfig {
|
|
211
|
+
type: `arcsinh`
|
|
212
|
+
threshold?: number // default: 1
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// Scale type can be a simple string or arcsinh config object
|
|
216
|
+
export type ScaleType = `linear` | `log` | `arcsinh` | `time` | ArcsinhScaleConfig
|
|
217
|
+
|
|
218
|
+
// Type guard for select value narrowing (avoids unsafe casts)
|
|
219
|
+
const SCALE_TYPE_NAMES = new Set<string>([`linear`, `log`, `arcsinh`, `time`])
|
|
220
|
+
export const is_scale_type_name = (val: string): val is ScaleTypeName =>
|
|
221
|
+
SCALE_TYPE_NAMES.has(val)
|
|
222
|
+
|
|
223
|
+
// Helper to normalize ScaleType to base type name
|
|
224
|
+
export function get_scale_type_name(scale_type: ScaleType | undefined): ScaleTypeName {
|
|
225
|
+
if (!scale_type) return `linear`
|
|
226
|
+
if (typeof scale_type === `string`) return scale_type
|
|
227
|
+
return scale_type.type
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// Helper to get arcsinh threshold (returns 1 as default for non-arcsinh scales)
|
|
231
|
+
export function get_arcsinh_threshold(scale_type: ScaleType | undefined): number {
|
|
232
|
+
if (!scale_type) return 1
|
|
233
|
+
if (typeof scale_type === `object` && scale_type.type === `arcsinh`) {
|
|
234
|
+
const threshold = scale_type.threshold ?? 1
|
|
235
|
+
if (!Number.isFinite(threshold) || threshold <= 0) {
|
|
236
|
+
throw new Error(`arcsinh threshold must be a positive finite number, got ${threshold}`)
|
|
237
|
+
}
|
|
238
|
+
return threshold
|
|
239
|
+
}
|
|
240
|
+
return 1 // default threshold
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Helper to detect time scale - checks explicit scale_type or falls back to format heuristic
|
|
244
|
+
// Prefer explicit scale_type: 'time' for new code; format heuristic kept for backwards compatibility
|
|
245
|
+
export function is_time_scale(
|
|
246
|
+
scale_type: ScaleType | undefined,
|
|
247
|
+
format: string | undefined,
|
|
248
|
+
): boolean {
|
|
249
|
+
if (get_scale_type_name(scale_type) === `time`) return true
|
|
250
|
+
// Fallback: d3 time format strings start with '%'
|
|
251
|
+
return format?.startsWith(`%`) ?? false
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
export type QuadrantCounts = {
|
|
255
|
+
top_left: number
|
|
256
|
+
top_right: number
|
|
257
|
+
bottom_left: number
|
|
258
|
+
bottom_right: number
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// Energy weights for the simulated annealing label placement
|
|
262
|
+
export interface LabelPlacementWeights {
|
|
263
|
+
overlap?: number // Label-label overlap penalty (default: 30)
|
|
264
|
+
marker?: number // Label-marker overlap penalty (default: 100)
|
|
265
|
+
leader_cross?: number // Leader line crossing penalty (default: 10)
|
|
266
|
+
leader_text?: number // Leader line crossing label text penalty (default: 8)
|
|
267
|
+
distance?: number // Anchor distance penalty (default: 0.5)
|
|
268
|
+
bounds?: number // Out-of-bounds penalty (default: 100)
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
// Configuration for the label auto-placement algorithm (simulated annealing)
|
|
272
|
+
export interface LabelPlacementConfig {
|
|
273
|
+
sa_iterations?: number // SA iterations per label (default: 2000)
|
|
274
|
+
weights?: LabelPlacementWeights // Energy function weights
|
|
275
|
+
leader_line_threshold?: number // Min displacement (px) to show dotted leader line (default: 15)
|
|
276
|
+
max_labels?: number // Skip SA when label count exceeds this (default: 300)
|
|
277
|
+
candidate_gap?: number // Extra gap (px) between marker radius and label candidates (default: 4)
|
|
278
|
+
// Hide labels in dense regions with more than `count` neighbors within `radius` px
|
|
279
|
+
max_neighbors?: { count: number; radius: number }
|
|
280
|
+
}
|
|
281
|
+
export type HoverConfig = {
|
|
282
|
+
threshold_px: number // Max screen distance (pixels) to trigger hover
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
// Type for PlotLegend props forwarded from ScatterPlot props
|
|
286
|
+
export type LegendConfig = Omit<
|
|
287
|
+
ComponentProps<typeof PlotLegend>,
|
|
288
|
+
`series_data` | `on_drag_start` | `on_drag` | `on_drag_end`
|
|
289
|
+
> & {
|
|
290
|
+
margin?: number | Sides
|
|
291
|
+
tween?: TweenOptions<Point2D>
|
|
292
|
+
responsive?: boolean // Allow legend to move if density changes (default: false)
|
|
293
|
+
draggable?: boolean // Allow legend to be dragged (default: true)
|
|
294
|
+
// Minimum distance from plot edges to avoid axis label overlap (default: 40)
|
|
295
|
+
axis_clearance?: number
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
// attributes for each item passed to the legend
|
|
299
|
+
export interface LegendItem {
|
|
300
|
+
label: string
|
|
301
|
+
visible: boolean
|
|
302
|
+
series_idx: number
|
|
303
|
+
legend_group?: string // Optional group name for grouped legend rendering
|
|
304
|
+
// Type of item: 'series' for data series (default), 'fill' for fill regions
|
|
305
|
+
item_type?: `series` | `fill`
|
|
306
|
+
// For fill regions, the index in the computed_fills array (for unique keying)
|
|
307
|
+
fill_idx?: number
|
|
308
|
+
// For fill regions, the source type and index (for toggle handlers)
|
|
309
|
+
fill_source_type?: `fill_region` | `error_band`
|
|
310
|
+
fill_source_idx?: number
|
|
311
|
+
display_style: {
|
|
312
|
+
symbol_type?: D3SymbolName
|
|
313
|
+
symbol_color?: string
|
|
314
|
+
line_color?: string
|
|
315
|
+
line_dash?: string
|
|
316
|
+
// Fill region styling
|
|
317
|
+
fill_color?: string
|
|
318
|
+
fill_opacity?: number
|
|
319
|
+
edge_color?: string
|
|
320
|
+
// Gradient fill for legend swatch (when fill is a gradient, not a solid color)
|
|
321
|
+
fill_gradient?: FillGradient
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
export type UserContentProps = {
|
|
326
|
+
height: number
|
|
327
|
+
width: number
|
|
328
|
+
x_scale_fn: (x: number) => number
|
|
329
|
+
x2_scale_fn?: (x: number) => number
|
|
330
|
+
y_scale_fn: (y: number) => number
|
|
331
|
+
y2_scale_fn?: (y: number) => number
|
|
332
|
+
pad: Required<Sides>
|
|
333
|
+
x_range: Vec2
|
|
334
|
+
x2_range?: Vec2
|
|
335
|
+
y_range: Vec2
|
|
336
|
+
y2_range?: Vec2
|
|
337
|
+
fullscreen: boolean
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
export type Orientation = `vertical` | `horizontal`
|
|
341
|
+
export type BarMode = `overlay` | `stacked` | `grouped`
|
|
342
|
+
|
|
343
|
+
export interface BarSeries<Metadata = Record<string, unknown>> {
|
|
344
|
+
id?: string | number // Optional stable identifier for the series (used for keying)
|
|
345
|
+
x: readonly (number | string)[]
|
|
346
|
+
y: readonly number[]
|
|
347
|
+
label?: string
|
|
348
|
+
// Group name for organizing legend items. Series with the same legend_group
|
|
349
|
+
// are displayed together under a collapsible header. Click the header to toggle
|
|
350
|
+
// visibility of all series in the group, or the chevron to collapse/expand.
|
|
351
|
+
legend_group?: string
|
|
352
|
+
color?: string
|
|
353
|
+
bar_width?: number | readonly number[]
|
|
354
|
+
visible?: boolean
|
|
355
|
+
metadata?: Metadata[] | Metadata
|
|
356
|
+
labels?: readonly (string | null | undefined)[]
|
|
357
|
+
render_mode?: `bar` | `line` // Render as bars (default) or as a line
|
|
358
|
+
// Specify which x-axis to use: 'x1' (bottom, default) or 'x2' (top)
|
|
359
|
+
x_axis?: `x1` | `x2`
|
|
360
|
+
// Specify which y-axis to use: 'y1' (left, default) or 'y2' (right)
|
|
361
|
+
y_axis?: `y1` | `y2`
|
|
362
|
+
line_style?: {
|
|
363
|
+
stroke_width?: number
|
|
364
|
+
line_dash?: string
|
|
365
|
+
}
|
|
366
|
+
// Marker-related fields for line series (matching DataSeries)
|
|
367
|
+
markers?: Markers // 'line' | 'points' | 'line+points' | 'none'
|
|
368
|
+
color_values?: (number | null)[] | null
|
|
369
|
+
size_values?: readonly (number | null)[] | null
|
|
370
|
+
point_style?: PointStyle[] | PointStyle
|
|
371
|
+
point_hover?: HoverStyle[] | HoverStyle
|
|
372
|
+
point_label?: LabelStyle[] | LabelStyle
|
|
373
|
+
point_offset?: Point2D[] | Point2D
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// Tick label configuration
|
|
377
|
+
export interface TickLabelConfig {
|
|
378
|
+
inside?: boolean // Render tick labels inside the plot area (default: false/outside)
|
|
379
|
+
shift?: XyShift
|
|
380
|
+
rotation?: number // Rotation angle in degrees
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
// Tick configuration
|
|
384
|
+
export interface TickConfig {
|
|
385
|
+
label?: TickLabelConfig
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
// Option for axis property dropdown (enables interactive axis switching)
|
|
389
|
+
export interface AxisOption {
|
|
390
|
+
key: string // unique identifier (e.g., 'energy', 'volume')
|
|
391
|
+
label: string // display name (e.g., 'Total Energy')
|
|
392
|
+
unit?: string // optional unit (e.g., 'eV', 'ų')
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
// Y2 axis synchronization modes
|
|
396
|
+
// - 'none': Independent axes (default)
|
|
397
|
+
// - 'synced': Y2 has exact same range as Y1
|
|
398
|
+
// - 'align': Y2 expands to show all data while keeping align_value (default 0) at same position as Y1
|
|
399
|
+
export type Y2SyncMode = `none` | `synced` | `align`
|
|
400
|
+
|
|
401
|
+
// Type guard for select value narrowing (avoids unsafe casts)
|
|
402
|
+
const Y2_SYNC_MODES = new Set<string>([`none`, `synced`, `align`])
|
|
403
|
+
export const is_y2_sync_mode = (val: string): val is Y2SyncMode => Y2_SYNC_MODES.has(val)
|
|
404
|
+
|
|
405
|
+
export interface Y2SyncConfig {
|
|
406
|
+
mode: Y2SyncMode
|
|
407
|
+
// For align mode: optionally specify which value to align (default: 0)
|
|
408
|
+
align_value?: number
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// Axis configuration type for grouping related axis properties
|
|
412
|
+
export interface AxisConfig {
|
|
413
|
+
label?: string
|
|
414
|
+
format?: string
|
|
415
|
+
ticks?: TicksOption
|
|
416
|
+
tick?: TickConfig
|
|
417
|
+
scale_type?: ScaleType
|
|
418
|
+
range?: [number | null, number | null]
|
|
419
|
+
unit?: string
|
|
420
|
+
label_shift?: XyShift
|
|
421
|
+
grid_style?: HTMLAttributes<SVGLineElement>
|
|
422
|
+
color?: string | null // Color for axis label, tick labels, and axis line
|
|
423
|
+
// Interactive axis options (enables clickable axis labels)
|
|
424
|
+
options?: AxisOption[] // available properties for this axis
|
|
425
|
+
selected_key?: string // currently selected property key
|
|
426
|
+
// Synchronization with y1 axis (only applicable when used as y2_axis)
|
|
427
|
+
// - 'synced': Y2 has exact same range as Y1
|
|
428
|
+
// - 'align': Y2 expands to show all data, align_value (default 0) at same position
|
|
429
|
+
// - 'none' or undefined: Independent axes (default)
|
|
430
|
+
// Shorthand: 'synced' | 'align' | 'none'
|
|
431
|
+
// Full config: { mode: Y2SyncMode, align_value?: number }
|
|
432
|
+
sync?: Y2SyncConfig | Y2SyncMode
|
|
433
|
+
categories?: readonly string[] // explicit category order/filter for categorical bar plots
|
|
434
|
+
}
|
|
435
|
+
|
|
436
|
+
// Result from data loader - returns complete series array
|
|
437
|
+
// SeriesType defaults to DataSeries but can be BarSeries for bar plots
|
|
438
|
+
export interface DataLoaderResult<
|
|
439
|
+
Metadata = Record<string, unknown>,
|
|
440
|
+
SeriesType = DataSeries<Metadata>,
|
|
441
|
+
> {
|
|
442
|
+
series: SeriesType[] // full replacement series
|
|
443
|
+
axis_label?: string // optional new axis label
|
|
444
|
+
axis_unit?: string // optional axis unit
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
// Callback to fetch data for a property change
|
|
448
|
+
// Called when user selects a new property from the axis dropdown
|
|
449
|
+
// SeriesType defaults to DataSeries but can be BarSeries for bar plots
|
|
450
|
+
export type DataLoaderFn<
|
|
451
|
+
Metadata = Record<string, unknown>,
|
|
452
|
+
SeriesType = DataSeries<Metadata>,
|
|
453
|
+
> = (
|
|
454
|
+
axis: AxisKey,
|
|
455
|
+
property_key: string,
|
|
456
|
+
current_series: readonly SeriesType[], // passed for context
|
|
457
|
+
) => Promise<DataLoaderResult<Metadata, SeriesType>>
|
|
458
|
+
|
|
459
|
+
// Error event for axis data loading failures
|
|
460
|
+
export interface AxisLoadError {
|
|
461
|
+
axis: AxisKey
|
|
462
|
+
key: string
|
|
463
|
+
message: string
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
// Option for color scale dropdown in ColorBar
|
|
467
|
+
export interface ColorScaleOption {
|
|
468
|
+
key: string // e.g., 'viridis', 'plasma'
|
|
469
|
+
label: string // e.g., 'Viridis', 'Plasma'
|
|
470
|
+
scale: string | ((t: number) => string) // d3 interpolator name or function
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
// Data loader for ColorBar property changes
|
|
474
|
+
export type ColorBarDataLoaderFn = (
|
|
475
|
+
property_key: string,
|
|
476
|
+
) => Promise<{ range: Vec2; title?: string }>
|
|
477
|
+
|
|
478
|
+
// Display configuration for grid lines and zero lines
|
|
479
|
+
export interface DisplayConfig {
|
|
480
|
+
x_grid?: boolean
|
|
481
|
+
x2_grid?: boolean
|
|
482
|
+
y_grid?: boolean
|
|
483
|
+
y2_grid?: boolean
|
|
484
|
+
x_zero_line?: boolean
|
|
485
|
+
x2_zero_line?: boolean
|
|
486
|
+
y_zero_line?: boolean
|
|
487
|
+
y2_zero_line?: boolean
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
// Style overrides for point and line properties
|
|
491
|
+
export interface StyleOverrides {
|
|
492
|
+
point?: {
|
|
493
|
+
size?: number
|
|
494
|
+
color?: string
|
|
495
|
+
opacity?: number
|
|
496
|
+
stroke_width?: number
|
|
497
|
+
stroke_color?: string
|
|
498
|
+
stroke_opacity?: number
|
|
499
|
+
}
|
|
500
|
+
line?: {
|
|
501
|
+
width?: number
|
|
502
|
+
color?: string
|
|
503
|
+
opacity?: number
|
|
504
|
+
dash?: string
|
|
505
|
+
}
|
|
506
|
+
show_points?: boolean
|
|
507
|
+
show_lines?: boolean
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
export type AxisKey = `x` | `x2` | `y` | `y2`
|
|
511
|
+
export interface PlotConfig {
|
|
512
|
+
// Grouped configuration for plot axes and display settings
|
|
513
|
+
x_axis?: AxisConfig
|
|
514
|
+
x2_axis?: AxisConfig
|
|
515
|
+
y_axis?: AxisConfig
|
|
516
|
+
y2_axis?: AxisConfig
|
|
517
|
+
display?: DisplayConfig
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
// Controls configuration
|
|
521
|
+
export interface ControlsConfig {
|
|
522
|
+
show?: boolean
|
|
523
|
+
open?: boolean
|
|
524
|
+
toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
|
|
525
|
+
pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`]
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
// Pan configuration for 2D plot components
|
|
529
|
+
export interface PanConfig {
|
|
530
|
+
enabled?: boolean // default: true - whether panning is enabled
|
|
531
|
+
wheel_sensitivity?: number // default: 1 - multiplier for wheel delta
|
|
532
|
+
drag_sensitivity?: number // default: 1 - multiplier for drag delta
|
|
533
|
+
touch_enabled?: boolean // default: true - whether touch gestures are enabled
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
export type ControlsState = Required<PlotConfig> & {
|
|
537
|
+
show_controls: boolean
|
|
538
|
+
controls_open: boolean
|
|
539
|
+
range_inputs: Record<string, [number | null, number | null]>
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
export interface PlotControlsProps extends PlotConfig {
|
|
543
|
+
// Control pane visibility
|
|
544
|
+
show_controls?: boolean
|
|
545
|
+
controls_open?: boolean
|
|
546
|
+
// Custom snippets for additional controls
|
|
547
|
+
children?: Snippet<[ControlsState]>
|
|
548
|
+
post_children?: Snippet<[ControlsState]>
|
|
549
|
+
// Auto ranges for reset functionality
|
|
550
|
+
auto_x_range?: Vec2
|
|
551
|
+
auto_x2_range?: Vec2
|
|
552
|
+
auto_y_range?: Vec2
|
|
553
|
+
auto_y2_range?: Vec2
|
|
554
|
+
// Helper flags
|
|
555
|
+
has_x2_points?: boolean
|
|
556
|
+
has_y2_points?: boolean
|
|
557
|
+
show_ticks?: boolean
|
|
558
|
+
// Component props
|
|
559
|
+
controls_title?: string
|
|
560
|
+
controls_class?: string
|
|
561
|
+
toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
|
|
562
|
+
pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`]
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
// Base props shared across plot components (non-bindable props only)
|
|
566
|
+
// Components should declare x_axis, y_axis, display, etc. as $bindable() grouped configs
|
|
567
|
+
export interface BasePlotProps {
|
|
568
|
+
// Axis limits (non-bindable - used for auto-range calculation)
|
|
569
|
+
x_range?: [number | null, number | null]
|
|
570
|
+
x2_range?: [number | null, number | null]
|
|
571
|
+
y_range?: [number | null, number | null]
|
|
572
|
+
y2_range?: [number | null, number | null]
|
|
573
|
+
range_padding?: number // Factor to pad auto-detected ranges before nicing (e.g. 0.05 = 5%)
|
|
574
|
+
padding?: Sides
|
|
575
|
+
// State
|
|
576
|
+
hovered?: boolean
|
|
577
|
+
// Controls
|
|
578
|
+
show_controls?: boolean
|
|
579
|
+
controls_open?: boolean
|
|
580
|
+
controls_toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
|
|
581
|
+
controls_pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`]
|
|
582
|
+
// Fullscreen
|
|
583
|
+
fullscreen?: boolean
|
|
584
|
+
fullscreen_toggle?: boolean // default: true
|
|
585
|
+
// Callbacks
|
|
586
|
+
change?: (data: Record<string, unknown> | null) => void
|
|
587
|
+
// Children
|
|
588
|
+
children?: Snippet<[{ height: number; width: number; fullscreen?: boolean }]>
|
|
589
|
+
}
|
|
590
|
+
export const LINE_TYPES = [`solid`, `dashed`, `dotted`] as const
|
|
591
|
+
export type LineType = (typeof LINE_TYPES)[number]
|
|
592
|
+
|
|
593
|
+
// Define grid cell identifiers
|
|
594
|
+
export const CELLS_3X3 = [
|
|
595
|
+
`top-left`,
|
|
596
|
+
`top-center`,
|
|
597
|
+
`top-right`,
|
|
598
|
+
`middle-left`,
|
|
599
|
+
`middle-center`,
|
|
600
|
+
`middle-right`,
|
|
601
|
+
`bottom-left`,
|
|
602
|
+
`bottom-center`,
|
|
603
|
+
`bottom-right`,
|
|
604
|
+
] as const
|
|
605
|
+
export const CORNER_CELLS = [`top-left`, `top-right`, `bottom-left`, `bottom-right`] as const
|
|
606
|
+
|
|
607
|
+
// Define the structure for GridCell and GridCellCounts for 3x3 grid
|
|
608
|
+
export type Cell3x3 = (typeof CELLS_3X3)[number]
|
|
609
|
+
export type Corner = (typeof CORNER_CELLS)[number]
|
|
610
|
+
|
|
611
|
+
// Default grid line style (SSOT for all plot components)
|
|
612
|
+
export const DEFAULT_GRID_STYLE = {
|
|
613
|
+
stroke: `var(--border-color, gray)`,
|
|
614
|
+
'stroke-dasharray': `4`,
|
|
615
|
+
'stroke-width': `1`,
|
|
616
|
+
} as const
|
|
617
|
+
|
|
618
|
+
export const DEFAULT_MARKERS = `line+points` as const
|
|
619
|
+
|
|
620
|
+
// Default series colors for auto-differentiation (similar to d3 schemeTableau10)
|
|
621
|
+
export const DEFAULT_SERIES_COLORS = [
|
|
622
|
+
`#4e79a7`, // blue
|
|
623
|
+
`#f28e2c`, // orange
|
|
624
|
+
`#e15759`, // red
|
|
625
|
+
`#76b7b2`, // teal
|
|
626
|
+
`#59a14f`, // green
|
|
627
|
+
`#edc949`, // yellow
|
|
628
|
+
`#af7aa1`, // purple
|
|
629
|
+
`#ff9da7`, // pink
|
|
630
|
+
`#9c755f`, // brown
|
|
631
|
+
`#bab0ab`, // gray
|
|
632
|
+
] as const
|
|
633
|
+
|
|
634
|
+
// Default series symbols for auto-differentiation (cycling through distinct shapes)
|
|
635
|
+
export const DEFAULT_SERIES_SYMBOLS = [
|
|
636
|
+
`Circle`,
|
|
637
|
+
`Square`,
|
|
638
|
+
`Triangle`,
|
|
639
|
+
`Cross`,
|
|
640
|
+
`Diamond`,
|
|
641
|
+
`Star`,
|
|
642
|
+
`Wye`,
|
|
643
|
+
] as const satisfies readonly D3SymbolName[]
|
|
644
|
+
|
|
645
|
+
// 3D point extending base Point with z coordinate (prefixed to avoid conflict with convex-hull)
|
|
646
|
+
export interface ScatterPoint3D<Metadata = Record<string, unknown>> extends Point<Metadata> {
|
|
647
|
+
z: number
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
// 3D data series extending DataSeries with z array
|
|
651
|
+
// Omit filtered_data since it uses 2D InternalPoint type, redeclare with 3D type
|
|
652
|
+
export interface DataSeries3D<Metadata = Record<string, unknown>> extends Omit<
|
|
653
|
+
DataSeries<Metadata>,
|
|
654
|
+
`y_axis` | `filtered_data`
|
|
655
|
+
> {
|
|
656
|
+
z: readonly number[]
|
|
657
|
+
filtered_data?: InternalPoint3D<Metadata>[]
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
// Internal 3D point for processing within ScatterPlot3D
|
|
661
|
+
export interface InternalPoint3D<
|
|
662
|
+
Metadata = Record<string, unknown>,
|
|
663
|
+
> extends ScatterPoint3D<Metadata> {
|
|
664
|
+
series_idx: number
|
|
665
|
+
point_idx: number
|
|
666
|
+
color_value?: number | null
|
|
667
|
+
size_value?: number | null
|
|
668
|
+
point_style?: PointStyle
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
// Surface types for 3D visualization
|
|
672
|
+
export type SurfaceType = `grid` | `parametric` | `triangulated`
|
|
673
|
+
|
|
674
|
+
// Configuration for 3D surfaces
|
|
675
|
+
export interface Surface3DConfig {
|
|
676
|
+
id?: string | number
|
|
677
|
+
type: SurfaceType
|
|
678
|
+
// For grid surfaces: regular grid with z values
|
|
679
|
+
x_range?: Vec2
|
|
680
|
+
y_range?: Vec2
|
|
681
|
+
resolution?: number | Vec2 // grid resolution (x, y)
|
|
682
|
+
z_fn?: (x: number, y: number) => number
|
|
683
|
+
// For parametric surfaces: u,v parameterization
|
|
684
|
+
u_range?: Vec2
|
|
685
|
+
v_range?: Vec2
|
|
686
|
+
parametric_fn?: (u: number, v: number) => Point3D
|
|
687
|
+
// For triangulated surfaces: explicit geometry (only x,y,z needed, not scatter-specific fields)
|
|
688
|
+
points?: Point3D[]
|
|
689
|
+
triangles?: Vec3[] // indices into points array
|
|
690
|
+
// Appearance
|
|
691
|
+
color?: string
|
|
692
|
+
color_fn?: (x: number, y: number, z: number) => string
|
|
693
|
+
opacity?: number
|
|
694
|
+
wireframe?: boolean
|
|
695
|
+
wireframe_color?: string
|
|
696
|
+
wireframe_width?: number
|
|
697
|
+
visible?: boolean
|
|
698
|
+
// Double-sided rendering
|
|
699
|
+
double_sided?: boolean
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
// Extended axis config for 3D (same as 2D but can add 3D-specific options)
|
|
703
|
+
export interface AxisConfig3D extends AxisConfig {
|
|
704
|
+
// 3D-specific axis options can be added here
|
|
705
|
+
show_plane?: boolean // Show grid plane for this axis
|
|
706
|
+
plane_opacity?: number
|
|
707
|
+
}
|
|
708
|
+
|
|
709
|
+
// Display config extended for 3D
|
|
710
|
+
export interface DisplayConfig3D extends DisplayConfig {
|
|
711
|
+
z_grid?: boolean
|
|
712
|
+
z_zero_line?: boolean
|
|
713
|
+
show_axes?: boolean
|
|
714
|
+
show_axis_labels?: boolean
|
|
715
|
+
show_bounding_box?: boolean
|
|
716
|
+
show_grid?: boolean
|
|
717
|
+
// Projection settings - render point shadows on background planes
|
|
718
|
+
// Coordinate mapping: user X→Three.js X, user Y→Three.js Z, user Z→Three.js Y
|
|
719
|
+
projections?: {
|
|
720
|
+
xy?: boolean // Project onto XY plane (floor/ceiling) - fixes user Z
|
|
721
|
+
xz?: boolean // Project onto XZ plane (back wall) - fixes user Y
|
|
722
|
+
yz?: boolean // Project onto YZ plane (side wall) - fixes user X
|
|
723
|
+
}
|
|
724
|
+
projection_opacity?: number // 0-1, default 0.3
|
|
725
|
+
projection_scale?: number // Relative to point size, default 0.5
|
|
726
|
+
}
|
|
727
|
+
|
|
728
|
+
// 3D scatter handler props
|
|
729
|
+
export interface Scatter3DHandlerProps<Metadata = Record<string, unknown>> extends Omit<
|
|
730
|
+
HandlerProps<Metadata>,
|
|
731
|
+
`x_axis` | `x2_axis` | `y_axis` | `y2_axis`
|
|
732
|
+
> {
|
|
733
|
+
z: number
|
|
734
|
+
x_axis: AxisConfig3D
|
|
735
|
+
y_axis: AxisConfig3D
|
|
736
|
+
z_axis: AxisConfig3D
|
|
737
|
+
x_formatted: string
|
|
738
|
+
y_formatted: string
|
|
739
|
+
z_formatted: string
|
|
740
|
+
color_value?: number | null
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
export type Scatter3DHandlerEvent<Metadata = Record<string, unknown>> =
|
|
744
|
+
Scatter3DHandlerProps<Metadata> & {
|
|
745
|
+
event?: MouseEvent
|
|
746
|
+
point: InternalPoint3D<Metadata>
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
// Camera projection types for 3D
|
|
750
|
+
export type CameraProjection3D = `perspective` | `orthographic`
|
|
751
|
+
|
|
752
|
+
// 3D plot config extending base
|
|
753
|
+
export interface PlotConfig3D {
|
|
754
|
+
x_axis?: AxisConfig3D
|
|
755
|
+
y_axis?: AxisConfig3D
|
|
756
|
+
z_axis?: AxisConfig3D
|
|
757
|
+
display?: DisplayConfig3D
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
// 3D style overrides
|
|
761
|
+
export interface StyleOverrides3D extends StyleOverrides {
|
|
762
|
+
point?: StyleOverrides[`point`] & {
|
|
763
|
+
sphere_segments?: number // Level of detail for sphere geometry
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
// Controls config for 3D
|
|
768
|
+
export interface ControlsConfig3D extends ControlsConfig {
|
|
769
|
+
show_camera_controls?: boolean
|
|
770
|
+
show_surface_controls?: boolean
|
|
771
|
+
}
|
|
772
|
+
|
|
773
|
+
// FillBoundary - references to data sources for fill regions
|
|
774
|
+
// Can reference series by index, by id, or specify constant/axis/function/data values
|
|
775
|
+
export type FillBoundary =
|
|
776
|
+
| { type: `series`; series_idx: number }
|
|
777
|
+
| { type: `series`; series_id: string | number }
|
|
778
|
+
| { type: `constant`; value: number }
|
|
779
|
+
| { type: `axis`; axis: `x` | `x2` | `y` | `y2`; value?: number }
|
|
780
|
+
| { type: `function`; fn: (coord: number) => number }
|
|
781
|
+
| { type: `data`; values: readonly number[] }
|
|
782
|
+
| number // Shorthand for constant value
|
|
783
|
+
|
|
784
|
+
// Styling types for fill regions
|
|
785
|
+
|
|
786
|
+
// Gradient configuration for fill regions
|
|
787
|
+
export interface FillGradient {
|
|
788
|
+
type: `linear` | `radial`
|
|
789
|
+
// For linear gradients: angle in degrees (0 = horizontal left-to-right, 90 = vertical top-to-bottom)
|
|
790
|
+
angle?: number
|
|
791
|
+
// For radial gradients: center position (0-1 normalized)
|
|
792
|
+
center?: { x: number; y: number }
|
|
793
|
+
// Color stops: array of [offset (0-1), color] pairs
|
|
794
|
+
stops: readonly [number, string][]
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
// Edge/stroke styling for fill region boundaries
|
|
798
|
+
export interface FillEdgeStyle {
|
|
799
|
+
color?: string
|
|
800
|
+
width?: number
|
|
801
|
+
dash?: string
|
|
802
|
+
opacity?: number
|
|
803
|
+
}
|
|
804
|
+
|
|
805
|
+
// Hover state styling for fill regions
|
|
806
|
+
export interface FillHoverStyle {
|
|
807
|
+
fill?: string
|
|
808
|
+
fill_opacity?: number
|
|
809
|
+
edge?: FillEdgeStyle
|
|
810
|
+
cursor?: string
|
|
811
|
+
scale?: number // Scale factor for hover effect
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
// Event type for fill region interactions
|
|
815
|
+
export interface FillHandlerEvent {
|
|
816
|
+
event: MouseEvent | KeyboardEvent
|
|
817
|
+
region_idx: number
|
|
818
|
+
region_id?: string | number
|
|
819
|
+
x: number // Data x-coordinate
|
|
820
|
+
y: number // Data y-coordinate
|
|
821
|
+
px: number // Pixel x-coordinate
|
|
822
|
+
py: number // Pixel y-coordinate
|
|
823
|
+
label?: string
|
|
824
|
+
metadata?: Record<string, unknown>
|
|
825
|
+
}
|
|
826
|
+
|
|
827
|
+
// z-index positions for rendering order (used by fill regions and reference lines)
|
|
828
|
+
export type LayerZIndex = `below-grid` | `below-lines` | `below-points` | `above-all`
|
|
829
|
+
|
|
830
|
+
// Curve types supported for fill path generation (matching d3-shape curves)
|
|
831
|
+
export const FILL_CURVE_TYPES = [
|
|
832
|
+
`linear`,
|
|
833
|
+
`monotoneX`,
|
|
834
|
+
`monotoneY`,
|
|
835
|
+
`step`,
|
|
836
|
+
`stepBefore`,
|
|
837
|
+
`stepAfter`,
|
|
838
|
+
`basis`,
|
|
839
|
+
`cardinal`,
|
|
840
|
+
`catmullRom`,
|
|
841
|
+
`natural`,
|
|
842
|
+
] as const
|
|
843
|
+
export type FillCurveType = (typeof FILL_CURVE_TYPES)[number]
|
|
844
|
+
|
|
845
|
+
// Main configuration for a fill region
|
|
846
|
+
export interface FillRegion {
|
|
847
|
+
// Identity
|
|
848
|
+
id?: string | number
|
|
849
|
+
label?: string
|
|
850
|
+
|
|
851
|
+
// Boundaries - define the top and bottom of the fill area
|
|
852
|
+
upper: FillBoundary
|
|
853
|
+
lower: FillBoundary
|
|
854
|
+
|
|
855
|
+
// Optional range constraints
|
|
856
|
+
x_range?: [number | null, number | null]
|
|
857
|
+
y_range?: [number | null, number | null]
|
|
858
|
+
|
|
859
|
+
// Conditional fill: only fill where condition is true
|
|
860
|
+
// Example: where: (x, y_upper, y_lower) => y_upper > y_lower
|
|
861
|
+
where?: (x: number, y_upper: number, y_lower: number) => boolean
|
|
862
|
+
|
|
863
|
+
// Styling
|
|
864
|
+
fill?: string | FillGradient
|
|
865
|
+
fill_opacity?: number
|
|
866
|
+
edge_upper?: FillEdgeStyle
|
|
867
|
+
edge_lower?: FillEdgeStyle
|
|
868
|
+
curve?: FillCurveType
|
|
869
|
+
step_position?: number // For step curves: 0 = step, 0.5 = stepMiddle, 1 = stepEnd
|
|
870
|
+
|
|
871
|
+
// Rendering
|
|
872
|
+
z_index?: LayerZIndex
|
|
873
|
+
visible?: boolean
|
|
874
|
+
|
|
875
|
+
// Interactions
|
|
876
|
+
hover_style?: FillHoverStyle
|
|
877
|
+
on_click?: (event: FillHandlerEvent) => void
|
|
878
|
+
on_hover?: (event: FillHandlerEvent | null) => void
|
|
879
|
+
|
|
880
|
+
// Legend
|
|
881
|
+
show_in_legend?: boolean
|
|
882
|
+
legend_group?: string
|
|
883
|
+
|
|
884
|
+
// Metadata for user data
|
|
885
|
+
metadata?: Record<string, unknown>
|
|
886
|
+
}
|
|
887
|
+
|
|
888
|
+
// Convenience type for error bands (symmetric or asymmetric around a series)
|
|
889
|
+
export interface ErrorBand {
|
|
890
|
+
// Reference to the central series
|
|
891
|
+
series:
|
|
892
|
+
| { type: `series`; series_idx: number }
|
|
893
|
+
| {
|
|
894
|
+
type: `series`
|
|
895
|
+
series_id: string | number
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
// Error values - can be symmetric (single value/array) or asymmetric (upper/lower)
|
|
899
|
+
error:
|
|
900
|
+
| number // Symmetric constant error
|
|
901
|
+
| readonly number[] // Symmetric per-point error
|
|
902
|
+
| { upper: number | readonly number[]; lower: number | readonly number[] } // Asymmetric
|
|
903
|
+
|
|
904
|
+
// Styling (defaults applied if not specified)
|
|
905
|
+
fill?: string // Defaults to series color with reduced opacity
|
|
906
|
+
fill_opacity?: number // Defaults to 0.3
|
|
907
|
+
edge_style?: FillEdgeStyle
|
|
908
|
+
|
|
909
|
+
// Identity
|
|
910
|
+
id?: string | number
|
|
911
|
+
label?: string
|
|
912
|
+
show_in_legend?: boolean
|
|
913
|
+
}
|
|
914
|
+
|
|
915
|
+
// Reference line styling
|
|
916
|
+
export interface RefLineStyle {
|
|
917
|
+
color?: string // default: 'currentColor'
|
|
918
|
+
width?: number // default: 1
|
|
919
|
+
dash?: string // SVG stroke-dasharray, default: none (solid)
|
|
920
|
+
opacity?: number // default: 1
|
|
921
|
+
}
|
|
922
|
+
|
|
923
|
+
// Annotation/label for reference lines
|
|
924
|
+
export interface RefLineAnnotation {
|
|
925
|
+
text: string
|
|
926
|
+
position?: `start` | `center` | `end` // position along the line
|
|
927
|
+
side?: `above` | `below` | `left` | `right` // which side of line
|
|
928
|
+
offset?: { x?: number; y?: number }
|
|
929
|
+
gap?: number // pixels between line and annotation text, default: 8
|
|
930
|
+
edge_padding?: number // pixels inward from plot edge at start/end, default: 4
|
|
931
|
+
font_size?: string
|
|
932
|
+
font_family?: string
|
|
933
|
+
color?: string
|
|
934
|
+
background?: string
|
|
935
|
+
padding?: number
|
|
936
|
+
rotate?: boolean // rotate text to follow line angle
|
|
937
|
+
}
|
|
938
|
+
|
|
939
|
+
// Event type for reference line interactions
|
|
940
|
+
export interface RefLineEvent {
|
|
941
|
+
event: MouseEvent | KeyboardEvent | FocusEvent
|
|
942
|
+
line_idx: number
|
|
943
|
+
line_id?: string | number
|
|
944
|
+
type: RefLine[`type`]
|
|
945
|
+
label?: string
|
|
946
|
+
metadata?: Record<string, unknown>
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
// Base properties shared by all reference line types
|
|
950
|
+
export interface RefLineBase {
|
|
951
|
+
id?: string | number
|
|
952
|
+
x_span?: [number | null, number | null]
|
|
953
|
+
y_span?: [number | null, number | null]
|
|
954
|
+
coord_mode?: `data` | `relative` // default: 'data'
|
|
955
|
+
x_axis?: `x1` | `x2` // for vertical lines with dual x-axes
|
|
956
|
+
y_axis?: `y1` | `y2` // for horizontal lines with dual y-axes
|
|
957
|
+
style?: RefLineStyle
|
|
958
|
+
annotation?: RefLineAnnotation
|
|
959
|
+
z_index?: LayerZIndex
|
|
960
|
+
visible?: boolean
|
|
961
|
+
hover_style?: RefLineStyle
|
|
962
|
+
on_click?: (event: RefLineEvent) => void
|
|
963
|
+
on_hover?: (event: RefLineEvent | null) => void
|
|
964
|
+
show_in_legend?: boolean
|
|
965
|
+
label?: string
|
|
966
|
+
legend_group?: string
|
|
967
|
+
metadata?: Record<string, unknown>
|
|
968
|
+
}
|
|
969
|
+
|
|
970
|
+
// Reference line value type - supports numbers, Dates, and ISO date strings
|
|
971
|
+
export type RefLineValue = number | Date | string
|
|
972
|
+
|
|
973
|
+
// Flat discriminated union - type determines required fields
|
|
974
|
+
export type RefLine = RefLineBase &
|
|
975
|
+
(
|
|
976
|
+
| { type: `horizontal`; y: RefLineValue }
|
|
977
|
+
| { type: `vertical`; x: RefLineValue }
|
|
978
|
+
| { type: `diagonal`; slope: number; intercept: number }
|
|
979
|
+
| {
|
|
980
|
+
type: `segment`
|
|
981
|
+
p1: [RefLineValue, RefLineValue]
|
|
982
|
+
p2: [RefLineValue, RefLineValue]
|
|
983
|
+
}
|
|
984
|
+
| { type: `line`; p1: [RefLineValue, RefLineValue]; p2: [RefLineValue, RefLineValue] }
|
|
985
|
+
)
|
|
986
|
+
|
|
987
|
+
// Default style values for reference lines
|
|
988
|
+
export const REF_LINE_STYLE_DEFAULTS: Required<RefLineStyle> = {
|
|
989
|
+
color: `currentColor`,
|
|
990
|
+
width: 1,
|
|
991
|
+
dash: ``,
|
|
992
|
+
opacity: 1,
|
|
993
|
+
} as const
|
|
994
|
+
|
|
995
|
+
type Ref3DBase = Omit<
|
|
996
|
+
RefLineBase,
|
|
997
|
+
| `coord_mode`
|
|
998
|
+
| `x_axis`
|
|
999
|
+
| `y_axis`
|
|
1000
|
+
| `style`
|
|
1001
|
+
| `hover_style`
|
|
1002
|
+
| `annotation`
|
|
1003
|
+
| `on_click`
|
|
1004
|
+
| `on_hover`
|
|
1005
|
+
> & {
|
|
1006
|
+
z_span?: [number | null, number | null]
|
|
1007
|
+
}
|
|
1008
|
+
|
|
1009
|
+
// Base properties shared by all 3D reference line types
|
|
1010
|
+
// Aligned with RefLineBase for future feature parity (interactions, annotations, etc.)
|
|
1011
|
+
export interface RefLine3DBase extends Ref3DBase {
|
|
1012
|
+
style?: RefLineStyle
|
|
1013
|
+
hover_style?: RefLineStyle
|
|
1014
|
+
annotation?: RefLineAnnotation
|
|
1015
|
+
on_click?: (event: { line_idx: number; line_id?: string | number }) => void
|
|
1016
|
+
on_hover?: (event: { line_idx: number; line_id?: string | number } | null) => void
|
|
1017
|
+
}
|
|
1018
|
+
|
|
1019
|
+
// 3D reference line - discriminated union
|
|
1020
|
+
export type RefLine3D = RefLine3DBase &
|
|
1021
|
+
(
|
|
1022
|
+
| { type: `x-axis`; y: number; z: number } // line parallel to x-axis
|
|
1023
|
+
| { type: `y-axis`; x: number; z: number } // line parallel to y-axis
|
|
1024
|
+
| { type: `z-axis`; x: number; y: number } // line parallel to z-axis
|
|
1025
|
+
| { type: `segment`; p1: Vec3; p2: Vec3 }
|
|
1026
|
+
| { type: `line`; p1: Vec3; p2: Vec3 }
|
|
1027
|
+
)
|
|
1028
|
+
|
|
1029
|
+
// 3D reference plane styling
|
|
1030
|
+
export interface RefPlaneStyle {
|
|
1031
|
+
color?: string
|
|
1032
|
+
opacity?: number
|
|
1033
|
+
wireframe?: boolean
|
|
1034
|
+
wireframe_color?: string
|
|
1035
|
+
double_sided?: boolean
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
// Base properties shared by all 3D reference plane types
|
|
1039
|
+
export interface RefPlaneBase extends Ref3DBase {
|
|
1040
|
+
style?: RefPlaneStyle
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
// 3D reference plane - discriminated union
|
|
1044
|
+
export type RefPlane = RefPlaneBase &
|
|
1045
|
+
(
|
|
1046
|
+
| { type: `xy`; z: number } // horizontal plane at z
|
|
1047
|
+
| { type: `xz`; y: number } // vertical plane at y
|
|
1048
|
+
| { type: `yz`; x: number } // vertical plane at x
|
|
1049
|
+
| { type: `normal`; normal: Vec3; point: Vec3 }
|
|
1050
|
+
| { type: `points`; p1: Vec3; p2: Vec3; p3: Vec3 } // plane through 3 points
|
|
1051
|
+
)
|
|
1052
|
+
|
|
1053
|
+
// --- Data Cleaning Types ---
|
|
1054
|
+
|
|
1055
|
+
// Oscillation detection weights (all default to 1.0)
|
|
1056
|
+
export interface OscillationWeights {
|
|
1057
|
+
derivative_variance?: number // Weight for derivative variance method
|
|
1058
|
+
amplitude_growth?: number // Weight for exponential amplitude growth
|
|
1059
|
+
sign_changes?: number // Weight for derivative sign change frequency
|
|
1060
|
+
}
|
|
1061
|
+
|
|
1062
|
+
// How to handle invalid values (NaN, Infinity)
|
|
1063
|
+
export type InvalidValueMode = `remove` | `propagate` | `interpolate`
|
|
1064
|
+
|
|
1065
|
+
// Truncation strategy when instability detected
|
|
1066
|
+
export type TruncationMode = `hard_cut` | `mark_unstable`
|
|
1067
|
+
|
|
1068
|
+
// Physical bounds configuration
|
|
1069
|
+
export interface PhysicalBounds {
|
|
1070
|
+
min?: number | ((x: number) => number) // Static or x-dependent minimum
|
|
1071
|
+
max?: number | ((x: number) => number) // Static or x-dependent maximum
|
|
1072
|
+
mode?: `clamp` | `filter` | `null` // How to handle violations
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1075
|
+
// Smoothing algorithm configuration (discriminated union for type safety)
|
|
1076
|
+
export type SmoothingConfig =
|
|
1077
|
+
| { type: `moving_avg`; window: number }
|
|
1078
|
+
| { type: `savgol`; window: number; polynomial_order?: number } // window must be odd
|
|
1079
|
+
| { type: `gaussian`; sigma: number } // sigma controls Gaussian kernel width
|
|
1080
|
+
|
|
1081
|
+
// Local outlier detection config (sliding window approach)
|
|
1082
|
+
export interface LocalOutlierConfig {
|
|
1083
|
+
window_half?: number // Points on each side for local context (default: 7)
|
|
1084
|
+
mad_threshold?: number // MADs from local median to flag outlier (default: 2.0)
|
|
1085
|
+
max_iterations?: number // Iterative passes to catch clustered outliers (default: 5)
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
// Result of local outlier detection
|
|
1089
|
+
export interface LocalOutlierResult {
|
|
1090
|
+
kept_indices: number[]
|
|
1091
|
+
removed_indices: number[]
|
|
1092
|
+
iterations_used: number
|
|
1093
|
+
}
|
|
1094
|
+
|
|
1095
|
+
// Main cleaning configuration
|
|
1096
|
+
export interface CleaningConfig {
|
|
1097
|
+
// Oscillation detection
|
|
1098
|
+
oscillation_threshold?: number // Combined score threshold (default: 3.0)
|
|
1099
|
+
oscillation_weights?: OscillationWeights // Method weights
|
|
1100
|
+
window_size?: number // Rolling window for detection (default: 5)
|
|
1101
|
+
|
|
1102
|
+
// Data handling
|
|
1103
|
+
invalid_values?: InvalidValueMode // NaN/Infinity handling (default: 'remove')
|
|
1104
|
+
bounds?: PhysicalBounds // Physical constraints
|
|
1105
|
+
smooth?: SmoothingConfig // Optional smoothing
|
|
1106
|
+
local_outliers?: LocalOutlierConfig // Local sliding window outlier removal
|
|
1107
|
+
|
|
1108
|
+
// Truncation
|
|
1109
|
+
truncation_mode?: TruncationMode // 'hard_cut' or 'mark_unstable' (default: 'mark_unstable')
|
|
1110
|
+
|
|
1111
|
+
// Performance
|
|
1112
|
+
in_place?: boolean // Mutate input arrays (default: true)
|
|
1113
|
+
}
|
|
1114
|
+
|
|
1115
|
+
// Quality report from cleaning operation
|
|
1116
|
+
export interface CleaningQuality {
|
|
1117
|
+
points_removed: number
|
|
1118
|
+
invalid_values_found: number // NaN/Infinity count
|
|
1119
|
+
oscillation_detected: boolean
|
|
1120
|
+
oscillation_score?: number // Combined weighted score
|
|
1121
|
+
bounds_violations: number
|
|
1122
|
+
outliers_removed?: number // Count of local outliers removed
|
|
1123
|
+
stable_range?: Vec2 // [start_x, end_x] if mark_unstable mode
|
|
1124
|
+
truncated_at_x?: number // x value if hard_cut mode
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
// Result of a cleaning operation
|
|
1128
|
+
export interface CleaningResult<T = DataSeries> {
|
|
1129
|
+
series: T // Cleaned data (same ref if in_place)
|
|
1130
|
+
quality: CleaningQuality
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
// Instability detection result
|
|
1134
|
+
export interface InstabilityResult {
|
|
1135
|
+
detected: boolean
|
|
1136
|
+
onset_index: number
|
|
1137
|
+
onset_x: number
|
|
1138
|
+
combined_score: number
|
|
1139
|
+
method_scores: {
|
|
1140
|
+
derivative_variance: number
|
|
1141
|
+
amplitude_growth: number
|
|
1142
|
+
sign_changes: number
|
|
1143
|
+
}
|
|
1144
|
+
}
|