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
@@ -0,0 +1,279 @@
1
+ // Shared canvas-interaction scaffold (runes-in-closure factory) for ConvexHull3D/4D.
2
+ import { set_fullscreen_bg, setup_fullscreen_effect } from '../layout';
3
+ import * as helpers from './helpers';
4
+ export function create_canvas_interactions(inputs) {
5
+ const [zoom_min, zoom_max] = inputs.wheel_clamp;
6
+ // Performance optimization: coalesce renders into one rAF
7
+ let frame_id = 0;
8
+ // Interaction state
9
+ let is_dragging = $state(false);
10
+ let drag_started = $state(false);
11
+ let last_mouse = $state({ x: 0, y: 0 });
12
+ let hover_data = $state.raw(null);
13
+ let copy_feedback = $state({ visible: false, position: { x: 0, y: 0 } });
14
+ // Drag and drop state
15
+ let drag_over = $state(false);
16
+ // Structure popup state
17
+ let modal_open = $state(false);
18
+ let selected_structure = $state(null);
19
+ let modal_place_right = $state(true);
20
+ // Keep selection, hover, and popup pointing at current plot entry objects
21
+ $effect(() => {
22
+ const current_selection = helpers.current_entry(inputs.selected_entry(), inputs.plot_entries());
23
+ if (inputs.selected_entry() && !current_selection)
24
+ inputs.set_selected_entry(null);
25
+ else if (current_selection &&
26
+ !helpers.same_entry(current_selection, inputs.selected_entry()))
27
+ inputs.set_selected_entry(current_selection);
28
+ const current_hover = helpers.current_entry(hover_data?.entry, inputs.plot_entries());
29
+ if (hover_data?.entry && !current_hover) {
30
+ hover_data = null;
31
+ inputs.on_point_hover()?.(null);
32
+ }
33
+ else if (hover_data && current_hover && current_hover !== hover_data.entry) {
34
+ hover_data = { ...hover_data, entry: current_hover };
35
+ }
36
+ if (modal_open) {
37
+ const structure = current_selection && inputs.extract_structure(current_selection);
38
+ if (structure)
39
+ selected_structure = structure;
40
+ else {
41
+ modal_open = false;
42
+ selected_structure = null;
43
+ }
44
+ }
45
+ });
46
+ // Shared selection logic for click and Enter key
47
+ function select_entry(entry) {
48
+ inputs.on_point_click()?.(entry);
49
+ if (inputs.enable_click_selection()) {
50
+ inputs.set_selected_entry(entry);
51
+ if (inputs.enable_structure_preview()) {
52
+ const structure = inputs.extract_structure(entry);
53
+ if (structure) {
54
+ selected_structure = structure;
55
+ modal_place_right = helpers.calculate_modal_side(inputs.wrapper());
56
+ modal_open = true;
57
+ }
58
+ }
59
+ }
60
+ }
61
+ const handle_keydown = (event) => {
62
+ const target = event.target;
63
+ if (target instanceof HTMLElement && /INPUT|TEXTAREA/.test(target.tagName))
64
+ return;
65
+ // Stop canvas-originated keydown re-running on wrapper (both have onkeydown)
66
+ if (target === inputs.canvas())
67
+ event.stopPropagation();
68
+ if (event.key === `Escape` && modal_open) {
69
+ close_structure_popup();
70
+ return;
71
+ }
72
+ // Handle Enter for keyboard accessibility - select hovered entry
73
+ if (event.key === `Enter`) {
74
+ const entry = hover_data?.entry;
75
+ if (entry)
76
+ select_entry(entry);
77
+ else if (modal_open)
78
+ close_structure_popup();
79
+ return;
80
+ }
81
+ inputs.actions()[event.key.toLowerCase()]?.();
82
+ };
83
+ async function handle_file_drop(event) {
84
+ drag_over = false;
85
+ const data = await helpers.parse_hull_entries_from_drop(event);
86
+ if (data)
87
+ inputs.on_file_drop()?.(data);
88
+ }
89
+ const set_drag_over = (over) => (event) => {
90
+ event.preventDefault();
91
+ drag_over = over;
92
+ };
93
+ const handle_drag_over = set_drag_over(true);
94
+ const handle_drag_leave = set_drag_over(false);
95
+ async function copy_entry_data(entry, position) {
96
+ await helpers.copy_entry_to_clipboard(entry, position, (visible, pos) => {
97
+ copy_feedback.visible = visible;
98
+ copy_feedback.position = pos;
99
+ }, inputs.entry_category());
100
+ }
101
+ function handle_mouse_down(event) {
102
+ is_dragging = true;
103
+ drag_started = false;
104
+ hover_data = null;
105
+ inputs.on_point_hover()?.(null);
106
+ last_mouse = { x: event.clientX, y: event.clientY };
107
+ }
108
+ const handle_mouse_move = (event) => {
109
+ if (!is_dragging)
110
+ return;
111
+ const [dx, dy] = [event.clientX - last_mouse.x, event.clientY - last_mouse.y];
112
+ // Mark as drag if any movement occurred
113
+ if (dx !== 0 || dy !== 0)
114
+ drag_started = true;
115
+ // With Cmd/Ctrl held: pan the view instead of rotating
116
+ inputs.on_drag(dx, dy, event.metaKey || event.ctrlKey);
117
+ last_mouse = { x: event.clientX, y: event.clientY };
118
+ };
119
+ const handle_mouse_up = () => {
120
+ // leave drag_started set so the trailing click can detect a concluded drag;
121
+ // handle_click reads then clears it, and handle_mouse_down resets it next interaction
122
+ is_dragging = false;
123
+ };
124
+ const handle_wheel = (event) => {
125
+ event.preventDefault();
126
+ const zoomed = inputs.zoom() * (event.deltaY > 0 ? 0.98 : 1.02);
127
+ inputs.set_zoom(Math.max(zoom_min, Math.min(zoom_max, zoomed)));
128
+ };
129
+ const handle_hover = (event) => {
130
+ if (is_dragging)
131
+ return;
132
+ const entry = find_entry_at_mouse(event);
133
+ hover_data = entry ? { entry, position: { x: event.clientX, y: event.clientY } } : null;
134
+ inputs.on_point_hover()?.(hover_data);
135
+ };
136
+ const find_entry_at_mouse = (event) => helpers.find_hull_entry_at_mouse(inputs.canvas(), event, inputs.visible_entries(), inputs.project_point);
137
+ const handle_click = (event) => {
138
+ event.stopPropagation();
139
+ const was_drag = drag_started; // Check if this was a drag operation (any mouse movement during drag)
140
+ drag_started = false; // Reset for next interaction
141
+ if (was_drag)
142
+ return; // Don't trigger click if this was a drag
143
+ const entry = find_entry_at_mouse(event);
144
+ if (!entry) {
145
+ if (modal_open)
146
+ close_structure_popup();
147
+ return;
148
+ }
149
+ select_entry(entry);
150
+ };
151
+ function close_structure_popup() {
152
+ modal_open = false;
153
+ selected_structure = null;
154
+ inputs.set_selected_entry(null);
155
+ }
156
+ const handle_double_click = (event) => {
157
+ const entry = find_entry_at_mouse(event);
158
+ if (entry)
159
+ void copy_entry_data(entry, { x: event.clientX, y: event.clientY });
160
+ };
161
+ function render_once() {
162
+ if (frame_id)
163
+ return;
164
+ frame_id = requestAnimationFrame(() => {
165
+ inputs.render_frame();
166
+ frame_id = 0;
167
+ });
168
+ }
169
+ function update_canvas_size() {
170
+ const canvas = inputs.canvas();
171
+ if (!canvas)
172
+ return;
173
+ const dpr = globalThis.devicePixelRatio || 1;
174
+ const container = canvas.parentElement;
175
+ const rect = container?.getBoundingClientRect();
176
+ const [width, height] = rect ? [rect.width, rect.height] : [400, 400];
177
+ // Only update canvas dimensions if they actually changed
178
+ // (assigning canvas.width/height clears the canvas even if values are the same)
179
+ const new_width = Math.max(0, Math.round(width * dpr));
180
+ const new_height = Math.max(0, Math.round(height * dpr));
181
+ if (!inputs.ctx() || canvas.width !== new_width || canvas.height !== new_height) {
182
+ canvas.width = new_width;
183
+ canvas.height = new_height;
184
+ const ctx = canvas.getContext(`2d`);
185
+ inputs.set_ctx(ctx);
186
+ if (ctx) {
187
+ ctx.setTransform(dpr, 0, 0, dpr, 0, 0);
188
+ ctx.imageSmoothingEnabled = true;
189
+ ctx.imageSmoothingQuality = `high`;
190
+ }
191
+ }
192
+ inputs.set_canvas_dims({ width, height, scale: Math.min(width, height) / 600 });
193
+ render_once();
194
+ }
195
+ $effect(() => {
196
+ const canvas = inputs.canvas();
197
+ if (!canvas)
198
+ return undefined;
199
+ update_canvas_size(); // Initial setup
200
+ // Watch for resize events - only update canvas, don't reset camera
201
+ const resize_observer = new ResizeObserver(update_canvas_size);
202
+ const container = canvas.parentElement;
203
+ if (container)
204
+ resize_observer.observe(container);
205
+ return () => {
206
+ if (frame_id)
207
+ cancelAnimationFrame(frame_id);
208
+ resize_observer.disconnect(); // Cleanup on unmount
209
+ };
210
+ });
211
+ // Fullscreen handling with camera reset
212
+ let was_fullscreen = $state(inputs.fullscreen());
213
+ $effect(() => {
214
+ setup_fullscreen_effect(inputs.fullscreen(), inputs.wrapper(), (entering) => {
215
+ if (entering !== was_fullscreen) {
216
+ inputs.on_fullscreen_change();
217
+ was_fullscreen = entering;
218
+ }
219
+ });
220
+ set_fullscreen_bg(inputs.wrapper(), inputs.fullscreen(), inputs.fullscreen_bg_var);
221
+ });
222
+ // Performance: Pre-compute and cache all point projections + depth sorting
223
+ const sorted_points_cache = $derived.by(() => {
224
+ if (!inputs.canvas() || inputs.visible_entries().length === 0)
225
+ return [];
226
+ return inputs
227
+ .visible_entries()
228
+ .map((entry) => ({
229
+ entry,
230
+ projected: inputs.project_point(entry.x, entry.y, entry.z),
231
+ }))
232
+ .sort((left, right) => left.projected.depth - right.projected.depth);
233
+ });
234
+ return {
235
+ get is_dragging() {
236
+ return is_dragging;
237
+ },
238
+ get hover_data() {
239
+ return hover_data;
240
+ },
241
+ get drag_over() {
242
+ return drag_over;
243
+ },
244
+ get modal_open() {
245
+ return modal_open;
246
+ },
247
+ get selected_structure() {
248
+ return selected_structure;
249
+ },
250
+ get modal_place_right() {
251
+ return modal_place_right;
252
+ },
253
+ get sorted_points_cache() {
254
+ return sorted_points_cache;
255
+ },
256
+ copy_feedback, // stable $state proxy; mutated in place for ClickFeedback binding
257
+ // Event handler groups, spread onto their target elements by ConvexHull3D/4D
258
+ canvas_handlers: {
259
+ onmousedown: handle_mouse_down,
260
+ onmousemove: handle_hover,
261
+ onclick: handle_click,
262
+ onkeydown: handle_keydown,
263
+ ondblclick: handle_double_click,
264
+ onwheel: handle_wheel,
265
+ },
266
+ wrapper_handlers: {
267
+ onkeydown: handle_keydown,
268
+ ondrop: handle_file_drop,
269
+ ondragover: handle_drag_over,
270
+ ondragleave: handle_drag_leave,
271
+ },
272
+ // document-level so drags continue outside the canvas; attached individually
273
+ // since <svelte:document> rejects spread attributes
274
+ handle_mouse_move,
275
+ handle_mouse_up,
276
+ close_structure_popup,
277
+ render_once,
278
+ };
279
+ }
@@ -1,25 +1,39 @@
1
1
  import { type D3InterpolateName } from '../colors';
