matterviz 0.3.5 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (855) 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/brillouin/BrillouinZone.svelte +549 -0
  14. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
  15. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
  16. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  17. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
  18. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
  19. package/dist/src/lib/brillouin/compute.ts +529 -0
  20. package/dist/src/lib/brillouin/index.ts +8 -0
  21. package/dist/src/lib/brillouin/types.ts +51 -0
  22. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
  23. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  24. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  25. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
  26. package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
  27. package/dist/src/lib/chempot-diagram/color.ts +42 -0
  28. package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
  29. package/dist/src/lib/chempot-diagram/index.ts +6 -0
  30. package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
  31. package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
  32. package/dist/src/lib/chempot-diagram/types.ts +130 -0
  33. package/dist/src/lib/colors/index.ts +249 -0
  34. package/dist/src/lib/composition/BarChart.svelte +297 -0
  35. package/dist/src/lib/composition/BubbleChart.svelte +218 -0
  36. package/dist/src/lib/composition/Composition.svelte +165 -0
  37. package/dist/src/lib/composition/Formula.svelte +268 -0
  38. package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
  39. package/dist/src/lib/composition/PieChart.svelte +323 -0
  40. package/dist/src/lib/composition/format.ts +155 -0
  41. package/dist/src/lib/composition/index.ts +37 -0
  42. package/dist/src/lib/composition/parse.ts +605 -0
  43. package/dist/src/lib/constants.ts +134 -0
  44. package/dist/src/lib/controls.ts +42 -0
  45. package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
  46. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
  47. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
  48. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
  49. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
  50. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
  51. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
  52. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
  53. package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
  54. package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
  55. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
  56. package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
  57. package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
  58. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
  59. package/dist/src/lib/convex-hull/helpers.ts +932 -0
  60. package/dist/src/lib/convex-hull/index.ts +202 -0
  61. package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
  62. package/dist/src/lib/convex-hull/types.ts +267 -0
  63. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
  64. package/dist/src/lib/coordination/calc-coordination.ts +93 -0
  65. package/dist/src/lib/coordination/index.ts +9 -0
  66. package/dist/src/lib/effects.svelte.ts +48 -0
  67. package/dist/src/lib/element/BohrAtom.svelte +147 -0
  68. package/dist/src/lib/element/ElementHeading.svelte +26 -0
  69. package/dist/src/lib/element/ElementPhoto.svelte +57 -0
  70. package/dist/src/lib/element/ElementStats.svelte +80 -0
  71. package/dist/src/lib/element/ElementTile.svelte +484 -0
  72. package/dist/src/lib/element/data.json.gz.d.ts +4 -0
  73. package/dist/src/lib/element/data.ts +14 -0
  74. package/dist/src/lib/element/index.ts +8 -0
  75. package/dist/src/lib/element/types.ts +62 -0
  76. package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
  77. package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
  78. package/dist/src/lib/feedback/index.ts +4 -0
  79. package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
  80. package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
  81. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
  82. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
  83. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  84. package/dist/src/lib/fermi-surface/compute.ts +728 -0
  85. package/dist/src/lib/fermi-surface/constants.ts +32 -0
  86. package/dist/src/lib/fermi-surface/export.ts +64 -0
  87. package/dist/src/lib/fermi-surface/index.ts +14 -0
  88. package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
  89. package/dist/src/lib/fermi-surface/parse.ts +574 -0
  90. package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
  91. package/dist/src/lib/fermi-surface/types.ts +159 -0
  92. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  93. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  94. package/dist/src/lib/heatmap-matrix/index.ts +167 -0
  95. package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
  96. package/dist/src/lib/icons.ts +650 -0
  97. package/dist/src/lib/index.ts +61 -0
  98. package/dist/src/lib/io/decompress.ts +92 -0
  99. package/dist/src/lib/io/export.ts +385 -0
  100. package/dist/src/lib/io/fetch.ts +46 -0
  101. package/dist/src/lib/io/file-drop.ts +51 -0
  102. package/dist/src/lib/io/index.ts +7 -0
  103. package/dist/src/lib/io/is-binary.ts +24 -0
  104. package/dist/src/lib/io/types.ts +8 -0
  105. package/dist/src/lib/io/url-drop.ts +141 -0
  106. package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
  107. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
  108. package/dist/src/lib/isosurface/index.ts +7 -0
  109. package/dist/src/lib/isosurface/parse.ts +656 -0
  110. package/dist/src/lib/isosurface/slice.ts +175 -0
  111. package/dist/src/lib/isosurface/types.ts +309 -0
  112. package/dist/src/lib/labels.ts +320 -0
  113. package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
  114. package/dist/src/lib/layout/InfoCard.svelte +120 -0
  115. package/dist/src/lib/layout/InfoTag.svelte +185 -0
  116. package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
  117. package/dist/src/lib/layout/SettingsSection.svelte +148 -0
  118. package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
  119. package/dist/src/lib/layout/fullscreen.ts +65 -0
  120. package/dist/src/lib/layout/index.ts +11 -0
  121. package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
  122. package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
  123. package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
  124. package/dist/src/lib/layout/json-tree/index.ts +3 -0
  125. package/dist/src/lib/layout/json-tree/types.ts +126 -0
  126. package/dist/src/lib/layout/json-tree/utils.ts +682 -0
  127. package/dist/src/lib/marching-cubes.ts +614 -0
  128. package/dist/src/lib/math.ts +1081 -0
  129. package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
  130. package/dist/src/lib/overlays/CopyButton.svelte +45 -0
  131. package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
  132. package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
  133. package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
  134. package/dist/src/lib/overlays/index.ts +3 -0
  135. package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
  136. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
  137. package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
  138. package/dist/src/lib/periodic-table/index.ts +12 -0
  139. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  140. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
  141. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  142. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  143. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  144. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
  145. package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
  146. package/dist/src/lib/phase-diagram/colors.ts +58 -0
  147. package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
  148. package/dist/src/lib/phase-diagram/index.ts +13 -0
  149. package/dist/src/lib/phase-diagram/parse.ts +348 -0
  150. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
  151. package/dist/src/lib/phase-diagram/types.ts +144 -0
  152. package/dist/src/lib/phase-diagram/utils.ts +775 -0
  153. package/dist/src/lib/plot/AxisLabel.svelte +51 -0
  154. package/dist/src/lib/plot/BarPlot.svelte +2113 -0
  155. package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
  156. package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
  157. package/dist/src/lib/plot/ColorBar.svelte +721 -0
  158. package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
  159. package/dist/src/lib/plot/ElementScatter.svelte +63 -0
  160. package/dist/src/lib/plot/FillArea.svelte +223 -0
  161. package/dist/src/lib/plot/Histogram.svelte +1558 -0
  162. package/dist/src/lib/plot/HistogramControls.svelte +212 -0
  163. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
  164. package/dist/src/lib/plot/Line.svelte +84 -0
  165. package/dist/src/lib/plot/PlotAxis.svelte +169 -0
  166. package/dist/src/lib/plot/PlotControls.svelte +537 -0
  167. package/dist/src/lib/plot/PlotLegend.svelte +569 -0
  168. package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
  169. package/dist/src/lib/plot/PortalSelect.svelte +253 -0
  170. package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
  171. package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
  172. package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
  173. package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
  174. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
  175. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
  176. package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
  177. package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
  178. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
  179. package/dist/src/lib/plot/Surface3D.svelte +197 -0
  180. package/dist/src/lib/plot/ZeroLines.svelte +97 -0
  181. package/dist/src/lib/plot/ZoomRect.svelte +23 -0
  182. package/dist/src/lib/plot/adaptive-density.ts +316 -0
  183. package/dist/src/lib/plot/auto-place.ts +184 -0
  184. package/dist/src/lib/plot/axis-utils.ts +122 -0
  185. package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
  186. package/dist/src/lib/plot/data-cleaning.ts +1069 -0
  187. package/dist/src/lib/plot/data-transform.ts +69 -0
  188. package/dist/src/lib/plot/defaults.ts +9 -0
  189. package/dist/src/lib/plot/fill-utils.ts +494 -0
  190. package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
  191. package/dist/src/lib/plot/index.ts +53 -0
  192. package/dist/src/lib/plot/interactions.ts +119 -0
  193. package/dist/src/lib/plot/layout.ts +425 -0
  194. package/dist/src/lib/plot/reference-line.ts +426 -0
  195. package/dist/src/lib/plot/scales.ts +654 -0
  196. package/dist/src/lib/plot/svg.ts +23 -0
  197. package/dist/src/lib/plot/types.ts +1144 -0
  198. package/dist/src/lib/plot/utils/label-placement.ts +541 -0
  199. package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
  200. package/dist/src/lib/plot/utils.ts +11 -0
  201. package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
  202. package/dist/src/lib/rdf/calc-rdf.ts +167 -0
  203. package/dist/src/lib/rdf/index.ts +27 -0
  204. package/dist/src/lib/sanitize.ts +126 -0
  205. package/dist/src/lib/settings.ts +1479 -0
  206. package/dist/src/lib/spectral/Bands.svelte +1040 -0
  207. package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
  208. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
  209. package/dist/src/lib/spectral/Dos.svelte +697 -0
  210. package/dist/src/lib/spectral/helpers.ts +1381 -0
  211. package/dist/src/lib/spectral/index.ts +8 -0
  212. package/dist/src/lib/spectral/types.ts +112 -0
  213. package/dist/src/lib/state.svelte.ts +64 -0
  214. package/dist/src/lib/structure/Arrow.svelte +72 -0
  215. package/dist/src/lib/structure/AtomLegend.svelte +815 -0
  216. package/dist/src/lib/structure/Bond.svelte +140 -0
  217. package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
  218. package/dist/src/lib/structure/CellSelect.svelte +349 -0
  219. package/dist/src/lib/structure/Cylinder.svelte +45 -0
  220. package/dist/src/lib/structure/Lattice.svelte +196 -0
  221. package/dist/src/lib/structure/Structure.svelte +2248 -0
  222. package/dist/src/lib/structure/StructureControls.svelte +1273 -0
  223. package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
  224. package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
  225. package/dist/src/lib/structure/StructureScene.svelte +2255 -0
  226. package/dist/src/lib/structure/atom-properties.ts +316 -0
  227. package/dist/src/lib/structure/bond-order-perception.ts +447 -0
  228. package/dist/src/lib/structure/bonding.ts +944 -0
  229. package/dist/src/lib/structure/export.ts +861 -0
  230. package/dist/src/lib/structure/index.ts +291 -0
  231. package/dist/src/lib/structure/label-placement.ts +130 -0
  232. package/dist/src/lib/structure/measure.ts +45 -0
  233. package/dist/src/lib/structure/parse.ts +1705 -0
  234. package/dist/src/lib/structure/partial-occupancy.ts +183 -0
  235. package/dist/src/lib/structure/pbc.ts +164 -0
  236. package/dist/src/lib/structure/supercell.ts +226 -0
  237. package/dist/src/lib/structure/validation.ts +11 -0
  238. package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
  239. package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
  240. package/dist/src/lib/symmetry/cell-transform.ts +118 -0
  241. package/dist/src/lib/symmetry/index.ts +348 -0
  242. package/dist/src/lib/symmetry/spacegroups.ts +404 -0
  243. package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
  244. package/dist/src/lib/table/ToggleMenu.svelte +385 -0
  245. package/dist/src/lib/table/index.ts +139 -0
  246. package/dist/src/lib/theme/ThemeControl.svelte +53 -0
  247. package/dist/src/lib/theme/index.ts +107 -0
  248. package/dist/src/lib/theme/themes.mjs +297 -0
  249. package/dist/src/lib/time.ts +71 -0
  250. package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
  251. package/dist/src/lib/tooltip/index.ts +2 -0
  252. package/dist/src/lib/tooltip/types.ts +13 -0
  253. package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
  254. package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
  255. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
  256. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
  257. package/dist/src/lib/trajectory/constants.ts +7 -0
  258. package/dist/src/lib/trajectory/extract.ts +196 -0
  259. package/dist/src/lib/trajectory/format-detect.ts +96 -0
  260. package/dist/src/lib/trajectory/frame-reader.ts +456 -0
  261. package/dist/src/lib/trajectory/helpers.ts +217 -0
  262. package/dist/src/lib/trajectory/index.ts +218 -0
  263. package/dist/src/lib/trajectory/parse/ase.ts +109 -0
  264. package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
  265. package/dist/src/lib/trajectory/parse/index.ts +411 -0
  266. package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
  267. package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
  268. package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
  269. package/dist/src/lib/trajectory/plotting.ts +599 -0
  270. package/dist/src/lib/trajectory/types.ts +13 -0
  271. package/dist/src/lib/utils.ts +56 -0
  272. package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
  273. package/dist/src/lib/xrd/broadening.ts +130 -0
  274. package/dist/src/lib/xrd/calc-xrd.ts +397 -0
  275. package/dist/src/lib/xrd/index.ts +38 -0
  276. package/dist/src/lib/xrd/parse.ts +858 -0
  277. package/dist/webview.js +29421 -0
  278. package/icon.png +0 -0
  279. package/license +1 -1
  280. package/matterviz-0.3.2.vsix +0 -0
  281. package/matterviz-0.3.4.vsix +0 -0
  282. package/matterviz-0.3.5.vsix +0 -0
  283. package/package.json +1460 -215
  284. package/readme.md +171 -98
  285. package/scripts/sync-config.ts +101 -0
  286. package/src/declarations.d.ts +2 -0
  287. package/src/extension.ts +972 -0
  288. package/src/node-io.ts +65 -0
  289. package/src/types.ts +17 -0
  290. package/src/webview/JsonBrowser.svelte +1079 -0
  291. package/src/webview/PlotPanel.svelte +346 -0
  292. package/src/webview/detect.ts +444 -0
  293. package/src/webview/main.ts +764 -0
  294. package/src/webview/plot-utils.ts +250 -0
  295. package/test-fixtures/all-viz-types.json.gz +0 -0
  296. package/test-fixtures/plot-demo-data.json.gz +0 -0
  297. package/tests/detect.test.ts +604 -0
  298. package/tests/extension.test.ts +2041 -0
  299. package/tests/node-io.test.ts +39 -0
  300. package/tests/plot-utils.test.ts +302 -0
  301. package/tests/vite-plugin-json-gz.test.ts +114 -0
  302. package/tests/vscode-mock.ts +18 -0
  303. package/tests/webview.test.ts +231 -0
  304. package/tsconfig.json +20 -0
  305. package/vite-plugin-json-gz.ts +29 -0
  306. package/vite.config.ts +34 -0
  307. package/vite.extension.config.ts +34 -0
  308. package/dist/EmptyState.svelte.d.ts +0 -9
  309. package/dist/FilePicker.svelte +0 -360
  310. package/dist/FilePicker.svelte.d.ts +0 -17
  311. package/dist/Icon.svelte.d.ts +0 -13
  312. package/dist/MillerIndexInput.svelte +0 -66
  313. package/dist/MillerIndexInput.svelte.d.ts +0 -7
  314. package/dist/api/mp.d.ts +0 -6
  315. package/dist/api/mp.js +0 -22
  316. package/dist/api/optimade.d.ts +0 -45
  317. package/dist/api/optimade.js +0 -135
  318. package/dist/brillouin/BrillouinZone.svelte +0 -546
  319. package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
  320. package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
  321. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
  322. package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
  323. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
  324. package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  325. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
  326. package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
  327. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
  328. package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
  329. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
  330. package/dist/brillouin/compute.d.ts +0 -17
  331. package/dist/brillouin/compute.js +0 -426
  332. package/dist/brillouin/index.d.ts +0 -8
  333. package/dist/brillouin/index.js +0 -8
  334. package/dist/brillouin/types.d.ts +0 -48
  335. package/dist/brillouin/types.js +0 -1
  336. package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
  337. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
  338. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
  339. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
  340. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
  341. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
  342. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
  343. package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
  344. package/dist/chempot-diagram/async-compute.svelte.js +0 -78
  345. package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
  346. package/dist/chempot-diagram/chempot-worker.js +0 -11
  347. package/dist/chempot-diagram/color.d.ts +0 -10
  348. package/dist/chempot-diagram/color.js +0 -32
  349. package/dist/chempot-diagram/compute.d.ts +0 -48
  350. package/dist/chempot-diagram/compute.js +0 -812
  351. package/dist/chempot-diagram/index.d.ts +0 -6
  352. package/dist/chempot-diagram/index.js +0 -6
  353. package/dist/chempot-diagram/pointer.d.ts +0 -16
  354. package/dist/chempot-diagram/pointer.js +0 -40
  355. package/dist/chempot-diagram/temperature.d.ts +0 -15
  356. package/dist/chempot-diagram/temperature.js +0 -36
  357. package/dist/chempot-diagram/types.d.ts +0 -86
  358. package/dist/chempot-diagram/types.js +0 -28
  359. package/dist/colors/index.d.ts +0 -47
  360. package/dist/colors/index.js +0 -203
  361. package/dist/composition/BarChart.svelte +0 -297
  362. package/dist/composition/BarChart.svelte.d.ts +0 -39
  363. package/dist/composition/BubbleChart.svelte +0 -218
  364. package/dist/composition/BubbleChart.svelte.d.ts +0 -28
  365. package/dist/composition/Composition.svelte +0 -164
  366. package/dist/composition/Composition.svelte.d.ts +0 -15
  367. package/dist/composition/Formula.svelte +0 -265
  368. package/dist/composition/Formula.svelte.d.ts +0 -19
  369. package/dist/composition/FormulaFilter.svelte +0 -1259
  370. package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
  371. package/dist/composition/PieChart.svelte +0 -323
  372. package/dist/composition/PieChart.svelte.d.ts +0 -37
  373. package/dist/composition/format.d.ts +0 -15
  374. package/dist/composition/format.js +0 -109
  375. package/dist/composition/index.d.ts +0 -20
  376. package/dist/composition/index.js +0 -14
  377. package/dist/composition/parse.d.ts +0 -55
  378. package/dist/composition/parse.js +0 -459
  379. package/dist/constants.d.ts +0 -29
  380. package/dist/constants.js +0 -99
  381. package/dist/controls.d.ts +0 -14
  382. package/dist/controls.js +0 -30
  383. package/dist/convex-hull/ConvexHull.svelte +0 -157
  384. package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
  385. package/dist/convex-hull/ConvexHull2D.svelte +0 -814
  386. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
  387. package/dist/convex-hull/ConvexHull3D.svelte +0 -1790
  388. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
  389. package/dist/convex-hull/ConvexHull4D.svelte +0 -1386
  390. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
  391. package/dist/convex-hull/ConvexHullControls.svelte +0 -546
  392. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
  393. package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -122
  394. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
  395. package/dist/convex-hull/ConvexHullStats.svelte +0 -922
  396. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
  397. package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
  398. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
  399. package/dist/convex-hull/GasPressureControls.svelte +0 -247
  400. package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
  401. package/dist/convex-hull/StructurePopup.svelte +0 -116
  402. package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
  403. package/dist/convex-hull/TemperatureSlider.svelte +0 -137
  404. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
  405. package/dist/convex-hull/barycentric-coords.d.ts +0 -18
  406. package/dist/convex-hull/barycentric-coords.js +0 -182
  407. package/dist/convex-hull/demo-temperature.d.ts +0 -6
  408. package/dist/convex-hull/demo-temperature.js +0 -40
  409. package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
  410. package/dist/convex-hull/gas-thermodynamics.js +0 -316
  411. package/dist/convex-hull/helpers.d.ts +0 -103
  412. package/dist/convex-hull/helpers.js +0 -689
  413. package/dist/convex-hull/index.d.ts +0 -118
  414. package/dist/convex-hull/index.js +0 -57
  415. package/dist/convex-hull/thermodynamics.d.ts +0 -66
  416. package/dist/convex-hull/thermodynamics.js +0 -1752
  417. package/dist/convex-hull/types.d.ts +0 -162
  418. package/dist/convex-hull/types.js +0 -36
  419. package/dist/coordination/CoordinationBarPlot.svelte +0 -311
  420. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
  421. package/dist/coordination/calc-coordination.d.ts +0 -15
  422. package/dist/coordination/calc-coordination.js +0 -63
  423. package/dist/coordination/index.d.ts +0 -8
  424. package/dist/coordination/index.js +0 -7
  425. package/dist/element/BohrAtom.svelte +0 -147
  426. package/dist/element/BohrAtom.svelte.d.ts +0 -20
  427. package/dist/element/ElementHeading.svelte +0 -26
  428. package/dist/element/ElementHeading.svelte.d.ts +0 -8
  429. package/dist/element/ElementPhoto.svelte +0 -57
  430. package/dist/element/ElementPhoto.svelte.d.ts +0 -9
  431. package/dist/element/ElementStats.svelte +0 -80
  432. package/dist/element/ElementStats.svelte.d.ts +0 -8
  433. package/dist/element/ElementTile.svelte +0 -484
  434. package/dist/element/ElementTile.svelte.d.ts +0 -29
  435. package/dist/element/Nucleus.svelte.d.ts +0 -17
  436. package/dist/element/data.d.ts +0 -2
  437. package/dist/element/data.js +0 -2
  438. package/dist/element/data.json.gz.d.ts +0 -2
  439. package/dist/element/index.d.ts +0 -8
  440. package/dist/element/index.js +0 -8
  441. package/dist/element/types.d.ts +0 -57
  442. package/dist/element/types.js +0 -1
  443. package/dist/feedback/ClickFeedback.svelte +0 -58
  444. package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
  445. package/dist/feedback/DragOverlay.svelte +0 -42
  446. package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
  447. package/dist/feedback/Spinner.svelte.d.ts +0 -7
  448. package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
  449. package/dist/feedback/index.d.ts +0 -4
  450. package/dist/feedback/index.js +0 -4
  451. package/dist/fermi-surface/FermiSlice.svelte +0 -189
  452. package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
  453. package/dist/fermi-surface/FermiSurface.svelte +0 -600
  454. package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
  455. package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
  456. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
  457. package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
  458. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
  459. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  460. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
  461. package/dist/fermi-surface/compute.d.ts +0 -5
  462. package/dist/fermi-surface/compute.js +0 -538
  463. package/dist/fermi-surface/constants.d.ts +0 -9
  464. package/dist/fermi-surface/constants.js +0 -27
  465. package/dist/fermi-surface/export.d.ts +0 -5
  466. package/dist/fermi-surface/export.js +0 -63
  467. package/dist/fermi-surface/index.d.ts +0 -12
  468. package/dist/fermi-surface/index.js +0 -13
  469. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  470. package/dist/fermi-surface/marching-cubes.js +0 -2
  471. package/dist/fermi-surface/parse.d.ts +0 -2
  472. package/dist/fermi-surface/parse.js +0 -495
  473. package/dist/fermi-surface/symmetry.d.ts +0 -3
  474. package/dist/fermi-surface/symmetry.js +0 -46
  475. package/dist/fermi-surface/types.d.ts +0 -113
  476. package/dist/fermi-surface/types.js +0 -4
  477. package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
  478. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
  479. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  480. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
  481. package/dist/heatmap-matrix/index.d.ts +0 -53
  482. package/dist/heatmap-matrix/index.js +0 -100
  483. package/dist/heatmap-matrix/shared.d.ts +0 -2
  484. package/dist/heatmap-matrix/shared.js +0 -4
  485. package/dist/icons.d.ts +0 -569
  486. package/dist/icons.js +0 -648
  487. package/dist/index.d.ts +0 -39
  488. package/dist/index.js +0 -39
  489. package/dist/io/decompress.d.ts +0 -10
  490. package/dist/io/decompress.js +0 -74
  491. package/dist/io/export.d.ts +0 -16
  492. package/dist/io/export.js +0 -316
  493. package/dist/io/fetch.d.ts +0 -5
  494. package/dist/io/fetch.js +0 -39
  495. package/dist/io/file-drop.d.ts +0 -7
  496. package/dist/io/file-drop.js +0 -43
  497. package/dist/io/index.d.ts +0 -7
  498. package/dist/io/index.js +0 -7
  499. package/dist/io/is-binary.d.ts +0 -1
  500. package/dist/io/is-binary.js +0 -20
  501. package/dist/io/types.d.ts +0 -8
  502. package/dist/io/types.js +0 -1
  503. package/dist/io/url-drop.d.ts +0 -2
  504. package/dist/io/url-drop.js +0 -117
  505. package/dist/isosurface/Isosurface.svelte +0 -285
  506. package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
  507. package/dist/isosurface/IsosurfaceControls.svelte +0 -291
  508. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
  509. package/dist/isosurface/index.d.ts +0 -5
  510. package/dist/isosurface/index.js +0 -6
  511. package/dist/isosurface/parse.d.ts +0 -6
  512. package/dist/isosurface/parse.js +0 -553
  513. package/dist/isosurface/slice.d.ts +0 -11
  514. package/dist/isosurface/slice.js +0 -140
  515. package/dist/isosurface/types.d.ts +0 -56
  516. package/dist/isosurface/types.js +0 -227
  517. package/dist/labels.d.ts +0 -53
  518. package/dist/labels.js +0 -274
  519. package/dist/layout/FullscreenToggle.svelte +0 -50
  520. package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
  521. package/dist/layout/InfoCard.svelte +0 -120
  522. package/dist/layout/InfoCard.svelte.d.ts +0 -21
  523. package/dist/layout/InfoTag.svelte +0 -183
  524. package/dist/layout/InfoTag.svelte.d.ts +0 -19
  525. package/dist/layout/PropertyFilter.svelte +0 -244
  526. package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
  527. package/dist/layout/SettingsSection.svelte +0 -148
  528. package/dist/layout/SettingsSection.svelte.d.ts +0 -17
  529. package/dist/layout/SubpageGrid.svelte +0 -82
  530. package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
  531. package/dist/layout/fullscreen.d.ts +0 -9
  532. package/dist/layout/fullscreen.js +0 -53
  533. package/dist/layout/index.d.ts +0 -10
  534. package/dist/layout/index.js +0 -8
  535. package/dist/layout/json-tree/JsonNode.svelte +0 -548
  536. package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
  537. package/dist/layout/json-tree/JsonTree.svelte +0 -1222
  538. package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
  539. package/dist/layout/json-tree/JsonValue.svelte +0 -334
  540. package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
  541. package/dist/layout/json-tree/index.d.ts +0 -3
  542. package/dist/layout/json-tree/index.js +0 -3
  543. package/dist/layout/json-tree/types.d.ts +0 -73
  544. package/dist/layout/json-tree/types.js +0 -3
  545. package/dist/layout/json-tree/utils.d.ts +0 -29
  546. package/dist/layout/json-tree/utils.js +0 -649
  547. package/dist/marching-cubes.d.ts +0 -14
  548. package/dist/marching-cubes.js +0 -542
  549. package/dist/math.d.ts +0 -91
  550. package/dist/math.js +0 -896
  551. package/dist/overlays/ContextMenu.svelte +0 -162
  552. package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
  553. package/dist/overlays/CopyButton.svelte +0 -45
  554. package/dist/overlays/CopyButton.svelte.d.ts +0 -8
  555. package/dist/overlays/DraggablePane.svelte +0 -564
  556. package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
  557. package/dist/overlays/InfoPaneCards.svelte +0 -149
  558. package/dist/overlays/InfoPaneCards.svelte.d.ts +0 -22
  559. package/dist/overlays/index.d.ts +0 -2
  560. package/dist/overlays/index.js +0 -2
  561. package/dist/periodic-table/PeriodicTable.svelte +0 -469
  562. package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
  563. package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
  564. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
  565. package/dist/periodic-table/PropertySelect.svelte +0 -37
  566. package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
  567. package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
  568. package/dist/periodic-table/index.d.ts +0 -10
  569. package/dist/periodic-table/index.js +0 -4
  570. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1084
  571. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
  572. package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -449
  573. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
  574. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  575. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
  576. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
  577. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
  578. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
  579. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
  580. package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
  581. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
  582. package/dist/phase-diagram/build-diagram.d.ts +0 -11
  583. package/dist/phase-diagram/build-diagram.js +0 -167
  584. package/dist/phase-diagram/colors.d.ts +0 -35
  585. package/dist/phase-diagram/colors.js +0 -51
  586. package/dist/phase-diagram/diagram-input.d.ts +0 -33
  587. package/dist/phase-diagram/diagram-input.js +0 -3
  588. package/dist/phase-diagram/index.d.ts +0 -13
  589. package/dist/phase-diagram/index.js +0 -13
  590. package/dist/phase-diagram/parse.d.ts +0 -55
  591. package/dist/phase-diagram/parse.js +0 -276
  592. package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
  593. package/dist/phase-diagram/svg-to-diagram.js +0 -867
  594. package/dist/phase-diagram/types.d.ts +0 -99
  595. package/dist/phase-diagram/types.js +0 -1
  596. package/dist/phase-diagram/utils.d.ts +0 -118
  597. package/dist/phase-diagram/utils.js +0 -606
  598. package/dist/plot/AxisLabel.svelte +0 -51
  599. package/dist/plot/AxisLabel.svelte.d.ts +0 -16
  600. package/dist/plot/BarPlot.svelte +0 -2265
  601. package/dist/plot/BarPlot.svelte.d.ts +0 -83
  602. package/dist/plot/BarPlotControls.svelte +0 -66
  603. package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
  604. package/dist/plot/ColorBar.svelte +0 -719
  605. package/dist/plot/ColorBar.svelte.d.ts +0 -31
  606. package/dist/plot/ColorScaleSelect.svelte +0 -54
  607. package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
  608. package/dist/plot/ElementScatter.svelte +0 -63
  609. package/dist/plot/ElementScatter.svelte.d.ts +0 -14
  610. package/dist/plot/FillArea.svelte +0 -225
  611. package/dist/plot/FillArea.svelte.d.ts +0 -21
  612. package/dist/plot/Histogram.svelte +0 -1672
  613. package/dist/plot/Histogram.svelte.d.ts +0 -50
  614. package/dist/plot/HistogramControls.svelte +0 -212
  615. package/dist/plot/HistogramControls.svelte.d.ts +0 -22
  616. package/dist/plot/InteractiveAxisLabel.svelte +0 -94
  617. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
  618. package/dist/plot/Line.svelte +0 -84
  619. package/dist/plot/Line.svelte.d.ts +0 -15
  620. package/dist/plot/PlotControls.svelte +0 -537
  621. package/dist/plot/PlotControls.svelte.d.ts +0 -4
  622. package/dist/plot/PlotLegend.svelte +0 -569
  623. package/dist/plot/PlotLegend.svelte.d.ts +0 -29
  624. package/dist/plot/PlotTooltip.svelte +0 -67
  625. package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
  626. package/dist/plot/PortalSelect.svelte +0 -253
  627. package/dist/plot/PortalSelect.svelte.d.ts +0 -16
  628. package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
  629. package/dist/plot/ReferenceLine3D.svelte +0 -154
  630. package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
  631. package/dist/plot/ReferencePlane.svelte +0 -178
  632. package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
  633. package/dist/plot/ScatterPlot.svelte +0 -2845
  634. package/dist/plot/ScatterPlot.svelte.d.ts +0 -93
  635. package/dist/plot/ScatterPlot3D.svelte +0 -502
  636. package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
  637. package/dist/plot/ScatterPlot3DControls.svelte +0 -437
  638. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
  639. package/dist/plot/ScatterPlot3DScene.svelte +0 -912
  640. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
  641. package/dist/plot/ScatterPlotControls.svelte +0 -307
  642. package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
  643. package/dist/plot/ScatterPoint.svelte +0 -191
  644. package/dist/plot/ScatterPoint.svelte.d.ts +0 -21
  645. package/dist/plot/SpacegroupBarPlot.svelte +0 -293
  646. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
  647. package/dist/plot/Surface3D.svelte +0 -200
  648. package/dist/plot/Surface3D.svelte.d.ts +0 -13
  649. package/dist/plot/ZeroLines.svelte +0 -96
  650. package/dist/plot/ZeroLines.svelte.d.ts +0 -32
  651. package/dist/plot/ZoomRect.svelte +0 -23
  652. package/dist/plot/ZoomRect.svelte.d.ts +0 -8
  653. package/dist/plot/axis-utils.d.ts +0 -19
  654. package/dist/plot/axis-utils.js +0 -80
  655. package/dist/plot/data-cleaning.d.ts +0 -37
  656. package/dist/plot/data-cleaning.js +0 -855
  657. package/dist/plot/data-transform.d.ts +0 -16
  658. package/dist/plot/data-transform.js +0 -45
  659. package/dist/plot/defaults.d.ts +0 -19
  660. package/dist/plot/defaults.js +0 -9
  661. package/dist/plot/fill-utils.d.ts +0 -51
  662. package/dist/plot/fill-utils.js +0 -337
  663. package/dist/plot/hover-lock.svelte.d.ts +0 -14
  664. package/dist/plot/hover-lock.svelte.js +0 -46
  665. package/dist/plot/index.d.ts +0 -37
  666. package/dist/plot/index.js +0 -37
  667. package/dist/plot/interactions.d.ts +0 -12
  668. package/dist/plot/interactions.js +0 -100
  669. package/dist/plot/layout.d.ts +0 -60
  670. package/dist/plot/layout.js +0 -230
  671. package/dist/plot/reference-line.d.ts +0 -60
  672. package/dist/plot/reference-line.js +0 -316
  673. package/dist/plot/scales.d.ts +0 -48
  674. package/dist/plot/scales.js +0 -484
  675. package/dist/plot/svg.d.ts +0 -1
  676. package/dist/plot/svg.js +0 -11
  677. package/dist/plot/types.d.ts +0 -859
  678. package/dist/plot/types.js +0 -103
  679. package/dist/plot/utils/label-placement.d.ts +0 -47
  680. package/dist/plot/utils/label-placement.js +0 -256
  681. package/dist/plot/utils/series-visibility.d.ts +0 -9
  682. package/dist/plot/utils/series-visibility.js +0 -67
  683. package/dist/plot/utils.d.ts +0 -1
  684. package/dist/plot/utils.js +0 -14
  685. package/dist/rdf/RdfPlot.svelte +0 -247
  686. package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
  687. package/dist/rdf/calc-rdf.d.ts +0 -4
  688. package/dist/rdf/calc-rdf.js +0 -111
  689. package/dist/rdf/index.d.ts +0 -23
  690. package/dist/rdf/index.js +0 -2
  691. package/dist/sanitize.d.ts +0 -4
  692. package/dist/sanitize.js +0 -114
  693. package/dist/settings.d.ts +0 -255
  694. package/dist/settings.js +0 -1132
  695. package/dist/spectral/Bands.svelte +0 -1040
  696. package/dist/spectral/Bands.svelte.d.ts +0 -40
  697. package/dist/spectral/BandsAndDos.svelte +0 -128
  698. package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
  699. package/dist/spectral/BrillouinBandsDos.svelte +0 -248
  700. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
  701. package/dist/spectral/Dos.svelte +0 -697
  702. package/dist/spectral/Dos.svelte.d.ts +0 -29
  703. package/dist/spectral/helpers.d.ts +0 -117
  704. package/dist/spectral/helpers.js +0 -1023
  705. package/dist/spectral/index.d.ts +0 -6
  706. package/dist/spectral/index.js +0 -7
  707. package/dist/spectral/types.d.ts +0 -84
  708. package/dist/spectral/types.js +0 -2
  709. package/dist/state.svelte.d.ts +0 -25
  710. package/dist/state.svelte.js +0 -45
  711. package/dist/structure/Arrow.svelte +0 -72
  712. package/dist/structure/Arrow.svelte.d.ts +0 -15
  713. package/dist/structure/AtomLegend.svelte +0 -798
  714. package/dist/structure/AtomLegend.svelte.d.ts +0 -34
  715. package/dist/structure/Bond.svelte +0 -140
  716. package/dist/structure/Bond.svelte.d.ts +0 -9
  717. package/dist/structure/CanvasTooltip.svelte +0 -33
  718. package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
  719. package/dist/structure/CellSelect.svelte +0 -351
  720. package/dist/structure/CellSelect.svelte.d.ts +0 -13
  721. package/dist/structure/Cylinder.svelte +0 -45
  722. package/dist/structure/Cylinder.svelte.d.ts +0 -10
  723. package/dist/structure/Lattice.svelte +0 -196
  724. package/dist/structure/Lattice.svelte.d.ts +0 -17
  725. package/dist/structure/Structure.svelte +0 -1999
  726. package/dist/structure/Structure.svelte.d.ts +0 -87
  727. package/dist/structure/StructureControls.svelte +0 -1298
  728. package/dist/structure/StructureControls.svelte.d.ts +0 -31
  729. package/dist/structure/StructureExportPane.svelte +0 -251
  730. package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
  731. package/dist/structure/StructureInfoPane.svelte +0 -735
  732. package/dist/structure/StructureInfoPane.svelte.d.ts +0 -19
  733. package/dist/structure/StructureScene.svelte +0 -1905
  734. package/dist/structure/StructureScene.svelte.d.ts +0 -108
  735. package/dist/structure/atom-properties.d.ts +0 -37
  736. package/dist/structure/atom-properties.js +0 -200
  737. package/dist/structure/bond-order-perception.d.ts +0 -13
  738. package/dist/structure/bond-order-perception.js +0 -367
  739. package/dist/structure/bonding.d.ts +0 -42
  740. package/dist/structure/bonding.js +0 -525
  741. package/dist/structure/export.d.ts +0 -20
  742. package/dist/structure/export.js +0 -727
  743. package/dist/structure/index.d.ts +0 -125
  744. package/dist/structure/index.js +0 -171
  745. package/dist/structure/label-placement.d.ts +0 -14
  746. package/dist/structure/label-placement.js +0 -72
  747. package/dist/structure/measure.d.ts +0 -6
  748. package/dist/structure/measure.js +0 -29
  749. package/dist/structure/parse.d.ts +0 -66
  750. package/dist/structure/parse.js +0 -1363
  751. package/dist/structure/partial-occupancy.d.ts +0 -25
  752. package/dist/structure/partial-occupancy.js +0 -99
  753. package/dist/structure/pbc.d.ts +0 -9
  754. package/dist/structure/pbc.js +0 -123
  755. package/dist/structure/supercell.d.ts +0 -8
  756. package/dist/structure/supercell.js +0 -170
  757. package/dist/structure/validation.d.ts +0 -2
  758. package/dist/structure/validation.js +0 -10
  759. package/dist/symmetry/SymmetryStats.svelte +0 -226
  760. package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
  761. package/dist/symmetry/WyckoffTable.svelte +0 -113
  762. package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
  763. package/dist/symmetry/cell-transform.d.ts +0 -12
  764. package/dist/symmetry/cell-transform.js +0 -91
  765. package/dist/symmetry/index.d.ts +0 -43
  766. package/dist/symmetry/index.js +0 -229
  767. package/dist/symmetry/spacegroups.d.ts +0 -9
  768. package/dist/symmetry/spacegroups.js +0 -394
  769. package/dist/table/HeatmapTable.svelte +0 -1854
  770. package/dist/table/HeatmapTable.svelte.d.ts +0 -49
  771. package/dist/table/ToggleMenu.svelte +0 -376
  772. package/dist/table/ToggleMenu.svelte.d.ts +0 -11
  773. package/dist/table/index.d.ts +0 -74
  774. package/dist/table/index.js +0 -38
  775. package/dist/theme/ThemeControl.svelte +0 -53
  776. package/dist/theme/ThemeControl.svelte.d.ts +0 -9
  777. package/dist/theme/index.d.ts +0 -29
  778. package/dist/theme/index.js +0 -79
  779. package/dist/theme/themes.mjs +0 -285
  780. package/dist/time.d.ts +0 -4
  781. package/dist/time.js +0 -70
  782. package/dist/tooltip/TooltipContent.svelte +0 -58
  783. package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
  784. package/dist/tooltip/index.d.ts +0 -2
  785. package/dist/tooltip/index.js +0 -2
  786. package/dist/tooltip/types.d.ts +0 -8
  787. package/dist/tooltip/types.js +0 -1
  788. package/dist/trajectory/Trajectory.svelte +0 -1517
  789. package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
  790. package/dist/trajectory/TrajectoryError.svelte +0 -128
  791. package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
  792. package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
  793. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
  794. package/dist/trajectory/TrajectoryInfoPane.svelte +0 -313
  795. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
  796. package/dist/trajectory/constants.d.ts +0 -6
  797. package/dist/trajectory/constants.js +0 -7
  798. package/dist/trajectory/extract.d.ts +0 -5
  799. package/dist/trajectory/extract.js +0 -162
  800. package/dist/trajectory/format-detect.d.ts +0 -9
  801. package/dist/trajectory/format-detect.js +0 -76
  802. package/dist/trajectory/frame-reader.d.ts +0 -17
  803. package/dist/trajectory/frame-reader.js +0 -332
  804. package/dist/trajectory/helpers.d.ts +0 -14
  805. package/dist/trajectory/helpers.js +0 -172
  806. package/dist/trajectory/index.d.ts +0 -63
  807. package/dist/trajectory/index.js +0 -126
  808. package/dist/trajectory/parse/ase.d.ts +0 -2
  809. package/dist/trajectory/parse/ase.js +0 -73
  810. package/dist/trajectory/parse/hdf5.d.ts +0 -2
  811. package/dist/trajectory/parse/hdf5.js +0 -127
  812. package/dist/trajectory/parse/index.d.ts +0 -12
  813. package/dist/trajectory/parse/index.js +0 -299
  814. package/dist/trajectory/parse/lammps.d.ts +0 -5
  815. package/dist/trajectory/parse/lammps.js +0 -179
  816. package/dist/trajectory/parse/vasp.d.ts +0 -2
  817. package/dist/trajectory/parse/vasp.js +0 -68
  818. package/dist/trajectory/parse/xyz.d.ts +0 -2
  819. package/dist/trajectory/parse/xyz.js +0 -110
  820. package/dist/trajectory/plotting.d.ts +0 -28
  821. package/dist/trajectory/plotting.js +0 -423
  822. package/dist/trajectory/types.d.ts +0 -11
  823. package/dist/trajectory/types.js +0 -1
  824. package/dist/utils.d.ts +0 -5
  825. package/dist/utils.js +0 -36
  826. package/dist/xrd/XrdPlot.svelte +0 -615
  827. package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
  828. package/dist/xrd/broadening.d.ts +0 -20
  829. package/dist/xrd/broadening.js +0 -97
  830. package/dist/xrd/calc-xrd.d.ts +0 -37
  831. package/dist/xrd/calc-xrd.js +0 -337
  832. package/dist/xrd/index.d.ts +0 -37
  833. package/dist/xrd/index.js +0 -4
  834. package/dist/xrd/parse.d.ts +0 -13
  835. package/dist/xrd/parse.js +0 -749
  836. /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
  837. /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
  838. /package/dist/{app.css → src/lib/app.css} +0 -0
  839. /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
  840. /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
  841. /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
  842. /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
  843. /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
  844. /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
  845. /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
  846. /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
  847. /package/dist/{element → src/lib/element}/data.json +0 -0
  848. /package/dist/{element → src/lib/element}/data.json.gz +0 -0
  849. /package/dist/{element → src/lib/element}/data.schema.json +0 -0
  850. /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
  851. /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
  852. /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
  853. /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
  854. /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
  855. /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
+ }