matterviz 0.4.1 → 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 (395) 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 +75 -85
  7. package/dist/brillouin/BrillouinZone.svelte.d.ts +5 -7
  8. package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
  9. package/dist/brillouin/BrillouinZoneExportPane.svelte +18 -14
  10. package/dist/brillouin/BrillouinZoneInfoPane.svelte +6 -10
  11. package/dist/brillouin/BrillouinZoneScene.svelte +26 -39
  12. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
  13. package/dist/chempot-diagram/ChemPotDiagram.svelte +33 -38
  14. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +62 -74
  15. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +1 -1
  16. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +511 -547
  17. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +1 -1
  18. package/dist/chempot-diagram/async-compute.svelte.js +1 -1
  19. package/dist/chempot-diagram/controls-state.svelte.js +1 -1
  20. package/dist/colors/index.d.ts +0 -4
  21. package/dist/colors/index.js +19 -20
  22. package/dist/composition/BarChart.svelte +37 -31
  23. package/dist/composition/BubbleChart.svelte +17 -17
  24. package/dist/composition/Composition.svelte +7 -11
  25. package/dist/composition/Formula.svelte +18 -25
  26. package/dist/composition/FormulaFilter.svelte +92 -95
  27. package/dist/composition/PieChart.svelte +55 -41
  28. package/dist/composition/format.js +1 -1
  29. package/dist/composition/index.d.ts +2 -0
  30. package/dist/composition/index.js +14 -0
  31. package/dist/composition/parse.d.ts +2 -2
  32. package/dist/composition/parse.js +11 -10
  33. package/dist/constants.js +11 -9
  34. package/dist/convex-hull/ConvexHull.svelte +12 -15
  35. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -1
  36. package/dist/convex-hull/ConvexHull2D.svelte +93 -92
  37. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  38. package/dist/convex-hull/ConvexHull3D.svelte +109 -140
  39. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  40. package/dist/convex-hull/ConvexHull4D.svelte +75 -94
  41. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  42. package/dist/convex-hull/ConvexHullChrome.svelte +36 -40
  43. package/dist/convex-hull/ConvexHullControls.svelte +46 -48
  44. package/dist/convex-hull/ConvexHullStats.svelte +193 -195
  45. package/dist/convex-hull/ConvexHullTooltip.svelte +5 -12
  46. package/dist/convex-hull/GasPressureControls.svelte +5 -12
  47. package/dist/convex-hull/StructurePopup.svelte +17 -21
  48. package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
  49. package/dist/convex-hull/TemperatureSlider.svelte +4 -10
  50. package/dist/convex-hull/canvas-interactions.svelte.js +2 -1
  51. package/dist/convex-hull/helpers.d.ts +8 -10
  52. package/dist/convex-hull/helpers.js +36 -36
  53. package/dist/convex-hull/hull-state.svelte.d.ts +1 -1
  54. package/dist/convex-hull/thermodynamics.js +18 -17
  55. package/dist/coordination/CoordinationBarPlot.svelte +38 -33
  56. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +1 -1
  57. package/dist/coordination/calc-coordination.d.ts +1 -1
  58. package/dist/coordination/calc-coordination.js +28 -25
  59. package/dist/element/BohrAtom.svelte +5 -8
  60. package/dist/element/ElementHeading.svelte +4 -1
  61. package/dist/element/ElementPhoto.svelte +11 -9
  62. package/dist/element/ElementStats.svelte +12 -10
  63. package/dist/element/ElementTile.svelte +24 -29
  64. package/dist/element/Nucleus.svelte +4 -2
  65. package/dist/element/data.d.ts +1 -2
  66. package/dist/element/helpers.d.ts +4 -0
  67. package/dist/element/helpers.js +18 -0
  68. package/dist/element/index.d.ts +1 -4
  69. package/dist/element/index.js +3 -18
  70. package/dist/feedback/DragOverlay.svelte +5 -5
  71. package/dist/feedback/DragOverlay.svelte.d.ts +2 -2
  72. package/dist/feedback/StatusMessage.svelte +7 -4
  73. package/dist/fermi-surface/FermiSlice.svelte +21 -18
  74. package/dist/fermi-surface/FermiSurface.svelte +14 -22
  75. package/dist/fermi-surface/FermiSurface.svelte.d.ts +5 -7
  76. package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
  77. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
  78. package/dist/fermi-surface/FermiSurfaceScene.svelte +37 -64
  79. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
  80. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
  81. package/dist/fermi-surface/compute.js +3 -3
  82. package/dist/fermi-surface/parse.js +22 -24
  83. package/dist/heatmap-matrix/HeatmapMatrix.svelte +109 -148
  84. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +2 -2
  85. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +9 -7
  86. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +1 -1
  87. package/dist/heatmap-matrix/index.d.ts +5 -0
  88. package/dist/icons.d.ts +4 -0
  89. package/dist/icons.js +4 -0
  90. package/dist/io/ExportPane.svelte +10 -6
  91. package/dist/io/decompress.d.ts +2 -1
  92. package/dist/io/decompress.js +22 -35
  93. package/dist/io/export.d.ts +4 -0
  94. package/dist/io/export.js +5 -1
  95. package/dist/io/fetch.d.ts +0 -3
  96. package/dist/io/fetch.js +0 -11
  97. package/dist/io/index.d.ts +0 -1
  98. package/dist/io/index.js +2 -9
  99. package/dist/io/is-binary.d.ts +9 -0
  100. package/dist/io/is-binary.js +45 -1
  101. package/dist/io/url-drop.js +13 -25
  102. package/dist/isosurface/Isosurface.svelte +17 -23
  103. package/dist/isosurface/IsosurfaceControls.svelte +37 -42
  104. package/dist/isosurface/parse-vaspwave.d.ts +3 -0
  105. package/dist/isosurface/parse-vaspwave.js +138 -0
  106. package/dist/isosurface/parse.js +6 -6
  107. package/dist/labels.d.ts +6 -2
  108. package/dist/labels.js +43 -13
  109. package/dist/layout/FullscreenButton.svelte +2 -1
  110. package/dist/layout/FullscreenToggle.svelte +10 -4
  111. package/dist/layout/InfoCard.svelte +7 -18
  112. package/dist/layout/InfoTag.svelte +1 -3
  113. package/dist/layout/NumberRangeInput.svelte +46 -0
  114. package/dist/layout/NumberRangeInput.svelte.d.ts +12 -0
  115. package/dist/layout/PropertyFilter.svelte +2 -6
  116. package/dist/layout/SettingsSection.svelte +21 -17
  117. package/dist/layout/SubpageGrid.svelte +3 -1
  118. package/dist/layout/ViewerChrome.svelte +9 -10
  119. package/dist/layout/ViewerChrome.svelte.d.ts +2 -1
  120. package/dist/layout/fullscreen.js +3 -5
  121. package/dist/layout/fullscreen.svelte.js +1 -2
  122. package/dist/layout/index.d.ts +1 -0
  123. package/dist/layout/index.js +1 -0
  124. package/dist/layout/json-tree/JsonNode.svelte +8 -11
  125. package/dist/layout/json-tree/JsonTree.svelte +53 -77
  126. package/dist/layout/json-tree/JsonValue.svelte +7 -15
  127. package/dist/layout/json-tree/utils.js +14 -23
  128. package/dist/math.d.ts +2 -0
  129. package/dist/math.js +19 -0
  130. package/dist/overlays/ContextMenu.svelte +4 -2
  131. package/dist/overlays/CopyButton.svelte +11 -5
  132. package/dist/overlays/DragControlTab.svelte +6 -1
  133. package/dist/overlays/DraggablePane.svelte +81 -26
  134. package/dist/overlays/DraggablePane.svelte.d.ts +1 -0
  135. package/dist/overlays/GlassChip.svelte +30 -0
  136. package/dist/overlays/GlassChip.svelte.d.ts +8 -0
  137. package/dist/overlays/InfoPaneCards.svelte +11 -23
  138. package/dist/overlays/index.d.ts +7 -0
  139. package/dist/overlays/index.js +26 -0
  140. package/dist/overlays/portal.d.ts +2 -0
  141. package/dist/overlays/portal.js +14 -0
  142. package/dist/periodic-table/PeriodicTable.svelte +113 -145
  143. package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
  144. package/dist/periodic-table/PeriodicTableControls.svelte +11 -63
  145. package/dist/periodic-table/TableInset.svelte +9 -4
  146. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +50 -71
  147. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
  148. package/dist/phase-diagram/PhaseDiagramControls.svelte +70 -94
  149. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +1 -1
  150. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +2 -1
  151. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +12 -12
  152. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
  153. package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
  154. package/dist/phase-diagram/build-diagram.js +3 -3
  155. package/dist/phase-diagram/diagram-input.d.ts +1 -2
  156. package/dist/phase-diagram/parse.js +15 -15
  157. package/dist/phase-diagram/svg-to-diagram.js +21 -15
  158. package/dist/phase-diagram/utils.js +2 -3
  159. package/dist/plot/bar/BarPlot.svelte +430 -391
  160. package/dist/plot/bar/BarPlot.svelte.d.ts +2 -0
  161. package/dist/plot/bar/BarPlotControls.svelte +1 -3
  162. package/dist/plot/bar/BarPlotControls.svelte.d.ts +4 -6
  163. package/dist/plot/bar/SpacegroupBarPlot.svelte +29 -36
  164. package/dist/plot/bar/data.d.ts +5 -4
  165. package/dist/plot/bar/data.js +2 -1
  166. package/dist/plot/box/BoxPlot.svelte +301 -209
  167. package/dist/plot/box/BoxPlot.svelte.d.ts +2 -0
  168. package/dist/plot/box/Violin.svelte.d.ts +1 -0
  169. package/dist/plot/box/box-plot.js +1 -1
  170. package/dist/plot/core/auto-place.js +1 -1
  171. package/dist/plot/core/axis-utils.d.ts +12 -7
  172. package/dist/plot/core/axis-utils.js +48 -48
  173. package/dist/plot/core/components/AxisLabel.svelte +82 -20
  174. package/dist/plot/core/components/AxisLabel.svelte.d.ts +1 -0
  175. package/dist/plot/core/components/ColorBar.svelte +101 -106
  176. package/dist/plot/core/components/ColorScaleSelect.svelte +1 -1
  177. package/dist/plot/core/components/FillArea.svelte +10 -17
  178. package/dist/plot/core/components/HierarchyControls.svelte +249 -0
  179. package/dist/plot/{sunburst/SunburstControls.svelte.d.ts → core/components/HierarchyControls.svelte.d.ts} +12 -8
  180. package/dist/plot/core/components/InteractiveAxisLabel.svelte +1 -1
  181. package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +1 -1
  182. package/dist/plot/core/components/Line.svelte +18 -9
  183. package/dist/plot/core/components/Line.svelte.d.ts +2 -0
  184. package/dist/plot/core/components/PlotAxis.svelte +40 -17
  185. package/dist/plot/core/components/PlotControls.svelte +65 -41
  186. package/dist/plot/core/components/PlotLegend.svelte +31 -35
  187. package/dist/plot/core/components/PlotMarginals.svelte +616 -0
  188. package/dist/plot/core/components/PlotMarginals.svelte.d.ts +15 -0
  189. package/dist/plot/core/components/PlotTooltip.svelte +1 -1
  190. package/dist/plot/core/components/PortalSelect.svelte +4 -8
  191. package/dist/plot/core/components/ReferenceLine.svelte +27 -24
  192. package/dist/plot/core/components/ReferenceLine3D.svelte +54 -57
  193. package/dist/plot/core/components/ReferencePlane.svelte +7 -8
  194. package/dist/plot/core/components/ZeroLines.svelte +4 -8
  195. package/dist/plot/core/components/ZoomRect.svelte +1 -2
  196. package/dist/plot/core/components/index.d.ts +1 -0
  197. package/dist/plot/core/components/index.js +1 -0
  198. package/dist/plot/core/data-cleaning-signal.d.ts +46 -0
  199. package/dist/plot/core/data-cleaning-signal.js +467 -0
  200. package/dist/plot/core/data-cleaning.d.ts +2 -42
  201. package/dist/plot/core/data-cleaning.js +27 -474
  202. package/dist/plot/core/data-transform.js +9 -5
  203. package/dist/plot/core/fill-utils.d.ts +3 -1
  204. package/dist/plot/core/fill-utils.js +28 -6
  205. package/dist/plot/core/index.d.ts +1 -0
  206. package/dist/plot/core/index.js +1 -0
  207. package/dist/plot/core/interactions.js +0 -2
  208. package/dist/plot/core/layout.d.ts +3 -1
  209. package/dist/plot/core/layout.js +22 -13
  210. package/dist/plot/core/marginals.d.ts +170 -0
  211. package/dist/plot/core/marginals.js +436 -0
  212. package/dist/plot/core/reference-line.js +1 -1
  213. package/dist/plot/core/scales.d.ts +23 -0
  214. package/dist/plot/core/scales.js +39 -13
  215. package/dist/plot/core/types/fills.d.ts +101 -0
  216. package/dist/plot/core/types/fills.js +15 -0
  217. package/dist/plot/core/types/plot-3d.d.ts +87 -0
  218. package/dist/plot/core/types/plot-3d.js +4 -0
  219. package/dist/plot/core/types/reference-lines.d.ts +140 -0
  220. package/dist/plot/core/types/reference-lines.js +9 -0
  221. package/dist/plot/core/types.d.ts +29 -324
  222. package/dist/plot/core/types.js +23 -20
  223. package/dist/plot/core/utils/hierarchy-chart.d.ts +51 -0
  224. package/dist/plot/core/utils/hierarchy-chart.js +179 -0
  225. package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
  226. package/dist/plot/core/utils/hierarchy-labels.js +99 -0
  227. package/dist/plot/core/utils/label-placement.js +2 -2
  228. package/dist/plot/histogram/Histogram.svelte +304 -325
  229. package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
  230. package/dist/plot/histogram/HistogramControls.svelte +30 -28
  231. package/dist/plot/histogram/histogram.d.ts +31 -0
  232. package/dist/plot/histogram/histogram.js +70 -0
  233. package/dist/plot/histogram/index.d.ts +1 -0
  234. package/dist/plot/histogram/index.js +1 -0
  235. package/dist/plot/index.d.ts +1 -0
  236. package/dist/plot/index.js +1 -0
  237. package/dist/plot/sankey/Sankey.svelte +78 -69
  238. package/dist/plot/sankey/Sankey.svelte.d.ts +2 -2
  239. package/dist/plot/sankey/SankeyControls.svelte +22 -16
  240. package/dist/plot/scatter/BinnedScatterPlot.svelte +263 -109
  241. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +7 -0
  242. package/dist/plot/scatter/ElementScatter.svelte +4 -1
  243. package/dist/plot/scatter/ScatterPlot.svelte +477 -385
  244. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +2 -0
  245. package/dist/plot/scatter/ScatterPlotControls.svelte +18 -19
  246. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
  247. package/dist/plot/scatter/ScatterPoint.svelte +16 -9
  248. package/dist/plot/scatter/binned-scatter-types.d.ts +3 -2
  249. package/dist/plot/scatter/binned-scatter-types.js +6 -1
  250. package/dist/plot/scatter/scatter-data.d.ts +1 -1
  251. package/dist/plot/scatter/scatter-data.js +8 -7
  252. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +25 -34
  253. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +2 -2
  254. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +8 -5
  255. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +113 -116
  256. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +2 -2
  257. package/dist/plot/scatter-3d/Surface3D.svelte +4 -13
  258. package/dist/plot/sunburst/Sunburst.svelte +251 -329
  259. package/dist/plot/sunburst/Sunburst.svelte.d.ts +2 -2
  260. package/dist/plot/sunburst/index.d.ts +1 -1
  261. package/dist/plot/sunburst/index.js +2 -1
  262. package/dist/plot/sunburst/render.d.ts +2 -2
  263. package/dist/plot/sunburst/render.js +47 -22
  264. package/dist/plot/sunburst/sunburst.d.ts +5 -1
  265. package/dist/plot/sunburst/sunburst.js +10 -3
  266. package/dist/plot/treemap/Treemap.svelte +907 -0
  267. package/dist/plot/treemap/Treemap.svelte.d.ts +84 -0
  268. package/dist/plot/treemap/index.d.ts +3 -0
  269. package/dist/plot/treemap/index.js +4 -0
  270. package/dist/plot/treemap/treemap.d.ts +26 -0
  271. package/dist/plot/treemap/treemap.js +99 -0
  272. package/dist/rdf/RdfPlot.svelte +22 -26
  273. package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
  274. package/dist/rdf/calc-rdf.js +4 -8
  275. package/dist/sanitize.js +1 -1
  276. package/dist/scene/bind-renderer.svelte.js +14 -6
  277. package/dist/settings.d.ts +19 -9
  278. package/dist/settings.js +77 -50
  279. package/dist/spectral/Bands.svelte +223 -230
  280. package/dist/spectral/BandsAndDos.svelte +11 -9
  281. package/dist/spectral/BrillouinBandsDos.svelte +19 -27
  282. package/dist/spectral/Dos.svelte +70 -73
  283. package/dist/spectral/helpers.d.ts +3 -3
  284. package/dist/spectral/helpers.js +25 -35
  285. package/dist/state.svelte.js +5 -18
  286. package/dist/structure/Arrow.svelte +5 -18
  287. package/dist/structure/ArrowInstances.svelte +160 -0
  288. package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
  289. package/dist/structure/AtomLegend.svelte +115 -75
  290. package/dist/structure/AtomLegend.svelte.d.ts +1 -1
  291. package/dist/structure/Bond.svelte +31 -23
  292. package/dist/structure/CanvasTooltip.svelte +15 -3
  293. package/dist/structure/CellSelect.svelte +11 -26
  294. package/dist/structure/Cylinder.svelte +24 -40
  295. package/dist/structure/InstancedAtoms.svelte +114 -0
  296. package/dist/structure/InstancedAtoms.svelte.d.ts +15 -0
  297. package/dist/structure/Lattice.svelte +85 -149
  298. package/dist/structure/SiteLabels.svelte +122 -0
  299. package/dist/structure/SiteLabels.svelte.d.ts +18 -0
  300. package/dist/structure/Structure.svelte +473 -419
  301. package/dist/structure/Structure.svelte.d.ts +4 -2
  302. package/dist/structure/StructureCarousel.svelte +630 -0
  303. package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
  304. package/dist/structure/StructureControls.svelte +157 -399
  305. package/dist/structure/StructureControls.svelte.d.ts +1 -1
  306. package/dist/structure/StructureExportPane.svelte +17 -21
  307. package/dist/structure/StructureInfoPane.svelte +72 -66
  308. package/dist/structure/StructureInfoPane.svelte.d.ts +1 -1
  309. package/dist/structure/StructureScene.svelte +467 -476
  310. package/dist/structure/StructureScene.svelte.d.ts +3 -1
  311. package/dist/structure/StructureViewport.svelte +386 -0
  312. package/dist/structure/StructureViewport.svelte.d.ts +63 -0
  313. package/dist/structure/atom-label-placement.d.ts +16 -12
  314. package/dist/structure/atom-label-placement.js +70 -37
  315. package/dist/structure/atom-properties.d.ts +2 -0
  316. package/dist/structure/atom-properties.js +104 -38
  317. package/dist/structure/bonding.d.ts +10 -3
  318. package/dist/structure/bonding.js +84 -28
  319. package/dist/structure/edit-history.d.ts +6 -0
  320. package/dist/structure/edit-history.js +27 -0
  321. package/dist/structure/export.d.ts +1 -0
  322. package/dist/structure/export.js +39 -31
  323. package/dist/structure/format-detect.d.ts +1 -0
  324. package/dist/structure/format-detect.js +22 -0
  325. package/dist/structure/geometry.d.ts +9 -0
  326. package/dist/structure/geometry.js +27 -0
  327. package/dist/structure/index.d.ts +16 -1
  328. package/dist/structure/index.js +13 -2
  329. package/dist/structure/measure.d.ts +1 -1
  330. package/dist/structure/measure.js +6 -12
  331. package/dist/structure/parse.d.ts +2 -1
  332. package/dist/structure/parse.js +243 -222
  333. package/dist/structure/partial-occupancy.js +4 -2
  334. package/dist/structure/pbc.js +78 -98
  335. package/dist/structure/polyhedra.d.ts +0 -1
  336. package/dist/structure/polyhedra.js +3 -18
  337. package/dist/structure/supercell.d.ts +1 -2
  338. package/dist/structure/supercell.js +7 -13
  339. package/dist/symmetry/SymmetryElements.svelte +11 -15
  340. package/dist/symmetry/SymmetryStats.svelte +56 -68
  341. package/dist/symmetry/WyckoffTable.svelte +5 -24
  342. package/dist/symmetry/cell-transform.js +1 -0
  343. package/dist/symmetry/index.d.ts +1 -0
  344. package/dist/symmetry/index.js +8 -2
  345. package/dist/symmetry/spacegroups.js +3 -2
  346. package/dist/table/HeatmapTable.svelte +1102 -365
  347. package/dist/table/HeatmapTable.svelte.d.ts +12 -2
  348. package/dist/table/ToggleMenu.svelte +5 -12
  349. package/dist/table/index.d.ts +21 -6
  350. package/dist/table/index.js +34 -21
  351. package/dist/theme/ThemeControl.svelte +16 -8
  352. package/dist/theme/index.d.ts +1 -5
  353. package/dist/theme/index.js +4 -10
  354. package/dist/theme/themes.mjs +14 -7
  355. package/dist/tooltip/KCoords.svelte +4 -1
  356. package/dist/tooltip/TooltipContent.svelte +2 -5
  357. package/dist/trajectory/Trajectory.svelte +515 -308
  358. package/dist/trajectory/Trajectory.svelte.d.ts +1 -1
  359. package/dist/trajectory/TrajectoryError.svelte +11 -8
  360. package/dist/trajectory/TrajectoryExportPane.svelte +14 -31
  361. package/dist/trajectory/TrajectoryInfoPane.svelte +85 -97
  362. package/dist/trajectory/extract.js +56 -34
  363. package/dist/trajectory/format-detect.js +11 -9
  364. package/dist/trajectory/frame-reader.d.ts +2 -0
  365. package/dist/trajectory/frame-reader.js +33 -29
  366. package/dist/trajectory/helpers.d.ts +2 -0
  367. package/dist/trajectory/helpers.js +18 -7
  368. package/dist/trajectory/index.d.ts +1 -0
  369. package/dist/trajectory/index.js +3 -0
  370. package/dist/trajectory/parse/h5-utils.d.ts +13 -0
  371. package/dist/trajectory/parse/h5-utils.js +109 -0
  372. package/dist/trajectory/parse/hdf5.d.ts +1 -1
  373. package/dist/trajectory/parse/hdf5.js +116 -106
  374. package/dist/trajectory/parse/index.d.ts +2 -3
  375. package/dist/trajectory/parse/index.js +17 -20
  376. package/dist/trajectory/parse/lammps.js +8 -12
  377. package/dist/trajectory/parse/vasp.js +10 -7
  378. package/dist/trajectory/parse/vaspout-electronic.d.ts +13 -0
  379. package/dist/trajectory/parse/vaspout-electronic.js +207 -0
  380. package/dist/trajectory/parse/vaspout-h5.d.ts +5 -0
  381. package/dist/trajectory/parse/vaspout-h5.js +284 -0
  382. package/dist/trajectory/parse/xyz.js +11 -7
  383. package/dist/trajectory/plotting.d.ts +8 -9
  384. package/dist/trajectory/plotting.js +99 -27
  385. package/dist/utils.d.ts +3 -0
  386. package/dist/utils.js +7 -0
  387. package/dist/xrd/XrdPlot.svelte +47 -61
  388. package/dist/xrd/broadening.js +2 -1
  389. package/dist/xrd/calc-xrd.js +2 -4
  390. package/dist/xrd/parse.d.ts +0 -1
  391. package/dist/xrd/parse.js +56 -73
  392. package/package.json +61 -33
  393. package/dist/api/mp.d.ts +0 -6
  394. package/dist/api/mp.js +0 -22
  395. package/dist/plot/sunburst/SunburstControls.svelte +0 -200
