matterviz 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (527) hide show
  1. package/dist/EmptyState.svelte +10 -4
  2. package/dist/FilePicker.svelte +12 -14
  3. package/dist/Icon.svelte +7 -4
  4. package/dist/MillerIndexInput.svelte +2 -2
  5. package/dist/app.css +53 -0
  6. package/dist/brillouin/BrillouinZone.svelte +132 -219
  7. package/dist/brillouin/BrillouinZone.svelte.d.ts +9 -20
  8. package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
  9. package/dist/brillouin/BrillouinZoneExportPane.svelte +47 -96
  10. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
  11. package/dist/brillouin/BrillouinZoneInfoPane.svelte +15 -42
  12. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +2 -3
  13. package/dist/brillouin/BrillouinZoneScene.svelte +63 -230
  14. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +3 -23
  15. package/dist/brillouin/ReciprocalVectors.svelte +39 -0
  16. package/dist/brillouin/ReciprocalVectors.svelte.d.ts +9 -0
  17. package/dist/brillouin/compute.d.ts +2 -0
  18. package/dist/brillouin/compute.js +80 -77
  19. package/dist/brillouin/geometry.d.ts +8 -0
  20. package/dist/brillouin/geometry.js +57 -0
  21. package/dist/brillouin/index.d.ts +2 -0
  22. package/dist/brillouin/index.js +2 -0
  23. package/dist/brillouin/types.d.ts +2 -2
  24. package/dist/chempot-diagram/ChemPotDiagram.svelte +33 -38
  25. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +1 -1
  26. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +143 -246
  27. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +4 -1
  28. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +652 -976
  29. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +7 -1
  30. package/dist/chempot-diagram/async-compute.svelte.js +1 -1
  31. package/dist/chempot-diagram/color.d.ts +3 -6
  32. package/dist/chempot-diagram/color.js +5 -5
  33. package/dist/chempot-diagram/compute.d.ts +3 -3
  34. package/dist/chempot-diagram/compute.js +3 -1
  35. package/dist/chempot-diagram/controls-state.svelte.d.ts +10 -0
  36. package/dist/chempot-diagram/controls-state.svelte.js +42 -0
  37. package/dist/chempot-diagram/export.d.ts +47 -0
  38. package/dist/chempot-diagram/export.js +133 -0
  39. package/dist/chempot-diagram/index.d.ts +1 -0
  40. package/dist/chempot-diagram/index.js +1 -0
  41. package/dist/chempot-diagram/pointer.d.ts +0 -10
  42. package/dist/chempot-diagram/pointer.js +4 -4
  43. package/dist/chempot-diagram/types.d.ts +3 -3
  44. package/dist/colors/index.d.ts +0 -4
  45. package/dist/colors/index.js +21 -22
  46. package/dist/composition/BarChart.svelte +37 -31
  47. package/dist/composition/BubbleChart.svelte +17 -17
  48. package/dist/composition/Composition.svelte +7 -11
  49. package/dist/composition/Formula.svelte +18 -25
  50. package/dist/composition/FormulaFilter.svelte +96 -98
  51. package/dist/composition/PieChart.svelte +60 -46
  52. package/dist/composition/chem-sys.js +3 -2
  53. package/dist/composition/format.js +4 -3
  54. package/dist/composition/index.d.ts +2 -0
  55. package/dist/composition/index.js +14 -0
  56. package/dist/composition/parse.d.ts +2 -3
  57. package/dist/composition/parse.js +27 -28
  58. package/dist/constants.js +11 -9
  59. package/dist/controls.d.ts +1 -0
  60. package/dist/controls.js +0 -1
  61. package/dist/convex-hull/ConvexHull.svelte +20 -25
  62. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -4
  63. package/dist/convex-hull/ConvexHull2D.svelte +176 -256
  64. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  65. package/dist/convex-hull/ConvexHull3D.svelte +269 -804
  66. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  67. package/dist/convex-hull/ConvexHull4D.svelte +236 -755
  68. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  69. package/dist/convex-hull/ConvexHullChrome.svelte +264 -0
  70. package/dist/convex-hull/ConvexHullChrome.svelte.d.ts +30 -0
  71. package/dist/convex-hull/ConvexHullControls.svelte +128 -49
  72. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +7 -6
  73. package/dist/convex-hull/ConvexHullInfoPane.svelte +18 -5
  74. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +6 -5
  75. package/dist/convex-hull/ConvexHullStats.svelte +210 -351
  76. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +3 -1
  77. package/dist/convex-hull/ConvexHullTooltip.svelte +16 -14
  78. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +2 -1
  79. package/dist/convex-hull/GasPressureControls.svelte +5 -12
  80. package/dist/convex-hull/StructurePopup.svelte +17 -21
  81. package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
  82. package/dist/convex-hull/TemperatureSlider.svelte +4 -10
  83. package/dist/convex-hull/barycentric-coords.d.ts +2 -4
  84. package/dist/convex-hull/barycentric-coords.js +6 -33
  85. package/dist/convex-hull/canvas-interactions.svelte.d.ts +79 -0
  86. package/dist/convex-hull/canvas-interactions.svelte.js +279 -0
  87. package/dist/convex-hull/helpers.d.ts +47 -17
  88. package/dist/convex-hull/helpers.js +186 -101
  89. package/dist/convex-hull/hull-state.svelte.d.ts +44 -0
  90. package/dist/convex-hull/hull-state.svelte.js +124 -0
  91. package/dist/convex-hull/index.d.ts +9 -7
  92. package/dist/convex-hull/index.js +7 -2
  93. package/dist/convex-hull/thermodynamics.js +109 -937
  94. package/dist/convex-hull/types.d.ts +12 -4
  95. package/dist/convex-hull/types.js +12 -0
  96. package/dist/coordination/CoordinationBarPlot.svelte +41 -43
  97. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +1 -1
  98. package/dist/coordination/calc-coordination.d.ts +1 -1
  99. package/dist/coordination/calc-coordination.js +28 -25
  100. package/dist/element/BohrAtom.svelte +6 -8
  101. package/dist/element/ElementHeading.svelte +4 -1
  102. package/dist/element/ElementPhoto.svelte +11 -9
  103. package/dist/element/ElementStats.svelte +12 -10
  104. package/dist/element/ElementTile.svelte +24 -29
  105. package/dist/element/ElementTile.svelte.d.ts +1 -1
  106. package/dist/element/Nucleus.svelte +4 -2
  107. package/dist/element/data.d.ts +1 -2
  108. package/dist/element/helpers.d.ts +4 -0
  109. package/dist/element/helpers.js +18 -0
  110. package/dist/element/index.d.ts +1 -0
  111. package/dist/element/index.js +3 -0
  112. package/dist/feedback/DragOverlay.svelte +5 -3
  113. package/dist/feedback/DragOverlay.svelte.d.ts +2 -1
  114. package/dist/feedback/StatusMessage.svelte +20 -7
  115. package/dist/fermi-surface/FermiSlice.svelte +21 -18
  116. package/dist/fermi-surface/FermiSurface.svelte +78 -165
  117. package/dist/fermi-surface/FermiSurface.svelte.d.ts +9 -20
  118. package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
  119. package/dist/fermi-surface/FermiSurfaceScene.svelte +93 -272
  120. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +3 -23
  121. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
  122. package/dist/fermi-surface/compute.js +14 -13
  123. package/dist/fermi-surface/export.js +4 -15
  124. package/dist/fermi-surface/index.d.ts +0 -1
  125. package/dist/fermi-surface/index.js +0 -1
  126. package/dist/fermi-surface/parse.d.ts +1 -1
  127. package/dist/fermi-surface/parse.js +84 -97
  128. package/dist/fermi-surface/types.d.ts +2 -2
  129. package/dist/heatmap-matrix/HeatmapMatrix.svelte +161 -185
  130. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +6 -5
  131. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +12 -9
  132. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +5 -5
  133. package/dist/heatmap-matrix/index.d.ts +8 -2
  134. package/dist/icons.d.ts +4 -0
  135. package/dist/icons.js +4 -0
  136. package/dist/index.d.ts +1 -0
  137. package/dist/index.js +1 -0
  138. package/dist/io/ExportPane.svelte +170 -0
  139. package/dist/io/ExportPane.svelte.d.ts +17 -0
  140. package/dist/io/decompress.d.ts +2 -1
  141. package/dist/io/decompress.js +22 -36
  142. package/dist/io/export.d.ts +9 -1
  143. package/dist/io/export.js +37 -29
  144. package/dist/io/fetch.d.ts +2 -4
  145. package/dist/io/fetch.js +0 -11
  146. package/dist/io/file-drop.d.ts +7 -0
  147. package/dist/io/file-drop.js +13 -0
  148. package/dist/io/index.d.ts +1 -0
  149. package/dist/io/index.js +3 -0
  150. package/dist/io/is-binary.d.ts +9 -0
  151. package/dist/io/is-binary.js +45 -1
  152. package/dist/io/types.d.ts +13 -0
  153. package/dist/io/url-drop.js +13 -25
  154. package/dist/isosurface/Isosurface.svelte +17 -23
  155. package/dist/isosurface/IsosurfaceControls.svelte +37 -42
  156. package/dist/isosurface/parse-vaspwave.d.ts +3 -0
  157. package/dist/isosurface/parse-vaspwave.js +138 -0
  158. package/dist/isosurface/parse.js +50 -48
  159. package/dist/labels.d.ts +6 -2
  160. package/dist/labels.js +44 -14
  161. package/dist/layout/FullscreenButton.svelte +34 -0
  162. package/dist/layout/FullscreenButton.svelte.d.ts +10 -0
  163. package/dist/layout/FullscreenToggle.svelte +12 -12
  164. package/dist/layout/InfoCard.svelte +7 -18
  165. package/dist/layout/InfoTag.svelte +1 -3
  166. package/dist/layout/NumberRangeInput.svelte +46 -0
  167. package/dist/layout/NumberRangeInput.svelte.d.ts +12 -0
  168. package/dist/layout/PropertyFilter.svelte +2 -6
  169. package/dist/layout/SettingsSection.svelte +21 -17
  170. package/dist/layout/SubpageGrid.svelte +3 -1
  171. package/dist/layout/ViewerChrome.svelte +115 -0
  172. package/dist/layout/ViewerChrome.svelte.d.ts +18 -0
  173. package/dist/layout/fullscreen.d.ts +4 -0
  174. package/dist/layout/fullscreen.js +3 -5
  175. package/dist/layout/fullscreen.svelte.d.ts +8 -0
  176. package/dist/layout/fullscreen.svelte.js +36 -0
  177. package/dist/layout/index.d.ts +4 -0
  178. package/dist/layout/index.js +4 -0
  179. package/dist/layout/json-tree/JsonNode.svelte +8 -11
  180. package/dist/layout/json-tree/JsonTree.svelte +53 -77
  181. package/dist/layout/json-tree/JsonValue.svelte +7 -15
  182. package/dist/layout/json-tree/utils.js +14 -23
  183. package/dist/math.d.ts +9 -3
  184. package/dist/math.js +37 -21
  185. package/dist/overlays/ContextMenu.svelte +4 -2
  186. package/dist/overlays/CopyButton.svelte +11 -5
  187. package/dist/overlays/DragControlTab.svelte +6 -1
  188. package/dist/overlays/DraggablePane.svelte +81 -26
  189. package/dist/overlays/DraggablePane.svelte.d.ts +1 -0
  190. package/dist/overlays/GlassChip.svelte +30 -0
  191. package/dist/overlays/GlassChip.svelte.d.ts +8 -0
  192. package/dist/overlays/InfoPaneCards.svelte +11 -23
  193. package/dist/overlays/index.d.ts +11 -0
  194. package/dist/overlays/index.js +26 -0
  195. package/dist/overlays/portal.d.ts +2 -0
  196. package/dist/overlays/portal.js +14 -0
  197. package/dist/periodic-table/PeriodicTable.svelte +115 -146
  198. package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
  199. package/dist/periodic-table/PeriodicTableControls.svelte +11 -63
  200. package/dist/periodic-table/TableInset.svelte +9 -4
  201. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +50 -71
  202. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
  203. package/dist/phase-diagram/PhaseDiagramControls.svelte +73 -96
  204. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +4 -3
  205. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +4 -2
  206. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +2 -3
  207. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +49 -134
  208. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +3 -4
  209. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
  210. package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
  211. package/dist/phase-diagram/build-diagram.js +3 -3
  212. package/dist/phase-diagram/colors.js +1 -1
  213. package/dist/phase-diagram/diagram-input.d.ts +1 -2
  214. package/dist/phase-diagram/parse.d.ts +2 -1
  215. package/dist/phase-diagram/parse.js +15 -15
  216. package/dist/phase-diagram/svg-to-diagram.js +21 -15
  217. package/dist/phase-diagram/utils.js +2 -3
  218. package/dist/plot/bar/BarPlot.svelte +494 -692
  219. package/dist/plot/bar/BarPlot.svelte.d.ts +9 -15
  220. package/dist/plot/bar/BarPlotControls.svelte +1 -3
  221. package/dist/plot/bar/BarPlotControls.svelte.d.ts +5 -7
  222. package/dist/plot/bar/SpacegroupBarPlot.svelte +31 -37
  223. package/dist/plot/bar/data.d.ts +5 -4
  224. package/dist/plot/bar/data.js +2 -1
  225. package/dist/plot/box/BoxPlot.svelte +361 -439
  226. package/dist/plot/box/BoxPlot.svelte.d.ts +6 -3
  227. package/dist/plot/box/BoxPlotControls.svelte.d.ts +1 -1
  228. package/dist/plot/box/Violin.svelte.d.ts +2 -1
  229. package/dist/plot/box/box-plot.d.ts +3 -2
  230. package/dist/plot/box/box-plot.js +6 -3
  231. package/dist/plot/box/kde.d.ts +2 -1
  232. package/dist/plot/box/kde.js +4 -4
  233. package/dist/plot/core/auto-place.d.ts +1 -1
  234. package/dist/plot/core/auto-place.js +5 -2
  235. package/dist/plot/core/axis-utils.d.ts +12 -7
  236. package/dist/plot/core/axis-utils.js +48 -48
  237. package/dist/plot/core/components/AxisLabel.svelte +82 -20
  238. package/dist/plot/core/components/AxisLabel.svelte.d.ts +1 -0
  239. package/dist/plot/core/components/ColorBar.svelte +106 -111
  240. package/dist/plot/core/components/ColorBar.svelte.d.ts +5 -4
  241. package/dist/plot/core/components/ColorScaleSelect.svelte +1 -1
  242. package/dist/plot/core/components/FillArea.svelte +10 -17
  243. package/dist/plot/core/components/HierarchyControls.svelte +249 -0
  244. package/dist/plot/{sunburst/SunburstControls.svelte.d.ts → core/components/HierarchyControls.svelte.d.ts} +12 -8
  245. package/dist/plot/core/components/InteractiveAxisLabel.svelte +1 -1
  246. package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +1 -1
  247. package/dist/plot/core/components/Line.svelte +21 -11
  248. package/dist/plot/core/components/Line.svelte.d.ts +5 -2
  249. package/dist/plot/core/components/PlotAxis.svelte +42 -18
  250. package/dist/plot/core/components/PlotAxis.svelte.d.ts +2 -1
  251. package/dist/plot/core/components/PlotControls.svelte +65 -41
  252. package/dist/plot/core/components/PlotControls.svelte.d.ts +1 -1
  253. package/dist/plot/core/components/PlotLegend.svelte +31 -35
  254. package/dist/plot/core/components/PlotMarginals.svelte +616 -0
  255. package/dist/plot/core/components/PlotMarginals.svelte.d.ts +15 -0
  256. package/dist/plot/core/components/PlotTooltip.svelte +1 -1
  257. package/dist/plot/core/components/PortalSelect.svelte +4 -8
  258. package/dist/plot/core/components/ReferenceLine.svelte +27 -24
  259. package/dist/plot/core/components/ReferenceLine3D.svelte +56 -59
  260. package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +4 -4
  261. package/dist/plot/core/components/ReferencePlane.svelte +9 -10
  262. package/dist/plot/core/components/ReferencePlane.svelte.d.ts +4 -4
  263. package/dist/plot/core/components/ZeroLines.svelte +4 -8
  264. package/dist/plot/core/components/ZoomRect.svelte +1 -2
  265. package/dist/plot/core/components/index.d.ts +1 -0
  266. package/dist/plot/core/components/index.js +1 -0
  267. package/dist/plot/core/data-cleaning-signal.d.ts +46 -0
  268. package/dist/plot/core/data-cleaning-signal.js +467 -0
  269. package/dist/plot/core/data-cleaning.d.ts +2 -42
  270. package/dist/plot/core/data-cleaning.js +29 -476
  271. package/dist/plot/core/data-transform.js +9 -5
  272. package/dist/plot/core/fill-utils.d.ts +7 -4
  273. package/dist/plot/core/fill-utils.js +34 -9
  274. package/dist/plot/core/index.d.ts +1 -0
  275. package/dist/plot/core/index.js +1 -0
  276. package/dist/plot/core/interactions.d.ts +5 -1
  277. package/dist/plot/core/interactions.js +14 -2
  278. package/dist/plot/core/layout.d.ts +3 -1
  279. package/dist/plot/core/layout.js +22 -13
  280. package/dist/plot/core/marginals.d.ts +170 -0
  281. package/dist/plot/core/marginals.js +436 -0
  282. package/dist/plot/core/pan-zoom.svelte.d.ts +35 -0
  283. package/dist/plot/core/pan-zoom.svelte.js +221 -0
  284. package/dist/plot/core/placed-tween.svelte.d.ts +21 -0
  285. package/dist/plot/core/placed-tween.svelte.js +68 -0
  286. package/dist/plot/core/reference-line.d.ts +10 -10
  287. package/dist/plot/core/reference-line.js +7 -7
  288. package/dist/plot/core/scales.d.ts +40 -25
  289. package/dist/plot/core/scales.js +49 -21
  290. package/dist/plot/core/svg.d.ts +2 -1
  291. package/dist/plot/core/types/fills.d.ts +101 -0
  292. package/dist/plot/core/types/fills.js +15 -0
  293. package/dist/plot/core/types/plot-3d.d.ts +87 -0
  294. package/dist/plot/core/types/plot-3d.js +4 -0
  295. package/dist/plot/core/types/reference-lines.d.ts +140 -0
  296. package/dist/plot/core/types/reference-lines.js +9 -0
  297. package/dist/plot/core/types.d.ts +47 -331
  298. package/dist/plot/core/types.js +23 -20
  299. package/dist/plot/core/utils/hierarchy-chart.d.ts +51 -0
  300. package/dist/plot/core/utils/hierarchy-chart.js +179 -0
  301. package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
  302. package/dist/plot/core/utils/hierarchy-labels.js +99 -0
  303. package/dist/plot/core/utils/label-placement.d.ts +1 -1
  304. package/dist/plot/core/utils/label-placement.js +5 -5
  305. package/dist/plot/core/utils.d.ts +2 -1
  306. package/dist/plot/histogram/Histogram.svelte +373 -631
  307. package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
  308. package/dist/plot/histogram/HistogramControls.svelte +30 -28
  309. package/dist/plot/histogram/HistogramControls.svelte.d.ts +1 -1
  310. package/dist/plot/histogram/histogram.d.ts +31 -0
  311. package/dist/plot/histogram/histogram.js +70 -0
  312. package/dist/plot/histogram/index.d.ts +1 -0
  313. package/dist/plot/histogram/index.js +1 -0
  314. package/dist/plot/index.d.ts +1 -0
  315. package/dist/plot/index.js +1 -0
  316. package/dist/plot/sankey/Sankey.svelte +79 -73
  317. package/dist/plot/sankey/Sankey.svelte.d.ts +3 -3
  318. package/dist/plot/sankey/SankeyControls.svelte +22 -16
  319. package/dist/plot/sankey/sankey.js +3 -1
  320. package/dist/plot/scatter/BinnedScatterPlot.svelte +264 -112
  321. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +11 -4
  322. package/dist/plot/scatter/ElementScatter.svelte +4 -1
  323. package/dist/plot/scatter/ScatterPlot.svelte +623 -821
  324. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +9 -15
  325. package/dist/plot/scatter/ScatterPlotControls.svelte +18 -19
  326. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
  327. package/dist/plot/scatter/ScatterPoint.svelte +16 -9
  328. package/dist/plot/scatter/binned-scatter-types.d.ts +6 -12
  329. package/dist/plot/scatter/binned-scatter-types.js +6 -1
  330. package/dist/plot/scatter/index.d.ts +1 -1
  331. package/dist/plot/scatter/scatter-data.d.ts +1 -1
  332. package/dist/plot/scatter/scatter-data.js +8 -7
  333. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +40 -60
  334. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +6 -14
  335. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +17 -15
  336. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +5 -5
  337. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +232 -234
  338. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +5 -14
  339. package/dist/plot/scatter-3d/Surface3D.svelte +9 -17
  340. package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +4 -3
  341. package/dist/plot/sunburst/Sunburst.svelte +256 -338
  342. package/dist/plot/sunburst/Sunburst.svelte.d.ts +4 -3
  343. package/dist/plot/sunburst/index.d.ts +1 -1
  344. package/dist/plot/sunburst/index.js +2 -1
  345. package/dist/plot/sunburst/render.d.ts +2 -2
  346. package/dist/plot/sunburst/render.js +47 -22
  347. package/dist/plot/sunburst/sunburst.d.ts +5 -1
  348. package/dist/plot/sunburst/sunburst.js +14 -4
  349. package/dist/plot/treemap/Treemap.svelte +907 -0
  350. package/dist/plot/treemap/Treemap.svelte.d.ts +84 -0
  351. package/dist/plot/treemap/index.d.ts +3 -0
  352. package/dist/plot/treemap/index.js +4 -0
  353. package/dist/plot/treemap/treemap.d.ts +26 -0
  354. package/dist/plot/treemap/treemap.js +99 -0
  355. package/dist/rdf/RdfPlot.svelte +22 -26
  356. package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
  357. package/dist/rdf/calc-rdf.js +4 -8
  358. package/dist/sanitize.js +14 -3
  359. package/dist/scene/SceneCamera.svelte +62 -0
  360. package/dist/scene/SceneCamera.svelte.d.ts +19 -0
  361. package/dist/scene/bind-renderer.svelte.d.ts +2 -0
  362. package/dist/scene/bind-renderer.svelte.js +22 -0
  363. package/dist/scene/index.d.ts +4 -0
  364. package/dist/scene/index.js +5 -0
  365. package/dist/scene/props.js +52 -0
  366. package/dist/scene/types.d.ts +26 -0
  367. package/dist/scene/types.js +1 -0
  368. package/dist/settings.d.ts +33 -11
  369. package/dist/settings.js +136 -51
  370. package/dist/spectral/Bands.svelte +231 -237
  371. package/dist/spectral/Bands.svelte.d.ts +3 -2
  372. package/dist/spectral/BandsAndDos.svelte +29 -29
  373. package/dist/spectral/BrillouinBandsDos.svelte +21 -29
  374. package/dist/spectral/Dos.svelte +75 -77
  375. package/dist/spectral/Dos.svelte.d.ts +2 -1
  376. package/dist/spectral/helpers.d.ts +9 -9
  377. package/dist/spectral/helpers.js +66 -70
  378. package/dist/state.svelte.d.ts +0 -7
  379. package/dist/state.svelte.js +5 -24
  380. package/dist/structure/Arrow.svelte +6 -21
  381. package/dist/structure/ArrowInstances.svelte +160 -0
  382. package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
  383. package/dist/structure/AtomLegend.svelte +115 -75
  384. package/dist/structure/AtomLegend.svelte.d.ts +1 -1
  385. package/dist/structure/Bond.svelte +31 -23
  386. package/dist/structure/CanvasTooltip.svelte +16 -3
  387. package/dist/structure/CellSelect.svelte +22 -29
  388. package/dist/structure/CellSelect.svelte.d.ts +2 -1
  389. package/dist/structure/Cylinder.svelte +24 -40
  390. package/dist/structure/InstancedAtoms.svelte +114 -0
  391. package/dist/structure/InstancedAtoms.svelte.d.ts +15 -0
  392. package/dist/structure/Lattice.svelte +85 -149
  393. package/dist/structure/SiteLabels.svelte +122 -0
  394. package/dist/structure/SiteLabels.svelte.d.ts +18 -0
  395. package/dist/structure/Structure.svelte +725 -735
  396. package/dist/structure/Structure.svelte.d.ts +8 -16
  397. package/dist/structure/StructureCarousel.svelte +630 -0
  398. package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
  399. package/dist/structure/StructureControls.svelte +298 -325
  400. package/dist/structure/StructureControls.svelte.d.ts +5 -3
  401. package/dist/structure/StructureExportPane.svelte +62 -168
  402. package/dist/structure/StructureExportPane.svelte.d.ts +4 -5
  403. package/dist/structure/StructureInfoPane.svelte +77 -69
  404. package/dist/structure/StructureInfoPane.svelte.d.ts +6 -6
  405. package/dist/structure/StructureScene.svelte +758 -600
  406. package/dist/structure/StructureScene.svelte.d.ts +24 -20
  407. package/dist/structure/StructureViewport.svelte +386 -0
  408. package/dist/structure/StructureViewport.svelte.d.ts +63 -0
  409. package/dist/structure/atom-label-placement.d.ts +18 -0
  410. package/dist/structure/atom-label-placement.js +115 -0
  411. package/dist/structure/atom-properties.d.ts +3 -1
  412. package/dist/structure/atom-properties.js +115 -54
  413. package/dist/structure/bond-order-perception.js +2 -4
  414. package/dist/structure/bonding.d.ts +12 -2
  415. package/dist/structure/bonding.js +172 -73
  416. package/dist/structure/edit-history.d.ts +6 -0
  417. package/dist/structure/edit-history.js +27 -0
  418. package/dist/structure/export.d.ts +25 -4
  419. package/dist/structure/export.js +103 -153
  420. package/dist/structure/format-detect.d.ts +1 -0
  421. package/dist/structure/format-detect.js +22 -0
  422. package/dist/structure/geometry.d.ts +9 -0
  423. package/dist/structure/geometry.js +27 -0
  424. package/dist/structure/index.d.ts +18 -1
  425. package/dist/structure/index.js +15 -2
  426. package/dist/structure/measure.d.ts +1 -1
  427. package/dist/structure/measure.js +6 -12
  428. package/dist/structure/parse.d.ts +5 -3
  429. package/dist/structure/parse.js +551 -567
  430. package/dist/structure/partial-occupancy.d.ts +0 -1
  431. package/dist/structure/partial-occupancy.js +5 -3
  432. package/dist/structure/pbc.d.ts +1 -1
  433. package/dist/structure/pbc.js +204 -51
  434. package/dist/structure/polyhedra.d.ts +40 -0
  435. package/dist/structure/polyhedra.js +587 -0
  436. package/dist/structure/site.d.ts +4 -0
  437. package/dist/structure/site.js +1 -0
  438. package/dist/structure/supercell.d.ts +1 -2
  439. package/dist/structure/supercell.js +10 -15
  440. package/dist/structure/validation.js +5 -6
  441. package/dist/symmetry/SymmetryElementControls.svelte +69 -0
  442. package/dist/symmetry/SymmetryElementControls.svelte.d.ts +9 -0
  443. package/dist/symmetry/SymmetryElements.svelte +350 -0
  444. package/dist/symmetry/SymmetryElements.svelte.d.ts +24 -0
  445. package/dist/symmetry/SymmetryStats.svelte +142 -49
  446. package/dist/symmetry/WyckoffTable.svelte +58 -16
  447. package/dist/symmetry/WyckoffTable.svelte.d.ts +3 -0
  448. package/dist/symmetry/cell-transform.js +8 -14
  449. package/dist/symmetry/index.d.ts +15 -4
  450. package/dist/symmetry/index.js +308 -81
  451. package/dist/symmetry/spacegroups.d.ts +5 -1
  452. package/dist/symmetry/spacegroups.js +18 -3
  453. package/dist/symmetry/symmetry-elements.d.ts +33 -0
  454. package/dist/symmetry/symmetry-elements.js +521 -0
  455. package/dist/symmetry/wyckoff-db.d.ts +9 -0
  456. package/dist/symmetry/wyckoff-db.js +87 -0
  457. package/dist/table/HeatmapTable.svelte +1104 -378
  458. package/dist/table/HeatmapTable.svelte.d.ts +12 -2
  459. package/dist/table/ToggleMenu.svelte +5 -12
  460. package/dist/table/index.d.ts +21 -6
  461. package/dist/table/index.js +34 -21
  462. package/dist/theme/ThemeControl.svelte +16 -8
  463. package/dist/theme/index.d.ts +1 -5
  464. package/dist/theme/index.js +4 -10
  465. package/dist/theme/themes.mjs +14 -7
  466. package/dist/tooltip/KCoords.svelte +4 -1
  467. package/dist/tooltip/TooltipContent.svelte +2 -5
  468. package/dist/trajectory/Trajectory.svelte +556 -352
  469. package/dist/trajectory/Trajectory.svelte.d.ts +10 -22
  470. package/dist/trajectory/TrajectoryError.svelte +11 -8
  471. package/dist/trajectory/TrajectoryExportPane.svelte +28 -54
  472. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +4 -5
  473. package/dist/trajectory/TrajectoryInfoPane.svelte +88 -99
  474. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +3 -2
  475. package/dist/trajectory/constants.js +6 -2
  476. package/dist/trajectory/extract.js +73 -71
  477. package/dist/trajectory/format-detect.d.ts +0 -1
  478. package/dist/trajectory/format-detect.js +13 -17
  479. package/dist/trajectory/frame-reader.d.ts +2 -1
  480. package/dist/trajectory/frame-reader.js +74 -136
  481. package/dist/trajectory/helpers.d.ts +12 -2
  482. package/dist/trajectory/helpers.js +68 -37
  483. package/dist/trajectory/index.d.ts +1 -0
  484. package/dist/trajectory/index.js +3 -0
  485. package/dist/trajectory/parse/ase.d.ts +9 -1
  486. package/dist/trajectory/parse/ase.js +47 -32
  487. package/dist/trajectory/parse/diagnostics.d.ts +3 -0
  488. package/dist/trajectory/parse/diagnostics.js +14 -0
  489. package/dist/trajectory/parse/h5-utils.d.ts +13 -0
  490. package/dist/trajectory/parse/h5-utils.js +109 -0
  491. package/dist/trajectory/parse/hdf5.d.ts +1 -1
  492. package/dist/trajectory/parse/hdf5.js +116 -106
  493. package/dist/trajectory/parse/index.d.ts +3 -4
  494. package/dist/trajectory/parse/index.js +68 -119
  495. package/dist/trajectory/parse/lammps.d.ts +0 -2
  496. package/dist/trajectory/parse/lammps.js +14 -16
  497. package/dist/trajectory/parse/pymatgen.d.ts +2 -0
  498. package/dist/trajectory/parse/pymatgen.js +74 -0
  499. package/dist/trajectory/parse/vasp.js +13 -9
  500. package/dist/trajectory/parse/vaspout-electronic.d.ts +13 -0
  501. package/dist/trajectory/parse/vaspout-electronic.js +207 -0
  502. package/dist/trajectory/parse/vaspout-h5.d.ts +5 -0
  503. package/dist/trajectory/parse/vaspout-h5.js +284 -0
  504. package/dist/trajectory/parse/xyz.d.ts +9 -21
  505. package/dist/trajectory/parse/xyz.js +38 -39
  506. package/dist/trajectory/plotting.d.ts +8 -10
  507. package/dist/trajectory/plotting.js +102 -127
  508. package/dist/utils.d.ts +4 -0
  509. package/dist/utils.js +8 -1
  510. package/dist/xrd/XrdPlot.svelte +56 -85
  511. package/dist/xrd/broadening.d.ts +2 -1
  512. package/dist/xrd/broadening.js +2 -1
  513. package/dist/xrd/calc-xrd.js +8 -15
  514. package/dist/xrd/index.d.ts +2 -2
  515. package/dist/xrd/parse.d.ts +0 -1
  516. package/dist/xrd/parse.js +56 -73
  517. package/package.json +77 -36
  518. package/dist/api/mp.d.ts +0 -6
  519. package/dist/api/mp.js +0 -22
  520. package/dist/element/data.json +0 -11864
  521. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  522. package/dist/fermi-surface/marching-cubes.js +0 -2
  523. package/dist/plot/core/hover-lock.svelte.d.ts +0 -14
  524. package/dist/plot/core/hover-lock.svelte.js +0 -45
  525. package/dist/plot/sunburst/SunburstControls.svelte +0 -200
  526. package/dist/structure/label-placement.d.ts +0 -14
  527. package/dist/structure/label-placement.js +0 -72
