matterviz 0.3.7 → 0.4.1

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 (486) hide show
  1. package/dist/Icon.svelte +7 -4
  2. package/dist/MillerIndexInput.svelte +1 -1
  3. package/dist/api/optimade.js +32 -26
  4. package/dist/app.css +0 -3
  5. package/dist/brillouin/BrillouinZone.svelte +76 -148
  6. package/dist/brillouin/BrillouinZone.svelte.d.ts +6 -14
  7. package/dist/brillouin/BrillouinZoneExportPane.svelte +43 -96
  8. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
  9. package/dist/brillouin/BrillouinZoneInfoPane.svelte +9 -32
  10. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +2 -3
  11. package/dist/brillouin/BrillouinZoneScene.svelte +97 -205
  12. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +4 -23
  13. package/dist/brillouin/BrillouinZoneTooltip.svelte +16 -25
  14. package/dist/brillouin/ReciprocalVectors.svelte +39 -0
  15. package/dist/brillouin/ReciprocalVectors.svelte.d.ts +9 -0
  16. package/dist/brillouin/compute.d.ts +2 -0
  17. package/dist/brillouin/compute.js +89 -90
  18. package/dist/brillouin/geometry.d.ts +8 -0
  19. package/dist/brillouin/geometry.js +57 -0
  20. package/dist/brillouin/index.d.ts +2 -0
  21. package/dist/brillouin/index.js +2 -0
  22. package/dist/brillouin/types.d.ts +2 -2
  23. package/dist/chempot-diagram/ChemPotDiagram.svelte +14 -13
  24. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +1 -1
  25. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +109 -203
  26. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +4 -1
  27. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +180 -470
  28. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +7 -1
  29. package/dist/chempot-diagram/async-compute.svelte.js +3 -1
  30. package/dist/chempot-diagram/chempot-worker.js +2 -1
  31. package/dist/chempot-diagram/color.d.ts +3 -6
  32. package/dist/chempot-diagram/color.js +5 -5
  33. package/dist/chempot-diagram/compute.d.ts +4 -4
  34. package/dist/chempot-diagram/compute.js +20 -20
  35. package/dist/chempot-diagram/controls-state.svelte.d.ts +10 -0
  36. package/dist/chempot-diagram/controls-state.svelte.js +42 -0
  37. package/dist/chempot-diagram/export.d.ts +47 -0
  38. package/dist/chempot-diagram/export.js +133 -0
  39. package/dist/chempot-diagram/index.d.ts +1 -0
  40. package/dist/chempot-diagram/index.js +1 -0
  41. package/dist/chempot-diagram/pointer.d.ts +0 -10
  42. package/dist/chempot-diagram/pointer.js +4 -4
  43. package/dist/chempot-diagram/types.d.ts +3 -3
  44. package/dist/colors/index.js +8 -7
  45. package/dist/composition/FormulaFilter.svelte +18 -11
  46. package/dist/composition/PieChart.svelte +11 -10
  47. package/dist/composition/chem-sys.d.ts +8 -0
  48. package/dist/composition/chem-sys.js +86 -0
  49. package/dist/composition/format.js +7 -4
  50. package/dist/composition/index.d.ts +1 -0
  51. package/dist/composition/index.js +1 -0
  52. package/dist/composition/parse.d.ts +0 -1
  53. package/dist/composition/parse.js +41 -31
  54. package/dist/controls.d.ts +1 -0
  55. package/dist/controls.js +0 -1
  56. package/dist/convex-hull/ConvexHull.svelte +8 -10
  57. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -4
  58. package/dist/convex-hull/ConvexHull2D.svelte +106 -185
  59. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  60. package/dist/convex-hull/ConvexHull3D.svelte +179 -683
  61. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  62. package/dist/convex-hull/ConvexHull4D.svelte +183 -687
  63. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  64. package/dist/convex-hull/ConvexHullChrome.svelte +268 -0
  65. package/dist/convex-hull/ConvexHullChrome.svelte.d.ts +30 -0
  66. package/dist/convex-hull/ConvexHullControls.svelte +88 -7
  67. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +7 -6
  68. package/dist/convex-hull/ConvexHullInfoPane.svelte +18 -5
  69. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +6 -5
  70. package/dist/convex-hull/ConvexHullStats.svelte +36 -175
  71. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +3 -1
  72. package/dist/convex-hull/ConvexHullTooltip.svelte +11 -2
  73. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +2 -1
  74. package/dist/convex-hull/GasPressureControls.svelte +4 -4
  75. package/dist/convex-hull/TemperatureSlider.svelte +2 -2
  76. package/dist/convex-hull/barycentric-coords.d.ts +2 -4
  77. package/dist/convex-hull/barycentric-coords.js +6 -33
  78. package/dist/convex-hull/canvas-interactions.svelte.d.ts +79 -0
  79. package/dist/convex-hull/canvas-interactions.svelte.js +278 -0
  80. package/dist/convex-hull/demo-temperature.d.ts +1 -1
  81. package/dist/convex-hull/demo-temperature.js +20 -22
  82. package/dist/convex-hull/gas-thermodynamics.d.ts +2 -2
  83. package/dist/convex-hull/gas-thermodynamics.js +22 -30
  84. package/dist/convex-hull/helpers.d.ts +42 -7
  85. package/dist/convex-hull/helpers.js +171 -78
  86. package/dist/convex-hull/hull-state.svelte.d.ts +44 -0
  87. package/dist/convex-hull/hull-state.svelte.js +124 -0
  88. package/dist/convex-hull/index.d.ts +10 -8
  89. package/dist/convex-hull/index.js +7 -2
  90. package/dist/convex-hull/thermodynamics.js +136 -960
  91. package/dist/convex-hull/types.d.ts +13 -5
  92. package/dist/convex-hull/types.js +12 -0
  93. package/dist/coordination/CoordinationBarPlot.svelte +27 -34
  94. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +1 -1
  95. package/dist/element/BohrAtom.svelte +2 -1
  96. package/dist/element/index.d.ts +4 -0
  97. package/dist/element/index.js +18 -0
  98. package/dist/feedback/DragOverlay.svelte +3 -1
  99. package/dist/feedback/DragOverlay.svelte.d.ts +1 -0
  100. package/dist/feedback/StatusMessage.svelte +13 -3
  101. package/dist/fermi-surface/FermiSlice.svelte +13 -5
  102. package/dist/fermi-surface/FermiSurface.svelte +78 -151
  103. package/dist/fermi-surface/FermiSurface.svelte.d.ts +5 -14
  104. package/dist/fermi-surface/FermiSurfaceControls.svelte +1 -1
  105. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
  106. package/dist/fermi-surface/FermiSurfaceScene.svelte +72 -221
  107. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +3 -23
  108. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +8 -34
  109. package/dist/fermi-surface/compute.js +67 -66
  110. package/dist/fermi-surface/export.js +6 -16
  111. package/dist/fermi-surface/index.d.ts +0 -1
  112. package/dist/fermi-surface/index.js +0 -1
  113. package/dist/fermi-surface/parse.d.ts +1 -1
  114. package/dist/fermi-surface/parse.js +71 -79
  115. package/dist/fermi-surface/types.d.ts +3 -2
  116. package/dist/heatmap-matrix/HeatmapMatrix.svelte +69 -52
  117. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +4 -3
  118. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +3 -2
  119. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +5 -5
  120. package/dist/heatmap-matrix/index.d.ts +3 -2
  121. package/dist/heatmap-matrix/index.js +1 -1
  122. package/dist/index.d.ts +1 -0
  123. package/dist/index.js +1 -0
  124. package/dist/io/ExportPane.svelte +166 -0
  125. package/dist/io/ExportPane.svelte.d.ts +17 -0
  126. package/dist/io/decompress.js +5 -4
  127. package/dist/io/export.d.ts +9 -5
  128. package/dist/io/export.js +77 -51
  129. package/dist/io/fetch.d.ts +2 -1
  130. package/dist/io/fetch.js +5 -1
  131. package/dist/io/file-drop.d.ts +8 -1
  132. package/dist/io/file-drop.js +48 -36
  133. package/dist/io/index.d.ts +2 -0
  134. package/dist/io/index.js +10 -0
  135. package/dist/io/types.d.ts +13 -0
  136. package/dist/io/url-drop.js +64 -33
  137. package/dist/isosurface/parse.js +52 -51
  138. package/dist/isosurface/slice.js +5 -4
  139. package/dist/isosurface/types.js +1 -1
  140. package/dist/keyboard.d.ts +3 -0
  141. package/dist/keyboard.js +23 -0
  142. package/dist/labels.d.ts +1 -1
  143. package/dist/labels.js +9 -8
  144. package/dist/layout/FullscreenButton.svelte +33 -0
  145. package/dist/layout/FullscreenButton.svelte.d.ts +10 -0
  146. package/dist/layout/FullscreenToggle.svelte +8 -14
  147. package/dist/layout/PropertyFilter.svelte +3 -2
  148. package/dist/layout/SettingsSection.svelte +1 -1
  149. package/dist/layout/ViewerChrome.svelte +116 -0
  150. package/dist/layout/ViewerChrome.svelte.d.ts +17 -0
  151. package/dist/layout/fullscreen.d.ts +4 -0
  152. package/dist/layout/fullscreen.svelte.d.ts +8 -0
  153. package/dist/layout/fullscreen.svelte.js +37 -0
  154. package/dist/layout/index.d.ts +3 -0
  155. package/dist/layout/index.js +3 -0
  156. package/dist/layout/json-tree/JsonNode.svelte +1 -1
  157. package/dist/layout/json-tree/JsonTree.svelte +2 -2
  158. package/dist/layout/json-tree/utils.js +5 -4
  159. package/dist/marching-cubes.js +8 -13
  160. package/dist/math.d.ts +12 -4
  161. package/dist/math.js +42 -30
  162. package/dist/overlays/DraggablePane.svelte +4 -4
  163. package/dist/overlays/index.d.ts +4 -0
  164. package/dist/periodic-table/PeriodicTable.svelte +27 -15
  165. package/dist/periodic-table/PropertySelect.svelte +1 -0
  166. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +9 -3
  167. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +1 -1
  168. package/dist/phase-diagram/PhaseDiagramControls.svelte +3 -2
  169. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +4 -3
  170. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +4 -2
  171. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +2 -3
  172. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +47 -132
  173. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +3 -4
  174. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +1 -1
  175. package/dist/phase-diagram/build-diagram.js +2 -2
  176. package/dist/phase-diagram/colors.js +1 -1
  177. package/dist/phase-diagram/parse.d.ts +2 -1
  178. package/dist/phase-diagram/parse.js +6 -5
  179. package/dist/phase-diagram/types.d.ts +1 -1
  180. package/dist/phase-diagram/utils.d.ts +3 -3
  181. package/dist/phase-diagram/utils.js +8 -12
  182. package/dist/plot/{BarPlot.svelte → bar/BarPlot.svelte} +246 -841
  183. package/dist/plot/{BarPlot.svelte.d.ts → bar/BarPlot.svelte.d.ts} +8 -16
  184. package/dist/plot/{BarPlotControls.svelte → bar/BarPlotControls.svelte} +6 -5
  185. package/dist/plot/{BarPlotControls.svelte.d.ts → bar/BarPlotControls.svelte.d.ts} +3 -3
  186. package/dist/plot/{SpacegroupBarPlot.svelte → bar/SpacegroupBarPlot.svelte} +8 -7
  187. package/dist/plot/{SpacegroupBarPlot.svelte.d.ts → bar/SpacegroupBarPlot.svelte.d.ts} +1 -1
  188. package/dist/plot/bar/data.d.ts +40 -0
  189. package/dist/plot/bar/data.js +154 -0
  190. package/dist/plot/bar/geometry.d.ts +39 -0
  191. package/dist/plot/bar/geometry.js +60 -0
  192. package/dist/plot/bar/index.d.ts +3 -0
  193. package/dist/plot/bar/index.js +3 -0
  194. package/dist/plot/box/BoxPlot.svelte +1292 -0
  195. package/dist/plot/box/BoxPlot.svelte.d.ts +95 -0
  196. package/dist/plot/box/BoxPlotControls.svelte +109 -0
  197. package/dist/plot/box/BoxPlotControls.svelte.d.ts +19 -0
  198. package/dist/plot/box/Violin.svelte +14 -0
  199. package/dist/plot/box/Violin.svelte.d.ts +70 -0
  200. package/dist/plot/box/box-plot.d.ts +56 -0
  201. package/dist/plot/box/box-plot.js +129 -0
  202. package/dist/plot/box/index.d.ts +5 -0
  203. package/dist/plot/box/index.js +5 -0
  204. package/dist/plot/box/kde.d.ts +17 -0
  205. package/dist/plot/box/kde.js +160 -0
  206. package/dist/plot/box/quantile.d.ts +3 -0
  207. package/dist/plot/box/quantile.js +53 -0
  208. package/dist/plot/{auto-place.d.ts → core/auto-place.d.ts} +1 -1
  209. package/dist/plot/{auto-place.js → core/auto-place.js} +6 -3
  210. package/dist/plot/core/axis-utils.d.ts +46 -0
  211. package/dist/plot/core/axis-utils.js +110 -0
  212. package/dist/plot/{AxisLabel.svelte → core/components/AxisLabel.svelte} +2 -2
  213. package/dist/plot/{AxisLabel.svelte.d.ts → core/components/AxisLabel.svelte.d.ts} +1 -1
  214. package/dist/plot/{ColorBar.svelte → core/components/ColorBar.svelte} +41 -38
  215. package/dist/plot/{ColorBar.svelte.d.ts → core/components/ColorBar.svelte.d.ts} +7 -6
  216. package/dist/plot/{ColorScaleSelect.svelte → core/components/ColorScaleSelect.svelte} +4 -3
  217. package/dist/plot/{ColorScaleSelect.svelte.d.ts → core/components/ColorScaleSelect.svelte.d.ts} +2 -2
  218. package/dist/plot/core/components/ControlPane.svelte +46 -0
  219. package/dist/plot/core/components/ControlPane.svelte.d.ts +13 -0
  220. package/dist/plot/{FillArea.svelte → core/components/FillArea.svelte} +17 -6
  221. package/dist/plot/{FillArea.svelte.d.ts → core/components/FillArea.svelte.d.ts} +1 -1
  222. package/dist/plot/{InteractiveAxisLabel.svelte → core/components/InteractiveAxisLabel.svelte} +3 -3
  223. package/dist/plot/{InteractiveAxisLabel.svelte.d.ts → core/components/InteractiveAxisLabel.svelte.d.ts} +2 -2
  224. package/dist/plot/{Line.svelte → core/components/Line.svelte} +33 -15
  225. package/dist/plot/{Line.svelte.d.ts → core/components/Line.svelte.d.ts} +3 -2
  226. package/dist/plot/{PlotAxis.svelte → core/components/PlotAxis.svelte} +9 -6
  227. package/dist/plot/{PlotAxis.svelte.d.ts → core/components/PlotAxis.svelte.d.ts} +5 -3
  228. package/dist/plot/{PlotControls.svelte → core/components/PlotControls.svelte} +17 -29
  229. package/dist/plot/core/components/PlotControls.svelte.d.ts +4 -0
  230. package/dist/plot/{PlotLegend.svelte → core/components/PlotLegend.svelte} +21 -10
  231. package/dist/plot/{PlotLegend.svelte.d.ts → core/components/PlotLegend.svelte.d.ts} +3 -2
  232. package/dist/plot/{PlotTooltip.svelte → core/components/PlotTooltip.svelte} +17 -1
  233. package/dist/plot/{PlotTooltip.svelte.d.ts → core/components/PlotTooltip.svelte.d.ts} +8 -0
  234. package/dist/plot/{PortalSelect.svelte → core/components/PortalSelect.svelte} +11 -7
  235. package/dist/plot/{ReferenceLine.svelte → core/components/ReferenceLine.svelte} +3 -3
  236. package/dist/plot/{ReferenceLine.svelte.d.ts → core/components/ReferenceLine.svelte.d.ts} +1 -1
  237. package/dist/plot/{ReferenceLine3D.svelte → core/components/ReferenceLine3D.svelte} +5 -5
  238. package/dist/plot/{ReferenceLine3D.svelte.d.ts → core/components/ReferenceLine3D.svelte.d.ts} +5 -5
  239. package/dist/plot/{ReferencePlane.svelte → core/components/ReferencePlane.svelte} +8 -8
  240. package/dist/plot/{ReferencePlane.svelte.d.ts → core/components/ReferencePlane.svelte.d.ts} +5 -5
  241. package/dist/plot/{ZeroLines.svelte → core/components/ZeroLines.svelte} +3 -3
  242. package/dist/plot/{ZeroLines.svelte.d.ts → core/components/ZeroLines.svelte.d.ts} +3 -3
  243. package/dist/plot/{ZoomRect.svelte → core/components/ZoomRect.svelte} +1 -1
  244. package/dist/plot/{ZoomRect.svelte.d.ts → core/components/ZoomRect.svelte.d.ts} +1 -1
  245. package/dist/plot/core/components/index.d.ts +17 -0
  246. package/dist/plot/core/components/index.js +17 -0
  247. package/dist/plot/{data-cleaning.d.ts → core/data-cleaning.d.ts} +71 -1
  248. package/dist/plot/{data-cleaning.js → core/data-cleaning.js} +21 -23
  249. package/dist/plot/{data-transform.d.ts → core/data-transform.d.ts} +2 -2
  250. package/dist/plot/{data-transform.js → core/data-transform.js} +3 -3
  251. package/dist/plot/core/fill-utils.d.ts +34 -0
  252. package/dist/plot/core/fill-utils.js +391 -0
  253. package/dist/plot/core/index.d.ts +10 -0
  254. package/dist/plot/core/index.js +11 -0
  255. package/dist/plot/core/interactions.d.ts +39 -0
  256. package/dist/plot/core/interactions.js +209 -0
  257. package/dist/plot/{layout.d.ts → core/layout.d.ts} +1 -0
  258. package/dist/plot/{layout.js → core/layout.js} +16 -8
  259. package/dist/plot/core/pan-zoom.svelte.d.ts +35 -0
  260. package/dist/plot/core/pan-zoom.svelte.js +221 -0
  261. package/dist/plot/core/placed-tween.svelte.d.ts +21 -0
  262. package/dist/plot/core/placed-tween.svelte.js +68 -0
  263. package/dist/plot/{reference-line.d.ts → core/reference-line.d.ts} +11 -11
  264. package/dist/plot/{reference-line.js → core/reference-line.js} +29 -42
  265. package/dist/plot/core/scales.d.ts +40 -0
  266. package/dist/plot/{scales.js → core/scales.js} +94 -93
  267. package/dist/plot/core/svg.d.ts +3 -0
  268. package/dist/plot/core/svg.js +41 -0
  269. package/dist/plot/{types.d.ts → core/types.d.ts} +36 -85
  270. package/dist/plot/{types.js → core/types.js} +1 -1
  271. package/dist/plot/{utils → core/utils}/label-placement.d.ts +3 -3
  272. package/dist/plot/{utils → core/utils}/label-placement.js +3 -3
  273. package/dist/plot/core/utils/series-visibility.d.ts +26 -0
  274. package/dist/plot/{utils → core/utils}/series-visibility.js +29 -2
  275. package/dist/plot/core/utils.d.ts +12 -0
  276. package/dist/plot/core/utils.js +27 -0
  277. package/dist/plot/{Histogram.svelte → histogram/Histogram.svelte} +174 -551
  278. package/dist/plot/{Histogram.svelte.d.ts → histogram/Histogram.svelte.d.ts} +2 -2
  279. package/dist/plot/{HistogramControls.svelte → histogram/HistogramControls.svelte} +6 -6
  280. package/dist/plot/{HistogramControls.svelte.d.ts → histogram/HistogramControls.svelte.d.ts} +4 -4
  281. package/dist/plot/histogram/index.d.ts +2 -0
  282. package/dist/plot/histogram/index.js +2 -0
  283. package/dist/plot/index.d.ts +8 -41
  284. package/dist/plot/index.js +10 -39
  285. package/dist/plot/sankey/Sankey.svelte +697 -0
  286. package/dist/plot/sankey/Sankey.svelte.d.ts +74 -0
  287. package/dist/plot/sankey/SankeyControls.svelte +98 -0
  288. package/dist/plot/sankey/SankeyControls.svelte.d.ts +19 -0
  289. package/dist/plot/sankey/index.d.ts +4 -0
  290. package/dist/plot/sankey/index.js +3 -0
  291. package/dist/plot/sankey/sankey-types.d.ts +42 -0
  292. package/dist/plot/sankey/sankey-types.js +4 -0
  293. package/dist/plot/sankey/sankey.d.ts +52 -0
  294. package/dist/plot/sankey/sankey.js +189 -0
  295. package/dist/plot/{BinnedScatterPlot.svelte → scatter/BinnedScatterPlot.svelte} +64 -64
  296. package/dist/plot/{BinnedScatterPlot.svelte.d.ts → scatter/BinnedScatterPlot.svelte.d.ts} +6 -6
  297. package/dist/plot/{ElementScatter.svelte → scatter/ElementScatter.svelte} +6 -6
  298. package/dist/plot/{ElementScatter.svelte.d.ts → scatter/ElementScatter.svelte.d.ts} +2 -2
  299. package/dist/plot/{ScatterPlot.svelte → scatter/ScatterPlot.svelte} +297 -1008
  300. package/dist/plot/{ScatterPlot.svelte.d.ts → scatter/ScatterPlot.svelte.d.ts} +10 -18
  301. package/dist/plot/{ScatterPlotControls.svelte → scatter/ScatterPlotControls.svelte} +6 -5
  302. package/dist/plot/{ScatterPlotControls.svelte.d.ts → scatter/ScatterPlotControls.svelte.d.ts} +2 -2
  303. package/dist/plot/{ScatterPoint.svelte → scatter/ScatterPoint.svelte} +7 -7
  304. package/dist/plot/{ScatterPoint.svelte.d.ts → scatter/ScatterPoint.svelte.d.ts} +3 -3
  305. package/dist/plot/{adaptive-density.d.ts → scatter/adaptive-density.d.ts} +14 -4
  306. package/dist/plot/{adaptive-density.js → scatter/adaptive-density.js} +46 -20
  307. package/dist/plot/{binned-scatter-types.d.ts → scatter/binned-scatter-types.d.ts} +5 -12
  308. package/dist/plot/scatter/index.d.ts +7 -0
  309. package/dist/plot/scatter/index.js +5 -0
  310. package/dist/plot/scatter/scatter-data.d.ts +19 -0
  311. package/dist/plot/scatter/scatter-data.js +212 -0
  312. package/dist/plot/{ScatterPlot3D.svelte → scatter-3d/ScatterPlot3D.svelte} +25 -34
  313. package/dist/plot/{ScatterPlot3D.svelte.d.ts → scatter-3d/ScatterPlot3D.svelte.d.ts} +9 -17
  314. package/dist/plot/{ScatterPlot3DControls.svelte → scatter-3d/ScatterPlot3DControls.svelte} +14 -14
  315. package/dist/plot/{ScatterPlot3DControls.svelte.d.ts → scatter-3d/ScatterPlot3DControls.svelte.d.ts} +6 -6
  316. package/dist/plot/{ScatterPlot3DScene.svelte → scatter-3d/ScatterPlot3DScene.svelte} +129 -128
  317. package/dist/plot/{ScatterPlot3DScene.svelte.d.ts → scatter-3d/ScatterPlot3DScene.svelte.d.ts} +6 -15
  318. package/dist/plot/{Surface3D.svelte → scatter-3d/Surface3D.svelte} +7 -6
  319. package/dist/plot/{Surface3D.svelte.d.ts → scatter-3d/Surface3D.svelte.d.ts} +5 -4
  320. package/dist/plot/scatter-3d/index.d.ts +4 -0
  321. package/dist/plot/scatter-3d/index.js +4 -0
  322. package/dist/plot/sunburst/Sunburst.svelte +1041 -0
  323. package/dist/plot/sunburst/Sunburst.svelte.d.ts +97 -0
  324. package/dist/plot/sunburst/SunburstControls.svelte +200 -0
  325. package/dist/plot/sunburst/SunburstControls.svelte.d.ts +26 -0
  326. package/dist/plot/sunburst/index.d.ts +4 -0
  327. package/dist/plot/sunburst/index.js +4 -0
  328. package/dist/plot/sunburst/render.d.ts +34 -0
  329. package/dist/plot/sunburst/render.js +122 -0
  330. package/dist/plot/sunburst/sunburst.d.ts +62 -0
  331. package/dist/plot/sunburst/sunburst.js +269 -0
  332. package/dist/rdf/RdfPlot.svelte +2 -1
  333. package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
  334. package/dist/rdf/calc-rdf.js +11 -24
  335. package/dist/sanitize.js +14 -3
  336. package/dist/scene/SceneCamera.svelte +62 -0
  337. package/dist/scene/SceneCamera.svelte.d.ts +19 -0
  338. package/dist/scene/bind-renderer.svelte.d.ts +2 -0
  339. package/dist/scene/bind-renderer.svelte.js +14 -0
  340. package/dist/scene/index.d.ts +4 -0
  341. package/dist/scene/index.js +5 -0
  342. package/dist/scene/props.js +52 -0
  343. package/dist/scene/types.d.ts +26 -0
  344. package/dist/scene/types.js +1 -0
  345. package/dist/settings.d.ts +79 -3
  346. package/dist/settings.js +321 -1
  347. package/dist/spectral/Bands.svelte +47 -36
  348. package/dist/spectral/Bands.svelte.d.ts +6 -6
  349. package/dist/spectral/BandsAndDos.svelte +23 -25
  350. package/dist/spectral/BrillouinBandsDos.svelte +42 -30
  351. package/dist/spectral/Dos.svelte +15 -23
  352. package/dist/spectral/Dos.svelte.d.ts +4 -3
  353. package/dist/spectral/helpers.d.ts +8 -6
  354. package/dist/spectral/helpers.js +137 -65
  355. package/dist/state.svelte.d.ts +0 -7
  356. package/dist/state.svelte.js +0 -6
  357. package/dist/structure/Arrow.svelte +2 -4
  358. package/dist/structure/AtomLegend.svelte +8 -9
  359. package/dist/structure/AtomLegend.svelte.d.ts +1 -1
  360. package/dist/structure/CanvasTooltip.svelte +1 -0
  361. package/dist/structure/CellSelect.svelte +12 -5
  362. package/dist/structure/CellSelect.svelte.d.ts +2 -1
  363. package/dist/structure/Cylinder.svelte +12 -8
  364. package/dist/structure/Cylinder.svelte.d.ts +4 -1
  365. package/dist/structure/Lattice.svelte +2 -2
  366. package/dist/structure/Structure.svelte +365 -423
  367. package/dist/structure/Structure.svelte.d.ts +5 -15
  368. package/dist/structure/StructureControls.svelte +217 -2
  369. package/dist/structure/StructureControls.svelte.d.ts +5 -3
  370. package/dist/structure/StructureExportPane.svelte +54 -156
  371. package/dist/structure/StructureExportPane.svelte.d.ts +4 -5
  372. package/dist/structure/StructureInfoPane.svelte +10 -9
  373. package/dist/structure/StructureInfoPane.svelte.d.ts +5 -5
  374. package/dist/structure/StructureScene.svelte +376 -208
  375. package/dist/structure/StructureScene.svelte.d.ts +22 -20
  376. package/dist/structure/{label-placement.d.ts → atom-label-placement.d.ts} +3 -3
  377. package/dist/structure/{label-placement.js → atom-label-placement.js} +15 -5
  378. package/dist/structure/atom-properties.d.ts +1 -1
  379. package/dist/structure/atom-properties.js +17 -22
  380. package/dist/structure/bond-order-perception.js +3 -5
  381. package/dist/structure/bonding.d.ts +4 -0
  382. package/dist/structure/bonding.js +134 -63
  383. package/dist/structure/export.d.ts +24 -4
  384. package/dist/structure/export.js +89 -143
  385. package/dist/structure/index.d.ts +4 -4
  386. package/dist/structure/index.js +3 -3
  387. package/dist/structure/measure.d.ts +3 -2
  388. package/dist/structure/measure.js +6 -5
  389. package/dist/structure/parse.d.ts +3 -2
  390. package/dist/structure/parse.js +419 -438
  391. package/dist/structure/partial-occupancy.d.ts +0 -1
  392. package/dist/structure/partial-occupancy.js +1 -1
  393. package/dist/structure/pbc.d.ts +1 -1
  394. package/dist/structure/pbc.js +190 -13
  395. package/dist/structure/polyhedra.d.ts +41 -0
  396. package/dist/structure/polyhedra.js +602 -0
  397. package/dist/structure/site.d.ts +4 -0
  398. package/dist/structure/site.js +1 -0
  399. package/dist/structure/supercell.js +3 -2
  400. package/dist/structure/validation.js +5 -6
  401. package/dist/symmetry/SymmetryElementControls.svelte +69 -0
  402. package/dist/symmetry/SymmetryElementControls.svelte.d.ts +9 -0
  403. package/dist/symmetry/SymmetryElements.svelte +354 -0
  404. package/dist/symmetry/SymmetryElements.svelte.d.ts +24 -0
  405. package/dist/symmetry/SymmetryStats.svelte +113 -8
  406. package/dist/symmetry/WyckoffTable.svelte +68 -7
  407. package/dist/symmetry/WyckoffTable.svelte.d.ts +3 -0
  408. package/dist/symmetry/cell-transform.js +7 -14
  409. package/dist/symmetry/index.d.ts +14 -4
  410. package/dist/symmetry/index.js +291 -72
  411. package/dist/symmetry/spacegroups.d.ts +12 -1
  412. package/dist/symmetry/spacegroups.js +63 -14
  413. package/dist/symmetry/symmetry-elements.d.ts +33 -0
  414. package/dist/symmetry/symmetry-elements.js +521 -0
  415. package/dist/symmetry/wyckoff-db.d.ts +9 -0
  416. package/dist/symmetry/wyckoff-db.js +87 -0
  417. package/dist/table/HeatmapTable.svelte +66 -25
  418. package/dist/table/HeatmapTable.svelte.d.ts +1 -1
  419. package/dist/table/index.d.ts +1 -3
  420. package/dist/table/index.js +1 -1
  421. package/dist/theme/index.js +8 -8
  422. package/dist/tooltip/KCoords.svelte +45 -0
  423. package/dist/tooltip/KCoords.svelte.d.ts +8 -0
  424. package/dist/tooltip/index.d.ts +1 -0
  425. package/dist/tooltip/index.js +1 -0
  426. package/dist/trajectory/Trajectory.svelte +123 -100
  427. package/dist/trajectory/Trajectory.svelte.d.ts +11 -22
  428. package/dist/trajectory/TrajectoryExportPane.svelte +17 -25
  429. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +4 -5
  430. package/dist/trajectory/TrajectoryInfoPane.svelte +5 -3
  431. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +3 -2
  432. package/dist/trajectory/constants.js +6 -2
  433. package/dist/trajectory/extract.js +17 -37
  434. package/dist/trajectory/format-detect.d.ts +1 -1
  435. package/dist/trajectory/format-detect.js +27 -19
  436. package/dist/trajectory/frame-reader.d.ts +0 -1
  437. package/dist/trajectory/frame-reader.js +63 -162
  438. package/dist/trajectory/helpers.d.ts +10 -2
  439. package/dist/trajectory/helpers.js +56 -36
  440. package/dist/trajectory/index.js +1 -1
  441. package/dist/trajectory/parse/ase.d.ts +9 -1
  442. package/dist/trajectory/parse/ase.js +47 -32
  443. package/dist/trajectory/parse/diagnostics.d.ts +3 -0
  444. package/dist/trajectory/parse/diagnostics.js +14 -0
  445. package/dist/trajectory/parse/hdf5.js +1 -1
  446. package/dist/trajectory/parse/index.d.ts +1 -1
  447. package/dist/trajectory/parse/index.js +65 -105
  448. package/dist/trajectory/parse/lammps.d.ts +0 -2
  449. package/dist/trajectory/parse/lammps.js +8 -6
  450. package/dist/trajectory/parse/pymatgen.d.ts +2 -0
  451. package/dist/trajectory/parse/pymatgen.js +74 -0
  452. package/dist/trajectory/parse/vasp.js +38 -18
  453. package/dist/trajectory/parse/xyz.d.ts +13 -1
  454. package/dist/trajectory/parse/xyz.js +102 -94
  455. package/dist/trajectory/plotting.d.ts +1 -2
  456. package/dist/trajectory/plotting.js +16 -113
  457. package/dist/utils.d.ts +2 -0
  458. package/dist/utils.js +7 -5
  459. package/dist/xrd/XrdPlot.svelte +16 -30
  460. package/dist/xrd/broadening.d.ts +2 -1
  461. package/dist/xrd/calc-xrd.js +18 -20
  462. package/dist/xrd/index.d.ts +2 -2
  463. package/dist/xrd/parse.js +2 -2
  464. package/package.json +43 -26
  465. package/dist/element/data.json +0 -11864
  466. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  467. package/dist/fermi-surface/marching-cubes.js +0 -2
  468. package/dist/plot/PlotControls.svelte.d.ts +0 -4
  469. package/dist/plot/axis-utils.d.ts +0 -19
  470. package/dist/plot/axis-utils.js +0 -78
  471. package/dist/plot/defaults.d.ts +0 -19
  472. package/dist/plot/defaults.js +0 -9
  473. package/dist/plot/fill-utils.d.ts +0 -46
  474. package/dist/plot/fill-utils.js +0 -322
  475. package/dist/plot/hover-lock.svelte.d.ts +0 -14
  476. package/dist/plot/hover-lock.svelte.js +0 -46
  477. package/dist/plot/interactions.d.ts +0 -12
  478. package/dist/plot/interactions.js +0 -101
  479. package/dist/plot/scales.d.ts +0 -48
  480. package/dist/plot/svg.d.ts +0 -1
  481. package/dist/plot/svg.js +0 -11
  482. package/dist/plot/utils/series-visibility.d.ts +0 -15
  483. package/dist/plot/utils.d.ts +0 -1
  484. package/dist/plot/utils.js +0 -14
  485. /package/dist/plot/{PortalSelect.svelte.d.ts → core/components/PortalSelect.svelte.d.ts} +0 -0
  486. /package/dist/plot/{binned-scatter-types.js → scatter/binned-scatter-types.js} +0 -0
