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,535 @@
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
+ // Cache keys use UNWRAPPED grid coords (reach n in periodic mode, hence radix n+1):
339
+ // wrapping would merge vertices on opposite cell faces into cell-spanning triangles.
340
+ const key_nz = nz + 1;
341
+ const key_ny_nz = (ny + 1) * key_nz;
342
+ const max_flat = (nx + 1) * key_ny_nz; // for computing cache keys
343
+ // Use numeric cache key - safe for grids up to ~300³ (2^53 / 2 / max_flat)
344
+ // For much larger grids (>30M cells), consider switching to Map<string, number>
345
+ // with keys like `${flat1},${flat2}` or Map<bigint, number> to avoid
346
+ // Number.MAX_SAFE_INTEGER limits. The current approach is faster for typical grids.
347
+ if (max_flat > 30_000_000) {
348
+ console.warn(`Grid size ${nx}×${ny}×${nz} may cause cache key overflow`);
349
+ }
350
+ const vertex_cache = new Map();
351
+ // Precompute k_lattice values for faster coordinate transform
352
+ const [kx0, kx1, kx2] = k_lattice[0];
353
+ const [ky0, ky1, ky2] = k_lattice[1];
354
+ const [kz0, kz1, kz2] = k_lattice[2];
355
+ // Precompute inverse grid sizes for fractional coordinate conversion.
356
+ // Non-periodic grids: n points span [0,1] with spacing 1/(n-1) — endpoints at 0 and 1.
357
+ // Periodic grids: n points span [0,1) with spacing 1/n — point n wraps back to 0.
358
+ const inv_nx = 1 / (periodic ? nx : nx - 1);
359
+ const inv_ny = 1 / (periodic ? ny : ny - 1);
360
+ const inv_nz = 1 / (periodic ? nz : nz - 1);
361
+ // Get or create vertex on an edge (fully optimized with flat array lookups)
362
+ const get_vertex_on_edge = (ix, iy, iz, edge_idx, cube_values) => {
363
+ // Use flat arrays instead of destructuring
364
+ const v1_idx = EDGE_V1[edge_idx];
365
+ const v2_idx = EDGE_V2[edge_idx];
366
+ const ox1 = CUBE_VERTS_X[v1_idx];
367
+ const oy1 = CUBE_VERTS_Y[v1_idx];
368
+ const oz1 = CUBE_VERTS_Z[v1_idx];
369
+ const ox2 = CUBE_VERTS_X[v2_idx];
370
+ const oy2 = CUBE_VERTS_Y[v2_idx];
371
+ const oz2 = CUBE_VERTS_Z[v2_idx];
372
+ // Sorted numeric key from UNWRAPPED coords (value/gradient lookups wrap internally).
373
+ // Safe for grids up to ~300³ before exceeding Number.MAX_SAFE_INTEGER
374
+ const flat1 = (ix + ox1) * key_ny_nz + (iy + oy1) * key_nz + (iz + oz1);
375
+ const flat2 = (ix + ox2) * key_ny_nz + (iy + oy2) * key_nz + (iz + oz2);
376
+ const cache_key = flat1 < flat2 ? flat1 * max_flat + flat2 : flat2 * max_flat + flat1;
377
+ const cached = vertex_cache.get(cache_key);
378
+ if (cached !== undefined)
379
+ return cached;
380
+ // Compute vertex position
381
+ const v1 = cube_values[v1_idx];
382
+ const v2 = cube_values[v2_idx];
383
+ let fx, fy, fz;
384
+ if (interpolate) {
385
+ const f1x = (ix + ox1) * inv_nx - center_offset;
386
+ const f1y = (iy + oy1) * inv_ny - center_offset;
387
+ const f1z = (iz + oz1) * inv_nz - center_offset;
388
+ const f2x = (ix + ox2) * inv_nx - center_offset;
389
+ const f2y = (iy + oy2) * inv_ny - center_offset;
390
+ const f2z = (iz + oz2) * inv_nz - center_offset;
391
+ const dv = v2 - v1;
392
+ if (Math.abs(dv) < 1e-10) {
393
+ fx = f1x;
394
+ fy = f1y;
395
+ fz = f1z;
396
+ }
397
+ else {
398
+ const lerp = (iso_value - v1) / dv;
399
+ fx = f1x + lerp * (f2x - f1x);
400
+ fy = f1y + lerp * (f2y - f1y);
401
+ fz = f1z + lerp * (f2z - f1z);
402
+ }
403
+ }
404
+ else {
405
+ fx = (ix + (ox1 + ox2) * 0.5) * inv_nx - center_offset;
406
+ fy = (iy + (oy1 + oy2) * 0.5) * inv_ny - center_offset;
407
+ fz = (iz + (oz1 + oz2) * 0.5) * inv_nz - center_offset;
408
+ }
409
+ // Transform to Cartesian (inlined)
410
+ const vert_idx = vertices.length;
411
+ vertices.push([
412
+ fx * kx0 + fy * ky0 + fz * kz0,
413
+ fx * kx1 + fy * ky1 + fz * kz1,
414
+ fx * kx2 + fy * ky2 + fz * kz2,
415
+ ]);
416
+ // Compute normal from grid gradient (skip if caller will compute from geometry)
417
+ if (compute_norms) {
418
+ normals.push(compute_gradient(grid, ix + ox1, iy + oy1, iz + oz1, nx, ny, nz, periodic));
419
+ }
420
+ vertex_cache.set(cache_key, vert_idx);
421
+ return vert_idx;
422
+ };
423
+ // Iterate over all cubes in the grid
424
+ const max_x = periodic ? nx : nx - 1;
425
+ const max_y = periodic ? ny : ny - 1;
426
+ const max_z = periodic ? nz : nz - 1;
427
+ // Preallocate cube_values array (reuse across iterations)
428
+ const cube_values = Array(8);
429
+ for (let ix = 0; ix < max_x; ix++) {
430
+ const ix_row = grid[ix];
431
+ const ix1_row = grid[(ix + 1) % nx];
432
+ for (let iy = 0; iy < max_y; iy++) {
433
+ const iy_col = ix_row[iy];
434
+ const iy1_col = ix_row[(iy + 1) % ny];
435
+ const ix1_iy_col = ix1_row[iy];
436
+ const ix1_iy1_col = ix1_row[(iy + 1) % ny];
437
+ for (let iz = 0; iz < max_z; iz++) {
438
+ const iz1 = (iz + 1) % nz;
439
+ // Get corner values (inlined for speed)
440
+ cube_values[0] = iy_col[iz];
441
+ cube_values[1] = ix1_iy_col[iz];
442
+ cube_values[2] = ix1_iy1_col[iz];
443
+ cube_values[3] = iy1_col[iz];
444
+ cube_values[4] = iy_col[iz1];
445
+ cube_values[5] = ix1_iy_col[iz1];
446
+ cube_values[6] = ix1_iy1_col[iz1];
447
+ cube_values[7] = iy1_col[iz1];
448
+ // Compute cube index (unrolled for speed)
449
+ let cube_index = 0;
450
+ if (cube_values[0] < iso_value)
451
+ cube_index |= 1;
452
+ if (cube_values[1] < iso_value)
453
+ cube_index |= 2;
454
+ if (cube_values[2] < iso_value)
455
+ cube_index |= 4;
456
+ if (cube_values[3] < iso_value)
457
+ cube_index |= 8;
458
+ if (cube_values[4] < iso_value)
459
+ cube_index |= 16;
460
+ if (cube_values[5] < iso_value)
461
+ cube_index |= 32;
462
+ if (cube_values[6] < iso_value)
463
+ cube_index |= 64;
464
+ if (cube_values[7] < iso_value)
465
+ cube_index |= 128;
466
+ // Skip if cube is entirely inside or outside
467
+ if (EDGE_TABLE[cube_index] === 0)
468
+ continue;
469
+ // Get triangles for this cube configuration
470
+ const tri_list = TRI_TABLE[cube_index];
471
+ const tri_len = tri_list.length;
472
+ // Create triangles
473
+ for (let tri_idx = 0; tri_idx < tri_len; tri_idx += 3) {
474
+ const v0 = get_vertex_on_edge(ix, iy, iz, tri_list[tri_idx], cube_values);
475
+ const v1 = get_vertex_on_edge(ix, iy, iz, tri_list[tri_idx + 1], cube_values);
476
+ const v2 = get_vertex_on_edge(ix, iy, iz, tri_list[tri_idx + 2], cube_values);
477
+ // Skip degenerate triangles
478
+ if (v0 !== v1 && v1 !== v2 && v0 !== v2) {
479
+ faces.push([v0, v1, v2]);
480
+ }
481
+ }
482
+ }
483
+ }
484
+ }
485
+ return { vertices, faces, normals };
486
+ }
487
+ // Compute per-vertex normals from faces using area-weighted averaging
488
+ // Uses fan triangulation for N-gon faces (quads, etc.)
489
+ export function compute_vertex_normals(vertices, faces) {
490
+ const normals = vertices.map(() => [0, 0, 0]);
491
+ for (const face of faces) {
492
+ // Validate face has at least 3 indices and all are within bounds
493
+ if (face.length < 3)
494
+ continue;
495
+ if (face.some((idx) => idx < 0 || idx >= vertices.length))
496
+ continue;
497
+ // Fan triangulation: for N vertices, process N-2 triangles (0,1,2), (0,2,3), ...
498
+ const v0 = vertices[face[0]];
499
+ for (let fan_idx = 1; fan_idx < face.length - 1; fan_idx++) {
500
+ const idx1 = face[fan_idx];
501
+ const idx2 = face[fan_idx + 1];
502
+ const v1 = vertices[idx1];
503
+ const v2 = vertices[idx2];
504
+ // Edge vectors
505
+ const e1 = [v1[0] - v0[0], v1[1] - v0[1], v1[2] - v0[2]];
506
+ const e2 = [v2[0] - v0[0], v2[1] - v0[1], v2[2] - v0[2]];
507
+ // Cross product (face normal * 2 * area)
508
+ const normal = [
509
+ e1[1] * e2[2] - e1[2] * e2[1],
510
+ e1[2] * e2[0] - e1[0] * e2[2],
511
+ e1[0] * e2[1] - e1[1] * e2[0],
512
+ ];
513
+ // Add to the 3 vertices of this triangle
514
+ normals[face[0]][0] += normal[0];
515
+ normals[face[0]][1] += normal[1];
516
+ normals[face[0]][2] += normal[2];
517
+ normals[idx1][0] += normal[0];
518
+ normals[idx1][1] += normal[1];
519
+ normals[idx1][2] += normal[2];
520
+ normals[idx2][0] += normal[0];
521
+ normals[idx2][1] += normal[1];
522
+ normals[idx2][2] += normal[2];
523
+ }
524
+ }
525
+ // Normalize all normals
526
+ for (const normal of normals) {
527
+ const len = Math.hypot(normal[0], normal[1], normal[2]);
528
+ if (len > 0) {
529
+ normal[0] /= len;
530
+ normal[1] /= len;
531
+ normal[2] /= len;
532
+ }
533
+ }
534
+ return normals;
535
+ }
package/dist/math.d.ts ADDED
@@ -0,0 +1,105 @@
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
+ type Normalized<T extends readonly number[]> = {
82
+ -readonly [K in keyof T]: number;
83
+ };
84
+ export declare function normalize_vec<T extends readonly number[]>(vec: T, fallback?: NoInfer<T>): Normalized<T>;
85
+ export declare function compute_in_plane_basis(normal: Vec3): [Vec3, Vec3];
86
+ export declare function are_coplanar(points: number[][], tolerance?: number): boolean;
87
+ export declare function merge_coplanar_triangles(positions: Float32Array, tolerance?: number): Float32Array;
88
+ export declare function compute_bounding_box(vertices: Vec3[]): {
89
+ min: Vec3;
90
+ max: Vec3;
91
+ };
92
+ export declare function is_square_matrix(matrix: unknown, dim: number): boolean;
93
+ export declare function point_in_polygon(point_x: number, point_y: number, vertices: Vec2[]): boolean;
94
+ export declare function compute_bounding_box_2d(vertices: Vec2[]): {
95
+ min: Vec2;
96
+ max: Vec2;
97
+ width: number;
98
+ height: number;
99
+ };
100
+ export declare function polygon_centroid(vertices: Vec2[]): Vec2;
101
+ export declare function solve_linear_system(A: number[][], // NxN coefficient matrix
102
+ b: number[]): number[] | null;
103
+ export declare const cross_2d: (origin: Vec2, point_a: Vec2, point_b: Vec2) => number;
104
+ export declare function convex_hull_2d(points: Vec2[]): Vec2[];
105
+ export {};