@@ -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, {}, "fullscreen" | "controls_open" | "x_axis" | "y_axis" | "show_grid" | "show_boundaries" | "show_labels" | "show_special_points" | "show_component_labels" | "png_dpi" | "wrapper" | "config" | "export_pane_open" | "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;
@@ -1,7 +1,9 @@
1
1
  <script lang="ts">
2
+ import type { PaneProps, PaneToggleProps } from '../overlays'
2
3
  // NOTE: Axis config objects must be reassigned (not mutated) to trigger $bindable reactivity.
3
4
  import { css_color_to_hex } from '../colors'
4
5
  import { format_num } from '../labels'
6
+ import NumberRangeInput from '../layout/NumberRangeInput.svelte'
5
7
  import SettingsSection from '../layout/SettingsSection.svelte'
6
8
  import DraggablePane from '../overlays/DraggablePane.svelte'
7
9
  import type { AxisConfig } from '../plot'
@@ -58,8 +60,8 @@
58
60
  enable_export?: boolean
59
61
  png_dpi?: number
60
62
  // Pane customization
61
- pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`]
62
- toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
63
+ pane_props?: PaneProps
64
+ toggle_props?: PaneToggleProps
63
65
  // Custom content snippets
64
66
  children?: Snippet<[{ controls_open: boolean }]>
65
67
  post_children?: Snippet<[{ controls_open: boolean }]>
@@ -77,9 +79,7 @@
77
79
  }
78
80
 
79
81
  // Helper to update nested config properties
80
- function update_nested<
81
- K extends keyof Pick<PhaseDiagramConfig, `colors` | `tie_line`>,
82
- >(
82
+ function update_nested<K extends keyof Pick<PhaseDiagramConfig, `colors` | `tie_line`>>(
83
83
  key: K,
84
84
  prop: string,
85
85
  value: string | number,
@@ -100,25 +100,6 @@
100
100
  const has_special_points = $derived((data?.special_points?.length ?? 0) > 0)
101
101
  </script>
102
102
 
103
- <!-- Reusable snippet for number + range input pairs -->
104
- {#snippet num_range(
105
- label: string,
106
- value: number,
107
- min: number,
108
- max: number,
109
- step: number,
110
- on_change: (val: number) => void,
111
- tip: string,
112
- )}
113
- {@const oninput = (ev: Event & { currentTarget: HTMLInputElement }) =>
114
- on_change(Number(ev.currentTarget.value))}
115
- <label {@attach tooltip({ content: tip })}>
116
- {label}
117
- <input type="number" {min} {max} {step} {value} {oninput} />
118
- <input type="range" {min} {max} {step} {value} {oninput} />
119
- </label>
120
- {/snippet}
121
-
122
103
  <DraggablePane
123
104
  bind:show={controls_open}
124
105
  pane_props={{
@@ -176,9 +157,7 @@
176
157
  Special Pts
177
158
  </label>
178
159
  {/if}
179
- <label
180
- {@attach tooltip({ content: `Show component labels at axes` })}
181
- >
160
+ <label {@attach tooltip({ content: `Show component labels at axes` })}>
182
161
  <input type="checkbox" bind:checked={show_component_labels} />
183
162
  Comp. Labels
184
163
  </label>
@@ -194,43 +173,40 @@
194
173
  }}
195
174
  on_reset={() => {
196
175
  update_config(`font_size`, PHASE_DIAGRAM_DEFAULTS.font_size)
197
- update_config(
198
- `special_point_radius`,
199
- PHASE_DIAGRAM_DEFAULTS.special_point_radius,
200
- )
176
+ update_config(`special_point_radius`, PHASE_DIAGRAM_DEFAULTS.special_point_radius)
201
177
  }}
202
178
  >
203
- {@render num_range(
204
- `Font size`,
205
- merged_config.font_size,
206
- 8,
207
- 20,
208
- 1,
209
- (val) => update_config(`font_size`, val),
210
- `Font size for axis labels and tick marks`,
211
- )}
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
+ >
212
187
  {#if has_special_points}
213
- {@render num_range(
214
- `Special pt radius`,
215
- merged_config.special_point_radius,
216
- 2,
217
- 12,
218
- 1,
219
- (val) => update_config(`special_point_radius`, val),
220
- `Radius of special point markers (eutectic, peritectic, etc.)`,
221
- )}
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
+ >
222
198
  {/if}
223
199
  </SettingsSection>
224
200
 
225
201
  <!-- Colors Section -->
226
202
  {@const color_options = [
227
- [`background`, `#ffffff`, `Background`, `Background color of the plot area`],
228
- [`grid`, `#888888`, `Grid`, `Color of grid lines`],
229
- [`boundary`, `#333333`, `Boundaries`, `Color of phase boundary lines`],
230
- [`special_point`, `#d32f2f`, `Special Pts`, `Color of special point markers`],
231
- [`axis`, `#333333`, `Axis`, `Color of axis lines`],
232
- [`text`, `#333333`, `Text`, `Color of text labels`],
233
- ] 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}
234
210
  <SettingsSection
