matterviz 0.4.1 → 0.4.3

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 (499) hide show
  1. package/dist/EmptyState.svelte +10 -4
  2. package/dist/FilePicker.svelte +48 -60
  3. package/dist/Icon.svelte +7 -4
  4. package/dist/MillerIndexInput.svelte +2 -2
  5. package/dist/api/optimade.js +10 -7
  6. package/dist/app.css +68 -0
  7. package/dist/brillouin/BrillouinZone.svelte +90 -91
  8. package/dist/brillouin/BrillouinZone.svelte.d.ts +5 -7
  9. package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
  10. package/dist/brillouin/BrillouinZoneExportPane.svelte +18 -14
  11. package/dist/brillouin/BrillouinZoneInfoPane.svelte +6 -10
  12. package/dist/brillouin/BrillouinZoneScene.svelte +46 -68
  13. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
  14. package/dist/brillouin/compute.js +10 -16
  15. package/dist/brillouin/geometry.js +2 -2
  16. package/dist/chempot-diagram/ChemPotDiagram.svelte +48 -50
  17. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +61 -169
  18. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +1 -1
  19. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +559 -755
  20. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +1 -1
  21. package/dist/chempot-diagram/async-compute.svelte.js +13 -14
  22. package/dist/chempot-diagram/color.d.ts +21 -1
  23. package/dist/chempot-diagram/color.js +70 -1
  24. package/dist/chempot-diagram/compute.d.ts +7 -0
  25. package/dist/chempot-diagram/compute.js +85 -26
  26. package/dist/chempot-diagram/controls-state.svelte.js +1 -1
  27. package/dist/chempot-diagram/export.js +1 -6
  28. package/dist/chempot-diagram/temperature.js +9 -10
  29. package/dist/colors/index.d.ts +0 -4
  30. package/dist/colors/index.js +19 -20
  31. package/dist/composition/BarChart.svelte +30 -26
  32. package/dist/composition/BubbleChart.svelte +17 -17
  33. package/dist/composition/Composition.svelte +10 -19
  34. package/dist/composition/Formula.svelte +20 -27
  35. package/dist/composition/FormulaFilter.svelte +115 -184
  36. package/dist/composition/PieChart.svelte +55 -41
  37. package/dist/composition/format.js +7 -9
  38. package/dist/composition/index.d.ts +2 -0
  39. package/dist/composition/index.js +14 -0
  40. package/dist/composition/parse.d.ts +2 -2
  41. package/dist/composition/parse.js +61 -115
  42. package/dist/constants.d.ts +0 -1
  43. package/dist/constants.js +17 -26
  44. package/dist/convex-hull/ConvexHull.svelte +12 -15
  45. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -1
  46. package/dist/convex-hull/ConvexHull2D.svelte +93 -94
  47. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  48. package/dist/convex-hull/ConvexHull3D.svelte +127 -186
  49. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  50. package/dist/convex-hull/ConvexHull4D.svelte +131 -180
  51. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  52. package/dist/convex-hull/ConvexHullChrome.svelte +36 -40
  53. package/dist/convex-hull/ConvexHullControls.svelte +46 -48
  54. package/dist/convex-hull/ConvexHullStats.svelte +193 -195
  55. package/dist/convex-hull/ConvexHullTooltip.svelte +5 -12
  56. package/dist/convex-hull/GasPressureControls.svelte +5 -12
  57. package/dist/convex-hull/StructurePopup.svelte +18 -22
  58. package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
  59. package/dist/convex-hull/TemperatureSlider.svelte +4 -10
  60. package/dist/convex-hull/canvas-interactions.svelte.js +2 -1
  61. package/dist/convex-hull/gas-thermodynamics.js +21 -53
  62. package/dist/convex-hull/helpers.d.ts +8 -10
  63. package/dist/convex-hull/helpers.js +37 -43
  64. package/dist/convex-hull/hull-state.svelte.d.ts +1 -1
  65. package/dist/convex-hull/thermodynamics.js +37 -44
  66. package/dist/coordination/CoordinationBarPlot.svelte +49 -53
  67. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +1 -1
  68. package/dist/coordination/calc-coordination.d.ts +1 -1
  69. package/dist/coordination/calc-coordination.js +28 -25
  70. package/dist/element/BohrAtom.svelte +5 -9
  71. package/dist/element/ElementHeading.svelte +4 -1
  72. package/dist/element/ElementPhoto.svelte +11 -9
  73. package/dist/element/ElementStats.svelte +12 -10
  74. package/dist/element/ElementTile.svelte +44 -67
  75. package/dist/element/Nucleus.svelte +4 -2
  76. package/dist/element/data.d.ts +3 -2
  77. package/dist/element/data.js +5 -1
  78. package/dist/element/helpers.d.ts +4 -0
  79. package/dist/element/helpers.js +18 -0
  80. package/dist/element/index.d.ts +2 -5
  81. package/dist/element/index.js +4 -19
  82. package/dist/feedback/DragOverlay.svelte +5 -5
  83. package/dist/feedback/DragOverlay.svelte.d.ts +2 -2
  84. package/dist/feedback/StatusMessage.svelte +7 -4
  85. package/dist/fermi-surface/FermiSlice.svelte +21 -18
  86. package/dist/fermi-surface/FermiSurface.svelte +35 -44
  87. package/dist/fermi-surface/FermiSurface.svelte.d.ts +7 -13
  88. package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
  89. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
  90. package/dist/fermi-surface/FermiSurfaceScene.svelte +64 -136
  91. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
  92. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
  93. package/dist/fermi-surface/compute.js +25 -58
  94. package/dist/fermi-surface/parse.js +54 -88
  95. package/dist/file-viewer/JsonBrowser.svelte +1043 -0
  96. package/dist/file-viewer/JsonBrowser.svelte.d.ts +9 -0
  97. package/dist/file-viewer/PlotPanel.svelte +350 -0
  98. package/dist/file-viewer/PlotPanel.svelte.d.ts +9 -0
  99. package/dist/file-viewer/TrajectoryWithDos.svelte +30 -0
  100. package/dist/file-viewer/TrajectoryWithDos.svelte.d.ts +10 -0
  101. package/dist/file-viewer/detect.d.ts +11 -0
  102. package/dist/file-viewer/detect.js +381 -0
  103. package/dist/file-viewer/eligibility.d.ts +4 -0
  104. package/dist/file-viewer/eligibility.js +53 -0
  105. package/dist/file-viewer/host-protocol.d.ts +50 -0
  106. package/dist/file-viewer/host-transfer.d.ts +25 -0
  107. package/dist/file-viewer/host-transfer.js +42 -0
  108. package/dist/file-viewer/index.d.ts +5 -0
  109. package/dist/file-viewer/index.js +5 -0
  110. package/dist/file-viewer/main.d.ts +44 -0
  111. package/dist/file-viewer/main.js +535 -0
  112. package/dist/file-viewer/parse.d.ts +9 -0
  113. package/dist/file-viewer/parse.js +170 -0
  114. package/dist/file-viewer/plot-utils.d.ts +24 -0
  115. package/dist/file-viewer/plot-utils.js +191 -0
  116. package/dist/file-viewer/types.d.ts +4 -0
  117. package/dist/file-viewer/types.js +5 -0
  118. package/dist/heatmap-matrix/HeatmapMatrix.svelte +153 -219
  119. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +2 -2
  120. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +9 -7
  121. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +1 -1
  122. package/dist/heatmap-matrix/index.d.ts +5 -0
  123. package/dist/icons.d.ts +4 -0
  124. package/dist/icons.js +4 -0
  125. package/dist/index.d.ts +2 -2
  126. package/dist/index.js +1 -1
  127. package/dist/io/ExportPane.svelte +11 -7
  128. package/dist/io/decompress.d.ts +4 -1
  129. package/dist/io/decompress.js +24 -36
  130. package/dist/io/export.d.ts +11 -4
  131. package/dist/io/export.js +75 -19
  132. package/dist/io/fetch.d.ts +0 -3
  133. package/dist/io/fetch.js +0 -11
  134. package/dist/io/file-drop.js +60 -35
  135. package/dist/io/index.d.ts +0 -1
  136. package/dist/io/index.js +2 -9
  137. package/dist/io/is-binary.d.ts +9 -0
  138. package/dist/io/is-binary.js +45 -1
  139. package/dist/io/url-drop.d.ts +2 -0
  140. package/dist/io/url-drop.js +40 -40
  141. package/dist/isosurface/Isosurface.svelte +700 -215
  142. package/dist/isosurface/Isosurface.svelte.d.ts +7 -1
  143. package/dist/isosurface/IsosurfaceControls.svelte +590 -116
  144. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +1 -1
  145. package/dist/isosurface/VolumeSlice.svelte +224 -0
  146. package/dist/isosurface/VolumeSlice.svelte.d.ts +28 -0
  147. package/dist/isosurface/coloring.d.ts +20 -0
  148. package/dist/isosurface/coloring.js +118 -0
  149. package/dist/isosurface/geometry-worker-types.d.ts +38 -0
  150. package/dist/isosurface/geometry.worker.d.ts +1 -0
  151. package/dist/isosurface/geometry.worker.js +59 -0
  152. package/dist/isosurface/grid.d.ts +10 -0
  153. package/dist/isosurface/grid.js +31 -0
  154. package/dist/isosurface/index.d.ts +4 -0
  155. package/dist/isosurface/index.js +4 -0
  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 +6 -6
  159. package/dist/isosurface/profile.d.ts +12 -0
  160. package/dist/isosurface/profile.js +19 -0
  161. package/dist/isosurface/sampling.d.ts +34 -0
  162. package/dist/isosurface/sampling.js +408 -0
  163. package/dist/isosurface/slice-rendering.d.ts +13 -0
  164. package/dist/isosurface/slice-rendering.js +79 -0
  165. package/dist/isosurface/slice.d.ts +22 -2
  166. package/dist/isosurface/slice.js +200 -116
  167. package/dist/isosurface/types.d.ts +24 -1
  168. package/dist/isosurface/types.js +120 -8
  169. package/dist/json-path.d.ts +4 -0
  170. package/dist/json-path.js +89 -0
  171. package/dist/labels.d.ts +6 -2
  172. package/dist/labels.js +44 -14
  173. package/dist/layout/FullscreenButton.svelte +2 -1
  174. package/dist/layout/FullscreenToggle.svelte +10 -4
  175. package/dist/layout/InfoCard.svelte +8 -21
  176. package/dist/layout/InfoTag.svelte +1 -3
  177. package/dist/layout/NumberRangeInput.svelte +46 -0
  178. package/dist/layout/NumberRangeInput.svelte.d.ts +12 -0
  179. package/dist/layout/PropertyFilter.svelte +2 -6
  180. package/dist/layout/SettingsSection.svelte +57 -62
  181. package/dist/layout/SettingsSection.svelte.d.ts +6 -7
  182. package/dist/layout/SubpageGrid.svelte +3 -1
  183. package/dist/layout/ViewerChrome.svelte +16 -11
  184. package/dist/layout/ViewerChrome.svelte.d.ts +2 -1
  185. package/dist/layout/fullscreen.js +3 -5
  186. package/dist/layout/fullscreen.svelte.js +1 -2
  187. package/dist/layout/index.d.ts +1 -0
  188. package/dist/layout/index.js +1 -0
  189. package/dist/layout/json-tree/JsonNode.svelte +22 -59
  190. package/dist/layout/json-tree/JsonTree.svelte +101 -172
  191. package/dist/layout/json-tree/JsonValue.svelte +9 -32
  192. package/dist/layout/json-tree/utils.d.ts +0 -3
  193. package/dist/layout/json-tree/utils.js +50 -188
  194. package/dist/marching-cubes.d.ts +8 -1
  195. package/dist/marching-cubes.js +115 -48
  196. package/dist/math.d.ts +5 -2
  197. package/dist/math.js +48 -38
  198. package/dist/overlays/ContextMenu.svelte +19 -34
  199. package/dist/overlays/CopyButton.svelte +11 -5
  200. package/dist/overlays/DragControlTab.svelte +6 -1
  201. package/dist/overlays/DraggablePane.svelte +110 -74
  202. package/dist/overlays/DraggablePane.svelte.d.ts +2 -1
  203. package/dist/overlays/GlassChip.svelte +32 -0
  204. package/dist/overlays/GlassChip.svelte.d.ts +8 -0
  205. package/dist/overlays/InfoPaneCards.svelte +11 -23
  206. package/dist/overlays/index.d.ts +7 -0
  207. package/dist/overlays/index.js +26 -0
  208. package/dist/overlays/portal.d.ts +2 -0
  209. package/dist/overlays/portal.js +14 -0
  210. package/dist/periodic-table/PeriodicTable.svelte +113 -145
  211. package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
  212. package/dist/periodic-table/PeriodicTableControls.svelte +37 -115
  213. package/dist/periodic-table/TableInset.svelte +9 -4
  214. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +68 -105
  215. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
  216. package/dist/phase-diagram/PhaseDiagramControls.svelte +70 -94
  217. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +1 -1
  218. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +2 -1
  219. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +12 -12
  220. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
  221. package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
  222. package/dist/phase-diagram/build-diagram.js +4 -9
  223. package/dist/phase-diagram/diagram-input.d.ts +1 -2
  224. package/dist/phase-diagram/parse.js +15 -15
  225. package/dist/phase-diagram/svg-to-diagram.js +28 -27
  226. package/dist/phase-diagram/utils.js +2 -3
  227. package/dist/plot/bar/BarPlot.svelte +461 -426
  228. package/dist/plot/bar/BarPlot.svelte.d.ts +2 -0
  229. package/dist/plot/bar/BarPlotControls.svelte +1 -3
  230. package/dist/plot/bar/BarPlotControls.svelte.d.ts +4 -6
  231. package/dist/plot/bar/SpacegroupBarPlot.svelte +46 -77
  232. package/dist/plot/bar/data.d.ts +5 -4
  233. package/dist/plot/bar/data.js +2 -1
  234. package/dist/plot/box/BoxPlot.svelte +322 -226
  235. package/dist/plot/box/BoxPlot.svelte.d.ts +2 -0
  236. package/dist/plot/box/Violin.svelte.d.ts +1 -0
  237. package/dist/plot/box/box-plot.js +1 -1
  238. package/dist/plot/core/auto-place.d.ts +1 -1
  239. package/dist/plot/core/auto-place.js +2 -2
  240. package/dist/plot/core/axis-utils.d.ts +12 -7
  241. package/dist/plot/core/axis-utils.js +48 -48
  242. package/dist/plot/core/components/AxisLabel.svelte +82 -20
  243. package/dist/plot/core/components/AxisLabel.svelte.d.ts +1 -0
  244. package/dist/plot/core/components/ColorBar.svelte +101 -106
  245. package/dist/plot/core/components/ColorScaleSelect.svelte +1 -1
  246. package/dist/plot/core/components/FillArea.svelte +10 -17
  247. package/dist/plot/core/components/HierarchyControls.svelte +249 -0
  248. package/dist/plot/{sunburst/SunburstControls.svelte.d.ts → core/components/HierarchyControls.svelte.d.ts} +12 -8
  249. package/dist/plot/core/components/InteractiveAxisLabel.svelte +1 -1
  250. package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +1 -1
  251. package/dist/plot/core/components/Line.svelte +18 -9
  252. package/dist/plot/core/components/Line.svelte.d.ts +2 -0
  253. package/dist/plot/core/components/PlotAxis.svelte +40 -17
  254. package/dist/plot/core/components/PlotControls.svelte +65 -41
  255. package/dist/plot/core/components/PlotLegend.svelte +31 -35
  256. package/dist/plot/core/components/PlotMarginals.svelte +616 -0
  257. package/dist/plot/core/components/PlotMarginals.svelte.d.ts +15 -0
  258. package/dist/plot/core/components/PlotTooltip.svelte +1 -1
  259. package/dist/plot/core/components/PortalSelect.svelte +4 -8
  260. package/dist/plot/core/components/ReferenceLine.svelte +27 -24
  261. package/dist/plot/core/components/ReferenceLine3D.svelte +54 -57
  262. package/dist/plot/core/components/ReferencePlane.svelte +7 -8
  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 +27 -474
  271. package/dist/plot/core/data-transform.d.ts +1 -2
  272. package/dist/plot/core/data-transform.js +9 -15
  273. package/dist/plot/core/fill-utils.d.ts +3 -1
  274. package/dist/plot/core/fill-utils.js +28 -6
  275. package/dist/plot/core/index.d.ts +1 -0
  276. package/dist/plot/core/index.js +1 -0
  277. package/dist/plot/core/interactions.js +0 -2
  278. package/dist/plot/core/layout.d.ts +15 -6
  279. package/dist/plot/core/layout.js +57 -38
  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 +2 -4
  283. package/dist/plot/core/pan-zoom.svelte.js +34 -17
  284. package/dist/plot/core/placed-tween.svelte.d.ts +3 -0
  285. package/dist/plot/core/placed-tween.svelte.js +68 -21
  286. package/dist/plot/core/reference-line.js +1 -1
  287. package/dist/plot/core/scales.d.ts +23 -0
  288. package/dist/plot/core/scales.js +39 -13
  289. package/dist/plot/core/svg.js +0 -1
  290. package/dist/plot/core/types/fills.d.ts +101 -0
  291. package/dist/plot/core/types/fills.js +15 -0
  292. package/dist/plot/core/types/plot-3d.d.ts +87 -0
  293. package/dist/plot/core/types/plot-3d.js +4 -0
  294. package/dist/plot/core/types/reference-lines.d.ts +140 -0
  295. package/dist/plot/core/types/reference-lines.js +9 -0
  296. package/dist/plot/core/types.d.ts +29 -324
  297. package/dist/plot/core/types.js +23 -20
  298. package/dist/plot/core/utils/hierarchy-chart.d.ts +52 -0
  299. package/dist/plot/core/utils/hierarchy-chart.js +191 -0
  300. package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
  301. package/dist/plot/core/utils/hierarchy-labels.js +100 -0
  302. package/dist/plot/core/utils/label-placement.js +2 -2
  303. package/dist/plot/histogram/Histogram.svelte +314 -340
  304. package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
  305. package/dist/plot/histogram/HistogramControls.svelte +30 -28
  306. package/dist/plot/histogram/histogram.d.ts +31 -0
  307. package/dist/plot/histogram/histogram.js +70 -0
  308. package/dist/plot/histogram/index.d.ts +1 -0
  309. package/dist/plot/histogram/index.js +1 -0
  310. package/dist/plot/index.d.ts +1 -0
  311. package/dist/plot/index.js +1 -0
  312. package/dist/plot/sankey/Sankey.svelte +78 -69
  313. package/dist/plot/sankey/Sankey.svelte.d.ts +2 -2
  314. package/dist/plot/sankey/SankeyControls.svelte +22 -16
  315. package/dist/plot/sankey/sankey.js +13 -9
  316. package/dist/plot/scatter/BinnedScatterPlot.svelte +311 -141
  317. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +7 -0
  318. package/dist/plot/scatter/ElementScatter.svelte +4 -1
  319. package/dist/plot/scatter/ScatterPlot.svelte +517 -410
  320. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +2 -0
  321. package/dist/plot/scatter/ScatterPlotControls.svelte +18 -19
  322. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
  323. package/dist/plot/scatter/ScatterPoint.svelte +16 -9
  324. package/dist/plot/scatter/adaptive-density.d.ts +1 -1
  325. package/dist/plot/scatter/adaptive-density.js +36 -20
  326. package/dist/plot/scatter/binned-scatter-types.d.ts +3 -2
  327. package/dist/plot/scatter/binned-scatter-types.js +6 -1
  328. package/dist/plot/scatter/scatter-data.d.ts +1 -1
  329. package/dist/plot/scatter/scatter-data.js +8 -7
  330. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +25 -34
  331. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +2 -2
  332. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +8 -5
  333. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +113 -116
  334. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +2 -2
  335. package/dist/plot/scatter-3d/Surface3D.svelte +4 -13
  336. package/dist/plot/sunburst/Sunburst.svelte +269 -347
  337. package/dist/plot/sunburst/Sunburst.svelte.d.ts +2 -2
  338. package/dist/plot/sunburst/index.d.ts +1 -1
  339. package/dist/plot/sunburst/index.js +2 -1
  340. package/dist/plot/sunburst/render.d.ts +2 -2
  341. package/dist/plot/sunburst/render.js +47 -22
  342. package/dist/plot/sunburst/sunburst.d.ts +5 -1
  343. package/dist/plot/sunburst/sunburst.js +10 -3
  344. package/dist/plot/treemap/Treemap.svelte +1022 -0
  345. package/dist/plot/treemap/Treemap.svelte.d.ts +90 -0
  346. package/dist/plot/treemap/index.d.ts +4 -0
  347. package/dist/plot/treemap/index.js +4 -0
  348. package/dist/plot/treemap/labels.d.ts +38 -0
  349. package/dist/plot/treemap/labels.js +80 -0
  350. package/dist/plot/treemap/treemap.d.ts +28 -0
  351. package/dist/plot/treemap/treemap.js +102 -0
  352. package/dist/rdf/RdfPlot.svelte +37 -59
  353. package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
  354. package/dist/rdf/calc-rdf.js +63 -52
  355. package/dist/rdf/index.d.ts +0 -1
  356. package/dist/sanitize.js +85 -27
  357. package/dist/scene/SceneCamera.svelte +1 -1
  358. package/dist/scene/SceneCamera.svelte.d.ts +1 -1
  359. package/dist/scene/bind-renderer.svelte.js +14 -6
  360. package/dist/scene/index.d.ts +1 -2
  361. package/dist/scene/index.js +1 -1
  362. package/dist/scene/{props.js → props.svelte.js} +15 -1
  363. package/dist/settings.d.ts +19 -9
  364. package/dist/settings.js +229 -525
  365. package/dist/spectral/Bands.svelte +207 -221
  366. package/dist/spectral/BandsAndDos.svelte +11 -9
  367. package/dist/spectral/BrillouinBandsDos.svelte +19 -42
  368. package/dist/spectral/Dos.svelte +92 -93
  369. package/dist/spectral/helpers.d.ts +3 -3
  370. package/dist/spectral/helpers.js +65 -140
  371. package/dist/state.svelte.js +5 -18
  372. package/dist/structure/Arrow.svelte +5 -18
  373. package/dist/structure/ArrowInstances.svelte +160 -0
  374. package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
  375. package/dist/structure/AtomLegend.svelte +120 -85
  376. package/dist/structure/AtomLegend.svelte.d.ts +2 -3
  377. package/dist/structure/Bond.svelte +31 -23
  378. package/dist/structure/CanvasTooltip.svelte +15 -3
  379. package/dist/structure/CellSelect.svelte +45 -35
  380. package/dist/structure/Cylinder.svelte +24 -40
  381. package/dist/structure/InstancedAtoms.svelte +114 -0
  382. package/dist/structure/InstancedAtoms.svelte.d.ts +15 -0
  383. package/dist/structure/Lattice.svelte +85 -149
  384. package/dist/structure/SiteLabels.svelte +122 -0
  385. package/dist/structure/SiteLabels.svelte.d.ts +18 -0
  386. package/dist/structure/Structure.svelte +636 -504
  387. package/dist/structure/Structure.svelte.d.ts +4 -2
  388. package/dist/structure/StructureCarousel.svelte +637 -0
  389. package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
  390. package/dist/structure/StructureControls.svelte +165 -425
  391. package/dist/structure/StructureControls.svelte.d.ts +1 -1
  392. package/dist/structure/StructureExportPane.svelte +17 -21
  393. package/dist/structure/StructureInfoPane.svelte +128 -133
  394. package/dist/structure/StructureInfoPane.svelte.d.ts +1 -1
  395. package/dist/structure/StructureScene.svelte +535 -578
  396. package/dist/structure/StructureScene.svelte.d.ts +6 -2
  397. package/dist/structure/StructureViewport.svelte +451 -0
  398. package/dist/structure/StructureViewport.svelte.d.ts +65 -0
  399. package/dist/structure/atom-label-placement.d.ts +16 -12
  400. package/dist/structure/atom-label-placement.js +70 -37
  401. package/dist/structure/atom-properties.d.ts +2 -0
  402. package/dist/structure/atom-properties.js +105 -38
  403. package/dist/structure/bond-order-perception.js +3 -8
  404. package/dist/structure/bonding.d.ts +9 -3
  405. package/dist/structure/bonding.js +95 -46
  406. package/dist/structure/edit-history.d.ts +6 -0
  407. package/dist/structure/edit-history.js +27 -0
  408. package/dist/structure/export.d.ts +1 -0
  409. package/dist/structure/export.js +89 -105
  410. package/dist/structure/format-detect.d.ts +1 -0
  411. package/dist/structure/format-detect.js +20 -0
  412. package/dist/structure/geometry.d.ts +9 -0
  413. package/dist/structure/geometry.js +27 -0
  414. package/dist/structure/index.d.ts +16 -1
  415. package/dist/structure/index.js +15 -10
  416. package/dist/structure/measure.d.ts +1 -1
  417. package/dist/structure/measure.js +6 -12
  418. package/dist/structure/parse.d.ts +2 -1
  419. package/dist/structure/parse.js +272 -313
  420. package/dist/structure/partial-occupancy.js +10 -5
  421. package/dist/structure/pbc.js +85 -107
  422. package/dist/structure/polyhedra.d.ts +0 -1
  423. package/dist/structure/polyhedra.js +7 -21
  424. package/dist/structure/prop-groups.d.ts +85 -0
  425. package/dist/structure/prop-groups.js +18 -0
  426. package/dist/structure/supercell.d.ts +1 -2
  427. package/dist/structure/supercell.js +7 -13
  428. package/dist/symmetry/SymmetryElements.svelte +11 -15
  429. package/dist/symmetry/SymmetryStats.svelte +55 -71
  430. package/dist/symmetry/WyckoffTable.svelte +10 -28
  431. package/dist/symmetry/cell-transform.js +6 -14
  432. package/dist/symmetry/index.d.ts +1 -0
  433. package/dist/symmetry/index.js +13 -10
  434. package/dist/symmetry/spacegroups.js +3 -2
  435. package/dist/table/HeatmapTable.svelte +1142 -447
  436. package/dist/table/HeatmapTable.svelte.d.ts +12 -2
  437. package/dist/table/ToggleMenu.svelte +168 -53
  438. package/dist/table/ToggleMenu.svelte.d.ts +1 -1
  439. package/dist/table/index.d.ts +21 -6
  440. package/dist/table/index.js +34 -21
  441. package/dist/theme/ThemeControl.svelte +16 -8
  442. package/dist/theme/embedded.d.ts +18 -0
  443. package/dist/theme/embedded.js +206 -0
  444. package/dist/theme/index.d.ts +5 -5
  445. package/dist/theme/index.js +5 -12
  446. package/dist/theme/themes.mjs +44 -66
  447. package/dist/tooltip/KCoords.svelte +4 -1
  448. package/dist/tooltip/TooltipContent.svelte +3 -6
  449. package/dist/tooltip/TooltipContent.svelte.d.ts +1 -1
  450. package/dist/tooltip/index.d.ts +8 -1
  451. package/dist/trajectory/Trajectory.svelte +613 -386
  452. package/dist/trajectory/Trajectory.svelte.d.ts +1 -1
  453. package/dist/trajectory/TrajectoryError.svelte +12 -74
  454. package/dist/trajectory/TrajectoryExportPane.svelte +14 -32
  455. package/dist/trajectory/TrajectoryInfoPane.svelte +127 -164
  456. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +2 -1
  457. package/dist/trajectory/extract.js +61 -49
  458. package/dist/trajectory/format-detect.d.ts +2 -0
  459. package/dist/trajectory/format-detect.js +17 -13
  460. package/dist/trajectory/frame-reader.d.ts +2 -0
  461. package/dist/trajectory/frame-reader.js +35 -32
  462. package/dist/trajectory/helpers.d.ts +2 -0
  463. package/dist/trajectory/helpers.js +34 -56
  464. package/dist/trajectory/index.d.ts +1 -0
  465. package/dist/trajectory/index.js +5 -8
  466. package/dist/trajectory/parse/ase.js +1 -1
  467. package/dist/trajectory/parse/h5-utils.d.ts +13 -0
  468. package/dist/trajectory/parse/h5-utils.js +109 -0
  469. package/dist/trajectory/parse/hdf5.d.ts +1 -1
  470. package/dist/trajectory/parse/hdf5.js +116 -106
  471. package/dist/trajectory/parse/index.d.ts +6 -6
  472. package/dist/trajectory/parse/index.js +25 -33
  473. package/dist/trajectory/parse/lammps.js +8 -12
  474. package/dist/trajectory/parse/vasp.js +10 -7
  475. package/dist/trajectory/parse/vaspout-electronic.d.ts +13 -0
  476. package/dist/trajectory/parse/vaspout-electronic.js +207 -0
  477. package/dist/trajectory/parse/vaspout-h5.d.ts +4 -0
  478. package/dist/trajectory/parse/vaspout-h5.js +281 -0
  479. package/dist/trajectory/parse/xyz.js +59 -9
  480. package/dist/trajectory/plotting.d.ts +8 -9
  481. package/dist/trajectory/plotting.js +113 -64
  482. package/dist/utils.d.ts +3 -0
  483. package/dist/utils.js +7 -0
  484. package/dist/xrd/XrdPlot.svelte +79 -118
  485. package/dist/xrd/broadening.js +2 -1
  486. package/dist/xrd/calc-xrd.js +24 -62
  487. package/dist/xrd/parse.d.ts +0 -1
  488. package/dist/xrd/parse.js +69 -95
  489. package/package.json +94 -34
  490. package/readme.md +6 -5
  491. package/dist/api/mp.d.ts +0 -6
  492. package/dist/api/mp.js +0 -22
  493. package/dist/plot/sunburst/SunburstControls.svelte +0 -200
  494. package/dist/scene/types.d.ts +0 -26
  495. package/dist/tooltip/types.d.ts +0 -8
  496. package/dist/trajectory/constants.d.ts +0 -6
  497. package/dist/trajectory/constants.js +0 -11
  498. /package/dist/{scene/types.js → file-viewer/host-protocol.js} +0 -0
  499. /package/dist/{tooltip/types.js → isosurface/geometry-worker-types.js} +0 -0