2
2
  import type { EnergyModeInfo } from './';
3
3
  import type { ElementSymbol } from '../element';
4
- import type { ConvexHullConfig, GasAnalysis, GasThermodynamicsConfig, HighlightStyle, MarkerSymbol, PhaseData } from './types';
5
- import { DEFAULT_GAS_TEMP } from './types';
6
- export { DEFAULT_GAS_TEMP };
4
+ import type { AnyStructure } from '../structure';
5
+ import type { ConvexHullConfig, EntryCategoryConfig, GasAnalysis, GasThermodynamicsConfig, HighlightStyle, MarkerSymbol, PhaseData } from './types';
6
+ export { DEFAULT_GAS_TEMP } from './types';
7
7
  export declare const HULL_STABILITY_TOL = 0.000001;
8
- export declare function compute_hull_stability(raw_distance: number, exclude_from_hull?: boolean, tol?: number): {
9
- e_above_hull: number;
10
- is_stable: boolean;
8
+ export declare function compute_hull_stability(raw_distance: number | null | undefined, exclude_from_hull?: boolean, tol?: number): {
9
+ e_above_hull: number | undefined;
10
+ is_stable: boolean | undefined;
11
11
  };
12
12
  type StabilityEntry = {
13
13
  is_stable?: boolean;
14
14
  e_above_hull?: number;
15
15
  };
16
+ export declare const extract_structure_from_entry: (entries: PhaseData[], entry: {
17
+ entry_id?: string;
18
+ }) => AnyStructure | null;
19
+ export declare const array_min: (values: readonly number[]) => number;
20
+ export declare const array_max: (values: readonly number[]) => number;
21
+ export declare const hull_distance_range: (entries: PhaseData[]) => [number, number];
16
22
  export declare const entry_is_stable: (entry: StabilityEntry, tol?: number) => boolean;
23
+ export declare const entry_within_hull_dist: (entry: StabilityEntry, max_dist: number) => boolean;
17
24
  export declare const is_on_hull: (entry: PhaseData, tol?: number) => boolean;
18
25
  export declare const get_arity: (entry: PhaseData) => number;
19
26
  export declare const is_unary_entry: (entry: PhaseData) => boolean;
20
27
  export declare const entry_is_unstable: (entry: StabilityEntry) => boolean;
21
- export declare const entry_is_visible: (entry: StabilityEntry, show_stable: boolean, show_unstable: boolean) => boolean;
22
- export declare const visible_entries: <Entry extends StabilityEntry>(entries: readonly Entry[], show_stable: boolean, show_unstable: boolean) => Entry[];
28
+ type CategorySource = Pick<PhaseData, `data` | `attributes`>;
29
+ export declare function get_entry_category(entry: CategorySource, config: EntryCategoryConfig | null | undefined): string | null;
30
+ export declare function apply_category_markers(entries: (PhaseData & {
31
+ marker?: MarkerSymbol;
32
+ })[], config: EntryCategoryConfig | null | undefined): (PhaseData & {
33
+ marker?: MarkerSymbol;
34
+ })[];
35
+ export declare const entry_is_visible: (entry: StabilityEntry & CategorySource, show_stable: boolean, show_unstable: boolean, category?: EntryCategoryConfig | null, hidden_categories?: readonly string[]) => boolean;
36
+ export declare const visible_entries: <Entry extends StabilityEntry & CategorySource>(entries: readonly Entry[], show_stable: boolean, show_unstable: boolean, category?: EntryCategoryConfig | null, hidden_categories?: readonly string[]) => Entry[];
23
37
  export declare function get_energy_color_scale(color_mode: `stability` | `energy`, color_scale: D3InterpolateName, plot_entries: {
24
38
  e_above_hull?: number;
25
39
  }[]): ((value: number) => string) | null;
@@ -37,7 +51,7 @@ export declare function current_entry<Entry extends {
37
51
  export declare function same_entry<Entry extends {
38
52
  entry_id?: string;
39
53
  }>(a: Entry | null | undefined, b: Entry | null | undefined): boolean;
40
- export declare function build_entry_tooltip_text(entry: PhaseData): string;
54
+ export declare function build_entry_tooltip_text(entry: PhaseData, category?: EntryCategoryConfig | null): string;
41
55
  export declare function find_hull_entry_at_mouse<T extends {
42
56
  x: number;
43
57
  y: number;
@@ -49,6 +63,7 @@ export declare function find_hull_entry_at_mouse<T extends {
49
63
  x: number;
50
64
  y: number;
51
65
  }): T | null;
66
+ export declare const hull_style_css: (colors: ConvexHullConfig[`colors`] | undefined) => string;
52
67
  export declare function calculate_modal_side(wrapper: HTMLDivElement | undefined): boolean;
53
68
  export declare function compute_energy_mode_info(entries: PhaseData[], // Array of phase entries to analyze
54
69
  find_lowest_energy_unary_refs_fn: (entries: PhaseData[]) => Record<string, PhaseData>, // Function to find unary references
@@ -63,7 +78,7 @@ export declare function copy_entry_to_clipboard(entry: PhaseData, position: {
63
78
  }, on_feedback: (visible: boolean, pos: {
64
79
  x: number;
65
80
  y: number;
66
- }) => void): Promise<void>;
81
+ }) => void, category?: EntryCategoryConfig | null): Promise<void>;
67
82
  export declare const DEFAULT_HIGHLIGHT_STYLE: Required<HighlightStyle>;