235
211
  title="Colors"
236
212
  current_values={{ ...merged_config.colors }}
@@ -280,40 +256,43 @@
280
256
  </label>
281
257
  </div>
282
258
  </span>
283
- {@render num_range(
284
- `Line width`,
285
- merged_config.tie_line.stroke_width,
286
- 0.5,
287
- 5,
288
- 0.5,
289
- (val) => update_nested(`tie_line`, `stroke_width`, val),
290
- `Thickness of the tie-line`,
291
- )}
292
- {@render num_range(
293
- `Endpoint radius`,
294
- merged_config.tie_line.endpoint_radius,
295
- 2,
296
- 10,
297
- 1,
298
- (val) => update_nested(`tie_line`, `endpoint_radius`, val),
299
- `Radius of phase boundary endpoint markers`,
300
- )}
301
- {@render num_range(
302
- `Cursor radius`,
303
- merged_config.tie_line.cursor_radius,
304
- 2,
305
- 10,
306
- 1,
307
- (val) => update_nested(`tie_line`, `cursor_radius`, val),
308
- `Radius of the cursor position marker`,
309
- )}
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
+ >
310
289
  </SettingsSection>
311
290
 
312
291
  <!-- Axis Configuration Section -->
313
292
  {@const axis_configs = [
314
- [x_axis, `x`, comp_unit, `composition`],
315
- [y_axis, `y`, temp_unit, `temperature`],
316
- ] as const}
293
+ [x_axis, `x`, comp_unit, `composition`],
294
+ [y_axis, `y`, temp_unit, `temperature`],
295
+ ] as const}
317
296
  <SettingsSection
