matterviz 0.4.0 → 0.4.2

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 (527) hide show
  1. package/dist/EmptyState.svelte +10 -4
  2. package/dist/FilePicker.svelte +12 -14
  3. package/dist/Icon.svelte +7 -4
  4. package/dist/MillerIndexInput.svelte +2 -2
  5. package/dist/app.css +53 -0
  6. package/dist/brillouin/BrillouinZone.svelte +132 -219
  7. package/dist/brillouin/BrillouinZone.svelte.d.ts +9 -20
  8. package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
  9. package/dist/brillouin/BrillouinZoneExportPane.svelte +47 -96
  10. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
  11. package/dist/brillouin/BrillouinZoneInfoPane.svelte +15 -42
  12. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +2 -3
  13. package/dist/brillouin/BrillouinZoneScene.svelte +63 -230
  14. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +3 -23
  15. package/dist/brillouin/ReciprocalVectors.svelte +39 -0
  16. package/dist/brillouin/ReciprocalVectors.svelte.d.ts +9 -0
  17. package/dist/brillouin/compute.d.ts +2 -0
  18. package/dist/brillouin/compute.js +80 -77
  19. package/dist/brillouin/geometry.d.ts +8 -0
  20. package/dist/brillouin/geometry.js +57 -0
  21. package/dist/brillouin/index.d.ts +2 -0
  22. package/dist/brillouin/index.js +2 -0
  23. package/dist/brillouin/types.d.ts +2 -2
  24. package/dist/chempot-diagram/ChemPotDiagram.svelte +33 -38
  25. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +1 -1
  26. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +143 -246
  27. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +4 -1
  28. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +652 -976
  29. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +7 -1
  30. package/dist/chempot-diagram/async-compute.svelte.js +1 -1
  31. package/dist/chempot-diagram/color.d.ts +3 -6
  32. package/dist/chempot-diagram/color.js +5 -5
  33. package/dist/chempot-diagram/compute.d.ts +3 -3
  34. package/dist/chempot-diagram/compute.js +3 -1
  35. package/dist/chempot-diagram/controls-state.svelte.d.ts +10 -0
  36. package/dist/chempot-diagram/controls-state.svelte.js +42 -0
  37. package/dist/chempot-diagram/export.d.ts +47 -0
  38. package/dist/chempot-diagram/export.js +133 -0
  39. package/dist/chempot-diagram/index.d.ts +1 -0
  40. package/dist/chempot-diagram/index.js +1 -0
  41. package/dist/chempot-diagram/pointer.d.ts +0 -10
  42. package/dist/chempot-diagram/pointer.js +4 -4
  43. package/dist/chempot-diagram/types.d.ts +3 -3
  44. package/dist/colors/index.d.ts +0 -4
  45. package/dist/colors/index.js +21 -22
  46. package/dist/composition/BarChart.svelte +37 -31
  47. package/dist/composition/BubbleChart.svelte +17 -17
  48. package/dist/composition/Composition.svelte +7 -11
  49. package/dist/composition/Formula.svelte +18 -25
  50. package/dist/composition/FormulaFilter.svelte +96 -98
  51. package/dist/composition/PieChart.svelte +60 -46
  52. package/dist/composition/chem-sys.js +3 -2
  53. package/dist/composition/format.js +4 -3
  54. package/dist/composition/index.d.ts +2 -0
  55. package/dist/composition/index.js +14 -0
  56. package/dist/composition/parse.d.ts +2 -3
  57. package/dist/composition/parse.js +27 -28
  58. package/dist/constants.js +11 -9
  59. package/dist/controls.d.ts +1 -0
  60. package/dist/controls.js +0 -1
  61. package/dist/convex-hull/ConvexHull.svelte +20 -25
  62. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -4
  63. package/dist/convex-hull/ConvexHull2D.svelte +176 -256
  64. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  65. package/dist/convex-hull/ConvexHull3D.svelte +269 -804
  66. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  67. package/dist/convex-hull/ConvexHull4D.svelte +236 -755
  68. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  69. package/dist/convex-hull/ConvexHullChrome.svelte +264 -0
  70. package/dist/convex-hull/ConvexHullChrome.svelte.d.ts +30 -0
  71. package/dist/convex-hull/ConvexHullControls.svelte +128 -49
  72. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +7 -6
  73. package/dist/convex-hull/ConvexHullInfoPane.svelte +18 -5
  74. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +6 -5
  75. package/dist/convex-hull/ConvexHullStats.svelte +210 -351
  76. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +3 -1
  77. package/dist/convex-hull/ConvexHullTooltip.svelte +16 -14
  78. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +2 -1
  79. package/dist/convex-hull/GasPressureControls.svelte +5 -12
  80. package/dist/convex-hull/StructurePopup.svelte +17 -21
  81. package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
  82. package/dist/convex-hull/TemperatureSlider.svelte +4 -10
  83. package/dist/convex-hull/barycentric-coords.d.ts +2 -4
  84. package/dist/convex-hull/barycentric-coords.js +6 -33
  85. package/dist/convex-hull/canvas-interactions.svelte.d.ts +79 -0
  86. package/dist/convex-hull/canvas-interactions.svelte.js +279 -0
  87. package/dist/convex-hull/helpers.d.ts +47 -17
  88. package/dist/convex-hull/helpers.js +186 -101
  89. package/dist/convex-hull/hull-state.svelte.d.ts +44 -0
  90. package/dist/convex-hull/hull-state.svelte.js +124 -0
  91. package/dist/convex-hull/index.d.ts +9 -7
  92. package/dist/convex-hull/index.js +7 -2
  93. package/dist/convex-hull/thermodynamics.js +109 -937
  94. package/dist/convex-hull/types.d.ts +12 -4
  95. package/dist/convex-hull/types.js +12 -0
  96. package/dist/coordination/CoordinationBarPlot.svelte +41 -43
  97. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +1 -1
  98. package/dist/coordination/calc-coordination.d.ts +1 -1
  99. package/dist/coordination/calc-coordination.js +28 -25
  100. package/dist/element/BohrAtom.svelte +6 -8
  101. package/dist/element/ElementHeading.svelte +4 -1
  102. package/dist/element/ElementPhoto.svelte +11 -9
  103. package/dist/element/ElementStats.svelte +12 -10
  104. package/dist/element/ElementTile.svelte +24 -29
  105. package/dist/element/ElementTile.svelte.d.ts +1 -1
  106. package/dist/element/Nucleus.svelte +4 -2
  107. package/dist/element/data.d.ts +1 -2
  108. package/dist/element/helpers.d.ts +4 -0
  109. package/dist/element/helpers.js +18 -0
  110. package/dist/element/index.d.ts +1 -0
  111. package/dist/element/index.js +3 -0
  112. package/dist/feedback/DragOverlay.svelte +5 -3
  113. package/dist/feedback/DragOverlay.svelte.d.ts +2 -1
  114. package/dist/feedback/StatusMessage.svelte +20 -7
  115. package/dist/fermi-surface/FermiSlice.svelte +21 -18
  116. package/dist/fermi-surface/FermiSurface.svelte +78 -165
  117. package/dist/fermi-surface/FermiSurface.svelte.d.ts +9 -20
  118. package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
  119. package/dist/fermi-surface/FermiSurfaceScene.svelte +93 -272
  120. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +3 -23
  121. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
  122. package/dist/fermi-surface/compute.js +14 -13
  123. package/dist/fermi-surface/export.js +4 -15
  124. package/dist/fermi-surface/index.d.ts +0 -1
  125. package/dist/fermi-surface/index.js +0 -1
  126. package/dist/fermi-surface/parse.d.ts +1 -1
  127. package/dist/fermi-surface/parse.js +84 -97
  128. package/dist/fermi-surface/types.d.ts +2 -2
  129. package/dist/heatmap-matrix/HeatmapMatrix.svelte +161 -185
  130. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +6 -5
  131. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +12 -9
  132. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +5 -5
  133. package/dist/heatmap-matrix/index.d.ts +8 -2
  134. package/dist/icons.d.ts +4 -0
  135. package/dist/icons.js +4 -0
  136. package/dist/index.d.ts +1 -0
  137. package/dist/index.js +1 -0
  138. package/dist/io/ExportPane.svelte +170 -0
  139. package/dist/io/ExportPane.svelte.d.ts +17 -0
  140. package/dist/io/decompress.d.ts +2 -1
  141. package/dist/io/decompress.js +22 -36
  142. package/dist/io/export.d.ts +9 -1
  143. package/dist/io/export.js +37 -29
  144. package/dist/io/fetch.d.ts +2 -4
  145. package/dist/io/fetch.js +0 -11
  146. package/dist/io/file-drop.d.ts +7 -0
  147. package/dist/io/file-drop.js +13 -0
  148. package/dist/io/index.d.ts +1 -0
  149. package/dist/io/index.js +3 -0
  150. package/dist/io/is-binary.d.ts +9 -0
  151. package/dist/io/is-binary.js +45 -1
  152. package/dist/io/types.d.ts +13 -0
  153. package/dist/io/url-drop.js +13 -25
  154. package/dist/isosurface/Isosurface.svelte +17 -23
  155. package/dist/isosurface/IsosurfaceControls.svelte +37 -42
  156. package/dist/isosurface/parse-vaspwave.d.ts +3 -0
  157. package/dist/isosurface/parse-vaspwave.js +138 -0
  158. package/dist/isosurface/parse.js +50 -48
  159. package/dist/labels.d.ts +6 -2
  160. package/dist/labels.js +44 -14
  161. package/dist/layout/FullscreenButton.svelte +34 -0
  162. package/dist/layout/FullscreenButton.svelte.d.ts +10 -0
  163. package/dist/layout/FullscreenToggle.svelte +12 -12
  164. package/dist/layout/InfoCard.svelte +7 -18
  165. package/dist/layout/InfoTag.svelte +1 -3
  166. package/dist/layout/NumberRangeInput.svelte +46 -0
  167. package/dist/layout/NumberRangeInput.svelte.d.ts +12 -0
  168. package/dist/layout/PropertyFilter.svelte +2 -6
  169. package/dist/layout/SettingsSection.svelte +21 -17
  170. package/dist/layout/SubpageGrid.svelte +3 -1
  171. package/dist/layout/ViewerChrome.svelte +115 -0
  172. package/dist/layout/ViewerChrome.svelte.d.ts +18 -0
  173. package/dist/layout/fullscreen.d.ts +4 -0
  174. package/dist/layout/fullscreen.js +3 -5
  175. package/dist/layout/fullscreen.svelte.d.ts +8 -0
  176. package/dist/layout/fullscreen.svelte.js +36 -0
  177. package/dist/layout/index.d.ts +4 -0
  178. package/dist/layout/index.js +4 -0
  179. package/dist/layout/json-tree/JsonNode.svelte +8 -11
  180. package/dist/layout/json-tree/JsonTree.svelte +53 -77
  181. package/dist/layout/json-tree/JsonValue.svelte +7 -15
  182. package/dist/layout/json-tree/utils.js +14 -23
  183. package/dist/math.d.ts +9 -3
  184. package/dist/math.js +37 -21
  185. package/dist/overlays/ContextMenu.svelte +4 -2
  186. package/dist/overlays/CopyButton.svelte +11 -5
  187. package/dist/overlays/DragControlTab.svelte +6 -1
  188. package/dist/overlays/DraggablePane.svelte +81 -26
  189. package/dist/overlays/DraggablePane.svelte.d.ts +1 -0
  190. package/dist/overlays/GlassChip.svelte +30 -0
  191. package/dist/overlays/GlassChip.svelte.d.ts +8 -0
  192. package/dist/overlays/InfoPaneCards.svelte +11 -23
  193. package/dist/overlays/index.d.ts +11 -0
  194. package/dist/overlays/index.js +26 -0
  195. package/dist/overlays/portal.d.ts +2 -0
  196. package/dist/overlays/portal.js +14 -0
  197. package/dist/periodic-table/PeriodicTable.svelte +115 -146
  198. package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
  199. package/dist/periodic-table/PeriodicTableControls.svelte +11 -63
  200. package/dist/periodic-table/TableInset.svelte +9 -4
  201. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +50 -71
  202. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
  203. package/dist/phase-diagram/PhaseDiagramControls.svelte +73 -96
  204. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +4 -3
  205. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +4 -2
  206. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +2 -3
  207. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +49 -134
  208. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +3 -4
  209. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
  210. package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
  211. package/dist/phase-diagram/build-diagram.js +3 -3
  212. package/dist/phase-diagram/colors.js +1 -1
  213. package/dist/phase-diagram/diagram-input.d.ts +1 -2
  214. package/dist/phase-diagram/parse.d.ts +2 -1
  215. package/dist/phase-diagram/parse.js +15 -15
  216. package/dist/phase-diagram/svg-to-diagram.js +21 -15
  217. package/dist/phase-diagram/utils.js +2 -3
  218. package/dist/plot/bar/BarPlot.svelte +494 -692
  219. package/dist/plot/bar/BarPlot.svelte.d.ts +9 -15
  220. package/dist/plot/bar/BarPlotControls.svelte +1 -3
  221. package/dist/plot/bar/BarPlotControls.svelte.d.ts +5 -7
  222. package/dist/plot/bar/SpacegroupBarPlot.svelte +31 -37
  223. package/dist/plot/bar/data.d.ts +5 -4
  224. package/dist/plot/bar/data.js +2 -1
  225. package/dist/plot/box/BoxPlot.svelte +361 -439
  226. package/dist/plot/box/BoxPlot.svelte.d.ts +6 -3
  227. package/dist/plot/box/BoxPlotControls.svelte.d.ts +1 -1
  228. package/dist/plot/box/Violin.svelte.d.ts +2 -1
  229. package/dist/plot/box/box-plot.d.ts +3 -2
  230. package/dist/plot/box/box-plot.js +6 -3
  231. package/dist/plot/box/kde.d.ts +2 -1
  232. package/dist/plot/box/kde.js +4 -4
  233. package/dist/plot/core/auto-place.d.ts +1 -1
  234. package/dist/plot/core/auto-place.js +5 -2
  235. package/dist/plot/core/axis-utils.d.ts +12 -7
  236. package/dist/plot/core/axis-utils.js +48 -48
  237. package/dist/plot/core/components/AxisLabel.svelte +82 -20
  238. package/dist/plot/core/components/AxisLabel.svelte.d.ts +1 -0
  239. package/dist/plot/core/components/ColorBar.svelte +106 -111
  240. package/dist/plot/core/components/ColorBar.svelte.d.ts +5 -4
  241. package/dist/plot/core/components/ColorScaleSelect.svelte +1 -1
  242. package/dist/plot/core/components/FillArea.svelte +10 -17
  243. package/dist/plot/core/components/HierarchyControls.svelte +249 -0
  244. package/dist/plot/{sunburst/SunburstControls.svelte.d.ts → core/components/HierarchyControls.svelte.d.ts} +12 -8
  245. package/dist/plot/core/components/InteractiveAxisLabel.svelte +1 -1
  246. package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +1 -1
  247. package/dist/plot/core/components/Line.svelte +21 -11
  248. package/dist/plot/core/components/Line.svelte.d.ts +5 -2
  249. package/dist/plot/core/components/PlotAxis.svelte +42 -18
  250. package/dist/plot/core/components/PlotAxis.svelte.d.ts +2 -1
  251. package/dist/plot/core/components/PlotControls.svelte +65 -41
  252. package/dist/plot/core/components/PlotControls.svelte.d.ts +1 -1
  253. package/dist/plot/core/components/PlotLegend.svelte +31 -35
  254. package/dist/plot/core/components/PlotMarginals.svelte +616 -0
  255. package/dist/plot/core/components/PlotMarginals.svelte.d.ts +15 -0
  256. package/dist/plot/core/components/PlotTooltip.svelte +1 -1
  257. package/dist/plot/core/components/PortalSelect.svelte +4 -8
  258. package/dist/plot/core/components/ReferenceLine.svelte +27 -24
  259. package/dist/plot/core/components/ReferenceLine3D.svelte +56 -59
  260. package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +4 -4
  261. package/dist/plot/core/components/ReferencePlane.svelte +9 -10
  262. package/dist/plot/core/components/ReferencePlane.svelte.d.ts +4 -4
  263. package/dist/plot/core/components/ZeroLines.svelte +4 -8
  264. package/dist/plot/core/components/ZoomRect.svelte +1 -2
  265. package/dist/plot/core/components/index.d.ts +1 -0
  266. package/dist/plot/core/components/index.js +1 -0
  267. package/dist/plot/core/data-cleaning-signal.d.ts +46 -0
  268. package/dist/plot/core/data-cleaning-signal.js +467 -0
  269. package/dist/plot/core/data-cleaning.d.ts +2 -42
  270. package/dist/plot/core/data-cleaning.js +29 -476
  271. package/dist/plot/core/data-transform.js +9 -5
  272. package/dist/plot/core/fill-utils.d.ts +7 -4
  273. package/dist/plot/core/fill-utils.js +34 -9
  274. package/dist/plot/core/index.d.ts +1 -0
  275. package/dist/plot/core/index.js +1 -0
  276. package/dist/plot/core/interactions.d.ts +5 -1
  277. package/dist/plot/core/interactions.js +14 -2
  278. package/dist/plot/core/layout.d.ts +3 -1
  279. package/dist/plot/core/layout.js +22 -13
  280. package/dist/plot/core/marginals.d.ts +170 -0
  281. package/dist/plot/core/marginals.js +436 -0
  282. package/dist/plot/core/pan-zoom.svelte.d.ts +35 -0
  283. package/dist/plot/core/pan-zoom.svelte.js +221 -0
  284. package/dist/plot/core/placed-tween.svelte.d.ts +21 -0
  285. package/dist/plot/core/placed-tween.svelte.js +68 -0
  286. package/dist/plot/core/reference-line.d.ts +10 -10
  287. package/dist/plot/core/reference-line.js +7 -7
  288. package/dist/plot/core/scales.d.ts +40 -25
  289. package/dist/plot/core/scales.js +49 -21
  290. package/dist/plot/core/svg.d.ts +2 -1
  291. package/dist/plot/core/types/fills.d.ts +101 -0
  292. package/dist/plot/core/types/fills.js +15 -0
  293. package/dist/plot/core/types/plot-3d.d.ts +87 -0
  294. package/dist/plot/core/types/plot-3d.js +4 -0
  295. package/dist/plot/core/types/reference-lines.d.ts +140 -0
  296. package/dist/plot/core/types/reference-lines.js +9 -0
  297. package/dist/plot/core/types.d.ts +47 -331
  298. package/dist/plot/core/types.js +23 -20
  299. package/dist/plot/core/utils/hierarchy-chart.d.ts +51 -0
  300. package/dist/plot/core/utils/hierarchy-chart.js +179 -0
  301. package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
  302. package/dist/plot/core/utils/hierarchy-labels.js +99 -0
  303. package/dist/plot/core/utils/label-placement.d.ts +1 -1
  304. package/dist/plot/core/utils/label-placement.js +5 -5
  305. package/dist/plot/core/utils.d.ts +2 -1
  306. package/dist/plot/histogram/Histogram.svelte +373 -631
  307. package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
  308. package/dist/plot/histogram/HistogramControls.svelte +30 -28
  309. package/dist/plot/histogram/HistogramControls.svelte.d.ts +1 -1
  310. package/dist/plot/histogram/histogram.d.ts +31 -0
  311. package/dist/plot/histogram/histogram.js +70 -0
  312. package/dist/plot/histogram/index.d.ts +1 -0
  313. package/dist/plot/histogram/index.js +1 -0
  314. package/dist/plot/index.d.ts +1 -0
  315. package/dist/plot/index.js +1 -0
  316. package/dist/plot/sankey/Sankey.svelte +79 -73
  317. package/dist/plot/sankey/Sankey.svelte.d.ts +3 -3
  318. package/dist/plot/sankey/SankeyControls.svelte +22 -16
  319. package/dist/plot/sankey/sankey.js +3 -1
  320. package/dist/plot/scatter/BinnedScatterPlot.svelte +264 -112
  321. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +11 -4
  322. package/dist/plot/scatter/ElementScatter.svelte +4 -1
  323. package/dist/plot/scatter/ScatterPlot.svelte +623 -821
  324. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +9 -15
  325. package/dist/plot/scatter/ScatterPlotControls.svelte +18 -19
  326. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
  327. package/dist/plot/scatter/ScatterPoint.svelte +16 -9
  328. package/dist/plot/scatter/binned-scatter-types.d.ts +6 -12
  329. package/dist/plot/scatter/binned-scatter-types.js +6 -1
  330. package/dist/plot/scatter/index.d.ts +1 -1
  331. package/dist/plot/scatter/scatter-data.d.ts +1 -1
  332. package/dist/plot/scatter/scatter-data.js +8 -7
  333. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +40 -60
  334. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +6 -14
  335. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +17 -15
  336. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +5 -5
  337. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +232 -234
  338. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +5 -14
  339. package/dist/plot/scatter-3d/Surface3D.svelte +9 -17
  340. package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +4 -3
  341. package/dist/plot/sunburst/Sunburst.svelte +256 -338
  342. package/dist/plot/sunburst/Sunburst.svelte.d.ts +4 -3
  343. package/dist/plot/sunburst/index.d.ts +1 -1
  344. package/dist/plot/sunburst/index.js +2 -1
  345. package/dist/plot/sunburst/render.d.ts +2 -2
  346. package/dist/plot/sunburst/render.js +47 -22
  347. package/dist/plot/sunburst/sunburst.d.ts +5 -1
  348. package/dist/plot/sunburst/sunburst.js +14 -4
  349. package/dist/plot/treemap/Treemap.svelte +907 -0
  350. package/dist/plot/treemap/Treemap.svelte.d.ts +84 -0
  351. package/dist/plot/treemap/index.d.ts +3 -0
  352. package/dist/plot/treemap/index.js +4 -0
  353. package/dist/plot/treemap/treemap.d.ts +26 -0
  354. package/dist/plot/treemap/treemap.js +99 -0
  355. package/dist/rdf/RdfPlot.svelte +22 -26
  356. package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
  357. package/dist/rdf/calc-rdf.js +4 -8
  358. package/dist/sanitize.js +14 -3
  359. package/dist/scene/SceneCamera.svelte +62 -0
  360. package/dist/scene/SceneCamera.svelte.d.ts +19 -0
  361. package/dist/scene/bind-renderer.svelte.d.ts +2 -0
  362. package/dist/scene/bind-renderer.svelte.js +22 -0
  363. package/dist/scene/index.d.ts +4 -0
  364. package/dist/scene/index.js +5 -0
  365. package/dist/scene/props.js +52 -0
  366. package/dist/scene/types.d.ts +26 -0
  367. package/dist/scene/types.js +1 -0
  368. package/dist/settings.d.ts +33 -11
  369. package/dist/settings.js +136 -51
  370. package/dist/spectral/Bands.svelte +231 -237
  371. package/dist/spectral/Bands.svelte.d.ts +3 -2
  372. package/dist/spectral/BandsAndDos.svelte +29 -29
  373. package/dist/spectral/BrillouinBandsDos.svelte +21 -29
  374. package/dist/spectral/Dos.svelte +75 -77
  375. package/dist/spectral/Dos.svelte.d.ts +2 -1
  376. package/dist/spectral/helpers.d.ts +9 -9
  377. package/dist/spectral/helpers.js +66 -70
  378. package/dist/state.svelte.d.ts +0 -7
  379. package/dist/state.svelte.js +5 -24
  380. package/dist/structure/Arrow.svelte +6 -21
  381. package/dist/structure/ArrowInstances.svelte +160 -0
  382. package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
  383. package/dist/structure/AtomLegend.svelte +115 -75
  384. package/dist/structure/AtomLegend.svelte.d.ts +1 -1
  385. package/dist/structure/Bond.svelte +31 -23
  386. package/dist/structure/CanvasTooltip.svelte +16 -3
  387. package/dist/structure/CellSelect.svelte +22 -29
  388. package/dist/structure/CellSelect.svelte.d.ts +2 -1
  389. package/dist/structure/Cylinder.svelte +24 -40
  390. package/dist/structure/InstancedAtoms.svelte +114 -0
  391. package/dist/structure/InstancedAtoms.svelte.d.ts +15 -0
  392. package/dist/structure/Lattice.svelte +85 -149
  393. package/dist/structure/SiteLabels.svelte +122 -0
  394. package/dist/structure/SiteLabels.svelte.d.ts +18 -0
  395. package/dist/structure/Structure.svelte +725 -735
  396. package/dist/structure/Structure.svelte.d.ts +8 -16
  397. package/dist/structure/StructureCarousel.svelte +630 -0
  398. package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
  399. package/dist/structure/StructureControls.svelte +298 -325
  400. package/dist/structure/StructureControls.svelte.d.ts +5 -3
  401. package/dist/structure/StructureExportPane.svelte +62 -168
  402. package/dist/structure/StructureExportPane.svelte.d.ts +4 -5
  403. package/dist/structure/StructureInfoPane.svelte +77 -69
  404. package/dist/structure/StructureInfoPane.svelte.d.ts +6 -6
  405. package/dist/structure/StructureScene.svelte +758 -600
  406. package/dist/structure/StructureScene.svelte.d.ts +24 -20
  407. package/dist/structure/StructureViewport.svelte +386 -0
  408. package/dist/structure/StructureViewport.svelte.d.ts +63 -0
  409. package/dist/structure/atom-label-placement.d.ts +18 -0
  410. package/dist/structure/atom-label-placement.js +115 -0
  411. package/dist/structure/atom-properties.d.ts +3 -1
  412. package/dist/structure/atom-properties.js +115 -54
  413. package/dist/structure/bond-order-perception.js +2 -4
  414. package/dist/structure/bonding.d.ts +12 -2
  415. package/dist/structure/bonding.js +172 -73
  416. package/dist/structure/edit-history.d.ts +6 -0
  417. package/dist/structure/edit-history.js +27 -0
  418. package/dist/structure/export.d.ts +25 -4
  419. package/dist/structure/export.js +103 -153
  420. package/dist/structure/format-detect.d.ts +1 -0
  421. package/dist/structure/format-detect.js +22 -0
  422. package/dist/structure/geometry.d.ts +9 -0
  423. package/dist/structure/geometry.js +27 -0
  424. package/dist/structure/index.d.ts +18 -1
  425. package/dist/structure/index.js +15 -2
  426. package/dist/structure/measure.d.ts +1 -1
  427. package/dist/structure/measure.js +6 -12
  428. package/dist/structure/parse.d.ts +5 -3
  429. package/dist/structure/parse.js +551 -567
  430. package/dist/structure/partial-occupancy.d.ts +0 -1
  431. package/dist/structure/partial-occupancy.js +5 -3
  432. package/dist/structure/pbc.d.ts +1 -1
  433. package/dist/structure/pbc.js +204 -51
  434. package/dist/structure/polyhedra.d.ts +40 -0
  435. package/dist/structure/polyhedra.js +587 -0
  436. package/dist/structure/site.d.ts +4 -0
  437. package/dist/structure/site.js +1 -0
  438. package/dist/structure/supercell.d.ts +1 -2
  439. package/dist/structure/supercell.js +10 -15
  440. package/dist/structure/validation.js +5 -6
  441. package/dist/symmetry/SymmetryElementControls.svelte +69 -0
  442. package/dist/symmetry/SymmetryElementControls.svelte.d.ts +9 -0
  443. package/dist/symmetry/SymmetryElements.svelte +350 -0
  444. package/dist/symmetry/SymmetryElements.svelte.d.ts +24 -0
  445. package/dist/symmetry/SymmetryStats.svelte +142 -49
  446. package/dist/symmetry/WyckoffTable.svelte +58 -16
  447. package/dist/symmetry/WyckoffTable.svelte.d.ts +3 -0
  448. package/dist/symmetry/cell-transform.js +8 -14
  449. package/dist/symmetry/index.d.ts +15 -4
  450. package/dist/symmetry/index.js +308 -81
  451. package/dist/symmetry/spacegroups.d.ts +5 -1
  452. package/dist/symmetry/spacegroups.js +18 -3
  453. package/dist/symmetry/symmetry-elements.d.ts +33 -0
  454. package/dist/symmetry/symmetry-elements.js +521 -0
  455. package/dist/symmetry/wyckoff-db.d.ts +9 -0
  456. package/dist/symmetry/wyckoff-db.js +87 -0
  457. package/dist/table/HeatmapTable.svelte +1104 -378
  458. package/dist/table/HeatmapTable.svelte.d.ts +12 -2
  459. package/dist/table/ToggleMenu.svelte +5 -12
  460. package/dist/table/index.d.ts +21 -6
  461. package/dist/table/index.js +34 -21
  462. package/dist/theme/ThemeControl.svelte +16 -8
  463. package/dist/theme/index.d.ts +1 -5
  464. package/dist/theme/index.js +4 -10
  465. package/dist/theme/themes.mjs +14 -7
  466. package/dist/tooltip/KCoords.svelte +4 -1
  467. package/dist/tooltip/TooltipContent.svelte +2 -5
  468. package/dist/trajectory/Trajectory.svelte +556 -352
  469. package/dist/trajectory/Trajectory.svelte.d.ts +10 -22
  470. package/dist/trajectory/TrajectoryError.svelte +11 -8
  471. package/dist/trajectory/TrajectoryExportPane.svelte +28 -54
  472. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +4 -5
  473. package/dist/trajectory/TrajectoryInfoPane.svelte +88 -99
  474. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +3 -2
  475. package/dist/trajectory/constants.js +6 -2
  476. package/dist/trajectory/extract.js +73 -71
  477. package/dist/trajectory/format-detect.d.ts +0 -1
  478. package/dist/trajectory/format-detect.js +13 -17
  479. package/dist/trajectory/frame-reader.d.ts +2 -1
  480. package/dist/trajectory/frame-reader.js +74 -136
  481. package/dist/trajectory/helpers.d.ts +12 -2
  482. package/dist/trajectory/helpers.js +68 -37
  483. package/dist/trajectory/index.d.ts +1 -0
  484. package/dist/trajectory/index.js +3 -0
  485. package/dist/trajectory/parse/ase.d.ts +9 -1
  486. package/dist/trajectory/parse/ase.js +47 -32
  487. package/dist/trajectory/parse/diagnostics.d.ts +3 -0
  488. package/dist/trajectory/parse/diagnostics.js +14 -0
  489. package/dist/trajectory/parse/h5-utils.d.ts +13 -0
  490. package/dist/trajectory/parse/h5-utils.js +109 -0
  491. package/dist/trajectory/parse/hdf5.d.ts +1 -1
  492. package/dist/trajectory/parse/hdf5.js +116 -106
  493. package/dist/trajectory/parse/index.d.ts +3 -4
  494. package/dist/trajectory/parse/index.js +68 -119
  495. package/dist/trajectory/parse/lammps.d.ts +0 -2
  496. package/dist/trajectory/parse/lammps.js +14 -16
  497. package/dist/trajectory/parse/pymatgen.d.ts +2 -0
  498. package/dist/trajectory/parse/pymatgen.js +74 -0
  499. package/dist/trajectory/parse/vasp.js +13 -9
  500. package/dist/trajectory/parse/vaspout-electronic.d.ts +13 -0
  501. package/dist/trajectory/parse/vaspout-electronic.js +207 -0
  502. package/dist/trajectory/parse/vaspout-h5.d.ts +5 -0
  503. package/dist/trajectory/parse/vaspout-h5.js +284 -0
  504. package/dist/trajectory/parse/xyz.d.ts +9 -21
  505. package/dist/trajectory/parse/xyz.js +38 -39
  506. package/dist/trajectory/plotting.d.ts +8 -10
  507. package/dist/trajectory/plotting.js +102 -127
  508. package/dist/utils.d.ts +4 -0
  509. package/dist/utils.js +8 -1
  510. package/dist/xrd/XrdPlot.svelte +56 -85
  511. package/dist/xrd/broadening.d.ts +2 -1
  512. package/dist/xrd/broadening.js +2 -1
  513. package/dist/xrd/calc-xrd.js +8 -15
  514. package/dist/xrd/index.d.ts +2 -2
  515. package/dist/xrd/parse.d.ts +0 -1
  516. package/dist/xrd/parse.js +56 -73
  517. package/package.json +77 -36
  518. package/dist/api/mp.d.ts +0 -6
  519. package/dist/api/mp.js +0 -22
  520. package/dist/element/data.json +0 -11864
  521. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  522. package/dist/fermi-surface/marching-cubes.js +0 -2
  523. package/dist/plot/core/hover-lock.svelte.d.ts +0 -14
  524. package/dist/plot/core/hover-lock.svelte.js +0 -45
  525. package/dist/plot/sunburst/SunburstControls.svelte +0 -200
  526. package/dist/structure/label-placement.d.ts +0 -14
  527. package/dist/structure/label-placement.js +0 -72