@@ -5,17 +5,21 @@
5
5
  import TemperatureSlider from '../convex-hull/TemperatureSlider.svelte'
6
6
  import type { PhaseData } from '../convex-hull/types'
7
7
  import Spinner from '../feedback/Spinner.svelte'
8
+ import type { ExportSection } from '../io'
9
+ import ExportPane from '../io/ExportPane.svelte'
8
10
  import { export_svg_as_png, export_svg_as_svg } from '../io/export'
9
- import { download } from '../io/fetch'
10
- import DraggablePane from '../overlays/DraggablePane.svelte'
11
11
  import { ColorBar, ScatterPlot } from '../plot'
12
- import { constrain_tooltip_position } from '../plot/layout'
13
- import type { DataSeries, UserContentProps } from '../plot/types'
12
+ import { constrain_tooltip_position } from '../plot/core/layout'
13
+ import type { DataSeries, UserContentProps } from '../plot/core/types'
14
14
  import { sanitize_html } from '../sanitize'
15
- import { onDestroy } from 'svelte'
16
15
  import { SvelteMap } from 'svelte/reactivity'
17
16
  import { compute_chempot_async } from './async-compute.svelte'
18
17
  import { get_chempot_color_bar_config, make_chempot_color_scale } from './color'
18
+ import {
19
+ CHEMPOT_COLOR_MODE_OPTIONS,
20
+ CHEMPOT_COLOR_SCALE_OPTIONS,
21
+ create_chempot_overrides,
22
+ } from './controls-state.svelte'
19
23
  import {
20
24
  apply_element_padding,
21
25
  best_form_energy_for_formula,
@@ -26,9 +30,15 @@
26
30
  orthonormal_2d,
27
31
  pad_domain_points,
28
32
  } from './compute'