68
83
  export declare const merge_highlight_style: (custom_style: HighlightStyle | undefined) => Required<HighlightStyle>;
69
84
  export declare function is_entry_highlighted<T extends {
@@ -88,6 +103,27 @@ export declare function draw_selection_highlight(ctx: CanvasRenderingContext2D,
88
103
  y: number;
89
104
  }, base_size: number, container_scale: number, pulse_time: number, pulse_opacity: number): void;
90
105
  export declare function get_canvas_text_color(dark_mode: boolean, element?: HTMLElement | null): string;
106
+ export declare function draw_hull_points<Entry extends PhaseData & {
107
+ z: number;
108
+ size?: number;
109
+ marker?: MarkerSymbol;
110
+ }>(ctx: CanvasRenderingContext2D, sorted_points: {
111
+ entry: Entry;
112
+ projected: {
113
+ x: number;
114
+ y: number;
115
+ };
116
+ }[], opts: {
117
+ scale: number;
118
+ shadow_factor: number;
119
+ selected_entry: Entry | null;
120
+ is_highlighted: (entry: Entry) => boolean;
121
+ get_point_color: (entry: Entry) => string;
122
+ highlight_style: Required<HighlightStyle>;
123
+ pulse_time: number;
124
+ pulse_opacity: number;
125
+ }): void;
126
+ export declare function marker_path_data(radius: number, marker: MarkerSymbol): string | null;
91
127
  export declare function create_marker_path(size: number, marker?: MarkerSymbol): Path2D;
