matterviz 0.4.2 → 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 (244) hide show
  1. package/dist/FilePicker.svelte +40 -50
  2. package/dist/api/optimade.js +10 -7
  3. package/dist/app.css +15 -0
  4. package/dist/brillouin/BrillouinZone.svelte +18 -9
  5. package/dist/brillouin/BrillouinZoneScene.svelte +20 -29
  6. package/dist/brillouin/compute.js +10 -16
  7. package/dist/brillouin/geometry.js +2 -2
  8. package/dist/chempot-diagram/ChemPotDiagram.svelte +18 -15
  9. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +17 -113
  10. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +104 -264
  11. package/dist/chempot-diagram/async-compute.svelte.js +12 -13
  12. package/dist/chempot-diagram/color.d.ts +21 -1
  13. package/dist/chempot-diagram/color.js +70 -1
  14. package/dist/chempot-diagram/compute.d.ts +7 -0
  15. package/dist/chempot-diagram/compute.js +85 -26
  16. package/dist/chempot-diagram/export.js +1 -6
  17. package/dist/chempot-diagram/temperature.js +9 -10
  18. package/dist/composition/BarChart.svelte +7 -9
  19. package/dist/composition/Composition.svelte +3 -8
  20. package/dist/composition/Formula.svelte +2 -2
  21. package/dist/composition/FormulaFilter.svelte +27 -93
  22. package/dist/composition/format.js +6 -8
  23. package/dist/composition/parse.js +50 -105
  24. package/dist/constants.d.ts +0 -1
  25. package/dist/constants.js +6 -17
  26. package/dist/convex-hull/ConvexHull2D.svelte +0 -2
  27. package/dist/convex-hull/ConvexHull3D.svelte +19 -47
  28. package/dist/convex-hull/ConvexHull4D.svelte +65 -95
  29. package/dist/convex-hull/StructurePopup.svelte +1 -1
  30. package/dist/convex-hull/gas-thermodynamics.js +21 -53
  31. package/dist/convex-hull/helpers.js +1 -7
  32. package/dist/convex-hull/thermodynamics.js +19 -27
  33. package/dist/coordination/CoordinationBarPlot.svelte +12 -21
  34. package/dist/element/BohrAtom.svelte +0 -1
  35. package/dist/element/ElementTile.svelte +26 -44
  36. package/dist/element/data.d.ts +2 -0
  37. package/dist/element/data.js +5 -1
  38. package/dist/element/index.d.ts +1 -1
  39. package/dist/element/index.js +1 -1
  40. package/dist/fermi-surface/FermiSurface.svelte +22 -23
  41. package/dist/fermi-surface/FermiSurface.svelte.d.ts +2 -6
  42. package/dist/fermi-surface/FermiSurfaceScene.svelte +32 -77
  43. package/dist/fermi-surface/compute.js +22 -55
  44. package/dist/fermi-surface/parse.js +38 -70
  45. package/dist/file-viewer/JsonBrowser.svelte +1043 -0
  46. package/dist/file-viewer/JsonBrowser.svelte.d.ts +9 -0
  47. package/dist/file-viewer/PlotPanel.svelte +350 -0
  48. package/dist/file-viewer/PlotPanel.svelte.d.ts +9 -0
  49. package/dist/file-viewer/TrajectoryWithDos.svelte +30 -0
  50. package/dist/file-viewer/TrajectoryWithDos.svelte.d.ts +10 -0
  51. package/dist/file-viewer/detect.d.ts +11 -0
  52. package/dist/file-viewer/detect.js +381 -0
  53. package/dist/file-viewer/eligibility.d.ts +4 -0
  54. package/dist/file-viewer/eligibility.js +53 -0
  55. package/dist/file-viewer/host-protocol.d.ts +50 -0
  56. package/dist/file-viewer/host-transfer.d.ts +25 -0
  57. package/dist/file-viewer/host-transfer.js +42 -0
  58. package/dist/file-viewer/index.d.ts +5 -0
  59. package/dist/file-viewer/index.js +5 -0
  60. package/dist/file-viewer/main.d.ts +44 -0
  61. package/dist/file-viewer/main.js +535 -0
  62. package/dist/file-viewer/parse.d.ts +9 -0
  63. package/dist/file-viewer/parse.js +170 -0
  64. package/dist/file-viewer/plot-utils.d.ts +24 -0
  65. package/dist/file-viewer/plot-utils.js +191 -0
  66. package/dist/file-viewer/types.d.ts +4 -0
  67. package/dist/file-viewer/types.js +5 -0
  68. package/dist/heatmap-matrix/HeatmapMatrix.svelte +57 -84
  69. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +1 -1
  70. package/dist/index.d.ts +2 -2
  71. package/dist/index.js +1 -1
  72. package/dist/io/ExportPane.svelte +1 -1
  73. package/dist/io/decompress.d.ts +2 -0
  74. package/dist/io/decompress.js +3 -2
  75. package/dist/io/export.d.ts +7 -4
  76. package/dist/io/export.js +70 -18
  77. package/dist/io/file-drop.js +60 -35
  78. package/dist/io/url-drop.d.ts +2 -0
  79. package/dist/io/url-drop.js +28 -16
  80. package/dist/isosurface/Isosurface.svelte +687 -196
  81. package/dist/isosurface/Isosurface.svelte.d.ts +7 -1
  82. package/dist/isosurface/IsosurfaceControls.svelte +564 -85
  83. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +1 -1
  84. package/dist/isosurface/VolumeSlice.svelte +224 -0
  85. package/dist/isosurface/VolumeSlice.svelte.d.ts +28 -0
  86. package/dist/isosurface/coloring.d.ts +20 -0
  87. package/dist/isosurface/coloring.js +118 -0
  88. package/dist/isosurface/geometry-worker-types.d.ts +38 -0
  89. package/dist/isosurface/geometry.worker.d.ts +1 -0
  90. package/dist/isosurface/geometry.worker.js +59 -0
  91. package/dist/isosurface/grid.d.ts +10 -0
  92. package/dist/isosurface/grid.js +31 -0
  93. package/dist/isosurface/index.d.ts +4 -0
  94. package/dist/isosurface/index.js +4 -0
  95. package/dist/isosurface/profile.d.ts +12 -0
  96. package/dist/isosurface/profile.js +19 -0
  97. package/dist/isosurface/sampling.d.ts +34 -0
  98. package/dist/isosurface/sampling.js +408 -0
  99. package/dist/isosurface/slice-rendering.d.ts +13 -0
  100. package/dist/isosurface/slice-rendering.js +79 -0
  101. package/dist/isosurface/slice.d.ts +22 -2
  102. package/dist/isosurface/slice.js +200 -116
  103. package/dist/isosurface/types.d.ts +24 -1
  104. package/dist/isosurface/types.js +120 -8
  105. package/dist/json-path.d.ts +4 -0
  106. package/dist/json-path.js +89 -0
  107. package/dist/labels.js +1 -1
  108. package/dist/layout/InfoCard.svelte +1 -3
  109. package/dist/layout/SettingsSection.svelte +52 -61
  110. package/dist/layout/SettingsSection.svelte.d.ts +6 -7
  111. package/dist/layout/ViewerChrome.svelte +7 -1
  112. package/dist/layout/json-tree/JsonNode.svelte +14 -48
  113. package/dist/layout/json-tree/JsonTree.svelte +48 -95
  114. package/dist/layout/json-tree/JsonValue.svelte +3 -18
  115. package/dist/layout/json-tree/utils.d.ts +0 -3
  116. package/dist/layout/json-tree/utils.js +50 -179
  117. package/dist/marching-cubes.d.ts +8 -1
  118. package/dist/marching-cubes.js +115 -48
  119. package/dist/math.d.ts +3 -2
  120. package/dist/math.js +29 -38
  121. package/dist/overlays/ContextMenu.svelte +15 -32
  122. package/dist/overlays/DraggablePane.svelte +39 -58
  123. package/dist/overlays/DraggablePane.svelte.d.ts +1 -1
  124. package/dist/overlays/GlassChip.svelte +3 -1
  125. package/dist/periodic-table/PeriodicTableControls.svelte +26 -52
  126. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +18 -34
  127. package/dist/phase-diagram/build-diagram.js +1 -6
  128. package/dist/phase-diagram/svg-to-diagram.js +9 -14
  129. package/dist/plot/bar/BarPlot.svelte +38 -42
  130. package/dist/plot/bar/SpacegroupBarPlot.svelte +18 -42
  131. package/dist/plot/box/BoxPlot.svelte +27 -23
  132. package/dist/plot/core/auto-place.d.ts +1 -1
  133. package/dist/plot/core/auto-place.js +1 -1
  134. package/dist/plot/core/data-transform.d.ts +1 -2
  135. package/dist/plot/core/data-transform.js +0 -10
  136. package/dist/plot/core/layout.d.ts +12 -5
  137. package/dist/plot/core/layout.js +37 -27
  138. package/dist/plot/core/pan-zoom.svelte.d.ts +2 -4
  139. package/dist/plot/core/pan-zoom.svelte.js +34 -17
  140. package/dist/plot/core/placed-tween.svelte.d.ts +3 -0
  141. package/dist/plot/core/placed-tween.svelte.js +68 -21
  142. package/dist/plot/core/svg.js +0 -1
  143. package/dist/plot/core/utils/hierarchy-chart.d.ts +1 -0
  144. package/dist/plot/core/utils/hierarchy-chart.js +12 -0
  145. package/dist/plot/core/utils/hierarchy-labels.js +3 -2
  146. package/dist/plot/histogram/Histogram.svelte +21 -26
  147. package/dist/plot/sankey/sankey.js +13 -9
  148. package/dist/plot/scatter/BinnedScatterPlot.svelte +59 -43
  149. package/dist/plot/scatter/ScatterPlot.svelte +67 -52
  150. package/dist/plot/scatter/adaptive-density.d.ts +1 -1
  151. package/dist/plot/scatter/adaptive-density.js +36 -20
  152. package/dist/plot/sunburst/Sunburst.svelte +20 -20
  153. package/dist/plot/treemap/Treemap.svelte +175 -60
  154. package/dist/plot/treemap/Treemap.svelte.d.ts +6 -0
  155. package/dist/plot/treemap/index.d.ts +1 -0
  156. package/dist/plot/treemap/labels.d.ts +38 -0
  157. package/dist/plot/treemap/labels.js +80 -0
  158. package/dist/plot/treemap/treemap.d.ts +4 -2
  159. package/dist/plot/treemap/treemap.js +5 -2
  160. package/dist/rdf/RdfPlot.svelte +17 -35
  161. package/dist/rdf/calc-rdf.js +59 -44
  162. package/dist/rdf/index.d.ts +0 -1
  163. package/dist/sanitize.js +84 -26
  164. package/dist/scene/SceneCamera.svelte +1 -1
  165. package/dist/scene/SceneCamera.svelte.d.ts +1 -1
  166. package/dist/scene/index.d.ts +1 -2
  167. package/dist/scene/index.js +1 -1
  168. package/dist/scene/{props.js → props.svelte.js} +15 -1
  169. package/dist/settings.js +159 -482
  170. package/dist/spectral/Bands.svelte +151 -158
  171. package/dist/spectral/BrillouinBandsDos.svelte +4 -19
  172. package/dist/spectral/Dos.svelte +26 -24
  173. package/dist/spectral/helpers.js +40 -105
  174. package/dist/structure/AtomLegend.svelte +8 -13
  175. package/dist/structure/AtomLegend.svelte.d.ts +2 -3
  176. package/dist/structure/CellSelect.svelte +35 -10
  177. package/dist/structure/Structure.svelte +177 -99
  178. package/dist/structure/Structure.svelte.d.ts +1 -1
  179. package/dist/structure/StructureCarousel.svelte +10 -3
  180. package/dist/structure/StructureControls.svelte +8 -26
  181. package/dist/structure/StructureControls.svelte.d.ts +1 -1
  182. package/dist/structure/StructureInfoPane.svelte +65 -76
  183. package/dist/structure/StructureScene.svelte +75 -109
  184. package/dist/structure/StructureScene.svelte.d.ts +3 -1
  185. package/dist/structure/StructureViewport.svelte +120 -55
  186. package/dist/structure/StructureViewport.svelte.d.ts +3 -1
  187. package/dist/structure/atom-properties.d.ts +1 -1
  188. package/dist/structure/atom-properties.js +4 -3
  189. package/dist/structure/bond-order-perception.js +3 -8
  190. package/dist/structure/bonding.d.ts +0 -1
  191. package/dist/structure/bonding.js +16 -23
  192. package/dist/structure/export.js +50 -74
  193. package/dist/structure/format-detect.js +5 -7
  194. package/dist/structure/index.js +6 -12
  195. package/dist/structure/parse.js +38 -100
  196. package/dist/structure/partial-occupancy.js +7 -4
  197. package/dist/structure/pbc.js +8 -10
  198. package/dist/structure/polyhedra.js +5 -4
  199. package/dist/structure/prop-groups.d.ts +85 -0
  200. package/dist/structure/prop-groups.js +18 -0
  201. package/dist/symmetry/SymmetryStats.svelte +0 -4
  202. package/dist/symmetry/WyckoffTable.svelte +5 -4
  203. package/dist/symmetry/cell-transform.js +5 -14
  204. package/dist/symmetry/index.js +6 -9
  205. package/dist/table/HeatmapTable.svelte +61 -103
  206. package/dist/table/ToggleMenu.svelte +166 -44
  207. package/dist/table/ToggleMenu.svelte.d.ts +1 -1
  208. package/dist/theme/embedded.d.ts +18 -0
  209. package/dist/theme/embedded.js +206 -0
  210. package/dist/theme/index.d.ts +4 -0
  211. package/dist/theme/index.js +1 -2
  212. package/dist/theme/themes.mjs +31 -60
  213. package/dist/tooltip/TooltipContent.svelte +1 -1
  214. package/dist/tooltip/TooltipContent.svelte.d.ts +1 -1
  215. package/dist/tooltip/index.d.ts +8 -1
  216. package/dist/trajectory/Trajectory.svelte +140 -120
  217. package/dist/trajectory/TrajectoryError.svelte +1 -66
  218. package/dist/trajectory/TrajectoryExportPane.svelte +0 -1
  219. package/dist/trajectory/TrajectoryInfoPane.svelte +55 -80
  220. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +2 -1
  221. package/dist/trajectory/extract.js +19 -29
  222. package/dist/trajectory/format-detect.d.ts +2 -0
  223. package/dist/trajectory/format-detect.js +7 -5
  224. package/dist/trajectory/frame-reader.js +3 -4
  225. package/dist/trajectory/helpers.js +16 -49
  226. package/dist/trajectory/index.js +2 -8
  227. package/dist/trajectory/parse/ase.js +1 -1
  228. package/dist/trajectory/parse/index.d.ts +4 -3
  229. package/dist/trajectory/parse/index.js +12 -17
  230. package/dist/trajectory/parse/vaspout-h5.d.ts +0 -1
  231. package/dist/trajectory/parse/vaspout-h5.js +1 -4
  232. package/dist/trajectory/parse/xyz.js +48 -2
  233. package/dist/trajectory/plotting.js +14 -37
  234. package/dist/xrd/XrdPlot.svelte +43 -68
  235. package/dist/xrd/calc-xrd.js +22 -58
  236. package/dist/xrd/parse.js +13 -22
  237. package/package.json +40 -8
  238. package/readme.md +6 -5
  239. package/dist/scene/types.d.ts +0 -26
  240. package/dist/tooltip/types.d.ts +0 -8
  241. package/dist/trajectory/constants.d.ts +0 -6
  242. package/dist/trajectory/constants.js +0 -11
  243. /package/dist/{scene/types.js → file-viewer/host-protocol.js} +0 -0
  244. /package/dist/{tooltip/types.js → isosurface/geometry-worker-types.js} +0 -0