33
+ import { export_json_file, get_json_string } from './export'
29
34
  import { with_hover_pointer } from './pointer'
30
35
  import { get_temp_filter_payload, get_valid_temperature } from './temperature'
31
- import type { ChemPotDiagramConfig, ChemPotDiagramData, ChemPotHoverInfo } from './types'
36
+ import type {
37
+ ChemPotColorMode,
38
+ ChemPotDiagramConfig,
39
+ ChemPotDiagramData,
40
+ ChemPotHoverInfo,
41
+ } from './types'
32
42
  import { CHEMPOT_DEFAULTS } from './types'
33
43
 
34
44
  let {
@@ -42,6 +52,9 @@
42
52
  max_interpolation_gap = CHEMPOT_DEFAULTS.max_interpolation_gap,
43
53
  hover_info = $bindable<ChemPotHoverInfo | null>(null),
44
54
  render_local_tooltip = true,
55
+ wrapper = $bindable(),
56
+ fullscreen = $bindable(false),
57
+ export_pane_open = $bindable(false),
45
58
  }: {
46
59
  entries: PhaseData[]
47
60
  config?: ChemPotDiagramConfig
@@ -52,49 +65,35 @@
52
65
  max_interpolation_gap?: number
53
66
  hover_info?: ChemPotHoverInfo | null
54
67
  render_local_tooltip?: boolean
68
+ // bindable: plot wrapper element (used for export and pointer hit-testing)
69
+ wrapper?: HTMLDivElement
70
+ // bindable: fullscreen state (managed by the internal ScatterPlot)
71
+ fullscreen?: boolean
72
+ // bindable: whether the export pane is currently open
73
+ export_pane_open?: boolean
55
74
  } = $props()
