matterviz 0.3.2 → 0.3.4

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 (281) hide show
  1. package/dist/EmptyState.svelte +10 -2
  2. package/dist/FilePicker.svelte +123 -82
  3. package/dist/Icon.svelte +18 -12
  4. package/dist/MillerIndexInput.svelte +27 -21
  5. package/dist/api/optimade.js +6 -6
  6. package/dist/app.css +216 -207
  7. package/dist/brillouin/BrillouinZone.svelte +292 -149
  8. package/dist/brillouin/BrillouinZone.svelte.d.ts +1 -1
  9. package/dist/brillouin/BrillouinZoneControls.svelte +32 -5
  10. package/dist/brillouin/BrillouinZoneExportPane.svelte +69 -42
  11. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
  12. package/dist/brillouin/BrillouinZoneInfoPane.svelte +99 -68
  13. package/dist/brillouin/BrillouinZoneScene.svelte +275 -163
  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 +162 -27
  18. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +451 -281
  19. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +2148 -1642
  20. package/dist/chempot-diagram/ChemPotScene3D.svelte +8 -5
  21. package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
  22. package/dist/chempot-diagram/async-compute.svelte.js +77 -0
  23. package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
  24. package/dist/chempot-diagram/chempot-worker.js +11 -0
  25. package/dist/chempot-diagram/color.js +1 -2
  26. package/dist/chempot-diagram/compute.d.ts +10 -0
  27. package/dist/chempot-diagram/compute.js +250 -88
  28. package/dist/chempot-diagram/index.d.ts +2 -1
  29. package/dist/chempot-diagram/index.js +2 -1
  30. package/dist/chempot-diagram/temperature.js +8 -9
  31. package/dist/chempot-diagram/types.d.ts +3 -0
  32. package/dist/chempot-diagram/types.js +1 -0
  33. package/dist/colors/index.d.ts +1 -1
  34. package/dist/colors/index.js +5 -3
  35. package/dist/composition/BarChart.svelte +128 -55
  36. package/dist/composition/BubbleChart.svelte +102 -49
  37. package/dist/composition/Composition.svelte +100 -79
  38. package/dist/composition/Formula.svelte +108 -62
  39. package/dist/composition/FormulaFilter.svelte +665 -537
  40. package/dist/composition/PieChart.svelte +183 -108
  41. package/dist/composition/format.d.ts +5 -0
  42. package/dist/composition/format.js +20 -3
  43. package/dist/composition/parse.js +14 -9
  44. package/dist/convex-hull/ConvexHull.svelte +93 -40
  45. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -1
  46. package/dist/convex-hull/ConvexHull2D.svelte +549 -360
  47. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  48. package/dist/convex-hull/ConvexHull3D.svelte +1296 -827
  49. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  50. package/dist/convex-hull/ConvexHull4D.svelte +1004 -688
  51. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  52. package/dist/convex-hull/ConvexHullControls.svelte +115 -28
  53. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +1 -1
  54. package/dist/convex-hull/ConvexHullInfoPane.svelte +29 -3
  55. package/dist/convex-hull/ConvexHullStats.svelte +425 -328
  56. package/dist/convex-hull/ConvexHullTooltip.svelte +40 -16
  57. package/dist/convex-hull/GasPressureControls.svelte +104 -61
  58. package/dist/convex-hull/StructurePopup.svelte +25 -4
  59. package/dist/convex-hull/TemperatureSlider.svelte +45 -25
  60. package/dist/convex-hull/barycentric-coords.js +13 -7
  61. package/dist/convex-hull/demo-temperature.js +8 -4
  62. package/dist/convex-hull/gas-thermodynamics.js +17 -12
  63. package/dist/convex-hull/helpers.d.ts +9 -0
  64. package/dist/convex-hull/helpers.js +77 -34
  65. package/dist/convex-hull/thermodynamics.js +61 -56
  66. package/dist/convex-hull/types.d.ts +9 -14
  67. package/dist/convex-hull/types.js +0 -17
  68. package/dist/coordination/CoordinationBarPlot.svelte +227 -154
  69. package/dist/element/BohrAtom.svelte +55 -12
  70. package/dist/element/ElementHeading.svelte +7 -2
  71. package/dist/element/ElementPhoto.svelte +15 -9
  72. package/dist/element/ElementStats.svelte +10 -4
  73. package/dist/element/ElementTile.svelte +137 -73
  74. package/dist/element/Nucleus.svelte +39 -11
  75. package/dist/element/data.js +1 -1
  76. package/dist/feedback/ClickFeedback.svelte +16 -5
  77. package/dist/feedback/DragOverlay.svelte +10 -2
  78. package/dist/feedback/Spinner.svelte +4 -2
  79. package/dist/feedback/StatusMessage.svelte +8 -2
  80. package/dist/fermi-surface/FermiSlice.svelte +118 -88
  81. package/dist/fermi-surface/FermiSurface.svelte +328 -187
  82. package/dist/fermi-surface/FermiSurface.svelte.d.ts +1 -1
  83. package/dist/fermi-surface/FermiSurfaceControls.svelte +113 -46
  84. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
  85. package/dist/fermi-surface/FermiSurfaceScene.svelte +535 -342
  86. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
  87. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +14 -5
  88. package/dist/fermi-surface/compute.js +16 -20
  89. package/dist/fermi-surface/parse.js +24 -14
  90. package/dist/fermi-surface/symmetry.js +2 -7
  91. package/dist/fermi-surface/types.d.ts +3 -5
  92. package/dist/heatmap-matrix/HeatmapMatrix.svelte +1019 -765
  93. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +1 -1
  94. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +76 -22
  95. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +2 -3
  96. package/dist/icons.js +47 -0
  97. package/dist/index.d.ts +2 -1
  98. package/dist/index.js +2 -1
  99. package/dist/io/decompress.js +1 -1
  100. package/dist/io/export.d.ts +3 -0
  101. package/dist/io/export.js +129 -143
  102. package/dist/io/is-binary.js +2 -3
  103. package/dist/io/url-drop.js +1 -2
  104. package/dist/isosurface/Isosurface.svelte +202 -148
  105. package/dist/isosurface/IsosurfaceControls.svelte +46 -28
  106. package/dist/isosurface/parse.js +34 -29
  107. package/dist/isosurface/slice.js +5 -10
  108. package/dist/isosurface/types.d.ts +2 -1
  109. package/dist/isosurface/types.js +61 -12
  110. package/dist/labels.js +11 -8
  111. package/dist/layout/FullscreenToggle.svelte +11 -2
  112. package/dist/layout/InfoCard.svelte +38 -6
  113. package/dist/layout/InfoTag.svelte +63 -32
  114. package/dist/layout/PropertyFilter.svelte +82 -37
  115. package/dist/layout/SettingsSection.svelte +85 -55
  116. package/dist/layout/SubpageGrid.svelte +10 -2
  117. package/dist/layout/json-tree/JsonNode.svelte +183 -138
  118. package/dist/layout/json-tree/JsonTree.svelte +499 -413
  119. package/dist/layout/json-tree/JsonValue.svelte +127 -99
  120. package/dist/layout/json-tree/utils.js +4 -2
  121. package/dist/marching-cubes.js +25 -2
  122. package/dist/math.d.ts +13 -17
  123. package/dist/math.js +133 -67
  124. package/dist/overlays/ContextMenu.svelte +65 -40
  125. package/dist/overlays/DraggablePane.svelte +211 -139
  126. package/dist/periodic-table/PeriodicTable.svelte +278 -145
  127. package/dist/periodic-table/PeriodicTableControls.svelte +178 -128
  128. package/dist/periodic-table/PropertySelect.svelte +25 -7
  129. package/dist/periodic-table/TableInset.svelte +8 -3
  130. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +446 -309
  131. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +1 -1
  132. package/dist/phase-diagram/PhaseDiagramControls.svelte +102 -43
  133. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +1 -1
  134. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +63 -40
  135. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +71 -28
  136. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +1 -1
  137. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +158 -101
  138. package/dist/phase-diagram/TdbInfoPanel.svelte +28 -4
  139. package/dist/phase-diagram/build-diagram.js +9 -9
  140. package/dist/phase-diagram/colors.js +1 -3
  141. package/dist/phase-diagram/parse.js +10 -9
  142. package/dist/phase-diagram/svg-to-diagram.js +53 -49
  143. package/dist/phase-diagram/utils.d.ts +1 -0
  144. package/dist/phase-diagram/utils.js +80 -25
  145. package/dist/plot/AxisLabel.svelte +28 -3
  146. package/dist/plot/BarPlot.svelte +1182 -734
  147. package/dist/plot/BarPlot.svelte.d.ts +2 -2
  148. package/dist/plot/BarPlotControls.svelte +31 -5
  149. package/dist/plot/BarPlotControls.svelte.d.ts +1 -1
  150. package/dist/plot/ColorBar.svelte +479 -329
  151. package/dist/plot/ColorScaleSelect.svelte +27 -6
  152. package/dist/plot/ElementScatter.svelte +36 -15
  153. package/dist/plot/FillArea.svelte +152 -95
  154. package/dist/plot/Histogram.svelte +934 -571
  155. package/dist/plot/Histogram.svelte.d.ts +1 -1
  156. package/dist/plot/HistogramControls.svelte +53 -9
  157. package/dist/plot/HistogramControls.svelte.d.ts +1 -1
  158. package/dist/plot/InteractiveAxisLabel.svelte +34 -11
  159. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +1 -1
  160. package/dist/plot/Line.svelte +63 -28
  161. package/dist/plot/PlotControls.svelte +157 -114
  162. package/dist/plot/PlotControls.svelte.d.ts +1 -1
  163. package/dist/plot/PlotLegend.svelte +174 -91
  164. package/dist/plot/PlotTooltip.svelte +45 -6
  165. package/dist/plot/PortalSelect.svelte +175 -147
  166. package/dist/plot/ReferenceLine.svelte +76 -22
  167. package/dist/plot/ReferenceLine3D.svelte +132 -107
  168. package/dist/plot/ReferencePlane.svelte +146 -121
  169. package/dist/plot/ScatterPlot.svelte +1681 -1091
  170. package/dist/plot/ScatterPlot.svelte.d.ts +2 -2
  171. package/dist/plot/ScatterPlot3D.svelte +256 -131
  172. package/dist/plot/ScatterPlot3D.svelte.d.ts +2 -2
  173. package/dist/plot/ScatterPlot3DControls.svelte +113 -63
  174. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +2 -1
  175. package/dist/plot/ScatterPlot3DScene.svelte +608 -403
  176. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +2 -2
  177. package/dist/plot/ScatterPlotControls.svelte +65 -25
  178. package/dist/plot/ScatterPlotControls.svelte.d.ts +1 -1
  179. package/dist/plot/ScatterPoint.svelte +98 -26
  180. package/dist/plot/ScatterPoint.svelte.d.ts +1 -0
  181. package/dist/plot/SpacegroupBarPlot.svelte +142 -85
  182. package/dist/plot/Surface3D.svelte +159 -108
  183. package/dist/plot/ZeroLines.svelte +55 -3
  184. package/dist/plot/ZoomRect.svelte +4 -2
  185. package/dist/plot/axis-utils.js +1 -3
  186. package/dist/plot/data-cleaning.js +12 -28
  187. package/dist/plot/data-transform.js +2 -1
  188. package/dist/plot/fill-utils.js +2 -0
  189. package/dist/plot/layout.d.ts +4 -1
  190. package/dist/plot/layout.js +33 -14
  191. package/dist/plot/reference-line.d.ts +2 -2
  192. package/dist/plot/reference-line.js +7 -5
  193. package/dist/plot/scales.js +24 -36
  194. package/dist/plot/types.d.ts +11 -23
  195. package/dist/plot/types.js +6 -11
  196. package/dist/plot/utils/label-placement.d.ts +32 -15
  197. package/dist/plot/utils/label-placement.js +227 -66
  198. package/dist/plot/utils/series-visibility.js +2 -3
  199. package/dist/rdf/RdfPlot.svelte +143 -91
  200. package/dist/rdf/calc-rdf.js +4 -5
  201. package/dist/sanitize.d.ts +4 -0
  202. package/dist/sanitize.js +107 -0
  203. package/dist/settings.d.ts +18 -6
  204. package/dist/settings.js +46 -16
  205. package/dist/spectral/Bands.svelte +632 -453
  206. package/dist/spectral/BandsAndDos.svelte +90 -49
  207. package/dist/spectral/BrillouinBandsDos.svelte +151 -93
  208. package/dist/spectral/Dos.svelte +389 -258
  209. package/dist/spectral/helpers.js +55 -43
  210. package/dist/state.svelte.d.ts +1 -1
  211. package/dist/state.svelte.js +3 -2
  212. package/dist/structure/Arrow.svelte +59 -20
  213. package/dist/structure/AtomLegend.svelte +215 -134
  214. package/dist/structure/Bond.svelte +73 -47
  215. package/dist/structure/CanvasTooltip.svelte +10 -2
  216. package/dist/structure/CellSelect.svelte +72 -45
  217. package/dist/structure/Cylinder.svelte +33 -17
  218. package/dist/structure/Lattice.svelte +88 -33
  219. package/dist/structure/Structure.svelte +1063 -797
  220. package/dist/structure/Structure.svelte.d.ts +1 -1
  221. package/dist/structure/StructureControls.svelte +349 -118
  222. package/dist/structure/StructureExportPane.svelte +124 -89
  223. package/dist/structure/StructureExportPane.svelte.d.ts +1 -1
  224. package/dist/structure/StructureInfoPane.svelte +304 -237
  225. package/dist/structure/StructureScene.svelte +879 -443
  226. package/dist/structure/StructureScene.svelte.d.ts +15 -7
  227. package/dist/structure/atom-properties.js +8 -8
  228. package/dist/structure/bonding.js +6 -7
  229. package/dist/structure/export.js +14 -29
  230. package/dist/structure/ferrox-wasm.js +1 -1
  231. package/dist/structure/index.d.ts +13 -3
  232. package/dist/structure/index.js +83 -23
  233. package/dist/structure/measure.d.ts +2 -2
  234. package/dist/structure/measure.js +4 -44
  235. package/dist/structure/parse.js +113 -141
  236. package/dist/structure/partial-occupancy.js +7 -10
  237. package/dist/structure/pbc.d.ts +1 -0
  238. package/dist/structure/pbc.js +16 -6
  239. package/dist/structure/supercell.d.ts +2 -2
  240. package/dist/structure/supercell.js +12 -22
  241. package/dist/structure/validation.js +1 -2
  242. package/dist/symmetry/SymmetryStats.svelte +84 -41
  243. package/dist/symmetry/WyckoffTable.svelte +26 -6
  244. package/dist/symmetry/cell-transform.js +5 -3
  245. package/dist/symmetry/index.js +8 -7
  246. package/dist/symmetry/spacegroups.js +148 -148
  247. package/dist/table/HeatmapTable.svelte +790 -554
  248. package/dist/table/HeatmapTable.svelte.d.ts +1 -1
  249. package/dist/table/ToggleMenu.svelte +125 -92
  250. package/dist/table/index.js +2 -4
  251. package/dist/theme/ThemeControl.svelte +21 -12
  252. package/dist/time.js +4 -1
  253. package/dist/tooltip/TooltipContent.svelte +33 -8
  254. package/dist/trajectory/Trajectory.svelte +758 -558
  255. package/dist/trajectory/TrajectoryError.svelte +14 -3
  256. package/dist/trajectory/TrajectoryExportPane.svelte +137 -83
  257. package/dist/trajectory/TrajectoryInfoPane.svelte +272 -143
  258. package/dist/trajectory/extract.js +10 -26
  259. package/dist/trajectory/format-detect.js +5 -5
  260. package/dist/trajectory/frame-reader.d.ts +1 -1
  261. package/dist/trajectory/frame-reader.js +5 -12
  262. package/dist/trajectory/helpers.d.ts +0 -1
  263. package/dist/trajectory/helpers.js +2 -17
  264. package/dist/trajectory/index.js +14 -12
  265. package/dist/trajectory/parse/ase.js +5 -4
  266. package/dist/trajectory/parse/hdf5.js +26 -18
  267. package/dist/trajectory/parse/index.js +13 -18
  268. package/dist/trajectory/parse/lammps.js +17 -7
  269. package/dist/trajectory/parse/vasp.js +5 -2
  270. package/dist/trajectory/parse/xyz.js +8 -7
  271. package/dist/trajectory/plotting.js +13 -8
  272. package/dist/utils.d.ts +1 -0
  273. package/dist/utils.js +13 -0
  274. package/dist/xrd/XrdPlot.svelte +337 -247
  275. package/dist/xrd/broadening.js +14 -9
  276. package/dist/xrd/calc-xrd.js +12 -18
  277. package/dist/xrd/parse.d.ts +1 -1
  278. package/dist/xrd/parse.js +17 -17
  279. package/package.json +99 -103
  280. package/readme.md +1 -1
  281. /package/dist/theme/{themes.js → themes.mjs} +0 -0