@@ -3,6 +3,7 @@
3
3
  // NOTE: Axis config objects must be reassigned (not mutated) to trigger $bindable reactivity.
4
4
  import { css_color_to_hex } from '../colors'
5
5
  import { format_num } from '../labels'
6
+ import NumberRangeInput from '../layout/NumberRangeInput.svelte'
6
7
  import SettingsSection from '../layout/SettingsSection.svelte'
7
8
  import DraggablePane from '../overlays/DraggablePane.svelte'
8
9
  import type { AxisConfig } from '../plot'
@@ -78,9 +79,7 @@
78
79
  }
79
80
 
80
81
  // Helper to update nested config properties
81
- function update_nested<
82
- K extends keyof Pick<PhaseDiagramConfig, `colors` | `tie_line`>,
83
- >(
82
+ function update_nested<K extends keyof Pick<PhaseDiagramConfig, `colors` | `tie_line`>>(
84
83
  key: K,
85
84
  prop: string,
86
85
  value: string | number,
@@ -101,25 +100,6 @@
101
100
  const has_special_points = $derived((data?.special_points?.length ?? 0) > 0)
102
101
  </script>
103
102
 
104
- <!-- Reusable snippet for number + range input pairs -->
105
- {#snippet num_range(
106
- label: string,
107
- value: number,
108
- min: number,
109
- max: number,
110
- step: number,
111
- on_change: (val: number) => void,
112
- tip: string,
113
- )}
114
- {@const oninput = (ev: Event & { currentTarget: HTMLInputElement }) =>
115
- on_change(Number(ev.currentTarget.value))}
116
- <label {@attach tooltip({ content: tip })}>
117
- {label}
118
- <input type="number" {min} {max} {step} {value} {oninput} />
119
- <input type="range" {min} {max} {step} {value} {oninput} />
120
- </label>
121
- {/snippet}
122
-
123
103
  <DraggablePane
124
104
  bind:show={controls_open}
125
105
  pane_props={{
@@ -177,9 +157,7 @@
177
157
  Special Pts
178
158
  </label>
179
159
  {/if}
180
- <label
181
- {@attach tooltip({ content: `Show component labels at axes` })}
182
- >
160
+ <label {@attach tooltip({ content: `Show component labels at axes` })}>
183
161
  <input type="checkbox" bind:checked={show_component_labels} />
184
162
  Comp. Labels
185
163
  </label>
@@ -195,43 +173,40 @@
195
173
  }}
196
174
  on_reset={() => {
197
175
  update_config(`font_size`, PHASE_DIAGRAM_DEFAULTS.font_size)
198
- update_config(
199
- `special_point_radius`,
200
- PHASE_DIAGRAM_DEFAULTS.special_point_radius,
201
- )
176
+ update_config(`special_point_radius`, PHASE_DIAGRAM_DEFAULTS.special_point_radius)
202
177
  }}
203
178
  >
204
- {@render num_range(
205
- `Font size`,
206
- merged_config.font_size,
207
- 8,
208
- 20,
209
- 1,
210
- (val) => update_config(`font_size`, val),
211
- `Font size for axis labels and tick marks`,
212
- )}
179
+ <NumberRangeInput
180
+ min={8}
181
+ max={20}
182
+ step={1}
183
+ title="Font size for axis labels and tick marks"
184
+ bind:value={() => merged_config.font_size, (val) => update_config(`font_size`, val)}
185
+ >Font size</NumberRangeInput
186
+ >
213
187
  {#if has_special_points}
214
- {@render num_range(
215
- `Special pt radius`,
216
- merged_config.special_point_radius,
217
- 2,
218
- 12,
219
- 1,
220
- (val) => update_config(`special_point_radius`, val),
221
- `Radius of special point markers (eutectic, peritectic, etc.)`,
222
- )}
188
+ <NumberRangeInput
189
+ min={2}
190
+ max={12}
191
+ step={1}
192
+ title="Radius of special point markers (eutectic, peritectic, etc.)"
193
+ bind:value={
194
+ () => merged_config.special_point_radius,
195
+ (val) => update_config(`special_point_radius`, val)
196
+ }>Special pt radius</NumberRangeInput
197
+ >
223
198
  {/if}
224
199
  </SettingsSection>
225
200
 
226
201
  <!-- Colors Section -->
227
202
  {@const color_options = [
228
- [`background`, `#ffffff`, `Background`, `Background color of the plot area`],
229
- [`grid`, `#888888`, `Grid`, `Color of grid lines`],
230
- [`boundary`, `#333333`, `Boundaries`, `Color of phase boundary lines`],
231
- [`special_point`, `#d32f2f`, `Special Pts`, `Color of special point markers`],
232
- [`axis`, `#333333`, `Axis`, `Color of axis lines`],
233
- [`text`, `#333333`, `Text`, `Color of text labels`],
234
- ] as const}
203
+ [`background`, `#ffffff`, `Background`, `Background color of the plot area`],
204
+ [`grid`, `#888888`, `Grid`, `Color of grid lines`],
205
+ [`boundary`, `#333333`, `Boundaries`, `Color of phase boundary lines`],
206
+ [`special_point`, `#d32f2f`, `Special Pts`, `Color of special point markers`],
207
+ [`axis`, `#333333`, `Axis`, `Color of axis lines`],
208
+ [`text`, `#333333`, `Text`, `Color of text labels`],
209
+ ] as const}
235
210
  <SettingsSection