56
75
  let container_width = $state(0)
57
76
  const base_aspect_ratio = $derived(height > 0 && width > 0 ? height / width : 1)
58
77
  const render_width = $derived(container_width > 0 ? container_width : width)
59
78
  const render_height = $derived(Math.round(render_width * base_aspect_ratio))
60
79
 
61
- // === Control overrides ===
62
- let formal_chempots_override = $state<boolean | null>(null)
63
- let label_stable_override = $state<boolean | null>(null)
64
- let element_padding_override = $state<number | null>(null)
65
- let default_min_limit_override = $state<number | null>(null)
66
- const formal_chempots = $derived(
67
- formal_chempots_override ??
68
- (config.formal_chempots ?? CHEMPOT_DEFAULTS.formal_chempots),
69
- )
70
- const label_stable = $derived(
71
- label_stable_override ?? (config.label_stable ?? CHEMPOT_DEFAULTS.label_stable),
72
- )
73
- const element_padding = $derived(
74
- element_padding_override ??
75
- (config.element_padding ?? CHEMPOT_DEFAULTS.element_padding),
76
- )
77
- const default_min_limit = $derived(
78
- default_min_limit_override ??
79
- (config.default_min_limit ?? CHEMPOT_DEFAULTS.default_min_limit),
80
- )
81
- let color_mode_override = $state<
82
- NonNullable<ChemPotDiagramConfig[`color_mode`]> | null
83
- >(
84
- null,
85
- )
86
- let color_scale_override = $state<D3InterpolateName | null>(null)
87
- let reverse_color_scale_override = $state<boolean | null>(null)
88
- const color_mode = $derived(
89
- color_mode_override ?? (config.color_mode ?? CHEMPOT_DEFAULTS.color_mode),
90
- )
91
- const color_scale = $derived(
92
- color_scale_override ?? (config.color_scale ?? CHEMPOT_DEFAULTS.color_scale),
93
- )
94
- const reverse_color_scale = $derived(
95
- reverse_color_scale_override ??
96
- (config.reverse_color_scale ?? CHEMPOT_DEFAULTS.reverse_color_scale),
97
- )
80
+ // === Control overrides (override ?? config ?? default, cleared by Reset) ===
81
+ const overrides = create_chempot_overrides(() => config, [
82
+ `formal_chempots`,
83
+ `label_stable`,
84
+ `element_padding`,
85
+ `default_min_limit`,
86
+ `color_mode`,
87
+ `color_scale`,
88
+ `reverse_color_scale`,
89
+ ])
90
+ const formal_chempots = $derived(overrides.resolve(`formal_chempots`))
91
+ const label_stable = $derived(overrides.resolve(`label_stable`))
92
+ const element_padding = $derived(overrides.resolve(`element_padding`))
93
+ const default_min_limit = $derived(overrides.resolve(`default_min_limit`))
94
+ const color_mode = $derived(overrides.resolve(`color_mode`))
95
+ const color_scale = $derived(overrides.resolve(`color_scale`))
96
+ const reverse_color_scale = $derived(overrides.resolve(`reverse_color_scale`))
98
97
  const arity_colors = [`#3498db`, `#2ecc71`, `#e67e22`, `#9b59b6`] as const
