matterviz 0.3.5 → 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 (855) 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/brillouin/BrillouinZone.svelte +549 -0
  14. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
  15. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
  16. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  17. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
  18. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
  19. package/dist/src/lib/brillouin/compute.ts +529 -0
  20. package/dist/src/lib/brillouin/index.ts +8 -0
  21. package/dist/src/lib/brillouin/types.ts +51 -0
  22. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
  23. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  24. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  25. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
  26. package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
  27. package/dist/src/lib/chempot-diagram/color.ts +42 -0
  28. package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
  29. package/dist/src/lib/chempot-diagram/index.ts +6 -0
  30. package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
  31. package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
  32. package/dist/src/lib/chempot-diagram/types.ts +130 -0
  33. package/dist/src/lib/colors/index.ts +249 -0
  34. package/dist/src/lib/composition/BarChart.svelte +297 -0
  35. package/dist/src/lib/composition/BubbleChart.svelte +218 -0
  36. package/dist/src/lib/composition/Composition.svelte +165 -0
  37. package/dist/src/lib/composition/Formula.svelte +268 -0
  38. package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
  39. package/dist/src/lib/composition/PieChart.svelte +323 -0
  40. package/dist/src/lib/composition/format.ts +155 -0
  41. package/dist/src/lib/composition/index.ts +37 -0
  42. package/dist/src/lib/composition/parse.ts +605 -0
  43. package/dist/src/lib/constants.ts +134 -0
  44. package/dist/src/lib/controls.ts +42 -0
  45. package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
  46. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
  47. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
  48. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
  49. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
  50. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
  51. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
  52. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
  53. package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
  54. package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
  55. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
  56. package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
  57. package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
  58. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
  59. package/dist/src/lib/convex-hull/helpers.ts +932 -0
  60. package/dist/src/lib/convex-hull/index.ts +202 -0
  61. package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
  62. package/dist/src/lib/convex-hull/types.ts +267 -0
  63. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
  64. package/dist/src/lib/coordination/calc-coordination.ts +93 -0
  65. package/dist/src/lib/coordination/index.ts +9 -0
  66. package/dist/src/lib/effects.svelte.ts +48 -0
  67. package/dist/src/lib/element/BohrAtom.svelte +147 -0
  68. package/dist/src/lib/element/ElementHeading.svelte +26 -0
  69. package/dist/src/lib/element/ElementPhoto.svelte +57 -0
  70. package/dist/src/lib/element/ElementStats.svelte +80 -0
  71. package/dist/src/lib/element/ElementTile.svelte +484 -0
  72. package/dist/src/lib/element/data.json.gz.d.ts +4 -0
  73. package/dist/src/lib/element/data.ts +14 -0
  74. package/dist/src/lib/element/index.ts +8 -0
  75. package/dist/src/lib/element/types.ts +62 -0
  76. package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
  77. package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
  78. package/dist/src/lib/feedback/index.ts +4 -0
  79. package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
  80. package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
  81. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
  82. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
  83. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  84. package/dist/src/lib/fermi-surface/compute.ts +728 -0
  85. package/dist/src/lib/fermi-surface/constants.ts +32 -0
  86. package/dist/src/lib/fermi-surface/export.ts +64 -0
  87. package/dist/src/lib/fermi-surface/index.ts +14 -0
  88. package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
  89. package/dist/src/lib/fermi-surface/parse.ts +574 -0
  90. package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
  91. package/dist/src/lib/fermi-surface/types.ts +159 -0
  92. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  93. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  94. package/dist/src/lib/heatmap-matrix/index.ts +167 -0
  95. package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
  96. package/dist/src/lib/icons.ts +650 -0
  97. package/dist/src/lib/index.ts +61 -0
  98. package/dist/src/lib/io/decompress.ts +92 -0
  99. package/dist/src/lib/io/export.ts +385 -0
  100. package/dist/src/lib/io/fetch.ts +46 -0
  101. package/dist/src/lib/io/file-drop.ts +51 -0
  102. package/dist/src/lib/io/index.ts +7 -0
  103. package/dist/src/lib/io/is-binary.ts +24 -0
  104. package/dist/src/lib/io/types.ts +8 -0
  105. package/dist/src/lib/io/url-drop.ts +141 -0
  106. package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
  107. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
  108. package/dist/src/lib/isosurface/index.ts +7 -0
  109. package/dist/src/lib/isosurface/parse.ts +656 -0
  110. package/dist/src/lib/isosurface/slice.ts +175 -0
  111. package/dist/src/lib/isosurface/types.ts +309 -0
  112. package/dist/src/lib/labels.ts +320 -0
  113. package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
  114. package/dist/src/lib/layout/InfoCard.svelte +120 -0
  115. package/dist/src/lib/layout/InfoTag.svelte +185 -0
  116. package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
  117. package/dist/src/lib/layout/SettingsSection.svelte +148 -0
  118. package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
  119. package/dist/src/lib/layout/fullscreen.ts +65 -0
  120. package/dist/src/lib/layout/index.ts +11 -0
  121. package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
  122. package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
  123. package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
  124. package/dist/src/lib/layout/json-tree/index.ts +3 -0
  125. package/dist/src/lib/layout/json-tree/types.ts +126 -0
  126. package/dist/src/lib/layout/json-tree/utils.ts +682 -0
  127. package/dist/src/lib/marching-cubes.ts +614 -0
  128. package/dist/src/lib/math.ts +1081 -0
  129. package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
  130. package/dist/src/lib/overlays/CopyButton.svelte +45 -0
  131. package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
  132. package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
  133. package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
  134. package/dist/src/lib/overlays/index.ts +3 -0
  135. package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
  136. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
  137. package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
  138. package/dist/src/lib/periodic-table/index.ts +12 -0
  139. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  140. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
  141. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  142. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  143. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  144. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
  145. package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
  146. package/dist/src/lib/phase-diagram/colors.ts +58 -0
  147. package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
  148. package/dist/src/lib/phase-diagram/index.ts +13 -0
  149. package/dist/src/lib/phase-diagram/parse.ts +348 -0
  150. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
  151. package/dist/src/lib/phase-diagram/types.ts +144 -0
  152. package/dist/src/lib/phase-diagram/utils.ts +775 -0
  153. package/dist/src/lib/plot/AxisLabel.svelte +51 -0
  154. package/dist/src/lib/plot/BarPlot.svelte +2113 -0
  155. package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
  156. package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
  157. package/dist/src/lib/plot/ColorBar.svelte +721 -0
  158. package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
  159. package/dist/src/lib/plot/ElementScatter.svelte +63 -0
  160. package/dist/src/lib/plot/FillArea.svelte +223 -0
  161. package/dist/src/lib/plot/Histogram.svelte +1558 -0
  162. package/dist/src/lib/plot/HistogramControls.svelte +212 -0
  163. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
  164. package/dist/src/lib/plot/Line.svelte +84 -0
  165. package/dist/src/lib/plot/PlotAxis.svelte +169 -0
  166. package/dist/src/lib/plot/PlotControls.svelte +537 -0
  167. package/dist/src/lib/plot/PlotLegend.svelte +569 -0
  168. package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
  169. package/dist/src/lib/plot/PortalSelect.svelte +253 -0
  170. package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
  171. package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
  172. package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
  173. package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
  174. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
  175. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
  176. package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
  177. package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
  178. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
  179. package/dist/src/lib/plot/Surface3D.svelte +197 -0
  180. package/dist/src/lib/plot/ZeroLines.svelte +97 -0
  181. package/dist/src/lib/plot/ZoomRect.svelte +23 -0
  182. package/dist/src/lib/plot/adaptive-density.ts +316 -0
  183. package/dist/src/lib/plot/auto-place.ts +184 -0
  184. package/dist/src/lib/plot/axis-utils.ts +122 -0
  185. package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
  186. package/dist/src/lib/plot/data-cleaning.ts +1069 -0
  187. package/dist/src/lib/plot/data-transform.ts +69 -0
  188. package/dist/src/lib/plot/defaults.ts +9 -0
  189. package/dist/src/lib/plot/fill-utils.ts +494 -0
  190. package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
  191. package/dist/src/lib/plot/index.ts +53 -0
  192. package/dist/src/lib/plot/interactions.ts +119 -0
  193. package/dist/src/lib/plot/layout.ts +425 -0
  194. package/dist/src/lib/plot/reference-line.ts +426 -0
  195. package/dist/src/lib/plot/scales.ts +654 -0
  196. package/dist/src/lib/plot/svg.ts +23 -0
  197. package/dist/src/lib/plot/types.ts +1144 -0
  198. package/dist/src/lib/plot/utils/label-placement.ts +541 -0
  199. package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
  200. package/dist/src/lib/plot/utils.ts +11 -0
  201. package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
  202. package/dist/src/lib/rdf/calc-rdf.ts +167 -0
  203. package/dist/src/lib/rdf/index.ts +27 -0
  204. package/dist/src/lib/sanitize.ts +126 -0
  205. package/dist/src/lib/settings.ts +1479 -0
  206. package/dist/src/lib/spectral/Bands.svelte +1040 -0
  207. package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
  208. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
  209. package/dist/src/lib/spectral/Dos.svelte +697 -0
  210. package/dist/src/lib/spectral/helpers.ts +1381 -0
  211. package/dist/src/lib/spectral/index.ts +8 -0
  212. package/dist/src/lib/spectral/types.ts +112 -0
  213. package/dist/src/lib/state.svelte.ts +64 -0
  214. package/dist/src/lib/structure/Arrow.svelte +72 -0
  215. package/dist/src/lib/structure/AtomLegend.svelte +815 -0
  216. package/dist/src/lib/structure/Bond.svelte +140 -0
  217. package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
  218. package/dist/src/lib/structure/CellSelect.svelte +349 -0
  219. package/dist/src/lib/structure/Cylinder.svelte +45 -0
  220. package/dist/src/lib/structure/Lattice.svelte +196 -0
  221. package/dist/src/lib/structure/Structure.svelte +2248 -0
  222. package/dist/src/lib/structure/StructureControls.svelte +1273 -0
  223. package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
  224. package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
  225. package/dist/src/lib/structure/StructureScene.svelte +2255 -0
  226. package/dist/src/lib/structure/atom-properties.ts +316 -0
  227. package/dist/src/lib/structure/bond-order-perception.ts +447 -0
  228. package/dist/src/lib/structure/bonding.ts +944 -0
  229. package/dist/src/lib/structure/export.ts +861 -0
  230. package/dist/src/lib/structure/index.ts +291 -0
  231. package/dist/src/lib/structure/label-placement.ts +130 -0
  232. package/dist/src/lib/structure/measure.ts +45 -0
  233. package/dist/src/lib/structure/parse.ts +1705 -0
  234. package/dist/src/lib/structure/partial-occupancy.ts +183 -0
  235. package/dist/src/lib/structure/pbc.ts +164 -0
  236. package/dist/src/lib/structure/supercell.ts +226 -0
  237. package/dist/src/lib/structure/validation.ts +11 -0
  238. package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
  239. package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
  240. package/dist/src/lib/symmetry/cell-transform.ts +118 -0
  241. package/dist/src/lib/symmetry/index.ts +348 -0
  242. package/dist/src/lib/symmetry/spacegroups.ts +404 -0
  243. package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
  244. package/dist/src/lib/table/ToggleMenu.svelte +385 -0
  245. package/dist/src/lib/table/index.ts +139 -0
  246. package/dist/src/lib/theme/ThemeControl.svelte +53 -0
  247. package/dist/src/lib/theme/index.ts +107 -0
  248. package/dist/src/lib/theme/themes.mjs +297 -0
  249. package/dist/src/lib/time.ts +71 -0
  250. package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
  251. package/dist/src/lib/tooltip/index.ts +2 -0
  252. package/dist/src/lib/tooltip/types.ts +13 -0
  253. package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
  254. package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
  255. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
  256. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
  257. package/dist/src/lib/trajectory/constants.ts +7 -0
  258. package/dist/src/lib/trajectory/extract.ts +196 -0
  259. package/dist/src/lib/trajectory/format-detect.ts +96 -0
  260. package/dist/src/lib/trajectory/frame-reader.ts +456 -0
  261. package/dist/src/lib/trajectory/helpers.ts +217 -0
  262. package/dist/src/lib/trajectory/index.ts +218 -0
  263. package/dist/src/lib/trajectory/parse/ase.ts +109 -0
  264. package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
  265. package/dist/src/lib/trajectory/parse/index.ts +411 -0
  266. package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
  267. package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
  268. package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
  269. package/dist/src/lib/trajectory/plotting.ts +599 -0
  270. package/dist/src/lib/trajectory/types.ts +13 -0
  271. package/dist/src/lib/utils.ts +56 -0
  272. package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
  273. package/dist/src/lib/xrd/broadening.ts +130 -0
  274. package/dist/src/lib/xrd/calc-xrd.ts +397 -0
  275. package/dist/src/lib/xrd/index.ts +38 -0
  276. package/dist/src/lib/xrd/parse.ts +858 -0
  277. package/dist/webview.js +29421 -0
  278. package/icon.png +0 -0
  279. package/license +1 -1
  280. package/matterviz-0.3.2.vsix +0 -0
  281. package/matterviz-0.3.4.vsix +0 -0
  282. package/matterviz-0.3.5.vsix +0 -0
  283. package/package.json +1460 -215
  284. package/readme.md +171 -98
  285. package/scripts/sync-config.ts +101 -0
  286. package/src/declarations.d.ts +2 -0
  287. package/src/extension.ts +972 -0
  288. package/src/node-io.ts +65 -0
  289. package/src/types.ts +17 -0
  290. package/src/webview/JsonBrowser.svelte +1079 -0
  291. package/src/webview/PlotPanel.svelte +346 -0
  292. package/src/webview/detect.ts +444 -0
  293. package/src/webview/main.ts +764 -0
  294. package/src/webview/plot-utils.ts +250 -0
  295. package/test-fixtures/all-viz-types.json.gz +0 -0
  296. package/test-fixtures/plot-demo-data.json.gz +0 -0
  297. package/tests/detect.test.ts +604 -0
  298. package/tests/extension.test.ts +2041 -0
  299. package/tests/node-io.test.ts +39 -0
  300. package/tests/plot-utils.test.ts +302 -0
  301. package/tests/vite-plugin-json-gz.test.ts +114 -0
  302. package/tests/vscode-mock.ts +18 -0
  303. package/tests/webview.test.ts +231 -0
  304. package/tsconfig.json +20 -0
  305. package/vite-plugin-json-gz.ts +29 -0
  306. package/vite.config.ts +34 -0
  307. package/vite.extension.config.ts +34 -0
  308. package/dist/EmptyState.svelte.d.ts +0 -9
  309. package/dist/FilePicker.svelte +0 -360
  310. package/dist/FilePicker.svelte.d.ts +0 -17
  311. package/dist/Icon.svelte.d.ts +0 -13
  312. package/dist/MillerIndexInput.svelte +0 -66
  313. package/dist/MillerIndexInput.svelte.d.ts +0 -7
  314. package/dist/api/mp.d.ts +0 -6
  315. package/dist/api/mp.js +0 -22
  316. package/dist/api/optimade.d.ts +0 -45
  317. package/dist/api/optimade.js +0 -135
  318. package/dist/brillouin/BrillouinZone.svelte +0 -546
  319. package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
  320. package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
  321. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
  322. package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
  323. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
  324. package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  325. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
  326. package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
  327. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
  328. package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
  329. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
  330. package/dist/brillouin/compute.d.ts +0 -17
  331. package/dist/brillouin/compute.js +0 -426
  332. package/dist/brillouin/index.d.ts +0 -8
  333. package/dist/brillouin/index.js +0 -8
  334. package/dist/brillouin/types.d.ts +0 -48
  335. package/dist/brillouin/types.js +0 -1
  336. package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
  337. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
  338. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
  339. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
  340. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
  341. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
  342. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
  343. package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
  344. package/dist/chempot-diagram/async-compute.svelte.js +0 -78
  345. package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
  346. package/dist/chempot-diagram/chempot-worker.js +0 -11
  347. package/dist/chempot-diagram/color.d.ts +0 -10
  348. package/dist/chempot-diagram/color.js +0 -32
  349. package/dist/chempot-diagram/compute.d.ts +0 -48
  350. package/dist/chempot-diagram/compute.js +0 -812
  351. package/dist/chempot-diagram/index.d.ts +0 -6
  352. package/dist/chempot-diagram/index.js +0 -6
  353. package/dist/chempot-diagram/pointer.d.ts +0 -16
  354. package/dist/chempot-diagram/pointer.js +0 -40
  355. package/dist/chempot-diagram/temperature.d.ts +0 -15
  356. package/dist/chempot-diagram/temperature.js +0 -36
  357. package/dist/chempot-diagram/types.d.ts +0 -86
  358. package/dist/chempot-diagram/types.js +0 -28
  359. package/dist/colors/index.d.ts +0 -47
  360. package/dist/colors/index.js +0 -203
  361. package/dist/composition/BarChart.svelte +0 -297
  362. package/dist/composition/BarChart.svelte.d.ts +0 -39
  363. package/dist/composition/BubbleChart.svelte +0 -218
  364. package/dist/composition/BubbleChart.svelte.d.ts +0 -28
  365. package/dist/composition/Composition.svelte +0 -164
  366. package/dist/composition/Composition.svelte.d.ts +0 -15
  367. package/dist/composition/Formula.svelte +0 -265
  368. package/dist/composition/Formula.svelte.d.ts +0 -19
  369. package/dist/composition/FormulaFilter.svelte +0 -1259
  370. package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
  371. package/dist/composition/PieChart.svelte +0 -323
  372. package/dist/composition/PieChart.svelte.d.ts +0 -37
  373. package/dist/composition/format.d.ts +0 -15
  374. package/dist/composition/format.js +0 -109
  375. package/dist/composition/index.d.ts +0 -20
  376. package/dist/composition/index.js +0 -14
  377. package/dist/composition/parse.d.ts +0 -55
  378. package/dist/composition/parse.js +0 -459
  379. package/dist/constants.d.ts +0 -29
  380. package/dist/constants.js +0 -99
  381. package/dist/controls.d.ts +0 -14
  382. package/dist/controls.js +0 -30
  383. package/dist/convex-hull/ConvexHull.svelte +0 -157
  384. package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
  385. package/dist/convex-hull/ConvexHull2D.svelte +0 -814
  386. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
  387. package/dist/convex-hull/ConvexHull3D.svelte +0 -1790
  388. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
  389. package/dist/convex-hull/ConvexHull4D.svelte +0 -1386
  390. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
  391. package/dist/convex-hull/ConvexHullControls.svelte +0 -546
  392. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
  393. package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -122
  394. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
  395. package/dist/convex-hull/ConvexHullStats.svelte +0 -922
  396. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
  397. package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
  398. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
  399. package/dist/convex-hull/GasPressureControls.svelte +0 -247
  400. package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
  401. package/dist/convex-hull/StructurePopup.svelte +0 -116
  402. package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
  403. package/dist/convex-hull/TemperatureSlider.svelte +0 -137
  404. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
  405. package/dist/convex-hull/barycentric-coords.d.ts +0 -18
  406. package/dist/convex-hull/barycentric-coords.js +0 -182
  407. package/dist/convex-hull/demo-temperature.d.ts +0 -6
  408. package/dist/convex-hull/demo-temperature.js +0 -40
  409. package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
  410. package/dist/convex-hull/gas-thermodynamics.js +0 -316
  411. package/dist/convex-hull/helpers.d.ts +0 -103
  412. package/dist/convex-hull/helpers.js +0 -689
  413. package/dist/convex-hull/index.d.ts +0 -118
  414. package/dist/convex-hull/index.js +0 -57
  415. package/dist/convex-hull/thermodynamics.d.ts +0 -66
  416. package/dist/convex-hull/thermodynamics.js +0 -1752
  417. package/dist/convex-hull/types.d.ts +0 -162
  418. package/dist/convex-hull/types.js +0 -36
  419. package/dist/coordination/CoordinationBarPlot.svelte +0 -311
  420. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
  421. package/dist/coordination/calc-coordination.d.ts +0 -15
  422. package/dist/coordination/calc-coordination.js +0 -63
  423. package/dist/coordination/index.d.ts +0 -8
  424. package/dist/coordination/index.js +0 -7
  425. package/dist/element/BohrAtom.svelte +0 -147
  426. package/dist/element/BohrAtom.svelte.d.ts +0 -20
  427. package/dist/element/ElementHeading.svelte +0 -26
  428. package/dist/element/ElementHeading.svelte.d.ts +0 -8
  429. package/dist/element/ElementPhoto.svelte +0 -57
  430. package/dist/element/ElementPhoto.svelte.d.ts +0 -9
  431. package/dist/element/ElementStats.svelte +0 -80
  432. package/dist/element/ElementStats.svelte.d.ts +0 -8
  433. package/dist/element/ElementTile.svelte +0 -484
  434. package/dist/element/ElementTile.svelte.d.ts +0 -29
  435. package/dist/element/Nucleus.svelte.d.ts +0 -17
  436. package/dist/element/data.d.ts +0 -2
  437. package/dist/element/data.js +0 -2
  438. package/dist/element/data.json.gz.d.ts +0 -2
  439. package/dist/element/index.d.ts +0 -8
  440. package/dist/element/index.js +0 -8
  441. package/dist/element/types.d.ts +0 -57
  442. package/dist/element/types.js +0 -1
  443. package/dist/feedback/ClickFeedback.svelte +0 -58
  444. package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
  445. package/dist/feedback/DragOverlay.svelte +0 -42
  446. package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
  447. package/dist/feedback/Spinner.svelte.d.ts +0 -7
  448. package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
  449. package/dist/feedback/index.d.ts +0 -4
  450. package/dist/feedback/index.js +0 -4
  451. package/dist/fermi-surface/FermiSlice.svelte +0 -189
  452. package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
  453. package/dist/fermi-surface/FermiSurface.svelte +0 -600
  454. package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
  455. package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
  456. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
  457. package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
  458. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
  459. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  460. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
  461. package/dist/fermi-surface/compute.d.ts +0 -5
  462. package/dist/fermi-surface/compute.js +0 -538
  463. package/dist/fermi-surface/constants.d.ts +0 -9
  464. package/dist/fermi-surface/constants.js +0 -27
  465. package/dist/fermi-surface/export.d.ts +0 -5
  466. package/dist/fermi-surface/export.js +0 -63
  467. package/dist/fermi-surface/index.d.ts +0 -12
  468. package/dist/fermi-surface/index.js +0 -13
  469. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  470. package/dist/fermi-surface/marching-cubes.js +0 -2
  471. package/dist/fermi-surface/parse.d.ts +0 -2
  472. package/dist/fermi-surface/parse.js +0 -495
  473. package/dist/fermi-surface/symmetry.d.ts +0 -3
  474. package/dist/fermi-surface/symmetry.js +0 -46
  475. package/dist/fermi-surface/types.d.ts +0 -113
  476. package/dist/fermi-surface/types.js +0 -4
  477. package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
  478. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
  479. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  480. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
  481. package/dist/heatmap-matrix/index.d.ts +0 -53
  482. package/dist/heatmap-matrix/index.js +0 -100
  483. package/dist/heatmap-matrix/shared.d.ts +0 -2
  484. package/dist/heatmap-matrix/shared.js +0 -4
  485. package/dist/icons.d.ts +0 -569
  486. package/dist/icons.js +0 -648
  487. package/dist/index.d.ts +0 -39
  488. package/dist/index.js +0 -39
  489. package/dist/io/decompress.d.ts +0 -10
  490. package/dist/io/decompress.js +0 -74
  491. package/dist/io/export.d.ts +0 -16
  492. package/dist/io/export.js +0 -316
  493. package/dist/io/fetch.d.ts +0 -5
  494. package/dist/io/fetch.js +0 -39
  495. package/dist/io/file-drop.d.ts +0 -7
  496. package/dist/io/file-drop.js +0 -43
  497. package/dist/io/index.d.ts +0 -7
  498. package/dist/io/index.js +0 -7
  499. package/dist/io/is-binary.d.ts +0 -1
  500. package/dist/io/is-binary.js +0 -20
  501. package/dist/io/types.d.ts +0 -8
  502. package/dist/io/types.js +0 -1
  503. package/dist/io/url-drop.d.ts +0 -2
  504. package/dist/io/url-drop.js +0 -117
  505. package/dist/isosurface/Isosurface.svelte +0 -285
  506. package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
  507. package/dist/isosurface/IsosurfaceControls.svelte +0 -291
  508. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
  509. package/dist/isosurface/index.d.ts +0 -5
  510. package/dist/isosurface/index.js +0 -6
  511. package/dist/isosurface/parse.d.ts +0 -6
  512. package/dist/isosurface/parse.js +0 -553
  513. package/dist/isosurface/slice.d.ts +0 -11
  514. package/dist/isosurface/slice.js +0 -140
  515. package/dist/isosurface/types.d.ts +0 -56
  516. package/dist/isosurface/types.js +0 -227
  517. package/dist/labels.d.ts +0 -53
  518. package/dist/labels.js +0 -274
  519. package/dist/layout/FullscreenToggle.svelte +0 -50
  520. package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
  521. package/dist/layout/InfoCard.svelte +0 -120
  522. package/dist/layout/InfoCard.svelte.d.ts +0 -21
  523. package/dist/layout/InfoTag.svelte +0 -183
  524. package/dist/layout/InfoTag.svelte.d.ts +0 -19
  525. package/dist/layout/PropertyFilter.svelte +0 -244
  526. package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
  527. package/dist/layout/SettingsSection.svelte +0 -148
  528. package/dist/layout/SettingsSection.svelte.d.ts +0 -17
  529. package/dist/layout/SubpageGrid.svelte +0 -82
  530. package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
  531. package/dist/layout/fullscreen.d.ts +0 -9
  532. package/dist/layout/fullscreen.js +0 -53
  533. package/dist/layout/index.d.ts +0 -10
  534. package/dist/layout/index.js +0 -8
  535. package/dist/layout/json-tree/JsonNode.svelte +0 -548
  536. package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
  537. package/dist/layout/json-tree/JsonTree.svelte +0 -1222
  538. package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
  539. package/dist/layout/json-tree/JsonValue.svelte +0 -334
  540. package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
  541. package/dist/layout/json-tree/index.d.ts +0 -3
  542. package/dist/layout/json-tree/index.js +0 -3
  543. package/dist/layout/json-tree/types.d.ts +0 -73
  544. package/dist/layout/json-tree/types.js +0 -3
  545. package/dist/layout/json-tree/utils.d.ts +0 -29
  546. package/dist/layout/json-tree/utils.js +0 -649
  547. package/dist/marching-cubes.d.ts +0 -14
  548. package/dist/marching-cubes.js +0 -542
  549. package/dist/math.d.ts +0 -91
  550. package/dist/math.js +0 -896
  551. package/dist/overlays/ContextMenu.svelte +0 -162
  552. package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
  553. package/dist/overlays/CopyButton.svelte +0 -45
  554. package/dist/overlays/CopyButton.svelte.d.ts +0 -8
  555. package/dist/overlays/DraggablePane.svelte +0 -564
  556. package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
  557. package/dist/overlays/InfoPaneCards.svelte +0 -149
  558. package/dist/overlays/InfoPaneCards.svelte.d.ts +0 -22
  559. package/dist/overlays/index.d.ts +0 -2
  560. package/dist/overlays/index.js +0 -2
  561. package/dist/periodic-table/PeriodicTable.svelte +0 -469
  562. package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
  563. package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
  564. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
  565. package/dist/periodic-table/PropertySelect.svelte +0 -37
  566. package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
  567. package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
  568. package/dist/periodic-table/index.d.ts +0 -10
  569. package/dist/periodic-table/index.js +0 -4
  570. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1084
  571. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
  572. package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -449
  573. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
  574. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  575. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
  576. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
  577. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
  578. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
  579. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
  580. package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
  581. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
  582. package/dist/phase-diagram/build-diagram.d.ts +0 -11
  583. package/dist/phase-diagram/build-diagram.js +0 -167
  584. package/dist/phase-diagram/colors.d.ts +0 -35
  585. package/dist/phase-diagram/colors.js +0 -51
  586. package/dist/phase-diagram/diagram-input.d.ts +0 -33
  587. package/dist/phase-diagram/diagram-input.js +0 -3
  588. package/dist/phase-diagram/index.d.ts +0 -13
  589. package/dist/phase-diagram/index.js +0 -13
  590. package/dist/phase-diagram/parse.d.ts +0 -55
  591. package/dist/phase-diagram/parse.js +0 -276
  592. package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
  593. package/dist/phase-diagram/svg-to-diagram.js +0 -867
  594. package/dist/phase-diagram/types.d.ts +0 -99
  595. package/dist/phase-diagram/types.js +0 -1
  596. package/dist/phase-diagram/utils.d.ts +0 -118
  597. package/dist/phase-diagram/utils.js +0 -606
  598. package/dist/plot/AxisLabel.svelte +0 -51
  599. package/dist/plot/AxisLabel.svelte.d.ts +0 -16
  600. package/dist/plot/BarPlot.svelte +0 -2265
  601. package/dist/plot/BarPlot.svelte.d.ts +0 -83
  602. package/dist/plot/BarPlotControls.svelte +0 -66
  603. package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
  604. package/dist/plot/ColorBar.svelte +0 -719
  605. package/dist/plot/ColorBar.svelte.d.ts +0 -31
  606. package/dist/plot/ColorScaleSelect.svelte +0 -54
  607. package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
  608. package/dist/plot/ElementScatter.svelte +0 -63
  609. package/dist/plot/ElementScatter.svelte.d.ts +0 -14
  610. package/dist/plot/FillArea.svelte +0 -225
  611. package/dist/plot/FillArea.svelte.d.ts +0 -21
  612. package/dist/plot/Histogram.svelte +0 -1672
  613. package/dist/plot/Histogram.svelte.d.ts +0 -50
  614. package/dist/plot/HistogramControls.svelte +0 -212
  615. package/dist/plot/HistogramControls.svelte.d.ts +0 -22
  616. package/dist/plot/InteractiveAxisLabel.svelte +0 -94
  617. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
  618. package/dist/plot/Line.svelte +0 -84
  619. package/dist/plot/Line.svelte.d.ts +0 -15
  620. package/dist/plot/PlotControls.svelte +0 -537
  621. package/dist/plot/PlotControls.svelte.d.ts +0 -4
  622. package/dist/plot/PlotLegend.svelte +0 -569
  623. package/dist/plot/PlotLegend.svelte.d.ts +0 -29
  624. package/dist/plot/PlotTooltip.svelte +0 -67
  625. package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
  626. package/dist/plot/PortalSelect.svelte +0 -253
  627. package/dist/plot/PortalSelect.svelte.d.ts +0 -16
  628. package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
  629. package/dist/plot/ReferenceLine3D.svelte +0 -154
  630. package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
  631. package/dist/plot/ReferencePlane.svelte +0 -178
  632. package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
  633. package/dist/plot/ScatterPlot.svelte +0 -2845
  634. package/dist/plot/ScatterPlot.svelte.d.ts +0 -93
  635. package/dist/plot/ScatterPlot3D.svelte +0 -502
  636. package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
  637. package/dist/plot/ScatterPlot3DControls.svelte +0 -437
  638. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
  639. package/dist/plot/ScatterPlot3DScene.svelte +0 -912
  640. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
  641. package/dist/plot/ScatterPlotControls.svelte +0 -307
  642. package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
  643. package/dist/plot/ScatterPoint.svelte +0 -191
  644. package/dist/plot/ScatterPoint.svelte.d.ts +0 -21
  645. package/dist/plot/SpacegroupBarPlot.svelte +0 -293
  646. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
  647. package/dist/plot/Surface3D.svelte +0 -200
  648. package/dist/plot/Surface3D.svelte.d.ts +0 -13
  649. package/dist/plot/ZeroLines.svelte +0 -96
  650. package/dist/plot/ZeroLines.svelte.d.ts +0 -32
  651. package/dist/plot/ZoomRect.svelte +0 -23
  652. package/dist/plot/ZoomRect.svelte.d.ts +0 -8
  653. package/dist/plot/axis-utils.d.ts +0 -19
  654. package/dist/plot/axis-utils.js +0 -80
  655. package/dist/plot/data-cleaning.d.ts +0 -37
  656. package/dist/plot/data-cleaning.js +0 -855
  657. package/dist/plot/data-transform.d.ts +0 -16
  658. package/dist/plot/data-transform.js +0 -45
  659. package/dist/plot/defaults.d.ts +0 -19
  660. package/dist/plot/defaults.js +0 -9
  661. package/dist/plot/fill-utils.d.ts +0 -51
  662. package/dist/plot/fill-utils.js +0 -337
  663. package/dist/plot/hover-lock.svelte.d.ts +0 -14
  664. package/dist/plot/hover-lock.svelte.js +0 -46
  665. package/dist/plot/index.d.ts +0 -37
  666. package/dist/plot/index.js +0 -37
  667. package/dist/plot/interactions.d.ts +0 -12
  668. package/dist/plot/interactions.js +0 -100
  669. package/dist/plot/layout.d.ts +0 -60
  670. package/dist/plot/layout.js +0 -230
  671. package/dist/plot/reference-line.d.ts +0 -60
  672. package/dist/plot/reference-line.js +0 -316
  673. package/dist/plot/scales.d.ts +0 -48
  674. package/dist/plot/scales.js +0 -484
  675. package/dist/plot/svg.d.ts +0 -1
  676. package/dist/plot/svg.js +0 -11
  677. package/dist/plot/types.d.ts +0 -859
  678. package/dist/plot/types.js +0 -103
  679. package/dist/plot/utils/label-placement.d.ts +0 -47
  680. package/dist/plot/utils/label-placement.js +0 -256
  681. package/dist/plot/utils/series-visibility.d.ts +0 -9
  682. package/dist/plot/utils/series-visibility.js +0 -67
  683. package/dist/plot/utils.d.ts +0 -1
  684. package/dist/plot/utils.js +0 -14
  685. package/dist/rdf/RdfPlot.svelte +0 -247
  686. package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
  687. package/dist/rdf/calc-rdf.d.ts +0 -4
  688. package/dist/rdf/calc-rdf.js +0 -111
  689. package/dist/rdf/index.d.ts +0 -23
  690. package/dist/rdf/index.js +0 -2
  691. package/dist/sanitize.d.ts +0 -4
  692. package/dist/sanitize.js +0 -114
  693. package/dist/settings.d.ts +0 -255
  694. package/dist/settings.js +0 -1132
  695. package/dist/spectral/Bands.svelte +0 -1040
  696. package/dist/spectral/Bands.svelte.d.ts +0 -40
  697. package/dist/spectral/BandsAndDos.svelte +0 -128
  698. package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
  699. package/dist/spectral/BrillouinBandsDos.svelte +0 -248
  700. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
  701. package/dist/spectral/Dos.svelte +0 -697
  702. package/dist/spectral/Dos.svelte.d.ts +0 -29
  703. package/dist/spectral/helpers.d.ts +0 -117
  704. package/dist/spectral/helpers.js +0 -1023
  705. package/dist/spectral/index.d.ts +0 -6
  706. package/dist/spectral/index.js +0 -7
  707. package/dist/spectral/types.d.ts +0 -84
  708. package/dist/spectral/types.js +0 -2
  709. package/dist/state.svelte.d.ts +0 -25
  710. package/dist/state.svelte.js +0 -45
  711. package/dist/structure/Arrow.svelte +0 -72
  712. package/dist/structure/Arrow.svelte.d.ts +0 -15
  713. package/dist/structure/AtomLegend.svelte +0 -798
  714. package/dist/structure/AtomLegend.svelte.d.ts +0 -34
  715. package/dist/structure/Bond.svelte +0 -140
  716. package/dist/structure/Bond.svelte.d.ts +0 -9
  717. package/dist/structure/CanvasTooltip.svelte +0 -33
  718. package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
  719. package/dist/structure/CellSelect.svelte +0 -351
  720. package/dist/structure/CellSelect.svelte.d.ts +0 -13
  721. package/dist/structure/Cylinder.svelte +0 -45
  722. package/dist/structure/Cylinder.svelte.d.ts +0 -10
  723. package/dist/structure/Lattice.svelte +0 -196
  724. package/dist/structure/Lattice.svelte.d.ts +0 -17
  725. package/dist/structure/Structure.svelte +0 -1999
  726. package/dist/structure/Structure.svelte.d.ts +0 -87
  727. package/dist/structure/StructureControls.svelte +0 -1298
  728. package/dist/structure/StructureControls.svelte.d.ts +0 -31
  729. package/dist/structure/StructureExportPane.svelte +0 -251
  730. package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
  731. package/dist/structure/StructureInfoPane.svelte +0 -735
  732. package/dist/structure/StructureInfoPane.svelte.d.ts +0 -19
  733. package/dist/structure/StructureScene.svelte +0 -1905
  734. package/dist/structure/StructureScene.svelte.d.ts +0 -108
  735. package/dist/structure/atom-properties.d.ts +0 -37
  736. package/dist/structure/atom-properties.js +0 -200
  737. package/dist/structure/bond-order-perception.d.ts +0 -13
  738. package/dist/structure/bond-order-perception.js +0 -367
  739. package/dist/structure/bonding.d.ts +0 -42
  740. package/dist/structure/bonding.js +0 -525
  741. package/dist/structure/export.d.ts +0 -20
  742. package/dist/structure/export.js +0 -727
  743. package/dist/structure/index.d.ts +0 -125
  744. package/dist/structure/index.js +0 -171
  745. package/dist/structure/label-placement.d.ts +0 -14
  746. package/dist/structure/label-placement.js +0 -72
  747. package/dist/structure/measure.d.ts +0 -6
  748. package/dist/structure/measure.js +0 -29
  749. package/dist/structure/parse.d.ts +0 -66
  750. package/dist/structure/parse.js +0 -1363
  751. package/dist/structure/partial-occupancy.d.ts +0 -25
  752. package/dist/structure/partial-occupancy.js +0 -99
  753. package/dist/structure/pbc.d.ts +0 -9
  754. package/dist/structure/pbc.js +0 -123
  755. package/dist/structure/supercell.d.ts +0 -8
  756. package/dist/structure/supercell.js +0 -170
  757. package/dist/structure/validation.d.ts +0 -2
  758. package/dist/structure/validation.js +0 -10
  759. package/dist/symmetry/SymmetryStats.svelte +0 -226
  760. package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
  761. package/dist/symmetry/WyckoffTable.svelte +0 -113
  762. package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
  763. package/dist/symmetry/cell-transform.d.ts +0 -12
  764. package/dist/symmetry/cell-transform.js +0 -91
  765. package/dist/symmetry/index.d.ts +0 -43
  766. package/dist/symmetry/index.js +0 -229
  767. package/dist/symmetry/spacegroups.d.ts +0 -9
  768. package/dist/symmetry/spacegroups.js +0 -394
  769. package/dist/table/HeatmapTable.svelte +0 -1854
  770. package/dist/table/HeatmapTable.svelte.d.ts +0 -49
  771. package/dist/table/ToggleMenu.svelte +0 -376
  772. package/dist/table/ToggleMenu.svelte.d.ts +0 -11
  773. package/dist/table/index.d.ts +0 -74
  774. package/dist/table/index.js +0 -38
  775. package/dist/theme/ThemeControl.svelte +0 -53
  776. package/dist/theme/ThemeControl.svelte.d.ts +0 -9
  777. package/dist/theme/index.d.ts +0 -29
  778. package/dist/theme/index.js +0 -79
  779. package/dist/theme/themes.mjs +0 -285
  780. package/dist/time.d.ts +0 -4
  781. package/dist/time.js +0 -70
  782. package/dist/tooltip/TooltipContent.svelte +0 -58
  783. package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
  784. package/dist/tooltip/index.d.ts +0 -2
  785. package/dist/tooltip/index.js +0 -2
  786. package/dist/tooltip/types.d.ts +0 -8
  787. package/dist/tooltip/types.js +0 -1
  788. package/dist/trajectory/Trajectory.svelte +0 -1517
  789. package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
  790. package/dist/trajectory/TrajectoryError.svelte +0 -128
  791. package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
  792. package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
  793. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
  794. package/dist/trajectory/TrajectoryInfoPane.svelte +0 -313
  795. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
  796. package/dist/trajectory/constants.d.ts +0 -6
  797. package/dist/trajectory/constants.js +0 -7
  798. package/dist/trajectory/extract.d.ts +0 -5
  799. package/dist/trajectory/extract.js +0 -162
  800. package/dist/trajectory/format-detect.d.ts +0 -9
  801. package/dist/trajectory/format-detect.js +0 -76
  802. package/dist/trajectory/frame-reader.d.ts +0 -17
  803. package/dist/trajectory/frame-reader.js +0 -332
  804. package/dist/trajectory/helpers.d.ts +0 -14
  805. package/dist/trajectory/helpers.js +0 -172
  806. package/dist/trajectory/index.d.ts +0 -63
  807. package/dist/trajectory/index.js +0 -126
  808. package/dist/trajectory/parse/ase.d.ts +0 -2
  809. package/dist/trajectory/parse/ase.js +0 -73
  810. package/dist/trajectory/parse/hdf5.d.ts +0 -2
  811. package/dist/trajectory/parse/hdf5.js +0 -127
  812. package/dist/trajectory/parse/index.d.ts +0 -12
  813. package/dist/trajectory/parse/index.js +0 -299
  814. package/dist/trajectory/parse/lammps.d.ts +0 -5
  815. package/dist/trajectory/parse/lammps.js +0 -179
  816. package/dist/trajectory/parse/vasp.d.ts +0 -2
  817. package/dist/trajectory/parse/vasp.js +0 -68
  818. package/dist/trajectory/parse/xyz.d.ts +0 -2
  819. package/dist/trajectory/parse/xyz.js +0 -110
  820. package/dist/trajectory/plotting.d.ts +0 -28
  821. package/dist/trajectory/plotting.js +0 -423
  822. package/dist/trajectory/types.d.ts +0 -11
  823. package/dist/trajectory/types.js +0 -1
  824. package/dist/utils.d.ts +0 -5
  825. package/dist/utils.js +0 -36
  826. package/dist/xrd/XrdPlot.svelte +0 -615
  827. package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
  828. package/dist/xrd/broadening.d.ts +0 -20
  829. package/dist/xrd/broadening.js +0 -97
  830. package/dist/xrd/calc-xrd.d.ts +0 -37
  831. package/dist/xrd/calc-xrd.js +0 -337
  832. package/dist/xrd/index.d.ts +0 -37
  833. package/dist/xrd/index.js +0 -4
  834. package/dist/xrd/parse.d.ts +0 -13
  835. package/dist/xrd/parse.js +0 -749
  836. /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
  837. /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
  838. /package/dist/{app.css → src/lib/app.css} +0 -0
  839. /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
  840. /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
  841. /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
  842. /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
  843. /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
  844. /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
  845. /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
  846. /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
  847. /package/dist/{element → src/lib/element}/data.json +0 -0
  848. /package/dist/{element → src/lib/element}/data.json.gz +0 -0
  849. /package/dist/{element → src/lib/element}/data.schema.json +0 -0
  850. /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
  851. /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
  852. /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
  853. /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
  854. /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
  855. /package/dist/{xrd → src/lib/xrd}/atomic_scattering_params.json +0 -0
