matterviz 0.3.4 → 0.3.6

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 (852) hide show
  1. package/.vscode/launch.json +13 -0
  2. package/.vscodeignore +7 -0
  3. package/dist/assets/STLExporter-BpTH3YHE.js +8 -0
  4. package/dist/assets/browser-DdDecX_W.js +1 -0
  5. package/dist/assets/export-qgn-H9y6.js +2 -0
  6. package/dist/assets/main-DiKYzti2.css +1 -0
  7. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  8. package/dist/extension.js +31293 -0
  9. package/dist/src/lib/FilePicker.svelte +360 -0
  10. package/dist/src/lib/MillerIndexInput.svelte +66 -0
  11. package/dist/src/lib/api/mp.ts +26 -0
  12. package/dist/src/lib/api/optimade.ts +204 -0
  13. package/dist/src/lib/app.css +247 -0
  14. package/dist/src/lib/brillouin/BrillouinZone.svelte +549 -0
  15. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
  16. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
  17. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  18. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
  19. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
  20. package/dist/src/lib/brillouin/compute.ts +529 -0
  21. package/dist/src/lib/brillouin/index.ts +8 -0
  22. package/dist/src/lib/brillouin/types.ts +51 -0
  23. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
  24. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  25. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  26. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
  27. package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
  28. package/dist/src/lib/chempot-diagram/color.ts +42 -0
  29. package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
  30. package/dist/src/lib/chempot-diagram/index.ts +6 -0
  31. package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
  32. package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
  33. package/dist/src/lib/chempot-diagram/types.ts +130 -0
  34. package/dist/src/lib/colors/index.ts +249 -0
  35. package/dist/src/lib/composition/BarChart.svelte +297 -0
  36. package/dist/src/lib/composition/BubbleChart.svelte +218 -0
  37. package/dist/src/lib/composition/Composition.svelte +165 -0
  38. package/dist/src/lib/composition/Formula.svelte +268 -0
  39. package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
  40. package/dist/src/lib/composition/PieChart.svelte +323 -0
  41. package/dist/src/lib/composition/format.ts +155 -0
  42. package/dist/src/lib/composition/index.ts +37 -0
  43. package/dist/src/lib/composition/parse.ts +605 -0
  44. package/dist/src/lib/constants.ts +134 -0
  45. package/dist/src/lib/controls.ts +42 -0
  46. package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
  47. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
  48. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
  49. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
  50. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
  51. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
  52. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
  53. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
  54. package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
  55. package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
  56. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
  57. package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
  58. package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
  59. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
  60. package/dist/src/lib/convex-hull/helpers.ts +932 -0
  61. package/dist/src/lib/convex-hull/index.ts +202 -0
  62. package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
  63. package/dist/src/lib/convex-hull/types.ts +267 -0
  64. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
  65. package/dist/src/lib/coordination/calc-coordination.ts +93 -0
  66. package/dist/src/lib/coordination/index.ts +9 -0
  67. package/dist/src/lib/effects.svelte.ts +48 -0
  68. package/dist/src/lib/element/BohrAtom.svelte +147 -0
  69. package/dist/src/lib/element/ElementHeading.svelte +26 -0
  70. package/dist/src/lib/element/ElementPhoto.svelte +57 -0
  71. package/dist/src/lib/element/ElementStats.svelte +80 -0
  72. package/dist/src/lib/element/ElementTile.svelte +484 -0
  73. package/dist/src/lib/element/data.json.gz.d.ts +4 -0
  74. package/dist/src/lib/element/data.ts +14 -0
  75. package/dist/src/lib/element/index.ts +8 -0
  76. package/dist/src/lib/element/types.ts +62 -0
  77. package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
  78. package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
  79. package/dist/src/lib/feedback/index.ts +4 -0
  80. package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
  81. package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
  82. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
  83. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
  84. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  85. package/dist/src/lib/fermi-surface/compute.ts +728 -0
  86. package/dist/src/lib/fermi-surface/constants.ts +32 -0
  87. package/dist/src/lib/fermi-surface/export.ts +64 -0
  88. package/dist/src/lib/fermi-surface/index.ts +14 -0
  89. package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
  90. package/dist/src/lib/fermi-surface/parse.ts +574 -0
  91. package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
  92. package/dist/src/lib/fermi-surface/types.ts +159 -0
  93. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  94. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  95. package/dist/src/lib/heatmap-matrix/index.ts +167 -0
  96. package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
  97. package/dist/src/lib/icons.ts +650 -0
  98. package/dist/src/lib/index.ts +61 -0
  99. package/dist/src/lib/io/decompress.ts +92 -0
  100. package/dist/src/lib/io/export.ts +385 -0
  101. package/dist/src/lib/io/fetch.ts +46 -0
  102. package/dist/src/lib/io/file-drop.ts +51 -0
  103. package/dist/src/lib/io/index.ts +7 -0
  104. package/dist/src/lib/io/is-binary.ts +24 -0
  105. package/dist/src/lib/io/types.ts +8 -0
  106. package/dist/src/lib/io/url-drop.ts +141 -0
  107. package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
  108. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
  109. package/dist/src/lib/isosurface/index.ts +7 -0
  110. package/dist/src/lib/isosurface/parse.ts +656 -0
  111. package/dist/src/lib/isosurface/slice.ts +175 -0
  112. package/dist/src/lib/isosurface/types.ts +309 -0
  113. package/dist/src/lib/labels.ts +320 -0
  114. package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
  115. package/dist/src/lib/layout/InfoCard.svelte +120 -0
  116. package/dist/src/lib/layout/InfoTag.svelte +185 -0
  117. package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
  118. package/dist/src/lib/layout/SettingsSection.svelte +148 -0
  119. package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
  120. package/dist/src/lib/layout/fullscreen.ts +65 -0
  121. package/dist/src/lib/layout/index.ts +11 -0
  122. package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
  123. package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
  124. package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
  125. package/dist/src/lib/layout/json-tree/index.ts +3 -0
  126. package/dist/src/lib/layout/json-tree/types.ts +126 -0
  127. package/dist/src/lib/layout/json-tree/utils.ts +682 -0
  128. package/dist/src/lib/marching-cubes.ts +614 -0
  129. package/dist/src/lib/math.ts +1081 -0
  130. package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
  131. package/dist/src/lib/overlays/CopyButton.svelte +45 -0
  132. package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
  133. package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
  134. package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
  135. package/dist/src/lib/overlays/index.ts +3 -0
  136. package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
  137. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
  138. package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
  139. package/dist/src/lib/periodic-table/index.ts +12 -0
  140. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  141. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
  142. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  143. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  144. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  145. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
  146. package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
  147. package/dist/src/lib/phase-diagram/colors.ts +58 -0
  148. package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
  149. package/dist/src/lib/phase-diagram/index.ts +13 -0
  150. package/dist/src/lib/phase-diagram/parse.ts +348 -0
  151. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
  152. package/dist/src/lib/phase-diagram/types.ts +144 -0
  153. package/dist/src/lib/phase-diagram/utils.ts +775 -0
  154. package/dist/src/lib/plot/AxisLabel.svelte +51 -0
  155. package/dist/src/lib/plot/BarPlot.svelte +2113 -0
  156. package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
  157. package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
  158. package/dist/src/lib/plot/ColorBar.svelte +721 -0
  159. package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
  160. package/dist/src/lib/plot/ElementScatter.svelte +63 -0
  161. package/dist/src/lib/plot/FillArea.svelte +223 -0
  162. package/dist/src/lib/plot/Histogram.svelte +1558 -0
  163. package/dist/src/lib/plot/HistogramControls.svelte +212 -0
  164. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
  165. package/dist/src/lib/plot/Line.svelte +84 -0
  166. package/dist/src/lib/plot/PlotAxis.svelte +169 -0
  167. package/dist/src/lib/plot/PlotControls.svelte +537 -0
  168. package/dist/src/lib/plot/PlotLegend.svelte +569 -0
  169. package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
  170. package/dist/src/lib/plot/PortalSelect.svelte +253 -0
  171. package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
  172. package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
  173. package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
  174. package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
  175. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
  176. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
  177. package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
  178. package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
  179. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
  180. package/dist/src/lib/plot/Surface3D.svelte +197 -0
  181. package/dist/src/lib/plot/ZeroLines.svelte +97 -0
  182. package/dist/src/lib/plot/ZoomRect.svelte +23 -0
  183. package/dist/src/lib/plot/adaptive-density.ts +316 -0
  184. package/dist/src/lib/plot/auto-place.ts +184 -0
  185. package/dist/src/lib/plot/axis-utils.ts +122 -0
  186. package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
  187. package/dist/src/lib/plot/data-cleaning.ts +1069 -0
  188. package/dist/src/lib/plot/data-transform.ts +69 -0
  189. package/dist/src/lib/plot/defaults.ts +9 -0
  190. package/dist/src/lib/plot/fill-utils.ts +494 -0
  191. package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
  192. package/dist/src/lib/plot/index.ts +53 -0
  193. package/dist/src/lib/plot/interactions.ts +119 -0
  194. package/dist/src/lib/plot/layout.ts +425 -0
  195. package/dist/src/lib/plot/reference-line.ts +426 -0
  196. package/dist/src/lib/plot/scales.ts +654 -0
  197. package/dist/src/lib/plot/svg.ts +23 -0
  198. package/dist/src/lib/plot/types.ts +1144 -0
  199. package/dist/src/lib/plot/utils/label-placement.ts +541 -0
  200. package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
  201. package/dist/src/lib/plot/utils.ts +11 -0
  202. package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
  203. package/dist/src/lib/rdf/calc-rdf.ts +167 -0
  204. package/dist/src/lib/rdf/index.ts +27 -0
  205. package/dist/src/lib/sanitize.ts +126 -0
  206. package/dist/src/lib/settings.ts +1479 -0
  207. package/dist/src/lib/spectral/Bands.svelte +1040 -0
  208. package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
  209. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
  210. package/dist/src/lib/spectral/Dos.svelte +697 -0
  211. package/dist/src/lib/spectral/helpers.ts +1381 -0
  212. package/dist/src/lib/spectral/index.ts +8 -0
  213. package/dist/src/lib/spectral/types.ts +112 -0
  214. package/dist/src/lib/state.svelte.ts +64 -0
  215. package/dist/src/lib/structure/Arrow.svelte +72 -0
  216. package/dist/src/lib/structure/AtomLegend.svelte +815 -0
  217. package/dist/src/lib/structure/Bond.svelte +140 -0
  218. package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
  219. package/dist/src/lib/structure/CellSelect.svelte +349 -0
  220. package/dist/src/lib/structure/Cylinder.svelte +45 -0
  221. package/dist/src/lib/structure/Lattice.svelte +196 -0
  222. package/dist/src/lib/structure/Structure.svelte +2248 -0
  223. package/dist/src/lib/structure/StructureControls.svelte +1273 -0
  224. package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
  225. package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
  226. package/dist/src/lib/structure/StructureScene.svelte +2255 -0
  227. package/dist/src/lib/structure/atom-properties.ts +316 -0
  228. package/dist/src/lib/structure/bond-order-perception.ts +447 -0
  229. package/dist/src/lib/structure/bonding.ts +944 -0
  230. package/dist/src/lib/structure/export.ts +861 -0
  231. package/dist/src/lib/structure/index.ts +291 -0
  232. package/dist/src/lib/structure/label-placement.ts +130 -0
  233. package/dist/src/lib/structure/measure.ts +45 -0
  234. package/dist/src/lib/structure/parse.ts +1705 -0
  235. package/dist/src/lib/structure/partial-occupancy.ts +183 -0
  236. package/dist/src/lib/structure/pbc.ts +164 -0
  237. package/dist/src/lib/structure/supercell.ts +226 -0
  238. package/dist/src/lib/structure/validation.ts +11 -0
  239. package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
  240. package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
  241. package/dist/src/lib/symmetry/cell-transform.ts +118 -0
  242. package/dist/src/lib/symmetry/index.ts +348 -0
  243. package/dist/src/lib/symmetry/spacegroups.ts +404 -0
  244. package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
  245. package/dist/src/lib/table/ToggleMenu.svelte +385 -0
  246. package/dist/src/lib/table/index.ts +139 -0
  247. package/dist/src/lib/theme/ThemeControl.svelte +53 -0
  248. package/dist/src/lib/theme/index.ts +107 -0
  249. package/dist/src/lib/theme/themes.mjs +297 -0
  250. package/dist/src/lib/time.ts +71 -0
  251. package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
  252. package/dist/src/lib/tooltip/index.ts +2 -0
  253. package/dist/src/lib/tooltip/types.ts +13 -0
  254. package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
  255. package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
  256. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
  257. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
  258. package/dist/src/lib/trajectory/constants.ts +7 -0
  259. package/dist/src/lib/trajectory/extract.ts +196 -0
  260. package/dist/src/lib/trajectory/format-detect.ts +96 -0
  261. package/dist/src/lib/trajectory/frame-reader.ts +456 -0
  262. package/dist/src/lib/trajectory/helpers.ts +217 -0
  263. package/dist/src/lib/trajectory/index.ts +218 -0
  264. package/dist/src/lib/trajectory/parse/ase.ts +109 -0
  265. package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
  266. package/dist/src/lib/trajectory/parse/index.ts +411 -0
  267. package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
  268. package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
  269. package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
  270. package/dist/src/lib/trajectory/plotting.ts +599 -0
  271. package/dist/src/lib/trajectory/types.ts +13 -0
  272. package/dist/src/lib/utils.ts +56 -0
  273. package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
  274. package/dist/src/lib/xrd/broadening.ts +130 -0
  275. package/dist/src/lib/xrd/calc-xrd.ts +397 -0
  276. package/dist/src/lib/xrd/index.ts +38 -0
  277. package/dist/src/lib/xrd/parse.ts +858 -0
  278. package/dist/webview.js +29421 -0
  279. package/icon.png +0 -0
  280. package/license +1 -1
  281. package/matterviz-0.3.2.vsix +0 -0
  282. package/matterviz-0.3.4.vsix +0 -0
  283. package/matterviz-0.3.5.vsix +0 -0
  284. package/package.json +1461 -231
  285. package/readme.md +171 -98
  286. package/scripts/sync-config.ts +101 -0
  287. package/src/declarations.d.ts +2 -0
  288. package/src/extension.ts +972 -0
  289. package/src/node-io.ts +65 -0
  290. package/src/types.ts +17 -0
  291. package/src/webview/JsonBrowser.svelte +1079 -0
  292. package/src/webview/PlotPanel.svelte +346 -0
  293. package/src/webview/detect.ts +444 -0
  294. package/src/webview/main.ts +764 -0
  295. package/src/webview/plot-utils.ts +250 -0
  296. package/test-fixtures/all-viz-types.json.gz +0 -0
  297. package/test-fixtures/plot-demo-data.json.gz +0 -0
  298. package/tests/detect.test.ts +604 -0
  299. package/tests/extension.test.ts +2041 -0
  300. package/tests/node-io.test.ts +39 -0
  301. package/tests/plot-utils.test.ts +302 -0
  302. package/tests/vite-plugin-json-gz.test.ts +114 -0
  303. package/tests/vscode-mock.ts +18 -0
  304. package/tests/webview.test.ts +231 -0
  305. package/tsconfig.json +20 -0
  306. package/vite-plugin-json-gz.ts +29 -0
  307. package/vite.config.ts +34 -0
  308. package/vite.extension.config.ts +34 -0
  309. package/dist/EmptyState.svelte.d.ts +0 -9
  310. package/dist/FilePicker.svelte +0 -360
  311. package/dist/FilePicker.svelte.d.ts +0 -17
  312. package/dist/Icon.svelte.d.ts +0 -13
  313. package/dist/MillerIndexInput.svelte +0 -66
  314. package/dist/MillerIndexInput.svelte.d.ts +0 -7
  315. package/dist/api/mp.d.ts +0 -6
  316. package/dist/api/mp.js +0 -22
  317. package/dist/api/optimade.d.ts +0 -45
  318. package/dist/api/optimade.js +0 -135
  319. package/dist/app.css +0 -240
  320. package/dist/brillouin/BrillouinZone.svelte +0 -543
  321. package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
  322. package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
  323. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
  324. package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
  325. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
  326. package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  327. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
  328. package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
  329. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
  330. package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
  331. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
  332. package/dist/brillouin/compute.d.ts +0 -17
  333. package/dist/brillouin/compute.js +0 -422
  334. package/dist/brillouin/index.d.ts +0 -8
  335. package/dist/brillouin/index.js +0 -8
  336. package/dist/brillouin/types.d.ts +0 -48
  337. package/dist/brillouin/types.js +0 -1
  338. package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
  339. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
  340. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
  341. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
  342. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
  343. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
  344. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
  345. package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
  346. package/dist/chempot-diagram/async-compute.svelte.js +0 -77
  347. package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
  348. package/dist/chempot-diagram/chempot-worker.js +0 -11
  349. package/dist/chempot-diagram/color.d.ts +0 -10
  350. package/dist/chempot-diagram/color.js +0 -32
  351. package/dist/chempot-diagram/compute.d.ts +0 -48
  352. package/dist/chempot-diagram/compute.js +0 -812
  353. package/dist/chempot-diagram/index.d.ts +0 -6
  354. package/dist/chempot-diagram/index.js +0 -6
  355. package/dist/chempot-diagram/pointer.d.ts +0 -16
  356. package/dist/chempot-diagram/pointer.js +0 -40
  357. package/dist/chempot-diagram/temperature.d.ts +0 -15
  358. package/dist/chempot-diagram/temperature.js +0 -36
  359. package/dist/chempot-diagram/types.d.ts +0 -86
  360. package/dist/chempot-diagram/types.js +0 -28
  361. package/dist/colors/index.d.ts +0 -47
  362. package/dist/colors/index.js +0 -203
  363. package/dist/composition/BarChart.svelte +0 -297
  364. package/dist/composition/BarChart.svelte.d.ts +0 -39
  365. package/dist/composition/BubbleChart.svelte +0 -218
  366. package/dist/composition/BubbleChart.svelte.d.ts +0 -28
  367. package/dist/composition/Composition.svelte +0 -164
  368. package/dist/composition/Composition.svelte.d.ts +0 -15
  369. package/dist/composition/Formula.svelte +0 -265
  370. package/dist/composition/Formula.svelte.d.ts +0 -19
  371. package/dist/composition/FormulaFilter.svelte +0 -1259
  372. package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
  373. package/dist/composition/PieChart.svelte +0 -323
  374. package/dist/composition/PieChart.svelte.d.ts +0 -37
  375. package/dist/composition/format.d.ts +0 -15
  376. package/dist/composition/format.js +0 -109
  377. package/dist/composition/index.d.ts +0 -20
  378. package/dist/composition/index.js +0 -14
  379. package/dist/composition/parse.d.ts +0 -55
  380. package/dist/composition/parse.js +0 -459
  381. package/dist/constants.d.ts +0 -29
  382. package/dist/constants.js +0 -105
  383. package/dist/controls.d.ts +0 -14
  384. package/dist/controls.js +0 -30
  385. package/dist/convex-hull/ConvexHull.svelte +0 -157
  386. package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
  387. package/dist/convex-hull/ConvexHull2D.svelte +0 -813
  388. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
  389. package/dist/convex-hull/ConvexHull3D.svelte +0 -1788
  390. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
  391. package/dist/convex-hull/ConvexHull4D.svelte +0 -1374
  392. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
  393. package/dist/convex-hull/ConvexHullControls.svelte +0 -546
  394. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
  395. package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -115
  396. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
  397. package/dist/convex-hull/ConvexHullStats.svelte +0 -905
  398. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
  399. package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
  400. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
  401. package/dist/convex-hull/GasPressureControls.svelte +0 -247
  402. package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
  403. package/dist/convex-hull/StructurePopup.svelte +0 -116
  404. package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
  405. package/dist/convex-hull/TemperatureSlider.svelte +0 -137
  406. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
  407. package/dist/convex-hull/barycentric-coords.d.ts +0 -18
  408. package/dist/convex-hull/barycentric-coords.js +0 -182
  409. package/dist/convex-hull/demo-temperature.d.ts +0 -6
  410. package/dist/convex-hull/demo-temperature.js +0 -40
  411. package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
  412. package/dist/convex-hull/gas-thermodynamics.js +0 -316
  413. package/dist/convex-hull/helpers.d.ts +0 -103
  414. package/dist/convex-hull/helpers.js +0 -671
  415. package/dist/convex-hull/index.d.ts +0 -118
  416. package/dist/convex-hull/index.js +0 -57
  417. package/dist/convex-hull/thermodynamics.d.ts +0 -66
  418. package/dist/convex-hull/thermodynamics.js +0 -1752
  419. package/dist/convex-hull/types.d.ts +0 -162
  420. package/dist/convex-hull/types.js +0 -36
  421. package/dist/coordination/CoordinationBarPlot.svelte +0 -311
  422. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
  423. package/dist/coordination/calc-coordination.d.ts +0 -15
  424. package/dist/coordination/calc-coordination.js +0 -63
  425. package/dist/coordination/index.d.ts +0 -8
  426. package/dist/coordination/index.js +0 -7
  427. package/dist/element/BohrAtom.svelte +0 -149
  428. package/dist/element/BohrAtom.svelte.d.ts +0 -20
  429. package/dist/element/ElementHeading.svelte +0 -26
  430. package/dist/element/ElementHeading.svelte.d.ts +0 -8
  431. package/dist/element/ElementPhoto.svelte +0 -57
  432. package/dist/element/ElementPhoto.svelte.d.ts +0 -9
  433. package/dist/element/ElementStats.svelte +0 -80
  434. package/dist/element/ElementStats.svelte.d.ts +0 -8
  435. package/dist/element/ElementTile.svelte +0 -484
  436. package/dist/element/ElementTile.svelte.d.ts +0 -29
  437. package/dist/element/Nucleus.svelte.d.ts +0 -17
  438. package/dist/element/data.d.ts +0 -3
  439. package/dist/element/data.js +0 -2
  440. package/dist/element/data.json.gz.d.ts +0 -2
  441. package/dist/element/index.d.ts +0 -8
  442. package/dist/element/index.js +0 -8
  443. package/dist/element/types.d.ts +0 -57
  444. package/dist/element/types.js +0 -1
  445. package/dist/feedback/ClickFeedback.svelte +0 -58
  446. package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
  447. package/dist/feedback/DragOverlay.svelte +0 -42
  448. package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
  449. package/dist/feedback/Spinner.svelte.d.ts +0 -7
  450. package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
  451. package/dist/feedback/index.d.ts +0 -4
  452. package/dist/feedback/index.js +0 -4
  453. package/dist/fermi-surface/FermiSlice.svelte +0 -189
  454. package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
  455. package/dist/fermi-surface/FermiSurface.svelte +0 -597
  456. package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
  457. package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
  458. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
  459. package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
  460. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
  461. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  462. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
  463. package/dist/fermi-surface/compute.d.ts +0 -5
  464. package/dist/fermi-surface/compute.js +0 -538
  465. package/dist/fermi-surface/constants.d.ts +0 -9
  466. package/dist/fermi-surface/constants.js +0 -27
  467. package/dist/fermi-surface/export.d.ts +0 -5
  468. package/dist/fermi-surface/export.js +0 -63
  469. package/dist/fermi-surface/index.d.ts +0 -12
  470. package/dist/fermi-surface/index.js +0 -13
  471. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  472. package/dist/fermi-surface/marching-cubes.js +0 -2
  473. package/dist/fermi-surface/parse.d.ts +0 -2
  474. package/dist/fermi-surface/parse.js +0 -495
  475. package/dist/fermi-surface/symmetry.d.ts +0 -3
  476. package/dist/fermi-surface/symmetry.js +0 -46
  477. package/dist/fermi-surface/types.d.ts +0 -113
  478. package/dist/fermi-surface/types.js +0 -4
  479. package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
  480. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
  481. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  482. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
  483. package/dist/heatmap-matrix/index.d.ts +0 -53
  484. package/dist/heatmap-matrix/index.js +0 -100
  485. package/dist/heatmap-matrix/shared.d.ts +0 -2
  486. package/dist/heatmap-matrix/shared.js +0 -4
  487. package/dist/icons.d.ts +0 -569
  488. package/dist/icons.js +0 -648
  489. package/dist/index.d.ts +0 -39
  490. package/dist/index.js +0 -39
  491. package/dist/io/decompress.d.ts +0 -10
  492. package/dist/io/decompress.js +0 -69
  493. package/dist/io/export.d.ts +0 -16
  494. package/dist/io/export.js +0 -312
  495. package/dist/io/fetch.d.ts +0 -5
  496. package/dist/io/fetch.js +0 -39
  497. package/dist/io/file-drop.d.ts +0 -7
  498. package/dist/io/file-drop.js +0 -43
  499. package/dist/io/index.d.ts +0 -7
  500. package/dist/io/index.js +0 -7
  501. package/dist/io/is-binary.d.ts +0 -1
  502. package/dist/io/is-binary.js +0 -5
  503. package/dist/io/types.d.ts +0 -8
  504. package/dist/io/types.js +0 -1
  505. package/dist/io/url-drop.d.ts +0 -2
  506. package/dist/io/url-drop.js +0 -117
  507. package/dist/isosurface/Isosurface.svelte +0 -285
  508. package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
  509. package/dist/isosurface/IsosurfaceControls.svelte +0 -291
  510. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
  511. package/dist/isosurface/index.d.ts +0 -5
  512. package/dist/isosurface/index.js +0 -6
  513. package/dist/isosurface/parse.d.ts +0 -6
  514. package/dist/isosurface/parse.js +0 -553
  515. package/dist/isosurface/slice.d.ts +0 -11
  516. package/dist/isosurface/slice.js +0 -140
  517. package/dist/isosurface/types.d.ts +0 -56
  518. package/dist/isosurface/types.js +0 -227
  519. package/dist/labels.d.ts +0 -53
  520. package/dist/labels.js +0 -274
  521. package/dist/layout/FullscreenToggle.svelte +0 -50
  522. package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
  523. package/dist/layout/InfoCard.svelte +0 -120
  524. package/dist/layout/InfoCard.svelte.d.ts +0 -21
  525. package/dist/layout/InfoTag.svelte +0 -183
  526. package/dist/layout/InfoTag.svelte.d.ts +0 -19
  527. package/dist/layout/PropertyFilter.svelte +0 -244
  528. package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
  529. package/dist/layout/SettingsSection.svelte +0 -148
  530. package/dist/layout/SettingsSection.svelte.d.ts +0 -17
  531. package/dist/layout/SubpageGrid.svelte +0 -82
  532. package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
  533. package/dist/layout/fullscreen.d.ts +0 -9
  534. package/dist/layout/fullscreen.js +0 -53
  535. package/dist/layout/index.d.ts +0 -10
  536. package/dist/layout/index.js +0 -8
  537. package/dist/layout/json-tree/JsonNode.svelte +0 -547
  538. package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
  539. package/dist/layout/json-tree/JsonTree.svelte +0 -1222
  540. package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
  541. package/dist/layout/json-tree/JsonValue.svelte +0 -334
  542. package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
  543. package/dist/layout/json-tree/index.d.ts +0 -3
  544. package/dist/layout/json-tree/index.js +0 -3
  545. package/dist/layout/json-tree/types.d.ts +0 -73
  546. package/dist/layout/json-tree/types.js +0 -3
  547. package/dist/layout/json-tree/utils.d.ts +0 -29
  548. package/dist/layout/json-tree/utils.js +0 -648
  549. package/dist/marching-cubes.d.ts +0 -14
  550. package/dist/marching-cubes.js +0 -542
  551. package/dist/math.d.ts +0 -91
  552. package/dist/math.js +0 -896
  553. package/dist/overlays/ContextMenu.svelte +0 -162
  554. package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
  555. package/dist/overlays/DraggablePane.svelte +0 -564
  556. package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
  557. package/dist/overlays/index.d.ts +0 -2
  558. package/dist/overlays/index.js +0 -2
  559. package/dist/periodic-table/PeriodicTable.svelte +0 -469
  560. package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
  561. package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
  562. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
  563. package/dist/periodic-table/PropertySelect.svelte +0 -37
  564. package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
  565. package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
  566. package/dist/periodic-table/index.d.ts +0 -10
  567. package/dist/periodic-table/index.js +0 -4
  568. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  569. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
  570. package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -451
  571. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
  572. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  573. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
  574. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
  575. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
  576. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
  577. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
  578. package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
  579. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
  580. package/dist/phase-diagram/build-diagram.d.ts +0 -11
  581. package/dist/phase-diagram/build-diagram.js +0 -167
  582. package/dist/phase-diagram/colors.d.ts +0 -35
  583. package/dist/phase-diagram/colors.js +0 -51
  584. package/dist/phase-diagram/diagram-input.d.ts +0 -33
  585. package/dist/phase-diagram/diagram-input.js +0 -3
  586. package/dist/phase-diagram/index.d.ts +0 -13
  587. package/dist/phase-diagram/index.js +0 -13
  588. package/dist/phase-diagram/parse.d.ts +0 -55
  589. package/dist/phase-diagram/parse.js +0 -276
  590. package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
  591. package/dist/phase-diagram/svg-to-diagram.js +0 -869
  592. package/dist/phase-diagram/types.d.ts +0 -99
  593. package/dist/phase-diagram/types.js +0 -1
  594. package/dist/phase-diagram/utils.d.ts +0 -118
  595. package/dist/phase-diagram/utils.js +0 -606
  596. package/dist/plot/AxisLabel.svelte +0 -51
  597. package/dist/plot/AxisLabel.svelte.d.ts +0 -16
  598. package/dist/plot/BarPlot.svelte +0 -2256
  599. package/dist/plot/BarPlot.svelte.d.ts +0 -82
  600. package/dist/plot/BarPlotControls.svelte +0 -66
  601. package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
  602. package/dist/plot/ColorBar.svelte +0 -719
  603. package/dist/plot/ColorBar.svelte.d.ts +0 -31
  604. package/dist/plot/ColorScaleSelect.svelte +0 -54
  605. package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
  606. package/dist/plot/ElementScatter.svelte +0 -63
  607. package/dist/plot/ElementScatter.svelte.d.ts +0 -14
  608. package/dist/plot/FillArea.svelte +0 -226
  609. package/dist/plot/FillArea.svelte.d.ts +0 -20
  610. package/dist/plot/Histogram.svelte +0 -1654
  611. package/dist/plot/Histogram.svelte.d.ts +0 -50
  612. package/dist/plot/HistogramControls.svelte +0 -212
  613. package/dist/plot/HistogramControls.svelte.d.ts +0 -22
  614. package/dist/plot/InteractiveAxisLabel.svelte +0 -94
  615. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
  616. package/dist/plot/Line.svelte +0 -85
  617. package/dist/plot/Line.svelte.d.ts +0 -15
  618. package/dist/plot/PlotControls.svelte +0 -537
  619. package/dist/plot/PlotControls.svelte.d.ts +0 -4
  620. package/dist/plot/PlotLegend.svelte +0 -498
  621. package/dist/plot/PlotLegend.svelte.d.ts +0 -25
  622. package/dist/plot/PlotTooltip.svelte +0 -67
  623. package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
  624. package/dist/plot/PortalSelect.svelte +0 -253
  625. package/dist/plot/PortalSelect.svelte.d.ts +0 -16
  626. package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
  627. package/dist/plot/ReferenceLine3D.svelte +0 -154
  628. package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
  629. package/dist/plot/ReferencePlane.svelte +0 -178
  630. package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
  631. package/dist/plot/ScatterPlot.svelte +0 -2831
  632. package/dist/plot/ScatterPlot.svelte.d.ts +0 -92
  633. package/dist/plot/ScatterPlot3D.svelte +0 -499
  634. package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
  635. package/dist/plot/ScatterPlot3DControls.svelte +0 -437
  636. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
  637. package/dist/plot/ScatterPlot3DScene.svelte +0 -912
  638. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
  639. package/dist/plot/ScatterPlotControls.svelte +0 -307
  640. package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
  641. package/dist/plot/ScatterPoint.svelte +0 -185
  642. package/dist/plot/ScatterPoint.svelte.d.ts +0 -19
  643. package/dist/plot/SpacegroupBarPlot.svelte +0 -292
  644. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
  645. package/dist/plot/Surface3D.svelte +0 -200
  646. package/dist/plot/Surface3D.svelte.d.ts +0 -13
  647. package/dist/plot/ZeroLines.svelte +0 -96
  648. package/dist/plot/ZeroLines.svelte.d.ts +0 -32
  649. package/dist/plot/ZoomRect.svelte +0 -23
  650. package/dist/plot/ZoomRect.svelte.d.ts +0 -8
  651. package/dist/plot/axis-utils.d.ts +0 -19
  652. package/dist/plot/axis-utils.js +0 -80
  653. package/dist/plot/data-cleaning.d.ts +0 -37
  654. package/dist/plot/data-cleaning.js +0 -855
  655. package/dist/plot/data-transform.d.ts +0 -16
  656. package/dist/plot/data-transform.js +0 -45
  657. package/dist/plot/defaults.d.ts +0 -19
  658. package/dist/plot/defaults.js +0 -9
  659. package/dist/plot/fill-utils.d.ts +0 -51
  660. package/dist/plot/fill-utils.js +0 -337
  661. package/dist/plot/hover-lock.svelte.d.ts +0 -14
  662. package/dist/plot/hover-lock.svelte.js +0 -46
  663. package/dist/plot/index.d.ts +0 -43
  664. package/dist/plot/index.js +0 -37
  665. package/dist/plot/interactions.d.ts +0 -12
  666. package/dist/plot/interactions.js +0 -100
  667. package/dist/plot/layout.d.ts +0 -60
  668. package/dist/plot/layout.js +0 -230
  669. package/dist/plot/reference-line.d.ts +0 -60
  670. package/dist/plot/reference-line.js +0 -316
  671. package/dist/plot/scales.d.ts +0 -48
  672. package/dist/plot/scales.js +0 -484
  673. package/dist/plot/svg.d.ts +0 -1
  674. package/dist/plot/svg.js +0 -11
  675. package/dist/plot/types.d.ts +0 -863
  676. package/dist/plot/types.js +0 -103
  677. package/dist/plot/utils/label-placement.d.ts +0 -47
  678. package/dist/plot/utils/label-placement.js +0 -256
  679. package/dist/plot/utils/series-visibility.d.ts +0 -9
  680. package/dist/plot/utils/series-visibility.js +0 -67
  681. package/dist/plot/utils.d.ts +0 -1
  682. package/dist/plot/utils.js +0 -14
  683. package/dist/rdf/RdfPlot.svelte +0 -247
  684. package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
  685. package/dist/rdf/calc-rdf.d.ts +0 -4
  686. package/dist/rdf/calc-rdf.js +0 -111
  687. package/dist/rdf/index.d.ts +0 -23
  688. package/dist/rdf/index.js +0 -2
  689. package/dist/sanitize.d.ts +0 -4
  690. package/dist/sanitize.js +0 -107
  691. package/dist/settings.d.ts +0 -253
  692. package/dist/settings.js +0 -1123
  693. package/dist/spectral/Bands.svelte +0 -1040
  694. package/dist/spectral/Bands.svelte.d.ts +0 -40
  695. package/dist/spectral/BandsAndDos.svelte +0 -128
  696. package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
  697. package/dist/spectral/BrillouinBandsDos.svelte +0 -248
  698. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
  699. package/dist/spectral/Dos.svelte +0 -697
  700. package/dist/spectral/Dos.svelte.d.ts +0 -29
  701. package/dist/spectral/helpers.d.ts +0 -117
  702. package/dist/spectral/helpers.js +0 -1023
  703. package/dist/spectral/index.d.ts +0 -6
  704. package/dist/spectral/index.js +0 -7
  705. package/dist/spectral/types.d.ts +0 -84
  706. package/dist/spectral/types.js +0 -2
  707. package/dist/state.svelte.d.ts +0 -25
  708. package/dist/state.svelte.js +0 -45
  709. package/dist/structure/Arrow.svelte +0 -72
  710. package/dist/structure/Arrow.svelte.d.ts +0 -15
  711. package/dist/structure/AtomLegend.svelte +0 -798
  712. package/dist/structure/AtomLegend.svelte.d.ts +0 -34
  713. package/dist/structure/Bond.svelte +0 -140
  714. package/dist/structure/Bond.svelte.d.ts +0 -9
  715. package/dist/structure/CanvasTooltip.svelte +0 -33
  716. package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
  717. package/dist/structure/CellSelect.svelte +0 -351
  718. package/dist/structure/CellSelect.svelte.d.ts +0 -13
  719. package/dist/structure/Cylinder.svelte +0 -45
  720. package/dist/structure/Cylinder.svelte.d.ts +0 -10
  721. package/dist/structure/Lattice.svelte +0 -196
  722. package/dist/structure/Lattice.svelte.d.ts +0 -17
  723. package/dist/structure/Structure.svelte +0 -1857
  724. package/dist/structure/Structure.svelte.d.ts +0 -83
  725. package/dist/structure/StructureControls.svelte +0 -1184
  726. package/dist/structure/StructureControls.svelte.d.ts +0 -31
  727. package/dist/structure/StructureExportPane.svelte +0 -251
  728. package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
  729. package/dist/structure/StructureInfoPane.svelte +0 -434
  730. package/dist/structure/StructureInfoPane.svelte.d.ts +0 -18
  731. package/dist/structure/StructureScene.svelte +0 -1574
  732. package/dist/structure/StructureScene.svelte.d.ts +0 -104
  733. package/dist/structure/atom-properties.d.ts +0 -37
  734. package/dist/structure/atom-properties.js +0 -198
  735. package/dist/structure/bonding.d.ts +0 -33
  736. package/dist/structure/bonding.js +0 -304
  737. package/dist/structure/export.d.ts +0 -20
  738. package/dist/structure/export.js +0 -725
  739. package/dist/structure/ferrox-wasm-types.d.ts +0 -46
  740. package/dist/structure/ferrox-wasm-types.js +0 -18
  741. package/dist/structure/ferrox-wasm.d.ts +0 -94
  742. package/dist/structure/ferrox-wasm.js +0 -249
  743. package/dist/structure/index.d.ts +0 -110
  744. package/dist/structure/index.js +0 -168
  745. package/dist/structure/measure.d.ts +0 -6
  746. package/dist/structure/measure.js +0 -29
  747. package/dist/structure/parse.d.ts +0 -65
  748. package/dist/structure/parse.js +0 -1374
  749. package/dist/structure/partial-occupancy.d.ts +0 -25
  750. package/dist/structure/partial-occupancy.js +0 -99
  751. package/dist/structure/pbc.d.ts +0 -9
  752. package/dist/structure/pbc.js +0 -123
  753. package/dist/structure/supercell.d.ts +0 -8
  754. package/dist/structure/supercell.js +0 -137
  755. package/dist/structure/validation.d.ts +0 -2
  756. package/dist/structure/validation.js +0 -10
  757. package/dist/symmetry/SymmetryStats.svelte +0 -226
  758. package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
  759. package/dist/symmetry/WyckoffTable.svelte +0 -113
  760. package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
  761. package/dist/symmetry/cell-transform.d.ts +0 -12
  762. package/dist/symmetry/cell-transform.js +0 -77
  763. package/dist/symmetry/index.d.ts +0 -43
  764. package/dist/symmetry/index.js +0 -229
  765. package/dist/symmetry/spacegroups.d.ts +0 -9
  766. package/dist/symmetry/spacegroups.js +0 -394
  767. package/dist/table/HeatmapTable.svelte +0 -1854
  768. package/dist/table/HeatmapTable.svelte.d.ts +0 -49
  769. package/dist/table/ToggleMenu.svelte +0 -376
  770. package/dist/table/ToggleMenu.svelte.d.ts +0 -11
  771. package/dist/table/index.d.ts +0 -74
  772. package/dist/table/index.js +0 -38
  773. package/dist/theme/ThemeControl.svelte +0 -53
  774. package/dist/theme/ThemeControl.svelte.d.ts +0 -9
  775. package/dist/theme/index.d.ts +0 -29
  776. package/dist/theme/index.js +0 -79
  777. package/dist/theme/themes.mjs +0 -285
  778. package/dist/time.d.ts +0 -4
  779. package/dist/time.js +0 -70
  780. package/dist/tooltip/TooltipContent.svelte +0 -58
  781. package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
  782. package/dist/tooltip/index.d.ts +0 -2
  783. package/dist/tooltip/index.js +0 -2
  784. package/dist/tooltip/types.d.ts +0 -8
  785. package/dist/tooltip/types.js +0 -1
  786. package/dist/trajectory/Trajectory.svelte +0 -1517
  787. package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
  788. package/dist/trajectory/TrajectoryError.svelte +0 -128
  789. package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
  790. package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
  791. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
  792. package/dist/trajectory/TrajectoryInfoPane.svelte +0 -387
  793. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
  794. package/dist/trajectory/constants.d.ts +0 -6
  795. package/dist/trajectory/constants.js +0 -7
  796. package/dist/trajectory/extract.d.ts +0 -5
  797. package/dist/trajectory/extract.js +0 -162
  798. package/dist/trajectory/format-detect.d.ts +0 -9
  799. package/dist/trajectory/format-detect.js +0 -76
  800. package/dist/trajectory/frame-reader.d.ts +0 -17
  801. package/dist/trajectory/frame-reader.js +0 -332
  802. package/dist/trajectory/helpers.d.ts +0 -14
  803. package/dist/trajectory/helpers.js +0 -172
  804. package/dist/trajectory/index.d.ts +0 -63
  805. package/dist/trajectory/index.js +0 -126
  806. package/dist/trajectory/parse/ase.d.ts +0 -2
  807. package/dist/trajectory/parse/ase.js +0 -77
  808. package/dist/trajectory/parse/hdf5.d.ts +0 -2
  809. package/dist/trajectory/parse/hdf5.js +0 -129
  810. package/dist/trajectory/parse/index.d.ts +0 -12
  811. package/dist/trajectory/parse/index.js +0 -299
  812. package/dist/trajectory/parse/lammps.d.ts +0 -5
  813. package/dist/trajectory/parse/lammps.js +0 -179
  814. package/dist/trajectory/parse/vasp.d.ts +0 -2
  815. package/dist/trajectory/parse/vasp.js +0 -68
  816. package/dist/trajectory/parse/xyz.d.ts +0 -2
  817. package/dist/trajectory/parse/xyz.js +0 -110
  818. package/dist/trajectory/plotting.d.ts +0 -28
  819. package/dist/trajectory/plotting.js +0 -423
  820. package/dist/trajectory/types.d.ts +0 -11
  821. package/dist/trajectory/types.js +0 -1
  822. package/dist/utils.d.ts +0 -5
  823. package/dist/utils.js +0 -36
  824. package/dist/xrd/XrdPlot.svelte +0 -615
  825. package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
  826. package/dist/xrd/broadening.d.ts +0 -20
  827. package/dist/xrd/broadening.js +0 -97
  828. package/dist/xrd/calc-xrd.d.ts +0 -37
  829. package/dist/xrd/calc-xrd.js +0 -337
  830. package/dist/xrd/index.d.ts +0 -37
  831. package/dist/xrd/index.js +0 -4
  832. package/dist/xrd/parse.d.ts +0 -13
  833. package/dist/xrd/parse.js +0 -749
  834. /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
  835. /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
  836. /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
  837. /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
  838. /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
  839. /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
  840. /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
  841. /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
  842. /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
  843. /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
  844. /package/dist/{element → src/lib/element}/data.json +0 -0
  845. /package/dist/{element → src/lib/element}/data.json.gz +0 -0
  846. /package/dist/{element → src/lib/element}/data.schema.json +0 -0
  847. /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
  848. /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
  849. /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
  850. /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
  851. /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
  852. /package/dist/{xrd → src/lib/xrd}/atomic_scattering_params.json +0 -0