@@ -3,6 +3,6 @@ import type { ConvexHullEntry, HighlightStyle } from './types';
3
3
  type $$ComponentProps = BaseConvexHullProps<ConvexHullEntry> & Hull3DProps & {
4
4
  highlight_style?: HighlightStyle;
5
5
  };
6
- declare const ConvexHull4D: import("svelte").Component<$$ComponentProps, {}, "temperature" | "color_scale" | "fullscreen" | "show_hull_faces" | "hull_face_opacity" | "hull_face_color_mode" | "color_mode" | "show_stable" | "show_unstable" | "show_stable_labels" | "show_unstable_labels" | "max_hull_dist_show_phases" | "max_hull_dist_show_labels" | "info_pane_open" | "legend_pane_open" | "wrapper" | "energy_source_mode" | "stable_entries" | "unstable_entries" | "phase_stats" | "highlighted_entries" | "selected_entry" | "gas_pressures">;
6
+ declare const ConvexHull4D: import("svelte").Component<$$ComponentProps, {}, "temperature" | "fullscreen" | "show_hull_faces" | "hull_face_opacity" | "hull_face_color_mode" | "color_mode" | "color_scale" | "show_stable" | "show_unstable" | "show_stable_labels" | "show_unstable_labels" | "max_hull_dist_show_phases" | "max_hull_dist_show_labels" | "info_pane_open" | "legend_pane_open" | "wrapper" | "energy_source_mode" | "stable_entries" | "unstable_entries" | "phase_stats" | "highlighted_entries" | "selected_entry" | "gas_pressures">;
7
7
  type ConvexHull4D = ReturnType<typeof ConvexHull4D>;
