matterviz 0.3.6 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (863) hide show
  1. package/dist/EmptyState.svelte.d.ts +9 -0
  2. package/dist/FilePicker.svelte +360 -0
  3. package/dist/FilePicker.svelte.d.ts +17 -0
  4. package/dist/Icon.svelte.d.ts +13 -0
  5. package/dist/MillerIndexInput.svelte +66 -0
  6. package/dist/MillerIndexInput.svelte.d.ts +7 -0
  7. package/dist/api/mp.d.ts +6 -0
  8. package/dist/api/mp.js +22 -0
  9. package/dist/api/optimade.d.ts +45 -0
  10. package/dist/api/optimade.js +135 -0
  11. package/dist/brillouin/BrillouinZone.svelte +549 -0
  12. package/dist/brillouin/BrillouinZone.svelte.d.ts +83 -0
  13. package/dist/brillouin/BrillouinZoneControls.svelte +144 -0
  14. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +17 -0
  15. package/dist/brillouin/BrillouinZoneExportPane.svelte +146 -0
  16. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +15 -0
  17. package/dist/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  18. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +13 -0
  19. package/dist/brillouin/BrillouinZoneScene.svelte +476 -0
  20. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +48 -0
  21. package/dist/brillouin/BrillouinZoneTooltip.svelte +92 -0
  22. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +8 -0
  23. package/dist/brillouin/compute.d.ts +17 -0
  24. package/dist/brillouin/compute.js +426 -0
  25. package/dist/brillouin/index.d.ts +8 -0
  26. package/dist/brillouin/index.js +7 -0
  27. package/dist/brillouin/types.d.ts +43 -0
  28. package/dist/brillouin/types.js +1 -0
  29. package/dist/chempot-diagram/ChemPotDiagram.svelte +327 -0
  30. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
  31. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  32. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
  33. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  34. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
  35. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
  36. package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
  37. package/dist/chempot-diagram/async-compute.svelte.js +78 -0
  38. package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
  39. package/dist/chempot-diagram/chempot-worker.js +11 -0
  40. package/dist/chempot-diagram/color.d.ts +10 -0
  41. package/dist/chempot-diagram/color.js +32 -0
  42. package/dist/chempot-diagram/compute.d.ts +48 -0
  43. package/dist/chempot-diagram/compute.js +806 -0
  44. package/dist/chempot-diagram/index.d.ts +6 -0
  45. package/dist/chempot-diagram/index.js +6 -0
  46. package/dist/chempot-diagram/pointer.d.ts +16 -0
  47. package/dist/chempot-diagram/pointer.js +40 -0
  48. package/dist/chempot-diagram/temperature.d.ts +15 -0
  49. package/dist/chempot-diagram/temperature.js +34 -0
  50. package/dist/chempot-diagram/types.d.ts +81 -0
  51. package/dist/chempot-diagram/types.js +28 -0
  52. package/dist/colors/index.d.ts +47 -0
  53. package/dist/colors/index.js +203 -0
  54. package/dist/composition/BarChart.svelte +297 -0
  55. package/dist/composition/BarChart.svelte.d.ts +39 -0
  56. package/dist/composition/BubbleChart.svelte +218 -0
  57. package/dist/composition/BubbleChart.svelte.d.ts +28 -0
  58. package/dist/composition/Composition.svelte +165 -0
  59. package/dist/composition/Composition.svelte.d.ts +15 -0
  60. package/dist/composition/Formula.svelte +268 -0
  61. package/dist/composition/Formula.svelte.d.ts +19 -0
  62. package/dist/composition/FormulaFilter.svelte +1257 -0
  63. package/dist/composition/FormulaFilter.svelte.d.ts +51 -0
  64. package/dist/composition/PieChart.svelte +323 -0
  65. package/dist/composition/PieChart.svelte.d.ts +37 -0
  66. package/dist/composition/format.d.ts +15 -0
  67. package/dist/composition/format.js +109 -0
  68. package/dist/composition/index.d.ts +20 -0
  69. package/dist/composition/index.js +14 -0
  70. package/dist/composition/parse.d.ts +56 -0
  71. package/dist/composition/parse.js +474 -0
  72. package/dist/constants.d.ts +29 -0
  73. package/dist/constants.js +99 -0
  74. package/dist/controls.d.ts +14 -0
  75. package/dist/controls.js +30 -0
  76. package/dist/convex-hull/ConvexHull.svelte +157 -0
  77. package/dist/convex-hull/ConvexHull.svelte.d.ts +13 -0
  78. package/dist/convex-hull/ConvexHull2D.svelte +825 -0
  79. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +11 -0
  80. package/dist/convex-hull/ConvexHull3D.svelte +1801 -0
  81. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +8 -0
  82. package/dist/convex-hull/ConvexHull4D.svelte +1398 -0
  83. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +8 -0
  84. package/dist/convex-hull/ConvexHullControls.svelte +535 -0
  85. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +48 -0
  86. package/dist/convex-hull/ConvexHullInfoPane.svelte +125 -0
  87. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +20 -0
  88. package/dist/convex-hull/ConvexHullStats.svelte +929 -0
  89. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +17 -0
  90. package/dist/convex-hull/ConvexHullTooltip.svelte +131 -0
  91. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +33 -0
  92. package/dist/convex-hull/GasPressureControls.svelte +247 -0
  93. package/dist/convex-hull/GasPressureControls.svelte.d.ts +11 -0
  94. package/dist/convex-hull/StructurePopup.svelte +151 -0
  95. package/dist/convex-hull/StructurePopup.svelte.d.ts +18 -0
  96. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +8 -0
  97. package/dist/convex-hull/barycentric-coords.d.ts +18 -0
  98. package/dist/convex-hull/barycentric-coords.js +182 -0
  99. package/dist/convex-hull/demo-temperature.d.ts +6 -0
  100. package/dist/convex-hull/demo-temperature.js +40 -0
  101. package/dist/convex-hull/gas-thermodynamics.d.ts +16 -0
  102. package/dist/convex-hull/gas-thermodynamics.js +314 -0
  103. package/dist/convex-hull/helpers.d.ts +114 -0
  104. package/dist/convex-hull/helpers.js +710 -0
  105. package/dist/convex-hull/index.d.ts +119 -0
  106. package/dist/convex-hull/index.js +58 -0
  107. package/dist/convex-hull/thermodynamics.d.ts +67 -0
  108. package/dist/convex-hull/thermodynamics.js +1752 -0
  109. package/dist/convex-hull/types.d.ts +162 -0
  110. package/dist/convex-hull/types.js +36 -0
  111. package/dist/coordination/CoordinationBarPlot.svelte +311 -0
  112. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +30 -0
  113. package/dist/coordination/calc-coordination.d.ts +15 -0
  114. package/dist/coordination/calc-coordination.js +63 -0
  115. package/dist/coordination/index.d.ts +8 -0
  116. package/dist/coordination/index.js +7 -0
  117. package/dist/effects.svelte.d.ts +12 -0
  118. package/dist/effects.svelte.js +37 -0
  119. package/dist/element/BohrAtom.svelte.d.ts +20 -0
  120. package/dist/element/ElementHeading.svelte +26 -0
  121. package/dist/element/ElementHeading.svelte.d.ts +8 -0
  122. package/dist/element/ElementPhoto.svelte +57 -0
  123. package/dist/element/ElementPhoto.svelte.d.ts +9 -0
  124. package/dist/element/ElementStats.svelte +80 -0
  125. package/dist/element/ElementStats.svelte.d.ts +8 -0
  126. package/dist/element/ElementTile.svelte +484 -0
  127. package/dist/element/ElementTile.svelte.d.ts +29 -0
  128. package/dist/element/Nucleus.svelte.d.ts +17 -0
  129. package/dist/element/data.d.ts +2 -0
  130. package/dist/element/data.js +2 -0
  131. package/dist/element/index.d.ts +8 -0
  132. package/dist/element/index.js +7 -0
  133. package/dist/element/types.d.ts +57 -0
  134. package/dist/element/types.js +1 -0
  135. package/dist/feedback/ClickFeedback.svelte +58 -0
  136. package/dist/feedback/ClickFeedback.svelte.d.ts +12 -0
  137. package/dist/feedback/DragOverlay.svelte +42 -0
  138. package/dist/feedback/DragOverlay.svelte.d.ts +7 -0
  139. package/dist/feedback/Spinner.svelte.d.ts +7 -0
  140. package/dist/feedback/StatusMessage.svelte.d.ts +9 -0
  141. package/dist/feedback/index.d.ts +4 -0
  142. package/dist/feedback/index.js +4 -0
  143. package/dist/fermi-surface/FermiSlice.svelte +189 -0
  144. package/dist/fermi-surface/FermiSlice.svelte.d.ts +24 -0
  145. package/dist/fermi-surface/FermiSurface.svelte +600 -0
  146. package/dist/fermi-surface/FermiSurface.svelte.d.ts +83 -0
  147. package/dist/fermi-surface/FermiSurfaceControls.svelte +448 -0
  148. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +35 -0
  149. package/dist/fermi-surface/FermiSurfaceScene.svelte +794 -0
  150. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +50 -0
  151. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  152. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +8 -0
  153. package/dist/fermi-surface/compute.d.ts +5 -0
  154. package/dist/fermi-surface/compute.js +538 -0
  155. package/dist/fermi-surface/constants.d.ts +9 -0
  156. package/dist/fermi-surface/constants.js +27 -0
  157. package/dist/fermi-surface/export.d.ts +5 -0
  158. package/dist/fermi-surface/export.js +50 -0
  159. package/dist/fermi-surface/index.d.ts +12 -0
  160. package/dist/fermi-surface/index.js +13 -0
  161. package/dist/fermi-surface/marching-cubes.d.ts +2 -0
  162. package/dist/fermi-surface/marching-cubes.js +2 -0
  163. package/dist/fermi-surface/parse.d.ts +2 -0
  164. package/dist/fermi-surface/parse.js +491 -0
  165. package/dist/fermi-surface/symmetry.d.ts +3 -0
  166. package/dist/fermi-surface/symmetry.js +46 -0
  167. package/dist/fermi-surface/types.d.ts +110 -0
  168. package/dist/fermi-surface/types.js +4 -0
  169. package/dist/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  170. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
  171. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  172. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
  173. package/dist/heatmap-matrix/index.d.ts +53 -0
  174. package/dist/heatmap-matrix/index.js +100 -0
  175. package/dist/heatmap-matrix/shared.d.ts +2 -0
  176. package/dist/heatmap-matrix/shared.js +4 -0
  177. package/dist/icons.d.ts +569 -0
  178. package/dist/icons.js +648 -0
  179. package/dist/index.d.ts +39 -0
  180. package/dist/index.js +39 -0
  181. package/dist/io/decompress.d.ts +11 -0
  182. package/dist/io/decompress.js +74 -0
  183. package/dist/io/export.d.ts +16 -0
  184. package/dist/io/export.js +316 -0
  185. package/dist/io/fetch.d.ts +5 -0
  186. package/dist/io/fetch.js +39 -0
  187. package/dist/io/file-drop.d.ts +7 -0
  188. package/dist/io/file-drop.js +43 -0
  189. package/dist/io/index.d.ts +7 -0
  190. package/dist/io/index.js +6 -0
  191. package/dist/io/is-binary.d.ts +1 -0
  192. package/dist/io/is-binary.js +20 -0
  193. package/dist/io/types.d.ts +8 -0
  194. package/dist/io/types.js +1 -0
  195. package/dist/io/url-drop.d.ts +2 -0
  196. package/dist/io/url-drop.js +123 -0
  197. package/dist/isosurface/Isosurface.svelte +285 -0
  198. package/dist/isosurface/Isosurface.svelte.d.ts +8 -0
  199. package/dist/isosurface/IsosurfaceControls.svelte +277 -0
  200. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +9 -0
  201. package/dist/isosurface/index.d.ts +5 -0
  202. package/dist/isosurface/index.js +6 -0
  203. package/dist/isosurface/parse.d.ts +6 -0
  204. package/dist/isosurface/parse.js +553 -0
  205. package/dist/isosurface/slice.d.ts +11 -0
  206. package/dist/isosurface/slice.js +140 -0
  207. package/dist/isosurface/types.d.ts +56 -0
  208. package/dist/isosurface/types.js +227 -0
  209. package/dist/labels.d.ts +53 -0
  210. package/dist/labels.js +277 -0
  211. package/dist/layout/FullscreenToggle.svelte +50 -0
  212. package/dist/layout/FullscreenToggle.svelte.d.ts +7 -0
  213. package/dist/layout/InfoCard.svelte +120 -0
  214. package/dist/layout/InfoCard.svelte.d.ts +21 -0
  215. package/dist/layout/InfoTag.svelte +185 -0
  216. package/dist/layout/InfoTag.svelte.d.ts +19 -0
  217. package/dist/layout/PropertyFilter.svelte +246 -0
  218. package/dist/layout/PropertyFilter.svelte.d.ts +24 -0
  219. package/dist/layout/SettingsSection.svelte +148 -0
  220. package/dist/layout/SettingsSection.svelte.d.ts +17 -0
  221. package/dist/layout/SubpageGrid.svelte +82 -0
  222. package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
  223. package/dist/layout/fullscreen.d.ts +9 -0
  224. package/dist/layout/fullscreen.js +53 -0
  225. package/dist/layout/index.d.ts +10 -0
  226. package/dist/layout/index.js +8 -0
  227. package/dist/layout/json-tree/JsonNode.svelte +548 -0
  228. package/dist/layout/json-tree/JsonNode.svelte.d.ts +11 -0
  229. package/dist/layout/json-tree/JsonTree.svelte +1230 -0
  230. package/dist/layout/json-tree/JsonTree.svelte.d.ts +6 -0
  231. package/dist/layout/json-tree/JsonValue.svelte.d.ts +9 -0
  232. package/dist/layout/json-tree/index.d.ts +3 -0
  233. package/dist/layout/json-tree/index.js +3 -0
  234. package/dist/layout/json-tree/types.d.ts +74 -0
  235. package/dist/layout/json-tree/types.js +2 -0
  236. package/dist/layout/json-tree/utils.d.ts +29 -0
  237. package/dist/layout/json-tree/utils.js +641 -0
  238. package/dist/marching-cubes.d.ts +14 -0
  239. package/dist/marching-cubes.js +540 -0
  240. package/dist/math.d.ts +101 -0
  241. package/dist/math.js +905 -0
  242. package/dist/overlays/ContextMenu.svelte +162 -0
  243. package/dist/overlays/ContextMenu.svelte.d.ts +25 -0
  244. package/dist/overlays/CopyButton.svelte +45 -0
  245. package/dist/overlays/CopyButton.svelte.d.ts +8 -0
  246. package/dist/overlays/DragControlTab.svelte +98 -0
  247. package/dist/overlays/DragControlTab.svelte.d.ts +8 -0
  248. package/dist/overlays/DraggablePane.svelte +487 -0
  249. package/dist/overlays/DraggablePane.svelte.d.ts +36 -0
  250. package/dist/overlays/InfoPaneCards.svelte +149 -0
  251. package/dist/overlays/InfoPaneCards.svelte.d.ts +22 -0
  252. package/dist/overlays/index.d.ts +3 -0
  253. package/dist/overlays/index.js +3 -0
  254. package/dist/periodic-table/PeriodicTable.svelte +469 -0
  255. package/dist/periodic-table/PeriodicTable.svelte.d.ts +55 -0
  256. package/dist/periodic-table/PeriodicTableControls.svelte +557 -0
  257. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +24 -0
  258. package/dist/periodic-table/PropertySelect.svelte +37 -0
  259. package/dist/periodic-table/PropertySelect.svelte.d.ts +13 -0
  260. package/dist/periodic-table/TableInset.svelte.d.ts +9 -0
  261. package/dist/periodic-table/index.d.ts +10 -0
  262. package/dist/periodic-table/index.js +4 -0
  263. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  264. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +44 -0
  265. package/dist/phase-diagram/PhaseDiagramControls.svelte +444 -0
  266. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +30 -0
  267. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  268. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
  269. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  270. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +19 -0
  271. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  272. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +16 -0
  273. package/dist/phase-diagram/TdbInfoPanel.svelte +203 -0
  274. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +12 -0
  275. package/dist/phase-diagram/build-diagram.d.ts +11 -0
  276. package/dist/phase-diagram/build-diagram.js +160 -0
  277. package/dist/phase-diagram/colors.d.ts +35 -0
  278. package/dist/phase-diagram/colors.js +51 -0
  279. package/dist/phase-diagram/diagram-input.d.ts +29 -0
  280. package/dist/phase-diagram/diagram-input.js +3 -0
  281. package/dist/phase-diagram/index.d.ts +13 -0
  282. package/dist/phase-diagram/index.js +11 -0
  283. package/dist/phase-diagram/parse.d.ts +55 -0
  284. package/dist/phase-diagram/parse.js +272 -0
  285. package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
  286. package/dist/phase-diagram/svg-to-diagram.js +867 -0
  287. package/dist/phase-diagram/types.d.ts +93 -0
  288. package/dist/phase-diagram/types.js +1 -0
  289. package/dist/phase-diagram/utils.d.ts +118 -0
  290. package/dist/phase-diagram/utils.js +604 -0
  291. package/dist/plot/AxisLabel.svelte +51 -0
  292. package/dist/plot/AxisLabel.svelte.d.ts +16 -0
  293. package/dist/plot/BarPlot.svelte +2113 -0
  294. package/dist/plot/BarPlot.svelte.d.ts +84 -0
  295. package/dist/plot/BarPlotControls.svelte +66 -0
  296. package/dist/plot/BarPlotControls.svelte.d.ts +18 -0
  297. package/dist/plot/BinnedScatterPlot.svelte +1114 -0
  298. package/dist/plot/BinnedScatterPlot.svelte.d.ts +66 -0
  299. package/dist/plot/ColorBar.svelte +721 -0
  300. package/dist/plot/ColorBar.svelte.d.ts +31 -0
  301. package/dist/plot/ColorScaleSelect.svelte +54 -0
  302. package/dist/plot/ColorScaleSelect.svelte.d.ts +15 -0
  303. package/dist/plot/ElementScatter.svelte +63 -0
  304. package/dist/plot/ElementScatter.svelte.d.ts +14 -0
  305. package/dist/plot/FillArea.svelte.d.ts +21 -0
  306. package/dist/plot/Histogram.svelte +1558 -0
  307. package/dist/plot/Histogram.svelte.d.ts +50 -0
  308. package/dist/plot/HistogramControls.svelte +212 -0
  309. package/dist/plot/HistogramControls.svelte.d.ts +22 -0
  310. package/dist/plot/InteractiveAxisLabel.svelte +96 -0
  311. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +14 -0
  312. package/dist/plot/Line.svelte +84 -0
  313. package/dist/plot/Line.svelte.d.ts +15 -0
  314. package/dist/plot/PlotAxis.svelte +169 -0
  315. package/dist/plot/PlotAxis.svelte.d.ts +24 -0
  316. package/dist/plot/PlotControls.svelte +537 -0
  317. package/dist/plot/PlotControls.svelte.d.ts +4 -0
  318. package/dist/plot/PlotLegend.svelte +569 -0
  319. package/dist/plot/PlotLegend.svelte.d.ts +29 -0
  320. package/dist/plot/PlotTooltip.svelte +67 -0
  321. package/dist/plot/PlotTooltip.svelte.d.ts +17 -0
  322. package/dist/plot/PortalSelect.svelte +253 -0
  323. package/dist/plot/PortalSelect.svelte.d.ts +16 -0
  324. package/dist/plot/ReferenceLine.svelte.d.ts +20 -0
  325. package/dist/plot/ReferenceLine3D.svelte +156 -0
  326. package/dist/plot/ReferenceLine3D.svelte.d.ts +14 -0
  327. package/dist/plot/ReferencePlane.svelte +175 -0
  328. package/dist/plot/ReferencePlane.svelte.d.ts +14 -0
  329. package/dist/plot/ScatterPlot.svelte +2778 -0
  330. package/dist/plot/ScatterPlot.svelte.d.ts +96 -0
  331. package/dist/plot/ScatterPlot3D.svelte +529 -0
  332. package/dist/plot/ScatterPlot3D.svelte.d.ts +95 -0
  333. package/dist/plot/ScatterPlot3DControls.svelte +437 -0
  334. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +20 -0
  335. package/dist/plot/ScatterPlot3DScene.svelte +912 -0
  336. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +74 -0
  337. package/dist/plot/ScatterPlotControls.svelte +306 -0
  338. package/dist/plot/ScatterPlotControls.svelte.d.ts +17 -0
  339. package/dist/plot/ScatterPoint.svelte +182 -0
  340. package/dist/plot/ScatterPoint.svelte.d.ts +22 -0
  341. package/dist/plot/SpacegroupBarPlot.svelte +293 -0
  342. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +9 -0
  343. package/dist/plot/Surface3D.svelte +197 -0
  344. package/dist/plot/Surface3D.svelte.d.ts +13 -0
  345. package/dist/plot/ZeroLines.svelte +97 -0
  346. package/dist/plot/ZeroLines.svelte.d.ts +33 -0
  347. package/dist/plot/ZoomRect.svelte +23 -0
  348. package/dist/plot/ZoomRect.svelte.d.ts +8 -0
  349. package/dist/plot/adaptive-density.d.ts +69 -0
  350. package/dist/plot/adaptive-density.js +191 -0
  351. package/dist/plot/auto-place.d.ts +43 -0
  352. package/dist/plot/auto-place.js +122 -0
  353. package/dist/plot/axis-utils.d.ts +19 -0
  354. package/dist/plot/axis-utils.js +78 -0
  355. package/dist/plot/binned-scatter-types.d.ts +59 -0
  356. package/dist/plot/binned-scatter-types.js +1 -0
  357. package/dist/plot/data-cleaning.d.ts +37 -0
  358. package/dist/plot/data-cleaning.js +855 -0
  359. package/dist/plot/data-transform.d.ts +16 -0
  360. package/dist/plot/data-transform.js +45 -0
  361. package/dist/plot/defaults.d.ts +19 -0
  362. package/dist/plot/defaults.js +9 -0
  363. package/dist/plot/fill-utils.d.ts +46 -0
  364. package/dist/plot/fill-utils.js +322 -0
  365. package/dist/plot/hover-lock.svelte.d.ts +14 -0
  366. package/dist/plot/hover-lock.svelte.js +46 -0
  367. package/dist/plot/index.d.ts +41 -0
  368. package/dist/plot/index.js +39 -0
  369. package/dist/plot/interactions.d.ts +12 -0
  370. package/dist/plot/interactions.js +101 -0
  371. package/dist/plot/layout.d.ts +78 -0
  372. package/dist/plot/layout.js +273 -0
  373. package/dist/plot/reference-line.d.ts +60 -0
  374. package/dist/plot/reference-line.js +314 -0
  375. package/dist/plot/scales.d.ts +48 -0
  376. package/dist/plot/scales.js +481 -0
  377. package/dist/plot/svg.d.ts +1 -0
  378. package/dist/plot/svg.js +11 -0
  379. package/dist/plot/types.d.ts +831 -0
  380. package/dist/plot/types.js +99 -0
  381. package/dist/plot/utils/label-placement.d.ts +68 -0
  382. package/dist/plot/utils/label-placement.js +326 -0
  383. package/dist/plot/utils/series-visibility.d.ts +15 -0
  384. package/dist/plot/utils/series-visibility.js +85 -0
  385. package/dist/plot/utils.d.ts +1 -0
  386. package/dist/plot/utils.js +14 -0
  387. package/dist/rdf/RdfPlot.svelte +247 -0
  388. package/dist/rdf/RdfPlot.svelte.d.ts +27 -0
  389. package/dist/rdf/calc-rdf.d.ts +4 -0
  390. package/dist/rdf/calc-rdf.js +111 -0
  391. package/dist/rdf/index.d.ts +23 -0
  392. package/dist/rdf/index.js +2 -0
  393. package/dist/sanitize.d.ts +6 -0
  394. package/dist/sanitize.js +116 -0
  395. package/dist/settings.d.ts +255 -0
  396. package/dist/settings.js +1132 -0
  397. package/dist/spectral/Bands.svelte +1040 -0
  398. package/dist/spectral/Bands.svelte.d.ts +40 -0
  399. package/dist/spectral/BandsAndDos.svelte +134 -0
  400. package/dist/spectral/BandsAndDos.svelte.d.ts +18 -0
  401. package/dist/spectral/BrillouinBandsDos.svelte +252 -0
  402. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +20 -0
  403. package/dist/spectral/Dos.svelte +697 -0
  404. package/dist/spectral/Dos.svelte.d.ts +29 -0
  405. package/dist/spectral/helpers.d.ts +119 -0
  406. package/dist/spectral/helpers.js +1032 -0
  407. package/dist/spectral/index.d.ts +6 -0
  408. package/dist/spectral/index.js +6 -0
  409. package/dist/spectral/types.d.ts +84 -0
  410. package/dist/spectral/types.js +2 -0
  411. package/dist/state.svelte.d.ts +25 -0
  412. package/dist/state.svelte.js +45 -0
  413. package/dist/structure/Arrow.svelte +72 -0
  414. package/dist/structure/Arrow.svelte.d.ts +15 -0
  415. package/dist/structure/AtomLegend.svelte +815 -0
  416. package/dist/structure/AtomLegend.svelte.d.ts +35 -0
  417. package/dist/structure/Bond.svelte +140 -0
  418. package/dist/structure/Bond.svelte.d.ts +9 -0
  419. package/dist/structure/CanvasTooltip.svelte +33 -0
  420. package/dist/structure/CanvasTooltip.svelte.d.ts +12 -0
  421. package/dist/structure/CellSelect.svelte +349 -0
  422. package/dist/structure/CellSelect.svelte.d.ts +13 -0
  423. package/dist/structure/Cylinder.svelte +45 -0
  424. package/dist/structure/Cylinder.svelte.d.ts +10 -0
  425. package/dist/structure/Lattice.svelte +196 -0
  426. package/dist/structure/Lattice.svelte.d.ts +17 -0
  427. package/dist/structure/Structure.svelte +2248 -0
  428. package/dist/structure/Structure.svelte.d.ts +89 -0
  429. package/dist/structure/StructureControls.svelte +1273 -0
  430. package/dist/structure/StructureControls.svelte.d.ts +31 -0
  431. package/dist/structure/StructureExportPane.svelte +252 -0
  432. package/dist/structure/StructureExportPane.svelte.d.ts +17 -0
  433. package/dist/structure/StructureInfoPane.svelte +737 -0
  434. package/dist/structure/StructureInfoPane.svelte.d.ts +19 -0
  435. package/dist/structure/StructureScene.svelte +2255 -0
  436. package/dist/structure/StructureScene.svelte.d.ts +111 -0
  437. package/dist/structure/atom-properties.d.ts +37 -0
  438. package/dist/structure/atom-properties.js +200 -0
  439. package/dist/structure/bond-order-perception.d.ts +13 -0
  440. package/dist/structure/bond-order-perception.js +384 -0
  441. package/dist/structure/bonding.d.ts +68 -0
  442. package/dist/structure/bonding.js +696 -0
  443. package/dist/structure/export.d.ts +20 -0
  444. package/dist/structure/export.js +727 -0
  445. package/dist/structure/index.d.ts +126 -0
  446. package/dist/structure/index.js +169 -0
  447. package/dist/structure/label-placement.d.ts +14 -0
  448. package/dist/structure/label-placement.js +72 -0
  449. package/dist/structure/measure.d.ts +6 -0
  450. package/dist/structure/measure.js +29 -0
  451. package/dist/structure/parse.d.ts +66 -0
  452. package/dist/structure/parse.js +1392 -0
  453. package/dist/structure/partial-occupancy.d.ts +25 -0
  454. package/dist/structure/partial-occupancy.js +99 -0
  455. package/dist/structure/pbc.d.ts +9 -0
  456. package/dist/structure/pbc.js +123 -0
  457. package/dist/structure/supercell.d.ts +8 -0
  458. package/dist/structure/supercell.js +170 -0
  459. package/dist/structure/validation.d.ts +2 -0
  460. package/dist/structure/validation.js +10 -0
  461. package/dist/symmetry/SymmetryStats.svelte +226 -0
  462. package/dist/symmetry/SymmetryStats.svelte.d.ts +21 -0
  463. package/dist/symmetry/WyckoffTable.svelte +120 -0
  464. package/dist/symmetry/WyckoffTable.svelte.d.ts +11 -0
  465. package/dist/symmetry/cell-transform.d.ts +12 -0
  466. package/dist/symmetry/cell-transform.js +91 -0
  467. package/dist/symmetry/index.d.ts +43 -0
  468. package/dist/symmetry/index.js +228 -0
  469. package/dist/symmetry/spacegroups.d.ts +9 -0
  470. package/dist/symmetry/spacegroups.js +394 -0
  471. package/dist/table/HeatmapTable.svelte +1833 -0
  472. package/dist/table/HeatmapTable.svelte.d.ts +49 -0
  473. package/dist/table/ToggleMenu.svelte +385 -0
  474. package/dist/table/ToggleMenu.svelte.d.ts +11 -0
  475. package/dist/table/index.d.ts +74 -0
  476. package/dist/table/index.js +38 -0
  477. package/dist/theme/ThemeControl.svelte +53 -0
  478. package/dist/theme/ThemeControl.svelte.d.ts +9 -0
  479. package/dist/theme/index.d.ts +29 -0
  480. package/dist/theme/index.js +79 -0
  481. package/dist/time.d.ts +4 -0
  482. package/dist/time.js +70 -0
  483. package/dist/tooltip/TooltipContent.svelte +58 -0
  484. package/dist/tooltip/TooltipContent.svelte.d.ts +31 -0
  485. package/dist/tooltip/index.d.ts +2 -0
  486. package/dist/tooltip/index.js +1 -0
  487. package/dist/tooltip/types.d.ts +8 -0
  488. package/dist/tooltip/types.js +1 -0
  489. package/dist/trajectory/Trajectory.svelte +1545 -0
  490. package/dist/trajectory/Trajectory.svelte.d.ts +77 -0
  491. package/dist/trajectory/TrajectoryError.svelte +128 -0
  492. package/dist/trajectory/TrajectoryError.svelte.d.ts +13 -0
  493. package/dist/trajectory/TrajectoryExportPane.svelte +357 -0
  494. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +17 -0
  495. package/dist/trajectory/TrajectoryInfoPane.svelte +313 -0
  496. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +17 -0
  497. package/dist/trajectory/constants.d.ts +6 -0
  498. package/dist/trajectory/constants.js +7 -0
  499. package/dist/trajectory/extract.d.ts +5 -0
  500. package/dist/trajectory/extract.js +162 -0
  501. package/dist/trajectory/format-detect.d.ts +9 -0
  502. package/dist/trajectory/format-detect.js +76 -0
  503. package/dist/trajectory/frame-reader.d.ts +17 -0
  504. package/dist/trajectory/frame-reader.js +332 -0
  505. package/dist/trajectory/helpers.d.ts +15 -0
  506. package/dist/trajectory/helpers.js +164 -0
  507. package/dist/trajectory/index.d.ts +63 -0
  508. package/dist/trajectory/index.js +126 -0
  509. package/dist/trajectory/parse/ase.d.ts +2 -0
  510. package/dist/trajectory/parse/ase.js +73 -0
  511. package/dist/trajectory/parse/hdf5.d.ts +2 -0
  512. package/dist/trajectory/parse/hdf5.js +127 -0
  513. package/dist/trajectory/parse/index.d.ts +12 -0
  514. package/dist/trajectory/parse/index.js +298 -0
  515. package/dist/trajectory/parse/lammps.d.ts +5 -0
  516. package/dist/trajectory/parse/lammps.js +179 -0
  517. package/dist/trajectory/parse/vasp.d.ts +2 -0
  518. package/dist/trajectory/parse/vasp.js +68 -0
  519. package/dist/trajectory/parse/xyz.d.ts +2 -0
  520. package/dist/trajectory/parse/xyz.js +110 -0
  521. package/dist/trajectory/plotting.d.ts +28 -0
  522. package/dist/trajectory/plotting.js +423 -0
  523. package/dist/trajectory/types.d.ts +11 -0
  524. package/dist/trajectory/types.js +1 -0
  525. package/dist/utils.d.ts +6 -0
  526. package/dist/utils.js +45 -0
  527. package/dist/xrd/XrdPlot.svelte +615 -0
  528. package/dist/xrd/XrdPlot.svelte.d.ts +28 -0
  529. package/dist/xrd/broadening.d.ts +20 -0
  530. package/dist/xrd/broadening.js +97 -0
  531. package/dist/xrd/calc-xrd.d.ts +37 -0
  532. package/dist/xrd/calc-xrd.js +336 -0
  533. package/dist/xrd/index.d.ts +37 -0
  534. package/dist/xrd/index.js +4 -0
  535. package/dist/xrd/parse.d.ts +13 -0
  536. package/dist/xrd/parse.js +749 -0
  537. package/license +1 -1
  538. package/package.json +232 -1457
  539. package/readme.md +98 -171
  540. package/.vscode/launch.json +0 -13
  541. package/.vscodeignore +0 -7
  542. package/dist/assets/STLExporter-BpTH3YHE.js +0 -8
  543. package/dist/assets/browser-DdDecX_W.js +0 -1
  544. package/dist/assets/export-qgn-H9y6.js +0 -2
  545. package/dist/assets/main-DiKYzti2.css +0 -1
  546. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  547. package/dist/extension.js +0 -31293
  548. package/dist/src/lib/FilePicker.svelte +0 -360
  549. package/dist/src/lib/MillerIndexInput.svelte +0 -66
  550. package/dist/src/lib/api/mp.ts +0 -26
  551. package/dist/src/lib/api/optimade.ts +0 -204
  552. package/dist/src/lib/brillouin/BrillouinZone.svelte +0 -549
  553. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +0 -144
  554. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +0 -146
  555. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  556. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +0 -476
  557. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +0 -92
  558. package/dist/src/lib/brillouin/compute.ts +0 -529
  559. package/dist/src/lib/brillouin/index.ts +0 -8
  560. package/dist/src/lib/brillouin/types.ts +0 -51
  561. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +0 -327
  562. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +0 -846
  563. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +0 -3193
  564. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +0 -94
  565. package/dist/src/lib/chempot-diagram/chempot-worker.ts +0 -11
  566. package/dist/src/lib/chempot-diagram/color.ts +0 -42
  567. package/dist/src/lib/chempot-diagram/compute.ts +0 -1014
  568. package/dist/src/lib/chempot-diagram/index.ts +0 -6
  569. package/dist/src/lib/chempot-diagram/pointer.ts +0 -56
  570. package/dist/src/lib/chempot-diagram/temperature.ts +0 -77
  571. package/dist/src/lib/chempot-diagram/types.ts +0 -130
  572. package/dist/src/lib/colors/index.ts +0 -249
  573. package/dist/src/lib/composition/BarChart.svelte +0 -297
  574. package/dist/src/lib/composition/BubbleChart.svelte +0 -218
  575. package/dist/src/lib/composition/Composition.svelte +0 -165
  576. package/dist/src/lib/composition/Formula.svelte +0 -268
  577. package/dist/src/lib/composition/FormulaFilter.svelte +0 -1257
  578. package/dist/src/lib/composition/PieChart.svelte +0 -323
  579. package/dist/src/lib/composition/format.ts +0 -155
  580. package/dist/src/lib/composition/index.ts +0 -37
  581. package/dist/src/lib/composition/parse.ts +0 -605
  582. package/dist/src/lib/constants.ts +0 -134
  583. package/dist/src/lib/controls.ts +0 -42
  584. package/dist/src/lib/convex-hull/ConvexHull.svelte +0 -157
  585. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +0 -825
  586. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +0 -1801
  587. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +0 -1398
  588. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +0 -535
  589. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +0 -125
  590. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +0 -929
  591. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +0 -131
  592. package/dist/src/lib/convex-hull/GasPressureControls.svelte +0 -247
  593. package/dist/src/lib/convex-hull/StructurePopup.svelte +0 -151
  594. package/dist/src/lib/convex-hull/barycentric-coords.ts +0 -246
  595. package/dist/src/lib/convex-hull/demo-temperature.ts +0 -63
  596. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +0 -405
  597. package/dist/src/lib/convex-hull/helpers.ts +0 -932
  598. package/dist/src/lib/convex-hull/index.ts +0 -202
  599. package/dist/src/lib/convex-hull/thermodynamics.ts +0 -2192
  600. package/dist/src/lib/convex-hull/types.ts +0 -267
  601. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +0 -311
  602. package/dist/src/lib/coordination/calc-coordination.ts +0 -93
  603. package/dist/src/lib/coordination/index.ts +0 -9
  604. package/dist/src/lib/effects.svelte.ts +0 -48
  605. package/dist/src/lib/element/ElementHeading.svelte +0 -26
  606. package/dist/src/lib/element/ElementPhoto.svelte +0 -57
  607. package/dist/src/lib/element/ElementStats.svelte +0 -80
  608. package/dist/src/lib/element/ElementTile.svelte +0 -484
  609. package/dist/src/lib/element/data.ts +0 -14
  610. package/dist/src/lib/element/index.ts +0 -8
  611. package/dist/src/lib/element/types.ts +0 -62
  612. package/dist/src/lib/feedback/ClickFeedback.svelte +0 -58
  613. package/dist/src/lib/feedback/DragOverlay.svelte +0 -42
  614. package/dist/src/lib/feedback/index.ts +0 -4
  615. package/dist/src/lib/fermi-surface/FermiSlice.svelte +0 -189
  616. package/dist/src/lib/fermi-surface/FermiSurface.svelte +0 -600
  617. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +0 -448
  618. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +0 -794
  619. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  620. package/dist/src/lib/fermi-surface/compute.ts +0 -728
  621. package/dist/src/lib/fermi-surface/constants.ts +0 -32
  622. package/dist/src/lib/fermi-surface/export.ts +0 -64
  623. package/dist/src/lib/fermi-surface/index.ts +0 -14
  624. package/dist/src/lib/fermi-surface/marching-cubes.ts +0 -3
  625. package/dist/src/lib/fermi-surface/parse.ts +0 -574
  626. package/dist/src/lib/fermi-surface/symmetry.ts +0 -56
  627. package/dist/src/lib/fermi-surface/types.ts +0 -159
  628. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +0 -1545
  629. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  630. package/dist/src/lib/heatmap-matrix/index.ts +0 -167
  631. package/dist/src/lib/heatmap-matrix/shared.ts +0 -7
  632. package/dist/src/lib/icons.ts +0 -650
  633. package/dist/src/lib/index.ts +0 -61
  634. package/dist/src/lib/io/decompress.ts +0 -92
  635. package/dist/src/lib/io/export.ts +0 -385
  636. package/dist/src/lib/io/fetch.ts +0 -46
  637. package/dist/src/lib/io/file-drop.ts +0 -51
  638. package/dist/src/lib/io/index.ts +0 -7
  639. package/dist/src/lib/io/is-binary.ts +0 -24
  640. package/dist/src/lib/io/types.ts +0 -8
  641. package/dist/src/lib/io/url-drop.ts +0 -141
  642. package/dist/src/lib/isosurface/Isosurface.svelte +0 -285
  643. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +0 -277
  644. package/dist/src/lib/isosurface/index.ts +0 -7
  645. package/dist/src/lib/isosurface/parse.ts +0 -656
  646. package/dist/src/lib/isosurface/slice.ts +0 -175
  647. package/dist/src/lib/isosurface/types.ts +0 -309
  648. package/dist/src/lib/labels.ts +0 -320
  649. package/dist/src/lib/layout/FullscreenToggle.svelte +0 -50
  650. package/dist/src/lib/layout/InfoCard.svelte +0 -120
  651. package/dist/src/lib/layout/InfoTag.svelte +0 -185
  652. package/dist/src/lib/layout/PropertyFilter.svelte +0 -246
  653. package/dist/src/lib/layout/SettingsSection.svelte +0 -148
  654. package/dist/src/lib/layout/SubpageGrid.svelte +0 -82
  655. package/dist/src/lib/layout/fullscreen.ts +0 -65
  656. package/dist/src/lib/layout/index.ts +0 -11
  657. package/dist/src/lib/layout/json-tree/JsonNode.svelte +0 -548
  658. package/dist/src/lib/layout/json-tree/JsonTree.svelte +0 -1230
  659. package/dist/src/lib/layout/json-tree/index.ts +0 -3
  660. package/dist/src/lib/layout/json-tree/types.ts +0 -126
  661. package/dist/src/lib/layout/json-tree/utils.ts +0 -682
  662. package/dist/src/lib/marching-cubes.ts +0 -614
  663. package/dist/src/lib/math.ts +0 -1081
  664. package/dist/src/lib/overlays/ContextMenu.svelte +0 -162
  665. package/dist/src/lib/overlays/CopyButton.svelte +0 -45
  666. package/dist/src/lib/overlays/DragControlTab.svelte +0 -98
  667. package/dist/src/lib/overlays/DraggablePane.svelte +0 -487
  668. package/dist/src/lib/overlays/InfoPaneCards.svelte +0 -149
  669. package/dist/src/lib/overlays/index.ts +0 -3
  670. package/dist/src/lib/periodic-table/PeriodicTable.svelte +0 -469
  671. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +0 -557
  672. package/dist/src/lib/periodic-table/PropertySelect.svelte +0 -37
  673. package/dist/src/lib/periodic-table/index.ts +0 -12
  674. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  675. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +0 -444
  676. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  677. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +0 -184
  678. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +0 -391
  679. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +0 -203
  680. package/dist/src/lib/phase-diagram/build-diagram.ts +0 -186
  681. package/dist/src/lib/phase-diagram/colors.ts +0 -58
  682. package/dist/src/lib/phase-diagram/diagram-input.ts +0 -40
  683. package/dist/src/lib/phase-diagram/index.ts +0 -13
  684. package/dist/src/lib/phase-diagram/parse.ts +0 -348
  685. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +0 -1023
  686. package/dist/src/lib/phase-diagram/types.ts +0 -144
  687. package/dist/src/lib/phase-diagram/utils.ts +0 -775
  688. package/dist/src/lib/plot/AxisLabel.svelte +0 -51
  689. package/dist/src/lib/plot/BarPlot.svelte +0 -2113
  690. package/dist/src/lib/plot/BarPlotControls.svelte +0 -66
  691. package/dist/src/lib/plot/BinnedScatterPlot.svelte +0 -1114
  692. package/dist/src/lib/plot/ColorBar.svelte +0 -721
  693. package/dist/src/lib/plot/ColorScaleSelect.svelte +0 -54
  694. package/dist/src/lib/plot/ElementScatter.svelte +0 -63
  695. package/dist/src/lib/plot/Histogram.svelte +0 -1558
  696. package/dist/src/lib/plot/HistogramControls.svelte +0 -212
  697. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +0 -96
  698. package/dist/src/lib/plot/Line.svelte +0 -84
  699. package/dist/src/lib/plot/PlotAxis.svelte +0 -169
  700. package/dist/src/lib/plot/PlotControls.svelte +0 -537
  701. package/dist/src/lib/plot/PlotLegend.svelte +0 -569
  702. package/dist/src/lib/plot/PlotTooltip.svelte +0 -67
  703. package/dist/src/lib/plot/PortalSelect.svelte +0 -253
  704. package/dist/src/lib/plot/ReferenceLine3D.svelte +0 -156
  705. package/dist/src/lib/plot/ReferencePlane.svelte +0 -175
  706. package/dist/src/lib/plot/ScatterPlot.svelte +0 -2778
  707. package/dist/src/lib/plot/ScatterPlot3D.svelte +0 -529
  708. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +0 -437
  709. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +0 -912
  710. package/dist/src/lib/plot/ScatterPlotControls.svelte +0 -306
  711. package/dist/src/lib/plot/ScatterPoint.svelte +0 -182
  712. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +0 -293
  713. package/dist/src/lib/plot/Surface3D.svelte +0 -197
  714. package/dist/src/lib/plot/ZeroLines.svelte +0 -97
  715. package/dist/src/lib/plot/ZoomRect.svelte +0 -23
  716. package/dist/src/lib/plot/adaptive-density.ts +0 -316
  717. package/dist/src/lib/plot/auto-place.ts +0 -184
  718. package/dist/src/lib/plot/axis-utils.ts +0 -122
  719. package/dist/src/lib/plot/binned-scatter-types.ts +0 -83
  720. package/dist/src/lib/plot/data-cleaning.ts +0 -1069
  721. package/dist/src/lib/plot/data-transform.ts +0 -69
  722. package/dist/src/lib/plot/defaults.ts +0 -9
  723. package/dist/src/lib/plot/fill-utils.ts +0 -494
  724. package/dist/src/lib/plot/hover-lock.svelte.ts +0 -60
  725. package/dist/src/lib/plot/index.ts +0 -53
  726. package/dist/src/lib/plot/interactions.ts +0 -119
  727. package/dist/src/lib/plot/layout.ts +0 -425
  728. package/dist/src/lib/plot/reference-line.ts +0 -426
  729. package/dist/src/lib/plot/scales.ts +0 -654
  730. package/dist/src/lib/plot/svg.ts +0 -23
  731. package/dist/src/lib/plot/types.ts +0 -1144
  732. package/dist/src/lib/plot/utils/label-placement.ts +0 -541
  733. package/dist/src/lib/plot/utils/series-visibility.ts +0 -140
  734. package/dist/src/lib/plot/utils.ts +0 -11
  735. package/dist/src/lib/rdf/RdfPlot.svelte +0 -247
  736. package/dist/src/lib/rdf/calc-rdf.ts +0 -167
  737. package/dist/src/lib/rdf/index.ts +0 -27
  738. package/dist/src/lib/sanitize.ts +0 -126
  739. package/dist/src/lib/settings.ts +0 -1479
  740. package/dist/src/lib/spectral/Bands.svelte +0 -1040
  741. package/dist/src/lib/spectral/BandsAndDos.svelte +0 -134
  742. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +0 -252
  743. package/dist/src/lib/spectral/Dos.svelte +0 -697
  744. package/dist/src/lib/spectral/helpers.ts +0 -1381
  745. package/dist/src/lib/spectral/index.ts +0 -8
  746. package/dist/src/lib/spectral/types.ts +0 -112
  747. package/dist/src/lib/state.svelte.ts +0 -64
  748. package/dist/src/lib/structure/Arrow.svelte +0 -72
  749. package/dist/src/lib/structure/AtomLegend.svelte +0 -815
  750. package/dist/src/lib/structure/Bond.svelte +0 -140
  751. package/dist/src/lib/structure/CanvasTooltip.svelte +0 -33
  752. package/dist/src/lib/structure/CellSelect.svelte +0 -349
  753. package/dist/src/lib/structure/Cylinder.svelte +0 -45
  754. package/dist/src/lib/structure/Lattice.svelte +0 -196
  755. package/dist/src/lib/structure/Structure.svelte +0 -2248
  756. package/dist/src/lib/structure/StructureControls.svelte +0 -1273
  757. package/dist/src/lib/structure/StructureExportPane.svelte +0 -252
  758. package/dist/src/lib/structure/StructureInfoPane.svelte +0 -737
  759. package/dist/src/lib/structure/StructureScene.svelte +0 -2255
  760. package/dist/src/lib/structure/atom-properties.ts +0 -316
  761. package/dist/src/lib/structure/bond-order-perception.ts +0 -447
  762. package/dist/src/lib/structure/bonding.ts +0 -944
  763. package/dist/src/lib/structure/export.ts +0 -861
  764. package/dist/src/lib/structure/index.ts +0 -291
  765. package/dist/src/lib/structure/label-placement.ts +0 -130
  766. package/dist/src/lib/structure/measure.ts +0 -45
  767. package/dist/src/lib/structure/parse.ts +0 -1705
  768. package/dist/src/lib/structure/partial-occupancy.ts +0 -183
  769. package/dist/src/lib/structure/pbc.ts +0 -164
  770. package/dist/src/lib/structure/supercell.ts +0 -226
  771. package/dist/src/lib/structure/validation.ts +0 -11
  772. package/dist/src/lib/symmetry/SymmetryStats.svelte +0 -226
  773. package/dist/src/lib/symmetry/WyckoffTable.svelte +0 -120
  774. package/dist/src/lib/symmetry/cell-transform.ts +0 -118
  775. package/dist/src/lib/symmetry/index.ts +0 -348
  776. package/dist/src/lib/symmetry/spacegroups.ts +0 -404
  777. package/dist/src/lib/table/HeatmapTable.svelte +0 -1833
  778. package/dist/src/lib/table/ToggleMenu.svelte +0 -385
  779. package/dist/src/lib/table/index.ts +0 -139
  780. package/dist/src/lib/theme/ThemeControl.svelte +0 -53
  781. package/dist/src/lib/theme/index.ts +0 -107
  782. package/dist/src/lib/time.ts +0 -71
  783. package/dist/src/lib/tooltip/TooltipContent.svelte +0 -58
  784. package/dist/src/lib/tooltip/index.ts +0 -2
  785. package/dist/src/lib/tooltip/types.ts +0 -13
  786. package/dist/src/lib/trajectory/Trajectory.svelte +0 -1545
  787. package/dist/src/lib/trajectory/TrajectoryError.svelte +0 -128
  788. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +0 -357
  789. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +0 -313
  790. package/dist/src/lib/trajectory/constants.ts +0 -7
  791. package/dist/src/lib/trajectory/extract.ts +0 -196
  792. package/dist/src/lib/trajectory/format-detect.ts +0 -96
  793. package/dist/src/lib/trajectory/frame-reader.ts +0 -456
  794. package/dist/src/lib/trajectory/helpers.ts +0 -217
  795. package/dist/src/lib/trajectory/index.ts +0 -218
  796. package/dist/src/lib/trajectory/parse/ase.ts +0 -109
  797. package/dist/src/lib/trajectory/parse/hdf5.ts +0 -173
  798. package/dist/src/lib/trajectory/parse/index.ts +0 -411
  799. package/dist/src/lib/trajectory/parse/lammps.ts +0 -215
  800. package/dist/src/lib/trajectory/parse/vasp.ts +0 -102
  801. package/dist/src/lib/trajectory/parse/xyz.ts +0 -143
  802. package/dist/src/lib/trajectory/plotting.ts +0 -599
  803. package/dist/src/lib/trajectory/types.ts +0 -13
  804. package/dist/src/lib/utils.ts +0 -56
  805. package/dist/src/lib/xrd/XrdPlot.svelte +0 -615
  806. package/dist/src/lib/xrd/broadening.ts +0 -130
  807. package/dist/src/lib/xrd/calc-xrd.ts +0 -397
  808. package/dist/src/lib/xrd/index.ts +0 -38
  809. package/dist/src/lib/xrd/parse.ts +0 -858
  810. package/dist/webview.js +0 -29421
  811. package/icon.png +0 -0
  812. package/matterviz-0.3.2.vsix +0 -0
  813. package/matterviz-0.3.4.vsix +0 -0
  814. package/matterviz-0.3.5.vsix +0 -0
  815. package/scripts/sync-config.ts +0 -101
  816. package/src/declarations.d.ts +0 -2
  817. package/src/extension.ts +0 -972
  818. package/src/node-io.ts +0 -65
  819. package/src/types.ts +0 -17
  820. package/src/webview/JsonBrowser.svelte +0 -1079
  821. package/src/webview/PlotPanel.svelte +0 -346
  822. package/src/webview/detect.ts +0 -444
  823. package/src/webview/main.ts +0 -764
  824. package/src/webview/plot-utils.ts +0 -250
  825. package/test-fixtures/all-viz-types.json.gz +0 -0
  826. package/test-fixtures/plot-demo-data.json.gz +0 -0
  827. package/tests/detect.test.ts +0 -604
  828. package/tests/extension.test.ts +0 -2041
  829. package/tests/node-io.test.ts +0 -39
  830. package/tests/plot-utils.test.ts +0 -302
  831. package/tests/vite-plugin-json-gz.test.ts +0 -114
  832. package/tests/vscode-mock.ts +0 -18
  833. package/tests/webview.test.ts +0 -231
  834. package/tsconfig.json +0 -20
  835. package/vite-plugin-json-gz.ts +0 -29
  836. package/vite.config.ts +0 -34
  837. package/vite.extension.config.ts +0 -34
  838. /package/dist/{src/lib/EmptyState.svelte → EmptyState.svelte} +0 -0
  839. /package/dist/{src/lib/Icon.svelte → Icon.svelte} +0 -0
  840. /package/dist/{src/lib/app.css → app.css} +0 -0
  841. /package/dist/{src/lib/chempot-diagram → chempot-diagram}/ChemPotScene3D.svelte +0 -0
  842. /package/dist/{src/lib/colors → colors}/alloy-colors.json +0 -0
  843. /package/dist/{src/lib/colors → colors}/dark-mode-colors.json +0 -0
  844. /package/dist/{src/lib/colors → colors}/jmol-colors.json +0 -0
  845. /package/dist/{src/lib/colors → colors}/muted-colors.json +0 -0
  846. /package/dist/{src/lib/colors → colors}/pastel-colors.json +0 -0
  847. /package/dist/{src/lib/colors → colors}/vesta-colors.json +0 -0
  848. /package/dist/{src/lib/convex-hull → convex-hull}/TemperatureSlider.svelte +0 -0
  849. /package/dist/{src/lib/element → element}/BohrAtom.svelte +0 -0
  850. /package/dist/{src/lib/element → element}/Nucleus.svelte +0 -0
  851. /package/dist/{src/lib/element → element}/data.json +0 -0
  852. /package/dist/{src/lib/element → element}/data.json.gz +0 -0
  853. /package/dist/{src/lib/element → element}/data.json.gz.d.ts +0 -0
  854. /package/dist/{src/lib/element → element}/data.schema.json +0 -0
  855. /package/dist/{src/lib/element-image-urls.json → element-image-urls.json} +0 -0
  856. /package/dist/{src/lib/feedback → feedback}/Spinner.svelte +0 -0
  857. /package/dist/{src/lib/feedback → feedback}/StatusMessage.svelte +0 -0
  858. /package/dist/{src/lib/layout → layout}/json-tree/JsonValue.svelte +0 -0
  859. /package/dist/{src/lib/periodic-table → periodic-table}/TableInset.svelte +0 -0
  860. /package/dist/{src/lib/plot → plot}/FillArea.svelte +0 -0
  861. /package/dist/{src/lib/plot → plot}/ReferenceLine.svelte +0 -0
  862. /package/dist/{src/lib/theme → theme}/themes.mjs +0 -0
  863. /package/dist/{src/lib/xrd → xrd}/atomic_scattering_params.json +0 -0