318
297
  title="Axes"
319
298
  current_values={{ x_ticks: x_axis.ticks, y_ticks: y_axis.ticks }}
@@ -352,7 +331,9 @@
352
331
  }}
353
332
  >
354
333
  <label
355
- {@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
+ })}
356
337
  >
357
338
  PNG DPI
358
339
  <input
@@ -363,15 +344,11 @@
363
344
  style="width: 3.5em"
364
345
  bind:value={png_dpi}
365
346
  />
366
- <input
367
- type="range"
368
- min={72}
369
- max={600}
370
- step={50}
371
- bind:value={png_dpi}
372
- />
373
- <span style="font-size: 0.85em; opacity: 0.7">{format_num(png_dpi, `d`)}
374
- 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
+ >
375
352
  </label>
376
353
  </SettingsSection>
377
354
  {/if}
@@ -1,3 +1,4 @@
1
+ import type { PaneProps, PaneToggleProps } from '../overlays';
1
2
  import DraggablePane from '../overlays/DraggablePane.svelte';
2
3
  import type { AxisConfig } from '../plot';
3
4
  import type { ComponentProps, Snippet } from 'svelte';
@@ -16,8 +17,8 @@ type $$ComponentProps = Omit<ComponentProps<typeof DraggablePane>, `children`> &
16
17
  data?: PhaseDiagramData;