8
8
  export default ConvexHull4D;
@@ -1,28 +1,119 @@
1
- <script lang="ts">import { format_num } from '../labels';
2
- import DraggablePane from '../overlays/DraggablePane.svelte';
3
- import { ColorScaleSelect } from '../plot';
4
- import { tooltip } from 'svelte-multiselect';
5
- import { HULL_FACE_COLOR_MODES } from './types';
6
- // Face color mode display labels and tooltips
7
- const FACE_COLOR_MODES = {
8
- uniform: { label: `Uniform`, tip: `Single uniform color for all faces` },
9
- formation_energy: {
1
+ <script lang="ts">
2
+ import type { D3InterpolateName } from '../colors'
3
+ import { format_num } from '../labels'
4
+ import DraggablePane from '../overlays/DraggablePane.svelte'
5
+ import { sanitize_html } from '../sanitize'
6
+ import { ColorScaleSelect } from '../plot'
7
+ import type { ComponentProps } from 'svelte'
8
+ import { tooltip } from 'svelte-multiselect'
9
+ import type { HTMLAttributes } from 'svelte/elements'
10
+ import type {
11
+ ConvexHullControlsType,
12
+ ConvexHullEntry,
13
+ HullFaceColorMode,
14
+ } from './types'
15
+ import { HULL_FACE_COLOR_MODES } from './types'
16
+
17
+ interface CameraState {
18
+ elevation?: number // Elevation angle in degrees (for ternary)
19
+ azimuth?: number // Azimuth angle in degrees (for ternary)
20
+ rotation_x?: number // X rotation in radians (for quaternary)
21
+ rotation_y?: number // Y rotation in radians (for quaternary)
22
+ zoom: number
23
+ center_x: number
24
+ center_y: number
25
+ }
26
+
27
+ // Face color mode display labels and tooltips
28
+ const FACE_COLOR_MODES: Record<HullFaceColorMode, { label: string; tip: string }> =
29
+ {
30
+ uniform: { label: `Uniform`, tip: `Single uniform color for all faces` },
31
+ formation_energy: {
10
32
  label: `Energy`,
11
33
  tip: `Color by average formation energy of face vertices`,
12
- },
13
- dominant_element: {
34
+ },
35
+ dominant_element: {
14
36
  label: `Element`,
15
37
  tip: `Color by element with highest concentration at face centroid`,
16
- },
17
- facet_index: { label: `Index`, tip: `Distinct categorical color per facet` },
18
- };
19
- let { color_mode = $bindable(`stability`), color_scale = $bindable(`interpolateViridis`), show_stable = $bindable(true), show_unstable = $bindable(true), show_stable_labels = $bindable(true), show_unstable_labels = $bindable(false), show_hull_faces = undefined, on_hull_faces_change, hull_face_color = `#0072B2`, on_hull_face_color_change, hull_face_opacity = $bindable(0.03), on_hull_face_opacity_change, hull_face_color_mode = `uniform`, on_hull_face_color_mode_change, max_hull_dist_show_phases = $bindable(0), max_hull_dist_show_labels = $bindable(0.1), max_hull_dist_in_data = 0.5, energy_source_mode = $bindable(`precomputed`), has_precomputed_hull = false, can_compute_hull = false, has_precomputed_e_form = false, can_compute_e_form = false, stable_entries, unstable_entries, camera, merged_controls, controls_open = $bindable(false), toggle_props = {}, pane_props = {}, ...rest } = $props();
20
- // Focus the multiselect input next to the "Color scale" label
21
- function focus_multiselect(evt) {
22
- ;
23
- evt.currentTarget.nextElementSibling
24
- ?.querySelector(`input`)?.focus();
25
- }
38
+ },
39
+ facet_index: { label: `Index`, tip: `Distinct categorical color per facet` },
40
+ }
41
+
42
+ let {
43
+ color_mode = $bindable(`stability`),
44
+ color_scale = $bindable(`interpolateViridis`),
45
+ show_stable = $bindable(true),
46
+ show_unstable = $bindable(true),
47
+ show_stable_labels = $bindable(true),
48
+ show_unstable_labels = $bindable(false),
49
+ show_hull_faces = undefined,
50
+ on_hull_faces_change,
51
+ hull_face_color = `#0072B2`,
52
+ on_hull_face_color_change,
53
+ hull_face_opacity = $bindable(0.03),
54
+ on_hull_face_opacity_change,
55
+ hull_face_color_mode = `uniform` as HullFaceColorMode,
56
+ on_hull_face_color_mode_change,
57
+ max_hull_dist_show_phases = $bindable(0),
58
+ max_hull_dist_show_labels = $bindable(0.1),
59
+ max_hull_dist_in_data = 0.5,
60
+ energy_source_mode = $bindable(`precomputed`),
61
+ has_precomputed_hull = false,
62
+ can_compute_hull = false,
63
+ has_precomputed_e_form = false,
64
+ can_compute_e_form = false,
65
+ stable_entries,
66
+ unstable_entries,
67
+ camera,
68
+ merged_controls,
69
+ controls_open = $bindable(false),
70
+ toggle_props = {},
71
+ pane_props = {},
72
+ ...rest
73
+ }: Omit<HTMLAttributes<HTMLDivElement>, `onclose`> & {
74
+ // Display controls
75
+ color_mode?: `stability` | `energy`
76
+ color_scale?: D3InterpolateName
77
+ show_stable?: boolean
78
+ show_unstable?: boolean
79
+ show_stable_labels?: boolean
80
+ show_unstable_labels?: boolean
81
+ // 3D specific controls
82
+ show_hull_faces?: boolean
83
+ on_hull_faces_change?: (value: boolean) => void
84
+ hull_face_color?: string
85
+ on_hull_face_color_change?: (value: string) => void
86
+ hull_face_opacity?: number
87
+ on_hull_face_opacity_change?: (value: number) => void
88
+ hull_face_color_mode?: HullFaceColorMode
89
+ on_hull_face_color_mode_change?: (value: HullFaceColorMode) => void
90
+ energy_source_mode?: `precomputed` | `on-the-fly` // whether to read formation and above hull distance from entries or compute them on the fly
91
+ has_precomputed_hull?: boolean
92
+ can_compute_hull?: boolean
93
+ has_precomputed_e_form?: boolean
94
+ can_compute_e_form?: boolean
95
+ // Thresholds
96
+ max_hull_dist_show_phases?: number
97
+ max_hull_dist_show_labels?: number
98
+ max_hull_dist_in_data?: number
99
+ // Data for visualization
100
+ stable_entries: ConvexHullEntry[]
101
+ unstable_entries: ConvexHullEntry[]
102
+ // Camera state (optional - only used for 3D/4D diagrams)
103
+ camera?: CameraState
104
+ // Legend configuration
105
+ merged_controls: ConvexHullControlsType
106
+ // Pane state
107
+ controls_open?: boolean
108
+ toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
109
+ pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`]
110
+ } = $props()
111
+
112
+ // Focus the multiselect input next to the "Color scale" label
113
+ function focus_multiselect(evt: Event): void {
114
+ ;(evt.currentTarget as HTMLElement).nextElementSibling
115
+ ?.querySelector<HTMLInputElement>(`input`)?.focus()
116
+ }
26
117
  </script>
27
118
 
28
119
  <DraggablePane
@@ -42,7 +133,7 @@ function focus_multiselect(evt) {
42
133
  {...rest}
43
134
  >
44
135
  <h4>
45
- {@html merged_controls.title || `Convex Hull Controls`}
136
+ {@html sanitize_html(merged_controls.title || `Convex Hull Controls`)}
46
137
  </h4>
47
138
 
48
139
  <!-- Energy source selection (only if both options are available) -->
@@ -247,7 +338,7 @@ function focus_multiselect(evt) {
247
338
  value={hull_face_color}
248
339
  oninput={(e) => on_hull_face_color_change?.((e.target as HTMLInputElement).value)}
249
340
  {@attach tooltip({ content: `Set hull face color` })}
250
- style="width: 40px; height: 28px"
341
+ style="width: 40px; height: 20px"
251
342
  />
252
343
  {/if}
253
344
  <input
@@ -390,9 +481,7 @@ function focus_multiselect(evt) {
390
481
  border: 1px solid var(--border-color, rgba(0, 0, 0, 0.2));
391
482
  }
392
483
  .toggle-btn.active, .toggle-btn:hover.active {
393
- background: var(--accent-color, #1976d2);
394
- color: white;
395
- border-color: var(--accent-color, #1976d2);
484
+ background: light-dark(rgba(25, 118, 210, 0.15), rgba(100, 180, 255, 0.2));
396
485
  }
397
486
  .legend-items-container {
398
487
  display: flex;
@@ -441,7 +530,6 @@ function focus_multiselect(evt) {
441
530
  flex-wrap: wrap;
442
531
  }
443
532
  .face-mode-btn {
444
- padding: 2px 6px;
445
533
  min-width: auto;
446
534
  flex: 0 1 auto;
447
535
  }
@@ -453,7 +541,6 @@ function focus_multiselect(evt) {
453
541
  margin-top: 12px;
454
542
  }
455
543
  .color-scale-row :global(.multiselect) {
456
- font-size: 0.85em;
457
544
  --sms-min-height: 24px;
458
545
  }
459
546
  </style>
@@ -43,6 +43,6 @@ type $$ComponentProps = Omit<HTMLAttributes<HTMLDivElement>, `onclose`> & {
43
43
  toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`];