@@ -0,0 +1,491 @@
1
+ import * as constants from './constants';
2
+ import { compute_vertex_normals } from './marching-cubes';
3
+ const parse_number_tokens = (line) => line.split(/\s+/).filter(Boolean);
4
+ // Parse whitespace-separated floats from a line (optimized with unary +)
5
+ const parse_floats = (line) => parse_number_tokens(line).map((part) => +part);
6
+ // Parse whitespace-separated integers from a line
7
+ const parse_ints = (line) => parse_number_tokens(line).map((part) => parseInt(part, 10));
8
+ // Parse BXSF (Band-XSF) format used by XCrySDen, Quantum ESPRESSO, etc.
9
+ // Format specification: http://www.xcrysden.org/doc/XSF.html
10
+ function parse_bxsf(content) {
11
+ const lines = content.split(/\r?\n/).map((line) => line.trim());
12
+ let line_idx = 0;
13
+ // Helper to get next non-empty, non-comment line
14
+ const next_line = () => {
15
+ while (line_idx < lines.length) {
16
+ const line = lines[line_idx++];
17
+ if (line && !line.startsWith(`#`))
18
+ return line;
19
+ }
20
+ throw new Error(`Unexpected end of BXSF file`);
21
+ };
22
+ // Find BEGIN_BLOCK_BANDGRID_3D
23
+ while (line_idx < lines.length) {
24
+ if (lines[line_idx].includes(`BEGIN_BLOCK_BANDGRID_3D`)) {
25
+ line_idx++;
26
+ break;
27
+ }
28
+ line_idx++;
29
+ }
30
+ if (line_idx >= lines.length) {
31
+ throw new Error(`BXSF file missing BEGIN_BLOCK_BANDGRID_3D`);
32
+ }
33
+ // Skip block identifier line (e.g. "band_energies")
34
+ next_line();
35
+ // Parse BEGIN_BANDGRID_3D or BANDGRID_3D_BANDS (both variants exist)
36
+ const bandgrid_line = next_line();
37
+ if (!bandgrid_line.includes(`BANDGRID_3D`)) {
38
+ throw new Error(`Expected BANDGRID_3D header, got: ${bandgrid_line}`);
39
+ }
40
+ // Parse number of bands
41
+ const n_bands = parseInt(next_line(), 10);
42
+ if (isNaN(n_bands) || n_bands <= 0) {
43
+ throw new Error(`Invalid number of bands in BXSF file`);
44
+ }
45
+ // Parse grid dimensions (nx ny nz)
46
+ const grid_dims = parse_ints(next_line());
47
+ if (grid_dims.length !== 3) {
48
+ throw new Error(`Expected 3 grid dimensions, got ${grid_dims.length}`);
49
+ }
50
+ const k_grid = [grid_dims[0], grid_dims[1], grid_dims[2]];
51
+ // Parse origin
52
+ const origin_vals = parse_floats(next_line());
53
+ if (origin_vals.length !== 3) {
54
+ throw new Error(`Expected 3 origin values, got ${origin_vals.length}`);
55
+ }
56
+ const origin = [origin_vals[0], origin_vals[1], origin_vals[2]];
57
+ // Parse 3 spanning vectors (reciprocal lattice)
58
+ const spanning_vectors = [
59
+ parse_floats(next_line()).slice(0, 3),
60
+ parse_floats(next_line()).slice(0, 3),
61
+ parse_floats(next_line()).slice(0, 3),
62
+ ];
63
+ // Validate spanning vectors
64
+ for (const vec of spanning_vectors) {
65
+ if (vec.length !== 3 || vec.some(isNaN)) {
66
+ throw new Error(`Invalid spanning vector in BXSF file`);
67
+ }
68
+ }
69
+ // Parse band data
70
+ // Format: BAND: band_number followed by energy values on grid
71
+ const energies = [[]]; // [spin=1][band][kx][ky][kz]
72
+ const [nx, ny, nz] = k_grid;
73
+ const total_points = nx * ny * nz;
74
+ for (let band_idx = 0; band_idx < n_bands; band_idx++) {
75
+ // Find BAND: line
76
+ let band_line = next_line();
77
+ while (!band_line.startsWith(`BAND:`)) {
78
+ band_line = next_line();
79
+ }
80
+ // Read energy values for this band
81
+ const energy_values = [];
82
+ while (energy_values.length < total_points) {
83
+ const line = next_line();
84
+ if (line.startsWith(`END_BANDGRID`) || line.startsWith(`BAND:`)) {
85
+ // Unread this line: after next_line() returns, line_idx points past the
86
+ // returned line, so decrementing by 1 restores to the line just read
87
+ line_idx--;
88
+ break;
89
+ }
90
+ energy_values.push(...parse_floats(line));
91
+ }
92
+ if (energy_values.length < total_points) {
93
+ throw new Error(`Band ${band_idx}: expected ${total_points} values, got ${energy_values.length}`);
94
+ }
95
+ // Reshape into 3D grid [kx][ky][kz] (preallocated for speed)
96
+ const band_grid = Array(nx);
97
+ let val_idx = 0;
98
+ for (let ix = 0; ix < nx; ix++) {
99
+ const iy_arr = Array(ny);
100
+ for (let iy = 0; iy < ny; iy++) {
101
+ const iz_arr = energy_values.slice(val_idx, val_idx + nz);
102
+ val_idx += nz;
103
+ iy_arr[iy] = iz_arr;
104
+ }
105
+ band_grid[ix] = iy_arr;
106
+ }
107
+ energies[0].push(band_grid);
108
+ }
109
+ // Try to find Fermi energy (often in a comment or as FERMI_ENERGY keyword)
110
+ let fermi_energy = 0;
111
+ for (const line of lines) {
112
+ const lower = line.toLowerCase();
113
+ if (lower.includes(`fermi`) && lower.includes(`energy`)) {
114
+ // Match patterns like "Fermi Energy = 5.123" or "fermi_energy: -0.5"
115
+ const match = /(?:=|:)\s*([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)/i.exec(line);
116
+ if (match) {
117
+ fermi_energy = parseFloat(match[1]);
118
+ break;
119
+ }
120
+ }
121
+ }
122
+ return {
123
+ energies,
124
+ k_grid,
125
+ k_lattice: spanning_vectors,
126
+ fermi_energy,
127
+ n_bands,
128
+ n_spins: 1,
129
+ origin,
130
+ };
131
+ }
132
+ // Parse FRMSF format used by FermiSurfer
133
+ // Format: https://mitsuaki1987.github.io/fermisurfer/en/_build/html/ops.html
134
+ function parse_frmsf(content) {
135
+ const lines = content
136
+ .split(/\r?\n/)
137
+ .map((line) => line.trim())
138
+ .filter(Boolean);
139
+ let line_idx = 0;
140
+ // Line 1: grid dimensions (ng[0] ng[1] ng[2])
141
+ const grid_dims = parse_ints(lines[line_idx++]);
142
+ if (grid_dims.length !== 3) {
143
+ throw new Error(`FRMSF: Expected 3 grid dimensions`);
144
+ }
145
+ const k_grid = [grid_dims[0], grid_dims[1], grid_dims[2]];
146
+ // Line 2: lshift (grid shift type)
147
+ // 0 = Monkhorst-Pack grid (shifted)
148
+ // 1 = Gamma-centered grid
149
+ // 2 = Gamma + half grid shift
150
+ const lshift = parseInt(lines[line_idx++], 10);
151
+ if (isNaN(lshift) || lshift < 0 || lshift > 2) {
152
+ throw new Error(`FRMSF: Invalid lshift value (expected 0, 1, or 2)`);
153
+ }
154
+ // Line 3: number of bands
155
+ const n_bands = parseInt(lines[line_idx++], 10);
156
+ if (isNaN(n_bands) || n_bands <= 0) {
157
+ throw new Error(`FRMSF: Invalid number of bands`);
158
+ }
159
+ // FRMSF format has single spin channel (no spin-polarized support in standard format)
160
+ const n_spins = 1;
161
+ // Lines 4-6: reciprocal lattice vectors (in Bohr^-1, convert to Å^-1)
162
+ const inv_bohr = 1 / constants.BOHR_TO_ANGSTROM;
163
+ const k_lattice = [
164
+ parse_floats(lines[line_idx++])
165
+ .slice(0, 3)
166
+ .map((val) => val * inv_bohr),
167
+ parse_floats(lines[line_idx++])
168
+ .slice(0, 3)
169
+ .map((val) => val * inv_bohr),
170
+ parse_floats(lines[line_idx++])
171
+ .slice(0, 3)
172
+ .map((val) => val * inv_bohr),
173
+ ];
174
+ const [nx, ny, nz] = k_grid;
175
+ const total_points = nx * ny * nz;
176
+ // Parse band energies for each spin and band
177
+ // FRMSF format: one energy value per line per grid point. Any additional columns
178
+ // (e.g. auxiliary color/velocity data) are ignored to prevent grid corruption.
179
+ const energies = [];
180
+ for (let spin_idx = 0; spin_idx < n_spins; spin_idx++) {
181
+ energies[spin_idx] = [];
182
+ for (let band_idx = 0; band_idx < n_bands; band_idx++) {
183
+ const energy_values = [];
184
+ // Read energy values (first value per line only, ignore auxiliary columns)
185
+ while (energy_values.length < total_points && line_idx < lines.length) {
186
+ const line = lines[line_idx];
187
+ const first_token = line?.split(/\s+/)[0];
188
+ if (first_token && !isNaN(parseFloat(first_token))) {
189
+ energy_values.push(parseFloat(first_token));
190
+ line_idx++;
191
+ }
192
+ else {
193
+ break;
194
+ }
195
+ }
196
+ if (energy_values.length < total_points) {
197
+ throw new Error(`FRMSF spin ${spin_idx} band ${band_idx}: expected ${total_points} values, got ${energy_values.length}`);
198
+ }
199
+ // Reshape into 3D grid [kx][ky][kz]
200
+ const band_grid = [];
201
+ let val_idx = 0;
202
+ for (let ix = 0; ix < nx; ix++) {
203
+ band_grid[ix] = [];
204
+ for (let iy = 0; iy < ny; iy++) {
205
+ band_grid[ix][iy] = [];
206
+ for (let iz = 0; iz < nz; iz++) {
207
+ // FRMSF uses Hartree, convert to eV
208
+ band_grid[ix][iy][iz] = energy_values[val_idx++] * constants.HARTREE_TO_EV;
209
+ }
210
+ }
211
+ }
212
+ energies[spin_idx].push(band_grid);
213
+ }
214
+ }
215
+ return {
216
+ energies,
217
+ k_grid,
218
+ k_lattice,
219
+ fermi_energy: 0, // FRMSF typically expects Fermi level at 0
220
+ n_bands,
221
+ n_spins,
222
+ };
223
+ }
224
+ // Validate that an object has the required Isosurface shape
225
+ function is_valid_isosurface(obj) {
226
+ if (!obj || typeof obj !== `object`)
227
+ return false;
228
+ const isosurface_obj = obj;
229
+ const vertices = isosurface_obj.vertices;
230
+ const faces = isosurface_obj.faces;
231
+ const normals = isosurface_obj.normals;
232
+ const band_index = isosurface_obj.band_index;
233
+ const spin = isosurface_obj.spin;
234
+ if (!Array.isArray(vertices) || vertices.length === 0)
235
+ return false;
236
+ if (!Array.isArray(faces))
237
+ return false;
238
+ if (!Array.isArray(normals))
239
+ return false;
240
+ if (typeof band_index !== `number` || !Number.isFinite(band_index))
241
+ return false;
242
+ if (spin !== null && spin !== `up` && spin !== `down`)
243
+ return false;
244
+ return true;
245
+ }
246
+ // Validate FermiSurfaceData shape
247
+ function is_valid_fermi_surface_data(obj) {
248
+ if (!obj || typeof obj !== `object`)
249
+ return false;
250
+ const data = obj;
251
+ // Check required fields
252
+ if (!Array.isArray(data.isosurfaces))
253
+ return false;
254
+ if (!Array.isArray(data.k_lattice) || data.k_lattice.length !== 3)
255
+ return false;
256
+ if (typeof data.fermi_energy !== `number`)
257
+ return false;
258
+ if (data.reciprocal_cell !== `wigner_seitz` && data.reciprocal_cell !== `parallelepiped`) {
259
+ return false;
260
+ }
261
+ if (!data.metadata || typeof data.metadata !== `object`)
262
+ return false;
263
+ // Validate each isosurface
264
+ for (const iso of data.isosurfaces) {
265
+ if (!is_valid_isosurface(iso))
266
+ return false;
267
+ }
268
+ return true;
269
+ }
270
+ // Parse Matterviz/IFermi JSON format for Fermi surface data
271
+ // Throws on invalid input; returns parsed data on success
272
+ function parse_fermi_json(content) {
273
+ const data = JSON.parse(content);
274
+ // Check if it's already in our FermiSurfaceData format with full validation
275
+ if (data.isosurfaces && Array.isArray(data.isosurfaces)) {
276
+ if (is_valid_fermi_surface_data(data)) {
277
+ return data;
278
+ }
279
+ throw new Error(`Invalid FermiSurfaceData JSON: isosurfaces array present but missing required fields`);
280
+ }
281
+ // Check if it's IFermi format (isosurfaces is an object keyed by band index)
282
+ if (data[`@class`] === `FermiSurface` &&
283
+ data.isosurfaces &&
284
+ typeof data.isosurfaces === `object`) {
285
+ return parse_ifermi_surface(data);
286
+ }
287
+ // Check if it's BandGridData (raw grid data)
288
+ if (data.energies && data.k_grid && data.k_lattice) {
289
+ // Minimal validation of required fields
290
+ if (!Array.isArray(data.energies) ||
291
+ !Array.isArray(data.k_grid) ||
292
+ data.k_grid.length !== 3 ||
293
+ !Array.isArray(data.k_lattice) ||
294
+ data.k_lattice.length !== 3)
295
+ throw new Error(`Invalid BandGridData JSON: malformed required fields`);
296
+ return data;
297
+ }
298
+ // Try to extract from nested structure (e.g. IFermi output)
299
+ if (data.fermi_surface) {
300
+ return data.fermi_surface;
301
+ }
302
+ if (data.band_structure?.energies || data.bands?.energies) {
303
+ const bs = data.band_structure ?? data.bands;
304
+ return {
305
+ energies: bs.energies,
306
+ k_grid: bs.k_grid ?? bs.kgrid,
307
+ k_lattice: bs.k_lattice ?? bs.reciprocal_lattice,
308
+ fermi_energy: bs.fermi_energy ?? bs.efermi ?? 0,
309
+ n_bands: bs.n_bands || bs.nbands || bs.energies[0]?.length || 0,
310
+ n_spins: bs.n_spins || bs.nspins || bs.energies.length || 1,
311
+ };
312
+ }
313
+ // Check for pymatgen BandStructure format (k-path, not k-grid)
314
+ // These files cannot be used for Fermi surface visualization directly
315
+ if (data.bs?.[`@class`] === `BandStructure` || data[`@class`] === `BandStructure`) {
316
+ throw new Error(`This is a pymatgen BandStructure file (band data along k-path). ` +
317
+ `Fermi surface visualization requires a uniform 3D k-grid of eigenvalues. ` +
318
+ `Use IFermi or a BXSF/FRMSF file instead.`);
319
+ }
320
+ throw new Error(`Unrecognized JSON format: missing required fields for Fermi surface data`);
321
+ }
322
+ // Parse IFermi's JSON output format
323
+ function parse_ifermi_surface(data) {
324
+ const isosurfaces_obj = data.isosurfaces;
325
+ const reciprocal_space = data.reciprocal_space;
326
+ // Extract reciprocal lattice
327
+ const k_lattice = reciprocal_space?.reciprocal_lattice
328
+ ? reciprocal_space.reciprocal_lattice
329
+ : [
330
+ [1, 0, 0],
331
+ [0, 1, 0],
332
+ [0, 0, 1],
333
+ ];
334
+ // Convert IFermi isosurfaces to our format
335
+ const isosurfaces = [];
336
+ const band_indices = new Set();
337
+ let has_spin = false;
338
+ for (const [band_key, iso_list] of Object.entries(isosurfaces_obj)) {
339
+ const band_index = parseInt(band_key, 10);
340
+ // spin is determined by sign: positive = up, negative = down
341
+ const spin = band_index < 0 ? `down` : `up`;
342
+ const abs_band_idx = Math.abs(band_index);
343
+ band_indices.add(abs_band_idx);
344
+ if (band_index < 0)
345
+ has_spin = true;
346
+ for (const ifermi_iso of iso_list) {
347
+ const vertices = ifermi_iso.vertices;
348
+ const faces = ifermi_iso.faces;
349
+ // Compute vertex normals from faces
350
+ const normals = compute_vertex_normals(vertices, faces);
351
+ // Extract properties if available
352
+ let properties;
353
+ if (ifermi_iso.properties) {
354
+ // IFermi stores properties like fermi_velocity, spin, etc.
355
+ const prop_keys = Object.keys(ifermi_iso.properties);
356
+ if (prop_keys.length > 0) {
357
+ // Use first available property as vertex colors
358
+ properties = ifermi_iso.properties[prop_keys[0]];
359
+ }
360
+ }
361
+ // Parse dimensionality
362
+ let dimensionality;
363
+ if (ifermi_iso.dimensionality) {
364
+ const dim = ifermi_iso.dimensionality.toLowerCase();
365
+ if (dim.includes(`1d`) || dim === `1d`)
366
+ dimensionality = `1D`;
367
+ else if (dim.includes(`quasi`) || dim === `quasi-2d`)
368
+ dimensionality = `quasi-2D`;
369
+ else if (dim.includes(`2d`) || dim === `2d`)
370
+ dimensionality = `2D`;
371
+ else if (dim.includes(`3d`) || dim === `3d`)
372
+ dimensionality = `3D`;
373
+ }
374
+ // Compute area for this isosurface using fan triangulation for N-gons
375
+ let area = 0;
376
+ for (const face of faces) {
377
+ if (face.length < 3)
378
+ continue;
379
+ // Validate face indices are within bounds to prevent NaN from undefined vertices
380
+ if (face.some((idx) => idx < 0 || idx >= vertices.length))
381
+ continue;
382
+ // Fan triangulation: for N vertices, create N-2 triangles (0,1,2), (0,2,3), ...
383
+ const v0 = vertices[face[0]];
384
+ for (let fan_idx = 1; fan_idx < face.length - 1; fan_idx++) {
385
+ const v1 = vertices[face[fan_idx]];
386
+ const v2 = vertices[face[fan_idx + 1]];
387
+ const e1 = [v1[0] - v0[0], v1[1] - v0[1], v1[2] - v0[2]];
388
+ const e2 = [v2[0] - v0[0], v2[1] - v0[1], v2[2] - v0[2]];
389
+ const cross = [
390
+ e1[1] * e2[2] - e1[2] * e2[1],
391
+ e1[2] * e2[0] - e1[0] * e2[2],
392
+ e1[0] * e2[1] - e1[1] * e2[0],
393
+ ];
394
+ area += 0.5 * Math.hypot(cross[0], cross[1], cross[2]);
395
+ }
396
+ }
397
+ isosurfaces.push({
398
+ vertices,
399
+ faces,
400
+ normals,
401
+ properties,
402
+ band_index: abs_band_idx,
403
+ spin,
404
+ area,
405
+ dimensionality,
406
+ orientation: ifermi_iso.orientation,
407
+ });
408
+ }
409
+ }
410
+ // Compute total surface area
411
+ const total_area = isosurfaces.reduce((sum, iso) => sum + (iso.area ?? 0), 0);
412
+ return {
413
+ isosurfaces,
414
+ k_lattice,
415
+ fermi_energy: 0, // IFermi surfaces are typically relative to Fermi level
416
+ reciprocal_cell: `wigner_seitz`, // IFermi typically uses Wigner-Seitz cells
417
+ metadata: {
418
+ n_bands: band_indices.size,
419
+ n_surfaces: isosurfaces.length,
420
+ total_area,
421
+ source_format: `ifermi-json`,
422
+ has_spin,
423
+ has_velocities: isosurfaces.some((iso) => iso.properties !== undefined),
424
+ },
425
+ };
426
+ }
427
+ // Auto-detect file format and parse accordingly
428
+ export function parse_fermi_file(content, filename) {
429
+ const lower_name = filename?.toLowerCase() || ``;
430
+ // Detect by filename extension
431
+ if (lower_name.endsWith(`.bxsf`) || lower_name.endsWith(`.bxsf.gz`)) {
432
+ try {
433
+ return parse_bxsf(content);
434
+ }
435
+ catch (error) {
436
+ console.error(`BXSF parse error:`, error);
437
+ return null;
438
+ }
439
+ }
440
+ if (lower_name.endsWith(`.frmsf`) || lower_name.endsWith(`.frmsf.gz`)) {
441
+ try {
442
+ return parse_frmsf(content);
443
+ }
444
+ catch (error) {
445
+ console.error(`FRMSF parse error:`, error);
446
+ return null;
447
+ }
448
+ }
449
+ if (lower_name.endsWith(`.json`) || lower_name.endsWith(`.json.gz`)) {
450
+ try {
451
+ return parse_fermi_json(content);
452
+ }
453
+ catch (error) {
454
+ console.error(`JSON parse error:`, error);
455
+ return null;
456
+ }
457
+ }
458
+ // Try auto-detection based on content
459
+ const trimmed = content.trim();
460
+ // BXSF format detection
461
+ if (trimmed.includes(`BEGIN_BLOCK_BANDGRID_3D`) || trimmed.includes(`BEGIN_BANDGRID_3D`)) {
462
+ try {
463
+ return parse_bxsf(content);
464
+ }
465
+ catch (error) {
466
+ console.error(`BXSF auto-detect parse error:`, error);
467
+ }
468
+ }
469
+ // JSON format detection
470
+ if (trimmed.startsWith(`{`) || trimmed.startsWith(`[`)) {
471
+ try {
472
+ return parse_fermi_json(content);
473
+ }
474
+ catch (error) {
475
+ console.error(`JSON auto-detect parse error:`, error);
476
+ }
477
+ }
478
+ // FRMSF format detection (starts with grid dimensions)
479
+ const first_line = trimmed.split(/\r?\n/)[0];
480
+ const first_tokens = first_line.split(/\s+/).filter(Boolean);
481
+ if (first_tokens.length === 3 && first_tokens.every((token) => /^\d+$/.test(token))) {
482
+ try {
483
+ return parse_frmsf(content);
484
+ }
485
+ catch (error) {
486
+ console.error(`FRMSF auto-detect parse error:`, error);
487
+ }
488
+ }
489
+ console.warn(`Could not detect Fermi surface file format for: ${filename}`);
490
+ return null;
491
+ }
@@ -0,0 +1,3 @@
1
+ import type { Matrix4Tuple } from '../math';
2
+ export declare const IDENTITY_4x4: Matrix4Tuple;
3
+ export declare const OH_SYMMETRY_MATRICES: Matrix4Tuple[];
@@ -0,0 +1,46 @@
1
+ // Identity 4x4 matrix (column-major for Three.js)
2
+ // oxfmt-ignore
3
+ export const IDENTITY_4x4 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
4
+ // All permutations of (0, 1, 2) for axis swaps
5
+ const AXIS_PERMUTATIONS = [
6
+ [0, 1, 2],
7
+ [0, 2, 1],
8
+ [1, 0, 2],
9
+ [1, 2, 0],
10
+ [2, 0, 1],
11
+ [2, 1, 0],
12
+ ];
13
+ // All sign combinations for coordinate flips
14
+ const SIGN_COMBINATIONS = [
15
+ [1, 1, 1],
16
+ [1, 1, -1],
17
+ [1, -1, 1],
18
+ [1, -1, -1],
19
+ [-1, 1, 1],
20
+ [-1, 1, -1],
21
+ [-1, -1, 1],
22
+ [-1, -1, -1],
23
+ ];
24
+ // Generate the 48 symmetry operations of the cubic Oh point group.
25
+ // These are all combinations of axis permutations (6) and sign flips (8).
26
+ // Used to tile the irreducible BZ to fill the full first Brillouin zone.
27
+ function generate_oh_symmetry_matrices() {
28
+ const matrices = [];
29
+ for (const perm of AXIS_PERMUTATIONS) {
30
+ for (const sign of SIGN_COMBINATIONS) {
31
+ // Column-major 4x4 matrix: element at (row, col) is at index col*4 + row
32
+ const mat = Array(16).fill(0);
33
+ mat[15] = 1; // w component
34
+ // Build 3x3 rotation part: M[row][col] = sign[row] if perm[row] === col
35
+ for (let col = 0; col < 3; col++) {
36
+ for (let row = 0; row < 3; row++) {
37
+ mat[col * 4 + row] = perm[row] === col ? sign[row] : 0;
38
+ }
39
+ }
40
+ matrices.push(mat);
41
+ }
42
+ }
43
+ return matrices;
44
+ }
45
+ // Pre-computed Oh symmetry matrices (48 operations)
46
+ export const OH_SYMMETRY_MATRICES = generate_oh_symmetry_matrices();
@@ -0,0 +1,110 @@
1
+ import type { Matrix3x3, Point2D, Vec3 } from '../math';
2
+ import type { TooltipConfig, TooltipProp } from '../tooltip';
3
+ export type SpinChannel = `up` | `down` | null;
4
+ export type RepresentationMode = `solid` | `wireframe` | `transparent`;
5
+ export type ColorProperty = `band` | `velocity` | `spin` | `custom`;
6
+ export type ReciprocalCellType = `wigner_seitz` | `parallelepiped`;
7
+ export type SurfaceDimensionality = `1D` | `2D` | `quasi-2D` | `3D`;
8
+ export interface Isosurface {
9
+ vertices: Vec3[];
10
+ faces: number[][];
11
+ normals: Vec3[];
12
+ properties?: number[];
13
+ vector_properties?: Vec3[];
14
+ band_index: number;
15
+ spin: SpinChannel;
16
+ area?: number;
17
+ dimensionality?: SurfaceDimensionality;
18
+ orientation?: Vec3 | null;
19
+ avg_velocity?: number;
20
+ }
21
+ export interface FermiSurfaceData {
22
+ isosurfaces: Isosurface[];
23
+ k_lattice: Matrix3x3;
24
+ fermi_energy: number;
25
+ reciprocal_cell: ReciprocalCellType;
26
+ metadata: FermiSurfaceMetadata;
27
+ }
28
+ export interface FermiSurfaceMetadata {
29
+ n_bands: number;
30
+ n_surfaces: number;
31
+ total_area: number;
32
+ source_format?: string;
33
+ source_file?: string;
34
+ has_spin?: boolean;
35
+ has_velocities?: boolean;
36
+ has_spin_texture?: boolean;
37
+ is_irreducible?: boolean;
38
+ }
39
+ export type EnergyGrid5D = number[][][][][];
40
+ export type VectorGrid5D = Vec3[][][][][];
41
+ export interface BandGridData {
42
+ energies: EnergyGrid5D;
43
+ k_grid: Vec3;
44
+ k_lattice: Matrix3x3;
45
+ fermi_energy: number;
46
+ velocities?: VectorGrid5D;
47
+ spin_texture?: VectorGrid5D;
48
+ n_bands: number;
49
+ n_spins: number;
50
+ origin?: Vec3;
51
+ }
52
+ export interface FermiSliceData {
53
+ isolines: Isoline[];
54
+ plane_normal: Vec3;
55
+ plane_distance: number;
56
+ k_lattice_2d: [Vec3, Vec3];
57
+ metadata: {
58
+ n_lines: number;
59
+ has_properties: boolean;
60
+ };
61
+ }
62
+ export interface Isoline {
63
+ points: Vec3[];
64
+ points_2d: [number, number][];
65
+ properties?: number[];
66
+ band_index: number;
67
+ spin: SpinChannel;
68
+ is_closed: boolean;
69
+ }
70
+ export interface FermiSurfaceOptions {
71
+ mu?: number;
72
+ wigner_seitz?: boolean;
73
+ compute_velocities?: boolean;
74
+ compute_dimensionality?: boolean;
75
+ selected_bands?: number[];
76
+ selected_spins?: SpinChannel[];
77
+ interpolation_factor?: number;
78
+ }
79
+ export interface FermiSliceOptions {
80
+ miller_indices?: Vec3;
81
+ distance?: number;
82
+ }
83
+ export interface FermiFileLoadData {
84
+ fermi_data?: FermiSurfaceData;
85
+ band_data?: BandGridData;
86
+ filename: string;
87
+ file_size: number;
88
+ }
89
+ export interface FermiErrorData {
90
+ error_msg: string;
91
+ filename?: string;
92
+ }
93
+ export interface FermiHoverData {
94
+ band_index: number;
95
+ spin: SpinChannel;
96
+ position_cartesian: Vec3;
97
+ position_fractional: Vec3 | null;
98
+ screen_position: Point2D;
99
+ surface_color?: string;
100
+ property_value?: number;
101
+ property_name?: string;
102
+ is_tiled?: boolean;
103
+ symmetry_index?: number;
104
+ }
105
+ export type FermiTooltipConfig = TooltipConfig<FermiHoverData>;
106
+ export type FermiTooltipProp = TooltipProp<FermiHoverData, [{
107
+ hover_data: FermiHoverData;
108
+ }]>;
109
+ export declare const is_fermi_surface_data: (data: BandGridData | FermiSurfaceData | null) => data is FermiSurfaceData;
110
+ export declare const is_band_grid_data: (data: BandGridData | FermiSurfaceData | null) => data is BandGridData;
@@ -0,0 +1,4 @@
1
+ // Type guard: checks if parsed result is FermiSurfaceData (has pre-computed isosurfaces)
2
+ export const is_fermi_surface_data = (data) => data !== null && `isosurfaces` in data;
3
+ // Type guard: checks if parsed result is BandGridData (raw band grid, needs extraction)
4
+ export const is_band_grid_data = (data) => data !== null && `energies` in data;