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
@@ -0,0 +1,130 @@
1
+ import type { XrdPattern } from './index'
2
+
3
+ const LOG_2 = Math.log(2)
4
+
5
+ // Broadening parameters for simulated XRD pattern.
6
+ // U, V, W are Caglioti parameters.
7
+ // shape_factor (eta) is the Pseudo-Voigt mixing parameter (0 = Gaussian, 1 = Lorentzian).
8
+ export type BroadeningParams = {
9
+ U: number
10
+ V: number
11
+ W: number
12
+ shape_factor: number
13
+ }
14
+
15
+ export const DEFAULT_BROADENING: BroadeningParams = {
16
+ U: 0.04,
17
+ V: -0.02,
18
+ W: 0.02,
19
+ shape_factor: 0.5, // Mixed Gaussian/Lorentzian
20
+ }
21
+
22
+ // Calculates the Full Width at Half Maximum (FWHM) at a given theta angle
23
+ // using the Caglioti formula: FWHM^2 = U * tan^2(theta) + V * tan(theta) + W
24
+ export function caglioti_fwhm(
25
+ two_theta: number, // Angle in degrees (2θ)
26
+ U: number, // Caglioti parameter U
27
+ V: number, // Caglioti parameter V
28
+ W: number, // Caglioti parameter W
29
+ ): number {
30
+ // FWHM in degrees (2θ)
31
+ const theta_rad = (two_theta / 2) * (Math.PI / 180)
32
+ const tan_theta = Math.tan(theta_rad)
33
+ const fwhm_sq = U * tan_theta ** 2 + V * tan_theta + W
34
+ // Ensure non-negative squared width
35
+ return Math.sqrt(Math.max(1e-9, fwhm_sq))
36
+ }
37
+
38
+ // Normalized Gaussian profile. x: position, x0: peak center, fwhm: Full Width at Half Maximum
39
+ function gaussian(x: number, x0: number, fwhm: number): number {
40
+ // Intensity at x
41
+ const safe_fwhm = Math.max(fwhm, 1e-9)
42
+ const sigma = safe_fwhm / (2 * Math.sqrt(2 * LOG_2))
43
+ const prefactor = 1 / (sigma * Math.sqrt(2 * Math.PI))
44
+ const exponent = -((x - x0) ** 2) / (2 * sigma ** 2)
45
+ return prefactor * Math.exp(exponent)
46
+ }
47
+
48
+ // Normalized Lorentzian profile. x: position, x0: peak center, fwhm: Full Width at Half Maximum
49
+ function lorentzian(x: number, x0: number, fwhm: number): number {
50
+ // Intensity at x
51
+ const safe_fwhm = Math.max(fwhm, 1e-9)
52
+ const gamma = safe_fwhm / 2
53
+ const prefactor = 1 / (Math.PI * gamma)
54
+ const denominator = 1 + ((x - x0) / gamma) ** 2
55
+ return prefactor / denominator
56
+ }
57
+
58
+ // Pseudo-Voigt profile (linear combination of Gaussian and Lorentzian).
59
+ export function pseudo_voigt(
60
+ x: number, // Position
61
+ x0: number, // Peak center
62
+ fwhm: number, // Full Width at Half Maximum
63
+ eta: number, // Mixing parameter (0 = Gaussian, 1 = Lorentzian)
64
+ ): number {
65
+ // Intensity at x
66
+ // Clamp eta to [0, 1]
67
+ const safe_eta = Math.max(0, Math.min(1, eta))
68
+ return safe_eta * lorentzian(x, x0, fwhm) + (1 - safe_eta) * gaussian(x, x0, fwhm)
69
+ }
70
+
71
+ // Computes a broadened XRD pattern from discrete peaks.
72
+ export function compute_broadened_pattern(
73
+ pattern: XrdPattern, // Discrete XRD pattern (peaks)
74
+ params: BroadeningParams, // Broadening parameters (U, V, W, shape_factor)
75
+ range: [number, number], // Angular range [min, max] in degrees
76
+ step_size: number = 0.02, // Step size in degrees (default 0.02)
77
+ ): XrdPattern {
78
+ // Continuous broadened pattern
79
+ if (!Number.isFinite(step_size) || step_size <= 0) {
80
+ throw new Error(`step_size must be > 0 and finite`)
81
+ }
82
+
83
+ const [min_angle, max_angle] = range
84
+ if (!Number.isFinite(min_angle) || !Number.isFinite(max_angle) || max_angle <= min_angle) {
85
+ throw new Error(`range must be finite and max > min`)
86
+ }
87
+
88
+ const { U, V, W, shape_factor } = params
89
+
90
+ // Create x grid
91
+ const n_steps = Math.ceil((max_angle - min_angle) / step_size)
92
+ const xs = new Float32Array(n_steps)
93
+ const ys = new Float32Array(n_steps)
94
+
95
+ for (let idx = 0; idx < n_steps; idx++) {
96
+ xs[idx] = min_angle + idx * step_size
97
+ }
98
+
99
+ const { x: peak_pos, y: peak_int } = pattern
100
+
101
+ // Optimization: Process each peak and add to grid
102
+ for (let peak_idx = 0; peak_idx < peak_pos.length; peak_idx++) {
103
+ const x0 = peak_pos[peak_idx]
104
+ const intensity = peak_int[peak_idx]
105
+
106
+ // Skip negligible peaks
107
+ if (intensity < 1e-5) continue
108
+ // Skip peaks outside range (with some buffer)
109
+ if (x0 < min_angle - 5 || x0 > max_angle + 5) continue
110
+
111
+ const fwhm = caglioti_fwhm(x0, U, V, W)
112
+
113
+ // Define window for calculation (e.g. +/- 10 * FWHM or fixed reasonable range)
114
+ // Lorentzian tails are long, so we need a decent window.
115
+ // 20 * FWHM is usually sufficient for visual purposes.
116
+ const window = 20 * fwhm
117
+ const start_idx = Math.max(0, Math.floor((x0 - window - min_angle) / step_size))
118
+ const end_idx = Math.min(n_steps - 1, Math.ceil((x0 + window - min_angle) / step_size))
119
+
120
+ for (let idx = start_idx; idx <= end_idx; idx++) {
121
+ const x = xs[idx]
122
+ ys[idx] += intensity * pseudo_voigt(x, x0, fwhm, shape_factor)
123
+ }
124
+ }
125
+
126
+ // Convert back to number[]
127
+ // We don't map hkls to continuous profile points usually,
128
+ // or we could try to map them to the nearest peak, but for now leave undefined.
129
+ return { x: Array.from(xs), y: Array.from(ys) }
130
+ }
@@ -0,0 +1,397 @@
1
+ import type { CompositionType } from '$lib/composition'
2
+ import type { ElementSymbol } from '$lib/element'
3
+ import { element_data } from '$lib/element'
4
+ import * as math from '$lib/math'
5
+ import type { Crystal } from '$lib/structure/index'
6
+ import { parse_any_structure } from '$lib/structure/parse'
7
+ import { is_crystal } from '$lib/structure/validation'
8
+ // Single source of truth for atomic scattering params
9
+ import ATOMIC_SCATTERING_PARAMS from './atomic_scattering_params.json' with { type: 'json' }
10
+ import type { Hkl, HklObj, PatternEntry, RecipPoint, XrdOptions, XrdPattern } from './index'
11
+ import { is_xrd_data_file, parse_xrd_file } from './parse'
12
+
13
+ // JSON import yields Record<string, number[][]>; type for element-keyed scattering params
14
+ type ScatteringParamsRecord = Partial<
15
+ Record<ElementSymbol, number[][] | { a: number[]; b: number[]; c?: number }>
16
+ >
17
+
18
+ // XRD wavelengths in Angstrom (Å)
19
+ export const WAVELENGTHS = {
20
+ CuKa: 1.54184,
21
+ CuKa2: 1.54439,
22
+ CuKa1: 1.54056,
23
+ CuKb1: 1.39222,
24
+ MoKa: 0.71073,
25
+ MoKa2: 0.71359,
26
+ MoKa1: 0.7093,
27
+ MoKb1: 0.63229,
28
+ CrKa: 2.291,
29
+ CrKa2: 2.29361,
30
+ CrKa1: 2.2897,
31
+ CrKb1: 2.08487,
32
+ FeKa: 1.93735,
33
+ FeKa2: 1.93998,
34
+ FeKa1: 1.93604,
35
+ FeKb1: 1.75661,
36
+ CoKa: 1.79026,
37
+ CoKa2: 1.79285,
38
+ CoKa1: 1.78896,
39
+ CoKb1: 1.63079,
40
+ AgKa: 0.560885,
41
+ AgKa2: 0.563813,
42
+ AgKa1: 0.559421,
43
+ AgKb1: 0.497082,
44
+ } as const
45
+
46
+ export type RadiationKey = keyof typeof WAVELENGTHS
47
+
48
+ // Type guard to safely check if a string is a valid RadiationKey
49
+ const is_radiation_key = (key: string): key is RadiationKey => key in WAVELENGTHS
50
+
51
+ // Tolerances from pymatgen.analysis.diffraction.core
52
+ const TWO_THETA_TOL = 1e-5
53
+ const SCALED_INTENSITY_TOL = 1e-3
54
+
55
+ const ELEMENT_Z = Object.fromEntries(
56
+ element_data.map((entry) => [entry.symbol, entry.number]),
57
+ ) as CompositionType
58
+
59
+ function get_unique_families(hkls: Hkl[]): Map<string, number> {
60
+ // Port of pymatgen's get_unique_families: group Miller indices by absolute-value permutations
61
+ const key_map = new Map<string, Hkl[]>()
62
+ for (const hkl of hkls) {
63
+ const abs_sorted = hkl.map((val) => Math.abs(val)).sort((x, y) => x - y)
64
+ const key = abs_sorted.join(`,`)
65
+ const list = key_map.get(key)
66
+ if (list) list.push(hkl)
67
+ else key_map.set(key, [hkl])
68
+ }
69
+ // Choose representative with max tuple (lexicographic) like numpy max(val)
70
+ const family_map = new Map<string, number>()
71
+ for (const group of key_map.values()) {
72
+ let representative: Hkl = group[0]
73
+ for (const candidate of group) {
74
+ const better =
75
+ candidate[0] > representative[0] ||
76
+ (candidate[0] === representative[0] &&
77
+ (candidate[1] > representative[1] ||
78
+ (candidate[1] === representative[1] && candidate[2] > representative[2])))
79
+ if (better) representative = candidate
80
+ }
81
+ family_map.set(representative.join(`,`), group.length)
82
+ }
83
+ return family_map
84
+ }
85
+
86
+ function compute_reciprocal_lattice_rows(structure: Crystal): number[][] {
87
+ // For row-wise lattice matrix A (rows are a, b, c), reciprocal rows are inv(A)^T
88
+ const direct = structure.lattice.matrix
89
+ const inv = math.matrix_inverse_3x3(direct)
90
+ const recip = math.transpose_3x3_matrix(inv)
91
+ return recip
92
+ }
93
+
94
+ function enumerate_reciprocal_points(
95
+ recip_rows: number[][],
96
+ max_radius: number,
97
+ min_radius: number,
98
+ ): RecipPoint[] {
99
+ const recip_b1 = recip_rows[0]
100
+ const recip_b2 = recip_rows[1]
101
+ const recip_b3 = recip_rows[2]
102
+ const n1 = Math.max(Math.hypot(...recip_b1), 1e-12)
103
+ const n2 = Math.max(Math.hypot(...recip_b2), 1e-12)
104
+ const n3 = Math.max(Math.hypot(...recip_b3), 1e-12)
105
+ const h_max = Math.ceil(max_radius / n1 + 2)
106
+ const k_max = Math.ceil(max_radius / n2 + 2)
107
+ const l_max = Math.ceil(max_radius / n3 + 2)
108
+ // Safety cap to avoid pathological enumeration volume
109
+ const CAP = 512
110
+ if (Math.max(h_max, k_max, l_max) > CAP) {
111
+ throw new Error(`enumerate_reciprocal_points: max(h,k,l) exceeds cap ${CAP}`)
112
+ }
113
+
114
+ const points: RecipPoint[] = []
115
+ for (let h_idx = -h_max; h_idx <= h_max; h_idx++) {
116
+ for (let k_idx = -k_max; k_idx <= k_max; k_idx++) {
117
+ for (let l_idx = -l_max; l_idx <= l_max; l_idx++) {
118
+ if (h_idx === 0 && k_idx === 0 && l_idx === 0) continue
119
+ const h_mul_b1 = math.scale(recip_b1, h_idx)
120
+ const k_mul_b2 = math.scale(recip_b2, k_idx)
121
+ const l_mul_b3 = math.scale(recip_b3, l_idx)
122
+ const g_vec = math.add(h_mul_b1, k_mul_b2, l_mul_b3)
123
+ const g_norm = Math.hypot(...g_vec)
124
+ if (g_norm < min_radius || g_norm > max_radius) continue
125
+ points.push({ hkl: [h_idx, k_idx, l_idx], g_norm })
126
+ }
127
+ }
128
+ }
129
+ // Sort by (g_norm asc, -h, -k, -l) to mimic pymatgen ordering
130
+ points.sort((p1, p2) =>
131
+ p1.g_norm !== p2.g_norm
132
+ ? p1.g_norm - p2.g_norm
133
+ : p2.hkl[0] !== p1.hkl[0]
134
+ ? p2.hkl[0] - p1.hkl[0]
135
+ : p2.hkl[1] !== p1.hkl[1]
136
+ ? p2.hkl[1] - p1.hkl[1]
137
+ : p2.hkl[2] - p1.hkl[2],
138
+ )
139
+ return points
140
+ }
141
+
142
+ export function compute_xrd_pattern(structure: Crystal, options: XrdOptions = {}): XrdPattern {
143
+ const wl_input = options.wavelength ?? `CuKa`
144
+ let wavelength: number
145
+ if (typeof wl_input === `number`) {
146
+ if (!Number.isFinite(wl_input) || wl_input <= 0) {
147
+ throw new Error(`Invalid wavelength: ${wl_input}. Must be a finite positive number.`)
148
+ }
149
+ wavelength = wl_input
150
+ } else {
151
+ if (!is_radiation_key(wl_input)) {
152
+ throw new Error(`Unknown radiation key: ${wl_input}`)
153
+ }
154
+ wavelength = WAVELENGTHS[wl_input]
155
+ }
156
+
157
+ // Symmetry refinement (symprec > 0) is not implemented in TS version.
158
+ // Option retained for API parity.
159
+ // const symprec = options.symprec ?? 0
160
+
161
+ const recip_rows = compute_reciprocal_lattice_rows(structure)
162
+
163
+ // Bragg condition bounds: reciprocal vector length r = 2 sin(theta) / lambda
164
+ const two_theta_range =
165
+ options.two_theta_range === null ? null : (options.two_theta_range ?? [0, 180])
166
+ const [min_radius, max_radius] =
167
+ two_theta_range === null
168
+ ? [0, 2 / wavelength]
169
+ : (([t_min, t_max]: [number, number]) => {
170
+ const r_min = (2 * Math.sin((t_min / 2) * (Math.PI / 180))) / wavelength
171
+ const r_max = (2 * Math.sin((t_max / 2) * (Math.PI / 180))) / wavelength
172
+ return [r_min, r_max]
173
+ })(two_theta_range)
174
+
175
+ const recip_points = enumerate_reciprocal_points(recip_rows, max_radius, min_radius)
176
+
177
+ // Flatten species with occupancies; gather coeffs, frac coords, occu, DW factors.
178
+ type ScatteringCoeffs = { a: number[]; b: number[]; c?: number }
179
+ const coeffs: ScatteringCoeffs[] = []
180
+ const frac_coords: math.Vec3[] = []
181
+ const occus: number[] = []
182
+ const dw_factors: number[] = []
183
+
184
+ const debye_waller_factors = options.debye_waller_factors ?? {}
185
+
186
+ for (const site of structure.sites) {
187
+ for (const species of site.species) {
188
+ const element_symbol = species.element
189
+ if (ELEMENT_Z[element_symbol] === undefined) {
190
+ throw new Error(`Unknown atomic number for element ${element_symbol}`)
191
+ }
192
+ const raw_coeff = (ATOMIC_SCATTERING_PARAMS as ScatteringParamsRecord)[element_symbol]
193
+ if (!raw_coeff) {
194
+ throw new Error(
195
+ `No atomic scattering coefficients for ${element_symbol}. Extend ATOMIC_SCATTERING_PARAMS.`,
196
+ )
197
+ }
198
+ let coeff_entry: ScatteringCoeffs
199
+ if (Array.isArray(raw_coeff)) {
200
+ const a_arr = raw_coeff.map(([a]) => a)
201
+ const b_arr = raw_coeff.map(([_, b]) => b)
202
+ coeff_entry = { a: a_arr, b: b_arr }
203
+ } else {
204
+ coeff_entry = { a: raw_coeff.a.slice(), b: raw_coeff.b.slice(), c: raw_coeff.c }
205
+ }
206
+ coeffs.push(coeff_entry)
207
+ frac_coords.push(site.abc)
208
+ occus.push(species.occu)
209
+ dw_factors.push(debye_waller_factors[element_symbol] ?? 0)
210
+ }
211
+ }
212
+
213
+ // Accumulate peaks by merging two_thetas within tolerance
214
+ const peaks = new Map<number, { intensity: number; hkls: Hkl[]; d_hkl: number }>()
215
+ const two_thetas: number[] = []
216
+ const merge_tol = options.peak_merge_tol ?? TWO_THETA_TOL
217
+ const scaled_tol = options.scaled_intensity_tol ?? SCALED_INTENSITY_TOL
218
+
219
+ for (const entry of recip_points) {
220
+ const hkl = entry.hkl
221
+ const g_norm = entry.g_norm
222
+ if (g_norm === 0) continue
223
+
224
+ const asin_arg = (wavelength * g_norm) / 2
225
+ // asin domain can exceed 1 by FP error — clamp to avoid NaN
226
+ const clamped_asin_arg = Math.min(1, Math.max(-1, asin_arg))
227
+ const theta = Math.asin(clamped_asin_arg)
228
+ const sin_theta_over_lambda = g_norm / 2
229
+ const sin_theta_over_lambda_sq = sin_theta_over_lambda * sin_theta_over_lambda
230
+
231
+ // g.r for all fractional coords
232
+ const g_dot_r_all = frac_coords.map((frac_coord) => math.dot(frac_coord, hkl))
233
+
234
+ // Atomic scattering factors (vectorized style)
235
+ const f_scattering: number[] = coeffs.map((coeff_entry) => {
236
+ const { a: a_arr, b: b_arr } = coeff_entry
237
+ const num_terms = Math.min(a_arr.length, b_arr.length)
238
+ const sum_terms = a_arr
239
+ .slice(0, num_terms)
240
+ .reduce(
241
+ (sum, a_i, term_idx) =>
242
+ sum + a_i * Math.exp(-b_arr[term_idx] * sin_theta_over_lambda_sq),
243
+ 0,
244
+ )
245
+ return sum_terms + (coeff_entry.c ?? 0)
246
+ })
247
+
248
+ const dw_corr: number[] = dw_factors.map((dw_b) =>
249
+ Math.exp(-dw_b * sin_theta_over_lambda_sq),
250
+ )
251
+
252
+ // Structure factor sum: sum(fs * occu * exp(2πi g·r) * DW)
253
+ const { real: f_real, imag: f_imag } = f_scattering.reduce(
254
+ (acc, fs, idx) => {
255
+ const phase = 2 * Math.PI * g_dot_r_all[idx]
256
+ const weight = fs * occus[idx] * dw_corr[idx]
257
+ const real = acc.real + weight * Math.cos(phase)
258
+ const imag = acc.imag + weight * Math.sin(phase)
259
+ return { real, imag }
260
+ },
261
+ { real: 0, imag: 0 },
262
+ )
263
+
264
+ const sin_theta = Math.sin(theta)
265
+ const cos_theta = Math.cos(theta)
266
+ const denom_raw = sin_theta * sin_theta * Math.abs(cos_theta)
267
+ // Clamp denominator away from zero to avoid Inf/NaN when 2θ → 180° (cosθ → 0)
268
+ const denom = Math.max(denom_raw, 1e-12)
269
+ const lorentz = (1 + Math.cos(2 * theta) ** 2) / denom
270
+ const intensity_hkl = (f_real * f_real + f_imag * f_imag) * lorentz
271
+ const two_theta = math.to_degrees(2 * theta)
272
+
273
+ // Use (h, k, l) always. For hexagonal systems, pymatgen presents Miller–Bravais (h, k, i, l),
274
+ // but downstream components expect 3-index HKL. Keep 3-index form to match types/consumers.
275
+ const hkl_to_store: Hkl = [hkl[0], hkl[1], hkl[2]]
276
+
277
+ // Merge peaks within tolerance
278
+ let found_index: number | null = null
279
+ for (let idx = 0; idx < two_thetas.length; idx++) {
280
+ if (Math.abs(two_thetas[idx] - two_theta) < merge_tol) {
281
+ found_index = idx
282
+ break
283
+ }
284
+ }
285
+
286
+ if (found_index !== null) {
287
+ const key = two_thetas[found_index]
288
+ const item = peaks.get(key)
289
+ if (item) {
290
+ item.intensity += intensity_hkl
291
+ item.hkls.push(hkl_to_store)
292
+ }
293
+ } else {
294
+ const d_hkl = 1 / g_norm
295
+ peaks.set(two_theta, { intensity: intensity_hkl, hkls: [hkl_to_store], d_hkl })
296
+ two_thetas.push(two_theta)
297
+ }
298
+ }
299
+
300
+ if (peaks.size === 0) return { x: [], y: [] }
301
+
302
+ // Scale intensities so that the max intensity is 100, and filter by scaled tol
303
+ const max_intensity = Math.max(...Array.from(peaks.values()).map((peak) => peak.intensity))
304
+
305
+ const xs: number[] = []
306
+ const ys: number[] = []
307
+ const hkls_out: HklObj[][] = []
308
+ const d_out: number[] = []
309
+
310
+ const sorted_two_thetas = Array.from(peaks.keys()).sort((a, b) => a - b)
311
+ for (const angle of sorted_two_thetas) {
312
+ const item = peaks.get(angle)
313
+ if (!item) continue
314
+ const scaled_val = (item.intensity / max_intensity) * 100
315
+ if (scaled_val > scaled_tol) {
316
+ xs.push(angle)
317
+ ys.push(item.intensity)
318
+ const fam = get_unique_families(item.hkls)
319
+ const fam_array: HklObj[] = []
320
+ for (const [repr_key, multiplicity] of fam.entries()) {
321
+ const repr = repr_key.split(`,`).map((num_str) => parseInt(num_str, 10)) as Hkl
322
+ fam_array.push({ hkl: repr, multiplicity })
323
+ }
324
+ hkls_out.push(fam_array)
325
+ d_out.push(item.d_hkl)
326
+ }
327
+ }
328
+
329
+ // Final scaling if requested
330
+ if (options.scaled ?? true) {
331
+ const max_y = Math.max(1, ...ys)
332
+ for (let idx = 0; idx < ys.length; idx++) ys[idx] = (ys[idx] / max_y) * 100
333
+ }
334
+
335
+ return { x: xs, y: ys, hkls: hkls_out, d_hkls: d_out }
336
+ }
337
+
338
+ // Process dropped file content and return an XRD pattern.
339
+ // Supports both direct XRD data files (.xy, .brml) and structure files
340
+ // (which are used to compute theoretical XRD patterns).
341
+ export async function add_xrd_pattern(
342
+ content: string | ArrayBufferLike, // File content as string or ArrayBuffer
343
+ filename: string, // Name of the file (used to detect format)
344
+ wavelength: number | null, // X-ray wavelength for structure-based XRD calculation
345
+ ): Promise<{ pattern?: PatternEntry; error?: string }> {
346
+ // Object with pattern entry or error message
347
+ try {
348
+ // Check if file is a direct XRD data file (.xy, .brml)
349
+ if (is_xrd_data_file(filename)) {
350
+ // Convert ArrayBufferLike to ArrayBuffer if needed (handles SharedArrayBuffer)
351
+ let buffer_content: string | ArrayBuffer
352
+ if (typeof content === `string`) {
353
+ buffer_content = content
354
+ } else {
355
+ buffer_content =
356
+ content instanceof ArrayBuffer ? content : new Uint8Array(content).slice().buffer
357
+ }
358
+ const pattern = await parse_xrd_file(buffer_content, filename)
359
+ if (pattern && pattern.x.length > 0) {
360
+ return { pattern: { label: filename || `XRD data`, pattern } }
361
+ }
362
+ // Get base extension (strip .gz if present) for error message
363
+ const base_name = filename.toLowerCase().replace(/\.gz$/, ``)
364
+ const ext = base_name.split(`.`).pop()?.toUpperCase() || `XRD`
365
+ const format_hints: Record<string, string> = {
366
+ XY: `Expected 2-column format: "2theta intensity" (space/tab/comma separated)`,
367
+ XYE: `Expected 3-column format: "2theta intensity error" (space/tab/comma separated)`,
368
+ BRML: `Expected Bruker RAW/BRML ZIP archive with RawData XML`,
369
+ XRDML: `Expected PANalytical XRDML format with dataPoints section`,
370
+ }
371
+ const hint = format_hints[ext] || `Check file format and encoding`
372
+ return { error: `Failed to parse ${ext} file: no valid data found. ${hint}` }
373
+ }
374
+
375
+ // Otherwise, try to parse as a structure file and compute XRD pattern
376
+ const text_content =
377
+ typeof content === `string` ? content : new TextDecoder().decode(content as BufferSource)
378
+ const parsed_structure = parse_any_structure(text_content, filename)
379
+ if (is_crystal(parsed_structure)) {
380
+ const pattern = compute_xrd_pattern(parsed_structure, {
381
+ wavelength: typeof wavelength === `number` ? wavelength : undefined,
382
+ })
383
+ return { pattern: { label: filename || `Dropped structure`, pattern } }
384
+ }
385
+ return {
386
+ error:
387
+ `Cannot compute XRD: structure must have a lattice and atomic sites. ` +
388
+ `Supported formats: CIF, POSCAR, JSON, XYZ`,
389
+ }
390
+ } catch (exc) {
391
+ return {
392
+ error: `Failed to compute XRD pattern: ${exc instanceof Error ? exc.message : String(exc)}`,
393
+ }
394
+ }
395
+ }
396
+
397
+ export const AVAILABLE_RADIATION = Object.keys(WAVELENGTHS) as RadiationKey[]
@@ -0,0 +1,38 @@
1
+ import type { CompositionType } from '$lib/composition'
2
+ import type { Vec3 } from '$lib/math'
3
+ import type { RadiationKey } from './calc-xrd'
4
+ export * from './broadening'
5
+ export * from './calc-xrd'
6
+ export * from './parse'
7
+ export { default as XrdPlot } from './XrdPlot.svelte'
8
+
9
+ export type Hkl = Vec3
10
+ export type HklObj = { hkl: Hkl; multiplicity?: number }
11
+ export type RecipPoint = { hkl: Hkl; g_norm: number }
12
+ export type HklFormat = `compact` | `full` | null
13
+
14
+ export type XrdPattern = {
15
+ x: number[]
16
+ y: number[]
17
+ hkls?: HklObj[][]
18
+ d_hkls?: number[]
19
+ }
20
+
21
+ export type XrdOptions = {
22
+ wavelength?: number | RadiationKey
23
+ symprec?: number
24
+ debye_waller_factors?: CompositionType
25
+ scaled?: boolean
26
+ // When null, treat as unbounded up to 2/λ (Bragg maximum); when omitted, default [0, 180]
27
+ two_theta_range?: [number, number] | null
28
+ // Merge tolerance for peaks in degrees (default = TWO_THETA_TOL)
29
+ peak_merge_tol?: number
30
+ // Scaled intensity threshold (% of max) to include a peak (default = SCALED_INTENSITY_TOL)
31
+ scaled_intensity_tol?: number
32
+ }
33
+
34
+ export interface PatternEntry {
35
+ label: string
36
+ pattern: XrdPattern
37
+ color?: string
38
+ }