@@ -28,6 +28,6 @@ type $$ComponentProps = Omit<ComponentProps<typeof DraggablePane>, `children`> &
28
28
  pane_props?: PaneProps;
29
29
  toggle_props?: PaneToggleProps;
30
30
  };
31
- declare const StructureControls: import("svelte").Component<$$ComponentProps, {}, "color_scheme" | "controls_open" | "background_color" | "background_opacity" | "atom_color_config" | "supercell_scaling" | "cell_type" | "active_volume_idx" | "scene_props" | "lattice_props" | "show_image_atoms" | "supercell_loading" | "volumetric_data" | "isosurface_settings">;
31
+ declare const StructureControls: import("svelte").Component<$$ComponentProps, {}, "color_scheme" | "controls_open" | "background_color" | "background_opacity" | "show_image_atoms" | "lattice_props" | "atom_color_config" | "volumetric_data" | "isosurface_settings" | "scene_props" | "supercell_scaling" | "cell_type" | "active_volume_idx" | "supercell_loading">;
32
32
  type StructureControls = ReturnType<typeof StructureControls>;
33
33
  export default StructureControls;
@@ -34,26 +34,22 @@
34
34
  {
35
35
  label: `JSON`,
36
36
  format: `json`,
37
- hint:
38
- `<a href="https://pymatgen.org" target="_blank">Pymatgen</a> JSON format - Python Materials Genomics structure serialization, widely used in computational materials science`,
37
+ hint: `<a href="https://pymatgen.org" target="_blank">Pymatgen</a> JSON format - Python Materials Genomics structure serialization, widely used in computational materials science`,
39
38
  },
