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
@@ -26,6 +26,6 @@ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
26
26
  selected_color_scale_key?: string;
27
27
  on_color_scale_change?: (key: string) => void;
28
28
  };
29
- declare const ColorBar: import("svelte").Component<$$ComponentProps, {}, "title" | "color_scale" | "tick_labels" | "range" | "nice_range" | "selected_property_key" | "selected_color_scale_key">;
29
+ declare const ColorBar: import("svelte").Component<$$ComponentProps, {}, "title" | "range" | "color_scale" | "tick_labels" | "nice_range" | "selected_property_key" | "selected_color_scale_key">;
30
30
  type ColorBar = ReturnType<typeof ColorBar>;
31
31
  export default ColorBar;
@@ -1,7 +1,28 @@
1
- <script lang="ts">import { ColorBar } from './';
2
- import * as d3_sc from 'd3-scale-chromatic';
3
- import Select from 'svelte-multiselect';
4
- let { options = Object.keys(d3_sc).filter((key) => key.startsWith(`interpolate`)), value = $bindable(options[0]), selected = $bindable([]), minSelect = 1, placeholder = `Select a color scale`, colorbar = {}, ...rest } = $props();
1
+ <script lang="ts">
2
+ import { ColorBar } from './'
3
+ import * as d3_sc from 'd3-scale-chromatic'
4
+ import type { ComponentProps } from 'svelte'
5
+ import Select from 'svelte-multiselect'
6
+ import type { D3InterpolateName } from '../colors'
7
+
8
+ let {
9
+ options = Object.keys(d3_sc).filter((key) =>
10
+ key.startsWith(`interpolate`)
11
+ ) as D3InterpolateName[],
12
+ value = $bindable(options[0]),
13
+ selected = $bindable([]),
14
+ minSelect = 1,
15
+ placeholder = `Select a color scale`,
16
+ colorbar = {},
17
+ ...rest
18
+ }: Omit<ComponentProps<typeof Select>, `options`> & {
19
+ options?: D3InterpolateName[]
20
+ value?: D3InterpolateName
21
+ selected?: D3InterpolateName[]
22
+ minSelect?: number
23
+ placeholder?: string
24
+ colorbar?: ComponentProps<typeof ColorBar>
25
+ } = $props()
5
26
  </script>
6
27
 
7
28
  <Select
