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.
Files changed (852) hide show
  1. package/.vscode/launch.json +13 -0
  2. package/.vscodeignore +7 -0
  3. package/dist/assets/STLExporter-BpTH3YHE.js +8 -0
  4. package/dist/assets/browser-DdDecX_W.js +1 -0
  5. package/dist/assets/export-qgn-H9y6.js +2 -0
  6. package/dist/assets/main-DiKYzti2.css +1 -0
  7. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  8. package/dist/extension.js +31293 -0
  9. package/dist/src/lib/FilePicker.svelte +360 -0
  10. package/dist/src/lib/MillerIndexInput.svelte +66 -0
  11. package/dist/src/lib/api/mp.ts +26 -0
  12. package/dist/src/lib/api/optimade.ts +204 -0
  13. package/dist/src/lib/app.css +247 -0
  14. package/dist/src/lib/brillouin/BrillouinZone.svelte +549 -0
  15. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
  16. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
  17. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  18. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
  19. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
  20. package/dist/src/lib/brillouin/compute.ts +529 -0
  21. package/dist/src/lib/brillouin/index.ts +8 -0
  22. package/dist/src/lib/brillouin/types.ts +51 -0
  23. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
  24. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  25. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  26. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
  27. package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
  28. package/dist/src/lib/chempot-diagram/color.ts +42 -0
  29. package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
  30. package/dist/src/lib/chempot-diagram/index.ts +6 -0
  31. package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
  32. package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
  33. package/dist/src/lib/chempot-diagram/types.ts +130 -0
  34. package/dist/src/lib/colors/index.ts +249 -0
  35. package/dist/src/lib/composition/BarChart.svelte +297 -0
  36. package/dist/src/lib/composition/BubbleChart.svelte +218 -0
  37. package/dist/src/lib/composition/Composition.svelte +165 -0
  38. package/dist/src/lib/composition/Formula.svelte +268 -0
  39. package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
  40. package/dist/src/lib/composition/PieChart.svelte +323 -0
  41. package/dist/src/lib/composition/format.ts +155 -0
  42. package/dist/src/lib/composition/index.ts +37 -0
  43. package/dist/src/lib/composition/parse.ts +605 -0
  44. package/dist/src/lib/constants.ts +134 -0
  45. package/dist/src/lib/controls.ts +42 -0
  46. package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
  47. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
  48. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
  49. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
  50. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
  51. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
  52. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
  53. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
  54. package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
  55. package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
  56. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
  57. package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
  58. package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
  59. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
  60. package/dist/src/lib/convex-hull/helpers.ts +932 -0
  61. package/dist/src/lib/convex-hull/index.ts +202 -0
  62. package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
  63. package/dist/src/lib/convex-hull/types.ts +267 -0
  64. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
  65. package/dist/src/lib/coordination/calc-coordination.ts +93 -0
  66. package/dist/src/lib/coordination/index.ts +9 -0
  67. package/dist/src/lib/effects.svelte.ts +48 -0
  68. package/dist/src/lib/element/BohrAtom.svelte +147 -0
  69. package/dist/src/lib/element/ElementHeading.svelte +26 -0
  70. package/dist/src/lib/element/ElementPhoto.svelte +57 -0
  71. package/dist/src/lib/element/ElementStats.svelte +80 -0
  72. package/dist/src/lib/element/ElementTile.svelte +484 -0
  73. package/dist/src/lib/element/data.json.gz.d.ts +4 -0
  74. package/dist/src/lib/element/data.ts +14 -0
  75. package/dist/src/lib/element/index.ts +8 -0
  76. package/dist/src/lib/element/types.ts +62 -0
  77. package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
  78. package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
  79. package/dist/src/lib/feedback/index.ts +4 -0
  80. package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
  81. package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
  82. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
  83. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
  84. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  85. package/dist/src/lib/fermi-surface/compute.ts +728 -0
  86. package/dist/src/lib/fermi-surface/constants.ts +32 -0
  87. package/dist/src/lib/fermi-surface/export.ts +64 -0
  88. package/dist/src/lib/fermi-surface/index.ts +14 -0
  89. package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
  90. package/dist/src/lib/fermi-surface/parse.ts +574 -0
  91. package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
  92. package/dist/src/lib/fermi-surface/types.ts +159 -0
  93. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  94. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  95. package/dist/src/lib/heatmap-matrix/index.ts +167 -0
  96. package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
  97. package/dist/src/lib/icons.ts +650 -0
  98. package/dist/src/lib/index.ts +61 -0
  99. package/dist/src/lib/io/decompress.ts +92 -0
  100. package/dist/src/lib/io/export.ts +385 -0
  101. package/dist/src/lib/io/fetch.ts +46 -0
  102. package/dist/src/lib/io/file-drop.ts +51 -0
  103. package/dist/src/lib/io/index.ts +7 -0
  104. package/dist/src/lib/io/is-binary.ts +24 -0
  105. package/dist/src/lib/io/types.ts +8 -0
  106. package/dist/src/lib/io/url-drop.ts +141 -0
  107. package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
  108. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
  109. package/dist/src/lib/isosurface/index.ts +7 -0
  110. package/dist/src/lib/isosurface/parse.ts +656 -0
  111. package/dist/src/lib/isosurface/slice.ts +175 -0
  112. package/dist/src/lib/isosurface/types.ts +309 -0
  113. package/dist/src/lib/labels.ts +320 -0
  114. package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
  115. package/dist/src/lib/layout/InfoCard.svelte +120 -0
  116. package/dist/src/lib/layout/InfoTag.svelte +185 -0
  117. package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
  118. package/dist/src/lib/layout/SettingsSection.svelte +148 -0
  119. package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
  120. package/dist/src/lib/layout/fullscreen.ts +65 -0
  121. package/dist/src/lib/layout/index.ts +11 -0
  122. package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
  123. package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
  124. package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
  125. package/dist/src/lib/layout/json-tree/index.ts +3 -0
  126. package/dist/src/lib/layout/json-tree/types.ts +126 -0
  127. package/dist/src/lib/layout/json-tree/utils.ts +682 -0
  128. package/dist/src/lib/marching-cubes.ts +614 -0
  129. package/dist/src/lib/math.ts +1081 -0
  130. package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
  131. package/dist/src/lib/overlays/CopyButton.svelte +45 -0
  132. package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
  133. package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
  134. package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
  135. package/dist/src/lib/overlays/index.ts +3 -0
  136. package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
  137. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
  138. package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
  139. package/dist/src/lib/periodic-table/index.ts +12 -0
  140. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  141. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
  142. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  143. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  144. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  145. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
  146. package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
  147. package/dist/src/lib/phase-diagram/colors.ts +58 -0
  148. package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
  149. package/dist/src/lib/phase-diagram/index.ts +13 -0
  150. package/dist/src/lib/phase-diagram/parse.ts +348 -0
  151. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
  152. package/dist/src/lib/phase-diagram/types.ts +144 -0
  153. package/dist/src/lib/phase-diagram/utils.ts +775 -0
  154. package/dist/src/lib/plot/AxisLabel.svelte +51 -0
  155. package/dist/src/lib/plot/BarPlot.svelte +2113 -0
  156. package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
  157. package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
  158. package/dist/src/lib/plot/ColorBar.svelte +721 -0
  159. package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
  160. package/dist/src/lib/plot/ElementScatter.svelte +63 -0
  161. package/dist/src/lib/plot/FillArea.svelte +223 -0
  162. package/dist/src/lib/plot/Histogram.svelte +1558 -0
  163. package/dist/src/lib/plot/HistogramControls.svelte +212 -0
  164. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
  165. package/dist/src/lib/plot/Line.svelte +84 -0
  166. package/dist/src/lib/plot/PlotAxis.svelte +169 -0
  167. package/dist/src/lib/plot/PlotControls.svelte +537 -0
  168. package/dist/src/lib/plot/PlotLegend.svelte +569 -0
  169. package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
  170. package/dist/src/lib/plot/PortalSelect.svelte +253 -0
  171. package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
  172. package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
  173. package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
  174. package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
  175. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
  176. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
  177. package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
  178. package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
  179. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
  180. package/dist/src/lib/plot/Surface3D.svelte +197 -0
  181. package/dist/src/lib/plot/ZeroLines.svelte +97 -0
  182. package/dist/src/lib/plot/ZoomRect.svelte +23 -0
  183. package/dist/src/lib/plot/adaptive-density.ts +316 -0
  184. package/dist/src/lib/plot/auto-place.ts +184 -0
  185. package/dist/src/lib/plot/axis-utils.ts +122 -0
  186. package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
  187. package/dist/src/lib/plot/data-cleaning.ts +1069 -0
  188. package/dist/src/lib/plot/data-transform.ts +69 -0
  189. package/dist/src/lib/plot/defaults.ts +9 -0
  190. package/dist/src/lib/plot/fill-utils.ts +494 -0
  191. package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
  192. package/dist/src/lib/plot/index.ts +53 -0
  193. package/dist/src/lib/plot/interactions.ts +119 -0
  194. package/dist/src/lib/plot/layout.ts +425 -0
  195. package/dist/src/lib/plot/reference-line.ts +426 -0
  196. package/dist/src/lib/plot/scales.ts +654 -0
  197. package/dist/src/lib/plot/svg.ts +23 -0
  198. package/dist/src/lib/plot/types.ts +1144 -0
  199. package/dist/src/lib/plot/utils/label-placement.ts +541 -0
  200. package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
  201. package/dist/src/lib/plot/utils.ts +11 -0
  202. package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
  203. package/dist/src/lib/rdf/calc-rdf.ts +167 -0
  204. package/dist/src/lib/rdf/index.ts +27 -0
  205. package/dist/src/lib/sanitize.ts +126 -0
  206. package/dist/src/lib/settings.ts +1479 -0
  207. package/dist/src/lib/spectral/Bands.svelte +1040 -0
  208. package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
  209. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
  210. package/dist/src/lib/spectral/Dos.svelte +697 -0
  211. package/dist/src/lib/spectral/helpers.ts +1381 -0
  212. package/dist/src/lib/spectral/index.ts +8 -0
  213. package/dist/src/lib/spectral/types.ts +112 -0
  214. package/dist/src/lib/state.svelte.ts +64 -0
  215. package/dist/src/lib/structure/Arrow.svelte +72 -0
  216. package/dist/src/lib/structure/AtomLegend.svelte +815 -0
  217. package/dist/src/lib/structure/Bond.svelte +140 -0
  218. package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
  219. package/dist/src/lib/structure/CellSelect.svelte +349 -0
  220. package/dist/src/lib/structure/Cylinder.svelte +45 -0
  221. package/dist/src/lib/structure/Lattice.svelte +196 -0
  222. package/dist/src/lib/structure/Structure.svelte +2248 -0
  223. package/dist/src/lib/structure/StructureControls.svelte +1273 -0
  224. package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
  225. package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
  226. package/dist/src/lib/structure/StructureScene.svelte +2255 -0
  227. package/dist/src/lib/structure/atom-properties.ts +316 -0
  228. package/dist/src/lib/structure/bond-order-perception.ts +447 -0
  229. package/dist/src/lib/structure/bonding.ts +944 -0
  230. package/dist/src/lib/structure/export.ts +861 -0
  231. package/dist/src/lib/structure/index.ts +291 -0
  232. package/dist/src/lib/structure/label-placement.ts +130 -0
  233. package/dist/src/lib/structure/measure.ts +45 -0
  234. package/dist/src/lib/structure/parse.ts +1705 -0
  235. package/dist/src/lib/structure/partial-occupancy.ts +183 -0
  236. package/dist/src/lib/structure/pbc.ts +164 -0
  237. package/dist/src/lib/structure/supercell.ts +226 -0
  238. package/dist/src/lib/structure/validation.ts +11 -0
  239. package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
  240. package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
  241. package/dist/src/lib/symmetry/cell-transform.ts +118 -0
  242. package/dist/src/lib/symmetry/index.ts +348 -0
  243. package/dist/src/lib/symmetry/spacegroups.ts +404 -0
  244. package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
  245. package/dist/src/lib/table/ToggleMenu.svelte +385 -0
  246. package/dist/src/lib/table/index.ts +139 -0
  247. package/dist/src/lib/theme/ThemeControl.svelte +53 -0
  248. package/dist/src/lib/theme/index.ts +107 -0
  249. package/dist/src/lib/theme/themes.mjs +297 -0
  250. package/dist/src/lib/time.ts +71 -0
  251. package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
  252. package/dist/src/lib/tooltip/index.ts +2 -0
  253. package/dist/src/lib/tooltip/types.ts +13 -0
  254. package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
  255. package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
  256. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
  257. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
  258. package/dist/src/lib/trajectory/constants.ts +7 -0
  259. package/dist/src/lib/trajectory/extract.ts +196 -0
  260. package/dist/src/lib/trajectory/format-detect.ts +96 -0
  261. package/dist/src/lib/trajectory/frame-reader.ts +456 -0
  262. package/dist/src/lib/trajectory/helpers.ts +217 -0
  263. package/dist/src/lib/trajectory/index.ts +218 -0
  264. package/dist/src/lib/trajectory/parse/ase.ts +109 -0
  265. package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
  266. package/dist/src/lib/trajectory/parse/index.ts +411 -0
  267. package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
  268. package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
  269. package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
  270. package/dist/src/lib/trajectory/plotting.ts +599 -0
  271. package/dist/src/lib/trajectory/types.ts +13 -0
  272. package/dist/src/lib/utils.ts +56 -0
  273. package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
  274. package/dist/src/lib/xrd/broadening.ts +130 -0
  275. package/dist/src/lib/xrd/calc-xrd.ts +397 -0
  276. package/dist/src/lib/xrd/index.ts +38 -0
  277. package/dist/src/lib/xrd/parse.ts +858 -0
  278. package/dist/webview.js +29421 -0
  279. package/icon.png +0 -0
  280. package/license +1 -1
  281. package/matterviz-0.3.2.vsix +0 -0
  282. package/matterviz-0.3.4.vsix +0 -0
  283. package/matterviz-0.3.5.vsix +0 -0
  284. package/package.json +1461 -231
  285. package/readme.md +171 -98
  286. package/scripts/sync-config.ts +101 -0
  287. package/src/declarations.d.ts +2 -0
  288. package/src/extension.ts +972 -0
  289. package/src/node-io.ts +65 -0
  290. package/src/types.ts +17 -0
  291. package/src/webview/JsonBrowser.svelte +1079 -0
  292. package/src/webview/PlotPanel.svelte +346 -0
  293. package/src/webview/detect.ts +444 -0
  294. package/src/webview/main.ts +764 -0
  295. package/src/webview/plot-utils.ts +250 -0
  296. package/test-fixtures/all-viz-types.json.gz +0 -0
  297. package/test-fixtures/plot-demo-data.json.gz +0 -0
  298. package/tests/detect.test.ts +604 -0
  299. package/tests/extension.test.ts +2041 -0
  300. package/tests/node-io.test.ts +39 -0
  301. package/tests/plot-utils.test.ts +302 -0
  302. package/tests/vite-plugin-json-gz.test.ts +114 -0
  303. package/tests/vscode-mock.ts +18 -0
  304. package/tests/webview.test.ts +231 -0
  305. package/tsconfig.json +20 -0
  306. package/vite-plugin-json-gz.ts +29 -0
  307. package/vite.config.ts +34 -0
  308. package/vite.extension.config.ts +34 -0
  309. package/dist/EmptyState.svelte.d.ts +0 -9
  310. package/dist/FilePicker.svelte +0 -360
  311. package/dist/FilePicker.svelte.d.ts +0 -17
  312. package/dist/Icon.svelte.d.ts +0 -13
  313. package/dist/MillerIndexInput.svelte +0 -66
  314. package/dist/MillerIndexInput.svelte.d.ts +0 -7
  315. package/dist/api/mp.d.ts +0 -6
  316. package/dist/api/mp.js +0 -22
  317. package/dist/api/optimade.d.ts +0 -45
  318. package/dist/api/optimade.js +0 -135
  319. package/dist/app.css +0 -240
  320. package/dist/brillouin/BrillouinZone.svelte +0 -543
  321. package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
  322. package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
  323. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
  324. package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
  325. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
  326. package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  327. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
  328. package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
  329. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
  330. package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
  331. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
  332. package/dist/brillouin/compute.d.ts +0 -17
  333. package/dist/brillouin/compute.js +0 -422
  334. package/dist/brillouin/index.d.ts +0 -8
  335. package/dist/brillouin/index.js +0 -8
  336. package/dist/brillouin/types.d.ts +0 -48
  337. package/dist/brillouin/types.js +0 -1
  338. package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
  339. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
  340. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
  341. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
  342. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
  343. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
  344. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
  345. package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
  346. package/dist/chempot-diagram/async-compute.svelte.js +0 -77
  347. package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
  348. package/dist/chempot-diagram/chempot-worker.js +0 -11
  349. package/dist/chempot-diagram/color.d.ts +0 -10
  350. package/dist/chempot-diagram/color.js +0 -32
  351. package/dist/chempot-diagram/compute.d.ts +0 -48
  352. package/dist/chempot-diagram/compute.js +0 -812
  353. package/dist/chempot-diagram/index.d.ts +0 -6
  354. package/dist/chempot-diagram/index.js +0 -6
  355. package/dist/chempot-diagram/pointer.d.ts +0 -16
  356. package/dist/chempot-diagram/pointer.js +0 -40
  357. package/dist/chempot-diagram/temperature.d.ts +0 -15
  358. package/dist/chempot-diagram/temperature.js +0 -36
  359. package/dist/chempot-diagram/types.d.ts +0 -86
  360. package/dist/chempot-diagram/types.js +0 -28
  361. package/dist/colors/index.d.ts +0 -47
  362. package/dist/colors/index.js +0 -203
  363. package/dist/composition/BarChart.svelte +0 -297
  364. package/dist/composition/BarChart.svelte.d.ts +0 -39
  365. package/dist/composition/BubbleChart.svelte +0 -218
  366. package/dist/composition/BubbleChart.svelte.d.ts +0 -28
  367. package/dist/composition/Composition.svelte +0 -164
  368. package/dist/composition/Composition.svelte.d.ts +0 -15
  369. package/dist/composition/Formula.svelte +0 -265
  370. package/dist/composition/Formula.svelte.d.ts +0 -19
  371. package/dist/composition/FormulaFilter.svelte +0 -1259
  372. package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
  373. package/dist/composition/PieChart.svelte +0 -323
  374. package/dist/composition/PieChart.svelte.d.ts +0 -37
  375. package/dist/composition/format.d.ts +0 -15
  376. package/dist/composition/format.js +0 -109
  377. package/dist/composition/index.d.ts +0 -20
  378. package/dist/composition/index.js +0 -14
  379. package/dist/composition/parse.d.ts +0 -55
  380. package/dist/composition/parse.js +0 -459
  381. package/dist/constants.d.ts +0 -29
  382. package/dist/constants.js +0 -105
  383. package/dist/controls.d.ts +0 -14
  384. package/dist/controls.js +0 -30
  385. package/dist/convex-hull/ConvexHull.svelte +0 -157
  386. package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
  387. package/dist/convex-hull/ConvexHull2D.svelte +0 -813
  388. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
  389. package/dist/convex-hull/ConvexHull3D.svelte +0 -1788
  390. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
  391. package/dist/convex-hull/ConvexHull4D.svelte +0 -1374
  392. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
  393. package/dist/convex-hull/ConvexHullControls.svelte +0 -546
  394. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
  395. package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -115
  396. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
  397. package/dist/convex-hull/ConvexHullStats.svelte +0 -905
  398. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
  399. package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
  400. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
  401. package/dist/convex-hull/GasPressureControls.svelte +0 -247
  402. package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
  403. package/dist/convex-hull/StructurePopup.svelte +0 -116
  404. package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
  405. package/dist/convex-hull/TemperatureSlider.svelte +0 -137
  406. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
  407. package/dist/convex-hull/barycentric-coords.d.ts +0 -18
  408. package/dist/convex-hull/barycentric-coords.js +0 -182
  409. package/dist/convex-hull/demo-temperature.d.ts +0 -6
  410. package/dist/convex-hull/demo-temperature.js +0 -40
  411. package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
  412. package/dist/convex-hull/gas-thermodynamics.js +0 -316
  413. package/dist/convex-hull/helpers.d.ts +0 -103
  414. package/dist/convex-hull/helpers.js +0 -671
  415. package/dist/convex-hull/index.d.ts +0 -118
  416. package/dist/convex-hull/index.js +0 -57
  417. package/dist/convex-hull/thermodynamics.d.ts +0 -66
  418. package/dist/convex-hull/thermodynamics.js +0 -1752
  419. package/dist/convex-hull/types.d.ts +0 -162
  420. package/dist/convex-hull/types.js +0 -36
  421. package/dist/coordination/CoordinationBarPlot.svelte +0 -311
  422. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
  423. package/dist/coordination/calc-coordination.d.ts +0 -15
  424. package/dist/coordination/calc-coordination.js +0 -63
  425. package/dist/coordination/index.d.ts +0 -8
  426. package/dist/coordination/index.js +0 -7
  427. package/dist/element/BohrAtom.svelte +0 -149
  428. package/dist/element/BohrAtom.svelte.d.ts +0 -20
  429. package/dist/element/ElementHeading.svelte +0 -26
  430. package/dist/element/ElementHeading.svelte.d.ts +0 -8
  431. package/dist/element/ElementPhoto.svelte +0 -57
  432. package/dist/element/ElementPhoto.svelte.d.ts +0 -9
  433. package/dist/element/ElementStats.svelte +0 -80
  434. package/dist/element/ElementStats.svelte.d.ts +0 -8
  435. package/dist/element/ElementTile.svelte +0 -484
  436. package/dist/element/ElementTile.svelte.d.ts +0 -29
  437. package/dist/element/Nucleus.svelte.d.ts +0 -17
  438. package/dist/element/data.d.ts +0 -3
  439. package/dist/element/data.js +0 -2
  440. package/dist/element/data.json.gz.d.ts +0 -2
  441. package/dist/element/index.d.ts +0 -8
  442. package/dist/element/index.js +0 -8
  443. package/dist/element/types.d.ts +0 -57
  444. package/dist/element/types.js +0 -1
  445. package/dist/feedback/ClickFeedback.svelte +0 -58
  446. package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
  447. package/dist/feedback/DragOverlay.svelte +0 -42
  448. package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
  449. package/dist/feedback/Spinner.svelte.d.ts +0 -7
  450. package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
  451. package/dist/feedback/index.d.ts +0 -4
  452. package/dist/feedback/index.js +0 -4
  453. package/dist/fermi-surface/FermiSlice.svelte +0 -189
  454. package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
  455. package/dist/fermi-surface/FermiSurface.svelte +0 -597
  456. package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
  457. package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
  458. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
  459. package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
  460. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
  461. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  462. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
  463. package/dist/fermi-surface/compute.d.ts +0 -5
  464. package/dist/fermi-surface/compute.js +0 -538
  465. package/dist/fermi-surface/constants.d.ts +0 -9
  466. package/dist/fermi-surface/constants.js +0 -27
  467. package/dist/fermi-surface/export.d.ts +0 -5
  468. package/dist/fermi-surface/export.js +0 -63
  469. package/dist/fermi-surface/index.d.ts +0 -12
  470. package/dist/fermi-surface/index.js +0 -13
  471. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  472. package/dist/fermi-surface/marching-cubes.js +0 -2
  473. package/dist/fermi-surface/parse.d.ts +0 -2
  474. package/dist/fermi-surface/parse.js +0 -495
  475. package/dist/fermi-surface/symmetry.d.ts +0 -3
  476. package/dist/fermi-surface/symmetry.js +0 -46
  477. package/dist/fermi-surface/types.d.ts +0 -113
  478. package/dist/fermi-surface/types.js +0 -4
  479. package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
  480. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
  481. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  482. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
  483. package/dist/heatmap-matrix/index.d.ts +0 -53
  484. package/dist/heatmap-matrix/index.js +0 -100
  485. package/dist/heatmap-matrix/shared.d.ts +0 -2
  486. package/dist/heatmap-matrix/shared.js +0 -4
  487. package/dist/icons.d.ts +0 -569
  488. package/dist/icons.js +0 -648
  489. package/dist/index.d.ts +0 -39
  490. package/dist/index.js +0 -39
  491. package/dist/io/decompress.d.ts +0 -10
  492. package/dist/io/decompress.js +0 -69
  493. package/dist/io/export.d.ts +0 -16
  494. package/dist/io/export.js +0 -312
  495. package/dist/io/fetch.d.ts +0 -5
  496. package/dist/io/fetch.js +0 -39
  497. package/dist/io/file-drop.d.ts +0 -7
  498. package/dist/io/file-drop.js +0 -43
  499. package/dist/io/index.d.ts +0 -7
  500. package/dist/io/index.js +0 -7
  501. package/dist/io/is-binary.d.ts +0 -1
  502. package/dist/io/is-binary.js +0 -5
  503. package/dist/io/types.d.ts +0 -8
  504. package/dist/io/types.js +0 -1
  505. package/dist/io/url-drop.d.ts +0 -2
  506. package/dist/io/url-drop.js +0 -117
  507. package/dist/isosurface/Isosurface.svelte +0 -285
  508. package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
  509. package/dist/isosurface/IsosurfaceControls.svelte +0 -291
  510. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
  511. package/dist/isosurface/index.d.ts +0 -5
  512. package/dist/isosurface/index.js +0 -6
  513. package/dist/isosurface/parse.d.ts +0 -6
  514. package/dist/isosurface/parse.js +0 -553
  515. package/dist/isosurface/slice.d.ts +0 -11
  516. package/dist/isosurface/slice.js +0 -140
  517. package/dist/isosurface/types.d.ts +0 -56
  518. package/dist/isosurface/types.js +0 -227
  519. package/dist/labels.d.ts +0 -53
  520. package/dist/labels.js +0 -274
  521. package/dist/layout/FullscreenToggle.svelte +0 -50
  522. package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
  523. package/dist/layout/InfoCard.svelte +0 -120
  524. package/dist/layout/InfoCard.svelte.d.ts +0 -21
  525. package/dist/layout/InfoTag.svelte +0 -183
  526. package/dist/layout/InfoTag.svelte.d.ts +0 -19
  527. package/dist/layout/PropertyFilter.svelte +0 -244
  528. package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
  529. package/dist/layout/SettingsSection.svelte +0 -148
  530. package/dist/layout/SettingsSection.svelte.d.ts +0 -17
  531. package/dist/layout/SubpageGrid.svelte +0 -82
  532. package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
  533. package/dist/layout/fullscreen.d.ts +0 -9
  534. package/dist/layout/fullscreen.js +0 -53
  535. package/dist/layout/index.d.ts +0 -10
  536. package/dist/layout/index.js +0 -8
  537. package/dist/layout/json-tree/JsonNode.svelte +0 -547
  538. package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
  539. package/dist/layout/json-tree/JsonTree.svelte +0 -1222
  540. package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
  541. package/dist/layout/json-tree/JsonValue.svelte +0 -334
  542. package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
  543. package/dist/layout/json-tree/index.d.ts +0 -3
  544. package/dist/layout/json-tree/index.js +0 -3
  545. package/dist/layout/json-tree/types.d.ts +0 -73
  546. package/dist/layout/json-tree/types.js +0 -3
  547. package/dist/layout/json-tree/utils.d.ts +0 -29
  548. package/dist/layout/json-tree/utils.js +0 -648
  549. package/dist/marching-cubes.d.ts +0 -14
  550. package/dist/marching-cubes.js +0 -542
  551. package/dist/math.d.ts +0 -91
  552. package/dist/math.js +0 -896
  553. package/dist/overlays/ContextMenu.svelte +0 -162
  554. package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
  555. package/dist/overlays/DraggablePane.svelte +0 -564
  556. package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
  557. package/dist/overlays/index.d.ts +0 -2
  558. package/dist/overlays/index.js +0 -2
  559. package/dist/periodic-table/PeriodicTable.svelte +0 -469
  560. package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
  561. package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
  562. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
  563. package/dist/periodic-table/PropertySelect.svelte +0 -37
  564. package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
  565. package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
  566. package/dist/periodic-table/index.d.ts +0 -10
  567. package/dist/periodic-table/index.js +0 -4
  568. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  569. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
  570. package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -451
  571. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
  572. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  573. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
  574. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
  575. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
  576. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
  577. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
  578. package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
  579. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
  580. package/dist/phase-diagram/build-diagram.d.ts +0 -11
  581. package/dist/phase-diagram/build-diagram.js +0 -167
  582. package/dist/phase-diagram/colors.d.ts +0 -35
  583. package/dist/phase-diagram/colors.js +0 -51
  584. package/dist/phase-diagram/diagram-input.d.ts +0 -33
  585. package/dist/phase-diagram/diagram-input.js +0 -3
  586. package/dist/phase-diagram/index.d.ts +0 -13
  587. package/dist/phase-diagram/index.js +0 -13
  588. package/dist/phase-diagram/parse.d.ts +0 -55
  589. package/dist/phase-diagram/parse.js +0 -276
  590. package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
  591. package/dist/phase-diagram/svg-to-diagram.js +0 -869
  592. package/dist/phase-diagram/types.d.ts +0 -99
  593. package/dist/phase-diagram/types.js +0 -1
  594. package/dist/phase-diagram/utils.d.ts +0 -118
  595. package/dist/phase-diagram/utils.js +0 -606
  596. package/dist/plot/AxisLabel.svelte +0 -51
  597. package/dist/plot/AxisLabel.svelte.d.ts +0 -16
  598. package/dist/plot/BarPlot.svelte +0 -2256
  599. package/dist/plot/BarPlot.svelte.d.ts +0 -82
  600. package/dist/plot/BarPlotControls.svelte +0 -66
  601. package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
  602. package/dist/plot/ColorBar.svelte +0 -719
  603. package/dist/plot/ColorBar.svelte.d.ts +0 -31
  604. package/dist/plot/ColorScaleSelect.svelte +0 -54
  605. package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
  606. package/dist/plot/ElementScatter.svelte +0 -63
  607. package/dist/plot/ElementScatter.svelte.d.ts +0 -14
  608. package/dist/plot/FillArea.svelte +0 -226
  609. package/dist/plot/FillArea.svelte.d.ts +0 -20
  610. package/dist/plot/Histogram.svelte +0 -1654
  611. package/dist/plot/Histogram.svelte.d.ts +0 -50
  612. package/dist/plot/HistogramControls.svelte +0 -212
  613. package/dist/plot/HistogramControls.svelte.d.ts +0 -22
  614. package/dist/plot/InteractiveAxisLabel.svelte +0 -94
  615. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
  616. package/dist/plot/Line.svelte +0 -85
  617. package/dist/plot/Line.svelte.d.ts +0 -15
  618. package/dist/plot/PlotControls.svelte +0 -537
  619. package/dist/plot/PlotControls.svelte.d.ts +0 -4
  620. package/dist/plot/PlotLegend.svelte +0 -498
  621. package/dist/plot/PlotLegend.svelte.d.ts +0 -25
  622. package/dist/plot/PlotTooltip.svelte +0 -67
  623. package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
  624. package/dist/plot/PortalSelect.svelte +0 -253
  625. package/dist/plot/PortalSelect.svelte.d.ts +0 -16
  626. package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
  627. package/dist/plot/ReferenceLine3D.svelte +0 -154
  628. package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
  629. package/dist/plot/ReferencePlane.svelte +0 -178
  630. package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
  631. package/dist/plot/ScatterPlot.svelte +0 -2831
  632. package/dist/plot/ScatterPlot.svelte.d.ts +0 -92
  633. package/dist/plot/ScatterPlot3D.svelte +0 -499
  634. package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
  635. package/dist/plot/ScatterPlot3DControls.svelte +0 -437
  636. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
  637. package/dist/plot/ScatterPlot3DScene.svelte +0 -912
  638. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
  639. package/dist/plot/ScatterPlotControls.svelte +0 -307
  640. package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
  641. package/dist/plot/ScatterPoint.svelte +0 -185
  642. package/dist/plot/ScatterPoint.svelte.d.ts +0 -19
  643. package/dist/plot/SpacegroupBarPlot.svelte +0 -292
  644. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
  645. package/dist/plot/Surface3D.svelte +0 -200
  646. package/dist/plot/Surface3D.svelte.d.ts +0 -13
  647. package/dist/plot/ZeroLines.svelte +0 -96
  648. package/dist/plot/ZeroLines.svelte.d.ts +0 -32
  649. package/dist/plot/ZoomRect.svelte +0 -23
  650. package/dist/plot/ZoomRect.svelte.d.ts +0 -8
  651. package/dist/plot/axis-utils.d.ts +0 -19
  652. package/dist/plot/axis-utils.js +0 -80
  653. package/dist/plot/data-cleaning.d.ts +0 -37
  654. package/dist/plot/data-cleaning.js +0 -855
  655. package/dist/plot/data-transform.d.ts +0 -16
  656. package/dist/plot/data-transform.js +0 -45
  657. package/dist/plot/defaults.d.ts +0 -19
  658. package/dist/plot/defaults.js +0 -9
  659. package/dist/plot/fill-utils.d.ts +0 -51
  660. package/dist/plot/fill-utils.js +0 -337
  661. package/dist/plot/hover-lock.svelte.d.ts +0 -14
  662. package/dist/plot/hover-lock.svelte.js +0 -46
  663. package/dist/plot/index.d.ts +0 -43
  664. package/dist/plot/index.js +0 -37
  665. package/dist/plot/interactions.d.ts +0 -12
  666. package/dist/plot/interactions.js +0 -100
  667. package/dist/plot/layout.d.ts +0 -60
  668. package/dist/plot/layout.js +0 -230
  669. package/dist/plot/reference-line.d.ts +0 -60
  670. package/dist/plot/reference-line.js +0 -316
  671. package/dist/plot/scales.d.ts +0 -48
  672. package/dist/plot/scales.js +0 -484
  673. package/dist/plot/svg.d.ts +0 -1
  674. package/dist/plot/svg.js +0 -11
  675. package/dist/plot/types.d.ts +0 -863
  676. package/dist/plot/types.js +0 -103
  677. package/dist/plot/utils/label-placement.d.ts +0 -47
  678. package/dist/plot/utils/label-placement.js +0 -256
  679. package/dist/plot/utils/series-visibility.d.ts +0 -9
  680. package/dist/plot/utils/series-visibility.js +0 -67
  681. package/dist/plot/utils.d.ts +0 -1
  682. package/dist/plot/utils.js +0 -14
  683. package/dist/rdf/RdfPlot.svelte +0 -247
  684. package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
  685. package/dist/rdf/calc-rdf.d.ts +0 -4
  686. package/dist/rdf/calc-rdf.js +0 -111
  687. package/dist/rdf/index.d.ts +0 -23
  688. package/dist/rdf/index.js +0 -2
  689. package/dist/sanitize.d.ts +0 -4
  690. package/dist/sanitize.js +0 -107
  691. package/dist/settings.d.ts +0 -253
  692. package/dist/settings.js +0 -1123
  693. package/dist/spectral/Bands.svelte +0 -1040
  694. package/dist/spectral/Bands.svelte.d.ts +0 -40
  695. package/dist/spectral/BandsAndDos.svelte +0 -128
  696. package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
  697. package/dist/spectral/BrillouinBandsDos.svelte +0 -248
  698. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
  699. package/dist/spectral/Dos.svelte +0 -697
  700. package/dist/spectral/Dos.svelte.d.ts +0 -29
  701. package/dist/spectral/helpers.d.ts +0 -117
  702. package/dist/spectral/helpers.js +0 -1023
  703. package/dist/spectral/index.d.ts +0 -6
  704. package/dist/spectral/index.js +0 -7
  705. package/dist/spectral/types.d.ts +0 -84
  706. package/dist/spectral/types.js +0 -2
  707. package/dist/state.svelte.d.ts +0 -25
  708. package/dist/state.svelte.js +0 -45
  709. package/dist/structure/Arrow.svelte +0 -72
  710. package/dist/structure/Arrow.svelte.d.ts +0 -15
  711. package/dist/structure/AtomLegend.svelte +0 -798
  712. package/dist/structure/AtomLegend.svelte.d.ts +0 -34
  713. package/dist/structure/Bond.svelte +0 -140
  714. package/dist/structure/Bond.svelte.d.ts +0 -9
  715. package/dist/structure/CanvasTooltip.svelte +0 -33
  716. package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
  717. package/dist/structure/CellSelect.svelte +0 -351
  718. package/dist/structure/CellSelect.svelte.d.ts +0 -13
  719. package/dist/structure/Cylinder.svelte +0 -45
  720. package/dist/structure/Cylinder.svelte.d.ts +0 -10
  721. package/dist/structure/Lattice.svelte +0 -196
  722. package/dist/structure/Lattice.svelte.d.ts +0 -17
  723. package/dist/structure/Structure.svelte +0 -1857
  724. package/dist/structure/Structure.svelte.d.ts +0 -83
  725. package/dist/structure/StructureControls.svelte +0 -1184
  726. package/dist/structure/StructureControls.svelte.d.ts +0 -31
  727. package/dist/structure/StructureExportPane.svelte +0 -251
  728. package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
  729. package/dist/structure/StructureInfoPane.svelte +0 -434
  730. package/dist/structure/StructureInfoPane.svelte.d.ts +0 -18
  731. package/dist/structure/StructureScene.svelte +0 -1574
  732. package/dist/structure/StructureScene.svelte.d.ts +0 -104
  733. package/dist/structure/atom-properties.d.ts +0 -37
  734. package/dist/structure/atom-properties.js +0 -198
  735. package/dist/structure/bonding.d.ts +0 -33
  736. package/dist/structure/bonding.js +0 -304
  737. package/dist/structure/export.d.ts +0 -20
  738. package/dist/structure/export.js +0 -725
  739. package/dist/structure/ferrox-wasm-types.d.ts +0 -46
  740. package/dist/structure/ferrox-wasm-types.js +0 -18
  741. package/dist/structure/ferrox-wasm.d.ts +0 -94
  742. package/dist/structure/ferrox-wasm.js +0 -249
  743. package/dist/structure/index.d.ts +0 -110
  744. package/dist/structure/index.js +0 -168
  745. package/dist/structure/measure.d.ts +0 -6
  746. package/dist/structure/measure.js +0 -29
  747. package/dist/structure/parse.d.ts +0 -65
  748. package/dist/structure/parse.js +0 -1374
  749. package/dist/structure/partial-occupancy.d.ts +0 -25
  750. package/dist/structure/partial-occupancy.js +0 -99
  751. package/dist/structure/pbc.d.ts +0 -9
  752. package/dist/structure/pbc.js +0 -123
  753. package/dist/structure/supercell.d.ts +0 -8
  754. package/dist/structure/supercell.js +0 -137
  755. package/dist/structure/validation.d.ts +0 -2
  756. package/dist/structure/validation.js +0 -10
  757. package/dist/symmetry/SymmetryStats.svelte +0 -226
  758. package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
  759. package/dist/symmetry/WyckoffTable.svelte +0 -113
  760. package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
  761. package/dist/symmetry/cell-transform.d.ts +0 -12
  762. package/dist/symmetry/cell-transform.js +0 -77
  763. package/dist/symmetry/index.d.ts +0 -43
  764. package/dist/symmetry/index.js +0 -229
  765. package/dist/symmetry/spacegroups.d.ts +0 -9
  766. package/dist/symmetry/spacegroups.js +0 -394
  767. package/dist/table/HeatmapTable.svelte +0 -1854
  768. package/dist/table/HeatmapTable.svelte.d.ts +0 -49
  769. package/dist/table/ToggleMenu.svelte +0 -376
  770. package/dist/table/ToggleMenu.svelte.d.ts +0 -11
  771. package/dist/table/index.d.ts +0 -74
  772. package/dist/table/index.js +0 -38
  773. package/dist/theme/ThemeControl.svelte +0 -53
  774. package/dist/theme/ThemeControl.svelte.d.ts +0 -9
  775. package/dist/theme/index.d.ts +0 -29
  776. package/dist/theme/index.js +0 -79
  777. package/dist/theme/themes.mjs +0 -285
  778. package/dist/time.d.ts +0 -4
  779. package/dist/time.js +0 -70
  780. package/dist/tooltip/TooltipContent.svelte +0 -58
  781. package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
  782. package/dist/tooltip/index.d.ts +0 -2
  783. package/dist/tooltip/index.js +0 -2
  784. package/dist/tooltip/types.d.ts +0 -8
  785. package/dist/tooltip/types.js +0 -1
  786. package/dist/trajectory/Trajectory.svelte +0 -1517
  787. package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
  788. package/dist/trajectory/TrajectoryError.svelte +0 -128
  789. package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
  790. package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
  791. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
  792. package/dist/trajectory/TrajectoryInfoPane.svelte +0 -387
  793. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
  794. package/dist/trajectory/constants.d.ts +0 -6
  795. package/dist/trajectory/constants.js +0 -7
  796. package/dist/trajectory/extract.d.ts +0 -5
  797. package/dist/trajectory/extract.js +0 -162
  798. package/dist/trajectory/format-detect.d.ts +0 -9
  799. package/dist/trajectory/format-detect.js +0 -76
  800. package/dist/trajectory/frame-reader.d.ts +0 -17
  801. package/dist/trajectory/frame-reader.js +0 -332
  802. package/dist/trajectory/helpers.d.ts +0 -14
  803. package/dist/trajectory/helpers.js +0 -172
  804. package/dist/trajectory/index.d.ts +0 -63
  805. package/dist/trajectory/index.js +0 -126
  806. package/dist/trajectory/parse/ase.d.ts +0 -2
  807. package/dist/trajectory/parse/ase.js +0 -77
  808. package/dist/trajectory/parse/hdf5.d.ts +0 -2
  809. package/dist/trajectory/parse/hdf5.js +0 -129
  810. package/dist/trajectory/parse/index.d.ts +0 -12
  811. package/dist/trajectory/parse/index.js +0 -299
  812. package/dist/trajectory/parse/lammps.d.ts +0 -5
  813. package/dist/trajectory/parse/lammps.js +0 -179
  814. package/dist/trajectory/parse/vasp.d.ts +0 -2
  815. package/dist/trajectory/parse/vasp.js +0 -68
  816. package/dist/trajectory/parse/xyz.d.ts +0 -2
  817. package/dist/trajectory/parse/xyz.js +0 -110
  818. package/dist/trajectory/plotting.d.ts +0 -28
  819. package/dist/trajectory/plotting.js +0 -423
  820. package/dist/trajectory/types.d.ts +0 -11
  821. package/dist/trajectory/types.js +0 -1
  822. package/dist/utils.d.ts +0 -5
  823. package/dist/utils.js +0 -36
  824. package/dist/xrd/XrdPlot.svelte +0 -615
  825. package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
  826. package/dist/xrd/broadening.d.ts +0 -20
  827. package/dist/xrd/broadening.js +0 -97
  828. package/dist/xrd/calc-xrd.d.ts +0 -37
  829. package/dist/xrd/calc-xrd.js +0 -337
  830. package/dist/xrd/index.d.ts +0 -37
  831. package/dist/xrd/index.js +0 -4
  832. package/dist/xrd/parse.d.ts +0 -13
  833. package/dist/xrd/parse.js +0 -749
  834. /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
  835. /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
  836. /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
  837. /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
  838. /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
  839. /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
  840. /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
  841. /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
  842. /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
  843. /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
  844. /package/dist/{element → src/lib/element}/data.json +0 -0
  845. /package/dist/{element → src/lib/element}/data.json.gz +0 -0
  846. /package/dist/{element → src/lib/element}/data.schema.json +0 -0
  847. /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
  848. /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
  849. /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
  850. /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
  851. /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
  852. /package/dist/{xrd → src/lib/xrd}/atomic_scattering_params.json +0 -0