40
39
  {
41
40
  label: `XYZ`,
42
41
  format: `xyz`,
43
- hint:
44
- `<a href="https://wiki.fysik.dtu.dk/ase" target="_blank">ASE</a> extended XYZ format - human-readable atomic coordinates used by the Atomic Simulation Environment`,
42
+ hint: `<a href="https://wiki.fysik.dtu.dk/ase" target="_blank">ASE</a> extended XYZ format - human-readable atomic coordinates used by the Atomic Simulation Environment`,
45
43
  },
46
44
  {
47
45
  label: `CIF`,
48
46
  format: `cif`,
49
- hint:
50
- `Crystallographic Information File - standard format from the <a href="https://iucr.org" target="_blank">IUCr</a> for crystal structure data exchange`,
47
+ hint: `Crystallographic Information File - standard format from the <a href="https://iucr.org" target="_blank">IUCr</a> for crystal structure data exchange`,
51
48
  },
52
49
  {
53
50
  label: `POSCAR`,
54
51
  format: `poscar`,
55
- hint:
56
- `<a href="https://vasp.at" target="_blank">VASP</a> POSCAR format - input geometry file for the Vienna Ab initio Simulation Package`,
52
+ hint: `<a href="https://vasp.at" target="_blank">VASP</a> POSCAR format - input geometry file for the Vienna Ab initio Simulation Package`,
57
53
  },
