matterviz 0.3.6 → 0.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/EmptyState.svelte.d.ts +9 -0
- package/dist/FilePicker.svelte +360 -0
- package/dist/FilePicker.svelte.d.ts +17 -0
- package/dist/Icon.svelte.d.ts +13 -0
- package/dist/MillerIndexInput.svelte +66 -0
- package/dist/MillerIndexInput.svelte.d.ts +7 -0
- package/dist/api/mp.d.ts +6 -0
- package/dist/api/mp.js +22 -0
- package/dist/api/optimade.d.ts +45 -0
- package/dist/api/optimade.js +135 -0
- package/dist/brillouin/BrillouinZone.svelte +549 -0
- package/dist/brillouin/BrillouinZone.svelte.d.ts +83 -0
- package/dist/brillouin/BrillouinZoneControls.svelte +144 -0
- package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +17 -0
- package/dist/brillouin/BrillouinZoneExportPane.svelte +146 -0
- package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +15 -0
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +146 -0
- package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +13 -0
- package/dist/brillouin/BrillouinZoneScene.svelte +476 -0
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +48 -0
- package/dist/brillouin/BrillouinZoneTooltip.svelte +92 -0
- package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +8 -0
- package/dist/brillouin/compute.d.ts +17 -0
- package/dist/brillouin/compute.js +426 -0
- package/dist/brillouin/index.d.ts +8 -0
- package/dist/brillouin/index.js +7 -0
- package/dist/brillouin/types.d.ts +43 -0
- package/dist/brillouin/types.js +1 -0
- package/dist/chempot-diagram/ChemPotDiagram.svelte +327 -0
- package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
- package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
- package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
- package/dist/chempot-diagram/async-compute.svelte.js +78 -0
- package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
- package/dist/chempot-diagram/chempot-worker.js +11 -0
- package/dist/chempot-diagram/color.d.ts +10 -0
- package/dist/chempot-diagram/color.js +32 -0
- package/dist/chempot-diagram/compute.d.ts +48 -0
- package/dist/chempot-diagram/compute.js +806 -0
- package/dist/chempot-diagram/index.d.ts +6 -0
- package/dist/chempot-diagram/index.js +6 -0
- package/dist/chempot-diagram/pointer.d.ts +16 -0
- package/dist/chempot-diagram/pointer.js +40 -0
- package/dist/chempot-diagram/temperature.d.ts +15 -0
- package/dist/chempot-diagram/temperature.js +34 -0
- package/dist/chempot-diagram/types.d.ts +81 -0
- package/dist/chempot-diagram/types.js +28 -0
- package/dist/colors/index.d.ts +47 -0
- package/dist/colors/index.js +203 -0
- package/dist/composition/BarChart.svelte +297 -0
- package/dist/composition/BarChart.svelte.d.ts +39 -0
- package/dist/composition/BubbleChart.svelte +218 -0
- package/dist/composition/BubbleChart.svelte.d.ts +28 -0
- package/dist/composition/Composition.svelte +165 -0
- package/dist/composition/Composition.svelte.d.ts +15 -0
- package/dist/composition/Formula.svelte +268 -0
- package/dist/composition/Formula.svelte.d.ts +19 -0
- package/dist/composition/FormulaFilter.svelte +1257 -0
- package/dist/composition/FormulaFilter.svelte.d.ts +51 -0
- package/dist/composition/PieChart.svelte +323 -0
- package/dist/composition/PieChart.svelte.d.ts +37 -0
- package/dist/composition/format.d.ts +15 -0
- package/dist/composition/format.js +109 -0
- package/dist/composition/index.d.ts +20 -0
- package/dist/composition/index.js +14 -0
- package/dist/composition/parse.d.ts +56 -0
- package/dist/composition/parse.js +474 -0
- package/dist/constants.d.ts +29 -0
- package/dist/constants.js +99 -0
- package/dist/controls.d.ts +14 -0
- package/dist/controls.js +30 -0
- package/dist/convex-hull/ConvexHull.svelte +157 -0
- package/dist/convex-hull/ConvexHull.svelte.d.ts +13 -0
- package/dist/convex-hull/ConvexHull2D.svelte +825 -0
- package/dist/convex-hull/ConvexHull2D.svelte.d.ts +11 -0
- package/dist/convex-hull/ConvexHull3D.svelte +1801 -0
- package/dist/convex-hull/ConvexHull3D.svelte.d.ts +8 -0
- package/dist/convex-hull/ConvexHull4D.svelte +1398 -0
- package/dist/convex-hull/ConvexHull4D.svelte.d.ts +8 -0
- package/dist/convex-hull/ConvexHullControls.svelte +535 -0
- package/dist/convex-hull/ConvexHullControls.svelte.d.ts +48 -0
- package/dist/convex-hull/ConvexHullInfoPane.svelte +125 -0
- package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +20 -0
- package/dist/convex-hull/ConvexHullStats.svelte +929 -0
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +17 -0
- package/dist/convex-hull/ConvexHullTooltip.svelte +131 -0
- package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +33 -0
- package/dist/convex-hull/GasPressureControls.svelte +247 -0
- package/dist/convex-hull/GasPressureControls.svelte.d.ts +11 -0
- package/dist/convex-hull/StructurePopup.svelte +151 -0
- package/dist/convex-hull/StructurePopup.svelte.d.ts +18 -0
- package/dist/convex-hull/TemperatureSlider.svelte.d.ts +8 -0
- package/dist/convex-hull/barycentric-coords.d.ts +18 -0
- package/dist/convex-hull/barycentric-coords.js +182 -0
- package/dist/convex-hull/demo-temperature.d.ts +6 -0
- package/dist/convex-hull/demo-temperature.js +40 -0
- package/dist/convex-hull/gas-thermodynamics.d.ts +16 -0
- package/dist/convex-hull/gas-thermodynamics.js +314 -0
- package/dist/convex-hull/helpers.d.ts +114 -0
- package/dist/convex-hull/helpers.js +710 -0
- package/dist/convex-hull/index.d.ts +119 -0
- package/dist/convex-hull/index.js +58 -0
- package/dist/convex-hull/thermodynamics.d.ts +67 -0
- package/dist/convex-hull/thermodynamics.js +1752 -0
- package/dist/convex-hull/types.d.ts +162 -0
- package/dist/convex-hull/types.js +36 -0
- package/dist/coordination/CoordinationBarPlot.svelte +311 -0
- package/dist/coordination/CoordinationBarPlot.svelte.d.ts +30 -0
- package/dist/coordination/calc-coordination.d.ts +15 -0
- package/dist/coordination/calc-coordination.js +63 -0
- package/dist/coordination/index.d.ts +8 -0
- package/dist/coordination/index.js +7 -0
- package/dist/effects.svelte.d.ts +12 -0
- package/dist/effects.svelte.js +37 -0
- package/dist/element/BohrAtom.svelte.d.ts +20 -0
- package/dist/element/ElementHeading.svelte +26 -0
- package/dist/element/ElementHeading.svelte.d.ts +8 -0
- package/dist/element/ElementPhoto.svelte +57 -0
- package/dist/element/ElementPhoto.svelte.d.ts +9 -0
- package/dist/element/ElementStats.svelte +80 -0
- package/dist/element/ElementStats.svelte.d.ts +8 -0
- package/dist/element/ElementTile.svelte +484 -0
- package/dist/element/ElementTile.svelte.d.ts +29 -0
- package/dist/element/Nucleus.svelte.d.ts +17 -0
- package/dist/element/data.d.ts +2 -0
- package/dist/element/data.js +2 -0
- package/dist/element/index.d.ts +8 -0
- package/dist/element/index.js +7 -0
- package/dist/element/types.d.ts +57 -0
- package/dist/element/types.js +1 -0
- package/dist/feedback/ClickFeedback.svelte +58 -0
- package/dist/feedback/ClickFeedback.svelte.d.ts +12 -0
- package/dist/feedback/DragOverlay.svelte +42 -0
- package/dist/feedback/DragOverlay.svelte.d.ts +7 -0
- package/dist/feedback/Spinner.svelte.d.ts +7 -0
- package/dist/feedback/StatusMessage.svelte.d.ts +9 -0
- package/dist/feedback/index.d.ts +4 -0
- package/dist/feedback/index.js +4 -0
- package/dist/fermi-surface/FermiSlice.svelte +189 -0
- package/dist/fermi-surface/FermiSlice.svelte.d.ts +24 -0
- package/dist/fermi-surface/FermiSurface.svelte +600 -0
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +83 -0
- package/dist/fermi-surface/FermiSurfaceControls.svelte +448 -0
- package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +35 -0
- package/dist/fermi-surface/FermiSurfaceScene.svelte +794 -0
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +50 -0
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +8 -0
- package/dist/fermi-surface/compute.d.ts +5 -0
- package/dist/fermi-surface/compute.js +538 -0
- package/dist/fermi-surface/constants.d.ts +9 -0
- package/dist/fermi-surface/constants.js +27 -0
- package/dist/fermi-surface/export.d.ts +5 -0
- package/dist/fermi-surface/export.js +50 -0
- package/dist/fermi-surface/index.d.ts +12 -0
- package/dist/fermi-surface/index.js +13 -0
- package/dist/fermi-surface/marching-cubes.d.ts +2 -0
- package/dist/fermi-surface/marching-cubes.js +2 -0
- package/dist/fermi-surface/parse.d.ts +2 -0
- package/dist/fermi-surface/parse.js +491 -0
- package/dist/fermi-surface/symmetry.d.ts +3 -0
- package/dist/fermi-surface/symmetry.js +46 -0
- package/dist/fermi-surface/types.d.ts +110 -0
- package/dist/fermi-surface/types.js +4 -0
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
- package/dist/heatmap-matrix/index.d.ts +53 -0
- package/dist/heatmap-matrix/index.js +100 -0
- package/dist/heatmap-matrix/shared.d.ts +2 -0
- package/dist/heatmap-matrix/shared.js +4 -0
- package/dist/icons.d.ts +569 -0
- package/dist/icons.js +648 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +39 -0
- package/dist/io/decompress.d.ts +11 -0
- package/dist/io/decompress.js +74 -0
- package/dist/io/export.d.ts +16 -0
- package/dist/io/export.js +316 -0
- package/dist/io/fetch.d.ts +5 -0
- package/dist/io/fetch.js +39 -0
- package/dist/io/file-drop.d.ts +7 -0
- package/dist/io/file-drop.js +43 -0
- package/dist/io/index.d.ts +7 -0
- package/dist/io/index.js +6 -0
- package/dist/io/is-binary.d.ts +1 -0
- package/dist/io/is-binary.js +20 -0
- package/dist/io/types.d.ts +8 -0
- package/dist/io/types.js +1 -0
- package/dist/io/url-drop.d.ts +2 -0
- package/dist/io/url-drop.js +123 -0
- package/dist/isosurface/Isosurface.svelte +285 -0
- package/dist/isosurface/Isosurface.svelte.d.ts +8 -0
- package/dist/isosurface/IsosurfaceControls.svelte +277 -0
- package/dist/isosurface/IsosurfaceControls.svelte.d.ts +9 -0
- package/dist/isosurface/index.d.ts +5 -0
- package/dist/isosurface/index.js +6 -0
- package/dist/isosurface/parse.d.ts +6 -0
- package/dist/isosurface/parse.js +553 -0
- package/dist/isosurface/slice.d.ts +11 -0
- package/dist/isosurface/slice.js +140 -0
- package/dist/isosurface/types.d.ts +56 -0
- package/dist/isosurface/types.js +227 -0
- package/dist/labels.d.ts +53 -0
- package/dist/labels.js +277 -0
- package/dist/layout/FullscreenToggle.svelte +50 -0
- package/dist/layout/FullscreenToggle.svelte.d.ts +7 -0
- package/dist/layout/InfoCard.svelte +120 -0
- package/dist/layout/InfoCard.svelte.d.ts +21 -0
- package/dist/layout/InfoTag.svelte +185 -0
- package/dist/layout/InfoTag.svelte.d.ts +19 -0
- package/dist/layout/PropertyFilter.svelte +246 -0
- package/dist/layout/PropertyFilter.svelte.d.ts +24 -0
- package/dist/layout/SettingsSection.svelte +148 -0
- package/dist/layout/SettingsSection.svelte.d.ts +17 -0
- package/dist/layout/SubpageGrid.svelte +82 -0
- package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
- package/dist/layout/fullscreen.d.ts +9 -0
- package/dist/layout/fullscreen.js +53 -0
- package/dist/layout/index.d.ts +10 -0
- package/dist/layout/index.js +8 -0
- package/dist/layout/json-tree/JsonNode.svelte +548 -0
- package/dist/layout/json-tree/JsonNode.svelte.d.ts +11 -0
- package/dist/layout/json-tree/JsonTree.svelte +1230 -0
- package/dist/layout/json-tree/JsonTree.svelte.d.ts +6 -0
- package/dist/layout/json-tree/JsonValue.svelte.d.ts +9 -0
- package/dist/layout/json-tree/index.d.ts +3 -0
- package/dist/layout/json-tree/index.js +3 -0
- package/dist/layout/json-tree/types.d.ts +74 -0
- package/dist/layout/json-tree/types.js +2 -0
- package/dist/layout/json-tree/utils.d.ts +29 -0
- package/dist/layout/json-tree/utils.js +641 -0
- package/dist/marching-cubes.d.ts +14 -0
- package/dist/marching-cubes.js +540 -0
- package/dist/math.d.ts +101 -0
- package/dist/math.js +905 -0
- package/dist/overlays/ContextMenu.svelte +162 -0
- package/dist/overlays/ContextMenu.svelte.d.ts +25 -0
- package/dist/overlays/CopyButton.svelte +45 -0
- package/dist/overlays/CopyButton.svelte.d.ts +8 -0
- package/dist/overlays/DragControlTab.svelte +98 -0
- package/dist/overlays/DragControlTab.svelte.d.ts +8 -0
- package/dist/overlays/DraggablePane.svelte +487 -0
- package/dist/overlays/DraggablePane.svelte.d.ts +36 -0
- package/dist/overlays/InfoPaneCards.svelte +149 -0
- package/dist/overlays/InfoPaneCards.svelte.d.ts +22 -0
- package/dist/overlays/index.d.ts +3 -0
- package/dist/overlays/index.js +3 -0
- package/dist/periodic-table/PeriodicTable.svelte +469 -0
- package/dist/periodic-table/PeriodicTable.svelte.d.ts +55 -0
- package/dist/periodic-table/PeriodicTableControls.svelte +557 -0
- package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +24 -0
- package/dist/periodic-table/PropertySelect.svelte +37 -0
- package/dist/periodic-table/PropertySelect.svelte.d.ts +13 -0
- package/dist/periodic-table/TableInset.svelte.d.ts +9 -0
- package/dist/periodic-table/index.d.ts +10 -0
- package/dist/periodic-table/index.js +4 -0
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +44 -0
- package/dist/phase-diagram/PhaseDiagramControls.svelte +444 -0
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +30 -0
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +19 -0
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +16 -0
- package/dist/phase-diagram/TdbInfoPanel.svelte +203 -0
- package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +12 -0
- package/dist/phase-diagram/build-diagram.d.ts +11 -0
- package/dist/phase-diagram/build-diagram.js +160 -0
- package/dist/phase-diagram/colors.d.ts +35 -0
- package/dist/phase-diagram/colors.js +51 -0
- package/dist/phase-diagram/diagram-input.d.ts +29 -0
- package/dist/phase-diagram/diagram-input.js +3 -0
- package/dist/phase-diagram/index.d.ts +13 -0
- package/dist/phase-diagram/index.js +11 -0
- package/dist/phase-diagram/parse.d.ts +55 -0
- package/dist/phase-diagram/parse.js +272 -0
- package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
- package/dist/phase-diagram/svg-to-diagram.js +867 -0
- package/dist/phase-diagram/types.d.ts +93 -0
- package/dist/phase-diagram/types.js +1 -0
- package/dist/phase-diagram/utils.d.ts +118 -0
- package/dist/phase-diagram/utils.js +604 -0
- package/dist/plot/AxisLabel.svelte +51 -0
- package/dist/plot/AxisLabel.svelte.d.ts +16 -0
- package/dist/plot/BarPlot.svelte +2113 -0
- package/dist/plot/BarPlot.svelte.d.ts +84 -0
- package/dist/plot/BarPlotControls.svelte +66 -0
- package/dist/plot/BarPlotControls.svelte.d.ts +18 -0
- package/dist/plot/BinnedScatterPlot.svelte +1114 -0
- package/dist/plot/BinnedScatterPlot.svelte.d.ts +66 -0
- package/dist/plot/ColorBar.svelte +721 -0
- package/dist/plot/ColorBar.svelte.d.ts +31 -0
- package/dist/plot/ColorScaleSelect.svelte +54 -0
- package/dist/plot/ColorScaleSelect.svelte.d.ts +15 -0
- package/dist/plot/ElementScatter.svelte +63 -0
- package/dist/plot/ElementScatter.svelte.d.ts +14 -0
- package/dist/plot/FillArea.svelte.d.ts +21 -0
- package/dist/plot/Histogram.svelte +1558 -0
- package/dist/plot/Histogram.svelte.d.ts +50 -0
- package/dist/plot/HistogramControls.svelte +212 -0
- package/dist/plot/HistogramControls.svelte.d.ts +22 -0
- package/dist/plot/InteractiveAxisLabel.svelte +96 -0
- package/dist/plot/InteractiveAxisLabel.svelte.d.ts +14 -0
- package/dist/plot/Line.svelte +84 -0
- package/dist/plot/Line.svelte.d.ts +15 -0
- package/dist/plot/PlotAxis.svelte +169 -0
- package/dist/plot/PlotAxis.svelte.d.ts +24 -0
- package/dist/plot/PlotControls.svelte +537 -0
- package/dist/plot/PlotControls.svelte.d.ts +4 -0
- package/dist/plot/PlotLegend.svelte +569 -0
- package/dist/plot/PlotLegend.svelte.d.ts +29 -0
- package/dist/plot/PlotTooltip.svelte +67 -0
- package/dist/plot/PlotTooltip.svelte.d.ts +17 -0
- package/dist/plot/PortalSelect.svelte +253 -0
- package/dist/plot/PortalSelect.svelte.d.ts +16 -0
- package/dist/plot/ReferenceLine.svelte.d.ts +20 -0
- package/dist/plot/ReferenceLine3D.svelte +156 -0
- package/dist/plot/ReferenceLine3D.svelte.d.ts +14 -0
- package/dist/plot/ReferencePlane.svelte +175 -0
- package/dist/plot/ReferencePlane.svelte.d.ts +14 -0
- package/dist/plot/ScatterPlot.svelte +2778 -0
- package/dist/plot/ScatterPlot.svelte.d.ts +96 -0
- package/dist/plot/ScatterPlot3D.svelte +529 -0
- package/dist/plot/ScatterPlot3D.svelte.d.ts +95 -0
- package/dist/plot/ScatterPlot3DControls.svelte +437 -0
- package/dist/plot/ScatterPlot3DControls.svelte.d.ts +20 -0
- package/dist/plot/ScatterPlot3DScene.svelte +912 -0
- package/dist/plot/ScatterPlot3DScene.svelte.d.ts +74 -0
- package/dist/plot/ScatterPlotControls.svelte +306 -0
- package/dist/plot/ScatterPlotControls.svelte.d.ts +17 -0
- package/dist/plot/ScatterPoint.svelte +182 -0
- package/dist/plot/ScatterPoint.svelte.d.ts +22 -0
- package/dist/plot/SpacegroupBarPlot.svelte +293 -0
- package/dist/plot/SpacegroupBarPlot.svelte.d.ts +9 -0
- package/dist/plot/Surface3D.svelte +197 -0
- package/dist/plot/Surface3D.svelte.d.ts +13 -0
- package/dist/plot/ZeroLines.svelte +97 -0
- package/dist/plot/ZeroLines.svelte.d.ts +33 -0
- package/dist/plot/ZoomRect.svelte +23 -0
- package/dist/plot/ZoomRect.svelte.d.ts +8 -0
- package/dist/plot/adaptive-density.d.ts +69 -0
- package/dist/plot/adaptive-density.js +191 -0
- package/dist/plot/auto-place.d.ts +43 -0
- package/dist/plot/auto-place.js +122 -0
- package/dist/plot/axis-utils.d.ts +19 -0
- package/dist/plot/axis-utils.js +78 -0
- package/dist/plot/binned-scatter-types.d.ts +59 -0
- package/dist/plot/binned-scatter-types.js +1 -0
- package/dist/plot/data-cleaning.d.ts +37 -0
- package/dist/plot/data-cleaning.js +855 -0
- package/dist/plot/data-transform.d.ts +16 -0
- package/dist/plot/data-transform.js +45 -0
- package/dist/plot/defaults.d.ts +19 -0
- package/dist/plot/defaults.js +9 -0
- package/dist/plot/fill-utils.d.ts +46 -0
- package/dist/plot/fill-utils.js +322 -0
- package/dist/plot/hover-lock.svelte.d.ts +14 -0
- package/dist/plot/hover-lock.svelte.js +46 -0
- package/dist/plot/index.d.ts +41 -0
- package/dist/plot/index.js +39 -0
- package/dist/plot/interactions.d.ts +12 -0
- package/dist/plot/interactions.js +101 -0
- package/dist/plot/layout.d.ts +78 -0
- package/dist/plot/layout.js +273 -0
- package/dist/plot/reference-line.d.ts +60 -0
- package/dist/plot/reference-line.js +314 -0
- package/dist/plot/scales.d.ts +48 -0
- package/dist/plot/scales.js +481 -0
- package/dist/plot/svg.d.ts +1 -0
- package/dist/plot/svg.js +11 -0
- package/dist/plot/types.d.ts +831 -0
- package/dist/plot/types.js +99 -0
- package/dist/plot/utils/label-placement.d.ts +68 -0
- package/dist/plot/utils/label-placement.js +326 -0
- package/dist/plot/utils/series-visibility.d.ts +15 -0
- package/dist/plot/utils/series-visibility.js +85 -0
- package/dist/plot/utils.d.ts +1 -0
- package/dist/plot/utils.js +14 -0
- package/dist/rdf/RdfPlot.svelte +247 -0
- package/dist/rdf/RdfPlot.svelte.d.ts +27 -0
- package/dist/rdf/calc-rdf.d.ts +4 -0
- package/dist/rdf/calc-rdf.js +111 -0
- package/dist/rdf/index.d.ts +23 -0
- package/dist/rdf/index.js +2 -0
- package/dist/sanitize.d.ts +6 -0
- package/dist/sanitize.js +116 -0
- package/dist/settings.d.ts +255 -0
- package/dist/settings.js +1132 -0
- package/dist/spectral/Bands.svelte +1040 -0
- package/dist/spectral/Bands.svelte.d.ts +40 -0
- package/dist/spectral/BandsAndDos.svelte +134 -0
- package/dist/spectral/BandsAndDos.svelte.d.ts +18 -0
- package/dist/spectral/BrillouinBandsDos.svelte +252 -0
- package/dist/spectral/BrillouinBandsDos.svelte.d.ts +20 -0
- package/dist/spectral/Dos.svelte +697 -0
- package/dist/spectral/Dos.svelte.d.ts +29 -0
- package/dist/spectral/helpers.d.ts +119 -0
- package/dist/spectral/helpers.js +1032 -0
- package/dist/spectral/index.d.ts +6 -0
- package/dist/spectral/index.js +6 -0
- package/dist/spectral/types.d.ts +84 -0
- package/dist/spectral/types.js +2 -0
- package/dist/state.svelte.d.ts +25 -0
- package/dist/state.svelte.js +45 -0
- package/dist/structure/Arrow.svelte +72 -0
- package/dist/structure/Arrow.svelte.d.ts +15 -0
- package/dist/structure/AtomLegend.svelte +815 -0
- package/dist/structure/AtomLegend.svelte.d.ts +35 -0
- package/dist/structure/Bond.svelte +140 -0
- package/dist/structure/Bond.svelte.d.ts +9 -0
- package/dist/structure/CanvasTooltip.svelte +33 -0
- package/dist/structure/CanvasTooltip.svelte.d.ts +12 -0
- package/dist/structure/CellSelect.svelte +349 -0
- package/dist/structure/CellSelect.svelte.d.ts +13 -0
- package/dist/structure/Cylinder.svelte +45 -0
- package/dist/structure/Cylinder.svelte.d.ts +10 -0
- package/dist/structure/Lattice.svelte +196 -0
- package/dist/structure/Lattice.svelte.d.ts +17 -0
- package/dist/structure/Structure.svelte +2248 -0
- package/dist/structure/Structure.svelte.d.ts +89 -0
- package/dist/structure/StructureControls.svelte +1273 -0
- package/dist/structure/StructureControls.svelte.d.ts +31 -0
- package/dist/structure/StructureExportPane.svelte +252 -0
- package/dist/structure/StructureExportPane.svelte.d.ts +17 -0
- package/dist/structure/StructureInfoPane.svelte +737 -0
- package/dist/structure/StructureInfoPane.svelte.d.ts +19 -0
- package/dist/structure/StructureScene.svelte +2255 -0
- package/dist/structure/StructureScene.svelte.d.ts +111 -0
- package/dist/structure/atom-properties.d.ts +37 -0
- package/dist/structure/atom-properties.js +200 -0
- package/dist/structure/bond-order-perception.d.ts +13 -0
- package/dist/structure/bond-order-perception.js +384 -0
- package/dist/structure/bonding.d.ts +68 -0
- package/dist/structure/bonding.js +696 -0
- package/dist/structure/export.d.ts +20 -0
- package/dist/structure/export.js +727 -0
- package/dist/structure/index.d.ts +126 -0
- package/dist/structure/index.js +169 -0
- package/dist/structure/label-placement.d.ts +14 -0
- package/dist/structure/label-placement.js +72 -0
- package/dist/structure/measure.d.ts +6 -0
- package/dist/structure/measure.js +29 -0
- package/dist/structure/parse.d.ts +66 -0
- package/dist/structure/parse.js +1392 -0
- package/dist/structure/partial-occupancy.d.ts +25 -0
- package/dist/structure/partial-occupancy.js +99 -0
- package/dist/structure/pbc.d.ts +9 -0
- package/dist/structure/pbc.js +123 -0
- package/dist/structure/supercell.d.ts +8 -0
- package/dist/structure/supercell.js +170 -0
- package/dist/structure/validation.d.ts +2 -0
- package/dist/structure/validation.js +10 -0
- package/dist/symmetry/SymmetryStats.svelte +226 -0
- package/dist/symmetry/SymmetryStats.svelte.d.ts +21 -0
- package/dist/symmetry/WyckoffTable.svelte +120 -0
- package/dist/symmetry/WyckoffTable.svelte.d.ts +11 -0
- package/dist/symmetry/cell-transform.d.ts +12 -0
- package/dist/symmetry/cell-transform.js +91 -0
- package/dist/symmetry/index.d.ts +43 -0
- package/dist/symmetry/index.js +228 -0
- package/dist/symmetry/spacegroups.d.ts +9 -0
- package/dist/symmetry/spacegroups.js +394 -0
- package/dist/table/HeatmapTable.svelte +1833 -0
- package/dist/table/HeatmapTable.svelte.d.ts +49 -0
- package/dist/table/ToggleMenu.svelte +385 -0
- package/dist/table/ToggleMenu.svelte.d.ts +11 -0
- package/dist/table/index.d.ts +74 -0
- package/dist/table/index.js +38 -0
- package/dist/theme/ThemeControl.svelte +53 -0
- package/dist/theme/ThemeControl.svelte.d.ts +9 -0
- package/dist/theme/index.d.ts +29 -0
- package/dist/theme/index.js +79 -0
- package/dist/time.d.ts +4 -0
- package/dist/time.js +70 -0
- package/dist/tooltip/TooltipContent.svelte +58 -0
- package/dist/tooltip/TooltipContent.svelte.d.ts +31 -0
- package/dist/tooltip/index.d.ts +2 -0
- package/dist/tooltip/index.js +1 -0
- package/dist/tooltip/types.d.ts +8 -0
- package/dist/tooltip/types.js +1 -0
- package/dist/trajectory/Trajectory.svelte +1545 -0
- package/dist/trajectory/Trajectory.svelte.d.ts +77 -0
- package/dist/trajectory/TrajectoryError.svelte +128 -0
- package/dist/trajectory/TrajectoryError.svelte.d.ts +13 -0
- package/dist/trajectory/TrajectoryExportPane.svelte +357 -0
- package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +17 -0
- package/dist/trajectory/TrajectoryInfoPane.svelte +313 -0
- package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +17 -0
- package/dist/trajectory/constants.d.ts +6 -0
- package/dist/trajectory/constants.js +7 -0
- package/dist/trajectory/extract.d.ts +5 -0
- package/dist/trajectory/extract.js +162 -0
- package/dist/trajectory/format-detect.d.ts +9 -0
- package/dist/trajectory/format-detect.js +76 -0
- package/dist/trajectory/frame-reader.d.ts +17 -0
- package/dist/trajectory/frame-reader.js +332 -0
- package/dist/trajectory/helpers.d.ts +15 -0
- package/dist/trajectory/helpers.js +164 -0
- package/dist/trajectory/index.d.ts +63 -0
- package/dist/trajectory/index.js +126 -0
- package/dist/trajectory/parse/ase.d.ts +2 -0
- package/dist/trajectory/parse/ase.js +73 -0
- package/dist/trajectory/parse/hdf5.d.ts +2 -0
- package/dist/trajectory/parse/hdf5.js +127 -0
- package/dist/trajectory/parse/index.d.ts +12 -0
- package/dist/trajectory/parse/index.js +298 -0
- package/dist/trajectory/parse/lammps.d.ts +5 -0
- package/dist/trajectory/parse/lammps.js +179 -0
- package/dist/trajectory/parse/vasp.d.ts +2 -0
- package/dist/trajectory/parse/vasp.js +68 -0
- package/dist/trajectory/parse/xyz.d.ts +2 -0
- package/dist/trajectory/parse/xyz.js +110 -0
- package/dist/trajectory/plotting.d.ts +28 -0
- package/dist/trajectory/plotting.js +423 -0
- package/dist/trajectory/types.d.ts +11 -0
- package/dist/trajectory/types.js +1 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.js +45 -0
- package/dist/xrd/XrdPlot.svelte +615 -0
- package/dist/xrd/XrdPlot.svelte.d.ts +28 -0
- package/dist/xrd/broadening.d.ts +20 -0
- package/dist/xrd/broadening.js +97 -0
- package/dist/xrd/calc-xrd.d.ts +37 -0
- package/dist/xrd/calc-xrd.js +336 -0
- package/dist/xrd/index.d.ts +37 -0
- package/dist/xrd/index.js +4 -0
- package/dist/xrd/parse.d.ts +13 -0
- package/dist/xrd/parse.js +749 -0
- package/license +1 -1
- package/package.json +232 -1457
- package/readme.md +98 -171
- package/.vscode/launch.json +0 -13
- package/.vscodeignore +0 -7
- package/dist/assets/STLExporter-BpTH3YHE.js +0 -8
- package/dist/assets/browser-DdDecX_W.js +0 -1
- package/dist/assets/export-qgn-H9y6.js +0 -2
- package/dist/assets/main-DiKYzti2.css +0 -1
- package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
- package/dist/extension.js +0 -31293
- package/dist/src/lib/FilePicker.svelte +0 -360
- package/dist/src/lib/MillerIndexInput.svelte +0 -66
- package/dist/src/lib/api/mp.ts +0 -26
- package/dist/src/lib/api/optimade.ts +0 -204
- package/dist/src/lib/brillouin/BrillouinZone.svelte +0 -549
- package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +0 -144
- package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +0 -146
- package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +0 -146
- package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +0 -476
- package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +0 -92
- package/dist/src/lib/brillouin/compute.ts +0 -529
- package/dist/src/lib/brillouin/index.ts +0 -8
- package/dist/src/lib/brillouin/types.ts +0 -51
- package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +0 -327
- package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +0 -846
- package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +0 -3193
- package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +0 -94
- package/dist/src/lib/chempot-diagram/chempot-worker.ts +0 -11
- package/dist/src/lib/chempot-diagram/color.ts +0 -42
- package/dist/src/lib/chempot-diagram/compute.ts +0 -1014
- package/dist/src/lib/chempot-diagram/index.ts +0 -6
- package/dist/src/lib/chempot-diagram/pointer.ts +0 -56
- package/dist/src/lib/chempot-diagram/temperature.ts +0 -77
- package/dist/src/lib/chempot-diagram/types.ts +0 -130
- package/dist/src/lib/colors/index.ts +0 -249
- package/dist/src/lib/composition/BarChart.svelte +0 -297
- package/dist/src/lib/composition/BubbleChart.svelte +0 -218
- package/dist/src/lib/composition/Composition.svelte +0 -165
- package/dist/src/lib/composition/Formula.svelte +0 -268
- package/dist/src/lib/composition/FormulaFilter.svelte +0 -1257
- package/dist/src/lib/composition/PieChart.svelte +0 -323
- package/dist/src/lib/composition/format.ts +0 -155
- package/dist/src/lib/composition/index.ts +0 -37
- package/dist/src/lib/composition/parse.ts +0 -605
- package/dist/src/lib/constants.ts +0 -134
- package/dist/src/lib/controls.ts +0 -42
- package/dist/src/lib/convex-hull/ConvexHull.svelte +0 -157
- package/dist/src/lib/convex-hull/ConvexHull2D.svelte +0 -825
- package/dist/src/lib/convex-hull/ConvexHull3D.svelte +0 -1801
- package/dist/src/lib/convex-hull/ConvexHull4D.svelte +0 -1398
- package/dist/src/lib/convex-hull/ConvexHullControls.svelte +0 -535
- package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +0 -125
- package/dist/src/lib/convex-hull/ConvexHullStats.svelte +0 -929
- package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +0 -131
- package/dist/src/lib/convex-hull/GasPressureControls.svelte +0 -247
- package/dist/src/lib/convex-hull/StructurePopup.svelte +0 -151
- package/dist/src/lib/convex-hull/barycentric-coords.ts +0 -246
- package/dist/src/lib/convex-hull/demo-temperature.ts +0 -63
- package/dist/src/lib/convex-hull/gas-thermodynamics.ts +0 -405
- package/dist/src/lib/convex-hull/helpers.ts +0 -932
- package/dist/src/lib/convex-hull/index.ts +0 -202
- package/dist/src/lib/convex-hull/thermodynamics.ts +0 -2192
- package/dist/src/lib/convex-hull/types.ts +0 -267
- package/dist/src/lib/coordination/CoordinationBarPlot.svelte +0 -311
- package/dist/src/lib/coordination/calc-coordination.ts +0 -93
- package/dist/src/lib/coordination/index.ts +0 -9
- package/dist/src/lib/effects.svelte.ts +0 -48
- package/dist/src/lib/element/ElementHeading.svelte +0 -26
- package/dist/src/lib/element/ElementPhoto.svelte +0 -57
- package/dist/src/lib/element/ElementStats.svelte +0 -80
- package/dist/src/lib/element/ElementTile.svelte +0 -484
- package/dist/src/lib/element/data.ts +0 -14
- package/dist/src/lib/element/index.ts +0 -8
- package/dist/src/lib/element/types.ts +0 -62
- package/dist/src/lib/feedback/ClickFeedback.svelte +0 -58
- package/dist/src/lib/feedback/DragOverlay.svelte +0 -42
- package/dist/src/lib/feedback/index.ts +0 -4
- package/dist/src/lib/fermi-surface/FermiSlice.svelte +0 -189
- package/dist/src/lib/fermi-surface/FermiSurface.svelte +0 -600
- package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +0 -448
- package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +0 -794
- package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
- package/dist/src/lib/fermi-surface/compute.ts +0 -728
- package/dist/src/lib/fermi-surface/constants.ts +0 -32
- package/dist/src/lib/fermi-surface/export.ts +0 -64
- package/dist/src/lib/fermi-surface/index.ts +0 -14
- package/dist/src/lib/fermi-surface/marching-cubes.ts +0 -3
- package/dist/src/lib/fermi-surface/parse.ts +0 -574
- package/dist/src/lib/fermi-surface/symmetry.ts +0 -56
- package/dist/src/lib/fermi-surface/types.ts +0 -159
- package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +0 -1545
- package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
- package/dist/src/lib/heatmap-matrix/index.ts +0 -167
- package/dist/src/lib/heatmap-matrix/shared.ts +0 -7
- package/dist/src/lib/icons.ts +0 -650
- package/dist/src/lib/index.ts +0 -61
- package/dist/src/lib/io/decompress.ts +0 -92
- package/dist/src/lib/io/export.ts +0 -385
- package/dist/src/lib/io/fetch.ts +0 -46
- package/dist/src/lib/io/file-drop.ts +0 -51
- package/dist/src/lib/io/index.ts +0 -7
- package/dist/src/lib/io/is-binary.ts +0 -24
- package/dist/src/lib/io/types.ts +0 -8
- package/dist/src/lib/io/url-drop.ts +0 -141
- package/dist/src/lib/isosurface/Isosurface.svelte +0 -285
- package/dist/src/lib/isosurface/IsosurfaceControls.svelte +0 -277
- package/dist/src/lib/isosurface/index.ts +0 -7
- package/dist/src/lib/isosurface/parse.ts +0 -656
- package/dist/src/lib/isosurface/slice.ts +0 -175
- package/dist/src/lib/isosurface/types.ts +0 -309
- package/dist/src/lib/labels.ts +0 -320
- package/dist/src/lib/layout/FullscreenToggle.svelte +0 -50
- package/dist/src/lib/layout/InfoCard.svelte +0 -120
- package/dist/src/lib/layout/InfoTag.svelte +0 -185
- package/dist/src/lib/layout/PropertyFilter.svelte +0 -246
- package/dist/src/lib/layout/SettingsSection.svelte +0 -148
- package/dist/src/lib/layout/SubpageGrid.svelte +0 -82
- package/dist/src/lib/layout/fullscreen.ts +0 -65
- package/dist/src/lib/layout/index.ts +0 -11
- package/dist/src/lib/layout/json-tree/JsonNode.svelte +0 -548
- package/dist/src/lib/layout/json-tree/JsonTree.svelte +0 -1230
- package/dist/src/lib/layout/json-tree/index.ts +0 -3
- package/dist/src/lib/layout/json-tree/types.ts +0 -126
- package/dist/src/lib/layout/json-tree/utils.ts +0 -682
- package/dist/src/lib/marching-cubes.ts +0 -614
- package/dist/src/lib/math.ts +0 -1081
- package/dist/src/lib/overlays/ContextMenu.svelte +0 -162
- package/dist/src/lib/overlays/CopyButton.svelte +0 -45
- package/dist/src/lib/overlays/DragControlTab.svelte +0 -98
- package/dist/src/lib/overlays/DraggablePane.svelte +0 -487
- package/dist/src/lib/overlays/InfoPaneCards.svelte +0 -149
- package/dist/src/lib/overlays/index.ts +0 -3
- package/dist/src/lib/periodic-table/PeriodicTable.svelte +0 -469
- package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +0 -557
- package/dist/src/lib/periodic-table/PropertySelect.svelte +0 -37
- package/dist/src/lib/periodic-table/index.ts +0 -12
- package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
- package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +0 -444
- package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
- package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +0 -184
- package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +0 -391
- package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +0 -203
- package/dist/src/lib/phase-diagram/build-diagram.ts +0 -186
- package/dist/src/lib/phase-diagram/colors.ts +0 -58
- package/dist/src/lib/phase-diagram/diagram-input.ts +0 -40
- package/dist/src/lib/phase-diagram/index.ts +0 -13
- package/dist/src/lib/phase-diagram/parse.ts +0 -348
- package/dist/src/lib/phase-diagram/svg-to-diagram.ts +0 -1023
- package/dist/src/lib/phase-diagram/types.ts +0 -144
- package/dist/src/lib/phase-diagram/utils.ts +0 -775
- package/dist/src/lib/plot/AxisLabel.svelte +0 -51
- package/dist/src/lib/plot/BarPlot.svelte +0 -2113
- package/dist/src/lib/plot/BarPlotControls.svelte +0 -66
- package/dist/src/lib/plot/BinnedScatterPlot.svelte +0 -1114
- package/dist/src/lib/plot/ColorBar.svelte +0 -721
- package/dist/src/lib/plot/ColorScaleSelect.svelte +0 -54
- package/dist/src/lib/plot/ElementScatter.svelte +0 -63
- package/dist/src/lib/plot/Histogram.svelte +0 -1558
- package/dist/src/lib/plot/HistogramControls.svelte +0 -212
- package/dist/src/lib/plot/InteractiveAxisLabel.svelte +0 -96
- package/dist/src/lib/plot/Line.svelte +0 -84
- package/dist/src/lib/plot/PlotAxis.svelte +0 -169
- package/dist/src/lib/plot/PlotControls.svelte +0 -537
- package/dist/src/lib/plot/PlotLegend.svelte +0 -569
- package/dist/src/lib/plot/PlotTooltip.svelte +0 -67
- package/dist/src/lib/plot/PortalSelect.svelte +0 -253
- package/dist/src/lib/plot/ReferenceLine3D.svelte +0 -156
- package/dist/src/lib/plot/ReferencePlane.svelte +0 -175
- package/dist/src/lib/plot/ScatterPlot.svelte +0 -2778
- package/dist/src/lib/plot/ScatterPlot3D.svelte +0 -529
- package/dist/src/lib/plot/ScatterPlot3DControls.svelte +0 -437
- package/dist/src/lib/plot/ScatterPlot3DScene.svelte +0 -912
- package/dist/src/lib/plot/ScatterPlotControls.svelte +0 -306
- package/dist/src/lib/plot/ScatterPoint.svelte +0 -182
- package/dist/src/lib/plot/SpacegroupBarPlot.svelte +0 -293
- package/dist/src/lib/plot/Surface3D.svelte +0 -197
- package/dist/src/lib/plot/ZeroLines.svelte +0 -97
- package/dist/src/lib/plot/ZoomRect.svelte +0 -23
- package/dist/src/lib/plot/adaptive-density.ts +0 -316
- package/dist/src/lib/plot/auto-place.ts +0 -184
- package/dist/src/lib/plot/axis-utils.ts +0 -122
- package/dist/src/lib/plot/binned-scatter-types.ts +0 -83
- package/dist/src/lib/plot/data-cleaning.ts +0 -1069
- package/dist/src/lib/plot/data-transform.ts +0 -69
- package/dist/src/lib/plot/defaults.ts +0 -9
- package/dist/src/lib/plot/fill-utils.ts +0 -494
- package/dist/src/lib/plot/hover-lock.svelte.ts +0 -60
- package/dist/src/lib/plot/index.ts +0 -53
- package/dist/src/lib/plot/interactions.ts +0 -119
- package/dist/src/lib/plot/layout.ts +0 -425
- package/dist/src/lib/plot/reference-line.ts +0 -426
- package/dist/src/lib/plot/scales.ts +0 -654
- package/dist/src/lib/plot/svg.ts +0 -23
- package/dist/src/lib/plot/types.ts +0 -1144
- package/dist/src/lib/plot/utils/label-placement.ts +0 -541
- package/dist/src/lib/plot/utils/series-visibility.ts +0 -140
- package/dist/src/lib/plot/utils.ts +0 -11
- package/dist/src/lib/rdf/RdfPlot.svelte +0 -247
- package/dist/src/lib/rdf/calc-rdf.ts +0 -167
- package/dist/src/lib/rdf/index.ts +0 -27
- package/dist/src/lib/sanitize.ts +0 -126
- package/dist/src/lib/settings.ts +0 -1479
- package/dist/src/lib/spectral/Bands.svelte +0 -1040
- package/dist/src/lib/spectral/BandsAndDos.svelte +0 -134
- package/dist/src/lib/spectral/BrillouinBandsDos.svelte +0 -252
- package/dist/src/lib/spectral/Dos.svelte +0 -697
- package/dist/src/lib/spectral/helpers.ts +0 -1381
- package/dist/src/lib/spectral/index.ts +0 -8
- package/dist/src/lib/spectral/types.ts +0 -112
- package/dist/src/lib/state.svelte.ts +0 -64
- package/dist/src/lib/structure/Arrow.svelte +0 -72
- package/dist/src/lib/structure/AtomLegend.svelte +0 -815
- package/dist/src/lib/structure/Bond.svelte +0 -140
- package/dist/src/lib/structure/CanvasTooltip.svelte +0 -33
- package/dist/src/lib/structure/CellSelect.svelte +0 -349
- package/dist/src/lib/structure/Cylinder.svelte +0 -45
- package/dist/src/lib/structure/Lattice.svelte +0 -196
- package/dist/src/lib/structure/Structure.svelte +0 -2248
- package/dist/src/lib/structure/StructureControls.svelte +0 -1273
- package/dist/src/lib/structure/StructureExportPane.svelte +0 -252
- package/dist/src/lib/structure/StructureInfoPane.svelte +0 -737
- package/dist/src/lib/structure/StructureScene.svelte +0 -2255
- package/dist/src/lib/structure/atom-properties.ts +0 -316
- package/dist/src/lib/structure/bond-order-perception.ts +0 -447
- package/dist/src/lib/structure/bonding.ts +0 -944
- package/dist/src/lib/structure/export.ts +0 -861
- package/dist/src/lib/structure/index.ts +0 -291
- package/dist/src/lib/structure/label-placement.ts +0 -130
- package/dist/src/lib/structure/measure.ts +0 -45
- package/dist/src/lib/structure/parse.ts +0 -1705
- package/dist/src/lib/structure/partial-occupancy.ts +0 -183
- package/dist/src/lib/structure/pbc.ts +0 -164
- package/dist/src/lib/structure/supercell.ts +0 -226
- package/dist/src/lib/structure/validation.ts +0 -11
- package/dist/src/lib/symmetry/SymmetryStats.svelte +0 -226
- package/dist/src/lib/symmetry/WyckoffTable.svelte +0 -120
- package/dist/src/lib/symmetry/cell-transform.ts +0 -118
- package/dist/src/lib/symmetry/index.ts +0 -348
- package/dist/src/lib/symmetry/spacegroups.ts +0 -404
- package/dist/src/lib/table/HeatmapTable.svelte +0 -1833
- package/dist/src/lib/table/ToggleMenu.svelte +0 -385
- package/dist/src/lib/table/index.ts +0 -139
- package/dist/src/lib/theme/ThemeControl.svelte +0 -53
- package/dist/src/lib/theme/index.ts +0 -107
- package/dist/src/lib/time.ts +0 -71
- package/dist/src/lib/tooltip/TooltipContent.svelte +0 -58
- package/dist/src/lib/tooltip/index.ts +0 -2
- package/dist/src/lib/tooltip/types.ts +0 -13
- package/dist/src/lib/trajectory/Trajectory.svelte +0 -1545
- package/dist/src/lib/trajectory/TrajectoryError.svelte +0 -128
- package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +0 -357
- package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +0 -313
- package/dist/src/lib/trajectory/constants.ts +0 -7
- package/dist/src/lib/trajectory/extract.ts +0 -196
- package/dist/src/lib/trajectory/format-detect.ts +0 -96
- package/dist/src/lib/trajectory/frame-reader.ts +0 -456
- package/dist/src/lib/trajectory/helpers.ts +0 -217
- package/dist/src/lib/trajectory/index.ts +0 -218
- package/dist/src/lib/trajectory/parse/ase.ts +0 -109
- package/dist/src/lib/trajectory/parse/hdf5.ts +0 -173
- package/dist/src/lib/trajectory/parse/index.ts +0 -411
- package/dist/src/lib/trajectory/parse/lammps.ts +0 -215
- package/dist/src/lib/trajectory/parse/vasp.ts +0 -102
- package/dist/src/lib/trajectory/parse/xyz.ts +0 -143
- package/dist/src/lib/trajectory/plotting.ts +0 -599
- package/dist/src/lib/trajectory/types.ts +0 -13
- package/dist/src/lib/utils.ts +0 -56
- package/dist/src/lib/xrd/XrdPlot.svelte +0 -615
- package/dist/src/lib/xrd/broadening.ts +0 -130
- package/dist/src/lib/xrd/calc-xrd.ts +0 -397
- package/dist/src/lib/xrd/index.ts +0 -38
- package/dist/src/lib/xrd/parse.ts +0 -858
- package/dist/webview.js +0 -29421
- package/icon.png +0 -0
- 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/scripts/sync-config.ts +0 -101
- package/src/declarations.d.ts +0 -2
- package/src/extension.ts +0 -972
- package/src/node-io.ts +0 -65
- package/src/types.ts +0 -17
- package/src/webview/JsonBrowser.svelte +0 -1079
- package/src/webview/PlotPanel.svelte +0 -346
- package/src/webview/detect.ts +0 -444
- package/src/webview/main.ts +0 -764
- package/src/webview/plot-utils.ts +0 -250
- 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 +0 -604
- package/tests/extension.test.ts +0 -2041
- package/tests/node-io.test.ts +0 -39
- package/tests/plot-utils.test.ts +0 -302
- package/tests/vite-plugin-json-gz.test.ts +0 -114
- package/tests/vscode-mock.ts +0 -18
- package/tests/webview.test.ts +0 -231
- package/tsconfig.json +0 -20
- package/vite-plugin-json-gz.ts +0 -29
- package/vite.config.ts +0 -34
- package/vite.extension.config.ts +0 -34
- /package/dist/{src/lib/EmptyState.svelte → EmptyState.svelte} +0 -0
- /package/dist/{src/lib/Icon.svelte → Icon.svelte} +0 -0
- /package/dist/{src/lib/app.css → app.css} +0 -0
- /package/dist/{src/lib/chempot-diagram → chempot-diagram}/ChemPotScene3D.svelte +0 -0
- /package/dist/{src/lib/colors → colors}/alloy-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/dark-mode-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/jmol-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/muted-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/pastel-colors.json +0 -0
- /package/dist/{src/lib/colors → colors}/vesta-colors.json +0 -0
- /package/dist/{src/lib/convex-hull → convex-hull}/TemperatureSlider.svelte +0 -0
- /package/dist/{src/lib/element → element}/BohrAtom.svelte +0 -0
- /package/dist/{src/lib/element → element}/Nucleus.svelte +0 -0
- /package/dist/{src/lib/element → element}/data.json +0 -0
- /package/dist/{src/lib/element → element}/data.json.gz +0 -0
- /package/dist/{src/lib/element → element}/data.json.gz.d.ts +0 -0
- /package/dist/{src/lib/element → element}/data.schema.json +0 -0
- /package/dist/{src/lib/element-image-urls.json → element-image-urls.json} +0 -0
- /package/dist/{src/lib/feedback → feedback}/Spinner.svelte +0 -0
- /package/dist/{src/lib/feedback → feedback}/StatusMessage.svelte +0 -0
- /package/dist/{src/lib/layout → layout}/json-tree/JsonValue.svelte +0 -0
- /package/dist/{src/lib/periodic-table → periodic-table}/TableInset.svelte +0 -0
- /package/dist/{src/lib/plot → plot}/FillArea.svelte +0 -0
- /package/dist/{src/lib/plot → plot}/ReferenceLine.svelte +0 -0
- /package/dist/{src/lib/theme → theme}/themes.mjs +0 -0
- /package/dist/{src/lib/xrd → xrd}/atomic_scattering_params.json +0 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export * from './brillouin';
|
|
2
|
+
export * from './chempot-diagram';
|
|
3
|
+
export * from './colors';
|
|
4
|
+
export * from './composition';
|
|
5
|
+
export * from './constants';
|
|
6
|
+
export * from './controls';
|
|
7
|
+
export * from './convex-hull';
|
|
8
|
+
export * from './coordination';
|
|
9
|
+
export * from './element';
|
|
10
|
+
export { default as EmptyState } from './EmptyState.svelte';
|
|
11
|
+
export * from './feedback';
|
|
12
|
+
export * from './fermi-surface';
|
|
13
|
+
export { default as FilePicker } from './FilePicker.svelte';
|
|
14
|
+
export * from './heatmap-matrix';
|
|
15
|
+
export { default as Icon } from './Icon.svelte';
|
|
16
|
+
export * from './icons';
|
|
17
|
+
export * from './io';
|
|
18
|
+
export { default as MillerIndexInput } from './MillerIndexInput.svelte';
|
|
19
|
+
export { auto_isosurface_settings, DEFAULT_ISOSURFACE_SETTINGS, generate_layers, grid_data_range, Isosurface as VolumetricIsosurface, IsosurfaceControls, LAYER_COLORS, parse_chgcar, parse_cube, parse_volumetric_file, sample_hkl_slice, tile_volumetric_data, trilinear_interpolate, } from './isosurface';
|
|
20
|
+
export type { DataRange, IsosurfaceLayer, IsosurfaceSettings, SliceResult, VolumetricData, VolumetricFileData, } from './isosurface';
|
|
21
|
+
export * from './labels';
|
|
22
|
+
export * from './layout';
|
|
23
|
+
export * from './math';
|
|
24
|
+
export * from './overlays';
|
|
25
|
+
export * from './periodic-table';
|
|
26
|
+
export * from './phase-diagram';
|
|
27
|
+
export * from './plot';
|
|
28
|
+
export * from './rdf';
|
|
29
|
+
export * from './sanitize';
|
|
30
|
+
export * from './settings';
|
|
31
|
+
export * from './spectral';
|
|
32
|
+
export * from './structure';
|
|
33
|
+
export * from './symmetry';
|
|
34
|
+
export * from './table';
|
|
35
|
+
export * from './theme';
|
|
36
|
+
export * from './time';
|
|
37
|
+
export { default as Trajectory } from './trajectory/Trajectory.svelte';
|
|
38
|
+
export * from './utils';
|
|
39
|
+
export * from './xrd';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export * from './brillouin';
|
|
2
|
+
export * from './chempot-diagram';
|
|
3
|
+
export * from './colors';
|
|
4
|
+
export * from './composition';
|
|
5
|
+
export * from './constants';
|
|
6
|
+
export * from './controls';
|
|
7
|
+
export * from './convex-hull';
|
|
8
|
+
export * from './coordination';
|
|
9
|
+
export * from './element';
|
|
10
|
+
export { default as EmptyState } from './EmptyState.svelte';
|
|
11
|
+
export * from './feedback';
|
|
12
|
+
export * from './fermi-surface';
|
|
13
|
+
export { default as FilePicker } from './FilePicker.svelte';
|
|
14
|
+
export * from './heatmap-matrix';
|
|
15
|
+
export { default as Icon } from './Icon.svelte';
|
|
16
|
+
export * from './icons';
|
|
17
|
+
export * from './io';
|
|
18
|
+
export { default as MillerIndexInput } from './MillerIndexInput.svelte';
|
|
19
|
+
// Explicit exports to avoid name clash with fermi-surface's Isosurface type
|
|
20
|
+
export { auto_isosurface_settings, DEFAULT_ISOSURFACE_SETTINGS, generate_layers, grid_data_range, Isosurface as VolumetricIsosurface, IsosurfaceControls, LAYER_COLORS, parse_chgcar, parse_cube, parse_volumetric_file, sample_hkl_slice, tile_volumetric_data, trilinear_interpolate, } from './isosurface';
|
|
21
|
+
export * from './labels';
|
|
22
|
+
export * from './layout';
|
|
23
|
+
export * from './math';
|
|
24
|
+
export * from './overlays';
|
|
25
|
+
export * from './periodic-table';
|
|
26
|
+
export * from './phase-diagram';
|
|
27
|
+
export * from './plot';
|
|
28
|
+
export * from './rdf';
|
|
29
|
+
export * from './sanitize';
|
|
30
|
+
export * from './settings';
|
|
31
|
+
export * from './spectral';
|
|
32
|
+
export * from './structure';
|
|
33
|
+
export * from './symmetry';
|
|
34
|
+
export * from './table';
|
|
35
|
+
export * from './theme';
|
|
36
|
+
export * from './time';
|
|
37
|
+
export { default as Trajectory } from './trajectory/Trajectory.svelte';
|
|
38
|
+
export * from './utils';
|
|
39
|
+
export * from './xrd';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { COMPRESSION_EXTENSIONS } from '../constants';
|
|
2
|
+
import { COMPRESSION_FORMATS } from '../constants';
|
|
3
|
+
export type CompressionFormat = keyof typeof COMPRESSION_FORMATS;
|
|
4
|
+
export type CompressionExtension = (typeof COMPRESSION_EXTENSIONS)[number];
|
|
5
|
+
export declare function detect_compression_format(filename: string): CompressionFormat | null;
|
|
6
|
+
export declare function decompress_data(data: ArrayBuffer | ReadableStream<Uint8Array> | null, format: CompressionFormat): Promise<string>;
|
|
7
|
+
export declare function decompress_data_binary(data: ArrayBuffer | ReadableStream<Uint8Array> | null, format: CompressionFormat): Promise<ArrayBuffer>;
|
|
8
|
+
export declare function decompress_file(file: File): Promise<{
|
|
9
|
+
content: string;
|
|
10
|
+
filename: string;
|
|
11
|
+
}>;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { COMPRESSION_EXTENSIONS_REGEX, COMPRESSION_FORMATS } from '../constants';
|
|
2
|
+
export function detect_compression_format(filename) {
|
|
3
|
+
const lower = filename.toLowerCase();
|
|
4
|
+
for (const [format, extensions] of Object.entries(COMPRESSION_FORMATS)) {
|
|
5
|
+
if (extensions.some((ext) => lower.endsWith(ext)))
|
|
6
|
+
return format;
|
|
7
|
+
}
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
// Decompress data and return as text string
|
|
11
|
+
export async function decompress_data(data, format) {
|
|
12
|
+
const buffer = await decompress_data_binary(data, format);
|
|
13
|
+
return new TextDecoder().decode(buffer);
|
|
14
|
+
}
|
|
15
|
+
// Decompress data and return as ArrayBuffer (for binary files like .brml.gz)
|
|
16
|
+
export async function decompress_data_binary(data, format) {
|
|
17
|
+
try {
|
|
18
|
+
// Handle unsupported formats
|
|
19
|
+
if (format === `zip` || format === `xz` || format === `bz2`) {
|
|
20
|
+
throw new Error(`${format.toUpperCase()} decompression is not supported in the browser. ` +
|
|
21
|
+
`Please extract the ${format.toUpperCase()} file first.`);
|
|
22
|
+
}
|
|
23
|
+
const stream = data instanceof ArrayBuffer
|
|
24
|
+
? new ReadableStream({
|
|
25
|
+
start(controller) {
|
|
26
|
+
controller.enqueue(new Uint8Array(data));
|
|
27
|
+
controller.close();
|
|
28
|
+
},
|
|
29
|
+
})
|
|
30
|
+
: data;
|
|
31
|
+
if (!stream)
|
|
32
|
+
throw new Error(`Invalid data stream`);
|
|
33
|
+
const unzip = new DecompressionStream(format);
|
|
34
|
+
return await new Response(stream.pipeThrough(unzip)).arrayBuffer();
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
throw new Error(`Failed to decompress ${format} file: ${error}`, { cause: error });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function decompress_file(file) {
|
|
41
|
+
const format = detect_compression_format(file.name);
|
|
42
|
+
const is_supported = Boolean(format && ![`zip`, `xz`, `bz2`].includes(format));
|
|
43
|
+
return new Promise((resolve, reject) => {
|
|
44
|
+
const reader = new FileReader();
|
|
45
|
+
reader.addEventListener(`load`, () => {
|
|
46
|
+
try {
|
|
47
|
+
const result = reader.result;
|
|
48
|
+
if (!result)
|
|
49
|
+
throw new Error(`Failed to read file`);
|
|
50
|
+
if (is_supported && format) {
|
|
51
|
+
if (!(result instanceof ArrayBuffer))
|
|
52
|
+
throw new Error(`Expected binary file data`);
|
|
53
|
+
decompress_data(result, format).then((content) => {
|
|
54
|
+
const filename = file.name.replace(COMPRESSION_EXTENSIONS_REGEX, ``);
|
|
55
|
+
resolve({ content, filename });
|
|
56
|
+
}, reject);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
if (typeof result !== `string`)
|
|
60
|
+
throw new Error(`Expected text file data`);
|
|
61
|
+
resolve({ content: result, filename: file.name });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
reject(error);
|
|
66
|
+
}
|
|
67
|
+
}, { once: true });
|
|
68
|
+
reader.addEventListener(`error`, () => reject(new Error(`Failed to read file ${file.name}`)));
|
|
69
|
+
if (is_supported)
|
|
70
|
+
reader.readAsArrayBuffer(file);
|
|
71
|
+
else
|
|
72
|
+
reader.readAsText(file);
|
|
73
|
+
});
|
|
74
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AnyStructure } from '../structure';
|
|
2
|
+
import { type Camera, type Scene } from 'three';
|
|
3
|
+
export declare function canvas_to_png_blob(canvas: HTMLCanvasElement, png_dpi?: number, scene?: Scene | null, camera?: Camera | null): Promise<Blob>;
|
|
4
|
+
export declare function export_canvas_as_png(canvas: HTMLCanvasElement | null, structure_or_filename: AnyStructure | string | undefined, png_dpi?: number, scene?: Scene | null, camera?: Camera | null): void;
|
|
5
|
+
export declare function svg_to_svg_string(svg_element: SVGElement): string;
|
|
6
|
+
export declare function export_svg_as_svg(svg_element: SVGElement | null, filename: string): void;
|
|
7
|
+
export declare function svg_to_png_blob(svg_element: SVGElement, png_dpi?: number): Promise<Blob>;
|
|
8
|
+
export declare function export_svg_as_png(svg_element: SVGElement | null, filename: string, png_dpi?: number): void;
|
|
9
|
+
export declare function get_ffmpeg_conversion_command(input_filename: string): string;
|
|
10
|
+
export declare function export_trajectory_video(canvas: HTMLCanvasElement | null, filename: string, options?: {
|
|
11
|
+
fps?: number;
|
|
12
|
+
total_frames?: number;
|
|
13
|
+
on_progress?: (progress: number) => void;
|
|
14
|
+
on_step?: (step_idx: number) => void | Promise<void>;
|
|
15
|
+
resolution_multiplier?: number;
|
|
16
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
import { download } from './fetch';
|
|
2
|
+
import { create_structure_filename } from '../structure/export';
|
|
3
|
+
import { Vector2 } from 'three';
|
|
4
|
+
function is_webgl_renderer_like(value) {
|
|
5
|
+
if (typeof value !== `object` || !value)
|
|
6
|
+
return false;
|
|
7
|
+
const renderer_obj = value;
|
|
8
|
+
return (typeof renderer_obj.render === `function` &&
|
|
9
|
+
typeof renderer_obj.getPixelRatio === `function` &&
|
|
10
|
+
typeof renderer_obj.setPixelRatio === `function` &&
|
|
11
|
+
typeof renderer_obj.getSize === `function` &&
|
|
12
|
+
typeof renderer_obj.setSize === `function`);
|
|
13
|
+
}
|
|
14
|
+
function get_canvas_renderer(canvas) {
|
|
15
|
+
const renderer_val = canvas[`__renderer`];
|
|
16
|
+
return is_webgl_renderer_like(renderer_val) ? renderer_val : undefined;
|
|
17
|
+
}
|
|
18
|
+
// Capture a WebGL canvas as a PNG Blob at the given DPI.
|
|
19
|
+
// Temporarily adjusts renderer pixel ratio for high-res capture, then restores.
|
|
20
|
+
// Returns data directly (no browser download), suitable for programmatic capture
|
|
21
|
+
// in test suites, server-side rendering, or Python widget integration via anywidget.
|
|
22
|
+
// DPI is converted to a resolution multiplier relative to 72 DPI baseline, capped at 10x.
|
|
23
|
+
export function canvas_to_png_blob(canvas, png_dpi = 150, scene = null, camera = null) {
|
|
24
|
+
const resolution_multiplier = Math.min(png_dpi / 72, 10);
|
|
25
|
+
const renderer = get_canvas_renderer(canvas);
|
|
26
|
+
if (resolution_multiplier <= 1.1 || !renderer) {
|
|
27
|
+
if (renderer && scene && camera)
|
|
28
|
+
renderer.render(scene, camera);
|
|
29
|
+
return new Promise((resolve, reject) => {
|
|
30
|
+
try {
|
|
31
|
+
canvas.toBlob((blob) => {
|
|
32
|
+
if (blob)
|
|
33
|
+
resolve(blob);
|
|
34
|
+
else
|
|
35
|
+
reject(new Error(`Failed to generate PNG - canvas may be empty`));
|
|
36
|
+
}, `image/png`);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
reject(error);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
// Temporarily modify the renderer's pixel ratio for high-res capture
|
|
44
|
+
const orig_pixel_ratio = renderer.getPixelRatio();
|
|
45
|
+
const orig_size = renderer.getSize(new Vector2());
|
|
46
|
+
const restore = () => {
|
|
47
|
+
renderer.setPixelRatio(orig_pixel_ratio);
|
|
48
|
+
renderer.setSize(orig_size.width, orig_size.height, false);
|
|
49
|
+
};
|
|
50
|
+
renderer.setPixelRatio(resolution_multiplier);
|
|
51
|
+
renderer.setSize(orig_size.width, orig_size.height, false);
|
|
52
|
+
if (scene && camera)
|
|
53
|
+
renderer.render(scene, camera);
|
|
54
|
+
return new Promise((resolve, reject) => {
|
|
55
|
+
try {
|
|
56
|
+
canvas.toBlob((blob) => {
|
|
57
|
+
restore();
|
|
58
|
+
if (blob)
|
|
59
|
+
resolve(blob);
|
|
60
|
+
else
|
|
61
|
+
reject(new Error(`Failed to generate high-resolution PNG`));
|
|
62
|
+
}, `image/png`);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
restore();
|
|
66
|
+
reject(error);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
// Export structure as PNG image from canvas (triggers browser download)
|
|
71
|
+
export function export_canvas_as_png(canvas, structure_or_filename, png_dpi = 150, scene = null, camera = null) {
|
|
72
|
+
if (!canvas) {
|
|
73
|
+
if (typeof window !== `undefined`)
|
|
74
|
+
console.warn(`Canvas not found for PNG export`);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
let filename = typeof structure_or_filename === `string`
|
|
78
|
+
? structure_or_filename
|
|
79
|
+
: create_structure_filename(structure_or_filename, `png`);
|
|
80
|
+
const suffix = `-${Math.round(png_dpi)}dpi`;
|
|
81
|
+
if (filename.toLowerCase().endsWith(`.png`)) {
|
|
82
|
+
filename = filename.replace(/\.png$/i, `${suffix}.png`);
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
filename = `${filename}${suffix}.png`;
|
|
86
|
+
}
|
|
87
|
+
canvas_to_png_blob(canvas, png_dpi, scene, camera)
|
|
88
|
+
.then((blob) => download(blob, filename, `image/png`))
|
|
89
|
+
.catch((error) => console.error(`Error exporting PNG:`, error));
|
|
90
|
+
}
|
|
91
|
+
// Helper to ensure font-family is set on SVG root
|
|
92
|
+
function set_svg_font_family(svg) {
|
|
93
|
+
const style = svg.getAttribute(`style`) || ``;
|
|
94
|
+
if (!style.includes(`font-family`)) {
|
|
95
|
+
svg.setAttribute(`style`, `${style}${style ? `;` : ``}font-family:sans-serif;`);
|
|
96
|
+
}
|
|
97
|
+
// Also set as attribute for extra robustness
|
|
98
|
+
svg.setAttribute(`font-family`, `sans-serif`);
|
|
99
|
+
}
|
|
100
|
+
// Serialize an SVG element to a standalone SVG string with proper XML headers.
|
|
101
|
+
// Clones the element to avoid mutation, sets font-family/xmlns, and
|
|
102
|
+
// prepends XML declaration + SVG DOCTYPE. Returns a complete SVG document string
|
|
103
|
+
// suitable for saving to file or further processing.
|
|
104
|
+
export function svg_to_svg_string(svg_element) {
|
|
105
|
+
const cloned_svg = svg_element.cloneNode(true);
|
|
106
|
+
set_svg_font_family(cloned_svg);
|
|
107
|
+
if (!cloned_svg.hasAttribute(`xmlns`)) {
|
|
108
|
+
cloned_svg.setAttribute(`xmlns`, `http://www.w3.org/2000/svg`);
|
|
109
|
+
}
|
|
110
|
+
const svg_string = new XMLSerializer().serializeToString(cloned_svg);
|
|
111
|
+
return `<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n${svg_string}`;
|
|
112
|
+
}
|
|
113
|
+
// Export SVG element as SVG file (triggers browser download)
|
|
114
|
+
export function export_svg_as_svg(svg_element, filename) {
|
|
115
|
+
if (!svg_element) {
|
|
116
|
+
console.warn(`SVG element not found for export`);
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
try {
|
|
120
|
+
const svg_content = svg_to_svg_string(svg_element);
|
|
121
|
+
download(svg_content, filename, `image/svg+xml;charset=utf-8`);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
console.error(`Error exporting SVG:`, error);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Rasterize an SVG element to a PNG Blob at the given DPI.
|
|
128
|
+
// Creates an offscreen canvas at the scaled resolution, draws the SVG via an
|
|
129
|
+
// Image element, and returns the resulting PNG Blob. Rejects if viewBox is
|
|
130
|
+
// missing or dimensions are invalid (zero width/height).
|
|
131
|
+
// DPI is converted to a resolution multiplier relative to 72 DPI baseline, capped at 10x.
|
|
132
|
+
export function svg_to_png_blob(svg_element, png_dpi = 150) {
|
|
133
|
+
const viewBox = svg_element.getAttribute(`viewBox`)?.trim();
|
|
134
|
+
if (!viewBox)
|
|
135
|
+
return Promise.reject(new Error(`SVG viewBox not found for PNG export`));
|
|
136
|
+
const parts = viewBox.split(/[\s,]+/).map(Number);
|
|
137
|
+
if (parts.length < 4 || !parts.every(Number.isFinite)) {
|
|
138
|
+
return Promise.reject(new Error(`Invalid SVG dimensions for PNG export`));
|
|
139
|
+
}
|
|
140
|
+
const [, , width, height] = parts;
|
|
141
|
+
if (!(width > 0) || !(height > 0)) {
|
|
142
|
+
return Promise.reject(new Error(`Invalid SVG dimensions for PNG export`));
|
|
143
|
+
}
|
|
144
|
+
if (!Number.isFinite(png_dpi) || png_dpi <= 0) {
|
|
145
|
+
return Promise.reject(new Error(`Invalid PNG DPI for export`));
|
|
146
|
+
}
|
|
147
|
+
const resolution_multiplier = Math.min(png_dpi / 72, 10);
|
|
148
|
+
const pixel_width = Math.round(width * resolution_multiplier);
|
|
149
|
+
const pixel_height = Math.round(height * resolution_multiplier);
|
|
150
|
+
const canvas = document.createElement(`canvas`);
|
|
151
|
+
const ctx = canvas.getContext(`2d`);
|
|
152
|
+
if (!ctx)
|
|
153
|
+
return Promise.reject(new Error(`Canvas 2D context not available`));
|
|
154
|
+
canvas.width = pixel_width;
|
|
155
|
+
canvas.height = pixel_height;
|
|
156
|
+
const cloned_svg = svg_element.cloneNode(true);
|
|
157
|
+
set_svg_font_family(cloned_svg);
|
|
158
|
+
const serialized = new XMLSerializer().serializeToString(cloned_svg);
|
|
159
|
+
const svg_blob = new Blob([serialized], { type: `image/svg+xml;charset=utf-8` });
|
|
160
|
+
const svg_data_url = URL.createObjectURL(svg_blob);
|
|
161
|
+
return new Promise((resolve, reject) => {
|
|
162
|
+
const img = new Image();
|
|
163
|
+
img.addEventListener(`load`, () => {
|
|
164
|
+
try {
|
|
165
|
+
ctx.clearRect(0, 0, pixel_width, pixel_height);
|
|
166
|
+
ctx.drawImage(img, 0, 0, pixel_width, pixel_height);
|
|
167
|
+
canvas.toBlob((blob) => {
|
|
168
|
+
if (blob)
|
|
169
|
+
resolve(blob);
|
|
170
|
+
else
|
|
171
|
+
reject(new Error(`Failed to generate PNG blob`));
|
|
172
|
+
}, `image/png`, 1);
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
reject(error);
|
|
176
|
+
}
|
|
177
|
+
finally {
|
|
178
|
+
URL.revokeObjectURL(svg_data_url);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
img.addEventListener(`error`, () => {
|
|
182
|
+
URL.revokeObjectURL(svg_data_url);
|
|
183
|
+
reject(new Error(`Failed to load SVG for PNG export`));
|
|
184
|
+
});
|
|
185
|
+
img.src = svg_data_url;
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
// Export SVG element as PNG (triggers browser download)
|
|
189
|
+
export function export_svg_as_png(svg_element, filename, png_dpi = 150) {
|
|
190
|
+
if (!svg_element) {
|
|
191
|
+
console.warn(`SVG element not found for PNG export`);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
svg_to_png_blob(svg_element, png_dpi)
|
|
195
|
+
.then((blob) => download(blob, filename, `image/png`))
|
|
196
|
+
.catch((error) => console.error(`Error exporting PNG:`, error));
|
|
197
|
+
}
|
|
198
|
+
// Generate FFmpeg command for WebM to MP4 conversion
|
|
199
|
+
export function get_ffmpeg_conversion_command(input_filename) {
|
|
200
|
+
const output = input_filename.replace(/\.webm$/i, `.mp4`);
|
|
201
|
+
return `ffmpeg -i "${input_filename}" -c:v libx264 -preset medium -crf 18 -pix_fmt yuv420p -movflags faststart "${output}"`;
|
|
202
|
+
}
|
|
203
|
+
// Export trajectory video as WebM with frame-by-frame rendering to prevent dropped frames.
|
|
204
|
+
// Note: Browsers only support WebM natively. Use FFmpeg for MP4 conversion (see get_ffmpeg_conversion_command).
|
|
205
|
+
export async function export_trajectory_video(canvas, filename, options = {}) {
|
|
206
|
+
const { fps = 30, total_frames = 100, on_progress, on_step, resolution_multiplier = 1, } = options;
|
|
207
|
+
if (!canvas ||
|
|
208
|
+
typeof MediaRecorder === `undefined` ||
|
|
209
|
+
!MediaRecorder.isTypeSupported(`video/webm;codecs=vp9`))
|
|
210
|
+
throw new Error(`WebM video recording not supported in this browser`);
|
|
211
|
+
const renderer = get_canvas_renderer(canvas);
|
|
212
|
+
// Store original renderer settings if changing resolution
|
|
213
|
+
let orig_pixel_ratio;
|
|
214
|
+
let orig_size;
|
|
215
|
+
if (resolution_multiplier !== 1 && renderer) {
|
|
216
|
+
orig_pixel_ratio = renderer.getPixelRatio();
|
|
217
|
+
orig_size = renderer.getSize(new Vector2());
|
|
218
|
+
// Adjust pixel ratio for different resolution export
|
|
219
|
+
renderer.setPixelRatio(orig_pixel_ratio * resolution_multiplier);
|
|
220
|
+
renderer.setSize(orig_size.width, orig_size.height, false);
|
|
221
|
+
}
|
|
222
|
+
// Calculate bitrate based on actual video dimensions
|
|
223
|
+
// VP9 typically needs 0.08-0.12 bits per pixel per frame for good quality
|
|
224
|
+
// canvas dimensions include device pixel ratio and any resolution_multiplier
|
|
225
|
+
const pixels_per_frame = canvas.width * canvas.height;
|
|
226
|
+
const bits_per_pixel_per_frame = 0.1; // Good quality for VP9
|
|
227
|
+
// Clamp bitrate to reasonable bounds (1 Mbps min, 200 Mbps max)
|
|
228
|
+
const calculated_bitrate = pixels_per_frame * fps * bits_per_pixel_per_frame;
|
|
229
|
+
const bitrate = Math.max(1_000_000, Math.min(calculated_bitrate, 200_000_000));
|
|
230
|
+
const stream = canvas.captureStream(0);
|
|
231
|
+
const chunks = [];
|
|
232
|
+
const recorder = new MediaRecorder(stream, {
|
|
233
|
+
mimeType: `video/webm;codecs=vp9`,
|
|
234
|
+
videoBitsPerSecond: bitrate,
|
|
235
|
+
});
|
|
236
|
+
recorder.addEventListener(`dataavailable`, (event) => {
|
|
237
|
+
if (event.data.size > 0)
|
|
238
|
+
chunks.push(event.data);
|
|
239
|
+
});
|
|
240
|
+
const track = stream.getVideoTracks()[0];
|
|
241
|
+
// Start recording
|
|
242
|
+
recorder.start();
|
|
243
|
+
const frame_duration = 1000 / fps;
|
|
244
|
+
try {
|
|
245
|
+
// Render each frame sequentially with precise timing
|
|
246
|
+
for (let idx = 0; idx < total_frames; idx++) {
|
|
247
|
+
const frame_start = performance.now();
|
|
248
|
+
on_progress?.((idx / total_frames) * 100);
|
|
249
|
+
// Update trajectory step
|
|
250
|
+
if (on_step)
|
|
251
|
+
await on_step(idx);
|
|
252
|
+
// Double RAF ensures Three.js completes rendering before capture
|
|
253
|
+
await new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve)));
|
|
254
|
+
// Capture frame
|
|
255
|
+
track.requestFrame?.();
|
|
256
|
+
// Wait for remaining frame time to maintain consistent FPS
|
|
257
|
+
const elapsed = performance.now() - frame_start;
|
|
258
|
+
const remaining = Math.max(0, frame_duration - elapsed);
|
|
259
|
+
if (remaining > 0) {
|
|
260
|
+
await new Promise((resolve) => setTimeout(resolve, remaining));
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
finally {
|
|
265
|
+
// Restore original renderer settings
|
|
266
|
+
if (orig_pixel_ratio !== undefined && orig_size && renderer) {
|
|
267
|
+
renderer.setPixelRatio(orig_pixel_ratio);
|
|
268
|
+
renderer.setSize(orig_size.width, orig_size.height, false);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
// Finalize recording
|
|
272
|
+
return new Promise((resolve, reject) => {
|
|
273
|
+
let is_resolved = false;
|
|
274
|
+
recorder.addEventListener(`stop`, () => {
|
|
275
|
+
if (is_resolved)
|
|
276
|
+
return;
|
|
277
|
+
is_resolved = true;
|
|
278
|
+
try {
|
|
279
|
+
const blob = new Blob(chunks, { type: `video/webm` });
|
|
280
|
+
const webm_filename = filename.replace(/\.(mp4|webm)$/i, `.webm`);
|
|
281
|
+
download(blob, webm_filename, `video/webm`);
|
|
282
|
+
on_progress?.(100);
|
|
283
|
+
resolve();
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
reject(error);
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
recorder.addEventListener(`error`, (event) => {
|
|
290
|
+
if (is_resolved)
|
|
291
|
+
return;
|
|
292
|
+
is_resolved = true;
|
|
293
|
+
const error_msg = event instanceof ErrorEvent && event.error instanceof Error
|
|
294
|
+
? event.error.message
|
|
295
|
+
: event.type;
|
|
296
|
+
reject(new Error(`MediaRecorder error: ${error_msg}`));
|
|
297
|
+
});
|
|
298
|
+
// Stop recording with safety timeout
|
|
299
|
+
try {
|
|
300
|
+
recorder.stop();
|
|
301
|
+
// Fallback: force resolution if recorder doesn't stop within 5 seconds
|
|
302
|
+
setTimeout(() => {
|
|
303
|
+
if (!is_resolved) {
|
|
304
|
+
is_resolved = true;
|
|
305
|
+
reject(new Error(`Recording timeout - recorder did not stop`));
|
|
306
|
+
}
|
|
307
|
+
}, 5000);
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
if (!is_resolved) {
|
|
311
|
+
is_resolved = true;
|
|
312
|
+
reject(error);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const to_query: (params: Record<string, string | number | undefined>) => string;
|
|
2
|
+
export declare function fetch_zipped<T>(url: string, { unzip }?: {
|
|
3
|
+
unzip?: boolean | undefined;
|
|
4
|
+
}): Promise<T | null>;
|
|
5
|
+
export declare function download(data: string | Blob, filename: string, type: string): void;
|
package/dist/io/fetch.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { decompress_data } from './decompress';
|
|
2
|
+
// Convert params object to URL query string, omitting empty/undefined values.
|
|
3
|
+
// Example: {foo: "bar", baz: 42, empty: ""} → "foo=bar&baz=42"
|
|
4
|
+
export const to_query = (params) => new URLSearchParams(Object.entries(params)
|
|
5
|
+
.filter(([, val]) => val !== `` && val !== undefined)
|
|
6
|
+
.map(([key, val]) => [key, String(val)])).toString();
|
|
7
|
+
export async function fetch_zipped(url, { unzip = true } = {}) {
|
|
8
|
+
const response = await fetch(url);
|
|
9
|
+
if (!response.ok) {
|
|
10
|
+
console.error(`${response.status} ${response.statusText} for ${response.url}`);
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
if (!unzip)
|
|
14
|
+
return (await response.blob());
|
|
15
|
+
return JSON.parse(await decompress_data(response.body, `gzip`));
|
|
16
|
+
}
|
|
17
|
+
// Original download implementation
|
|
18
|
+
function default_download(data, filename, type) {
|
|
19
|
+
const file = new Blob([data], { type });
|
|
20
|
+
const link = document.createElement(`a`);
|
|
21
|
+
const url = URL.createObjectURL(file);
|
|
22
|
+
link.style.display = `none`;
|
|
23
|
+
link.href = url;
|
|
24
|
+
link.download = filename;
|
|
25
|
+
document.body.appendChild(link);
|
|
26
|
+
link.click();
|
|
27
|
+
link.remove();
|
|
28
|
+
URL.revokeObjectURL(url);
|
|
29
|
+
}
|
|
30
|
+
// Function to download data to a file - checks for global override first
|
|
31
|
+
export function download(data, filename, type) {
|
|
32
|
+
// Check if there's a global download override (used by VSCode extension)
|
|
33
|
+
const global_download = globalThis.download;
|
|
34
|
+
if (typeof global_download === `function` && global_download !== download) {
|
|
35
|
+
return global_download(data, filename, type);
|
|
36
|
+
}
|
|
37
|
+
// Use default browser download
|
|
38
|
+
return default_download(data, filename, type);
|
|
39
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface FileDropOptions {
|
|
2
|
+
allow: () => boolean;
|
|
3
|
+
on_drop: (content: string | ArrayBuffer, filename: string) => void | Promise<void>;
|
|
4
|
+
on_error?: (msg: string) => void;
|
|
5
|
+
set_loading?: (loading: boolean) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function create_file_drop_handler(opts: FileDropOptions): (event: DragEvent) => Promise<void>;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// Shared file-drop handler composable for drag-and-drop file loading.
|
|
2
|
+
import { decompress_file } from './decompress';
|
|
3
|
+
import { handle_url_drop } from './url-drop';
|
|
4
|
+
// Handles URL drops (from FilePicker), direct file drops with decompression,
|
|
5
|
+
// loading state, and error reporting.
|
|
6
|
+
export function create_file_drop_handler(opts) {
|
|
7
|
+
return async (event) => {
|
|
8
|
+
event.preventDefault();
|
|
9
|
+
if (!opts.allow())
|
|
10
|
+
return;
|
|
11
|
+
opts.set_loading?.(true);
|
|
12
|
+
let drop_filename = ``;
|
|
13
|
+
try {
|
|
14
|
+
let url_error;
|
|
15
|
+
const handled = await handle_url_drop(event, opts.on_drop).catch((exc) => {
|
|
16
|
+
url_error = exc instanceof Error ? exc.message : String(exc);
|
|
17
|
+
return false;
|
|
18
|
+
});
|
|
19
|
+
if (handled)
|
|
20
|
+
return;
|
|
21
|
+
const file = event.dataTransfer?.files[0];
|
|
22
|
+
if (!file) {
|
|
23
|
+
if (url_error)
|
|
24
|
+
opts.on_error?.(`Failed to load from URL: ${url_error}`);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
drop_filename = file.name;
|
|
28
|
+
const { content, filename } = await decompress_file(file);
|
|
29
|
+
if (content)
|
|
30
|
+
await opts.on_drop(content, filename);
|
|
31
|
+
}
|
|
32
|
+
catch (exc) {
|
|
33
|
+
const detail = exc instanceof Error ? exc.message : String(exc);
|
|
34
|
+
const msg = drop_filename
|
|
35
|
+
? `Failed to load file ${drop_filename}: ${detail}`
|
|
36
|
+
: `Failed to load file: ${detail}`;
|
|
37
|
+
opts.on_error?.(msg);
|
|
38
|
+
}
|
|
39
|
+
finally {
|
|
40
|
+
opts.set_loading?.(false);
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
package/dist/io/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const is_binary: (content: string) => boolean;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Simplified binary detection
|
|
2
|
+
export const is_binary = (content) => {
|
|
3
|
+
if (!content)
|
|
4
|
+
return false;
|
|
5
|
+
if (content.includes(`\0`))
|
|
6
|
+
return true;
|
|
7
|
+
let binary_char_count = 0;
|
|
8
|
+
let printable_ascii_count = 0;
|
|
9
|
+
for (let char_idx = 0; char_idx < content.length; char_idx += 1) {
|
|
10
|
+
const char_code = content.charCodeAt(char_idx);
|
|
11
|
+
if (char_code <= 8 ||
|
|
12
|
+
(char_code >= 14 && char_code <= 31) ||
|
|
13
|
+
(char_code >= 127 && char_code <= 255)) {
|
|
14
|
+
binary_char_count += 1;
|
|
15
|
+
}
|
|
16
|
+
if (char_code >= 32 && char_code <= 126)
|
|
17
|
+
printable_ascii_count += 1;
|
|
18
|
+
}
|
|
19
|
+
return (binary_char_count / content.length > 0.1 || printable_ascii_count / content.length < 0.7);
|
|
20
|
+
};
|
package/dist/io/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare function handle_url_drop(drag_event: DragEvent, callback: (content: string | ArrayBuffer, filename: string) => Promise<void> | void): Promise<boolean>;
|
|
2
|
+
export declare function load_from_url(url: string, callback: (content: string | ArrayBuffer, filename: string) => Promise<void> | void): Promise<void>;
|