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
@@ -1,10 +1,6 @@
1
1
  <script lang="ts">
2
2
  import { format_num } from '../labels'
3
- import {
4
- FullscreenToggle,
5
- set_fullscreen_bg,
6
- setup_fullscreen_effect,
7
- } from '../layout'
3
+ import { FullscreenToggle, set_fullscreen_bg, setup_fullscreen_effect } from '../layout'
8
4
  import { sanitize_svg } from '../sanitize'
9
5
  import { compute_bounding_box_2d, polygon_centroid, type Vec2 } from '../math'
10
6
  import type { AxisConfig } from '../plot'
@@ -116,9 +112,7 @@
116
112
  // Custom tooltip - can be a snippet (replaces default), config object (adds prefix/suffix),
117
113
  // or false to disable tooltip entirely
118
114
  tooltip?: Snippet<[PhaseHoverInfo]> | PhaseDiagramTooltipConfig | false
119
- children?: Snippet<
120
- [{ width: number; height: number; fullscreen: boolean }]
121
- >
115
+ children?: Snippet<[{ width: number; height: number; fullscreen: boolean }]>
122
116
  } = $props()
123
117
 
124
118
  // Shared icon/toggle styling for controls and export panes
@@ -210,9 +204,7 @@
210
204
 
211
205
  // y_scale maps data temperatures to SVG coordinates
212
206
  // We keep this in data units so region vertices render correctly
213
- const y_scale = $derived(
214
- scaleLinear().domain(temp_range).range([bottom, top]),
215
- )
207
+ const y_scale = $derived(scaleLinear().domain(temp_range).range([bottom, top]))
216
208
 
217
209
  // y_scale_display maps display temperatures (after unit conversion) to SVG
218
210
  // Used for axis labels and ticks
@@ -221,9 +213,7 @@
221
213
  )
222
214
 
223
215
  // Generate tick values using d3 scale's built-in ticks method
224
- const x_ticks = $derived(
225
- x_scale.ticks(typeof x_axis.ticks === `number` ? x_axis.ticks : 5),
226
- )
216
+ const x_ticks = $derived(x_scale.ticks(typeof x_axis.ticks === `number` ? x_axis.ticks : 5))
227
217
  // Use display scale for y ticks so they show converted temperatures
228
218
  const y_ticks = $derived(
229
219
  y_scale_display.ticks(typeof y_axis.ticks === `number` ? y_axis.ticks : 6),
@@ -262,9 +252,7 @@
262
252
  const transformed_boundaries = $derived(
263
253
  (effective_data?.boundaries ?? []).map((boundary) => ({
264
254
  ...boundary,
265
- svg_path: generate_boundary_path(
266
- transform_vertices(boundary.points, x_scale, y_scale),
267
- ),
255
+ svg_path: generate_boundary_path(transform_vertices(boundary.points, x_scale, y_scale)),
268
256
  })),
269
257
  )
270
258
 
@@ -354,11 +342,7 @@
354
342
  })
355
343
 
356
344
  // Find nearest special point within threshold (in SVG pixels)