236
211
  title="Colors"
237
212
  current_values={{ ...merged_config.colors }}
@@ -281,40 +256,43 @@
281
256
  </label>
282
257
  </div>
283
258
  </span>
284
- {@render num_range(
285
- `Line width`,
286
- merged_config.tie_line.stroke_width,
287
- 0.5,
288
- 5,
289
- 0.5,
290
- (val) => update_nested(`tie_line`, `stroke_width`, val),
291
- `Thickness of the tie-line`,
292
- )}
293
- {@render num_range(
294
- `Endpoint radius`,
295
- merged_config.tie_line.endpoint_radius,
296
- 2,
297
- 10,
298
- 1,
299
- (val) => update_nested(`tie_line`, `endpoint_radius`, val),
300
- `Radius of phase boundary endpoint markers`,
301
- )}
302
- {@render num_range(
303
- `Cursor radius`,
304
- merged_config.tie_line.cursor_radius,
305
- 2,
306
- 10,
307
- 1,
308
- (val) => update_nested(`tie_line`, `cursor_radius`, val),
309
- `Radius of the cursor position marker`,
310
- )}
259
+ <NumberRangeInput
260
+ min={0.5}
261
+ max={5}
262
+ step={0.5}
263
+ title="Thickness of the tie-line"
264
+ bind:value={
265
+ () => merged_config.tie_line.stroke_width,
266
+ (val) => update_nested(`tie_line`, `stroke_width`, val)
267
+ }>Line width</NumberRangeInput
268
+ >
269
+ <NumberRangeInput
270
+ min={2}
271
+ max={10}
272
+ step={1}
273
+ title="Radius of phase boundary endpoint markers"
274
+ bind:value={
275
+ () => merged_config.tie_line.endpoint_radius,
276
+ (val) => update_nested(`tie_line`, `endpoint_radius`, val)
277
+ }>Endpoint radius</NumberRangeInput
278
+ >
279
+ <NumberRangeInput
280
+ min={2}
281
+ max={10}
282
+ step={1}
283
+ title="Radius of the cursor position marker"
284
+ bind:value={
285
+ () => merged_config.tie_line.cursor_radius,
286
+ (val) => update_nested(`tie_line`, `cursor_radius`, val)
287
+ }>Cursor radius</NumberRangeInput
288
+ >
311
289
  </SettingsSection>
