matterviz 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. package/dist/EmptyState.svelte +10 -4
  2. package/dist/FilePicker.svelte +48 -60
  3. package/dist/Icon.svelte +7 -4
  4. package/dist/MillerIndexInput.svelte +2 -2
  5. package/dist/api/optimade.js +10 -7
  6. package/dist/app.css +68 -0
  7. package/dist/brillouin/BrillouinZone.svelte +90 -91
  8. package/dist/brillouin/BrillouinZone.svelte.d.ts +5 -7
  9. package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
  10. package/dist/brillouin/BrillouinZoneExportPane.svelte +18 -14
  11. package/dist/brillouin/BrillouinZoneInfoPane.svelte +6 -10
  12. package/dist/brillouin/BrillouinZoneScene.svelte +46 -68
  13. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
  14. package/dist/brillouin/compute.js +10 -16
  15. package/dist/brillouin/geometry.js +2 -2
  16. package/dist/chempot-diagram/ChemPotDiagram.svelte +48 -50
  17. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +61 -169
  18. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +1 -1
  19. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +559 -755
  20. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +1 -1
  21. package/dist/chempot-diagram/async-compute.svelte.js +13 -14
  22. package/dist/chempot-diagram/color.d.ts +21 -1
  23. package/dist/chempot-diagram/color.js +70 -1
  24. package/dist/chempot-diagram/compute.d.ts +7 -0
  25. package/dist/chempot-diagram/compute.js +85 -26
  26. package/dist/chempot-diagram/controls-state.svelte.js +1 -1
  27. package/dist/chempot-diagram/export.js +1 -6
  28. package/dist/chempot-diagram/temperature.js +9 -10
  29. package/dist/colors/index.d.ts +0 -4
  30. package/dist/colors/index.js +19 -20
  31. package/dist/composition/BarChart.svelte +30 -26
  32. package/dist/composition/BubbleChart.svelte +17 -17
  33. package/dist/composition/Composition.svelte +10 -19
  34. package/dist/composition/Formula.svelte +20 -27
  35. package/dist/composition/FormulaFilter.svelte +115 -184
  36. package/dist/composition/PieChart.svelte +55 -41
  37. package/dist/composition/format.js +7 -9
  38. package/dist/composition/index.d.ts +2 -0
  39. package/dist/composition/index.js +14 -0
  40. package/dist/composition/parse.d.ts +2 -2
  41. package/dist/composition/parse.js +61 -115
  42. package/dist/constants.d.ts +0 -1
  43. package/dist/constants.js +17 -26
  44. package/dist/convex-hull/ConvexHull.svelte +12 -15
  45. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -1
  46. package/dist/convex-hull/ConvexHull2D.svelte +93 -94
  47. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  48. package/dist/convex-hull/ConvexHull3D.svelte +127 -186
  49. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  50. package/dist/convex-hull/ConvexHull4D.svelte +131 -180
  51. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  52. package/dist/convex-hull/ConvexHullChrome.svelte +36 -40
  53. package/dist/convex-hull/ConvexHullControls.svelte +46 -48
  54. package/dist/convex-hull/ConvexHullStats.svelte +193 -195
  55. package/dist/convex-hull/ConvexHullTooltip.svelte +5 -12
  56. package/dist/convex-hull/GasPressureControls.svelte +5 -12
  57. package/dist/convex-hull/StructurePopup.svelte +18 -22
  58. package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
  59. package/dist/convex-hull/TemperatureSlider.svelte +4 -10
  60. package/dist/convex-hull/canvas-interactions.svelte.js +2 -1
  61. package/dist/convex-hull/gas-thermodynamics.js +21 -53
  62. package/dist/convex-hull/helpers.d.ts +8 -10
  63. package/dist/convex-hull/helpers.js +37 -43
  64. package/dist/convex-hull/hull-state.svelte.d.ts +1 -1
  65. package/dist/convex-hull/thermodynamics.js +37 -44
  66. package/dist/coordination/CoordinationBarPlot.svelte +49 -53
  67. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +1 -1
  68. package/dist/coordination/calc-coordination.d.ts +1 -1
  69. package/dist/coordination/calc-coordination.js +28 -25
  70. package/dist/element/BohrAtom.svelte +5 -9
  71. package/dist/element/ElementHeading.svelte +4 -1
  72. package/dist/element/ElementPhoto.svelte +11 -9
  73. package/dist/element/ElementStats.svelte +12 -10
  74. package/dist/element/ElementTile.svelte +44 -67
  75. package/dist/element/Nucleus.svelte +4 -2
  76. package/dist/element/data.d.ts +3 -2
  77. package/dist/element/data.js +5 -1
  78. package/dist/element/helpers.d.ts +4 -0
  79. package/dist/element/helpers.js +18 -0
  80. package/dist/element/index.d.ts +2 -5
  81. package/dist/element/index.js +4 -19
  82. package/dist/feedback/DragOverlay.svelte +5 -5
  83. package/dist/feedback/DragOverlay.svelte.d.ts +2 -2
  84. package/dist/feedback/StatusMessage.svelte +7 -4
  85. package/dist/fermi-surface/FermiSlice.svelte +21 -18
  86. package/dist/fermi-surface/FermiSurface.svelte +35 -44
  87. package/dist/fermi-surface/FermiSurface.svelte.d.ts +7 -13
  88. package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
  89. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
  90. package/dist/fermi-surface/FermiSurfaceScene.svelte +64 -136
  91. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
  92. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
  93. package/dist/fermi-surface/compute.js +25 -58
  94. package/dist/fermi-surface/parse.js +54 -88
  95. package/dist/file-viewer/JsonBrowser.svelte +1043 -0
  96. package/dist/file-viewer/JsonBrowser.svelte.d.ts +9 -0
  97. package/dist/file-viewer/PlotPanel.svelte +350 -0
  98. package/dist/file-viewer/PlotPanel.svelte.d.ts +9 -0
  99. package/dist/file-viewer/TrajectoryWithDos.svelte +30 -0
  100. package/dist/file-viewer/TrajectoryWithDos.svelte.d.ts +10 -0
  101. package/dist/file-viewer/detect.d.ts +11 -0
  102. package/dist/file-viewer/detect.js +381 -0
  103. package/dist/file-viewer/eligibility.d.ts +4 -0
  104. package/dist/file-viewer/eligibility.js +53 -0
  105. package/dist/file-viewer/host-protocol.d.ts +50 -0
  106. package/dist/file-viewer/host-transfer.d.ts +25 -0
  107. package/dist/file-viewer/host-transfer.js +42 -0
  108. package/dist/file-viewer/index.d.ts +5 -0
  109. package/dist/file-viewer/index.js +5 -0
  110. package/dist/file-viewer/main.d.ts +44 -0
  111. package/dist/file-viewer/main.js +535 -0
  112. package/dist/file-viewer/parse.d.ts +9 -0
  113. package/dist/file-viewer/parse.js +170 -0
  114. package/dist/file-viewer/plot-utils.d.ts +24 -0
  115. package/dist/file-viewer/plot-utils.js +191 -0
  116. package/dist/file-viewer/types.d.ts +4 -0
  117. package/dist/file-viewer/types.js +5 -0
  118. package/dist/heatmap-matrix/HeatmapMatrix.svelte +153 -219
  119. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +2 -2
  120. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +9 -7
  121. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +1 -1
  122. package/dist/heatmap-matrix/index.d.ts +5 -0
  123. package/dist/icons.d.ts +4 -0
  124. package/dist/icons.js +4 -0
  125. package/dist/index.d.ts +2 -2
  126. package/dist/index.js +1 -1
  127. package/dist/io/ExportPane.svelte +11 -7
  128. package/dist/io/decompress.d.ts +4 -1
  129. package/dist/io/decompress.js +24 -36
  130. package/dist/io/export.d.ts +11 -4
  131. package/dist/io/export.js +75 -19
  132. package/dist/io/fetch.d.ts +0 -3
  133. package/dist/io/fetch.js +0 -11
  134. package/dist/io/file-drop.js +60 -35
  135. package/dist/io/index.d.ts +0 -1
  136. package/dist/io/index.js +2 -9
  137. package/dist/io/is-binary.d.ts +9 -0
  138. package/dist/io/is-binary.js +45 -1
  139. package/dist/io/url-drop.d.ts +2 -0
  140. package/dist/io/url-drop.js +40 -40
  141. package/dist/isosurface/Isosurface.svelte +700 -215
  142. package/dist/isosurface/Isosurface.svelte.d.ts +7 -1
  143. package/dist/isosurface/IsosurfaceControls.svelte +590 -116
  144. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +1 -1
  145. package/dist/isosurface/VolumeSlice.svelte +224 -0
  146. package/dist/isosurface/VolumeSlice.svelte.d.ts +28 -0
  147. package/dist/isosurface/coloring.d.ts +20 -0
  148. package/dist/isosurface/coloring.js +118 -0
  149. package/dist/isosurface/geometry-worker-types.d.ts +38 -0
  150. package/dist/isosurface/geometry.worker.d.ts +1 -0
  151. package/dist/isosurface/geometry.worker.js +59 -0
  152. package/dist/isosurface/grid.d.ts +10 -0
  153. package/dist/isosurface/grid.js +31 -0
  154. package/dist/isosurface/index.d.ts +4 -0
  155. package/dist/isosurface/index.js +4 -0
  156. package/dist/isosurface/parse-vaspwave.d.ts +3 -0
  157. package/dist/isosurface/parse-vaspwave.js +138 -0
  158. package/dist/isosurface/parse.js +6 -6
  159. package/dist/isosurface/profile.d.ts +12 -0
  160. package/dist/isosurface/profile.js +19 -0
  161. package/dist/isosurface/sampling.d.ts +34 -0
  162. package/dist/isosurface/sampling.js +408 -0
  163. package/dist/isosurface/slice-rendering.d.ts +13 -0
  164. package/dist/isosurface/slice-rendering.js +79 -0
  165. package/dist/isosurface/slice.d.ts +22 -2
  166. package/dist/isosurface/slice.js +200 -116
  167. package/dist/isosurface/types.d.ts +24 -1
  168. package/dist/isosurface/types.js +120 -8
  169. package/dist/json-path.d.ts +4 -0
  170. package/dist/json-path.js +89 -0
  171. package/dist/labels.d.ts +6 -2
  172. package/dist/labels.js +44 -14
  173. package/dist/layout/FullscreenButton.svelte +2 -1
  174. package/dist/layout/FullscreenToggle.svelte +10 -4
  175. package/dist/layout/InfoCard.svelte +8 -21
  176. package/dist/layout/InfoTag.svelte +1 -3
  177. package/dist/layout/NumberRangeInput.svelte +46 -0
  178. package/dist/layout/NumberRangeInput.svelte.d.ts +12 -0
  179. package/dist/layout/PropertyFilter.svelte +2 -6
  180. package/dist/layout/SettingsSection.svelte +57 -62
  181. package/dist/layout/SettingsSection.svelte.d.ts +6 -7
  182. package/dist/layout/SubpageGrid.svelte +3 -1
  183. package/dist/layout/ViewerChrome.svelte +16 -11
  184. package/dist/layout/ViewerChrome.svelte.d.ts +2 -1
  185. package/dist/layout/fullscreen.js +3 -5
  186. package/dist/layout/fullscreen.svelte.js +1 -2
  187. package/dist/layout/index.d.ts +1 -0
  188. package/dist/layout/index.js +1 -0
  189. package/dist/layout/json-tree/JsonNode.svelte +22 -59
  190. package/dist/layout/json-tree/JsonTree.svelte +101 -172
  191. package/dist/layout/json-tree/JsonValue.svelte +9 -32
  192. package/dist/layout/json-tree/utils.d.ts +0 -3
  193. package/dist/layout/json-tree/utils.js +50 -188
  194. package/dist/marching-cubes.d.ts +8 -1
  195. package/dist/marching-cubes.js +115 -48
  196. package/dist/math.d.ts +5 -2
  197. package/dist/math.js +48 -38
  198. package/dist/overlays/ContextMenu.svelte +19 -34
  199. package/dist/overlays/CopyButton.svelte +11 -5
  200. package/dist/overlays/DragControlTab.svelte +6 -1
  201. package/dist/overlays/DraggablePane.svelte +110 -74
  202. package/dist/overlays/DraggablePane.svelte.d.ts +2 -1
  203. package/dist/overlays/GlassChip.svelte +32 -0
  204. package/dist/overlays/GlassChip.svelte.d.ts +8 -0
  205. package/dist/overlays/InfoPaneCards.svelte +11 -23
  206. package/dist/overlays/index.d.ts +7 -0
  207. package/dist/overlays/index.js +26 -0
  208. package/dist/overlays/portal.d.ts +2 -0
  209. package/dist/overlays/portal.js +14 -0
  210. package/dist/periodic-table/PeriodicTable.svelte +113 -145
  211. package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
  212. package/dist/periodic-table/PeriodicTableControls.svelte +37 -115
  213. package/dist/periodic-table/TableInset.svelte +9 -4
  214. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +68 -105
  215. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
  216. package/dist/phase-diagram/PhaseDiagramControls.svelte +70 -94
  217. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +1 -1
  218. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +2 -1
  219. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +12 -12
  220. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
  221. package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
  222. package/dist/phase-diagram/build-diagram.js +4 -9
  223. package/dist/phase-diagram/diagram-input.d.ts +1 -2
  224. package/dist/phase-diagram/parse.js +15 -15
  225. package/dist/phase-diagram/svg-to-diagram.js +28 -27
  226. package/dist/phase-diagram/utils.js +2 -3
  227. package/dist/plot/bar/BarPlot.svelte +461 -426
  228. package/dist/plot/bar/BarPlot.svelte.d.ts +2 -0
  229. package/dist/plot/bar/BarPlotControls.svelte +1 -3
  230. package/dist/plot/bar/BarPlotControls.svelte.d.ts +4 -6
  231. package/dist/plot/bar/SpacegroupBarPlot.svelte +46 -77
  232. package/dist/plot/bar/data.d.ts +5 -4
  233. package/dist/plot/bar/data.js +2 -1
  234. package/dist/plot/box/BoxPlot.svelte +322 -226
  235. package/dist/plot/box/BoxPlot.svelte.d.ts +2 -0
  236. package/dist/plot/box/Violin.svelte.d.ts +1 -0
  237. package/dist/plot/box/box-plot.js +1 -1
  238. package/dist/plot/core/auto-place.d.ts +1 -1
  239. package/dist/plot/core/auto-place.js +2 -2
  240. package/dist/plot/core/axis-utils.d.ts +12 -7
  241. package/dist/plot/core/axis-utils.js +48 -48
  242. package/dist/plot/core/components/AxisLabel.svelte +82 -20
  243. package/dist/plot/core/components/AxisLabel.svelte.d.ts +1 -0
  244. package/dist/plot/core/components/ColorBar.svelte +101 -106
  245. package/dist/plot/core/components/ColorScaleSelect.svelte +1 -1
  246. package/dist/plot/core/components/FillArea.svelte +10 -17
  247. package/dist/plot/core/components/HierarchyControls.svelte +249 -0
  248. package/dist/plot/{sunburst/SunburstControls.svelte.d.ts → core/components/HierarchyControls.svelte.d.ts} +12 -8
  249. package/dist/plot/core/components/InteractiveAxisLabel.svelte +1 -1
  250. package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +1 -1
  251. package/dist/plot/core/components/Line.svelte +18 -9
  252. package/dist/plot/core/components/Line.svelte.d.ts +2 -0
  253. package/dist/plot/core/components/PlotAxis.svelte +40 -17
  254. package/dist/plot/core/components/PlotControls.svelte +65 -41
  255. package/dist/plot/core/components/PlotLegend.svelte +31 -35
  256. package/dist/plot/core/components/PlotMarginals.svelte +616 -0
  257. package/dist/plot/core/components/PlotMarginals.svelte.d.ts +15 -0
  258. package/dist/plot/core/components/PlotTooltip.svelte +1 -1
  259. package/dist/plot/core/components/PortalSelect.svelte +4 -8
  260. package/dist/plot/core/components/ReferenceLine.svelte +27 -24
  261. package/dist/plot/core/components/ReferenceLine3D.svelte +54 -57
  262. package/dist/plot/core/components/ReferencePlane.svelte +7 -8
  263. package/dist/plot/core/components/ZeroLines.svelte +4 -8
  264. package/dist/plot/core/components/ZoomRect.svelte +1 -2
  265. package/dist/plot/core/components/index.d.ts +1 -0
  266. package/dist/plot/core/components/index.js +1 -0
  267. package/dist/plot/core/data-cleaning-signal.d.ts +46 -0
  268. package/dist/plot/core/data-cleaning-signal.js +467 -0
  269. package/dist/plot/core/data-cleaning.d.ts +2 -42
  270. package/dist/plot/core/data-cleaning.js +27 -474
  271. package/dist/plot/core/data-transform.d.ts +1 -2
  272. package/dist/plot/core/data-transform.js +9 -15
  273. package/dist/plot/core/fill-utils.d.ts +3 -1
  274. package/dist/plot/core/fill-utils.js +28 -6
  275. package/dist/plot/core/index.d.ts +1 -0
  276. package/dist/plot/core/index.js +1 -0
  277. package/dist/plot/core/interactions.js +0 -2
  278. package/dist/plot/core/layout.d.ts +15 -6
  279. package/dist/plot/core/layout.js +57 -38
  280. package/dist/plot/core/marginals.d.ts +170 -0
  281. package/dist/plot/core/marginals.js +436 -0
  282. package/dist/plot/core/pan-zoom.svelte.d.ts +2 -4
  283. package/dist/plot/core/pan-zoom.svelte.js +34 -17
  284. package/dist/plot/core/placed-tween.svelte.d.ts +3 -0
  285. package/dist/plot/core/placed-tween.svelte.js +68 -21
  286. package/dist/plot/core/reference-line.js +1 -1
  287. package/dist/plot/core/scales.d.ts +23 -0
  288. package/dist/plot/core/scales.js +39 -13
  289. package/dist/plot/core/svg.js +0 -1
  290. package/dist/plot/core/types/fills.d.ts +101 -0
  291. package/dist/plot/core/types/fills.js +15 -0
  292. package/dist/plot/core/types/plot-3d.d.ts +87 -0
  293. package/dist/plot/core/types/plot-3d.js +4 -0
  294. package/dist/plot/core/types/reference-lines.d.ts +140 -0
  295. package/dist/plot/core/types/reference-lines.js +9 -0
  296. package/dist/plot/core/types.d.ts +29 -324
  297. package/dist/plot/core/types.js +23 -20
  298. package/dist/plot/core/utils/hierarchy-chart.d.ts +52 -0
  299. package/dist/plot/core/utils/hierarchy-chart.js +191 -0
  300. package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
  301. package/dist/plot/core/utils/hierarchy-labels.js +100 -0
  302. package/dist/plot/core/utils/label-placement.js +2 -2
  303. package/dist/plot/histogram/Histogram.svelte +314 -340
  304. package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
  305. package/dist/plot/histogram/HistogramControls.svelte +30 -28
  306. package/dist/plot/histogram/histogram.d.ts +31 -0
  307. package/dist/plot/histogram/histogram.js +70 -0
  308. package/dist/plot/histogram/index.d.ts +1 -0
  309. package/dist/plot/histogram/index.js +1 -0
  310. package/dist/plot/index.d.ts +1 -0
  311. package/dist/plot/index.js +1 -0
  312. package/dist/plot/sankey/Sankey.svelte +78 -69
  313. package/dist/plot/sankey/Sankey.svelte.d.ts +2 -2
  314. package/dist/plot/sankey/SankeyControls.svelte +22 -16
  315. package/dist/plot/sankey/sankey.js +13 -9
  316. package/dist/plot/scatter/BinnedScatterPlot.svelte +311 -141
  317. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +7 -0
  318. package/dist/plot/scatter/ElementScatter.svelte +4 -1
  319. package/dist/plot/scatter/ScatterPlot.svelte +517 -410
  320. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +2 -0
  321. package/dist/plot/scatter/ScatterPlotControls.svelte +18 -19
  322. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
  323. package/dist/plot/scatter/ScatterPoint.svelte +16 -9
  324. package/dist/plot/scatter/adaptive-density.d.ts +1 -1
  325. package/dist/plot/scatter/adaptive-density.js +36 -20
  326. package/dist/plot/scatter/binned-scatter-types.d.ts +3 -2
  327. package/dist/plot/scatter/binned-scatter-types.js +6 -1
  328. package/dist/plot/scatter/scatter-data.d.ts +1 -1
  329. package/dist/plot/scatter/scatter-data.js +8 -7
  330. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +25 -34
  331. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +2 -2
  332. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +8 -5
  333. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +113 -116
  334. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +2 -2
  335. package/dist/plot/scatter-3d/Surface3D.svelte +4 -13
  336. package/dist/plot/sunburst/Sunburst.svelte +269 -347
  337. package/dist/plot/sunburst/Sunburst.svelte.d.ts +2 -2
  338. package/dist/plot/sunburst/index.d.ts +1 -1
  339. package/dist/plot/sunburst/index.js +2 -1
  340. package/dist/plot/sunburst/render.d.ts +2 -2
  341. package/dist/plot/sunburst/render.js +47 -22
  342. package/dist/plot/sunburst/sunburst.d.ts +5 -1
  343. package/dist/plot/sunburst/sunburst.js +10 -3
  344. package/dist/plot/treemap/Treemap.svelte +1022 -0
  345. package/dist/plot/treemap/Treemap.svelte.d.ts +90 -0
  346. package/dist/plot/treemap/index.d.ts +4 -0
  347. package/dist/plot/treemap/index.js +4 -0
  348. package/dist/plot/treemap/labels.d.ts +38 -0
  349. package/dist/plot/treemap/labels.js +80 -0
  350. package/dist/plot/treemap/treemap.d.ts +28 -0
  351. package/dist/plot/treemap/treemap.js +102 -0
  352. package/dist/rdf/RdfPlot.svelte +37 -59
  353. package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
  354. package/dist/rdf/calc-rdf.js +63 -52
  355. package/dist/rdf/index.d.ts +0 -1
  356. package/dist/sanitize.js +85 -27
  357. package/dist/scene/SceneCamera.svelte +1 -1
  358. package/dist/scene/SceneCamera.svelte.d.ts +1 -1
  359. package/dist/scene/bind-renderer.svelte.js +14 -6
  360. package/dist/scene/index.d.ts +1 -2
  361. package/dist/scene/index.js +1 -1
  362. package/dist/scene/{props.js → props.svelte.js} +15 -1
  363. package/dist/settings.d.ts +19 -9
  364. package/dist/settings.js +229 -525
  365. package/dist/spectral/Bands.svelte +207 -221
  366. package/dist/spectral/BandsAndDos.svelte +11 -9
  367. package/dist/spectral/BrillouinBandsDos.svelte +19 -42
  368. package/dist/spectral/Dos.svelte +92 -93
  369. package/dist/spectral/helpers.d.ts +3 -3
  370. package/dist/spectral/helpers.js +65 -140
  371. package/dist/state.svelte.js +5 -18
  372. package/dist/structure/Arrow.svelte +5 -18
  373. package/dist/structure/ArrowInstances.svelte +160 -0
  374. package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
  375. package/dist/structure/AtomLegend.svelte +120 -85
  376. package/dist/structure/AtomLegend.svelte.d.ts +2 -3
  377. package/dist/structure/Bond.svelte +31 -23
  378. package/dist/structure/CanvasTooltip.svelte +15 -3
  379. package/dist/structure/CellSelect.svelte +45 -35
  380. package/dist/structure/Cylinder.svelte +24 -40
  381. package/dist/structure/InstancedAtoms.svelte +114 -0
  382. package/dist/structure/InstancedAtoms.svelte.d.ts +15 -0
  383. package/dist/structure/Lattice.svelte +85 -149
  384. package/dist/structure/SiteLabels.svelte +122 -0
  385. package/dist/structure/SiteLabels.svelte.d.ts +18 -0
  386. package/dist/structure/Structure.svelte +636 -504
  387. package/dist/structure/Structure.svelte.d.ts +4 -2
  388. package/dist/structure/StructureCarousel.svelte +637 -0
  389. package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
  390. package/dist/structure/StructureControls.svelte +165 -425
  391. package/dist/structure/StructureControls.svelte.d.ts +1 -1
  392. package/dist/structure/StructureExportPane.svelte +17 -21
  393. package/dist/structure/StructureInfoPane.svelte +128 -133
  394. package/dist/structure/StructureInfoPane.svelte.d.ts +1 -1
  395. package/dist/structure/StructureScene.svelte +535 -578
  396. package/dist/structure/StructureScene.svelte.d.ts +6 -2
  397. package/dist/structure/StructureViewport.svelte +451 -0
  398. package/dist/structure/StructureViewport.svelte.d.ts +65 -0
  399. package/dist/structure/atom-label-placement.d.ts +16 -12
  400. package/dist/structure/atom-label-placement.js +70 -37
  401. package/dist/structure/atom-properties.d.ts +2 -0
  402. package/dist/structure/atom-properties.js +105 -38
  403. package/dist/structure/bond-order-perception.js +3 -8
  404. package/dist/structure/bonding.d.ts +9 -3
  405. package/dist/structure/bonding.js +95 -46
  406. package/dist/structure/edit-history.d.ts +6 -0
  407. package/dist/structure/edit-history.js +27 -0
  408. package/dist/structure/export.d.ts +1 -0
  409. package/dist/structure/export.js +89 -105
  410. package/dist/structure/format-detect.d.ts +1 -0
  411. package/dist/structure/format-detect.js +20 -0
  412. package/dist/structure/geometry.d.ts +9 -0
  413. package/dist/structure/geometry.js +27 -0
  414. package/dist/structure/index.d.ts +16 -1
  415. package/dist/structure/index.js +15 -10
  416. package/dist/structure/measure.d.ts +1 -1
  417. package/dist/structure/measure.js +6 -12
  418. package/dist/structure/parse.d.ts +2 -1
  419. package/dist/structure/parse.js +272 -313
  420. package/dist/structure/partial-occupancy.js +10 -5
  421. package/dist/structure/pbc.js +85 -107
  422. package/dist/structure/polyhedra.d.ts +0 -1
  423. package/dist/structure/polyhedra.js +7 -21
  424. package/dist/structure/prop-groups.d.ts +85 -0
  425. package/dist/structure/prop-groups.js +18 -0
  426. package/dist/structure/supercell.d.ts +1 -2
  427. package/dist/structure/supercell.js +7 -13
  428. package/dist/symmetry/SymmetryElements.svelte +11 -15
  429. package/dist/symmetry/SymmetryStats.svelte +55 -71
  430. package/dist/symmetry/WyckoffTable.svelte +10 -28
  431. package/dist/symmetry/cell-transform.js +6 -14
  432. package/dist/symmetry/index.d.ts +1 -0
  433. package/dist/symmetry/index.js +13 -10
  434. package/dist/symmetry/spacegroups.js +3 -2
  435. package/dist/table/HeatmapTable.svelte +1142 -447
  436. package/dist/table/HeatmapTable.svelte.d.ts +12 -2
  437. package/dist/table/ToggleMenu.svelte +168 -53
  438. package/dist/table/ToggleMenu.svelte.d.ts +1 -1
  439. package/dist/table/index.d.ts +21 -6
  440. package/dist/table/index.js +34 -21
  441. package/dist/theme/ThemeControl.svelte +16 -8
  442. package/dist/theme/embedded.d.ts +18 -0
  443. package/dist/theme/embedded.js +206 -0
  444. package/dist/theme/index.d.ts +5 -5
  445. package/dist/theme/index.js +5 -12
  446. package/dist/theme/themes.mjs +44 -66
  447. package/dist/tooltip/KCoords.svelte +4 -1
  448. package/dist/tooltip/TooltipContent.svelte +3 -6
  449. package/dist/tooltip/TooltipContent.svelte.d.ts +1 -1
  450. package/dist/tooltip/index.d.ts +8 -1
  451. package/dist/trajectory/Trajectory.svelte +613 -386
  452. package/dist/trajectory/Trajectory.svelte.d.ts +1 -1
  453. package/dist/trajectory/TrajectoryError.svelte +12 -74
  454. package/dist/trajectory/TrajectoryExportPane.svelte +14 -32
  455. package/dist/trajectory/TrajectoryInfoPane.svelte +127 -164
  456. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +2 -1
  457. package/dist/trajectory/extract.js +61 -49
  458. package/dist/trajectory/format-detect.d.ts +2 -0
  459. package/dist/trajectory/format-detect.js +17 -13
  460. package/dist/trajectory/frame-reader.d.ts +2 -0
  461. package/dist/trajectory/frame-reader.js +35 -32
  462. package/dist/trajectory/helpers.d.ts +2 -0
  463. package/dist/trajectory/helpers.js +34 -56
  464. package/dist/trajectory/index.d.ts +1 -0
  465. package/dist/trajectory/index.js +5 -8
  466. package/dist/trajectory/parse/ase.js +1 -1
  467. package/dist/trajectory/parse/h5-utils.d.ts +13 -0
  468. package/dist/trajectory/parse/h5-utils.js +109 -0
  469. package/dist/trajectory/parse/hdf5.d.ts +1 -1
  470. package/dist/trajectory/parse/hdf5.js +116 -106
  471. package/dist/trajectory/parse/index.d.ts +6 -6
  472. package/dist/trajectory/parse/index.js +25 -33
  473. package/dist/trajectory/parse/lammps.js +8 -12
  474. package/dist/trajectory/parse/vasp.js +10 -7
  475. package/dist/trajectory/parse/vaspout-electronic.d.ts +13 -0
  476. package/dist/trajectory/parse/vaspout-electronic.js +207 -0
  477. package/dist/trajectory/parse/vaspout-h5.d.ts +4 -0
  478. package/dist/trajectory/parse/vaspout-h5.js +281 -0
  479. package/dist/trajectory/parse/xyz.js +59 -9
  480. package/dist/trajectory/plotting.d.ts +8 -9
  481. package/dist/trajectory/plotting.js +113 -64
  482. package/dist/utils.d.ts +3 -0
  483. package/dist/utils.js +7 -0
  484. package/dist/xrd/XrdPlot.svelte +79 -118
  485. package/dist/xrd/broadening.js +2 -1
  486. package/dist/xrd/calc-xrd.js +24 -62
  487. package/dist/xrd/parse.d.ts +0 -1
  488. package/dist/xrd/parse.js +69 -95
  489. package/package.json +94 -34
  490. package/readme.md +6 -5
  491. package/dist/api/mp.d.ts +0 -6
  492. package/dist/api/mp.js +0 -22
  493. package/dist/plot/sunburst/SunburstControls.svelte +0 -200
  494. package/dist/scene/types.d.ts +0 -26
  495. package/dist/tooltip/types.d.ts +0 -8
  496. package/dist/trajectory/constants.d.ts +0 -6
  497. package/dist/trajectory/constants.js +0 -11
  498. /package/dist/{scene/types.js → file-viewer/host-protocol.js} +0 -0
  499. /package/dist/{tooltip/types.js → isosurface/geometry-worker-types.js} +0 -0