357
- function find_nearby_special_point(
358
- svg_x: number,
359
- svg_y: number,
360
- threshold: number = 20,
361
- ) {
345
+ function find_nearby_special_point(svg_x: number, svg_y: number, threshold: number = 20) {
362
346
  let nearest: (typeof transformed_special_points)[0] | null = null
363
347
  let min_dist = threshold
364
348
  for (const point of transformed_special_points) {
@@ -372,19 +356,14 @@
372
356
  }
373
357
 
374
358
  // Pointer move handler (unified mouse/touch via Pointer Events API)
375
- function handle_pointer_move(
376
- event: PointerEvent & { currentTarget: SVGElement },
377
- ) {
359
+ function handle_pointer_move(event: PointerEvent & { currentTarget: SVGElement }) {
378
360
  const svg = event.currentTarget
379
361
  const rect = svg.getBoundingClientRect()
380
362
  const svg_x = event.clientX - rect.left
381
363
  const svg_y = event.clientY - rect.top
382
364
 
383
365
  // Check if within plot area
384
- if (
385
- svg_x < left || svg_x > right || svg_y < top || svg_y > bottom ||
386
- !effective_data
387
- ) {
366
+ if (svg_x < left || svg_x > right || svg_y < top || svg_y > bottom || !effective_data) {
388
367
  clear_hover()
389
368
  return
390
369
  }
@@ -395,9 +374,7 @@
395
374
  const region = find_phase_at_point(composition, temperature, effective_data)
396
375
 
397
376
  // Check for nearby special point
398
- const nearby_special = show_special_points
399
- ? find_nearby_special_point(svg_x, svg_y)
400
- : null
377
+ const nearby_special = show_special_points ? find_nearby_special_point(svg_x, svg_y) : null
401
378
 
402
379
  if (region) {
403
380
  hovered_region = region
@@ -406,11 +383,9 @@
406
383
  composition,
407
384
  temperature,
408
385
  position: { x: event.clientX, y: event.clientY },
409
- lever_rule: calculate_lever_rule(region, composition, temperature) ||
410
- undefined,
386
+ lever_rule: calculate_lever_rule(region, composition, temperature) || undefined,
411
387
  vertical_lever_rule:
412
- calculate_vertical_lever_rule(region, composition, temperature) ||
413
- undefined,
388
+ calculate_vertical_lever_rule(region, composition, temperature) || undefined,
414
389
  special_point: nearby_special || undefined,
415
390
  }
416
391
  on_phase_hover?.(hover_info)
@@ -462,9 +437,7 @@
462
437
  const comp_unit = $derived(effective_data?.composition_unit ?? `at%`)
463
438
 
464
439
  // Pseudo-binary support: format compound names with subscripts when enabled
465
- const use_subscripts = $derived(
466
- effective_data?.pseudo_binary?.use_subscripts ?? true,
467
- )
440
+ const use_subscripts = $derived(effective_data?.pseudo_binary?.use_subscripts ?? true)
468
441
 
469
442
  // Formatted component labels for SVG axis labels (with tspan subscripts if compound)
470
443
  const component_a_svg = $derived(format_formula_svg(component_a, use_subscripts))
@@ -545,7 +518,7 @@
545
518
 
546
519
  <div
547
520
  {...rest}
548
- class="binary-phase-diagram {rest.class ?? ``}"
521
+ class={[`binary-phase-diagram`, rest.class]}
549
522
  class:fullscreen
550
523
  bind:this={wrapper}
551
524
  bind:clientWidth={width}
@@ -593,7 +566,7 @@
593
566
  bind:editor_open
594
567
  bind:diagram_input
595
568
  data={effective_data}
596
- ondata={(edited) => data_override = edited}
569
+ ondata={(edited) => (data_override = edited)}
597
570
  icon_style={pane_icon_style}
598
571
  toggle_props={pane_toggle_props}
599
572
  />
@@ -667,8 +640,8 @@
667
640
  <path
668
641
  d={region.svg_path}
669
642
  fill={region.gradient
670
- ? `url(#${gradient_uid}-${region.id})`
671
- : (region.color || get_phase_color(region.name))}
643
+ ? `url(#${gradient_uid}-${region.id})`
644
+ : region.color || get_phase_color(region.name)}
672
645
  stroke="none"
673
646
  class:hovered={hovered_region?.id === region.id}
674
647
  />
@@ -683,7 +656,7 @@
683
656
  d={boundary.svg_path}
684
657
  fill="none"
685
658
  stroke={boundary.style?.color ?? merged_config.colors.boundary}
686
- stroke-width={boundary.style?.width || 2}
659
+ stroke-width={boundary.style?.width ?? 2}
687
660
  stroke-dasharray={boundary.style?.dash || ``}
688
661
  stroke-linecap="round"
689
662
  stroke-linejoin="round"
@@ -698,7 +671,8 @@
698
671
  {#each transformed_regions as region (region.id)}
699
672
  {@const line_height = merged_config.font_size * 1.2}
700
673
  <g
701
- transform="translate({region.label_pos[0]}, {region.label_pos[1]}) rotate({region.label_rotation}) scale({region.label_scale})"
674
+ transform="translate({region.label_pos[0]}, {region
675
+ .label_pos[1]}) rotate({region.label_rotation}) scale({region.label_scale})"
702
676
  >
703
677
  {#each region.label_lines as line, line_idx (line_idx)}
704
678
  <text
@@ -726,34 +700,34 @@
726
700
  {@const y_bot = y_scale(vlr.bottom_temperature)}
727
701
  {@const y_top = y_scale(vlr.top_temperature)}
728
702
  {@render tie_line_viz(
729
- cx,
730
- y_bot,
731
- cx,
732
- y_top,
733
- [
734
- { cx, cy: y_bot, color: get_phase_color(vlr.bottom_phase, `rgb`) },
735
- { cx, cy: y_top, color: get_phase_color(vlr.top_phase, `rgb`) },
736
- ],
737
- cx,
738
- y_scale(effective_hover_info.temperature),
739
- )}
703
+ cx,
704
+ y_bot,
705
+ cx,
706
+ y_top,
707
+ [
708
+ { cx, cy: y_bot, color: get_phase_color(vlr.bottom_phase, `rgb`) },
709
+ { cx, cy: y_top, color: get_phase_color(vlr.top_phase, `rgb`) },
710
+ ],
711
+ cx,
712
+ y_scale(effective_hover_info.temperature),
713
+ )}
740
714
  {:else if lever_rule_mode === `horizontal` && effective_hover_info?.lever_rule}
741
715
  {@const lr = effective_hover_info.lever_rule}
742
716
  {@const cy = y_scale(effective_hover_info.temperature)}
743
717
  {@const x_l = x_scale(lr.left_composition)}
744
718
  {@const x_r = x_scale(lr.right_composition)}
745
719
  {@render tie_line_viz(
746
- x_l,
747
- cy,
748
- x_r,
749
- cy,
750
- [
751
- { cx: x_l, cy, color: get_phase_color(lr.left_phase, `rgb`) },
752
- { cx: x_r, cy, color: get_phase_color(lr.right_phase, `rgb`) },
753
- ],
754
- x_scale(effective_hover_info.composition),
755
- cy,
756
- )}
720
+ x_l,
721
+ cy,
722
+ x_r,
723
+ cy,
724
+ [
725
+ { cx: x_l, cy, color: get_phase_color(lr.left_phase, `rgb`) },
726
+ { cx: x_r, cy, color: get_phase_color(lr.right_phase, `rgb`) },
727
+ ],
728
+ x_scale(effective_hover_info.composition),
729
+ cy,
730
+ )}
757
731
  {/if}