92
128
  export interface TemperatureAnalysis {
93
129
  has_temp_data: boolean;
@@ -103,15 +139,9 @@ export interface TemperatureFilterOptions {
103
139
  max_interpolation_gap?: number;
104
140
  }
105
141
  export declare function filter_entries_at_temperature(entries: PhaseData[], T: number, options?: TemperatureFilterOptions): PhaseData[];
106
- export declare function safe_analyze_gas_data(entries: PhaseData[], config?: GasThermodynamicsConfig): GasAnalysis;
107
- export declare function safe_apply_gas_corrections(entries: PhaseData[], config: GasThermodynamicsConfig | undefined, T: number): PhaseData[];
108
142
  export declare function get_gas_corrected_entries(entries: PhaseData[], gas_config: GasThermodynamicsConfig | undefined, gas_pressures: Partial<Record<string, number>>, temperature: number): {
109
143
  entries: PhaseData[];
110
144
  analysis: GasAnalysis;
111
145
  merged_config: GasThermodynamicsConfig | undefined;
112
146
  };
113
- export declare function get_entry_label(entry: {
114
- reduced_formula?: string;
115
- name?: string;
116
- composition: Record<string, number>;
117
- }, elements?: ElementSymbol[]): string;
147
+ export declare function get_entry_label(entry: Pick<PhaseData, `reduced_formula` | `name` | `composition`>, elements?: ElementSymbol[]): string;