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
@@ -1,728 +0,0 @@
1
- // Fermi surface computation and analysis functions
2
- import * as math from '$lib/math'
3
- import { EPS, type Matrix3x3, type Vec3 } from '$lib/math'
4
- import {
5
- CLOSED_CONTOUR_TOLERANCE,
6
- IRREDUCIBLE_BZ_MIN_VERTICES,
7
- IRREDUCIBLE_BZ_TOLERANCE,
8
- SPANNING_THRESHOLD,
9
- } from './constants'
10
- import { marching_cubes } from './marching-cubes'
11
- import type {
12
- BandGridData,
13
- FermiSliceData,
14
- FermiSliceOptions,
15
- FermiSurfaceData,
16
- FermiSurfaceMetadata,
17
- FermiSurfaceOptions,
18
- Isoline,
19
- Isosurface,
20
- SpinChannel,
21
- SurfaceDimensionality,
22
- } from './types'
23
-
24
- const safe_mod = (val: number, dim: number) => ((val % dim) + dim) % dim
25
-
26
- // Precompute Catmull-Rom coefficients for a given t value
27
- // Returns [c0, c1, c2, c3] where result = c0*p0 + c1*p1 + c2*p2 + c3*p3
28
- function catmull_rom_coeffs(t: number): [number, number, number, number] {
29
- const t2 = t * t
30
- const t3 = t2 * t
31
- const c1 = 0.5 * (-t + 2 * t2 - t3)
32
- const c2 = 0.5 * (2 - 5 * t2 + 3 * t3)
33
- const c3 = 0.5 * (t + 4 * t2 - 3 * t3)
34
- const c4 = 0.5 * (-t2 + t3)
35
- return [c1, c2, c3, c4]
36
- }
37
-
38
- // Tricubic interpolation with cached wrap indices and precomputed coefficients
39
- function tricubic_interpolate(
40
- grid: number[][][],
41
- fx: number,
42
- fy: number,
43
- fz: number,
44
- nx: number,
45
- ny: number,
46
- nz: number,
47
- ): number {
48
- // Get integer and fractional parts
49
- const ix = Math.floor(fx)
50
- const iy = Math.floor(fy)
51
- const iz = Math.floor(fz)
52
-
53
- // Precompute Catmull-Rom coefficients
54
- const [cx0, cx1, cx2, cx3] = catmull_rom_coeffs(fx - ix)
55
- const [cy0, cy1, cy2, cy3] = catmull_rom_coeffs(fy - iy)
56
- const [cz0, cz1, cz2, cz3] = catmull_rom_coeffs(fz - iz)
57
-
58
- // Precompute wrapped indices (avoid modulo in inner loop)
59
- const wrap_x = (v: number) => ((v % nx) + nx) % nx
60
- const wrap_y = (v: number) => ((v % ny) + ny) % ny
61
- const wrap_z = (v: number) => ((v % nz) + nz) % nz
62
-
63
- const wx = [wrap_x(ix - 1), wrap_x(ix), wrap_x(ix + 1), wrap_x(ix + 2)]
64
- const wy = [wrap_y(iy - 1), wrap_y(iy), wrap_y(iy + 1), wrap_y(iy + 2)]
65
- const wz = [wrap_z(iz - 1), wrap_z(iz), wrap_z(iz + 1), wrap_z(iz + 2)]
66
-
67
- // Interpolate along z, then y, then x (fully inlined)
68
- let result = 0
69
- const cx = [cx0, cx1, cx2, cx3]
70
- const cy = [cy0, cy1, cy2, cy3]
71
- const cz = [cz0, cz1, cz2, cz3]
72
-
73
- for (let xi = 0; xi < 4; xi++) {
74
- const row = grid[wx[xi]]
75
- let y_sum = 0
76
- for (let yi = 0; yi < 4; yi++) {
77
- const col = row[wy[yi]]
78
- // Inline z interpolation
79
- y_sum +=
80
- cy[yi] *
81
- (cz[0] * col[wz[0]] + cz[1] * col[wz[1]] + cz[2] * col[wz[2]] + cz[3] * col[wz[3]])
82
- }
83
- result += cx[xi] * y_sum
84
- }
85
-
86
- return result
87
- }
88
-
89
- // Upsample a 3D grid using tricubic interpolation for smoother surfaces
90
- function upsample_grid(grid: number[][][], factor: number): number[][][] {
91
- if (factor <= 1) return grid
92
-
93
- const nx = grid.length
94
- const ny = grid[0]?.length || 0
95
- const nz = grid[0]?.[0]?.length || 0
96
-
97
- const new_nx = Math.round(nx * factor)
98
- const new_ny = Math.round(ny * factor)
99
- const new_nz = Math.round(nz * factor)
100
-
101
- // Precompute fractional coordinates for each axis
102
- const fx_arr = new Float64Array(new_nx)
103
- const fy_arr = new Float64Array(new_ny)
104
- const fz_arr = new Float64Array(new_nz)
105
-
106
- for (let ix = 0; ix < new_nx; ix++) fx_arr[ix] = (ix / new_nx) * nx
107
- for (let iy = 0; iy < new_ny; iy++) fy_arr[iy] = (iy / new_ny) * ny
108
- for (let iz = 0; iz < new_nz; iz++) fz_arr[iz] = (iz / new_nz) * nz
109
-
110
- // Preallocate output grid
111
- const new_grid: number[][][] = Array(new_nx)
112
-
113
- for (let ix = 0; ix < new_nx; ix++) {
114
- const fx = fx_arr[ix]
115
- const iy_arr: number[][] = Array(new_ny)
116
- for (let iy = 0; iy < new_ny; iy++) {
117
- const fy = fy_arr[iy]
118
- const iz_arr = new Float64Array(new_nz)
119
- for (let iz = 0; iz < new_nz; iz++) {
120
- iz_arr[iz] = tricubic_interpolate(grid, fx, fy, fz_arr[iz], nx, ny, nz)
121
- }
122
- // Convert Float64Array back to regular array for compatibility
123
- iy_arr[iy] = Array.from(iz_arr)
124
- }
125
- new_grid[ix] = iy_arr
126
- }
127
-
128
- return new_grid
129
- }
130
-
131
- // Extract Fermi surface from band grid data
132
- export function extract_fermi_surface(
133
- band_data: BandGridData,
134
- options: FermiSurfaceOptions = {},
135
- ): FermiSurfaceData {
136
- const {
137
- mu = 0,
138
- wigner_seitz = true,
139
- compute_velocities = false,
140
- compute_dimensionality = false,
141
- selected_bands,
142
- interpolation_factor = 1,
143
- selected_spins,
144
- } = options
145
-
146
- const iso_value = band_data.fermi_energy + mu
147
- const isosurfaces: Isosurface[] = []
148
- let total_area = 0
149
-
150
- // Process each spin channel and band
151
- for (let spin_idx = 0; spin_idx < band_data.n_spins; spin_idx++) {
152
- const spin: SpinChannel = band_data.n_spins === 2 ? (spin_idx === 0 ? `up` : `down`) : null
153
-
154
- // Skip if spin not selected
155
- if (selected_spins && !selected_spins.includes(spin)) continue
156
-
157
- for (let band_idx = 0; band_idx < band_data.n_bands; band_idx++) {
158
- // Skip if band not selected
159
- if (selected_bands && !selected_bands.includes(band_idx)) continue
160
-
161
- const raw_energies = band_data.energies[spin_idx][band_idx]
162
-
163
- // Check if Fermi level intersects this band
164
- if (!band_intersects_fermi(raw_energies, iso_value)) continue
165
-
166
- // Apply interpolation for smoother surfaces
167
- const energies =
168
- interpolation_factor > 1
169
- ? upsample_grid(raw_energies, interpolation_factor)
170
- : raw_energies
171
-
172
- // Extract isosurface using marching cubes
173
- // Use periodic: false because BXSF grids include both endpoints (k=0 and k=1)
174
- // which are equivalent due to BZ periodicity. This matches scikit-image behavior.
175
- const mc_result = marching_cubes(energies, iso_value, band_data.k_lattice, {
176
- periodic: false,
177
- interpolate: true,
178
- })
179
-
180
- if (mc_result.vertices.length === 0) continue
181
-
182
- // Build isosurface
183
- // Note: We don't clip to Wigner-Seitz BZ here because marching cubes output is in
184
- // a centered parallelepiped cell. BZ symmetry tiling in renderer handles full BZ.
185
- const isosurface: Isosurface = {
186
- vertices: mc_result.vertices,
187
- faces: mc_result.faces,
188
- normals: mc_result.normals,
189
- band_index: band_idx,
190
- spin,
191
- }
192
-
193
- // Compute surface area
194
- isosurface.area = compute_surface_area(isosurface)
195
- total_area += isosurface.area
196
-
197
- // Compute Fermi velocities if requested
198
- if (compute_velocities && band_data.velocities) {
199
- isosurface.properties = compute_fermi_velocities(
200
- isosurface,
201
- band_data.velocities[spin_idx][band_idx],
202
- band_data.k_lattice,
203
- band_data.k_grid,
204
- )
205
- isosurface.avg_velocity =
206
- isosurface.properties.reduce((s, v) => s + v, 0) / isosurface.properties.length
207
- }
208
-
209
- // Compute dimensionality if requested
210
- if (compute_dimensionality) {
211
- const { dimensionality, orientation } = analyze_surface_topology(
212
- isosurface,
213
- null, // BZ data not used for topology analysis since we don't clip to Wigner-Seitz
214
- )
215
- isosurface.dimensionality = dimensionality
216
- isosurface.orientation = orientation
217
- }
218
-
219
- isosurfaces.push(isosurface)
220
- }
221
- }
222
-
223
- const metadata: FermiSurfaceMetadata = {
224
- n_bands: band_data.n_bands,
225
- n_surfaces: isosurfaces.length,
226
- total_area,
227
- has_spin: band_data.n_spins === 2,
228
- has_velocities: compute_velocities && band_data.velocities !== undefined,
229
- }
230
-
231
- return {
232
- isosurfaces,
233
- k_lattice: band_data.k_lattice,
234
- fermi_energy: band_data.fermi_energy,
235
- reciprocal_cell: wigner_seitz ? `wigner_seitz` : `parallelepiped`,
236
- metadata,
237
- }
238
- }
239
-
240
- // Check if Fermi level intersects a band (has values both above and below)
241
- function band_intersects_fermi(energies: number[][][], iso_value: number): boolean {
242
- let has_below = false
243
- let has_above = false
244
-
245
- for (const plane of energies) {
246
- for (const row of plane) {
247
- for (const energy of row) {
248
- if (energy < iso_value) has_below = true
249
- else if (energy > iso_value) has_above = true
250
- if (has_below && has_above) return true
251
- }
252
- }
253
- }
254
- return false
255
- }
256
-
257
- // Compute surface area of an isosurface (assumes triangular faces from marching cubes)
258
- export function compute_surface_area(surface: Isosurface): number {
259
- let total_area = 0
260
- const verts = surface.vertices
261
-
262
- for (const face of surface.faces) {
263
- if (face.length < 3) continue
264
- const [v0x, v0y, v0z] = verts[face[0]]
265
- const [v1x, v1y, v1z] = verts[face[1]]
266
- const [v2x, v2y, v2z] = verts[face[2]]
267
-
268
- // Inlined edge subtraction and cross product
269
- const [e1x, e1y, e1z] = [v1x - v0x, v1y - v0y, v1z - v0z]
270
- const [e2x, e2y, e2z] = [v2x - v0x, v2y - v0y, v2z - v0z]
271
- const cx = e1y * e2z - e1z * e2y
272
- const cy = e1z * e2x - e1x * e2z
273
- const cz = e1x * e2y - e1y * e2x
274
-
275
- // Area is half the magnitude of cross product
276
- total_area += Math.sqrt(cx * cx + cy * cy + cz * cz) * 0.5
277
- }
278
-
279
- return total_area
280
- }
281
-
282
- // Compute Fermi velocities at surface vertices
283
- function compute_fermi_velocities(
284
- surface: Isosurface,
285
- velocity_grid: Vec3[][][],
286
- k_lattice: Matrix3x3,
287
- k_grid: Vec3,
288
- ): number[] {
289
- const [nx, ny, nz] = k_grid
290
- const velocities: number[] = []
291
-
292
- // Inverse of k_lattice for Cartesian to fractional conversion
293
- const k_inv = math.matrix_inverse_3x3(k_lattice)
294
-
295
- for (const vertex of surface.vertices) {
296
- // Convert Cartesian to fractional coordinates
297
- const frac = math.mat3x3_vec3_multiply(k_inv, vertex)
298
-
299
- // Wrap to [0, 1)
300
- const wrapped: Vec3 = [
301
- ((frac[0] % 1) + 1) % 1,
302
- ((frac[1] % 1) + 1) % 1,
303
- ((frac[2] % 1) + 1) % 1,
304
- ]
305
-
306
- // Grid indices (with interpolation)
307
- const gx = wrapped[0] * nx
308
- const gy = wrapped[1] * ny
309
- const gz = wrapped[2] * nz
310
-
311
- // Trilinear interpolation of velocity
312
- const velocity = trilinear_interpolate_vec3(velocity_grid, gx, gy, gz)
313
- velocities.push(Math.hypot(...velocity)) // magnitude
314
- }
315
-
316
- return velocities
317
- }
318
-
319
- // Trilinear interpolation for Vec3 grid
320
- // Note: Assumes x, y, z are non-negative (e.g. from wrapped fractional coordinates)
321
- function trilinear_interpolate_vec3(grid: Vec3[][][], x: number, y: number, z: number): Vec3 {
322
- const nx = grid.length
323
- const ny = grid[0]?.length || 0
324
- const nz = grid[0]?.[0]?.length || 0
325
-
326
- // Guard against empty or malformed grids to prevent division by zero in modulo
327
- if (nx === 0 || ny === 0 || nz === 0) return [0, 0, 0]
328
-
329
- // Use safe modulo pattern to handle negative values from floating-point edge cases
330
- const x0 = safe_mod(Math.floor(x), nx)
331
- const y0 = safe_mod(Math.floor(y), ny)
332
- const z0 = safe_mod(Math.floor(z), nz)
333
- const x1 = (x0 + 1) % nx
334
- const y1 = (y0 + 1) % ny
335
- const z1 = (z0 + 1) % nz
336
-
337
- const xd = x - Math.floor(x)
338
- const yd = y - Math.floor(y)
339
- const zd = z - Math.floor(z)
340
-
341
- const c000 = grid[x0][y0][z0]
342
- const c001 = grid[x0][y0][z1]
343
- const c010 = grid[x0][y1][z0]
344
- const c011 = grid[x0][y1][z1]
345
- const c100 = grid[x1][y0][z0]
346
- const c101 = grid[x1][y0][z1]
347
- const c110 = grid[x1][y1][z0]
348
- const c111 = grid[x1][y1][z1]
349
-
350
- const c00 = math.lerp_vec3(c000, c100, xd)
351
- const c01 = math.lerp_vec3(c001, c101, xd)
352
- const c10 = math.lerp_vec3(c010, c110, xd)
353
- const c11 = math.lerp_vec3(c011, c111, xd)
354
-
355
- const c0 = math.lerp_vec3(c00, c10, yd)
356
- const c1 = math.lerp_vec3(c01, c11, yd)
357
-
358
- return math.lerp_vec3(c0, c1, zd)
359
- }
360
-
361
- // Analyze surface topology to determine dimensionality
362
- function analyze_surface_topology(
363
- surface: Isosurface,
364
- bz_data: { vertices: Vec3[] } | null,
365
- ): { dimensionality: SurfaceDimensionality; orientation: Vec3 | null } {
366
- if (surface.vertices.length === 0) {
367
- return { dimensionality: `3D`, orientation: null }
368
- }
369
-
370
- // Check if surface spans the full BZ in each direction
371
- const bz_extent = bz_data
372
- ? math.compute_bounding_box(bz_data.vertices)
373
- : { min: [-1, -1, -1] as Vec3, max: [1, 1, 1] as Vec3 }
374
-
375
- const surface_extent = math.compute_bounding_box(surface.vertices)
376
-
377
- // Check spanning in each direction
378
- const spans: [boolean, boolean, boolean] = [false, false, false]
379
- for (let axis_idx = 0; axis_idx < 3; axis_idx++) {
380
- const bz_size = bz_extent.max[axis_idx] - bz_extent.min[axis_idx]
381
- const surface_size = surface_extent.max[axis_idx] - surface_extent.min[axis_idx]
382
- // Consider spanning if surface covers significant fraction of BZ extent
383
- spans[axis_idx] = surface_size > SPANNING_THRESHOLD * bz_size
384
- }
385
-
386
- const n_spanning = spans.filter(Boolean).length
387
-
388
- if (n_spanning === 0) {
389
- // Closed surface, no spanning directions
390
- return { dimensionality: `3D`, orientation: null }
391
- } else if (n_spanning === 1) {
392
- // 2D sheet spanning one direction
393
- const axis_idx = spans.indexOf(true)
394
- const orientation: Vec3 = [0, 0, 0]
395
- orientation[axis_idx] = 1
396
- return { dimensionality: `2D`, orientation }
397
- } else if (n_spanning === 2) {
398
- // 1D noodle-like (tube spanning 2 directions, bounded in 1)
399
- const axis_idx = spans.indexOf(false)
400
- const orientation: Vec3 = [0, 0, 0]
401
- orientation[axis_idx] = 1
402
- return { dimensionality: `1D`, orientation }
403
- } else {
404
- // Spans all 3 directions - complex warped network
405
- return { dimensionality: `quasi-2D`, orientation: null }
406
- }
407
- }
408
-
409
- // Compute 2D Fermi slice along a specified plane
410
- export function compute_fermi_slice(
411
- fermi_data: FermiSurfaceData,
412
- options: FermiSliceOptions = {},
413
- ): FermiSliceData {
414
- const { miller_indices = [0, 0, 1], distance = 0 } = options
415
-
416
- // Validate miller indices are not all zero
417
- if (miller_indices[0] === 0 && miller_indices[1] === 0 && miller_indices[2] === 0) {
418
- throw new Error(
419
- `Invalid miller indices [0, 0, 0]: at least one index must be non-zero to define a plane`,
420
- )
421
- }
422
-
423
- // Compute plane normal in Cartesian coordinates
424
- const plane_normal = math.add(
425
- math.add(
426
- math.scale(fermi_data.k_lattice[0], miller_indices[0]),
427
- math.scale(fermi_data.k_lattice[1], miller_indices[1]),
428
- ),
429
- math.scale(fermi_data.k_lattice[2], miller_indices[2]),
430
- )
431
-
432
- const normal_len = Math.hypot(...plane_normal)
433
- if (normal_len < EPS) {
434
- throw new Error(
435
- `Degenerate plane normal: k_lattice vectors produce a zero-length normal for miller indices [${miller_indices.join(
436
- `, `,
437
- )}]`,
438
- )
439
- }
440
- const unit_normal = math.normalize_vec3(plane_normal)
441
-
442
- // Compute in-plane basis vectors
443
- const [in_plane_u, in_plane_v] = math.compute_in_plane_basis(unit_normal)
444
-
445
- // Slice each isosurface
446
- const isolines: Isoline[] = []
447
-
448
- for (const surface of fermi_data.isosurfaces) {
449
- const lines = slice_surface_with_plane(
450
- surface,
451
- unit_normal,
452
- distance,
453
- in_plane_u,
454
- in_plane_v,
455
- )
456
- isolines.push(...lines)
457
- }
458
-
459
- return {
460
- isolines,
461
- plane_normal: unit_normal,
462
- plane_distance: distance,
463
- k_lattice_2d: [in_plane_u, in_plane_v],
464
- metadata: {
465
- n_lines: isolines.length,
466
- has_properties: isolines.some((line) => line.properties !== undefined),
467
- },
468
- }
469
- }
470
-
471
- // Helper to create edge key (sorted vertex indices)
472
- const make_edge_key = (v0_idx: number, v1_idx: number): string =>
473
- `${Math.min(v0_idx, v1_idx)},${Math.max(v0_idx, v1_idx)}`
474
-
475
- // Compute intersection point on an edge
476
- function compute_edge_intersection(
477
- surface: Isosurface,
478
- vertex_distances: number[],
479
- v0_idx: number,
480
- v1_idx: number,
481
- ): { point: Vec3; property?: number } | null {
482
- const d0 = vertex_distances[v0_idx]
483
- const d1 = vertex_distances[v1_idx]
484
-
485
- // Edge must cross the plane (opposite signs)
486
- if (d0 * d1 >= 0) return null
487
-
488
- const t = d0 / (d0 - d1)
489
- const v0 = surface.vertices[v0_idx]
490
- const v1 = surface.vertices[v1_idx]
491
-
492
- const point: Vec3 = [
493
- v0[0] + t * (v1[0] - v0[0]),
494
- v0[1] + t * (v1[1] - v0[1]),
495
- v0[2] + t * (v1[2] - v0[2]),
496
- ]
497
-
498
- let property: number | undefined
499
- if (surface.properties) {
500
- property =
501
- surface.properties[v0_idx] +
502
- t * (surface.properties[v1_idx] - surface.properties[v0_idx])
503
- }
504
-
505
- return { point, property }
506
- }
507
-
508
- // Slice a surface with a plane to get isolines
509
- // Uses contour tracing to produce properly ordered line segments
510
- function slice_surface_with_plane(
511
- surface: Isosurface,
512
- plane_normal: Vec3,
513
- plane_distance: number,
514
- in_plane_u: Vec3,
515
- in_plane_v: Vec3,
516
- ): Isoline[] {
517
- if (surface.vertices.length === 0 || surface.faces.length === 0) return []
518
-
519
- // Compute signed distance of each vertex to plane
520
- const vertex_distances = surface.vertices.map(
521
- (vert) => math.dot(vert, plane_normal) - plane_distance,
522
- )
523
-
524
- // Build edge-to-faces map and collect face segments
525
- // Each face that intersects the plane produces exactly one line segment
526
- type FaceSegment = {
527
- face_idx: number
528
- edge_keys: [string, string]
529
- points: [Vec3, Vec3]
530
- properties?: [number, number]
531
- }
532
-
533
- const face_segments: FaceSegment[] = []
534
- const edge_to_faces = new Map<string, number[]>() // edge_key -> face indices
535
-
536
- for (let face_idx = 0; face_idx < surface.faces.length; face_idx++) {
537
- const face = surface.faces[face_idx]
538
- if (face.length < 3) continue
539
-
540
- // Find which edges of this face cross the plane
541
- const crossing_edges: Array<{
542
- edge_key: string
543
- intersection: { point: Vec3; property?: number }
544
- }> = []
545
-
546
- for (let edge_idx = 0; edge_idx < face.length; edge_idx++) {
547
- const v0_idx = face[edge_idx]
548
- const v1_idx = face[(edge_idx + 1) % face.length]
549
- const edge_key = make_edge_key(v0_idx, v1_idx)
550
-
551
- const intersection = compute_edge_intersection(surface, vertex_distances, v0_idx, v1_idx)
552
-
553
- if (intersection) {
554
- crossing_edges.push({ edge_key, intersection })
555
-
556
- // Register this face with the edge
557
- const faces = edge_to_faces.get(edge_key) ?? []
558
- faces.push(face_idx)
559
- edge_to_faces.set(edge_key, faces)
560
- }
561
- }
562
-
563
- // A face intersected by a plane has exactly 2 crossing edges
564
- if (crossing_edges.length === 2) {
565
- face_segments.push({
566
- face_idx,
567
- edge_keys: [crossing_edges[0].edge_key, crossing_edges[1].edge_key],
568
- points: [crossing_edges[0].intersection.point, crossing_edges[1].intersection.point],
569
- properties: surface.properties
570
- ? [
571
- crossing_edges[0].intersection.property ?? 0,
572
- crossing_edges[1].intersection.property ?? 0,
573
- ]
574
- : undefined,
575
- })
576
- }
577
- }
578
-
579
- if (face_segments.length === 0) return []
580
-
581
- // Build face_idx -> segment map for O(1) lookup
582
- const face_to_segment = new Map<number, (typeof face_segments)[0]>()
583
- for (const seg of face_segments) {
584
- face_to_segment.set(seg.face_idx, seg)
585
- }
586
-
587
- // Precompute in-plane basis dot products for faster 2D projection
588
- const [ux, uy, uz] = in_plane_u
589
- const [vx, vy, vz] = in_plane_v
590
-
591
- // Trace connected contours by following adjacent faces
592
- const used_faces = new Set<number>()
593
- const isolines: Isoline[] = []
594
-
595
- for (const start_segment of face_segments) {
596
- if (used_faces.has(start_segment.face_idx)) continue
597
-
598
- // Start a new contour from this segment
599
- // Use arrays that we'll reverse at the end instead of unshift (O(1) vs O(n))
600
- const forward_points: Vec3[] = [start_segment.points[1]]
601
- const backward_points: Vec3[] = []
602
- const forward_props: number[] | undefined = start_segment.properties
603
- ? [start_segment.properties[1]]
604
- : undefined
605
- const backward_props: number[] | undefined = start_segment.properties ? [] : undefined
606
-
607
- used_faces.add(start_segment.face_idx)
608
-
609
- // Helper to trace in one direction
610
- const trace_direction = (
611
- initial_edge: string,
612
- points: Vec3[],
613
- props: number[] | undefined,
614
- ) => {
615
- let current_edge = initial_edge
616
- let found_next = true
617
-
618
- while (found_next) {
619
- found_next = false
620
- const adjacent_faces = edge_to_faces.get(current_edge)
621
- if (!adjacent_faces) break
622
-
623
- for (const adj_face_idx of adjacent_faces) {
624
- if (used_faces.has(adj_face_idx)) continue
625
-
626
- const adj_segment = face_to_segment.get(adj_face_idx)
627
- if (!adj_segment) continue
628
-
629
- // Find which end connects to current_edge
630
- let next_point_idx: number
631
- let next_edge: string
632
- if (adj_segment.edge_keys[0] === current_edge) {
633
- next_point_idx = 1
634
- next_edge = adj_segment.edge_keys[1]
635
- } else if (adj_segment.edge_keys[1] === current_edge) {
636
- next_point_idx = 0
637
- next_edge = adj_segment.edge_keys[0]
638
- } else {
639
- continue
640
- }
641
-
642
- points.push(adj_segment.points[next_point_idx])
643
- if (props && adj_segment.properties) {
644
- props.push(adj_segment.properties[next_point_idx])
645
- }
646
-
647
- used_faces.add(adj_face_idx)
648
- current_edge = next_edge
649
- found_next = true
650
- break
651
- }
652
- }
653
- }
654
-
655
- // Trace forward and backward
656
- trace_direction(start_segment.edge_keys[1], forward_points, forward_props)
657
- trace_direction(start_segment.edge_keys[0], backward_points, backward_props)
658
-
659
- // Combine: backward (reversed) + start_point[0] + forward
660
- backward_points.reverse()
661
- if (backward_props) backward_props.reverse()
662
-
663
- const contour_points: Vec3[] = [
664
- ...backward_points,
665
- start_segment.points[0],
666
- ...forward_points,
667
- ]
668
- const contour_props: number[] | undefined =
669
- backward_props && forward_props && start_segment.properties
670
- ? [...backward_props, start_segment.properties[0], ...forward_props]
671
- : undefined
672
-
673
- // Check if contour is closed
674
- const first = contour_points[0]
675
- const last = contour_points[contour_points.length - 1]
676
- const is_closed = math.euclidean_dist(first, last) < CLOSED_CONTOUR_TOLERANCE
677
-
678
- // Project to 2D (inlined dot product for speed)
679
- const points_2d: [number, number][] = Array(contour_points.length)
680
- for (let idx = 0; idx < contour_points.length; idx++) {
681
- const point = contour_points[idx]
682
- points_2d[idx] = [
683
- point[0] * ux + point[1] * uy + point[2] * uz,
684
- point[0] * vx + point[1] * vy + point[2] * vz,
685
- ]
686
- }
687
-
688
- isolines.push({
689
- points: contour_points,
690
- points_2d,
691
- properties: contour_props,
692
- band_index: surface.band_index,
693
- spin: surface.spin,
694
- is_closed,
695
- })
696
- }
697
-
698
- return isolines
699
- }
700
-
701
- // Detect if Fermi surface data appears to cover only the irreducible BZ wedge.
702
- // For cubic Oh symmetry, this is the region where all vertices are in the first octant
703
- // (x >= 0, y >= 0, z >= 0) with some tolerance. Such data needs tiling to show the full BZ.
704
- export function detect_irreducible_bz(fermi_data: FermiSurfaceData): boolean {
705
- if (fermi_data.isosurfaces.length === 0) return false
706
-
707
- // Check if all vertices are in the positive octant (with small tolerance for numerical error)
708
- let all_positive = true
709
- let vertex_count = 0
710
-
711
- for (const surface of fermi_data.isosurfaces) {
712
- for (const vertex of surface.vertices) {
713
- vertex_count++
714
- if (
715
- vertex[0] < -IRREDUCIBLE_BZ_TOLERANCE ||
716
- vertex[1] < -IRREDUCIBLE_BZ_TOLERANCE ||
717
- vertex[2] < -IRREDUCIBLE_BZ_TOLERANCE
718
- ) {
719
- all_positive = false
720
- break
721
- }
722
- }
723
- if (!all_positive) break
724
- }
725
-
726
- // Only consider it irreducible if we have significant data and all positive
727
- return all_positive && vertex_count > IRREDUCIBLE_BZ_MIN_VERTICES
728
- }