matterviz 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. package/dist/EmptyState.svelte +10 -2
  2. package/dist/FilePicker.svelte +154 -96
  3. package/dist/Icon.svelte +20 -14
  4. package/dist/MillerIndexInput.svelte +27 -21
  5. package/dist/api/optimade.js +6 -6
  6. package/dist/app.css +216 -178
  7. package/dist/brillouin/BrillouinZone.svelte +299 -198
  8. package/dist/brillouin/BrillouinZone.svelte.d.ts +1 -1
  9. package/dist/brillouin/BrillouinZoneControls.svelte +32 -5
  10. package/dist/brillouin/BrillouinZoneExportPane.svelte +74 -55
  11. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
  12. package/dist/brillouin/BrillouinZoneInfoPane.svelte +99 -68
  13. package/dist/brillouin/BrillouinZoneScene.svelte +277 -165
  14. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
  15. package/dist/brillouin/BrillouinZoneTooltip.svelte +17 -7
  16. package/dist/brillouin/compute.js +11 -6
  17. package/dist/chempot-diagram/ChemPotDiagram.svelte +327 -0
  18. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
  19. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +847 -0
  20. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
  21. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3194 -0
  22. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
  23. package/dist/chempot-diagram/ChemPotScene3D.svelte +11 -0
  24. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
  25. package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
  26. package/dist/chempot-diagram/async-compute.svelte.js +77 -0
  27. package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
  28. package/dist/chempot-diagram/chempot-worker.js +11 -0
  29. package/dist/chempot-diagram/color.d.ts +10 -0
  30. package/dist/chempot-diagram/color.js +32 -0
  31. package/dist/chempot-diagram/compute.d.ts +48 -0
  32. package/dist/chempot-diagram/compute.js +812 -0
  33. package/dist/chempot-diagram/index.d.ts +6 -0
  34. package/dist/chempot-diagram/index.js +6 -0
  35. package/dist/chempot-diagram/pointer.d.ts +16 -0
  36. package/dist/chempot-diagram/pointer.js +40 -0
  37. package/dist/chempot-diagram/temperature.d.ts +15 -0
  38. package/dist/chempot-diagram/temperature.js +36 -0
  39. package/dist/chempot-diagram/types.d.ts +86 -0
  40. package/dist/chempot-diagram/types.js +28 -0
  41. package/dist/colors/index.d.ts +3 -1
  42. package/dist/colors/index.js +9 -3
  43. package/dist/composition/BarChart.svelte +141 -77
  44. package/dist/composition/BubbleChart.svelte +107 -52
  45. package/dist/composition/Composition.svelte +100 -79
  46. package/dist/composition/Formula.svelte +108 -62
  47. package/dist/composition/FormulaFilter.svelte +973 -353
  48. package/dist/composition/FormulaFilter.svelte.d.ts +35 -1
  49. package/dist/composition/PieChart.svelte +199 -99
  50. package/dist/composition/PieChart.svelte.d.ts +1 -1
  51. package/dist/composition/format.d.ts +5 -0
  52. package/dist/composition/format.js +20 -3
  53. package/dist/composition/parse.js +14 -9
  54. package/dist/convex-hull/ConvexHull.svelte +93 -38
  55. package/dist/convex-hull/ConvexHull2D.svelte +551 -393
  56. package/dist/convex-hull/ConvexHull3D.svelte +1303 -825
  57. package/dist/convex-hull/ConvexHull4D.svelte +1012 -686
  58. package/dist/convex-hull/ConvexHullControls.svelte +115 -28
  59. package/dist/convex-hull/ConvexHullInfoPane.svelte +29 -3
  60. package/dist/convex-hull/ConvexHullStats.svelte +821 -249
  61. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +6 -1
  62. package/dist/convex-hull/ConvexHullTooltip.svelte +41 -16
  63. package/dist/convex-hull/GasPressureControls.svelte +104 -61
  64. package/dist/convex-hull/StructurePopup.svelte +25 -4
  65. package/dist/convex-hull/TemperatureSlider.svelte +45 -25
  66. package/dist/convex-hull/barycentric-coords.js +13 -7
  67. package/dist/convex-hull/demo-temperature.d.ts +6 -0
  68. package/dist/convex-hull/demo-temperature.js +40 -0
  69. package/dist/convex-hull/gas-thermodynamics.js +17 -12
  70. package/dist/convex-hull/helpers.d.ts +10 -1
  71. package/dist/convex-hull/helpers.js +79 -38
  72. package/dist/convex-hull/index.d.ts +1 -0
  73. package/dist/convex-hull/index.js +1 -0
  74. package/dist/convex-hull/thermodynamics.d.ts +8 -21
  75. package/dist/convex-hull/thermodynamics.js +163 -69
  76. package/dist/convex-hull/types.d.ts +12 -12
  77. package/dist/convex-hull/types.js +0 -12
  78. package/dist/coordination/CoordinationBarPlot.svelte +232 -176
  79. package/dist/element/BohrAtom.svelte +56 -13
  80. package/dist/element/ElementHeading.svelte +7 -2
  81. package/dist/element/ElementPhoto.svelte +15 -9
  82. package/dist/element/ElementStats.svelte +10 -4
  83. package/dist/element/ElementTile.svelte +137 -73
  84. package/dist/element/Nucleus.svelte +39 -11
  85. package/dist/element/data.js +2 -14
  86. package/dist/element/data.json.gz +0 -0
  87. package/dist/element/types.d.ts +1 -0
  88. package/dist/feedback/ClickFeedback.svelte +16 -5
  89. package/dist/feedback/DragOverlay.svelte +10 -2
  90. package/dist/feedback/Spinner.svelte +4 -2
  91. package/dist/feedback/StatusMessage.svelte +8 -2
  92. package/dist/fermi-surface/FermiSlice.svelte +118 -88
  93. package/dist/fermi-surface/FermiSurface.svelte +336 -239
  94. package/dist/fermi-surface/FermiSurface.svelte.d.ts +1 -1
  95. package/dist/fermi-surface/FermiSurfaceControls.svelte +113 -46
  96. package/dist/fermi-surface/FermiSurfaceScene.svelte +536 -343
  97. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
  98. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +14 -5
  99. package/dist/fermi-surface/compute.js +16 -20
  100. package/dist/fermi-surface/parse.js +37 -33
  101. package/dist/fermi-surface/symmetry.js +2 -7
  102. package/dist/fermi-surface/types.d.ts +3 -5
  103. package/dist/heatmap-matrix/HeatmapMatrix.svelte +1527 -0
  104. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
  105. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  106. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
  107. package/dist/heatmap-matrix/index.d.ts +53 -0
  108. package/dist/heatmap-matrix/index.js +100 -0
  109. package/dist/heatmap-matrix/shared.d.ts +2 -0
  110. package/dist/heatmap-matrix/shared.js +4 -0
  111. package/dist/icons.d.ts +111 -0
  112. package/dist/icons.js +158 -0
  113. package/dist/index.d.ts +5 -2
  114. package/dist/index.js +5 -2
  115. package/dist/io/decompress.js +1 -1
  116. package/dist/io/export.d.ts +3 -0
  117. package/dist/io/export.js +138 -140
  118. package/dist/io/file-drop.d.ts +7 -0
  119. package/dist/io/file-drop.js +43 -0
  120. package/dist/io/index.d.ts +2 -2
  121. package/dist/io/index.js +2 -112
  122. package/dist/io/is-binary.js +2 -3
  123. package/dist/io/types.d.ts +1 -0
  124. package/dist/io/url-drop.d.ts +2 -0
  125. package/dist/io/url-drop.js +117 -0
  126. package/dist/isosurface/Isosurface.svelte +220 -110
  127. package/dist/isosurface/IsosurfaceControls.svelte +65 -28
  128. package/dist/isosurface/parse.js +104 -56
  129. package/dist/isosurface/slice.d.ts +2 -1
  130. package/dist/isosurface/slice.js +8 -13
  131. package/dist/isosurface/types.d.ts +14 -1
  132. package/dist/isosurface/types.js +152 -5
  133. package/dist/labels.d.ts +2 -1
  134. package/dist/labels.js +12 -8
  135. package/dist/layout/FullscreenToggle.svelte +11 -2
  136. package/dist/layout/InfoCard.svelte +38 -6
  137. package/dist/layout/InfoTag.svelte +125 -94
  138. package/dist/layout/PropertyFilter.svelte +82 -37
  139. package/dist/layout/SettingsSection.svelte +85 -55
  140. package/dist/layout/SubpageGrid.svelte +82 -0
  141. package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
  142. package/dist/layout/index.d.ts +1 -0
  143. package/dist/layout/index.js +1 -0
  144. package/dist/layout/json-tree/JsonNode.svelte +266 -223
  145. package/dist/layout/json-tree/JsonTree.svelte +516 -429
  146. package/dist/layout/json-tree/JsonTree.svelte.d.ts +1 -1
  147. package/dist/layout/json-tree/JsonValue.svelte +281 -173
  148. package/dist/layout/json-tree/types.d.ts +10 -2
  149. package/dist/layout/json-tree/utils.d.ts +2 -0
  150. package/dist/layout/json-tree/utils.js +37 -2
  151. package/dist/marching-cubes.js +25 -2
  152. package/dist/math.d.ts +20 -17
  153. package/dist/math.js +474 -57
  154. package/dist/overlays/ContextMenu.svelte +66 -40
  155. package/dist/overlays/DraggablePane.svelte +331 -154
  156. package/dist/overlays/DraggablePane.svelte.d.ts +2 -0
  157. package/dist/periodic-table/PeriodicTable.svelte +278 -145
  158. package/dist/periodic-table/PeriodicTableControls.svelte +178 -128
  159. package/dist/periodic-table/PropertySelect.svelte +25 -7
  160. package/dist/periodic-table/TableInset.svelte +8 -3
  161. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +559 -267
  162. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -2
  163. package/dist/phase-diagram/PhaseDiagramControls.svelte +131 -51
  164. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +3 -2
  165. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  166. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
  167. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +160 -110
  168. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +8 -1
  169. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +217 -86
  170. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +6 -3
  171. package/dist/phase-diagram/TdbInfoPanel.svelte +28 -4
  172. package/dist/phase-diagram/build-diagram.js +9 -9
  173. package/dist/phase-diagram/colors.js +1 -3
  174. package/dist/phase-diagram/index.d.ts +2 -0
  175. package/dist/phase-diagram/index.js +2 -0
  176. package/dist/phase-diagram/parse.js +10 -9
  177. package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
  178. package/dist/phase-diagram/svg-to-diagram.js +869 -0
  179. package/dist/phase-diagram/types.d.ts +10 -0
  180. package/dist/phase-diagram/utils.d.ts +8 -4
  181. package/dist/phase-diagram/utils.js +219 -74
  182. package/dist/plot/AxisLabel.svelte +51 -0
  183. package/dist/plot/AxisLabel.svelte.d.ts +16 -0
  184. package/dist/plot/BarPlot.svelte +1461 -768
  185. package/dist/plot/BarPlot.svelte.d.ts +3 -3
  186. package/dist/plot/BarPlotControls.svelte +33 -6
  187. package/dist/plot/BarPlotControls.svelte.d.ts +1 -1
  188. package/dist/plot/ColorBar.svelte +533 -383
  189. package/dist/plot/ColorBar.svelte.d.ts +1 -1
  190. package/dist/plot/ColorScaleSelect.svelte +28 -7
  191. package/dist/plot/ElementScatter.svelte +38 -16
  192. package/dist/plot/FillArea.svelte +152 -92
  193. package/dist/plot/Histogram.svelte +1162 -709
  194. package/dist/plot/Histogram.svelte.d.ts +1 -1
  195. package/dist/plot/HistogramControls.svelte +81 -18
  196. package/dist/plot/HistogramControls.svelte.d.ts +6 -2
  197. package/dist/plot/InteractiveAxisLabel.svelte +34 -11
  198. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +1 -1
  199. package/dist/plot/Line.svelte +63 -28
  200. package/dist/plot/PlotControls.svelte +221 -96
  201. package/dist/plot/PlotControls.svelte.d.ts +1 -1
  202. package/dist/plot/PlotLegend.svelte +174 -91
  203. package/dist/plot/PlotTooltip.svelte +45 -6
  204. package/dist/plot/PortalSelect.svelte +175 -146
  205. package/dist/plot/ReferenceLine.svelte +77 -22
  206. package/dist/plot/ReferenceLine.svelte.d.ts +1 -0
  207. package/dist/plot/ReferenceLine3D.svelte +132 -107
  208. package/dist/plot/ReferencePlane.svelte +146 -123
  209. package/dist/plot/ScatterPlot.svelte +1880 -1156
  210. package/dist/plot/ScatterPlot.svelte.d.ts +3 -3
  211. package/dist/plot/ScatterPlot3D.svelte +256 -131
  212. package/dist/plot/ScatterPlot3D.svelte.d.ts +2 -2
  213. package/dist/plot/ScatterPlot3DControls.svelte +300 -297
  214. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +2 -1
  215. package/dist/plot/ScatterPlot3DScene.svelte +608 -406
  216. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +2 -2
  217. package/dist/plot/ScatterPlotControls.svelte +150 -70
  218. package/dist/plot/ScatterPlotControls.svelte.d.ts +1 -1
  219. package/dist/plot/ScatterPoint.svelte +98 -26
  220. package/dist/plot/ScatterPoint.svelte.d.ts +1 -0
  221. package/dist/plot/SpacegroupBarPlot.svelte +142 -85
  222. package/dist/plot/Surface3D.svelte +159 -108
  223. package/dist/plot/ZeroLines.svelte +96 -0
  224. package/dist/plot/ZeroLines.svelte.d.ts +32 -0
  225. package/dist/plot/ZoomRect.svelte +23 -0
  226. package/dist/plot/ZoomRect.svelte.d.ts +8 -0
  227. package/dist/plot/axis-utils.d.ts +1 -1
  228. package/dist/plot/axis-utils.js +1 -3
  229. package/dist/plot/data-cleaning.js +12 -28
  230. package/dist/plot/data-transform.js +2 -1
  231. package/dist/plot/fill-utils.js +2 -0
  232. package/dist/plot/index.d.ts +6 -2
  233. package/dist/plot/index.js +6 -2
  234. package/dist/plot/interactions.d.ts +8 -10
  235. package/dist/plot/interactions.js +2 -3
  236. package/dist/plot/layout.d.ts +11 -2
  237. package/dist/plot/layout.js +44 -17
  238. package/dist/plot/reference-line.d.ts +5 -22
  239. package/dist/plot/reference-line.js +12 -84
  240. package/dist/plot/scales.js +24 -36
  241. package/dist/plot/types.d.ts +53 -40
  242. package/dist/plot/types.js +12 -7
  243. package/dist/plot/utils/label-placement.d.ts +32 -15
  244. package/dist/plot/utils/label-placement.js +227 -63
  245. package/dist/plot/utils/series-visibility.js +2 -3
  246. package/dist/plot/utils.d.ts +1 -0
  247. package/dist/plot/utils.js +14 -0
  248. package/dist/rdf/RdfPlot.svelte +173 -132
  249. package/dist/rdf/calc-rdf.js +4 -5
  250. package/dist/sanitize.d.ts +4 -0
  251. package/dist/sanitize.js +107 -0
  252. package/dist/settings.d.ts +21 -6
  253. package/dist/settings.js +63 -19
  254. package/dist/spectral/Bands.svelte +963 -412
  255. package/dist/spectral/Bands.svelte.d.ts +22 -2
  256. package/dist/spectral/BandsAndDos.svelte +90 -49
  257. package/dist/spectral/BrillouinBandsDos.svelte +151 -93
  258. package/dist/spectral/Dos.svelte +389 -258
  259. package/dist/spectral/helpers.d.ts +23 -1
  260. package/dist/spectral/helpers.js +119 -51
  261. package/dist/spectral/types.d.ts +2 -0
  262. package/dist/state.svelte.d.ts +1 -1
  263. package/dist/state.svelte.js +3 -2
  264. package/dist/structure/Arrow.svelte +59 -20
  265. package/dist/structure/AtomLegend.svelte +231 -129
  266. package/dist/structure/AtomLegend.svelte.d.ts +1 -1
  267. package/dist/structure/Bond.svelte +73 -47
  268. package/dist/structure/CanvasTooltip.svelte +10 -2
  269. package/dist/structure/CellSelect.svelte +148 -51
  270. package/dist/structure/Cylinder.svelte +33 -17
  271. package/dist/structure/Lattice.svelte +88 -33
  272. package/dist/structure/Structure.svelte +1077 -821
  273. package/dist/structure/Structure.svelte.d.ts +1 -1
  274. package/dist/structure/StructureControls.svelte +373 -139
  275. package/dist/structure/StructureControls.svelte.d.ts +1 -1
  276. package/dist/structure/StructureExportPane.svelte +124 -89
  277. package/dist/structure/StructureExportPane.svelte.d.ts +1 -1
  278. package/dist/structure/StructureInfoPane.svelte +304 -231
  279. package/dist/structure/StructureScene.svelte +919 -445
  280. package/dist/structure/StructureScene.svelte.d.ts +16 -7
  281. package/dist/structure/atom-properties.d.ts +6 -2
  282. package/dist/structure/atom-properties.js +42 -29
  283. package/dist/structure/bonding.js +6 -7
  284. package/dist/structure/export.js +22 -34
  285. package/dist/structure/ferrox-wasm-types.d.ts +3 -2
  286. package/dist/structure/ferrox-wasm-types.js +0 -3
  287. package/dist/structure/ferrox-wasm.d.ts +3 -2
  288. package/dist/structure/ferrox-wasm.js +2 -3
  289. package/dist/structure/index.d.ts +16 -0
  290. package/dist/structure/index.js +88 -6
  291. package/dist/structure/measure.d.ts +2 -2
  292. package/dist/structure/measure.js +4 -44
  293. package/dist/structure/parse.js +130 -155
  294. package/dist/structure/partial-occupancy.d.ts +25 -0
  295. package/dist/structure/partial-occupancy.js +99 -0
  296. package/dist/structure/pbc.d.ts +1 -0
  297. package/dist/structure/pbc.js +16 -6
  298. package/dist/structure/supercell.d.ts +2 -2
  299. package/dist/structure/supercell.js +12 -22
  300. package/dist/structure/validation.js +5 -3
  301. package/dist/symmetry/SymmetryStats.svelte +94 -37
  302. package/dist/symmetry/WyckoffTable.svelte +42 -14
  303. package/dist/symmetry/cell-transform.js +5 -3
  304. package/dist/symmetry/index.d.ts +7 -4
  305. package/dist/symmetry/index.js +87 -21
  306. package/dist/symmetry/spacegroups.js +148 -148
  307. package/dist/table/HeatmapTable.svelte +1112 -516
  308. package/dist/table/HeatmapTable.svelte.d.ts +12 -1
  309. package/dist/table/ToggleMenu.svelte +125 -90
  310. package/dist/table/index.d.ts +2 -0
  311. package/dist/table/index.js +2 -4
  312. package/dist/theme/ThemeControl.svelte +21 -12
  313. package/dist/time.js +4 -1
  314. package/dist/tooltip/TooltipContent.svelte +33 -8
  315. package/dist/trajectory/Trajectory.svelte +889 -687
  316. package/dist/trajectory/TrajectoryError.svelte +14 -3
  317. package/dist/trajectory/TrajectoryExportPane.svelte +148 -90
  318. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +1 -1
  319. package/dist/trajectory/TrajectoryInfoPane.svelte +272 -143
  320. package/dist/trajectory/constants.d.ts +6 -0
  321. package/dist/trajectory/constants.js +7 -0
  322. package/dist/trajectory/extract.js +13 -31
  323. package/dist/trajectory/format-detect.d.ts +9 -0
  324. package/dist/trajectory/format-detect.js +76 -0
  325. package/dist/trajectory/frame-reader.d.ts +17 -0
  326. package/dist/trajectory/frame-reader.js +332 -0
  327. package/dist/trajectory/helpers.d.ts +14 -0
  328. package/dist/trajectory/helpers.js +172 -0
  329. package/dist/trajectory/index.d.ts +1 -0
  330. package/dist/trajectory/index.js +23 -14
  331. package/dist/trajectory/parse/ase.d.ts +2 -0
  332. package/dist/trajectory/parse/ase.js +77 -0
  333. package/dist/trajectory/parse/hdf5.d.ts +2 -0
  334. package/dist/trajectory/parse/hdf5.js +129 -0
  335. package/dist/trajectory/parse/index.d.ts +12 -0
  336. package/dist/trajectory/parse/index.js +299 -0
  337. package/dist/trajectory/parse/lammps.d.ts +5 -0
  338. package/dist/trajectory/parse/lammps.js +179 -0
  339. package/dist/trajectory/parse/vasp.d.ts +2 -0
  340. package/dist/trajectory/parse/vasp.js +68 -0
  341. package/dist/trajectory/parse/xyz.d.ts +2 -0
  342. package/dist/trajectory/parse/xyz.js +110 -0
  343. package/dist/trajectory/plotting.js +13 -8
  344. package/dist/trajectory/types.d.ts +11 -0
  345. package/dist/trajectory/types.js +1 -0
  346. package/dist/utils.d.ts +3 -0
  347. package/dist/utils.js +17 -0
  348. package/dist/xrd/XrdPlot.svelte +337 -245
  349. package/dist/xrd/broadening.js +14 -9
  350. package/dist/xrd/calc-xrd.js +12 -19
  351. package/dist/xrd/parse.d.ts +1 -1
  352. package/dist/xrd/parse.js +17 -17
  353. package/package.json +103 -101
  354. package/readme.md +4 -4
  355. package/dist/trajectory/parse.d.ts +0 -42
  356. package/dist/trajectory/parse.js +0 -1267
  357. /package/dist/element/{data.json.d.ts → data.json.gz.d.ts} +0 -0
  358. /package/dist/theme/{themes.js → themes.mjs} +0 -0