99
98
  const show_tooltip = $derived(config.show_tooltip ?? CHEMPOT_DEFAULTS.show_tooltip)
100
99
  const effective_config = $derived({
@@ -125,15 +124,6 @@
125
124
  has_temp_data && available_temperatures.length > 0,
126
125
  )
127
126
 
128
- function reset_controls(): void {
129
- formal_chempots_override = null
130
- label_stable_override = null
131
- element_padding_override = null
132
- default_min_limit_override = null
133
- color_mode_override = null
134
- color_scale_override = null
135
- reverse_color_scale_override = null
136
- }
137
127
 
138
128
  // === Diagram computation (off main thread via Web Worker) ===
139
129
  let diagram_data = $state<ChemPotDiagramData | null>(null)
@@ -199,10 +189,7 @@
199
189
  matching_entry_count: number
200
190
  min_energy_per_atom: number | null
201
191
  }
202
- type NumericColorMode = Exclude<
203
- NonNullable<ChemPotDiagramConfig[`color_mode`]>,
204
- `none` | `arity`
205
- >
192
+ type NumericColorMode = Exclude<ChemPotColorMode, `none` | `arity`>
206
193
 
207
194
  const raw_el_refs = $derived(
208
195
  get_min_entries_and_el_refs(temp_filtered_entries).el_refs,
@@ -342,8 +329,8 @@
342
329
  const result: { formula: string; data_x: number; data_y: number }[] = []
343
330
  for (const [formula, pts] of Object.entries(draw_domains)) {
344
331
  if (pts.length === 0) continue
345
- const center_x = pts.reduce((s, p) => s + p[0], 0) / pts.length
346
- const center_y = pts.reduce((s, p) => s + p[1], 0) / pts.length
332
+ const center_x = pts.reduce((sum, point) => sum + point[0], 0) / pts.length
333
+ const center_y = pts.reduce((sum, point) => sum + point[1], 0) / pts.length
347
334
  let offset_x = 0
348
335
  let offset_y = 0
349
336
  if (pts.length >= 2) {
@@ -368,7 +355,7 @@
368
355
  pts: number[][],
369
356
  event: MouseEvent,
370
357
  ): void {
371
- const bounds = scatter_wrapper?.getBoundingClientRect()
358
+ const bounds = wrapper?.getBoundingClientRect()
372
359
  hover_info = with_hover_pointer<ChemPotHoverInfo>(
373
360
  {
374
361
  formula,
@@ -428,52 +415,45 @@
428
415
  })
429
416
 
430
417
  // === Export ===
431
- let scatter_wrapper = $state<HTMLDivElement>()
432
- let export_pane_open = $state(false)
433
- let copy_status = $state(false)
434
- let copy_timeout_id: ReturnType<typeof setTimeout> | null = null
435
-
436
418
  const get_svg_element = (): SVGSVGElement | null =>
437
- scatter_wrapper?.querySelector<SVGSVGElement>(`svg`) ?? null
438
-
439
- function get_json_string(): string {
440
- return JSON.stringify(
441
- {
442
- elements: diagram_data?.elements ?? [],
443
- domains: draw_domains,
444
- lims: diagram_data?.lims ?? [],
445
- },
446
- null,
447
- 2,
448
- )
449
- }
450
-
451
- function export_json_file(): void {
452
- download(
453
- get_json_string(),
454
- `chempot-${plot_elements.join(`-`)}.json`,
455
- `application/json`,
456
- )
457
- }
419
+ wrapper?.querySelector<SVGSVGElement>(`svg`) ?? null
458
420
 
459
- async function copy_json(): Promise<void> {
460
- try {
461
- await navigator.clipboard.writeText(get_json_string())
462
- copy_status = true
463
- } catch (err) {
464
- copy_status = false
465
- console.error(`Failed to copy JSON to clipboard:`, err)
466
- }
467
- if (copy_timeout_id !== null) clearTimeout(copy_timeout_id)
468
- copy_timeout_id = setTimeout(() => {
469
- copy_status = false
470
- copy_timeout_id = null
471
- }, 1000)
472
- }
473
-
474
- onDestroy(() => {
475
- if (copy_timeout_id !== null) clearTimeout(copy_timeout_id)
421
+ const export_basename = $derived(`chempot-${plot_elements.join(`-`)}`)
422
+ const json_payload = $derived({
423
+ elements: diagram_data?.elements ?? [],
424
+ domains: draw_domains,
425
+ lims: diagram_data?.lims ?? [],
476
426
  })
427
+
428
+ const export_sections = $derived<ExportSection[]>([
429
+ {
430
+ title: `Export Image`,
431
+ items: [
432
+ {
433
+ label: `SVG`,
434
+ on_download: () => {
435
+ const svg = get_svg_element()
436
+ if (svg) export_svg_as_svg(svg, `${export_basename}.svg`)
437
+ },
438
+ },
439
+ {
440
+ label: `PNG`,
441
+ on_download: () => {
442
+ const svg = get_svg_element()
443
+ if (svg) export_svg_as_png(svg, `${export_basename}.png`)
444
+ },
445
+ },
446
+ ],
447
+ },
448
+ {
449
+ title: `Export Data`,
450
+ items: [{
451
+ label: `JSON`,
452
+ on_download: () => export_json_file(json_payload, export_basename),
453
+ copy_text: () => get_json_string(json_payload),
454
+ }],
455
+ },
456
+ ])
477
457
  </script>
478
458
 
479
459
  {#snippet domain_labels(props: UserContentProps)}
@@ -490,10 +470,9 @@
490
470
  {/snippet}
491
471
 
492
472
  {#snippet export_toggle()}
493
- <DraggablePane
494
- bind:show={export_pane_open}
495
- open_icon="Cross"
496
- closed_icon="Export"
473
+ <ExportPane
474
+ bind:export_pane_open
475
+ sections={export_sections}
497
476
  pane_props={{ class: `chempot-export-pane` }}
498
477
  toggle_props={{
499
478
  class: `chempot-export-toggle`,
@@ -501,57 +480,7 @@
501
480
  style:
502
481
  `position: absolute; top: var(--ctrl-btn-top, 5pt); right: 36px; z-index: 10`,
503
482
  }}
504
- >
505
- <h4 id="export-image">Export Image</h4>
506
- <div class="export-row">
507
- <label>
508
- SVG
509
- <button
510
- type="button"
511
- onclick={() => {
512
- const svg = get_svg_element()
513
- if (svg) {
514
- export_svg_as_svg(svg, `chempot-${plot_elements.join(`-`)}.svg`)
515
- }
516
- }}
517
- aria-label="Download SVG"
518
- >
519
-
520
- </button>
521
- </label>
522
- <label>
523
- PNG
524
- <button
525
- type="button"
526
- onclick={() => {
527
- const svg = get_svg_element()
528
- if (svg) {
529
- export_svg_as_png(svg, `chempot-${plot_elements.join(`-`)}.png`)
530
- }
531
- }}
532
- aria-label="Download PNG"
533
- >
534
-
535
- </button>
536
- </label>
537
- </div>
538
- <h4 id="export-data">Export Data</h4>
539
- <div class="export-row">
540
- <label>
541
- JSON
542
- <button type="button" onclick={export_json_file} aria-label="Download JSON">
543
-
544
- </button>
545
- <button
546
- type="button"
547
- onclick={copy_json}
548
- aria-label="Copy JSON to clipboard"
549
- >
550
- {copy_status ? `✅` : `📋`}
551
- </button>
552
- </label>
553
- </div>
554
- </DraggablePane>
483
+ />
555
484
  {/snippet}
556
485
 
557
486
  {#snippet chempot_controls(_props: unknown)}
@@ -561,9 +490,7 @@
561
490
  <input
562
491
  type="checkbox"
563
492
  checked={formal_chempots}
564
- onchange={() => {
565
- formal_chempots_override = !formal_chempots
566
- }}
493
+ onchange={() => overrides.set(`formal_chempots`, !formal_chempots)}
567
494
  />
568
495
  </label>
569
496
  <label>
@@ -571,9 +498,7 @@
571
498
  <input
572
499
  type="checkbox"
573
500
  checked={label_stable}
574
- onchange={() => {
575
- label_stable_override = !label_stable
576
- }}
501
+ onchange={() => overrides.set(`label_stable`, !label_stable)}
577
502
  />
578
503
  </label>
579
504
  <label>
@@ -583,9 +508,8 @@
583
508
  min="0"
584
509
  step="0.1"
585
510
  value={element_padding}
586
- oninput={(event) => {
587
- element_padding_override = Number(event.currentTarget.value) || 0
588
- }}
511
+ oninput={(event) =>
512
+ overrides.set(`element_padding`, Number(event.currentTarget.value) || 0)}
589
513
  />
590
514
  </label>
591
515
  <label>
@@ -598,9 +522,10 @@
598
522
  oninput={(event) => {
599
523
  const raw = event.currentTarget.value
600
524
  const parsed = parseFloat(raw)
601
- default_min_limit_override = raw === `` || isNaN(parsed)
602
- ? default_min_limit
603
- : parsed
525
+ overrides.set(
526
+ `default_min_limit`,
527
+ raw === `` || isNaN(parsed) ? default_min_limit : parsed,
528
+ )
604
529
  }}
605
530
  />
606
531
  </label>
@@ -608,15 +533,12 @@
608
533
  <span>Color mode:</span>
609
534
  <select
610
535
  value={color_mode}
611
- onchange={(event) => {
612
- color_mode_override = event.currentTarget.value as typeof color_mode
613
- }}
536
+ onchange={(event) =>
537
+ overrides.set(`color_mode`, event.currentTarget.value as typeof color_mode)}
614
538
  >
615
- <option value="none">None</option>
616
- <option value="energy">Energy/atom</option>
617
- <option value="formation_energy">Formation energy</option>
618
- <option value="arity">Element count</option>
619
- <option value="entries">Entry count</option>
539
+ {#each CHEMPOT_COLOR_MODE_OPTIONS as [value, label] (value)}
540
+ <option {value}>{label}</option>
541
+ {/each}
620
542
  </select>
621
543
  </label>
622
544
  {#if color_mode !== `none` && color_mode !== `arity`}
@@ -624,32 +546,24 @@
624
546
  <span>Color scale:</span>
625
547
  <select
626
548
  value={color_scale}
627
- onchange={(event) => {
628
- color_scale_override = event.currentTarget.value as D3InterpolateName
629
- }}
549
+ onchange={(event) =>
550
+ overrides.set(`color_scale`, event.currentTarget.value as D3InterpolateName)}
630
551
  >
631
- <option value="interpolateViridis">Viridis</option>
632
- <option value="interpolatePlasma">Plasma</option>
633
- <option value="interpolateInferno">Inferno</option>
634
- <option value="interpolateMagma">Magma</option>
635
- <option value="interpolateCividis">Cividis</option>
636
- <option value="interpolateTurbo">Turbo</option>
637
- <option value="interpolateRdYlBu">RdYlBu</option>
638
- <option value="interpolateSpectral">Spectral</option>
552
+ {#each CHEMPOT_COLOR_SCALE_OPTIONS as [value, label] (value)}
553
+ <option {value}>{label}</option>
554
+ {/each}
639
555
  </select>
640
556
  <span class="reverse-scale-toggle">
641
557
  <span>Reverse:</span>
642
558
  <input
643
559
  type="checkbox"
644
560
  checked={reverse_color_scale}
645
- onchange={() => {
646
- reverse_color_scale_override = !reverse_color_scale
647
- }}
561
+ onchange={() => overrides.set(`reverse_color_scale`, !reverse_color_scale)}
648
562
  />
649
563
  </span>
650
564
  </label>
651
565
  {/if}
652
- <button type="button" onclick={reset_controls}>Reset defaults</button>
566
+ <button type="button" onclick={overrides.reset}>Reset defaults</button>
653
567
  {/snippet}
654
568
 
655
569
  {#if diagram_computing}
@@ -675,7 +589,7 @@
675
589
  onpointerdown={(event) => {
676
590
  const target = event.target
677
591
  if (!locked_hover_formula) return
678
- const is_background_click = target === scatter_wrapper ||
592
+ const is_background_click = target === wrapper ||
679
593
  (target instanceof SVGElement &&
680
594
  target.closest(`g[data-series-id]`) === null)
681
595
  if (is_background_click) {
@@ -685,7 +599,8 @@
685
599
  >
686
600
  {@render export_toggle()}
687
601
  <ScatterPlot
688
- bind:wrapper={scatter_wrapper}
602
+ bind:wrapper
603
+ bind:fullscreen
689
604
  {series}
690
605
  bind:x_axis
691
606
  bind:y_axis
@@ -768,15 +683,6 @@
768
683
  margin: 4pt 0;
769
684
  font-size: 0.95em;
770
685
  }
771
- .chempot-diagram-2d :global(.export-row) {
772
- display: flex;
773
- flex-wrap: wrap;
774
- gap: 4pt 10pt;
775
- margin: 0 0 4pt;
776
- }
777
- .chempot-diagram-2d :global(.export-row > label) {
778
- margin: 0;
779
- }
780
686
  .chempot-diagram-2d :global(.chempot-temp-slider) {
781
687
  top: var(--chempot-temp-slider-top, calc(1ex + 108px));
782
688
  right: 4px;
@@ -10,7 +10,10 @@ type $$ComponentProps = {
10
10
  max_interpolation_gap?: number;
11
11
  hover_info?: ChemPotHoverInfo | null;
12
12
  render_local_tooltip?: boolean;
13
+ wrapper?: HTMLDivElement;
14
+ fullscreen?: boolean;
15
+ export_pane_open?: boolean;
13
16
  };
14
- declare const ChemPotDiagram2D: import("svelte").Component<$$ComponentProps, {}, "temperature" | "height" | "width" | "hover_info">;
17
+ declare const ChemPotDiagram2D: import("svelte").Component<$$ComponentProps, {}, "height" | "width" | "temperature" | "fullscreen" | "wrapper" | "export_pane_open" | "hover_info">;
15
18
  type ChemPotDiagram2D = ReturnType<typeof ChemPotDiagram2D>;
16
19
  export default ChemPotDiagram2D;