matterviz 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (499) hide show
  1. package/dist/EmptyState.svelte +10 -4
  2. package/dist/FilePicker.svelte +48 -60
  3. package/dist/Icon.svelte +7 -4
  4. package/dist/MillerIndexInput.svelte +2 -2
  5. package/dist/api/optimade.js +10 -7
  6. package/dist/app.css +68 -0
  7. package/dist/brillouin/BrillouinZone.svelte +90 -91
  8. package/dist/brillouin/BrillouinZone.svelte.d.ts +5 -7
  9. package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
  10. package/dist/brillouin/BrillouinZoneExportPane.svelte +18 -14
  11. package/dist/brillouin/BrillouinZoneInfoPane.svelte +6 -10
  12. package/dist/brillouin/BrillouinZoneScene.svelte +46 -68
  13. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
  14. package/dist/brillouin/compute.js +10 -16
  15. package/dist/brillouin/geometry.js +2 -2
  16. package/dist/chempot-diagram/ChemPotDiagram.svelte +48 -50
  17. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +61 -169
  18. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +1 -1
  19. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +559 -755
  20. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +1 -1
  21. package/dist/chempot-diagram/async-compute.svelte.js +13 -14
  22. package/dist/chempot-diagram/color.d.ts +21 -1
  23. package/dist/chempot-diagram/color.js +70 -1
  24. package/dist/chempot-diagram/compute.d.ts +7 -0
  25. package/dist/chempot-diagram/compute.js +85 -26
  26. package/dist/chempot-diagram/controls-state.svelte.js +1 -1
  27. package/dist/chempot-diagram/export.js +1 -6
  28. package/dist/chempot-diagram/temperature.js +9 -10
  29. package/dist/colors/index.d.ts +0 -4
  30. package/dist/colors/index.js +19 -20
  31. package/dist/composition/BarChart.svelte +30 -26
  32. package/dist/composition/BubbleChart.svelte +17 -17
  33. package/dist/composition/Composition.svelte +10 -19
  34. package/dist/composition/Formula.svelte +20 -27
  35. package/dist/composition/FormulaFilter.svelte +115 -184
  36. package/dist/composition/PieChart.svelte +55 -41
  37. package/dist/composition/format.js +7 -9
  38. package/dist/composition/index.d.ts +2 -0
  39. package/dist/composition/index.js +14 -0
  40. package/dist/composition/parse.d.ts +2 -2
  41. package/dist/composition/parse.js +61 -115
  42. package/dist/constants.d.ts +0 -1
  43. package/dist/constants.js +17 -26
  44. package/dist/convex-hull/ConvexHull.svelte +12 -15
  45. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -1
  46. package/dist/convex-hull/ConvexHull2D.svelte +93 -94
  47. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  48. package/dist/convex-hull/ConvexHull3D.svelte +127 -186
  49. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  50. package/dist/convex-hull/ConvexHull4D.svelte +131 -180
  51. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  52. package/dist/convex-hull/ConvexHullChrome.svelte +36 -40
  53. package/dist/convex-hull/ConvexHullControls.svelte +46 -48
  54. package/dist/convex-hull/ConvexHullStats.svelte +193 -195
  55. package/dist/convex-hull/ConvexHullTooltip.svelte +5 -12
  56. package/dist/convex-hull/GasPressureControls.svelte +5 -12
  57. package/dist/convex-hull/StructurePopup.svelte +18 -22
  58. package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
  59. package/dist/convex-hull/TemperatureSlider.svelte +4 -10
  60. package/dist/convex-hull/canvas-interactions.svelte.js +2 -1
  61. package/dist/convex-hull/gas-thermodynamics.js +21 -53
  62. package/dist/convex-hull/helpers.d.ts +8 -10
  63. package/dist/convex-hull/helpers.js +37 -43
  64. package/dist/convex-hull/hull-state.svelte.d.ts +1 -1
  65. package/dist/convex-hull/thermodynamics.js +37 -44
  66. package/dist/coordination/CoordinationBarPlot.svelte +49 -53
  67. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +1 -1
  68. package/dist/coordination/calc-coordination.d.ts +1 -1
  69. package/dist/coordination/calc-coordination.js +28 -25
  70. package/dist/element/BohrAtom.svelte +5 -9
  71. package/dist/element/ElementHeading.svelte +4 -1
  72. package/dist/element/ElementPhoto.svelte +11 -9
  73. package/dist/element/ElementStats.svelte +12 -10
  74. package/dist/element/ElementTile.svelte +44 -67
  75. package/dist/element/Nucleus.svelte +4 -2
  76. package/dist/element/data.d.ts +3 -2
  77. package/dist/element/data.js +5 -1
  78. package/dist/element/helpers.d.ts +4 -0
  79. package/dist/element/helpers.js +18 -0
  80. package/dist/element/index.d.ts +2 -5
  81. package/dist/element/index.js +4 -19
  82. package/dist/feedback/DragOverlay.svelte +5 -5
  83. package/dist/feedback/DragOverlay.svelte.d.ts +2 -2
  84. package/dist/feedback/StatusMessage.svelte +7 -4
  85. package/dist/fermi-surface/FermiSlice.svelte +21 -18
  86. package/dist/fermi-surface/FermiSurface.svelte +35 -44
  87. package/dist/fermi-surface/FermiSurface.svelte.d.ts +7 -13
  88. package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
  89. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
  90. package/dist/fermi-surface/FermiSurfaceScene.svelte +64 -136
  91. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
  92. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
  93. package/dist/fermi-surface/compute.js +25 -58
  94. package/dist/fermi-surface/parse.js +54 -88
  95. package/dist/file-viewer/JsonBrowser.svelte +1043 -0
  96. package/dist/file-viewer/JsonBrowser.svelte.d.ts +9 -0
  97. package/dist/file-viewer/PlotPanel.svelte +350 -0
  98. package/dist/file-viewer/PlotPanel.svelte.d.ts +9 -0
  99. package/dist/file-viewer/TrajectoryWithDos.svelte +30 -0
  100. package/dist/file-viewer/TrajectoryWithDos.svelte.d.ts +10 -0
  101. package/dist/file-viewer/detect.d.ts +11 -0
  102. package/dist/file-viewer/detect.js +381 -0
  103. package/dist/file-viewer/eligibility.d.ts +4 -0
  104. package/dist/file-viewer/eligibility.js +53 -0
  105. package/dist/file-viewer/host-protocol.d.ts +50 -0
  106. package/dist/file-viewer/host-transfer.d.ts +25 -0
  107. package/dist/file-viewer/host-transfer.js +42 -0
  108. package/dist/file-viewer/index.d.ts +5 -0
  109. package/dist/file-viewer/index.js +5 -0
  110. package/dist/file-viewer/main.d.ts +44 -0
  111. package/dist/file-viewer/main.js +535 -0
  112. package/dist/file-viewer/parse.d.ts +9 -0
  113. package/dist/file-viewer/parse.js +170 -0
  114. package/dist/file-viewer/plot-utils.d.ts +24 -0
  115. package/dist/file-viewer/plot-utils.js +191 -0
  116. package/dist/file-viewer/types.d.ts +4 -0
  117. package/dist/file-viewer/types.js +5 -0
  118. package/dist/heatmap-matrix/HeatmapMatrix.svelte +153 -219
  119. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +2 -2
  120. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +9 -7
  121. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +1 -1
  122. package/dist/heatmap-matrix/index.d.ts +5 -0
  123. package/dist/icons.d.ts +4 -0
  124. package/dist/icons.js +4 -0
  125. package/dist/index.d.ts +2 -2
  126. package/dist/index.js +1 -1
  127. package/dist/io/ExportPane.svelte +11 -7
  128. package/dist/io/decompress.d.ts +4 -1
  129. package/dist/io/decompress.js +24 -36
  130. package/dist/io/export.d.ts +11 -4
  131. package/dist/io/export.js +75 -19
  132. package/dist/io/fetch.d.ts +0 -3
  133. package/dist/io/fetch.js +0 -11
  134. package/dist/io/file-drop.js +60 -35
  135. package/dist/io/index.d.ts +0 -1
  136. package/dist/io/index.js +2 -9
  137. package/dist/io/is-binary.d.ts +9 -0
  138. package/dist/io/is-binary.js +45 -1
  139. package/dist/io/url-drop.d.ts +2 -0
  140. package/dist/io/url-drop.js +40 -40
  141. package/dist/isosurface/Isosurface.svelte +700 -215
  142. package/dist/isosurface/Isosurface.svelte.d.ts +7 -1
  143. package/dist/isosurface/IsosurfaceControls.svelte +590 -116
  144. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +1 -1
  145. package/dist/isosurface/VolumeSlice.svelte +224 -0
  146. package/dist/isosurface/VolumeSlice.svelte.d.ts +28 -0
  147. package/dist/isosurface/coloring.d.ts +20 -0
  148. package/dist/isosurface/coloring.js +118 -0
  149. package/dist/isosurface/geometry-worker-types.d.ts +38 -0
  150. package/dist/isosurface/geometry.worker.d.ts +1 -0
  151. package/dist/isosurface/geometry.worker.js +59 -0
  152. package/dist/isosurface/grid.d.ts +10 -0
  153. package/dist/isosurface/grid.js +31 -0
  154. package/dist/isosurface/index.d.ts +4 -0
  155. package/dist/isosurface/index.js +4 -0
  156. package/dist/isosurface/parse-vaspwave.d.ts +3 -0
  157. package/dist/isosurface/parse-vaspwave.js +138 -0
  158. package/dist/isosurface/parse.js +6 -6
  159. package/dist/isosurface/profile.d.ts +12 -0
  160. package/dist/isosurface/profile.js +19 -0
  161. package/dist/isosurface/sampling.d.ts +34 -0
  162. package/dist/isosurface/sampling.js +408 -0
  163. package/dist/isosurface/slice-rendering.d.ts +13 -0
  164. package/dist/isosurface/slice-rendering.js +79 -0
  165. package/dist/isosurface/slice.d.ts +22 -2
  166. package/dist/isosurface/slice.js +200 -116
  167. package/dist/isosurface/types.d.ts +24 -1
  168. package/dist/isosurface/types.js +120 -8
  169. package/dist/json-path.d.ts +4 -0
  170. package/dist/json-path.js +89 -0
  171. package/dist/labels.d.ts +6 -2
  172. package/dist/labels.js +44 -14
  173. package/dist/layout/FullscreenButton.svelte +2 -1
  174. package/dist/layout/FullscreenToggle.svelte +10 -4
  175. package/dist/layout/InfoCard.svelte +8 -21
  176. package/dist/layout/InfoTag.svelte +1 -3
  177. package/dist/layout/NumberRangeInput.svelte +46 -0
  178. package/dist/layout/NumberRangeInput.svelte.d.ts +12 -0
  179. package/dist/layout/PropertyFilter.svelte +2 -6
  180. package/dist/layout/SettingsSection.svelte +57 -62
  181. package/dist/layout/SettingsSection.svelte.d.ts +6 -7
  182. package/dist/layout/SubpageGrid.svelte +3 -1
  183. package/dist/layout/ViewerChrome.svelte +16 -11
  184. package/dist/layout/ViewerChrome.svelte.d.ts +2 -1
  185. package/dist/layout/fullscreen.js +3 -5
  186. package/dist/layout/fullscreen.svelte.js +1 -2
  187. package/dist/layout/index.d.ts +1 -0
  188. package/dist/layout/index.js +1 -0
  189. package/dist/layout/json-tree/JsonNode.svelte +22 -59
  190. package/dist/layout/json-tree/JsonTree.svelte +101 -172
  191. package/dist/layout/json-tree/JsonValue.svelte +9 -32
  192. package/dist/layout/json-tree/utils.d.ts +0 -3
  193. package/dist/layout/json-tree/utils.js +50 -188
  194. package/dist/marching-cubes.d.ts +8 -1
  195. package/dist/marching-cubes.js +115 -48
  196. package/dist/math.d.ts +5 -2
  197. package/dist/math.js +48 -38
  198. package/dist/overlays/ContextMenu.svelte +19 -34
  199. package/dist/overlays/CopyButton.svelte +11 -5
  200. package/dist/overlays/DragControlTab.svelte +6 -1
  201. package/dist/overlays/DraggablePane.svelte +110 -74
  202. package/dist/overlays/DraggablePane.svelte.d.ts +2 -1
  203. package/dist/overlays/GlassChip.svelte +32 -0
  204. package/dist/overlays/GlassChip.svelte.d.ts +8 -0
  205. package/dist/overlays/InfoPaneCards.svelte +11 -23
  206. package/dist/overlays/index.d.ts +7 -0
  207. package/dist/overlays/index.js +26 -0
  208. package/dist/overlays/portal.d.ts +2 -0
  209. package/dist/overlays/portal.js +14 -0
  210. package/dist/periodic-table/PeriodicTable.svelte +113 -145
  211. package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
  212. package/dist/periodic-table/PeriodicTableControls.svelte +37 -115
  213. package/dist/periodic-table/TableInset.svelte +9 -4
  214. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +68 -105
  215. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
  216. package/dist/phase-diagram/PhaseDiagramControls.svelte +70 -94
  217. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +1 -1
  218. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +2 -1
  219. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +12 -12
  220. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
  221. package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
  222. package/dist/phase-diagram/build-diagram.js +4 -9
  223. package/dist/phase-diagram/diagram-input.d.ts +1 -2
  224. package/dist/phase-diagram/parse.js +15 -15
  225. package/dist/phase-diagram/svg-to-diagram.js +28 -27
  226. package/dist/phase-diagram/utils.js +2 -3
  227. package/dist/plot/bar/BarPlot.svelte +461 -426
  228. package/dist/plot/bar/BarPlot.svelte.d.ts +2 -0
  229. package/dist/plot/bar/BarPlotControls.svelte +1 -3
  230. package/dist/plot/bar/BarPlotControls.svelte.d.ts +4 -6
  231. package/dist/plot/bar/SpacegroupBarPlot.svelte +46 -77
  232. package/dist/plot/bar/data.d.ts +5 -4
  233. package/dist/plot/bar/data.js +2 -1
  234. package/dist/plot/box/BoxPlot.svelte +322 -226
  235. package/dist/plot/box/BoxPlot.svelte.d.ts +2 -0
  236. package/dist/plot/box/Violin.svelte.d.ts +1 -0
  237. package/dist/plot/box/box-plot.js +1 -1
  238. package/dist/plot/core/auto-place.d.ts +1 -1
  239. package/dist/plot/core/auto-place.js +2 -2
  240. package/dist/plot/core/axis-utils.d.ts +12 -7
  241. package/dist/plot/core/axis-utils.js +48 -48
  242. package/dist/plot/core/components/AxisLabel.svelte +82 -20
  243. package/dist/plot/core/components/AxisLabel.svelte.d.ts +1 -0
  244. package/dist/plot/core/components/ColorBar.svelte +101 -106
  245. package/dist/plot/core/components/ColorScaleSelect.svelte +1 -1
  246. package/dist/plot/core/components/FillArea.svelte +10 -17
  247. package/dist/plot/core/components/HierarchyControls.svelte +249 -0
  248. package/dist/plot/{sunburst/SunburstControls.svelte.d.ts → core/components/HierarchyControls.svelte.d.ts} +12 -8
  249. package/dist/plot/core/components/InteractiveAxisLabel.svelte +1 -1
  250. package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +1 -1
  251. package/dist/plot/core/components/Line.svelte +18 -9
  252. package/dist/plot/core/components/Line.svelte.d.ts +2 -0
  253. package/dist/plot/core/components/PlotAxis.svelte +40 -17
  254. package/dist/plot/core/components/PlotControls.svelte +65 -41
  255. package/dist/plot/core/components/PlotLegend.svelte +31 -35
  256. package/dist/plot/core/components/PlotMarginals.svelte +616 -0
  257. package/dist/plot/core/components/PlotMarginals.svelte.d.ts +15 -0
  258. package/dist/plot/core/components/PlotTooltip.svelte +1 -1
  259. package/dist/plot/core/components/PortalSelect.svelte +4 -8
  260. package/dist/plot/core/components/ReferenceLine.svelte +27 -24
  261. package/dist/plot/core/components/ReferenceLine3D.svelte +54 -57
  262. package/dist/plot/core/components/ReferencePlane.svelte +7 -8
  263. package/dist/plot/core/components/ZeroLines.svelte +4 -8
  264. package/dist/plot/core/components/ZoomRect.svelte +1 -2
  265. package/dist/plot/core/components/index.d.ts +1 -0
  266. package/dist/plot/core/components/index.js +1 -0
  267. package/dist/plot/core/data-cleaning-signal.d.ts +46 -0
  268. package/dist/plot/core/data-cleaning-signal.js +467 -0
  269. package/dist/plot/core/data-cleaning.d.ts +2 -42
  270. package/dist/plot/core/data-cleaning.js +27 -474
  271. package/dist/plot/core/data-transform.d.ts +1 -2
  272. package/dist/plot/core/data-transform.js +9 -15
  273. package/dist/plot/core/fill-utils.d.ts +3 -1
  274. package/dist/plot/core/fill-utils.js +28 -6
  275. package/dist/plot/core/index.d.ts +1 -0
  276. package/dist/plot/core/index.js +1 -0
  277. package/dist/plot/core/interactions.js +0 -2
  278. package/dist/plot/core/layout.d.ts +15 -6
  279. package/dist/plot/core/layout.js +57 -38
  280. package/dist/plot/core/marginals.d.ts +170 -0
  281. package/dist/plot/core/marginals.js +436 -0
  282. package/dist/plot/core/pan-zoom.svelte.d.ts +2 -4
  283. package/dist/plot/core/pan-zoom.svelte.js +34 -17
  284. package/dist/plot/core/placed-tween.svelte.d.ts +3 -0
  285. package/dist/plot/core/placed-tween.svelte.js +68 -21
  286. package/dist/plot/core/reference-line.js +1 -1
  287. package/dist/plot/core/scales.d.ts +23 -0
  288. package/dist/plot/core/scales.js +39 -13
  289. package/dist/plot/core/svg.js +0 -1
  290. package/dist/plot/core/types/fills.d.ts +101 -0
  291. package/dist/plot/core/types/fills.js +15 -0
  292. package/dist/plot/core/types/plot-3d.d.ts +87 -0
  293. package/dist/plot/core/types/plot-3d.js +4 -0
  294. package/dist/plot/core/types/reference-lines.d.ts +140 -0
  295. package/dist/plot/core/types/reference-lines.js +9 -0
  296. package/dist/plot/core/types.d.ts +29 -324
  297. package/dist/plot/core/types.js +23 -20
  298. package/dist/plot/core/utils/hierarchy-chart.d.ts +52 -0
  299. package/dist/plot/core/utils/hierarchy-chart.js +191 -0
  300. package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
  301. package/dist/plot/core/utils/hierarchy-labels.js +100 -0
  302. package/dist/plot/core/utils/label-placement.js +2 -2
  303. package/dist/plot/histogram/Histogram.svelte +314 -340
  304. package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
  305. package/dist/plot/histogram/HistogramControls.svelte +30 -28
  306. package/dist/plot/histogram/histogram.d.ts +31 -0
  307. package/dist/plot/histogram/histogram.js +70 -0
  308. package/dist/plot/histogram/index.d.ts +1 -0
  309. package/dist/plot/histogram/index.js +1 -0
  310. package/dist/plot/index.d.ts +1 -0
  311. package/dist/plot/index.js +1 -0
  312. package/dist/plot/sankey/Sankey.svelte +78 -69
  313. package/dist/plot/sankey/Sankey.svelte.d.ts +2 -2
  314. package/dist/plot/sankey/SankeyControls.svelte +22 -16
  315. package/dist/plot/sankey/sankey.js +13 -9
  316. package/dist/plot/scatter/BinnedScatterPlot.svelte +311 -141
  317. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +7 -0
  318. package/dist/plot/scatter/ElementScatter.svelte +4 -1
  319. package/dist/plot/scatter/ScatterPlot.svelte +517 -410
  320. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +2 -0
  321. package/dist/plot/scatter/ScatterPlotControls.svelte +18 -19
  322. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
  323. package/dist/plot/scatter/ScatterPoint.svelte +16 -9
  324. package/dist/plot/scatter/adaptive-density.d.ts +1 -1
  325. package/dist/plot/scatter/adaptive-density.js +36 -20
  326. package/dist/plot/scatter/binned-scatter-types.d.ts +3 -2
  327. package/dist/plot/scatter/binned-scatter-types.js +6 -1
  328. package/dist/plot/scatter/scatter-data.d.ts +1 -1
  329. package/dist/plot/scatter/scatter-data.js +8 -7
  330. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +25 -34
  331. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +2 -2
  332. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +8 -5
  333. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +113 -116
  334. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +2 -2
  335. package/dist/plot/scatter-3d/Surface3D.svelte +4 -13
  336. package/dist/plot/sunburst/Sunburst.svelte +269 -347
  337. package/dist/plot/sunburst/Sunburst.svelte.d.ts +2 -2
  338. package/dist/plot/sunburst/index.d.ts +1 -1
  339. package/dist/plot/sunburst/index.js +2 -1
  340. package/dist/plot/sunburst/render.d.ts +2 -2
  341. package/dist/plot/sunburst/render.js +47 -22
  342. package/dist/plot/sunburst/sunburst.d.ts +5 -1
  343. package/dist/plot/sunburst/sunburst.js +10 -3
  344. package/dist/plot/treemap/Treemap.svelte +1022 -0
  345. package/dist/plot/treemap/Treemap.svelte.d.ts +90 -0
  346. package/dist/plot/treemap/index.d.ts +4 -0
  347. package/dist/plot/treemap/index.js +4 -0
  348. package/dist/plot/treemap/labels.d.ts +38 -0
  349. package/dist/plot/treemap/labels.js +80 -0
  350. package/dist/plot/treemap/treemap.d.ts +28 -0
  351. package/dist/plot/treemap/treemap.js +102 -0
  352. package/dist/rdf/RdfPlot.svelte +37 -59
  353. package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
  354. package/dist/rdf/calc-rdf.js +63 -52
  355. package/dist/rdf/index.d.ts +0 -1
  356. package/dist/sanitize.js +85 -27
  357. package/dist/scene/SceneCamera.svelte +1 -1
  358. package/dist/scene/SceneCamera.svelte.d.ts +1 -1
  359. package/dist/scene/bind-renderer.svelte.js +14 -6
  360. package/dist/scene/index.d.ts +1 -2
  361. package/dist/scene/index.js +1 -1
  362. package/dist/scene/{props.js → props.svelte.js} +15 -1
  363. package/dist/settings.d.ts +19 -9
  364. package/dist/settings.js +229 -525
  365. package/dist/spectral/Bands.svelte +207 -221
  366. package/dist/spectral/BandsAndDos.svelte +11 -9
  367. package/dist/spectral/BrillouinBandsDos.svelte +19 -42
  368. package/dist/spectral/Dos.svelte +92 -93
  369. package/dist/spectral/helpers.d.ts +3 -3
  370. package/dist/spectral/helpers.js +65 -140
  371. package/dist/state.svelte.js +5 -18
  372. package/dist/structure/Arrow.svelte +5 -18
  373. package/dist/structure/ArrowInstances.svelte +160 -0
  374. package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
  375. package/dist/structure/AtomLegend.svelte +120 -85
  376. package/dist/structure/AtomLegend.svelte.d.ts +2 -3
  377. package/dist/structure/Bond.svelte +31 -23
  378. package/dist/structure/CanvasTooltip.svelte +15 -3
  379. package/dist/structure/CellSelect.svelte +45 -35
  380. package/dist/structure/Cylinder.svelte +24 -40
  381. package/dist/structure/InstancedAtoms.svelte +114 -0
  382. package/dist/structure/InstancedAtoms.svelte.d.ts +15 -0
  383. package/dist/structure/Lattice.svelte +85 -149
  384. package/dist/structure/SiteLabels.svelte +122 -0
  385. package/dist/structure/SiteLabels.svelte.d.ts +18 -0
  386. package/dist/structure/Structure.svelte +636 -504
  387. package/dist/structure/Structure.svelte.d.ts +4 -2
  388. package/dist/structure/StructureCarousel.svelte +637 -0
  389. package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
  390. package/dist/structure/StructureControls.svelte +165 -425
  391. package/dist/structure/StructureControls.svelte.d.ts +1 -1
  392. package/dist/structure/StructureExportPane.svelte +17 -21
  393. package/dist/structure/StructureInfoPane.svelte +128 -133
  394. package/dist/structure/StructureInfoPane.svelte.d.ts +1 -1
  395. package/dist/structure/StructureScene.svelte +535 -578
  396. package/dist/structure/StructureScene.svelte.d.ts +6 -2
  397. package/dist/structure/StructureViewport.svelte +451 -0
  398. package/dist/structure/StructureViewport.svelte.d.ts +65 -0
  399. package/dist/structure/atom-label-placement.d.ts +16 -12
  400. package/dist/structure/atom-label-placement.js +70 -37
  401. package/dist/structure/atom-properties.d.ts +2 -0
  402. package/dist/structure/atom-properties.js +105 -38
  403. package/dist/structure/bond-order-perception.js +3 -8
  404. package/dist/structure/bonding.d.ts +9 -3
  405. package/dist/structure/bonding.js +95 -46
  406. package/dist/structure/edit-history.d.ts +6 -0
  407. package/dist/structure/edit-history.js +27 -0
  408. package/dist/structure/export.d.ts +1 -0
  409. package/dist/structure/export.js +89 -105
  410. package/dist/structure/format-detect.d.ts +1 -0
  411. package/dist/structure/format-detect.js +20 -0
  412. package/dist/structure/geometry.d.ts +9 -0
  413. package/dist/structure/geometry.js +27 -0
  414. package/dist/structure/index.d.ts +16 -1
  415. package/dist/structure/index.js +15 -10
  416. package/dist/structure/measure.d.ts +1 -1
  417. package/dist/structure/measure.js +6 -12
  418. package/dist/structure/parse.d.ts +2 -1
  419. package/dist/structure/parse.js +272 -313
  420. package/dist/structure/partial-occupancy.js +10 -5
  421. package/dist/structure/pbc.js +85 -107
  422. package/dist/structure/polyhedra.d.ts +0 -1
  423. package/dist/structure/polyhedra.js +7 -21
  424. package/dist/structure/prop-groups.d.ts +85 -0
  425. package/dist/structure/prop-groups.js +18 -0
  426. package/dist/structure/supercell.d.ts +1 -2
  427. package/dist/structure/supercell.js +7 -13
  428. package/dist/symmetry/SymmetryElements.svelte +11 -15
  429. package/dist/symmetry/SymmetryStats.svelte +55 -71
  430. package/dist/symmetry/WyckoffTable.svelte +10 -28
  431. package/dist/symmetry/cell-transform.js +6 -14
  432. package/dist/symmetry/index.d.ts +1 -0
  433. package/dist/symmetry/index.js +13 -10
  434. package/dist/symmetry/spacegroups.js +3 -2
  435. package/dist/table/HeatmapTable.svelte +1142 -447
  436. package/dist/table/HeatmapTable.svelte.d.ts +12 -2
  437. package/dist/table/ToggleMenu.svelte +168 -53
  438. package/dist/table/ToggleMenu.svelte.d.ts +1 -1
  439. package/dist/table/index.d.ts +21 -6
  440. package/dist/table/index.js +34 -21
  441. package/dist/theme/ThemeControl.svelte +16 -8
  442. package/dist/theme/embedded.d.ts +18 -0
  443. package/dist/theme/embedded.js +206 -0
  444. package/dist/theme/index.d.ts +5 -5
  445. package/dist/theme/index.js +5 -12
  446. package/dist/theme/themes.mjs +44 -66
  447. package/dist/tooltip/KCoords.svelte +4 -1
  448. package/dist/tooltip/TooltipContent.svelte +3 -6
  449. package/dist/tooltip/TooltipContent.svelte.d.ts +1 -1
  450. package/dist/tooltip/index.d.ts +8 -1
  451. package/dist/trajectory/Trajectory.svelte +613 -386
  452. package/dist/trajectory/Trajectory.svelte.d.ts +1 -1
  453. package/dist/trajectory/TrajectoryError.svelte +12 -74
  454. package/dist/trajectory/TrajectoryExportPane.svelte +14 -32
  455. package/dist/trajectory/TrajectoryInfoPane.svelte +127 -164
  456. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +2 -1
  457. package/dist/trajectory/extract.js +61 -49
  458. package/dist/trajectory/format-detect.d.ts +2 -0
  459. package/dist/trajectory/format-detect.js +17 -13
  460. package/dist/trajectory/frame-reader.d.ts +2 -0
  461. package/dist/trajectory/frame-reader.js +35 -32
  462. package/dist/trajectory/helpers.d.ts +2 -0
  463. package/dist/trajectory/helpers.js +34 -56
  464. package/dist/trajectory/index.d.ts +1 -0
  465. package/dist/trajectory/index.js +5 -8
  466. package/dist/trajectory/parse/ase.js +1 -1
  467. package/dist/trajectory/parse/h5-utils.d.ts +13 -0
  468. package/dist/trajectory/parse/h5-utils.js +109 -0
  469. package/dist/trajectory/parse/hdf5.d.ts +1 -1
  470. package/dist/trajectory/parse/hdf5.js +116 -106
  471. package/dist/trajectory/parse/index.d.ts +6 -6
  472. package/dist/trajectory/parse/index.js +25 -33
  473. package/dist/trajectory/parse/lammps.js +8 -12
  474. package/dist/trajectory/parse/vasp.js +10 -7
  475. package/dist/trajectory/parse/vaspout-electronic.d.ts +13 -0
  476. package/dist/trajectory/parse/vaspout-electronic.js +207 -0
  477. package/dist/trajectory/parse/vaspout-h5.d.ts +4 -0
  478. package/dist/trajectory/parse/vaspout-h5.js +281 -0
  479. package/dist/trajectory/parse/xyz.js +59 -9
  480. package/dist/trajectory/plotting.d.ts +8 -9
  481. package/dist/trajectory/plotting.js +113 -64
  482. package/dist/utils.d.ts +3 -0
  483. package/dist/utils.js +7 -0
  484. package/dist/xrd/XrdPlot.svelte +79 -118
  485. package/dist/xrd/broadening.js +2 -1
  486. package/dist/xrd/calc-xrd.js +24 -62
  487. package/dist/xrd/parse.d.ts +0 -1
  488. package/dist/xrd/parse.js +69 -95
  489. package/package.json +94 -34
  490. package/readme.md +6 -5
  491. package/dist/api/mp.d.ts +0 -6
  492. package/dist/api/mp.js +0 -22
  493. package/dist/plot/sunburst/SunburstControls.svelte +0 -200
  494. package/dist/scene/types.d.ts +0 -26
  495. package/dist/tooltip/types.d.ts +0 -8
  496. package/dist/trajectory/constants.d.ts +0 -6
  497. package/dist/trajectory/constants.js +0 -11
  498. /package/dist/{scene/types.js → file-viewer/host-protocol.js} +0 -0
  499. /package/dist/{tooltip/types.js → isosurface/geometry-worker-types.js} +0 -0
