matterviz 0.3.6 → 0.4.0

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 (926) 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 +44 -0
  5. package/dist/Icon.svelte.d.ts +13 -0
  6. package/dist/MillerIndexInput.svelte +66 -0
  7. package/dist/MillerIndexInput.svelte.d.ts +7 -0
  8. package/dist/api/mp.d.ts +6 -0
  9. package/dist/api/mp.js +22 -0
  10. package/dist/api/optimade.d.ts +45 -0
  11. package/dist/api/optimade.js +141 -0
  12. package/dist/app.css +244 -0
  13. package/dist/brillouin/BrillouinZone.svelte +554 -0
  14. package/dist/brillouin/BrillouinZone.svelte.d.ts +84 -0
  15. package/dist/brillouin/BrillouinZoneControls.svelte +144 -0
  16. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +17 -0
  17. package/dist/brillouin/BrillouinZoneExportPane.svelte +146 -0
  18. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +15 -0
  19. package/dist/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  20. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +13 -0
  21. package/dist/brillouin/BrillouinZoneScene.svelte +522 -0
  22. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +49 -0
  23. package/dist/brillouin/BrillouinZoneTooltip.svelte +83 -0
  24. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +8 -0
  25. package/dist/brillouin/compute.d.ts +17 -0
  26. package/dist/brillouin/compute.js +422 -0
  27. package/dist/brillouin/index.d.ts +8 -0
  28. package/dist/brillouin/index.js +7 -0
  29. package/dist/brillouin/types.d.ts +43 -0
  30. package/dist/brillouin/types.js +1 -0
  31. package/dist/chempot-diagram/ChemPotDiagram.svelte +328 -0
  32. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
  33. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +843 -0
  34. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
  35. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3191 -0
  36. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
  37. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
  38. package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
  39. package/dist/chempot-diagram/async-compute.svelte.js +80 -0
  40. package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
  41. package/dist/chempot-diagram/chempot-worker.js +12 -0
  42. package/dist/chempot-diagram/color.d.ts +10 -0
  43. package/dist/chempot-diagram/color.js +32 -0
  44. package/dist/chempot-diagram/compute.d.ts +48 -0
  45. package/dist/chempot-diagram/compute.js +804 -0
  46. package/dist/chempot-diagram/index.d.ts +6 -0
  47. package/dist/chempot-diagram/index.js +6 -0
  48. package/dist/chempot-diagram/pointer.d.ts +16 -0
  49. package/dist/chempot-diagram/pointer.js +40 -0
  50. package/dist/chempot-diagram/temperature.d.ts +15 -0
  51. package/dist/chempot-diagram/temperature.js +34 -0
  52. package/dist/chempot-diagram/types.d.ts +81 -0
  53. package/dist/chempot-diagram/types.js +28 -0
  54. package/dist/colors/index.d.ts +47 -0
  55. package/dist/colors/index.js +204 -0
  56. package/dist/composition/BarChart.svelte +297 -0
  57. package/dist/composition/BarChart.svelte.d.ts +39 -0
  58. package/dist/composition/BubbleChart.svelte +218 -0
  59. package/dist/composition/BubbleChart.svelte.d.ts +28 -0
  60. package/dist/composition/Composition.svelte +165 -0
  61. package/dist/composition/Composition.svelte.d.ts +15 -0
  62. package/dist/composition/Formula.svelte +268 -0
  63. package/dist/composition/Formula.svelte.d.ts +19 -0
  64. package/dist/composition/FormulaFilter.svelte +1263 -0
  65. package/dist/composition/FormulaFilter.svelte.d.ts +51 -0
  66. package/dist/composition/PieChart.svelte +324 -0
  67. package/dist/composition/PieChart.svelte.d.ts +37 -0
  68. package/dist/composition/chem-sys.d.ts +8 -0
  69. package/dist/composition/chem-sys.js +85 -0
  70. package/dist/composition/format.d.ts +15 -0
  71. package/dist/composition/format.js +111 -0
  72. package/dist/composition/index.d.ts +21 -0
  73. package/dist/composition/index.js +15 -0
  74. package/dist/composition/parse.d.ts +56 -0
  75. package/dist/composition/parse.js +486 -0
  76. package/dist/constants.d.ts +29 -0
  77. package/dist/constants.js +99 -0
  78. package/dist/controls.d.ts +14 -0
  79. package/dist/controls.js +30 -0
  80. package/dist/convex-hull/ConvexHull.svelte +157 -0
  81. package/dist/convex-hull/ConvexHull.svelte.d.ts +13 -0
  82. package/dist/convex-hull/ConvexHull2D.svelte +827 -0
  83. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +11 -0
  84. package/dist/convex-hull/ConvexHull3D.svelte +1801 -0
  85. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +8 -0
  86. package/dist/convex-hull/ConvexHull4D.svelte +1394 -0
  87. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +8 -0
  88. package/dist/convex-hull/ConvexHullControls.svelte +535 -0
  89. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +48 -0
  90. package/dist/convex-hull/ConvexHullInfoPane.svelte +125 -0
  91. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +20 -0
  92. package/dist/convex-hull/ConvexHullStats.svelte +929 -0
  93. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +17 -0
  94. package/dist/convex-hull/ConvexHullTooltip.svelte +131 -0
  95. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +33 -0
  96. package/dist/convex-hull/GasPressureControls.svelte +247 -0
  97. package/dist/convex-hull/GasPressureControls.svelte.d.ts +11 -0
  98. package/dist/convex-hull/StructurePopup.svelte +151 -0
  99. package/dist/convex-hull/StructurePopup.svelte.d.ts +18 -0
  100. package/dist/convex-hull/TemperatureSlider.svelte +140 -0
  101. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +8 -0
  102. package/dist/convex-hull/barycentric-coords.d.ts +18 -0
  103. package/dist/convex-hull/barycentric-coords.js +182 -0
  104. package/dist/convex-hull/demo-temperature.d.ts +6 -0
  105. package/dist/convex-hull/demo-temperature.js +38 -0
  106. package/dist/convex-hull/gas-thermodynamics.d.ts +16 -0
  107. package/dist/convex-hull/gas-thermodynamics.js +306 -0
  108. package/dist/convex-hull/helpers.d.ts +117 -0
  109. package/dist/convex-hull/helpers.js +718 -0
  110. package/dist/convex-hull/index.d.ts +119 -0
  111. package/dist/convex-hull/index.js +58 -0
  112. package/dist/convex-hull/thermodynamics.d.ts +67 -0
  113. package/dist/convex-hull/thermodynamics.js +1757 -0
  114. package/dist/convex-hull/types.d.ts +162 -0
  115. package/dist/convex-hull/types.js +36 -0
  116. package/dist/coordination/CoordinationBarPlot.svelte +311 -0
  117. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +30 -0
  118. package/dist/coordination/calc-coordination.d.ts +15 -0
  119. package/dist/coordination/calc-coordination.js +63 -0
  120. package/dist/coordination/index.d.ts +8 -0
  121. package/dist/coordination/index.js +7 -0
  122. package/dist/effects.svelte.d.ts +12 -0
  123. package/dist/effects.svelte.js +37 -0
  124. package/dist/element/BohrAtom.svelte.d.ts +20 -0
  125. package/dist/element/ElementHeading.svelte +26 -0
  126. package/dist/element/ElementHeading.svelte.d.ts +8 -0
  127. package/dist/element/ElementPhoto.svelte +57 -0
  128. package/dist/element/ElementPhoto.svelte.d.ts +9 -0
  129. package/dist/element/ElementStats.svelte +80 -0
  130. package/dist/element/ElementStats.svelte.d.ts +8 -0
  131. package/dist/element/ElementTile.svelte +484 -0
  132. package/dist/element/ElementTile.svelte.d.ts +29 -0
  133. package/dist/element/Nucleus.svelte.d.ts +17 -0
  134. package/dist/element/data.d.ts +2 -0
  135. package/dist/element/data.js +2 -0
  136. package/dist/element/index.d.ts +8 -0
  137. package/dist/element/index.js +7 -0
  138. package/dist/element/types.d.ts +57 -0
  139. package/dist/element/types.js +1 -0
  140. package/dist/feedback/ClickFeedback.svelte +58 -0
  141. package/dist/feedback/ClickFeedback.svelte.d.ts +12 -0
  142. package/dist/feedback/DragOverlay.svelte +42 -0
  143. package/dist/feedback/DragOverlay.svelte.d.ts +7 -0
  144. package/dist/feedback/Spinner.svelte.d.ts +7 -0
  145. package/dist/feedback/StatusMessage.svelte.d.ts +9 -0
  146. package/dist/feedback/index.d.ts +4 -0
  147. package/dist/feedback/index.js +4 -0
  148. package/dist/fermi-surface/FermiSlice.svelte +197 -0
  149. package/dist/fermi-surface/FermiSlice.svelte.d.ts +24 -0
  150. package/dist/fermi-surface/FermiSurface.svelte +606 -0
  151. package/dist/fermi-surface/FermiSurface.svelte.d.ts +83 -0
  152. package/dist/fermi-surface/FermiSurfaceControls.svelte +448 -0
  153. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +35 -0
  154. package/dist/fermi-surface/FermiSurfaceScene.svelte +797 -0
  155. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +50 -0
  156. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +85 -0
  157. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +8 -0
  158. package/dist/fermi-surface/compute.d.ts +5 -0
  159. package/dist/fermi-surface/compute.js +538 -0
  160. package/dist/fermi-surface/constants.d.ts +9 -0
  161. package/dist/fermi-surface/constants.js +27 -0
  162. package/dist/fermi-surface/export.d.ts +5 -0
  163. package/dist/fermi-surface/export.js +51 -0
  164. package/dist/fermi-surface/index.d.ts +12 -0
  165. package/dist/fermi-surface/index.js +13 -0
  166. package/dist/fermi-surface/marching-cubes.d.ts +2 -0
  167. package/dist/fermi-surface/marching-cubes.js +2 -0
  168. package/dist/fermi-surface/parse.d.ts +2 -0
  169. package/dist/fermi-surface/parse.js +494 -0
  170. package/dist/fermi-surface/symmetry.d.ts +3 -0
  171. package/dist/fermi-surface/symmetry.js +46 -0
  172. package/dist/fermi-surface/types.d.ts +111 -0
  173. package/dist/fermi-surface/types.js +4 -0
  174. package/dist/heatmap-matrix/HeatmapMatrix.svelte +1547 -0
  175. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
  176. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  177. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
  178. package/dist/heatmap-matrix/index.d.ts +53 -0
  179. package/dist/heatmap-matrix/index.js +100 -0
  180. package/dist/heatmap-matrix/shared.d.ts +2 -0
  181. package/dist/heatmap-matrix/shared.js +4 -0
  182. package/dist/icons.d.ts +569 -0
  183. package/dist/icons.js +648 -0
  184. package/dist/index.d.ts +39 -0
  185. package/dist/index.js +39 -0
  186. package/dist/io/decompress.d.ts +11 -0
  187. package/dist/io/decompress.js +76 -0
  188. package/dist/io/export.d.ts +16 -0
  189. package/dist/io/export.js +338 -0
  190. package/dist/io/fetch.d.ts +5 -0
  191. package/dist/io/fetch.js +43 -0
  192. package/dist/io/file-drop.d.ts +7 -0
  193. package/dist/io/file-drop.js +42 -0
  194. package/dist/io/index.d.ts +7 -0
  195. package/dist/io/index.js +6 -0
  196. package/dist/io/is-binary.d.ts +1 -0
  197. package/dist/io/is-binary.js +20 -0
  198. package/dist/io/types.d.ts +8 -0
  199. package/dist/io/types.js +1 -0
  200. package/dist/io/url-drop.d.ts +2 -0
  201. package/dist/io/url-drop.js +154 -0
  202. package/dist/isosurface/Isosurface.svelte +285 -0
  203. package/dist/isosurface/Isosurface.svelte.d.ts +8 -0
  204. package/dist/isosurface/IsosurfaceControls.svelte +277 -0
  205. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +9 -0
  206. package/dist/isosurface/index.d.ts +5 -0
  207. package/dist/isosurface/index.js +6 -0
  208. package/dist/isosurface/parse.d.ts +6 -0
  209. package/dist/isosurface/parse.js +552 -0
  210. package/dist/isosurface/slice.d.ts +11 -0
  211. package/dist/isosurface/slice.js +141 -0
  212. package/dist/isosurface/types.d.ts +56 -0
  213. package/dist/isosurface/types.js +227 -0
  214. package/dist/keyboard.d.ts +3 -0
  215. package/dist/keyboard.js +23 -0
  216. package/dist/labels.d.ts +53 -0
  217. package/dist/labels.js +278 -0
  218. package/dist/layout/FullscreenToggle.svelte +50 -0
  219. package/dist/layout/FullscreenToggle.svelte.d.ts +7 -0
  220. package/dist/layout/InfoCard.svelte +120 -0
  221. package/dist/layout/InfoCard.svelte.d.ts +21 -0
  222. package/dist/layout/InfoTag.svelte +185 -0
  223. package/dist/layout/InfoTag.svelte.d.ts +19 -0
  224. package/dist/layout/PropertyFilter.svelte +247 -0
  225. package/dist/layout/PropertyFilter.svelte.d.ts +24 -0
  226. package/dist/layout/SettingsSection.svelte +148 -0
  227. package/dist/layout/SettingsSection.svelte.d.ts +17 -0
  228. package/dist/layout/SubpageGrid.svelte +82 -0
  229. package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
  230. package/dist/layout/fullscreen.d.ts +9 -0
  231. package/dist/layout/fullscreen.js +53 -0
  232. package/dist/layout/index.d.ts +10 -0
  233. package/dist/layout/index.js +8 -0
  234. package/dist/layout/json-tree/JsonNode.svelte +548 -0
  235. package/dist/layout/json-tree/JsonNode.svelte.d.ts +11 -0
  236. package/dist/layout/json-tree/JsonTree.svelte +1230 -0
  237. package/dist/layout/json-tree/JsonTree.svelte.d.ts +6 -0
  238. package/dist/layout/json-tree/JsonValue.svelte.d.ts +9 -0
  239. package/dist/layout/json-tree/index.d.ts +3 -0
  240. package/dist/layout/json-tree/index.js +3 -0
  241. package/dist/layout/json-tree/types.d.ts +74 -0
  242. package/dist/layout/json-tree/types.js +2 -0
  243. package/dist/layout/json-tree/utils.d.ts +29 -0
  244. package/dist/layout/json-tree/utils.js +642 -0
  245. package/dist/marching-cubes.d.ts +14 -0
  246. package/dist/marching-cubes.js +535 -0
  247. package/dist/math.d.ts +105 -0
  248. package/dist/math.js +920 -0
  249. package/dist/overlays/ContextMenu.svelte +162 -0
  250. package/dist/overlays/ContextMenu.svelte.d.ts +25 -0
  251. package/dist/overlays/CopyButton.svelte +45 -0
  252. package/dist/overlays/CopyButton.svelte.d.ts +8 -0
  253. package/dist/overlays/DragControlTab.svelte +98 -0
  254. package/dist/overlays/DragControlTab.svelte.d.ts +8 -0
  255. package/dist/overlays/DraggablePane.svelte +487 -0
  256. package/dist/overlays/DraggablePane.svelte.d.ts +36 -0
  257. package/dist/overlays/InfoPaneCards.svelte +149 -0
  258. package/dist/overlays/InfoPaneCards.svelte.d.ts +22 -0
  259. package/dist/overlays/index.d.ts +3 -0
  260. package/dist/overlays/index.js +3 -0
  261. package/dist/periodic-table/PeriodicTable.svelte +480 -0
  262. package/dist/periodic-table/PeriodicTable.svelte.d.ts +55 -0
  263. package/dist/periodic-table/PeriodicTableControls.svelte +557 -0
  264. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +24 -0
  265. package/dist/periodic-table/PropertySelect.svelte +38 -0
  266. package/dist/periodic-table/PropertySelect.svelte.d.ts +13 -0
  267. package/dist/periodic-table/TableInset.svelte.d.ts +9 -0
  268. package/dist/periodic-table/index.d.ts +10 -0
  269. package/dist/periodic-table/index.js +4 -0
  270. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1092 -0
  271. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +44 -0
  272. package/dist/phase-diagram/PhaseDiagramControls.svelte +444 -0
  273. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +30 -0
  274. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +127 -0
  275. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
  276. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  277. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +19 -0
  278. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  279. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +16 -0
  280. package/dist/phase-diagram/TdbInfoPanel.svelte +203 -0
  281. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +12 -0
  282. package/dist/phase-diagram/build-diagram.d.ts +11 -0
  283. package/dist/phase-diagram/build-diagram.js +160 -0
  284. package/dist/phase-diagram/colors.d.ts +35 -0
  285. package/dist/phase-diagram/colors.js +51 -0
  286. package/dist/phase-diagram/diagram-input.d.ts +29 -0
  287. package/dist/phase-diagram/diagram-input.js +3 -0
  288. package/dist/phase-diagram/index.d.ts +13 -0
  289. package/dist/phase-diagram/index.js +11 -0
  290. package/dist/phase-diagram/parse.d.ts +55 -0
  291. package/dist/phase-diagram/parse.js +273 -0
  292. package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
  293. package/dist/phase-diagram/svg-to-diagram.js +867 -0
  294. package/dist/phase-diagram/types.d.ts +93 -0
  295. package/dist/phase-diagram/types.js +1 -0
  296. package/dist/phase-diagram/utils.d.ts +118 -0
  297. package/dist/phase-diagram/utils.js +600 -0
  298. package/dist/plot/bar/BarPlot.svelte +1755 -0
  299. package/dist/plot/bar/BarPlot.svelte.d.ts +84 -0
  300. package/dist/plot/bar/BarPlotControls.svelte +67 -0
  301. package/dist/plot/bar/BarPlotControls.svelte.d.ts +18 -0
  302. package/dist/plot/bar/SpacegroupBarPlot.svelte +293 -0
  303. package/dist/plot/bar/SpacegroupBarPlot.svelte.d.ts +9 -0
  304. package/dist/plot/bar/data.d.ts +40 -0
  305. package/dist/plot/bar/data.js +154 -0
  306. package/dist/plot/bar/geometry.d.ts +39 -0
  307. package/dist/plot/bar/geometry.js +60 -0
  308. package/dist/plot/bar/index.d.ts +3 -0
  309. package/dist/plot/bar/index.js +3 -0
  310. package/dist/plot/box/BoxPlot.svelte +1462 -0
  311. package/dist/plot/box/BoxPlot.svelte.d.ts +94 -0
  312. package/dist/plot/box/BoxPlotControls.svelte +109 -0
  313. package/dist/plot/box/BoxPlotControls.svelte.d.ts +19 -0
  314. package/dist/plot/box/Violin.svelte +14 -0
  315. package/dist/plot/box/Violin.svelte.d.ts +70 -0
  316. package/dist/plot/box/box-plot.d.ts +55 -0
  317. package/dist/plot/box/box-plot.js +126 -0
  318. package/dist/plot/box/index.d.ts +5 -0
  319. package/dist/plot/box/index.js +5 -0
  320. package/dist/plot/box/kde.d.ts +16 -0
  321. package/dist/plot/box/kde.js +160 -0
  322. package/dist/plot/box/quantile.d.ts +3 -0
  323. package/dist/plot/box/quantile.js +53 -0
  324. package/dist/plot/core/auto-place.d.ts +43 -0
  325. package/dist/plot/core/auto-place.js +122 -0
  326. package/dist/plot/core/axis-utils.d.ts +46 -0
  327. package/dist/plot/core/axis-utils.js +110 -0
  328. package/dist/plot/core/components/AxisLabel.svelte +51 -0
  329. package/dist/plot/core/components/AxisLabel.svelte.d.ts +16 -0
  330. package/dist/plot/core/components/ColorBar.svelte +724 -0
  331. package/dist/plot/core/components/ColorBar.svelte.d.ts +31 -0
  332. package/dist/plot/core/components/ColorScaleSelect.svelte +55 -0
  333. package/dist/plot/core/components/ColorScaleSelect.svelte.d.ts +15 -0
  334. package/dist/plot/core/components/ControlPane.svelte +46 -0
  335. package/dist/plot/core/components/ControlPane.svelte.d.ts +13 -0
  336. package/dist/plot/core/components/FillArea.svelte +234 -0
  337. package/dist/plot/core/components/FillArea.svelte.d.ts +21 -0
  338. package/dist/plot/core/components/InteractiveAxisLabel.svelte +96 -0
  339. package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +14 -0
  340. package/dist/plot/core/components/Line.svelte +101 -0
  341. package/dist/plot/core/components/Line.svelte.d.ts +15 -0
  342. package/dist/plot/core/components/PlotAxis.svelte +171 -0
  343. package/dist/plot/core/components/PlotAxis.svelte.d.ts +25 -0
  344. package/dist/plot/core/components/PlotControls.svelte +525 -0
  345. package/dist/plot/core/components/PlotControls.svelte.d.ts +4 -0
  346. package/dist/plot/core/components/PlotLegend.svelte +580 -0
  347. package/dist/plot/core/components/PlotLegend.svelte.d.ts +30 -0
  348. package/dist/plot/core/components/PlotTooltip.svelte +83 -0
  349. package/dist/plot/core/components/PlotTooltip.svelte.d.ts +25 -0
  350. package/dist/plot/core/components/PortalSelect.svelte +257 -0
  351. package/dist/plot/core/components/PortalSelect.svelte.d.ts +16 -0
  352. package/dist/plot/core/components/ReferenceLine.svelte +204 -0
  353. package/dist/plot/core/components/ReferenceLine.svelte.d.ts +20 -0
  354. package/dist/plot/core/components/ReferenceLine3D.svelte +156 -0
  355. package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +14 -0
  356. package/dist/plot/core/components/ReferencePlane.svelte +175 -0
  357. package/dist/plot/core/components/ReferencePlane.svelte.d.ts +14 -0
  358. package/dist/plot/core/components/ZeroLines.svelte +97 -0
  359. package/dist/plot/core/components/ZeroLines.svelte.d.ts +33 -0
  360. package/dist/plot/core/components/ZoomRect.svelte +23 -0
  361. package/dist/plot/core/components/ZoomRect.svelte.d.ts +8 -0
  362. package/dist/plot/core/components/index.d.ts +17 -0
  363. package/dist/plot/core/components/index.js +17 -0
  364. package/dist/plot/core/data-cleaning.d.ts +107 -0
  365. package/dist/plot/core/data-cleaning.js +853 -0
  366. package/dist/plot/core/data-transform.d.ts +16 -0
  367. package/dist/plot/core/data-transform.js +45 -0
  368. package/dist/plot/core/fill-utils.d.ts +33 -0
  369. package/dist/plot/core/fill-utils.js +388 -0
  370. package/dist/plot/core/hover-lock.svelte.d.ts +14 -0
  371. package/dist/plot/core/hover-lock.svelte.js +45 -0
  372. package/dist/plot/core/index.d.ts +10 -0
  373. package/dist/plot/core/index.js +11 -0
  374. package/dist/plot/core/interactions.d.ts +35 -0
  375. package/dist/plot/core/interactions.js +195 -0
  376. package/dist/plot/core/layout.d.ts +79 -0
  377. package/dist/plot/core/layout.js +281 -0
  378. package/dist/plot/core/reference-line.d.ts +60 -0
  379. package/dist/plot/core/reference-line.js +301 -0
  380. package/dist/plot/core/scales.d.ts +48 -0
  381. package/dist/plot/core/scales.js +480 -0
  382. package/dist/plot/core/svg.d.ts +2 -0
  383. package/dist/plot/core/svg.js +41 -0
  384. package/dist/plot/core/types.d.ts +771 -0
  385. package/dist/plot/core/types.js +99 -0
  386. package/dist/plot/core/utils/label-placement.d.ts +68 -0
  387. package/dist/plot/core/utils/label-placement.js +326 -0
  388. package/dist/plot/core/utils/series-visibility.d.ts +26 -0
  389. package/dist/plot/core/utils/series-visibility.js +112 -0
  390. package/dist/plot/core/utils.d.ts +11 -0
  391. package/dist/plot/core/utils.js +27 -0
  392. package/dist/plot/histogram/Histogram.svelte +1418 -0
  393. package/dist/plot/histogram/Histogram.svelte.d.ts +50 -0
  394. package/dist/plot/histogram/HistogramControls.svelte +212 -0
  395. package/dist/plot/histogram/HistogramControls.svelte.d.ts +22 -0
  396. package/dist/plot/histogram/index.d.ts +2 -0
  397. package/dist/plot/histogram/index.js +2 -0
  398. package/dist/plot/index.d.ts +8 -0
  399. package/dist/plot/index.js +10 -0
  400. package/dist/plot/sankey/Sankey.svelte +700 -0
  401. package/dist/plot/sankey/Sankey.svelte.d.ts +74 -0
  402. package/dist/plot/sankey/SankeyControls.svelte +98 -0
  403. package/dist/plot/sankey/SankeyControls.svelte.d.ts +19 -0
  404. package/dist/plot/sankey/index.d.ts +4 -0
  405. package/dist/plot/sankey/index.js +3 -0
  406. package/dist/plot/sankey/sankey-types.d.ts +42 -0
  407. package/dist/plot/sankey/sankey-types.js +4 -0
  408. package/dist/plot/sankey/sankey.d.ts +52 -0
  409. package/dist/plot/sankey/sankey.js +187 -0
  410. package/dist/plot/scatter/BinnedScatterPlot.svelte +1116 -0
  411. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +66 -0
  412. package/dist/plot/scatter/ElementScatter.svelte +63 -0
  413. package/dist/plot/scatter/ElementScatter.svelte.d.ts +14 -0
  414. package/dist/plot/scatter/ScatterPlot.svelte +2357 -0
  415. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +96 -0
  416. package/dist/plot/scatter/ScatterPlotControls.svelte +307 -0
  417. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +17 -0
  418. package/dist/plot/scatter/ScatterPoint.svelte +182 -0
  419. package/dist/plot/scatter/ScatterPoint.svelte.d.ts +22 -0
  420. package/dist/plot/scatter/adaptive-density.d.ts +79 -0
  421. package/dist/plot/scatter/adaptive-density.js +217 -0
  422. package/dist/plot/scatter/binned-scatter-types.d.ts +59 -0
  423. package/dist/plot/scatter/binned-scatter-types.js +1 -0
  424. package/dist/plot/scatter/index.d.ts +7 -0
  425. package/dist/plot/scatter/index.js +5 -0
  426. package/dist/plot/scatter/scatter-data.d.ts +19 -0
  427. package/dist/plot/scatter/scatter-data.js +212 -0
  428. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +531 -0
  429. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +95 -0
  430. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +438 -0
  431. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +20 -0
  432. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +912 -0
  433. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +74 -0
  434. package/dist/plot/scatter-3d/Surface3D.svelte +197 -0
  435. package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +13 -0
  436. package/dist/plot/scatter-3d/index.d.ts +4 -0
  437. package/dist/plot/scatter-3d/index.js +4 -0
  438. package/dist/plot/sunburst/Sunburst.svelte +1045 -0
  439. package/dist/plot/sunburst/Sunburst.svelte.d.ts +96 -0
  440. package/dist/plot/sunburst/SunburstControls.svelte +200 -0
  441. package/dist/plot/sunburst/SunburstControls.svelte.d.ts +26 -0
  442. package/dist/plot/sunburst/index.d.ts +4 -0
  443. package/dist/plot/sunburst/index.js +4 -0
  444. package/dist/plot/sunburst/render.d.ts +34 -0
  445. package/dist/plot/sunburst/render.js +122 -0
  446. package/dist/plot/sunburst/sunburst.d.ts +62 -0
  447. package/dist/plot/sunburst/sunburst.js +266 -0
  448. package/dist/rdf/RdfPlot.svelte +248 -0
  449. package/dist/rdf/RdfPlot.svelte.d.ts +27 -0
  450. package/dist/rdf/calc-rdf.d.ts +4 -0
  451. package/dist/rdf/calc-rdf.js +98 -0
  452. package/dist/rdf/index.d.ts +23 -0
  453. package/dist/rdf/index.js +2 -0
  454. package/dist/sanitize.d.ts +6 -0
  455. package/dist/sanitize.js +116 -0
  456. package/dist/settings.d.ts +319 -0
  457. package/dist/settings.js +1394 -0
  458. package/dist/spectral/Bands.svelte +1050 -0
  459. package/dist/spectral/Bands.svelte.d.ts +39 -0
  460. package/dist/spectral/BandsAndDos.svelte +134 -0
  461. package/dist/spectral/BandsAndDos.svelte.d.ts +18 -0
  462. package/dist/spectral/BrillouinBandsDos.svelte +264 -0
  463. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +20 -0
  464. package/dist/spectral/Dos.svelte +688 -0
  465. package/dist/spectral/Dos.svelte.d.ts +29 -0
  466. package/dist/spectral/helpers.d.ts +121 -0
  467. package/dist/spectral/helpers.js +1098 -0
  468. package/dist/spectral/index.d.ts +6 -0
  469. package/dist/spectral/index.js +6 -0
  470. package/dist/spectral/types.d.ts +84 -0
  471. package/dist/spectral/types.js +2 -0
  472. package/dist/state.svelte.d.ts +25 -0
  473. package/dist/state.svelte.js +45 -0
  474. package/dist/structure/Arrow.svelte +72 -0
  475. package/dist/structure/Arrow.svelte.d.ts +15 -0
  476. package/dist/structure/AtomLegend.svelte +814 -0
  477. package/dist/structure/AtomLegend.svelte.d.ts +35 -0
  478. package/dist/structure/Bond.svelte +140 -0
  479. package/dist/structure/Bond.svelte.d.ts +9 -0
  480. package/dist/structure/CanvasTooltip.svelte +33 -0
  481. package/dist/structure/CanvasTooltip.svelte.d.ts +12 -0
  482. package/dist/structure/CellSelect.svelte +348 -0
  483. package/dist/structure/CellSelect.svelte.d.ts +13 -0
  484. package/dist/structure/Cylinder.svelte +49 -0
  485. package/dist/structure/Cylinder.svelte.d.ts +13 -0
  486. package/dist/structure/Lattice.svelte +196 -0
  487. package/dist/structure/Lattice.svelte.d.ts +17 -0
  488. package/dist/structure/Structure.svelte +2254 -0
  489. package/dist/structure/Structure.svelte.d.ts +89 -0
  490. package/dist/structure/StructureControls.svelte +1273 -0
  491. package/dist/structure/StructureControls.svelte.d.ts +31 -0
  492. package/dist/structure/StructureExportPane.svelte +252 -0
  493. package/dist/structure/StructureExportPane.svelte.d.ts +17 -0
  494. package/dist/structure/StructureInfoPane.svelte +736 -0
  495. package/dist/structure/StructureInfoPane.svelte.d.ts +19 -0
  496. package/dist/structure/StructureScene.svelte +2256 -0
  497. package/dist/structure/StructureScene.svelte.d.ts +111 -0
  498. package/dist/structure/atom-properties.d.ts +37 -0
  499. package/dist/structure/atom-properties.js +200 -0
  500. package/dist/structure/bond-order-perception.d.ts +13 -0
  501. package/dist/structure/bond-order-perception.js +384 -0
  502. package/dist/structure/bonding.d.ts +69 -0
  503. package/dist/structure/bonding.js +724 -0
  504. package/dist/structure/export.d.ts +20 -0
  505. package/dist/structure/export.js +731 -0
  506. package/dist/structure/index.d.ts +124 -0
  507. package/dist/structure/index.js +167 -0
  508. package/dist/structure/label-placement.d.ts +14 -0
  509. package/dist/structure/label-placement.js +72 -0
  510. package/dist/structure/measure.d.ts +7 -0
  511. package/dist/structure/measure.js +30 -0
  512. package/dist/structure/parse.d.ts +66 -0
  513. package/dist/structure/parse.js +1410 -0
  514. package/dist/structure/partial-occupancy.d.ts +25 -0
  515. package/dist/structure/partial-occupancy.js +99 -0
  516. package/dist/structure/pbc.d.ts +9 -0
  517. package/dist/structure/pbc.js +127 -0
  518. package/dist/structure/supercell.d.ts +8 -0
  519. package/dist/structure/supercell.js +170 -0
  520. package/dist/structure/validation.d.ts +2 -0
  521. package/dist/structure/validation.js +10 -0
  522. package/dist/symmetry/SymmetryStats.svelte +226 -0
  523. package/dist/symmetry/SymmetryStats.svelte.d.ts +21 -0
  524. package/dist/symmetry/WyckoffTable.svelte +120 -0
  525. package/dist/symmetry/WyckoffTable.svelte.d.ts +11 -0
  526. package/dist/symmetry/cell-transform.d.ts +12 -0
  527. package/dist/symmetry/cell-transform.js +91 -0
  528. package/dist/symmetry/index.d.ts +43 -0
  529. package/dist/symmetry/index.js +226 -0
  530. package/dist/symmetry/spacegroups.d.ts +16 -0
  531. package/dist/symmetry/spacegroups.js +429 -0
  532. package/dist/table/HeatmapTable.svelte +1885 -0
  533. package/dist/table/HeatmapTable.svelte.d.ts +49 -0
  534. package/dist/table/ToggleMenu.svelte +385 -0
  535. package/dist/table/ToggleMenu.svelte.d.ts +11 -0
  536. package/dist/table/index.d.ts +72 -0
  537. package/dist/table/index.js +38 -0
  538. package/dist/theme/ThemeControl.svelte +53 -0
  539. package/dist/theme/ThemeControl.svelte.d.ts +9 -0
  540. package/dist/theme/index.d.ts +29 -0
  541. package/dist/theme/index.js +79 -0
  542. package/dist/time.d.ts +4 -0
  543. package/dist/time.js +70 -0
  544. package/dist/tooltip/KCoords.svelte +45 -0
  545. package/dist/tooltip/KCoords.svelte.d.ts +8 -0
  546. package/dist/tooltip/TooltipContent.svelte +58 -0
  547. package/dist/tooltip/TooltipContent.svelte.d.ts +31 -0
  548. package/dist/tooltip/index.d.ts +3 -0
  549. package/dist/tooltip/index.js +2 -0
  550. package/dist/tooltip/types.d.ts +8 -0
  551. package/dist/tooltip/types.js +1 -0
  552. package/dist/trajectory/Trajectory.svelte +1571 -0
  553. package/dist/trajectory/Trajectory.svelte.d.ts +78 -0
  554. package/dist/trajectory/TrajectoryError.svelte +128 -0
  555. package/dist/trajectory/TrajectoryError.svelte.d.ts +13 -0
  556. package/dist/trajectory/TrajectoryExportPane.svelte +358 -0
  557. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +17 -0
  558. package/dist/trajectory/TrajectoryInfoPane.svelte +314 -0
  559. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +17 -0
  560. package/dist/trajectory/constants.d.ts +6 -0
  561. package/dist/trajectory/constants.js +7 -0
  562. package/dist/trajectory/extract.d.ts +5 -0
  563. package/dist/trajectory/extract.js +162 -0
  564. package/dist/trajectory/format-detect.d.ts +10 -0
  565. package/dist/trajectory/format-detect.js +90 -0
  566. package/dist/trajectory/frame-reader.d.ts +17 -0
  567. package/dist/trajectory/frame-reader.js +299 -0
  568. package/dist/trajectory/helpers.d.ts +15 -0
  569. package/dist/trajectory/helpers.js +164 -0
  570. package/dist/trajectory/index.d.ts +63 -0
  571. package/dist/trajectory/index.js +126 -0
  572. package/dist/trajectory/parse/ase.d.ts +2 -0
  573. package/dist/trajectory/parse/ase.js +73 -0
  574. package/dist/trajectory/parse/hdf5.d.ts +2 -0
  575. package/dist/trajectory/parse/hdf5.js +127 -0
  576. package/dist/trajectory/parse/index.d.ts +12 -0
  577. package/dist/trajectory/parse/index.js +306 -0
  578. package/dist/trajectory/parse/lammps.d.ts +5 -0
  579. package/dist/trajectory/parse/lammps.js +179 -0
  580. package/dist/trajectory/parse/vasp.d.ts +2 -0
  581. package/dist/trajectory/parse/vasp.js +87 -0
  582. package/dist/trajectory/parse/xyz.d.ts +26 -0
  583. package/dist/trajectory/parse/xyz.js +123 -0
  584. package/dist/trajectory/plotting.d.ts +28 -0
  585. package/dist/trajectory/plotting.js +423 -0
  586. package/dist/trajectory/types.d.ts +11 -0
  587. package/dist/trajectory/types.js +1 -0
  588. package/dist/utils.d.ts +7 -0
  589. package/dist/utils.js +47 -0
  590. package/dist/xrd/XrdPlot.svelte +616 -0
  591. package/dist/xrd/XrdPlot.svelte.d.ts +28 -0
  592. package/dist/xrd/broadening.d.ts +20 -0
  593. package/dist/xrd/broadening.js +97 -0
  594. package/dist/xrd/calc-xrd.d.ts +37 -0
  595. package/dist/xrd/calc-xrd.js +339 -0
  596. package/dist/xrd/index.d.ts +37 -0
  597. package/dist/xrd/index.js +4 -0
  598. package/dist/xrd/parse.d.ts +13 -0
  599. package/dist/xrd/parse.js +749 -0
  600. package/license +1 -1
  601. package/package.json +237 -1458
  602. package/readme.md +98 -171
  603. package/.vscode/launch.json +0 -13
  604. package/.vscodeignore +0 -7
  605. package/dist/assets/STLExporter-BpTH3YHE.js +0 -8
  606. package/dist/assets/browser-DdDecX_W.js +0 -1
  607. package/dist/assets/export-qgn-H9y6.js +0 -2
  608. package/dist/assets/main-DiKYzti2.css +0 -1
  609. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  610. package/dist/extension.js +0 -31293
  611. package/dist/src/lib/FilePicker.svelte +0 -360
  612. package/dist/src/lib/Icon.svelte +0 -41
  613. package/dist/src/lib/MillerIndexInput.svelte +0 -66
  614. package/dist/src/lib/api/mp.ts +0 -26
  615. package/dist/src/lib/api/optimade.ts +0 -204
  616. package/dist/src/lib/app.css +0 -247
  617. package/dist/src/lib/brillouin/BrillouinZone.svelte +0 -549
  618. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +0 -144
  619. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +0 -146
  620. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  621. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +0 -476
  622. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +0 -92
  623. package/dist/src/lib/brillouin/compute.ts +0 -529
  624. package/dist/src/lib/brillouin/index.ts +0 -8
  625. package/dist/src/lib/brillouin/types.ts +0 -51
  626. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +0 -327
  627. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +0 -846
  628. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +0 -3193
  629. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +0 -94
  630. package/dist/src/lib/chempot-diagram/chempot-worker.ts +0 -11
  631. package/dist/src/lib/chempot-diagram/color.ts +0 -42
  632. package/dist/src/lib/chempot-diagram/compute.ts +0 -1014
  633. package/dist/src/lib/chempot-diagram/index.ts +0 -6
  634. package/dist/src/lib/chempot-diagram/pointer.ts +0 -56
  635. package/dist/src/lib/chempot-diagram/temperature.ts +0 -77
  636. package/dist/src/lib/chempot-diagram/types.ts +0 -130
  637. package/dist/src/lib/colors/index.ts +0 -249
  638. package/dist/src/lib/composition/BarChart.svelte +0 -297
  639. package/dist/src/lib/composition/BubbleChart.svelte +0 -218
  640. package/dist/src/lib/composition/Composition.svelte +0 -165
  641. package/dist/src/lib/composition/Formula.svelte +0 -268
  642. package/dist/src/lib/composition/FormulaFilter.svelte +0 -1257
  643. package/dist/src/lib/composition/PieChart.svelte +0 -323
  644. package/dist/src/lib/composition/format.ts +0 -155
  645. package/dist/src/lib/composition/index.ts +0 -37
  646. package/dist/src/lib/composition/parse.ts +0 -605
  647. package/dist/src/lib/constants.ts +0 -134
  648. package/dist/src/lib/controls.ts +0 -42
  649. package/dist/src/lib/convex-hull/ConvexHull.svelte +0 -157
  650. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +0 -825
  651. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +0 -1801
  652. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +0 -1398
  653. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +0 -535
  654. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +0 -125
  655. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +0 -929
  656. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +0 -131
  657. package/dist/src/lib/convex-hull/GasPressureControls.svelte +0 -247
  658. package/dist/src/lib/convex-hull/StructurePopup.svelte +0 -151
  659. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +0 -140
  660. package/dist/src/lib/convex-hull/barycentric-coords.ts +0 -246
  661. package/dist/src/lib/convex-hull/demo-temperature.ts +0 -63
  662. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +0 -405
  663. package/dist/src/lib/convex-hull/helpers.ts +0 -932
  664. package/dist/src/lib/convex-hull/index.ts +0 -202
  665. package/dist/src/lib/convex-hull/thermodynamics.ts +0 -2192
  666. package/dist/src/lib/convex-hull/types.ts +0 -267
  667. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +0 -311
  668. package/dist/src/lib/coordination/calc-coordination.ts +0 -93
  669. package/dist/src/lib/coordination/index.ts +0 -9
  670. package/dist/src/lib/effects.svelte.ts +0 -48
  671. package/dist/src/lib/element/ElementHeading.svelte +0 -26
  672. package/dist/src/lib/element/ElementPhoto.svelte +0 -57
  673. package/dist/src/lib/element/ElementStats.svelte +0 -80
  674. package/dist/src/lib/element/ElementTile.svelte +0 -484
  675. package/dist/src/lib/element/data.ts +0 -14
  676. package/dist/src/lib/element/index.ts +0 -8
  677. package/dist/src/lib/element/types.ts +0 -62
  678. package/dist/src/lib/feedback/ClickFeedback.svelte +0 -58
  679. package/dist/src/lib/feedback/DragOverlay.svelte +0 -42
  680. package/dist/src/lib/feedback/index.ts +0 -4
  681. package/dist/src/lib/fermi-surface/FermiSlice.svelte +0 -189
  682. package/dist/src/lib/fermi-surface/FermiSurface.svelte +0 -600
  683. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +0 -448
  684. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +0 -794
  685. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  686. package/dist/src/lib/fermi-surface/compute.ts +0 -728
  687. package/dist/src/lib/fermi-surface/constants.ts +0 -32
  688. package/dist/src/lib/fermi-surface/export.ts +0 -64
  689. package/dist/src/lib/fermi-surface/index.ts +0 -14
  690. package/dist/src/lib/fermi-surface/marching-cubes.ts +0 -3
  691. package/dist/src/lib/fermi-surface/parse.ts +0 -574
  692. package/dist/src/lib/fermi-surface/symmetry.ts +0 -56
  693. package/dist/src/lib/fermi-surface/types.ts +0 -159
  694. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +0 -1545
  695. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  696. package/dist/src/lib/heatmap-matrix/index.ts +0 -167
  697. package/dist/src/lib/heatmap-matrix/shared.ts +0 -7
  698. package/dist/src/lib/icons.ts +0 -650
  699. package/dist/src/lib/index.ts +0 -61
  700. package/dist/src/lib/io/decompress.ts +0 -92
  701. package/dist/src/lib/io/export.ts +0 -385
  702. package/dist/src/lib/io/fetch.ts +0 -46
  703. package/dist/src/lib/io/file-drop.ts +0 -51
  704. package/dist/src/lib/io/index.ts +0 -7
  705. package/dist/src/lib/io/is-binary.ts +0 -24
  706. package/dist/src/lib/io/types.ts +0 -8
  707. package/dist/src/lib/io/url-drop.ts +0 -141
  708. package/dist/src/lib/isosurface/Isosurface.svelte +0 -285
  709. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +0 -277
  710. package/dist/src/lib/isosurface/index.ts +0 -7
  711. package/dist/src/lib/isosurface/parse.ts +0 -656
  712. package/dist/src/lib/isosurface/slice.ts +0 -175
  713. package/dist/src/lib/isosurface/types.ts +0 -309
  714. package/dist/src/lib/labels.ts +0 -320
  715. package/dist/src/lib/layout/FullscreenToggle.svelte +0 -50
  716. package/dist/src/lib/layout/InfoCard.svelte +0 -120
  717. package/dist/src/lib/layout/InfoTag.svelte +0 -185
  718. package/dist/src/lib/layout/PropertyFilter.svelte +0 -246
  719. package/dist/src/lib/layout/SettingsSection.svelte +0 -148
  720. package/dist/src/lib/layout/SubpageGrid.svelte +0 -82
  721. package/dist/src/lib/layout/fullscreen.ts +0 -65
  722. package/dist/src/lib/layout/index.ts +0 -11
  723. package/dist/src/lib/layout/json-tree/JsonNode.svelte +0 -548
  724. package/dist/src/lib/layout/json-tree/JsonTree.svelte +0 -1230
  725. package/dist/src/lib/layout/json-tree/index.ts +0 -3
  726. package/dist/src/lib/layout/json-tree/types.ts +0 -126
  727. package/dist/src/lib/layout/json-tree/utils.ts +0 -682
  728. package/dist/src/lib/marching-cubes.ts +0 -614
  729. package/dist/src/lib/math.ts +0 -1081
  730. package/dist/src/lib/overlays/ContextMenu.svelte +0 -162
  731. package/dist/src/lib/overlays/CopyButton.svelte +0 -45
  732. package/dist/src/lib/overlays/DragControlTab.svelte +0 -98
  733. package/dist/src/lib/overlays/DraggablePane.svelte +0 -487
  734. package/dist/src/lib/overlays/InfoPaneCards.svelte +0 -149
  735. package/dist/src/lib/overlays/index.ts +0 -3
  736. package/dist/src/lib/periodic-table/PeriodicTable.svelte +0 -469
  737. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +0 -557
  738. package/dist/src/lib/periodic-table/PropertySelect.svelte +0 -37
  739. package/dist/src/lib/periodic-table/index.ts +0 -12
  740. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  741. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +0 -444
  742. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  743. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +0 -184
  744. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +0 -391
  745. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +0 -203
  746. package/dist/src/lib/phase-diagram/build-diagram.ts +0 -186
  747. package/dist/src/lib/phase-diagram/colors.ts +0 -58
  748. package/dist/src/lib/phase-diagram/diagram-input.ts +0 -40
  749. package/dist/src/lib/phase-diagram/index.ts +0 -13
  750. package/dist/src/lib/phase-diagram/parse.ts +0 -348
  751. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +0 -1023
  752. package/dist/src/lib/phase-diagram/types.ts +0 -144
  753. package/dist/src/lib/phase-diagram/utils.ts +0 -775
  754. package/dist/src/lib/plot/AxisLabel.svelte +0 -51
  755. package/dist/src/lib/plot/BarPlot.svelte +0 -2113
  756. package/dist/src/lib/plot/BarPlotControls.svelte +0 -66
  757. package/dist/src/lib/plot/BinnedScatterPlot.svelte +0 -1114
  758. package/dist/src/lib/plot/ColorBar.svelte +0 -721
  759. package/dist/src/lib/plot/ColorScaleSelect.svelte +0 -54
  760. package/dist/src/lib/plot/ElementScatter.svelte +0 -63
  761. package/dist/src/lib/plot/FillArea.svelte +0 -223
  762. package/dist/src/lib/plot/Histogram.svelte +0 -1558
  763. package/dist/src/lib/plot/HistogramControls.svelte +0 -212
  764. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +0 -96
  765. package/dist/src/lib/plot/Line.svelte +0 -84
  766. package/dist/src/lib/plot/PlotAxis.svelte +0 -169
  767. package/dist/src/lib/plot/PlotControls.svelte +0 -537
  768. package/dist/src/lib/plot/PlotLegend.svelte +0 -569
  769. package/dist/src/lib/plot/PlotTooltip.svelte +0 -67
  770. package/dist/src/lib/plot/PortalSelect.svelte +0 -253
  771. package/dist/src/lib/plot/ReferenceLine.svelte +0 -204
  772. package/dist/src/lib/plot/ReferenceLine3D.svelte +0 -156
  773. package/dist/src/lib/plot/ReferencePlane.svelte +0 -175
  774. package/dist/src/lib/plot/ScatterPlot.svelte +0 -2778
  775. package/dist/src/lib/plot/ScatterPlot3D.svelte +0 -529
  776. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +0 -437
  777. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +0 -912
  778. package/dist/src/lib/plot/ScatterPlotControls.svelte +0 -306
  779. package/dist/src/lib/plot/ScatterPoint.svelte +0 -182
  780. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +0 -293
  781. package/dist/src/lib/plot/Surface3D.svelte +0 -197
  782. package/dist/src/lib/plot/ZeroLines.svelte +0 -97
  783. package/dist/src/lib/plot/ZoomRect.svelte +0 -23
  784. package/dist/src/lib/plot/adaptive-density.ts +0 -316
  785. package/dist/src/lib/plot/auto-place.ts +0 -184
  786. package/dist/src/lib/plot/axis-utils.ts +0 -122
  787. package/dist/src/lib/plot/binned-scatter-types.ts +0 -83
  788. package/dist/src/lib/plot/data-cleaning.ts +0 -1069
  789. package/dist/src/lib/plot/data-transform.ts +0 -69
  790. package/dist/src/lib/plot/defaults.ts +0 -9
  791. package/dist/src/lib/plot/fill-utils.ts +0 -494
  792. package/dist/src/lib/plot/hover-lock.svelte.ts +0 -60
  793. package/dist/src/lib/plot/index.ts +0 -53
  794. package/dist/src/lib/plot/interactions.ts +0 -119
  795. package/dist/src/lib/plot/layout.ts +0 -425
  796. package/dist/src/lib/plot/reference-line.ts +0 -426
  797. package/dist/src/lib/plot/scales.ts +0 -654
  798. package/dist/src/lib/plot/svg.ts +0 -23
  799. package/dist/src/lib/plot/types.ts +0 -1144
  800. package/dist/src/lib/plot/utils/label-placement.ts +0 -541
  801. package/dist/src/lib/plot/utils/series-visibility.ts +0 -140
  802. package/dist/src/lib/plot/utils.ts +0 -11
  803. package/dist/src/lib/rdf/RdfPlot.svelte +0 -247
  804. package/dist/src/lib/rdf/calc-rdf.ts +0 -167
  805. package/dist/src/lib/rdf/index.ts +0 -27
  806. package/dist/src/lib/sanitize.ts +0 -126
  807. package/dist/src/lib/settings.ts +0 -1479
  808. package/dist/src/lib/spectral/Bands.svelte +0 -1040
  809. package/dist/src/lib/spectral/BandsAndDos.svelte +0 -134
  810. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +0 -252
  811. package/dist/src/lib/spectral/Dos.svelte +0 -697
  812. package/dist/src/lib/spectral/helpers.ts +0 -1381
  813. package/dist/src/lib/spectral/index.ts +0 -8
  814. package/dist/src/lib/spectral/types.ts +0 -112
  815. package/dist/src/lib/state.svelte.ts +0 -64
  816. package/dist/src/lib/structure/Arrow.svelte +0 -72
  817. package/dist/src/lib/structure/AtomLegend.svelte +0 -815
  818. package/dist/src/lib/structure/Bond.svelte +0 -140
  819. package/dist/src/lib/structure/CanvasTooltip.svelte +0 -33
  820. package/dist/src/lib/structure/CellSelect.svelte +0 -349
  821. package/dist/src/lib/structure/Cylinder.svelte +0 -45
  822. package/dist/src/lib/structure/Lattice.svelte +0 -196
  823. package/dist/src/lib/structure/Structure.svelte +0 -2248
  824. package/dist/src/lib/structure/StructureControls.svelte +0 -1273
  825. package/dist/src/lib/structure/StructureExportPane.svelte +0 -252
  826. package/dist/src/lib/structure/StructureInfoPane.svelte +0 -737
  827. package/dist/src/lib/structure/StructureScene.svelte +0 -2255
  828. package/dist/src/lib/structure/atom-properties.ts +0 -316
  829. package/dist/src/lib/structure/bond-order-perception.ts +0 -447
  830. package/dist/src/lib/structure/bonding.ts +0 -944
  831. package/dist/src/lib/structure/export.ts +0 -861
  832. package/dist/src/lib/structure/index.ts +0 -291
  833. package/dist/src/lib/structure/label-placement.ts +0 -130
  834. package/dist/src/lib/structure/measure.ts +0 -45
  835. package/dist/src/lib/structure/parse.ts +0 -1705
  836. package/dist/src/lib/structure/partial-occupancy.ts +0 -183
  837. package/dist/src/lib/structure/pbc.ts +0 -164
  838. package/dist/src/lib/structure/supercell.ts +0 -226
  839. package/dist/src/lib/structure/validation.ts +0 -11
  840. package/dist/src/lib/symmetry/SymmetryStats.svelte +0 -226
  841. package/dist/src/lib/symmetry/WyckoffTable.svelte +0 -120
  842. package/dist/src/lib/symmetry/cell-transform.ts +0 -118
  843. package/dist/src/lib/symmetry/index.ts +0 -348
  844. package/dist/src/lib/symmetry/spacegroups.ts +0 -404
  845. package/dist/src/lib/table/HeatmapTable.svelte +0 -1833
  846. package/dist/src/lib/table/ToggleMenu.svelte +0 -385
  847. package/dist/src/lib/table/index.ts +0 -139
  848. package/dist/src/lib/theme/ThemeControl.svelte +0 -53
  849. package/dist/src/lib/theme/index.ts +0 -107
  850. package/dist/src/lib/time.ts +0 -71
  851. package/dist/src/lib/tooltip/TooltipContent.svelte +0 -58
  852. package/dist/src/lib/tooltip/index.ts +0 -2
  853. package/dist/src/lib/tooltip/types.ts +0 -13
  854. package/dist/src/lib/trajectory/Trajectory.svelte +0 -1545
  855. package/dist/src/lib/trajectory/TrajectoryError.svelte +0 -128
  856. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +0 -357
  857. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +0 -313
  858. package/dist/src/lib/trajectory/constants.ts +0 -7
  859. package/dist/src/lib/trajectory/extract.ts +0 -196
  860. package/dist/src/lib/trajectory/format-detect.ts +0 -96
  861. package/dist/src/lib/trajectory/frame-reader.ts +0 -456
  862. package/dist/src/lib/trajectory/helpers.ts +0 -217
  863. package/dist/src/lib/trajectory/index.ts +0 -218
  864. package/dist/src/lib/trajectory/parse/ase.ts +0 -109
  865. package/dist/src/lib/trajectory/parse/hdf5.ts +0 -173
  866. package/dist/src/lib/trajectory/parse/index.ts +0 -411
  867. package/dist/src/lib/trajectory/parse/lammps.ts +0 -215
  868. package/dist/src/lib/trajectory/parse/vasp.ts +0 -102
  869. package/dist/src/lib/trajectory/parse/xyz.ts +0 -143
  870. package/dist/src/lib/trajectory/plotting.ts +0 -599
  871. package/dist/src/lib/trajectory/types.ts +0 -13
  872. package/dist/src/lib/utils.ts +0 -56
  873. package/dist/src/lib/xrd/XrdPlot.svelte +0 -615
  874. package/dist/src/lib/xrd/broadening.ts +0 -130
  875. package/dist/src/lib/xrd/calc-xrd.ts +0 -397
  876. package/dist/src/lib/xrd/index.ts +0 -38
  877. package/dist/src/lib/xrd/parse.ts +0 -858
  878. package/dist/webview.js +0 -29421
  879. package/icon.png +0 -0
  880. package/matterviz-0.3.2.vsix +0 -0
  881. package/matterviz-0.3.4.vsix +0 -0
  882. package/matterviz-0.3.5.vsix +0 -0
  883. package/scripts/sync-config.ts +0 -101
  884. package/src/declarations.d.ts +0 -2
  885. package/src/extension.ts +0 -972
  886. package/src/node-io.ts +0 -65
  887. package/src/types.ts +0 -17
  888. package/src/webview/JsonBrowser.svelte +0 -1079
  889. package/src/webview/PlotPanel.svelte +0 -346
  890. package/src/webview/detect.ts +0 -444
  891. package/src/webview/main.ts +0 -764
  892. package/src/webview/plot-utils.ts +0 -250
  893. package/test-fixtures/all-viz-types.json.gz +0 -0
  894. package/test-fixtures/plot-demo-data.json.gz +0 -0
  895. package/tests/detect.test.ts +0 -604
  896. package/tests/extension.test.ts +0 -2041
  897. package/tests/node-io.test.ts +0 -39
  898. package/tests/plot-utils.test.ts +0 -302
  899. package/tests/vite-plugin-json-gz.test.ts +0 -114
  900. package/tests/vscode-mock.ts +0 -18
  901. package/tests/webview.test.ts +0 -231
  902. package/tsconfig.json +0 -20
  903. package/vite-plugin-json-gz.ts +0 -29
  904. package/vite.config.ts +0 -34
  905. package/vite.extension.config.ts +0 -34
  906. /package/dist/{src/lib/EmptyState.svelte → EmptyState.svelte} +0 -0
  907. /package/dist/{src/lib/chempot-diagram → chempot-diagram}/ChemPotScene3D.svelte +0 -0
  908. /package/dist/{src/lib/colors → colors}/alloy-colors.json +0 -0
  909. /package/dist/{src/lib/colors → colors}/dark-mode-colors.json +0 -0
  910. /package/dist/{src/lib/colors → colors}/jmol-colors.json +0 -0
  911. /package/dist/{src/lib/colors → colors}/muted-colors.json +0 -0
  912. /package/dist/{src/lib/colors → colors}/pastel-colors.json +0 -0
  913. /package/dist/{src/lib/colors → colors}/vesta-colors.json +0 -0
  914. /package/dist/{src/lib/element → element}/BohrAtom.svelte +0 -0
  915. /package/dist/{src/lib/element → element}/Nucleus.svelte +0 -0
  916. /package/dist/{src/lib/element → element}/data.json +0 -0
  917. /package/dist/{src/lib/element → element}/data.json.gz +0 -0
  918. /package/dist/{src/lib/element → element}/data.json.gz.d.ts +0 -0
  919. /package/dist/{src/lib/element → element}/data.schema.json +0 -0
  920. /package/dist/{src/lib/element-image-urls.json → element-image-urls.json} +0 -0
  921. /package/dist/{src/lib/feedback → feedback}/Spinner.svelte +0 -0
  922. /package/dist/{src/lib/feedback → feedback}/StatusMessage.svelte +0 -0
  923. /package/dist/{src/lib/layout → layout}/json-tree/JsonValue.svelte +0 -0
  924. /package/dist/{src/lib/periodic-table → periodic-table}/TableInset.svelte +0 -0
  925. /package/dist/{src/lib/theme → theme}/themes.mjs +0 -0
  926. /package/dist/{src/lib/xrd → xrd}/atomic_scattering_params.json +0 -0