758
732
 
759
733
  <!-- Special points (rendered last for highest z-index) -->
@@ -996,8 +970,7 @@
996
970
  .binary-phase-diagram :global(.pd-editor-toggle) {
997
971
  opacity: 1;
998
972
  }
999
- .binary-phase-diagram:is(:hover, :focus-within)
1000
- :is(:global(.pane-toggle), .header-controls),
973
+ .binary-phase-diagram:is(:hover, :focus-within) :is(:global(.pane-toggle), .header-controls),
1001
974
  .binary-phase-diagram :global(.pane-toggle:is(:focus-visible, [aria-expanded='true'])),
1002
975
  .header-controls:has(:global(.pane-open)) {
1003
976
  opacity: 1;
@@ -1024,7 +997,12 @@
1024
997
  pointer-events: none; /* Let hit-area handle events */
1025
998
  }
1026
999
  /* Grouped pointer-events: none */
1027
- .region-label, .tie-line, .tooltip-container, .copy-feedback, .grid, .region-labels {
1000
+ .region-label,
1001
+ .tie-line,
1002
+ .tooltip-container,
1003
+ .copy-feedback,
1004
+ .grid,
1005
+ .region-labels {
1028
1006
  pointer-events: none;
1029
1007
  }
1030
1008
  .region-label {
@@ -1081,7 +1059,8 @@
1081
1059
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
1082
1060
  }
1083
1061
  @keyframes copy-fade-up {
1084
- 0%, 70% {
1062
+ 0%,
1063
+ 70% {
1085
1064
  opacity: 1;
1086
1065
  }
1087
1066
  100% {
@@ -31,14 +31,12 @@ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
31
31
  x_axis?: AxisConfig;
32
32
  y_axis?: AxisConfig;
33
33
  tooltip?: Snippet<[PhaseHoverInfo]> | PhaseDiagramTooltipConfig | false;
34
- children?: Snippet<[
35
- {
36
- width: number;
37
- height: number;
38
- fullscreen: boolean;
39
- }
40
- ]>;
34
+ children?: Snippet<[{
35
+ width: number;
36
+ height: number;
37
+ fullscreen: boolean;
38
+ }]>;
41
39
  };
42
- declare const IsobaricBinaryPhaseDiagram: import("svelte").Component<$$ComponentProps, {}, "show_labels" | "y_axis" | "fullscreen" | "wrapper" | "controls_open" | "x_axis" | "export_pane_open" | "png_dpi" | "config" | "show_grid" | "show_boundaries" | "show_special_points" | "show_component_labels" | "lever_rule_mode" | "editor_open" | "diagram_input" | "hovered_region" | "display_temp_unit">;
40
+ declare const IsobaricBinaryPhaseDiagram: import("svelte").Component<$$ComponentProps, {}, "show_labels" | "y_axis" | "fullscreen" | "wrapper" | "controls_open" | "x_axis" | "config" | "export_pane_open" | "png_dpi" | "show_grid" | "show_boundaries" | "show_special_points" | "show_component_labels" | "lever_rule_mode" | "editor_open" | "diagram_input" | "hovered_region" | "display_temp_unit">;
43
41
  type IsobaricBinaryPhaseDiagram = ReturnType<typeof IsobaricBinaryPhaseDiagram>;
44
42
  export default IsobaricBinaryPhaseDiagram;
@@ -3,6 +3,7 @@
3
3
  // NOTE: Axis config objects must be reassigned (not mutated) to trigger $bindable reactivity.
4
4
  import { css_color_to_hex } from '../colors'
5
5
  import { format_num } from '../labels'
6
+ import NumberRangeInput from '../layout/NumberRangeInput.svelte'
6
7
  import SettingsSection from '../layout/SettingsSection.svelte'
7
8
  import DraggablePane from '../overlays/DraggablePane.svelte'
8
9
  import type { AxisConfig } from '../plot'
@@ -78,9 +79,7 @@
78
79
  }
79
80
 
80
81
  // Helper to update nested config properties
81
- function update_nested<
82
- K extends keyof Pick<PhaseDiagramConfig, `colors` | `tie_line`>,
83
- >(
82
+ function update_nested<K extends keyof Pick<PhaseDiagramConfig, `colors` | `tie_line`>>(
84
83
  key: K,
85
84
  prop: string,
86
85
  value: string | number,
@@ -101,25 +100,6 @@
101
100
  const has_special_points = $derived((data?.special_points?.length ?? 0) > 0)
102
101
  </script>
103
102
 
104
- <!-- Reusable snippet for number + range input pairs -->
105
- {#snippet num_range(
106
- label: string,
107
- value: number,
108
- min: number,
109
- max: number,
110
- step: number,
111
- on_change: (val: number) => void,
112
- tip: string,
113
- )}
114
- {@const oninput = (ev: Event & { currentTarget: HTMLInputElement }) =>
115
- on_change(Number(ev.currentTarget.value))}
116
- <label {@attach tooltip({ content: tip })}>
117
- {label}
118
- <input type="number" {min} {max} {step} {value} {oninput} />
119
- <input type="range" {min} {max} {step} {value} {oninput} />
120
- </label>
121
- {/snippet}
122
-
123
103
  <DraggablePane
124
104
  bind:show={controls_open}
125
105
  pane_props={{
@@ -177,9 +157,7 @@
177
157
  Special Pts
178
158
  </label>
179
159
  {/if}
180
- <label
181
- {@attach tooltip({ content: `Show component labels at axes` })}
182
- >
160
+ <label {@attach tooltip({ content: `Show component labels at axes` })}>
183
161
  <input type="checkbox" bind:checked={show_component_labels} />
184
162
  Comp. Labels
185
163
  </label>
@@ -195,43 +173,40 @@
195
173
  }}
196
174
  on_reset={() => {
197
175
  update_config(`font_size`, PHASE_DIAGRAM_DEFAULTS.font_size)
198
- update_config(
199
- `special_point_radius`,
200
- PHASE_DIAGRAM_DEFAULTS.special_point_radius,
201
- )
176
+ update_config(`special_point_radius`, PHASE_DIAGRAM_DEFAULTS.special_point_radius)
202
177
  }}
203
178
  >
204
- {@render num_range(
205
- `Font size`,
206
- merged_config.font_size,
207
- 8,
208
- 20,
209
- 1,
210
- (val) => update_config(`font_size`, val),
211
- `Font size for axis labels and tick marks`,
212
- )}
179
+ <NumberRangeInput
180
+ min={8}
181
+ max={20}
182
+ step={1}
183
+ title="Font size for axis labels and tick marks"
184
+ bind:value={() => merged_config.font_size, (val) => update_config(`font_size`, val)}
185
+ >Font size</NumberRangeInput
186
+ >
213
187
  {#if has_special_points}
214
- {@render num_range(
215
- `Special pt radius`,
216
- merged_config.special_point_radius,
217
- 2,
218
- 12,
219
- 1,
220
- (val) => update_config(`special_point_radius`, val),
221
- `Radius of special point markers (eutectic, peritectic, etc.)`,
222
- )}
188
+ <NumberRangeInput
189
+ min={2}
190
+ max={12}
191
+ step={1}
192
+ title="Radius of special point markers (eutectic, peritectic, etc.)"
193
+ bind:value={
194
+ () => merged_config.special_point_radius,
195
+ (val) => update_config(`special_point_radius`, val)
196
+ }>Special pt radius</NumberRangeInput
197
+ >
223
198
  {/if}
224
199
  </SettingsSection>
225
200
 
226
201
  <!-- Colors Section -->
227
202
  {@const color_options = [
228
- [`background`, `#ffffff`, `Background`, `Background color of the plot area`],
229
- [`grid`, `#888888`, `Grid`, `Color of grid lines`],
230
- [`boundary`, `#333333`, `Boundaries`, `Color of phase boundary lines`],
231
- [`special_point`, `#d32f2f`, `Special Pts`, `Color of special point markers`],
232
- [`axis`, `#333333`, `Axis`, `Color of axis lines`],
233
- [`text`, `#333333`, `Text`, `Color of text labels`],
234
- ] as const}
203
+ [`background`, `#ffffff`, `Background`, `Background color of the plot area`],
204
+ [`grid`, `#888888`, `Grid`, `Color of grid lines`],
205
+ [`boundary`, `#333333`, `Boundaries`, `Color of phase boundary lines`],
206
+ [`special_point`, `#d32f2f`, `Special Pts`, `Color of special point markers`],
207
+ [`axis`, `#333333`, `Axis`, `Color of axis lines`],
208
+ [`text`, `#333333`, `Text`, `Color of text labels`],
209
+ ] as const}
235
210
  <SettingsSection
236
211
  title="Colors"
237
212
  current_values={{ ...merged_config.colors }}
@@ -281,40 +256,43 @@
281
256
  </label>
282
257
  </div>
283
258
  </span>
284
- {@render num_range(
285
- `Line width`,
286
- merged_config.tie_line.stroke_width,
287
- 0.5,
288
- 5,
289
- 0.5,
290
- (val) => update_nested(`tie_line`, `stroke_width`, val),
291
- `Thickness of the tie-line`,
292
- )}
293
- {@render num_range(
294
- `Endpoint radius`,
295
- merged_config.tie_line.endpoint_radius,
296
- 2,
297
- 10,
298
- 1,
299
- (val) => update_nested(`tie_line`, `endpoint_radius`, val),
300
- `Radius of phase boundary endpoint markers`,
301
- )}
302
- {@render num_range(
303
- `Cursor radius`,
304
- merged_config.tie_line.cursor_radius,
305
- 2,
306
- 10,
307
- 1,
308
- (val) => update_nested(`tie_line`, `cursor_radius`, val),
309
- `Radius of the cursor position marker`,
310
- )}
259
+ <NumberRangeInput
260
+ min={0.5}
261
+ max={5}
262
+ step={0.5}
263
+ title="Thickness of the tie-line"
264
+ bind:value={
265
+ () => merged_config.tie_line.stroke_width,
266
+ (val) => update_nested(`tie_line`, `stroke_width`, val)
267
+ }>Line width</NumberRangeInput
268
+ >
269
+ <NumberRangeInput
270
+ min={2}
271
+ max={10}
272
+ step={1}
273
+ title="Radius of phase boundary endpoint markers"
274
+ bind:value={
275
+ () => merged_config.tie_line.endpoint_radius,
276
+ (val) => update_nested(`tie_line`, `endpoint_radius`, val)
277
+ }>Endpoint radius</NumberRangeInput
278
+ >
279
+ <NumberRangeInput
280
+ min={2}
281
+ max={10}
282
+ step={1}
283
+ title="Radius of the cursor position marker"
284
+ bind:value={
285
+ () => merged_config.tie_line.cursor_radius,
286
+ (val) => update_nested(`tie_line`, `cursor_radius`, val)
287
+ }>Cursor radius</NumberRangeInput
288
+ >
311
289
  </SettingsSection>
312
290
 
313
291
  <!-- Axis Configuration Section -->
314
292
  {@const axis_configs = [
315
- [x_axis, `x`, comp_unit, `composition`],
316
- [y_axis, `y`, temp_unit, `temperature`],
317
- ] as const}
293
+ [x_axis, `x`, comp_unit, `composition`],
294
+ [y_axis, `y`, temp_unit, `temperature`],
295
+ ] as const}
318
296
  <SettingsSection
