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,682 @@
|
|
|
1
|
+
// JSON Tree utility functions
|
|
2
|
+
import type { DiffEntry, JsonValueType } from './types'
|
|
3
|
+
|
|
4
|
+
// Pre-compiled regex for valid JS identifiers (used in path formatting)
|
|
5
|
+
const VALID_IDENTIFIER_RE = /^[a-zA-Z_$][a-zA-Z0-9_$]*$/
|
|
6
|
+
|
|
7
|
+
// Circular-safe JSON.stringify helper (hoisted for reuse)
|
|
8
|
+
function safe_stringify(val: unknown): string {
|
|
9
|
+
const seen = new WeakSet()
|
|
10
|
+
return JSON.stringify(
|
|
11
|
+
val,
|
|
12
|
+
(_key, inner) => {
|
|
13
|
+
if (typeof inner === `object` && inner !== null) {
|
|
14
|
+
if (seen.has(inner)) return `[Circular]`
|
|
15
|
+
seen.add(inner)
|
|
16
|
+
}
|
|
17
|
+
if (typeof inner === `bigint`) return `${inner}n`
|
|
18
|
+
if (typeof inner === `symbol`) return inner.toString()
|
|
19
|
+
if (typeof inner === `function`) return `[Function: ${inner.name || `anonymous`}]`
|
|
20
|
+
return inner
|
|
21
|
+
},
|
|
22
|
+
2,
|
|
23
|
+
)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Detect the type of a value for rendering purposes
|
|
27
|
+
export function get_value_type(value: unknown): JsonValueType {
|
|
28
|
+
if (value === null) return `null`
|
|
29
|
+
if (value === undefined) return `undefined`
|
|
30
|
+
|
|
31
|
+
const type = typeof value
|
|
32
|
+
|
|
33
|
+
if (type === `string`) return `string`
|
|
34
|
+
if (type === `number`) return `number`
|
|
35
|
+
if (type === `boolean`) return `boolean`
|
|
36
|
+
if (type === `symbol`) return `symbol`
|
|
37
|
+
if (type === `bigint`) return `bigint`
|
|
38
|
+
if (type === `function`) return `function`
|
|
39
|
+
|
|
40
|
+
if (type === `object`) {
|
|
41
|
+
if (Array.isArray(value)) return `array`
|
|
42
|
+
if (value instanceof Date) return `date`
|
|
43
|
+
if (value instanceof RegExp) return `regexp`
|
|
44
|
+
if (value instanceof Map) return `map`
|
|
45
|
+
if (value instanceof Set) return `set`
|
|
46
|
+
if (value instanceof Error) return `error`
|
|
47
|
+
return `object`
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return `object` // fallback
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Check if a value type is expandable (has children)
|
|
54
|
+
export const is_expandable_type = (value_type: JsonValueType): boolean =>
|
|
55
|
+
value_type === `object` ||
|
|
56
|
+
value_type === `array` ||
|
|
57
|
+
value_type === `map` ||
|
|
58
|
+
value_type === `set`
|
|
59
|
+
|
|
60
|
+
// Check if a value type is a primitive (searchable as string)
|
|
61
|
+
export const is_primitive_type = (value_type: JsonValueType): boolean =>
|
|
62
|
+
value_type === `string` ||
|
|
63
|
+
value_type === `number` ||
|
|
64
|
+
value_type === `boolean` ||
|
|
65
|
+
value_type === `null` ||
|
|
66
|
+
value_type === `undefined` ||
|
|
67
|
+
value_type === `bigint`
|
|
68
|
+
|
|
69
|
+
// Check if a value is expandable
|
|
70
|
+
export const is_expandable = (value: unknown): boolean =>
|
|
71
|
+
is_expandable_type(get_value_type(value))
|
|
72
|
+
|
|
73
|
+
// Get the number of children for a value
|
|
74
|
+
export function get_child_count(value: unknown): number {
|
|
75
|
+
const type = get_value_type(value)
|
|
76
|
+
if (type === `array`) return (value as unknown[]).length
|
|
77
|
+
if (type === `object`) return Object.keys(value as object).length
|
|
78
|
+
if (type === `map`) return (value as Map<unknown, unknown>).size
|
|
79
|
+
if (type === `set`) return (value as Set<unknown>).size
|
|
80
|
+
return 0
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
// Format a path segment for display
|
|
84
|
+
// Handles both string keys and numeric indices
|
|
85
|
+
// is_first: true for the first segment (no leading dot for valid identifiers)
|
|
86
|
+
function format_path_segment(segment: string | number, is_first: boolean = false): string {
|
|
87
|
+
if (typeof segment === `number`) {
|
|
88
|
+
return `[${segment}]`
|
|
89
|
+
}
|
|
90
|
+
// Check if the key is a valid identifier (can use dot notation)
|
|
91
|
+
if (VALID_IDENTIFIER_RE.test(segment)) {
|
|
92
|
+
return is_first ? segment : `.${segment}`
|
|
93
|
+
}
|
|
94
|
+
// Use bracket notation for keys with special characters
|
|
95
|
+
return `["${segment.replace(/"/g, `\\"`)}"]`
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Format a full path from segments
|
|
99
|
+
// e.g., ["users", 0, "name"] -> "users[0].name"
|
|
100
|
+
// e.g., [0, "name"] -> "[0].name" (root numeric index)
|
|
101
|
+
// e.g., ["key.with.dot"] -> '["key.with.dot"]' (root special key)
|
|
102
|
+
export function format_path(segments: (string | number)[]): string {
|
|
103
|
+
if (segments.length === 0) return ``
|
|
104
|
+
|
|
105
|
+
let result = format_path_segment(segments[0], true)
|
|
106
|
+
for (let idx = 1; idx < segments.length; idx++) {
|
|
107
|
+
result += format_path_segment(segments[idx])
|
|
108
|
+
}
|
|
109
|
+
return result
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
// Build a path string from parent path and key
|
|
113
|
+
export function build_path(parent_path: string, key: string | number): string {
|
|
114
|
+
if (!parent_path) {
|
|
115
|
+
return format_path_segment(key, true)
|
|
116
|
+
}
|
|
117
|
+
return parent_path + format_path_segment(key)
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Format a primitive/special value to string (shared by serialize and preview)
|
|
121
|
+
function format_special_value(value: unknown, type: JsonValueType): string | null {
|
|
122
|
+
if (type === `undefined`) return `undefined`
|
|
123
|
+
if (type === `null`) return `null`
|
|
124
|
+
if (type === `number` || type === `boolean`) return String(value)
|
|
125
|
+
if (type === `bigint`) return `${value}n`
|
|
126
|
+
if (type === `symbol`) return (value as symbol).toString()
|
|
127
|
+
if (type === `date`) return (value as Date).toISOString()
|
|
128
|
+
if (type === `regexp`) return (value as RegExp).toString()
|
|
129
|
+
if (type === `error`) return `${(value as Error).name}: ${(value as Error).message}`
|
|
130
|
+
return null // not a special type
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
// Serialize a value for copying to clipboard
|
|
134
|
+
export function serialize_for_copy(value: unknown): string {
|
|
135
|
+
const type = get_value_type(value)
|
|
136
|
+
if (type === `string`) return value as string
|
|
137
|
+
if (type === `function`) return (value as (...args: unknown[]) => unknown).toString()
|
|
138
|
+
|
|
139
|
+
const special = format_special_value(value, type)
|
|
140
|
+
if (special !== null) return special
|
|
141
|
+
|
|
142
|
+
// Map/Set/Object/Array - try JSON stringify
|
|
143
|
+
const data =
|
|
144
|
+
type === `map`
|
|
145
|
+
? Array.from((value as Map<unknown, unknown>).entries())
|
|
146
|
+
: type === `set`
|
|
147
|
+
? Array.from(value as Set<unknown>)
|
|
148
|
+
: value
|
|
149
|
+
try {
|
|
150
|
+
return safe_stringify(data)
|
|
151
|
+
} catch {
|
|
152
|
+
return String(value)
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
// Format a value for inline preview (collapsed view)
|
|
157
|
+
export function format_preview(value: unknown, max_length: number = 50): string {
|
|
158
|
+
const type = get_value_type(value)
|
|
159
|
+
|
|
160
|
+
// Collection summaries
|
|
161
|
+
if (type === `array`) return `Array(${(value as unknown[]).length})`
|
|
162
|
+
if (type === `object`) {
|
|
163
|
+
const len = Object.keys(value as object).length
|
|
164
|
+
return `{${len} ${len === 1 ? `key` : `keys`}}`
|
|
165
|
+
}
|
|
166
|
+
if (type === `map`) return `Map(${(value as Map<unknown, unknown>).size})`
|
|
167
|
+
if (type === `set`) return `Set(${(value as Set<unknown>).size})`
|
|
168
|
+
|
|
169
|
+
// String with truncation
|
|
170
|
+
if (type === `string`) {
|
|
171
|
+
const str = value as string
|
|
172
|
+
return str.length > max_length ? `"${str.slice(0, max_length)}..."` : `"${str}"`
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// Function has special format
|
|
176
|
+
if (type === `function`) {
|
|
177
|
+
return `ƒ ${(value as (...args: unknown[]) => unknown).name || `anonymous`}()`
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Use shared formatter for other special types
|
|
181
|
+
return format_special_value(value, type) ?? String(value)
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// Check if a path/key/value matches a search query (case-insensitive)
|
|
185
|
+
export function matches_search(
|
|
186
|
+
path: string,
|
|
187
|
+
key: string | number | null,
|
|
188
|
+
value: unknown,
|
|
189
|
+
query: string,
|
|
190
|
+
): boolean {
|
|
191
|
+
if (!query) return false
|
|
192
|
+
|
|
193
|
+
const lower_query = query.toLowerCase()
|
|
194
|
+
|
|
195
|
+
// Check path
|
|
196
|
+
if (path.toLowerCase().includes(lower_query)) return true
|
|
197
|
+
|
|
198
|
+
// Check key
|
|
199
|
+
if (key !== null && String(key).toLowerCase().includes(lower_query)) return true
|
|
200
|
+
|
|
201
|
+
// Check value (for primitives)
|
|
202
|
+
const type = get_value_type(value)
|
|
203
|
+
if (is_primitive_type(type)) {
|
|
204
|
+
return String(value).toLowerCase().includes(lower_query)
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
return false
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Iterate over children of an expandable value, calling visitor for each
|
|
211
|
+
function for_each_child(
|
|
212
|
+
value: unknown,
|
|
213
|
+
type: JsonValueType,
|
|
214
|
+
visitor: (child_value: unknown, key: string | number, map_key?: unknown) => void,
|
|
215
|
+
): void {
|
|
216
|
+
if (type === `array`) {
|
|
217
|
+
;(value as unknown[]).forEach((val, idx) => visitor(val, idx))
|
|
218
|
+
} else if (type === `object`) {
|
|
219
|
+
for (const key of Object.keys(value as Record<string, unknown>)) {
|
|
220
|
+
visitor((value as Record<string, unknown>)[key], key)
|
|
221
|
+
}
|
|
222
|
+
} else if (type === `map`) {
|
|
223
|
+
let idx = 0
|
|
224
|
+
for (const [map_key, map_value] of value as Map<unknown, unknown>) {
|
|
225
|
+
visitor(map_value, idx, map_key)
|
|
226
|
+
idx++
|
|
227
|
+
}
|
|
228
|
+
} else if (type === `set`) {
|
|
229
|
+
let idx = 0
|
|
230
|
+
for (const set_value of value as Set<unknown>) {
|
|
231
|
+
visitor(set_value, idx)
|
|
232
|
+
idx++
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// Collect all expandable paths in a value tree
|
|
238
|
+
export function collect_all_paths(
|
|
239
|
+
value: unknown,
|
|
240
|
+
current_path: string = ``,
|
|
241
|
+
max_depth: number = Infinity,
|
|
242
|
+
current_depth: number = 0,
|
|
243
|
+
seen: WeakSet<object> = new WeakSet(),
|
|
244
|
+
): string[] {
|
|
245
|
+
if (current_depth >= max_depth) return []
|
|
246
|
+
const type = get_value_type(value)
|
|
247
|
+
if (!is_expandable_type(type)) return []
|
|
248
|
+
if (typeof value === `object` && value !== null) {
|
|
249
|
+
if (seen.has(value)) return []
|
|
250
|
+
seen.add(value)
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
const paths: string[] = current_path ? [current_path] : []
|
|
254
|
+
for_each_child(value, type, (child_value, key) => {
|
|
255
|
+
const child_path = build_path(current_path, key)
|
|
256
|
+
paths.push(
|
|
257
|
+
...collect_all_paths(child_value, child_path, max_depth, current_depth + 1, seen),
|
|
258
|
+
)
|
|
259
|
+
})
|
|
260
|
+
return paths
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// Find all paths that match a search query
|
|
264
|
+
export function find_matching_paths(
|
|
265
|
+
value: unknown,
|
|
266
|
+
query: string,
|
|
267
|
+
current_path: string = ``,
|
|
268
|
+
current_key: string | number | null = null,
|
|
269
|
+
seen: WeakSet<object> = new WeakSet(),
|
|
270
|
+
): Set<string> {
|
|
271
|
+
const matches = new Set<string>()
|
|
272
|
+
if (!query) return matches
|
|
273
|
+
|
|
274
|
+
const lower_query = query.toLowerCase()
|
|
275
|
+
if (matches_search(current_path, current_key, value, query)) {
|
|
276
|
+
matches.add(current_path)
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
const type = get_value_type(value)
|
|
280
|
+
if (!is_expandable_type(type)) return matches
|
|
281
|
+
if (typeof value === `object` && value !== null) {
|
|
282
|
+
if (seen.has(value)) return matches
|
|
283
|
+
seen.add(value)
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
for_each_child(value, type, (child_value, key, map_key) => {
|
|
287
|
+
const child_path = build_path(current_path, key)
|
|
288
|
+
// Also check if Map key matches
|
|
289
|
+
if (
|
|
290
|
+
map_key !== undefined &&
|
|
291
|
+
serialize_for_copy(map_key).toLowerCase().includes(lower_query)
|
|
292
|
+
) {
|
|
293
|
+
matches.add(child_path)
|
|
294
|
+
}
|
|
295
|
+
for (const match of find_matching_paths(child_value, query, child_path, key, seen)) {
|
|
296
|
+
matches.add(match)
|
|
297
|
+
}
|
|
298
|
+
})
|
|
299
|
+
return matches
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
// Get all ancestor paths for a given path
|
|
303
|
+
// e.g., "users[0].name" -> ["users", "users[0]"]
|
|
304
|
+
export function get_ancestor_paths(path: string): string[] {
|
|
305
|
+
const ancestors: string[] = []
|
|
306
|
+
let current = ``
|
|
307
|
+
|
|
308
|
+
// Parse the path to extract segments
|
|
309
|
+
const segments = parse_path(path)
|
|
310
|
+
for (let idx = 0; idx < segments.length - 1; idx++) {
|
|
311
|
+
current = build_path(current, segments[idx])
|
|
312
|
+
ancestors.push(current)
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
return ancestors
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// Parse a path string into segments
|
|
319
|
+
// e.g., "users[0].name" -> ["users", 0, "name"]
|
|
320
|
+
export function parse_path(path: string): (string | number)[] {
|
|
321
|
+
if (!path) return []
|
|
322
|
+
|
|
323
|
+
const segments: (string | number)[] = []
|
|
324
|
+
let current = ``
|
|
325
|
+
let in_bracket = false
|
|
326
|
+
|
|
327
|
+
for (let idx = 0; idx < path.length; idx++) {
|
|
328
|
+
const char = path[idx]
|
|
329
|
+
|
|
330
|
+
if (char === `.` && !in_bracket) {
|
|
331
|
+
if (current) segments.push(current)
|
|
332
|
+
current = ``
|
|
333
|
+
} else if (char === `[`) {
|
|
334
|
+
if (current) segments.push(current)
|
|
335
|
+
current = ``
|
|
336
|
+
in_bracket = true
|
|
337
|
+
} else if (char === `]`) {
|
|
338
|
+
if (current) {
|
|
339
|
+
// Check if it's a number index
|
|
340
|
+
const num = Number(current)
|
|
341
|
+
if (Number.isNaN(num)) {
|
|
342
|
+
// Remove surrounding quotes and unescape internal quotes
|
|
343
|
+
const unquoted = current.replace(/^"|"$/g, ``).replace(/\\"/g, `"`)
|
|
344
|
+
segments.push(unquoted)
|
|
345
|
+
} else segments.push(num)
|
|
346
|
+
}
|
|
347
|
+
current = ``
|
|
348
|
+
in_bracket = false
|
|
349
|
+
} else current += char
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// Handle trailing content (e.g., unclosed bracket like "a[0")
|
|
353
|
+
if (current) {
|
|
354
|
+
if (in_bracket) {
|
|
355
|
+
// Apply same numeric/quoted-string logic as inside brackets
|
|
356
|
+
const num = Number(current)
|
|
357
|
+
if (Number.isNaN(num)) {
|
|
358
|
+
const unquoted = current.replace(/^"|"$/g, ``).replace(/\\"/g, `"`)
|
|
359
|
+
segments.push(unquoted)
|
|
360
|
+
} else segments.push(num)
|
|
361
|
+
} else segments.push(current)
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
return segments
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
// Check if two values are deeply equal (for change detection)
|
|
368
|
+
export function values_equal(val_a: unknown, val_b: unknown): boolean {
|
|
369
|
+
if (val_a === val_b) return true
|
|
370
|
+
// Handle NaN (NaN !== NaN in JS, but we want NaN === NaN for change detection)
|
|
371
|
+
if (
|
|
372
|
+
typeof val_a === `number` &&
|
|
373
|
+
typeof val_b === `number` &&
|
|
374
|
+
Number.isNaN(val_a) &&
|
|
375
|
+
Number.isNaN(val_b)
|
|
376
|
+
)
|
|
377
|
+
return true
|
|
378
|
+
if (val_a === null || val_b === null) return false
|
|
379
|
+
if (typeof val_a !== typeof val_b) return false
|
|
380
|
+
|
|
381
|
+
const type = get_value_type(val_a)
|
|
382
|
+
|
|
383
|
+
// For primitives, strict equality is sufficient
|
|
384
|
+
if (is_primitive_type(type) || type === `symbol`) {
|
|
385
|
+
return val_a === val_b
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
// For dates, compare timestamps
|
|
389
|
+
if (type === `date`) {
|
|
390
|
+
return (val_a as Date).getTime() === (val_b as Date).getTime()
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
// For regex, compare string representation
|
|
394
|
+
if (type === `regexp`) {
|
|
395
|
+
return (val_a as RegExp).toString() === (val_b as RegExp).toString()
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// For objects and arrays, do shallow comparison (for performance)
|
|
399
|
+
// Deep changes will be detected at the child level
|
|
400
|
+
if (type === `array`) {
|
|
401
|
+
return (val_a as unknown[]).length === (val_b as unknown[]).length
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
if (type === `object`) {
|
|
405
|
+
const keys_a = Object.keys(val_a as object)
|
|
406
|
+
const keys_b = Object.keys(val_b as object)
|
|
407
|
+
return keys_a.length === keys_b.length
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
return false
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
// Parse a raw edited string into a typed JSON value
|
|
414
|
+
// Numbers, booleans, and null are auto-detected; everything else stays as string
|
|
415
|
+
export function parse_edited_value(text: string): unknown {
|
|
416
|
+
const trimmed = text.trim()
|
|
417
|
+
if (trimmed === `null`) return null
|
|
418
|
+
if (trimmed === `true`) return true
|
|
419
|
+
if (trimmed === `false`) return false
|
|
420
|
+
const num = Number(trimmed)
|
|
421
|
+
if (trimmed !== `` && Number.isFinite(num)) return num
|
|
422
|
+
return text
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
// Set a value at a dot/bracket path in a deep-cloned copy of root
|
|
426
|
+
// root_label is stripped from the path prefix if present
|
|
427
|
+
export function set_at_path(
|
|
428
|
+
root: unknown,
|
|
429
|
+
path_str: string,
|
|
430
|
+
new_value: unknown,
|
|
431
|
+
root_label?: string,
|
|
432
|
+
): unknown {
|
|
433
|
+
const segments = parse_path(path_str)
|
|
434
|
+
const start = root_label && segments[0] === root_label ? 1 : 0
|
|
435
|
+
if (start >= segments.length) return new_value
|
|
436
|
+
const cloned = JSON.parse(JSON.stringify(root))
|
|
437
|
+
let current: Record<string | number, unknown> = cloned
|
|
438
|
+
for (let idx = start; idx < segments.length - 1; idx++) {
|
|
439
|
+
const next = current[segments[idx]]
|
|
440
|
+
if (next === undefined || next === null) return root // bail — path no longer valid
|
|
441
|
+
current = next as Record<string | number, unknown>
|
|
442
|
+
}
|
|
443
|
+
current[segments[segments.length - 1]] = new_value
|
|
444
|
+
return cloned
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
// URL regex for auto-detection in string values
|
|
448
|
+
const URL_RE = /^https?:\/\/\S+$/
|
|
449
|
+
|
|
450
|
+
// CSS color patterns for swatch rendering
|
|
451
|
+
const HEX_COLOR_RE = /^#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i
|
|
452
|
+
const FUNC_COLOR_RE = /^(?:rgba?|hsla?|oklch|oklab|lch|lab|color)\([^)]*\)$/i
|
|
453
|
+
|
|
454
|
+
// Check if a string is a URL
|
|
455
|
+
export const is_url = (str: string): boolean => URL_RE.test(str.trim())
|
|
456
|
+
|
|
457
|
+
// Check if a string looks like a CSS color value
|
|
458
|
+
// Rejects strings with semicolons to prevent CSS injection
|
|
459
|
+
export function is_css_color(str: string): boolean {
|
|
460
|
+
const trimmed = str.trim()
|
|
461
|
+
if (trimmed.includes(`;`)) return false
|
|
462
|
+
return HEX_COLOR_RE.test(trimmed) || FUNC_COLOR_RE.test(trimmed)
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
// Estimate the serialized byte size of a value (rough approximation)
|
|
466
|
+
// Uses max_depth to avoid expensive deep recursion on large trees
|
|
467
|
+
export function estimate_byte_size(
|
|
468
|
+
value: unknown,
|
|
469
|
+
max_depth: number = 4,
|
|
470
|
+
current_depth: number = 0,
|
|
471
|
+
): number {
|
|
472
|
+
if (current_depth >= max_depth) return 10
|
|
473
|
+
const type = get_value_type(value)
|
|
474
|
+
if (type === `null`) return 4
|
|
475
|
+
if (type === `undefined`) return 9
|
|
476
|
+
if (type === `boolean`) return value ? 4 : 5
|
|
477
|
+
if (type === `number` || type === `bigint`) return String(value).length
|
|
478
|
+
if (type === `string`) return (value as string).length + 2
|
|
479
|
+
if (type === `symbol`) return (value as symbol).toString().length
|
|
480
|
+
if (type === `function`) return 20
|
|
481
|
+
if (type === `date`) return 24
|
|
482
|
+
if (type === `regexp`) return (value as RegExp).toString().length
|
|
483
|
+
if (type === `error`) {
|
|
484
|
+
return `${(value as Error).name}: ${(value as Error).message}`.length
|
|
485
|
+
}
|
|
486
|
+
// Accumulate child sizes for collection types
|
|
487
|
+
const child_depth = current_depth + 1
|
|
488
|
+
const child_size = (val: unknown, overhead: number = 1) =>
|
|
489
|
+
estimate_byte_size(val, max_depth, child_depth) + overhead
|
|
490
|
+
if (type === `array`) {
|
|
491
|
+
let size = 2
|
|
492
|
+
for (const item of value as unknown[]) size += child_size(item)
|
|
493
|
+
return size
|
|
494
|
+
}
|
|
495
|
+
if (type === `object`) {
|
|
496
|
+
let size = 2
|
|
497
|
+
for (const [key, val] of Object.entries(value as Record<string, unknown>)) {
|
|
498
|
+
size += key.length + 4 + child_size(val, 0)
|
|
499
|
+
}
|
|
500
|
+
return size
|
|
501
|
+
}
|
|
502
|
+
if (type === `map`) {
|
|
503
|
+
let size = 2
|
|
504
|
+
for (const [, val] of value as Map<unknown, unknown>) size += child_size(val, 10)
|
|
505
|
+
return size
|
|
506
|
+
}
|
|
507
|
+
if (type === `set`) {
|
|
508
|
+
let size = 2
|
|
509
|
+
for (const val of value as Set<unknown>) size += child_size(val)
|
|
510
|
+
return size
|
|
511
|
+
}
|
|
512
|
+
return String(value).length
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
// Ghost entry for removed diff children
|
|
516
|
+
export interface GhostEntry {
|
|
517
|
+
key: string | number
|
|
518
|
+
value: unknown
|
|
519
|
+
path: string
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
// Pre-compute a map of parent_path -> removed children from a diff map
|
|
523
|
+
// This avoids O(diff_size) iteration per expanded node
|
|
524
|
+
export function build_ghost_map(diff_map: Map<string, DiffEntry>): Map<string, GhostEntry[]> {
|
|
525
|
+
const ghost_map = new Map<string, GhostEntry[]>()
|
|
526
|
+
for (const [diff_path, entry] of diff_map) {
|
|
527
|
+
if (entry.status !== `removed`) continue
|
|
528
|
+
const segments = parse_path(diff_path)
|
|
529
|
+
if (segments.length === 0) continue
|
|
530
|
+
const parent_path = segments.length === 1 ? `` : format_path(segments.slice(0, -1))
|
|
531
|
+
const key = segments[segments.length - 1]
|
|
532
|
+
const ghosts = ghost_map.get(parent_path) ?? []
|
|
533
|
+
ghosts.push({ key, value: entry.old_value, path: diff_path })
|
|
534
|
+
ghost_map.set(parent_path, ghosts)
|
|
535
|
+
}
|
|
536
|
+
return ghost_map
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
// Format byte size as human-readable string (e.g., "1.2 KB")
|
|
540
|
+
export function format_byte_size(bytes: number): string {
|
|
541
|
+
if (bytes < 1024) return `${bytes} B`
|
|
542
|
+
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`
|
|
543
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
// Compute diff between old and new values, returning path -> DiffEntry map
|
|
547
|
+
// Only paths that differ are included (unchanged paths are omitted)
|
|
548
|
+
export function compute_diff(
|
|
549
|
+
old_val: unknown,
|
|
550
|
+
new_val: unknown,
|
|
551
|
+
current_path: string = ``,
|
|
552
|
+
result: Map<string, DiffEntry> = new Map(),
|
|
553
|
+
seen: WeakSet<object> = new WeakSet(),
|
|
554
|
+
): Map<string, DiffEntry> {
|
|
555
|
+
const old_type = get_value_type(old_val)
|
|
556
|
+
const new_type = get_value_type(new_val)
|
|
557
|
+
|
|
558
|
+
// Different types = changed
|
|
559
|
+
if (old_type !== new_type) {
|
|
560
|
+
result.set(current_path, {
|
|
561
|
+
status: `changed`,
|
|
562
|
+
path: current_path,
|
|
563
|
+
old_value: old_val,
|
|
564
|
+
new_value: new_val,
|
|
565
|
+
})
|
|
566
|
+
return result
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
// Both primitive: compare values (with NaN === NaN special case)
|
|
570
|
+
if (is_primitive_type(old_type)) {
|
|
571
|
+
const both_nan =
|
|
572
|
+
typeof old_val === `number` &&
|
|
573
|
+
typeof new_val === `number` &&
|
|
574
|
+
Number.isNaN(old_val) &&
|
|
575
|
+
Number.isNaN(new_val)
|
|
576
|
+
if (!both_nan && old_val !== new_val) {
|
|
577
|
+
result.set(current_path, {
|
|
578
|
+
status: `changed`,
|
|
579
|
+
path: current_path,
|
|
580
|
+
old_value: old_val,
|
|
581
|
+
new_value: new_val,
|
|
582
|
+
})
|
|
583
|
+
}
|
|
584
|
+
return result
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
// Non-expandable special types (date, regexp, etc): compare string forms
|
|
588
|
+
if (!is_expandable_type(old_type)) {
|
|
589
|
+
if (String(old_val) !== String(new_val)) {
|
|
590
|
+
result.set(current_path, {
|
|
591
|
+
status: `changed`,
|
|
592
|
+
path: current_path,
|
|
593
|
+
old_value: old_val,
|
|
594
|
+
new_value: new_val,
|
|
595
|
+
})
|
|
596
|
+
}
|
|
597
|
+
return result
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
// Prevent circular references
|
|
601
|
+
if (typeof old_val === `object` && old_val !== null) {
|
|
602
|
+
if (seen.has(old_val)) return result
|
|
603
|
+
seen.add(old_val)
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
// Diff two indexed lists element-by-element (shared by array, map, set)
|
|
607
|
+
function diff_indexed(old_items: unknown[], new_items: unknown[]): void {
|
|
608
|
+
const max_len = Math.max(old_items.length, new_items.length)
|
|
609
|
+
for (let idx = 0; idx < max_len; idx++) {
|
|
610
|
+
const child_path = build_path(current_path, idx)
|
|
611
|
+
if (idx >= old_items.length) {
|
|
612
|
+
result.set(child_path, {
|
|
613
|
+
status: `added`,
|
|
614
|
+
path: child_path,
|
|
615
|
+
new_value: new_items[idx],
|
|
616
|
+
})
|
|
617
|
+
} else if (idx >= new_items.length) {
|
|
618
|
+
result.set(child_path, {
|
|
619
|
+
status: `removed`,
|
|
620
|
+
path: child_path,
|
|
621
|
+
old_value: old_items[idx],
|
|
622
|
+
})
|
|
623
|
+
} else {
|
|
624
|
+
compute_diff(old_items[idx], new_items[idx], child_path, result, seen)
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
if (old_type === `array`) {
|
|
630
|
+
diff_indexed(old_val as unknown[], new_val as unknown[])
|
|
631
|
+
return result
|
|
632
|
+
}
|
|
633
|
+
|
|
634
|
+
// Objects: compare key sets and recurse
|
|
635
|
+
if (old_type === `object`) {
|
|
636
|
+
const old_obj = old_val as Record<string, unknown>
|
|
637
|
+
const new_obj = new_val as Record<string, unknown>
|
|
638
|
+
const all_keys = new Set([...Object.keys(old_obj), ...Object.keys(new_obj)])
|
|
639
|
+
for (const key of all_keys) {
|
|
640
|
+
const child_path = build_path(current_path, key)
|
|
641
|
+
const in_old = key in old_obj
|
|
642
|
+
const in_new = key in new_obj
|
|
643
|
+
if (!in_old) {
|
|
644
|
+
result.set(child_path, {
|
|
645
|
+
status: `added`,
|
|
646
|
+
path: child_path,
|
|
647
|
+
new_value: new_obj[key],
|
|
648
|
+
})
|
|
649
|
+
} else if (!in_new) {
|
|
650
|
+
result.set(child_path, {
|
|
651
|
+
status: `removed`,
|
|
652
|
+
path: child_path,
|
|
653
|
+
old_value: old_obj[key],
|
|
654
|
+
})
|
|
655
|
+
} else {
|
|
656
|
+
compute_diff(old_obj[key], new_obj[key], child_path, result, seen)
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
return result
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
// Maps: wrap entries as { key, value } to match JsonNode.get_children() rendering
|
|
663
|
+
if (old_type === `map`) {
|
|
664
|
+
diff_indexed(
|
|
665
|
+
Array.from((old_val as Map<unknown, unknown>).entries()).map(([key, val]) => ({
|
|
666
|
+
key,
|
|
667
|
+
value: val,
|
|
668
|
+
})),
|
|
669
|
+
Array.from((new_val as Map<unknown, unknown>).entries()).map(([key, val]) => ({
|
|
670
|
+
key,
|
|
671
|
+
value: val,
|
|
672
|
+
})),
|
|
673
|
+
)
|
|
674
|
+
return result
|
|
675
|
+
}
|
|
676
|
+
if (old_type === `set`) {
|
|
677
|
+
diff_indexed(Array.from(old_val as Set<unknown>), Array.from(new_val as Set<unknown>))
|
|
678
|
+
return result
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
return result
|
|
682
|
+
}
|