@@ -12,9 +33,9 @@ let { options = Object.keys(d3_sc).filter((key) => key.startsWith(`interpolate`)
12
33
  bind:selected
13
34
  {placeholder}
14
35
  liOptionStyle="padding: 3pt 6pt;"
15
- liSelectedStyle="width: 100%; background-color: transparent; pointer-events: none;"
36
+ liSelectedStyle="width: 100%; background-color: transparent;"
16
37
  ulSelectedStyle="display: contents;"
17
- inputStyle="min-width: 0;"
38
+ inputStyle="min-width: 0; width: 0; padding: 0; border: none; caret-color: transparent;"
18
39
  {...rest}
19
40
  style={`min-width: 0; ${rest.style ?? ``}`}
20
41
  >
@@ -26,7 +47,7 @@ let { options = Object.keys(d3_sc).filter((key) => key.startsWith(`interpolate`)
26
47
  tick_labels={0}
27
48
  title_side="left"
28
49
  wrapper_style="width: 100%;"
29
- title_style="width: 6em; font-size: 1.5em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: left;"
50
+ title_style="width: 6em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: left;"
30
51
  {...colorbar}
31
52
  />
32
53
  {/snippet}
@@ -1,19 +1,40 @@
1
- <script lang="ts">import { element_data } from '../element';
2
- import { format_num } from '../labels';
3
- import { ScatterPlot } from './';
4
- import { selected } from '../state.svelte';
5
- let { y, x_axis = {}, y_axis = {}, y_unit = ``, tooltip_point = $bindable(null), hovered = $bindable(false), ...rest } = $props();
6
- // update tooltip on hover element tile
7
- $effect.pre(() => {
1
+ <script lang="ts">
2
+ import { element_data } from '../element'
3
+ import { format_num } from '../labels'
4
+ import { sanitize_html } from '../sanitize'
5
+ import type { AxisConfig, InternalPoint } from './'
6
+ import { ScatterPlot } from './'
7
+ import { selected } from '../state.svelte'
8
+ import type { ComponentProps } from 'svelte'
9
+
10
+ let {
11
+ y,
12
+ x_axis = {},
13
+ y_axis = {},
14
+ y_unit = ``,
15
+ tooltip_point = $bindable(null),
16
+ hovered = $bindable(false),
17
+ ...rest
18
+ }: ComponentProps<typeof ScatterPlot> & {
19
+ y: number[] // array of length 118 (one value for each element)
20
+ x_axis?: AxisConfig
21
+ y_axis?: AxisConfig
22
+ y_unit?: string | null
23
+ tooltip_point?: InternalPoint | null
24
+ hovered?: boolean
25
+ } = $props()
26
+
27
+ // update tooltip on hover element tile
28
+ $effect.pre(() => {
8
29
  if (selected.element?.number && !hovered) {
9
- tooltip_point = {
10
- x: selected.element.number,
11
- y: y[selected.element.number - 1],
12
- series_idx: 0,
13
- point_idx: selected.element.number - 1,
14
- };
30
+ tooltip_point = {
31
+ x: selected.element.number,
32
+ y: y[selected.element.number - 1],
33
+ series_idx: 0,
34
+ point_idx: selected.element.number - 1,
35
+ }
15
36
  }
16
- });
37
+ })
17
38
  </script>
18
39
 
19
40
  <ScatterPlot
@@ -35,7 +56,8 @@ $effect.pre(() => {
35
56
  {...rest}
36
57
  >
37
58
  {#snippet tooltip({ x, y })}
38
- <strong>{x} - {element_data[x - 1]?.name}</strong><br />
39
- {y_axis.label} = {format_num(y, y_axis.format ?? `~s`)}{y_unit ?? ``}
59
+ {@const elem = element_data[x - 1]}
60
+ <strong>{elem ? `${x} ${elem.symbol} - ${elem.name}` : `Element ${x}`}</strong><br />
61
+ {@html sanitize_html(y_axis.label || `Value`)}: {format_num(y, y_axis.format ?? `~s`)}{y_unit ?? ``}
40
62
  {/snippet}
41
63
  </ScatterPlot>
@@ -1,92 +1,123 @@
1
- <script lang="ts">// FillArea component for rendering fill-between regions in ScatterPlot
2
- // Supports gradients, hover/click interactions, and animated path transitions
3
- import { interpolatePath } from 'd3-interpolate-path';
4
- import { untrack } from 'svelte';
5
- import { Tween } from 'svelte/motion';
6
- let { region, region_idx, path, clip_path_id, x_scale_fn, y_scale_fn, hovered_region = null, on_click, on_hover, tween_options, } = $props();
7
- // Stable instance ID for gradient uniqueness (generated once per component instance)
8
- const instance_id = crypto.randomUUID().slice(0, 8);
9
- let gradient_id = $derived(`fill-gradient-${region.id ?? region_idx}-${instance_id}`);
10
- // Effective styling based on hover state
11
- let is_hovered = $derived(hovered_region === region_idx);
12
- let effective_opacity = $derived(is_hovered && region.hover_style?.fill_opacity != null
13
- ? region.hover_style.fill_opacity
14
- : region.fill_opacity ?? 0.3);
15
- let effective_fill = $derived(is_hovered && region.hover_style?.fill
16
- ? region.hover_style.fill
17
- : region.fill ?? `steelblue`);
18
- let path_fill = $derived(typeof effective_fill === `object` ? `url(#${gradient_id})` : effective_fill);
19
- let is_clickable = $derived(Boolean(on_click || region.on_click));
20
- let cursor_style = $derived(region.hover_style?.cursor ?? (is_clickable ? `pointer` : `default`));
21
- // Path animation using Tween - create once, update target via effect
22
- // untrack() explicitly captures initial values (intentional - config set once at mount)
23
- const tweened_path = new Tween(untrack(() => path), untrack(() => ({
24
- duration: 300,
25
- interpolate: interpolatePath,
26
- ...tween_options,
27
- })));
28
- $effect.pre(() => {
29
- tweened_path.target = path;
30
- });
31
- // Emit helpers - call both region-level and prop-level handlers when distinct
32
- const emit_hover = (evt) => {
33
- region.on_hover?.(evt);
34
- if (on_hover !== region.on_hover)
35
- on_hover?.(evt);
36
- };
37
- const emit_click = (evt) => {
38
- region.on_click?.(evt);
39
- if (on_click !== region.on_click)
40
- on_click?.(evt);
41
- };
42
- // Event handlers
43
- const handle_mouse_enter = (event) => emit_hover(construct_event(event));
44
- const handle_mouse_leave = () => emit_hover(null);
45
- const handle_mouse_move = (event) => is_hovered && emit_hover(construct_event(event));
46
- const handle_click = (event) => emit_click(construct_event(event));
47
- // Keyboard handler - creates event with default coordinates since no mouse position
48
- function handle_keydown(event) {
1
+ <script lang="ts">
2
+ // FillArea component for rendering fill-between regions in ScatterPlot
3
+ // Supports gradients, hover/click interactions, and animated path transitions
4
+ import { interpolatePath } from 'd3-interpolate-path'
5
+ import { untrack } from 'svelte'
6
+ import { Tween } from 'svelte/motion'
7
+ import type {
8
+ FillGradient,
9
+ FillHandlerEvent,
10
+ FillRegion,
11
+ TweenedOptions,
12
+ } from './types'
13
+
14
+ let {
15
+ region,
16
+ region_idx,
17
+ path,
18
+ clip_path_id,
19
+ x_scale_fn,
20
+ y_scale_fn,
21
+ hovered_region = null,
22
+ on_click,
23
+ on_hover,
24
+ tween_options,
25
+ }: {
26
+ region: FillRegion
27
+ region_idx: number
28
+ path: string
29
+ clip_path_id: string
30
+ x_scale_fn: ((x: number) => number) & { invert?: (y: number) => number | Date }
31
+ y_scale_fn: ((y: number) => number) & { invert?: (y: number) => number }
32
+ hovered_region?: number | null
33
+ on_click?: (event: FillHandlerEvent) => void
34
+ on_hover?: (event: FillHandlerEvent | null) => void
35
+ tween_options?: TweenedOptions<string>
36
+ } = $props()
37
+
38
+ // Stable instance ID for gradient uniqueness (generated once per component instance)
39
+ const instance_id = crypto.randomUUID().slice(0, 8)
40
+ let gradient_id = $derived(
41
+ `fill-gradient-${region.id ?? region_idx}-${instance_id}`,
42
+ )
43
+
44
+ // Effective styling based on hover state
45
+ let is_hovered = $derived(hovered_region === region_idx)
46
+ let effective_opacity = $derived(
47
+ is_hovered && region.hover_style?.fill_opacity != null
48
+ ? region.hover_style.fill_opacity
49
+ : region.fill_opacity ?? 0.3,
50
+ )
51
+ let effective_fill = $derived(
52
+ is_hovered && region.hover_style?.fill
53
+ ? region.hover_style.fill
54
+ : region.fill ?? `steelblue`,
55
+ )
56
+ let path_fill = $derived(
57
+ typeof effective_fill === `object` ? `url(#${gradient_id})` : effective_fill,
58
+ )
59
+ let is_clickable = $derived(Boolean(on_click || region.on_click))
60
+ let cursor_style = $derived(
61
+ region.hover_style?.cursor ?? (is_clickable ? `pointer` : `default`),
62
+ )
63
+
64
+ // Path animation using Tween - create once, update target via effect
65
+ // untrack() explicitly captures initial values (intentional - config set once at mount)
66
+ const tweened_path = new Tween(
67
+ untrack(() => path),
68
+ untrack(() => ({
69
+ duration: 300,
70
+ interpolate: interpolatePath,
71
+ ...tween_options,
72
+ })),
73
+ )
74
+
75
+ $effect.pre(() => {
76
+ tweened_path.target = path
77
+ })
78
+
79
+ // Emit helpers - call both region-level and prop-level handlers when distinct
80
+ const emit_hover = (evt: FillHandlerEvent | null) => {
81
+ region.on_hover?.(evt)
82
+ if (on_hover !== region.on_hover) on_hover?.(evt)
83
+ }
84
+ const emit_click = (evt: FillHandlerEvent) => {
85
+ region.on_click?.(evt)
86
+ if (on_click !== region.on_click) on_click?.(evt)
87
+ }
88
+
89
+ // Event handlers
90
+ const handle_mouse_enter = (event: MouseEvent) => emit_hover(construct_event(event))
91
+ const handle_mouse_leave = () => emit_hover(null)
92
+ const handle_mouse_move = (event: MouseEvent) =>
93
+ is_hovered && emit_hover(construct_event(event))
94
+ const handle_click = (event: MouseEvent) => emit_click(construct_event(event))
95
+
96
+ // Keyboard handler - creates event with default coordinates since no mouse position
97
+ function handle_keydown(event: KeyboardEvent) {
49
98
  if (event.key === `Enter` || event.key === ` `) {
50
- event.preventDefault();
51
- if (!is_clickable)
52
- return;
53
- // For keyboard activation, use center of element or default coordinates
54
- const target = event.currentTarget;
55
- const rect = target.ownerSVGElement?.getBoundingClientRect();
56
- const element_rect = target.getBoundingClientRect();
57
- // Use center of the fill region element
58
- const px = element_rect
59
- ? (element_rect.left + element_rect.right) / 2 - (rect?.left ?? 0)
60
- : 0;
61
- const py = element_rect
62
- ? (element_rect.top + element_rect.bottom) / 2 - (rect?.top ?? 0)
63
- : 0;
64
- const raw_x = x_scale_fn.invert?.(px) ?? 0;
65
- const data_x = raw_x instanceof Date ? raw_x.getTime() : raw_x;
66
- const data_y = y_scale_fn.invert?.(py) ?? 0;
67
- emit_click({
68
- event,
69
- region_idx,
70
- region_id: region.id,
71
- x: data_x,
72
- y: data_y,
73
- px,
74
- py,
75
- label: region.label,
76
- metadata: region.metadata,
77
- });
78
- }
79
- }
80
- // Construct FillHandlerEvent from MouseEvent
81
- function construct_event(event) {
82
- const rect = event.currentTarget.ownerSVGElement
83
- ?.getBoundingClientRect();
84
- const px = event.clientX - (rect?.left ?? 0);
85
- const py = event.clientY - (rect?.top ?? 0);
86
- const raw_x = x_scale_fn.invert?.(px) ?? 0;
87
- const data_x = raw_x instanceof Date ? raw_x.getTime() : raw_x;
88
- const data_y = y_scale_fn.invert?.(py) ?? 0;
89
- return {
99
+ event.preventDefault()
100
+ if (!is_clickable) return
101
+
102
+ // For keyboard activation, use center of element or default coordinates
103
+ const target = event.currentTarget
104
+ if (!(target instanceof SVGElement)) return
105
+ const rect = target.ownerSVGElement?.getBoundingClientRect()
106
+ const element_rect = target.getBoundingClientRect()
107
+
108
+ // Use center of the fill region element
109
+ const px = element_rect
110
+ ? (element_rect.left + element_rect.right) / 2 - (rect?.left ?? 0)
111
+ : 0
112
+ const py = element_rect
113
+ ? (element_rect.top + element_rect.bottom) / 2 - (rect?.top ?? 0)
114
+ : 0
115
+
116
+ const raw_x = x_scale_fn.invert?.(px) ?? 0
117
+ const data_x = raw_x instanceof Date ? raw_x.getTime() : raw_x
118
+ const data_y = y_scale_fn.invert?.(py) ?? 0
119
+
120
+ emit_click({
90
121
  event,
91
122
  region_idx,
92
123
  region_id: region.id,
@@ -96,10 +127,39 @@ function construct_event(event) {
96
127
  py,
97
128
  label: region.label,
98
129
  metadata: region.metadata,
99
- };
100
- }
101
- // Type guard for gradient fill
102
- const is_gradient = (fill) => typeof fill === `object` && fill !== null && `type` in fill;
130
+ })
131
+ }
132
+ }
133
+
134
+ // Construct FillHandlerEvent from MouseEvent
135
+ function construct_event(event: MouseEvent): FillHandlerEvent {
136
+ const current = event.currentTarget
137
+ const rect = (current instanceof SVGElement ? current.ownerSVGElement : null)
138
+ ?.getBoundingClientRect()
139
+ const px = event.clientX - (rect?.left ?? 0)
140
+ const py = event.clientY - (rect?.top ?? 0)
141
+ const raw_x = x_scale_fn.invert?.(px) ?? 0
142
+ const data_x = raw_x instanceof Date ? raw_x.getTime() : raw_x
143
+ const data_y = y_scale_fn.invert?.(py) ?? 0
144
+
145
+ return {
146
+ event,
147
+ region_idx,
148
+ region_id: region.id,
149
+ x: data_x,
150
+ y: data_y,
151
+ px,
152
+ py,
153
+ label: region.label,
154
+ metadata: region.metadata,
155
+ }
156
+ }
157
+
158
+ // Type guard for gradient fill
159
+ const is_gradient = (
160
+ fill: string | FillGradient | undefined,
161
+ ): fill is FillGradient =>
162
+ typeof fill === `object` && fill !== null && `type` in fill
103
163
  </script>
104
164
 
105
165
  <!-- svelte-ignore a11y_no_noninteractive_element_interactions -->