319
297
  title="Axes"
320
298
  current_values={{ x_ticks: x_axis.ticks, y_ticks: y_axis.ticks }}
@@ -353,7 +331,9 @@
353
331
  }}
354
332
  >
355
333
  <label
356
- {@attach tooltip({ content: `DPI (dots per inch) for PNG export. Higher values produce larger, higher-quality images.` })}
334
+ {@attach tooltip({
335
+ content: `DPI (dots per inch) for PNG export. Higher values produce larger, higher-quality images.`,
336
+ })}
357
337
  >
358
338
  PNG DPI
359
339
  <input
@@ -364,15 +344,11 @@
364
344
  style="width: 3.5em"
365
345
  bind:value={png_dpi}
366
346
  />
367
- <input
368
- type="range"
369
- min={72}
370
- max={600}
371
- step={50}
372
- bind:value={png_dpi}
373
- />
374
- <span style="font-size: 0.85em; opacity: 0.7">{format_num(png_dpi, `d`)}
375
- dpi</span>
347
+ <input type="range" min={72} max={600} step={50} bind:value={png_dpi} />
348
+ <span style="font-size: 0.85em; opacity: 0.7"
349
+ >{format_num(png_dpi, `d`)}
350
+ dpi</span
351
+ >
376
352
  </label>