package/dist/settings.js CHANGED
@@ -19,27 +19,138 @@ 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`,
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` },
27
+ };
28
+ // Settings shared by the sunburst + treemap sections below so the two charts'
29
+ // options can't drift; `node` names the chart's visual unit (arc/cell) and
30
+ // `levels` its depth unit (rings/levels) in descriptions.
31
+ const hierarchy_chart_settings = (node, levels, zoom_desc) => ({
32
+ value_mode: {
33
+ value: `leaf-sum`,
34
+ description: `How node values are interpreted (plotly branchvalues semantics): leaf-sum ignores parent values, total treats every value as authoritative, remainder adds a node's own value on top of its children`,
35
+ enum: { 'leaf-sum': `Leaf sum`, total: `Total`, remainder: `Remainder` },
25
36
  },
26
- y_grid: {
27
- value: true,
28
- description: `Show Y-axis grid lines`,
37
+ max_depth: {
38
+ value: 0,
39
+ description: `Number of ${levels} shown below the current zoom root (0 = all)`,
40
+ minimum: 0,
41
+ maximum: 10,
29
42
  },
30
- y2_grid: {
31
- value: false,
32
- description: `Show Y2-axis grid lines`,
43
+ min_fraction: {
44
+ value: 0,
45
+ description: `Group sibling ${node}s smaller than this fraction of the total into one 'Other' ${node === `arc` ? `slice` : `cell`} per parent (0 = off)`,
46
+ minimum: 0,
47
+ maximum: 0.2,
33
48
  },
34
- x_zero_line: {
49
+ show_labels: {
35
50
  value: true,
36
- description: `Show X-axis zero reference line`,
51
+ description: `Show labels on ${node}s large enough to fit them`,
52
+ },
53
+ label_text: {
54
+ value: `label`,
55
+ description: `What ${node} labels display (percent is of the root total, parent-percent of the parent node)`,
56
+ enum: {
57
+ label: `Label`,
58
+ value: `Value`,
59
+ percent: `Percent`,
60
+ 'label+value': `Label + value`,
61
+ 'label+percent': `Label + percent`,
62
+ 'label+parent-percent': `Label + % of parent`,
63
+ },
37
64
  },
38
- y_zero_line: {
65
+ zoom_on_click: { value: true, description: zoom_desc },
66
+ show_breadcrumbs: {
39
67
  value: true,
40
- description: `Show Y-axis zero reference line`,
68
+ description: `Show a clickable ${node === `arc` ? `trail` : `pathbar`} of ancestors when zoomed into a subtree`,
41
69
  },
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
+ };
42
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
+ });
43
154
  // Complete settings configuration with values, descriptions, and constraints
44
155
  export const SETTINGS_CONFIG = {
45
156
  // General display settings
@@ -92,10 +203,7 @@ export const SETTINGS_CONFIG = {
92
203
  value: false,
93
204
  description: `Render all atoms with the same size regardless of element`,
94
205
  },
95
- show_atoms: {
96
- value: true,
97
- description: `Display atoms in the structure`,
98
- },
206
+ show_atoms: { value: true, description: `Display atoms in the structure` },
99
207
  show_image_atoms: {
100
208
  value: true,
101
209
  description: `Show atoms on the edge of the cell that are not part of the primitive basis`,
@@ -126,17 +234,11 @@ export const SETTINGS_CONFIG = {
126
234
  description: `When to display bonds between atoms`,
127
235
  enum: SHOW_BONDS_ENUM,
128
236
  },
129
- bond_color: {
130
- value: `#666666`,
131
- description: `Color for bonds (hex color code)`,
132
- },
237
+ bond_color: { value: `#666666`, description: `Color for bonds (hex color code)` },
133
238
  bonding_strategy: {
134
239
  value: `electroneg_ratio`,
135
240
  description: `Method for determining bonds between atoms`,
136
- enum: {
137
- electroneg_ratio: `Electronegativity Ratio`,
138
- solid_angle: `Solid Angle`,
139
- },
241
+ enum: { electroneg_ratio: `Electronegativity Ratio`, solid_angle: `Solid Angle` },
140
242
  },
141
243
  show_polyhedra: {
142
244
  value: `crystals`,
@@ -160,11 +262,7 @@ export const SETTINGS_CONFIG = {
160
262
  polyhedra_color_mode: {
161
263
  value: `vertex`,
162
264
  description: `Color polyhedra by the atoms at their corners, the center atom, or a single custom color`,
163
- enum: {
164
- vertex: `Vertex Atoms`,
165
- center: `Center Atom`,
166
- uniform: `Custom Color`,
167
- },
265
+ enum: { vertex: `Vertex Atoms`, center: `Center Atom`, uniform: `Custom Color` },
168
266
  },
169
267
  polyhedra_color: {
170
268
  value: `#4a90d9`,
@@ -210,10 +308,7 @@ export const SETTINGS_CONFIG = {
210
308
  atom_color_scale_type: {
211
309
  value: `continuous`,
212
310
  description: `Color scale type for property-based coloring`,
213
- enum: {
214
- continuous: `Continuous Gradient`,
215
- categorical: `Discrete Categories`,
216
- },
311
+ enum: { continuous: `Continuous Gradient`, categorical: `Discrete Categories` },
217
312
  },
218
313
  // Camera & Controls
219
314
  show_gizmo: {
@@ -229,13 +324,10 @@ export const SETTINGS_CONFIG = {
229
324
  camera_projection: {
230
325
  value: `orthographic`,
231
326
  description: `Camera projection type`,
232
- enum: {
233
- perspective: `Perspective`,
234
- orthographic: `Orthographic`,
235
- },
327
+ enum: { perspective: `Perspective`, orthographic: `Orthographic` },
236
328
  },
237
329
  initial_zoom: {
238
- value: 35,
330
+ value: 50,
239
331
  description: `Initial zoom level for orthographic projection (ignored for perspective)`,
240
332
  minimum: 0.1,
241
333
  maximum: 200,
@@ -295,24 +387,15 @@ export const SETTINGS_CONFIG = {
295
387
  maxItems: 3,
296
388
  },
297
389
  // Labels & Lighting
298
- show_site_labels: {
299
- value: false,
300
- description: `Show element labels on atoms`,
301
- },
302
- show_site_indices: {
303
- value: false,
304
- description: `Show site index numbers on atoms`,
305
- },
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` },
306
392
  site_label_size: {
307
393
  value: 1,
308
394
  description: `Font size for atom labels`,
309
395
  minimum: 0.5,
310
396
  maximum: 5,
311
397
  },
312
- site_label_color: {
313
- value: `#111111`,
314
- description: `Text color for atom labels`,
315
- },
398
+ site_label_color: { value: `#111111`, description: `Text color for atom labels` },
316
399
  site_label_bg_color: {
317
400
  value: `color-mix(in srgb, #000000 0%, transparent)`,
318
401
  description: `Background color for atom labels`,
@@ -347,7 +430,7 @@ export const SETTINGS_CONFIG = {
347
430
  description: `Per-key configuration for site vector layers. Keys map to site property names (e.g. force, magmom, force_DFT). Auto-populated when a structure with vector data loads.`,
348
431
  },
349
432
  vector_scale: {
350
- value: 1.0,
433
+ value: 0.75,
351
434
  description: `Scale factor for site vector arrows`,
352
435
  minimum: 0.1,
353
436
  maximum: 10.0,
@@ -369,8 +452,8 @@ export const SETTINGS_CONFIG = {
369
452
  description: `Show all arrows at the same length (direction only). Useful for spin/magmom visualization where orientation matters but magnitude does not.`,
370
453
  },
371
454
  vector_uniform_thickness: {
372
- value: false,
373
- description: `Use the same shaft and head size for all arrows regardless of length. When off (default), thickness scales with arrow length.`,
455
+ value: true,
456
+ description: `Use the same shaft and head size for all arrows regardless of length. Negative radii are scaled by characteristic atom spacing.`,
374
457
  },
375
458
  vector_origin_gap: {
376
459
  value: 0,
@@ -379,31 +462,25 @@ export const SETTINGS_CONFIG = {
379
462
  maximum: 0.5,
380
463
  },
381
464
  vector_shaft_radius: {
382
- value: -0.03,
383
- description: `Radius of vector shaft (negative = relative to length, positive = absolute)`,
465
+ value: -0.01,
466
+ description: `Radius of vector shaft (negative = relative to length or atom spacing with uniform thickness, positive = absolute)`,
384
467
  minimum: -0.1,
385
468
  maximum: 0.1,
386
469
  },
387
470
  vector_arrow_head_radius: {
388
- value: -0.06,
389
- description: `Radius of vector arrow head (negative = relative to length, positive = absolute)`,
471
+ value: -0.04,
472
+ description: `Radius of vector arrow head (negative = relative to length or atom spacing with uniform thickness, positive = absolute)`,
390
473
  minimum: -0.2,
391
474
  maximum: 0.2,
392
475
  },
393
476
  vector_arrow_head_length: {
394
- value: -0.15,
395
- description: `Length of vector arrow head (negative = relative to length, positive = absolute)`,
477
+ value: -0.1,
478
+ description: `Length of vector arrow head (negative = relative to length or atom spacing with uniform thickness, positive = absolute)`,
396
479
  minimum: -0.5,
397
480
  maximum: 0.5,
398
481
  },
399
- show_cell: {
400
- value: false,
401
- description: `Display system cell`,
402
- },
403
- show_cell_vectors: {
404
- value: true,
405
- description: `Display cell vectors`,
406
- },
482
+ show_cell: { value: false, description: `Display system cell` },
483
+ show_cell_vectors: { value: true, description: `Display cell vectors` },
407
484
  cell_edge_opacity: {
408
485
  value: 0.3,
409
486
  description: `Opacity of cell edge lines`,
@@ -416,14 +493,8 @@ export const SETTINGS_CONFIG = {
416
493
  minimum: 0,
417
494
  maximum: 1,
418
495
  },
419
- cell_edge_color: {
420
- value: `#808080`,
421
- description: `Color of cell edges`,
422
- },
423
- cell_surface_color: {
424
- value: `#e0e0e0`,
425
- description: `Color of cell surfaces`,
426
- },
496
+ cell_edge_color: { value: `#808080`, description: `Color of cell edges` },
497
+ cell_surface_color: { value: `#e0e0e0`, description: `Color of cell surfaces` },
427
498
  cell_edge_width: {
428
499
  value: 1.5,
429
500
  description: `Width of cell edge lines`,
@@ -466,10 +537,7 @@ export const SETTINGS_CONFIG = {
466
537
  'structure+histogram': `Structure + Histogram`,
467
538
  },
468
539
  },
469
- show_controls: {
470
- value: true,
471
- description: `Show playback controls`,
472
- },
540
+ show_controls: { value: true, description: `Show playback controls` },
473
541
  fullscreen_toggle: {
474
542
  value: true,
475
543
  description: `Show fullscreen toggle button (web-only, always false in other contexts)`,
@@ -484,11 +552,7 @@ export const SETTINGS_CONFIG = {
484
552
  layout: {
485
553
  value: `auto`,
486
554
  description: `Layout arrangement for trajectory viewer`,
487
- enum: {
488
- auto: `Auto`,
489
- horizontal: `Horizontal`,
490
- vertical: `Vertical`,
491
- },
555
+ enum: { auto: `Auto`, horizontal: `Horizontal`, vertical: `Vertical` },
492
556
  },
493
557
  // File handling and loading
494
558
  allow_file_drop: {
@@ -552,10 +616,7 @@ export const SETTINGS_CONFIG = {
552
616
  value: false,
553
617
  description: `Use smooth interpolation between frames`,
554
618
  },
555
- loop_playback: {
556
- value: true,
557
- description: `Loop trajectory playback`,
558
- },
619
+ loop_playback: { value: true, description: `Loop trajectory playback` },
559
620
  pause_on_hover: {
560
621
  value: false,
561
622
  description: `Pause playback when hovering over controls`,
@@ -564,10 +625,7 @@ export const SETTINGS_CONFIG = {
564
625
  value: true,
565
626
  description: `Highlight current frame in timeline`,
566
627
  },
567
- show_frame_info: {
568
- value: true,
569
- description: `Show frame information overlay`,
570
- },
628
+ show_frame_info: { value: true, description: `Show frame information overlay` },
571
629
  // Performance
572
630
  max_frames_in_memory: {
573
631
  value: 1000,
@@ -591,25 +649,16 @@ export const SETTINGS_CONFIG = {
591
649
  minimum: 0,
592
650
  maximum: 100,
593
651
  },
594
- cache_parsed_data: {
595
- value: true,
596
- description: `Cache parsed trajectory data`,
597
- },
652
+ cache_parsed_data: { value: true, description: `Cache parsed trajectory data` },
598
653
  },
599
654
  // Histogram specific
600
655
  histogram: {
601
656
  mode: {
602
657
  value: `overlay`,
603
658
  description: `Histogram display mode. 'overlay' shows multiple histograms in the same plot, 'single' shows a single histogram`,
604
- enum: {
605
- overlay: `Overlay`,
606
- single: `Single`,
607
- },
608
- },
609
- show_legend: {
610
- value: true,
611
- description: `Show legend in histogram plots`,
659
+ enum: { overlay: `Overlay`, single: `Single` },
612
660
  },
661
+ show_legend: { value: true, description: `Show legend in histogram plots` },
613
662
  bin_count: {
614
663
  value: 100,
615
664
  description: `Number of bins for histogram plots`,
@@ -617,10 +666,7 @@ export const SETTINGS_CONFIG = {
617
666
  maximum: 1000,
618
667
  },
619
668
  bar: {
620
- color: {
621
- value: `#4A9EFF`,
622
- description: `Histogram bar fill color`,
623
- },
669
+ color: { value: `#4A9EFF`, description: `Histogram bar fill color` },
624
670
  opacity: {
625
671
  value: 0.7,
626
672
  description: `Histogram bar opacity`,
@@ -633,10 +679,7 @@ export const SETTINGS_CONFIG = {
633
679
  minimum: 0,
634
680
  maximum: 5,
635
681
  },
636
- stroke_color: {
637
- value: `#000000`,
638
- description: `Histogram bar stroke color`,
639
- },
682
+ stroke_color: { value: `#000000`, description: `Histogram bar stroke color` },
640
683
  stroke_opacity: {
641
684
  value: 0.5,
642
685
  description: `Histogram bar stroke opacity`,
@@ -649,10 +692,7 @@ export const SETTINGS_CONFIG = {
649
692
  // Bar plot specific
650
693
  bar: {
651
694
  bar: {
652
- color: {
653
- value: `#4A9EFF`,
654
- description: `Bar plot fill color`,
655
- },
695
+ color: { value: `#4A9EFF`, description: `Bar plot fill color` },
656
696
  opacity: {
657
697
  value: 0.6,
658
698
  description: `Bar plot opacity (overlay mode)`,
@@ -667,16 +707,8 @@ export const SETTINGS_CONFIG = {
667
707
  },
668
708
  },
669
709
  line: {
670
- width: {
671
- value: 2,
672
- description: `Bar plot line width`,
673
- minimum: 0.5,
674
- maximum: 10,
675
- },
676
- color: {
677
- value: `#4A9EFF`,
678
- description: `Bar plot line color`,
679
- },
710
+ width: { value: 2, description: `Bar plot line width`, minimum: 0.5, maximum: 10 },
711
+ color: { value: `#4A9EFF`, description: `Bar plot line color` },
680
712
  },
681
713
  display: DISPLAY_CONFIG,
682
714
  },
@@ -702,10 +734,7 @@ export const SETTINGS_CONFIG = {
702
734
  value: true,
703
735
  description: `Show outlier points beyond the whiskers`,
704
736
  },
705
- show_mean: {
706
- value: false,
707
- description: `Show the mean marker inside each box`,
708
- },
737
+ show_mean: { value: false, description: `Show the mean marker inside each box` },
709
738
  kind: {
710
739
  value: `box`,
711
740
  description: `Glyph to draw per series: box, violin (KDE density), or both`,
@@ -734,16 +763,8 @@ export const SETTINGS_CONFIG = {
734
763
  maximum: 1,
735
764
  },
736
765
  box: {
737
- color: {
738
- value: `#4A9EFF`,
739
- description: `Box fill color`,
740
- },
741
- opacity: {
742
- value: 0.6,
743
- description: `Box fill opacity`,
744
- minimum: 0,
745
- maximum: 1,
746
- },
766
+ color: { value: `#4A9EFF`, description: `Box fill color` },
767
+ opacity: { value: 0.6, description: `Box fill opacity`, minimum: 0, maximum: 1 },
747
768
  stroke_width: {
748
769
  value: 0.5,
749
770
  description: `Box outline width`,
@@ -751,7 +772,7 @@ export const SETTINGS_CONFIG = {
751
772
  maximum: 5,
752
773
  },
753
774
  stroke_color: {
754
- value: `#000000`,
775
+ value: `var(--text-color, black)`, // theme-responsive like axis/grid colors
755
776
  description: `Box outline color`,
756
777
  },
757
778
  border_radius: {
@@ -762,14 +783,9 @@ export const SETTINGS_CONFIG = {
762
783
  },
763
784
  },
764
785
  whisker: {
765
- width: {
766
- value: 1,
767
- description: `Whisker line width`,
768
- minimum: 0.5,
769
- maximum: 5,
770
- },
786
+ width: { value: 1, description: `Whisker line width`, minimum: 0.5, maximum: 5 },
771
787
  color: {
772
- value: `#000000`,
788
+ value: `var(--text-color, black)`, // theme-responsive like axis/grid colors
773
789
  description: `Whisker line color`,
774
790
  },
775
791
  cap_fraction: {
@@ -780,14 +796,9 @@ export const SETTINGS_CONFIG = {
780
796
  },
781
797
  },
782
798
  median: {
783
- width: {
784
- value: 1.5,
785
- description: `Median line width`,
786
- minimum: 0.5,
787
- maximum: 6,
788
- },
799
+ width: { value: 1.5, description: `Median line width`, minimum: 0.5, maximum: 6 },
789
800
  color: {
790
- value: `#000000`,
801
+ value: `var(--text-color, black)`, // theme-responsive like axis/grid colors
791
802
  description: `Median line color`,
792
803
  },
793
804
  },
@@ -812,12 +823,7 @@ export const SETTINGS_CONFIG = {
812
823
  },
813
824
  },
814
825
  violin: {
815
- opacity: {
816
- value: 0.5,
817
- description: `Violin fill opacity`,
818
- minimum: 0,
819
- maximum: 1,
820
- },
826
+ opacity: { value: 0.5, description: `Violin fill opacity`, minimum: 0, maximum: 1 },
821
827
  stroke_width: {
822
828
  value: 1,
823
829
  description: `Violin outline width`,
@@ -857,10 +863,7 @@ export const SETTINGS_CONFIG = {
857
863
  minimum: 0.05,
858
864
  maximum: 1,
859
865
  },
860
- show_node_labels: {
861
- value: true,
862
- description: `Show node labels next to each node`,
863
- },
866
+ show_node_labels: { value: true, description: `Show node labels next to each node` },
864
867
  iterations: {
865
868
  value: 6,
866
869
  description: `Number of d3-sankey relaxation iterations for node positioning`,
@@ -870,22 +873,12 @@ export const SETTINGS_CONFIG = {
870
873
  },
871
874
  // Sunburst chart specific
872
875
  sunburst: {
876
+ ...hierarchy_chart_settings(`arc`, `rings`, `Clicking a branch arc zooms into that subtree (center circle zooms out)`),
873
877
  shape: {
874
878
  value: `sunburst`,
875
879
  description: `Chart geometry: polar rings (sunburst) or stacked rows (icicle)`,
876
880
  enum: { sunburst: `Sunburst`, icicle: `Icicle` },
877
881
  },
878
- value_mode: {
879
- value: `leaf-sum`,
880
- description: `How node values are interpreted (plotly branchvalues semantics): leaf-sum ignores parent values, total treats every value as authoritative, remainder adds a node's own value on top of its children`,
881
- enum: { 'leaf-sum': `Leaf sum`, total: `Total`, remainder: `Remainder` },
882
- },
883
- max_depth: {
884
- value: 0,
885
- description: `Number of rings shown below the current zoom root (0 = all)`,
886
- minimum: 0,
887
- maximum: 10,
888
- },
889
882
  inner_radius: {
890
883
  value: 0.25,
891
884
  description: `Center hole size as fraction of the outer radius`,
@@ -898,16 +891,6 @@ export const SETTINGS_CONFIG = {
898
891
  minimum: 0,
899
892
  maximum: 4,
900
893
  },
901
- min_fraction: {
902
- value: 0,
903
- description: `Group sibling arcs smaller than this fraction of the total into one 'Other' slice per parent (0 = off)`,
904
- minimum: 0,
905
- maximum: 0.2,
906
- },
907
- show_labels: {
908
- value: true,
909
- description: `Show labels on arcs large enough to fit them`,
910
- },
911
894
  label_rotation: {
912
895
  value: `auto`,
913
896
  description: `Arc label orientation (auto picks radial/tangential per arc)`,
@@ -918,24 +901,27 @@ export const SETTINGS_CONFIG = {
918
901
  horizontal: `Horizontal`,
919
902
  },
920
903
  },
921
- label_text: {
922
- value: `label`,
923
- description: `What arc labels display (percent is of the root total)`,
924
- enum: {
925
- label: `Label`,
926
- value: `Value`,
927
- percent: `Percent`,
928
- 'label+value': `Label + value`,
929
- 'label+percent': `Label + percent`,
930
- },
904
+ },
905
+ // Treemap chart specific
906
+ treemap: {
907
+ ...hierarchy_chart_settings(`cell`, `levels`, `Clicking any cell zooms into it, plotly-style (the breadcrumb pathbar zooms out)`),
908
+ padding_inner: {
909
+ value: 0,
910
+ description: `Pixel gap between sibling cells (0 = cells share a single stroke divider; gaps > 0 show the parent's fill)`,
911
+ minimum: 0,
912
+ maximum: 10,
931
913
  },
932
- zoom_on_click: {
933
- value: true,
934
- description: `Clicking a branch arc zooms into that subtree (center circle zooms out)`,
914
+ padding_top: {
915
+ value: 18,
916
+ description: `Pixel strip reserved at the top of branch cells for their label (0 = no headers)`,
917
+ minimum: 0,
918
+ maximum: 40,
935
919
  },
936
- show_breadcrumbs: {
937
- value: true,
938
- description: `Show a clickable trail of ancestors when zoomed into a subtree`,
920
+ padding_outer: {
921
+ value: 3,
922
+ description: `Pixel inset of child cells within their parent's left/right/bottom edges, so parents visibly enclose their subtree (plotly marker.pad)`,
923
+ minimum: 0,
924
+ maximum: 10,
939
925
  },
940
926
  },
941
927
  // Composition specific
@@ -943,11 +929,7 @@ export const SETTINGS_CONFIG = {
943
929
  display_mode: {
944
930
  value: `pie`,
945
931
  description: `Display mode for composition data`,
946
- enum: {
947
- pie: `Pie`,
948
- bubble: `Bubble`,
949
- bar: `Bar`,
950
- },
932
+ enum: { pie: `Pie`, bubble: `Bubble`, bar: `Bar` },
951
933
  },
952
934
  color_scheme: {
953
935
  value: `Vesta`,
@@ -969,30 +951,18 @@ export const SETTINGS_CONFIG = {
969
951
  description: `Default symbol type for scatter plots`,
970
952
  enum: Object.fromEntries(symbol_names.map((name) => [name, name])),
971
953
  },
972
- show_legend: {
973
- value: true,
974
- description: `Show legend in scatter plots`,
975
- },
976
- show_points: {
977
- value: true,
978
- description: `Show points in scatter plots`,
979
- },
980
- show_lines: {
981
- value: true,
982
- description: `Show connecting lines in scatter plots`,
983
- },
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` },
984
957
  display: DISPLAY_CONFIG,
985
958
  point: {
986
959
  size: {
987
- value: 4,
960
+ value: 3,
988
961
  description: `Point size for scatter plots`,
989
962
  minimum: 1,
990
963
  maximum: 20,
991
964
  },
992
- color: {
993
- value: `#4A9EFF`,
994
- description: `Default color for scatter plot points`,
995
- },
965
+ color: { value: `#4A9EFF`, description: `Default color for scatter plot points` },
996
966
  opacity: {
997
967
  value: 1,
998
968
  description: `Opacity of scatter plot points`,
@@ -1023,10 +993,7 @@ export const SETTINGS_CONFIG = {
1023
993
  minimum: 0.5,
1024
994
  maximum: 10,
1025
995
  },
1026
- color: {
1027
- value: `#4A9EFF`,
1028
- description: `Default color for scatter plot lines`,
1029
- },
996
+ color: { value: `#4A9EFF`, description: `Default color for scatter plot lines` },
1030
997
  opacity: {
1031
998
  value: 1,
1032
999
  description: `Opacity of scatter plot lines`,
@@ -1047,52 +1014,22 @@ export const SETTINGS_CONFIG = {
1047
1014
  minimum: 0,
1048
1015
  maximum: 2000,
1049
1016
  },
1050
- enable_zoom: {
1051
- value: true,
1052
- description: `Enable zooming in plots`,
1053
- },
1017
+ enable_zoom: { value: true, description: `Enable zooming in plots` },
1054
1018
  zoom_factor: {
1055
1019
  value: 1.5,
1056
1020
  description: `Zoom factor for plot interactions`,
1057
1021
  minimum: 1.1,
1058
1022
  maximum: 5.0,
1059
1023
  },
1060
- auto_fit_range: {
1061
- value: true,
1062
- description: `Automatically fit plot range to data`,
1063
- },
1064
- grid_lines: {
1065
- value: true,
1066
- description: `Show grid lines in plots`,
1067
- },
1068
- axis_labels: {
1069
- value: true,
1070
- description: `Show axis labels in plots`,
1071
- },
1072
- show_x_zero_line: {
1073
- value: true,
1074
- description: `Show X-axis zero reference line`,
1075
- },
1076
- show_y_zero_line: {
1077
- value: true,
1078
- description: `Show Y-axis zero reference line`,
1079
- },
1080
- show_x_grid: {
1081
- value: true,
1082
- description: `Show X-axis grid lines`,
1083
- },
1084
- show_x2_grid: {
1085
- value: false,
1086
- description: `Show secondary X-axis grid lines`,
1087
- },
1088
- show_y_grid: {
1089
- value: true,
1090
- description: `Show Y-axis grid lines`,
1091
- },
1092
- show_y2_grid: {
1093
- value: true,
1094
- description: `Show secondary Y-axis grid lines`,
1095
- },
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` },
1096
1033
  x_format: {
1097
1034
  value: `.2~s`,
1098
1035
  description: `Number format for X-axis ticks (D3 format specifier)`,
@@ -1112,18 +1049,12 @@ export const SETTINGS_CONFIG = {
1112
1049
  x_scale_type: {
1113
1050
  value: `linear`,
1114
1051
  description: `Scale type for X-axis`,
1115
- enum: {
1116
- linear: `Linear`,
1117
- log: `Log`,
1118
- },
1052
+ enum: { linear: `Linear`, log: `Log` },
1119
1053
  },
1120
1054
  y_scale_type: {
1121
1055
  value: `linear`,
1122
1056
  description: `Scale type for Y-axis`,
1123
- enum: {
1124
- linear: `Linear`,
1125
- log: `Log`,
1126
- },
1057
+ enum: { linear: `Linear`, log: `Log` },
1127
1058
  },
1128
1059
  x_ticks: {
1129
1060
  value: 8,
@@ -1140,75 +1071,20 @@ export const SETTINGS_CONFIG = {
1140
1071
  },
1141
1072
  convex_hull: {
1142
1073
  // Convex hull defaults (binary/ternary/quaternary)
1143
- binary: {
1144
- camera_zoom: {
1145
- value: 1.0,
1146
- description: `Initial zoom for binary (2D) convex hull`,
1147
- minimum: 0.1,
1148
- maximum: 10,
1149
- },
1150
- camera_center_x: {
1151
- value: 0,
1152
- description: `Initial X center for binary (2D) convex hull`,
1153
- },
1154
- camera_center_y: {
1155
- value: 0,
1156
- description: `Initial Y center for binary (2D) convex hull`,
1157
- },
1158
- color_mode: {
1159
- value: `energy`,
1160
- description: `Color mode for 2D convex hull points`,
1161
- enum: {
1162
- stability: `Stability`,
1163
- energy: `Energy`,
1164
- },
1165
- },
1166
- color_scale: {
1167
- value: `interpolateViridis`,
1168
- description: `D3 interpolate color scale for 2D convex hull energy mode`,
1169
- },
1170
- show_stable: {
1171
- value: true,
1172
- description: `Show stable phases in 2D convex hull`,
1173
- },
1174
- show_unstable: {
1175
- value: true,
1176
- description: `Show unstable phases in 2D convex hull`,
1177
- },
1178
- show_stable_labels: {
1179
- value: true,
1180
- description: `Show labels for stable phases in 2D convex hull`,
1181
- },
1182
- show_unstable_labels: {
1183
- value: false,
1184
- description: `Show labels for unstable phases in 2D convex hull`,
1185
- },
1186
- max_hull_dist_show_phases: {
1187
- value: 0.1,
1188
- description: `Max eV/atom above hull for showing unstable entries in 2D convex hull`,
1189
- minimum: 0,
1190
- maximum: 2,
1191
- },
1192
- max_hull_dist_show_labels: {
1193
- value: 0.1,
1194
- description: `Max eV/atom above hull for labeling unstable entries in 2D convex hull`,
1195
- minimum: 0,
1196
- maximum: 2,
1197
- },
1198
- fullscreen: {
1199
- value: false,
1200
- description: `Start in fullscreen for 2D convex hull`,
1201
- },
1202
- info_pane_open: {
1203
- value: false,
1204
- description: `Info pane open by default for 2D convex hull`,
1205
- },
1206
- legend_pane_open: {
1207
- value: false,
1208
- description: `Legend pane open by default for 2D convex hull`,
1209
- },
1210
- },
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
+ }),
1211
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` }),
1212
1088
  camera_elevation: {
1213
1089
  value: 45,
1214
1090
  description: `Initial camera elevation (deg) for ternary (3D) convex hull`,
@@ -1221,98 +1097,15 @@ export const SETTINGS_CONFIG = {
1221
1097
  minimum: -360,
1222
1098
  maximum: 360,
1223
1099
  },
1224
- camera_zoom: {
1225
- value: 1.5,
1226
- description: `Initial camera zoom for ternary (3D) convex hull`,
1227
- minimum: 0.1,
1228
- maximum: 10,
1229
- },
1230
- camera_center_x: {
1231
- value: 0,
1232
- description: `Initial X center for ternary (3D) convex hull`,
1233
- },
1234
- camera_center_y: {
1235
- value: -50,
1236
- description: `Initial Y center for ternary (3D) convex hull`,
1237
- },
1238
- color_mode: {
1239
- value: `energy`,
1240
- description: `Color mode for 3D convex hull points`,
1241
- enum: {
1242
- stability: `Stability`,
1243
- energy: `Energy`,
1244
- },
1245
- },
1246
- color_scale: {
1247
- value: `interpolateViridis`,
1248
- description: `D3 interpolate color scale for 3D convex hull energy mode`,
1249
- },
1250
- show_stable: {
1251
- value: true,
1252
- description: `Show stable phases in 3D convex hull`,
1253
- },
1254
- show_unstable: {
1255
- value: true,
1256
- description: `Show unstable phases in 3D convex hull`,
1257
- },
1258
- show_stable_labels: {
1259
- value: true,
1260
- description: `Show labels for stable phases in 3D convex hull`,
1261
- },
1262
- show_unstable_labels: {
1263
- value: false,
1264
- description: `Show labels for unstable phases in 3D convex hull`,
1265
- },
1266
- max_hull_dist_show_phases: {
1267
- value: 0.5,
1268
- description: `Max eV/atom above hull for showing unstable entries in 3D convex hull`,
1269
- minimum: 0,
1270
- maximum: 2,
1271
- },
1272
- max_hull_dist_show_labels: {
1273
- value: 0.1,
1274
- description: `Max eV/atom above hull for labeling unstable entries in 3D convex hull`,
1275
- minimum: 0,
1276
- maximum: 2,
1277
- },
1278
- show_hull_faces: {
1279
- value: true,
1280
- description: `Render lower hull faces in 3D convex hull`,
1281
- },
1282
- hull_face_color: {
1283
- value: `#4caf50`,
1284
- description: `Color for lower hull faces in 3D convex hull`,
1285
- },
1286
- hull_face_opacity: {
1287
- value: 0.3,
1288
- description: `Opacity for hull faces in 3D convex hull (0-1)`,
1289
- minimum: 0,
1290
- maximum: 1,
1291
- },
1292
- hull_face_color_mode: {
1293
- value: `uniform`,
1294
- description: `Coloring mode for hull faces: uniform (single color), formation_energy (by E_form), dominant_element (by element), or facet_index (categorical)`,
1295
- enum: {
1296
- uniform: `Uniform`,
1297
- formation_energy: `Formation energy`,
1298
- dominant_element: `Dominant element`,
1299
- facet_index: `Facet index`,
1300
- },
1301
- },
1302
- fullscreen: {
1303
- value: false,
1304
- description: `Start in fullscreen for 3D convex hull`,
1305
- },
1306
- info_pane_open: {
1307
- value: false,
1308
- description: `Info pane open by default for 3D convex hull`,
1309
- },
1310
- legend_pane_open: {
1311
- value: false,
1312
- description: `Legend pane open by default for 3D convex hull`,
1313
- },
1314
1100
  },
1315
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` }),
1316
1109
  camera_rotation_x: {
1317
1110
  value: -0.6,
1318
1111
  description: `Initial camera X rotation (rad) for quaternary (4D) convex hull`,
@@ -1325,96 +1118,6 @@ export const SETTINGS_CONFIG = {
1325
1118
  minimum: -6.283,
1326
1119
  maximum: 6.283,
1327
1120
  },
1328
- camera_zoom: {
1329
- value: 1.4,
1330
- description: `Initial camera zoom for quaternary (4D) convex hull`,
1331
- minimum: 0.1,
1332
- maximum: 20,
1333
- },
1334
- camera_center_x: {
1335
- value: 0,
1336
- description: `Initial X center for quaternary (4D) convex hull`,
1337
- },
1338
- camera_center_y: {
1339
- value: 20,
1340
- description: `Initial Y center for quaternary (4D) convex hull`,
1341
- },
1342
- color_mode: {
1343
- value: `energy`,
1344
- description: `Color mode for 4D convex hull points`,
1345
- enum: {
1346
- stability: `Stability`,
1347
- energy: `Energy`,
1348
- },
1349
- },
1350
- color_scale: {
1351
- value: `interpolateViridis`,
1352
- description: `D3 interpolate color scale for 4D convex hull energy mode`,
1353
- },
1354
- show_stable: {
1355
- value: true,
1356
- description: `Show stable phases in 4D convex hull`,
1357
- },
1358
- show_unstable: {
1359
- value: true,
1360
- description: `Show unstable phases in 4D convex hull`,
1361
- },
1362
- show_stable_labels: {
1363
- value: true,
1364
- description: `Show labels for stable phases in 4D convex hull`,
1365
- },
1366
- show_unstable_labels: {
1367
- value: false,
1368
- description: `Show labels for unstable phases in 4D convex hull`,
1369
- },
1370
- show_hull_faces: {
1371
- value: true,
1372
- description: `Show convex hull faces in 4D convex hull`,
1373
- },
1374
- hull_face_color: {
1375
- value: `#4caf50`,
1376
- description: `Color for hull faces in 4D convex hull`,
1377
- },
1378
- hull_face_opacity: {
1379
- value: 0.03,
1380
- description: `Opacity for hull faces in 4D convex hull (0-1)`,
1381
- minimum: 0,
1382
- maximum: 1,
1383
- },
1384
- hull_face_color_mode: {
1385
- value: `dominant_element`,
1386
- description: `Coloring mode for hull faces: uniform (single color), formation_energy (by E_form), dominant_element (by element), or facet_index (categorical)`,
1387
- enum: {
1388
- uniform: `Uniform`,
1389
- formation_energy: `Formation energy`,
1390
- dominant_element: `Dominant element`,
1391
- facet_index: `Facet index`,
1392
- },
1393
- },
1394
- max_hull_dist_show_phases: {
1395
- value: 0.1,
1396
- description: `Max eV/atom above hull for showing unstable entries in 4D convex hull`,
1397
- minimum: 0,
1398
- maximum: 2,
1399
- },
1400
- max_hull_dist_show_labels: {
1401
- value: 0.1,
1402
- description: `Max eV/atom above hull for labeling unstable entries in 4D convex hull`,
1403
- minimum: 0,
1404
- maximum: 2,
1405
- },
1406
- fullscreen: {
1407
- value: false,
1408
- description: `Start in fullscreen for 4D convex hull`,
1409
- },
1410
- info_pane_open: {
1411
- value: false,
1412
- description: `Info pane open by default for 4D convex hull`,
1413
- },
1414
- legend_pane_open: {
1415
- value: false,
1416
- description: `Legend pane open by default for 4D convex hull`,
1417
- },
1418
1121
  },
1419
1122
  },
1420
1123
  };
@@ -1448,5 +1151,6 @@ export const merge = (user) => ({
1448
1151
  box: merge_nested(DEFAULTS.box, user?.box),
1449
1152
  sankey: merge_nested(DEFAULTS.sankey, user?.sankey),
1450
1153
  sunburst: merge_nested(DEFAULTS.sunburst, user?.sunburst),
1154
+ treemap: merge_nested(DEFAULTS.treemap, user?.treemap),
1451
1155
  convex_hull: merge_nested(DEFAULTS.convex_hull, user?.convex_hull),
1452
1156
  });