matterviz 0.3.6 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (863) hide show
  1. package/dist/EmptyState.svelte.d.ts +9 -0
  2. package/dist/FilePicker.svelte +360 -0
  3. package/dist/FilePicker.svelte.d.ts +17 -0
  4. package/dist/Icon.svelte.d.ts +13 -0
  5. package/dist/MillerIndexInput.svelte +66 -0
  6. package/dist/MillerIndexInput.svelte.d.ts +7 -0
  7. package/dist/api/mp.d.ts +6 -0
  8. package/dist/api/mp.js +22 -0
  9. package/dist/api/optimade.d.ts +45 -0
  10. package/dist/api/optimade.js +135 -0
  11. package/dist/brillouin/BrillouinZone.svelte +549 -0
  12. package/dist/brillouin/BrillouinZone.svelte.d.ts +83 -0
  13. package/dist/brillouin/BrillouinZoneControls.svelte +144 -0
  14. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +17 -0
  15. package/dist/brillouin/BrillouinZoneExportPane.svelte +146 -0
  16. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +15 -0
  17. package/dist/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  18. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +13 -0
  19. package/dist/brillouin/BrillouinZoneScene.svelte +476 -0
  20. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +48 -0
  21. package/dist/brillouin/BrillouinZoneTooltip.svelte +92 -0
  22. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +8 -0
  23. package/dist/brillouin/compute.d.ts +17 -0
  24. package/dist/brillouin/compute.js +426 -0
  25. package/dist/brillouin/index.d.ts +8 -0
  26. package/dist/brillouin/index.js +7 -0
  27. package/dist/brillouin/types.d.ts +43 -0
  28. package/dist/brillouin/types.js +1 -0
  29. package/dist/chempot-diagram/ChemPotDiagram.svelte +327 -0
  30. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
  31. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  32. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
  33. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  34. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
  35. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
  36. package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
  37. package/dist/chempot-diagram/async-compute.svelte.js +78 -0
  38. package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
  39. package/dist/chempot-diagram/chempot-worker.js +11 -0
  40. package/dist/chempot-diagram/color.d.ts +10 -0
  41. package/dist/chempot-diagram/color.js +32 -0
  42. package/dist/chempot-diagram/compute.d.ts +48 -0
  43. package/dist/chempot-diagram/compute.js +806 -0
  44. package/dist/chempot-diagram/index.d.ts +6 -0
  45. package/dist/chempot-diagram/index.js +6 -0
  46. package/dist/chempot-diagram/pointer.d.ts +16 -0
  47. package/dist/chempot-diagram/pointer.js +40 -0
  48. package/dist/chempot-diagram/temperature.d.ts +15 -0
  49. package/dist/chempot-diagram/temperature.js +34 -0
  50. package/dist/chempot-diagram/types.d.ts +81 -0
  51. package/dist/chempot-diagram/types.js +28 -0
  52. package/dist/colors/index.d.ts +47 -0
  53. package/dist/colors/index.js +203 -0
  54. package/dist/composition/BarChart.svelte +297 -0
  55. package/dist/composition/BarChart.svelte.d.ts +39 -0
  56. package/dist/composition/BubbleChart.svelte +218 -0
  57. package/dist/composition/BubbleChart.svelte.d.ts +28 -0
  58. package/dist/composition/Composition.svelte +165 -0
  59. package/dist/composition/Composition.svelte.d.ts +15 -0
  60. package/dist/composition/Formula.svelte +268 -0
  61. package/dist/composition/Formula.svelte.d.ts +19 -0
  62. package/dist/composition/FormulaFilter.svelte +1257 -0
  63. package/dist/composition/FormulaFilter.svelte.d.ts +51 -0
  64. package/dist/composition/PieChart.svelte +323 -0
  65. package/dist/composition/PieChart.svelte.d.ts +37 -0
  66. package/dist/composition/format.d.ts +15 -0
  67. package/dist/composition/format.js +109 -0
  68. package/dist/composition/index.d.ts +20 -0
  69. package/dist/composition/index.js +14 -0
  70. package/dist/composition/parse.d.ts +56 -0
  71. package/dist/composition/parse.js +474 -0
  72. package/dist/constants.d.ts +29 -0
  73. package/dist/constants.js +99 -0
  74. package/dist/controls.d.ts +14 -0
  75. package/dist/controls.js +30 -0
  76. package/dist/convex-hull/ConvexHull.svelte +157 -0
  77. package/dist/convex-hull/ConvexHull.svelte.d.ts +13 -0
  78. package/dist/convex-hull/ConvexHull2D.svelte +825 -0
  79. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +11 -0
  80. package/dist/convex-hull/ConvexHull3D.svelte +1801 -0
  81. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +8 -0
  82. package/dist/convex-hull/ConvexHull4D.svelte +1398 -0
  83. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +8 -0
  84. package/dist/convex-hull/ConvexHullControls.svelte +535 -0
  85. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +48 -0
  86. package/dist/convex-hull/ConvexHullInfoPane.svelte +125 -0
  87. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +20 -0
  88. package/dist/convex-hull/ConvexHullStats.svelte +929 -0
  89. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +17 -0
  90. package/dist/convex-hull/ConvexHullTooltip.svelte +131 -0
  91. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +33 -0
  92. package/dist/convex-hull/GasPressureControls.svelte +247 -0
  93. package/dist/convex-hull/GasPressureControls.svelte.d.ts +11 -0
  94. package/dist/convex-hull/StructurePopup.svelte +151 -0
  95. package/dist/convex-hull/StructurePopup.svelte.d.ts +18 -0
  96. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +8 -0
  97. package/dist/convex-hull/barycentric-coords.d.ts +18 -0
  98. package/dist/convex-hull/barycentric-coords.js +182 -0
  99. package/dist/convex-hull/demo-temperature.d.ts +6 -0
  100. package/dist/convex-hull/demo-temperature.js +40 -0
  101. package/dist/convex-hull/gas-thermodynamics.d.ts +16 -0
  102. package/dist/convex-hull/gas-thermodynamics.js +314 -0
  103. package/dist/convex-hull/helpers.d.ts +114 -0
  104. package/dist/convex-hull/helpers.js +710 -0
  105. package/dist/convex-hull/index.d.ts +119 -0
  106. package/dist/convex-hull/index.js +58 -0
  107. package/dist/convex-hull/thermodynamics.d.ts +67 -0
  108. package/dist/convex-hull/thermodynamics.js +1752 -0
  109. package/dist/convex-hull/types.d.ts +162 -0
  110. package/dist/convex-hull/types.js +36 -0
  111. package/dist/coordination/CoordinationBarPlot.svelte +311 -0
  112. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +30 -0
  113. package/dist/coordination/calc-coordination.d.ts +15 -0
  114. package/dist/coordination/calc-coordination.js +63 -0
  115. package/dist/coordination/index.d.ts +8 -0
  116. package/dist/coordination/index.js +7 -0
  117. package/dist/effects.svelte.d.ts +12 -0
  118. package/dist/effects.svelte.js +37 -0
  119. package/dist/element/BohrAtom.svelte.d.ts +20 -0
  120. package/dist/element/ElementHeading.svelte +26 -0
  121. package/dist/element/ElementHeading.svelte.d.ts +8 -0
  122. package/dist/element/ElementPhoto.svelte +57 -0
  123. package/dist/element/ElementPhoto.svelte.d.ts +9 -0
  124. package/dist/element/ElementStats.svelte +80 -0
  125. package/dist/element/ElementStats.svelte.d.ts +8 -0
  126. package/dist/element/ElementTile.svelte +484 -0
  127. package/dist/element/ElementTile.svelte.d.ts +29 -0
  128. package/dist/element/Nucleus.svelte.d.ts +17 -0
  129. package/dist/element/data.d.ts +2 -0
  130. package/dist/element/data.js +2 -0
  131. package/dist/element/index.d.ts +8 -0
  132. package/dist/element/index.js +7 -0
  133. package/dist/element/types.d.ts +57 -0
  134. package/dist/element/types.js +1 -0
  135. package/dist/feedback/ClickFeedback.svelte +58 -0
  136. package/dist/feedback/ClickFeedback.svelte.d.ts +12 -0
  137. package/dist/feedback/DragOverlay.svelte +42 -0
  138. package/dist/feedback/DragOverlay.svelte.d.ts +7 -0
  139. package/dist/feedback/Spinner.svelte.d.ts +7 -0
  140. package/dist/feedback/StatusMessage.svelte.d.ts +9 -0
  141. package/dist/feedback/index.d.ts +4 -0
  142. package/dist/feedback/index.js +4 -0
  143. package/dist/fermi-surface/FermiSlice.svelte +189 -0
  144. package/dist/fermi-surface/FermiSlice.svelte.d.ts +24 -0
  145. package/dist/fermi-surface/FermiSurface.svelte +600 -0
  146. package/dist/fermi-surface/FermiSurface.svelte.d.ts +83 -0
  147. package/dist/fermi-surface/FermiSurfaceControls.svelte +448 -0
  148. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +35 -0
  149. package/dist/fermi-surface/FermiSurfaceScene.svelte +794 -0
  150. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +50 -0
  151. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  152. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +8 -0
  153. package/dist/fermi-surface/compute.d.ts +5 -0
  154. package/dist/fermi-surface/compute.js +538 -0
  155. package/dist/fermi-surface/constants.d.ts +9 -0
  156. package/dist/fermi-surface/constants.js +27 -0
  157. package/dist/fermi-surface/export.d.ts +5 -0
  158. package/dist/fermi-surface/export.js +50 -0
  159. package/dist/fermi-surface/index.d.ts +12 -0
  160. package/dist/fermi-surface/index.js +13 -0
  161. package/dist/fermi-surface/marching-cubes.d.ts +2 -0
  162. package/dist/fermi-surface/marching-cubes.js +2 -0
  163. package/dist/fermi-surface/parse.d.ts +2 -0
  164. package/dist/fermi-surface/parse.js +491 -0
  165. package/dist/fermi-surface/symmetry.d.ts +3 -0
  166. package/dist/fermi-surface/symmetry.js +46 -0
  167. package/dist/fermi-surface/types.d.ts +110 -0
  168. package/dist/fermi-surface/types.js +4 -0
  169. package/dist/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  170. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
  171. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  172. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
  173. package/dist/heatmap-matrix/index.d.ts +53 -0
  174. package/dist/heatmap-matrix/index.js +100 -0
  175. package/dist/heatmap-matrix/shared.d.ts +2 -0
  176. package/dist/heatmap-matrix/shared.js +4 -0
  177. package/dist/icons.d.ts +569 -0
  178. package/dist/icons.js +648 -0
  179. package/dist/index.d.ts +39 -0
  180. package/dist/index.js +39 -0
  181. package/dist/io/decompress.d.ts +11 -0
  182. package/dist/io/decompress.js +74 -0
  183. package/dist/io/export.d.ts +16 -0
  184. package/dist/io/export.js +316 -0
  185. package/dist/io/fetch.d.ts +5 -0
  186. package/dist/io/fetch.js +39 -0
  187. package/dist/io/file-drop.d.ts +7 -0
  188. package/dist/io/file-drop.js +43 -0
  189. package/dist/io/index.d.ts +7 -0
  190. package/dist/io/index.js +6 -0
  191. package/dist/io/is-binary.d.ts +1 -0
  192. package/dist/io/is-binary.js +20 -0
  193. package/dist/io/types.d.ts +8 -0
  194. package/dist/io/types.js +1 -0
  195. package/dist/io/url-drop.d.ts +2 -0
  196. package/dist/io/url-drop.js +123 -0
  197. package/dist/isosurface/Isosurface.svelte +285 -0
  198. package/dist/isosurface/Isosurface.svelte.d.ts +8 -0
  199. package/dist/isosurface/IsosurfaceControls.svelte +277 -0
  200. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +9 -0
  201. package/dist/isosurface/index.d.ts +5 -0
  202. package/dist/isosurface/index.js +6 -0
  203. package/dist/isosurface/parse.d.ts +6 -0
  204. package/dist/isosurface/parse.js +553 -0
  205. package/dist/isosurface/slice.d.ts +11 -0
  206. package/dist/isosurface/slice.js +140 -0
  207. package/dist/isosurface/types.d.ts +56 -0
  208. package/dist/isosurface/types.js +227 -0
  209. package/dist/labels.d.ts +53 -0
  210. package/dist/labels.js +277 -0
  211. package/dist/layout/FullscreenToggle.svelte +50 -0
  212. package/dist/layout/FullscreenToggle.svelte.d.ts +7 -0
  213. package/dist/layout/InfoCard.svelte +120 -0
  214. package/dist/layout/InfoCard.svelte.d.ts +21 -0
  215. package/dist/layout/InfoTag.svelte +185 -0
  216. package/dist/layout/InfoTag.svelte.d.ts +19 -0
  217. package/dist/layout/PropertyFilter.svelte +246 -0
  218. package/dist/layout/PropertyFilter.svelte.d.ts +24 -0
  219. package/dist/layout/SettingsSection.svelte +148 -0
  220. package/dist/layout/SettingsSection.svelte.d.ts +17 -0
  221. package/dist/layout/SubpageGrid.svelte +82 -0
  222. package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
  223. package/dist/layout/fullscreen.d.ts +9 -0
  224. package/dist/layout/fullscreen.js +53 -0
  225. package/dist/layout/index.d.ts +10 -0
  226. package/dist/layout/index.js +8 -0
  227. package/dist/layout/json-tree/JsonNode.svelte +548 -0
  228. package/dist/layout/json-tree/JsonNode.svelte.d.ts +11 -0
  229. package/dist/layout/json-tree/JsonTree.svelte +1230 -0
  230. package/dist/layout/json-tree/JsonTree.svelte.d.ts +6 -0
  231. package/dist/layout/json-tree/JsonValue.svelte.d.ts +9 -0
  232. package/dist/layout/json-tree/index.d.ts +3 -0
  233. package/dist/layout/json-tree/index.js +3 -0
  234. package/dist/layout/json-tree/types.d.ts +74 -0
  235. package/dist/layout/json-tree/types.js +2 -0
  236. package/dist/layout/json-tree/utils.d.ts +29 -0
  237. package/dist/layout/json-tree/utils.js +641 -0
  238. package/dist/marching-cubes.d.ts +14 -0
  239. package/dist/marching-cubes.js +540 -0
  240. package/dist/math.d.ts +101 -0
  241. package/dist/math.js +905 -0
  242. package/dist/overlays/ContextMenu.svelte +162 -0
  243. package/dist/overlays/ContextMenu.svelte.d.ts +25 -0
  244. package/dist/overlays/CopyButton.svelte +45 -0
  245. package/dist/overlays/CopyButton.svelte.d.ts +8 -0
  246. package/dist/overlays/DragControlTab.svelte +98 -0
  247. package/dist/overlays/DragControlTab.svelte.d.ts +8 -0
  248. package/dist/overlays/DraggablePane.svelte +487 -0
  249. package/dist/overlays/DraggablePane.svelte.d.ts +36 -0
  250. package/dist/overlays/InfoPaneCards.svelte +149 -0
  251. package/dist/overlays/InfoPaneCards.svelte.d.ts +22 -0
  252. package/dist/overlays/index.d.ts +3 -0
  253. package/dist/overlays/index.js +3 -0
  254. package/dist/periodic-table/PeriodicTable.svelte +469 -0
  255. package/dist/periodic-table/PeriodicTable.svelte.d.ts +55 -0
  256. package/dist/periodic-table/PeriodicTableControls.svelte +557 -0
  257. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +24 -0
  258. package/dist/periodic-table/PropertySelect.svelte +37 -0
  259. package/dist/periodic-table/PropertySelect.svelte.d.ts +13 -0
  260. package/dist/periodic-table/TableInset.svelte.d.ts +9 -0
  261. package/dist/periodic-table/index.d.ts +10 -0
  262. package/dist/periodic-table/index.js +4 -0
  263. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  264. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +44 -0
  265. package/dist/phase-diagram/PhaseDiagramControls.svelte +444 -0
  266. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +30 -0
  267. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  268. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
  269. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  270. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +19 -0
  271. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  272. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +16 -0
  273. package/dist/phase-diagram/TdbInfoPanel.svelte +203 -0
  274. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +12 -0
  275. package/dist/phase-diagram/build-diagram.d.ts +11 -0
  276. package/dist/phase-diagram/build-diagram.js +160 -0
  277. package/dist/phase-diagram/colors.d.ts +35 -0
  278. package/dist/phase-diagram/colors.js +51 -0
  279. package/dist/phase-diagram/diagram-input.d.ts +29 -0
  280. package/dist/phase-diagram/diagram-input.js +3 -0
  281. package/dist/phase-diagram/index.d.ts +13 -0
  282. package/dist/phase-diagram/index.js +11 -0
  283. package/dist/phase-diagram/parse.d.ts +55 -0
  284. package/dist/phase-diagram/parse.js +272 -0
  285. package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
  286. package/dist/phase-diagram/svg-to-diagram.js +867 -0
  287. package/dist/phase-diagram/types.d.ts +93 -0
  288. package/dist/phase-diagram/types.js +1 -0
  289. package/dist/phase-diagram/utils.d.ts +118 -0
  290. package/dist/phase-diagram/utils.js +604 -0
  291. package/dist/plot/AxisLabel.svelte +51 -0
  292. package/dist/plot/AxisLabel.svelte.d.ts +16 -0
  293. package/dist/plot/BarPlot.svelte +2113 -0
  294. package/dist/plot/BarPlot.svelte.d.ts +84 -0
  295. package/dist/plot/BarPlotControls.svelte +66 -0
  296. package/dist/plot/BarPlotControls.svelte.d.ts +18 -0
  297. package/dist/plot/BinnedScatterPlot.svelte +1114 -0
  298. package/dist/plot/BinnedScatterPlot.svelte.d.ts +66 -0
  299. package/dist/plot/ColorBar.svelte +721 -0
  300. package/dist/plot/ColorBar.svelte.d.ts +31 -0
  301. package/dist/plot/ColorScaleSelect.svelte +54 -0
  302. package/dist/plot/ColorScaleSelect.svelte.d.ts +15 -0
  303. package/dist/plot/ElementScatter.svelte +63 -0
  304. package/dist/plot/ElementScatter.svelte.d.ts +14 -0
  305. package/dist/plot/FillArea.svelte.d.ts +21 -0
  306. package/dist/plot/Histogram.svelte +1558 -0
  307. package/dist/plot/Histogram.svelte.d.ts +50 -0
  308. package/dist/plot/HistogramControls.svelte +212 -0
  309. package/dist/plot/HistogramControls.svelte.d.ts +22 -0
  310. package/dist/plot/InteractiveAxisLabel.svelte +96 -0
  311. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +14 -0
  312. package/dist/plot/Line.svelte +84 -0
  313. package/dist/plot/Line.svelte.d.ts +15 -0
  314. package/dist/plot/PlotAxis.svelte +169 -0
  315. package/dist/plot/PlotAxis.svelte.d.ts +24 -0
  316. package/dist/plot/PlotControls.svelte +537 -0
  317. package/dist/plot/PlotControls.svelte.d.ts +4 -0
  318. package/dist/plot/PlotLegend.svelte +569 -0
  319. package/dist/plot/PlotLegend.svelte.d.ts +29 -0
  320. package/dist/plot/PlotTooltip.svelte +67 -0
  321. package/dist/plot/PlotTooltip.svelte.d.ts +17 -0
  322. package/dist/plot/PortalSelect.svelte +253 -0
  323. package/dist/plot/PortalSelect.svelte.d.ts +16 -0
  324. package/dist/plot/ReferenceLine.svelte.d.ts +20 -0
  325. package/dist/plot/ReferenceLine3D.svelte +156 -0
  326. package/dist/plot/ReferenceLine3D.svelte.d.ts +14 -0
  327. package/dist/plot/ReferencePlane.svelte +175 -0
  328. package/dist/plot/ReferencePlane.svelte.d.ts +14 -0
  329. package/dist/plot/ScatterPlot.svelte +2778 -0
  330. package/dist/plot/ScatterPlot.svelte.d.ts +96 -0
  331. package/dist/plot/ScatterPlot3D.svelte +529 -0
  332. package/dist/plot/ScatterPlot3D.svelte.d.ts +95 -0
  333. package/dist/plot/ScatterPlot3DControls.svelte +437 -0
  334. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +20 -0
  335. package/dist/plot/ScatterPlot3DScene.svelte +912 -0
  336. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +74 -0
  337. package/dist/plot/ScatterPlotControls.svelte +306 -0
  338. package/dist/plot/ScatterPlotControls.svelte.d.ts +17 -0
  339. package/dist/plot/ScatterPoint.svelte +182 -0
  340. package/dist/plot/ScatterPoint.svelte.d.ts +22 -0
  341. package/dist/plot/SpacegroupBarPlot.svelte +293 -0
  342. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +9 -0
  343. package/dist/plot/Surface3D.svelte +197 -0
  344. package/dist/plot/Surface3D.svelte.d.ts +13 -0
  345. package/dist/plot/ZeroLines.svelte +97 -0
  346. package/dist/plot/ZeroLines.svelte.d.ts +33 -0
  347. package/dist/plot/ZoomRect.svelte +23 -0
  348. package/dist/plot/ZoomRect.svelte.d.ts +8 -0
  349. package/dist/plot/adaptive-density.d.ts +69 -0
  350. package/dist/plot/adaptive-density.js +191 -0
  351. package/dist/plot/auto-place.d.ts +43 -0
  352. package/dist/plot/auto-place.js +122 -0
  353. package/dist/plot/axis-utils.d.ts +19 -0
  354. package/dist/plot/axis-utils.js +78 -0
  355. package/dist/plot/binned-scatter-types.d.ts +59 -0
  356. package/dist/plot/binned-scatter-types.js +1 -0
  357. package/dist/plot/data-cleaning.d.ts +37 -0
  358. package/dist/plot/data-cleaning.js +855 -0
  359. package/dist/plot/data-transform.d.ts +16 -0
  360. package/dist/plot/data-transform.js +45 -0
  361. package/dist/plot/defaults.d.ts +19 -0
  362. package/dist/plot/defaults.js +9 -0
  363. package/dist/plot/fill-utils.d.ts +46 -0
  364. package/dist/plot/fill-utils.js +322 -0
  365. package/dist/plot/hover-lock.svelte.d.ts +14 -0
  366. package/dist/plot/hover-lock.svelte.js +46 -0
  367. package/dist/plot/index.d.ts +41 -0
  368. package/dist/plot/index.js +39 -0
  369. package/dist/plot/interactions.d.ts +12 -0
  370. package/dist/plot/interactions.js +101 -0
  371. package/dist/plot/layout.d.ts +78 -0
  372. package/dist/plot/layout.js +273 -0
  373. package/dist/plot/reference-line.d.ts +60 -0
  374. package/dist/plot/reference-line.js +314 -0
  375. package/dist/plot/scales.d.ts +48 -0
  376. package/dist/plot/scales.js +481 -0
  377. package/dist/plot/svg.d.ts +1 -0
  378. package/dist/plot/svg.js +11 -0
  379. package/dist/plot/types.d.ts +831 -0
  380. package/dist/plot/types.js +99 -0
  381. package/dist/plot/utils/label-placement.d.ts +68 -0
  382. package/dist/plot/utils/label-placement.js +326 -0
  383. package/dist/plot/utils/series-visibility.d.ts +15 -0
  384. package/dist/plot/utils/series-visibility.js +85 -0
  385. package/dist/plot/utils.d.ts +1 -0
  386. package/dist/plot/utils.js +14 -0
  387. package/dist/rdf/RdfPlot.svelte +247 -0
  388. package/dist/rdf/RdfPlot.svelte.d.ts +27 -0
  389. package/dist/rdf/calc-rdf.d.ts +4 -0
  390. package/dist/rdf/calc-rdf.js +111 -0
  391. package/dist/rdf/index.d.ts +23 -0
  392. package/dist/rdf/index.js +2 -0
  393. package/dist/sanitize.d.ts +6 -0
  394. package/dist/sanitize.js +116 -0
  395. package/dist/settings.d.ts +255 -0
  396. package/dist/settings.js +1132 -0
  397. package/dist/spectral/Bands.svelte +1040 -0
  398. package/dist/spectral/Bands.svelte.d.ts +40 -0
  399. package/dist/spectral/BandsAndDos.svelte +134 -0
  400. package/dist/spectral/BandsAndDos.svelte.d.ts +18 -0
  401. package/dist/spectral/BrillouinBandsDos.svelte +252 -0
  402. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +20 -0
  403. package/dist/spectral/Dos.svelte +697 -0
  404. package/dist/spectral/Dos.svelte.d.ts +29 -0
  405. package/dist/spectral/helpers.d.ts +119 -0
  406. package/dist/spectral/helpers.js +1032 -0
  407. package/dist/spectral/index.d.ts +6 -0
  408. package/dist/spectral/index.js +6 -0
  409. package/dist/spectral/types.d.ts +84 -0
  410. package/dist/spectral/types.js +2 -0
  411. package/dist/state.svelte.d.ts +25 -0
  412. package/dist/state.svelte.js +45 -0
  413. package/dist/structure/Arrow.svelte +72 -0
  414. package/dist/structure/Arrow.svelte.d.ts +15 -0
  415. package/dist/structure/AtomLegend.svelte +815 -0
  416. package/dist/structure/AtomLegend.svelte.d.ts +35 -0
  417. package/dist/structure/Bond.svelte +140 -0
  418. package/dist/structure/Bond.svelte.d.ts +9 -0
  419. package/dist/structure/CanvasTooltip.svelte +33 -0
  420. package/dist/structure/CanvasTooltip.svelte.d.ts +12 -0
  421. package/dist/structure/CellSelect.svelte +349 -0
  422. package/dist/structure/CellSelect.svelte.d.ts +13 -0
  423. package/dist/structure/Cylinder.svelte +45 -0
  424. package/dist/structure/Cylinder.svelte.d.ts +10 -0
  425. package/dist/structure/Lattice.svelte +196 -0
  426. package/dist/structure/Lattice.svelte.d.ts +17 -0
  427. package/dist/structure/Structure.svelte +2248 -0
  428. package/dist/structure/Structure.svelte.d.ts +89 -0
  429. package/dist/structure/StructureControls.svelte +1273 -0
  430. package/dist/structure/StructureControls.svelte.d.ts +31 -0
  431. package/dist/structure/StructureExportPane.svelte +252 -0
  432. package/dist/structure/StructureExportPane.svelte.d.ts +17 -0
  433. package/dist/structure/StructureInfoPane.svelte +737 -0
  434. package/dist/structure/StructureInfoPane.svelte.d.ts +19 -0
  435. package/dist/structure/StructureScene.svelte +2255 -0
  436. package/dist/structure/StructureScene.svelte.d.ts +111 -0
  437. package/dist/structure/atom-properties.d.ts +37 -0
  438. package/dist/structure/atom-properties.js +200 -0
  439. package/dist/structure/bond-order-perception.d.ts +13 -0
  440. package/dist/structure/bond-order-perception.js +384 -0
  441. package/dist/structure/bonding.d.ts +68 -0
  442. package/dist/structure/bonding.js +696 -0
  443. package/dist/structure/export.d.ts +20 -0
  444. package/dist/structure/export.js +727 -0
  445. package/dist/structure/index.d.ts +126 -0
  446. package/dist/structure/index.js +169 -0
  447. package/dist/structure/label-placement.d.ts +14 -0
  448. package/dist/structure/label-placement.js +72 -0
  449. package/dist/structure/measure.d.ts +6 -0
  450. package/dist/structure/measure.js +29 -0
  451. package/dist/structure/parse.d.ts +66 -0
  452. package/dist/structure/parse.js +1392 -0
  453. package/dist/structure/partial-occupancy.d.ts +25 -0
  454. package/dist/structure/partial-occupancy.js +99 -0
  455. package/dist/structure/pbc.d.ts +9 -0
  456. package/dist/structure/pbc.js +123 -0
  457. package/dist/structure/supercell.d.ts +8 -0
  458. package/dist/structure/supercell.js +170 -0
  459. package/dist/structure/validation.d.ts +2 -0
  460. package/dist/structure/validation.js +10 -0
  461. package/dist/symmetry/SymmetryStats.svelte +226 -0
  462. package/dist/symmetry/SymmetryStats.svelte.d.ts +21 -0
  463. package/dist/symmetry/WyckoffTable.svelte +120 -0
  464. package/dist/symmetry/WyckoffTable.svelte.d.ts +11 -0
  465. package/dist/symmetry/cell-transform.d.ts +12 -0
  466. package/dist/symmetry/cell-transform.js +91 -0
  467. package/dist/symmetry/index.d.ts +43 -0
  468. package/dist/symmetry/index.js +228 -0
  469. package/dist/symmetry/spacegroups.d.ts +9 -0
  470. package/dist/symmetry/spacegroups.js +394 -0
  471. package/dist/table/HeatmapTable.svelte +1833 -0
  472. package/dist/table/HeatmapTable.svelte.d.ts +49 -0
  473. package/dist/table/ToggleMenu.svelte +385 -0
  474. package/dist/table/ToggleMenu.svelte.d.ts +11 -0
  475. package/dist/table/index.d.ts +74 -0
  476. package/dist/table/index.js +38 -0
  477. package/dist/theme/ThemeControl.svelte +53 -0
  478. package/dist/theme/ThemeControl.svelte.d.ts +9 -0
  479. package/dist/theme/index.d.ts +29 -0
  480. package/dist/theme/index.js +79 -0
  481. package/dist/time.d.ts +4 -0
  482. package/dist/time.js +70 -0
  483. package/dist/tooltip/TooltipContent.svelte +58 -0
  484. package/dist/tooltip/TooltipContent.svelte.d.ts +31 -0
  485. package/dist/tooltip/index.d.ts +2 -0
  486. package/dist/tooltip/index.js +1 -0
  487. package/dist/tooltip/types.d.ts +8 -0
  488. package/dist/tooltip/types.js +1 -0
  489. package/dist/trajectory/Trajectory.svelte +1545 -0
  490. package/dist/trajectory/Trajectory.svelte.d.ts +77 -0
  491. package/dist/trajectory/TrajectoryError.svelte +128 -0
  492. package/dist/trajectory/TrajectoryError.svelte.d.ts +13 -0
  493. package/dist/trajectory/TrajectoryExportPane.svelte +357 -0
  494. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +17 -0
  495. package/dist/trajectory/TrajectoryInfoPane.svelte +313 -0
  496. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +17 -0
  497. package/dist/trajectory/constants.d.ts +6 -0
  498. package/dist/trajectory/constants.js +7 -0
  499. package/dist/trajectory/extract.d.ts +5 -0
  500. package/dist/trajectory/extract.js +162 -0
  501. package/dist/trajectory/format-detect.d.ts +9 -0
  502. package/dist/trajectory/format-detect.js +76 -0
  503. package/dist/trajectory/frame-reader.d.ts +17 -0
  504. package/dist/trajectory/frame-reader.js +332 -0
  505. package/dist/trajectory/helpers.d.ts +15 -0
  506. package/dist/trajectory/helpers.js +164 -0
  507. package/dist/trajectory/index.d.ts +63 -0
  508. package/dist/trajectory/index.js +126 -0
  509. package/dist/trajectory/parse/ase.d.ts +2 -0
  510. package/dist/trajectory/parse/ase.js +73 -0
  511. package/dist/trajectory/parse/hdf5.d.ts +2 -0
  512. package/dist/trajectory/parse/hdf5.js +127 -0
  513. package/dist/trajectory/parse/index.d.ts +12 -0
  514. package/dist/trajectory/parse/index.js +298 -0
  515. package/dist/trajectory/parse/lammps.d.ts +5 -0
  516. package/dist/trajectory/parse/lammps.js +179 -0
  517. package/dist/trajectory/parse/vasp.d.ts +2 -0
  518. package/dist/trajectory/parse/vasp.js +68 -0
  519. package/dist/trajectory/parse/xyz.d.ts +2 -0
  520. package/dist/trajectory/parse/xyz.js +110 -0
  521. package/dist/trajectory/plotting.d.ts +28 -0
  522. package/dist/trajectory/plotting.js +423 -0
  523. package/dist/trajectory/types.d.ts +11 -0
  524. package/dist/trajectory/types.js +1 -0
  525. package/dist/utils.d.ts +6 -0
  526. package/dist/utils.js +45 -0
  527. package/dist/xrd/XrdPlot.svelte +615 -0
  528. package/dist/xrd/XrdPlot.svelte.d.ts +28 -0
  529. package/dist/xrd/broadening.d.ts +20 -0
  530. package/dist/xrd/broadening.js +97 -0
  531. package/dist/xrd/calc-xrd.d.ts +37 -0
  532. package/dist/xrd/calc-xrd.js +336 -0
  533. package/dist/xrd/index.d.ts +37 -0
  534. package/dist/xrd/index.js +4 -0
  535. package/dist/xrd/parse.d.ts +13 -0
  536. package/dist/xrd/parse.js +749 -0
  537. package/license +1 -1
  538. package/package.json +232 -1457
  539. package/readme.md +98 -171
  540. package/.vscode/launch.json +0 -13
  541. package/.vscodeignore +0 -7
  542. package/dist/assets/STLExporter-BpTH3YHE.js +0 -8
  543. package/dist/assets/browser-DdDecX_W.js +0 -1
  544. package/dist/assets/export-qgn-H9y6.js +0 -2
  545. package/dist/assets/main-DiKYzti2.css +0 -1
  546. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  547. package/dist/extension.js +0 -31293
  548. package/dist/src/lib/FilePicker.svelte +0 -360
  549. package/dist/src/lib/MillerIndexInput.svelte +0 -66
  550. package/dist/src/lib/api/mp.ts +0 -26
  551. package/dist/src/lib/api/optimade.ts +0 -204
  552. package/dist/src/lib/brillouin/BrillouinZone.svelte +0 -549
  553. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +0 -144
  554. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +0 -146
  555. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  556. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +0 -476
  557. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +0 -92
  558. package/dist/src/lib/brillouin/compute.ts +0 -529
  559. package/dist/src/lib/brillouin/index.ts +0 -8
  560. package/dist/src/lib/brillouin/types.ts +0 -51
  561. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +0 -327
  562. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +0 -846
  563. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +0 -3193
  564. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +0 -94
  565. package/dist/src/lib/chempot-diagram/chempot-worker.ts +0 -11
  566. package/dist/src/lib/chempot-diagram/color.ts +0 -42
  567. package/dist/src/lib/chempot-diagram/compute.ts +0 -1014
  568. package/dist/src/lib/chempot-diagram/index.ts +0 -6
  569. package/dist/src/lib/chempot-diagram/pointer.ts +0 -56
  570. package/dist/src/lib/chempot-diagram/temperature.ts +0 -77
  571. package/dist/src/lib/chempot-diagram/types.ts +0 -130
  572. package/dist/src/lib/colors/index.ts +0 -249
  573. package/dist/src/lib/composition/BarChart.svelte +0 -297
  574. package/dist/src/lib/composition/BubbleChart.svelte +0 -218
  575. package/dist/src/lib/composition/Composition.svelte +0 -165
  576. package/dist/src/lib/composition/Formula.svelte +0 -268
  577. package/dist/src/lib/composition/FormulaFilter.svelte +0 -1257
  578. package/dist/src/lib/composition/PieChart.svelte +0 -323
  579. package/dist/src/lib/composition/format.ts +0 -155
  580. package/dist/src/lib/composition/index.ts +0 -37
  581. package/dist/src/lib/composition/parse.ts +0 -605
  582. package/dist/src/lib/constants.ts +0 -134
  583. package/dist/src/lib/controls.ts +0 -42
  584. package/dist/src/lib/convex-hull/ConvexHull.svelte +0 -157
  585. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +0 -825
  586. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +0 -1801
  587. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +0 -1398
  588. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +0 -535
  589. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +0 -125
  590. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +0 -929
  591. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +0 -131
  592. package/dist/src/lib/convex-hull/GasPressureControls.svelte +0 -247
  593. package/dist/src/lib/convex-hull/StructurePopup.svelte +0 -151
  594. package/dist/src/lib/convex-hull/barycentric-coords.ts +0 -246
  595. package/dist/src/lib/convex-hull/demo-temperature.ts +0 -63
  596. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +0 -405
  597. package/dist/src/lib/convex-hull/helpers.ts +0 -932
  598. package/dist/src/lib/convex-hull/index.ts +0 -202
  599. package/dist/src/lib/convex-hull/thermodynamics.ts +0 -2192
  600. package/dist/src/lib/convex-hull/types.ts +0 -267
  601. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +0 -311
  602. package/dist/src/lib/coordination/calc-coordination.ts +0 -93
  603. package/dist/src/lib/coordination/index.ts +0 -9
  604. package/dist/src/lib/effects.svelte.ts +0 -48
  605. package/dist/src/lib/element/ElementHeading.svelte +0 -26
  606. package/dist/src/lib/element/ElementPhoto.svelte +0 -57
  607. package/dist/src/lib/element/ElementStats.svelte +0 -80
  608. package/dist/src/lib/element/ElementTile.svelte +0 -484
  609. package/dist/src/lib/element/data.ts +0 -14
  610. package/dist/src/lib/element/index.ts +0 -8
  611. package/dist/src/lib/element/types.ts +0 -62
  612. package/dist/src/lib/feedback/ClickFeedback.svelte +0 -58
  613. package/dist/src/lib/feedback/DragOverlay.svelte +0 -42
  614. package/dist/src/lib/feedback/index.ts +0 -4
  615. package/dist/src/lib/fermi-surface/FermiSlice.svelte +0 -189
  616. package/dist/src/lib/fermi-surface/FermiSurface.svelte +0 -600
  617. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +0 -448
  618. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +0 -794
  619. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  620. package/dist/src/lib/fermi-surface/compute.ts +0 -728
  621. package/dist/src/lib/fermi-surface/constants.ts +0 -32
  622. package/dist/src/lib/fermi-surface/export.ts +0 -64
  623. package/dist/src/lib/fermi-surface/index.ts +0 -14
  624. package/dist/src/lib/fermi-surface/marching-cubes.ts +0 -3
  625. package/dist/src/lib/fermi-surface/parse.ts +0 -574
  626. package/dist/src/lib/fermi-surface/symmetry.ts +0 -56
  627. package/dist/src/lib/fermi-surface/types.ts +0 -159
  628. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +0 -1545
  629. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  630. package/dist/src/lib/heatmap-matrix/index.ts +0 -167
  631. package/dist/src/lib/heatmap-matrix/shared.ts +0 -7
  632. package/dist/src/lib/icons.ts +0 -650
  633. package/dist/src/lib/index.ts +0 -61
  634. package/dist/src/lib/io/decompress.ts +0 -92
  635. package/dist/src/lib/io/export.ts +0 -385
  636. package/dist/src/lib/io/fetch.ts +0 -46
  637. package/dist/src/lib/io/file-drop.ts +0 -51
  638. package/dist/src/lib/io/index.ts +0 -7
  639. package/dist/src/lib/io/is-binary.ts +0 -24
  640. package/dist/src/lib/io/types.ts +0 -8
  641. package/dist/src/lib/io/url-drop.ts +0 -141
  642. package/dist/src/lib/isosurface/Isosurface.svelte +0 -285
  643. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +0 -277
  644. package/dist/src/lib/isosurface/index.ts +0 -7
  645. package/dist/src/lib/isosurface/parse.ts +0 -656
  646. package/dist/src/lib/isosurface/slice.ts +0 -175
  647. package/dist/src/lib/isosurface/types.ts +0 -309
  648. package/dist/src/lib/labels.ts +0 -320
  649. package/dist/src/lib/layout/FullscreenToggle.svelte +0 -50
  650. package/dist/src/lib/layout/InfoCard.svelte +0 -120
  651. package/dist/src/lib/layout/InfoTag.svelte +0 -185
  652. package/dist/src/lib/layout/PropertyFilter.svelte +0 -246
  653. package/dist/src/lib/layout/SettingsSection.svelte +0 -148
  654. package/dist/src/lib/layout/SubpageGrid.svelte +0 -82
  655. package/dist/src/lib/layout/fullscreen.ts +0 -65
  656. package/dist/src/lib/layout/index.ts +0 -11
  657. package/dist/src/lib/layout/json-tree/JsonNode.svelte +0 -548
  658. package/dist/src/lib/layout/json-tree/JsonTree.svelte +0 -1230
  659. package/dist/src/lib/layout/json-tree/index.ts +0 -3
  660. package/dist/src/lib/layout/json-tree/types.ts +0 -126
  661. package/dist/src/lib/layout/json-tree/utils.ts +0 -682
  662. package/dist/src/lib/marching-cubes.ts +0 -614
  663. package/dist/src/lib/math.ts +0 -1081
  664. package/dist/src/lib/overlays/ContextMenu.svelte +0 -162
  665. package/dist/src/lib/overlays/CopyButton.svelte +0 -45
  666. package/dist/src/lib/overlays/DragControlTab.svelte +0 -98
  667. package/dist/src/lib/overlays/DraggablePane.svelte +0 -487
  668. package/dist/src/lib/overlays/InfoPaneCards.svelte +0 -149
  669. package/dist/src/lib/overlays/index.ts +0 -3
  670. package/dist/src/lib/periodic-table/PeriodicTable.svelte +0 -469
  671. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +0 -557
  672. package/dist/src/lib/periodic-table/PropertySelect.svelte +0 -37
  673. package/dist/src/lib/periodic-table/index.ts +0 -12
  674. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  675. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +0 -444
  676. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  677. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +0 -184
  678. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +0 -391
  679. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +0 -203
  680. package/dist/src/lib/phase-diagram/build-diagram.ts +0 -186
  681. package/dist/src/lib/phase-diagram/colors.ts +0 -58
  682. package/dist/src/lib/phase-diagram/diagram-input.ts +0 -40
  683. package/dist/src/lib/phase-diagram/index.ts +0 -13
  684. package/dist/src/lib/phase-diagram/parse.ts +0 -348
  685. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +0 -1023
  686. package/dist/src/lib/phase-diagram/types.ts +0 -144
  687. package/dist/src/lib/phase-diagram/utils.ts +0 -775
  688. package/dist/src/lib/plot/AxisLabel.svelte +0 -51
  689. package/dist/src/lib/plot/BarPlot.svelte +0 -2113
  690. package/dist/src/lib/plot/BarPlotControls.svelte +0 -66
  691. package/dist/src/lib/plot/BinnedScatterPlot.svelte +0 -1114
  692. package/dist/src/lib/plot/ColorBar.svelte +0 -721
  693. package/dist/src/lib/plot/ColorScaleSelect.svelte +0 -54
  694. package/dist/src/lib/plot/ElementScatter.svelte +0 -63
  695. package/dist/src/lib/plot/Histogram.svelte +0 -1558
  696. package/dist/src/lib/plot/HistogramControls.svelte +0 -212
  697. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +0 -96
  698. package/dist/src/lib/plot/Line.svelte +0 -84
  699. package/dist/src/lib/plot/PlotAxis.svelte +0 -169
  700. package/dist/src/lib/plot/PlotControls.svelte +0 -537
  701. package/dist/src/lib/plot/PlotLegend.svelte +0 -569
  702. package/dist/src/lib/plot/PlotTooltip.svelte +0 -67
  703. package/dist/src/lib/plot/PortalSelect.svelte +0 -253
  704. package/dist/src/lib/plot/ReferenceLine3D.svelte +0 -156
  705. package/dist/src/lib/plot/ReferencePlane.svelte +0 -175
  706. package/dist/src/lib/plot/ScatterPlot.svelte +0 -2778
  707. package/dist/src/lib/plot/ScatterPlot3D.svelte +0 -529
  708. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +0 -437
  709. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +0 -912
  710. package/dist/src/lib/plot/ScatterPlotControls.svelte +0 -306
  711. package/dist/src/lib/plot/ScatterPoint.svelte +0 -182
  712. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +0 -293
  713. package/dist/src/lib/plot/Surface3D.svelte +0 -197
  714. package/dist/src/lib/plot/ZeroLines.svelte +0 -97
  715. package/dist/src/lib/plot/ZoomRect.svelte +0 -23
  716. package/dist/src/lib/plot/adaptive-density.ts +0 -316
  717. package/dist/src/lib/plot/auto-place.ts +0 -184
  718. package/dist/src/lib/plot/axis-utils.ts +0 -122
  719. package/dist/src/lib/plot/binned-scatter-types.ts +0 -83
  720. package/dist/src/lib/plot/data-cleaning.ts +0 -1069
  721. package/dist/src/lib/plot/data-transform.ts +0 -69
  722. package/dist/src/lib/plot/defaults.ts +0 -9
  723. package/dist/src/lib/plot/fill-utils.ts +0 -494
  724. package/dist/src/lib/plot/hover-lock.svelte.ts +0 -60
  725. package/dist/src/lib/plot/index.ts +0 -53
  726. package/dist/src/lib/plot/interactions.ts +0 -119
  727. package/dist/src/lib/plot/layout.ts +0 -425
  728. package/dist/src/lib/plot/reference-line.ts +0 -426
  729. package/dist/src/lib/plot/scales.ts +0 -654
  730. package/dist/src/lib/plot/svg.ts +0 -23
  731. package/dist/src/lib/plot/types.ts +0 -1144
  732. package/dist/src/lib/plot/utils/label-placement.ts +0 -541
  733. package/dist/src/lib/plot/utils/series-visibility.ts +0 -140
  734. package/dist/src/lib/plot/utils.ts +0 -11
  735. package/dist/src/lib/rdf/RdfPlot.svelte +0 -247
  736. package/dist/src/lib/rdf/calc-rdf.ts +0 -167
  737. package/dist/src/lib/rdf/index.ts +0 -27
  738. package/dist/src/lib/sanitize.ts +0 -126
  739. package/dist/src/lib/settings.ts +0 -1479
  740. package/dist/src/lib/spectral/Bands.svelte +0 -1040
  741. package/dist/src/lib/spectral/BandsAndDos.svelte +0 -134
  742. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +0 -252
  743. package/dist/src/lib/spectral/Dos.svelte +0 -697
  744. package/dist/src/lib/spectral/helpers.ts +0 -1381
  745. package/dist/src/lib/spectral/index.ts +0 -8
  746. package/dist/src/lib/spectral/types.ts +0 -112
  747. package/dist/src/lib/state.svelte.ts +0 -64
  748. package/dist/src/lib/structure/Arrow.svelte +0 -72
  749. package/dist/src/lib/structure/AtomLegend.svelte +0 -815
  750. package/dist/src/lib/structure/Bond.svelte +0 -140
  751. package/dist/src/lib/structure/CanvasTooltip.svelte +0 -33
  752. package/dist/src/lib/structure/CellSelect.svelte +0 -349
  753. package/dist/src/lib/structure/Cylinder.svelte +0 -45
  754. package/dist/src/lib/structure/Lattice.svelte +0 -196
  755. package/dist/src/lib/structure/Structure.svelte +0 -2248
  756. package/dist/src/lib/structure/StructureControls.svelte +0 -1273
  757. package/dist/src/lib/structure/StructureExportPane.svelte +0 -252
  758. package/dist/src/lib/structure/StructureInfoPane.svelte +0 -737
  759. package/dist/src/lib/structure/StructureScene.svelte +0 -2255
  760. package/dist/src/lib/structure/atom-properties.ts +0 -316
  761. package/dist/src/lib/structure/bond-order-perception.ts +0 -447
  762. package/dist/src/lib/structure/bonding.ts +0 -944
  763. package/dist/src/lib/structure/export.ts +0 -861
  764. package/dist/src/lib/structure/index.ts +0 -291
  765. package/dist/src/lib/structure/label-placement.ts +0 -130
  766. package/dist/src/lib/structure/measure.ts +0 -45
  767. package/dist/src/lib/structure/parse.ts +0 -1705
  768. package/dist/src/lib/structure/partial-occupancy.ts +0 -183
  769. package/dist/src/lib/structure/pbc.ts +0 -164
  770. package/dist/src/lib/structure/supercell.ts +0 -226
  771. package/dist/src/lib/structure/validation.ts +0 -11
  772. package/dist/src/lib/symmetry/SymmetryStats.svelte +0 -226
  773. package/dist/src/lib/symmetry/WyckoffTable.svelte +0 -120
  774. package/dist/src/lib/symmetry/cell-transform.ts +0 -118
  775. package/dist/src/lib/symmetry/index.ts +0 -348
  776. package/dist/src/lib/symmetry/spacegroups.ts +0 -404
  777. package/dist/src/lib/table/HeatmapTable.svelte +0 -1833
  778. package/dist/src/lib/table/ToggleMenu.svelte +0 -385
  779. package/dist/src/lib/table/index.ts +0 -139
  780. package/dist/src/lib/theme/ThemeControl.svelte +0 -53
  781. package/dist/src/lib/theme/index.ts +0 -107
  782. package/dist/src/lib/time.ts +0 -71
  783. package/dist/src/lib/tooltip/TooltipContent.svelte +0 -58
  784. package/dist/src/lib/tooltip/index.ts +0 -2
  785. package/dist/src/lib/tooltip/types.ts +0 -13
  786. package/dist/src/lib/trajectory/Trajectory.svelte +0 -1545
  787. package/dist/src/lib/trajectory/TrajectoryError.svelte +0 -128
  788. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +0 -357
  789. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +0 -313
  790. package/dist/src/lib/trajectory/constants.ts +0 -7
  791. package/dist/src/lib/trajectory/extract.ts +0 -196
  792. package/dist/src/lib/trajectory/format-detect.ts +0 -96
  793. package/dist/src/lib/trajectory/frame-reader.ts +0 -456
  794. package/dist/src/lib/trajectory/helpers.ts +0 -217
  795. package/dist/src/lib/trajectory/index.ts +0 -218
  796. package/dist/src/lib/trajectory/parse/ase.ts +0 -109
  797. package/dist/src/lib/trajectory/parse/hdf5.ts +0 -173
  798. package/dist/src/lib/trajectory/parse/index.ts +0 -411
  799. package/dist/src/lib/trajectory/parse/lammps.ts +0 -215
  800. package/dist/src/lib/trajectory/parse/vasp.ts +0 -102
  801. package/dist/src/lib/trajectory/parse/xyz.ts +0 -143
  802. package/dist/src/lib/trajectory/plotting.ts +0 -599
  803. package/dist/src/lib/trajectory/types.ts +0 -13
  804. package/dist/src/lib/utils.ts +0 -56
  805. package/dist/src/lib/xrd/XrdPlot.svelte +0 -615
  806. package/dist/src/lib/xrd/broadening.ts +0 -130
  807. package/dist/src/lib/xrd/calc-xrd.ts +0 -397
  808. package/dist/src/lib/xrd/index.ts +0 -38
  809. package/dist/src/lib/xrd/parse.ts +0 -858
  810. package/dist/webview.js +0 -29421
  811. package/icon.png +0 -0
  812. package/matterviz-0.3.2.vsix +0 -0
  813. package/matterviz-0.3.4.vsix +0 -0
  814. package/matterviz-0.3.5.vsix +0 -0
  815. package/scripts/sync-config.ts +0 -101
  816. package/src/declarations.d.ts +0 -2
  817. package/src/extension.ts +0 -972
  818. package/src/node-io.ts +0 -65
  819. package/src/types.ts +0 -17
  820. package/src/webview/JsonBrowser.svelte +0 -1079
  821. package/src/webview/PlotPanel.svelte +0 -346
  822. package/src/webview/detect.ts +0 -444
  823. package/src/webview/main.ts +0 -764
  824. package/src/webview/plot-utils.ts +0 -250
  825. package/test-fixtures/all-viz-types.json.gz +0 -0
  826. package/test-fixtures/plot-demo-data.json.gz +0 -0
  827. package/tests/detect.test.ts +0 -604
  828. package/tests/extension.test.ts +0 -2041
  829. package/tests/node-io.test.ts +0 -39
  830. package/tests/plot-utils.test.ts +0 -302
  831. package/tests/vite-plugin-json-gz.test.ts +0 -114
  832. package/tests/vscode-mock.ts +0 -18
  833. package/tests/webview.test.ts +0 -231
  834. package/tsconfig.json +0 -20
  835. package/vite-plugin-json-gz.ts +0 -29
  836. package/vite.config.ts +0 -34
  837. package/vite.extension.config.ts +0 -34
  838. /package/dist/{src/lib/EmptyState.svelte → EmptyState.svelte} +0 -0
  839. /package/dist/{src/lib/Icon.svelte → Icon.svelte} +0 -0
  840. /package/dist/{src/lib/app.css → app.css} +0 -0
  841. /package/dist/{src/lib/chempot-diagram → chempot-diagram}/ChemPotScene3D.svelte +0 -0
  842. /package/dist/{src/lib/colors → colors}/alloy-colors.json +0 -0
  843. /package/dist/{src/lib/colors → colors}/dark-mode-colors.json +0 -0
  844. /package/dist/{src/lib/colors → colors}/jmol-colors.json +0 -0
  845. /package/dist/{src/lib/colors → colors}/muted-colors.json +0 -0
  846. /package/dist/{src/lib/colors → colors}/pastel-colors.json +0 -0
  847. /package/dist/{src/lib/colors → colors}/vesta-colors.json +0 -0
  848. /package/dist/{src/lib/convex-hull → convex-hull}/TemperatureSlider.svelte +0 -0
  849. /package/dist/{src/lib/element → element}/BohrAtom.svelte +0 -0
  850. /package/dist/{src/lib/element → element}/Nucleus.svelte +0 -0
  851. /package/dist/{src/lib/element → element}/data.json +0 -0
  852. /package/dist/{src/lib/element → element}/data.json.gz +0 -0
  853. /package/dist/{src/lib/element → element}/data.json.gz.d.ts +0 -0
  854. /package/dist/{src/lib/element → element}/data.schema.json +0 -0
  855. /package/dist/{src/lib/element-image-urls.json → element-image-urls.json} +0 -0
  856. /package/dist/{src/lib/feedback → feedback}/Spinner.svelte +0 -0
  857. /package/dist/{src/lib/feedback → feedback}/StatusMessage.svelte +0 -0
  858. /package/dist/{src/lib/layout → layout}/json-tree/JsonValue.svelte +0 -0
  859. /package/dist/{src/lib/periodic-table → periodic-table}/TableInset.svelte +0 -0
  860. /package/dist/{src/lib/plot → plot}/FillArea.svelte +0 -0
  861. /package/dist/{src/lib/plot → plot}/ReferenceLine.svelte +0 -0
  862. /package/dist/{src/lib/theme → theme}/themes.mjs +0 -0
  863. /package/dist/{src/lib/xrd → xrd}/atomic_scattering_params.json +0 -0