312
290
 
313
291
  <!-- Axis Configuration Section -->
314
292
  {@const axis_configs = [
315
- [x_axis, `x`, comp_unit, `composition`],
316
- [y_axis, `y`, temp_unit, `temperature`],
317
- ] as const}
293
+ [x_axis, `x`, comp_unit, `composition`],
294
+ [y_axis, `y`, temp_unit, `temperature`],
295
+ ] as const}
318
296
  <SettingsSection
319
297
  title="Axes"
320
298
  current_values={{ x_ticks: x_axis.ticks, y_ticks: y_axis.ticks }}
@@ -353,7 +331,9 @@
353
331
  }}
354
332
  >
355
333
  <label
356
- {@attach tooltip({ content: `DPI (dots per inch) for PNG export. Higher values produce larger, higher-quality images.` })}
334
+ {@attach tooltip({
335
+ content: `DPI (dots per inch) for PNG export. Higher values produce larger, higher-quality images.`,
336
+ })}
357
337
  >
358
338
  PNG DPI
359
339
  <input
@@ -364,15 +344,11 @@
364
344
  style="width: 3.5em"
365
345
  bind:value={png_dpi}
366
346
  />
367
- <input
368
- type="range"
369
- min={72}
370
- max={600}
371
- step={50}
372
- bind:value={png_dpi}
373
- />
374
- <span style="font-size: 0.85em; opacity: 0.7">{format_num(png_dpi, `d`)}
375
- dpi</span>
347
+ <input type="range" min={72} max={600} step={50} bind:value={png_dpi} />
348
+ <span style="font-size: 0.85em; opacity: 0.7"
349
+ >{format_num(png_dpi, `d`)}
350
+ dpi</span
351
+ >
376
352
  </label>
