matterviz 0.3.5 → 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 (855) 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/brillouin/BrillouinZone.svelte +549 -0
  14. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
  15. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
  16. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  17. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
  18. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
  19. package/dist/src/lib/brillouin/compute.ts +529 -0
  20. package/dist/src/lib/brillouin/index.ts +8 -0
  21. package/dist/src/lib/brillouin/types.ts +51 -0
  22. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
  23. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  24. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  25. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
  26. package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
  27. package/dist/src/lib/chempot-diagram/color.ts +42 -0
  28. package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
  29. package/dist/src/lib/chempot-diagram/index.ts +6 -0
  30. package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
  31. package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
  32. package/dist/src/lib/chempot-diagram/types.ts +130 -0
  33. package/dist/src/lib/colors/index.ts +249 -0
  34. package/dist/src/lib/composition/BarChart.svelte +297 -0
  35. package/dist/src/lib/composition/BubbleChart.svelte +218 -0
  36. package/dist/src/lib/composition/Composition.svelte +165 -0
  37. package/dist/src/lib/composition/Formula.svelte +268 -0
  38. package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
  39. package/dist/src/lib/composition/PieChart.svelte +323 -0
  40. package/dist/src/lib/composition/format.ts +155 -0
  41. package/dist/src/lib/composition/index.ts +37 -0
  42. package/dist/src/lib/composition/parse.ts +605 -0
  43. package/dist/src/lib/constants.ts +134 -0
  44. package/dist/src/lib/controls.ts +42 -0
  45. package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
  46. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
  47. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
  48. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
  49. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
  50. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
  51. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
  52. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
  53. package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
  54. package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
  55. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
  56. package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
  57. package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
  58. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
  59. package/dist/src/lib/convex-hull/helpers.ts +932 -0
  60. package/dist/src/lib/convex-hull/index.ts +202 -0
  61. package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
  62. package/dist/src/lib/convex-hull/types.ts +267 -0
  63. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
  64. package/dist/src/lib/coordination/calc-coordination.ts +93 -0
  65. package/dist/src/lib/coordination/index.ts +9 -0
  66. package/dist/src/lib/effects.svelte.ts +48 -0
  67. package/dist/src/lib/element/BohrAtom.svelte +147 -0
  68. package/dist/src/lib/element/ElementHeading.svelte +26 -0
  69. package/dist/src/lib/element/ElementPhoto.svelte +57 -0
  70. package/dist/src/lib/element/ElementStats.svelte +80 -0
  71. package/dist/src/lib/element/ElementTile.svelte +484 -0
  72. package/dist/src/lib/element/data.json.gz.d.ts +4 -0
  73. package/dist/src/lib/element/data.ts +14 -0
  74. package/dist/src/lib/element/index.ts +8 -0
  75. package/dist/src/lib/element/types.ts +62 -0
  76. package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
  77. package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
  78. package/dist/src/lib/feedback/index.ts +4 -0
  79. package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
  80. package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
  81. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
  82. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
  83. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  84. package/dist/src/lib/fermi-surface/compute.ts +728 -0
  85. package/dist/src/lib/fermi-surface/constants.ts +32 -0
  86. package/dist/src/lib/fermi-surface/export.ts +64 -0
  87. package/dist/src/lib/fermi-surface/index.ts +14 -0
  88. package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
  89. package/dist/src/lib/fermi-surface/parse.ts +574 -0
  90. package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
  91. package/dist/src/lib/fermi-surface/types.ts +159 -0
  92. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  93. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  94. package/dist/src/lib/heatmap-matrix/index.ts +167 -0
  95. package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
  96. package/dist/src/lib/icons.ts +650 -0
  97. package/dist/src/lib/index.ts +61 -0
  98. package/dist/src/lib/io/decompress.ts +92 -0
  99. package/dist/src/lib/io/export.ts +385 -0
  100. package/dist/src/lib/io/fetch.ts +46 -0
  101. package/dist/src/lib/io/file-drop.ts +51 -0
  102. package/dist/src/lib/io/index.ts +7 -0
  103. package/dist/src/lib/io/is-binary.ts +24 -0
  104. package/dist/src/lib/io/types.ts +8 -0
  105. package/dist/src/lib/io/url-drop.ts +141 -0
  106. package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
  107. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
  108. package/dist/src/lib/isosurface/index.ts +7 -0
  109. package/dist/src/lib/isosurface/parse.ts +656 -0
  110. package/dist/src/lib/isosurface/slice.ts +175 -0
  111. package/dist/src/lib/isosurface/types.ts +309 -0
  112. package/dist/src/lib/labels.ts +320 -0
  113. package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
  114. package/dist/src/lib/layout/InfoCard.svelte +120 -0
  115. package/dist/src/lib/layout/InfoTag.svelte +185 -0
  116. package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
  117. package/dist/src/lib/layout/SettingsSection.svelte +148 -0
  118. package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
  119. package/dist/src/lib/layout/fullscreen.ts +65 -0
  120. package/dist/src/lib/layout/index.ts +11 -0
  121. package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
  122. package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
  123. package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
  124. package/dist/src/lib/layout/json-tree/index.ts +3 -0
  125. package/dist/src/lib/layout/json-tree/types.ts +126 -0
  126. package/dist/src/lib/layout/json-tree/utils.ts +682 -0
  127. package/dist/src/lib/marching-cubes.ts +614 -0
  128. package/dist/src/lib/math.ts +1081 -0
  129. package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
  130. package/dist/src/lib/overlays/CopyButton.svelte +45 -0
  131. package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
  132. package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
  133. package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
  134. package/dist/src/lib/overlays/index.ts +3 -0
  135. package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
  136. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
  137. package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
  138. package/dist/src/lib/periodic-table/index.ts +12 -0
  139. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  140. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
  141. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  142. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  143. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  144. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
  145. package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
  146. package/dist/src/lib/phase-diagram/colors.ts +58 -0
  147. package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
  148. package/dist/src/lib/phase-diagram/index.ts +13 -0
  149. package/dist/src/lib/phase-diagram/parse.ts +348 -0
  150. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
  151. package/dist/src/lib/phase-diagram/types.ts +144 -0
  152. package/dist/src/lib/phase-diagram/utils.ts +775 -0
  153. package/dist/src/lib/plot/AxisLabel.svelte +51 -0
  154. package/dist/src/lib/plot/BarPlot.svelte +2113 -0
  155. package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
  156. package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
  157. package/dist/src/lib/plot/ColorBar.svelte +721 -0
  158. package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
  159. package/dist/src/lib/plot/ElementScatter.svelte +63 -0
  160. package/dist/src/lib/plot/FillArea.svelte +223 -0
  161. package/dist/src/lib/plot/Histogram.svelte +1558 -0
  162. package/dist/src/lib/plot/HistogramControls.svelte +212 -0
  163. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
  164. package/dist/src/lib/plot/Line.svelte +84 -0
  165. package/dist/src/lib/plot/PlotAxis.svelte +169 -0
  166. package/dist/src/lib/plot/PlotControls.svelte +537 -0
  167. package/dist/src/lib/plot/PlotLegend.svelte +569 -0
  168. package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
  169. package/dist/src/lib/plot/PortalSelect.svelte +253 -0
  170. package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
  171. package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
  172. package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
  173. package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
  174. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
  175. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
  176. package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
  177. package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
  178. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
  179. package/dist/src/lib/plot/Surface3D.svelte +197 -0
  180. package/dist/src/lib/plot/ZeroLines.svelte +97 -0
  181. package/dist/src/lib/plot/ZoomRect.svelte +23 -0
  182. package/dist/src/lib/plot/adaptive-density.ts +316 -0
  183. package/dist/src/lib/plot/auto-place.ts +184 -0
  184. package/dist/src/lib/plot/axis-utils.ts +122 -0
  185. package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
  186. package/dist/src/lib/plot/data-cleaning.ts +1069 -0
  187. package/dist/src/lib/plot/data-transform.ts +69 -0
  188. package/dist/src/lib/plot/defaults.ts +9 -0
  189. package/dist/src/lib/plot/fill-utils.ts +494 -0
  190. package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
  191. package/dist/src/lib/plot/index.ts +53 -0
  192. package/dist/src/lib/plot/interactions.ts +119 -0
  193. package/dist/src/lib/plot/layout.ts +425 -0
  194. package/dist/src/lib/plot/reference-line.ts +426 -0
  195. package/dist/src/lib/plot/scales.ts +654 -0
  196. package/dist/src/lib/plot/svg.ts +23 -0
  197. package/dist/src/lib/plot/types.ts +1144 -0
  198. package/dist/src/lib/plot/utils/label-placement.ts +541 -0
  199. package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
  200. package/dist/src/lib/plot/utils.ts +11 -0
  201. package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
  202. package/dist/src/lib/rdf/calc-rdf.ts +167 -0
  203. package/dist/src/lib/rdf/index.ts +27 -0
  204. package/dist/src/lib/sanitize.ts +126 -0
  205. package/dist/src/lib/settings.ts +1479 -0
  206. package/dist/src/lib/spectral/Bands.svelte +1040 -0
  207. package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
  208. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
  209. package/dist/src/lib/spectral/Dos.svelte +697 -0
  210. package/dist/src/lib/spectral/helpers.ts +1381 -0
  211. package/dist/src/lib/spectral/index.ts +8 -0
  212. package/dist/src/lib/spectral/types.ts +112 -0
  213. package/dist/src/lib/state.svelte.ts +64 -0
  214. package/dist/src/lib/structure/Arrow.svelte +72 -0
  215. package/dist/src/lib/structure/AtomLegend.svelte +815 -0
  216. package/dist/src/lib/structure/Bond.svelte +140 -0
  217. package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
  218. package/dist/src/lib/structure/CellSelect.svelte +349 -0
  219. package/dist/src/lib/structure/Cylinder.svelte +45 -0
  220. package/dist/src/lib/structure/Lattice.svelte +196 -0
  221. package/dist/src/lib/structure/Structure.svelte +2248 -0
  222. package/dist/src/lib/structure/StructureControls.svelte +1273 -0
  223. package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
  224. package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
  225. package/dist/src/lib/structure/StructureScene.svelte +2255 -0
  226. package/dist/src/lib/structure/atom-properties.ts +316 -0
  227. package/dist/src/lib/structure/bond-order-perception.ts +447 -0
  228. package/dist/src/lib/structure/bonding.ts +944 -0
  229. package/dist/src/lib/structure/export.ts +861 -0
  230. package/dist/src/lib/structure/index.ts +291 -0
  231. package/dist/src/lib/structure/label-placement.ts +130 -0
  232. package/dist/src/lib/structure/measure.ts +45 -0
  233. package/dist/src/lib/structure/parse.ts +1705 -0
  234. package/dist/src/lib/structure/partial-occupancy.ts +183 -0
  235. package/dist/src/lib/structure/pbc.ts +164 -0
  236. package/dist/src/lib/structure/supercell.ts +226 -0
  237. package/dist/src/lib/structure/validation.ts +11 -0
  238. package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
  239. package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
  240. package/dist/src/lib/symmetry/cell-transform.ts +118 -0
  241. package/dist/src/lib/symmetry/index.ts +348 -0
  242. package/dist/src/lib/symmetry/spacegroups.ts +404 -0
  243. package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
  244. package/dist/src/lib/table/ToggleMenu.svelte +385 -0
  245. package/dist/src/lib/table/index.ts +139 -0
  246. package/dist/src/lib/theme/ThemeControl.svelte +53 -0
  247. package/dist/src/lib/theme/index.ts +107 -0
  248. package/dist/src/lib/theme/themes.mjs +297 -0
  249. package/dist/src/lib/time.ts +71 -0
  250. package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
  251. package/dist/src/lib/tooltip/index.ts +2 -0
  252. package/dist/src/lib/tooltip/types.ts +13 -0
  253. package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
  254. package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
  255. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
  256. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
  257. package/dist/src/lib/trajectory/constants.ts +7 -0
  258. package/dist/src/lib/trajectory/extract.ts +196 -0
  259. package/dist/src/lib/trajectory/format-detect.ts +96 -0
  260. package/dist/src/lib/trajectory/frame-reader.ts +456 -0
  261. package/dist/src/lib/trajectory/helpers.ts +217 -0
  262. package/dist/src/lib/trajectory/index.ts +218 -0
  263. package/dist/src/lib/trajectory/parse/ase.ts +109 -0
  264. package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
  265. package/dist/src/lib/trajectory/parse/index.ts +411 -0
  266. package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
  267. package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
  268. package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
  269. package/dist/src/lib/trajectory/plotting.ts +599 -0
  270. package/dist/src/lib/trajectory/types.ts +13 -0
  271. package/dist/src/lib/utils.ts +56 -0
  272. package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
  273. package/dist/src/lib/xrd/broadening.ts +130 -0
  274. package/dist/src/lib/xrd/calc-xrd.ts +397 -0
  275. package/dist/src/lib/xrd/index.ts +38 -0
  276. package/dist/src/lib/xrd/parse.ts +858 -0
  277. package/dist/webview.js +29421 -0
  278. package/icon.png +0 -0
  279. package/license +1 -1
  280. package/matterviz-0.3.2.vsix +0 -0
  281. package/matterviz-0.3.4.vsix +0 -0
  282. package/matterviz-0.3.5.vsix +0 -0
  283. package/package.json +1460 -215
  284. package/readme.md +171 -98
  285. package/scripts/sync-config.ts +101 -0
  286. package/src/declarations.d.ts +2 -0
  287. package/src/extension.ts +972 -0
  288. package/src/node-io.ts +65 -0
  289. package/src/types.ts +17 -0
  290. package/src/webview/JsonBrowser.svelte +1079 -0
  291. package/src/webview/PlotPanel.svelte +346 -0
  292. package/src/webview/detect.ts +444 -0
  293. package/src/webview/main.ts +764 -0
  294. package/src/webview/plot-utils.ts +250 -0
  295. package/test-fixtures/all-viz-types.json.gz +0 -0
  296. package/test-fixtures/plot-demo-data.json.gz +0 -0
  297. package/tests/detect.test.ts +604 -0
  298. package/tests/extension.test.ts +2041 -0
  299. package/tests/node-io.test.ts +39 -0
  300. package/tests/plot-utils.test.ts +302 -0
  301. package/tests/vite-plugin-json-gz.test.ts +114 -0
  302. package/tests/vscode-mock.ts +18 -0
  303. package/tests/webview.test.ts +231 -0
  304. package/tsconfig.json +20 -0
  305. package/vite-plugin-json-gz.ts +29 -0
  306. package/vite.config.ts +34 -0
  307. package/vite.extension.config.ts +34 -0
  308. package/dist/EmptyState.svelte.d.ts +0 -9
  309. package/dist/FilePicker.svelte +0 -360
  310. package/dist/FilePicker.svelte.d.ts +0 -17
  311. package/dist/Icon.svelte.d.ts +0 -13
  312. package/dist/MillerIndexInput.svelte +0 -66
  313. package/dist/MillerIndexInput.svelte.d.ts +0 -7
  314. package/dist/api/mp.d.ts +0 -6
  315. package/dist/api/mp.js +0 -22
  316. package/dist/api/optimade.d.ts +0 -45
  317. package/dist/api/optimade.js +0 -135
  318. package/dist/brillouin/BrillouinZone.svelte +0 -546
  319. package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
  320. package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
  321. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
  322. package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
  323. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
  324. package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  325. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
  326. package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
  327. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
  328. package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
  329. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
  330. package/dist/brillouin/compute.d.ts +0 -17
  331. package/dist/brillouin/compute.js +0 -426
  332. package/dist/brillouin/index.d.ts +0 -8
  333. package/dist/brillouin/index.js +0 -8
  334. package/dist/brillouin/types.d.ts +0 -48
  335. package/dist/brillouin/types.js +0 -1
  336. package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
  337. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
  338. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
  339. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
  340. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
  341. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
  342. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
  343. package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
  344. package/dist/chempot-diagram/async-compute.svelte.js +0 -78
  345. package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
  346. package/dist/chempot-diagram/chempot-worker.js +0 -11
  347. package/dist/chempot-diagram/color.d.ts +0 -10
  348. package/dist/chempot-diagram/color.js +0 -32
  349. package/dist/chempot-diagram/compute.d.ts +0 -48
  350. package/dist/chempot-diagram/compute.js +0 -812
  351. package/dist/chempot-diagram/index.d.ts +0 -6
  352. package/dist/chempot-diagram/index.js +0 -6
  353. package/dist/chempot-diagram/pointer.d.ts +0 -16
  354. package/dist/chempot-diagram/pointer.js +0 -40
  355. package/dist/chempot-diagram/temperature.d.ts +0 -15
  356. package/dist/chempot-diagram/temperature.js +0 -36
  357. package/dist/chempot-diagram/types.d.ts +0 -86
  358. package/dist/chempot-diagram/types.js +0 -28
  359. package/dist/colors/index.d.ts +0 -47
  360. package/dist/colors/index.js +0 -203
  361. package/dist/composition/BarChart.svelte +0 -297
  362. package/dist/composition/BarChart.svelte.d.ts +0 -39
  363. package/dist/composition/BubbleChart.svelte +0 -218
  364. package/dist/composition/BubbleChart.svelte.d.ts +0 -28
  365. package/dist/composition/Composition.svelte +0 -164
  366. package/dist/composition/Composition.svelte.d.ts +0 -15
  367. package/dist/composition/Formula.svelte +0 -265
  368. package/dist/composition/Formula.svelte.d.ts +0 -19
  369. package/dist/composition/FormulaFilter.svelte +0 -1259
  370. package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
  371. package/dist/composition/PieChart.svelte +0 -323
  372. package/dist/composition/PieChart.svelte.d.ts +0 -37
  373. package/dist/composition/format.d.ts +0 -15
  374. package/dist/composition/format.js +0 -109
  375. package/dist/composition/index.d.ts +0 -20
  376. package/dist/composition/index.js +0 -14
  377. package/dist/composition/parse.d.ts +0 -55
  378. package/dist/composition/parse.js +0 -459
  379. package/dist/constants.d.ts +0 -29
  380. package/dist/constants.js +0 -99
  381. package/dist/controls.d.ts +0 -14
  382. package/dist/controls.js +0 -30
  383. package/dist/convex-hull/ConvexHull.svelte +0 -157
  384. package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
  385. package/dist/convex-hull/ConvexHull2D.svelte +0 -814
  386. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
  387. package/dist/convex-hull/ConvexHull3D.svelte +0 -1790
  388. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
  389. package/dist/convex-hull/ConvexHull4D.svelte +0 -1386
  390. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
  391. package/dist/convex-hull/ConvexHullControls.svelte +0 -546
  392. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
  393. package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -122
  394. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
  395. package/dist/convex-hull/ConvexHullStats.svelte +0 -922
  396. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
  397. package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
  398. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
  399. package/dist/convex-hull/GasPressureControls.svelte +0 -247
  400. package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
  401. package/dist/convex-hull/StructurePopup.svelte +0 -116
  402. package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
  403. package/dist/convex-hull/TemperatureSlider.svelte +0 -137
  404. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
  405. package/dist/convex-hull/barycentric-coords.d.ts +0 -18
  406. package/dist/convex-hull/barycentric-coords.js +0 -182
  407. package/dist/convex-hull/demo-temperature.d.ts +0 -6
  408. package/dist/convex-hull/demo-temperature.js +0 -40
  409. package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
  410. package/dist/convex-hull/gas-thermodynamics.js +0 -316
  411. package/dist/convex-hull/helpers.d.ts +0 -103
  412. package/dist/convex-hull/helpers.js +0 -689
  413. package/dist/convex-hull/index.d.ts +0 -118
  414. package/dist/convex-hull/index.js +0 -57
  415. package/dist/convex-hull/thermodynamics.d.ts +0 -66
  416. package/dist/convex-hull/thermodynamics.js +0 -1752
  417. package/dist/convex-hull/types.d.ts +0 -162
  418. package/dist/convex-hull/types.js +0 -36
  419. package/dist/coordination/CoordinationBarPlot.svelte +0 -311
  420. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
  421. package/dist/coordination/calc-coordination.d.ts +0 -15
  422. package/dist/coordination/calc-coordination.js +0 -63
  423. package/dist/coordination/index.d.ts +0 -8
  424. package/dist/coordination/index.js +0 -7
  425. package/dist/element/BohrAtom.svelte +0 -147
  426. package/dist/element/BohrAtom.svelte.d.ts +0 -20
  427. package/dist/element/ElementHeading.svelte +0 -26
  428. package/dist/element/ElementHeading.svelte.d.ts +0 -8
  429. package/dist/element/ElementPhoto.svelte +0 -57
  430. package/dist/element/ElementPhoto.svelte.d.ts +0 -9
  431. package/dist/element/ElementStats.svelte +0 -80
  432. package/dist/element/ElementStats.svelte.d.ts +0 -8
  433. package/dist/element/ElementTile.svelte +0 -484
  434. package/dist/element/ElementTile.svelte.d.ts +0 -29
  435. package/dist/element/Nucleus.svelte.d.ts +0 -17
  436. package/dist/element/data.d.ts +0 -2
  437. package/dist/element/data.js +0 -2
  438. package/dist/element/data.json.gz.d.ts +0 -2
  439. package/dist/element/index.d.ts +0 -8
  440. package/dist/element/index.js +0 -8
  441. package/dist/element/types.d.ts +0 -57
  442. package/dist/element/types.js +0 -1
  443. package/dist/feedback/ClickFeedback.svelte +0 -58
  444. package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
  445. package/dist/feedback/DragOverlay.svelte +0 -42
  446. package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
  447. package/dist/feedback/Spinner.svelte.d.ts +0 -7
  448. package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
  449. package/dist/feedback/index.d.ts +0 -4
  450. package/dist/feedback/index.js +0 -4
  451. package/dist/fermi-surface/FermiSlice.svelte +0 -189
  452. package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
  453. package/dist/fermi-surface/FermiSurface.svelte +0 -600
  454. package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
  455. package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
  456. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
  457. package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
  458. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
  459. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  460. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
  461. package/dist/fermi-surface/compute.d.ts +0 -5
  462. package/dist/fermi-surface/compute.js +0 -538
  463. package/dist/fermi-surface/constants.d.ts +0 -9
  464. package/dist/fermi-surface/constants.js +0 -27
  465. package/dist/fermi-surface/export.d.ts +0 -5
  466. package/dist/fermi-surface/export.js +0 -63
  467. package/dist/fermi-surface/index.d.ts +0 -12
  468. package/dist/fermi-surface/index.js +0 -13
  469. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  470. package/dist/fermi-surface/marching-cubes.js +0 -2
  471. package/dist/fermi-surface/parse.d.ts +0 -2
  472. package/dist/fermi-surface/parse.js +0 -495
  473. package/dist/fermi-surface/symmetry.d.ts +0 -3
  474. package/dist/fermi-surface/symmetry.js +0 -46
  475. package/dist/fermi-surface/types.d.ts +0 -113
  476. package/dist/fermi-surface/types.js +0 -4
  477. package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
  478. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
  479. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  480. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
  481. package/dist/heatmap-matrix/index.d.ts +0 -53
  482. package/dist/heatmap-matrix/index.js +0 -100
  483. package/dist/heatmap-matrix/shared.d.ts +0 -2
  484. package/dist/heatmap-matrix/shared.js +0 -4
  485. package/dist/icons.d.ts +0 -569
  486. package/dist/icons.js +0 -648
  487. package/dist/index.d.ts +0 -39
  488. package/dist/index.js +0 -39
  489. package/dist/io/decompress.d.ts +0 -10
  490. package/dist/io/decompress.js +0 -74
  491. package/dist/io/export.d.ts +0 -16
  492. package/dist/io/export.js +0 -316
  493. package/dist/io/fetch.d.ts +0 -5
  494. package/dist/io/fetch.js +0 -39
  495. package/dist/io/file-drop.d.ts +0 -7
  496. package/dist/io/file-drop.js +0 -43
  497. package/dist/io/index.d.ts +0 -7
  498. package/dist/io/index.js +0 -7
  499. package/dist/io/is-binary.d.ts +0 -1
  500. package/dist/io/is-binary.js +0 -20
  501. package/dist/io/types.d.ts +0 -8
  502. package/dist/io/types.js +0 -1
  503. package/dist/io/url-drop.d.ts +0 -2
  504. package/dist/io/url-drop.js +0 -117
  505. package/dist/isosurface/Isosurface.svelte +0 -285
  506. package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
  507. package/dist/isosurface/IsosurfaceControls.svelte +0 -291
  508. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
  509. package/dist/isosurface/index.d.ts +0 -5
  510. package/dist/isosurface/index.js +0 -6
  511. package/dist/isosurface/parse.d.ts +0 -6
  512. package/dist/isosurface/parse.js +0 -553
  513. package/dist/isosurface/slice.d.ts +0 -11
  514. package/dist/isosurface/slice.js +0 -140
  515. package/dist/isosurface/types.d.ts +0 -56
  516. package/dist/isosurface/types.js +0 -227
  517. package/dist/labels.d.ts +0 -53
  518. package/dist/labels.js +0 -274
  519. package/dist/layout/FullscreenToggle.svelte +0 -50
  520. package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
  521. package/dist/layout/InfoCard.svelte +0 -120
  522. package/dist/layout/InfoCard.svelte.d.ts +0 -21
  523. package/dist/layout/InfoTag.svelte +0 -183
  524. package/dist/layout/InfoTag.svelte.d.ts +0 -19
  525. package/dist/layout/PropertyFilter.svelte +0 -244
  526. package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
  527. package/dist/layout/SettingsSection.svelte +0 -148
  528. package/dist/layout/SettingsSection.svelte.d.ts +0 -17
  529. package/dist/layout/SubpageGrid.svelte +0 -82
  530. package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
  531. package/dist/layout/fullscreen.d.ts +0 -9
  532. package/dist/layout/fullscreen.js +0 -53
  533. package/dist/layout/index.d.ts +0 -10
  534. package/dist/layout/index.js +0 -8
  535. package/dist/layout/json-tree/JsonNode.svelte +0 -548
  536. package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
  537. package/dist/layout/json-tree/JsonTree.svelte +0 -1222
  538. package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
  539. package/dist/layout/json-tree/JsonValue.svelte +0 -334
  540. package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
  541. package/dist/layout/json-tree/index.d.ts +0 -3
  542. package/dist/layout/json-tree/index.js +0 -3
  543. package/dist/layout/json-tree/types.d.ts +0 -73
  544. package/dist/layout/json-tree/types.js +0 -3
  545. package/dist/layout/json-tree/utils.d.ts +0 -29
  546. package/dist/layout/json-tree/utils.js +0 -649
  547. package/dist/marching-cubes.d.ts +0 -14
  548. package/dist/marching-cubes.js +0 -542
  549. package/dist/math.d.ts +0 -91
  550. package/dist/math.js +0 -896
  551. package/dist/overlays/ContextMenu.svelte +0 -162
  552. package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
  553. package/dist/overlays/CopyButton.svelte +0 -45
  554. package/dist/overlays/CopyButton.svelte.d.ts +0 -8
  555. package/dist/overlays/DraggablePane.svelte +0 -564
  556. package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
  557. package/dist/overlays/InfoPaneCards.svelte +0 -149
  558. package/dist/overlays/InfoPaneCards.svelte.d.ts +0 -22
  559. package/dist/overlays/index.d.ts +0 -2
  560. package/dist/overlays/index.js +0 -2
  561. package/dist/periodic-table/PeriodicTable.svelte +0 -469
  562. package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
  563. package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
  564. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
  565. package/dist/periodic-table/PropertySelect.svelte +0 -37
  566. package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
  567. package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
  568. package/dist/periodic-table/index.d.ts +0 -10
  569. package/dist/periodic-table/index.js +0 -4
  570. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1084
  571. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
  572. package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -449
  573. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
  574. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  575. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
  576. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
  577. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
  578. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
  579. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
  580. package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
  581. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
  582. package/dist/phase-diagram/build-diagram.d.ts +0 -11
  583. package/dist/phase-diagram/build-diagram.js +0 -167
  584. package/dist/phase-diagram/colors.d.ts +0 -35
  585. package/dist/phase-diagram/colors.js +0 -51
  586. package/dist/phase-diagram/diagram-input.d.ts +0 -33
  587. package/dist/phase-diagram/diagram-input.js +0 -3
  588. package/dist/phase-diagram/index.d.ts +0 -13
  589. package/dist/phase-diagram/index.js +0 -13
  590. package/dist/phase-diagram/parse.d.ts +0 -55
  591. package/dist/phase-diagram/parse.js +0 -276
  592. package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
  593. package/dist/phase-diagram/svg-to-diagram.js +0 -867
  594. package/dist/phase-diagram/types.d.ts +0 -99
  595. package/dist/phase-diagram/types.js +0 -1
  596. package/dist/phase-diagram/utils.d.ts +0 -118
  597. package/dist/phase-diagram/utils.js +0 -606
  598. package/dist/plot/AxisLabel.svelte +0 -51
  599. package/dist/plot/AxisLabel.svelte.d.ts +0 -16
  600. package/dist/plot/BarPlot.svelte +0 -2265
  601. package/dist/plot/BarPlot.svelte.d.ts +0 -83
  602. package/dist/plot/BarPlotControls.svelte +0 -66
  603. package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
  604. package/dist/plot/ColorBar.svelte +0 -719
  605. package/dist/plot/ColorBar.svelte.d.ts +0 -31
  606. package/dist/plot/ColorScaleSelect.svelte +0 -54
  607. package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
  608. package/dist/plot/ElementScatter.svelte +0 -63
  609. package/dist/plot/ElementScatter.svelte.d.ts +0 -14
  610. package/dist/plot/FillArea.svelte +0 -225
  611. package/dist/plot/FillArea.svelte.d.ts +0 -21
  612. package/dist/plot/Histogram.svelte +0 -1672
  613. package/dist/plot/Histogram.svelte.d.ts +0 -50
  614. package/dist/plot/HistogramControls.svelte +0 -212
  615. package/dist/plot/HistogramControls.svelte.d.ts +0 -22
  616. package/dist/plot/InteractiveAxisLabel.svelte +0 -94
  617. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
  618. package/dist/plot/Line.svelte +0 -84
  619. package/dist/plot/Line.svelte.d.ts +0 -15
  620. package/dist/plot/PlotControls.svelte +0 -537
  621. package/dist/plot/PlotControls.svelte.d.ts +0 -4
  622. package/dist/plot/PlotLegend.svelte +0 -569
  623. package/dist/plot/PlotLegend.svelte.d.ts +0 -29
  624. package/dist/plot/PlotTooltip.svelte +0 -67
  625. package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
  626. package/dist/plot/PortalSelect.svelte +0 -253
  627. package/dist/plot/PortalSelect.svelte.d.ts +0 -16
  628. package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
  629. package/dist/plot/ReferenceLine3D.svelte +0 -154
  630. package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
  631. package/dist/plot/ReferencePlane.svelte +0 -178
  632. package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
  633. package/dist/plot/ScatterPlot.svelte +0 -2845
  634. package/dist/plot/ScatterPlot.svelte.d.ts +0 -93
  635. package/dist/plot/ScatterPlot3D.svelte +0 -502
  636. package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
  637. package/dist/plot/ScatterPlot3DControls.svelte +0 -437
  638. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
  639. package/dist/plot/ScatterPlot3DScene.svelte +0 -912
  640. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
  641. package/dist/plot/ScatterPlotControls.svelte +0 -307
  642. package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
  643. package/dist/plot/ScatterPoint.svelte +0 -191
  644. package/dist/plot/ScatterPoint.svelte.d.ts +0 -21
  645. package/dist/plot/SpacegroupBarPlot.svelte +0 -293
  646. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
  647. package/dist/plot/Surface3D.svelte +0 -200
  648. package/dist/plot/Surface3D.svelte.d.ts +0 -13
  649. package/dist/plot/ZeroLines.svelte +0 -96
  650. package/dist/plot/ZeroLines.svelte.d.ts +0 -32
  651. package/dist/plot/ZoomRect.svelte +0 -23
  652. package/dist/plot/ZoomRect.svelte.d.ts +0 -8
  653. package/dist/plot/axis-utils.d.ts +0 -19
  654. package/dist/plot/axis-utils.js +0 -80
  655. package/dist/plot/data-cleaning.d.ts +0 -37
  656. package/dist/plot/data-cleaning.js +0 -855
  657. package/dist/plot/data-transform.d.ts +0 -16
  658. package/dist/plot/data-transform.js +0 -45
  659. package/dist/plot/defaults.d.ts +0 -19
  660. package/dist/plot/defaults.js +0 -9
  661. package/dist/plot/fill-utils.d.ts +0 -51
  662. package/dist/plot/fill-utils.js +0 -337
  663. package/dist/plot/hover-lock.svelte.d.ts +0 -14
  664. package/dist/plot/hover-lock.svelte.js +0 -46
  665. package/dist/plot/index.d.ts +0 -37
  666. package/dist/plot/index.js +0 -37
  667. package/dist/plot/interactions.d.ts +0 -12
  668. package/dist/plot/interactions.js +0 -100
  669. package/dist/plot/layout.d.ts +0 -60
  670. package/dist/plot/layout.js +0 -230
  671. package/dist/plot/reference-line.d.ts +0 -60
  672. package/dist/plot/reference-line.js +0 -316
  673. package/dist/plot/scales.d.ts +0 -48
  674. package/dist/plot/scales.js +0 -484
  675. package/dist/plot/svg.d.ts +0 -1
  676. package/dist/plot/svg.js +0 -11
  677. package/dist/plot/types.d.ts +0 -859
  678. package/dist/plot/types.js +0 -103
  679. package/dist/plot/utils/label-placement.d.ts +0 -47
  680. package/dist/plot/utils/label-placement.js +0 -256
  681. package/dist/plot/utils/series-visibility.d.ts +0 -9
  682. package/dist/plot/utils/series-visibility.js +0 -67
  683. package/dist/plot/utils.d.ts +0 -1
  684. package/dist/plot/utils.js +0 -14
  685. package/dist/rdf/RdfPlot.svelte +0 -247
  686. package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
  687. package/dist/rdf/calc-rdf.d.ts +0 -4
  688. package/dist/rdf/calc-rdf.js +0 -111
  689. package/dist/rdf/index.d.ts +0 -23
  690. package/dist/rdf/index.js +0 -2
  691. package/dist/sanitize.d.ts +0 -4
  692. package/dist/sanitize.js +0 -114
  693. package/dist/settings.d.ts +0 -255
  694. package/dist/settings.js +0 -1132
  695. package/dist/spectral/Bands.svelte +0 -1040
  696. package/dist/spectral/Bands.svelte.d.ts +0 -40
  697. package/dist/spectral/BandsAndDos.svelte +0 -128
  698. package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
  699. package/dist/spectral/BrillouinBandsDos.svelte +0 -248
  700. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
  701. package/dist/spectral/Dos.svelte +0 -697
  702. package/dist/spectral/Dos.svelte.d.ts +0 -29
  703. package/dist/spectral/helpers.d.ts +0 -117
  704. package/dist/spectral/helpers.js +0 -1023
  705. package/dist/spectral/index.d.ts +0 -6
  706. package/dist/spectral/index.js +0 -7
  707. package/dist/spectral/types.d.ts +0 -84
  708. package/dist/spectral/types.js +0 -2
  709. package/dist/state.svelte.d.ts +0 -25
  710. package/dist/state.svelte.js +0 -45
  711. package/dist/structure/Arrow.svelte +0 -72
  712. package/dist/structure/Arrow.svelte.d.ts +0 -15
  713. package/dist/structure/AtomLegend.svelte +0 -798
  714. package/dist/structure/AtomLegend.svelte.d.ts +0 -34
  715. package/dist/structure/Bond.svelte +0 -140
  716. package/dist/structure/Bond.svelte.d.ts +0 -9
  717. package/dist/structure/CanvasTooltip.svelte +0 -33
  718. package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
  719. package/dist/structure/CellSelect.svelte +0 -351
  720. package/dist/structure/CellSelect.svelte.d.ts +0 -13
  721. package/dist/structure/Cylinder.svelte +0 -45
  722. package/dist/structure/Cylinder.svelte.d.ts +0 -10
  723. package/dist/structure/Lattice.svelte +0 -196
  724. package/dist/structure/Lattice.svelte.d.ts +0 -17
  725. package/dist/structure/Structure.svelte +0 -1999
  726. package/dist/structure/Structure.svelte.d.ts +0 -87
  727. package/dist/structure/StructureControls.svelte +0 -1298
  728. package/dist/structure/StructureControls.svelte.d.ts +0 -31
  729. package/dist/structure/StructureExportPane.svelte +0 -251
  730. package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
  731. package/dist/structure/StructureInfoPane.svelte +0 -735
  732. package/dist/structure/StructureInfoPane.svelte.d.ts +0 -19
  733. package/dist/structure/StructureScene.svelte +0 -1905
  734. package/dist/structure/StructureScene.svelte.d.ts +0 -108
  735. package/dist/structure/atom-properties.d.ts +0 -37
  736. package/dist/structure/atom-properties.js +0 -200
  737. package/dist/structure/bond-order-perception.d.ts +0 -13
  738. package/dist/structure/bond-order-perception.js +0 -367
  739. package/dist/structure/bonding.d.ts +0 -42
  740. package/dist/structure/bonding.js +0 -525
  741. package/dist/structure/export.d.ts +0 -20
  742. package/dist/structure/export.js +0 -727
  743. package/dist/structure/index.d.ts +0 -125
  744. package/dist/structure/index.js +0 -171
  745. package/dist/structure/label-placement.d.ts +0 -14
  746. package/dist/structure/label-placement.js +0 -72
  747. package/dist/structure/measure.d.ts +0 -6
  748. package/dist/structure/measure.js +0 -29
  749. package/dist/structure/parse.d.ts +0 -66
  750. package/dist/structure/parse.js +0 -1363
  751. package/dist/structure/partial-occupancy.d.ts +0 -25
  752. package/dist/structure/partial-occupancy.js +0 -99
  753. package/dist/structure/pbc.d.ts +0 -9
  754. package/dist/structure/pbc.js +0 -123
  755. package/dist/structure/supercell.d.ts +0 -8
  756. package/dist/structure/supercell.js +0 -170
  757. package/dist/structure/validation.d.ts +0 -2
  758. package/dist/structure/validation.js +0 -10
  759. package/dist/symmetry/SymmetryStats.svelte +0 -226
  760. package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
  761. package/dist/symmetry/WyckoffTable.svelte +0 -113
  762. package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
  763. package/dist/symmetry/cell-transform.d.ts +0 -12
  764. package/dist/symmetry/cell-transform.js +0 -91
  765. package/dist/symmetry/index.d.ts +0 -43
  766. package/dist/symmetry/index.js +0 -229
  767. package/dist/symmetry/spacegroups.d.ts +0 -9
  768. package/dist/symmetry/spacegroups.js +0 -394
  769. package/dist/table/HeatmapTable.svelte +0 -1854
  770. package/dist/table/HeatmapTable.svelte.d.ts +0 -49
  771. package/dist/table/ToggleMenu.svelte +0 -376
  772. package/dist/table/ToggleMenu.svelte.d.ts +0 -11
  773. package/dist/table/index.d.ts +0 -74
  774. package/dist/table/index.js +0 -38
  775. package/dist/theme/ThemeControl.svelte +0 -53
  776. package/dist/theme/ThemeControl.svelte.d.ts +0 -9
  777. package/dist/theme/index.d.ts +0 -29
  778. package/dist/theme/index.js +0 -79
  779. package/dist/theme/themes.mjs +0 -285
  780. package/dist/time.d.ts +0 -4
  781. package/dist/time.js +0 -70
  782. package/dist/tooltip/TooltipContent.svelte +0 -58
  783. package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
  784. package/dist/tooltip/index.d.ts +0 -2
  785. package/dist/tooltip/index.js +0 -2
  786. package/dist/tooltip/types.d.ts +0 -8
  787. package/dist/tooltip/types.js +0 -1
  788. package/dist/trajectory/Trajectory.svelte +0 -1517
  789. package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
  790. package/dist/trajectory/TrajectoryError.svelte +0 -128
  791. package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
  792. package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
  793. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
  794. package/dist/trajectory/TrajectoryInfoPane.svelte +0 -313
  795. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
  796. package/dist/trajectory/constants.d.ts +0 -6
  797. package/dist/trajectory/constants.js +0 -7
  798. package/dist/trajectory/extract.d.ts +0 -5
  799. package/dist/trajectory/extract.js +0 -162
  800. package/dist/trajectory/format-detect.d.ts +0 -9
  801. package/dist/trajectory/format-detect.js +0 -76
  802. package/dist/trajectory/frame-reader.d.ts +0 -17
  803. package/dist/trajectory/frame-reader.js +0 -332
  804. package/dist/trajectory/helpers.d.ts +0 -14
  805. package/dist/trajectory/helpers.js +0 -172
  806. package/dist/trajectory/index.d.ts +0 -63
  807. package/dist/trajectory/index.js +0 -126
  808. package/dist/trajectory/parse/ase.d.ts +0 -2
  809. package/dist/trajectory/parse/ase.js +0 -73
  810. package/dist/trajectory/parse/hdf5.d.ts +0 -2
  811. package/dist/trajectory/parse/hdf5.js +0 -127
  812. package/dist/trajectory/parse/index.d.ts +0 -12
  813. package/dist/trajectory/parse/index.js +0 -299
  814. package/dist/trajectory/parse/lammps.d.ts +0 -5
  815. package/dist/trajectory/parse/lammps.js +0 -179
  816. package/dist/trajectory/parse/vasp.d.ts +0 -2
  817. package/dist/trajectory/parse/vasp.js +0 -68
  818. package/dist/trajectory/parse/xyz.d.ts +0 -2
  819. package/dist/trajectory/parse/xyz.js +0 -110
  820. package/dist/trajectory/plotting.d.ts +0 -28
  821. package/dist/trajectory/plotting.js +0 -423
  822. package/dist/trajectory/types.d.ts +0 -11
  823. package/dist/trajectory/types.js +0 -1
  824. package/dist/utils.d.ts +0 -5
  825. package/dist/utils.js +0 -36
  826. package/dist/xrd/XrdPlot.svelte +0 -615
  827. package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
  828. package/dist/xrd/broadening.d.ts +0 -20
  829. package/dist/xrd/broadening.js +0 -97
  830. package/dist/xrd/calc-xrd.d.ts +0 -37
  831. package/dist/xrd/calc-xrd.js +0 -337
  832. package/dist/xrd/index.d.ts +0 -37
  833. package/dist/xrd/index.js +0 -4
  834. package/dist/xrd/parse.d.ts +0 -13
  835. package/dist/xrd/parse.js +0 -749
  836. /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
  837. /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
  838. /package/dist/{app.css → src/lib/app.css} +0 -0
  839. /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
  840. /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
  841. /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
  842. /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
  843. /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
  844. /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
  845. /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
  846. /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
  847. /package/dist/{element → src/lib/element}/data.json +0 -0
  848. /package/dist/{element → src/lib/element}/data.json.gz +0 -0
  849. /package/dist/{element → src/lib/element}/data.schema.json +0 -0
  850. /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
  851. /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
  852. /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
  853. /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
  854. /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
  855. /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
+ }