Binary file
@@ -48,6 +48,7 @@ export type ChemicalElement = {
48
48
  summary: string;
49
49
  symbol: ElementSymbol;
50
50
  year: number | string;
51
+ mendeleev_number?: number;
51
52
  oxidation_states?: number[];
52
53
  common_oxidation_states?: number[];
53
54
  icsd_oxidation_states?: number[];
@@ -1,8 +1,19 @@
1
- <script lang="ts">import Icon from '../Icon.svelte';
2
- // Generic feedback component that shows a transient icon at a specific position.
3
- // Commonly used for copy-to-clipboard feedback, but can display icons for
4
- // various user interactions.
5
- let { visible = $bindable(false), position = { x: 0, y: 0 }, icon = `Check`, } = $props();
1
+ <script lang="ts">
2
+ import Icon from '../Icon.svelte'
3
+ import type { IconName } from '../icons'
4
+
5
+ // Generic feedback component that shows a transient icon at a specific position.
6
+ // Commonly used for copy-to-clipboard feedback, but can display icons for
7
+ // various user interactions.
8
+ let {
9
+ visible = $bindable(false),
10
+ position = { x: 0, y: 0 },
11
+ icon = `Check`,
12
+ }: {
13
+ visible?: boolean
14
+ position: { x: number; y: number }
15
+ icon?: IconName
16
+ } = $props()
6
17
  </script>
7
18
 
8
19
  {#if visible}
@@ -1,5 +1,13 @@
1
- <script lang="ts">import Icon from '../Icon.svelte';
2
- let { visible = false, message = `Drop JSON file to load phase diagram data`, } = $props();
1
+ <script lang="ts">
2
+ import Icon from '../Icon.svelte'
3
+
4
+ let {
5
+ visible = false,
6
+ message = `Drop JSON file to load phase diagram data`,
7
+ }: {
8
+ visible?: boolean
9
+ message?: string
10
+ } = $props()
3
11
  </script>
4
12
 
5
13
  {#if visible}
@@ -1,5 +1,7 @@
1
- <script lang="ts">let { text, ...rest } = $props();
2
- export {};
1
+ <script lang="ts">
2
+ import type { HTMLAttributes } from 'svelte/elements'
3
+
4
+ let { text, ...rest }: { text?: string } & HTMLAttributes<HTMLDivElement> = $props()
3
5
  </script>
4
6
 
5
7
  <div class="spinner" role="status" aria-live="polite" aria-busy="true" {...rest}>
@@ -1,5 +1,11 @@
1
- <script lang="ts">let { message = $bindable(), type = `info`, dismissible = false, ...rest } = $props();
2
- export {};
1
+ <script lang="ts">
2
+ import type { HTMLAttributes } from 'svelte/elements'
3
+
4
+ let { message = $bindable(), type = `info`, dismissible = false, ...rest }: {
5
+ message?: string
6
+ type?: `info` | `error` | `warning`
7
+ dismissible?: boolean
8
+ } & HTMLAttributes<HTMLDivElement> = $props()
3
9
  </script>
4
10
 
5
11
  {#if message}
@@ -1,103 +1,133 @@
1
- <script lang="ts">import { ScatterPlot } from '../plot';
2
- import { SvelteSet } from 'svelte/reactivity';
3
- import { compute_fermi_slice } from './compute';
4
- import { BAND_COLORS } from './constants';
5
- let { fermi_data, miller_indices = [0, 0, 1], distance = 0, line_width = 2, show_axes = true, axis_labels, band_colors = BAND_COLORS, show_legend = true, on_error, children, ...rest } = $props();
6
- let wrapper = $state(undefined);
7
- let hidden_bands = new SvelteSet();
8
- // Compute axis labels from Miller indices (subscript z doesn't exist in Unicode)
9
- let labels = $derived.by(() => {
10
- if (axis_labels)
11
- return axis_labels;
12
- const K = [`kₓ`, `kᵧ`, `kz`];
13
- const zeros = miller_indices.flatMap((val, idx) => (val === 0 ? [idx] : []));
14
- if (zeros.length === 2)
15
- return [K[zeros[0]], K[zeros[1]]];
16
- if (zeros.length === 1)
17
- return [`k⊥`, K[zeros[0]]];
18
- return [`k₁`, `k₂`];
19
- });
20
- // Compute slice with error handling
21
- let slice_data = $state(null);
22
- $effect(() => {
1
+ <script lang="ts">
2
+ import type { Vec3 } from '../math'
3
+ import type { DataSeries } from '../plot'
4
+ import { ScatterPlot } from '../plot'
5
+ import type { Snippet } from 'svelte'
6
+ import type { HTMLAttributes } from 'svelte/elements'
7
+ import { SvelteSet } from 'svelte/reactivity'
8
+ import { compute_fermi_slice } from './compute'
9
+ import { BAND_COLORS } from './constants'
10
+ import type { FermiSliceData, FermiSurfaceData } from './types'
11
+
12
+ let {
13
+ fermi_data,
14
+ miller_indices = [0, 0, 1],
15
+ distance = 0,
16
+ line_width = 2,
17
+ show_axes = true,
18
+ axis_labels,
19
+ band_colors = BAND_COLORS,
20
+ show_legend = true,
21
+ on_error,
22
+ children,
23
+ ...rest
24
+ }: {
25
+ fermi_data?: FermiSurfaceData
26
+ miller_indices?: Vec3
27
+ distance?: number
28
+ line_width?: number
29
+ show_axes?: boolean
30
+ axis_labels?: [string, string]
31
+ band_colors?: readonly string[]
32
+ show_legend?: boolean
33
+ on_error?: (error: Error) => void
34
+ children?: Snippet<
35
+ [{ slice_data: FermiSliceData | null; export_svg: () => string | null }]
36
+ >
37
+ } & HTMLAttributes<HTMLDivElement> = $props()
38
+
39
+ let wrapper = $state<HTMLDivElement | undefined>(undefined)
40
+ let hidden_bands = new SvelteSet<number>()
41
+
42
+ // Compute axis labels from Miller indices (subscript z doesn't exist in Unicode)
43
+ let labels = $derived.by((): [string, string] => {
44
+ if (axis_labels) return axis_labels
45
+ const K = [`kₓ`, `kᵧ`, `kz`] as const
46
+ const zeros = miller_indices.flatMap((val, idx) => (val === 0 ? [idx] : []))
47
+ if (zeros.length === 2) return [K[zeros[0]], K[zeros[1]]]
48
+ if (zeros.length === 1) return [`k⊥`, K[zeros[0]]]
49
+ return [`k₁`, `k₂`]
50
+ })
51
+
52
+ // Compute slice with error handling
53
+ let slice_data = $state<FermiSliceData | null>(null)
54
+ $effect(() => {
23
55
  if (!fermi_data) {
24
- slice_data = null;
25
- return;
56
+ slice_data = null
57
+ return
26
58
  }
27
59
  try {
28
- slice_data = compute_fermi_slice(fermi_data, { miller_indices, distance });
60
+ slice_data = compute_fermi_slice(fermi_data, { miller_indices, distance })
61
+ } catch (err) {
62
+ slice_data = null
63
+ on_error?.(err instanceof Error ? err : new Error(String(err)))
29
64
  }
30
- catch (err) {
31
- slice_data = null;
32
- on_error?.(err instanceof Error ? err : new Error(String(err)));
33
- }
34
- });
35
- // Transform isolines to ScatterPlot series
36
- let series = $derived(slice_data?.isolines.map((iso, idx) => ({
37
- id: `iso-${iso.band_index}-${idx}`,
38
- x: iso.points_2d.map((pt) => pt[0]),
39
- y: iso.points_2d.map((pt) => pt[1]),
40
- markers: `line`,
41
- visible: !hidden_bands.has(iso.band_index),
42
- label: `Band ${iso.band_index + 1}`,
43
- line_style: {
65
+ })
66
+
67
+ // Transform isolines to ScatterPlot series
68
+ let series: DataSeries[] = $derived(
69
+ slice_data?.isolines.map((iso, idx) => ({
70
+ id: `iso-${iso.band_index}-${idx}`,
71
+ x: iso.points_2d.map((pt) => pt[0]),
72
+ y: iso.points_2d.map((pt) => pt[1]),
73
+ markers: `line` as const,
74
+ visible: !hidden_bands.has(iso.band_index),
75
+ label: `Band ${iso.band_index + 1}`,
76
+ line_style: {
44
77
  stroke: band_colors[iso.band_index % band_colors.length],
45
78
  stroke_width: line_width,
46
- },
47
- })) ?? []);
48
- // Compute padded data bounds (single-pass to avoid stack overflow on large arrays)
49
- let bounds = $derived.by(() => {
50
- const isolines = slice_data?.isolines;
51
- if (!isolines?.length)
52
- return { min: [-1, -1], max: [1, 1] };
53
- let xmin = Infinity, xmax = -Infinity, ymin = Infinity, ymax = -Infinity;
79
+ },
80
+ })) ?? [],
81
+ )
82
+
83
+ // Compute padded data bounds (single-pass to avoid stack overflow on large arrays)
84
+ let bounds = $derived.by(() => {
85
+ const isolines = slice_data?.isolines
86
+ if (!isolines?.length) return { min: [-1, -1], max: [1, 1] }
87
+
88
+ let xmin = Infinity, xmax = -Infinity, ymin = Infinity, ymax = -Infinity
54
89
  for (const iso of isolines) {
55
- for (const pt of iso.points_2d) {
56
- if (pt[0] < xmin)
57
- xmin = pt[0];
58
- if (pt[0] > xmax)
59
- xmax = pt[0];
60
- if (pt[1] < ymin)
61
- ymin = pt[1];
62
- if (pt[1] > ymax)
63
- ymax = pt[1];
64
- }
90
+ for (const pt of iso.points_2d) {
91
+ if (pt[0] < xmin) xmin = pt[0]
92
+ if (pt[0] > xmax) xmax = pt[0]
93
+ if (pt[1] < ymin) ymin = pt[1]
94
+ if (pt[1] > ymax) ymax = pt[1]
95
+ }
65
96
  }
66
- if (!isFinite(xmin))
67
- return { min: [-1, -1], max: [1, 1] };
68
- const pad = 0.1, rx = xmax - xmin || 1, ry = ymax - ymin || 1;
97
+ if (!isFinite(xmin)) return { min: [-1, -1], max: [1, 1] }
98
+
99
+ const pad = 0.1, rx = xmax - xmin || 1, ry = ymax - ymin || 1
69
100
  return {
70
- min: [xmin - rx * pad, ymin - ry * pad],
71
- max: [xmax + rx * pad, ymax + ry * pad],
72
- };
73
- });
74
- function toggle_band(series_idx) {
75
- const band = slice_data?.isolines[series_idx]?.band_index;
76
- if (band === undefined)
77
- return;
78
- if (hidden_bands.has(band))
79
- hidden_bands.delete(band);
80
- else
81
- hidden_bands.add(band);
82
- }
83
- function isolate_band(series_idx) {
84
- const band = slice_data?.isolines[series_idx]?.band_index;
85
- if (band === undefined)
86
- return;
101
+ min: [xmin - rx * pad, ymin - ry * pad],
102
+ max: [xmax + rx * pad, ymax + ry * pad],
103
+ }
104
+ })
105
+
106
+ function toggle_band(series_idx: number) {
107
+ const band = slice_data?.isolines[series_idx]?.band_index
108
+ if (band === undefined) return
109
+ if (hidden_bands.has(band)) hidden_bands.delete(band)
110
+ else hidden_bands.add(band)
111
+ }
112
+
113
+ function isolate_band(series_idx: number) {
114
+ const band = slice_data?.isolines[series_idx]?.band_index
115
+ if (band === undefined) return
87
116
  const all_bands = [
88
- ...new Set(slice_data?.isolines.map((iso) => iso.band_index) ?? []),
89
- ];
90
- const is_solo = all_bands.every((b) => b === band || hidden_bands.has(b));
91
- hidden_bands.clear();
117
+ ...new Set(slice_data?.isolines.map((iso) => iso.band_index) ?? []),
118
+ ]
119
+ const is_solo = all_bands.every((bid) => bid === band || hidden_bands.has(bid))
120
+ hidden_bands.clear()
92
121
  if (!is_solo) {
93
- for (const b of all_bands) {
94
- if (b !== band)
95
- hidden_bands.add(b);
96
- }
122
+ for (const bid of all_bands) {
123
+ if (bid !== band) hidden_bands.add(bid)
124
+ }
97
125
  }
98
- }
99
- // Returns null if SVG not found, making export failures explicit
100
- const export_svg = () => wrapper?.querySelector(`svg`)?.outerHTML ?? null;
126
+ }
127
+
128
+ // Returns null if SVG not found, making export failures explicit
129
+ const export_svg = (): string | null =>
130
+ wrapper?.querySelector(`svg`)?.outerHTML ?? null
101
131
  </script>
102
132
 
103
133
  <ScatterPlot