58
54
  ] as const
59
55
 
@@ -61,14 +57,12 @@
61
57
  {
62
58
  label: `GLB`,
63
59
  format: `glb`,
64
- hint:
65
- `Export as GLB (binary GLTF) - preserves element colors and materials, ideal for visualization in Blender, Unity, web viewers`,
60
+ hint: `Export as GLB (binary GLTF) - preserves element colors and materials, ideal for visualization in Blender, Unity, web viewers`,
66
61
  },
67
62
  {
68
63
  label: `OBJ`,
69
64
  format: `obj`,
70
- hint:
71
- `Export as OBJ (Wavefront Object) - widely supported 3D format with material references, works in most 3D applications`,
65
+ hint: `Export as OBJ (Wavefront Object) - widely supported 3D format with material references, works in most 3D applications`,
72
66
  },
73
67
  ] as const
74
68
 
@@ -113,16 +107,18 @@
113
107
  },
114
108
  {
115
109
  title: `Export as image`,
116
- items: [{
117
- label: `PNG`,
118
- disabled: !has_canvas,
119
- show_dpi: true,
120
- on_download: () => {
121
- const canvas = wrapper?.querySelector(`canvas`)
122
- if (canvas) export_canvas_as_png(canvas, structure, png_dpi, scene, camera)
123
- else console.warn(`Canvas element not found for PNG export`)
110
+ items: [
111
+ {
112
+ label: `PNG`,
113
+ disabled: !has_canvas,
114
+ show_dpi: true,
115
+ on_download: () => {
116
+ const canvas = wrapper?.querySelector(`canvas`)
117
+ if (canvas) export_canvas_as_png(canvas, structure, png_dpi, scene, camera)
118
+ else console.warn(`Canvas element not found for PNG export`)
119
+ },
124
120
  },
125
- }],
121
+ ],
126
122
  },
127
123
  {
128
124
  title: `Export as 3D model`,
@@ -16,7 +16,7 @@
16
16
  import type { MoyoDataset } from '@spglib/moyo-wasm'
17
17
  import type { ComponentProps } from 'svelte'
18
18
  import type { HTMLAttributes } from 'svelte/elements'
19
- import { SvelteSet } from 'svelte/reactivity'
19
+ import { create_clipboard_feedback } from '../overlays'
20
20
 
21
21
  type SiteDetail = {
22
22
  label: string
@@ -41,8 +41,7 @@
41
41
  },
42
42
  {
43
43
  label: `Atom Selection`,
44
- value:
45
- `Click atoms to select them, then pick distance or angle mode to measure all pairwise distances/angles`,
44
+ value: `Click atoms to select them, then pick distance or angle mode to measure all pairwise distances/angles`,
46
45
  },
47
46
  {
48
47
  label: `Navigation`,
@@ -54,8 +53,7 @@
54
53
  },
55
54
  {
56
55
  label: `Colors`,
57
- value:
58
- `Click legend labels to change colors, double-click to reset, right-click to remap elements`,
56
+ value: `Click legend labels to change colors, double-click to reset, right-click to remap elements`,
59
57
  },
60
58
  {
61
59
  label: `Keyboard`,
@@ -86,28 +84,16 @@
86
84
  sym_data?: MoyoDataset | null // Symmetry analysis data (bindable for external access)
87
85
  } = $props()
88
86
 
89
- let copied_items = new SvelteSet<string>()
87
+ const { copied, copy } = create_clipboard_feedback()
90
88
  let sites_expanded = $state(false)
91
89
  let site_filter = $state(``)
92
90
  let site_window_start = $state(0)
93
91
  let site_cards_el = $state<HTMLDivElement>()
94
92
 
95
- async function copy_to_clipboard(label: string, value: string, key: string) {
96
- try {
97
- await navigator.clipboard.writeText(`${label}: ${value}`)
98
- copied_items.add(key)
99
- setTimeout(() => copied_items.delete(key), 1000)
100
- } catch (error) {
101
- console.error(`Failed to copy to clipboard:`, error)
102
- }
103
- }
93
+ const copy_to_clipboard = (label: string, value: string, key: string): Promise<void> =>
94
+ copy(`${label}: ${value}`, key)
104
95
 
105
- function copy_event(
106
- event: MouseEvent,
107
- label: string,
108
- value: string,
109
- key: string,
110
- ) {
96
+ function copy_event(event: MouseEvent, label: string, value: string, key: string) {
111
97
  event.stopPropagation()
112
98
  copy_to_clipboard(label, value, key)
113
99
  }
@@ -128,9 +114,8 @@
128
114
  : [...selected_sites, site_idx]
129
115
  return
130
116
  }
131
- selected_sites = selected_sites.length === 1 && selected_sites[0] === site_idx
132
- ? []
133
- : [site_idx]
117
+ selected_sites =
118
+ selected_sites.length === 1 && selected_sites[0] === site_idx ? [] : [site_idx]
134
119
  }
135
120
 
136
121
  function update_site_filter(event: Event): void {
@@ -161,9 +146,10 @@
161
146
  current_card.parentElement?.querySelectorAll<HTMLDivElement>(`.site-card`) ?? [],
162
147
  )
163
148
  const current_idx = sibling_cards.indexOf(current_card)
164
- const next_idx = event.key === `ArrowDown`
165
- ? Math.min(current_idx + 1, sibling_cards.length - 1)
166
- : Math.max(current_idx - 1, 0)
149
+ const next_idx =
150
+ event.key === `ArrowDown`
151
+ ? Math.min(current_idx + 1, sibling_cards.length - 1)
152
+ : Math.max(current_idx - 1, 0)
167
153
  sibling_cards[next_idx]?.focus()
168
154
  }