@@ -0,0 +1,540 @@
1
+ const wrap_grid_idx = (val, dim) => ((val % dim) + dim) % dim;
2
+ const clamp_grid_idx = (val, max) => Math.max(0, Math.min(val, max));
3
+ // Edge table: for each cube configuration (256 cases), which edges are intersected
4
+ // Each bit indicates whether that edge has an intersection
5
+ // oxfmt-ignore
6
+ const EDGE_TABLE = [
7
+ 0x0, 0x109, 0x203, 0x30a, 0x406, 0x50f, 0x605, 0x70c, 0x80c, 0x905, 0xa0f, 0xb06, 0xc0a,
8
+ 0xd03, 0xe09, 0xf00, 0x190, 0x99, 0x393, 0x29a, 0x596, 0x49f, 0x795, 0x69c, 0x99c,
9
+ 0x895, 0xb9f, 0xa96, 0xd9a, 0xc93, 0xf99, 0xe90, 0x230, 0x339, 0x33, 0x13a, 0x636,
10
+ 0x73f, 0x435, 0x53c, 0xa3c, 0xb35, 0x83f, 0x936, 0xe3a, 0xf33, 0xc39, 0xd30, 0x3a0,
11
+ 0x2a9, 0x1a3, 0xaa, 0x7a6, 0x6af, 0x5a5, 0x4ac, 0xbac, 0xaa5, 0x9af, 0x8a6, 0xfaa,
12
+ 0xea3, 0xda9, 0xca0, 0x460, 0x569, 0x663, 0x76a, 0x66, 0x16f, 0x265, 0x36c, 0xc6c,
13
+ 0xd65, 0xe6f, 0xf66, 0x86a, 0x963, 0xa69, 0xb60, 0x5f0, 0x4f9, 0x7f3, 0x6fa, 0x1f6,
14
+ 0xff, 0x3f5, 0x2fc, 0xdfc, 0xcf5, 0xfff, 0xef6, 0x9fa, 0x8f3, 0xbf9, 0xaf0, 0x650,
15
+ 0x759, 0x453, 0x55a, 0x256, 0x35f, 0x55, 0x15c, 0xe5c, 0xf55, 0xc5f, 0xd56, 0xa5a,
16
+ 0xb53, 0x859, 0x950, 0x7c0, 0x6c9, 0x5c3, 0x4ca, 0x3c6, 0x2cf, 0x1c5, 0xcc, 0xfcc,
17
+ 0xec5, 0xdcf, 0xcc6, 0xbca, 0xac3, 0x9c9, 0x8c0, 0x8c0, 0x9c9, 0xac3, 0xbca, 0xcc6,
18
+ 0xdcf, 0xec5, 0xfcc, 0xcc, 0x1c5, 0x2cf, 0x3c6, 0x4ca, 0x5c3, 0x6c9, 0x7c0, 0x950,
19
+ 0x859, 0xb53, 0xa5a, 0xd56, 0xc5f, 0xf55, 0xe5c, 0x15c, 0x55, 0x35f, 0x256, 0x55a,
20
+ 0x453, 0x759, 0x650, 0xaf0, 0xbf9, 0x8f3, 0x9fa, 0xef6, 0xfff, 0xcf5, 0xdfc, 0x2fc,
21
+ 0x3f5, 0xff, 0x1f6, 0x6fa, 0x7f3, 0x4f9, 0x5f0, 0xb60, 0xa69, 0x963, 0x86a, 0xf66,
22
+ 0xe6f, 0xd65, 0xc6c, 0x36c, 0x265, 0x16f, 0x66, 0x76a, 0x663, 0x569, 0x460, 0xca0,
23
+ 0xda9, 0xea3, 0xfaa, 0x8a6, 0x9af, 0xaa5, 0xbac, 0x4ac, 0x5a5, 0x6af, 0x7a6, 0xaa,
24
+ 0x1a3, 0x2a9, 0x3a0, 0xd30, 0xc39, 0xf33, 0xe3a, 0x936, 0x83f, 0xb35, 0xa3c, 0x53c,
25
+ 0x435, 0x73f, 0x636, 0x13a, 0x33, 0x339, 0x230, 0xe90, 0xf99, 0xc93, 0xd9a, 0xa96,
26
+ 0xb9f, 0x895, 0x99c, 0x69c, 0x795, 0x49f, 0x596, 0x29a, 0x393, 0x99, 0x190, 0xf00,
27
+ 0xe09, 0xd03, 0xc0a, 0xb06, 0xa0f, 0x905, 0x80c, 0x70c, 0x605, 0x50f, 0x406, 0x30a,
28
+ 0x203, 0x109, 0x0,
29
+ ];
30
+ // Triangle table: for each cube configuration, list of edge triplets forming triangles
31
+ // -1 marks the end of the triangle list for that configuration
32
+ const TRI_TABLE = [
33
+ [],
34
+ [0, 8, 3],
35
+ [0, 1, 9],
36
+ [1, 8, 3, 9, 8, 1],
37
+ [1, 2, 10],
38
+ [0, 8, 3, 1, 2, 10],
39
+ [9, 2, 10, 0, 2, 9],
40
+ [2, 8, 3, 2, 10, 8, 10, 9, 8],
41
+ [3, 11, 2],
42
+ [0, 11, 2, 8, 11, 0],
43
+ [1, 9, 0, 2, 3, 11],
44
+ [1, 11, 2, 1, 9, 11, 9, 8, 11],
45
+ [3, 10, 1, 11, 10, 3],
46
+ [0, 10, 1, 0, 8, 10, 8, 11, 10],
47
+ [3, 9, 0, 3, 11, 9, 11, 10, 9],
48
+ [9, 8, 10, 10, 8, 11],
49
+ [4, 7, 8],
50
+ [4, 3, 0, 7, 3, 4],
51
+ [0, 1, 9, 8, 4, 7],
52
+ [4, 1, 9, 4, 7, 1, 7, 3, 1],
53
+ [1, 2, 10, 8, 4, 7],
54
+ [3, 4, 7, 3, 0, 4, 1, 2, 10],
55
+ [9, 2, 10, 9, 0, 2, 8, 4, 7],
56
+ [2, 10, 9, 2, 9, 7, 2, 7, 3, 7, 9, 4],
57
+ [8, 4, 7, 3, 11, 2],
58
+ [11, 4, 7, 11, 2, 4, 2, 0, 4],
59
+ [9, 0, 1, 8, 4, 7, 2, 3, 11],
60
+ [4, 7, 11, 9, 4, 11, 9, 11, 2, 9, 2, 1],
61
+ [3, 10, 1, 3, 11, 10, 7, 8, 4],
62
+ [1, 11, 10, 1, 4, 11, 1, 0, 4, 7, 11, 4],
63
+ [4, 7, 8, 9, 0, 11, 9, 11, 10, 11, 0, 3],
64
+ [4, 7, 11, 4, 11, 9, 9, 11, 10],
65
+ [9, 5, 4],
66
+ [9, 5, 4, 0, 8, 3],
67
+ [0, 5, 4, 1, 5, 0],
68
+ [8, 5, 4, 8, 3, 5, 3, 1, 5],
69
+ [1, 2, 10, 9, 5, 4],
70
+ [3, 0, 8, 1, 2, 10, 4, 9, 5],
71
+ [5, 2, 10, 5, 4, 2, 4, 0, 2],
72
+ [2, 10, 5, 3, 2, 5, 3, 5, 4, 3, 4, 8],
73
+ [9, 5, 4, 2, 3, 11],
74
+ [0, 11, 2, 0, 8, 11, 4, 9, 5],
75
+ [0, 5, 4, 0, 1, 5, 2, 3, 11],
76
+ [2, 1, 5, 2, 5, 8, 2, 8, 11, 4, 8, 5],
77
+ [10, 3, 11, 10, 1, 3, 9, 5, 4],
78
+ [4, 9, 5, 0, 8, 1, 8, 10, 1, 8, 11, 10],
79
+ [5, 4, 0, 5, 0, 11, 5, 11, 10, 11, 0, 3],
80
+ [5, 4, 8, 5, 8, 10, 10, 8, 11],
81
+ [9, 7, 8, 5, 7, 9],
82
+ [9, 3, 0, 9, 5, 3, 5, 7, 3],
83
+ [0, 7, 8, 0, 1, 7, 1, 5, 7],
84
+ [1, 5, 3, 3, 5, 7],
85
+ [9, 7, 8, 9, 5, 7, 10, 1, 2],
86
+ [10, 1, 2, 9, 5, 0, 5, 3, 0, 5, 7, 3],
87
+ [8, 0, 2, 8, 2, 5, 8, 5, 7, 10, 5, 2],
88
+ [2, 10, 5, 2, 5, 3, 3, 5, 7],
89
+ [7, 9, 5, 7, 8, 9, 3, 11, 2],
90
+ [9, 5, 7, 9, 7, 2, 9, 2, 0, 2, 7, 11],
91
+ [2, 3, 11, 0, 1, 8, 1, 7, 8, 1, 5, 7],
92
+ [11, 2, 1, 11, 1, 7, 7, 1, 5],
93
+ [9, 5, 8, 8, 5, 7, 10, 1, 3, 10, 3, 11],
94
+ [5, 7, 0, 5, 0, 9, 7, 11, 0, 1, 0, 10, 11, 10, 0],
95
+ [11, 10, 0, 11, 0, 3, 10, 5, 0, 8, 0, 7, 5, 7, 0],
96
+ [11, 10, 5, 7, 11, 5],
97
+ [10, 6, 5],
98
+ [0, 8, 3, 5, 10, 6],
99
+ [9, 0, 1, 5, 10, 6],
100
+ [1, 8, 3, 1, 9, 8, 5, 10, 6],
101
+ [1, 6, 5, 2, 6, 1],
102
+ [1, 6, 5, 1, 2, 6, 3, 0, 8],
103
+ [9, 6, 5, 9, 0, 6, 0, 2, 6],
104
+ [5, 9, 8, 5, 8, 2, 5, 2, 6, 3, 2, 8],
105
+ [2, 3, 11, 10, 6, 5],
106
+ [11, 0, 8, 11, 2, 0, 10, 6, 5],
107
+ [0, 1, 9, 2, 3, 11, 5, 10, 6],
108
+ [5, 10, 6, 1, 9, 2, 9, 11, 2, 9, 8, 11],
109
+ [6, 3, 11, 6, 5, 3, 5, 1, 3],
110
+ [0, 8, 11, 0, 11, 5, 0, 5, 1, 5, 11, 6],
111
+ [3, 11, 6, 0, 3, 6, 0, 6, 5, 0, 5, 9],
112
+ [6, 5, 9, 6, 9, 11, 11, 9, 8],
113
+ [5, 10, 6, 4, 7, 8],
114
+ [4, 3, 0, 4, 7, 3, 6, 5, 10],
115
+ [1, 9, 0, 5, 10, 6, 8, 4, 7],
116
+ [10, 6, 5, 1, 9, 7, 1, 7, 3, 7, 9, 4],
117
+ [6, 1, 2, 6, 5, 1, 4, 7, 8],
118
+ [1, 2, 5, 5, 2, 6, 3, 0, 4, 3, 4, 7],
119
+ [8, 4, 7, 9, 0, 5, 0, 6, 5, 0, 2, 6],
120
+ [7, 3, 9, 7, 9, 4, 3, 2, 9, 5, 9, 6, 2, 6, 9],
121
+ [3, 11, 2, 7, 8, 4, 10, 6, 5],
122
+ [5, 10, 6, 4, 7, 2, 4, 2, 0, 2, 7, 11],
123
+ [0, 1, 9, 4, 7, 8, 2, 3, 11, 5, 10, 6],
124
+ [9, 2, 1, 9, 11, 2, 9, 4, 11, 7, 11, 4, 5, 10, 6],
125
+ [8, 4, 7, 3, 11, 5, 3, 5, 1, 5, 11, 6],
126
+ [5, 1, 11, 5, 11, 6, 1, 0, 11, 7, 11, 4, 0, 4, 11],
127
+ [0, 5, 9, 0, 6, 5, 0, 3, 6, 11, 6, 3, 8, 4, 7],
128
+ [6, 5, 9, 6, 9, 11, 4, 7, 9, 7, 11, 9],
129
+ [10, 4, 9, 6, 4, 10],
130
+ [4, 10, 6, 4, 9, 10, 0, 8, 3],
131
+ [10, 0, 1, 10, 6, 0, 6, 4, 0],
132
+ [8, 3, 1, 8, 1, 6, 8, 6, 4, 6, 1, 10],
133
+ [1, 4, 9, 1, 2, 4, 2, 6, 4],
134
+ [3, 0, 8, 1, 2, 9, 2, 4, 9, 2, 6, 4],
135
+ [0, 2, 4, 4, 2, 6],
136
+ [8, 3, 2, 8, 2, 4, 4, 2, 6],
137
+ [10, 4, 9, 10, 6, 4, 11, 2, 3],
138
+ [0, 8, 2, 2, 8, 11, 4, 9, 10, 4, 10, 6],
139
+ [3, 11, 2, 0, 1, 6, 0, 6, 4, 6, 1, 10],
140
+ [6, 4, 1, 6, 1, 10, 4, 8, 1, 2, 1, 11, 8, 11, 1],
141
+ [9, 6, 4, 9, 3, 6, 9, 1, 3, 11, 6, 3],
142
+ [8, 11, 1, 8, 1, 0, 11, 6, 1, 9, 1, 4, 6, 4, 1],
143
+ [3, 11, 6, 3, 6, 0, 0, 6, 4],
144
+ [6, 4, 8, 11, 6, 8],
145
+ [7, 10, 6, 7, 8, 10, 8, 9, 10],
146
+ [0, 7, 3, 0, 10, 7, 0, 9, 10, 6, 7, 10],
147
+ [10, 6, 7, 1, 10, 7, 1, 7, 8, 1, 8, 0],
148
+ [10, 6, 7, 10, 7, 1, 1, 7, 3],
149
+ [1, 2, 6, 1, 6, 8, 1, 8, 9, 8, 6, 7],
150
+ [2, 6, 9, 2, 9, 1, 6, 7, 9, 0, 9, 3, 7, 3, 9],
151
+ [7, 8, 0, 7, 0, 6, 6, 0, 2],
152
+ [7, 3, 2, 6, 7, 2],
153
+ [2, 3, 11, 10, 6, 8, 10, 8, 9, 8, 6, 7],
154
+ [2, 0, 7, 2, 7, 11, 0, 9, 7, 6, 7, 10, 9, 10, 7],
155
+ [1, 8, 0, 1, 7, 8, 1, 10, 7, 6, 7, 10, 2, 3, 11],
156
+ [11, 2, 1, 11, 1, 7, 10, 6, 1, 6, 7, 1],
157
+ [8, 9, 6, 8, 6, 7, 9, 1, 6, 11, 6, 3, 1, 3, 6],
158
+ [0, 9, 1, 11, 6, 7],
159
+ [7, 8, 0, 7, 0, 6, 3, 11, 0, 11, 6, 0],
160
+ [7, 11, 6],
161
+ [7, 6, 11],
162
+ [3, 0, 8, 11, 7, 6],
163
+ [0, 1, 9, 11, 7, 6],
164
+ [8, 1, 9, 8, 3, 1, 11, 7, 6],
165
+ [10, 1, 2, 6, 11, 7],
166
+ [1, 2, 10, 3, 0, 8, 6, 11, 7],
167
+ [2, 9, 0, 2, 10, 9, 6, 11, 7],
168
+ [6, 11, 7, 2, 10, 3, 10, 8, 3, 10, 9, 8],
169
+ [7, 2, 3, 6, 2, 7],
170
+ [7, 0, 8, 7, 6, 0, 6, 2, 0],
171
+ [2, 7, 6, 2, 3, 7, 0, 1, 9],
172
+ [1, 6, 2, 1, 8, 6, 1, 9, 8, 8, 7, 6],
173
+ [10, 7, 6, 10, 1, 7, 1, 3, 7],
174
+ [10, 7, 6, 1, 7, 10, 1, 8, 7, 1, 0, 8],
175
+ [0, 3, 7, 0, 7, 10, 0, 10, 9, 6, 10, 7],
176
+ [7, 6, 10, 7, 10, 8, 8, 10, 9],
177
+ [6, 8, 4, 11, 8, 6],
178
+ [3, 6, 11, 3, 0, 6, 0, 4, 6],
179
+ [8, 6, 11, 8, 4, 6, 9, 0, 1],
180
+ [9, 4, 6, 9, 6, 3, 9, 3, 1, 11, 3, 6],
181
+ [6, 8, 4, 6, 11, 8, 2, 10, 1],
182
+ [1, 2, 10, 3, 0, 11, 0, 6, 11, 0, 4, 6],
183
+ [4, 11, 8, 4, 6, 11, 0, 2, 9, 2, 10, 9],
184
+ [10, 9, 3, 10, 3, 2, 9, 4, 3, 11, 3, 6, 4, 6, 3],
185
+ [8, 2, 3, 8, 4, 2, 4, 6, 2],
186
+ [0, 4, 2, 4, 6, 2],
187
+ [1, 9, 0, 2, 3, 4, 2, 4, 6, 4, 3, 8],
188
+ [1, 9, 4, 1, 4, 2, 2, 4, 6],
189
+ [8, 1, 3, 8, 6, 1, 8, 4, 6, 6, 10, 1],
190
+ [10, 1, 0, 10, 0, 6, 6, 0, 4],
191
+ [4, 6, 3, 4, 3, 8, 6, 10, 3, 0, 3, 9, 10, 9, 3],
192
+ [10, 9, 4, 6, 10, 4],
193
+ [4, 9, 5, 7, 6, 11],
194
+ [0, 8, 3, 4, 9, 5, 11, 7, 6],
195
+ [5, 0, 1, 5, 4, 0, 7, 6, 11],
196
+ [11, 7, 6, 8, 3, 4, 3, 5, 4, 3, 1, 5],
197
+ [9, 5, 4, 10, 1, 2, 7, 6, 11],
198
+ [6, 11, 7, 1, 2, 10, 0, 8, 3, 4, 9, 5],
199
+ [7, 6, 11, 5, 4, 10, 4, 2, 10, 4, 0, 2],
200
+ [3, 4, 8, 3, 5, 4, 3, 2, 5, 10, 5, 2, 11, 7, 6],
201
+ [7, 2, 3, 7, 6, 2, 5, 4, 9],
202
+ [9, 5, 4, 0, 8, 6, 0, 6, 2, 6, 8, 7],
203
+ [3, 6, 2, 3, 7, 6, 1, 5, 0, 5, 4, 0],
204
+ [6, 2, 8, 6, 8, 7, 2, 1, 8, 4, 8, 5, 1, 5, 8],
205
+ [9, 5, 4, 10, 1, 6, 1, 7, 6, 1, 3, 7],
206
+ [1, 6, 10, 1, 7, 6, 1, 0, 7, 8, 7, 0, 9, 5, 4],
207
+ [4, 0, 10, 4, 10, 5, 0, 3, 10, 6, 10, 7, 3, 7, 10],
208
+ [7, 6, 10, 7, 10, 8, 5, 4, 10, 4, 8, 10],
209
+ [6, 9, 5, 6, 11, 9, 11, 8, 9],
210
+ [3, 6, 11, 0, 6, 3, 0, 5, 6, 0, 9, 5],
211
+ [0, 11, 8, 0, 5, 11, 0, 1, 5, 5, 6, 11],
212
+ [6, 11, 3, 6, 3, 5, 5, 3, 1],
213
+ [1, 2, 10, 9, 5, 11, 9, 11, 8, 11, 5, 6],
214
+ [0, 11, 3, 0, 6, 11, 0, 9, 6, 5, 6, 9, 1, 2, 10],
215
+ [11, 8, 5, 11, 5, 6, 8, 0, 5, 10, 5, 2, 0, 2, 5],
216
+ [6, 11, 3, 6, 3, 5, 2, 10, 3, 10, 5, 3],
217
+ [5, 8, 9, 5, 2, 8, 5, 6, 2, 3, 8, 2],
218
+ [9, 5, 6, 9, 6, 0, 0, 6, 2],
219
+ [1, 5, 8, 1, 8, 0, 5, 6, 8, 3, 8, 2, 6, 2, 8],
220
+ [1, 5, 6, 2, 1, 6],
221
+ [1, 3, 6, 1, 6, 10, 3, 8, 6, 5, 6, 9, 8, 9, 6],
222
+ [10, 1, 0, 10, 0, 6, 9, 5, 0, 5, 6, 0],
223
+ [0, 3, 8, 5, 6, 10],
224
+ [10, 5, 6],
225
+ [11, 5, 10, 7, 5, 11],
226
+ [11, 5, 10, 11, 7, 5, 8, 3, 0],
227
+ [5, 11, 7, 5, 10, 11, 1, 9, 0],
228
+ [10, 7, 5, 10, 11, 7, 9, 8, 1, 8, 3, 1],
229
+ [11, 1, 2, 11, 7, 1, 7, 5, 1],
230
+ [0, 8, 3, 1, 2, 7, 1, 7, 5, 7, 2, 11],
231
+ [9, 7, 5, 9, 2, 7, 9, 0, 2, 2, 11, 7],
232
+ [7, 5, 2, 7, 2, 11, 5, 9, 2, 3, 2, 8, 9, 8, 2],
233
+ [2, 5, 10, 2, 3, 5, 3, 7, 5],
234
+ [8, 2, 0, 8, 5, 2, 8, 7, 5, 10, 2, 5],
235
+ [9, 0, 1, 5, 10, 3, 5, 3, 7, 3, 10, 2],
236
+ [9, 8, 2, 9, 2, 1, 8, 7, 2, 10, 2, 5, 7, 5, 2],
237
+ [1, 3, 5, 3, 7, 5],
238
+ [0, 8, 7, 0, 7, 1, 1, 7, 5],
239
+ [9, 0, 3, 9, 3, 5, 5, 3, 7],
240
+ [9, 8, 7, 5, 9, 7],
241
+ [5, 8, 4, 5, 10, 8, 10, 11, 8],
242
+ [5, 0, 4, 5, 11, 0, 5, 10, 11, 11, 3, 0],
243
+ [0, 1, 9, 8, 4, 10, 8, 10, 11, 10, 4, 5],
244
+ [10, 11, 4, 10, 4, 5, 11, 3, 4, 9, 4, 1, 3, 1, 4],
245
+ [2, 5, 1, 2, 8, 5, 2, 11, 8, 4, 5, 8],
246
+ [0, 4, 11, 0, 11, 3, 4, 5, 11, 2, 11, 1, 5, 1, 11],
247
+ [0, 2, 5, 0, 5, 9, 2, 11, 5, 4, 5, 8, 11, 8, 5],
248
+ [9, 4, 5, 2, 11, 3],
249
+ [2, 5, 10, 3, 5, 2, 3, 4, 5, 3, 8, 4],
250
+ [5, 10, 2, 5, 2, 4, 4, 2, 0],
251
+ [3, 10, 2, 3, 5, 10, 3, 8, 5, 4, 5, 8, 0, 1, 9],
252
+ [5, 10, 2, 5, 2, 4, 1, 9, 2, 9, 4, 2],
253
+ [8, 4, 5, 8, 5, 3, 3, 5, 1],
254
+ [0, 4, 5, 1, 0, 5],
255
+ [8, 4, 5, 8, 5, 3, 9, 0, 5, 0, 3, 5],
256
+ [9, 4, 5],
257
+ [4, 11, 7, 4, 9, 11, 9, 10, 11],
258
+ [0, 8, 3, 4, 9, 7, 9, 11, 7, 9, 10, 11],
259
+ [1, 10, 11, 1, 11, 4, 1, 4, 0, 7, 4, 11],
260
+ [3, 1, 4, 3, 4, 8, 1, 10, 4, 7, 4, 11, 10, 11, 4],
261
+ [4, 11, 7, 9, 11, 4, 9, 2, 11, 9, 1, 2],
262
+ [9, 7, 4, 9, 11, 7, 9, 1, 11, 2, 11, 1, 0, 8, 3],
263
+ [11, 7, 4, 11, 4, 2, 2, 4, 0],
264
+ [11, 7, 4, 11, 4, 2, 8, 3, 4, 3, 2, 4],
265
+ [2, 9, 10, 2, 7, 9, 2, 3, 7, 7, 4, 9],
266
+ [9, 10, 7, 9, 7, 4, 10, 2, 7, 8, 7, 0, 2, 0, 7],
267
+ [3, 7, 10, 3, 10, 2, 7, 4, 10, 1, 10, 0, 4, 0, 10],
268
+ [1, 10, 2, 8, 7, 4],
269
+ [4, 9, 1, 4, 1, 7, 7, 1, 3],
270
+ [4, 9, 1, 4, 1, 7, 0, 8, 1, 8, 7, 1],
271
+ [4, 0, 3, 7, 4, 3],
272
+ [4, 8, 7],
273
+ [9, 10, 8, 10, 11, 8],
274
+ [3, 0, 9, 3, 9, 11, 11, 9, 10],
275
+ [0, 1, 10, 0, 10, 8, 8, 10, 11],
276
+ [3, 1, 10, 11, 3, 10],
277
+ [1, 2, 11, 1, 11, 9, 9, 11, 8],
278
+ [3, 0, 9, 3, 9, 11, 1, 2, 9, 2, 11, 9],
279
+ [0, 2, 11, 8, 0, 11],
280
+ [3, 2, 11],
281
+ [2, 3, 8, 2, 8, 10, 10, 8, 9],
282
+ [9, 10, 2, 0, 9, 2],
283
+ [2, 3, 8, 2, 8, 10, 0, 1, 8, 1, 10, 8],
284
+ [1, 10, 2],
285
+ [1, 3, 8, 9, 1, 8],
286
+ [0, 9, 1],
287
+ [0, 3, 8],
288
+ [],
289
+ ];
290
+ // Vertex positions for the 8 corners of a unit cube - flat arrays for speed
291
+ // Format: [x0,y0,z0, x1,y1,z1, ...] - access as CUBE_VERTS_X[i], etc.
292
+ const CUBE_VERTS_X = new Int8Array([0, 1, 1, 0, 0, 1, 1, 0]);
293
+ const CUBE_VERTS_Y = new Int8Array([0, 0, 1, 1, 0, 0, 1, 1]);
294
+ const CUBE_VERTS_Z = new Int8Array([0, 0, 0, 0, 1, 1, 1, 1]);
295
+ // Edge definitions: pairs of vertex indices for each of 12 edges
296
+ // Flattened for direct access: edge i has vertices EDGE_V1[i] and EDGE_V2[i]
297
+ const EDGE_V1 = new Uint8Array([0, 1, 2, 3, 4, 5, 6, 7, 0, 1, 2, 3]);
298
+ const EDGE_V2 = new Uint8Array([1, 2, 3, 0, 5, 6, 7, 4, 4, 5, 6, 7]);
299
+ // Compute gradient (normal) at a grid point using central differences
300
+ function compute_gradient(grid, ix, iy, iz, nx, ny, nz, periodic) {
301
+ // Wrap for periodic, clamp for non-periodic boundaries
302
+ const [ix_w, iy_w, iz_w] = periodic
303
+ ? [wrap_grid_idx(ix, nx), wrap_grid_idx(iy, ny), wrap_grid_idx(iz, nz)]
304
+ : [clamp_grid_idx(ix, nx - 1), clamp_grid_idx(iy, ny - 1), clamp_grid_idx(iz, nz - 1)];
305
+ const [ix_m, ix_p] = periodic
306
+ ? [wrap_grid_idx(ix - 1, nx), wrap_grid_idx(ix + 1, nx)]
307
+ : [Math.max(0, ix - 1), Math.min(nx - 1, ix + 1)];
308
+ const [iy_m, iy_p] = periodic
309
+ ? [wrap_grid_idx(iy - 1, ny), wrap_grid_idx(iy + 1, ny)]
310
+ : [Math.max(0, iy - 1), Math.min(ny - 1, iy + 1)];
311
+ const [iz_m, iz_p] = periodic
312
+ ? [wrap_grid_idx(iz - 1, nz), wrap_grid_idx(iz + 1, nz)]
313
+ : [Math.max(0, iz - 1), Math.min(nz - 1, iz + 1)];
314
+ const dx = (grid[ix_p][iy_w][iz_w] - grid[ix_m][iy_w][iz_w]) * 0.5;
315
+ const dy = (grid[ix_w][iy_p][iz_w] - grid[ix_w][iy_m][iz_w]) * 0.5;
316
+ const dz = (grid[ix_w][iy_w][iz_p] - grid[ix_w][iy_w][iz_m]) * 0.5;
317
+ const len_sq = dx * dx + dy * dy + dz * dz;
318
+ if (len_sq < 1e-20)
319
+ return [0, 0, 1];
320
+ const inv_len = 1 / Math.sqrt(len_sq);
321
+ return [-dx * inv_len, -dy * inv_len, -dz * inv_len];
322
+ }
323
+ // Main marching cubes algorithm (optimized version)
324
+ export function marching_cubes(grid, iso_value, k_lattice, options = {}) {
325
+ const { periodic = true, interpolate = true, centered = true, normals: compute_norms = true, } = options;
326
+ // When centered=true, shift fractional coordinates by -0.5 so the grid is
327
+ // centered at the origin (Γ point). This is needed for proper BZ visualization.
328
+ const center_offset = centered ? 0.5 : 0;
329
+ const nx = grid.length;
330
+ const ny = grid[0]?.length || 0;
331
+ const nz = grid[0]?.[0]?.length || 0;
332
+ if (nx < 2 || ny < 2 || nz < 2) {
333
+ return { vertices: [], faces: [], normals: [] };
334
+ }
335
+ const vertices = [];
336
+ const faces = [];
337
+ const normals = [];
338
+ // Precompute grid dimension products for flattening and cache keys
339
+ const ny_nz = ny * nz;
340
+ const max_flat = nx * ny_nz; // for computing cache keys
341
+ // Use numeric cache key - safe for grids up to ~300³ (2^53 / 2 / max_flat)
342
+ // For much larger grids (>30M cells), consider switching to Map<string, number>
343
+ // with keys like `${flat1},${flat2}` or Map<bigint, number> to avoid
344
+ // Number.MAX_SAFE_INTEGER limits. The current approach is faster for typical grids.
345
+ if (max_flat > 30_000_000) {
346
+ console.warn(`Grid size ${nx}×${ny}×${nz} may cause cache key overflow`);
347
+ }
348
+ const vertex_cache = new Map();
349
+ // Precompute k_lattice values for faster coordinate transform
350
+ const [kx0, kx1, kx2] = k_lattice[0];
351
+ const [ky0, ky1, ky2] = k_lattice[1];
352
+ const [kz0, kz1, kz2] = k_lattice[2];
353
+ // Precompute inverse grid sizes for fractional coordinate conversion.
354
+ // Non-periodic grids: n points span [0,1] with spacing 1/(n-1) — endpoints at 0 and 1.
355
+ // Periodic grids: n points span [0,1) with spacing 1/n — point n wraps back to 0.
356
+ const inv_nx = 1 / (periodic ? nx : nx - 1);
357
+ const inv_ny = 1 / (periodic ? ny : ny - 1);
358
+ const inv_nz = 1 / (periodic ? nz : nz - 1);
359
+ // Get or create vertex on an edge (fully optimized with flat array lookups)
360
+ const get_vertex_on_edge = (ix, iy, iz, edge_idx, cube_values) => {
361
+ // Use flat arrays instead of destructuring
362
+ const v1_idx = EDGE_V1[edge_idx];
363
+ const v2_idx = EDGE_V2[edge_idx];
364
+ const ox1 = CUBE_VERTS_X[v1_idx];
365
+ const oy1 = CUBE_VERTS_Y[v1_idx];
366
+ const oz1 = CUBE_VERTS_Z[v1_idx];
367
+ const ox2 = CUBE_VERTS_X[v2_idx];
368
+ const oy2 = CUBE_VERTS_Y[v2_idx];
369
+ const oz2 = CUBE_VERTS_Z[v2_idx];
370
+ // Compute wrapped grid positions using safe modulo for periodic boundaries
371
+ const g1x = periodic ? wrap_grid_idx(ix + ox1, nx) : ix + ox1;
372
+ const g1y = periodic ? wrap_grid_idx(iy + oy1, ny) : iy + oy1;
373
+ const g1z = periodic ? wrap_grid_idx(iz + oz1, nz) : iz + oz1;
374
+ const g2x = periodic ? wrap_grid_idx(ix + ox2, nx) : ix + ox2;
375
+ const g2y = periodic ? wrap_grid_idx(iy + oy2, ny) : iy + oy2;
376
+ const g2z = periodic ? wrap_grid_idx(iz + oz2, nz) : iz + oz2;
377
+ // Create numeric cache key (sorted for consistency)
378
+ // Safe for grids up to ~300³ before exceeding Number.MAX_SAFE_INTEGER
379
+ const flat1 = g1x * ny_nz + g1y * nz + g1z;
380
+ const flat2 = g2x * ny_nz + g2y * nz + g2z;
381
+ const cache_key = flat1 < flat2 ? flat1 * max_flat + flat2 : flat2 * max_flat + flat1;
382
+ const cached = vertex_cache.get(cache_key);
383
+ if (cached !== undefined)
384
+ return cached;
385
+ // Compute vertex position
386
+ const v1 = cube_values[v1_idx];
387
+ const v2 = cube_values[v2_idx];
388
+ let fx, fy, fz;
389
+ if (interpolate) {
390
+ const f1x = (ix + ox1) * inv_nx - center_offset;
391
+ const f1y = (iy + oy1) * inv_ny - center_offset;
392
+ const f1z = (iz + oz1) * inv_nz - center_offset;
393
+ const f2x = (ix + ox2) * inv_nx - center_offset;
394
+ const f2y = (iy + oy2) * inv_ny - center_offset;
395
+ const f2z = (iz + oz2) * inv_nz - center_offset;
396
+ const dv = v2 - v1;
397
+ if (Math.abs(dv) < 1e-10) {
398
+ fx = f1x;
399
+ fy = f1y;
400
+ fz = f1z;
401
+ }
402
+ else {
403
+ const lerp = (iso_value - v1) / dv;
404
+ fx = f1x + lerp * (f2x - f1x);
405
+ fy = f1y + lerp * (f2y - f1y);
406
+ fz = f1z + lerp * (f2z - f1z);
407
+ }
408
+ }
409
+ else {
410
+ fx = (ix + (ox1 + ox2) * 0.5) * inv_nx - center_offset;
411
+ fy = (iy + (oy1 + oy2) * 0.5) * inv_ny - center_offset;
412
+ fz = (iz + (oz1 + oz2) * 0.5) * inv_nz - center_offset;
413
+ }
414
+ // Transform to Cartesian (inlined)
415
+ const vert_idx = vertices.length;
416
+ vertices.push([
417
+ fx * kx0 + fy * ky0 + fz * kz0,
418
+ fx * kx1 + fy * ky1 + fz * kz1,
419
+ fx * kx2 + fy * ky2 + fz * kz2,
420
+ ]);
421
+ // Compute normal from grid gradient (skip if caller will compute from geometry)
422
+ if (compute_norms) {
423
+ normals.push(compute_gradient(grid, ix + ox1, iy + oy1, iz + oz1, nx, ny, nz, periodic));
424
+ }
425
+ vertex_cache.set(cache_key, vert_idx);
426
+ return vert_idx;
427
+ };
428
+ // Iterate over all cubes in the grid
429
+ const max_x = periodic ? nx : nx - 1;
430
+ const max_y = periodic ? ny : ny - 1;
431
+ const max_z = periodic ? nz : nz - 1;
432
+ // Preallocate cube_values array (reuse across iterations)
433
+ const cube_values = Array(8);
434
+ for (let ix = 0; ix < max_x; ix++) {
435
+ const ix_row = grid[ix];
436
+ const ix1_row = grid[(ix + 1) % nx];
437
+ for (let iy = 0; iy < max_y; iy++) {
438
+ const iy_col = ix_row[iy];
439
+ const iy1_col = ix_row[(iy + 1) % ny];
440
+ const ix1_iy_col = ix1_row[iy];
441
+ const ix1_iy1_col = ix1_row[(iy + 1) % ny];
442
+ for (let iz = 0; iz < max_z; iz++) {
443
+ const iz1 = (iz + 1) % nz;
444
+ // Get corner values (inlined for speed)
445
+ cube_values[0] = iy_col[iz];
446
+ cube_values[1] = ix1_iy_col[iz];
447
+ cube_values[2] = ix1_iy1_col[iz];
448
+ cube_values[3] = iy1_col[iz];
449
+ cube_values[4] = iy_col[iz1];
450
+ cube_values[5] = ix1_iy_col[iz1];
451
+ cube_values[6] = ix1_iy1_col[iz1];
452
+ cube_values[7] = iy1_col[iz1];
453
+ // Compute cube index (unrolled for speed)
454
+ let cube_index = 0;
455
+ if (cube_values[0] < iso_value)
456
+ cube_index |= 1;
457
+ if (cube_values[1] < iso_value)
458
+ cube_index |= 2;
459
+ if (cube_values[2] < iso_value)
460
+ cube_index |= 4;
461
+ if (cube_values[3] < iso_value)
462
+ cube_index |= 8;
463
+ if (cube_values[4] < iso_value)
464
+ cube_index |= 16;
465
+ if (cube_values[5] < iso_value)
466
+ cube_index |= 32;
467
+ if (cube_values[6] < iso_value)
468
+ cube_index |= 64;
469
+ if (cube_values[7] < iso_value)
470
+ cube_index |= 128;
471
+ // Skip if cube is entirely inside or outside
472
+ if (EDGE_TABLE[cube_index] === 0)
473
+ continue;
474
+ // Get triangles for this cube configuration
475
+ const tri_list = TRI_TABLE[cube_index];
476
+ const tri_len = tri_list.length;
477
+ // Create triangles
478
+ for (let tri_idx = 0; tri_idx < tri_len; tri_idx += 3) {
479
+ const v0 = get_vertex_on_edge(ix, iy, iz, tri_list[tri_idx], cube_values);
480
+ const v1 = get_vertex_on_edge(ix, iy, iz, tri_list[tri_idx + 1], cube_values);
481
+ const v2 = get_vertex_on_edge(ix, iy, iz, tri_list[tri_idx + 2], cube_values);
482
+ // Skip degenerate triangles
483
+ if (v0 !== v1 && v1 !== v2 && v0 !== v2) {
484
+ faces.push([v0, v1, v2]);
485
+ }
486
+ }
487
+ }
488
+ }
489
+ }
490
+ return { vertices, faces, normals };
491
+ }
492
+ // Compute per-vertex normals from faces using area-weighted averaging
493
+ // Uses fan triangulation for N-gon faces (quads, etc.)
494
+ export function compute_vertex_normals(vertices, faces) {
495
+ const normals = vertices.map(() => [0, 0, 0]);
496
+ for (const face of faces) {
497
+ // Validate face has at least 3 indices and all are within bounds
498
+ if (face.length < 3)
499
+ continue;
500
+ if (face.some((idx) => idx < 0 || idx >= vertices.length))
501
+ continue;
502
+ // Fan triangulation: for N vertices, process N-2 triangles (0,1,2), (0,2,3), ...
503
+ const v0 = vertices[face[0]];
504
+ for (let fan_idx = 1; fan_idx < face.length - 1; fan_idx++) {
505
+ const idx1 = face[fan_idx];
506
+ const idx2 = face[fan_idx + 1];
507
+ const v1 = vertices[idx1];
508
+ const v2 = vertices[idx2];
509
+ // Edge vectors
510
+ const e1 = [v1[0] - v0[0], v1[1] - v0[1], v1[2] - v0[2]];
511
+ const e2 = [v2[0] - v0[0], v2[1] - v0[1], v2[2] - v0[2]];
512
+ // Cross product (face normal * 2 * area)
513
+ const normal = [
514
+ e1[1] * e2[2] - e1[2] * e2[1],
515
+ e1[2] * e2[0] - e1[0] * e2[2],
516
+ e1[0] * e2[1] - e1[1] * e2[0],
517
+ ];
518
+ // Add to the 3 vertices of this triangle
519
+ normals[face[0]][0] += normal[0];
520
+ normals[face[0]][1] += normal[1];
521
+ normals[face[0]][2] += normal[2];
522
+ normals[idx1][0] += normal[0];
523
+ normals[idx1][1] += normal[1];
524
+ normals[idx1][2] += normal[2];
525
+ normals[idx2][0] += normal[0];
526
+ normals[idx2][1] += normal[1];
527
+ normals[idx2][2] += normal[2];
528
+ }
529
+ }
530
+ // Normalize all normals
531
+ for (const normal of normals) {
532
+ const len = Math.hypot(normal[0], normal[1], normal[2]);
533
+ if (len > 0) {
534
+ normal[0] /= len;
535
+ normal[1] /= len;
536
+ normal[2] /= len;
537
+ }
538
+ }
539
+ return normals;
540
+ }
package/dist/math.d.ts ADDED
@@ -0,0 +1,101 @@
1
+ import type { LatticeParams, Pbc } from './structure/index';
2
+ export type Vec2 = [number, number];
3
+ export type Vec3 = [number, number, number];
4
+ export type Vec4 = [number, number, number, number];
5
+ export type Vec9 = [number, number, number, number, number, number, number, number, number];
6
+ export type Point2D = {
7
+ x: number;
8
+ y: number;
9
+ };
10
+ export type Point3D = Point2D & {
11
+ z: number;
12
+ };
13
+ export type Matrix3x3 = [Vec3, Vec3, Vec3];
14
+ export type Matrix4x4 = [Vec4, Vec4, Vec4, Vec4];
15
+ export type NdVector = number[];
16
+ export declare const is_finite_vec3_like: (values: ArrayLike<unknown> | undefined) => values is ArrayLike<number>;
17
+ export declare const finite_vec3_from_values: (values: ArrayLike<unknown> | undefined) => Vec3 | undefined;
18
+ export type Matrix4Tuple = [
19
+ number,
20
+ number,
21
+ number,
22
+ number,
23
+ number,
24
+ number,
25
+ number,
26
+ number,
27
+ number,
28
+ number,
29
+ number,
30
+ number,
31
+ number,
32
+ number,
33
+ number,
34
+ number
35
+ ];
36
+ export declare function combinations<T>(arr: T[], k: number): T[][];
37
+ export declare const LOG_EPS = 1e-9;
38
+ export declare const EPS = 1e-10;
39
+ export declare const RAD_TO_DEG: number;
40
+ export declare const DEG_TO_RAD: number;
41
+ export declare const to_degrees: (radians: number) => number;
42
+ export declare const to_radians: (degrees: number) => number;
43
+ export declare function calc_lattice_params(matrix: Matrix3x3): LatticeParams & {
44
+ volume: number;
45
+ };
46
+ export declare const scale: <T extends NdVector>(vec: T, factor: number) => T;
47
+ export declare const euclidean_dist: (vec1: NdVector, vec2: NdVector) => number;
48
+ export declare function min_image_displacement(from: Vec3, to: Vec3, lattice_matrix: Matrix3x3, converters?: LatticeConverters, pbc?: Pbc): Vec3;
49
+ export declare const pbc_dist: (pos1: Vec3, pos2: Vec3, lattice_matrix: Matrix3x3, converters?: LatticeConverters, pbc?: Pbc) => number;
50
+ export declare function matrix_inverse_3x3(matrix: Matrix3x3): Matrix3x3;
51
+ export declare function mat3x3_vec3_multiply(matrix: Matrix3x3, vector: Vec3): Vec3;
52
+ export declare function add<T extends NdVector>(...vecs: T[]): T;
53
+ export declare function subtract<T extends NdVector>(vec1: T, vec2: T): T;
54
+ export declare function dot(vec1: NdVector, vec2: NdVector): number;
55
+ export declare function dot(vec1: NdVector[], vec2: NdVector): number[];
56
+ export declare function dot(vec1: NdVector[], vec2: NdVector[]): number[][];
57
+ export declare function to_voigt(tensor: number[][]): number[];
58
+ export declare function from_voigt(voigt: number[]): number[][];
59
+ export declare function vec9_to_mat3x3(flat_array: number[]): number[][];
60
+ export declare function tensor_to_flat_array(tensor: number[][]): number[];
61
+ export declare const transpose_3x3_matrix: (matrix: Matrix3x3) => Matrix3x3;
62
+ export declare function scale_lattice_matrix(orig_matrix: Matrix3x3, scaling_factors: Vec3): Matrix3x3;
63
+ export declare const create_frac_to_cart: (lattice: Matrix3x3) => (frac: Vec3) => Vec3;
64
+ export declare const create_cart_to_frac: (lattice: Matrix3x3) => (cart: Vec3) => Vec3;
65
+ export type LatticeConverters = {
66
+ cart_to_frac: (v: Vec3) => Vec3;
67
+ frac_to_cart: (v: Vec3) => Vec3;
68
+ reciprocal_axis_norms: Vec3;
69
+ };
70
+ export declare const create_lattice_converters: (lattice: Matrix3x3) => LatticeConverters;
71
+ export declare function cell_to_lattice_matrix(a: number, b: number, c: number, alpha: number, beta: number, gamma: number): Matrix3x3;
72
+ export declare function det_3x3(matrix: Matrix3x3): number;
73
+ export declare function get_coefficient_of_variation(values: number[]): number;
74
+ export declare function det_4x4(matrix: Matrix4x4): number;
75
+ export declare function det_nxn(matrix: number[][]): number;
76
+ export declare const cross_3d: (vec1: Vec3, vec2: Vec3) => Vec3;
77
+ export declare const lerp: (start: number, end: number, t: number) => number;
78
+ export declare const lerp_vec3: (start: Vec3, end: Vec3, t: number) => Vec3;
79
+ export declare const centered_frac: (val: number) => number;
80
+ export declare const vecs_equal: (vec_a?: Vec3, vec_b?: Vec3) => boolean;
81
+ export declare function normalize_vec3(vec: Vec3, fallback?: Vec3): Vec3;
82
+ export declare function compute_in_plane_basis(normal: Vec3): [Vec3, Vec3];
83
+ export declare function are_coplanar(points: number[][], tolerance?: number): boolean;
84
+ export declare function merge_coplanar_triangles(positions: Float32Array, tolerance?: number): Float32Array;
85
+ export declare function compute_bounding_box(vertices: Vec3[]): {
86
+ min: Vec3;
87
+ max: Vec3;
88
+ };
89
+ export declare function is_square_matrix(matrix: unknown, dim: number): boolean;
90
+ export declare function point_in_polygon(point_x: number, point_y: number, vertices: Vec2[]): boolean;
91
+ export declare function compute_bounding_box_2d(vertices: Vec2[]): {
92
+ min: Vec2;
93
+ max: Vec2;
94
+ width: number;
95
+ height: number;
96
+ };
97
+ export declare function polygon_centroid(vertices: Vec2[]): Vec2;
98
+ export declare function solve_linear_system(A: number[][], // NxN coefficient matrix
99
+ b: number[]): number[] | null;
100
+ export declare const cross_2d: (origin: Vec2, point_a: Vec2, point_b: Vec2) => number;
101
+ export declare function convex_hull_2d(points: Vec2[]): Vec2[];