@@ -6,6 +6,7 @@
6
6
  decompress_data_binary,
7
7
  decompress_file,
8
8
  detect_compression_format,
9
+ drag_over_handlers,
9
10
  handle_url_drop,
10
11
  } from '../io'
11
12
  import { format_value } from '../labels'
@@ -31,13 +32,9 @@
31
32
  function is_xrd_pattern(obj: unknown): obj is XrdPattern {
32
33
  if (!obj || typeof obj !== `object`) return false
33
34
  const pattern_obj = obj as { x?: unknown; y?: unknown }
34
- const x = pattern_obj.x
35
- const y = pattern_obj.y
36
- return (
37
- Array.isArray(x) &&
38
- Array.isArray(y) &&
39
- x.length === y.length
40
- )
35
+ const x_vals = pattern_obj.x
36
+ const y_vals = pattern_obj.y
37
+ return Array.isArray(x_vals) && Array.isArray(y_vals) && x_vals.length === y_vals.length
41
38
  }
42
39
 
43
40
  function format_hkl(hkl: Hkl, format: HklFormat): string {
@@ -81,10 +78,8 @@
81
78
  broadening_params = $bindable({ ...DEFAULT_BROADENING }),
82
79
  controls = {},
83
80
  ...rest
84
- }:
85
- & ComponentProps<typeof BarPlot>
86
- & ComponentProps<typeof ScatterPlot>
87
- & {
81
+ }: ComponentProps<typeof BarPlot> &
82
+ ComponentProps<typeof ScatterPlot> & {
88
83
  patterns:
89
84
  | XrdPattern
90
85
  | Record<string, XrdPattern | { pattern: XrdPattern; color?: string }>
@@ -114,31 +109,24 @@
114
109
  const base_entries = Array.isArray(patterns)
115
110
  ? (patterns as PatternEntry[])
116
111
  : is_xrd_pattern(patterns)
117
- ? [{ label: `XRD Pattern`, pattern: patterns as XrdPattern }]
118
- : Object.entries(
119
- patterns as Record<
120
- string,
121
- XrdPattern | { pattern: XrdPattern; color?: string }
122
- >,
123
- ).map(([label, value]) =>
124
- `pattern` in value
125
- ? { label, ...value }
126
- : { label, pattern: value as XrdPattern }
127
- )
112
+ ? [{ label: `XRD Pattern`, pattern: patterns as XrdPattern }]
113
+ : Object.entries(
114
+ patterns as Record<string, XrdPattern | { pattern: XrdPattern; color?: string }>,
115
+ ).map(([label, value]) =>
116
+ `pattern` in value ? { label, ...value } : { label, pattern: value as XrdPattern },
117
+ )
128
118
  // Merge user-provided patterns with any dropped-on-the-fly entries
129
119
  return [...base_entries, ...dropped_entries]
130
120
  })