169
155
 
@@ -171,10 +157,9 @@
171
157
  element_data?.find((element_record) => element_record.symbol === element)?.name || element
172
158
 
173
159
  const site_summary = (card: SiteCard): string =>
174
- [
175
- card.element_name,
176
- ...card.details.map(({ label, value }) => `${label}: ${value}`),
177
- ].join(`; `)
160
+ [card.element_name, ...card.details.map(({ label, value }) => `${label}: ${value}`)].join(
161
+ `; `,
162
+ )
178
163
 
179
164
  function format_site_property(prop_key: string, prop_value: unknown): SiteDetail | null {
180
165
  if (prop_value == null) return null
@@ -187,14 +172,16 @@
187
172
  let tooltip: string | undefined
188
173
 
189
174
  if (
190
- prop_key === `force` && Array.isArray(prop_value) &&
191
- prop_value.length === 3 && prop_value.every((value) => typeof value === `number`)
175
+ prop_key === `force` &&
176
+ Array.isArray(prop_value) &&
177
+ prop_value.length === 3 &&
178
+ prop_value.every((value) => typeof value === `number`)
192
179
  ) {
193
180
  const force_values = prop_value as [number, number, number]
194
181
  const value = `${format_num(Math.hypot(...force_values), `.3~f`)} eV/Å`
195
- tooltip = `Force vector: ${
196
- force_values.map((force) => format_num(force, `.3~f`)).join(`, `)
197
- } eV/Å`
182
+ tooltip = `Force vector: ${force_values
183
+ .map((force) => format_num(force, `.3~f`))
184
+ .join(`, `)} eV/Å`
198
185
  return { label: prop_key, value, key: prop_key, tooltip }
199
186
  }
200
187
  if (prop_key === `magmom` || prop_key.includes(`magnet`)) {
@@ -206,7 +193,7 @@
206
193
 
207
194
  const value = Array.isArray(prop_value)
208
195
  ? format_value_list(prop_value)
209
- : format_numeric_value(prop_value) ?? String(prop_value)
196
+ : (format_numeric_value(prop_value) ?? String(prop_value))
210
197
  return { label: prop_key, value, key: prop_key }
211
198
  }
212
199
 
@@ -269,7 +256,9 @@
269
256
  // Symmetry Info
270
257
  if (`lattice` in structure && sym_data) {
271
258
  const { operations } = sym_data
272
- let translations = 0, rotations = 0, roto_translations = 0
259
+ let translations = 0,
260
+ rotations = 0,
261
+ roto_translations = 0
273
262
  for (const op of operations) {
274
263
  const has_translation = op.translation.some((offset) => offset !== 0)
275
264
  const is_identity = String(op.rotation) === `1,0,0,0,1,0,0,0,1`
@@ -278,14 +267,15 @@
278
267
  else roto_translations++
279
268
  }
280
269
 
281
- const international_symbol = (sym_data as MoyoDataset & {
282
- international_short?: string
283
- }).international_short
284
- const space_group_symbol = (sym_data.hm_symbol ?? international_symbol)
285
- ?.replaceAll(
286
- /\s+/g,
287
- ``,
288
- )
270
+ const international_symbol = (
271
+ sym_data as MoyoDataset & {
272
+ international_short?: string
273
+ }
274
+ ).international_short
275
+ const space_group_symbol = (sym_data.hm_symbol ?? international_symbol)?.replaceAll(
276
+ /\s+/g,
277
+ ``,
278
+ )
289
279
  const space_group_value = space_group_symbol
290
280
  ? `${sym_data.number} (${space_group_symbol})`
291
281
  : String(sym_data.number)
@@ -294,8 +284,16 @@
294
284
  title: `Symmetry`,
295
285
  items: [
296
286
  { label: `Space Group`, value: space_group_value, key: `symmetry-space-group` },
297
- { label: `Hall Number`, value: String(sym_data.hall_number), key: `symmetry-hall-number` },
298
- { label: `Pearson Symbol`, value: sym_data.pearson_symbol, key: `symmetry-pearson-symbol` },
287
+ {
288
+ label: `Hall Number`,
289
+ value: String(sym_data.hall_number),
290
+ key: `symmetry-hall-number`,
291
+ },
292
+ {
293
+ label: `Pearson Symbol`,
294
+ value: sym_data.pearson_symbol,
295
+ key: `symmetry-pearson-symbol`,
296
+ },
299
297
  {
300
298
  label: `Symmetry Ops`,
301
299
  value: `${operations.length} (${translations} trans, ${rotations} rot, ${roto_translations} roto-trans)`,
@@ -347,9 +345,9 @@
347
345
  element_name,
348
346
  title,
349
347
  details,
350
- search_text: `${title} ${element} ${element_name} ${
351
- details.map(({ label, value }) => `${label} ${value}`).join(` `)
352
- }`.toLowerCase(),
348
+ search_text: `${title} ${element} ${element_name} ${details
349
+ .map(({ label, value }) => `${label} ${value}`)
350
+ .join(` `)}`.toLowerCase(),
353
351
  }
354
352
  })
355
353
  })