@@ -0,0 +1,656 @@
1
+ // Parsers for volumetric data file formats (VASP CHGCAR, Gaussian .cube)
2
+ import { COMPRESSION_EXTENSIONS_REGEX, VASP_VOLUMETRIC_REGEX } from '$lib/constants'
3
+ import type { ElementSymbol } from '$lib/element'
4
+ import { ELEM_SYMBOLS } from '$lib/labels'
5
+ import type { Matrix3x3, Vec3 } from '$lib/math'
6
+ import * as math from '$lib/math'
7
+ import type { Site } from '$lib/structure'
8
+ import { wrap_to_unit_cell } from '$lib/structure/pbc'
9
+ import type { ParsedStructure } from '$lib/structure/parse'
10
+ import type { DataRange, VolumetricData, VolumetricFileData } from './types'
11
+
12
+ // Bohr radius in Angstroms (for Gaussian .cube unit conversion)
13
+ const BOHR_TO_ANGSTROM = 0.529177249
14
+
15
+ // === Fast number parsing utilities ===
16
+
17
+ // Parse whitespace-separated numbers directly from a string, starting at `pos`.
18
+ // Writes into a pre-allocated Float64Array and returns { count, end_pos }.
19
+ // Stops at `max_count` numbers, end of string, or when encountering a line
20
+ // starting with a letter (e.g. "augmentation" in CHGCAR).
21
+ function parse_float_block(
22
+ text: string,
23
+ pos: number,
24
+ max_count: number,
25
+ data: Float64Array,
26
+ data_offset: number = 0,
27
+ ): { count: number; end_pos: number } {
28
+ let idx = data_offset
29
+ const target = data_offset + max_count
30
+ const len = text.length
31
+
32
+ while (idx < target && pos < len) {
33
+ // Skip whitespace
34
+ let char_code = text.charCodeAt(pos)
35
+ while (pos < len && char_code <= 32) {
36
+ // After a newline, check if the next non-space char is a letter (section break)
37
+ if (char_code === 10 || char_code === 13) {
38
+ let peek = pos + 1
39
+ // Skip \r\n combo
40
+ if (char_code === 13 && peek < len && text.charCodeAt(peek) === 10) peek++
41
+ // Skip leading spaces on the new line
42
+ while (peek < len && text.charCodeAt(peek) === 32) peek++
43
+ if (peek < len) {
44
+ const next_char = text.charCodeAt(peek)
45
+ // Letter a-z or A-Z signals a non-numeric line (e.g. "augmentation")
46
+ if ((next_char >= 65 && next_char <= 90) || (next_char >= 97 && next_char <= 122)) {
47
+ return { count: idx - data_offset, end_pos: pos }
48
+ }
49
+ }
50
+ }
51
+ char_code = text.charCodeAt(++pos)
52
+ }
53
+ if (pos >= len) break
54
+
55
+ // Find end of token
56
+ const start = pos
57
+ while (pos < len && text.charCodeAt(pos) > 32) pos++
58
+
59
+ // Parse number using unary + (handles scientific notation)
60
+ const num = +text.substring(start, pos)
61
+ if (!Number.isNaN(num)) {
62
+ data[idx++] = num
63
+ }
64
+ }
65
+ return { count: idx - data_offset, end_pos: pos }
66
+ }
67
+
68
+ // Find the character offset for line N in a string (0-indexed).
69
+ // Much faster than splitting the entire string into lines.
70
+ function find_line_offset(text: string, target_line: number): number {
71
+ let line = 0
72
+ let pos = 0
73
+ while (line < target_line && pos < text.length) {
74
+ if (text.charCodeAt(pos) === 10) line++
75
+ pos++
76
+ }
77
+ return pos
78
+ }
79
+
80
+ // Read a single line from text at the given offset, returning the line and next offset
81
+ function read_line(text: string, pos: number): { line: string; next: number } {
82
+ let end = pos
83
+ while (end < text.length && text.charCodeAt(end) !== 10 && text.charCodeAt(end) !== 13) end++
84
+ const line = text.substring(pos, end)
85
+ let next = end
86
+ if (next < text.length && text.charCodeAt(next) === 13) next++ // skip \r
87
+ if (next < text.length && text.charCodeAt(next) === 10) next++ // skip \n
88
+ return { line, next }
89
+ }
90
+
91
+ // Read N lines starting from pos, returning array of trimmed lines and final offset
92
+ function read_lines(
93
+ text: string,
94
+ pos: number,
95
+ count: number,
96
+ ): { lines: string[]; next: number } {
97
+ const result: string[] = []
98
+ for (let idx = 0; idx < count; idx++) {
99
+ const { line, next } = read_line(text, pos)
100
+ result.push(line.trim())
101
+ pos = next
102
+ }
103
+ return { lines: result, next: pos }
104
+ }
105
+
106
+ // Build 3D grid directly from Float64Array, computing data_range in the same pass.
107
+ type BuildGridOptions = {
108
+ data: Float64Array
109
+ nx: number
110
+ ny: number
111
+ nz: number
112
+ divisor?: number
113
+ data_order?: `x_fastest` | `z_fastest`
114
+ }
115
+
116
+ function build_grid({
117
+ data,
118
+ nx,
119
+ ny,
120
+ nz,
121
+ divisor = 1,
122
+ data_order = `z_fastest`,
123
+ }: BuildGridOptions): { grid: number[][][]; data_range: DataRange } {
124
+ const grid: number[][][] = Array(nx)
125
+ let [min_val, max_val, sum] = [Infinity, -Infinity, 0]
126
+ const total = nx * ny * nz
127
+ const data_len = Math.min(data.length, total)
128
+
129
+ if (data_len === 0) {
130
+ // Empty data: return zeroed grid with neutral data_range
131
+ for (let ix = 0; ix < nx; ix++) {
132
+ const plane: number[][] = Array(ny)
133
+ for (let iy = 0; iy < ny; iy++) plane[iy] = Array(nz).fill(0)
134
+ grid[ix] = plane
135
+ }
136
+ return { grid, data_range: { min: 0, max: 0, abs_max: 0, mean: 0 } }
137
+ }
138
+
139
+ if (data_order === `z_fastest`) {
140
+ // .cube convention: z varies fastest, then y, then x.
141
+ const ny_nz = ny * nz
142
+ for (let ix = 0; ix < nx; ix++) {
143
+ const plane: number[][] = Array(ny)
144
+ for (let iy = 0; iy < ny; iy++) {
145
+ const row = Array(nz).fill(0)
146
+ const base = ix * ny_nz + iy * nz
147
+ const row_end = Math.min(base + nz, data_len)
148
+ for (let flat_idx = base; flat_idx < row_end; flat_idx++) {
149
+ const val = data[flat_idx] / divisor
150
+ row[flat_idx - base] = val
151
+ if (val < min_val) min_val = val
152
+ if (val > max_val) max_val = val
153
+ sum += val
154
+ }
155
+ plane[iy] = row
156
+ }
157
+ grid[ix] = plane
158
+ }
159
+ } else {
160
+ // VASP CHGCAR/ELFCAR/LOCPOT convention: x varies fastest, then y, then z.
161
+ for (let ix = 0; ix < nx; ix++) {
162
+ const plane: number[][] = Array(ny)
163
+ for (let iy = 0; iy < ny; iy++) plane[iy] = Array(nz).fill(0)
164
+ grid[ix] = plane
165
+ }
166
+ let [flat_idx, data_exhausted] = [0, false]
167
+ for (let iz = 0; iz < nz; iz++) {
168
+ for (let iy = 0; iy < ny; iy++) {
169
+ for (let ix = 0; ix < nx; ix++) {
170
+ if (flat_idx >= data_len) {
171
+ data_exhausted = true
172
+ break
173
+ }
174
+ const val = data[flat_idx] / divisor
175
+ grid[ix][iy][iz] = val
176
+ if (val < min_val) min_val = val
177
+ if (val > max_val) max_val = val
178
+ sum += val
179
+ flat_idx++
180
+ }
181
+ if (data_exhausted) break
182
+ }
183
+ if (data_exhausted) break
184
+ }
185
+ }
186
+
187
+ const abs_max = Math.max(Math.abs(min_val), Math.abs(max_val))
188
+ const data_range = { min: min_val, max: max_val, abs_max, mean: sum / data_len }
189
+ return { grid, data_range }
190
+ }
191
+
192
+ // === CHGCAR Parser ===
193
+
194
+ // Parse VASP CHGCAR/AECCAR/ELFCAR/LOCPOT/PARCHG file format.
195
+ // CHGCAR/PARCHG consists of a POSCAR header followed by volumetric data on a 3D grid.
196
+ // Spin-polarized files contain two data blocks (total charge + magnetization).
197
+ export function parse_chgcar(content: string): VolumetricFileData | null {
198
+ // Strip leading whitespace
199
+ let pos = 0
200
+ while (pos < content.length && content.charCodeAt(pos) <= 32) pos++
201
+
202
+ // Parse header line by line (only the first ~20 lines, not the whole file)
203
+ // Line 0: comment
204
+ let cur = read_line(content, pos)
205
+ pos = cur.next
206
+
207
+ // Line 1: scale factor
208
+ cur = read_line(content, pos)
209
+ const scale_factor = parseFloat(cur.line)
210
+ if (isNaN(scale_factor)) {
211
+ console.error(`Invalid scaling factor in CHGCAR`)
212
+ return null
213
+ }
214
+ pos = cur.next
215
+
216
+ // Lines 2-4: lattice vectors
217
+ const parse_vector = (line: string): Vec3 =>
218
+ math.scale(line.trim().split(/\s+/).slice(0, 3).map(Number) as Vec3, scale_factor)
219
+
220
+ const lat_lines = read_lines(content, pos, 3)
221
+ const lattice: Matrix3x3 = [
222
+ parse_vector(lat_lines.lines[0]),
223
+ parse_vector(lat_lines.lines[1]),
224
+ parse_vector(lat_lines.lines[2]),
225
+ ]
226
+ pos = lat_lines.next
227
+
228
+ // Lines 5+: element symbols and atom counts
229
+ let element_symbols: string[] = []
230
+ let atom_counts: number[] = []
231
+
232
+ cur = read_line(content, pos)
233
+ if (pos >= content.length) {
234
+ console.error(`CHGCAR: file ends before element/count lines`)
235
+ return null
236
+ }
237
+
238
+ // Detect VASP 5+ format (has element symbols before counts)
239
+ const first_token = cur.line.trim().split(/\s+/)[0]
240
+ const has_element_symbols = isNaN(parseInt(first_token))
241
+
242
+ if (has_element_symbols) {
243
+ element_symbols = cur.line.trim().split(/\s+/)
244
+ pos = cur.next
245
+ cur = read_line(content, pos)
246
+ if (pos >= content.length) {
247
+ console.error(`CHGCAR: file ends before atom counts line`)
248
+ return null
249
+ }
250
+ atom_counts = cur.line.trim().split(/\s+/).map(Number)
251
+ pos = cur.next
252
+ } else {
253
+ atom_counts = cur.line.trim().split(/\s+/).map(Number)
254
+ const fallback_elements = [`H`, `He`, `Li`, `Be`, `B`, `C`, `N`, `O`, `F`, `Ne`]
255
+ element_symbols = atom_counts.map(
256
+ (_count, idx) => fallback_elements[idx % fallback_elements.length],
257
+ )
258
+ pos = cur.next
259
+ }
260
+
261
+ if (pos >= content.length) {
262
+ console.error(`CHGCAR: file ends before coordinate mode line`)
263
+ return null
264
+ }
265
+
266
+ // Check for selective dynamics line
267
+ cur = read_line(content, pos)
268
+ if (cur.line.trim().toUpperCase().startsWith(`S`)) {
269
+ pos = cur.next // skip selective dynamics line
270
+ cur = read_line(content, pos)
271
+ }
272
+
273
+ if (pos >= content.length) {
274
+ console.error(`CHGCAR: file ends before coordinate mode line`)
275
+ return null
276
+ }
277
+
278
+ // Coordinate mode line
279
+ const is_direct = cur.line.trim().toUpperCase().startsWith(`D`)
280
+ pos = cur.next
281
+
282
+ // Parse atomic positions
283
+ let cart_to_frac: (v: Vec3) => Vec3
284
+ let frac_to_cart: (v: Vec3) => Vec3
285
+ try {
286
+ ;({ cart_to_frac, frac_to_cart } = math.create_lattice_converters(lattice))
287
+ } catch {
288
+ console.error(`CHGCAR: lattice matrix is singular; cannot convert coordinates`)
289
+ return null
290
+ }
291
+ const sites: Site[] = []
292
+ let atom_idx = 0
293
+
294
+ for (let elem_idx = 0; elem_idx < element_symbols.length; elem_idx++) {
295
+ const symbol = element_symbols[elem_idx].split(/[_/]/)[0]
296
+ const element = (
297
+ ELEM_SYMBOLS.includes(symbol as ElementSymbol) ? symbol : `H`
298
+ ) as ElementSymbol
299
+ const count = atom_counts[elem_idx]
300
+
301
+ for (let count_idx = 0; count_idx < count; count_idx++) {
302
+ if (pos >= content.length) {
303
+ console.error(`CHGCAR: file ends before all atom coordinates are read`)
304
+ return null
305
+ }
306
+ cur = read_line(content, pos)
307
+ const coords = cur.line.trim().split(/\s+/).slice(0, 3).map(Number) as Vec3
308
+ pos = cur.next
309
+
310
+ let abc: Vec3
311
+ let xyz: Vec3
312
+
313
+ if (is_direct) {
314
+ abc = wrap_to_unit_cell(coords)
315
+ xyz = frac_to_cart(abc)
316
+ } else {
317
+ xyz = math.scale(coords, scale_factor)
318
+ const raw = cart_to_frac(xyz)
319
+ abc = wrap_to_unit_cell(raw)
320
+ }
321
+
322
+ sites.push({
323
+ species: [{ element, occu: 1, oxidation_state: 0 }],
324
+ abc,
325
+ xyz,
326
+ label: `${element}${atom_idx + count_idx + 1}`,
327
+ properties: {},
328
+ })
329
+ }
330
+ atom_idx += count
331
+ }
332
+
333
+ // Build the structure (volumetric files are always periodic)
334
+ const lattice_params = math.calc_lattice_params(lattice)
335
+ const structure: ParsedStructure = {
336
+ sites,
337
+ lattice: { matrix: lattice, pbc: [true, true, true], ...lattice_params },
338
+ }
339
+
340
+ // Parse volumetric data blocks
341
+ const volumes: VolumetricData[] = []
342
+ const volume_labels = [`charge density`, `magnetization density`]
343
+
344
+ for (let vol_idx = 0; vol_idx < 2; vol_idx++) {
345
+ // Skip blank lines
346
+ while (pos < content.length) {
347
+ cur = read_line(content, pos)
348
+ if (cur.line.trim() !== ``) break
349
+ pos = cur.next
350
+ }
351
+
352
+ if (pos >= content.length) break
353
+
354
+ // Parse grid dimensions: NGX NGY NGZ
355
+ cur = read_line(content, pos)
356
+ const grid_tokens = cur.line.trim().split(/\s+/).map(Number)
357
+ if (grid_tokens.length < 3 || grid_tokens.some(isNaN)) break
358
+
359
+ const [ngx, ngy, ngz] = grid_tokens
360
+ pos = cur.next
361
+
362
+ // Fast-parse volumetric data directly from the string
363
+ const total_points = ngx * ngy * ngz
364
+ const data = new Float64Array(total_points)
365
+ const { count: parsed_count, end_pos } = parse_float_block(
366
+ content,
367
+ pos,
368
+ total_points,
369
+ data,
370
+ )
371
+ pos = end_pos
372
+
373
+ if (parsed_count < total_points) {
374
+ console.warn(
375
+ `CHGCAR volume ${vol_idx}: expected ${total_points} values, got ${parsed_count}`,
376
+ )
377
+ if (parsed_count === 0) break
378
+ }
379
+
380
+ // CHGCAR stores rho * V_cell, so normalize by dividing by cell volume.
381
+ // Use Math.abs to guard against negative determinant (left-handed lattice).
382
+ const cell_volume = Math.abs(lattice_params.volume)
383
+ const divisor = cell_volume > 1e-30 ? cell_volume : 1
384
+ const { grid, data_range } = build_grid({
385
+ data: data.subarray(0, parsed_count),
386
+ nx: ngx,
387
+ ny: ngy,
388
+ nz: ngz,
389
+ divisor,
390
+ data_order: `x_fastest`,
391
+ })
392
+
393
+ volumes.push({
394
+ grid,
395
+ grid_dims: [ngx, ngy, ngz],
396
+ lattice,
397
+ origin: [0, 0, 0],
398
+ data_range,
399
+ data_order: `x_fastest`,
400
+ periodic: true, // VASP grids span [0,1) with N points, wrapping at boundaries
401
+ label: volume_labels[vol_idx],
402
+ })
403
+
404
+ // Skip augmentation occupancies and any remaining non-numeric lines
405
+ while (pos < content.length) {
406
+ cur = read_line(content, pos)
407
+ const trimmed = cur.line.trim()
408
+ if (trimmed === `` || /^\d+\s+\d+\s+\d+$/.test(trimmed)) break
409
+ pos = cur.next
410
+ }
411
+ }
412
+
413
+ if (volumes.length === 0) {
414
+ console.error(`No volumetric data found in CHGCAR`)
415
+ return null
416
+ }
417
+
418
+ return { structure, volumes }
419
+ }
420
+
421
+ // === Gaussian .cube Parser ===
422
+
423
+ // Parse Gaussian .cube file format.
424
+ // Contains atomic structure and volumetric data in a single file.
425
+ // Units: if grid dimensions are positive, coordinates are in Bohr; if negative, in Angstrom.
426
+ export function parse_cube(
427
+ content: string,
428
+ options: { periodic?: boolean } = {},
429
+ ): VolumetricFileData | null {
430
+ // Quick line count check: need at least 7 lines (2 title + 1 header + 3 voxel + 1 atom)
431
+ let line_count = 0
432
+ for (let idx = 0; idx < content.length && line_count < 7; idx++) {
433
+ if (content.charCodeAt(idx) === 10) line_count++
434
+ }
435
+ if (line_count < 6) {
436
+ console.error(`.cube file too short`)
437
+ return null
438
+ }
439
+
440
+ // Parse header (first 6 lines + atom lines)
441
+ let pos = 0
442
+ const header = read_lines(content, pos, 6)
443
+ pos = header.next
444
+
445
+ // Line 2: n_atoms, origin_x, origin_y, origin_z
446
+ // (negative n_atoms indicates orbital data with extra header line)
447
+ const line2 = header.lines[2].split(/\s+/).map(Number)
448
+ if (line2.length < 4 || line2.some(isNaN)) {
449
+ console.error(`.cube header line 3 malformed: expected 4 numbers`)
450
+ return null
451
+ }
452
+ const n_atoms = Math.abs(line2[0])
453
+ const has_orbital_header = line2[0] < 0
454
+ const raw_origin: Vec3 = [line2[1], line2[2], line2[3]]
455
+
456
+ // Lines 3-5: grid dimensions and voxel vectors
457
+ // Positive N means coordinates in Bohr, negative N means Angstrom
458
+ const voxel_lines = [
459
+ header.lines[3].split(/\s+/).map(Number),
460
+ header.lines[4].split(/\s+/).map(Number),
461
+ header.lines[5].split(/\s+/).map(Number),
462
+ ]
463
+ if (voxel_lines.some((line) => line.length < 4 || line.some(isNaN))) {
464
+ console.error(`.cube voxel lines malformed: expected 4 numbers per line`)
465
+ return null
466
+ }
467
+
468
+ const n_grid: Vec3 = [
469
+ Math.abs(voxel_lines[0][0]),
470
+ Math.abs(voxel_lines[1][0]),
471
+ Math.abs(voxel_lines[2][0]),
472
+ ]
473
+
474
+ // Per Gaussian .cube convention, the sign of the first axis N determines units
475
+ const is_bohr = voxel_lines[0][0] > 0
476
+ const unit_scale = is_bohr ? BOHR_TO_ANGSTROM : 1.0
477
+
478
+ // Voxel vectors (convert to Angstrom if needed)
479
+ const [voxel_a, voxel_b, voxel_c] = voxel_lines.map((line) =>
480
+ math.scale(line.slice(1, 4) as Vec3, unit_scale),
481
+ )
482
+
483
+ // Lattice vectors = grid_dim * voxel_vector
484
+ const lattice: Matrix3x3 = [
485
+ math.scale(voxel_a, n_grid[0]),
486
+ math.scale(voxel_b, n_grid[1]),
487
+ math.scale(voxel_c, n_grid[2]),
488
+ ]
489
+
490
+ const origin = math.scale(raw_origin, unit_scale)
491
+
492
+ // Periodicity: use explicit override if provided, else heuristic based on origin.
493
+ // Molecular .cube files have a non-zero origin (bounding box offset); periodic
494
+ // systems (QE, CP2K) have origin at (0,0,0). Pass { periodic: true/false } to
495
+ // override when the heuristic is wrong (e.g. molecule centered at origin).
496
+ const is_periodic = options.periodic ?? Math.hypot(...origin) < 1e-6
497
+
498
+ // Parse atomic positions
499
+ const sites: Site[] = []
500
+ let cube_cart_to_frac: (v: Vec3) => Vec3
501
+ try {
502
+ cube_cart_to_frac = math.create_cart_to_frac(lattice)
503
+ } catch {
504
+ // Non-periodic system (molecule), use identity
505
+ cube_cart_to_frac = (v: Vec3): Vec3 => [v[0], v[1], v[2]]
506
+ }
507
+
508
+ for (let atom_idx = 0; atom_idx < n_atoms; atom_idx++) {
509
+ const cur = read_line(content, pos)
510
+ const atom_line = cur.line.trim().split(/\s+/).map(Number)
511
+ pos = cur.next
512
+
513
+ // Validate: need atomic_number, charge, x, y, z (5 tokens, indices 2-4 finite)
514
+ if (
515
+ atom_line.length < 5 ||
516
+ !isFinite(atom_line[2]) ||
517
+ !isFinite(atom_line[3]) ||
518
+ !isFinite(atom_line[4])
519
+ ) {
520
+ console.warn(`.cube atom ${atom_idx}: malformed line "${cur.line.trim()}", skipping`)
521
+ continue
522
+ }
523
+
524
+ // atom_line[1] is the charge (often 0)
525
+ const raw_xyz = math.scale([atom_line[2], atom_line[3], atom_line[4]] as Vec3, unit_scale)
526
+
527
+ // Convert Cartesian to fractional, accounting for origin offset.
528
+ // Store lattice-frame xyz (shifted) so abc and xyz stay consistent.
529
+ const xyz = math.subtract(raw_xyz, origin)
530
+ const abc = cube_cart_to_frac(xyz)
531
+
532
+ const element = atomic_number_to_symbol(atom_line[0])
533
+ sites.push({
534
+ species: [{ element, occu: 1, oxidation_state: 0 }],
535
+ abc,
536
+ xyz,
537
+ label: `${element}${atom_idx + 1}`,
538
+ properties: {},
539
+ })
540
+ }
541
+
542
+ // Build structure
543
+ const lattice_params = math.calc_lattice_params(lattice)
544
+ const structure: ParsedStructure = {
545
+ sites,
546
+ lattice: {
547
+ matrix: lattice,
548
+ pbc: [is_periodic, is_periodic, is_periodic],
549
+ ...lattice_params,
550
+ },
551
+ }
552
+
553
+ // Skip orbital header line if present
554
+ if (has_orbital_header && pos < content.length) {
555
+ const cur = read_line(content, pos)
556
+ pos = cur.next
557
+ }
558
+
559
+ // Fast-parse volumetric data directly from the string
560
+ const total_points = n_grid[0] * n_grid[1] * n_grid[2]
561
+ const data = new Float64Array(total_points)
562
+ const { count: parsed_count } = parse_float_block(content, pos, total_points, data)
563
+
564
+ if (parsed_count < total_points) {
565
+ console.warn(`.cube: expected ${total_points} data values, got ${parsed_count}`)
566
+ if (parsed_count === 0) {
567
+ console.error(`No volumetric data found in .cube file`)
568
+ return null
569
+ }
570
+ }
571
+
572
+ const { grid, data_range } = build_grid({
573
+ data: data.subarray(0, parsed_count),
574
+ nx: n_grid[0],
575
+ ny: n_grid[1],
576
+ nz: n_grid[2],
577
+ data_order: `z_fastest`,
578
+ })
579
+
580
+ const volumes: VolumetricData[] = [
581
+ {
582
+ grid,
583
+ grid_dims: n_grid,
584
+ lattice,
585
+ origin,
586
+ data_range,
587
+ data_order: `z_fastest`,
588
+ periodic: is_periodic, // periodic systems wrap; molecular .cube files include both endpoints
589
+ label: `volumetric data`,
590
+ },
591
+ ]
592
+
593
+ return { structure, volumes }
594
+ }
595
+
596
+ // Convert atomic number to element symbol using ELEM_SYMBOLS (1-indexed: H=1, He=2, ...)
597
+ function atomic_number_to_symbol(atomic_number: number): ElementSymbol {
598
+ // ELEM_SYMBOLS is 0-indexed (H at index 0), atomic numbers are 1-indexed
599
+ const idx = atomic_number - 1
600
+ return idx >= 0 && idx < ELEM_SYMBOLS.length ? ELEM_SYMBOLS[idx] : `H`
601
+ }
602
+
603
+ // Auto-detect and parse volumetric file format based on filename and content
604
+ export function parse_volumetric_file(
605
+ content: string,
606
+ filename?: string,
607
+ ): VolumetricFileData | null {
608
+ // Strip compression suffixes so "CHGCAR.gz" and "molecule.cube.bz2" match correctly
609
+ const lower_name = (filename ?? ``).toLowerCase().replace(COMPRESSION_EXTENSIONS_REGEX, ``)
610
+
611
+ // Extension-based detection
612
+ if (lower_name.endsWith(`.cube`)) return parse_cube(content)
613
+
614
+ // VASP volumetric file detection by filename
615
+ if (VASP_VOLUMETRIC_REGEX.test(lower_name)) return parse_chgcar(content)
616
+
617
+ // Content-based detection (only parse first few lines, not the whole file)
618
+ // Find enough lines for detection without splitting the entire string
619
+ const detection_end = find_line_offset(content, 10)
620
+ const detection_text = content.substring(0, detection_end)
621
+ const lines = detection_text.split(/\r?\n/)
622
+
623
+ // .cube detection: line 3 has 4 numbers (n_atoms + origin), line 4 has 4 numbers (grid dim + voxel)
624
+ if (lines.length > 4) {
625
+ const line2_tokens = lines[2].trim().split(/\s+/)
626
+ const line3_tokens = lines[3].trim().split(/\s+/)
627
+ if (
628
+ line2_tokens.length === 4 &&
629
+ line3_tokens.length === 4 &&
630
+ line2_tokens.every((tok) => !isNaN(Number(tok))) &&
631
+ line3_tokens.every((tok) => !isNaN(Number(tok)))
632
+ ) {
633
+ return parse_cube(content)
634
+ }
635
+ }
636
+
637
+ // CHGCAR detection: requires POSCAR-like header (scale factor on line 2) AND
638
+ // a grid dimensions line (3 integers) somewhere after the header. This distinguishes
639
+ // CHGCAR from plain POSCAR/CONTCAR files which share the same header format.
640
+ if (lines.length > 2 && !isNaN(parseFloat(lines[1].trim()))) {
641
+ // Scan for grid dimensions line (3 integers) starting from ~line 7
642
+ let scan_pos = find_line_offset(content, 7)
643
+ // Only scan a limited window, not the entire file
644
+ // Scan enough to cover large atom blocks (~100 chars/atom × ~200 atoms max)
645
+ const scan_end = Math.min(content.length, scan_pos + 25000)
646
+ while (scan_pos < scan_end) {
647
+ const { line, next } = read_line(content, scan_pos)
648
+ if (/^\s*\d+\s+\d+\s+\d+\s*$/.test(line)) {
649
+ return parse_chgcar(content)
650
+ }
651
+ scan_pos = next
652
+ }
653
+ }
654
+
655
+ return null
656
+ }