377
353
  </SettingsSection>
378
354
  {/if}
@@ -26,6 +26,6 @@ type $$ComponentProps = Omit<ComponentProps<typeof DraggablePane>, `children`> &
26
26
  controls_open: boolean;
27
27
  }]>;
28
28
  };
29
- declare const PhaseDiagramControls: import("svelte").Component<$$ComponentProps, {}, "show_labels" | "y_axis" | "controls_open" | "x_axis" | "png_dpi" | "config" | "show_grid" | "show_boundaries" | "show_special_points" | "show_component_labels" | "lever_rule_mode">;
29
+ declare const PhaseDiagramControls: import("svelte").Component<$$ComponentProps, {}, "show_labels" | "y_axis" | "controls_open" | "x_axis" | "config" | "png_dpi" | "show_grid" | "show_boundaries" | "show_special_points" | "show_component_labels" | "lever_rule_mode">;
30
30
  type PhaseDiagramControls = ReturnType<typeof PhaseDiagramControls>;
31
31
  export default PhaseDiagramControls;
@@ -111,7 +111,8 @@
111
111
  animation: fade-out 3s ease-out forwards;
112
112
  }
113
113
  @keyframes fade-out {
114
- 0%, 80% {
114
+ 0%,
115
+ 80% {
115
116
  opacity: 1;
116
117
  }
117
118
  100% {
@@ -41,8 +41,7 @@
41
41
  )
42
42
 
43
43
  const svg = $derived(
44
- svg_element ??
45
- (wrapper?.querySelector(svg_query_selector) as SVGSVGElement | null),
44
+ svg_element ?? (wrapper?.querySelector(svg_query_selector) as SVGSVGElement | null),
46
45
  )
47
46
 
48
47
  const json_export_data = $derived(json_payload ?? data)
@@ -64,23 +63,24 @@
64
63
  label: `PNG`,
65
64
  disabled: !svg,
66
65
  show_dpi: true,
67
- on_download: () =>
68
- svg && export_svg_as_png(svg, `${full_filename}.png`, png_dpi),
66
+ on_download: () => svg && export_svg_as_png(svg, `${full_filename}.png`, png_dpi),
69
67
  },
70
68
  ],