package/dist/settings.js CHANGED
@@ -19,26 +19,11 @@ export const ATOM_COLOR_MODE_OPTIONS = [
19
19
  `custom`,
20
20
  ];
21
21
  const DISPLAY_CONFIG = {
22
- x_grid: {
23
- value: true,
24
- description: `Show X-axis grid lines`,
25
- },
26
- y_grid: {
27
- value: true,
28
- description: `Show Y-axis grid lines`,
29
- },
30
- y2_grid: {
31
- value: false,
32
- description: `Show Y2-axis grid lines`,
33
- },
34
- x_zero_line: {
35
- value: true,
36
- description: `Show X-axis zero reference line`,
37
- },
38
- y_zero_line: {
39
- value: true,
40
- description: `Show Y-axis zero reference line`,
41
- },
22
+ x_grid: { value: true, description: `Show X-axis grid lines` },
23
+ y_grid: { value: true, description: `Show Y-axis grid lines` },
24
+ y2_grid: { value: false, description: `Show Y2-axis grid lines` },
25
+ x_zero_line: { value: true, description: `Show X-axis zero reference line` },
26
+ y_zero_line: { value: true, description: `Show Y-axis zero reference line` },
42
27
  };
43
28
  // Settings shared by the sunburst + treemap sections below so the two charts'