17
18
  enable_export?: boolean;
18
19
  png_dpi?: number;
19
- pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`];
20
- toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`];
20
+ pane_props?: PaneProps;
21
+ toggle_props?: PaneToggleProps;
21
22
  children?: Snippet<[{
22
23
  controls_open: boolean;
23
24
  }]>;
@@ -25,6 +26,6 @@ type $$ComponentProps = Omit<ComponentProps<typeof DraggablePane>, `children`> &
25
26
  controls_open: boolean;
26
27
  }]>;
27
28
  };
28
- declare const PhaseDiagramControls: import("svelte").Component<$$ComponentProps, {}, "controls_open" | "x_axis" | "y_axis" | "show_grid" | "show_boundaries" | "show_labels" | "show_special_points" | "show_component_labels" | "png_dpi" | "config" | "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">;
29
30
  type PhaseDiagramControls = ReturnType<typeof PhaseDiagramControls>;
30
31
  export default PhaseDiagramControls;
@@ -1,4 +1,5 @@
1
1
  <script lang="ts">
2
+ import type { PaneToggleProps } from '../overlays'
2
3
  import { JsonTree } from '../layout/json-tree'
3
4
  import { set_at_path } from '../layout/json-tree/utils'
4
5
  import DraggablePane from '../overlays/DraggablePane.svelte'