@@ -1,671 +0,0 @@
1
- import { get_d3_interpolator } from '../colors';
2
- import { ELEM_SYMBOL_TO_NAME } from '../composition';
3
- import { format_fractional, format_num, symbol_map } from '../labels';
4
- import { scaleSequential } from 'd3-scale';
5
- import { symbol } from 'd3-shape';
6
- import { analyze_gas_data as _analyze_gas_data, apply_gas_corrections as _apply_gas_corrections, } from './gas-thermodynamics';
7
- import { DEFAULT_GAS_TEMP } from './types';
8
- export { DEFAULT_GAS_TEMP };
9
- // Tolerance for classifying a phase as on the convex hull (eV/atom)
10
- export const HULL_STABILITY_TOL = 1e-6;
11
- // Clamp raw hull distance and compute stability for a single entry.
12
- // Excluded entries keep their raw (possibly negative) distance and are never stable.
13
- export function compute_hull_stability(raw_distance, exclude_from_hull, tol = HULL_STABILITY_TOL) {
14
- if (exclude_from_hull)
15
- return { e_above_hull: raw_distance, is_stable: false };
16
- const e_above_hull = Math.abs(raw_distance) < tol ? 0 : Math.max(0, raw_distance);
17
- return { e_above_hull, is_stable: e_above_hull <= tol };
18
- }
19
- // Check if entry is on the convex hull (stable or e_above_hull ≈ 0)
20
- export const is_on_hull = (entry, tol = HULL_STABILITY_TOL) => !entry.exclude_from_hull &&
21
- (entry.is_stable === true ||
22
- (typeof entry.e_above_hull === `number` && entry.e_above_hull < tol));
23
- export const get_arity = (entry) => Object.values(entry.composition).filter((count) => count > 0).length;
24
- export const is_unary_entry = (entry) => get_arity(entry) === 1;
25
- // Energy color scale factory (shared)
26
- export function get_energy_color_scale(color_mode, color_scale, plot_entries) {
27
- if (color_mode !== `energy` || plot_entries.length === 0)
28
- return null;
29
- const hull_distances = plot_entries
30
- .map((entry) => entry.e_above_hull)
31
- .filter((val) => typeof val === `number`);
32
- if (hull_distances.length === 0)
33
- return null;
34
- const lo = Math.min(...hull_distances);
35
- const hi_raw = Math.max(...hull_distances, 0.1);
36
- const hi = Math.max(hi_raw, lo + 1e-6);
37
- const interpolator = get_d3_interpolator(color_scale);
38
- return scaleSequential(interpolator).domain([lo, hi]);
39
- }
40
- // Point color resolver (shared)
41
- export function get_point_color_for_entry(entry, color_mode, colors, energy_scale) {
42
- const is_stable = Boolean(entry.is_stable) || entry.e_above_hull === 0;
43
- if (color_mode === `stability`) {
44
- return is_stable ? colors?.stable || `#0072B2` : colors?.unstable || `#E69F00`;
45
- }
46
- return energy_scale && typeof entry.e_above_hull === `number`
47
- ? energy_scale(entry.e_above_hull)
48
- : `#666`;
49
- }
50
- // Robust drag-and-drop JSON parsing for convex hull entries
51
- export async function parse_hull_entries_from_drop(event) {
52
- event.preventDefault();
53
- const file = event.dataTransfer?.files?.[0];
54
- if (!file?.name.endsWith(`.json`))
55
- return null;
56
- try {
57
- const data = JSON.parse(await file.text());
58
- if (!Array.isArray(data) || data.length === 0)
59
- return null;
60
- if (!data[0].composition || typeof data[0].energy !== `number`)
61
- return null;
62
- return data;
63
- }
64
- catch (error) {
65
- console.error(`Error parsing dropped file:`, error);
66
- return null;
67
- }
68
- }
69
- // Compute a consistent max energy threshold for controls (shared)
70
- export function calc_max_hull_dist_in_data(processed_entries) {
71
- if (processed_entries.length === 0)
72
- return 0.5;
73
- const hull_distances = processed_entries
74
- .map((entry) => entry.e_above_hull)
75
- .filter((val) => typeof val === `number` && Number.isFinite(val));
76
- const max_val = (hull_distances.length ? Math.max(...hull_distances) : 0) + 0.001;
77
- return Math.max(0.1, max_val);
78
- }
79
- // Smart threshold for showing unstable entries based on entry count.
80
- // Few entries (≤25): show all. Many entries (≥100): use static default. Between: interpolate.
81
- export function compute_auto_hull_dist_threshold(n_entries, max_hull_dist_in_data, static_default) {
82
- const [LOW, HIGH] = [25, 100];
83
- if (n_entries <= LOW)
84
- return max_hull_dist_in_data;
85
- if (n_entries >= HIGH)
86
- return static_default;
87
- const t = (n_entries - LOW) / (HIGH - LOW);
88
- return max_hull_dist_in_data * (1 - t) + static_default * t;
89
- }
90
- // Build a tooltip text for any phase entry (shared)
91
- export function build_entry_tooltip_text(entry) {
92
- const is_element = is_unary_entry(entry);
93
- const elem_symbol = is_element ? Object.keys(entry.composition)[0] : ``;
94
- const elem_name = is_element ? (ELEM_SYMBOL_TO_NAME[elem_symbol] ?? ``) : ``;
95
- let text = is_element
96
- ? `${elem_symbol}${elem_name ? ` (${elem_name})` : ``}\n`
97
- : `${entry.name || entry.reduced_formula || ``}\n`;
98
- if (!is_element) {
99
- const total = Object.values(entry.composition).reduce((sum, amt) => sum + amt, 0);
100
- if (total > 0) {
101
- const fractions = Object.entries(entry.composition)
102
- .filter(([, amt]) => amt > 0)
103
- .map(([el, amt]) => `${el}: ${format_fractional(amt / total)}`);
104
- if (fractions.length > 1) {
105
- text += `Composition: ${fractions.join(`, `)}\n`;
106
- }
107
- }
108
- }
109
- if (entry.e_above_hull !== undefined) {
110
- const e_hull_str = format_num(entry.e_above_hull, `.3~`);
111
- text += `E<sub>above hull</sub>: ${e_hull_str} eV/atom\n`;
112
- }
113
- // Fallback to energy_per_atom if e_form_per_atom is absent
114
- const e_form_display = entry.e_form_per_atom !== undefined ? entry.e_form_per_atom : entry.energy_per_atom;
115
- if (e_form_display !== undefined) {
116
- const e_form_str = format_num(e_form_display, `.3~`);
117
- text += `E<sub>form</sub>: ${e_form_str} eV/atom`;
118
- }
119
- if (entry.entry_id)
120
- text += `\nID: ${entry.entry_id}`;
121
- return text;
122
- }
123
- // Generic mouse hit-testing for projected 3D points (shared)
124
- export function find_hull_entry_at_mouse(canvas, event, plot_entries, project_point) {
125
- if (!canvas)
126
- return null;
127
- const rect = canvas.getBoundingClientRect();
128
- const mouse_x = event.clientX - rect.left;
129
- const mouse_y = event.clientY - rect.top;
130
- const container_scale = Math.min(canvas.clientWidth || 600, canvas.clientHeight || 600) / 600;
131
- for (const entry of plot_entries) {
132
- if (!entry.visible)
133
- continue;
134
- const projected = project_point(entry.x, entry.y, entry.z);
135
- const distance = Math.hypot(mouse_x - projected.x, mouse_y - projected.y);
136
- const base = entry.size ?? (entry.is_stable || entry.e_above_hull === 0 ? 6 : 4);
137
- if (distance < base * container_scale + 5)
138
- return entry;
139
- }
140
- return null;
141
- }
142
- // Calculate which side of the viewport has more space for modal placement
143
- export function calculate_modal_side(wrapper) {
144
- if (!wrapper)
145
- return true;
146
- const rect = wrapper.getBoundingClientRect();
147
- const viewport_width = globalThis.innerWidth;
148
- const space_on_right = viewport_width - rect.right;
149
- const space_on_left = rect.left;
150
- return space_on_right >= space_on_left;
151
- }
152
- // Compute energy source mode information for convex hull entries. Returns energy mode information including capability flags and resolved mode.
153
- // This determines whether we can use precomputed energies or need to compute on-the-fly.
154
- export function compute_energy_mode_info(entries, // Array of phase entries to analyze
155
- find_lowest_energy_unary_refs_fn, // Function to find unary references
156
- energy_source_mode) {
157
- const has_precomputed_e_form = entries.length > 0 && entries.every((entry) => typeof entry.e_form_per_atom === `number`);
158
- const has_precomputed_hull = entries.length > 0 && entries.every((entry) => typeof entry.e_above_hull === `number`);
159
- const unary_refs = find_lowest_energy_unary_refs_fn(entries);
160
- const elements_in_entries = Array.from(new Set(entries.flatMap((entry) => Object.keys(entry.composition))));
161
- const can_compute_e_form = elements_in_entries.every((el) => Boolean(unary_refs[el]));
162
- const can_compute_hull = can_compute_e_form;
163
- // Resolve mode to avoid inconsistent states:
164
- // - If full precomputed available, honor user toggle
165
- // - Else if we can compute both, use on-the-fly automatically
166
- // - Else fall back to precomputed (best-effort)
167
- const energy_mode = has_precomputed_e_form && has_precomputed_hull
168
- ? energy_source_mode
169
- : can_compute_e_form && can_compute_hull
170
- ? `on-the-fly`
171
- : `precomputed`;
172
- return {
173
- has_precomputed_e_form,
174
- has_precomputed_hull,
175
- can_compute_e_form,
176
- can_compute_hull,
177
- energy_mode,
178
- unary_refs,
179
- };
180
- }
181
- // Compute effective entries with formation energies based on the energy mode.
182
- // Returns entries with formation energies populated (either precomputed or on-the-fly)
183
- export function get_effective_entries(entries, // Original phase entries
184
- energy_mode, // Energy source mode (precomputed or on-the-fly)
185
- unary_refs, // Unary reference entries for energy computation
186
- compute_e_form_fn) {
187
- if (energy_mode === `precomputed`)
188
- return entries;
189
- return entries.map((entry) => {
190
- const e_form = compute_e_form_fn(entry, unary_refs);
191
- if (e_form === null)
192
- return entry;
193
- return { ...entry, e_form_per_atom: e_form };
194
- });
195
- }
196
- // Copy text to clipboard with visual feedback
197
- export async function copy_entry_to_clipboard(entry, position, on_feedback) {
198
- const text = build_entry_tooltip_text(entry);
199
- await navigator.clipboard.writeText(text);
200
- on_feedback(true, position);
201
- setTimeout(() => on_feedback(false, position), 1500);
202
- }
203
- export const DEFAULT_HIGHLIGHT_STYLE = {
204
- effect: `pulse`,
205
- color: `#ff4444`, // Bright red for visibility
206
- size_multiplier: 1.8, // Moderate base size
207
- opacity: 0.85, // High visibility
208
- pulse_speed: 3, // Smooth pulsing
209
- };
210
- export const merge_highlight_style = (custom_style) => ({
211
- ...DEFAULT_HIGHLIGHT_STYLE,
212
- ...custom_style,
213
- });
214
- // Check if entry matches any item in highlighted_list (by structure_id or entry_id)
215
- export function is_entry_highlighted(entry, highlighted_list) {
216
- if (!highlighted_list.length)
217
- return false;
218
- const { entry_id, structure_id } = entry;
219
- if (!entry_id && !structure_id)
220
- return false;
221
- return highlighted_list.some((item) => {
222
- if (typeof item === `string`) {
223
- return item === entry_id || item === structure_id;
224
- }
225
- // Object: match by structure_id if present, else fall back to entry_id
226
- return item?.structure_id
227
- ? structure_id === item.structure_id
228
- : item?.entry_id === entry_id;
229
- });
230
- }
231
- // Calculate fractional composition (normalized composition) for an entry
232
- export function get_fractional_composition(composition) {
233
- const total = Object.values(composition).reduce((sum, amt) => sum + amt, 0);
234
- if (total <= 0)
235
- return {}; // Return empty object if total is zero or negative (invalid composition)
236
- const fractional = {};
237
- for (const [elem, amt] of Object.entries(composition)) {
238
- // Only include positive amounts in fractional composition
239
- if (amt > 0)
240
- fractional[elem] = amt / total;
241
- }
242
- return fractional;
243
- }
244
- // Check if value is a finite number
245
- const is_finite = (val) => typeof val === `number` && Number.isFinite(val);
246
- // Compute energy_per_atom from total energy and composition
247
- function compute_energy_per_atom(entry) {
248
- if (!is_finite(entry.energy))
249
- return null;
250
- const total_atoms = Object.values(entry.composition).reduce((sum, amt) => sum + amt, 0);
251
- return total_atoms > 0 ? entry.energy / total_atoms : null;
252
- }
253
- // Get energy value for an entry using a specific metric
254
- // NOTE: We prioritize absolute energies (e_form_per_atom, energy_per_atom) over e_above_hull
255
- // because polymorphs of the same composition on the hull all have e_above_hull=0
256
- function get_entry_energy_by_metric(entry, metric) {
257
- if (metric === `e_form_per_atom` && is_finite(entry.e_form_per_atom)) {
258
- return entry.e_form_per_atom;
259
- }
260
- if (metric === `energy_per_atom`) {
261
- return is_finite(entry.energy_per_atom)
262
- ? entry.energy_per_atom
263
- : compute_energy_per_atom(entry);
264
- }
265
- if (metric === `e_above_hull` && is_finite(entry.e_above_hull)) {
266
- return entry.e_above_hull;
267
- }
268
- return null;
269
- }
270
- function get_label_representative_energy(entry) {
271
- if (is_finite(entry.e_form_per_atom))
272
- return entry.e_form_per_atom;
273
- if (is_finite(entry.energy_per_atom))
274
- return entry.energy_per_atom;
275
- const energy_per_atom = compute_energy_per_atom(entry);
276
- if (energy_per_atom !== null)
277
- return energy_per_atom;
278
- if (is_finite(entry.energy))
279
- return entry.energy;
280
- if (is_finite(entry.e_above_hull))
281
- return entry.e_above_hull;
282
- return Number.POSITIVE_INFINITY;
283
- }
284
- function get_fractional_composition_key(composition) {
285
- return Object.entries(get_fractional_composition(composition))
286
- .sort(([elem_a], [elem_b]) => elem_a.localeCompare(elem_b))
287
- .map(([elem, frac]) => `${elem}:${frac.toFixed(6)}`)
288
- .join(`|`);
289
- }
290
- // Pick one label target per normalized composition. Multiple polymorphs, supercell
291
- // formulas, or same-composition entries often project to the same screen position.
292
- export function get_composition_label_entries(entries) {
293
- const label_entry_by_composition = new Map();
294
- for (const entry of entries) {
295
- const comp_key = get_fractional_composition_key(entry.composition);
296
- if (!comp_key)
297
- continue;
298
- const existing = label_entry_by_composition.get(comp_key);
299
- if (!existing ||
300
- get_label_representative_energy(entry) < get_label_representative_energy(existing)) {
301
- label_entry_by_composition.set(comp_key, entry);
302
- }
303
- }
304
- return Array.from(label_entry_by_composition.values());
305
- }
306
- // Determine which energy metric to use for a composition group
307
- // Returns the first metric that ALL entries in the group can provide
308
- function select_group_energy_metric(polymorphs) {
309
- // Try e_form_per_atom first (best for comparing polymorphs)
310
- if (polymorphs.every((entry) => is_finite(entry.e_form_per_atom))) {
311
- return `e_form_per_atom`;
312
- }
313
- // Try energy_per_atom (either direct field or computed from total energy)
314
- if (polymorphs.every((entry) => is_finite(entry.energy_per_atom) || compute_energy_per_atom(entry) !== null))
315
- return `energy_per_atom`;
316
- // Last resort: e_above_hull (will fail to differentiate stable polymorphs with e_above_hull=0)
317
- if (polymorphs.every((entry) => is_finite(entry.e_above_hull))) {
318
- return `e_above_hull`;
319
- }
320
- return null; // No valid metric available for this group
321
- }
322
- // Pre-compute polymorph statistics for all entries at once (O(n²) but done once)
323
- // Returns a Map keyed by entry_id for O(1) lookups during hover
324
- export function compute_all_polymorph_stats(all_entries) {
325
- const stats_map = new Map();
326
- const zero_stats = { total: 0, higher: 0, lower: 0, equal: 0 };
327
- // Group entries by fractional composition (normalized stoichiometry)
328
- const composition_groups = new Map();
329
- for (const entry of all_entries) {
330
- const comp_key = get_fractional_composition_key(entry.composition);
331
- const group = composition_groups.get(comp_key) ?? [];
332
- if (group.length === 0)
333
- composition_groups.set(comp_key, group);
334
- group.push(entry);
335
- }
336
- // Calculate stats for each polymorph group
337
- for (const polymorphs of composition_groups.values()) {
338
- // Select one consistent metric for the entire composition group
339
- const group_metric = select_group_energy_metric(polymorphs);
340
- // If no valid metric available, set all entries in group to zero stats
341
- if (group_metric === null) {
342
- for (const entry of polymorphs) {
343
- if (entry.entry_id)
344
- stats_map.set(entry.entry_id, zero_stats);
345
- }
346
- continue;
347
- }
348
- // Compare entries using the consistent group metric
349
- for (const entry of polymorphs) {
350
- if (!entry.entry_id)
351
- continue;
352
- const entry_energy = get_entry_energy_by_metric(entry, group_metric);
353
- if (entry_energy === null) {
354
- stats_map.set(entry.entry_id, zero_stats);
355
- continue;
356
- }
357
- let [total, higher, lower, equal] = [0, 0, 0, 0];
358
- for (const other of polymorphs) {
359
- if (other === entry || other.entry_id === entry.entry_id)
360
- continue;
361
- const other_energy = get_entry_energy_by_metric(other, group_metric);
362
- if (other_energy === null)
363
- continue;
364
- total++;
365
- if (other_energy > entry_energy)
366
- higher++;
367
- else if (other_energy < entry_energy)
368
- lower++;
369
- else
370
- equal++;
371
- }
372
- stats_map.set(entry.entry_id, { total, higher, lower, equal });
373
- }
374
- }
375
- return stats_map;
376
- }
377
- function apply_alpha_to_color(color, alpha) {
378
- // Handle existing rgba format
379
- if (color.includes(`rgba`))
380
- return color.replace(/[\d.]+\)$/, `${alpha})`);
381
- if (color.includes(`rgb(`)) {
382
- // Convert rgb to rgba
383
- return color.replace(/rgb\(/, `rgba(`).replace(/\)$/, `, ${alpha})`);
384
- }
385
- const hex_match = /^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.exec(color); // Convert hex to rgba
386
- if (hex_match) {
387
- let hex = hex_match[1];
388
- // Expand short form (e.g. "03F") to full form (e.g. "0033FF")
389
- if (hex.length === 3)
390
- hex = hex
391
- .split(``)
392
- .map((char) => char + char)
393
- .join(``);
394
- const red = parseInt(hex.slice(0, 2), 16);
395
- const green = parseInt(hex.slice(2, 4), 16);
396
- const blue = parseInt(hex.slice(4, 6), 16);
397
- return `rgba(${red}, ${green}, ${blue}, ${alpha})`;
398
- }
399
- return color; // Return unchanged if format not recognized
400
- }
401
- export function draw_highlight_effect(ctx, projected, size, container_scale, pulse_time, style) {
402
- const { effect, color: hl_color, size_multiplier, opacity, pulse_speed } = style;
403
- if (effect === `pulse`) {
404
- // Smooth pulsating effect with moderate size and opacity changes
405
- const pulse_val = 0.5 + 0.5 * Math.sin(pulse_time * pulse_speed);
406
- const hl_size = size * (size_multiplier + 0.5 * pulse_val); // Moderate pulse amplitude
407
- const hl_opacity = opacity * (0.5 + 0.5 * pulse_val); // Smooth opacity variation
408
- // Draw pulsating ring
409
- ctx.lineWidth = (1.5 + 1 * pulse_val) * container_scale;
410
- ctx.beginPath();
411
- ctx.arc(projected.x, projected.y, hl_size, 0, 2 * Math.PI);
412
- ctx.fillStyle = apply_alpha_to_color(hl_color, hl_opacity * 0.3);
413
- ctx.strokeStyle = apply_alpha_to_color(hl_color, hl_opacity);
414
- ctx.fill();
415
- ctx.stroke();
416
- }
417
- else if (effect === `glow`) {
418
- // Soft glow effect with layered circles for depth
419
- const hl_size = size * size_multiplier;
420
- // Outer soft glow
421
- ctx.beginPath();
422
- ctx.arc(projected.x, projected.y, hl_size * 1.3, 0, 2 * Math.PI);
423
- ctx.fillStyle = apply_alpha_to_color(hl_color, opacity * 0.15);
424
- ctx.fill();
425
- // Inner glow with stroke
426
- ctx.lineWidth = 1.5 * container_scale;
427
- ctx.beginPath();
428
- ctx.arc(projected.x, projected.y, hl_size, 0, 2 * Math.PI);
429
- ctx.fillStyle = apply_alpha_to_color(hl_color, opacity * 0.4);
430
- ctx.strokeStyle = apply_alpha_to_color(hl_color, opacity * 0.8);
431
- ctx.fill();
432
- ctx.stroke();
433
- }
434
- else if (effect === `size`) {
435
- // Simple size highlight with stroke
436
- const hl_size = size * size_multiplier;
437
- ctx.lineWidth = 2 * container_scale;
438
- ctx.beginPath();
439
- ctx.arc(projected.x, projected.y, hl_size, 0, 2 * Math.PI);
440
- ctx.strokeStyle = hl_color;
441
- ctx.stroke();
442
- }
443
- // effect === `color` is handled in the main drawing code
444
- }
445
- // Draw selection highlight for currently selected entry (with pulsing animation)
446
- export function draw_selection_highlight(ctx, projected, base_size, container_scale, pulse_time, pulse_opacity) {
447
- const highlight_size = base_size * (1.8 + 0.3 * Math.sin(pulse_time * 4));
448
- ctx.fillStyle = apply_alpha_to_color(`rgba(102, 240, 255, 1)`, pulse_opacity * 0.6);
449
- ctx.strokeStyle = apply_alpha_to_color(`rgba(102, 240, 255, 1)`, pulse_opacity);
450
- ctx.lineWidth = 2 * container_scale;
451
- ctx.beginPath();
452
- ctx.arc(projected.x, projected.y, highlight_size, 0, 2 * Math.PI);
453
- ctx.fill();
454
- ctx.stroke();
455
- }
456
- // Get text color for canvas rendering. Canvas 2D context doesn't understand CSS functions
457
- // like light-dark() or var(), so we fall back to appropriate colors based on dark mode.
458
- export function get_canvas_text_color(dark_mode, element) {
459
- const fallback = dark_mode ? `#ffffff` : `#212121`;
460
- if (typeof document === `undefined`)
461
- return fallback;
462
- const css_value = getComputedStyle(element ?? document.documentElement)
463
- .getPropertyValue(`--text-color`)
464
- ?.trim();
465
- // Check for unsupported CSS functions that canvas can't render
466
- return css_value && !/light-dark|var\(/i.test(css_value) ? css_value : fallback;
467
- }
468
- // Create a Path2D for a marker symbol. Uses d3-shape for consistent rendering with ScatterPlot.
469
- export function create_marker_path(size, marker = `circle`) {
470
- // Capitalize first letter to get D3 symbol name (e.g. 'circle' -> 'Circle')
471
- const d3_name = marker.charAt(0).toUpperCase() + marker.slice(1);
472
- const symbol_type = symbol_map[d3_name];
473
- if (!symbol_type) {
474
- const path = new Path2D();
475
- path.arc(0, 0, size, 0, 2 * Math.PI);
476
- return path;
477
- }
478
- const symbol_area = Math.PI * size * size;
479
- const path_data = symbol().type(symbol_type).size(symbol_area)();
480
- if (!path_data) {
481
- const path = new Path2D();
482
- path.arc(0, 0, size, 0, 2 * Math.PI);
483
- return path;
484
- }
485
- return new Path2D(path_data);
486
- }
487
- // Analyze entries for temperature-dependent free energy data.
488
- // Returns available temperatures (union of all T values across entries) if any entries have temp data.
489
- export function analyze_temperature_data(entries) {
490
- const valid_temps = entries
491
- .filter(entry_has_temp_data)
492
- .flatMap((entry) => entry.temperatures ?? []);
493
- const available_temperatures = [...new Set(valid_temps)].sort((a, b) => a - b);
494
- return {
495
- has_temp_data: available_temperatures.length > 0,
496
- available_temperatures,
497
- };
498
- }
499
- // Check if an entry has valid temperature-dependent data (matching array lengths, non-empty)
500
- function entry_has_temp_data(entry) {
501
- const { temperatures, free_energies } = entry;
502
- return Boolean(temperatures?.length &&
503
- free_energies?.length &&
504
- temperatures.length === free_energies.length);
505
- }
506
- // Check if entry has data at exact temperature T
507
- export function entry_has_temperature(entry, T) {
508
- return entry_has_temp_data(entry) && (entry.temperatures?.includes(T) ?? false);
509
- }
510
- // Get energy at temperature T (throws if T not found - validate with entry_has_temperature first)
511
- export function get_energy_at_temperature(entry, T) {
512
- const temps = entry.temperatures ?? [];
513
- const energies = entry.free_energies ?? [];
514
- const idx = temps.indexOf(T);
515
- if (idx === -1) {
516
- throw new Error(`Temperature ${T}K not found in entry temperatures`);
517
- }
518
- return energies[idx];
519
- }
520
- // Find bracketing temperatures for interpolation (T_low < T < T_high)
521
- // Returns null if T is outside the range or no valid bracket exists
522
- function find_bracket_temperatures(entry, T) {
523
- const temps = entry.temperatures ?? [];
524
- const energies = entry.free_energies ?? [];
525
- if (temps.length < 2)
526
- return null;
527
- // Find the largest T_low < T and smallest T_high > T
528
- let T_low = -Infinity;
529
- let T_high = Infinity;
530
- let E_low = 0;
531
- let E_high = 0;
532
- // Must scan all temperatures to find the tightest bracket (arrays may be unsorted)
533
- for (const [idx, temp] of temps.entries()) {
534
- if (temp < T && temp > T_low) {
535
- T_low = temp;
536
- E_low = energies[idx];
537
- }
538
- else if (temp > T && temp < T_high) {
539
- T_high = temp;
540
- E_high = energies[idx];
541
- }
542
- }
543
- // Must have valid brackets on both sides
544
- if (!isFinite(T_low) || !isFinite(T_high))
545
- return null;
546
- return { T_low, T_high, E_low, E_high };
547
- }
548
- // Check if we can interpolate energy at temperature T
549
- // Requires temperatures both above and below T within max_gap
550
- export function can_interpolate_at_temperature(entry, T, max_gap) {
551
- const bracket = find_bracket_temperatures(entry, T);
552
- if (!bracket)
553
- return false;
554
- return bracket.T_high - bracket.T_low <= max_gap;
555
- }
556
- // Linearly interpolate energy at temperature T
557
- // Returns null if interpolation is not possible
558
- export function interpolate_energy_at_temperature(entry, T, max_gap) {
559
- const bracket = find_bracket_temperatures(entry, T);
560
- if (!bracket)
561
- return null;
562
- if (bracket.T_high - bracket.T_low > max_gap)
563
- return null;
564
- // Linear interpolation: E(T) = E_low + (E_high - E_low) * (T - T_low) / (T_high - T_low)
565
- const fraction = (T - bracket.T_low) / (bracket.T_high - bracket.T_low);
566
- return bracket.E_low + (bracket.E_high - bracket.E_low) * fraction;
567
- }
568
- const DEFAULT_TEMP_FILTER_OPTIONS = {
569
- interpolate: true,
570
- max_interpolation_gap: 500,
571
- };
572
- // Filter entries for temperature T, replacing energy with G(T) where available.
573
- // - Entries WITH temp data at T: use G(T) as energy
574
- // - Entries WITHOUT any temp data: keep with static energy (e.g., pure element refs)
575
- // - Entries WITH temp data but MISSING T: interpolate if enabled and possible, else excluded
576
- export function filter_entries_at_temperature(entries, T, options = {}) {
577
- const { interpolate, max_interpolation_gap } = {
578
- ...DEFAULT_TEMP_FILTER_OPTIONS,
579
- ...options,
580
- };
581
- return entries.flatMap((entry) => {
582
- // No temp data - keep with static energy
583
- if (!entry_has_temp_data(entry))
584
- return [entry];
585
- // Exact temperature match - use G(T)
586
- // Set both energy and energy_per_atom so downstream formation energy
587
- // calculations use the temperature-dependent value (not stale 0K energy_per_atom)
588
- if (entry_has_temperature(entry, T)) {
589
- // free_energies stores per-atom values (E_0K/atom + F_vib/atom),
590
- // so energy is already per-atom — set both fields to the same value
591
- const energy = get_energy_at_temperature(entry, T);
592
- return [{ ...entry, energy, energy_per_atom: energy }];
593
- }
594
- // Try interpolation if enabled
595
- if (interpolate) {
596
- const energy = interpolate_energy_at_temperature(entry, T, max_interpolation_gap);
597
- if (energy !== null) {
598
- // interpolated energy is also per-atom (interpolated from per-atom free_energies)
599
- return [{ ...entry, energy, energy_per_atom: energy }];
600
- }
601
- }
602
- // Exclude entry (has temp data but can't get energy at T)
603
- return [];
604
- });
605
- }
606
- // Gas-dependent chemical potential helpers
607
- // Analyze entries for gas-dependent elements (safe wrapper with optional config)
608
- // Returns information about which gases are relevant for the chemical system.
609
- export function safe_analyze_gas_data(entries, config) {
610
- if (!config || !config.enabled_gases?.length) {
611
- return {
612
- has_gas_dependent_elements: false,
613
- gas_elements: [],
614
- relevant_gases: [],
615
- };
616
- }
617
- return _analyze_gas_data(entries, config);
618
- }
619
- // Apply gas chemical potential corrections to entries (safe wrapper with optional config)
620
- // This adjusts formation energies based on gas atmosphere conditions (T, P).
621
- // Should be applied after temperature filtering.
622
- export function safe_apply_gas_corrections(entries, config, T) {
623
- if (!config || !config.enabled_gases?.length)
624
- return entries;
625
- return _apply_gas_corrections(entries, config, T);
626
- }
627
- // Get gas-corrected entries in one call (consolidates analysis + correction)
628
- // Merges gas_pressures with config.pressures and applies corrections if the
629
- // chemical system contains gas-dependent elements. Returns original entries
630
- // if no gas config or no relevant gases.
631
- export function get_gas_corrected_entries(entries, gas_config, gas_pressures, temperature) {
632
- if (!gas_config?.enabled_gases?.length) {
633
- return {
634
- entries,
635
- analysis: {
636
- has_gas_dependent_elements: false,
637
- gas_elements: [],
638
- relevant_gases: [],
639
- },
640
- merged_config: undefined,
641
- };
642
- }
643
- const merged_config = {
644
- ...gas_config,
645
- pressures: { ...gas_config.pressures, ...gas_pressures },
646
- };
647
- const analysis = _analyze_gas_data(entries, merged_config);
648
- if (!analysis.has_gas_dependent_elements) {
649
- return { entries, analysis, merged_config };
650
- }
651
- return {
652
- entries: _apply_gas_corrections(entries, merged_config, temperature),
653
- analysis,
654
- merged_config,
655
- };
656
- }
657
- // Derive a display label for a convex hull entry, falling back to composition
658
- // when reduced_formula and name are both missing.
659
- export function get_entry_label(entry, elements) {
660
- if (entry.reduced_formula)
661
- return entry.reduced_formula;
662
- if (entry.name)
663
- return entry.name;
664
- let pairs = Object.entries(entry.composition).filter(([, amt]) => amt > 0);
665
- if (elements) {
666
- pairs = pairs.sort(([el1], [el2]) => elements.indexOf(el1) - elements.indexOf(el2));
667
- }
668
- return pairs
669
- .map(([el, amt]) => (Math.abs(amt - 1) < 1e-6 ? el : `${el}${format_num(amt, `.2~`)}`))
670
- .join(``);
671
- }