matterviz 0.3.4 → 0.3.6

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 (852) hide show
  1. package/.vscode/launch.json +13 -0
  2. package/.vscodeignore +7 -0
  3. package/dist/assets/STLExporter-BpTH3YHE.js +8 -0
  4. package/dist/assets/browser-DdDecX_W.js +1 -0
  5. package/dist/assets/export-qgn-H9y6.js +2 -0
  6. package/dist/assets/main-DiKYzti2.css +1 -0
  7. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  8. package/dist/extension.js +31293 -0
  9. package/dist/src/lib/FilePicker.svelte +360 -0
  10. package/dist/src/lib/MillerIndexInput.svelte +66 -0
  11. package/dist/src/lib/api/mp.ts +26 -0
  12. package/dist/src/lib/api/optimade.ts +204 -0
  13. package/dist/src/lib/app.css +247 -0
  14. package/dist/src/lib/brillouin/BrillouinZone.svelte +549 -0
  15. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
  16. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
  17. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  18. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
  19. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
  20. package/dist/src/lib/brillouin/compute.ts +529 -0
  21. package/dist/src/lib/brillouin/index.ts +8 -0
  22. package/dist/src/lib/brillouin/types.ts +51 -0
  23. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
  24. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  25. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  26. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
  27. package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
  28. package/dist/src/lib/chempot-diagram/color.ts +42 -0
  29. package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
  30. package/dist/src/lib/chempot-diagram/index.ts +6 -0
  31. package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
  32. package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
  33. package/dist/src/lib/chempot-diagram/types.ts +130 -0
  34. package/dist/src/lib/colors/index.ts +249 -0
  35. package/dist/src/lib/composition/BarChart.svelte +297 -0
  36. package/dist/src/lib/composition/BubbleChart.svelte +218 -0
  37. package/dist/src/lib/composition/Composition.svelte +165 -0
  38. package/dist/src/lib/composition/Formula.svelte +268 -0
  39. package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
  40. package/dist/src/lib/composition/PieChart.svelte +323 -0
  41. package/dist/src/lib/composition/format.ts +155 -0
  42. package/dist/src/lib/composition/index.ts +37 -0
  43. package/dist/src/lib/composition/parse.ts +605 -0
  44. package/dist/src/lib/constants.ts +134 -0
  45. package/dist/src/lib/controls.ts +42 -0
  46. package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
  47. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
  48. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
  49. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
  50. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
  51. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
  52. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
  53. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
  54. package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
  55. package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
  56. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
  57. package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
  58. package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
  59. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
  60. package/dist/src/lib/convex-hull/helpers.ts +932 -0
  61. package/dist/src/lib/convex-hull/index.ts +202 -0
  62. package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
  63. package/dist/src/lib/convex-hull/types.ts +267 -0
  64. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
  65. package/dist/src/lib/coordination/calc-coordination.ts +93 -0
  66. package/dist/src/lib/coordination/index.ts +9 -0
  67. package/dist/src/lib/effects.svelte.ts +48 -0
  68. package/dist/src/lib/element/BohrAtom.svelte +147 -0
  69. package/dist/src/lib/element/ElementHeading.svelte +26 -0
  70. package/dist/src/lib/element/ElementPhoto.svelte +57 -0
  71. package/dist/src/lib/element/ElementStats.svelte +80 -0
  72. package/dist/src/lib/element/ElementTile.svelte +484 -0
  73. package/dist/src/lib/element/data.json.gz.d.ts +4 -0
  74. package/dist/src/lib/element/data.ts +14 -0
  75. package/dist/src/lib/element/index.ts +8 -0
  76. package/dist/src/lib/element/types.ts +62 -0
  77. package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
  78. package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
  79. package/dist/src/lib/feedback/index.ts +4 -0
  80. package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
  81. package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
  82. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
  83. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
  84. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  85. package/dist/src/lib/fermi-surface/compute.ts +728 -0
  86. package/dist/src/lib/fermi-surface/constants.ts +32 -0
  87. package/dist/src/lib/fermi-surface/export.ts +64 -0
  88. package/dist/src/lib/fermi-surface/index.ts +14 -0
  89. package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
  90. package/dist/src/lib/fermi-surface/parse.ts +574 -0
  91. package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
  92. package/dist/src/lib/fermi-surface/types.ts +159 -0
  93. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  94. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  95. package/dist/src/lib/heatmap-matrix/index.ts +167 -0
  96. package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
  97. package/dist/src/lib/icons.ts +650 -0
  98. package/dist/src/lib/index.ts +61 -0
  99. package/dist/src/lib/io/decompress.ts +92 -0
  100. package/dist/src/lib/io/export.ts +385 -0
  101. package/dist/src/lib/io/fetch.ts +46 -0
  102. package/dist/src/lib/io/file-drop.ts +51 -0
  103. package/dist/src/lib/io/index.ts +7 -0
  104. package/dist/src/lib/io/is-binary.ts +24 -0
  105. package/dist/src/lib/io/types.ts +8 -0
  106. package/dist/src/lib/io/url-drop.ts +141 -0
  107. package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
  108. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
  109. package/dist/src/lib/isosurface/index.ts +7 -0
  110. package/dist/src/lib/isosurface/parse.ts +656 -0
  111. package/dist/src/lib/isosurface/slice.ts +175 -0
  112. package/dist/src/lib/isosurface/types.ts +309 -0
  113. package/dist/src/lib/labels.ts +320 -0
  114. package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
  115. package/dist/src/lib/layout/InfoCard.svelte +120 -0
  116. package/dist/src/lib/layout/InfoTag.svelte +185 -0
  117. package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
  118. package/dist/src/lib/layout/SettingsSection.svelte +148 -0
  119. package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
  120. package/dist/src/lib/layout/fullscreen.ts +65 -0
  121. package/dist/src/lib/layout/index.ts +11 -0
  122. package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
  123. package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
  124. package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
  125. package/dist/src/lib/layout/json-tree/index.ts +3 -0
  126. package/dist/src/lib/layout/json-tree/types.ts +126 -0
  127. package/dist/src/lib/layout/json-tree/utils.ts +682 -0
  128. package/dist/src/lib/marching-cubes.ts +614 -0
  129. package/dist/src/lib/math.ts +1081 -0
  130. package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
  131. package/dist/src/lib/overlays/CopyButton.svelte +45 -0
  132. package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
  133. package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
  134. package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
  135. package/dist/src/lib/overlays/index.ts +3 -0
  136. package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
  137. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
  138. package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
  139. package/dist/src/lib/periodic-table/index.ts +12 -0
  140. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  141. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
  142. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  143. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  144. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  145. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
  146. package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
  147. package/dist/src/lib/phase-diagram/colors.ts +58 -0
  148. package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
  149. package/dist/src/lib/phase-diagram/index.ts +13 -0
  150. package/dist/src/lib/phase-diagram/parse.ts +348 -0
  151. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
  152. package/dist/src/lib/phase-diagram/types.ts +144 -0
  153. package/dist/src/lib/phase-diagram/utils.ts +775 -0
  154. package/dist/src/lib/plot/AxisLabel.svelte +51 -0
  155. package/dist/src/lib/plot/BarPlot.svelte +2113 -0
  156. package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
  157. package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
  158. package/dist/src/lib/plot/ColorBar.svelte +721 -0
  159. package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
  160. package/dist/src/lib/plot/ElementScatter.svelte +63 -0
  161. package/dist/src/lib/plot/FillArea.svelte +223 -0
  162. package/dist/src/lib/plot/Histogram.svelte +1558 -0
  163. package/dist/src/lib/plot/HistogramControls.svelte +212 -0
  164. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
  165. package/dist/src/lib/plot/Line.svelte +84 -0
  166. package/dist/src/lib/plot/PlotAxis.svelte +169 -0
  167. package/dist/src/lib/plot/PlotControls.svelte +537 -0
  168. package/dist/src/lib/plot/PlotLegend.svelte +569 -0
  169. package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
  170. package/dist/src/lib/plot/PortalSelect.svelte +253 -0
  171. package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
  172. package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
  173. package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
  174. package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
  175. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
  176. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
  177. package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
  178. package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
  179. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
  180. package/dist/src/lib/plot/Surface3D.svelte +197 -0
  181. package/dist/src/lib/plot/ZeroLines.svelte +97 -0
  182. package/dist/src/lib/plot/ZoomRect.svelte +23 -0
  183. package/dist/src/lib/plot/adaptive-density.ts +316 -0
  184. package/dist/src/lib/plot/auto-place.ts +184 -0
  185. package/dist/src/lib/plot/axis-utils.ts +122 -0
  186. package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
  187. package/dist/src/lib/plot/data-cleaning.ts +1069 -0
  188. package/dist/src/lib/plot/data-transform.ts +69 -0
  189. package/dist/src/lib/plot/defaults.ts +9 -0
  190. package/dist/src/lib/plot/fill-utils.ts +494 -0
  191. package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
  192. package/dist/src/lib/plot/index.ts +53 -0
  193. package/dist/src/lib/plot/interactions.ts +119 -0
  194. package/dist/src/lib/plot/layout.ts +425 -0
  195. package/dist/src/lib/plot/reference-line.ts +426 -0
  196. package/dist/src/lib/plot/scales.ts +654 -0
  197. package/dist/src/lib/plot/svg.ts +23 -0
  198. package/dist/src/lib/plot/types.ts +1144 -0
  199. package/dist/src/lib/plot/utils/label-placement.ts +541 -0
  200. package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
  201. package/dist/src/lib/plot/utils.ts +11 -0
  202. package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
  203. package/dist/src/lib/rdf/calc-rdf.ts +167 -0
  204. package/dist/src/lib/rdf/index.ts +27 -0
  205. package/dist/src/lib/sanitize.ts +126 -0
  206. package/dist/src/lib/settings.ts +1479 -0
  207. package/dist/src/lib/spectral/Bands.svelte +1040 -0
  208. package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
  209. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
  210. package/dist/src/lib/spectral/Dos.svelte +697 -0
  211. package/dist/src/lib/spectral/helpers.ts +1381 -0
  212. package/dist/src/lib/spectral/index.ts +8 -0
  213. package/dist/src/lib/spectral/types.ts +112 -0
  214. package/dist/src/lib/state.svelte.ts +64 -0
  215. package/dist/src/lib/structure/Arrow.svelte +72 -0
  216. package/dist/src/lib/structure/AtomLegend.svelte +815 -0
  217. package/dist/src/lib/structure/Bond.svelte +140 -0
  218. package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
  219. package/dist/src/lib/structure/CellSelect.svelte +349 -0
  220. package/dist/src/lib/structure/Cylinder.svelte +45 -0
  221. package/dist/src/lib/structure/Lattice.svelte +196 -0
  222. package/dist/src/lib/structure/Structure.svelte +2248 -0
  223. package/dist/src/lib/structure/StructureControls.svelte +1273 -0
  224. package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
  225. package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
  226. package/dist/src/lib/structure/StructureScene.svelte +2255 -0
  227. package/dist/src/lib/structure/atom-properties.ts +316 -0
  228. package/dist/src/lib/structure/bond-order-perception.ts +447 -0
  229. package/dist/src/lib/structure/bonding.ts +944 -0
  230. package/dist/src/lib/structure/export.ts +861 -0
  231. package/dist/src/lib/structure/index.ts +291 -0
  232. package/dist/src/lib/structure/label-placement.ts +130 -0
  233. package/dist/src/lib/structure/measure.ts +45 -0
  234. package/dist/src/lib/structure/parse.ts +1705 -0
  235. package/dist/src/lib/structure/partial-occupancy.ts +183 -0
  236. package/dist/src/lib/structure/pbc.ts +164 -0
  237. package/dist/src/lib/structure/supercell.ts +226 -0
  238. package/dist/src/lib/structure/validation.ts +11 -0
  239. package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
  240. package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
  241. package/dist/src/lib/symmetry/cell-transform.ts +118 -0
  242. package/dist/src/lib/symmetry/index.ts +348 -0
  243. package/dist/src/lib/symmetry/spacegroups.ts +404 -0
  244. package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
  245. package/dist/src/lib/table/ToggleMenu.svelte +385 -0
  246. package/dist/src/lib/table/index.ts +139 -0
  247. package/dist/src/lib/theme/ThemeControl.svelte +53 -0
  248. package/dist/src/lib/theme/index.ts +107 -0
  249. package/dist/src/lib/theme/themes.mjs +297 -0
  250. package/dist/src/lib/time.ts +71 -0
  251. package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
  252. package/dist/src/lib/tooltip/index.ts +2 -0
  253. package/dist/src/lib/tooltip/types.ts +13 -0
  254. package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
  255. package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
  256. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
  257. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
  258. package/dist/src/lib/trajectory/constants.ts +7 -0
  259. package/dist/src/lib/trajectory/extract.ts +196 -0
  260. package/dist/src/lib/trajectory/format-detect.ts +96 -0
  261. package/dist/src/lib/trajectory/frame-reader.ts +456 -0
  262. package/dist/src/lib/trajectory/helpers.ts +217 -0
  263. package/dist/src/lib/trajectory/index.ts +218 -0
  264. package/dist/src/lib/trajectory/parse/ase.ts +109 -0
  265. package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
  266. package/dist/src/lib/trajectory/parse/index.ts +411 -0
  267. package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
  268. package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
  269. package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
  270. package/dist/src/lib/trajectory/plotting.ts +599 -0
  271. package/dist/src/lib/trajectory/types.ts +13 -0
  272. package/dist/src/lib/utils.ts +56 -0
  273. package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
  274. package/dist/src/lib/xrd/broadening.ts +130 -0
  275. package/dist/src/lib/xrd/calc-xrd.ts +397 -0
  276. package/dist/src/lib/xrd/index.ts +38 -0
  277. package/dist/src/lib/xrd/parse.ts +858 -0
  278. package/dist/webview.js +29421 -0
  279. package/icon.png +0 -0
  280. package/license +1 -1
  281. package/matterviz-0.3.2.vsix +0 -0
  282. package/matterviz-0.3.4.vsix +0 -0
  283. package/matterviz-0.3.5.vsix +0 -0
  284. package/package.json +1461 -231
  285. package/readme.md +171 -98
  286. package/scripts/sync-config.ts +101 -0
  287. package/src/declarations.d.ts +2 -0
  288. package/src/extension.ts +972 -0
  289. package/src/node-io.ts +65 -0
  290. package/src/types.ts +17 -0
  291. package/src/webview/JsonBrowser.svelte +1079 -0
  292. package/src/webview/PlotPanel.svelte +346 -0
  293. package/src/webview/detect.ts +444 -0
  294. package/src/webview/main.ts +764 -0
  295. package/src/webview/plot-utils.ts +250 -0
  296. package/test-fixtures/all-viz-types.json.gz +0 -0
  297. package/test-fixtures/plot-demo-data.json.gz +0 -0
  298. package/tests/detect.test.ts +604 -0
  299. package/tests/extension.test.ts +2041 -0
  300. package/tests/node-io.test.ts +39 -0
  301. package/tests/plot-utils.test.ts +302 -0
  302. package/tests/vite-plugin-json-gz.test.ts +114 -0
  303. package/tests/vscode-mock.ts +18 -0
  304. package/tests/webview.test.ts +231 -0
  305. package/tsconfig.json +20 -0
  306. package/vite-plugin-json-gz.ts +29 -0
  307. package/vite.config.ts +34 -0
  308. package/vite.extension.config.ts +34 -0
  309. package/dist/EmptyState.svelte.d.ts +0 -9
  310. package/dist/FilePicker.svelte +0 -360
  311. package/dist/FilePicker.svelte.d.ts +0 -17
  312. package/dist/Icon.svelte.d.ts +0 -13
  313. package/dist/MillerIndexInput.svelte +0 -66
  314. package/dist/MillerIndexInput.svelte.d.ts +0 -7
  315. package/dist/api/mp.d.ts +0 -6
  316. package/dist/api/mp.js +0 -22
  317. package/dist/api/optimade.d.ts +0 -45
  318. package/dist/api/optimade.js +0 -135
  319. package/dist/app.css +0 -240
  320. package/dist/brillouin/BrillouinZone.svelte +0 -543
  321. package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
  322. package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
  323. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
  324. package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
  325. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
  326. package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  327. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
  328. package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
  329. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
  330. package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
  331. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
  332. package/dist/brillouin/compute.d.ts +0 -17
  333. package/dist/brillouin/compute.js +0 -422
  334. package/dist/brillouin/index.d.ts +0 -8
  335. package/dist/brillouin/index.js +0 -8
  336. package/dist/brillouin/types.d.ts +0 -48
  337. package/dist/brillouin/types.js +0 -1
  338. package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
  339. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
  340. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
  341. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
  342. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
  343. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
  344. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
  345. package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
  346. package/dist/chempot-diagram/async-compute.svelte.js +0 -77
  347. package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
  348. package/dist/chempot-diagram/chempot-worker.js +0 -11
  349. package/dist/chempot-diagram/color.d.ts +0 -10
  350. package/dist/chempot-diagram/color.js +0 -32
  351. package/dist/chempot-diagram/compute.d.ts +0 -48
  352. package/dist/chempot-diagram/compute.js +0 -812
  353. package/dist/chempot-diagram/index.d.ts +0 -6
  354. package/dist/chempot-diagram/index.js +0 -6
  355. package/dist/chempot-diagram/pointer.d.ts +0 -16
  356. package/dist/chempot-diagram/pointer.js +0 -40
  357. package/dist/chempot-diagram/temperature.d.ts +0 -15
  358. package/dist/chempot-diagram/temperature.js +0 -36
  359. package/dist/chempot-diagram/types.d.ts +0 -86
  360. package/dist/chempot-diagram/types.js +0 -28
  361. package/dist/colors/index.d.ts +0 -47
  362. package/dist/colors/index.js +0 -203
  363. package/dist/composition/BarChart.svelte +0 -297
  364. package/dist/composition/BarChart.svelte.d.ts +0 -39
  365. package/dist/composition/BubbleChart.svelte +0 -218
  366. package/dist/composition/BubbleChart.svelte.d.ts +0 -28
  367. package/dist/composition/Composition.svelte +0 -164
  368. package/dist/composition/Composition.svelte.d.ts +0 -15
  369. package/dist/composition/Formula.svelte +0 -265
  370. package/dist/composition/Formula.svelte.d.ts +0 -19
  371. package/dist/composition/FormulaFilter.svelte +0 -1259
  372. package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
  373. package/dist/composition/PieChart.svelte +0 -323
  374. package/dist/composition/PieChart.svelte.d.ts +0 -37
  375. package/dist/composition/format.d.ts +0 -15
  376. package/dist/composition/format.js +0 -109
  377. package/dist/composition/index.d.ts +0 -20
  378. package/dist/composition/index.js +0 -14
  379. package/dist/composition/parse.d.ts +0 -55
  380. package/dist/composition/parse.js +0 -459
  381. package/dist/constants.d.ts +0 -29
  382. package/dist/constants.js +0 -105
  383. package/dist/controls.d.ts +0 -14
  384. package/dist/controls.js +0 -30
  385. package/dist/convex-hull/ConvexHull.svelte +0 -157
  386. package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
  387. package/dist/convex-hull/ConvexHull2D.svelte +0 -813
  388. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
  389. package/dist/convex-hull/ConvexHull3D.svelte +0 -1788
  390. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
  391. package/dist/convex-hull/ConvexHull4D.svelte +0 -1374
  392. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
  393. package/dist/convex-hull/ConvexHullControls.svelte +0 -546
  394. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
  395. package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -115
  396. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
  397. package/dist/convex-hull/ConvexHullStats.svelte +0 -905
  398. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
  399. package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
  400. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
  401. package/dist/convex-hull/GasPressureControls.svelte +0 -247
  402. package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
  403. package/dist/convex-hull/StructurePopup.svelte +0 -116
  404. package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
  405. package/dist/convex-hull/TemperatureSlider.svelte +0 -137
  406. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
  407. package/dist/convex-hull/barycentric-coords.d.ts +0 -18
  408. package/dist/convex-hull/barycentric-coords.js +0 -182
  409. package/dist/convex-hull/demo-temperature.d.ts +0 -6
  410. package/dist/convex-hull/demo-temperature.js +0 -40
  411. package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
  412. package/dist/convex-hull/gas-thermodynamics.js +0 -316
  413. package/dist/convex-hull/helpers.d.ts +0 -103
  414. package/dist/convex-hull/helpers.js +0 -671
  415. package/dist/convex-hull/index.d.ts +0 -118
  416. package/dist/convex-hull/index.js +0 -57
  417. package/dist/convex-hull/thermodynamics.d.ts +0 -66
  418. package/dist/convex-hull/thermodynamics.js +0 -1752
  419. package/dist/convex-hull/types.d.ts +0 -162
  420. package/dist/convex-hull/types.js +0 -36
  421. package/dist/coordination/CoordinationBarPlot.svelte +0 -311
  422. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
  423. package/dist/coordination/calc-coordination.d.ts +0 -15
  424. package/dist/coordination/calc-coordination.js +0 -63
  425. package/dist/coordination/index.d.ts +0 -8
  426. package/dist/coordination/index.js +0 -7
  427. package/dist/element/BohrAtom.svelte +0 -149
  428. package/dist/element/BohrAtom.svelte.d.ts +0 -20
  429. package/dist/element/ElementHeading.svelte +0 -26
  430. package/dist/element/ElementHeading.svelte.d.ts +0 -8
  431. package/dist/element/ElementPhoto.svelte +0 -57
  432. package/dist/element/ElementPhoto.svelte.d.ts +0 -9
  433. package/dist/element/ElementStats.svelte +0 -80
  434. package/dist/element/ElementStats.svelte.d.ts +0 -8
  435. package/dist/element/ElementTile.svelte +0 -484
  436. package/dist/element/ElementTile.svelte.d.ts +0 -29
  437. package/dist/element/Nucleus.svelte.d.ts +0 -17
  438. package/dist/element/data.d.ts +0 -3
  439. package/dist/element/data.js +0 -2
  440. package/dist/element/data.json.gz.d.ts +0 -2
  441. package/dist/element/index.d.ts +0 -8
  442. package/dist/element/index.js +0 -8
  443. package/dist/element/types.d.ts +0 -57
  444. package/dist/element/types.js +0 -1
  445. package/dist/feedback/ClickFeedback.svelte +0 -58
  446. package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
  447. package/dist/feedback/DragOverlay.svelte +0 -42
  448. package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
  449. package/dist/feedback/Spinner.svelte.d.ts +0 -7
  450. package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
  451. package/dist/feedback/index.d.ts +0 -4
  452. package/dist/feedback/index.js +0 -4
  453. package/dist/fermi-surface/FermiSlice.svelte +0 -189
  454. package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
  455. package/dist/fermi-surface/FermiSurface.svelte +0 -597
  456. package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
  457. package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
  458. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
  459. package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
  460. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
  461. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  462. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
  463. package/dist/fermi-surface/compute.d.ts +0 -5
  464. package/dist/fermi-surface/compute.js +0 -538
  465. package/dist/fermi-surface/constants.d.ts +0 -9
  466. package/dist/fermi-surface/constants.js +0 -27
  467. package/dist/fermi-surface/export.d.ts +0 -5
  468. package/dist/fermi-surface/export.js +0 -63
  469. package/dist/fermi-surface/index.d.ts +0 -12
  470. package/dist/fermi-surface/index.js +0 -13
  471. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  472. package/dist/fermi-surface/marching-cubes.js +0 -2
  473. package/dist/fermi-surface/parse.d.ts +0 -2
  474. package/dist/fermi-surface/parse.js +0 -495
  475. package/dist/fermi-surface/symmetry.d.ts +0 -3
  476. package/dist/fermi-surface/symmetry.js +0 -46
  477. package/dist/fermi-surface/types.d.ts +0 -113
  478. package/dist/fermi-surface/types.js +0 -4
  479. package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
  480. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
  481. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  482. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
  483. package/dist/heatmap-matrix/index.d.ts +0 -53
  484. package/dist/heatmap-matrix/index.js +0 -100
  485. package/dist/heatmap-matrix/shared.d.ts +0 -2
  486. package/dist/heatmap-matrix/shared.js +0 -4
  487. package/dist/icons.d.ts +0 -569
  488. package/dist/icons.js +0 -648
  489. package/dist/index.d.ts +0 -39
  490. package/dist/index.js +0 -39
  491. package/dist/io/decompress.d.ts +0 -10
  492. package/dist/io/decompress.js +0 -69
  493. package/dist/io/export.d.ts +0 -16
  494. package/dist/io/export.js +0 -312
  495. package/dist/io/fetch.d.ts +0 -5
  496. package/dist/io/fetch.js +0 -39
  497. package/dist/io/file-drop.d.ts +0 -7
  498. package/dist/io/file-drop.js +0 -43
  499. package/dist/io/index.d.ts +0 -7
  500. package/dist/io/index.js +0 -7
  501. package/dist/io/is-binary.d.ts +0 -1
  502. package/dist/io/is-binary.js +0 -5
  503. package/dist/io/types.d.ts +0 -8
  504. package/dist/io/types.js +0 -1
  505. package/dist/io/url-drop.d.ts +0 -2
  506. package/dist/io/url-drop.js +0 -117
  507. package/dist/isosurface/Isosurface.svelte +0 -285
  508. package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
  509. package/dist/isosurface/IsosurfaceControls.svelte +0 -291
  510. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
  511. package/dist/isosurface/index.d.ts +0 -5
  512. package/dist/isosurface/index.js +0 -6
  513. package/dist/isosurface/parse.d.ts +0 -6
  514. package/dist/isosurface/parse.js +0 -553
  515. package/dist/isosurface/slice.d.ts +0 -11
  516. package/dist/isosurface/slice.js +0 -140
  517. package/dist/isosurface/types.d.ts +0 -56
  518. package/dist/isosurface/types.js +0 -227
  519. package/dist/labels.d.ts +0 -53
  520. package/dist/labels.js +0 -274
  521. package/dist/layout/FullscreenToggle.svelte +0 -50
  522. package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
  523. package/dist/layout/InfoCard.svelte +0 -120
  524. package/dist/layout/InfoCard.svelte.d.ts +0 -21
  525. package/dist/layout/InfoTag.svelte +0 -183
  526. package/dist/layout/InfoTag.svelte.d.ts +0 -19
  527. package/dist/layout/PropertyFilter.svelte +0 -244
  528. package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
  529. package/dist/layout/SettingsSection.svelte +0 -148
  530. package/dist/layout/SettingsSection.svelte.d.ts +0 -17
  531. package/dist/layout/SubpageGrid.svelte +0 -82
  532. package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
  533. package/dist/layout/fullscreen.d.ts +0 -9
  534. package/dist/layout/fullscreen.js +0 -53
  535. package/dist/layout/index.d.ts +0 -10
  536. package/dist/layout/index.js +0 -8
  537. package/dist/layout/json-tree/JsonNode.svelte +0 -547
  538. package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
  539. package/dist/layout/json-tree/JsonTree.svelte +0 -1222
  540. package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
  541. package/dist/layout/json-tree/JsonValue.svelte +0 -334
  542. package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
  543. package/dist/layout/json-tree/index.d.ts +0 -3
  544. package/dist/layout/json-tree/index.js +0 -3
  545. package/dist/layout/json-tree/types.d.ts +0 -73
  546. package/dist/layout/json-tree/types.js +0 -3
  547. package/dist/layout/json-tree/utils.d.ts +0 -29
  548. package/dist/layout/json-tree/utils.js +0 -648
  549. package/dist/marching-cubes.d.ts +0 -14
  550. package/dist/marching-cubes.js +0 -542
  551. package/dist/math.d.ts +0 -91
  552. package/dist/math.js +0 -896
  553. package/dist/overlays/ContextMenu.svelte +0 -162
  554. package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
  555. package/dist/overlays/DraggablePane.svelte +0 -564
  556. package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
  557. package/dist/overlays/index.d.ts +0 -2
  558. package/dist/overlays/index.js +0 -2
  559. package/dist/periodic-table/PeriodicTable.svelte +0 -469
  560. package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
  561. package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
  562. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
  563. package/dist/periodic-table/PropertySelect.svelte +0 -37
  564. package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
  565. package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
  566. package/dist/periodic-table/index.d.ts +0 -10
  567. package/dist/periodic-table/index.js +0 -4
  568. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  569. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
  570. package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -451
  571. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
  572. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  573. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
  574. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
  575. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
  576. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
  577. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
  578. package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
  579. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
  580. package/dist/phase-diagram/build-diagram.d.ts +0 -11
  581. package/dist/phase-diagram/build-diagram.js +0 -167
  582. package/dist/phase-diagram/colors.d.ts +0 -35
  583. package/dist/phase-diagram/colors.js +0 -51
  584. package/dist/phase-diagram/diagram-input.d.ts +0 -33
  585. package/dist/phase-diagram/diagram-input.js +0 -3
  586. package/dist/phase-diagram/index.d.ts +0 -13
  587. package/dist/phase-diagram/index.js +0 -13
  588. package/dist/phase-diagram/parse.d.ts +0 -55
  589. package/dist/phase-diagram/parse.js +0 -276
  590. package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
  591. package/dist/phase-diagram/svg-to-diagram.js +0 -869
  592. package/dist/phase-diagram/types.d.ts +0 -99
  593. package/dist/phase-diagram/types.js +0 -1
  594. package/dist/phase-diagram/utils.d.ts +0 -118
  595. package/dist/phase-diagram/utils.js +0 -606
  596. package/dist/plot/AxisLabel.svelte +0 -51
  597. package/dist/plot/AxisLabel.svelte.d.ts +0 -16
  598. package/dist/plot/BarPlot.svelte +0 -2256
  599. package/dist/plot/BarPlot.svelte.d.ts +0 -82
  600. package/dist/plot/BarPlotControls.svelte +0 -66
  601. package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
  602. package/dist/plot/ColorBar.svelte +0 -719
  603. package/dist/plot/ColorBar.svelte.d.ts +0 -31
  604. package/dist/plot/ColorScaleSelect.svelte +0 -54
  605. package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
  606. package/dist/plot/ElementScatter.svelte +0 -63
  607. package/dist/plot/ElementScatter.svelte.d.ts +0 -14
  608. package/dist/plot/FillArea.svelte +0 -226
  609. package/dist/plot/FillArea.svelte.d.ts +0 -20
  610. package/dist/plot/Histogram.svelte +0 -1654
  611. package/dist/plot/Histogram.svelte.d.ts +0 -50
  612. package/dist/plot/HistogramControls.svelte +0 -212
  613. package/dist/plot/HistogramControls.svelte.d.ts +0 -22
  614. package/dist/plot/InteractiveAxisLabel.svelte +0 -94
  615. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
  616. package/dist/plot/Line.svelte +0 -85
  617. package/dist/plot/Line.svelte.d.ts +0 -15
  618. package/dist/plot/PlotControls.svelte +0 -537
  619. package/dist/plot/PlotControls.svelte.d.ts +0 -4
  620. package/dist/plot/PlotLegend.svelte +0 -498
  621. package/dist/plot/PlotLegend.svelte.d.ts +0 -25
  622. package/dist/plot/PlotTooltip.svelte +0 -67
  623. package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
  624. package/dist/plot/PortalSelect.svelte +0 -253
  625. package/dist/plot/PortalSelect.svelte.d.ts +0 -16
  626. package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
  627. package/dist/plot/ReferenceLine3D.svelte +0 -154
  628. package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
  629. package/dist/plot/ReferencePlane.svelte +0 -178
  630. package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
  631. package/dist/plot/ScatterPlot.svelte +0 -2831
  632. package/dist/plot/ScatterPlot.svelte.d.ts +0 -92
  633. package/dist/plot/ScatterPlot3D.svelte +0 -499
  634. package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
  635. package/dist/plot/ScatterPlot3DControls.svelte +0 -437
  636. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
  637. package/dist/plot/ScatterPlot3DScene.svelte +0 -912
  638. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
  639. package/dist/plot/ScatterPlotControls.svelte +0 -307
  640. package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
  641. package/dist/plot/ScatterPoint.svelte +0 -185
  642. package/dist/plot/ScatterPoint.svelte.d.ts +0 -19
  643. package/dist/plot/SpacegroupBarPlot.svelte +0 -292
  644. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
  645. package/dist/plot/Surface3D.svelte +0 -200
  646. package/dist/plot/Surface3D.svelte.d.ts +0 -13
  647. package/dist/plot/ZeroLines.svelte +0 -96
  648. package/dist/plot/ZeroLines.svelte.d.ts +0 -32
  649. package/dist/plot/ZoomRect.svelte +0 -23
  650. package/dist/plot/ZoomRect.svelte.d.ts +0 -8
  651. package/dist/plot/axis-utils.d.ts +0 -19
  652. package/dist/plot/axis-utils.js +0 -80
  653. package/dist/plot/data-cleaning.d.ts +0 -37
  654. package/dist/plot/data-cleaning.js +0 -855
  655. package/dist/plot/data-transform.d.ts +0 -16
  656. package/dist/plot/data-transform.js +0 -45
  657. package/dist/plot/defaults.d.ts +0 -19
  658. package/dist/plot/defaults.js +0 -9
  659. package/dist/plot/fill-utils.d.ts +0 -51
  660. package/dist/plot/fill-utils.js +0 -337
  661. package/dist/plot/hover-lock.svelte.d.ts +0 -14
  662. package/dist/plot/hover-lock.svelte.js +0 -46
  663. package/dist/plot/index.d.ts +0 -43
  664. package/dist/plot/index.js +0 -37
  665. package/dist/plot/interactions.d.ts +0 -12
  666. package/dist/plot/interactions.js +0 -100
  667. package/dist/plot/layout.d.ts +0 -60
  668. package/dist/plot/layout.js +0 -230
  669. package/dist/plot/reference-line.d.ts +0 -60
  670. package/dist/plot/reference-line.js +0 -316
  671. package/dist/plot/scales.d.ts +0 -48
  672. package/dist/plot/scales.js +0 -484
  673. package/dist/plot/svg.d.ts +0 -1
  674. package/dist/plot/svg.js +0 -11
  675. package/dist/plot/types.d.ts +0 -863
  676. package/dist/plot/types.js +0 -103
  677. package/dist/plot/utils/label-placement.d.ts +0 -47
  678. package/dist/plot/utils/label-placement.js +0 -256
  679. package/dist/plot/utils/series-visibility.d.ts +0 -9
  680. package/dist/plot/utils/series-visibility.js +0 -67
  681. package/dist/plot/utils.d.ts +0 -1
  682. package/dist/plot/utils.js +0 -14
  683. package/dist/rdf/RdfPlot.svelte +0 -247
  684. package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
  685. package/dist/rdf/calc-rdf.d.ts +0 -4
  686. package/dist/rdf/calc-rdf.js +0 -111
  687. package/dist/rdf/index.d.ts +0 -23
  688. package/dist/rdf/index.js +0 -2
  689. package/dist/sanitize.d.ts +0 -4
  690. package/dist/sanitize.js +0 -107
  691. package/dist/settings.d.ts +0 -253
  692. package/dist/settings.js +0 -1123
  693. package/dist/spectral/Bands.svelte +0 -1040
  694. package/dist/spectral/Bands.svelte.d.ts +0 -40
  695. package/dist/spectral/BandsAndDos.svelte +0 -128
  696. package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
  697. package/dist/spectral/BrillouinBandsDos.svelte +0 -248
  698. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
  699. package/dist/spectral/Dos.svelte +0 -697
  700. package/dist/spectral/Dos.svelte.d.ts +0 -29
  701. package/dist/spectral/helpers.d.ts +0 -117
  702. package/dist/spectral/helpers.js +0 -1023
  703. package/dist/spectral/index.d.ts +0 -6
  704. package/dist/spectral/index.js +0 -7
  705. package/dist/spectral/types.d.ts +0 -84
  706. package/dist/spectral/types.js +0 -2
  707. package/dist/state.svelte.d.ts +0 -25
  708. package/dist/state.svelte.js +0 -45
  709. package/dist/structure/Arrow.svelte +0 -72
  710. package/dist/structure/Arrow.svelte.d.ts +0 -15
  711. package/dist/structure/AtomLegend.svelte +0 -798
  712. package/dist/structure/AtomLegend.svelte.d.ts +0 -34
  713. package/dist/structure/Bond.svelte +0 -140
  714. package/dist/structure/Bond.svelte.d.ts +0 -9
  715. package/dist/structure/CanvasTooltip.svelte +0 -33
  716. package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
  717. package/dist/structure/CellSelect.svelte +0 -351
  718. package/dist/structure/CellSelect.svelte.d.ts +0 -13
  719. package/dist/structure/Cylinder.svelte +0 -45
  720. package/dist/structure/Cylinder.svelte.d.ts +0 -10
  721. package/dist/structure/Lattice.svelte +0 -196
  722. package/dist/structure/Lattice.svelte.d.ts +0 -17
  723. package/dist/structure/Structure.svelte +0 -1857
  724. package/dist/structure/Structure.svelte.d.ts +0 -83
  725. package/dist/structure/StructureControls.svelte +0 -1184
  726. package/dist/structure/StructureControls.svelte.d.ts +0 -31
  727. package/dist/structure/StructureExportPane.svelte +0 -251
  728. package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
  729. package/dist/structure/StructureInfoPane.svelte +0 -434
  730. package/dist/structure/StructureInfoPane.svelte.d.ts +0 -18
  731. package/dist/structure/StructureScene.svelte +0 -1574
  732. package/dist/structure/StructureScene.svelte.d.ts +0 -104
  733. package/dist/structure/atom-properties.d.ts +0 -37
  734. package/dist/structure/atom-properties.js +0 -198
  735. package/dist/structure/bonding.d.ts +0 -33
  736. package/dist/structure/bonding.js +0 -304
  737. package/dist/structure/export.d.ts +0 -20
  738. package/dist/structure/export.js +0 -725
  739. package/dist/structure/ferrox-wasm-types.d.ts +0 -46
  740. package/dist/structure/ferrox-wasm-types.js +0 -18
  741. package/dist/structure/ferrox-wasm.d.ts +0 -94
  742. package/dist/structure/ferrox-wasm.js +0 -249
  743. package/dist/structure/index.d.ts +0 -110
  744. package/dist/structure/index.js +0 -168
  745. package/dist/structure/measure.d.ts +0 -6
  746. package/dist/structure/measure.js +0 -29
  747. package/dist/structure/parse.d.ts +0 -65
  748. package/dist/structure/parse.js +0 -1374
  749. package/dist/structure/partial-occupancy.d.ts +0 -25
  750. package/dist/structure/partial-occupancy.js +0 -99
  751. package/dist/structure/pbc.d.ts +0 -9
  752. package/dist/structure/pbc.js +0 -123
  753. package/dist/structure/supercell.d.ts +0 -8
  754. package/dist/structure/supercell.js +0 -137
  755. package/dist/structure/validation.d.ts +0 -2
  756. package/dist/structure/validation.js +0 -10
  757. package/dist/symmetry/SymmetryStats.svelte +0 -226
  758. package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
  759. package/dist/symmetry/WyckoffTable.svelte +0 -113
  760. package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
  761. package/dist/symmetry/cell-transform.d.ts +0 -12
  762. package/dist/symmetry/cell-transform.js +0 -77
  763. package/dist/symmetry/index.d.ts +0 -43
  764. package/dist/symmetry/index.js +0 -229
  765. package/dist/symmetry/spacegroups.d.ts +0 -9
  766. package/dist/symmetry/spacegroups.js +0 -394
  767. package/dist/table/HeatmapTable.svelte +0 -1854
  768. package/dist/table/HeatmapTable.svelte.d.ts +0 -49
  769. package/dist/table/ToggleMenu.svelte +0 -376
  770. package/dist/table/ToggleMenu.svelte.d.ts +0 -11
  771. package/dist/table/index.d.ts +0 -74
  772. package/dist/table/index.js +0 -38
  773. package/dist/theme/ThemeControl.svelte +0 -53
  774. package/dist/theme/ThemeControl.svelte.d.ts +0 -9
  775. package/dist/theme/index.d.ts +0 -29
  776. package/dist/theme/index.js +0 -79
  777. package/dist/theme/themes.mjs +0 -285
  778. package/dist/time.d.ts +0 -4
  779. package/dist/time.js +0 -70
  780. package/dist/tooltip/TooltipContent.svelte +0 -58
  781. package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
  782. package/dist/tooltip/index.d.ts +0 -2
  783. package/dist/tooltip/index.js +0 -2
  784. package/dist/tooltip/types.d.ts +0 -8
  785. package/dist/tooltip/types.js +0 -1
  786. package/dist/trajectory/Trajectory.svelte +0 -1517
  787. package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
  788. package/dist/trajectory/TrajectoryError.svelte +0 -128
  789. package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
  790. package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
  791. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
  792. package/dist/trajectory/TrajectoryInfoPane.svelte +0 -387
  793. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
  794. package/dist/trajectory/constants.d.ts +0 -6
  795. package/dist/trajectory/constants.js +0 -7
  796. package/dist/trajectory/extract.d.ts +0 -5
  797. package/dist/trajectory/extract.js +0 -162
  798. package/dist/trajectory/format-detect.d.ts +0 -9
  799. package/dist/trajectory/format-detect.js +0 -76
  800. package/dist/trajectory/frame-reader.d.ts +0 -17
  801. package/dist/trajectory/frame-reader.js +0 -332
  802. package/dist/trajectory/helpers.d.ts +0 -14
  803. package/dist/trajectory/helpers.js +0 -172
  804. package/dist/trajectory/index.d.ts +0 -63
  805. package/dist/trajectory/index.js +0 -126
  806. package/dist/trajectory/parse/ase.d.ts +0 -2
  807. package/dist/trajectory/parse/ase.js +0 -77
  808. package/dist/trajectory/parse/hdf5.d.ts +0 -2
  809. package/dist/trajectory/parse/hdf5.js +0 -129
  810. package/dist/trajectory/parse/index.d.ts +0 -12
  811. package/dist/trajectory/parse/index.js +0 -299
  812. package/dist/trajectory/parse/lammps.d.ts +0 -5
  813. package/dist/trajectory/parse/lammps.js +0 -179
  814. package/dist/trajectory/parse/vasp.d.ts +0 -2
  815. package/dist/trajectory/parse/vasp.js +0 -68
  816. package/dist/trajectory/parse/xyz.d.ts +0 -2
  817. package/dist/trajectory/parse/xyz.js +0 -110
  818. package/dist/trajectory/plotting.d.ts +0 -28
  819. package/dist/trajectory/plotting.js +0 -423
  820. package/dist/trajectory/types.d.ts +0 -11
  821. package/dist/trajectory/types.js +0 -1
  822. package/dist/utils.d.ts +0 -5
  823. package/dist/utils.js +0 -36
  824. package/dist/xrd/XrdPlot.svelte +0 -615
  825. package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
  826. package/dist/xrd/broadening.d.ts +0 -20
  827. package/dist/xrd/broadening.js +0 -97
  828. package/dist/xrd/calc-xrd.d.ts +0 -37
  829. package/dist/xrd/calc-xrd.js +0 -337
  830. package/dist/xrd/index.d.ts +0 -37
  831. package/dist/xrd/index.js +0 -4
  832. package/dist/xrd/parse.d.ts +0 -13
  833. package/dist/xrd/parse.js +0 -749
  834. /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
  835. /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
  836. /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
  837. /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
  838. /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
  839. /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
  840. /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
  841. /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
  842. /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
  843. /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
  844. /package/dist/{element → src/lib/element}/data.json +0 -0
  845. /package/dist/{element → src/lib/element}/data.json.gz +0 -0
  846. /package/dist/{element → src/lib/element}/data.schema.json +0 -0
  847. /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
  848. /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
  849. /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
  850. /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
  851. /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
  852. /package/dist/{xrd → src/lib/xrd}/atomic_scattering_params.json +0 -0