44
44
  pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`];
45
45
  };
46
- declare const ConvexHullControls: import("svelte").Component<$$ComponentProps, {}, "color_scale" | "controls_open" | "hull_face_opacity" | "color_mode" | "show_stable" | "show_unstable" | "show_stable_labels" | "show_unstable_labels" | "max_hull_dist_show_phases" | "max_hull_dist_show_labels" | "energy_source_mode">;
46
+ declare const ConvexHullControls: import("svelte").Component<$$ComponentProps, {}, "controls_open" | "hull_face_opacity" | "color_mode" | "color_scale" | "show_stable" | "show_unstable" | "show_stable_labels" | "show_unstable_labels" | "max_hull_dist_show_phases" | "max_hull_dist_show_labels" | "energy_source_mode">;
47
47
  type ConvexHullControls = ReturnType<typeof ConvexHullControls>;
48
48
  export default ConvexHullControls;
@@ -1,6 +1,32 @@
1
- <script lang="ts">import DraggablePane from '../overlays/DraggablePane.svelte';
2
- import ConvexHullStats from './ConvexHullStats.svelte';
3
- let { phase_stats, stable_entries, unstable_entries, max_hull_dist_show_phases, max_hull_dist_show_labels, label_threshold, pane_open = $bindable(false), toggle_props = {}, pane_props = {}, ...rest } = $props();
1
+ <script lang="ts">
2
+ import DraggablePane from '../overlays/DraggablePane.svelte'
3
+ import type { ComponentProps } from 'svelte'
4
+ import type { HTMLAttributes } from 'svelte/elements'
5
+ import ConvexHullStats from './ConvexHullStats.svelte'
6
+ import type { ConvexHullEntry, PhaseStats } from './types'
7
+
8
+ let {
9
+ phase_stats,
10
+ stable_entries,
11
+ unstable_entries,
12
+ max_hull_dist_show_phases,
13
+ max_hull_dist_show_labels,
14
+ label_threshold,
15
+ pane_open = $bindable(false),
16
+ toggle_props = {},
17
+ pane_props = {},
18
+ ...rest
19
+ }: Omit<HTMLAttributes<HTMLDivElement>, `onclose`> & {
20
+ phase_stats: PhaseStats | null
21
+ stable_entries: ConvexHullEntry[]
22
+ unstable_entries: ConvexHullEntry[]
23
+ max_hull_dist_show_phases: number
24
+ max_hull_dist_show_labels: number
25
+ label_threshold: number
26
+ pane_open?: boolean
27
+ toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
28
+ pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`]
29
+ } = $props()
4
30
  </script>
5
31
 
6
32
  <DraggablePane