44
29
  // options can't drift; `node` names the chart's visual unit (arc/cell) and
@@ -83,6 +68,89 @@ const hierarchy_chart_settings = (node, levels, zoom_desc) => ({
83
68
  description: `Show a clickable ${node === `arc` ? `trail` : `pathbar`} of ancestors when zoomed into a subtree`,
84
69
  },
85
70
  });
71
+ // Settings shared by the binary/ternary/quaternary convex hull sections below so
72
+ // the three systems' options can't drift; only camera/threshold values differ.
73
+ const convex_hull_settings = (system, values) => {
74
+ const dim = { binary: `2D`, ternary: `3D`, quaternary: `4D` }[system];
75
+ const hull = `${dim} convex hull`;
76
+ return {
77
+ camera_zoom: {
78
+ value: values.camera_zoom,
79
+ description: `Initial camera zoom for ${system} (${dim}) convex hull`,
80
+ minimum: 0.1,
81
+ maximum: values.camera_zoom_max,
82
+ },
83
+ camera_center_x: {
84
+ value: 0,
85
+ description: `Initial X center for ${system} (${dim}) convex hull`,
86
+ },
87
+ camera_center_y: {
88
+ value: values.camera_center_y,
89
+ description: `Initial Y center for ${system} (${dim}) convex hull`,
90
+ },
91
+ color_mode: {
92
+ value: `energy`,
93
+ description: `Color mode for ${hull} points`,
94
+ enum: { stability: `Stability`, energy: `Energy` },
95
+ },
96
+ color_scale: {
97
+ value: `interpolateViridis`,
98
+ description: `D3 interpolate color scale for ${hull} energy mode`,
99
+ },
100
+ show_stable: { value: true, description: `Show stable phases in ${hull}` },
101
+ show_unstable: { value: true, description: `Show unstable phases in ${hull}` },
102
+ show_stable_labels: {
103
+ value: true,
104
+ description: `Show labels for stable phases in ${hull}`,
105
+ },
106
+ show_unstable_labels: {
107
+ value: false,
108
+ description: `Show labels for unstable phases in ${hull}`,
109
+ },
110
+ max_hull_dist_show_phases: {
111
+ value: values.max_hull_dist_show_phases,
112
+ description: `Max eV/atom above hull for showing unstable entries in ${hull}`,
113
+ minimum: 0,
114
+ maximum: 2,
115
+ },
116
+ max_hull_dist_show_labels: {
117
+ value: 0.1,
118
+ description: `Max eV/atom above hull for labeling unstable entries in ${hull}`,
119
+ minimum: 0,
120
+ maximum: 2,
121
+ },
122
+ fullscreen: { value: false, description: `Start in fullscreen for ${hull}` },
123
+ info_pane_open: { value: false, description: `Info pane open by default for ${hull}` },
124
+ legend_pane_open: {
125
+ value: false,
126
+ description: `Legend pane open by default for ${hull}`,
127
+ },
128
+ };
129
+ };
130
+ // Hull-face settings shared by the 3D-capable hulls (ternary + quaternary)
131
+ const hull_face_settings = (dim, values) => ({
132
+ show_hull_faces: { value: true, description: `Show hull faces in ${dim} convex hull` },
133
+ hull_face_color: {
134
+ value: `#4caf50`,
135
+ description: `Color for hull faces in ${dim} convex hull`,
136
+ },
137
+ hull_face_opacity: {
138
+ value: values.opacity,
139
+ description: `Opacity for hull faces in ${dim} convex hull (0-1)`,
140
+ minimum: 0,
141
+ maximum: 1,
142
+ },
143
+ hull_face_color_mode: {
144
+ value: values.color_mode,
145
+ description: `Coloring mode for hull faces: uniform (single color), formation_energy (by E_form), dominant_element (by element), or facet_index (categorical)`,
146
+ enum: {
147
+ uniform: `Uniform`,
148
+ formation_energy: `Formation energy`,
149
+ dominant_element: `Dominant element`,
150
+ facet_index: `Facet index`,
151
+ },
152
+ },
153
+ });
86
154
  // Complete settings configuration with values, descriptions, and constraints
