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
@@ -2,7 +2,11 @@
2
2
  import type { Snippet } from 'svelte'
3
3
  import type { HTMLAttributes } from 'svelte/elements'
4
4
 
5
- let { message, children, ...rest }: {
5
+ let {
6
+ message,
7
+ children,
8
+ ...rest
9
+ }: {
6
10
  // Simple text message to display. Ignored if children snippet is provided.
7
11
  message?: string
8
12
  // Custom content to render. Takes precedence over message prop.
@@ -10,7 +14,7 @@
10
14
  } & HTMLAttributes<HTMLDivElement> = $props()
11
15
  </script>
12
16
 
13
- <div {...rest} class="empty-state {rest.class ?? ``}">
17
+ <div {...rest} class={[`empty-state`, rest.class]}>
14
18
  {#if children}
15
19
  {@render children()}
16
20
  {:else if message}
@@ -34,10 +38,12 @@
34
38
  .empty-state :global(.status-message) {
35
39
  --status-message-border: none; /* Remove inner border from StatusMessage */
36
40
  }
37
- .empty-state > :global(:is(p, h3, ul, strong)), .empty-state > .message {
41
+ .empty-state > :global(:is(p, h3, ul, strong)),
42
+ .empty-state > .message {
38
43
  max-width: var(--empty-state-max-width, 500px);
39
44
  }
40
- .empty-state :global(p), .empty-state > .message {
45
+ .empty-state :global(p),
46
+ .empty-state > .message {
41
47
  color: var(--text-color-muted);
42
48
  margin: 0;
43
49
  }
@@ -137,9 +137,9 @@
137
137
  class:active={is_active}
138
138
  onclick={() => category && toggle_filter(`category`, category)}
139
139
  onkeydown={(evt) =>
140
- (evt.key === `Enter` || evt.key === ` `) &&
141
- category &&
142
- toggle_filter(`category`, category)}
140
+ (evt.key === `Enter` || evt.key === ` `) &&
141
+ category &&
142
+ toggle_filter(`category`, category)}
143
143
  role="button"
144
144
  tabindex="0"
145
145
  aria-pressed={is_active}
@@ -148,8 +148,7 @@
148
148
  {category}
149
149
  </span>
150
150
  {/each}
151
- {#if show_category_filters && uniq_categories.length > 0 &&
152
- uniq_formats.length > 0}
151
+ {#if show_category_filters && uniq_categories.length > 0 && uniq_formats.length > 0}
153
152
  <span class="divider"></span>
154
153
  {/if}
155
154
 
@@ -160,15 +159,13 @@
160
159
  class:active={is_active}
161
160
  onclick={() => toggle_filter(`type`, format)}
162
161
  onkeydown={(evt) =>
163
- (evt.key === `Enter` || evt.key === ` `) && toggle_filter(`type`, format)}
162
+ (evt.key === `Enter` || evt.key === ` `) && toggle_filter(`type`, format)}
164
163
  role="button"
165
164
  tabindex="0"
166
165
  {@attach tooltip({ content: `Filter to show only ${format.toUpperCase()} files` })}
167
166
  >
168
- <span
169
- class="format-circle"
170
- style:background-color={file_type_colors[format]}
171
- ></span> {format.toUpperCase()}
167
+ <span class="format-circle" style:background-color={file_type_colors[format]}></span>
168
+ {format.toUpperCase()}
172
169
  </span>
173
170
  {/each}
174
171
 
@@ -176,7 +173,7 @@
176
173
  <button
177
174
  {@attach tooltip({ content: `Clear all filters` })}
178
175
  class="clear-filter"
179
- onclick={() => [active_category_filter, active_type_filter] = [null, null]}
176
+ onclick={() => ([active_category_filter, active_type_filter] = [null, null])}
180
177
  >
181
178
 
182
179
  </button>
@@ -222,14 +219,15 @@
222
219
  role="button"
223
220
  tabindex="0"
224
221
  title={on_click
225
- ? `Click to load or drag this ${base_type.toUpperCase()} file`
226
- : `Drag this ${base_type.toUpperCase()} file`}
222
+ ? `Click to load or drag this ${base_type.toUpperCase()} file`
223
+ : `Drag this ${base_type.toUpperCase()} file`}
227
224
  >
228
225
  {#if file.label}
229
226
  <span
230
227
  class="file-type-badge"
231
228
  style:background-color={file_type_colors[base_type] ?? `rgba(128,128,128,0.8)`}
232
- >{base_type.toUpperCase()}</span>
229
+ >{base_type.toUpperCase()}</span
230
+ >
233
231
  {/if}
234
232
  <div class="file-name">
235
233
  {file.category ? `${file.category_icon} ` : ``}{file.label ?? file.name}
package/dist/Icon.svelte CHANGED
@@ -3,10 +3,13 @@
3
3
  import { ICON_DATA, type IconName } from './icons'
4
4
 
5
5
  type IconData = { path: string; viewBox: string; stroke?: string }
6
- let { icon, path, viewBox = `0 0 24 24`, stroke, ...rest }:
7
- & { icon?: IconName }
8
- & Partial<IconData>
9
- & SVGAttributes<SVGSVGElement> = $props()
6
+ let {
7
+ icon,
8
+ path,
9
+ viewBox = `0 0 24 24`,
10
+ stroke,
11
+ ...rest
12
+ }: { icon?: IconName } & Partial<IconData> & SVGAttributes<SVGSVGElement> = $props()
10
13
 
11
14
  const data: IconData = $derived.by(() => {
12
15
  if (path) return { path, viewBox, stroke }
@@ -20,7 +20,7 @@
20
20
  }
21
21
  // Fall back to compact single-digit format: "001", "-101"
22
22
  const compact = input.replaceAll(/\s+/g, ``)
23
- const match = compact.match(/^(-?\d)(-?\d)(-?\d)$/)
23
+ const match = compact.match(/^(?<h>-?\d)(?<k>-?\d)(?<l>-?\d)$/)
24
24
  if (match) return [Number(match[1]), Number(match[2]), Number(match[3])] as Vec3
25
25
  return null
26
26
  }
@@ -53,7 +53,7 @@
53
53
  font-size: 0.85em;
54
54
  }
55
55
  input {
56
- width: 4em;
56
+ width: 5.5em;
57
57
  padding: 0.15em 0.3em;
58
58
  border: 1px solid var(--border-color, #ccc);
59
59
  border-radius: 4px;
package/dist/app.css CHANGED
@@ -18,6 +18,13 @@
18
18
  --sms-selected-bg: light-dark(rgba(0, 0, 0, 0.08), rgba(255, 255, 255, 0.15));
19
19
  --border-radius: 3pt;
20
20
 
21
+ /* Single source of truth for viewer control-button icon size, shared by all viewer chromes
22
+ (Structure/Brillouin/Fermi/ConvexHull/Trajectory). Scales with the container but is capped so
23
+ toolbar icons don't grow oversized in fullscreen. Uses rem (not em) so the size is consistent
24
+ across viewers regardless of their local font-size (e.g. Trajectory's controls run at 0.85em).
25
+ Override per viewer by setting this on its wrapper. */
26
+ --ctrl-btn-icon-size: clamp(0.7rem, 2cqmin, 0.85rem);
27
+
21
28
  /* App-wide overlay stack: controls < fullscreen/nav < dialogs < floating options.
22
29
  These must exceed Threlte HTML overlays, which use very high z-index values. */
23
30
  --z-index-overlay-controls: 100000000;
@@ -204,6 +211,52 @@
204
211
  input:is([type='checkbox'], [type='radio'], [type='range'], [type='color']) {
205
212
  border: none;
206
213
  }
214
+ input[type='range'] {
215
+ --range-track-bg: var(--range-track-bg-override, var(--surface-bg, #2a2f3a));
216
+ --range-track-border: var(--range-track-border-override, var(--border-color, #404040));
217
+ --range-thumb-bg: var(--range-thumb-bg-override, var(--accent-color, #4a9eff));
218
+ -webkit-appearance: none;
219
+ appearance: none;
220
+ background: transparent;
221
+ accent-color: var(--range-thumb-bg);
222
+ cursor: pointer;
223
+ }
224
+ input[type='range']::-webkit-slider-runnable-track {
225
+ height: var(--range-track-height, 0.45rem);
226
+ border-radius: 999px;
227
+ background: var(--range-track-bg);
228
+ box-shadow: inset 0 0 0 1px var(--range-track-border);
229
+ }
230
+ input[type='range']::-webkit-slider-thumb {
231
+ -webkit-appearance: none;
232
+ inline-size: var(--range-thumb-size, 0.9rem);
233
+ block-size: var(--range-thumb-size, 0.9rem);
234
+ margin-top: calc(
235
+ (var(--range-track-height, 0.45rem) - var(--range-thumb-size, 0.9rem)) / 2
236
+ );
237
+ border-radius: 50%;
238
+ background: var(--range-thumb-bg);
239
+ box-shadow: 0 0 0 2px var(--surface-bg, #1f242d);
240
+ }
241
+ input[type='range']::-moz-range-track {
242
+ height: var(--range-track-height, 0.45rem);
243
+ border-radius: 999px;
244
+ background: var(--range-track-bg);
245
+ box-shadow: inset 0 0 0 1px var(--range-track-border);
246
+ }
247
+ input[type='range']::-moz-range-progress {
248
+ height: var(--range-track-height, 0.45rem);
249
+ border-radius: 999px;
250
+ background: var(--range-thumb-bg);
251
+ }
252
+ input[type='range']::-moz-range-thumb {
253
+ inline-size: var(--range-thumb-size, 0.9rem);
254
+ block-size: var(--range-thumb-size, 0.9rem);
255
+ border: 0;
256
+ border-radius: 50%;
257
+ background: var(--range-thumb-bg);
258
+ box-shadow: 0 0 0 2px var(--surface-bg, #1f242d);
259
+ }
207
260
  input[type='number'] {
208
261
  min-width: 40px;
209
262
  width: auto;
@@ -53,7 +53,7 @@
53
53
  surface_color = $bindable(`#4488ff`),
54
54
  surface_opacity = $bindable(0.3),
55
55
  edge_color = $bindable(`#000000`),
56
- edge_width = $bindable(0.05),
56
+ edge_width = $bindable(0.002),
57
57
  show_vectors = $bindable(true),
58
58
  vector_scale = $bindable(1.0),
59
59
  camera_projection = $bindable(`perspective`),
@@ -91,72 +91,68 @@
91
91
  on_point_hover,
92
92
  on_hover,
93
93
  ...rest
94
- }:
95
- & {
96
- structure?: Crystal
97
- bz_order?: number
98
- bz_data?: BrillouinZoneData
99
- controls_open?: boolean
100
- info_pane_open?: boolean
101
- surface_color?: string
102
- surface_opacity?: number
103
- edge_color?: string
104
- edge_width?: number
105
- show_vectors?: boolean
106
- vector_scale?: number
107
- camera_projection?: CameraProjection
108
- // Irreducible BZ options
109
- show_ibz?: boolean
110
- ibz_color?: string
111
- ibz_opacity?: number
112
- ibz_data?: IrreducibleBZData | null
113
- // Controls visibility configuration.
114
- // - 'always': controls always visible
115
- // - 'hover': controls visible on component hover (default)
116
- // - 'never': controls never visible
117
- // - object: { mode, hidden, style } for fine-grained control
118
- //
119
- // Control names: 'filename', 'fullscreen', 'info-pane', 'export-pane', 'controls'
120
- show_controls?: ShowControlsProp
121
- fullscreen?: boolean
122
- width?: number
123
- height?: number
124
- wrapper?: HTMLDivElement
125
- png_dpi?: number
126
- hovered?: boolean
127
- dragover?: boolean
128
- allow_file_drop?: boolean
129
- fullscreen_toggle?: FullscreenToggleProp
130
- data_url?: string
131
- on_file_drop?: (content: string | ArrayBuffer, filename: string) => void
132
- spinner_props?: ComponentProps<typeof Spinner>
133
- loading?: boolean
134
- error_msg?: string
135
- structure_string?: string
136
- // K-path points in Cartesian reciprocal space coordinates (not fractional coords)
137
- // Should be computed using the reciprocal lattice matrix (includes 2π factor)
138
- k_path_points?: Vec3[]
139
- // K-path labels with positions in Cartesian reciprocal space coordinates
140
- // Each position should match a corresponding point in k_path_points
141
- k_path_labels?: { position: Vec3; label: string | null }[]
142
- // Currently hovered k-point in Cartesian reciprocal space coordinates
143
- hovered_k_point?: Vec3 | null
144
- // Index of the currently hovered q-point in the band structure
145
- hovered_qpoint_index?: number | null
146
- // Called with the q-point index when the user hovers the k-path in the BZ (null on leave)
147
- on_kpath_hover?: (qpoint_index: number | null) => void
148
- children?: Snippet<
149
- [{ structure?: Crystal; bz_data?: BrillouinZoneData }]
150
- >
151
- tooltip_config?: BZTooltipProp
152
- on_file_load?: (data: BZHandlerData) => void
153
- on_error?: (data: BZHandlerData) => void
154
- on_fullscreen_change?: (data: BZHandlerData) => void
155
- on_point_hover?: (data: BZHoverData | null) => void
156
- // Deprecated alias for on_point_hover (honored when on_point_hover is unset)
157
- on_hover?: (data: BZHoverData | null) => void
158
- }
159
- & HTMLAttributes<HTMLDivElement> = $props()
94
+ }: {
95
+ structure?: Crystal
96
+ bz_order?: number
97
+ bz_data?: BrillouinZoneData
98
+ controls_open?: boolean
99
+ info_pane_open?: boolean
100
+ surface_color?: string
101
+ surface_opacity?: number
102
+ edge_color?: string
103
+ edge_width?: number
104
+ show_vectors?: boolean
105
+ vector_scale?: number
106
+ camera_projection?: CameraProjection
107
+ // Irreducible BZ options
108
+ show_ibz?: boolean
109
+ ibz_color?: string
110
+ ibz_opacity?: number
111
+ ibz_data?: IrreducibleBZData | null
112
+ // Controls visibility configuration.
113
+ // - 'always': controls always visible
114
+ // - 'hover': controls visible on component hover (default)
115
+ // - 'never': controls never visible
116
+ // - object: { mode, hidden, style } for fine-grained control
117
+ //
118
+ // Control names: 'filename', 'fullscreen', 'info-pane', 'export-pane', 'controls'
119
+ show_controls?: ShowControlsProp
120
+ fullscreen?: boolean
121
+ width?: number
122
+ height?: number
123
+ wrapper?: HTMLDivElement
124
+ png_dpi?: number
125
+ hovered?: boolean
126
+ dragover?: boolean
127
+ allow_file_drop?: boolean
128
+ fullscreen_toggle?: FullscreenToggleProp
129
+ data_url?: string
130
+ on_file_drop?: (content: string | ArrayBuffer, filename: string) => void
131
+ spinner_props?: ComponentProps<typeof Spinner>
132
+ loading?: boolean
133
+ error_msg?: string
134
+ structure_string?: string
135
+ // K-path points in Cartesian reciprocal space coordinates (not fractional coords)
136
+ // Should be computed using the reciprocal lattice matrix (includes factor)
137
+ k_path_points?: Vec3[]
138
+ // K-path labels with positions in Cartesian reciprocal space coordinates
139
+ // Each position should match a corresponding point in k_path_points
140
+ k_path_labels?: { position: Vec3; label: string | null }[]
141
+ // Currently hovered k-point in Cartesian reciprocal space coordinates
142
+ hovered_k_point?: Vec3 | null
143
+ // Index of the currently hovered q-point in the band structure
144
+ hovered_qpoint_index?: number | null
145
+ // Called with the q-point index when the user hovers the k-path in the BZ (null on leave)
146
+ on_kpath_hover?: (qpoint_index: number | null) => void
147
+ children?: Snippet<[{ structure?: Crystal; bz_data?: BrillouinZoneData }]>
148
+ tooltip_config?: BZTooltipProp
149
+ on_file_load?: (data: BZHandlerData) => void
150
+ on_error?: (data: BZHandlerData) => void
151
+ on_fullscreen_change?: (data: BZHandlerData) => void
152
+ on_point_hover?: (data: BZHoverData | null) => void
153
+ // Deprecated alias for on_point_hover (honored when on_point_hover is unset)
154
+ on_hover?: (data: BZHoverData | null) => void
155
+ } & HTMLAttributes<HTMLDivElement> = $props()
160
156
 
161
157
  let scene = $state(undefined)
162
158
  let camera = $state(undefined)
@@ -181,9 +177,7 @@
181
177
 
182
178
  // Parse and load structure from content
183
179
  function parse_structure(content: string | ArrayBuffer, filename: string) {
184
- const text = content instanceof ArrayBuffer
185
- ? new TextDecoder().decode(content)
186
- : content
180
+ const text = content instanceof ArrayBuffer ? new TextDecoder().decode(content) : content
187
181
  const parsed = parse_any_structure(text, filename)
188
182
  if (!parsed) throw new Error(`Failed to parse structure from ${filename}`)
189
183
 
@@ -198,9 +192,7 @@
198
192
  try {
199
193
  parse_structure(content, filename)
200
194
  } catch (err) {
201
- error_msg = `Failed to parse ${filename}: ${
202
- to_error(err).message
203
- }`
195
+ error_msg = `Failed to parse ${filename}: ${to_error(err).message}`
204
196
  on_error?.({ error_msg, filename })
205
197
  }
206
198
  }
@@ -241,9 +233,7 @@
241
233
  analyze_structure_symmetry(structure, {})
242
234
  .then((sym_data) => {
243
235
  if (stale) return
244
- const point_group_ops = extract_point_group_from_operations(
245
- sym_data.operations,
246
- )
236
+ const point_group_ops = extract_point_group_from_operations(sym_data.operations)
247
237
  ibz_data = compute_irreducible_bz(captured_bz, point_group_ops)
248
238
  })
249
239
  .catch((err) => {
@@ -267,12 +257,8 @@
267
257
  if (data_url && !structure) {
268
258
  loading = true
269
259
  error_msg = undefined
270
- load_from_url(
271
- data_url,
272
- (content, filename) =>
273
- on_file_drop
274
- ? on_file_drop(content, filename)
275
- : safe_parse(content, filename),
260
+ load_from_url(data_url, (content, filename) =>
261
+ on_file_drop ? on_file_drop(content, filename) : safe_parse(content, filename),
276
262
  )
277
263
  .catch((err) => handle_error(err, data_url))
278
264
  .finally(() => (loading = false))
@@ -307,7 +293,8 @@
307
293
  if (
308
294
  target instanceof HTMLElement &&
309
295
  (target.tagName === `INPUT` || target.tagName === `TEXTAREA`)
310
- ) return
296
+ )
297
+ return
311
298
 
312
299
  if (event.key === `f` && fullscreen_toggle) toggle_fullscreen(wrapper)
313
300
  else if (event.key === `i`) info_pane_open = !info_pane_open
@@ -338,10 +325,13 @@
338
325
  onmouseenter={() => (hovered = true)}
339
326
  onmouseleave={() => (hovered = false)}
340
327
  ondrop={handle_file_drop}
341
- {...drag_over_handlers({ allow: () => allow_file_drop, set_dragover: (over) => dragover = over })}
328
+ {...drag_over_handlers({
329
+ allow: () => allow_file_drop,
330
+ set_dragover: (over) => (dragover = over),
331
+ })}
342
332
  {onkeydown}
343
333
  {...rest}
344
- class="brillouin-zone {rest.class ?? ``}"
334
+ class={[`brillouin-zone`, rest.class]}
345
335
  >
346
336
  {@render children?.({ structure, bz_data })}
347
337
  {#if loading}
@@ -57,12 +57,10 @@ type $$ComponentProps = {
57
57
  hovered_k_point?: Vec3 | null;
58
58
  hovered_qpoint_index?: number | null;
59
59
  on_kpath_hover?: (qpoint_index: number | null) => void;
60
- children?: Snippet<[
61
- {
62
- structure?: Crystal;
63
- bz_data?: BrillouinZoneData;
64
- }
65
- ]>;
60
+ children?: Snippet<[{
61
+ structure?: Crystal;
62
+ bz_data?: BrillouinZoneData;
63
+ }]>;
66
64
  tooltip_config?: BZTooltipProp;
67
65
  on_file_load?: (data: BZHandlerData) => void;
68
66
  on_error?: (data: BZHandlerData) => void;
@@ -70,6 +68,6 @@ type $$ComponentProps = {
70
68
  on_point_hover?: (data: BZHoverData | null) => void;
71
69
  on_hover?: (data: BZHoverData | null) => void;
72
70
  } & HTMLAttributes<HTMLDivElement>;
73
- declare const BrillouinZone: import("svelte").Component<$$ComponentProps, {}, "structure" | "height" | "width" | "dragover" | "fullscreen" | "wrapper" | "hovered" | "controls_open" | "loading" | "camera_projection" | "vector_scale" | "png_dpi" | "info_pane_open" | "error_msg" | "bz_order" | "surface_color" | "surface_opacity" | "edge_color" | "edge_width" | "show_vectors" | "show_ibz" | "ibz_color" | "ibz_opacity" | "bz_data" | "ibz_data">;
71
+ declare const BrillouinZone: import("svelte").Component<$$ComponentProps, {}, "height" | "width" | "dragover" | "fullscreen" | "wrapper" | "hovered" | "controls_open" | "structure" | "camera_projection" | "vector_scale" | "loading" | "png_dpi" | "info_pane_open" | "error_msg" | "bz_order" | "surface_color" | "surface_opacity" | "edge_color" | "edge_width" | "show_vectors" | "show_ibz" | "ibz_color" | "ibz_opacity" | "bz_data" | "ibz_data">;
74
72
  type BrillouinZone = ReturnType<typeof BrillouinZone>;
75
73
  export default BrillouinZone;
@@ -9,7 +9,7 @@
9
9
  surface_color = $bindable(`#4488ff`),
10
10
  surface_opacity = $bindable(0.3),
11
11
  edge_color = $bindable(`#000000`),
12
- edge_width = $bindable(0.05),
12
+ edge_width = $bindable(0.002),
13
13
  show_vectors = $bindable(true),
14
14
  camera_projection = $bindable(`perspective`),
15
15
  // Irreducible BZ options
@@ -84,10 +84,7 @@
84
84
  <SettingsSection
85
85
  title="Edges"
86
86
  current_values={{ edge_color, edge_width }}
87
- on_reset={() => {
88
- edge_color = `#000000`
89
- edge_width = 0.05
90
- }}
87
+ on_reset={() => ([edge_color, edge_width] = [`#000000`, 0.002])}
91
88
  >
92
89
  <label>
93
90
  <span>Color:</span>
@@ -95,7 +92,7 @@
95
92
  </label>
96
93
  <label>
97
94
  <span>Width:</span>
98
- <input type="range" min="0.01" max="0.2" step="0.01" bind:value={edge_width} />
95
+ <input type="range" min="0.002" max="0.02" step="0.001" bind:value={edge_width} />
99
96
  <span class="value">{edge_width.toFixed(2)}</span>
100
97
  </label>
101
98
  </SettingsSection>
@@ -58,25 +58,29 @@
58
58
  const sections = $derived<ExportSection[]>([
59
59
  {
60
60
  title: `Export as image`,
61
- items: [{
62
- label: `PNG`,
63
- disabled: !scene || !camera,
64
- show_dpi: true,
65
- on_download: export_as_png,
66
- }],
61
+ items: [
62
+ {
63
+ label: `PNG`,
64
+ disabled: !scene || !camera,
65
+ show_dpi: true,
66
+ on_download: export_as_png,
67
+ },
68
+ ],
67
69
  },
68
70
  {
69
71
  title: `Export as data`,
70
72
  tooltip: `Includes vertices, faces, edges, and reciprocal lattice vectors`,
71
- items: [{
72
- label: `JSON`,
73
- disabled: !bz_data,
74
- on_download: export_as_json,
75
- copy_text: () => {
76
- const json_data = get_json_data()
77
- return json_data ? JSON.stringify(json_data, null, 2) : null
73
+ items: [
74
+ {
75
+ label: `JSON`,
76
+ disabled: !bz_data,
77
+ on_download: export_as_json,
78
+ copy_text: () => {
79
+ const json_data = get_json_data()
80
+ return json_data ? JSON.stringify(json_data, null, 2) : null
81
+ },
78
82
  },
79
- }],
83
+ ],
80
84
  },
81
85
  ])
82
86
  </script>
@@ -73,20 +73,16 @@
73
73
  items: [
74
74
  {
75
75
  label: `a, b, c`,
76
- value: `${
77
- [structure.lattice.a, structure.lattice.b, structure.lattice.c]
78
- .map((val) => format_num(val, `.3~f`))
79
- .join(`, `)
80
- } Å`,
76
+ value: `${[structure.lattice.a, structure.lattice.b, structure.lattice.c]
77
+ .map((val) => format_num(val, `.3~f`))
78
+ .join(`, `)} Å`,
81
79
  key: `real-lattice-abc`,
82
80
  },
83
81
  {
84
82
  label: `α, β, γ`,
85
- value: `${
86
- [structure.lattice.alpha, structure.lattice.beta, structure.lattice.gamma]
87
- .map((val) => format_num(val, `.2~f`))
88
- .join(`, `)
89
- }°`,
83
+ value: `${[structure.lattice.alpha, structure.lattice.beta, structure.lattice.gamma]
84
+ .map((val) => format_num(val, `.2~f`))
85
+ .join(`, `)}°`,
90
86
  key: `real-lattice-angles`,
91
87
  },
92
88
  ],