131
121
 
132
122
  // Decide default show_angles
133
- const actual_show_angles = $derived(
134
- show_angles ?? pattern_entries.length <= 2,
135
- )
123
+ const actual_show_angles = $derived(show_angles ?? pattern_entries.length <= 2)
136
124
 
137
125
  // Compute global max intensity for normalization (as in pymatviz xrd_pattern)
138
126
  const global_max_intensity = $derived.by(() => {
139
127
  let max_val = 0
140
128
  for (const entry of pattern_entries) {
141
- for (const y of entry.pattern.y) if (y > max_val) max_val = y
129
+ for (const intensity of entry.pattern.y) if (intensity > max_val) max_val = intensity
142
130
  }
143
131
  return max_val || 1
144
132
  })
@@ -159,7 +147,7 @@
159
147
  })
160
148
 
161
149
  // Scaled intensities are normalized to 0..100, add 10% top padding for peak labels
162
- const intensity_range: [number, number] = [0, 110]
150
+ const intensity_range: Vec2 = [0, 110]
163
151
 
164
152
  // Build BarPlot series from entries (for Discrete/Stick view)
165
153
  const bar_series = $derived.by<BarSeries[]>(() => {
@@ -168,7 +156,7 @@
168
156
  const include_name = pattern_entries.length > 1
169
157
  // Add transparency when multiple series overlap
170
158
  const alpha = pattern_entries.length > 1 ? 0.6 : 1
171
- const scale = (y: number) => (y / global_max_intensity) * 100
159
+ const scale = (y_val: number) => (y_val / global_max_intensity) * 100
172
160
  return pattern_entries.map((entry, entry_idx) => {
173
161
  const xs = entry.pattern.x
174
162
  const ys = entry.pattern.y.map((val) => scale(val || 0))
@@ -220,12 +208,11 @@
220
208
  metadata.push({ hkls, d: d_hkl, label: entry.label })
221
209
 
222
210
  if (selected_indices.includes(idx)) {
223
- const angle_text = actual_show_angles
224
- ? `${format_value(xs[idx], `.2f`)}°`
225
- : ``
226
- const hkl_text = hkls && hkl_format
227
- ? hkls.map((hkl_val) => format_hkl(hkl_val, hkl_format)).join(`, `)
228
- : ``
211
+ const angle_text = actual_show_angles ? `${format_value(xs[idx], `.2f`)}°` : ``
212
+ const hkl_text =
213
+ hkls && hkl_format
214
+ ? hkls.map((hkl_val) => format_hkl(hkl_val, hkl_format)).join(`, `)
215
+ : ``
229
216
  // Use @ separator between hkl and angle for better clarity
230
217
  const separator = hkl_text && angle_text ? ` @ ` : ``
231
218
  const text = [hkl_text, angle_text].filter(Boolean).join(separator)
@@ -280,7 +267,7 @@
280
267
  const all_ys = all_processed.flatMap((processed) => processed.broadened.y)
281
268
  const max_y = Math.max(...all_ys, 1) // Avoid div by zero
282
269
 
283
- const scale = (y: number) => (y / max_y) * 100
270
+ const scale = (y_val: number) => (y_val / max_y) * 100
284
271
  const base_color = entry.color ?? PLOT_COLORS[entry_idx % PLOT_COLORS.length]
285
272
  // Add transparency when multiple series overlap
286
273
  const alpha = all_processed.length > 1 ? 0.6 : 1
@@ -304,10 +291,7 @@
304
291
  loading = true
305
292
  error_msg = undefined
306
293
 
307
- const compute_and_add = async (
308
- content: string | ArrayBuffer,
309
- filename: string,
310
- ) => {
294
+ const compute_and_add = async (content: string | ArrayBuffer, filename: string) => {
311
295
  const result = await add_xrd_pattern(content, filename, wavelength)
312
296
  if (result.error) {
313
297
  error_msg = result.error
@@ -318,10 +302,9 @@
318
302
 
319
303
  try {
320
304
  // Handle URL-based drops
321
- const handled = await handle_url_drop(
322
- event,
323
- on_file_drop || compute_and_add,
324
- ).catch(() => false)
305
+ const handled = await handle_url_drop(event, on_file_drop || compute_and_add).catch(
306
+ () => false,
307
+ )
325
308
  if (handled) return
326
309
 
327
310
  const file = event.dataTransfer?.files?.[0]
@@ -331,7 +314,7 @@
331
314
  const compression_format = detect_compression_format(lower_name)
332
315
  // Get base filename without compression extension
333
316
  const base_name = compression_format
334
- ? lower_name.replace(/\.(gz|gzip)$/i, ``)
317
+ ? lower_name.replace(/\.(?:gz|gzip)$/i, ``)
335
318
  : lower_name
336
319
  const base_ext = base_name.split(`.`).pop()
337
320
 
@@ -352,9 +335,7 @@
352
335
  if (content) await (on_file_drop || compute_and_add)(content, filename)
353
336
  }
354
337
  } catch (exc) {
355
- error_msg = `Failed to load file ${file.name}: ${
356
- to_error(exc).message
357
- }`
338
+ error_msg = `Failed to load file ${file.name}: ${to_error(exc).message}`
358
339
  }
359
340
  }
360
341
  } finally {
@@ -380,11 +361,9 @@
380
361
  </label>
381
362
 
382
363
  {#if broadening_enabled}
383
- <div
384
- class="pane-grid"
385
- style="display: grid; grid-template-columns: 1fr 1fr; gap: 1ex"
386
- >
387
- <label title="Caglioti U parameter">U:
364
+ <div class="pane-grid" style="display: grid; grid-template-columns: 1fr 1fr; gap: 1ex">
365
+ <label title="Caglioti U parameter"
366
+ >U:
388
367
  <input
389
368
  type="number"
390
369
  step="0.001"
@@ -392,7 +371,8 @@
392
371
  class="param-input"
393
372
  />
394
373
  </label>
395
- <label title="Caglioti V parameter">V:
374
+ <label title="Caglioti V parameter"
375
+ >V:
396
376
  <input
397
377
  type="number"
398
378
  step="0.001"
@@ -400,7 +380,8 @@
400
380
  class="param-input"
401
381
  />
402
382
  </label>
403
- <label title="Caglioti W parameter">W:
383
+ <label title="Caglioti W parameter"
384
+ >W:
404
385
  <input
405
386
  type="number"
406
387
  step="0.001"
@@ -408,7 +389,8 @@
408
389
  class="param-input"
409
390
  />
410
391
  </label>
411
- <label title="Pseudo-Voigt shape factor (0=Gaussian, 1=Lorentzian)">η:
392
+ <label title="Pseudo-Voigt shape factor (0=Gaussian, 1=Lorentzian)"
393
+ >η:
412
394
  <input
413
395
  type="number"
414
396
  min="0"
@@ -437,8 +419,8 @@
437
419
  {:else}
438
420
  <StatusMessage
439
421
  message={allow_file_drop
440
- ? `Drag and drop structure files (.cif, .json, etc.) or XRD data files (.xy, .csv, .ras, .uxd, .gsas, .xrdml, .brml, .raw, + .gz) here`
441
- : `No XRD data to display`}
422
+ ? `Drag and drop structure files (.cif, .json, etc.) or XRD data files (.xy, .csv, .ras, .uxd, .gsas, .xrdml, .brml, .raw, + .gz) here`
423
+ : `No XRD data to display`}
442
424
  />
443
425
  {/if}
444
426
  </EmptyState>
@@ -474,33 +456,27 @@
474
456
  }}
475
457
  {tooltip}
476
458
  ondrop={handle_file_drop}
477
- ondragover={(event) => {
478
- event.preventDefault()
479
- if (!allow_file_drop) return
480
- dragover = true
481
- }}
482
- ondragleave={(event) => {
483
- event.preventDefault()
484
- dragover = false
485
- }}
486
- class={(rest.class ?? ``) + (dragover ? ` dragover` : ``)}
459
+ {...drag_over_handlers({
460
+ allow: () => allow_file_drop,
461
+ set_dragover: (over) => (dragover = over),
462
+ })}
463
+ class={[rest.class, dragover && `dragover`]}
487
464
  style={`overflow: visible; ${rest.style ?? ``}`}
488
465
  {controls}
489
466
  controls_extra={broadening_controls_snippet}
490
467
  />
491
468
  {:else}
492
469
  <!-- Discrete Stick View -->
493
- {#snippet tooltip(
494
- info: BarHandlerProps<{ label?: string; hkls?: Hkl[]; d?: number }>,
495
- )}
470
+ {#snippet tooltip(info: BarHandlerProps<{ label?: string; hkls?: Hkl[]; d?: number }>)}
496
471
  {@const angle_text = `${format_value(info.x, `.2f`)}°`}
497
472
  {@const intensity_text = `${format_value(info.y, `.1f`)}`}
498
473
  {@const hkls = info.metadata?.hkls}
499
- {@const d = info.metadata?.d}
500
- {@const hkl_text = hkls && hkl_format
501
- ? hkls.map((hkl: Hkl) => format_hkl(hkl, hkl_format)).join(`, `)
502
- : ``}
503
- {@const d_text = d != null ? `${format_value(d, `.3f`)} Å` : ``}
474
+ {@const d_spacing = info.metadata?.d}
475
+ {@const hkl_text =
476
+ hkls && hkl_format
477
+ ? hkls.map((hkl: Hkl) => format_hkl(hkl, hkl_format)).join(`, `)
478
+ : ``}
479
+ {@const d_text = d_spacing != null ? `${format_value(d_spacing, `.3f`)} Å` : ``}
504
480
  {@html sanitize_html(info.metadata?.label ?? ``)}<br />
505
481
  2θ: {angle_text}<br />
506
482
  Intensity: {intensity_text}
@@ -533,16 +509,11 @@
533
509
  }}
534
510
  {tooltip}
535
511
  ondrop={handle_file_drop}
536
- ondragover={(event) => {
537
- event.preventDefault()
538
- if (!allow_file_drop) return
539
- dragover = true
540
- }}
541
- ondragleave={(event) => {
542
- event.preventDefault()
543
- dragover = false
544
- }}
545
- class={(rest.class ?? ``) + (dragover ? ` dragover` : ``)}
512
+ {...drag_over_handlers({
513
+ allow: () => allow_file_drop,
514
+ set_dragover: (over) => (dragover = over),
515
+ })}
516
+ class={[rest.class, dragover && `dragover`]}
546
517
  style={`overflow: visible; ${rest.style ?? ``}`}
547
518
  show_controls={controls.show}
548
519
  controls_open={controls.open}
@@ -1,3 +1,4 @@
1
+ import type { Vec2 } from '../math';
1
2
  import type { XrdPattern } from './index';
2
3
  export type BroadeningParams = {
3
4
  U: number;
@@ -16,5 +17,5 @@ fwhm: number, // Full Width at Half Maximum
16
17
  eta: number): number;
17
18
  export declare function compute_broadened_pattern(pattern: XrdPattern, // Discrete XRD pattern (peaks)
18
19
  params: BroadeningParams, // Broadening parameters (U, V, W, shape_factor)
19
- range: [number, number], // Angular range [min, max] in degrees
20
+ range: Vec2, // Angular range [min, max] in degrees
20
21
  step_size?: number): XrdPattern;
@@ -1,3 +1,4 @@
1
+ import { clamp01 } from '../utils';
1
2
  const LOG_2 = Math.log(2);
2
3
  export const DEFAULT_BROADENING = {
3
4
  U: 0.04,
@@ -43,7 +44,7 @@ fwhm, // Full Width at Half Maximum
43
44
  eta) {
44
45
  // Intensity at x
45
46
  // Clamp eta to [0, 1]
46
- const safe_eta = Math.max(0, Math.min(1, eta));
47
+ const safe_eta = clamp01(eta);
47
48
  return safe_eta * lorentzian(x, x0, fwhm) + (1 - safe_eta) * gaussian(x, x0, fwhm);
48
49
  }
49
50
  // Computes a broadened XRD pattern from discrete peaks.
@@ -67,13 +67,6 @@ function get_unique_families(hkls) {
67
67
  }
68
68
  return family_map;
69
69
  }
70
- function compute_reciprocal_lattice_rows(structure) {
71
- // For row-wise lattice matrix A (rows are a, b, c), reciprocal rows are inv(A)^T
72
- const direct = structure.lattice.matrix;
73
- const inv = math.matrix_inverse_3x3(direct);
74
- const recip = math.transpose_3x3_matrix(inv);
75
- return recip;
76
- }
77
70
  function enumerate_reciprocal_points(recip_rows, direct_rows, max_radius, min_radius) {
78
71
  const recip_b1 = recip_rows[0];
79
72
  const recip_b2 = recip_rows[1];
@@ -128,10 +121,9 @@ export function compute_xrd_pattern(structure, options = {}) {
128
121
  }
129
122
  wavelength = WAVELENGTHS[wl_input];
130
123
  }
131
- // Symmetry refinement (symprec > 0) is not implemented in TS version.
132
- // Option retained for API parity.
133
- // const symprec = options.symprec ?? 0
134
- const recip_rows = compute_reciprocal_lattice_rows(structure);
124
+ // Symmetry refinement (symprec > 0) is not implemented in TS version. Option retained for API parity.
125
+ // For row-wise lattice matrix A (rows are a, b, c), reciprocal rows are inv(A)^T
126
+ const recip_rows = math.transpose_3x3_matrix(math.matrix_inverse_3x3(structure.lattice.matrix));
135
127
  // Bragg condition bounds: reciprocal vector length r = 2 sin(theta) / lambda
136
128
  const two_theta_range = options.two_theta_range === null ? null : (options.two_theta_range ?? [0, 180]);
137
129
  const [min_radius, max_radius] = two_theta_range === null
@@ -192,14 +184,15 @@ export function compute_xrd_pattern(structure, options = {}) {
192
184
  const g_dot_r_all = frac_coords.map((frac_coord) => math.dot(frac_coord, hkl));
193
185
  // Atomic scattering factors (vectorized style)
194
186
  const f_scattering = coeffs.map((coeff_entry) => {
195
- const { a: a_arr, b: b_arr, z } = coeff_entry;
187
+ const { a: a_arr, b: b_arr, z: atomic_number } = coeff_entry;
196
188
  const num_terms = Math.min(a_arr.length, b_arr.length);
197
189
  const sum_terms = a_arr
198
190
  .slice(0, num_terms)
199
191
  .reduce((sum, a_i, term_idx) => sum + a_i * Math.exp(-b_arr[term_idx] * sin_theta_over_lambda_sq), 0);
200
192
  // pymatgen-style fitted params: f = Z − 41.78214·s²·Σ aᵢ·exp(−bᵢ·s²)
201
- if (z !== undefined)
202
- return z - 41.78214 * sin_theta_over_lambda_sq * sum_terms;
193
+ if (atomic_number !== undefined) {
194
+ return atomic_number - 41.78214 * sin_theta_over_lambda_sq * sum_terms;
195
+ }
203
196
  return sum_terms + (coeff_entry.c ?? 0);
204
197
  });
205
198
  const dw_corr = dw_factors.map((dw_b) => Math.exp(-dw_b * sin_theta_over_lambda_sq));
@@ -264,7 +257,7 @@ export function compute_xrd_pattern(structure, options = {}) {
264
257
  const fam = get_unique_families(item.hkls);
265
258
  const fam_array = [];
266
259
  for (const [repr_key, multiplicity] of fam.entries()) {
267
- const repr = repr_key.split(`,`).map((num_str) => parseInt(num_str, 10));
260
+ const repr = repr_key.split(`,`).map(Number);
268
261
  fam_array.push({ hkl: repr, multiplicity });
269
262
  }
270
263
  hkls_out.push(fam_array);
@@ -1,5 +1,5 @@
1
1
  import type { CompositionType } from '../composition';
2
- import type { Vec3 } from '../math';
2
+ import type { Vec2, Vec3 } from '../math';
3
3
  import type { RadiationKey } from './calc-xrd';
4
4
  export * from './broadening';
5
5
  export * from './calc-xrd';
@@ -26,7 +26,7 @@ export type XrdOptions = {
26
26
  symprec?: number;
27
27
  debye_waller_factors?: CompositionType;
28
28
  scaled?: boolean;
29
- two_theta_range?: [number, number] | null;
29
+ two_theta_range?: Vec2 | null;
30
30
  peak_merge_tol?: number;
31
31
  scaled_intensity_tol?: number;
32
32
  };
@@ -1,6 +1,5 @@
1
1
  import type { XrdPattern } from './index';
2
2
  export declare function parse_xy_file(content: string): XrdPattern | null;
3
- export declare function parse_xye_file(content: string): XrdPattern | null;
4
3
  export declare function parse_ras_file(content: string): XrdPattern | null;
5
4
  export declare function parse_uxd_file(content: string): XrdPattern | null;
6
5
  export declare function parse_gsas_file(content: string): XrdPattern | null;