71
69
  },
72
70
  {
73
71
  title: `Data`,
74
72
  tooltip: `Export phase diagram data as JSON`,
75
- items: [{
76
- label: `JSON`,
77
- disabled: !json_export_data,
78
- on_download: () => {
79
- const content = json_string()
80
- if (content) download(content, `${full_filename}.json`, `application/json`)
73
+ items: [
74
+ {
75
+ label: `JSON`,
76
+ disabled: !json_export_data,
77
+ on_download: () => {
78
+ const content = json_string()
79
+ if (content) download(content, `${full_filename}.json`, `application/json`)
80
+ },
81
+ copy_text: json_string,
81
82
  },
82
- copy_text: json_string,
83
- }],
83
+ ],
84
84
  },
85
85
  ])
86
86
  </script>
@@ -51,8 +51,7 @@
51
51
  const safe_formula = (comp: string) => sanitize_formula(comp, use_subscripts)
52
52
 
53
53
  // Convert a temperature from data unit to display unit
54
- const to_display = (temp: number): number =>
55
- convert_temp(temp, data_unit, temperature_unit)
54
+ const to_display = (temp: number): number => convert_temp(temp, data_unit, temperature_unit)
56
55
 
57
56
  // Convert atomic fraction to weight fraction: wt_B = (x_B * M_B) / (x_A * M_A + x_B * M_B)
