matterviz 0.3.4 → 0.3.6

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 (852) hide show
  1. package/.vscode/launch.json +13 -0
  2. package/.vscodeignore +7 -0
  3. package/dist/assets/STLExporter-BpTH3YHE.js +8 -0
  4. package/dist/assets/browser-DdDecX_W.js +1 -0
  5. package/dist/assets/export-qgn-H9y6.js +2 -0
  6. package/dist/assets/main-DiKYzti2.css +1 -0
  7. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  8. package/dist/extension.js +31293 -0
  9. package/dist/src/lib/FilePicker.svelte +360 -0
  10. package/dist/src/lib/MillerIndexInput.svelte +66 -0
  11. package/dist/src/lib/api/mp.ts +26 -0
  12. package/dist/src/lib/api/optimade.ts +204 -0
  13. package/dist/src/lib/app.css +247 -0
  14. package/dist/src/lib/brillouin/BrillouinZone.svelte +549 -0
  15. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
  16. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
  17. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  18. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
  19. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
  20. package/dist/src/lib/brillouin/compute.ts +529 -0
  21. package/dist/src/lib/brillouin/index.ts +8 -0
  22. package/dist/src/lib/brillouin/types.ts +51 -0
  23. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
  24. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  25. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  26. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
  27. package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
  28. package/dist/src/lib/chempot-diagram/color.ts +42 -0
  29. package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
  30. package/dist/src/lib/chempot-diagram/index.ts +6 -0
  31. package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
  32. package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
  33. package/dist/src/lib/chempot-diagram/types.ts +130 -0
  34. package/dist/src/lib/colors/index.ts +249 -0
  35. package/dist/src/lib/composition/BarChart.svelte +297 -0
  36. package/dist/src/lib/composition/BubbleChart.svelte +218 -0
  37. package/dist/src/lib/composition/Composition.svelte +165 -0
  38. package/dist/src/lib/composition/Formula.svelte +268 -0
  39. package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
  40. package/dist/src/lib/composition/PieChart.svelte +323 -0
  41. package/dist/src/lib/composition/format.ts +155 -0
  42. package/dist/src/lib/composition/index.ts +37 -0
  43. package/dist/src/lib/composition/parse.ts +605 -0
  44. package/dist/src/lib/constants.ts +134 -0
  45. package/dist/src/lib/controls.ts +42 -0
  46. package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
  47. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
  48. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
  49. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
  50. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
  51. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
  52. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
  53. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
  54. package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
  55. package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
  56. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
  57. package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
  58. package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
  59. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
  60. package/dist/src/lib/convex-hull/helpers.ts +932 -0
  61. package/dist/src/lib/convex-hull/index.ts +202 -0
  62. package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
  63. package/dist/src/lib/convex-hull/types.ts +267 -0
  64. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
  65. package/dist/src/lib/coordination/calc-coordination.ts +93 -0
  66. package/dist/src/lib/coordination/index.ts +9 -0
  67. package/dist/src/lib/effects.svelte.ts +48 -0
  68. package/dist/src/lib/element/BohrAtom.svelte +147 -0
  69. package/dist/src/lib/element/ElementHeading.svelte +26 -0
  70. package/dist/src/lib/element/ElementPhoto.svelte +57 -0
  71. package/dist/src/lib/element/ElementStats.svelte +80 -0
  72. package/dist/src/lib/element/ElementTile.svelte +484 -0
  73. package/dist/src/lib/element/data.json.gz.d.ts +4 -0
  74. package/dist/src/lib/element/data.ts +14 -0
  75. package/dist/src/lib/element/index.ts +8 -0
  76. package/dist/src/lib/element/types.ts +62 -0
  77. package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
  78. package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
  79. package/dist/src/lib/feedback/index.ts +4 -0
  80. package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
  81. package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
  82. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
  83. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
  84. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  85. package/dist/src/lib/fermi-surface/compute.ts +728 -0
  86. package/dist/src/lib/fermi-surface/constants.ts +32 -0
  87. package/dist/src/lib/fermi-surface/export.ts +64 -0
  88. package/dist/src/lib/fermi-surface/index.ts +14 -0
  89. package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
  90. package/dist/src/lib/fermi-surface/parse.ts +574 -0
  91. package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
  92. package/dist/src/lib/fermi-surface/types.ts +159 -0
  93. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  94. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  95. package/dist/src/lib/heatmap-matrix/index.ts +167 -0
  96. package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
  97. package/dist/src/lib/icons.ts +650 -0
  98. package/dist/src/lib/index.ts +61 -0
  99. package/dist/src/lib/io/decompress.ts +92 -0
  100. package/dist/src/lib/io/export.ts +385 -0
  101. package/dist/src/lib/io/fetch.ts +46 -0
  102. package/dist/src/lib/io/file-drop.ts +51 -0
  103. package/dist/src/lib/io/index.ts +7 -0
  104. package/dist/src/lib/io/is-binary.ts +24 -0
  105. package/dist/src/lib/io/types.ts +8 -0
  106. package/dist/src/lib/io/url-drop.ts +141 -0
  107. package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
  108. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
  109. package/dist/src/lib/isosurface/index.ts +7 -0
  110. package/dist/src/lib/isosurface/parse.ts +656 -0
  111. package/dist/src/lib/isosurface/slice.ts +175 -0
  112. package/dist/src/lib/isosurface/types.ts +309 -0
  113. package/dist/src/lib/labels.ts +320 -0
  114. package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
  115. package/dist/src/lib/layout/InfoCard.svelte +120 -0
  116. package/dist/src/lib/layout/InfoTag.svelte +185 -0
  117. package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
  118. package/dist/src/lib/layout/SettingsSection.svelte +148 -0
  119. package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
  120. package/dist/src/lib/layout/fullscreen.ts +65 -0
  121. package/dist/src/lib/layout/index.ts +11 -0
  122. package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
  123. package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
  124. package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
  125. package/dist/src/lib/layout/json-tree/index.ts +3 -0
  126. package/dist/src/lib/layout/json-tree/types.ts +126 -0
  127. package/dist/src/lib/layout/json-tree/utils.ts +682 -0
  128. package/dist/src/lib/marching-cubes.ts +614 -0
  129. package/dist/src/lib/math.ts +1081 -0
  130. package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
  131. package/dist/src/lib/overlays/CopyButton.svelte +45 -0
  132. package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
  133. package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
  134. package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
  135. package/dist/src/lib/overlays/index.ts +3 -0
  136. package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
  137. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
  138. package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
  139. package/dist/src/lib/periodic-table/index.ts +12 -0
  140. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  141. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
  142. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  143. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  144. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  145. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
  146. package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
  147. package/dist/src/lib/phase-diagram/colors.ts +58 -0
  148. package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
  149. package/dist/src/lib/phase-diagram/index.ts +13 -0
  150. package/dist/src/lib/phase-diagram/parse.ts +348 -0
  151. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
  152. package/dist/src/lib/phase-diagram/types.ts +144 -0
  153. package/dist/src/lib/phase-diagram/utils.ts +775 -0
  154. package/dist/src/lib/plot/AxisLabel.svelte +51 -0
  155. package/dist/src/lib/plot/BarPlot.svelte +2113 -0
  156. package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
  157. package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
  158. package/dist/src/lib/plot/ColorBar.svelte +721 -0
  159. package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
  160. package/dist/src/lib/plot/ElementScatter.svelte +63 -0
  161. package/dist/src/lib/plot/FillArea.svelte +223 -0
  162. package/dist/src/lib/plot/Histogram.svelte +1558 -0
  163. package/dist/src/lib/plot/HistogramControls.svelte +212 -0
  164. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
  165. package/dist/src/lib/plot/Line.svelte +84 -0
  166. package/dist/src/lib/plot/PlotAxis.svelte +169 -0
  167. package/dist/src/lib/plot/PlotControls.svelte +537 -0
  168. package/dist/src/lib/plot/PlotLegend.svelte +569 -0
  169. package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
  170. package/dist/src/lib/plot/PortalSelect.svelte +253 -0
  171. package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
  172. package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
  173. package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
  174. package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
  175. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
  176. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
  177. package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
  178. package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
  179. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
  180. package/dist/src/lib/plot/Surface3D.svelte +197 -0
  181. package/dist/src/lib/plot/ZeroLines.svelte +97 -0
  182. package/dist/src/lib/plot/ZoomRect.svelte +23 -0
  183. package/dist/src/lib/plot/adaptive-density.ts +316 -0
  184. package/dist/src/lib/plot/auto-place.ts +184 -0
  185. package/dist/src/lib/plot/axis-utils.ts +122 -0
  186. package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
  187. package/dist/src/lib/plot/data-cleaning.ts +1069 -0
  188. package/dist/src/lib/plot/data-transform.ts +69 -0
  189. package/dist/src/lib/plot/defaults.ts +9 -0
  190. package/dist/src/lib/plot/fill-utils.ts +494 -0
  191. package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
  192. package/dist/src/lib/plot/index.ts +53 -0
  193. package/dist/src/lib/plot/interactions.ts +119 -0
  194. package/dist/src/lib/plot/layout.ts +425 -0
  195. package/dist/src/lib/plot/reference-line.ts +426 -0
  196. package/dist/src/lib/plot/scales.ts +654 -0
  197. package/dist/src/lib/plot/svg.ts +23 -0
  198. package/dist/src/lib/plot/types.ts +1144 -0
  199. package/dist/src/lib/plot/utils/label-placement.ts +541 -0
  200. package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
  201. package/dist/src/lib/plot/utils.ts +11 -0
  202. package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
  203. package/dist/src/lib/rdf/calc-rdf.ts +167 -0
  204. package/dist/src/lib/rdf/index.ts +27 -0
  205. package/dist/src/lib/sanitize.ts +126 -0
  206. package/dist/src/lib/settings.ts +1479 -0
  207. package/dist/src/lib/spectral/Bands.svelte +1040 -0
  208. package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
  209. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
  210. package/dist/src/lib/spectral/Dos.svelte +697 -0
  211. package/dist/src/lib/spectral/helpers.ts +1381 -0
  212. package/dist/src/lib/spectral/index.ts +8 -0
  213. package/dist/src/lib/spectral/types.ts +112 -0
  214. package/dist/src/lib/state.svelte.ts +64 -0
  215. package/dist/src/lib/structure/Arrow.svelte +72 -0
  216. package/dist/src/lib/structure/AtomLegend.svelte +815 -0
  217. package/dist/src/lib/structure/Bond.svelte +140 -0
  218. package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
  219. package/dist/src/lib/structure/CellSelect.svelte +349 -0
  220. package/dist/src/lib/structure/Cylinder.svelte +45 -0
  221. package/dist/src/lib/structure/Lattice.svelte +196 -0
  222. package/dist/src/lib/structure/Structure.svelte +2248 -0
  223. package/dist/src/lib/structure/StructureControls.svelte +1273 -0
  224. package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
  225. package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
  226. package/dist/src/lib/structure/StructureScene.svelte +2255 -0
  227. package/dist/src/lib/structure/atom-properties.ts +316 -0
  228. package/dist/src/lib/structure/bond-order-perception.ts +447 -0
  229. package/dist/src/lib/structure/bonding.ts +944 -0
  230. package/dist/src/lib/structure/export.ts +861 -0
  231. package/dist/src/lib/structure/index.ts +291 -0
  232. package/dist/src/lib/structure/label-placement.ts +130 -0
  233. package/dist/src/lib/structure/measure.ts +45 -0
  234. package/dist/src/lib/structure/parse.ts +1705 -0
  235. package/dist/src/lib/structure/partial-occupancy.ts +183 -0
  236. package/dist/src/lib/structure/pbc.ts +164 -0
  237. package/dist/src/lib/structure/supercell.ts +226 -0
  238. package/dist/src/lib/structure/validation.ts +11 -0
  239. package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
  240. package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
  241. package/dist/src/lib/symmetry/cell-transform.ts +118 -0
  242. package/dist/src/lib/symmetry/index.ts +348 -0
  243. package/dist/src/lib/symmetry/spacegroups.ts +404 -0
  244. package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
  245. package/dist/src/lib/table/ToggleMenu.svelte +385 -0
  246. package/dist/src/lib/table/index.ts +139 -0
  247. package/dist/src/lib/theme/ThemeControl.svelte +53 -0
  248. package/dist/src/lib/theme/index.ts +107 -0
  249. package/dist/src/lib/theme/themes.mjs +297 -0
  250. package/dist/src/lib/time.ts +71 -0
  251. package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
  252. package/dist/src/lib/tooltip/index.ts +2 -0
  253. package/dist/src/lib/tooltip/types.ts +13 -0
  254. package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
  255. package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
  256. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
  257. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
  258. package/dist/src/lib/trajectory/constants.ts +7 -0
  259. package/dist/src/lib/trajectory/extract.ts +196 -0
  260. package/dist/src/lib/trajectory/format-detect.ts +96 -0
  261. package/dist/src/lib/trajectory/frame-reader.ts +456 -0
  262. package/dist/src/lib/trajectory/helpers.ts +217 -0
  263. package/dist/src/lib/trajectory/index.ts +218 -0
  264. package/dist/src/lib/trajectory/parse/ase.ts +109 -0
  265. package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
  266. package/dist/src/lib/trajectory/parse/index.ts +411 -0
  267. package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
  268. package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
  269. package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
  270. package/dist/src/lib/trajectory/plotting.ts +599 -0
  271. package/dist/src/lib/trajectory/types.ts +13 -0
  272. package/dist/src/lib/utils.ts +56 -0
  273. package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
  274. package/dist/src/lib/xrd/broadening.ts +130 -0
  275. package/dist/src/lib/xrd/calc-xrd.ts +397 -0
  276. package/dist/src/lib/xrd/index.ts +38 -0
  277. package/dist/src/lib/xrd/parse.ts +858 -0
  278. package/dist/webview.js +29421 -0
  279. package/icon.png +0 -0
  280. package/license +1 -1
  281. package/matterviz-0.3.2.vsix +0 -0
  282. package/matterviz-0.3.4.vsix +0 -0
  283. package/matterviz-0.3.5.vsix +0 -0
  284. package/package.json +1461 -231
  285. package/readme.md +171 -98
  286. package/scripts/sync-config.ts +101 -0
  287. package/src/declarations.d.ts +2 -0
  288. package/src/extension.ts +972 -0
  289. package/src/node-io.ts +65 -0
  290. package/src/types.ts +17 -0
  291. package/src/webview/JsonBrowser.svelte +1079 -0
  292. package/src/webview/PlotPanel.svelte +346 -0
  293. package/src/webview/detect.ts +444 -0
  294. package/src/webview/main.ts +764 -0
  295. package/src/webview/plot-utils.ts +250 -0
  296. package/test-fixtures/all-viz-types.json.gz +0 -0
  297. package/test-fixtures/plot-demo-data.json.gz +0 -0
  298. package/tests/detect.test.ts +604 -0
  299. package/tests/extension.test.ts +2041 -0
  300. package/tests/node-io.test.ts +39 -0
  301. package/tests/plot-utils.test.ts +302 -0
  302. package/tests/vite-plugin-json-gz.test.ts +114 -0
  303. package/tests/vscode-mock.ts +18 -0
  304. package/tests/webview.test.ts +231 -0
  305. package/tsconfig.json +20 -0
  306. package/vite-plugin-json-gz.ts +29 -0
  307. package/vite.config.ts +34 -0
  308. package/vite.extension.config.ts +34 -0
  309. package/dist/EmptyState.svelte.d.ts +0 -9
  310. package/dist/FilePicker.svelte +0 -360
  311. package/dist/FilePicker.svelte.d.ts +0 -17
  312. package/dist/Icon.svelte.d.ts +0 -13
  313. package/dist/MillerIndexInput.svelte +0 -66
  314. package/dist/MillerIndexInput.svelte.d.ts +0 -7
  315. package/dist/api/mp.d.ts +0 -6
  316. package/dist/api/mp.js +0 -22
  317. package/dist/api/optimade.d.ts +0 -45
  318. package/dist/api/optimade.js +0 -135
  319. package/dist/app.css +0 -240
  320. package/dist/brillouin/BrillouinZone.svelte +0 -543
  321. package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
  322. package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
  323. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
  324. package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
  325. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
  326. package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  327. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
  328. package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
  329. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
  330. package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
  331. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
  332. package/dist/brillouin/compute.d.ts +0 -17
  333. package/dist/brillouin/compute.js +0 -422
  334. package/dist/brillouin/index.d.ts +0 -8
  335. package/dist/brillouin/index.js +0 -8
  336. package/dist/brillouin/types.d.ts +0 -48
  337. package/dist/brillouin/types.js +0 -1
  338. package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
  339. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
  340. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
  341. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
  342. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
  343. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
  344. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
  345. package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
  346. package/dist/chempot-diagram/async-compute.svelte.js +0 -77
  347. package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
  348. package/dist/chempot-diagram/chempot-worker.js +0 -11
  349. package/dist/chempot-diagram/color.d.ts +0 -10
  350. package/dist/chempot-diagram/color.js +0 -32
  351. package/dist/chempot-diagram/compute.d.ts +0 -48
  352. package/dist/chempot-diagram/compute.js +0 -812
  353. package/dist/chempot-diagram/index.d.ts +0 -6
  354. package/dist/chempot-diagram/index.js +0 -6
  355. package/dist/chempot-diagram/pointer.d.ts +0 -16
  356. package/dist/chempot-diagram/pointer.js +0 -40
  357. package/dist/chempot-diagram/temperature.d.ts +0 -15
  358. package/dist/chempot-diagram/temperature.js +0 -36
  359. package/dist/chempot-diagram/types.d.ts +0 -86
  360. package/dist/chempot-diagram/types.js +0 -28
  361. package/dist/colors/index.d.ts +0 -47
  362. package/dist/colors/index.js +0 -203
  363. package/dist/composition/BarChart.svelte +0 -297
  364. package/dist/composition/BarChart.svelte.d.ts +0 -39
  365. package/dist/composition/BubbleChart.svelte +0 -218
  366. package/dist/composition/BubbleChart.svelte.d.ts +0 -28
  367. package/dist/composition/Composition.svelte +0 -164
  368. package/dist/composition/Composition.svelte.d.ts +0 -15
  369. package/dist/composition/Formula.svelte +0 -265
  370. package/dist/composition/Formula.svelte.d.ts +0 -19
  371. package/dist/composition/FormulaFilter.svelte +0 -1259
  372. package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
  373. package/dist/composition/PieChart.svelte +0 -323
  374. package/dist/composition/PieChart.svelte.d.ts +0 -37
  375. package/dist/composition/format.d.ts +0 -15
  376. package/dist/composition/format.js +0 -109
  377. package/dist/composition/index.d.ts +0 -20
  378. package/dist/composition/index.js +0 -14
  379. package/dist/composition/parse.d.ts +0 -55
  380. package/dist/composition/parse.js +0 -459
  381. package/dist/constants.d.ts +0 -29
  382. package/dist/constants.js +0 -105
  383. package/dist/controls.d.ts +0 -14
  384. package/dist/controls.js +0 -30
  385. package/dist/convex-hull/ConvexHull.svelte +0 -157
  386. package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
  387. package/dist/convex-hull/ConvexHull2D.svelte +0 -813
  388. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
  389. package/dist/convex-hull/ConvexHull3D.svelte +0 -1788
  390. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
  391. package/dist/convex-hull/ConvexHull4D.svelte +0 -1374
  392. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
  393. package/dist/convex-hull/ConvexHullControls.svelte +0 -546
  394. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
  395. package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -115
  396. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
  397. package/dist/convex-hull/ConvexHullStats.svelte +0 -905
  398. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
  399. package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
  400. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
  401. package/dist/convex-hull/GasPressureControls.svelte +0 -247
  402. package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
  403. package/dist/convex-hull/StructurePopup.svelte +0 -116
  404. package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
  405. package/dist/convex-hull/TemperatureSlider.svelte +0 -137
  406. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
  407. package/dist/convex-hull/barycentric-coords.d.ts +0 -18
  408. package/dist/convex-hull/barycentric-coords.js +0 -182
  409. package/dist/convex-hull/demo-temperature.d.ts +0 -6
  410. package/dist/convex-hull/demo-temperature.js +0 -40
  411. package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
  412. package/dist/convex-hull/gas-thermodynamics.js +0 -316
  413. package/dist/convex-hull/helpers.d.ts +0 -103
  414. package/dist/convex-hull/helpers.js +0 -671
  415. package/dist/convex-hull/index.d.ts +0 -118
  416. package/dist/convex-hull/index.js +0 -57
  417. package/dist/convex-hull/thermodynamics.d.ts +0 -66
  418. package/dist/convex-hull/thermodynamics.js +0 -1752
  419. package/dist/convex-hull/types.d.ts +0 -162
  420. package/dist/convex-hull/types.js +0 -36
  421. package/dist/coordination/CoordinationBarPlot.svelte +0 -311
  422. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
  423. package/dist/coordination/calc-coordination.d.ts +0 -15
  424. package/dist/coordination/calc-coordination.js +0 -63
  425. package/dist/coordination/index.d.ts +0 -8
  426. package/dist/coordination/index.js +0 -7
  427. package/dist/element/BohrAtom.svelte +0 -149
  428. package/dist/element/BohrAtom.svelte.d.ts +0 -20
  429. package/dist/element/ElementHeading.svelte +0 -26
  430. package/dist/element/ElementHeading.svelte.d.ts +0 -8
  431. package/dist/element/ElementPhoto.svelte +0 -57
  432. package/dist/element/ElementPhoto.svelte.d.ts +0 -9
  433. package/dist/element/ElementStats.svelte +0 -80
  434. package/dist/element/ElementStats.svelte.d.ts +0 -8
  435. package/dist/element/ElementTile.svelte +0 -484
  436. package/dist/element/ElementTile.svelte.d.ts +0 -29
  437. package/dist/element/Nucleus.svelte.d.ts +0 -17
  438. package/dist/element/data.d.ts +0 -3
  439. package/dist/element/data.js +0 -2
  440. package/dist/element/data.json.gz.d.ts +0 -2
  441. package/dist/element/index.d.ts +0 -8
  442. package/dist/element/index.js +0 -8
  443. package/dist/element/types.d.ts +0 -57
  444. package/dist/element/types.js +0 -1
  445. package/dist/feedback/ClickFeedback.svelte +0 -58
  446. package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
  447. package/dist/feedback/DragOverlay.svelte +0 -42
  448. package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
  449. package/dist/feedback/Spinner.svelte.d.ts +0 -7
  450. package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
  451. package/dist/feedback/index.d.ts +0 -4
  452. package/dist/feedback/index.js +0 -4
  453. package/dist/fermi-surface/FermiSlice.svelte +0 -189
  454. package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
  455. package/dist/fermi-surface/FermiSurface.svelte +0 -597
  456. package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
  457. package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
  458. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
  459. package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
  460. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
  461. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  462. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
  463. package/dist/fermi-surface/compute.d.ts +0 -5
  464. package/dist/fermi-surface/compute.js +0 -538
  465. package/dist/fermi-surface/constants.d.ts +0 -9
  466. package/dist/fermi-surface/constants.js +0 -27
  467. package/dist/fermi-surface/export.d.ts +0 -5
  468. package/dist/fermi-surface/export.js +0 -63
  469. package/dist/fermi-surface/index.d.ts +0 -12
  470. package/dist/fermi-surface/index.js +0 -13
  471. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  472. package/dist/fermi-surface/marching-cubes.js +0 -2
  473. package/dist/fermi-surface/parse.d.ts +0 -2
  474. package/dist/fermi-surface/parse.js +0 -495
  475. package/dist/fermi-surface/symmetry.d.ts +0 -3
  476. package/dist/fermi-surface/symmetry.js +0 -46
  477. package/dist/fermi-surface/types.d.ts +0 -113
  478. package/dist/fermi-surface/types.js +0 -4
  479. package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
  480. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
  481. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  482. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
  483. package/dist/heatmap-matrix/index.d.ts +0 -53
  484. package/dist/heatmap-matrix/index.js +0 -100
  485. package/dist/heatmap-matrix/shared.d.ts +0 -2
  486. package/dist/heatmap-matrix/shared.js +0 -4
  487. package/dist/icons.d.ts +0 -569
  488. package/dist/icons.js +0 -648
  489. package/dist/index.d.ts +0 -39
  490. package/dist/index.js +0 -39
  491. package/dist/io/decompress.d.ts +0 -10
  492. package/dist/io/decompress.js +0 -69
  493. package/dist/io/export.d.ts +0 -16
  494. package/dist/io/export.js +0 -312
  495. package/dist/io/fetch.d.ts +0 -5
  496. package/dist/io/fetch.js +0 -39
  497. package/dist/io/file-drop.d.ts +0 -7
  498. package/dist/io/file-drop.js +0 -43
  499. package/dist/io/index.d.ts +0 -7
  500. package/dist/io/index.js +0 -7
  501. package/dist/io/is-binary.d.ts +0 -1
  502. package/dist/io/is-binary.js +0 -5
  503. package/dist/io/types.d.ts +0 -8
  504. package/dist/io/types.js +0 -1
  505. package/dist/io/url-drop.d.ts +0 -2
  506. package/dist/io/url-drop.js +0 -117
  507. package/dist/isosurface/Isosurface.svelte +0 -285
  508. package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
  509. package/dist/isosurface/IsosurfaceControls.svelte +0 -291
  510. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
  511. package/dist/isosurface/index.d.ts +0 -5
  512. package/dist/isosurface/index.js +0 -6
  513. package/dist/isosurface/parse.d.ts +0 -6
  514. package/dist/isosurface/parse.js +0 -553
  515. package/dist/isosurface/slice.d.ts +0 -11
  516. package/dist/isosurface/slice.js +0 -140
  517. package/dist/isosurface/types.d.ts +0 -56
  518. package/dist/isosurface/types.js +0 -227
  519. package/dist/labels.d.ts +0 -53
  520. package/dist/labels.js +0 -274
  521. package/dist/layout/FullscreenToggle.svelte +0 -50
  522. package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
  523. package/dist/layout/InfoCard.svelte +0 -120
  524. package/dist/layout/InfoCard.svelte.d.ts +0 -21
  525. package/dist/layout/InfoTag.svelte +0 -183
  526. package/dist/layout/InfoTag.svelte.d.ts +0 -19
  527. package/dist/layout/PropertyFilter.svelte +0 -244
  528. package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
  529. package/dist/layout/SettingsSection.svelte +0 -148
  530. package/dist/layout/SettingsSection.svelte.d.ts +0 -17
  531. package/dist/layout/SubpageGrid.svelte +0 -82
  532. package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
  533. package/dist/layout/fullscreen.d.ts +0 -9
  534. package/dist/layout/fullscreen.js +0 -53
  535. package/dist/layout/index.d.ts +0 -10
  536. package/dist/layout/index.js +0 -8
  537. package/dist/layout/json-tree/JsonNode.svelte +0 -547
  538. package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
  539. package/dist/layout/json-tree/JsonTree.svelte +0 -1222
  540. package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
  541. package/dist/layout/json-tree/JsonValue.svelte +0 -334
  542. package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
  543. package/dist/layout/json-tree/index.d.ts +0 -3
  544. package/dist/layout/json-tree/index.js +0 -3
  545. package/dist/layout/json-tree/types.d.ts +0 -73
  546. package/dist/layout/json-tree/types.js +0 -3
  547. package/dist/layout/json-tree/utils.d.ts +0 -29
  548. package/dist/layout/json-tree/utils.js +0 -648
  549. package/dist/marching-cubes.d.ts +0 -14
  550. package/dist/marching-cubes.js +0 -542
  551. package/dist/math.d.ts +0 -91
  552. package/dist/math.js +0 -896
  553. package/dist/overlays/ContextMenu.svelte +0 -162
  554. package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
  555. package/dist/overlays/DraggablePane.svelte +0 -564
  556. package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
  557. package/dist/overlays/index.d.ts +0 -2
  558. package/dist/overlays/index.js +0 -2
  559. package/dist/periodic-table/PeriodicTable.svelte +0 -469
  560. package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
  561. package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
  562. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
  563. package/dist/periodic-table/PropertySelect.svelte +0 -37
  564. package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
  565. package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
  566. package/dist/periodic-table/index.d.ts +0 -10
  567. package/dist/periodic-table/index.js +0 -4
  568. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  569. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
  570. package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -451
  571. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
  572. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  573. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
  574. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
  575. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
  576. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
  577. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
  578. package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
  579. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
  580. package/dist/phase-diagram/build-diagram.d.ts +0 -11
  581. package/dist/phase-diagram/build-diagram.js +0 -167
  582. package/dist/phase-diagram/colors.d.ts +0 -35
  583. package/dist/phase-diagram/colors.js +0 -51
  584. package/dist/phase-diagram/diagram-input.d.ts +0 -33
  585. package/dist/phase-diagram/diagram-input.js +0 -3
  586. package/dist/phase-diagram/index.d.ts +0 -13
  587. package/dist/phase-diagram/index.js +0 -13
  588. package/dist/phase-diagram/parse.d.ts +0 -55
  589. package/dist/phase-diagram/parse.js +0 -276
  590. package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
  591. package/dist/phase-diagram/svg-to-diagram.js +0 -869
  592. package/dist/phase-diagram/types.d.ts +0 -99
  593. package/dist/phase-diagram/types.js +0 -1
  594. package/dist/phase-diagram/utils.d.ts +0 -118
  595. package/dist/phase-diagram/utils.js +0 -606
  596. package/dist/plot/AxisLabel.svelte +0 -51
  597. package/dist/plot/AxisLabel.svelte.d.ts +0 -16
  598. package/dist/plot/BarPlot.svelte +0 -2256
  599. package/dist/plot/BarPlot.svelte.d.ts +0 -82
  600. package/dist/plot/BarPlotControls.svelte +0 -66
  601. package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
  602. package/dist/plot/ColorBar.svelte +0 -719
  603. package/dist/plot/ColorBar.svelte.d.ts +0 -31
  604. package/dist/plot/ColorScaleSelect.svelte +0 -54
  605. package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
  606. package/dist/plot/ElementScatter.svelte +0 -63
  607. package/dist/plot/ElementScatter.svelte.d.ts +0 -14
  608. package/dist/plot/FillArea.svelte +0 -226
  609. package/dist/plot/FillArea.svelte.d.ts +0 -20
  610. package/dist/plot/Histogram.svelte +0 -1654
  611. package/dist/plot/Histogram.svelte.d.ts +0 -50
  612. package/dist/plot/HistogramControls.svelte +0 -212
  613. package/dist/plot/HistogramControls.svelte.d.ts +0 -22
  614. package/dist/plot/InteractiveAxisLabel.svelte +0 -94
  615. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
  616. package/dist/plot/Line.svelte +0 -85
  617. package/dist/plot/Line.svelte.d.ts +0 -15
  618. package/dist/plot/PlotControls.svelte +0 -537
  619. package/dist/plot/PlotControls.svelte.d.ts +0 -4
  620. package/dist/plot/PlotLegend.svelte +0 -498
  621. package/dist/plot/PlotLegend.svelte.d.ts +0 -25
  622. package/dist/plot/PlotTooltip.svelte +0 -67
  623. package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
  624. package/dist/plot/PortalSelect.svelte +0 -253
  625. package/dist/plot/PortalSelect.svelte.d.ts +0 -16
  626. package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
  627. package/dist/plot/ReferenceLine3D.svelte +0 -154
  628. package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
  629. package/dist/plot/ReferencePlane.svelte +0 -178
  630. package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
  631. package/dist/plot/ScatterPlot.svelte +0 -2831
  632. package/dist/plot/ScatterPlot.svelte.d.ts +0 -92
  633. package/dist/plot/ScatterPlot3D.svelte +0 -499
  634. package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
  635. package/dist/plot/ScatterPlot3DControls.svelte +0 -437
  636. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
  637. package/dist/plot/ScatterPlot3DScene.svelte +0 -912
  638. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
  639. package/dist/plot/ScatterPlotControls.svelte +0 -307
  640. package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
  641. package/dist/plot/ScatterPoint.svelte +0 -185
  642. package/dist/plot/ScatterPoint.svelte.d.ts +0 -19
  643. package/dist/plot/SpacegroupBarPlot.svelte +0 -292
  644. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
  645. package/dist/plot/Surface3D.svelte +0 -200
  646. package/dist/plot/Surface3D.svelte.d.ts +0 -13
  647. package/dist/plot/ZeroLines.svelte +0 -96
  648. package/dist/plot/ZeroLines.svelte.d.ts +0 -32
  649. package/dist/plot/ZoomRect.svelte +0 -23
  650. package/dist/plot/ZoomRect.svelte.d.ts +0 -8
  651. package/dist/plot/axis-utils.d.ts +0 -19
  652. package/dist/plot/axis-utils.js +0 -80
  653. package/dist/plot/data-cleaning.d.ts +0 -37
  654. package/dist/plot/data-cleaning.js +0 -855
  655. package/dist/plot/data-transform.d.ts +0 -16
  656. package/dist/plot/data-transform.js +0 -45
  657. package/dist/plot/defaults.d.ts +0 -19
  658. package/dist/plot/defaults.js +0 -9
  659. package/dist/plot/fill-utils.d.ts +0 -51
  660. package/dist/plot/fill-utils.js +0 -337
  661. package/dist/plot/hover-lock.svelte.d.ts +0 -14
  662. package/dist/plot/hover-lock.svelte.js +0 -46
  663. package/dist/plot/index.d.ts +0 -43
  664. package/dist/plot/index.js +0 -37
  665. package/dist/plot/interactions.d.ts +0 -12
  666. package/dist/plot/interactions.js +0 -100
  667. package/dist/plot/layout.d.ts +0 -60
  668. package/dist/plot/layout.js +0 -230
  669. package/dist/plot/reference-line.d.ts +0 -60
  670. package/dist/plot/reference-line.js +0 -316
  671. package/dist/plot/scales.d.ts +0 -48
  672. package/dist/plot/scales.js +0 -484
  673. package/dist/plot/svg.d.ts +0 -1
  674. package/dist/plot/svg.js +0 -11
  675. package/dist/plot/types.d.ts +0 -863
  676. package/dist/plot/types.js +0 -103
  677. package/dist/plot/utils/label-placement.d.ts +0 -47
  678. package/dist/plot/utils/label-placement.js +0 -256
  679. package/dist/plot/utils/series-visibility.d.ts +0 -9
  680. package/dist/plot/utils/series-visibility.js +0 -67
  681. package/dist/plot/utils.d.ts +0 -1
  682. package/dist/plot/utils.js +0 -14
  683. package/dist/rdf/RdfPlot.svelte +0 -247
  684. package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
  685. package/dist/rdf/calc-rdf.d.ts +0 -4
  686. package/dist/rdf/calc-rdf.js +0 -111
  687. package/dist/rdf/index.d.ts +0 -23
  688. package/dist/rdf/index.js +0 -2
  689. package/dist/sanitize.d.ts +0 -4
  690. package/dist/sanitize.js +0 -107
  691. package/dist/settings.d.ts +0 -253
  692. package/dist/settings.js +0 -1123
  693. package/dist/spectral/Bands.svelte +0 -1040
  694. package/dist/spectral/Bands.svelte.d.ts +0 -40
  695. package/dist/spectral/BandsAndDos.svelte +0 -128
  696. package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
  697. package/dist/spectral/BrillouinBandsDos.svelte +0 -248
  698. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
  699. package/dist/spectral/Dos.svelte +0 -697
  700. package/dist/spectral/Dos.svelte.d.ts +0 -29
  701. package/dist/spectral/helpers.d.ts +0 -117
  702. package/dist/spectral/helpers.js +0 -1023
  703. package/dist/spectral/index.d.ts +0 -6
  704. package/dist/spectral/index.js +0 -7
  705. package/dist/spectral/types.d.ts +0 -84
  706. package/dist/spectral/types.js +0 -2
  707. package/dist/state.svelte.d.ts +0 -25
  708. package/dist/state.svelte.js +0 -45
  709. package/dist/structure/Arrow.svelte +0 -72
  710. package/dist/structure/Arrow.svelte.d.ts +0 -15
  711. package/dist/structure/AtomLegend.svelte +0 -798
  712. package/dist/structure/AtomLegend.svelte.d.ts +0 -34
  713. package/dist/structure/Bond.svelte +0 -140
  714. package/dist/structure/Bond.svelte.d.ts +0 -9
  715. package/dist/structure/CanvasTooltip.svelte +0 -33
  716. package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
  717. package/dist/structure/CellSelect.svelte +0 -351
  718. package/dist/structure/CellSelect.svelte.d.ts +0 -13
  719. package/dist/structure/Cylinder.svelte +0 -45
  720. package/dist/structure/Cylinder.svelte.d.ts +0 -10
  721. package/dist/structure/Lattice.svelte +0 -196
  722. package/dist/structure/Lattice.svelte.d.ts +0 -17
  723. package/dist/structure/Structure.svelte +0 -1857
  724. package/dist/structure/Structure.svelte.d.ts +0 -83
  725. package/dist/structure/StructureControls.svelte +0 -1184
  726. package/dist/structure/StructureControls.svelte.d.ts +0 -31
  727. package/dist/structure/StructureExportPane.svelte +0 -251
  728. package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
  729. package/dist/structure/StructureInfoPane.svelte +0 -434
  730. package/dist/structure/StructureInfoPane.svelte.d.ts +0 -18
  731. package/dist/structure/StructureScene.svelte +0 -1574
  732. package/dist/structure/StructureScene.svelte.d.ts +0 -104
  733. package/dist/structure/atom-properties.d.ts +0 -37
  734. package/dist/structure/atom-properties.js +0 -198
  735. package/dist/structure/bonding.d.ts +0 -33
  736. package/dist/structure/bonding.js +0 -304
  737. package/dist/structure/export.d.ts +0 -20
  738. package/dist/structure/export.js +0 -725
  739. package/dist/structure/ferrox-wasm-types.d.ts +0 -46
  740. package/dist/structure/ferrox-wasm-types.js +0 -18
  741. package/dist/structure/ferrox-wasm.d.ts +0 -94
  742. package/dist/structure/ferrox-wasm.js +0 -249
  743. package/dist/structure/index.d.ts +0 -110
  744. package/dist/structure/index.js +0 -168
  745. package/dist/structure/measure.d.ts +0 -6
  746. package/dist/structure/measure.js +0 -29
  747. package/dist/structure/parse.d.ts +0 -65
  748. package/dist/structure/parse.js +0 -1374
  749. package/dist/structure/partial-occupancy.d.ts +0 -25
  750. package/dist/structure/partial-occupancy.js +0 -99
  751. package/dist/structure/pbc.d.ts +0 -9
  752. package/dist/structure/pbc.js +0 -123
  753. package/dist/structure/supercell.d.ts +0 -8
  754. package/dist/structure/supercell.js +0 -137
  755. package/dist/structure/validation.d.ts +0 -2
  756. package/dist/structure/validation.js +0 -10
  757. package/dist/symmetry/SymmetryStats.svelte +0 -226
  758. package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
  759. package/dist/symmetry/WyckoffTable.svelte +0 -113
  760. package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
  761. package/dist/symmetry/cell-transform.d.ts +0 -12
  762. package/dist/symmetry/cell-transform.js +0 -77
  763. package/dist/symmetry/index.d.ts +0 -43
  764. package/dist/symmetry/index.js +0 -229
  765. package/dist/symmetry/spacegroups.d.ts +0 -9
  766. package/dist/symmetry/spacegroups.js +0 -394
  767. package/dist/table/HeatmapTable.svelte +0 -1854
  768. package/dist/table/HeatmapTable.svelte.d.ts +0 -49
  769. package/dist/table/ToggleMenu.svelte +0 -376
  770. package/dist/table/ToggleMenu.svelte.d.ts +0 -11
  771. package/dist/table/index.d.ts +0 -74
  772. package/dist/table/index.js +0 -38
  773. package/dist/theme/ThemeControl.svelte +0 -53
  774. package/dist/theme/ThemeControl.svelte.d.ts +0 -9
  775. package/dist/theme/index.d.ts +0 -29
  776. package/dist/theme/index.js +0 -79
  777. package/dist/theme/themes.mjs +0 -285
  778. package/dist/time.d.ts +0 -4
  779. package/dist/time.js +0 -70
  780. package/dist/tooltip/TooltipContent.svelte +0 -58
  781. package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
  782. package/dist/tooltip/index.d.ts +0 -2
  783. package/dist/tooltip/index.js +0 -2
  784. package/dist/tooltip/types.d.ts +0 -8
  785. package/dist/tooltip/types.js +0 -1
  786. package/dist/trajectory/Trajectory.svelte +0 -1517
  787. package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
  788. package/dist/trajectory/TrajectoryError.svelte +0 -128
  789. package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
  790. package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
  791. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
  792. package/dist/trajectory/TrajectoryInfoPane.svelte +0 -387
  793. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
  794. package/dist/trajectory/constants.d.ts +0 -6
  795. package/dist/trajectory/constants.js +0 -7
  796. package/dist/trajectory/extract.d.ts +0 -5
  797. package/dist/trajectory/extract.js +0 -162
  798. package/dist/trajectory/format-detect.d.ts +0 -9
  799. package/dist/trajectory/format-detect.js +0 -76
  800. package/dist/trajectory/frame-reader.d.ts +0 -17
  801. package/dist/trajectory/frame-reader.js +0 -332
  802. package/dist/trajectory/helpers.d.ts +0 -14
  803. package/dist/trajectory/helpers.js +0 -172
  804. package/dist/trajectory/index.d.ts +0 -63
  805. package/dist/trajectory/index.js +0 -126
  806. package/dist/trajectory/parse/ase.d.ts +0 -2
  807. package/dist/trajectory/parse/ase.js +0 -77
  808. package/dist/trajectory/parse/hdf5.d.ts +0 -2
  809. package/dist/trajectory/parse/hdf5.js +0 -129
  810. package/dist/trajectory/parse/index.d.ts +0 -12
  811. package/dist/trajectory/parse/index.js +0 -299
  812. package/dist/trajectory/parse/lammps.d.ts +0 -5
  813. package/dist/trajectory/parse/lammps.js +0 -179
  814. package/dist/trajectory/parse/vasp.d.ts +0 -2
  815. package/dist/trajectory/parse/vasp.js +0 -68
  816. package/dist/trajectory/parse/xyz.d.ts +0 -2
  817. package/dist/trajectory/parse/xyz.js +0 -110
  818. package/dist/trajectory/plotting.d.ts +0 -28
  819. package/dist/trajectory/plotting.js +0 -423
  820. package/dist/trajectory/types.d.ts +0 -11
  821. package/dist/trajectory/types.js +0 -1
  822. package/dist/utils.d.ts +0 -5
  823. package/dist/utils.js +0 -36
  824. package/dist/xrd/XrdPlot.svelte +0 -615
  825. package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
  826. package/dist/xrd/broadening.d.ts +0 -20
  827. package/dist/xrd/broadening.js +0 -97
  828. package/dist/xrd/calc-xrd.d.ts +0 -37
  829. package/dist/xrd/calc-xrd.js +0 -337
  830. package/dist/xrd/index.d.ts +0 -37
  831. package/dist/xrd/index.js +0 -4
  832. package/dist/xrd/parse.d.ts +0 -13
  833. package/dist/xrd/parse.js +0 -749
  834. /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
  835. /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
  836. /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
  837. /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
  838. /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
  839. /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
  840. /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
  841. /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
  842. /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
  843. /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
  844. /package/dist/{element → src/lib/element}/data.json +0 -0
  845. /package/dist/{element → src/lib/element}/data.json.gz +0 -0
  846. /package/dist/{element → src/lib/element}/data.schema.json +0 -0
  847. /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
  848. /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
  849. /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
  850. /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
  851. /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
  852. /package/dist/{xrd → src/lib/xrd}/atomic_scattering_params.json +0 -0