@@ -1,725 +0,0 @@
1
- import { get_electro_neg_formula } from '../composition';
2
- import { download } from '../io/fetch';
3
- import * as math from '../math';
4
- import { Color, Group, Matrix4, Mesh, MeshStandardMaterial, ShaderMaterial } from 'three';
5
- import { GLTFExporter } from 'three/examples/jsm/exporters/GLTFExporter.js';
6
- import { OBJExporter } from 'three/examples/jsm/exporters/OBJExporter.js';
7
- // Type guard to check if a material has a color property (duck typing for bundler compatibility)
8
- // Uses duck typing to work across different Three.js instances (Threlte vs vanilla Three.js)
9
- export function has_color_property(mat) {
10
- if (!(`color` in mat))
11
- return false;
12
- const color = mat.color;
13
- if (!color || typeof color !== `object`)
14
- return false;
15
- // Check for Color-like object with numeric r/g/b channels (duck typing)
16
- const color_obj = color;
17
- const red_channel = color_obj.r;
18
- const green_channel = color_obj.g;
19
- const blue_channel = color_obj.b;
20
- return (typeof red_channel === `number` &&
21
- typeof green_channel === `number` &&
22
- typeof blue_channel === `number`);
23
- }
24
- // Extract color from a ShaderMaterial by checking common color uniform patterns
25
- function extract_shader_color(shader_mat) {
26
- const uniforms = shader_mat.uniforms;
27
- if (!uniforms)
28
- return null;
29
- // Check for common color uniform names
30
- for (const key of [`color`, `diffuse`, `baseColor`, `uColor`]) {
31
- if (uniforms[key]?.value instanceof Color) {
32
- return uniforms[key].value.clone();
33
- }
34
- }
35
- // For gradient bonds, try to extract midpoint color from instanceColorStart/End attributes
36
- // These are set as geometry attributes, not uniforms, so we return a default gray
37
- return null;
38
- }
39
- // Convert ShaderMaterial to MeshStandardMaterial for export compatibility
40
- function convert_shader_to_standard(shader_mat) {
41
- const extracted_color = extract_shader_color(shader_mat);
42
- const standard_mat = new MeshStandardMaterial({
43
- color: extracted_color ?? new Color(0.5, 0.5, 0.5),
44
- metalness: 0.1,
45
- roughness: 0.5,
46
- });
47
- standard_mat.name = shader_mat.name || `converted_shader_material`;
48
- return standard_mat;
49
- }
50
- // Extract bond gradient colors from geometry attributes for a specific instance
51
- // Returns midpoint color between start and end colors for the bond
52
- export function extract_bond_color_for_instance(geometry, instance_idx) {
53
- const color_start_attr = geometry.getAttribute(`instanceColorStart`);
54
- const color_end_attr = geometry.getAttribute(`instanceColorEnd`);
55
- if (!color_start_attr || !color_end_attr)
56
- return null;
57
- if (instance_idx < 0 || instance_idx >= color_start_attr.count)
58
- return null;
59
- // Get RGB values for this instance and compute midpoint color
60
- const start_rgb = [
61
- color_start_attr.getX(instance_idx),
62
- color_start_attr.getY(instance_idx),
63
- color_start_attr.getZ(instance_idx),
64
- ];
65
- const end_rgb = [
66
- color_end_attr.getX(instance_idx),
67
- color_end_attr.getY(instance_idx),
68
- color_end_attr.getZ(instance_idx),
69
- ];
70
- const [mid_r, mid_g, mid_b] = math.scale(math.add(start_rgb, end_rgb), 0.5);
71
- return new Color(mid_r, mid_g, mid_b);
72
- }
73
- // Remove custom/non-standard attributes from geometry that cause export issues
74
- // Standard GLTF attributes: position, normal, tangent, texcoord_N, color_N, joints_N, weights_N
75
- export function clean_geometry_for_export(geometry) {
76
- const standard_attrs = new Set([
77
- `position`,
78
- `normal`,
79
- `tangent`,
80
- `uv`,
81
- `uv1`,
82
- `uv2`,
83
- `uv3`,
84
- `color`,
85
- `skinIndex`,
86
- `skinWeight`,
87
- ]);
88
- const attrs_to_remove = [];
89
- for (const attr_name of Object.keys(geometry.attributes)) {
90
- // Keep standard attributes and those starting with underscore (GLTF custom)
91
- // But remove instance-specific attributes that cause accessor count mismatches
92
- const lower_name = attr_name.toLowerCase();
93
- if (lower_name.includes(`instance`) ||
94
- (lower_name.includes(`color`) && !standard_attrs.has(lower_name)))
95
- attrs_to_remove.push(attr_name);
96
- }
97
- for (const attr_name of attrs_to_remove) {
98
- geometry.deleteAttribute(attr_name);
99
- }
100
- }
101
- // Generate MTL (Wavefront Material) content from scene materials
102
- export function generate_mtl_content(scene) {
103
- const lines = [`# MTL file generated by MatterViz`, ``];
104
- const processed_materials = new Set();
105
- scene.traverse((object) => {
106
- if (!(object instanceof Mesh))
107
- return;
108
- const materials = Array.isArray(object.material) ? object.material : [object.material];
109
- for (const mat of materials) {
110
- // Skip if already processed or no name
111
- const mat_name = mat.name || `default_material`;
112
- if (processed_materials.has(mat_name))
113
- continue;
114
- processed_materials.add(mat_name);
115
- lines.push(`newmtl ${mat_name}`);
116
- // Get diffuse color (main color)
117
- if (has_color_property(mat)) {
118
- const color = mat.color;
119
- lines.push(`Kd ${color.r.toFixed(6)} ${color.g.toFixed(6)} ${color.b.toFixed(6)}`);
120
- // Ambient is typically a fraction of diffuse
121
- lines.push(`Ka ${(color.r * 0.2).toFixed(6)} ${(color.g * 0.2).toFixed(6)} ${(color.b * 0.2).toFixed(6)}`);
122
- }
123
- else {
124
- // Default white if no color
125
- lines.push(`Kd 1.000000 1.000000 1.000000`);
126
- lines.push(`Ka 0.200000 0.200000 0.200000`);
127
- }
128
- // Specular properties
129
- lines.push(`Ks 0.500000 0.500000 0.500000`);
130
- lines.push(`Ns 96.078431`); // Specular exponent
131
- // Transparency (d = 1.0 is fully opaque)
132
- const opacity = `opacity` in mat && typeof mat.opacity === `number` ? mat.opacity : 1.0;
133
- lines.push(`d ${opacity.toFixed(6)}`);
134
- // Illumination model (2 = highlight on)
135
- lines.push(`illum 2`);
136
- lines.push(``);
137
- }
138
- });
139
- return lines.join(`\n`);
140
- }
141
- // Extract color from material, returning RGB values or null if not found
142
- function extract_material_color(mat) {
143
- if (has_color_property(mat)) {
144
- return { r: mat.color.r, g: mat.color.g, b: mat.color.b };
145
- }
146
- return null;
147
- }
148
- // Helper function to convert InstancedMesh to regular Mesh objects for export
149
- // This is necessary because GLB/OBJ exporters don't handle InstancedMesh properly
150
- // Note: Threlte's InstancedMesh sets isInstancedMesh=true but type remains "Mesh"
151
- // Type guard for InstancedMesh (Three.js uses isInstancedMesh property, not exposed in Object3D type)
152
- const is_instanced_mesh = (obj) => obj.isInstancedMesh || obj.type === `InstancedMesh`;
153
- function convert_instanced_meshes_to_regular(scene) {
154
- // STEP 1: Collect material colors from ORIGINAL scene BEFORE cloning
155
- // This is crucial because scene.clone() may not properly preserve Threlte's material colors
156
- const material_colors = new Map();
157
- const bond_colors_map = new Map();
158
- scene.traverse((object) => {
159
- const is_instanced = is_instanced_mesh(object);
160
- if (!is_instanced)
161
- return;
162
- const instanced_mesh = object;
163
- const mesh_id = instanced_mesh.uuid;
164
- // Check if this is a shader material (bonds)
165
- const mat = instanced_mesh.material;
166
- const is_shader = Array.isArray(mat)
167
- ? mat.some((m) => m instanceof ShaderMaterial)
168
- : mat instanceof ShaderMaterial;
169
- if (is_shader) {
170
- // Extract bond colors for each instance from geometry attributes
171
- const instance_colors = new Map();
172
- for (let idx = 0; idx < instanced_mesh.count; idx++) {
173
- const bond_color = extract_bond_color_for_instance(instanced_mesh.geometry, idx);
174
- if (bond_color) {
175
- instance_colors.set(idx, bond_color);
176
- }
177
- }
178
- bond_colors_map.set(mesh_id, instance_colors);
179
- }
180
- else {
181
- // Extract shared material color for atoms
182
- const single_mat = Array.isArray(mat) ? mat[0] : mat;
183
- const color = extract_material_color(single_mat);
184
- if (color) {
185
- material_colors.set(mesh_id, color);
186
- }
187
- }
188
- });
189
- // STEP 2: Clone the scene
190
- const cloned_scene = scene.clone();
191
- // STEP 3: Find all InstancedMesh objects in the cloned scene and build uuid mapping
192
- const original_meshes = [];
193
- const cloned_meshes = [];
194
- scene.traverse((object) => {
195
- if (is_instanced_mesh(object))
196
- original_meshes.push(object);
197
- });
198
- cloned_scene.traverse((object) => {
199
- if (is_instanced_mesh(object))
200
- cloned_meshes.push(object);
201
- });
202
- // STEP 4: Convert each InstancedMesh to individual Mesh objects
203
- for (let mesh_idx = 0; mesh_idx < cloned_meshes.length; mesh_idx++) {
204
- const instanced_mesh = cloned_meshes[mesh_idx];
205
- const original_mesh = original_meshes[mesh_idx];
206
- const original_uuid = original_mesh?.uuid || instanced_mesh.uuid;
207
- const parent = instanced_mesh.parent;
208
- if (!parent || !instanced_mesh.instanceMatrix)
209
- continue;
210
- // Create a group to hold all the individual meshes
211
- const group = new Group();
212
- group.name = instanced_mesh.name;
213
- // Get the base transform from the InstancedMesh
214
- const base_matrix = new Matrix4();
215
- base_matrix.copy(instanced_mesh.matrix);
216
- // Get stored colors for this mesh
217
- const stored_color = material_colors.get(original_uuid);
218
- const stored_bond_colors = bond_colors_map.get(original_uuid);
219
- // Check if material is a ShaderMaterial
220
- const original_material = instanced_mesh.material;
221
- const has_shader = Array.isArray(original_material)
222
- ? original_material.some((mat) => mat instanceof ShaderMaterial)
223
- : original_material instanceof ShaderMaterial;
224
- // Create individual meshes for each instance
225
- const instance_matrix = new Matrix4();
226
- for (let idx = 0; idx < instanced_mesh.count; idx++) {
227
- instanced_mesh.getMatrixAt(idx, instance_matrix);
228
- // Clone geometry
229
- const cloned_geometry = instanced_mesh.geometry.clone();
230
- // Clean up custom attributes from shader-based geometries
231
- if (has_shader) {
232
- clean_geometry_for_export(cloned_geometry);
233
- }
234
- // Create material - always create fresh MeshStandardMaterial for reliability
235
- const new_material = new MeshStandardMaterial({
236
- metalness: 0.1,
237
- roughness: 0.5,
238
- });
239
- new_material.name = `material_${mesh_idx}_${idx}`;
240
- // Apply the correct color
241
- const bond_color = stored_bond_colors?.get(idx);
242
- if (bond_color) {
243
- // Bond with gradient color - use stored midpoint color
244
- new_material.color.copy(bond_color);
245
- }
246
- else if (stored_color) {
247
- // Atom with shared material color
248
- new_material.color.setRGB(stored_color.r, stored_color.g, stored_color.b);
249
- }
250
- else if (instanced_mesh.instanceColor) {
251
- // Fallback: per-instance colors from instanceColor attribute
252
- const color_r = instanced_mesh.instanceColor.getX(idx);
253
- const color_g = instanced_mesh.instanceColor.getY(idx);
254
- const color_b = instanced_mesh.instanceColor.getZ(idx);
255
- new_material.color.setRGB(color_r, color_g, color_b);
256
- }
257
- // If no color found, material stays default white
258
- const mesh = new Mesh(cloned_geometry, new_material);
259
- // Combine base transform with instance transform
260
- const combined_matrix = new Matrix4();
261
- combined_matrix.multiplyMatrices(base_matrix, instance_matrix);
262
- mesh.applyMatrix4(combined_matrix);
263
- group.add(mesh);
264
- }
265
- // Replace the InstancedMesh with the Group in the parent
266
- parent.remove(instanced_mesh);
267
- parent.add(group);
268
- // Update world matrices after scene graph modification
269
- group.updateMatrixWorld(true);
270
- }
271
- // Update all world matrices in the modified scene
272
- cloned_scene.updateMatrixWorld(true);
273
- // Convert any remaining ShaderMaterials to standard materials (e.g. non-instanced bonds)
274
- // Also clean up custom geometry attributes that cause export validation errors
275
- cloned_scene.traverse((object) => {
276
- if (object instanceof Mesh) {
277
- let has_shader_material = false;
278
- if (object.material instanceof ShaderMaterial) {
279
- object.material = convert_shader_to_standard(object.material);
280
- has_shader_material = true;
281
- }
282
- else if (Array.isArray(object.material)) {
283
- has_shader_material = object.material.some((mat) => mat instanceof ShaderMaterial);
284
- object.material = object.material.map((mat) => mat instanceof ShaderMaterial ? convert_shader_to_standard(mat) : mat);
285
- }
286
- // Clean up custom attributes from geometries that had shader materials
287
- if (has_shader_material && object.geometry) {
288
- clean_geometry_for_export(object.geometry);
289
- }
290
- }
291
- });
292
- return cloned_scene;
293
- }
294
- // Generate a filename for structure exports based on structure metadata
295
- // Sanitize string for use in filenames by removing problematic characters.
296
- const sanitize_filename_part = (text) => text
297
- .replace(/<\/?[^>]+>/g, ``) // strip HTML tags
298
- .replace(/[/\\:*?"<>|]/g, `_`) // replace filesystem-invalid chars
299
- .replace(/_+/g, `_`) // condense consecutive underscores
300
- .replace(/^_|_$/g, ``); // remove leading/trailing underscores
301
- export function create_structure_filename(structure, extension) {
302
- if (!structure)
303
- return `structure.${extension}`;
304
- const parts = [];
305
- // Helper to sanitize and push non-empty parts
306
- const safe_push = (value) => {
307
- const sanitized = value ? sanitize_filename_part(value) : ``;
308
- if (sanitized)
309
- parts.push(sanitized);
310
- };
311
- safe_push(structure.id);
312
- // Add formula (plain text to avoid HTML in filenames)
313
- const formula = get_electro_neg_formula(structure, true);
314
- if (formula && formula !== `Unknown`) {
315
- safe_push(formula.replaceAll(` `, ``));
316
- }
317
- // Add space group if available
318
- if (`symmetry` in structure &&
319
- structure.symmetry &&
320
- typeof structure.symmetry === `object` &&
321
- `space_group_symbol` in structure.symmetry) {
322
- const space_group = structure.symmetry.space_group_symbol;
323
- if (space_group && typeof space_group === `string`) {
324
- safe_push(space_group.replaceAll(` `, ``));
325
- }
326
- }
327
- // Add lattice system if available
328
- if (`lattice` in structure &&
329
- structure.lattice &&
330
- typeof structure.lattice === `object` &&
331
- `lattice_system` in structure.lattice) {
332
- const lattice_system = structure.lattice.lattice_system;
333
- if (lattice_system && typeof lattice_system === `string`) {
334
- safe_push(lattice_system);
335
- }
336
- }
337
- // Add number of sites
338
- if (structure.sites?.length)
339
- parts.push(`${structure.sites.length}sites`);
340
- const base_name = parts.length > 0 ? parts.join(`-`) : `structure`;
341
- return `${base_name}.${extension}`;
342
- }
343
- // Generate XYZ content string without saving
344
- export function structure_to_xyz_str(structure) {
345
- if (!structure?.sites)
346
- throw new Error(`No structure or sites to export`);
347
- const lines = [];
348
- // First line: number of atoms
349
- lines.push(String(structure.sites.length));
350
- // Second line: comment (structure ID, formula, or default)
351
- const comment_parts = [];
352
- if (structure.id)
353
- comment_parts.push(structure.id);
354
- const formula = get_electro_neg_formula(structure, true);
355
- if (formula && formula !== `Unknown`)
356
- comment_parts.push(formula);
357
- // Include extended XYZ lattice information when available so round-trips preserve lattice
358
- if (`lattice` in structure && structure.lattice?.matrix?.length === 3) {
359
- const lattice_values = structure.lattice.matrix
360
- .flat()
361
- .map((value) => (Number.isFinite(value) ? value : 0).toFixed(8))
362
- .join(` `);
363
- comment_parts.push(`Lattice="${lattice_values}"`);
364
- }
365
- const comment = comment_parts.length > 0 ? comment_parts.join(` `) : `Generated from structure`;
366
- lines.push(comment);
367
- // Cache converter for fractional→Cartesian (if lattice available)
368
- const frac_to_cart = `lattice` in structure && structure.lattice?.matrix?.length === 3
369
- ? math.create_frac_to_cart(structure.lattice.matrix)
370
- : null;
371
- // Atom lines: element symbol followed by x, y, z coordinates
372
- for (const site of structure.sites) {
373
- // Extract element symbol from species
374
- let element_symbol = `X`; // default fallback
375
- if (site.species && Array.isArray(site.species) && site.species.length > 0) {
376
- // species is an array of Species objects with element property
377
- const first_species = site.species[0];
378
- if (first_species && `element` in first_species && first_species.element)
379
- element_symbol = first_species.element;
380
- }
381
- // Get coordinates - prefer xyz; fallback to abc (converted to cartesian if lattice available)
382
- let coords;
383
- if (site.xyz && Array.isArray(site.xyz) && site.xyz.length >= 3) {
384
- coords = site.xyz.slice(0, 3);
385
- }
386
- else if (site.abc?.length >= 3 && frac_to_cart) {
387
- coords = frac_to_cart(site.abc);
388
- }
389
- else
390
- coords = [0, 0, 0]; // fallback
391
- // Format coordinates to reasonable precision
392
- const [x, y, z] = coords.map((coord) => coord.toFixed(6));
393
- lines.push(`${element_symbol} ${x} ${y} ${z}`);
394
- }
395
- return lines.join(`\n`);
396
- }
397
- // Generate a valid CIF data block name from structure formula
398
- // CIF block names can contain alphanumerics, underscores, but no spaces or special chars
399
- function get_cif_block_name(structure) {
400
- try {
401
- // Count atoms per element (rounded to nearest integer for occupancy)
402
- const element_counts = {};
403
- for (const site of structure.sites) {
404
- if (!site.species || !Array.isArray(site.species))
405
- continue;
406
- for (const species of site.species) {
407
- if (!species.element)
408
- continue;
409
- const count = species.occu ?? 1;
410
- element_counts[species.element] = (element_counts[species.element] ?? 0) + count;
411
- }
412
- }
413
- // Sort elements alphabetically and build formula string
414
- const elements = Object.keys(element_counts).sort();
415
- if (elements.length === 0)
416
- throw new Error(`No elements found`);
417
- const formula = elements
418
- .map((el) => {
419
- const count = Math.round(element_counts[el]);
420
- if (count === 0)
421
- return null; // filter out near-zero occupancies
422
- return count === 1 ? el : `${el}${count}`;
423
- })
424
- .filter((part) => part !== null)
425
- .join(``);
426
- if (!formula)
427
- throw new Error(`All occupancies round to zero`);
428
- return formula;
429
- }
430
- catch {
431
- // Fall back to structure.id (sanitized) or generic name
432
- if (structure.id) {
433
- // Remove invalid CIF characters (keep alphanumerics and underscores)
434
- // and condense consecutive underscores for cleaner block names
435
- return structure.id.replace(/[^a-zA-Z0-9_]/g, `_`).replace(/_+/g, `_`);
436
- }
437
- return `structure`;
438
- }
439
- }
440
- // Generate CIF content string without saving
441
- export function structure_to_cif_str(structure) {
442
- if (!structure?.sites)
443
- throw new Error(`No structure or sites to export`);
444
- if (!(`lattice` in structure) || !structure.lattice) {
445
- throw new Error(`No lattice information for CIF export`);
446
- }
447
- const lines = [];
448
- // CIF header with data block (required by pymatgen and CIF spec)
449
- lines.push(`# CIF file generated by MatterViz`);
450
- const block_name = get_cif_block_name(structure);
451
- lines.push(`data_${block_name}`);
452
- lines.push(``);
453
- // Cell parameters
454
- const lattice = structure.lattice;
455
- if (lattice.a && lattice.b && lattice.c) {
456
- lines.push(`_cell_length_a ${lattice.a.toFixed(6)}`);
457
- lines.push(`_cell_length_b ${lattice.b.toFixed(6)}`);
458
- lines.push(`_cell_length_c ${lattice.c.toFixed(6)}`);
459
- }
460
- if (lattice.alpha && lattice.beta && lattice.gamma) {
461
- lines.push(`_cell_angle_alpha ${lattice.alpha.toFixed(6)}`);
462
- lines.push(`_cell_angle_beta ${lattice.beta.toFixed(6)}`);
463
- lines.push(`_cell_angle_gamma ${lattice.gamma.toFixed(6)}`);
464
- }
465
- // Space group information
466
- if (`symmetry` in structure &&
467
- structure.symmetry &&
468
- typeof structure.symmetry === `object`) {
469
- const symmetry = structure.symmetry;
470
- if (`space_group_symbol` in symmetry && symmetry.space_group_symbol) {
471
- lines.push(`_space_group_name_H-M_alt ${symmetry.space_group_symbol}`);
472
- }
473
- if (`space_group_number` in symmetry && symmetry.space_group_number) {
474
- lines.push(`_space_group_IT_number ${symmetry.space_group_number}`);
475
- }
476
- }
477
- lines.push(``);
478
- // Atom site loop header
479
- lines.push(`loop_`);
480
- lines.push(`_atom_site_label`);
481
- lines.push(`_atom_site_type_symbol`);
482
- lines.push(`_atom_site_fract_x`);
483
- lines.push(`_atom_site_fract_y`);
484
- lines.push(`_atom_site_fract_z`);
485
- lines.push(`_atom_site_occupancy`);
486
- // Cache inverse transpose for Cartesian→fractional conversion (avoids recomputing per site)
487
- const cart_to_frac = lattice.matrix?.length === 3 ? math.create_cart_to_frac(lattice.matrix) : null;
488
- // Atom sites
489
- for (let idx = 0; idx < structure.sites.length; idx++) {
490
- const site = structure.sites[idx];
491
- if (!site)
492
- continue; // Skip if site is undefined
493
- // Extract element symbol from species
494
- let element_symbol = `X`; // default fallback
495
- let occupancy = 1;
496
- if (site.species && Array.isArray(site.species) && site.species.length > 0) {
497
- const first_species = site.species[0];
498
- if (first_species && `element` in first_species && first_species.element) {
499
- element_symbol = first_species.element;
500
- occupancy = first_species?.occu ?? 1;
501
- }
502
- }
503
- // Get fractional coordinates
504
- let frac_coords;
505
- if (site.abc && Array.isArray(site.abc) && site.abc.length >= 3) {
506
- frac_coords = site.abc.slice(0, 3);
507
- }
508
- else if (site.xyz?.length >= 3 && cart_to_frac) {
509
- frac_coords = cart_to_frac(site.xyz);
510
- }
511
- else
512
- throw new Error(`No valid coordinates found for site ${idx}`);
513
- // Format: label element_symbol x y z
514
- const label = site.label || `${element_symbol}${idx + 1}`;
515
- lines.push(`${label} ${element_symbol} ${frac_coords[0].toFixed(8)} ${frac_coords[1].toFixed(8)} ${frac_coords[2].toFixed(8)} ${occupancy.toFixed(8)}`);
516
- }
517
- return lines.join(`\n`);
518
- }
519
- // Generate VASP POSCAR content string without saving
520
- export function structure_to_poscar_str(structure) {
521
- if (!structure?.sites)
522
- throw new Error(`No structure or sites to export`);
523
- if (!(`lattice` in structure) || !structure.lattice) {
524
- throw new Error(`No lattice information for POSCAR export`);
525
- }
526
- const lines = [];
527
- // Use plain text formula for POSCAR title to avoid HTML tags
528
- const formula = get_electro_neg_formula(structure, true);
529
- const title = structure.id ||
530
- (formula && formula !== `Unknown` ? formula : null) ||
531
- `Generated from structure`;
532
- lines.push(title);
533
- lines.push(`1.0`); // Scale factor (1.0 for direct coordinates)
534
- const lattice = structure.lattice;
535
- if (lattice.matrix && Array.isArray(lattice.matrix) && lattice.matrix.length >= 3) {
536
- // Convert 3x3 matrix to 3 vectors
537
- const matrix = lattice.matrix;
538
- lines.push(`${matrix[0][0].toFixed(8)} ${matrix[0][1].toFixed(8)} ${matrix[0][2].toFixed(8)}`);
539
- lines.push(`${matrix[1][0].toFixed(8)} ${matrix[1][1].toFixed(8)} ${matrix[1][2].toFixed(8)}`);
540
- lines.push(`${matrix[2][0].toFixed(8)} ${matrix[2][1].toFixed(8)} ${matrix[2][2].toFixed(8)}`);
541
- }
542
- else {
543
- throw new Error(`No valid lattice matrix for POSCAR export`);
544
- }
545
- // Count atoms by element
546
- const element_counts = new Map();
547
- const element_symbols = [];
548
- for (const site of structure.sites) {
549
- let element_symbol = `X`; // default fallback
550
- if (site.species && Array.isArray(site.species) && site.species.length > 0) {
551
- const first_species = site.species[0];
552
- if (first_species && `element` in first_species && first_species.element) {
553
- element_symbol = first_species.element;
554
- }
555
- }
556
- if (!element_counts.has(element_symbol)) {
557
- element_counts.set(element_symbol, 0);
558
- element_symbols.push(element_symbol);
559
- }
560
- element_counts.set(element_symbol, Number(element_counts.get(element_symbol)) + 1);
561
- }
562
- // Element symbols line
563
- lines.push(element_symbols.join(` `));
564
- // Atom counts line
565
- lines.push(element_symbols.map((el) => element_counts.get(el)).join(` `));
566
- // Check if any site has selective dynamics
567
- const has_selective_dynamics = structure.sites.some((site) => site.properties?.selective_dynamics);
568
- if (has_selective_dynamics) {
569
- lines.push(`Selective dynamics`);
570
- }
571
- // Coordinate mode (Direct = fractional coordinates)
572
- lines.push(`Direct`);
573
- // Cache inverse transpose for Cartesian→fractional conversion (avoids recomputing per site)
574
- const cart_to_frac = lattice.matrix?.length === 3 ? math.create_cart_to_frac(lattice.matrix) : null;
575
- // Atom coordinates grouped by element
576
- for (const element_symbol of element_symbols) {
577
- for (const site of structure.sites) {
578
- let site_element = `X`;
579
- if (site.species && Array.isArray(site.species) && site.species.length > 0) {
580
- const first_species = site.species[0];
581
- if (first_species && `element` in first_species && first_species.element) {
582
- site_element = first_species.element;
583
- }
584
- }
585
- if (site_element === element_symbol) {
586
- // Get fractional coordinates
587
- let frac_coords;
588
- if (site.abc && Array.isArray(site.abc) && site.abc.length >= 3) {
589
- frac_coords = site.abc.slice(0, 3);
590
- }
591
- else if (site.xyz?.length >= 3 && cart_to_frac) {
592
- frac_coords = cart_to_frac(site.xyz.slice(0, 3));
593
- }
594
- else {
595
- throw new Error(`No valid coordinates found for site`);
596
- }
597
- let selective_dynamics_str = ``;
598
- if (has_selective_dynamics) {
599
- const sel_dyn = (site.properties?.selective_dynamics ?? [
600
- true,
601
- true,
602
- true,
603
- ]);
604
- selective_dynamics_str = ` ${sel_dyn[0] ? `T` : `F`} ${sel_dyn[1] ? `T` : `F`} ${sel_dyn[2] ? `T` : `F`}`;
605
- }
606
- lines.push(`${frac_coords[0].toFixed(8)} ${frac_coords[1].toFixed(8)} ${frac_coords[2].toFixed(8)}${selective_dynamics_str}`);
607
- }
608
- }
609
- }
610
- return lines.join(`\n`);
611
- }
612
- // Generate JSON content string without saving
613
- export function structure_to_json_str(structure) {
614
- if (!structure)
615
- throw new Error(`No structure to export`);
616
- return JSON.stringify(structure, null, 2);
617
- }
618
- // Export structure as CIF format
619
- export function export_structure_as_cif(structure) {
620
- try {
621
- const content = structure_to_cif_str(structure);
622
- const filename = create_structure_filename(structure, `cif`);
623
- download(content, filename, `chemical/x-cif`);
624
- }
625
- catch (error) {
626
- console.error(`Failed to export CIF:`, error);
627
- }
628
- }
629
- // Export structure as VASP POSCAR format
630
- export function export_structure_as_poscar(structure) {
631
- try {
632
- const content = structure_to_poscar_str(structure);
633
- const filename = create_structure_filename(structure, `poscar`);
634
- download(content, filename, `text/plain`);
635
- }
636
- catch (error) {
637
- console.error(`Failed to export POSCAR:`, error);
638
- }
639
- }
640
- // Export structure as XYZ format. Format specification:
641
- // - Line 1: Number of atoms
642
- // - Line 2: Comment line (structure ID, formula, etc.)
643
- // - Remaining lines: Element symbol followed by x, y, z coordinates (in Angstrom)
644
- export function export_structure_as_xyz(structure) {
645
- try {
646
- const xyz_content = structure_to_xyz_str(structure);
647
- const filename = create_structure_filename(structure, `xyz`);
648
- download(xyz_content, filename, `text/plain`);
649
- }
650
- catch (error) {
651
- console.error(`Error exporting XYZ:`, error);
652
- }
653
- }
654
- // Export structure in pymatgen JSON format
655
- export function export_structure_as_json(structure) {
656
- try {
657
- const data = structure_to_json_str(structure);
658
- const filename = create_structure_filename(structure, `json`);
659
- download(data, filename, `application/json`);
660
- }
661
- catch (error) {
662
- console.error(`Error exporting JSON:`, error);
663
- }
664
- }
665
- // Export Three.js scene as GLB (binary GLTF) file
666
- // GLB preserves materials and colors, making it ideal for element visualization
667
- export function export_structure_as_glb(scene, structure) {
668
- try {
669
- if (!scene) {
670
- console.warn(`No scene available for GLB export`);
671
- return;
672
- }
673
- // Convert instanced meshes to regular meshes for export
674
- const export_scene = convert_instanced_meshes_to_regular(scene);
675
- const exporter = new GLTFExporter();
676
- const filename = create_structure_filename(structure, `glb`);
677
- // Export as binary GLB format
678
- exporter.parse(export_scene, (result) => {
679
- if (result instanceof ArrayBuffer) {
680
- const blob = new Blob([result], { type: `model/gltf-binary` });
681
- download(blob, filename, `model/gltf-binary`);
682
- }
683
- else {
684
- console.error(`GLB export returned unexpected format`);
685
- }
686
- }, (error) => {
687
- console.error(`GLB export failed:`, error);
688
- }, { binary: true });
689
- }
690
- catch (error) {
691
- console.error(`Error exporting GLB:`, error);
692
- }
693
- }
694
- // Export Three.js scene as OBJ (Wavefront Object) file with accompanying MTL file for materials
695
- // OBJ exports geometry with material references, MTL contains color definitions
696
- export function export_structure_as_obj(scene, structure) {
697
- try {
698
- if (!scene) {
699
- console.warn(`No scene available for OBJ export`);
700
- return;
701
- }
702
- // Convert instanced meshes to regular meshes for export
703
- const export_scene = convert_instanced_meshes_to_regular(scene);
704
- const obj_exporter = new OBJExporter();
705
- const base_filename = create_structure_filename(structure, ``).replace(/\.$/, ``);
706
- const obj_filename = `${base_filename}.obj`;
707
- const mtl_filename = `${base_filename}.mtl`;
708
- // Generate OBJ content with material library reference
709
- let obj_content = obj_exporter.parse(export_scene);
710
- // Add material library reference at the beginning of the OBJ file
711
- obj_content = `mtllib ${mtl_filename}\n${obj_content}`;
712
- // Generate MTL content with material color definitions
713
- const mtl_content = generate_mtl_content(export_scene);
714
- // Download both files
715
- const obj_blob = new Blob([obj_content], { type: `text/plain` });
716
- const mtl_blob = new Blob([mtl_content], { type: `text/plain` });
717
- download(obj_blob, obj_filename, `text/plain`);
718
- // Small delay to prevent some browsers from blocking rapid successive downloads as potential abuse.
719
- // A more robust solution might be to zip both files together.
720
- setTimeout(() => download(mtl_blob, mtl_filename, `text/plain`), 100);
721
- }
722
- catch (error) {
723
- console.error(`Error exporting OBJ:`, error);
724
- }
725
- }