@@ -21,7 +22,7 @@
21
22
  data?: PhaseDiagramData | null
22
23
  ondata?: (data: PhaseDiagramData) => void
23
24
  icon_style?: string
24
- toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
25
+ toggle_props?: PaneToggleProps
25
26
  } = $props()
26
27
 
27
28
  // The source object currently displayed (DiagramInput or PhaseDiagramData)
@@ -110,7 +111,8 @@
110
111
  animation: fade-out 3s ease-out forwards;
111
112
  }
112
113
  @keyframes fade-out {
113
- 0%, 80% {
114
+ 0%,
115
+ 80% {
114
116
  opacity: 1;
115
117
  }
116
118
  100% {
@@ -1,5 +1,4 @@
1
- import DraggablePane from '../overlays/DraggablePane.svelte';
2
- import type { ComponentProps } from 'svelte';
1
+ import type { PaneToggleProps } from '../overlays';
3
2
  import type { DiagramInput } from './diagram-input';
4
3
  import type { PhaseDiagramData } from './types';
5
4
  type $$ComponentProps = {
@@ -8,7 +7,7 @@ type $$ComponentProps = {
8
7
  data?: PhaseDiagramData | null;
9
8
  ondata?: (data: PhaseDiagramData) => void;
10
9
  icon_style?: string;
11
- toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`];
10
+ toggle_props?: PaneToggleProps;
12
11
  };
13
12
  declare const PhaseDiagramEditorPane: import("svelte").Component<$$ComponentProps, {}, "editor_open" | "diagram_input">;
14
13
  type PhaseDiagramEditorPane = ReturnType<typeof PhaseDiagramEditorPane>;