@@ -6,7 +6,12 @@
6
6
  import { format_num } from '../labels'
7
7
  import type { Snippet } from 'svelte'
8
8
  import type { SVGAttributes } from 'svelte/elements'
9
- import { type ChartSegmentData, get_chart_font_scale } from './index'
9
+ import {
10
+ chart_segment_label,
11
+ chart_segment_suffix,
12
+ type ChartSegmentData,
13
+ get_chart_font_scale,
14
+ } from './index'
10
15
  import { fractional_composition } from './parse'
11
16
 
12
17
  type BarSegmentData = ChartSegmentData & {
@@ -66,13 +71,11 @@
66
71
  let svg_height = $derived(label_height + gap + bar_height + gap + label_height)
67
72
  let bar_y = $derived(label_height + gap)
68
73
  let above_labels_y = $derived(label_height / 2)
69
- let below_labels_y = $derived(
70
- label_height + gap + bar_height + gap + label_height / 2,
71
- )
74
+ let below_labels_y = $derived(label_height + gap + bar_height + gap + label_height / 2)
72
75
 
73
76
  let segments = $derived.by(() => {
74
- const element_entries = Object.entries(composition).filter(([_, amount]) =>
75
- amount && amount > 0
77
+ const element_entries = Object.entries(composition).filter(
78
+ ([_, amount]) => amount && amount > 0,
76
79
  ) as [ElementSymbol, number][]
77
80
  if (element_entries.length === 0) return []
78
81
 
@@ -87,8 +90,13 @@
87
90
 
88
91
  const segment_size = Math.min(width, size)
89
92
  const base_scale = Math.min(2, Math.max(1, segment_size / 40))
90
- const label_text = element + (show_amounts ? amount?.toString() ?? `` : ``) +
91
- (show_percentages ? `${format_num(fraction, `.1~%`)}` : ``)
93
+ const label_text = chart_segment_label(
94
+ element,
95
+ amount,
96
+ fraction,
97
+ show_amounts,
98
+ show_percentages,
99
+ )
92
100
  const font_scale = get_chart_font_scale(
93
101
  base_scale,
94
102
  label_text,
@@ -135,9 +143,7 @@
135
143
  </tspan>
136
144
  {#if show_amounts || show_percentages}
137
145
  <tspan class="amount" style:font-size="{6.5 * segment.font_scale}px" dx="1" dy="5">
138
- {show_amounts ? segment.amount : ``}{show_amounts && show_percentages ? `=` : ``}{
139
- show_percentages ? format_num(segment.fraction, `.1~%`) : ``
140
- }
146
+ {chart_segment_suffix(segment.amount, segment.fraction, show_amounts, show_percentages)}
141
147
  </tspan>
142
148
  {/if}
143
149
  {/snippet}
@@ -145,7 +151,7 @@
145
151
  <svg
146
152
  viewBox="0 0 {size} {svg_height}"
147
153
  {...rest}
148
- class="bar-chart {rest.class ?? ``}"
154
+ class={[`bar-chart`, rest.class]}
149
155
  style:max-width="{size}px"
150
156
  bind:this={svg_node}
151
157
  >
@@ -161,8 +167,7 @@
161
167
 
162
168
  <!-- External labels above -->
163
169
  {#each segments as segment (segment.element)}
164
- {#if show_labels && segment.needs_external_label &&
165
- segment.external_label_position === `above`}
170
+ {#if show_labels && segment.needs_external_label && segment.external_label_position === `above`}
166
171
  <text
167
172
  x={segment.label_x}
168
173
  y={above_labels_y}
@@ -205,20 +210,17 @@
205
210
  class:hovered={hovered_element === segment.element}
206
211
  onmouseenter={() => interactive && (hovered_element = segment.element)}
207
212
  onmouseleave={() => interactive && (hovered_element = null)}
208
- {...(interactive
209
- ? {
213
+ {...interactive && {
210
214
  role: `button`,
211
215
  tabindex: 0,
212
216
  'aria-label': `${segment.element}: ${segment.amount} ${
213
217
  segment.amount === 1 ? `atom` : `atoms`
214
218
  } (${format_num(segment.fraction, `.1~%`)})`,
215
- }
216
- : {})}
219
+ }}
217
220
  >
218
221
  <title>
219
- {segment.element}: {segment.amount} {segment.amount === 1 ? `atom` : `atoms`} ({
220
- format_num(segment.fraction, `.1~%`)
221
- })
222
+ {segment.element}: {segment.amount}
223
+ {segment.amount === 1 ? `atom` : `atoms`} ({format_num(segment.fraction, `.1~%`)})
222
224
  </title>
223
225
  </rect>
224
226
  {#if segment_content}
@@ -245,8 +247,7 @@
245
247
 
246
248
  <!-- External labels below -->
247
249
  {#each segments as segment (segment.element)}
248
- {#if show_labels && segment.needs_external_label &&
249
- segment.external_label_position === `below`}
250
+ {#if show_labels && segment.needs_external_label && segment.external_label_position === `below`}
250
251
  <text
251
252
  x={segment.label_x}
252
253
  y={below_labels_y}
@@ -274,18 +275,21 @@
274
275
  .bar-segment.interactive {
275
276
  cursor: pointer;
276
277
  }
277
- .bar-segment.interactive:hover, .bar-segment.hovered {
278
+ .bar-segment.interactive:hover,
279
+ .bar-segment.hovered {
278
280
  filter: brightness(1.1);
279
281
  }
280
282
  .bar-segment.interactive:focus {
281
283
  outline: 2px solid var(--focus-color, #0066cc);
282
284
  outline-offset: 2px;
283
285
  }
284
- .external-label, .bar-label {
286
+ .external-label,
287
+ .bar-label {
285
288
  transition: all 0.2s ease;
286
289
  pointer-events: none;
287
290
  }
288
- .external-label.hovered, .bar-label.hovered {
291
+ .external-label.hovered,
292
+ .bar-label.hovered {
289
293
  font-weight: 700;
290
294
  }
291
295
  .element-symbol {
@@ -60,14 +60,13 @@
60
60
  }
61
61
 
62
62
  // Use D3's pack layout for proper circle packing
63
- const pack_layout = pack<HierarchyData | Child>().size([
64
- size - 2 * padding,
65
- size - 2 * padding,
66
- ]).padding(padding * 0.1) // Small padding between circles
63
+ const pack_layout = pack<HierarchyData | Child>()
64
+ .size([size - 2 * padding, size - 2 * padding])
65
+ .padding(padding * 0.1) // Small padding between circles
67
66
 
68
67
  const root = pack_layout(
69
- hierarchy<HierarchyData | Child>(hierarchy_data).sum(
70
- (data) => (`amount` in data ? data.amount : 0),
68
+ hierarchy<HierarchyData | Child>(hierarchy_data).sum((data) =>
69
+ `amount` in data ? data.amount : 0,
71
70
  ),
72
71
  )
73
72
 
@@ -82,8 +81,7 @@
82
81
  // Calculate font scale based on bubble size and smart text fitting
83
82
  const [min_font_scale, max_font_scale] = [0.6, 2] as const
84
83
  const scale_factor = radius / max_radius
85
- const base_scale = min_font_scale +
86
- scale_factor * (max_font_scale - min_font_scale)
84
+ const base_scale = min_font_scale + scale_factor * (max_font_scale - min_font_scale)
87
85
  const label_text = data.element + (show_amounts ? data.amount.toString() : ``)
88
86
  const available_space = radius * 2 * 0.8 // 80% of bubble diameter for text
89
87
  const font_scale = get_chart_font_scale(base_scale, label_text, available_space)
@@ -109,7 +107,7 @@
109
107
  viewBox="0 0 {size} {size}"
110
108
  style:max-width="{size}px"
111
109
  {...rest}
112
- class="bubble-chart {rest.class ?? ``}"
110
+ class={[`bubble-chart`, rest.class]}
113
111
  bind:this={svg_node}
114
112
  >
115
113
  {#each bubbles as bubble (bubble.element)}
@@ -134,7 +132,8 @@
134
132
  }}
135
133
  >
136
134
  <title>
137
- {bubble.element}: {bubble.amount} {bubble.amount === 1 ? `atom` : `atoms`}
135
+ {bubble.element}: {bubble.amount}
136
+ {bubble.amount === 1 ? `atom` : `atoms`}
138
137
  </title>
139
138
  </circle>
140
139
 
@@ -154,13 +153,13 @@
154
153
  class:hovered={hovered_element === bubble.element}
155
154
  >
156
155
  <div class="bubble-label" style:color={bubble.text_color}>
157
- <span class="element-symbol" style:font-size="{14 * bubble.font_scale}px">{
158
- bubble.element
159
- }</span>
156
+ <span class="element-symbol" style:font-size="{14 * bubble.font_scale}px"
157
+ >{bubble.element}</span
158
+ >
160
159
  {#if show_amounts}
161
- <sub class="amount" style:font-size="{8 * bubble.font_scale}px">{
162
- bubble.amount
163
- }</sub>
160
+ <sub class="amount" style:font-size="{8 * bubble.font_scale}px"
161
+ >{bubble.amount}</sub
162
+ >
164
163
  {/if}
165
164
  </div>
166
165
  </foreignObject>
@@ -177,7 +176,8 @@
177
176
  .bubble.interactive {
178
177
  cursor: pointer;
179
178
  }
180
- .bubble.interactive:hover, .bubble.hovered {
179
+ .bubble.interactive:hover,
180
+ .bubble.hovered {
181
181
  filter: brightness(1.1);
182
182
  }
183
183
  .bubble.interactive:focus {
@@ -30,9 +30,7 @@
30
30
  let current_mode = $state(untrack(() => mode))
31
31
  let svg_node = $state<SVGSVGElement | null>(null)
32
32
 
33
- let Component = $derived(
34
- { pie: PieChart, bubble: BubbleChart, bar: BarChart }[current_mode],
35
- )
33
+ let Component = $derived({ pie: PieChart, bubble: BubbleChart, bar: BarChart }[current_mode])
36
34
  let parsed: CompositionType = $derived.by(() => {
37
35
  try {
38
36
  return parse_composition(composition)
@@ -46,13 +44,14 @@
46
44
 
47
45
  let context_menu = $state({ open: false, x: 0, y: 0 })
48
46
 
49
- function handle_right_click(event: MouseEvent) { // open context menu
47
+ function handle_right_click(event: MouseEvent) {
48
+ // open context menu
50
49
  event.preventDefault()
51
50
  context_menu.open = false // Close any existing context menu first
52
51
  context_menu.x = event.pageX
53
52
  context_menu.y = event.pageY
54
53
  // Use a small delay to ensure the prev context menu closes happens before opening new one
55
- setTimeout(() => context_menu.open = true, 0)
54
+ setTimeout(() => (context_menu.open = true), 0)
56
55
  }
57
56
 
58
57
  const mode_options = [
@@ -61,14 +60,9 @@
61
60
  { value: `bar`, icon: `Graph`, label: `Bar Chart` },
62
61
  ] as const
63
62
 
64
- const color_scheme_options = [
65
- { value: `Vesta`, icon: `ColorPalette`, label: `Vesta` },
66
- { value: `Jmol`, icon: `ColorPalette`, label: `Jmol` },
67
- { value: `Alloy`, icon: `ColorPalette`, label: `Alloy` },
68
- { value: `Pastel`, icon: `ColorPalette`, label: `Pastel` },
69
- { value: `Muted`, icon: `ColorPalette`, label: `Muted` },
70
- { value: `Dark Mode`, icon: `ColorPalette`, label: `Dark Mode` },
71
- ] as const
63
+ const color_scheme_options = (
64
+ [`Vesta`, `Jmol`, `Alloy`, `Pastel`, `Muted`, `Dark Mode`] as const
65
+ ).map((value) => ({ value, icon: `ColorPalette`, label: value }))
72
66
 
73
67
  const export_options = [
74
68
  { value: `copy_formula`, icon: `Copy`, label: `Copy Formula` },
@@ -89,10 +83,7 @@
89
83
  { title: sec_titles.export, options: export_options },
90
84
  ] as const
91
85
 
92
- function handle_context_menu_select(
93
- section_title: string,
94
- option: { value: string },
95
- ) {
86
+ function handle_context_menu_select(section_title: string, option: { value: string }) {
96
87
  if (section_title === sec_titles.display_mode) {
97
88
  current_mode = option.value as CompositionChartMode
98
89
  } else if (section_title === sec_titles.color_scheme) {
@@ -147,7 +138,7 @@
147
138
  aria-haspopup="menu"
148
139
  aria-expanded={context_menu.open}
149
140
  {...rest}
150
- class="composition {rest.class ?? ``}"
141
+ class={[`composition`, rest.class]}
151
142
  />
152
143
 
153
144
  {#if context_menu.open}
@@ -160,6 +151,6 @@
160
151
  on_select={handle_context_menu_select}
161
152
  position={context_menu}
162
153
  visible={context_menu.open}
163
- on_close={() => context_menu.open = false}
154
+ on_close={() => (context_menu.open = false)}
164
155
  />
165
156
  {/if}
@@ -2,15 +2,11 @@
2
2
  import type { ColorSchemeName } from '../colors'
3
3
  import { ELEMENT_COLOR_SCHEMES, luminance } from '../colors'
4
4
  import type { ElementSymbol } from '../element'
5
- import { element_data } from '../element'
5
+ import { element_by_symbol } from '../element'
6
6
  import ElementTile from '../element/ElementTile.svelte'
7
7
  import { format_num } from '../labels'
8
8
  import type { HTMLAttributes } from 'svelte/elements'
9
- import {
10
- format_oxi_state,
11
- sort_by_electronegativity,
12
- sort_by_hill_notation,
13
- } from './format'
9
+ import { format_oxi_state, sort_by_electronegativity, sort_by_hill_notation } from './format'
14
10
  import type { ElementWithOxidation, OxiComposition } from './parse'
15
11
  import { oxi_composition_to_elements, parse_formula_with_oxidation } from './parse'
16
12
 
@@ -63,15 +59,13 @@
63
59
  return sorted[0] === el1.element ? -1 : 1
64
60
  },
65
61
  }
66
- const sorted_elements = $derived(
67
- [...parsed_elements].sort(COMPARATORS[ordering]),
68
- )
62
+ const sorted_elements = $derived([...parsed_elements].sort(COMPARATORS[ordering]))
69
63
 
70
64
  let hovered_element = $state<ElementSymbol | null>(null)
71
65
  let tooltip_pos = $state({ x: 0, y: 0 })
72
66
 
73
67
  const hovered_elem_data = $derived(
74
- hovered_element ? element_data.find((el) => el.symbol === hovered_element) : null,
68
+ hovered_element ? (element_by_symbol.get(hovered_element) ?? null) : null,
75
69
  )
76
70
 
77
71
  // Format formula as plain text for clipboard: "Li2 O" or "Fe(+3)2 O(-2)3"
@@ -97,7 +91,8 @@
97
91
  if (
98
92
  !formula_el.contains(selection.anchorNode) ||
99
93
  !formula_el.contains(selection.focusNode)
100
- ) return // Selection extends outside formula, let browser handle normally
94
+ )
95
+ return // Selection extends outside formula, let browser handle normally
101
96
  event.preventDefault()
102
97
  event.clipboardData?.setData(`text/plain`, plain_text_formula)
103
98
  }
@@ -106,8 +101,8 @@
106
101
  element: ElementSymbol,
107
102
  event: MouseEvent & { currentTarget: HTMLElement },
108
103
  ) {
109
- const { left, width, top, bottom, right, height } = event.currentTarget
110
- .getBoundingClientRect()
104
+ const { left, width, top, bottom, right, height } =
105
+ event.currentTarget.getBoundingClientRect()
111
106
  hovered_element = element
112
107
 
113
108
  const positions = {
@@ -121,12 +116,7 @@
121
116
  }
122
117
  </script>
123
118
 
124
- <svelte:element
125
- this={as}
126
- {...rest}
127
- class="formula {rest.class ?? ``}"
128
- oncopy={handle_copy}
129
- >
119
+ <svelte:element this={as} {...rest} class={[`formula`, rest.class]} oncopy={handle_copy}>
130
120
  {#each sorted_elements as { element, amount, oxidation_state } (element)}
131
121
  {@const color = ELEMENT_COLOR_SCHEMES[color_scheme]?.[element] ?? `#666666`}
132
122
  {@const lum = luminance(color)}
@@ -151,14 +141,16 @@
151
141
  class:light-border={lum < 0.15}
152
142
  style:color
153
143
  >
154
- {element}</span>
155
- <span class="script-wrapper">{#if has_oxidation}
144
+ {element}</span
145
+ >
146
+ <span class="script-wrapper"
147
+ >{#if has_oxidation}
156
148
  <sup class="oxi">{format_oxi_state(oxidation_state)}</sup>
157
149
  {/if}
158
150
  {#if amount !== 1}
159
- <sub class="amt" class:no-sup={!has_oxidation}>{
160
- format_num(amount, amount_format)
161
- }</sub>
151
+ <sub class="amt" class:no-sup={!has_oxidation}
152
+ >{format_num(amount, amount_format)}</sub
153
+ >
162
154
  {/if}
163
155
  </span>
164
156
  </span>
@@ -167,8 +159,8 @@
167
159
 
168
160
  {#if hovered_elem_data}
169
161
  {@const { x, y } = tooltip_pos}
170
- {@const tile_color = ELEMENT_COLOR_SCHEMES[color_scheme]?.[hovered_elem_data.symbol] ??
171
- `#666666`}
162
+ {@const tile_color =
163
+ ELEMENT_COLOR_SCHEMES[color_scheme]?.[hovered_elem_data.symbol] ?? `#666666`}
172
164
  {@const transforms = {
173
165
  top: `translate(-50%, -100%)`,
174
166
  bottom: `translateX(-50%)`,
@@ -250,7 +242,8 @@
250
242
  .script-wrapper:empty {
251
243
  display: none;
252
244
  }
253
- .amt, .oxi {
245
+ .amt,
246
+ .oxi {
254
247
  font-size: var(--formula-script-font-size, 0.7em);
255
248
  line-height: var(--formula-script-inner-line-height, 1);
256
249
  }