@@ -0,0 +1,9 @@
1
+ export declare const MAX_TRIANGLES_FOR_TILING = 50000;
2
+ export declare const HOVER_THROTTLE_MS = 16;
3
+ export declare const CLOSED_CONTOUR_TOLERANCE = 0.000001;
4
+ export declare const IRREDUCIBLE_BZ_TOLERANCE = 0.01;
5
+ export declare const IRREDUCIBLE_BZ_MIN_VERTICES = 10;
6
+ export declare const SPANNING_THRESHOLD = 0.8;
7
+ export declare const BOHR_TO_ANGSTROM = 0.529177;
8
+ export declare const HARTREE_TO_EV = 27.2114;
9
+ export declare const BAND_COLORS: readonly ["#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00", "#ffff33", "#a65628", "#f781bf", "#999999", "#66c2a5"];
@@ -0,0 +1,27 @@
1
+ // Constants and thresholds for Fermi surface computation
2
+ // Maximum triangles for BZ symmetry tiling (48x for Oh symmetry)
3
+ // Above this, tiling is auto-disabled for performance
4
+ export const MAX_TRIANGLES_FOR_TILING = 50_000;
5
+ // Throttle interval (ms) for pointer move events during hover
6
+ // Prevents expensive nearest-vertex O(n) lookups from causing UI jank
7
+ export const HOVER_THROTTLE_MS = 16; // ~60fps
8
+ // Numerical tolerances
9
+ export const CLOSED_CONTOUR_TOLERANCE = 1e-6; // Distance threshold for detecting closed contours
10
+ export const IRREDUCIBLE_BZ_TOLERANCE = 0.01; // Threshold for detecting irreducible BZ (vertices in positive octant)
11
+ export const IRREDUCIBLE_BZ_MIN_VERTICES = 10; // Minimum significant vertex count for irreducible BZ detection
12
+ export const SPANNING_THRESHOLD = 0.8; // Fraction of BZ extent a surface must cover to be considered "spanning" that direction
13
+ export const BOHR_TO_ANGSTROM = 0.529177; // 1 Bohr = 0.529177 Angstrom
14
+ export const HARTREE_TO_EV = 27.2114; // 1 Hartree = 27.2114 eV
15
+ // Band colors (ColorBrewer Set1 palette for categorical data)
16
+ export const BAND_COLORS = [
17
+ `#e41a1c`, // red
18
+ `#377eb8`, // blue
19
+ `#4daf4a`, // green
20
+ `#984ea3`, // purple
21
+ `#ff7f00`, // orange
22
+ `#ffff33`, // yellow
23
+ `#a65628`, // brown
24
+ `#f781bf`, // pink
25
+ `#999999`, // gray
26
+ `#66c2a5`, // teal
27
+ ];
@@ -0,0 +1,5 @@
1
+ import type { Scene } from 'three';
2
+ export declare function export_to_stl(scene: Scene, filename: string): Promise<void>;
3
+ export declare function export_to_obj(scene: Scene, filename: string): Promise<void>;
4
+ export declare function export_to_gltf(scene: Scene, filename: string): Promise<void>;
5
+ export declare function export_scene(scene: Scene, format: `stl` | `obj` | `gltf`, filename: string): Promise<void>;
@@ -0,0 +1,51 @@
1
+ import { to_error } from '../utils';
2
+ // Helper to trigger file download
3
+ function download_file(content, filename, mime_type) {
4
+ const blob = new Blob([content], { type: mime_type });
5
+ const url = URL.createObjectURL(blob);
6
+ const link = document.createElement(`a`);
7
+ link.href = url;
8
+ link.download = filename;
9
+ document.body.append(link);
10
+ link.click();
11
+ document.body.removeChild(link);
12
+ URL.revokeObjectURL(url);
13
+ }
14
+ // Export scene to STL format (good for 3D printing)
15
+ export async function export_to_stl(scene, filename) {
16
+ const { STLExporter } = await import(`three/addons/exporters/STLExporter.js`);
17
+ const exporter = new STLExporter();
18
+ const result = exporter.parse(scene, { binary: true });
19
+ // Binary STL returns DataView, convert to ArrayBuffer for Blob
20
+ const buffer = result instanceof DataView ? result.buffer : result;
21
+ download_file(buffer, `${filename}.stl`, `application/octet-stream`);
22
+ }
23
+ // Export scene to OBJ format (widely compatible)
24
+ export async function export_to_obj(scene, filename) {
25
+ const { OBJExporter } = await import(`three/addons/exporters/OBJExporter.js`);
26
+ const exporter = new OBJExporter();
27
+ const result = exporter.parse(scene);
28
+ download_file(result, `${filename}.obj`, `text/plain`);
29
+ }
30
+ // Export scene to GLTF format (modern web/AR standard)
31
+ export async function export_to_gltf(scene, filename) {
32
+ const { GLTFExporter } = await import(`three/addons/exporters/GLTFExporter.js`);
33
+ const exporter = new GLTFExporter();
34
+ return new Promise((resolve, reject) => {
35
+ exporter.parse(scene, (gltf) => {
36
+ const output = JSON.stringify(gltf, null, 2);
37
+ download_file(output, `${filename}.gltf`, `application/json`);
38
+ resolve();
39
+ }, (error) => reject(to_error(error)), { binary: false });
40
+ });
41
+ }
42
+ // Main export function that dispatches to the appropriate format
43
+ export function export_scene(scene, format, filename) {
44
+ if (format === `stl`)
45
+ return export_to_stl(scene, filename);
46
+ if (format === `obj`)
47
+ return export_to_obj(scene, filename);
48
+ if (format === `gltf`)
49
+ return export_to_gltf(scene, filename);
50
+ return Promise.reject(new Error(`Unsupported export format: ${format}`));
51
+ }
@@ -0,0 +1,12 @@
1
+ export { default as FermiSlice } from './FermiSlice.svelte';
2
+ export { default as FermiSurface } from './FermiSurface.svelte';
3
+ export { default as FermiSurfaceControls } from './FermiSurfaceControls.svelte';
4
+ export { default as FermiSurfaceScene } from './FermiSurfaceScene.svelte';
5
+ export { default as FermiSurfaceTooltip } from './FermiSurfaceTooltip.svelte';
6
+ export * from './compute';
7
+ export * from './constants';
8
+ export * from './export';
9
+ export * from './marching-cubes';
10
+ export * from './parse';
11
+ export * from './symmetry';
12
+ export * from './types';
@@ -0,0 +1,13 @@
1
+ // Fermi surface visualization module
2
+ export { default as FermiSlice } from './FermiSlice.svelte';
3
+ export { default as FermiSurface } from './FermiSurface.svelte';
4
+ export { default as FermiSurfaceControls } from './FermiSurfaceControls.svelte';
5
+ export { default as FermiSurfaceScene } from './FermiSurfaceScene.svelte';
6
+ export { default as FermiSurfaceTooltip } from './FermiSurfaceTooltip.svelte';
7
+ export * from './compute';
8
+ export * from './constants';
9
+ export * from './export';
10
+ export * from './marching-cubes';
11
+ export * from './parse';
12
+ export * from './symmetry';
13
+ export * from './types';
@@ -0,0 +1,2 @@
1
+ export { compute_vertex_normals, marching_cubes } from '../marching-cubes';
2
+ export type { MarchingCubesOptions, MarchingCubesResult } from '../marching-cubes';
@@ -0,0 +1,2 @@
1
+ // Re-export from shared location for backward compatibility
2
+ export { compute_vertex_normals, marching_cubes } from '../marching-cubes';
@@ -0,0 +1,2 @@
1
+ import type { BandGridData, FermiSurfaceData } from './types';
2
+ export declare function parse_fermi_file(content: string, filename?: string): BandGridData | FermiSurfaceData | null;
@@ -0,0 +1,494 @@
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(Number);
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
+ periodic: true, // FRMSF stores k=i/n with no duplicated endpoint (unlike BXSF)
223
+ };
224
+ }
225
+ // Validate that an object has the required Isosurface shape
226
+ function is_valid_isosurface(obj) {
227
+ if (!obj || typeof obj !== `object`)
228
+ return false;
229
+ const isosurface_obj = obj;
230
+ const vertices = isosurface_obj.vertices;
231
+ const faces = isosurface_obj.faces;
232
+ const normals = isosurface_obj.normals;
233
+ const band_index = isosurface_obj.band_index;
234
+ const spin = isosurface_obj.spin;
235
+ if (!Array.isArray(vertices) || vertices.length === 0)
236
+ return false;
237
+ if (!Array.isArray(faces))
238
+ return false;
239
+ if (!Array.isArray(normals))
240
+ return false;
241
+ if (typeof band_index !== `number` || !Number.isFinite(band_index))
242
+ return false;
243
+ if (spin !== null && spin !== `up` && spin !== `down`)
244
+ return false;
245
+ return true;
246
+ }
247
+ // Validate FermiSurfaceData shape
248
+ function is_valid_fermi_surface_data(obj) {
249
+ if (!obj || typeof obj !== `object`)
250
+ return false;
251
+ const data = obj;
252
+ // Check required fields
253
+ if (!Array.isArray(data.isosurfaces))
254
+ return false;
255
+ if (!Array.isArray(data.k_lattice) || data.k_lattice.length !== 3)
256
+ return false;
257
+ if (typeof data.fermi_energy !== `number`)
258
+ return false;
259
+ if (data.reciprocal_cell !== `wigner_seitz` && data.reciprocal_cell !== `parallelepiped`) {
260
+ return false;
261
+ }
262
+ if (!data.metadata || typeof data.metadata !== `object`)
263
+ return false;
264
+ // Validate each isosurface
265
+ for (const iso of data.isosurfaces) {
266
+ if (!is_valid_isosurface(iso))
267
+ return false;
268
+ }
269
+ return true;
270
+ }
271
+ // Parse Matterviz/IFermi JSON format for Fermi surface data
272
+ // Throws on invalid input; returns parsed data on success
273
+ function parse_fermi_json(content) {
274
+ const data = JSON.parse(content);
275
+ // Check if it's already in our FermiSurfaceData format with full validation
276
+ if (data.isosurfaces && Array.isArray(data.isosurfaces)) {
277
+ if (is_valid_fermi_surface_data(data)) {
278
+ return data;
279
+ }
280
+ throw new Error(`Invalid FermiSurfaceData JSON: isosurfaces array present but missing required fields`);
281
+ }
282
+ // Check if it's IFermi format (isosurfaces is an object keyed by band index)
283
+ if (data[`@class`] === `FermiSurface` &&
284
+ data.isosurfaces &&
285
+ typeof data.isosurfaces === `object`) {
286
+ return parse_ifermi_surface(data);
287
+ }
288
+ // Check if it's BandGridData (raw grid data)
289
+ if (data.energies && data.k_grid && data.k_lattice) {
290
+ // Minimal validation of required fields
291
+ if (!Array.isArray(data.energies) ||
292
+ !Array.isArray(data.k_grid) ||
293
+ data.k_grid.length !== 3 ||
294
+ !Array.isArray(data.k_lattice) ||
295
+ data.k_lattice.length !== 3)
296
+ throw new Error(`Invalid BandGridData JSON: malformed required fields`);
297
+ return data;
298
+ }
299
+ // Try to extract from nested structure (e.g. IFermi output)
300
+ if (data.fermi_surface) {
301
+ return data.fermi_surface;
302
+ }
303
+ if (data.band_structure?.energies || data.bands?.energies) {
304
+ const bs = data.band_structure ?? data.bands;
305
+ return {
306
+ energies: bs.energies,
307
+ k_grid: bs.k_grid ?? bs.kgrid,
308
+ k_lattice: bs.k_lattice ?? bs.reciprocal_lattice,
309
+ fermi_energy: bs.fermi_energy ?? bs.efermi ?? 0,
310
+ // oxlint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- numeric fallback chain (0 falls through)
311
+ n_bands: (bs.n_bands ?? bs.nbands) || bs.energies[0]?.length || 0,
312
+ // oxlint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- numeric fallback chain (0 falls through)
313
+ n_spins: (bs.n_spins ?? bs.nspins) || bs.energies.length || 1,
314
+ };
315
+ }
316
+ // Check for pymatgen BandStructure format (k-path, not k-grid)
317
+ // These files cannot be used for Fermi surface visualization directly
318
+ if (data.bs?.[`@class`] === `BandStructure` || data[`@class`] === `BandStructure`) {
319
+ throw new Error(`This is a pymatgen BandStructure file (band data along k-path). ` +
320
+ `Fermi surface visualization requires a uniform 3D k-grid of eigenvalues. ` +
321
+ `Use IFermi or a BXSF/FRMSF file instead.`);
322
+ }
323
+ throw new Error(`Unrecognized JSON format: missing required fields for Fermi surface data`);
324
+ }
325
+ // Parse IFermi's JSON output format
326
+ function parse_ifermi_surface(data) {
327
+ const isosurfaces_obj = data.isosurfaces;
328
+ const reciprocal_space = data.reciprocal_space;
329
+ // Extract reciprocal lattice
330
+ const k_lattice = reciprocal_space?.reciprocal_lattice
331
+ ? reciprocal_space.reciprocal_lattice
332
+ : [
333
+ [1, 0, 0],
334
+ [0, 1, 0],
335
+ [0, 0, 1],
336
+ ];
337
+ // Convert IFermi isosurfaces to our format
338
+ const isosurfaces = [];
339
+ const band_indices = new Set();
340
+ let has_spin = false;
341
+ for (const [band_key, iso_list] of Object.entries(isosurfaces_obj)) {
342
+ const band_index = parseInt(band_key, 10);
343
+ // spin is determined by sign: positive = up, negative = down
344
+ const spin = band_index < 0 ? `down` : `up`;
345
+ const abs_band_idx = Math.abs(band_index);
346
+ band_indices.add(abs_band_idx);
347
+ if (band_index < 0)
348
+ has_spin = true;
349
+ for (const ifermi_iso of iso_list) {
350
+ const vertices = ifermi_iso.vertices;
351
+ const faces = ifermi_iso.faces;
352
+ // Compute vertex normals from faces
353
+ const normals = compute_vertex_normals(vertices, faces);
354
+ // Extract properties if available
355
+ let properties;
356
+ if (ifermi_iso.properties) {
357
+ // IFermi stores properties like fermi_velocity, spin, etc.
358
+ const prop_keys = Object.keys(ifermi_iso.properties);
359
+ if (prop_keys.length > 0) {
360
+ // Use first available property as vertex colors
361
+ properties = ifermi_iso.properties[prop_keys[0]];
362
+ }
363
+ }
364
+ // Parse dimensionality
365
+ let dimensionality;
366
+ if (ifermi_iso.dimensionality) {
367
+ const dim = ifermi_iso.dimensionality.toLowerCase();
368
+ if (dim.includes(`1d`) || dim === `1d`)
369
+ dimensionality = `1D`;
370
+ else if (dim.includes(`quasi`) || dim === `quasi-2d`)
371
+ dimensionality = `quasi-2D`;
372
+ else if (dim.includes(`2d`) || dim === `2d`)
373
+ dimensionality = `2D`;
374
+ else if (dim.includes(`3d`) || dim === `3d`)
375
+ dimensionality = `3D`;
376
+ }
377
+ // Compute area for this isosurface using fan triangulation for N-gons
378
+ let area = 0;
379
+ for (const face of faces) {
380
+ if (face.length < 3)
381
+ continue;
382
+ // Validate face indices are within bounds to prevent NaN from undefined vertices
383
+ if (face.some((idx) => idx < 0 || idx >= vertices.length))
384
+ continue;
385
+ // Fan triangulation: for N vertices, create N-2 triangles (0,1,2), (0,2,3), ...
386
+ const v0 = vertices[face[0]];
387
+ for (let fan_idx = 1; fan_idx < face.length - 1; fan_idx++) {
388
+ const v1 = vertices[face[fan_idx]];
389
+ const v2 = vertices[face[fan_idx + 1]];
390
+ const e1 = [v1[0] - v0[0], v1[1] - v0[1], v1[2] - v0[2]];
391
+ const e2 = [v2[0] - v0[0], v2[1] - v0[1], v2[2] - v0[2]];
392
+ const cross = [
393
+ e1[1] * e2[2] - e1[2] * e2[1],
394
+ e1[2] * e2[0] - e1[0] * e2[2],
395
+ e1[0] * e2[1] - e1[1] * e2[0],
396
+ ];
397
+ area += 0.5 * Math.hypot(cross[0], cross[1], cross[2]);
398
+ }
399
+ }
400
+ isosurfaces.push({
401
+ vertices,
402
+ faces,
403
+ normals,
404
+ properties,
405
+ band_index: abs_band_idx,
406
+ spin,
407
+ area,
408
+ dimensionality,
409
+ orientation: ifermi_iso.orientation,
410
+ });
411
+ }
412
+ }
413
+ // Compute total surface area
414
+ const total_area = isosurfaces.reduce((sum, iso) => sum + (iso.area ?? 0), 0);
415
+ return {
416
+ isosurfaces,
417
+ k_lattice,
418
+ fermi_energy: 0, // IFermi surfaces are typically relative to Fermi level
419
+ reciprocal_cell: `wigner_seitz`, // IFermi typically uses Wigner-Seitz cells
420
+ metadata: {
421
+ n_bands: band_indices.size,
422
+ n_surfaces: isosurfaces.length,
423
+ total_area,
424
+ source_format: `ifermi-json`,
425
+ has_spin,
426
+ has_velocities: isosurfaces.some((iso) => iso.properties !== undefined),
427
+ },
428
+ };
429
+ }
430
+ // Auto-detect file format and parse accordingly
431
+ export function parse_fermi_file(content, filename) {
432
+ const lower_name = filename?.toLowerCase() ?? ``;
433
+ // Detect by filename extension
434
+ if (lower_name.endsWith(`.bxsf`) || lower_name.endsWith(`.bxsf.gz`)) {
435
+ try {
436
+ return parse_bxsf(content);
437
+ }
438
+ catch (error) {
439
+ console.error(`BXSF parse error:`, error);
440
+ return null;
441
+ }
442
+ }
443
+ if (lower_name.endsWith(`.frmsf`) || lower_name.endsWith(`.frmsf.gz`)) {
444
+ try {
445
+ return parse_frmsf(content);
446
+ }
447
+ catch (error) {
448
+ console.error(`FRMSF parse error:`, error);
449
+ return null;
450
+ }
451
+ }
452
+ if (lower_name.endsWith(`.json`) || lower_name.endsWith(`.json.gz`)) {
453
+ try {
454
+ return parse_fermi_json(content);
455
+ }
456
+ catch (error) {
457
+ console.error(`JSON parse error:`, error);
458
+ return null;
459
+ }
460
+ }
461
+ // Try auto-detection based on content
462
+ const trimmed = content.trim();
463
+ // BXSF format detection
464
+ if (trimmed.includes(`BEGIN_BLOCK_BANDGRID_3D`) || trimmed.includes(`BEGIN_BANDGRID_3D`)) {
465
+ try {
466
+ return parse_bxsf(content);
467
+ }
468
+ catch (error) {
469
+ console.error(`BXSF auto-detect parse error:`, error);
470
+ }
471
+ }
472
+ // JSON format detection
473
+ if (trimmed.startsWith(`{`) || trimmed.startsWith(`[`)) {
474
+ try {
475
+ return parse_fermi_json(content);
476
+ }
477
+ catch (error) {
478
+ console.error(`JSON auto-detect parse error:`, error);
479
+ }
480
+ }
481
+ // FRMSF format detection (starts with grid dimensions)
482
+ const first_line = trimmed.split(/\r?\n/)[0];
483
+ const first_tokens = first_line.split(/\s+/).filter(Boolean);
484
+ if (first_tokens.length === 3 && first_tokens.every((token) => /^\d+$/.test(token))) {
485
+ try {
486
+ return parse_frmsf(content);
487
+ }
488
+ catch (error) {
489
+ console.error(`FRMSF auto-detect parse error:`, error);
490
+ }
491
+ }
492
+ console.warn(`Could not detect Fermi surface file format for: ${filename}`);
493
+ return null;
494
+ }
@@ -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();