@@ -382,8 +380,7 @@
382
380
  if (!pane_open || selected_site_idx === undefined) return
383
381
  const visible_idx = visible_site_cards.findIndex(({ idx }) => idx === selected_site_idx)
384
382
  if (visible_idx === -1) return
385
- const selected_window_start = Math.floor(visible_idx / SITE_WINDOW_SIZE) *
386
- SITE_WINDOW_SIZE
383
+ const selected_window_start = Math.floor(visible_idx / SITE_WINDOW_SIZE) * SITE_WINDOW_SIZE
387
384
  if (selected_window_start !== site_window_start) {
388
385
  site_window_start = selected_window_start
389
386
  return
@@ -434,7 +431,7 @@
434
431
  >
435
432
  <span>{@html sanitize_html(label)}</span>
436
433
  <span title={tooltip}>{@html sanitize_html(value)}</span>
437
- {#if key && copied_items.has(key)}
434
+ {#if key && copied.has(key)}
438
435
  <Icon
439
436
  icon="Check"
440
437
  style="color: var(--success-color, #10b981); width: 12px; height: 12px"
@@ -447,8 +444,8 @@
447
444
  {#if section.title === `Symmetry` && wyckoff_positions.length > 0}
448
445
  <WyckoffTable
449
446
  {wyckoff_positions}
450
- on_hover={(site_indices) => highlighted_sites = site_indices ?? []}
451
- on_click={(site_indices) => selected_sites = site_indices ?? []}
447
+ on_hover={(site_indices) => (highlighted_sites = site_indices ?? [])}
448
+ on_click={(site_indices) => (selected_sites = site_indices ?? [])}
452
449
  style="width: 100%; margin-top: 0.5em; font-size: 0.8em"
453
450
  />
454
451
  {/if}
@@ -472,7 +469,9 @@
472
469
  {/if}
473
470
  </div>
474
471
  {#if sites_hidden_by_threshold}
475
- <p class="sites-note">Site list hidden for this {structure.sites.length}-site structure.</p>
472
+ <p class="sites-note">
473
+ Site list hidden for this {structure.sites.length}-site structure.
474
+ </p>
476
475
  {:else if site_cards.length > 0}
477
476
  <input
478
477
  class="site-filter"
@@ -491,19 +490,21 @@
491
490
  type="button"
492
491
  disabled={site_window_start === 0}
493
492
  onclick={() =>
494
- site_window_start = Math.max(0, site_window_start - SITE_WINDOW_SIZE)}
493
+ (site_window_start = Math.max(0, site_window_start - SITE_WINDOW_SIZE))}
495
494
  >
496
495
  Previous
497
496
  </button>
498
- <span>{site_window_start + 1}-{site_window_end} of {visible_site_cards.length}</span>
497
+ <span
498
+ >{site_window_start + 1}-{site_window_end} of {visible_site_cards.length}</span
499
+ >
499
500
  <button
500
501
  type="button"
501
502
  disabled={site_window_end >= visible_site_cards.length}
502
503
  onclick={() =>
503
- site_window_start = Math.min(
504
+ (site_window_start = Math.min(
504
505
  Math.max(0, visible_site_cards.length - SITE_WINDOW_SIZE),
505
506
  site_window_start + SITE_WINDOW_SIZE,
506
- )}
507
+ ))}
507
508
  >
508
509
  Next
509
510
  </button>
@@ -511,8 +512,8 @@
511
512
  {/if}
512
513
  <div class="site-cards" bind:this={site_cards_el}>
513
514
  {#each rendered_site_cards as card (card.idx)}
514
- {@const is_highlighted = highlighted_sites.includes(card.idx) ||
515
- hovered_site_idx === card.idx}
515
+ {@const is_highlighted =
516
+ highlighted_sites.includes(card.idx) || hovered_site_idx === card.idx}
516
517
  {@const is_selected = selected_sites.includes(card.idx)}
517
518
  <div
518
519
  class="site-card"
@@ -539,9 +540,14 @@
539
540
  <CopyButton
540
541
  label="Copy {card.title}"
541
542
  title="Copy {card.title}"
542
- copied={copied_items.has(`site-${card.idx}-summary`)}
543
+ copied={copied.has(`site-${card.idx}-summary`)}
543
544
  onclick={(event) =>
544
- copy_event(event, card.title, site_summary(card), `site-${card.idx}-summary`)}
545
+ copy_event(
546
+ event,
547
+ card.title,
548
+ site_summary(card),
549
+ `site-${card.idx}-summary`,
550
+ )}
545
551
  />
546
552
  </div>
547
553
  <div class="site-card-details">
@@ -552,7 +558,7 @@
552
558
  <CopyButton
553
559
  label="Copy {card.title} {detail.label}"
554
560
  title="Copy {detail.label}"
555
- copied={copied_items.has(`site-${card.idx}-${detail.key}`)}
561
+ copied={copied.has(`site-${card.idx}-${detail.key}`)}
556
562
  onclick={(event) =>
557
563
  copy_event(
558
564
  event,
@@ -14,6 +14,6 @@ type $$ComponentProps = Omit<HTMLAttributes<HTMLDivElement>, `onclose`> & {
14
14
  selected_sites?: number[];
15
15
  sym_data?: MoyoDataset | null;
16
16
  };
17
- declare const StructureInfoPane: import("svelte").Component<$$ComponentProps, {}, "selected_sites" | "pane_open" | "highlighted_sites" | "hovered_site_idx">;
17
+ declare const StructureInfoPane: import("svelte").Component<$$ComponentProps, {}, "selected_sites" | "hovered_site_idx" | "pane_open" | "highlighted_sites">;
18
18
  type StructureInfoPane = ReturnType<typeof StructureInfoPane>;
19
19
  export default StructureInfoPane;