@@ -0,0 +1,697 @@
1
+ <script lang="ts">
2
+ import { PLOT_COLORS } from '$lib/colors'
3
+ import EmptyState from '$lib/EmptyState.svelte'
4
+ import { SettingsSection } from '$lib/layout'
5
+ import ScatterPlot from '$lib/plot/ScatterPlot.svelte'
6
+ import type { AxisConfig, DataSeries } from '$lib/plot/types'
7
+ import type { ComponentProps } from 'svelte'
8
+ import { tooltip as attach_tooltip } from 'svelte-multiselect/attachments'
9
+ import {
10
+ apply_gaussian_smearing,
11
+ calculate_sigma_step,
12
+ convert_frequencies,
13
+ extract_efermi,
14
+ extract_pdos,
15
+ format_dos_tooltip,
16
+ format_sigma,
17
+ FREQUENCY_UNITS,
18
+ IMAGINARY_MODE_NOISE_THRESHOLD,
19
+ is_valid_range,
20
+ negative_fraction,
21
+ NORMALIZATION_MODES,
22
+ normalize_densities,
23
+ normalize_dos,
24
+ SPIN_MODES,
25
+ validate_sigma_range,
26
+ } from './helpers'
27
+ import type {
28
+ DosData,
29
+ DosInput,
30
+ FrequencyUnit,
31
+ NormalizationMode,
32
+ PdosType,
33
+ SpinMode,
34
+ StackedAreaData,
35
+ } from './types'
36
+
37
+ let {
38
+ doses,
39
+ stack = false,
40
+ sigma = $bindable(0),
41
+ units = $bindable(`THz`),
42
+ normalize = $bindable(null),
43
+ orientation = `vertical`,
44
+ show_legend = true,
45
+ x_axis = {},
46
+ y_axis = $bindable({}),
47
+ hovered_frequency = $bindable(null),
48
+ reference_frequency = null,
49
+ fermi_level = undefined,
50
+ spin_mode = $bindable(`mirror`),
51
+ pdos_type = null,
52
+ pdos_filter = undefined,
53
+ // Controls configuration
54
+ show_controls = true,
55
+ show_sigma_control = true,
56
+ show_normalize_control = false,
57
+ show_units_control = false,
58
+ sigma_range = undefined,
59
+ ...rest
60
+ }: ComponentProps<typeof ScatterPlot> & {
61
+ doses: DosInput | Record<string, DosInput>
62
+ x_axis?: AxisConfig
63
+ y_axis?: AxisConfig
64
+ stack?: boolean
65
+ sigma?: number
66
+ units?: FrequencyUnit
67
+ normalize?: NormalizationMode
68
+ orientation?: `vertical` | `horizontal`
69
+ show_legend?: boolean
70
+ hovered_frequency?: number | null
71
+ reference_frequency?: number | null
72
+ fermi_level?: number // Fermi level for electronic DOS (auto-detected if not provided)
73
+ spin_mode?: SpinMode // How to display spin-polarized DOS: mirror (default), overlay, up_only, down_only, or null (auto)
74
+ pdos_type?: PdosType | null // Extract projected DOS: 'atom' for atom-resolved, 'orbital' for orbital-resolved (s, p, d)
75
+ pdos_filter?: string[] // Filter projected DOS to specific keys (e.g., ["Fe", "O"] for atoms or ["s", "p", "d"] for orbitals)
76
+ // Controls configuration
77
+ show_controls?: boolean // Show the controls pane
78
+ show_sigma_control?: boolean // Show sigma/smearing control
79
+ show_normalize_control?: boolean // Show normalization selector
80
+ show_units_control?: boolean // Show units selector (phonon DOS only)
81
+ sigma_range?: [number, number] // Min/max range for sigma slider (auto-detected if not provided)
82
+ } = $props()
83
+
84
+ const is_horizontal = $derived(orientation === `horizontal`)
85
+
86
+ // Normalize input to dict format - converts any DosInput format to DosData
87
+ // If pdos_type is set, extract projected DOS from the input instead
88
+ let doses_dict = $derived.by((): Record<string, DosData> => {
89
+ if (!doses) return {}
90
+
91
+ // If pdos_type is set, try to extract projected DOS
92
+ if (pdos_type) {
93
+ // Try extracting from the doses object directly (single CompleteDos)
94
+ const pdos = extract_pdos(doses, pdos_type, pdos_filter)
95
+ if (pdos) return pdos
96
+
97
+ // Try extracting from first entry if doses is a dict
98
+ if (typeof doses === `object` && !(`densities` in doses)) {
99
+ const first_dos = Object.values(doses)[0]
100
+ const pdos_from_first = extract_pdos(first_dos, pdos_type, pdos_filter)
101
+ if (pdos_from_first) return pdos_from_first
102
+ }
103
+ // PDOS extraction was requested but failed - warn and revert to normal processing
104
+ console.warn(
105
+ `PDOS extraction requested (pdos_type="${pdos_type}") but no projected DOS data found. ` +
106
+ `Falling back to total DOS. Ensure input has atom_dos (for atom) or spd_dos (for orbital) data.`,
107
+ )
108
+ }
109
+
110
+ if (`densities` in doses && (`frequencies` in doses || `energies` in doses)) {
111
+ // Single DOS
112
+ const normalized = normalize_dos(doses)
113
+ return normalized ? { '': normalized } : {}
114
+ }
115
+
116
+ // Already a dict - normalize each DOS
117
+ const result: Record<string, DosData> = {}
118
+ for (const [key, dos] of Object.entries(doses as Record<string, DosInput>)) {
119
+ const normalized = normalize_dos(dos)
120
+ if (normalized) result[key] = normalized
121
+ }
122
+ return result
123
+ })
124
+
125
+ // Determine if this is phonon or electronic DOS using discriminated union
126
+ let is_phonon = $derived(Object.values(doses_dict)[0]?.type === `phonon`)
127
+
128
+ // Auto-detect Fermi level from electronic DOS data if not explicitly provided
129
+ let effective_fermi_level = $derived.by((): number | undefined => {
130
+ if (fermi_level !== undefined) return fermi_level
131
+ if (is_phonon) return undefined
132
+ return extract_efermi(doses)
133
+ })
134
+
135
+ // Check if any DOS in the dict has spin-polarized data
136
+ let has_spin_polarized = $derived(
137
+ Object.values(doses_dict).some(
138
+ (dos) => dos.type === `electronic` && dos.spin_down_densities?.length,
139
+ ),
140
+ )
141
+
142
+ // Effective spin mode: null means auto-detect (mirror if spin data exists)
143
+ let effective_spin_mode = $derived.by((): SpinMode => {
144
+ if (spin_mode !== null) return spin_mode
145
+ return has_spin_polarized ? `mirror` : null
146
+ })
147
+
148
+ // Convert DOS data to scatter plot series and stacked area data
149
+ // Performance: Only recalculates when doses_dict, units, sigma, normalize, or spin_mode changes
150
+ let { series_data, stacked_areas } = $derived.by(
151
+ (): { series_data: DataSeries[]; stacked_areas: StackedAreaData[] } => {
152
+ if (Object.keys(doses_dict).length === 0) {
153
+ return { series_data: [], stacked_areas: [] }
154
+ }
155
+
156
+ const all_series: DataSeries[] = []
157
+ const areas: StackedAreaData[] = []
158
+ const dos_entries = Object.entries(doses_dict)
159
+ // Separate cumulative trackers for spin-up and spin-down in overlay mode
160
+ // This prevents spin-down from incorrectly stacking on top of spin-up
161
+ let cumulative_spin_up: number[] | null = null
162
+ let cumulative_spin_down: number[] | null = null
163
+
164
+ for (let dos_idx = 0; dos_idx < dos_entries.length; dos_idx++) {
165
+ const [label, dos] = dos_entries[dos_idx]
166
+ const color = PLOT_COLORS[dos_idx % PLOT_COLORS.length]
167
+
168
+ // Get frequencies or energies using discriminated union type narrowing
169
+ let x_values = dos.type === `phonon` ? dos.frequencies : dos.energies
170
+
171
+ // Convert units if needed
172
+ if (dos.type === `phonon` && units !== `THz`) {
173
+ x_values = convert_frequencies(x_values, units)
174
+ }
175
+
176
+ // Check for spin-down data (only for electronic DOS)
177
+ const has_spin_down = dos.type === `electronic` &&
178
+ dos.spin_down_densities?.length === dos.densities.length
179
+ const should_show_spin_up = effective_spin_mode !== `down_only`
180
+ const should_show_spin_down = has_spin_down &&
181
+ effective_spin_mode !== `up_only` && effective_spin_mode !== null
182
+
183
+ // Process spin-up (or total) densities
184
+ if (should_show_spin_up) {
185
+ let densities_up = sigma > 0
186
+ ? apply_gaussian_smearing(x_values, dos.densities, sigma)
187
+ : [...dos.densities]
188
+
189
+ densities_up = normalize_densities(densities_up, x_values, normalize)
190
+
191
+ // Store previous cumulative for area fill baseline
192
+ const prev_cumulative = cumulative_spin_up ? [...cumulative_spin_up] : null
193
+
194
+ // For stacked plots, accumulate densities (only if array lengths match)
195
+ if (stack && cumulative_spin_up?.length === densities_up.length) {
196
+ densities_up = densities_up.map((density, idx) =>
197
+ density + (cumulative_spin_up?.[idx] ?? 0)
198
+ )
199
+ } else if (stack && cumulative_spin_up) {
200
+ console.warn(`DOS stacking: length mismatch for "${label}"`)
201
+ }
202
+
203
+ // Store stacked area data for rendering
204
+ if (stack) {
205
+ areas.push({
206
+ x_values: [...x_values],
207
+ upper_densities: [...densities_up],
208
+ lower_densities: prev_cumulative ?? x_values.map(() => 0),
209
+ color,
210
+ })
211
+ cumulative_spin_up = densities_up
212
+ }
213
+
214
+ const spin_label = has_spin_down && effective_spin_mode
215
+ ? `${label || `DOS ${dos_idx + 1}`} (↑)`
216
+ : (label || `DOS ${dos_idx + 1}`)
217
+
218
+ const series_up: DataSeries = {
219
+ x: is_horizontal ? densities_up : x_values,
220
+ y: is_horizontal ? x_values : densities_up,
221
+ markers: `line`,
222
+ label: spin_label,
223
+ line_style: { stroke: color, stroke_width: 1.5 },
224
+ point_style: { fill: stack ? color : undefined },
225
+ }
226
+ all_series.push(series_up)
227
+ }
228
+
229
+ // Process spin-down densities if available
230
+ if (
231
+ should_show_spin_down && dos.type === `electronic` &&
232
+ dos.spin_down_densities
233
+ ) {
234
+ let densities_down = sigma > 0
235
+ ? apply_gaussian_smearing(x_values, dos.spin_down_densities, sigma)
236
+ : [...dos.spin_down_densities]
237
+
238
+ densities_down = normalize_densities(densities_down, x_values, normalize)
239
+
240
+ // For mirror mode, negate the densities
241
+ if (effective_spin_mode === `mirror`) {
242
+ densities_down = densities_down.map((density) => -density)
243
+ }
244
+
245
+ // For stacked plots with overlay mode, use separate spin-down cumulative
246
+ // This prevents spin-down from stacking on top of spin-up within the same DOS
247
+ if (stack && effective_spin_mode === `overlay`) {
248
+ const prev_spin_down = cumulative_spin_down
249
+ ? [...cumulative_spin_down]
250
+ : null
251
+ if (cumulative_spin_down?.length === densities_down.length) {
252
+ densities_down = densities_down.map((density, idx) =>
253
+ density + (cumulative_spin_down?.[idx] ?? 0)
254
+ )
255
+ } else if (cumulative_spin_down) {
256
+ console.warn(`DOS stacking (spin-down): length mismatch for "${label}"`)
257
+ }
258
+
259
+ // Store stacked area for spin-down
260
+ areas.push({
261
+ x_values: [...x_values],
262
+ upper_densities: [...densities_down],
263
+ lower_densities: prev_spin_down ?? x_values.map(() => 0),
264
+ color: PLOT_COLORS[(dos_idx * 2 + 1) % PLOT_COLORS.length],
265
+ })
266
+ cumulative_spin_down = densities_down
267
+ }
268
+
269
+ // Use a slightly different shade for spin-down in overlay mode
270
+ const spin_down_color = effective_spin_mode === `overlay`
271
+ ? PLOT_COLORS[(dos_idx * 2 + 1) % PLOT_COLORS.length]
272
+ : color
273
+
274
+ const series_down: DataSeries = {
275
+ x: is_horizontal ? densities_down : x_values,
276
+ y: is_horizontal ? x_values : densities_down,
277
+ markers: `line`,
278
+ label: `${label || `DOS ${dos_idx + 1}`} (↓)`,
279
+ line_style: {
280
+ stroke: spin_down_color,
281
+ stroke_width: 1.5,
282
+ line_dash: effective_spin_mode === `overlay` ? `4,2` : undefined,
283
+ },
284
+ point_style: { fill: stack ? spin_down_color : undefined },
285
+ }
286
+ all_series.push(series_down)
287
+ }
288
+ }
289
+ return { series_data: all_series, stacked_areas: areas }
290
+ },
291
+ )
292
+
293
+ let all_freqs = $derived( // for clamping phonon noise
294
+ Object.values(doses_dict).flatMap((dos) =>
295
+ dos.type === `phonon` ? dos.frequencies : dos.energies
296
+ ),
297
+ )
298
+ let clamp_to_zero = $derived(
299
+ is_phonon &&
300
+ all_freqs.length > 0 &&
301
+ Math.min(...all_freqs) < 0 &&
302
+ negative_fraction(all_freqs) < IMAGINARY_MODE_NOISE_THRESHOLD,
303
+ )
304
+
305
+ // Check if we have mirrored spin-down data (negative densities)
306
+ let has_mirrored_spin = $derived(
307
+ effective_spin_mode === `mirror` && has_spin_polarized,
308
+ )
309
+
310
+ let x_range = $derived.by((): [number, number] | undefined => {
311
+ if (!series_data.length) return undefined
312
+ const all_x = series_data.flatMap((srs) => srs.x)
313
+ const min_x = Math.min(...all_x), max_x = Math.max(...all_x)
314
+ // For horizontal orientation with mirror mode, allow negative values (mirrored densities)
315
+ if (is_horizontal && has_mirrored_spin) return [min_x, max_x]
316
+ if (is_horizontal || clamp_to_zero) return [0, max_x]
317
+ return [min_x, max_x]
318
+ })
319
+
320
+ let y_range = $derived.by((): [number, number] | undefined => {
321
+ if (!series_data.length) return undefined
322
+ const all_y = series_data.flatMap((srs) => srs.y)
323
+ const min_y = Math.min(...all_y), max_y = Math.max(...all_y)
324
+ // For vertical orientation with mirror mode, allow negative values (mirrored densities)
325
+ if (!is_horizontal && has_mirrored_spin) return [min_y, max_y]
326
+ if (!is_horizontal || clamp_to_zero) return [0, max_y]
327
+ return [min_y, max_y]
328
+ })
329
+
330
+ // Get axis labels based on orientation
331
+ let x_label = $derived(
332
+ is_horizontal
333
+ ? `Density of States`
334
+ : is_phonon
335
+ ? `Frequency (${units})`
336
+ : `Energy (eV)`,
337
+ )
338
+ let y_label = $derived(
339
+ is_horizontal
340
+ ? (is_phonon ? `Frequency (${units})` : `Energy (eV)`)
341
+ : `Density of States`,
342
+ )
343
+
344
+ // Compute final axis configurations with default labels
345
+ let final_x_axis = $derived({
346
+ label: x_label,
347
+ format: `.2f`,
348
+ range: x_range,
349
+ label_shift: { x: 0, y: -48 }, // Increase standoff from tick labels
350
+ ...(is_horizontal && { ticks: 4 }),
351
+ ...x_axis,
352
+ })
353
+ // Internal y_axis that ScatterPlot binds to - syncs zoom changes back to parent
354
+ let internal_y_axis = $derived({
355
+ label: y_label,
356
+ format: `.2f`,
357
+ range: y_range,
358
+ ...y_axis,
359
+ })
360
+
361
+ // Sync zoom changes from ScatterPlot back to parent via bindable y_axis
362
+ // Also clears parent range when internal range becomes invalid (auto-range reset)
363
+ $effect(() => {
364
+ const range = internal_y_axis.range
365
+ if (is_valid_range(range)) {
366
+ if (y_axis.range?.[0] !== range[0] || y_axis.range?.[1] !== range[1]) {
367
+ y_axis = { ...y_axis, range }
368
+ }
369
+ return
370
+ }
371
+ // Range became invalid - clear parent's range to propagate reset
372
+ if (`range` in y_axis) {
373
+ const { range: _omit, ...axis_without_range } = y_axis
374
+ y_axis = axis_without_range
375
+ }
376
+ })
377
+
378
+ let display = $state({
379
+ x_grid: true,
380
+ y_grid: true,
381
+ x_zero_line: true,
382
+ y_zero_line: true,
383
+ })
384
+
385
+ // Determine if we have valid data to display
386
+ let has_valid_data = $derived(series_data.length > 0)
387
+
388
+ // Auto-detect sigma range based on frequency/energy range
389
+ let effective_sigma_range = $derived.by((): [number, number] => {
390
+ if (sigma_range) return sigma_range
391
+ if (!all_freqs.length) return [0, 1]
392
+ const freq_range = Math.max(...all_freqs) - Math.min(...all_freqs)
393
+ // Reasonable sigma range: 0 to ~5% of total range
394
+ const max_sigma = Math.max(0.1, freq_range * 0.05)
395
+ return [0, max_sigma]
396
+ })
397
+
398
+ // Computed values for sigma slider
399
+ let safe_sigma_range = $derived(validate_sigma_range(effective_sigma_range))
400
+ let sigma_step = $derived(calculate_sigma_step(effective_sigma_range))
401
+
402
+ // Build SVG path for stacked area fill between upper and lower density curves
403
+ function build_stacked_area_path(
404
+ area: StackedAreaData,
405
+ x_scale_fn: (val: number) => number,
406
+ y_scale_fn: (val: number) => number,
407
+ horizontal: boolean,
408
+ ): string {
409
+ const pts = area.x_values.length
410
+ if (pts < 2) return ``
411
+
412
+ const upper_coords: string[] = []
413
+ const lower_coords: string[] = []
414
+
415
+ for (let idx = 0; idx < pts; idx++) {
416
+ const freq = area.x_values[idx]
417
+ const upper_dens = area.upper_densities[idx]
418
+ const lower_dens = area.lower_densities[idx]
419
+ // For vertical orientation: x = freq, y = density
420
+ // For horizontal orientation: x = density, y = freq
421
+ const [upper_x, upper_y] = horizontal
422
+ ? [x_scale_fn(upper_dens), y_scale_fn(freq)]
423
+ : [x_scale_fn(freq), y_scale_fn(upper_dens)]
424
+ const [lower_x, lower_y] = horizontal
425
+ ? [x_scale_fn(lower_dens), y_scale_fn(freq)]
426
+ : [x_scale_fn(freq), y_scale_fn(lower_dens)]
427
+ upper_coords.push(`${upper_x.toFixed(2)},${upper_y.toFixed(2)}`)
428
+ lower_coords.push(`${lower_x.toFixed(2)},${lower_y.toFixed(2)}`)
429
+ }
430
+ // Trace upper edge forward, lower edge backward, close path
431
+ return `M${upper_coords[0]} ${
432
+ upper_coords.slice(1).map((coord) => `L${coord}`).join(` `)
433
+ } ${lower_coords.toReversed().map((coord) => `L${coord}`).join(` `)} Z`
434
+ }
435
+ </script>
436
+
437
+ {#if has_valid_data}
438
+ <ScatterPlot
439
+ series={series_data}
440
+ x_axis={final_x_axis}
441
+ bind:y_axis={internal_y_axis}
442
+ bind:display
443
+ legend={show_legend ? {} : null}
444
+ hover_config={{ threshold_px: 50 }}
445
+ controls={{ show: show_controls }}
446
+ on_point_hover={(event) => {
447
+ hovered_frequency = is_horizontal
448
+ ? (event?.point?.y ?? null)
449
+ : (event?.point?.x ?? null)
450
+ }}
451
+ {...{ range_padding: 0, ...rest }}
452
+ >
453
+ {#snippet tooltip({ x_formatted, y_formatted, label })}
454
+ {@const tooltip_data = format_dos_tooltip(
455
+ x_formatted,
456
+ y_formatted,
457
+ label ?? null,
458
+ is_horizontal,
459
+ is_phonon,
460
+ units,
461
+ final_x_axis.label ?? ``,
462
+ internal_y_axis.label ?? ``,
463
+ Object.keys(doses_dict).length,
464
+ )}
465
+ {#if tooltip_data.title}<strong>{tooltip_data.title}</strong><br />{/if}
466
+ {#each tooltip_data.lines as line, line_idx (line_idx)}
467
+ {line}{#if line_idx < tooltip_data.lines.length - 1}<br />{/if}
468
+ {/each}
469
+ {/snippet}
470
+
471
+ {#snippet controls_extra()}
472
+ <!-- Spin Mode (for spin-polarized electronic DOS) -->
473
+ {#if has_spin_polarized}
474
+ <SettingsSection
475
+ title="Spin Display"
476
+ current_values={{ spin_mode }}
477
+ on_reset={() => (spin_mode = `mirror`)}
478
+ >
479
+ <div class="dos-spin-modes">
480
+ {#each SPIN_MODES as mode (mode.value)}
481
+ <button
482
+ type="button"
483
+ class="spin-mode-btn"
484
+ class:active={spin_mode === mode.value}
485
+ onclick={() => (spin_mode = mode.value)}
486
+ aria-label={mode.title}
487
+ aria-pressed={spin_mode === mode.value}
488
+ {@attach attach_tooltip({ content: mode.title })}
489
+ >
490
+ {mode.label}
491
+ </button>
492
+ {/each}
493
+ </div>
494
+ </SettingsSection>
495
+ {/if}
496
+
497
+ <!-- Smearing (Sigma) -->
498
+ {#if show_sigma_control}
499
+ <SettingsSection
500
+ title="Smearing"
501
+ current_values={{ sigma }}
502
+ on_reset={() => (sigma = 0)}
503
+ >
504
+ <div class="pane-row">
505
+ <label for="dos-sigma" title="Gaussian smearing width (σ)">σ:</label>
506
+ <input
507
+ id="dos-sigma"
508
+ type="range"
509
+ min={safe_sigma_range[0]}
510
+ max={safe_sigma_range[1]}
511
+ step={sigma_step}
512
+ bind:value={sigma}
513
+ />
514
+ <span class="sigma-value">{format_sigma(sigma)}</span>
515
+ </div>
516
+ </SettingsSection>
517
+ {/if}
518
+
519
+ <!-- Normalization -->
520
+ {#if show_normalize_control}
521
+ <SettingsSection
522
+ title="Normalization"
523
+ current_values={{ normalize }}
524
+ on_reset={() => (normalize = null)}
525
+ >
526
+ <div class="pane-row">
527
+ <label for="dos-normalize">Mode:</label>
528
+ <select id="dos-normalize" bind:value={normalize}>
529
+ {#each NORMALIZATION_MODES as mode (mode.value)}
530
+ <option value={mode.value}>{mode.label}</option>
531
+ {/each}
532
+ </select>
533
+ </div>
534
+ </SettingsSection>
535
+ {/if}
536
+
537
+ <!-- Frequency Units (phonon DOS only) -->
538
+ {#if show_units_control && is_phonon}
539
+ <SettingsSection
540
+ title="Units"
541
+ current_values={{ units }}
542
+ on_reset={() => (units = `THz`)}
543
+ >
544
+ <div class="pane-row">
545
+ <label for="dos-units">Frequency:</label>
546
+ <select id="dos-units" bind:value={units}>
547
+ {#each FREQUENCY_UNITS as unit (unit)}
548
+ <option value={unit}>{unit}</option>
549
+ {/each}
550
+ </select>
551
+ </div>
552
+ </SettingsSection>
553
+ {/if}
554
+ {/snippet}
555
+
556
+ {#snippet user_content({ width, height, y_scale_fn, x_scale_fn, pad })}
557
+ <!-- Stacked area fills (rendered first so they appear behind lines) -->
558
+ {#if stack && stacked_areas.length > 0}
559
+ {#each stacked_areas as area, area_idx (area_idx)}
560
+ <path
561
+ d={build_stacked_area_path(area, x_scale_fn, y_scale_fn, is_horizontal)}
562
+ fill={area.color}
563
+ fill-opacity="var(--dos-stacked-area-opacity, 0.3)"
564
+ stroke="none"
565
+ />
566
+ {/each}
567
+ {/if}
568
+
569
+ <!-- Fermi level line for electronic DOS -->
570
+ {@const fermi_pos = effective_fermi_level !== undefined
571
+ ? (is_horizontal
572
+ ? y_scale_fn(effective_fermi_level)
573
+ : x_scale_fn(effective_fermi_level))
574
+ : NaN}
575
+ {#if Number.isFinite(fermi_pos)}
576
+ {@const [x1, x2, y1, y2] = is_horizontal
577
+ ? [pad.l, width - pad.r, fermi_pos, fermi_pos]
578
+ : [fermi_pos, fermi_pos, pad.t, height - pad.b]}
579
+ <line
580
+ class="fermi-level-line"
581
+ {x1}
582
+ {x2}
583
+ {y1}
584
+ {y2}
585
+ stroke="var(--dos-fermi-line-color, light-dark(#e74c3c, #ff6b6b))"
586
+ stroke-width="var(--dos-fermi-line-width, 1.5)"
587
+ stroke-dasharray="var(--dos-fermi-line-dash, 6,3)"
588
+ opacity="var(--dos-fermi-line-opacity, 0.8)"
589
+ />
590
+ <!-- Fermi level label -->
591
+ {#if is_horizontal}
592
+ <text
593
+ class="fermi-level-label"
594
+ x={width - pad.r + 4}
595
+ y={fermi_pos}
596
+ dy="0.35em"
597
+ font-size="10"
598
+ fill="var(--dos-fermi-line-color, light-dark(#e74c3c, #ff6b6b))"
599
+ opacity="0.9"
600
+ >
601
+ E<tspan dy="2" font-size="8">F</tspan>
602
+ </text>
603
+ {:else}
604
+ <text
605
+ class="fermi-level-label"
606
+ x={fermi_pos}
607
+ y={pad.t - 4}
608
+ text-anchor="middle"
609
+ font-size="10"
610
+ fill="var(--dos-fermi-line-color, light-dark(#e74c3c, #ff6b6b))"
611
+ opacity="0.9"
612
+ >
613
+ E<tspan dy="2" font-size="8">F</tspan>
614
+ </text>
615
+ {/if}
616
+ {/if}
617
+
618
+ <!-- Reference frequency line -->
619
+ {@const ref_pos = reference_frequency !== null
620
+ ? (is_horizontal
621
+ ? y_scale_fn(reference_frequency)
622
+ : x_scale_fn(reference_frequency))
623
+ : NaN}
624
+ {#if Number.isFinite(ref_pos)}
625
+ {@const [x1, x2, y1, y2] = is_horizontal
626
+ ? [pad.l, width - pad.r, ref_pos, ref_pos]
627
+ : [ref_pos, ref_pos, pad.t, height - pad.b]}
628
+ <line
629
+ {x1}
630
+ {x2}
631
+ {y1}
632
+ {y2}
633
+ stroke="var(--dos-reference-line-color, light-dark(#d48860, #c47850))"
634
+ stroke-width="var(--dos-reference-line-width, 1)"
635
+ stroke-dasharray="var(--dos-reference-line-dash, 4,3)"
636
+ opacity="var(--dos-reference-line-opacity, 0.5)"
637
+ />
638
+ {/if}
639
+ {/snippet}
640
+ </ScatterPlot>
641
+ {:else}
642
+ <EmptyState message="No valid DOS data to display" />
643
+ {/if}
644
+
645
+ <style>
646
+ /* Control row layout */
647
+ .pane-row {
648
+ display: flex;
649
+ align-items: center;
650
+ gap: 0.5em;
651
+ margin: 0.3em 0;
652
+ font-size: 0.9em;
653
+ }
654
+ .pane-row label {
655
+ min-width: 4em;
656
+ flex-shrink: 0;
657
+ }
658
+ .pane-row input[type='range'] {
659
+ flex: 1;
660
+ min-width: 4em;
661
+ }
662
+ .pane-row select {
663
+ flex: 1;
664
+ min-width: 0;
665
+ }
666
+ /* Spin mode button group */
667
+ .dos-spin-modes {
668
+ display: flex;
669
+ gap: 2px;
670
+ flex-wrap: wrap;
671
+ }
672
+ .spin-mode-btn {
673
+ padding: 4px 8px;
674
+ border: 1px solid var(--border-color, light-dark(#d1d5db, #4b5563));
675
+ background: var(--btn-bg, light-dark(#f3f4f6, #374151));
676
+ border-radius: var(--border-radius, 3pt);
677
+ cursor: pointer;
678
+ font-size: 1em;
679
+ transition: all 0.15s ease;
680
+ min-width: 2em;
681
+ }
682
+ .spin-mode-btn:hover {
683
+ background: var(--btn-bg-hover, light-dark(#e5e7eb, #4b5563));
684
+ }
685
+ .spin-mode-btn.active {
686
+ background: var(--btn-bg-active, light-dark(#dbeafe, #1e40af));
687
+ border-color: var(--btn-border-active, light-dark(#3b82f6, #60a5fa));
688
+ color: var(--btn-color-active, light-dark(#1d4ed8, #93c5fd));
689
+ }
690
+ /* Sigma value display */
691
+ .sigma-value {
692
+ font-family: var(--font-mono, monospace);
693
+ font-size: 0.9em;
694
+ min-width: 3.5em;
695
+ text-align: right;
696
+ }
697
+ </style>