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,123 @@
1
+ import { load_binary_traj } from '../trajectory/parse';
2
+ const BINARY_EXTENSIONS = new Set(`h5 hdf5 traj npz pkl dat gz gzip zip bz2 xz brml`.split(` `));
3
+ const TEXT_EXTENSIONS = new Set(`xyz extxyz json cif poscar yaml yml txt md py js ts css html xml`.split(` `));
4
+ const VASP_BASENAME_RE = /^(poscar|xdatcar|contcar)$/i;
5
+ // Extract filename from Content-Disposition header, falling back to url_basename.
6
+ function extract_filename(headers, fallback) {
7
+ if (!headers)
8
+ return fallback;
9
+ const content_disposition_str = headers.get(`content-disposition`);
10
+ if (!content_disposition_str)
11
+ return fallback;
12
+ const star_match = /filename\*=(?:UTF-8''|)([^;]+)/i.exec(content_disposition_str);
13
+ if (star_match?.[1]) {
14
+ const raw = star_match[1].trim().replace(/^"|"$/g, ``);
15
+ try {
16
+ return decodeURIComponent(raw);
17
+ }
18
+ catch {
19
+ return raw;
20
+ }
21
+ }
22
+ const plain_match = /filename\s*=\s*"?([^";]+)"?/i.exec(content_disposition_str);
23
+ return plain_match?.[1]?.trim() || fallback;
24
+ }
25
+ // Handle URL-based file drop data by fetching content lazily
26
+ export async function handle_url_drop(drag_event, callback) {
27
+ const json_data = drag_event.dataTransfer?.getData(`application/json`);
28
+ if (!json_data)
29
+ return false;
30
+ let file_info;
31
+ try {
32
+ file_info = JSON.parse(json_data);
33
+ }
34
+ catch {
35
+ return false;
36
+ }
37
+ if (!file_info.url)
38
+ return false;
39
+ await load_from_url(file_info.url, callback);
40
+ return true;
41
+ }
42
+ export async function load_from_url(url, callback) {
43
+ const url_basename = url.split(`/`).pop() || url;
44
+ const ext = url_basename.split(`.`).pop()?.toLowerCase() || ``;
45
+ if (BINARY_EXTENSIONS.has(ext)) {
46
+ // Force binary mode for known binary files to handle GitHub Pages content-type issues
47
+ const resp = await fetch(url);
48
+ if (!resp.ok)
49
+ throw new Error(`Fetch failed: ${resp.status}`);
50
+ const filename = extract_filename(resp.headers, url_basename);
51
+ // Handle gzipped files with proper content-encoding detection
52
+ if (ext === `gz` || ext === `gzip`) {
53
+ if (resp.headers.get(`content-encoding`) === `gzip`) {
54
+ // Browser automatically decompressed it, so it's text
55
+ return callback(await resp.text(), filename);
56
+ }
57
+ else {
58
+ // Need to decompress manually
59
+ const { decompress_data } = await import(`./decompress`);
60
+ const buffer = await resp.arrayBuffer();
61
+ const content = await decompress_data(buffer, `gzip`);
62
+ // Remove .gz extension when manually decompressing
63
+ return callback(content, filename.replace(/\.gz$/, ``));
64
+ }
65
+ }
66
+ // For H5 files, always load as binary regardless of signature
67
+ // to handle files that have .h5/.hdf5 extensions but may not have the proper HDF5 signature
68
+ if (ext === `h5` || ext === `hdf5`) {
69
+ const result = await load_binary_traj(resp, `H5`, true);
70
+ // Log warning if signature doesn't match (only for ArrayBuffer results)
71
+ if (result instanceof ArrayBuffer && result.byteLength >= 8) {
72
+ const view = new Uint8Array(result.slice(0, 8));
73
+ const hdf5_signature = [0x89, 0x48, 0x44, 0x46, 0x0d, 0x0a, 0x1a, 0x0a];
74
+ if (!hdf5_signature.every((byte, idx) => view[idx] === byte)) {
75
+ console.warn(`File has .h5/.hdf5 extension but missing HDF5 signature`);
76
+ }
77
+ }
78
+ return callback(result, filename);
79
+ }
80
+ // For .traj files, ensure we always get ArrayBuffer for proper ASE parsing
81
+ if (ext === `traj`) {
82
+ const buffer = await load_binary_traj(resp, `.traj`);
83
+ return callback(buffer, filename);
84
+ }
85
+ if (resp.headers.get(`content-encoding`) === `gzip`) {
86
+ return callback(await resp.text(), filename);
87
+ }
88
+ return callback(await resp.arrayBuffer(), filename);
89
+ }
90
+ // Skip Range requests for known text formats to avoid production server issues
91
+ // Include VASP files that don't have extensions (POSCAR, XDATCAR, CONTCAR)
92
+ const is_known_text = TEXT_EXTENSIONS.has(ext) || VASP_BASENAME_RE.test(url_basename);
93
+ let binary_callback_args;
94
+ if (!is_known_text) {
95
+ try {
96
+ // Check for magic bytes only for unknown formats
97
+ const head = await fetch(url, { headers: { Range: `bytes=0-15` } });
98
+ if (head.ok) {
99
+ const buf = new Uint8Array(await head.arrayBuffer());
100
+ const is_gzip = buf[0] === 0x1f && buf[1] === 0x8b;
101
+ const is_hdf5 = buf[0] === 0x89 && buf[1] === 0x48 && buf[2] === 0x44 && buf[3] === 0x46;
102
+ if (is_gzip || is_hdf5) {
103
+ const resp = await fetch(url);
104
+ if (!resp.ok)
105
+ throw new Error(`Fetch failed: ${resp.status}`);
106
+ binary_callback_args = [
107
+ await resp.arrayBuffer(),
108
+ extract_filename(resp.headers, url_basename),
109
+ ];
110
+ }
111
+ }
112
+ }
113
+ catch {
114
+ // Fall through to text fetch if HEAD request fails
115
+ }
116
+ }
117
+ if (binary_callback_args)
118
+ return callback(...binary_callback_args);
119
+ const resp = await fetch(url);
120
+ if (!resp.ok)
121
+ throw new Error(`Fetch failed: ${resp.status}`);
122
+ return callback(await resp.text(), extract_filename(resp.headers, url_basename));
123
+ }
@@ -0,0 +1,285 @@
1
+ <script lang="ts">
2
+ // Threlte component that renders isosurface meshes from volumetric data using marching cubes.
3
+ // Supports multiple layers at different isovalues with independent colors,
4
+ // plus positive/negative lobes and two-pass transparency.
5
+ import { marching_cubes } from '../marching-cubes'
6
+ import type { Matrix3x3, Vec3 } from '../math'
7
+ import { T } from '@threlte/core'
8
+ import {
9
+ BackSide,
10
+ BufferAttribute,
11
+ BufferGeometry,
12
+ DoubleSide,
13
+ FrontSide,
14
+ Uint32BufferAttribute,
15
+ } from 'three'
16
+ import type { IsosurfaceLayer, IsosurfaceSettings, VolumetricData } from './types'
17
+ import {
18
+ DEFAULT_ISOSURFACE_SETTINGS,
19
+ downsample_grid,
20
+ pad_periodic_grid,
21
+ } from './types'
22
+
23
+ let { volume, settings = DEFAULT_ISOSURFACE_SETTINGS }: {
24
+ volume: VolumetricData
25
+ settings?: IsosurfaceSettings
26
+ } = $props()
27
+
28
+ // Resolve layers: use explicit layers array if provided, else build from single-isovalue settings
29
+ let resolved_layers = $derived.by((): IsosurfaceLayer[] => {
30
+ if (settings.layers?.length) return settings.layers
31
+ return [{
32
+ isovalue: settings.isovalue,
33
+ color: settings.positive_color,
34
+ opacity: settings.opacity,
35
+ visible: true,
36
+ show_negative: settings.show_negative,
37
+ negative_color: settings.negative_color,
38
+ }]
39
+ })
40
+
41
+ // Build indexed BufferGeometry from marching cubes output.
42
+ // Uses Three.js index buffer to avoid tripling vertex data, and
43
+ // computeVertexNormals() for fast GPU-friendly normals.
44
+ function build_geometry(
45
+ vertices: Vec3[],
46
+ faces: number[][],
47
+ ): BufferGeometry | null {
48
+ if (vertices.length === 0 || faces.length === 0) return null
49
+
50
+ // Flatten vertices: Vec3[] → Float32Array
51
+ const positions = new Float32Array(vertices.length * 3)
52
+ for (let idx = 0; idx < vertices.length; idx++) {
53
+ const vert = vertices[idx]
54
+ positions[idx * 3] = vert[0]
55
+ positions[idx * 3 + 1] = vert[1]
56
+ positions[idx * 3 + 2] = vert[2]
57
+ }
58
+
59
+ // Flatten face indices: number[][] → Uint32Array
60
+ const indices = new Uint32Array(faces.length * 3)
61
+ for (let idx = 0; idx < faces.length; idx++) {
62
+ const face = faces[idx]
63
+ indices[idx * 3] = face[0]
64
+ indices[idx * 3 + 1] = face[1]
65
+ indices[idx * 3 + 2] = face[2]
66
+ }
67
+
68
+ const geometry = new BufferGeometry()
69
+ geometry.setAttribute(`position`, new BufferAttribute(positions, 3))
70
+ geometry.setIndex(new Uint32BufferAttribute(indices, 1))
71
+ geometry.computeVertexNormals()
72
+ geometry.computeBoundingSphere()
73
+ return geometry
74
+ }
75
+
76
+ // Downsample large grids once when volume changes to keep marching cubes interactive
77
+ let ds_result = $derived.by(() => {
78
+ if (!volume) return undefined
79
+ return downsample_grid(volume.grid, volume.grid_dims)
80
+ })
81
+
82
+ // Run marching cubes at the given isovalue with pre-prepared grid/lattice/shift.
83
+ function extract_surface(
84
+ isovalue: number,
85
+ mc_grid: number[][][],
86
+ mc_lattice: Matrix3x3,
87
+ origin_shift: Vec3 | null,
88
+ ): BufferGeometry | null {
89
+ if (isovalue === 0) return null
90
+
91
+ const result = marching_cubes(mc_grid, isovalue, mc_lattice, {
92
+ periodic: false,
93
+ interpolate: true,
94
+ centered: false,
95
+ normals: false,
96
+ })
97
+
98
+ if (origin_shift) {
99
+ for (const vert of result.vertices) {
100
+ vert[0] += origin_shift[0]
101
+ vert[1] += origin_shift[1]
102
+ vert[2] += origin_shift[2]
103
+ }
104
+ }
105
+
106
+ return build_geometry(result.vertices, result.faces)
107
+ }
108
+
109
+ // === Multi-layer geometry management ===
110
+ // Each layer produces up to 2 geometries (positive + optional negative lobe).
111
+ // Keyed by "layer_idx:sign" for cache invalidation.
112
+ type GeoEntry = {
113
+ geometry: BufferGeometry
114
+ color: string
115
+ opacity: number
116
+ render_order: number
117
+ }
118
+ let active_geometries = $state<GeoEntry[]>([])
119
+ let raf_id = 0
120
+ let debounce_id = 0
121
+
122
+ // Dispose all current geometries
123
+ function dispose_all() {
124
+ for (const entry of active_geometries) entry.geometry.dispose()
125
+ active_geometries = []
126
+ }
127
+
128
+ // Dispose on unmount
129
+ $effect(() => () => dispose_all())
130
+
131
+ function rebuild_geometries(layers: IsosurfaceLayer[]) {
132
+ if (!volume || !ds_result) return
133
+ const old = active_geometries
134
+ const entries: GeoEntry[] = []
135
+
136
+ // Prepare grid/lattice/shift once for all layers.
137
+ // When halo > 0 for periodic volumes, the downsampled grid is padded with
138
+ // halo cells from the opposite face so isosurfaces extend beyond the unit
139
+ // cell and close into complete enclosed shapes around boundary atoms.
140
+ let mc_grid = ds_result.grid
141
+ let mc_lattice: Matrix3x3 = volume.lattice
142
+ let origin_shift: Vec3 | null = null
143
+
144
+ if (settings.halo > 0 && volume.periodic) {
145
+ const padded = pad_periodic_grid(ds_result.grid, ds_result.dims, settings.halo)
146
+ mc_grid = padded.grid
147
+ // marching_cubes maps [0,1] fractional -> Cartesian via lattice.
148
+ // The padded grid covers a wider fractional range, so scale the lattice
149
+ // to match. Then shift all vertices by the fractional offset.
150
+ const [la, lb, lc] = volume.lattice
151
+ const sx = padded.dims[0] / ds_result.dims[0]
152
+ const sy = padded.dims[1] / ds_result.dims[1]
153
+ const sz = padded.dims[2] / ds_result.dims[2]
154
+ mc_lattice = [
155
+ [la[0] * sx, la[1] * sx, la[2] * sx],
156
+ [lb[0] * sy, lb[1] * sy, lb[2] * sy],
157
+ [lc[0] * sz, lc[1] * sz, lc[2] * sz],
158
+ ]
159
+ const [ox, oy, oz] = padded.offset
160
+ origin_shift = [
161
+ ox * la[0] + oy * lb[0] + oz * lc[0],
162
+ ox * la[1] + oy * lb[1] + oz * lc[1],
163
+ ox * la[2] + oy * lb[2] + oz * lc[2],
164
+ ]
165
+ }
166
+
167
+ const surface_at = (isovalue: number) =>
168
+ extract_surface(isovalue, mc_grid, mc_lattice, origin_shift)
169
+
170
+ // Render lower-isovalue (outer) shells earlier so per-layer back/front passes
171
+ // interleave back-to-front across shells and reduce transparency artefacts.
172
+ const layer_render_rank = new Map<number, number>(
173
+ layers
174
+ .map((layer, layer_idx) => ({ layer_idx, isovalue: layer.isovalue }))
175
+ .sort((layer_a, layer_b) => layer_a.isovalue - layer_b.isovalue)
176
+ .map(({ layer_idx }, rank) => [layer_idx, rank]),
177
+ )
178
+
179
+ for (let layer_idx = 0; layer_idx < layers.length; layer_idx++) {
180
+ const layer = layers[layer_idx]
181
+ if (!layer.visible || layer.isovalue <= 0) continue
182
+
183
+ // Each layer gets 4 slots (positive back/front + negative back/front).
184
+ const base_order = (layer_render_rank.get(layer_idx) ?? layer_idx) * 4
185
+
186
+ const pos_geo = surface_at(layer.isovalue)
187
+ if (pos_geo) {
188
+ entries.push({
189
+ geometry: pos_geo,
190
+ color: layer.color,
191
+ opacity: layer.opacity,
192
+ render_order: base_order,
193
+ })
194
+ }
195
+
196
+ if (layer.show_negative) {
197
+ const neg_geo = surface_at(-layer.isovalue)
198
+ if (neg_geo) {
199
+ entries.push({
200
+ geometry: neg_geo,
201
+ color: layer.negative_color,
202
+ opacity: layer.opacity,
203
+ render_order: base_order + 2,
204
+ })
205
+ }
206
+ }
207
+ }
208
+
209
+ active_geometries = entries
210
+ for (const entry of old) entry.geometry.dispose()
211
+ }
212
+
213
+ // Rebuild all layer geometries when layers or volume change.
214
+ // Debounces rapid changes (e.g. slider drags) to avoid repeated expensive marching cubes.
215
+ $effect(() => {
216
+ const layers = resolved_layers
217
+ void settings.halo
218
+ if (!ds_result) {
219
+ dispose_all()
220
+ return
221
+ }
222
+ debounce_id = window.setTimeout(() => {
223
+ raf_id = requestAnimationFrame(() => rebuild_geometries(layers))
224
+ }, 50)
225
+ return () => {
226
+ clearTimeout(debounce_id)
227
+ cancelAnimationFrame(raf_id)
228
+ }
229
+ })
230
+ </script>
231
+
232
+ <!-- Render each geometry entry with appropriate material -->
233
+ {#each active_geometries as entry (entry)}
234
+ {#if settings.wireframe}
235
+ <T.Mesh geometry={entry.geometry} frustumCulled={false}>
236
+ <T.MeshBasicMaterial
237
+ color={entry.color}
238
+ wireframe
239
+ transparent={entry.opacity < 1}
240
+ opacity={entry.opacity}
241
+ />
242
+ </T.Mesh>
243
+ {:else if entry.opacity < 1}
244
+ <!-- Two-pass rendering for correct transparency -->
245
+ <T.Mesh
246
+ geometry={entry.geometry}
247
+ renderOrder={entry.render_order}
248
+ frustumCulled={false}
249
+ >
250
+ <T.MeshStandardMaterial
251
+ color={entry.color}
252
+ transparent
253
+ opacity={entry.opacity}
254
+ side={BackSide}
255
+ depthWrite={false}
256
+ metalness={0.1}
257
+ roughness={0.6}
258
+ />
259
+ </T.Mesh>
260
+ <T.Mesh
261
+ geometry={entry.geometry}
262
+ renderOrder={entry.render_order + 1}
263
+ frustumCulled={false}
264
+ >
265
+ <T.MeshStandardMaterial
266
+ color={entry.color}
267
+ transparent
268
+ opacity={entry.opacity}
269
+ side={FrontSide}
270
+ depthWrite={false}
271
+ metalness={0.1}
272
+ roughness={0.6}
273
+ />
274
+ </T.Mesh>
275
+ {:else}
276
+ <T.Mesh geometry={entry.geometry} frustumCulled={false}>
277
+ <T.MeshStandardMaterial
278
+ color={entry.color}
279
+ side={DoubleSide}
280
+ metalness={0.1}
281
+ roughness={0.6}
282
+ />
283
+ </T.Mesh>
284
+ {/if}
285
+ {/each}
@@ -0,0 +1,8 @@
1
+ import type { IsosurfaceSettings, VolumetricData } from './types';
2
+ type $$ComponentProps = {
3
+ volume: VolumetricData;
4
+ settings?: IsosurfaceSettings;
5
+ };
6
+ declare const Isosurface: import("svelte").Component<$$ComponentProps, {}, "">;
7
+ type Isosurface = ReturnType<typeof Isosurface>;
8
+ export default Isosurface;
@@ -0,0 +1,277 @@
1
+ <script lang="ts">
2
+ // Controls panel for isosurface visualization settings (isovalue, opacity, colors, etc.)
3
+ // Supports both single-isovalue mode and multi-layer mode.
4
+ import { format_num } from '../labels'
5
+ import { SettingsSection } from '../layout'
6
+ import { tooltip } from 'svelte-multiselect/attachments'
7
+ import type { IsosurfaceLayer, IsosurfaceSettings, VolumetricData } from './types'
8
+ import { DEFAULT_ISOSURFACE_SETTINGS, generate_layers } from './types'
9
+
10
+ let {
11
+ settings = $bindable({ ...DEFAULT_ISOSURFACE_SETTINGS }),
12
+ volumes = [],
13
+ active_volume_idx = $bindable(0),
14
+ }: {
15
+ settings?: IsosurfaceSettings
16
+ volumes?: VolumetricData[]
17
+ active_volume_idx?: number
18
+ } = $props()
19
+
20
+ // Clamp active_volume_idx when volumes list changes (e.g. dataset swap)
21
+ $effect(() => {
22
+ if (volumes.length > 0 && active_volume_idx >= volumes.length) {
23
+ active_volume_idx = 0
24
+ }
25
+ })
26
+
27
+ // Use precomputed data_range from the active volume
28
+ let data_range = $derived(
29
+ volumes[active_volume_idx]?.data_range ?? { min: 0, max: 1, abs_max: 1, mean: 0 },
30
+ )
31
+
32
+ let slider_max = $derived(Math.max(data_range.abs_max, 0.001))
33
+ let step = $derived(slider_max / 200)
34
+ let is_multi_layer = $derived((settings.layers?.length ?? 0) > 0)
35
+ let n_layers = $derived(settings.layers?.length ?? 1)
36
+
37
+ function set_layer_count(count: number) {
38
+ if (count <= 1) {
39
+ settings.layers = undefined
40
+ } else {
41
+ settings.layers = generate_layers(data_range, count)
42
+ }
43
+ }
44
+
45
+ function update_layer(idx: number, updates: Partial<IsosurfaceLayer>) {
46
+ if (!settings.layers) return
47
+ settings.layers = settings.layers.map((layer, layer_idx) =>
48
+ layer_idx === idx ? { ...layer, ...updates } : layer
49
+ )
50
+ }
51
+ </script>
52
+
53
+ <SettingsSection
54
+ title="Isosurface"
55
+ current_values={{
56
+ isovalue: settings.isovalue,
57
+ opacity: settings.opacity,
58
+ show_negative: settings.show_negative,
59
+ wireframe: settings.wireframe,
60
+ halo: settings.halo,
61
+ layers: n_layers,
62
+ }}
63
+ on_reset={() => {
64
+ settings = { ...DEFAULT_ISOSURFACE_SETTINGS }
65
+ }}
66
+ >
67
+ <!-- Top row: volume selector (if multi-volume) + layer count + toggles -->
68
+ <div class="pane-row compact-row">
69
+ {#if volumes.length > 1}
70
+ <label
71
+ {@attach tooltip({ content: `Select which volume to display (e.g. charge vs magnetization)` })}
72
+ >
73
+ <span>Volume:</span>
74
+ <select bind:value={active_volume_idx}>
75
+ {#each volumes as vol, idx (idx)}
76
+ <option value={idx}>{vol.label ?? `Volume ${idx + 1}`}</option>
77
+ {/each}
78
+ </select>
79
+ </label>
80
+ {/if}
81
+ <label
82
+ {@attach tooltip({ content: `Number of isosurface shells at different density thresholds` })}
83
+ >
84
+ <span>Layers:</span>
85
+ <select
86
+ value={n_layers}
87
+ onchange={(event) =>
88
+ set_layer_count(Number(event.currentTarget.value))}
89
+ >
90
+ {#each [1, 2, 3, 4, 5] as count (count)}
91
+ <option value={count}>{count}</option>
92
+ {/each}
93
+ </select>
94
+ </label>
95
+ <!-- Sync both settings.show_negative (single-layer fallback) and all layer entries
96
+ so the toggle works consistently regardless of which mode is active -->
97
+ <label
98
+ {@attach tooltip({ content: `Show negative lobe at −isovalue (for orbitals, ESP, magnetization)` })}
99
+ >
100
+ <span>Neg. lobe</span>
101
+ <input
102
+ type="checkbox"
103
+ checked={is_multi_layer
104
+ ? settings.layers?.some((layer) => layer.show_negative) ?? false
105
+ : settings.show_negative}
106
+ onchange={(event) => {
107
+ const checked = event.currentTarget.checked
108
+ settings.show_negative = checked
109
+ if (settings.layers) {
110
+ settings.layers = settings.layers.map((layer) => ({
111
+ ...layer,
112
+ show_negative: checked,
113
+ }))
114
+ }
115
+ }}
116
+ />
117
+ </label>
118
+ <label
119
+ {@attach tooltip({ content: `Render as wireframe mesh instead of solid surface` })}
120
+ >
121
+ <span>Wireframe</span>
122
+ <input type="checkbox" bind:checked={settings.wireframe} />
123
+ </label>
124
+ </div>
125
+
126
+ {#if is_multi_layer && settings.layers}
127
+ <!-- Multi-layer controls: each row has visibility, color, isovalue slider, opacity -->
128
+ {#each settings.layers as layer, idx (idx)}
129
+ <div class="layer-row">
130
+ <input
131
+ type="checkbox"
132
+ checked={layer.visible}
133
+ onchange={() => update_layer(idx, { visible: !layer.visible })}
134
+ />
135
+ <input
136
+ type="color"
137
+ value={layer.color}
138
+ onchange={(event) =>
139
+ update_layer(idx, { color: event.currentTarget.value })}
140
+ />
141
+ <input
142
+ type="range"
143
+ min={step}
144
+ max={slider_max}
145
+ {step}
146
+ value={layer.isovalue}
147
+ oninput={(event) =>
148
+ update_layer(idx, {
149
+ isovalue: Number(event.currentTarget.value),
150
+ })}
151
+ style="flex: 1; min-width: 60px"
152
+ />
153
+ <span class="layer-value">{format_num(layer.isovalue, `.3~g`)}</span>
154
+ <input
155
+ type="range"
156
+ min={0.1}
157
+ max={1}
158
+ step={0.05}
159
+ value={layer.opacity}
160
+ oninput={(event) =>
161
+ update_layer(idx, {
162
+ opacity: Number(event.currentTarget.value),
163
+ })}
164
+ style="width: 50px"
165
+ title="Opacity: {format_num(layer.opacity, `.2f`)}"
166
+ />
167
+ </div>
168
+ {/each}
169
+ {:else}
170
+ <!-- Single-layer: isovalue slider full width -->
171
+ <label
172
+ {@attach tooltip({ content: `Density threshold — surface is drawn where grid values equal this` })}
173
+ >
174
+ <span>Isovalue:</span>
175
+ <input
176
+ type="range"
177
+ min={step}
178
+ max={slider_max}
179
+ {step}
180
+ bind:value={settings.isovalue}
181
+ />
182
+ <span class="value">{format_num(settings.isovalue, `.4~g`)}</span>
183
+ </label>
184
+
185
+ <!-- Opacity + colors on one row -->
186
+ <div class="pane-row compact-row">
187
+ <label
188
+ {@attach tooltip({ content: `Surface transparency — lower values reveal inner structure` })}
189
+ >
190
+ <span>Opacity:</span>
191
+ <input
192
+ type="range"
193
+ min={0.1}
194
+ max={1}
195
+ step={0.05}
196
+ bind:value={settings.opacity}
197
+ style="width: 60px"
198
+ />
199
+ <span class="value">{format_num(settings.opacity, `.2f`)}</span>
200
+ </label>
201
+ <label {@attach tooltip({ content: `Color for the positive isovalue surface` })}>
202
+ <span>+ Color</span>
203
+ <input type="color" bind:value={settings.positive_color} />
204
+ </label>
205
+ {#if settings.show_negative}
206
+ <label
207
+ {@attach tooltip({ content: `Color for the negative (−isovalue) surface` })}
208
+ >
209
+ <span>&minus; Color</span>
210
+ <input type="color" bind:value={settings.negative_color} />
211
+ </label>
212
+ {/if}
213
+ </div>
214
+ {/if}
215
+
216
+ {#if volumes?.[active_volume_idx]?.periodic}
217
+ <label
218
+ {@attach tooltip({ content: `Extend isosurface beyond cell boundaries to close partial spheres (fraction of cell)` })}
219
+ >
220
+ Halo: {format_num(settings.halo, `.2f`)}
221
+ <input
222
+ type="range"
223
+ min={0}
224
+ max={0.5}
225
+ step={0.01}
226
+ bind:value={settings.halo}
227
+ />
228
+ </label>
229
+ {/if}
230
+
231
+ {#if volumes[active_volume_idx]}
232
+ <div class="grid-info">
233
+ {volumes[active_volume_idx].grid_dims.join(` × `)} grid &nbsp;|&nbsp; [{
234
+ format_num(data_range.min, `.3~g`)
235
+ }, {format_num(data_range.max, `.3~g`)}]
236
+ </div>
237
+ {/if}
238
+ </SettingsSection>
239
+
240
+ <style>
241
+ .compact-row {
242
+ flex-wrap: wrap;
243
+ gap: 4pt 14pt;
244
+ }
245
+ label {
246
+ gap: 6pt;
247
+ }
248
+ .grid-info {
249
+ font-size: 0.75em;
250
+ opacity: 0.7;
251
+ padding: 2px 0;
252
+ }
253
+ .layer-row {
254
+ display: flex;
255
+ align-items: center;
256
+ gap: 0.3em;
257
+ font-size: 0.85em;
258
+ input[type='color'] {
259
+ width: 24px;
260
+ height: 20px;
261
+ padding: 0;
262
+ border: 1px solid var(--border-color, #ccc);
263
+ border-radius: 3px;
264
+ box-sizing: border-box;
265
+ cursor: pointer;
266
+ }
267
+ input[type='checkbox'] {
268
+ margin: 0;
269
+ }
270
+ }
271
+ .layer-value {
272
+ font-family: monospace;
273
+ font-size: 0.85em;
274
+ min-width: 3.5em;
275
+ text-align: right;
276
+ }
277
+ </style>
@@ -0,0 +1,9 @@
1
+ import type { IsosurfaceSettings, VolumetricData } from './types';
2
+ type $$ComponentProps = {
3
+ settings?: IsosurfaceSettings;
4
+ volumes?: VolumetricData[];
5
+ active_volume_idx?: number;
6
+ };
7
+ declare const IsosurfaceControls: import("svelte").Component<$$ComponentProps, {}, "settings" | "active_volume_idx">;
8
+ type IsosurfaceControls = ReturnType<typeof IsosurfaceControls>;
9
+ export default IsosurfaceControls;