377
353
  </SettingsSection>
378
354
  {/if}
@@ -26,6 +26,6 @@ type $$ComponentProps = Omit<ComponentProps<typeof DraggablePane>, `children`> &
26
26
  controls_open: boolean;
27
27
  }]>;
28
28
  };
29
- declare const PhaseDiagramControls: import("svelte").Component<$$ComponentProps, {}, "show_labels" | "y_axis" | "controls_open" | "x_axis" | "png_dpi" | "config" | "show_grid" | "show_boundaries" | "show_special_points" | "show_component_labels" | "lever_rule_mode">;
29
+ declare const PhaseDiagramControls: import("svelte").Component<$$ComponentProps, {}, "show_labels" | "y_axis" | "controls_open" | "x_axis" | "config" | "png_dpi" | "show_grid" | "show_boundaries" | "show_special_points" | "show_component_labels" | "lever_rule_mode">;
30
30
  type PhaseDiagramControls = ReturnType<typeof PhaseDiagramControls>;
31
31
  export default PhaseDiagramControls;
@@ -111,7 +111,8 @@
111
111
  animation: fade-out 3s ease-out forwards;
112
112
  }
113
113
  @keyframes fade-out {
114
- 0%, 80% {
114
+ 0%,
115
+ 80% {
115
116
  opacity: 1;
116
117
  }
117
118
  100% {
@@ -41,8 +41,7 @@
41
41
  )
42
42
 
43
43
  const svg = $derived(
44
- svg_element ??
45
- (wrapper?.querySelector(svg_query_selector) as SVGSVGElement | null),
44
+ svg_element ?? (wrapper?.querySelector(svg_query_selector) as SVGSVGElement | null),
46
45
  )
47
46
 
48
47
  const json_export_data = $derived(json_payload ?? data)
@@ -64,23 +63,24 @@
64
63
  label: `PNG`,
65
64
  disabled: !svg,
66
65
  show_dpi: true,
67
- on_download: () =>
68
- svg && export_svg_as_png(svg, `${full_filename}.png`, png_dpi),
66
+ on_download: () => svg && export_svg_as_png(svg, `${full_filename}.png`, png_dpi),
69
67
  },
70
68
  ],
71
69
  },
72
70
  {
73
71
  title: `Data`,
74
72
  tooltip: `Export phase diagram data as JSON`,
75
- items: [{
76
- label: `JSON`,
77
- disabled: !json_export_data,
78
- on_download: () => {
79
- const content = json_string()
80
- if (content) download(content, `${full_filename}.json`, `application/json`)
73
+ items: [
74
+ {
75
+ label: `JSON`,
76
+ disabled: !json_export_data,
77
+ on_download: () => {
78
+ const content = json_string()
79
+ if (content) download(content, `${full_filename}.json`, `application/json`)
80
+ },
81
+ copy_text: json_string,
81
82
  },
82
- copy_text: json_string,
83
- }],
83
+ ],
84
84
  },
85
85
  ])
86
86
  </script>