@@ -0,0 +1,1479 @@
1
+ // MatterViz settings schema - single source of truth for all MatterViz settings
2
+ // Used by both main package and VSCode extension
3
+
4
+ import type { ColorScaleType, D3InterpolateName } from '$lib/colors'
5
+ import type { HullFaceColorMode } from '$lib/convex-hull/types'
6
+ import type { D3SymbolName } from '$lib/labels'
7
+ import { symbol_names } from '$lib/labels'
8
+ import type { Vec3 } from '$lib/math'
9
+ import type { Orientation } from '$lib/plot'
10
+ import type { BondingStrategy } from '$lib/structure/bonding'
11
+ import { merge_nested } from './utils'
12
+
13
+ // SettingType interface with optional context to control where settings apply
14
+ // context: 'web' = web browser only, 'editor' = VSCode extension only, 'notebook' = Jupyter/marimo only, 'all' or undefined = all contexts
15
+ export interface SettingType<T = unknown> {
16
+ value: T
17
+ description: string
18
+ enum?: Readonly<Record<Extract<T, string>, string>>
19
+ minimum?: number
20
+ maximum?: number
21
+ minItems?: number
22
+ maxItems?: number
23
+ context?: `web` | `editor` | `notebook` | `all`
24
+ }
25
+
26
+ export const SHOW_BONDS_OPTIONS = [`never`, `always`, `crystals`, `molecules`] as const
27
+ export type ShowBonds = (typeof SHOW_BONDS_OPTIONS)[number]
28
+
29
+ export type CameraProjection = `perspective` | `orthographic`
30
+
31
+ export const VECTOR_COLOR_MODES = [
32
+ `auto`,
33
+ `element`,
34
+ `spin_direction`,
35
+ `magnitude`,
36
+ `uniform`,
37
+ ] as const
38
+ export type VectorColorMode = (typeof VECTOR_COLOR_MODES)[number]
39
+
40
+ // Per-key configuration for site vector layers (force, magmom, spin, etc.)
41
+ export type VectorLayerConfig = {
42
+ visible: boolean
43
+ color: string | null // null = auto from palette
44
+ scale: number | null // null = use global scale only (multiplier of 1.0)
45
+ }
46
+
47
+ export const ATOM_COLOR_MODE_OPTIONS = [
48
+ `element`,
49
+ `coordination`,
50
+ `wyckoff`,
51
+ `custom`,
52
+ ] as const
53
+ export type AtomColorMode = (typeof ATOM_COLOR_MODE_OPTIONS)[number]
54
+
55
+ // Reusable type definitions for common setting patterns
56
+ type DisplayConfigType = {
57
+ x_grid: SettingType<boolean>
58
+ y_grid: SettingType<boolean>
59
+ y2_grid: SettingType<boolean>
60
+ x_zero_line: SettingType<boolean>
61
+ y_zero_line: SettingType<boolean>
62
+ }
63
+
64
+ type BarStyleType = {
65
+ color: SettingType<string>
66
+ opacity: SettingType<number>
67
+ stroke_width: SettingType<number>
68
+ stroke_color: SettingType<string>
69
+ stroke_opacity: SettingType<number>
70
+ }
71
+
72
+ type PointStyleType = {
73
+ size: SettingType<number>
74
+ color: SettingType<string>
75
+ opacity: SettingType<number>
76
+ stroke_width: SettingType<number>
77
+ stroke_color: SettingType<string>
78
+ stroke_opacity: SettingType<number>
79
+ }
80
+
81
+ type LineStyleType = {
82
+ width: SettingType<number>
83
+ color: SettingType<string>
84
+ opacity: SettingType<number>
85
+ dash: SettingType<string>
86
+ }
87
+
88
+ type SimpleBarStyleType = {
89
+ color: SettingType<string>
90
+ opacity: SettingType<number>
91
+ border_radius: SettingType<number>
92
+ }
93
+
94
+ type SimpleLineStyleType = { width: SettingType<number>; color: SettingType<string> }
95
+
96
+ type ConvexHullCommonType = {
97
+ camera_zoom: SettingType<number>
98
+ camera_center_x: SettingType<number>
99
+ camera_center_y: SettingType<number>
100
+ color_mode: SettingType<`stability` | `energy`>
101
+ color_scale: SettingType<string>
102
+ show_stable: SettingType<boolean>
103
+ show_unstable: SettingType<boolean>
104
+ show_stable_labels: SettingType<boolean>
105
+ show_unstable_labels: SettingType<boolean>
106
+ max_hull_dist_show_phases: SettingType<number>
107
+ max_hull_dist_show_labels: SettingType<number>
108
+ fullscreen: SettingType<boolean>
109
+ info_pane_open: SettingType<boolean>
110
+ legend_pane_open: SettingType<boolean>
111
+ }
112
+
113
+ type ConvexHullWith3DType = ConvexHullCommonType & {
114
+ show_hull_faces: SettingType<boolean>
115
+ hull_face_color: SettingType<string>
116
+ hull_face_opacity: SettingType<number>
117
+ hull_face_color_mode: SettingType<HullFaceColorMode>
118
+ }
119
+
120
+ export interface SettingsConfig {
121
+ // General display settings
122
+ color_scheme: SettingType<string>
123
+ background_color: SettingType<string>
124
+ background_opacity: SettingType<number>
125
+
126
+ // Symmetry Analysis
127
+ symmetry: {
128
+ symprec: SettingType<number>
129
+ algo: SettingType<`Moyo` | `Spglib`>
130
+ }
131
+
132
+ structure: {
133
+ // Structure viewer settings
134
+ // Atoms & Bonds
135
+ atom_radius: SettingType<number>
136
+ same_size_atoms: SettingType<boolean>
137
+ show_atoms: SettingType<boolean>
138
+ show_image_atoms: SettingType<boolean>
139
+ sphere_segments: SettingType<number>
140
+ bond_thickness: SettingType<number>
141
+ auto_bond_order: SettingType<boolean>
142
+ aromatic_display: SettingType<`aromatic` | `kekule`>
143
+ show_bonds: SettingType<ShowBonds>
144
+ bond_color: SettingType<string>
145
+ bonding_strategy: SettingType<BondingStrategy>
146
+ atom_color_mode: SettingType<AtomColorMode>
147
+ atom_color_scale: SettingType<D3InterpolateName>
148
+ atom_color_scale_type: SettingType<ColorScaleType>
149
+
150
+ // Camera & Controls
151
+ show_gizmo: SettingType<boolean>
152
+ camera_position: SettingType<Vec3>
153
+ camera_projection: SettingType<CameraProjection>
154
+ initial_zoom: SettingType<number>
155
+ fov: SettingType<number>
156
+ rotation_damping: SettingType<number>
157
+ rotate_speed: SettingType<number>
158
+ zoom_speed: SettingType<number>
159
+ pan_speed: SettingType<number>
160
+ zoom_to_cursor: SettingType<boolean>
161
+ max_zoom: SettingType<number | undefined>
162
+ min_zoom: SettingType<number | undefined>
163
+ auto_rotate: SettingType<number>
164
+ // Manual rotation controls [x, y, z] in radians
165
+ rotation: SettingType<Vec3>
166
+
167
+ // Labels & Lighting
168
+ show_site_labels: SettingType<boolean>
169
+ show_site_indices: SettingType<boolean>
170
+ site_label_size: SettingType<number>
171
+ site_label_color: SettingType<string>
172
+ site_label_bg_color: SettingType<string>
173
+ site_label_padding: SettingType<number>
174
+ site_label_offset: SettingType<Vec3>
175
+ ambient_light: SettingType<number>
176
+ directional_light: SettingType<number>
177
+
178
+ // Site Vectors (force, magmom, spin) & Lattice
179
+ vector_configs: SettingType<Record<string, VectorLayerConfig>>
180
+ vector_scale: SettingType<number>
181
+ vector_color: SettingType<string>
182
+ vector_color_mode: SettingType<VectorColorMode>
183
+ vector_color_scale: SettingType<D3InterpolateName>
184
+ vector_normalize: SettingType<boolean>
185
+ vector_uniform_thickness: SettingType<boolean>
186
+ vector_origin_gap: SettingType<number>
187
+ vector_shaft_radius: SettingType<number>
188
+ vector_arrow_head_radius: SettingType<number>
189
+ vector_arrow_head_length: SettingType<number>
190
+ show_cell: SettingType<boolean>
191
+ show_cell_vectors: SettingType<boolean>
192
+ cell_edge_opacity: SettingType<number>
193
+ cell_surface_opacity: SettingType<number>
194
+ cell_edge_color: SettingType<string>
195
+ cell_surface_color: SettingType<string>
196
+ cell_edge_width: SettingType<number>
197
+ fullscreen_toggle: SettingType<boolean>
198
+ }
199
+
200
+ trajectory: {
201
+ // Trajectory viewer settings
202
+ // Core trajectory settings
203
+ auto_play: SettingType<boolean>
204
+ fps: SettingType<number>
205
+ fps_range: SettingType<[number, number]>
206
+ display_mode: SettingType<
207
+ `structure+scatter` | `structure` | `scatter` | `histogram` | `structure+histogram`
208
+ >
209
+ show_controls: SettingType<boolean>
210
+ fullscreen_toggle: SettingType<boolean>
211
+ step_labels: SettingType<number>
212
+ layout: SettingType<`auto` | Orientation>
213
+
214
+ // File handling and loading
215
+ allow_file_drop: SettingType<boolean>
216
+ bin_file_threshold: SettingType<number>
217
+ text_file_threshold: SettingType<number>
218
+ use_indexing: SettingType<boolean>
219
+ chunk_size: SettingType<number>
220
+
221
+ // Formatting
222
+ step_label_format: SettingType<string>
223
+ property_value_format: SettingType<string>
224
+ tooltip_format: SettingType<string>
225
+
226
+ // UI/UX
227
+ enable_keyboard_shortcuts: SettingType<boolean>
228
+ show_parsing_progress: SettingType<boolean>
229
+ compact_controls: SettingType<boolean>
230
+ show_filename_in_controls: SettingType<boolean>
231
+
232
+ // Playback behavior
233
+ smooth_playback: SettingType<boolean>
234
+ loop_playback: SettingType<boolean>
235
+ pause_on_hover: SettingType<boolean>
236
+ highlight_current_frame: SettingType<boolean>
237
+ show_frame_info: SettingType<boolean>
238
+
239
+ // Performance
240
+ max_frames_in_memory: SettingType<number>
241
+ memory_usage_warning_threshold: SettingType<number>
242
+ enable_performance_monitoring: SettingType<boolean>
243
+ prefetch_frames: SettingType<number>
244
+ cache_parsed_data: SettingType<boolean>
245
+ }
246
+
247
+ plot: {
248
+ // General plot settings
249
+ animation_duration: SettingType<number>
250
+ enable_zoom: SettingType<boolean>
251
+ zoom_factor: SettingType<number>
252
+ auto_fit_range: SettingType<boolean>
253
+ grid_lines: SettingType<boolean>
254
+ axis_labels: SettingType<boolean>
255
+ show_x_zero_line: SettingType<boolean>
256
+ show_y_zero_line: SettingType<boolean>
257
+ show_x_grid: SettingType<boolean>
258
+ show_x2_grid: SettingType<boolean>
259
+ show_y_grid: SettingType<boolean>
260
+ show_y2_grid: SettingType<boolean>
261
+ x_format: SettingType<string>
262
+ x2_format: SettingType<string>
263
+ y_format: SettingType<string>
264
+ y2_format: SettingType<string>
265
+ x_scale_type: SettingType<string>
266
+ y_scale_type: SettingType<string>
267
+ x_ticks: SettingType<number>
268
+ y_ticks: SettingType<number>
269
+ }
270
+
271
+ scatter: {
272
+ // Scatter plot settings
273
+ show_legend: SettingType<boolean>
274
+ show_points: SettingType<boolean>
275
+ show_lines: SettingType<boolean>
276
+ symbol_type: SettingType<D3SymbolName>
277
+ display: DisplayConfigType
278
+ point: PointStyleType
279
+ line: LineStyleType
280
+ }
281
+
282
+ histogram: {
283
+ // Histogram settings
284
+ mode: SettingType<`overlay` | `single`>
285
+ show_legend: SettingType<boolean>
286
+ bin_count: SettingType<number>
287
+ bar: BarStyleType
288
+ display: DisplayConfigType
289
+ }
290
+
291
+ bar: {
292
+ // Bar plot settings
293
+ display: DisplayConfigType
294
+ bar: SimpleBarStyleType
295
+ line: SimpleLineStyleType
296
+ }
297
+
298
+ composition: {
299
+ // Composition specific settings
300
+ display_mode: SettingType<`pie` | `bubble` | `bar`>
301
+ color_scheme: SettingType<string>
302
+ }
303
+
304
+ convex_hull: {
305
+ // Convex hull defaults (binary/ternary/quaternary)
306
+ binary: ConvexHullCommonType
307
+ ternary: ConvexHullWith3DType & {
308
+ camera_elevation: SettingType<number>
309
+ camera_azimuth: SettingType<number>
310
+ }
311
+ quaternary: ConvexHullWith3DType & {
312
+ camera_rotation_x: SettingType<number>
313
+ camera_rotation_y: SettingType<number>
314
+ }
315
+ }
316
+ }
317
+
318
+ const DISPLAY_CONFIG = {
319
+ x_grid: {
320
+ value: true,
321
+ description: `Show X-axis grid lines`,
322
+ },
323
+ y_grid: {
324
+ value: true,
325
+ description: `Show Y-axis grid lines`,
326
+ },
327
+ y2_grid: {
328
+ value: false,
329
+ description: `Show Y2-axis grid lines`,
330
+ },
331
+ x_zero_line: {
332
+ value: true,
333
+ description: `Show X-axis zero reference line`,
334
+ },
335
+ y_zero_line: {
336
+ value: true,
337
+ description: `Show Y-axis zero reference line`,
338
+ },
339
+ } as const
340
+
341
+ // Complete settings configuration with values, descriptions, and constraints
342
+ export const SETTINGS_CONFIG: SettingsConfig = {
343
+ // General display settings
344
+ color_scheme: {
345
+ value: `Vesta`,
346
+ description: `Color scheme for atoms and bonds`,
347
+ enum: {
348
+ Vesta: `Vesta`,
349
+ Jmol: `Jmol`,
350
+ Alloy: `Alloy`,
351
+ Pastel: `Pastel`,
352
+ Muted: `Muted`,
353
+ 'Dark Mode': `Dark Mode`,
354
+ },
355
+ },
356
+ background_color: {
357
+ value: `#000000`,
358
+ description: `Background color of the 3D viewport`,
359
+ },
360
+ background_opacity: {
361
+ value: 0,
362
+ description: `Opacity of the background (0.0 = transparent, 1.0 = opaque)`,
363
+ minimum: 0,
364
+ maximum: 1,
365
+ },
366
+
367
+ // Symmetry Analysis
368
+ symmetry: {
369
+ symprec: {
370
+ value: 1e-4,
371
+ description: `Symmetry precision tolerance for spacegroup detection`,
372
+ minimum: 1e-8,
373
+ maximum: 1,
374
+ },
375
+ algo: {
376
+ value: `Moyo` as const,
377
+ description: `Algorithm for symmetry analysis`,
378
+ enum: { Moyo: `Moyo`, Spglib: `Spglib` },
379
+ },
380
+ },
381
+
382
+ // Structure viewer settings
383
+ structure: {
384
+ // Atoms & Bonds
385
+ atom_radius: {
386
+ value: 0.7,
387
+ description: `Radius multiplier for atoms (0.7 = standard atomic radii)`,
388
+ minimum: 0.1,
389
+ maximum: 3.0,
390
+ },
391
+ same_size_atoms: {
392
+ value: false,
393
+ description: `Render all atoms with the same size regardless of element`,
394
+ },
395
+ show_atoms: {
396
+ value: true,
397
+ description: `Display atoms in the structure`,
398
+ },
399
+ show_image_atoms: {
400
+ value: true,
401
+ description: `Show atoms on the edge of the cell that are not part of the primitive basis`,
402
+ },
403
+ sphere_segments: {
404
+ value: 20,
405
+ description: `Number of segments for sphere rendering (higher = smoother)`,
406
+ minimum: 8,
407
+ maximum: 64,
408
+ },
409
+ bond_thickness: {
410
+ value: 0.07,
411
+ description: `Thickness of bonds relative to atom radius`,
412
+ minimum: 0.01,
413
+ maximum: 1.0,
414
+ },
415
+ auto_bond_order: {
416
+ value: false,
417
+ description: `Automatically perceive double/triple/aromatic bonds from geometry (main-group/organic; metals fall back to single)`,
418
+ },
419
+ aromatic_display: {
420
+ value: `aromatic`,
421
+ description: `How to render perceived aromatic rings`,
422
+ enum: { aromatic: `Aromatic (1.5)`, kekule: `Kekulé (alternating)` },
423
+ },
424
+ show_bonds: {
425
+ value: `always`,
426
+ description: `When to display bonds between atoms`,
427
+ enum: Object.fromEntries(
428
+ SHOW_BONDS_OPTIONS.map((key) => [key, key[0].toUpperCase() + key.slice(1)]),
429
+ ) as Readonly<Record<ShowBonds, string>>,
430
+ },
431
+ bond_color: {
432
+ value: `#666666`,
433
+ description: `Color for bonds (hex color code)`,
434
+ },
435
+ bonding_strategy: {
436
+ value: `electroneg_ratio`,
437
+ description: `Method for determining bonds between atoms`,
438
+ enum: {
439
+ electroneg_ratio: `Electronegativity Ratio`,
440
+ solid_angle: `Solid Angle`,
441
+ },
442
+ },
443
+ atom_color_mode: {
444
+ value: `element`,
445
+ description: `Property to use for atom coloring`,
446
+ enum: {
447
+ element: `Element`,
448
+ coordination: `Coordination Number`,
449
+ wyckoff: `Wyckoff Position`,
450
+ } as Readonly<Record<AtomColorMode, string>>,
451
+ },
452
+ atom_color_scale: {
453
+ value: `interpolateViridis`,
454
+ description: `D3 color scale for property-based coloring (e.g. interpolateViridis, interpolatePlasma)`,
455
+ },
456
+ atom_color_scale_type: {
457
+ value: `continuous`,
458
+ description: `Color scale type for property-based coloring`,
459
+ enum: {
460
+ continuous: `Continuous Gradient`,
461
+ categorical: `Discrete Categories`,
462
+ },
463
+ },
464
+
465
+ // Camera & Controls
466
+ show_gizmo: {
467
+ value: true,
468
+ description: `Show orientation gizmo in the corner of structure viewer`,
469
+ },
470
+ camera_position: {
471
+ value: [0, 0, 0] as const,
472
+ description: `Initial camera position [x, y, z]`,
473
+ minItems: 3,
474
+ maxItems: 3,
475
+ },
476
+ camera_projection: {
477
+ value: `orthographic` as const,
478
+ description: `Camera projection type`,
479
+ enum: {
480
+ perspective: `Perspective`,
481
+ orthographic: `Orthographic`,
482
+ },
483
+ },
484
+ initial_zoom: {
485
+ value: 35,
486
+ description: `Initial zoom level for orthographic projection (ignored for perspective)`,
487
+ minimum: 0.1,
488
+ maximum: 200,
489
+ },
490
+ fov: {
491
+ value: 10,
492
+ description: `Field of view in degrees for perspective projection`,
493
+ minimum: 10,
494
+ maximum: 150,
495
+ },
496
+ rotation_damping: {
497
+ value: 0.1,
498
+ description: `Camera rotation damping factor (0 = no damping, 1 = heavy damping)`,
499
+ minimum: 0,
500
+ maximum: 1,
501
+ },
502
+ rotate_speed: {
503
+ value: 1.0,
504
+ description: `Mouse rotation sensitivity (set to 0 to disable rotation)`,
505
+ minimum: 0,
506
+ maximum: 2.0,
507
+ },
508
+ zoom_speed: {
509
+ value: 0.5,
510
+ description: `Mouse wheel zoom sensitivity`,
511
+ minimum: 0.1,
512
+ maximum: 2.0,
513
+ },
514
+ pan_speed: {
515
+ value: 0.5,
516
+ description: `Mouse pan sensitivity`,
517
+ minimum: 0.1,
518
+ maximum: 2.0,
519
+ },
520
+ zoom_to_cursor: {
521
+ value: false,
522
+ description: `Zoom toward cursor position instead of scene center (double click canvas to reset camera)`,
523
+ },
524
+ max_zoom: {
525
+ value: 500,
526
+ description: `Maximum zoom level (orthographic: larger = more zoomed out, perspective: larger = further away)`,
527
+ },
528
+ min_zoom: {
529
+ value: 10,
530
+ description: `Minimum zoom level (orthographic: smaller = more zoomed in, perspective: smaller = closer)`,
531
+ },
532
+ auto_rotate: {
533
+ value: 0.2,
534
+ description: `Automatic rotation speed (0 = disabled, positive = clockwise)`,
535
+ minimum: 0,
536
+ maximum: 10,
537
+ },
538
+ rotation: {
539
+ value: [0, 0, 0] as const,
540
+ description: `Manual rotation around X, Y, Z axes, displayed in degrees [0, 360] but normalized as radians to [-π, π] for each of [x, y, z]. Combines additively with auto-rotation when both are active.`,
541
+ minItems: 3,
542
+ maxItems: 3,
543
+ },
544
+
545
+ // Labels & Lighting
546
+ show_site_labels: {
547
+ value: false,
548
+ description: `Show element labels on atoms`,
549
+ },
550
+ show_site_indices: {
551
+ value: false,
552
+ description: `Show site index numbers on atoms`,
553
+ },
554
+ site_label_size: {
555
+ value: 1,
556
+ description: `Font size for atom labels`,
557
+ minimum: 0.5,
558
+ maximum: 5,
559
+ },
560
+ site_label_color: {
561
+ value: `#111111`,
562
+ description: `Text color for atom labels`,
563
+ },
564
+ site_label_bg_color: {
565
+ value: `color-mix(in srgb, #000000 0%, transparent)`,
566
+ description: `Background color for atom labels`,
567
+ },
568
+ site_label_padding: {
569
+ value: 2,
570
+ description: `Padding around atom labels in pixels`,
571
+ minimum: 0,
572
+ maximum: 20,
573
+ },
574
+ site_label_offset: {
575
+ value: [0, 0.5, 0] as const,
576
+ description: `3D offset for atom labels [x, y, z]`,
577
+ minItems: 3,
578
+ maxItems: 3,
579
+ },
580
+ ambient_light: {
581
+ value: 1.5,
582
+ description: `Ambient light intensity (0 = dark, higher = brighter)`,
583
+ minimum: 0,
584
+ maximum: 4,
585
+ },
586
+ directional_light: {
587
+ value: 2.2,
588
+ description: `Directional light intensity (0 = no shadows, higher = stronger shadows)`,
589
+ minimum: 0,
590
+ maximum: 4,
591
+ },
592
+
593
+ // Site Vectors (force, magmom, spin) & Lattice
594
+ vector_configs: {
595
+ value: {} as Record<string, VectorLayerConfig>,
596
+ 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.`,
597
+ },
598
+ vector_scale: {
599
+ value: 1.0,
600
+ description: `Scale factor for site vector arrows`,
601
+ minimum: 0.1,
602
+ maximum: 10.0,
603
+ },
604
+ vector_color: {
605
+ value: `#ff0000`,
606
+ description: `Color for site vector arrows (used in uniform mode and as fallback)`,
607
+ },
608
+ vector_color_mode: {
609
+ value: `auto` as VectorColorMode,
610
+ description: `How to color arrows. auto = element for force, spin-direction for magmom/spin. element = majority species color. spin_direction = red/blue by z-component. magnitude = continuous color scale by vector length. uniform = single color (vector_color).`,
611
+ },
612
+ vector_color_scale: {
613
+ value: `interpolateViridis` as D3InterpolateName,
614
+ description: `D3 color scale for magnitude coloring mode`,
615
+ },
616
+ vector_normalize: {
617
+ value: false,
618
+ description: `Show all arrows at the same length (direction only). Useful for spin/magmom visualization where orientation matters but magnitude does not.`,
619
+ },
620
+ vector_uniform_thickness: {
621
+ value: false,
622
+ description: `Use the same shaft and head size for all arrows regardless of length. When off (default), thickness scales with arrow length.`,
623
+ },
624
+ vector_origin_gap: {
625
+ value: 0,
626
+ description: `Fraction of visual atom radius to offset each arrow origin when multiple vectors are shown per site. 0 = all from atom center, 0.5 = halfway to surface.`,
627
+ minimum: 0,
628
+ maximum: 0.5,
629
+ },
630
+ vector_shaft_radius: {
631
+ value: -0.03,
632
+ description: `Radius of vector shaft (negative = relative to length, positive = absolute)`,
633
+ minimum: -0.1,
634
+ maximum: 0.1,
635
+ },
636
+ vector_arrow_head_radius: {
637
+ value: -0.06,
638
+ description: `Radius of vector arrow head (negative = relative to length, positive = absolute)`,
639
+ minimum: -0.2,
640
+ maximum: 0.2,
641
+ },
642
+ vector_arrow_head_length: {
643
+ value: -0.15,
644
+ description: `Length of vector arrow head (negative = relative to length, positive = absolute)`,
645
+ minimum: -0.5,
646
+ maximum: 0.5,
647
+ },
648
+ show_cell: {
649
+ value: false,
650
+ description: `Display system cell`,
651
+ },
652
+ show_cell_vectors: {
653
+ value: true,
654
+ description: `Display cell vectors`,
655
+ },
656
+ cell_edge_opacity: {
657
+ value: 0.3,
658
+ description: `Opacity of cell edge lines`,
659
+ minimum: 0,
660
+ maximum: 1,
661
+ },
662
+ cell_surface_opacity: {
663
+ value: 0.1,
664
+ description: `Opacity of cell surfaces`,
665
+ minimum: 0,
666
+ maximum: 1,
667
+ },
668
+ cell_edge_color: {
669
+ value: `#808080`,
670
+ description: `Color of cell edges`,
671
+ },
672
+ cell_surface_color: {
673
+ value: `#e0e0e0`,
674
+ description: `Color of cell surfaces`,
675
+ },
676
+ cell_edge_width: {
677
+ value: 1.5,
678
+ description: `Width of cell edge lines`,
679
+ minimum: 0.5,
680
+ maximum: 5.0,
681
+ },
682
+ fullscreen_toggle: {
683
+ value: true,
684
+ description: `Show fullscreen toggle button (web-only, always false in other contexts)`,
685
+ context: `web`,
686
+ },
687
+ },
688
+
689
+ // Trajectory viewer settings
690
+ trajectory: {
691
+ // Core trajectory settings
692
+ auto_play: {
693
+ value: false,
694
+ description: `Automatically start playing trajectory when opened`,
695
+ },
696
+ fps: {
697
+ value: 10,
698
+ description: `Frames per second for trajectory playback`,
699
+ minimum: 0.1,
700
+ maximum: 60,
701
+ },
702
+ fps_range: {
703
+ value: [0.2, 60] as const,
704
+ description: `Allowed range for playback speed [min, max]`,
705
+ minItems: 2,
706
+ maxItems: 2,
707
+ },
708
+ display_mode: {
709
+ value: `structure+scatter` as const,
710
+ description: `Visualization mode for trajectory data`,
711
+ enum: {
712
+ 'structure+scatter': `Structure + Scatter`,
713
+ structure: `Structure`,
714
+ scatter: `Scatter`,
715
+ histogram: `Histogram`,
716
+ 'structure+histogram': `Structure + Histogram`,
717
+ },
718
+ },
719
+ show_controls: {
720
+ value: true,
721
+ description: `Show playback controls`,
722
+ },
723
+ fullscreen_toggle: {
724
+ value: true,
725
+ description: `Show fullscreen toggle button (web-only, always false in other contexts)`,
726
+ context: `web`,
727
+ },
728
+ step_labels: {
729
+ value: 5,
730
+ description: `Number of frame labels to display`,
731
+ minimum: 0,
732
+ maximum: 20,
733
+ },
734
+ layout: {
735
+ value: `auto` as const,
736
+ description: `Layout arrangement for trajectory viewer`,
737
+ enum: {
738
+ auto: `Auto`,
739
+ horizontal: `Horizontal`,
740
+ vertical: `Vertical`,
741
+ },
742
+ },
743
+
744
+ // File handling and loading
745
+ allow_file_drop: {
746
+ value: true,
747
+ description: `Allow drag-and-drop of trajectory files`,
748
+ },
749
+ bin_file_threshold: {
750
+ value: 50000000,
751
+ description: `File size threshold for binary loading (bytes)`,
752
+ minimum: 1000000,
753
+ maximum: 500000000,
754
+ },
755
+ text_file_threshold: {
756
+ value: 25000000,
757
+ description: `File size threshold for text loading (bytes)`,
758
+ minimum: 500000,
759
+ maximum: 250000000,
760
+ },
761
+ use_indexing: {
762
+ value: false,
763
+ description: `Use frame indexing for large trajectories`,
764
+ },
765
+ chunk_size: {
766
+ value: 1000,
767
+ description: `Number of frames to process at once`,
768
+ minimum: 10,
769
+ maximum: 10000,
770
+ },
771
+
772
+ // Formatting
773
+ step_label_format: {
774
+ value: `.3~s`,
775
+ description: `Number format for step labels (D3 format specifier)`,
776
+ },
777
+ property_value_format: {
778
+ value: `.2~s`,
779
+ description: `Number format for property values (D3 format specifier)`,
780
+ },
781
+ tooltip_format: {
782
+ value: `.3~s`,
783
+ description: `Number format for tooltips (D3 format specifier)`,
784
+ },
785
+
786
+ // UI/UX
787
+ enable_keyboard_shortcuts: {
788
+ value: true,
789
+ description: `Enable keyboard shortcuts for playback`,
790
+ },
791
+ show_parsing_progress: {
792
+ value: true,
793
+ description: `Show progress indicator while parsing files`,
794
+ },
795
+ compact_controls: {
796
+ value: false,
797
+ description: `Use compact layout for playback controls`,
798
+ },
799
+ show_filename_in_controls: {
800
+ value: true,
801
+ description: `Display filename in control pane`,
802
+ },
803
+
804
+ // Playback behavior
805
+ smooth_playback: {
806
+ value: false,
807
+ description: `Use smooth interpolation between frames`,
808
+ },
809
+ loop_playback: {
810
+ value: true,
811
+ description: `Loop trajectory playback`,
812
+ },
813
+ pause_on_hover: {
814
+ value: false,
815
+ description: `Pause playback when hovering over controls`,
816
+ },
817
+ highlight_current_frame: {
818
+ value: true,
819
+ description: `Highlight current frame in timeline`,
820
+ },
821
+ show_frame_info: {
822
+ value: true,
823
+ description: `Show frame information overlay`,
824
+ },
825
+
826
+ // Performance
827
+ max_frames_in_memory: {
828
+ value: 1000,
829
+ description: `Maximum frames to keep in memory`,
830
+ minimum: 10,
831
+ maximum: 10000,
832
+ },
833
+ memory_usage_warning_threshold: {
834
+ value: 500,
835
+ description: `Frame count threshold for memory warnings`,
836
+ minimum: 10,
837
+ maximum: 5000,
838
+ },
839
+ enable_performance_monitoring: {
840
+ value: false,
841
+ description: `Enable performance monitoring`,
842
+ },
843
+ prefetch_frames: {
844
+ value: 5,
845
+ description: `Number of frames to prefetch ahead`,
846
+ minimum: 0,
847
+ maximum: 100,
848
+ },
849
+ cache_parsed_data: {
850
+ value: true,
851
+ description: `Cache parsed trajectory data`,
852
+ },
853
+ },
854
+
855
+ // Histogram specific
856
+ histogram: {
857
+ mode: {
858
+ value: `overlay` as const,
859
+ description: `Histogram display mode. 'overlay' shows multiple histograms in the same plot, 'single' shows a single histogram`,
860
+ enum: {
861
+ overlay: `Overlay`,
862
+ single: `Single`,
863
+ },
864
+ },
865
+ show_legend: {
866
+ value: true,
867
+ description: `Show legend in histogram plots`,
868
+ },
869
+ bin_count: {
870
+ value: 100,
871
+ description: `Number of bins for histogram plots`,
872
+ minimum: 1,
873
+ maximum: 1000,
874
+ },
875
+ bar: {
876
+ color: {
877
+ value: `#4A9EFF`,
878
+ description: `Histogram bar fill color`,
879
+ },
880
+ opacity: {
881
+ value: 0.7,
882
+ description: `Histogram bar opacity`,
883
+ minimum: 0,
884
+ maximum: 1,
885
+ },
886
+ stroke_width: {
887
+ value: 1,
888
+ description: `Histogram bar stroke width`,
889
+ minimum: 0,
890
+ maximum: 5,
891
+ },
892
+ stroke_color: {
893
+ value: `#000000`,
894
+ description: `Histogram bar stroke color`,
895
+ },
896
+ stroke_opacity: {
897
+ value: 0.5,
898
+ description: `Histogram bar stroke opacity`,
899
+ minimum: 0,
900
+ maximum: 1,
901
+ },
902
+ },
903
+ display: DISPLAY_CONFIG,
904
+ },
905
+
906
+ // Bar plot specific
907
+ bar: {
908
+ bar: {
909
+ color: {
910
+ value: `#4A9EFF`,
911
+ description: `Bar plot fill color`,
912
+ },
913
+ opacity: {
914
+ value: 0.6,
915
+ description: `Bar plot opacity (overlay mode)`,
916
+ minimum: 0,
917
+ maximum: 1,
918
+ },
919
+ border_radius: {
920
+ value: 3,
921
+ description: `Corner radius for bar tops (px)`,
922
+ minimum: 0,
923
+ maximum: 10,
924
+ },
925
+ },
926
+ line: {
927
+ width: {
928
+ value: 2,
929
+ description: `Bar plot line width`,
930
+ minimum: 0.5,
931
+ maximum: 10,
932
+ },
933
+ color: {
934
+ value: `#4A9EFF`,
935
+ description: `Bar plot line color`,
936
+ },
937
+ },
938
+ display: DISPLAY_CONFIG,
939
+ },
940
+
941
+ // Composition specific
942
+ composition: {
943
+ display_mode: {
944
+ value: `pie` as const,
945
+ description: `Display mode for composition data`,
946
+ enum: {
947
+ pie: `Pie`,
948
+ bubble: `Bubble`,
949
+ bar: `Bar`,
950
+ },
951
+ },
952
+ color_scheme: {
953
+ value: `Vesta`,
954
+ description: `Color scheme for composition visualization`,
955
+ enum: {
956
+ Vesta: `Vesta`,
957
+ Jmol: `Jmol`,
958
+ Alloy: `Alloy`,
959
+ Pastel: `Pastel`,
960
+ Muted: `Muted`,
961
+ 'Dark Mode': `Dark Mode`,
962
+ },
963
+ },
964
+ },
965
+
966
+ // Scatter plot specific
967
+ scatter: {
968
+ symbol_type: {
969
+ value: `Circle`,
970
+ description: `Default symbol type for scatter plots`,
971
+ enum: Object.fromEntries(symbol_names.map((name) => [name, name])) as Readonly<
972
+ Record<D3SymbolName, string>
973
+ >,
974
+ },
975
+ show_legend: {
976
+ value: true,
977
+ description: `Show legend in scatter plots`,
978
+ },
979
+ show_points: {
980
+ value: true,
981
+ description: `Show points in scatter plots`,
982
+ },
983
+ show_lines: {
984
+ value: true,
985
+ description: `Show connecting lines in scatter plots`,
986
+ },
987
+ display: DISPLAY_CONFIG,
988
+ point: {
989
+ size: {
990
+ value: 4,
991
+ description: `Point size for scatter plots`,
992
+ minimum: 1,
993
+ maximum: 20,
994
+ },
995
+ color: {
996
+ value: `#4A9EFF`,
997
+ description: `Default color for scatter plot points`,
998
+ },
999
+ opacity: {
1000
+ value: 1,
1001
+ description: `Opacity of scatter plot points`,
1002
+ minimum: 0,
1003
+ maximum: 1,
1004
+ },
1005
+ stroke_width: {
1006
+ value: 1,
1007
+ description: `Stroke width for scatter plot points`,
1008
+ minimum: 0,
1009
+ maximum: 5,
1010
+ },
1011
+ stroke_color: {
1012
+ value: `#000000`,
1013
+ description: `Stroke color for scatter plot points`,
1014
+ },
1015
+ stroke_opacity: {
1016
+ value: 1,
1017
+ description: `Stroke opacity for scatter plot points`,
1018
+ minimum: 0,
1019
+ maximum: 1,
1020
+ },
1021
+ },
1022
+ line: {
1023
+ width: {
1024
+ value: 2,
1025
+ description: `Line width for scatter plot connections`,
1026
+ minimum: 0.5,
1027
+ maximum: 10,
1028
+ },
1029
+ color: {
1030
+ value: `#4A9EFF`,
1031
+ description: `Default color for scatter plot lines`,
1032
+ },
1033
+ opacity: {
1034
+ value: 1,
1035
+ description: `Opacity of scatter plot lines`,
1036
+ minimum: 0,
1037
+ maximum: 1,
1038
+ },
1039
+ dash: {
1040
+ value: `solid`,
1041
+ description: `Line dash pattern for scatter plots (e.g. "4,4" for dashed)`,
1042
+ },
1043
+ },
1044
+ },
1045
+
1046
+ // Plot general
1047
+ plot: {
1048
+ animation_duration: {
1049
+ value: 200,
1050
+ description: `Duration of plot animations in milliseconds`,
1051
+ minimum: 0,
1052
+ maximum: 2000,
1053
+ },
1054
+ enable_zoom: {
1055
+ value: true,
1056
+ description: `Enable zooming in plots`,
1057
+ },
1058
+ zoom_factor: {
1059
+ value: 1.5,
1060
+ description: `Zoom factor for plot interactions`,
1061
+ minimum: 1.1,
1062
+ maximum: 5.0,
1063
+ },
1064
+ auto_fit_range: {
1065
+ value: true,
1066
+ description: `Automatically fit plot range to data`,
1067
+ },
1068
+ grid_lines: {
1069
+ value: true,
1070
+ description: `Show grid lines in plots`,
1071
+ },
1072
+ axis_labels: {
1073
+ value: true,
1074
+ description: `Show axis labels in plots`,
1075
+ },
1076
+ show_x_zero_line: {
1077
+ value: true,
1078
+ description: `Show X-axis zero reference line`,
1079
+ },
1080
+ show_y_zero_line: {
1081
+ value: true,
1082
+ description: `Show Y-axis zero reference line`,
1083
+ },
1084
+ show_x_grid: {
1085
+ value: true,
1086
+ description: `Show X-axis grid lines`,
1087
+ },
1088
+ show_x2_grid: {
1089
+ value: false,
1090
+ description: `Show secondary X-axis grid lines`,
1091
+ },
1092
+ show_y_grid: {
1093
+ value: true,
1094
+ description: `Show Y-axis grid lines`,
1095
+ },
1096
+ show_y2_grid: {
1097
+ value: true,
1098
+ description: `Show secondary Y-axis grid lines`,
1099
+ },
1100
+ x_format: {
1101
+ value: `.2~s`,
1102
+ description: `Number format for X-axis ticks (D3 format specifier)`,
1103
+ },
1104
+ x2_format: {
1105
+ value: ``,
1106
+ description: `Number format for secondary X-axis ticks (D3 format specifier)`,
1107
+ },
1108
+ y_format: {
1109
+ value: `d`,
1110
+ description: `Number format for Y-axis ticks (D3 format specifier)`,
1111
+ },
1112
+ y2_format: {
1113
+ value: ``,
1114
+ description: `Number format for secondary Y-axis ticks (D3 format specifier)`,
1115
+ },
1116
+ x_scale_type: {
1117
+ value: `linear`,
1118
+ description: `Scale type for X-axis`,
1119
+ enum: {
1120
+ linear: `Linear`,
1121
+ log: `Log`,
1122
+ },
1123
+ },
1124
+ y_scale_type: {
1125
+ value: `linear`,
1126
+ description: `Scale type for Y-axis`,
1127
+ enum: {
1128
+ linear: `Linear`,
1129
+ log: `Log`,
1130
+ },
1131
+ },
1132
+ x_ticks: {
1133
+ value: 8,
1134
+ description: `Number of ticks on X-axis`,
1135
+ minimum: 2,
1136
+ maximum: 20,
1137
+ },
1138
+ y_ticks: {
1139
+ value: 6,
1140
+ description: `Number of ticks on Y-axis`,
1141
+ minimum: 2,
1142
+ maximum: 20,
1143
+ },
1144
+ },
1145
+
1146
+ convex_hull: {
1147
+ // Convex hull defaults (binary/ternary/quaternary)
1148
+ binary: {
1149
+ camera_zoom: {
1150
+ value: 1.0,
1151
+ description: `Initial zoom for binary (2D) convex hull`,
1152
+ minimum: 0.1,
1153
+ maximum: 10,
1154
+ },
1155
+ camera_center_x: {
1156
+ value: 0,
1157
+ description: `Initial X center for binary (2D) convex hull`,
1158
+ },
1159
+ camera_center_y: {
1160
+ value: 0,
1161
+ description: `Initial Y center for binary (2D) convex hull`,
1162
+ },
1163
+ color_mode: {
1164
+ value: `energy`,
1165
+ description: `Color mode for 2D convex hull points`,
1166
+ enum: {
1167
+ stability: `Stability`,
1168
+ energy: `Energy`,
1169
+ },
1170
+ },
1171
+ color_scale: {
1172
+ value: `interpolateViridis`,
1173
+ description: `D3 interpolate color scale for 2D convex hull energy mode`,
1174
+ },
1175
+ show_stable: {
1176
+ value: true,
1177
+ description: `Show stable phases in 2D convex hull`,
1178
+ },
1179
+ show_unstable: {
1180
+ value: true,
1181
+ description: `Show unstable phases in 2D convex hull`,
1182
+ },
1183
+ show_stable_labels: {
1184
+ value: true,
1185
+ description: `Show labels for stable phases in 2D convex hull`,
1186
+ },
1187
+ show_unstable_labels: {
1188
+ value: false,
1189
+ description: `Show labels for unstable phases in 2D convex hull`,
1190
+ },
1191
+ max_hull_dist_show_phases: {
1192
+ value: 0.1,
1193
+ description: `Max eV/atom above hull for showing unstable entries in 2D convex hull`,
1194
+ minimum: 0,
1195
+ maximum: 2,
1196
+ },
1197
+ max_hull_dist_show_labels: {
1198
+ value: 0.1,
1199
+ description: `Max eV/atom above hull for labeling unstable entries in 2D convex hull`,
1200
+ minimum: 0,
1201
+ maximum: 2,
1202
+ },
1203
+ fullscreen: {
1204
+ value: false,
1205
+ description: `Start in fullscreen for 2D convex hull`,
1206
+ },
1207
+ info_pane_open: {
1208
+ value: false,
1209
+ description: `Info pane open by default for 2D convex hull`,
1210
+ },
1211
+ legend_pane_open: {
1212
+ value: false,
1213
+ description: `Legend pane open by default for 2D convex hull`,
1214
+ },
1215
+ },
1216
+ ternary: {
1217
+ camera_elevation: {
1218
+ value: 45,
1219
+ description: `Initial camera elevation (deg) for ternary (3D) convex hull`,
1220
+ minimum: -180,
1221
+ maximum: 180,
1222
+ },
1223
+ camera_azimuth: {
1224
+ value: 60,
1225
+ description: `Initial camera azimuth (deg) for ternary (3D) convex hull`,
1226
+ minimum: -360,
1227
+ maximum: 360,
1228
+ },
1229
+ camera_zoom: {
1230
+ value: 1.5,
1231
+ description: `Initial camera zoom for ternary (3D) convex hull`,
1232
+ minimum: 0.1,
1233
+ maximum: 10,
1234
+ },
1235
+ camera_center_x: {
1236
+ value: 0,
1237
+ description: `Initial X center for ternary (3D) convex hull`,
1238
+ },
1239
+ camera_center_y: {
1240
+ value: -50,
1241
+ description: `Initial Y center for ternary (3D) convex hull`,
1242
+ },
1243
+ color_mode: {
1244
+ value: `energy`,
1245
+ description: `Color mode for 3D convex hull points`,
1246
+ enum: {
1247
+ stability: `Stability`,
1248
+ energy: `Energy`,
1249
+ },
1250
+ },
1251
+ color_scale: {
1252
+ value: `interpolateViridis`,
1253
+ description: `D3 interpolate color scale for 3D convex hull energy mode`,
1254
+ },
1255
+ show_stable: {
1256
+ value: true,
1257
+ description: `Show stable phases in 3D convex hull`,
1258
+ },
1259
+ show_unstable: {
1260
+ value: true,
1261
+ description: `Show unstable phases in 3D convex hull`,
1262
+ },
1263
+ show_stable_labels: {
1264
+ value: true,
1265
+ description: `Show labels for stable phases in 3D convex hull`,
1266
+ },
1267
+ show_unstable_labels: {
1268
+ value: false,
1269
+ description: `Show labels for unstable phases in 3D convex hull`,
1270
+ },
1271
+ max_hull_dist_show_phases: {
1272
+ value: 0.5,
1273
+ description: `Max eV/atom above hull for showing unstable entries in 3D convex hull`,
1274
+ minimum: 0,
1275
+ maximum: 2,
1276
+ },
1277
+ max_hull_dist_show_labels: {
1278
+ value: 0.1,
1279
+ description: `Max eV/atom above hull for labeling unstable entries in 3D convex hull`,
1280
+ minimum: 0,
1281
+ maximum: 2,
1282
+ },
1283
+ show_hull_faces: {
1284
+ value: true,
1285
+ description: `Render lower hull faces in 3D convex hull`,
1286
+ },
1287
+ hull_face_color: {
1288
+ value: `#4caf50`,
1289
+ description: `Color for lower hull faces in 3D convex hull`,
1290
+ },
1291
+ hull_face_opacity: {
1292
+ value: 0.3,
1293
+ description: `Opacity for hull faces in 3D convex hull (0-1)`,
1294
+ minimum: 0,
1295
+ maximum: 1,
1296
+ },
1297
+ hull_face_color_mode: {
1298
+ value: `uniform`,
1299
+ description: `Coloring mode for hull faces: uniform (single color), formation_energy (by E_form), dominant_element (by element), or facet_index (categorical)`,
1300
+ enum: {
1301
+ uniform: `Uniform`,
1302
+ formation_energy: `Formation energy`,
1303
+ dominant_element: `Dominant element`,
1304
+ facet_index: `Facet index`,
1305
+ },
1306
+ },
1307
+ fullscreen: {
1308
+ value: false,
1309
+ description: `Start in fullscreen for 3D convex hull`,
1310
+ },
1311
+ info_pane_open: {
1312
+ value: false,
1313
+ description: `Info pane open by default for 3D convex hull`,
1314
+ },
1315
+ legend_pane_open: {
1316
+ value: false,
1317
+ description: `Legend pane open by default for 3D convex hull`,
1318
+ },
1319
+ },
1320
+ quaternary: {
1321
+ camera_rotation_x: {
1322
+ value: -0.6,
1323
+ description: `Initial camera X rotation (rad) for quaternary (4D) convex hull`,
1324
+ minimum: -6.283,
1325
+ maximum: 6.283,
1326
+ },
1327
+ camera_rotation_y: {
1328
+ value: 0.8,
1329
+ description: `Initial camera Y rotation (rad) for quaternary (4D) convex hull`,
1330
+ minimum: -6.283,
1331
+ maximum: 6.283,
1332
+ },
1333
+ camera_zoom: {
1334
+ value: 1.4,
1335
+ description: `Initial camera zoom for quaternary (4D) convex hull`,
1336
+ minimum: 0.1,
1337
+ maximum: 20,
1338
+ },
1339
+ camera_center_x: {
1340
+ value: 0,
1341
+ description: `Initial X center for quaternary (4D) convex hull`,
1342
+ },
1343
+ camera_center_y: {
1344
+ value: 20,
1345
+ description: `Initial Y center for quaternary (4D) convex hull`,
1346
+ },
1347
+ color_mode: {
1348
+ value: `energy`,
1349
+ description: `Color mode for 4D convex hull points`,
1350
+ enum: {
1351
+ stability: `Stability`,
1352
+ energy: `Energy`,
1353
+ },
1354
+ },
1355
+ color_scale: {
1356
+ value: `interpolateViridis`,
1357
+ description: `D3 interpolate color scale for 4D convex hull energy mode`,
1358
+ },
1359
+ show_stable: {
1360
+ value: true,
1361
+ description: `Show stable phases in 4D convex hull`,
1362
+ },
1363
+ show_unstable: {
1364
+ value: true,
1365
+ description: `Show unstable phases in 4D convex hull`,
1366
+ },
1367
+ show_stable_labels: {
1368
+ value: true,
1369
+ description: `Show labels for stable phases in 4D convex hull`,
1370
+ },
1371
+ show_unstable_labels: {
1372
+ value: false,
1373
+ description: `Show labels for unstable phases in 4D convex hull`,
1374
+ },
1375
+ show_hull_faces: {
1376
+ value: true,
1377
+ description: `Show convex hull faces in 4D convex hull`,
1378
+ },
1379
+ hull_face_color: {
1380
+ value: `#4caf50`,
1381
+ description: `Color for hull faces in 4D convex hull`,
1382
+ },
1383
+ hull_face_opacity: {
1384
+ value: 0.03,
1385
+ description: `Opacity for hull faces in 4D convex hull (0-1)`,
1386
+ minimum: 0,
1387
+ maximum: 1,
1388
+ },
1389
+ hull_face_color_mode: {
1390
+ value: `dominant_element`,
1391
+ description: `Coloring mode for hull faces: uniform (single color), formation_energy (by E_form), dominant_element (by element), or facet_index (categorical)`,
1392
+ enum: {
1393
+ uniform: `Uniform`,
1394
+ formation_energy: `Formation energy`,
1395
+ dominant_element: `Dominant element`,
1396
+ facet_index: `Facet index`,
1397
+ },
1398
+ },
1399
+ max_hull_dist_show_phases: {
1400
+ value: 0.1,
1401
+ description: `Max eV/atom above hull for showing unstable entries in 4D convex hull`,
1402
+ minimum: 0,
1403
+ maximum: 2,
1404
+ },
1405
+ max_hull_dist_show_labels: {
1406
+ value: 0.1,
1407
+ description: `Max eV/atom above hull for labeling unstable entries in 4D convex hull`,
1408
+ minimum: 0,
1409
+ maximum: 2,
1410
+ },
1411
+ fullscreen: {
1412
+ value: false,
1413
+ description: `Start in fullscreen for 4D convex hull`,
1414
+ },
1415
+ info_pane_open: {
1416
+ value: false,
1417
+ description: `Info pane open by default for 4D convex hull`,
1418
+ },
1419
+ legend_pane_open: {
1420
+ value: false,
1421
+ description: `Legend pane open by default for 4D convex hull`,
1422
+ },
1423
+ },
1424
+ },
1425
+ }
1426
+
1427
+ // Extract the value types for runtime use (up to 3 nested levels)
1428
+ export type DefaultSettings = {
1429
+ [K in keyof SettingsConfig]: SettingsConfig[K] extends SettingType<infer T>
1430
+ ? T
1431
+ : SettingsConfig[K] extends Record<string, unknown>
1432
+ ? {
1433
+ [NK in keyof SettingsConfig[K]]: SettingsConfig[K][NK] extends SettingType<infer T>
1434
+ ? T
1435
+ : SettingsConfig[K][NK] extends Record<string, unknown>
1436
+ ? {
1437
+ [NNK in keyof SettingsConfig[K][NK]]: SettingsConfig[K][NK][NNK] extends SettingType<
1438
+ infer T
1439
+ >
1440
+ ? T
1441
+ : never
1442
+ }
1443
+ : never
1444
+ }
1445
+ : never
1446
+ }
1447
+
1448
+ // Extract values from settings config for runtime use
1449
+ const extract_values = (
1450
+ config: SettingsConfig | SettingType | Record<string, unknown>,
1451
+ ): DefaultSettings => {
1452
+ const result = {} as Record<string, unknown>
1453
+ for (const [key, value] of Object.entries(config)) {
1454
+ if (value && typeof value === `object` && `value` in value) {
1455
+ result[key] = (value as SettingType).value
1456
+ } else if (value && typeof value === `object`) {
1457
+ result[key] = extract_values(value as Record<string, unknown>)
1458
+ }
1459
+ }
1460
+ return result as DefaultSettings
1461
+ }
1462
+
1463
+ // Runtime defaults - extracted values for use in components
1464
+ export const DEFAULTS = extract_values(SETTINGS_CONFIG)
1465
+
1466
+ // Helper to merge with defaults - handles nested structure
1467
+ export const merge = (user?: Partial<DefaultSettings>): DefaultSettings =>
1468
+ ({
1469
+ ...DEFAULTS,
1470
+ ...user,
1471
+ structure: merge_nested(DEFAULTS.structure, user?.structure),
1472
+ trajectory: merge_nested(DEFAULTS.trajectory, user?.trajectory),
1473
+ composition: merge_nested(DEFAULTS.composition, user?.composition),
1474
+ plot: merge_nested(DEFAULTS.plot, user?.plot),
1475
+ scatter: merge_nested(DEFAULTS.scatter, user?.scatter),
1476
+ histogram: merge_nested(DEFAULTS.histogram, user?.histogram),
1477
+ bar: merge_nested(DEFAULTS.bar, user?.bar),
1478
+ convex_hull: merge_nested(DEFAULTS.convex_hull, user?.convex_hull),
1479
+ }) as DefaultSettings