58
57
  const wt_fraction_b = $derived.by(() => {
@@ -136,14 +135,8 @@
136
135
  phase_b: vlr.top_phase,
137
136
  fraction_a: vlr.fraction_bottom,
138
137
  fraction_b: vlr.fraction_top,
139
- detail_a: format_temperature(
140
- to_display(vlr.bottom_temperature),
141
- temperature_unit,
142
- ),
143
- detail_b: format_temperature(
144
- to_display(vlr.top_temperature),
145
- temperature_unit,
146
- ),
138
+ detail_a: format_temperature(to_display(vlr.bottom_temperature), temperature_unit),
139
+ detail_b: format_temperature(to_display(vlr.top_temperature), temperature_unit),
147
140
  }
148
141
  }
149
142
  if (lever_rule_mode === `horizontal` && hover_info.lever_rule) {
@@ -165,10 +158,14 @@
165
158
  <TooltipContent data={hover_info} snippet_arg={hover_info} {tooltip}>
166
159
  <div class="phase-diagram-tooltip">
167
160
  <header>
168
- <strong>{@html sanitize_html(format_label_html(hover_info.region.name, use_subscripts))}</strong>
169
- {#if special_point_info}<span class="special-point-badge">{
170
- special_point_info.badge
171
- }</span>{/if}
161
+ <strong
162
+ >{@html sanitize_html(
163
+ format_label_html(hover_info.region.name, use_subscripts),
164
+ )}</strong
165
+ >
166
+ {#if special_point_info}<span class="special-point-badge"
167
+ >{special_point_info.badge}</span
168
+ >{/if}
172
169
  </header>
173
170
 
174
171
  {#if special_point_info?.description}
@@ -178,54 +175,51 @@
178
175
  <dl>
179
176
  <dt>Temperature</dt>
180
177
  <dd>
181
- {
182
- format_temperature(
183
- to_display(hover_info.temperature),
184
- temperature_unit,
185
- )
186
- }
178
+ {format_temperature(to_display(hover_info.temperature), temperature_unit)}
187
179
  {#if temperature_unit !== `°C`}
188
- <small>({
189
- format_temperature(
190
- convert_temp(hover_info.temperature, data_unit, `°C`),
191
- `°C`,
192
- )
193
- })</small>
180
+ <small
181
+ >({format_temperature(
182
+ convert_temp(hover_info.temperature, data_unit, `°C`),
183
+ `°C`,
184
+ )})</small
185
+ >
194
186
  {/if}
195
187
  </dd>
196
188
  <dt>Composition</dt>
197
189
  <dd>
198
190
  {format_composition(hover_info.composition, composition_unit)}
199
191
  {@html safe_formula(component_b)}
200
- <small>({format_composition(1 - hover_info.composition, composition_unit)}
201
- {@html safe_formula(component_a)})</small>
192
+ <small
193
+ >({format_composition(1 - hover_info.composition, composition_unit)}
194
+ {@html safe_formula(component_a)})</small
195
+ >
202
196
  </dd>
203
197
  {#if wt_fraction_b !== null}
204
198
  <dt>Weight</dt>
205
199
  <dd>
206
200
  {format_num(wt_fraction_b * 100, `.1f`)}%
207
201
  {@html safe_formula(component_b)}
208
- <small>({format_num((1 - wt_fraction_b) * 100, `.1f`)}%
209
- {@html safe_formula(component_a)})</small>
202
+ <small
203
+ >({format_num((1 - wt_fraction_b) * 100, `.1f`)}%
204
+ {@html safe_formula(component_a)})</small
205
+ >
210
206
  </dd>
211
207
  {/if}
212
208
  {#if stability}
213
- <dt>Stable</dt><dd>
214
- {format_num(to_display(stability.t_min), `.0f`)} – {
215
- format_num(to_display(stability.t_max), `.0f`)
216
- } {temperature_unit}
209
+ <dt>Stable</dt>
210
+ <dd>
211
+ {format_num(to_display(stability.t_min), `.0f`)} – {format_num(
212
+ to_display(stability.t_max),
213
+ `.0f`,
214
+ )}
215
+ {temperature_unit}
217
216
  {#if temperature_unit !== `°C`}
218
- <small>({
219
- format_num(
220
- convert_temp(stability.t_min, data_unit, `°C`),
221
- `.0f`,
222
- )
223
- } – {
224
- format_num(
225
- convert_temp(stability.t_max, data_unit, `°C`),
226
- `.0f`,
227
- )
228
- } °C)</small>
217
+ <small
218
+ >({format_num(convert_temp(stability.t_min, data_unit, `°C`), `.0f`)} – {format_num(
219
+ convert_temp(stability.t_max, data_unit, `°C`),
220
+ `.0f`,
221
+ )} °C)</small
222
+ >
229
223
  {/if}
230
224
  </dd>
231
225
  {/if}
@@ -239,22 +233,22 @@
239
233
  <div
240
234
  style:width="{ld.fraction_a * 100}%"
241
235
  title="{ld.phase_a}: {format_num(ld.fraction_a * 100, `.1f`)}%"
242
- >
243
- </div>
236
+ ></div>
244
237
  <div
245
238
  style:width="{ld.fraction_b * 100}%"
246
239
  title="{ld.phase_b}: {format_num(ld.fraction_b * 100, `.1f`)}%"
247
- >
248
- </div>
240
+ ></div>
249
241
  <i style:left="{ld.fraction_a * 100}%"></i>
250
242
  </div>
251
243
  <div class="phase-info">
252
- <span>{@html safe_formula(ld.phase_a)}: {
253
- format_num(ld.fraction_a * 100, `.0f`)
254
- }% <small>at {ld.detail_a}</small></span>
255
- <span>{@html safe_formula(ld.phase_b)}: {
256
- format_num(ld.fraction_b * 100, `.0f`)
257
- }% <small>at {ld.detail_b}</small></span>
244
+ <span
245
+ >{@html safe_formula(ld.phase_a)}: {format_num(ld.fraction_a * 100, `.0f`)}%
246
+ <small>at {ld.detail_a}</small></span
247
+ >
248
+ <span
249
+ >{@html safe_formula(ld.phase_b)}: {format_num(ld.fraction_b * 100, `.0f`)}%
250
+ <small>at {ld.detail_b}</small></span
251
+ >
258
252
  </div>
259
253
  </div>
260
254
  {/if}
@@ -263,11 +257,13 @@
263
257
  {@const { type, delta_t } = boundary_distance}
264
258
  {@const label = delta_t > 0 ? `above` : `below`}
265
259
  {@const display_delta = Math.abs(
266
- to_display(hover_info.temperature) -
267
- to_display(hover_info.temperature - delta_t),
260
+ to_display(hover_info.temperature) - to_display(hover_info.temperature - delta_t),
268
261
  )}
269
262
  <div class="boundary-info">
270
- {Math.round(display_delta)} {temperature_unit} {label} {type}
263
+ {Math.round(display_delta)}
264
+ {temperature_unit}
265
+ {label}
266
+ {type}
271
267
  </div>
272
268
  {/if}
273
269
  </div>
@@ -20,12 +20,8 @@
20
20
  style = ``,
21
21
  }: Props = $props()
22
22
 
23
- const reference = $derived(
24
- result.data ? extract_tdb_reference(result.data.comments) : null,
25
- )
26
- const model_summary = $derived(
27
- result.data ? summarize_models(result.data.phases) : null,
28
- )
23
+ const reference = $derived(result.data ? extract_tdb_reference(result.data.comments) : null)
24
+ const model_summary = $derived(result.data ? summarize_models(result.data.phases) : null)
29
25
  </script>
30
26
 
31
27
  <div class="tdb-info-panel" {style}>
@@ -38,23 +34,30 @@
38
34
  <dt>System</dt>
39
35
  <dd>{sys}</dd>
40
36
  <dt>Phases</dt>
41
- <dd class="phases">{#each phases as { name } (name)}<span>{name}</span>{/each}</dd>
42
- {#if model_summary}<dt>Models</dt><dd>{model_summary}</dd>{/if}
37
+ <dd class="phases">
38
+ {#each phases as { name } (name)}<span>{name}</span>{/each}
39
+ </dd>
40
+ {#if model_summary}<dt>Models</dt>
41
+ <dd>{model_summary}</dd>{/if}
43
42
  <dt>Funcs / Params</dt>
44
43
  <dd>{functions.length} / {parameters.length}</dd>
45
44
  {#if result.temperature_range}
46
45
  {@const [t_min, t_max] = result.temperature_range}
47
- <dt>T Range</dt><dd>{t_min} – {t_max} K</dd>
46
+ <dt>T Range</dt>
47
+ <dd>{t_min} – {t_max} K</dd>
48
48
  {/if}
49
- {#if reference}<dt>Ref</dt><dd class="ref" title={reference}>{reference}</dd>{/if}
49
+ {#if reference}<dt>Ref</dt>
50
+ <dd class="ref" title={reference}>{reference}</dd>{/if}
50
51
  </dl>
51
52
 
52
53
  {#if has_precomputed}
53
54
  <p class="notice success">
54
55
  ✓ {#if is_precomputed_loaded}
55
56
  <strong>Phase diagram loaded</strong> ({sys}.json)
56
- <small>TDB contains model parameters. Boundaries computed offline via
57
- <a href="https://pycalphad.org" target="_blank">pycalphad</a>.</small>
57
+ <small
58
+ >TDB contains model parameters. Boundaries computed offline via
59
+ <a href="https://pycalphad.org" target="_blank">pycalphad</a>.</small
60
+ >
58
61
  {:else}
59
62
  Pre-computed diagram available!
60
63
  {#if on_load_precomputed}
@@ -71,16 +74,19 @@
71
74
  <div class="notice warning">
72
75
  <p>
73
76
  ℹ No pre-computed diagram. Use <a href="https://pycalphad.org" target="_blank"
74
- >pycalphad</a>:
77
+ >pycalphad</a
78
+ >:
75
79
  </p>
76
80
  <pre>
77
- <code>from pycalphad import Database, binplot
81
+ <code
82
+ >from pycalphad import Database, binplot
78
83
  import pycalphad.variables as v
79
84
 
80
85
  db = Database('{tdb}.tdb')
81
86
  binplot(db, ['{el_a}', '{el_b}', 'VA'], list(db.phases.keys()), {`{`}
82
87
  v.X('{el_b}'): (0, 1, 0.01), v.T: (300, 2000, 10), v.P: 101325, v.N: 1
83
- })</code></pre>
88
+ })</code
89
+ ></pre>
84
90
  </div>
85
91
  {/if}
86
92
  {:else}
@@ -19,11 +19,11 @@ export function parse_curve_ref(ref) {
19
19
  name = name.slice(1);
20
20
  }
21
21
  // Check for slice suffix [start:end]
22
- const slice_match = /^(.+)\[(-?\d*):(-?\d*)\]$/.exec(name);
22
+ const slice_match = /^(?<base>.+)\[(?<start>-?\d*):(?<end>-?\d*)\]$/.exec(name);
23
23
  if (slice_match) {
24
24
  name = slice_match[1];
25
- start = slice_match[2] ? parseInt(slice_match[2], 10) : null;
26
- end = slice_match[3] ? parseInt(slice_match[3], 10) : null;
25
+ start = slice_match[2] ? Number(slice_match[2]) : null;
26
+ end = slice_match[3] ? Number(slice_match[3]) : null;
27
27
  }
28
28
  return { name, reverse, start, end };
29
29
  }
@@ -147,12 +147,7 @@ export function build_diagram(input) {
147
147
  title: meta.title,
148
148
  regions: built_regions,
149
149
  boundaries,
150
- special_points: special_points?.map((sp) => ({
151
- id: sp.id,
152
- type: sp.type,
153
- position: sp.position,
154
- label: sp.label,
155
- })),
150
+ special_points,
156
151
  ...(meta.pseudo_binary && { pseudo_binary: meta.pseudo_binary }),
157
152
  ...(meta.x_axis_label && { x_axis_label: meta.x_axis_label }),
158
153
  ...(meta.y_axis_label && { y_axis_label: meta.y_axis_label }),
@@ -20,10 +20,9 @@ export interface RegionInput {
20
20
  bounds: BoundElement[];
21
21
  label_position?: DiagramPoint;
22
22
  }
23
- export type SpecialPointInput = SpecialPoint;
24
23
  export interface DiagramInput {
25
24
  meta: DiagramInputMeta;
26
25
  curves: Record<string, DiagramPoint[]>;
27
26
  regions: RegionInput[];
28
- special_points?: SpecialPointInput[];
27
+ special_points?: SpecialPoint[];
29
28
  }