87
155
  export const SETTINGS_CONFIG = {
88
156
  // General display settings
@@ -135,10 +203,7 @@ export const SETTINGS_CONFIG = {
135
203
  value: false,
136
204
  description: `Render all atoms with the same size regardless of element`,
137
205
  },
138
- show_atoms: {
139
- value: true,
140
- description: `Display atoms in the structure`,
141
- },
206
+ show_atoms: { value: true, description: `Display atoms in the structure` },
142
207
  show_image_atoms: {
143
208
  value: true,
144
209
  description: `Show atoms on the edge of the cell that are not part of the primitive basis`,
@@ -169,17 +234,11 @@ export const SETTINGS_CONFIG = {
169
234
  description: `When to display bonds between atoms`,
170
235
  enum: SHOW_BONDS_ENUM,
171
236
  },
172
- bond_color: {
173
- value: `#666666`,
174
- description: `Color for bonds (hex color code)`,
175
- },
237
+ bond_color: { value: `#666666`, description: `Color for bonds (hex color code)` },
176
238
  bonding_strategy: {
177
239
  value: `electroneg_ratio`,
178
240
  description: `Method for determining bonds between atoms`,
179
- enum: {
180
- electroneg_ratio: `Electronegativity Ratio`,
181
- solid_angle: `Solid Angle`,
182
- },
241
+ enum: { electroneg_ratio: `Electronegativity Ratio`, solid_angle: `Solid Angle` },
183
242
  },
184
243
  show_polyhedra: {
185
244
  value: `crystals`,
@@ -203,11 +262,7 @@ export const SETTINGS_CONFIG = {
203
262
  polyhedra_color_mode: {
204
263
  value: `vertex`,
205
264
  description: `Color polyhedra by the atoms at their corners, the center atom, or a single custom color`,
206
- enum: {
207
- vertex: `Vertex Atoms`,
208
- center: `Center Atom`,
209
- uniform: `Custom Color`,
210
- },
265
+ enum: { vertex: `Vertex Atoms`, center: `Center Atom`, uniform: `Custom Color` },
211
266
  },
212
267
  polyhedra_color: {
213
268
  value: `#4a90d9`,
@@ -253,10 +308,7 @@ export const SETTINGS_CONFIG = {
253
308
  atom_color_scale_type: {
254
309
  value: `continuous`,
255
310
  description: `Color scale type for property-based coloring`,
256
- enum: {
257
- continuous: `Continuous Gradient`,
258
- categorical: `Discrete Categories`,
259
- },
311
+ enum: { continuous: `Continuous Gradient`, categorical: `Discrete Categories` },
260
312
  },
261
313
  // Camera & Controls
262
314
  show_gizmo: {
@@ -272,13 +324,10 @@ export const SETTINGS_CONFIG = {
272
324
  camera_projection: {
273
325
  value: `orthographic`,
274
326
  description: `Camera projection type`,
275
- enum: {
276
- perspective: `Perspective`,
277
- orthographic: `Orthographic`,
278
- },
327
+ enum: { perspective: `Perspective`, orthographic: `Orthographic` },
279
328
  },
280
329
  initial_zoom: {
281
- value: 35,
330
+ value: 50,
282
331
  description: `Initial zoom level for orthographic projection (ignored for perspective)`,
283
332
  minimum: 0.1,
284
333
  maximum: 200,
@@ -338,24 +387,15 @@ export const SETTINGS_CONFIG = {
338
387
  maxItems: 3,
339
388
  },
340
389
  // Labels & Lighting
341
- show_site_labels: {
342
- value: false,
343
- description: `Show element labels on atoms`,
344
- },
345
- show_site_indices: {
346
- value: false,
347
- description: `Show site index numbers on atoms`,
348
- },
390
+ show_site_labels: { value: false, description: `Show element labels on atoms` },
391
+ show_site_indices: { value: false, description: `Show site index numbers on atoms` },
349
392
  site_label_size: {
350
393
  value: 1,
351
394
  description: `Font size for atom labels`,
352
395
  minimum: 0.5,
353
396
  maximum: 5,
354
397
  },
355
- site_label_color: {
356
- value: `#111111`,
357
- description: `Text color for atom labels`,
358
- },
398
+ site_label_color: { value: `#111111`, description: `Text color for atom labels` },
359
399
  site_label_bg_color: {
360
400
  value: `color-mix(in srgb, #000000 0%, transparent)`,
361
401
  description: `Background color for atom labels`,
@@ -439,14 +479,8 @@ export const SETTINGS_CONFIG = {
439
479
  minimum: -0.5,
440
480
  maximum: 0.5,
441
481
  },
442
- show_cell: {
443
- value: false,
444
- description: `Display system cell`,
445
- },
446
- show_cell_vectors: {
447
- value: true,
448
- description: `Display cell vectors`,
449
- },
482
+ show_cell: { value: false, description: `Display system cell` },
483
+ show_cell_vectors: { value: true, description: `Display cell vectors` },
450
484
  cell_edge_opacity: {
451
485
  value: 0.3,
452
486
  description: `Opacity of cell edge lines`,
@@ -459,14 +493,8 @@ export const SETTINGS_CONFIG = {
459
493
  minimum: 0,
460
494
  maximum: 1,
461
495
  },
462
- cell_edge_color: {
463
- value: `#808080`,
464
- description: `Color of cell edges`,
465
- },
466
- cell_surface_color: {
467
- value: `#e0e0e0`,
468
- description: `Color of cell surfaces`,
469
- },
496
+ cell_edge_color: { value: `#808080`, description: `Color of cell edges` },
497
+ cell_surface_color: { value: `#e0e0e0`, description: `Color of cell surfaces` },
470
498
  cell_edge_width: {
471
499
  value: 1.5,
472
500
  description: `Width of cell edge lines`,
@@ -509,10 +537,7 @@ export const SETTINGS_CONFIG = {
509
537
  'structure+histogram': `Structure + Histogram`,
510
538
  },
511
539
  },
512
- show_controls: {
513
- value: true,
514
- description: `Show playback controls`,
515
- },
540
+ show_controls: { value: true, description: `Show playback controls` },
516
541
  fullscreen_toggle: {
517
542
  value: true,
518
543
  description: `Show fullscreen toggle button (web-only, always false in other contexts)`,
@@ -527,11 +552,7 @@ export const SETTINGS_CONFIG = {
527
552
  layout: {
528
553
  value: `auto`,
529
554
  description: `Layout arrangement for trajectory viewer`,
530
- enum: {
531
- auto: `Auto`,
532
- horizontal: `Horizontal`,
533
- vertical: `Vertical`,
534
- },
555
+ enum: { auto: `Auto`, horizontal: `Horizontal`, vertical: `Vertical` },
535
556
  },
536
557
  // File handling and loading
537
558
  allow_file_drop: {
@@ -595,10 +616,7 @@ export const SETTINGS_CONFIG = {
595
616
  value: false,
596
617
  description: `Use smooth interpolation between frames`,
597
618
  },
598
- loop_playback: {
599
- value: true,
600
- description: `Loop trajectory playback`,
601
- },
619
+ loop_playback: { value: true, description: `Loop trajectory playback` },
602
620
  pause_on_hover: {
603
621
  value: false,
604
622
  description: `Pause playback when hovering over controls`,
@@ -607,10 +625,7 @@ export const SETTINGS_CONFIG = {
607
625
  value: true,
608
626
  description: `Highlight current frame in timeline`,
609
627
  },
610
- show_frame_info: {
611
- value: true,
612
- description: `Show frame information overlay`,
613
- },
628
+ show_frame_info: { value: true, description: `Show frame information overlay` },
614
629
  // Performance
615
630
  max_frames_in_memory: {
616
631
  value: 1000,
@@ -634,25 +649,16 @@ export const SETTINGS_CONFIG = {
634
649
  minimum: 0,
635
650
  maximum: 100,
636
651
  },
637
- cache_parsed_data: {
638
- value: true,
639
- description: `Cache parsed trajectory data`,
640
- },
652
+ cache_parsed_data: { value: true, description: `Cache parsed trajectory data` },
641
653
  },
642
654
  // Histogram specific
643
655
  histogram: {
644
656
  mode: {
645
657
  value: `overlay`,
646
658
  description: `Histogram display mode. 'overlay' shows multiple histograms in the same plot, 'single' shows a single histogram`,
647
- enum: {
648
- overlay: `Overlay`,
649
- single: `Single`,
650
- },
651
- },
652
- show_legend: {
653
- value: true,
654
- description: `Show legend in histogram plots`,
659
+ enum: { overlay: `Overlay`, single: `Single` },
655
660
  },
661
+ show_legend: { value: true, description: `Show legend in histogram plots` },
656
662
  bin_count: {
657
663
  value: 100,
658
664
  description: `Number of bins for histogram plots`,
@@ -660,10 +666,7 @@ export const SETTINGS_CONFIG = {
660
666
  maximum: 1000,
661
667
  },
662
668
  bar: {
663
- color: {
664
- value: `#4A9EFF`,
665
- description: `Histogram bar fill color`,
666
- },
669
+ color: { value: `#4A9EFF`, description: `Histogram bar fill color` },
667
670
  opacity: {
668
671
  value: 0.7,
669
672
  description: `Histogram bar opacity`,
@@ -676,10 +679,7 @@ export const SETTINGS_CONFIG = {
676
679
  minimum: 0,
677
680
  maximum: 5,
678
681
  },
679
- stroke_color: {
680
- value: `#000000`,
681
- description: `Histogram bar stroke color`,
682
- },
682
+ stroke_color: { value: `#000000`, description: `Histogram bar stroke color` },
683
683
  stroke_opacity: {
684
684
  value: 0.5,
685
685
  description: `Histogram bar stroke opacity`,
@@ -692,10 +692,7 @@ export const SETTINGS_CONFIG = {
692
692
  // Bar plot specific
693
693
  bar: {
694
694
  bar: {
695
- color: {
696
- value: `#4A9EFF`,
697
- description: `Bar plot fill color`,
698
- },
695
+ color: { value: `#4A9EFF`, description: `Bar plot fill color` },
699
696
  opacity: {
700
697
  value: 0.6,
701
698
  description: `Bar plot opacity (overlay mode)`,
@@ -710,16 +707,8 @@ export const SETTINGS_CONFIG = {
710
707
  },
711
708
  },
712
709
  line: {
713
- width: {
714
- value: 2,
715
- description: `Bar plot line width`,
716
- minimum: 0.5,
717
- maximum: 10,
718
- },
719
- color: {
720
- value: `#4A9EFF`,
721
- description: `Bar plot line color`,
722
- },
710
+ width: { value: 2, description: `Bar plot line width`, minimum: 0.5, maximum: 10 },
711
+ color: { value: `#4A9EFF`, description: `Bar plot line color` },
723
712
  },
724
713
  display: DISPLAY_CONFIG,
725
714
  },
@@ -745,10 +734,7 @@ export const SETTINGS_CONFIG = {
745
734
  value: true,
746
735
  description: `Show outlier points beyond the whiskers`,
747
736
  },
748
- show_mean: {
749
- value: false,
750
- description: `Show the mean marker inside each box`,
751
- },
737
+ show_mean: { value: false, description: `Show the mean marker inside each box` },
752
738
  kind: {
753
739
  value: `box`,
754
740
  description: `Glyph to draw per series: box, violin (KDE density), or both`,
@@ -777,16 +763,8 @@ export const SETTINGS_CONFIG = {
777
763
  maximum: 1,
778
764
  },
779
765
  box: {
780
- color: {
781
- value: `#4A9EFF`,
782
- description: `Box fill color`,
783
- },
784
- opacity: {
785
- value: 0.6,
786
- description: `Box fill opacity`,
787
- minimum: 0,
788
- maximum: 1,
789
- },
766
+ color: { value: `#4A9EFF`, description: `Box fill color` },
767
+ opacity: { value: 0.6, description: `Box fill opacity`, minimum: 0, maximum: 1 },
790
768
  stroke_width: {
791
769
  value: 0.5,
792
770
  description: `Box outline width`,
@@ -805,12 +783,7 @@ export const SETTINGS_CONFIG = {
805
783
  },
806
784
  },
807
785
  whisker: {
808
- width: {
809
- value: 1,
810
- description: `Whisker line width`,
811
- minimum: 0.5,
812
- maximum: 5,
813
- },
786
+ width: { value: 1, description: `Whisker line width`, minimum: 0.5, maximum: 5 },
814
787
  color: {
815
788
  value: `var(--text-color, black)`, // theme-responsive like axis/grid colors
816
789
  description: `Whisker line color`,
@@ -823,12 +796,7 @@ export const SETTINGS_CONFIG = {
823
796
  },
824
797
  },
825
798
  median: {
826
- width: {
827
- value: 1.5,
828
- description: `Median line width`,
829
- minimum: 0.5,
830
- maximum: 6,
831
- },
799
+ width: { value: 1.5, description: `Median line width`, minimum: 0.5, maximum: 6 },
832
800
  color: {
833
801
  value: `var(--text-color, black)`, // theme-responsive like axis/grid colors
834
802
  description: `Median line color`,
@@ -855,12 +823,7 @@ export const SETTINGS_CONFIG = {
855
823
  },
856
824
  },
857
825
  violin: {
858
- opacity: {
859
- value: 0.5,
860
- description: `Violin fill opacity`,
861
- minimum: 0,
862
- maximum: 1,
863
- },
826
+ opacity: { value: 0.5, description: `Violin fill opacity`, minimum: 0, maximum: 1 },
864
827
  stroke_width: {
865
828
  value: 1,
866
829
  description: `Violin outline width`,
@@ -900,10 +863,7 @@ export const SETTINGS_CONFIG = {
900
863
  minimum: 0.05,
901
864
  maximum: 1,
902
865
  },
903
- show_node_labels: {
904
- value: true,
905
- description: `Show node labels next to each node`,
906
- },
866
+ show_node_labels: { value: true, description: `Show node labels next to each node` },
907
867
  iterations: {
908
868
  value: 6,
909
869
  description: `Number of d3-sankey relaxation iterations for node positioning`,
@@ -969,11 +929,7 @@ export const SETTINGS_CONFIG = {
969
929
  display_mode: {
970
930
  value: `pie`,
971
931
  description: `Display mode for composition data`,
972
- enum: {
973
- pie: `Pie`,
974
- bubble: `Bubble`,
975
- bar: `Bar`,
976
- },
932
+ enum: { pie: `Pie`, bubble: `Bubble`, bar: `Bar` },
977
933
  },
978
934
  color_scheme: {
979
935
  value: `Vesta`,
@@ -995,18 +951,9 @@ export const SETTINGS_CONFIG = {
995
951
  description: `Default symbol type for scatter plots`,
996
952
  enum: Object.fromEntries(symbol_names.map((name) => [name, name])),
997
953
  },
998
- show_legend: {
999
- value: true,
1000
- description: `Show legend in scatter plots`,
1001
- },
1002
- show_points: {
1003
- value: true,
1004
- description: `Show points in scatter plots`,
1005
- },
1006
- show_lines: {
1007
- value: true,
1008
- description: `Show connecting lines in scatter plots`,
1009
- },
954
+ show_legend: { value: true, description: `Show legend in scatter plots` },
955
+ show_points: { value: true, description: `Show points in scatter plots` },
956
+ show_lines: { value: true, description: `Show connecting lines in scatter plots` },
1010
957
  display: DISPLAY_CONFIG,
1011
958
  point: {
1012
959
  size: {
@@ -1015,10 +962,7 @@ export const SETTINGS_CONFIG = {
1015
962
  minimum: 1,
1016
963
  maximum: 20,
1017
964
  },
1018
- color: {
1019
- value: `#4A9EFF`,
1020
- description: `Default color for scatter plot points`,
1021
- },
965
+ color: { value: `#4A9EFF`, description: `Default color for scatter plot points` },
1022
966
  opacity: {
1023
967
  value: 1,
1024
968
  description: `Opacity of scatter plot points`,
@@ -1049,10 +993,7 @@ export const SETTINGS_CONFIG = {
1049
993
  minimum: 0.5,
1050
994
  maximum: 10,
1051
995
  },
1052
- color: {
1053
- value: `#4A9EFF`,
1054
- description: `Default color for scatter plot lines`,
1055
- },
996
+ color: { value: `#4A9EFF`, description: `Default color for scatter plot lines` },
1056
997
  opacity: {
1057
998
  value: 1,
1058
999
  description: `Opacity of scatter plot lines`,
@@ -1073,52 +1014,22 @@ export const SETTINGS_CONFIG = {
1073
1014
  minimum: 0,
1074
1015
  maximum: 2000,
1075
1016
  },
1076
- enable_zoom: {
1077
- value: true,
1078
- description: `Enable zooming in plots`,
1079
- },
1017
+ enable_zoom: { value: true, description: `Enable zooming in plots` },
1080
1018
  zoom_factor: {
1081
1019
  value: 1.5,
1082
1020
  description: `Zoom factor for plot interactions`,
1083
1021
  minimum: 1.1,
1084
1022
  maximum: 5.0,
1085
1023
  },
1086
- auto_fit_range: {
1087
- value: true,
1088
- description: `Automatically fit plot range to data`,
1089
- },
1090
- grid_lines: {
1091
- value: true,
1092
- description: `Show grid lines in plots`,
1093
- },
1094
- axis_labels: {
1095
- value: true,
1096
- description: `Show axis labels in plots`,
1097
- },
1098
- show_x_zero_line: {
1099
- value: true,
1100
- description: `Show X-axis zero reference line`,
1101
- },
1102
- show_y_zero_line: {
1103
- value: true,
1104
- description: `Show Y-axis zero reference line`,
1105
- },
1106
- show_x_grid: {
1107
- value: true,
1108
- description: `Show X-axis grid lines`,
1109
- },
1110
- show_x2_grid: {
1111
- value: false,
1112
- description: `Show secondary X-axis grid lines`,
1113
- },
1114
- show_y_grid: {
1115
- value: true,
1116
- description: `Show Y-axis grid lines`,
1117
- },
1118
- show_y2_grid: {
1119
- value: true,
1120
- description: `Show secondary Y-axis grid lines`,
1121
- },
1024
+ auto_fit_range: { value: true, description: `Automatically fit plot range to data` },
1025
+ grid_lines: { value: true, description: `Show grid lines in plots` },
1026
+ axis_labels: { value: true, description: `Show axis labels in plots` },
1027
+ show_x_zero_line: { value: true, description: `Show X-axis zero reference line` },
1028
+ show_y_zero_line: { value: true, description: `Show Y-axis zero reference line` },
1029
+ show_x_grid: { value: true, description: `Show X-axis grid lines` },
1030
+ show_x2_grid: { value: false, description: `Show secondary X-axis grid lines` },
1031
+ show_y_grid: { value: true, description: `Show Y-axis grid lines` },
1032
+ show_y2_grid: { value: true, description: `Show secondary Y-axis grid lines` },
1122
1033
  x_format: {
1123
1034
  value: `.2~s`,
1124
1035
  description: `Number format for X-axis ticks (D3 format specifier)`,
@@ -1138,18 +1049,12 @@ export const SETTINGS_CONFIG = {
1138
1049
  x_scale_type: {
1139
1050
  value: `linear`,
1140
1051
  description: `Scale type for X-axis`,
1141
- enum: {
1142
- linear: `Linear`,
1143
- log: `Log`,
1144
- },
1052
+ enum: { linear: `Linear`, log: `Log` },
1145
1053
  },
1146
1054
  y_scale_type: {
1147
1055
  value: `linear`,
1148
1056
  description: `Scale type for Y-axis`,
1149
- enum: {
1150
- linear: `Linear`,
1151
- log: `Log`,
1152
- },
1057
+ enum: { linear: `Linear`, log: `Log` },
1153
1058
  },
1154
1059
  x_ticks: {
1155
1060
  value: 8,
@@ -1166,75 +1071,20 @@ export const SETTINGS_CONFIG = {
1166
1071
  },
1167
1072
  convex_hull: {
1168
1073
  // Convex hull defaults (binary/ternary/quaternary)
1169
- binary: {
1170
- camera_zoom: {
1171
- value: 1.0,
1172
- description: `Initial zoom for binary (2D) convex hull`,
1173
- minimum: 0.1,
1174
- maximum: 10,
1175
- },
1176
- camera_center_x: {
1177
- value: 0,
1178
- description: `Initial X center for binary (2D) convex hull`,
1179
- },
1180
- camera_center_y: {
1181
- value: 0,
1182
- description: `Initial Y center for binary (2D) convex hull`,
1183
- },
1184
- color_mode: {
1185
- value: `energy`,
1186
- description: `Color mode for 2D convex hull points`,
1187
- enum: {
1188
- stability: `Stability`,
1189
- energy: `Energy`,
1190
- },
1191
- },
1192
- color_scale: {
1193
- value: `interpolateViridis`,
1194
- description: `D3 interpolate color scale for 2D convex hull energy mode`,
1195
- },
1196
- show_stable: {
1197
- value: true,
1198
- description: `Show stable phases in 2D convex hull`,
1199
- },
1200
- show_unstable: {
1201
- value: true,
1202
- description: `Show unstable phases in 2D convex hull`,
1203
- },
1204
- show_stable_labels: {
1205
- value: true,
1206
- description: `Show labels for stable phases in 2D convex hull`,
1207
- },
1208
- show_unstable_labels: {
1209
- value: false,
1210
- description: `Show labels for unstable phases in 2D convex hull`,
1211
- },
1212
- max_hull_dist_show_phases: {
1213
- value: 0.1,
1214
- description: `Max eV/atom above hull for showing unstable entries in 2D convex hull`,
1215
- minimum: 0,
1216
- maximum: 2,
1217
- },
1218
- max_hull_dist_show_labels: {
1219
- value: 0.1,
1220
- description: `Max eV/atom above hull for labeling unstable entries in 2D convex hull`,
1221
- minimum: 0,
1222
- maximum: 2,
1223
- },
1224
- fullscreen: {
1225
- value: false,
1226
- description: `Start in fullscreen for 2D convex hull`,
1227
- },
1228
- info_pane_open: {
1229
- value: false,
1230
- description: `Info pane open by default for 2D convex hull`,
1231
- },
1232
- legend_pane_open: {
1233
- value: false,
1234
- description: `Legend pane open by default for 2D convex hull`,
1235
- },
1236
- },
1074
+ binary: convex_hull_settings(`binary`, {
1075
+ camera_zoom: 1.0,
1076
+ camera_zoom_max: 10,
1077
+ camera_center_y: 0,
1078
+ max_hull_dist_show_phases: 0.1,
1079
+ }),
1237
1080
  ternary: {
1081
+ ...convex_hull_settings(`ternary`, {
1082
+ camera_zoom: 1.5,
1083
+ camera_zoom_max: 10,
1084
+ camera_center_y: -50,
1085
+ max_hull_dist_show_phases: 0.5,
1086
+ }),
1087
+ ...hull_face_settings(`3D`, { opacity: 0.3, color_mode: `uniform` }),
1238
1088
  camera_elevation: {
1239
1089
  value: 45,
1240
1090
  description: `Initial camera elevation (deg) for ternary (3D) convex hull`,
@@ -1247,98 +1097,15 @@ export const SETTINGS_CONFIG = {
1247
1097
  minimum: -360,
1248
1098
  maximum: 360,
1249
1099
  },
1250
- camera_zoom: {
1251
- value: 1.5,
1252
- description: `Initial camera zoom for ternary (3D) convex hull`,
1253
- minimum: 0.1,
1254
- maximum: 10,
1255
- },
1256
- camera_center_x: {
1257
- value: 0,
1258
- description: `Initial X center for ternary (3D) convex hull`,
1259
- },
1260
- camera_center_y: {
1261
- value: -50,
1262
- description: `Initial Y center for ternary (3D) convex hull`,
1263
- },
1264
- color_mode: {
1265
- value: `energy`,
1266
- description: `Color mode for 3D convex hull points`,
1267
- enum: {
1268
- stability: `Stability`,
1269
- energy: `Energy`,
1270
- },
1271
- },
1272
- color_scale: {
1273
- value: `interpolateViridis`,
1274
- description: `D3 interpolate color scale for 3D convex hull energy mode`,
1275
- },
1276
- show_stable: {
1277
- value: true,
1278
- description: `Show stable phases in 3D convex hull`,
1279
- },
1280
- show_unstable: {
1281
- value: true,
1282
- description: `Show unstable phases in 3D convex hull`,
1283
- },
1284
- show_stable_labels: {
1285
- value: true,
1286
- description: `Show labels for stable phases in 3D convex hull`,
1287
- },
1288
- show_unstable_labels: {
1289
- value: false,
1290
- description: `Show labels for unstable phases in 3D convex hull`,
1291
- },
1292
- max_hull_dist_show_phases: {
1293
- value: 0.5,
1294
- description: `Max eV/atom above hull for showing unstable entries in 3D convex hull`,
1295
- minimum: 0,
1296
- maximum: 2,
1297
- },
1298
- max_hull_dist_show_labels: {
1299
- value: 0.1,
1300
- description: `Max eV/atom above hull for labeling unstable entries in 3D convex hull`,
1301
- minimum: 0,
1302
- maximum: 2,
1303
- },
1304
- show_hull_faces: {
1305
- value: true,
1306
- description: `Render lower hull faces in 3D convex hull`,
1307
- },
1308
- hull_face_color: {
1309
- value: `#4caf50`,
1310
- description: `Color for lower hull faces in 3D convex hull`,
1311
- },
1312
- hull_face_opacity: {
1313
- value: 0.3,
1314
- description: `Opacity for hull faces in 3D convex hull (0-1)`,
1315
- minimum: 0,
1316
- maximum: 1,
1317
- },
1318
- hull_face_color_mode: {
1319
- value: `uniform`,
1320
- description: `Coloring mode for hull faces: uniform (single color), formation_energy (by E_form), dominant_element (by element), or facet_index (categorical)`,
1321
- enum: {
1322
- uniform: `Uniform`,
1323
- formation_energy: `Formation energy`,
1324
- dominant_element: `Dominant element`,
1325
- facet_index: `Facet index`,
1326
- },
1327
- },
1328
- fullscreen: {
1329
- value: false,
1330
- description: `Start in fullscreen for 3D convex hull`,
1331
- },
1332
- info_pane_open: {
1333
- value: false,
1334
- description: `Info pane open by default for 3D convex hull`,
1335
- },
1336
- legend_pane_open: {
1337
- value: false,
1338
- description: `Legend pane open by default for 3D convex hull`,
1339
- },
1340
1100
  },
1341
1101
  quaternary: {
1102
+ ...convex_hull_settings(`quaternary`, {
1103
+ camera_zoom: 1.4,
1104
+ camera_zoom_max: 20,
1105
+ camera_center_y: 20,
1106
+ max_hull_dist_show_phases: 0.1,
1107
+ }),
1108
+ ...hull_face_settings(`4D`, { opacity: 0.03, color_mode: `dominant_element` }),
1342
1109
  camera_rotation_x: {
1343
1110
  value: -0.6,
1344
1111
  description: `Initial camera X rotation (rad) for quaternary (4D) convex hull`,
@@ -1351,96 +1118,6 @@ export const SETTINGS_CONFIG = {
1351
1118
  minimum: -6.283,
1352
1119
  maximum: 6.283,
1353
1120
  },
1354
- camera_zoom: {
1355
- value: 1.4,
1356
- description: `Initial camera zoom for quaternary (4D) convex hull`,
1357
- minimum: 0.1,
1358
- maximum: 20,
1359
- },
1360
- camera_center_x: {
1361
- value: 0,
1362
- description: `Initial X center for quaternary (4D) convex hull`,
1363
- },
1364
- camera_center_y: {
1365
- value: 20,
1366
- description: `Initial Y center for quaternary (4D) convex hull`,
1367
- },
1368
- color_mode: {
1369
- value: `energy`,
1370
- description: `Color mode for 4D convex hull points`,
1371
- enum: {
1372
- stability: `Stability`,
1373
- energy: `Energy`,
1374
- },
1375
- },
1376
- color_scale: {
1377
- value: `interpolateViridis`,
1378
- description: `D3 interpolate color scale for 4D convex hull energy mode`,
1379
- },
1380
- show_stable: {
1381
- value: true,
1382
- description: `Show stable phases in 4D convex hull`,
1383
- },
1384
- show_unstable: {
1385
- value: true,
1386
- description: `Show unstable phases in 4D convex hull`,
1387
- },
1388
- show_stable_labels: {
1389
- value: true,
1390
- description: `Show labels for stable phases in 4D convex hull`,
1391
- },
1392
- show_unstable_labels: {
1393
- value: false,
1394
- description: `Show labels for unstable phases in 4D convex hull`,
1395
- },
1396
- show_hull_faces: {
1397
- value: true,
1398
- description: `Show convex hull faces in 4D convex hull`,
1399
- },
1400
- hull_face_color: {
1401
- value: `#4caf50`,
1402
- description: `Color for hull faces in 4D convex hull`,
1403
- },
1404
- hull_face_opacity: {
1405
- value: 0.03,
1406
- description: `Opacity for hull faces in 4D convex hull (0-1)`,
1407
- minimum: 0,
1408
- maximum: 1,
1409
- },
1410
- hull_face_color_mode: {
1411
- value: `dominant_element`,
1412
- description: `Coloring mode for hull faces: uniform (single color), formation_energy (by E_form), dominant_element (by element), or facet_index (categorical)`,
1413
- enum: {
1414
- uniform: `Uniform`,
1415
- formation_energy: `Formation energy`,
1416
- dominant_element: `Dominant element`,
1417
- facet_index: `Facet index`,
1418
- },
1419
- },
1420
- max_hull_dist_show_phases: {
1421
- value: 0.1,
1422
- description: `Max eV/atom above hull for showing unstable entries in 4D convex hull`,
1423
- minimum: 0,
1424
- maximum: 2,
1425
- },
1426
- max_hull_dist_show_labels: {
1427
- value: 0.1,
1428
- description: `Max eV/atom above hull for labeling unstable entries in 4D convex hull`,
1429
- minimum: 0,
1430
- maximum: 2,
1431
- },
1432
- fullscreen: {
1433
- value: false,
1434
- description: `Start in fullscreen for 4D convex hull`,
1435
- },
1436
- info_pane_open: {
1437
- value: false,
1438
- description: `Info pane open by default for 4D convex hull`,
1439
- },
1440
- legend_pane_open: {
1441
- value: false,
1442
- description: `Legend pane open by default for 4D convex hull`,
1443
- },
1444
1121
  },
1445
1122
  },
1446
1123
  };