matterviz 0.3.5 → 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 (855) 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/brillouin/BrillouinZone.svelte +549 -0
  14. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
  15. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
  16. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  17. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
  18. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
  19. package/dist/src/lib/brillouin/compute.ts +529 -0
  20. package/dist/src/lib/brillouin/index.ts +8 -0
  21. package/dist/src/lib/brillouin/types.ts +51 -0
  22. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
  23. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  24. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  25. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
  26. package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
  27. package/dist/src/lib/chempot-diagram/color.ts +42 -0
  28. package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
  29. package/dist/src/lib/chempot-diagram/index.ts +6 -0
  30. package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
  31. package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
  32. package/dist/src/lib/chempot-diagram/types.ts +130 -0
  33. package/dist/src/lib/colors/index.ts +249 -0
  34. package/dist/src/lib/composition/BarChart.svelte +297 -0
  35. package/dist/src/lib/composition/BubbleChart.svelte +218 -0
  36. package/dist/src/lib/composition/Composition.svelte +165 -0
  37. package/dist/src/lib/composition/Formula.svelte +268 -0
  38. package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
  39. package/dist/src/lib/composition/PieChart.svelte +323 -0
  40. package/dist/src/lib/composition/format.ts +155 -0
  41. package/dist/src/lib/composition/index.ts +37 -0
  42. package/dist/src/lib/composition/parse.ts +605 -0
  43. package/dist/src/lib/constants.ts +134 -0
  44. package/dist/src/lib/controls.ts +42 -0
  45. package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
  46. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
  47. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
  48. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
  49. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
  50. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
  51. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
  52. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
  53. package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
  54. package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
  55. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
  56. package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
  57. package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
  58. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
  59. package/dist/src/lib/convex-hull/helpers.ts +932 -0
  60. package/dist/src/lib/convex-hull/index.ts +202 -0
  61. package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
  62. package/dist/src/lib/convex-hull/types.ts +267 -0
  63. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
  64. package/dist/src/lib/coordination/calc-coordination.ts +93 -0
  65. package/dist/src/lib/coordination/index.ts +9 -0
  66. package/dist/src/lib/effects.svelte.ts +48 -0
  67. package/dist/src/lib/element/BohrAtom.svelte +147 -0
  68. package/dist/src/lib/element/ElementHeading.svelte +26 -0
  69. package/dist/src/lib/element/ElementPhoto.svelte +57 -0
  70. package/dist/src/lib/element/ElementStats.svelte +80 -0
  71. package/dist/src/lib/element/ElementTile.svelte +484 -0
  72. package/dist/src/lib/element/data.json.gz.d.ts +4 -0
  73. package/dist/src/lib/element/data.ts +14 -0
  74. package/dist/src/lib/element/index.ts +8 -0
  75. package/dist/src/lib/element/types.ts +62 -0
  76. package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
  77. package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
  78. package/dist/src/lib/feedback/index.ts +4 -0
  79. package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
  80. package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
  81. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
  82. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
  83. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  84. package/dist/src/lib/fermi-surface/compute.ts +728 -0
  85. package/dist/src/lib/fermi-surface/constants.ts +32 -0
  86. package/dist/src/lib/fermi-surface/export.ts +64 -0
  87. package/dist/src/lib/fermi-surface/index.ts +14 -0
  88. package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
  89. package/dist/src/lib/fermi-surface/parse.ts +574 -0
  90. package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
  91. package/dist/src/lib/fermi-surface/types.ts +159 -0
  92. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  93. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  94. package/dist/src/lib/heatmap-matrix/index.ts +167 -0
  95. package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
  96. package/dist/src/lib/icons.ts +650 -0
  97. package/dist/src/lib/index.ts +61 -0
  98. package/dist/src/lib/io/decompress.ts +92 -0
  99. package/dist/src/lib/io/export.ts +385 -0
  100. package/dist/src/lib/io/fetch.ts +46 -0
  101. package/dist/src/lib/io/file-drop.ts +51 -0
  102. package/dist/src/lib/io/index.ts +7 -0
  103. package/dist/src/lib/io/is-binary.ts +24 -0
  104. package/dist/src/lib/io/types.ts +8 -0
  105. package/dist/src/lib/io/url-drop.ts +141 -0
  106. package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
  107. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
  108. package/dist/src/lib/isosurface/index.ts +7 -0
  109. package/dist/src/lib/isosurface/parse.ts +656 -0
  110. package/dist/src/lib/isosurface/slice.ts +175 -0
  111. package/dist/src/lib/isosurface/types.ts +309 -0
  112. package/dist/src/lib/labels.ts +320 -0
  113. package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
  114. package/dist/src/lib/layout/InfoCard.svelte +120 -0
  115. package/dist/src/lib/layout/InfoTag.svelte +185 -0
  116. package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
  117. package/dist/src/lib/layout/SettingsSection.svelte +148 -0
  118. package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
  119. package/dist/src/lib/layout/fullscreen.ts +65 -0
  120. package/dist/src/lib/layout/index.ts +11 -0
  121. package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
  122. package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
  123. package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
  124. package/dist/src/lib/layout/json-tree/index.ts +3 -0
  125. package/dist/src/lib/layout/json-tree/types.ts +126 -0
  126. package/dist/src/lib/layout/json-tree/utils.ts +682 -0
  127. package/dist/src/lib/marching-cubes.ts +614 -0
  128. package/dist/src/lib/math.ts +1081 -0
  129. package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
  130. package/dist/src/lib/overlays/CopyButton.svelte +45 -0
  131. package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
  132. package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
  133. package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
  134. package/dist/src/lib/overlays/index.ts +3 -0
  135. package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
  136. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
  137. package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
  138. package/dist/src/lib/periodic-table/index.ts +12 -0
  139. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  140. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
  141. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  142. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  143. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  144. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
  145. package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
  146. package/dist/src/lib/phase-diagram/colors.ts +58 -0
  147. package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
  148. package/dist/src/lib/phase-diagram/index.ts +13 -0
  149. package/dist/src/lib/phase-diagram/parse.ts +348 -0
  150. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
  151. package/dist/src/lib/phase-diagram/types.ts +144 -0
  152. package/dist/src/lib/phase-diagram/utils.ts +775 -0
  153. package/dist/src/lib/plot/AxisLabel.svelte +51 -0
  154. package/dist/src/lib/plot/BarPlot.svelte +2113 -0
  155. package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
  156. package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
  157. package/dist/src/lib/plot/ColorBar.svelte +721 -0
  158. package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
  159. package/dist/src/lib/plot/ElementScatter.svelte +63 -0
  160. package/dist/src/lib/plot/FillArea.svelte +223 -0
  161. package/dist/src/lib/plot/Histogram.svelte +1558 -0
  162. package/dist/src/lib/plot/HistogramControls.svelte +212 -0
  163. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
  164. package/dist/src/lib/plot/Line.svelte +84 -0
  165. package/dist/src/lib/plot/PlotAxis.svelte +169 -0
  166. package/dist/src/lib/plot/PlotControls.svelte +537 -0
  167. package/dist/src/lib/plot/PlotLegend.svelte +569 -0
  168. package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
  169. package/dist/src/lib/plot/PortalSelect.svelte +253 -0
  170. package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
  171. package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
  172. package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
  173. package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
  174. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
  175. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
  176. package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
  177. package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
  178. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
  179. package/dist/src/lib/plot/Surface3D.svelte +197 -0
  180. package/dist/src/lib/plot/ZeroLines.svelte +97 -0
  181. package/dist/src/lib/plot/ZoomRect.svelte +23 -0
  182. package/dist/src/lib/plot/adaptive-density.ts +316 -0
  183. package/dist/src/lib/plot/auto-place.ts +184 -0
  184. package/dist/src/lib/plot/axis-utils.ts +122 -0
  185. package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
  186. package/dist/src/lib/plot/data-cleaning.ts +1069 -0
  187. package/dist/src/lib/plot/data-transform.ts +69 -0
  188. package/dist/src/lib/plot/defaults.ts +9 -0
  189. package/dist/src/lib/plot/fill-utils.ts +494 -0
  190. package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
  191. package/dist/src/lib/plot/index.ts +53 -0
  192. package/dist/src/lib/plot/interactions.ts +119 -0
  193. package/dist/src/lib/plot/layout.ts +425 -0
  194. package/dist/src/lib/plot/reference-line.ts +426 -0
  195. package/dist/src/lib/plot/scales.ts +654 -0
  196. package/dist/src/lib/plot/svg.ts +23 -0
  197. package/dist/src/lib/plot/types.ts +1144 -0
  198. package/dist/src/lib/plot/utils/label-placement.ts +541 -0
  199. package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
  200. package/dist/src/lib/plot/utils.ts +11 -0
  201. package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
  202. package/dist/src/lib/rdf/calc-rdf.ts +167 -0
  203. package/dist/src/lib/rdf/index.ts +27 -0
  204. package/dist/src/lib/sanitize.ts +126 -0
  205. package/dist/src/lib/settings.ts +1479 -0
  206. package/dist/src/lib/spectral/Bands.svelte +1040 -0
  207. package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
  208. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
  209. package/dist/src/lib/spectral/Dos.svelte +697 -0
  210. package/dist/src/lib/spectral/helpers.ts +1381 -0
  211. package/dist/src/lib/spectral/index.ts +8 -0
  212. package/dist/src/lib/spectral/types.ts +112 -0
  213. package/dist/src/lib/state.svelte.ts +64 -0
  214. package/dist/src/lib/structure/Arrow.svelte +72 -0
  215. package/dist/src/lib/structure/AtomLegend.svelte +815 -0
  216. package/dist/src/lib/structure/Bond.svelte +140 -0
  217. package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
  218. package/dist/src/lib/structure/CellSelect.svelte +349 -0
  219. package/dist/src/lib/structure/Cylinder.svelte +45 -0
  220. package/dist/src/lib/structure/Lattice.svelte +196 -0
  221. package/dist/src/lib/structure/Structure.svelte +2248 -0
  222. package/dist/src/lib/structure/StructureControls.svelte +1273 -0
  223. package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
  224. package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
  225. package/dist/src/lib/structure/StructureScene.svelte +2255 -0
  226. package/dist/src/lib/structure/atom-properties.ts +316 -0
  227. package/dist/src/lib/structure/bond-order-perception.ts +447 -0
  228. package/dist/src/lib/structure/bonding.ts +944 -0
  229. package/dist/src/lib/structure/export.ts +861 -0
  230. package/dist/src/lib/structure/index.ts +291 -0
  231. package/dist/src/lib/structure/label-placement.ts +130 -0
  232. package/dist/src/lib/structure/measure.ts +45 -0
  233. package/dist/src/lib/structure/parse.ts +1705 -0
  234. package/dist/src/lib/structure/partial-occupancy.ts +183 -0
  235. package/dist/src/lib/structure/pbc.ts +164 -0
  236. package/dist/src/lib/structure/supercell.ts +226 -0
  237. package/dist/src/lib/structure/validation.ts +11 -0
  238. package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
  239. package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
  240. package/dist/src/lib/symmetry/cell-transform.ts +118 -0
  241. package/dist/src/lib/symmetry/index.ts +348 -0
  242. package/dist/src/lib/symmetry/spacegroups.ts +404 -0
  243. package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
  244. package/dist/src/lib/table/ToggleMenu.svelte +385 -0
  245. package/dist/src/lib/table/index.ts +139 -0
  246. package/dist/src/lib/theme/ThemeControl.svelte +53 -0
  247. package/dist/src/lib/theme/index.ts +107 -0
  248. package/dist/src/lib/theme/themes.mjs +297 -0
  249. package/dist/src/lib/time.ts +71 -0
  250. package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
  251. package/dist/src/lib/tooltip/index.ts +2 -0
  252. package/dist/src/lib/tooltip/types.ts +13 -0
  253. package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
  254. package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
  255. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
  256. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
  257. package/dist/src/lib/trajectory/constants.ts +7 -0
  258. package/dist/src/lib/trajectory/extract.ts +196 -0
  259. package/dist/src/lib/trajectory/format-detect.ts +96 -0
  260. package/dist/src/lib/trajectory/frame-reader.ts +456 -0
  261. package/dist/src/lib/trajectory/helpers.ts +217 -0
  262. package/dist/src/lib/trajectory/index.ts +218 -0
  263. package/dist/src/lib/trajectory/parse/ase.ts +109 -0
  264. package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
  265. package/dist/src/lib/trajectory/parse/index.ts +411 -0
  266. package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
  267. package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
  268. package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
  269. package/dist/src/lib/trajectory/plotting.ts +599 -0
  270. package/dist/src/lib/trajectory/types.ts +13 -0
  271. package/dist/src/lib/utils.ts +56 -0
  272. package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
  273. package/dist/src/lib/xrd/broadening.ts +130 -0
  274. package/dist/src/lib/xrd/calc-xrd.ts +397 -0
  275. package/dist/src/lib/xrd/index.ts +38 -0
  276. package/dist/src/lib/xrd/parse.ts +858 -0
  277. package/dist/webview.js +29421 -0
  278. package/icon.png +0 -0
  279. package/license +1 -1
  280. package/matterviz-0.3.2.vsix +0 -0
  281. package/matterviz-0.3.4.vsix +0 -0
  282. package/matterviz-0.3.5.vsix +0 -0
  283. package/package.json +1460 -215
  284. package/readme.md +171 -98
  285. package/scripts/sync-config.ts +101 -0
  286. package/src/declarations.d.ts +2 -0
  287. package/src/extension.ts +972 -0
  288. package/src/node-io.ts +65 -0
  289. package/src/types.ts +17 -0
  290. package/src/webview/JsonBrowser.svelte +1079 -0
  291. package/src/webview/PlotPanel.svelte +346 -0
  292. package/src/webview/detect.ts +444 -0
  293. package/src/webview/main.ts +764 -0
  294. package/src/webview/plot-utils.ts +250 -0
  295. package/test-fixtures/all-viz-types.json.gz +0 -0
  296. package/test-fixtures/plot-demo-data.json.gz +0 -0
  297. package/tests/detect.test.ts +604 -0
  298. package/tests/extension.test.ts +2041 -0
  299. package/tests/node-io.test.ts +39 -0
  300. package/tests/plot-utils.test.ts +302 -0
  301. package/tests/vite-plugin-json-gz.test.ts +114 -0
  302. package/tests/vscode-mock.ts +18 -0
  303. package/tests/webview.test.ts +231 -0
  304. package/tsconfig.json +20 -0
  305. package/vite-plugin-json-gz.ts +29 -0
  306. package/vite.config.ts +34 -0
  307. package/vite.extension.config.ts +34 -0
  308. package/dist/EmptyState.svelte.d.ts +0 -9
  309. package/dist/FilePicker.svelte +0 -360
  310. package/dist/FilePicker.svelte.d.ts +0 -17
  311. package/dist/Icon.svelte.d.ts +0 -13
  312. package/dist/MillerIndexInput.svelte +0 -66
  313. package/dist/MillerIndexInput.svelte.d.ts +0 -7
  314. package/dist/api/mp.d.ts +0 -6
  315. package/dist/api/mp.js +0 -22
  316. package/dist/api/optimade.d.ts +0 -45
  317. package/dist/api/optimade.js +0 -135
  318. package/dist/brillouin/BrillouinZone.svelte +0 -546
  319. package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
  320. package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
  321. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
  322. package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
  323. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
  324. package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  325. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
  326. package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
  327. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
  328. package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
  329. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
  330. package/dist/brillouin/compute.d.ts +0 -17
  331. package/dist/brillouin/compute.js +0 -426
  332. package/dist/brillouin/index.d.ts +0 -8
  333. package/dist/brillouin/index.js +0 -8
  334. package/dist/brillouin/types.d.ts +0 -48
  335. package/dist/brillouin/types.js +0 -1
  336. package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
  337. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
  338. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
  339. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
  340. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
  341. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
  342. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
  343. package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
  344. package/dist/chempot-diagram/async-compute.svelte.js +0 -78
  345. package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
  346. package/dist/chempot-diagram/chempot-worker.js +0 -11
  347. package/dist/chempot-diagram/color.d.ts +0 -10
  348. package/dist/chempot-diagram/color.js +0 -32
  349. package/dist/chempot-diagram/compute.d.ts +0 -48
  350. package/dist/chempot-diagram/compute.js +0 -812
  351. package/dist/chempot-diagram/index.d.ts +0 -6
  352. package/dist/chempot-diagram/index.js +0 -6
  353. package/dist/chempot-diagram/pointer.d.ts +0 -16
  354. package/dist/chempot-diagram/pointer.js +0 -40
  355. package/dist/chempot-diagram/temperature.d.ts +0 -15
  356. package/dist/chempot-diagram/temperature.js +0 -36
  357. package/dist/chempot-diagram/types.d.ts +0 -86
  358. package/dist/chempot-diagram/types.js +0 -28
  359. package/dist/colors/index.d.ts +0 -47
  360. package/dist/colors/index.js +0 -203
  361. package/dist/composition/BarChart.svelte +0 -297
  362. package/dist/composition/BarChart.svelte.d.ts +0 -39
  363. package/dist/composition/BubbleChart.svelte +0 -218
  364. package/dist/composition/BubbleChart.svelte.d.ts +0 -28
  365. package/dist/composition/Composition.svelte +0 -164
  366. package/dist/composition/Composition.svelte.d.ts +0 -15
  367. package/dist/composition/Formula.svelte +0 -265
  368. package/dist/composition/Formula.svelte.d.ts +0 -19
  369. package/dist/composition/FormulaFilter.svelte +0 -1259
  370. package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
  371. package/dist/composition/PieChart.svelte +0 -323
  372. package/dist/composition/PieChart.svelte.d.ts +0 -37
  373. package/dist/composition/format.d.ts +0 -15
  374. package/dist/composition/format.js +0 -109
  375. package/dist/composition/index.d.ts +0 -20
  376. package/dist/composition/index.js +0 -14
  377. package/dist/composition/parse.d.ts +0 -55
  378. package/dist/composition/parse.js +0 -459
  379. package/dist/constants.d.ts +0 -29
  380. package/dist/constants.js +0 -99
  381. package/dist/controls.d.ts +0 -14
  382. package/dist/controls.js +0 -30
  383. package/dist/convex-hull/ConvexHull.svelte +0 -157
  384. package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
  385. package/dist/convex-hull/ConvexHull2D.svelte +0 -814
  386. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
  387. package/dist/convex-hull/ConvexHull3D.svelte +0 -1790
  388. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
  389. package/dist/convex-hull/ConvexHull4D.svelte +0 -1386
  390. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
  391. package/dist/convex-hull/ConvexHullControls.svelte +0 -546
  392. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
  393. package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -122
  394. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
  395. package/dist/convex-hull/ConvexHullStats.svelte +0 -922
  396. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
  397. package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
  398. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
  399. package/dist/convex-hull/GasPressureControls.svelte +0 -247
  400. package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
  401. package/dist/convex-hull/StructurePopup.svelte +0 -116
  402. package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
  403. package/dist/convex-hull/TemperatureSlider.svelte +0 -137
  404. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
  405. package/dist/convex-hull/barycentric-coords.d.ts +0 -18
  406. package/dist/convex-hull/barycentric-coords.js +0 -182
  407. package/dist/convex-hull/demo-temperature.d.ts +0 -6
  408. package/dist/convex-hull/demo-temperature.js +0 -40
  409. package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
  410. package/dist/convex-hull/gas-thermodynamics.js +0 -316
  411. package/dist/convex-hull/helpers.d.ts +0 -103
  412. package/dist/convex-hull/helpers.js +0 -689
  413. package/dist/convex-hull/index.d.ts +0 -118
  414. package/dist/convex-hull/index.js +0 -57
  415. package/dist/convex-hull/thermodynamics.d.ts +0 -66
  416. package/dist/convex-hull/thermodynamics.js +0 -1752
  417. package/dist/convex-hull/types.d.ts +0 -162
  418. package/dist/convex-hull/types.js +0 -36
  419. package/dist/coordination/CoordinationBarPlot.svelte +0 -311
  420. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
  421. package/dist/coordination/calc-coordination.d.ts +0 -15
  422. package/dist/coordination/calc-coordination.js +0 -63
  423. package/dist/coordination/index.d.ts +0 -8
  424. package/dist/coordination/index.js +0 -7
  425. package/dist/element/BohrAtom.svelte +0 -147
  426. package/dist/element/BohrAtom.svelte.d.ts +0 -20
  427. package/dist/element/ElementHeading.svelte +0 -26
  428. package/dist/element/ElementHeading.svelte.d.ts +0 -8
  429. package/dist/element/ElementPhoto.svelte +0 -57
  430. package/dist/element/ElementPhoto.svelte.d.ts +0 -9
  431. package/dist/element/ElementStats.svelte +0 -80
  432. package/dist/element/ElementStats.svelte.d.ts +0 -8
  433. package/dist/element/ElementTile.svelte +0 -484
  434. package/dist/element/ElementTile.svelte.d.ts +0 -29
  435. package/dist/element/Nucleus.svelte.d.ts +0 -17
  436. package/dist/element/data.d.ts +0 -2
  437. package/dist/element/data.js +0 -2
  438. package/dist/element/data.json.gz.d.ts +0 -2
  439. package/dist/element/index.d.ts +0 -8
  440. package/dist/element/index.js +0 -8
  441. package/dist/element/types.d.ts +0 -57
  442. package/dist/element/types.js +0 -1
  443. package/dist/feedback/ClickFeedback.svelte +0 -58
  444. package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
  445. package/dist/feedback/DragOverlay.svelte +0 -42
  446. package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
  447. package/dist/feedback/Spinner.svelte.d.ts +0 -7
  448. package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
  449. package/dist/feedback/index.d.ts +0 -4
  450. package/dist/feedback/index.js +0 -4
  451. package/dist/fermi-surface/FermiSlice.svelte +0 -189
  452. package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
  453. package/dist/fermi-surface/FermiSurface.svelte +0 -600
  454. package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
  455. package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
  456. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
  457. package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
  458. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
  459. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  460. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
  461. package/dist/fermi-surface/compute.d.ts +0 -5
  462. package/dist/fermi-surface/compute.js +0 -538
  463. package/dist/fermi-surface/constants.d.ts +0 -9
  464. package/dist/fermi-surface/constants.js +0 -27
  465. package/dist/fermi-surface/export.d.ts +0 -5
  466. package/dist/fermi-surface/export.js +0 -63
  467. package/dist/fermi-surface/index.d.ts +0 -12
  468. package/dist/fermi-surface/index.js +0 -13
  469. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  470. package/dist/fermi-surface/marching-cubes.js +0 -2
  471. package/dist/fermi-surface/parse.d.ts +0 -2
  472. package/dist/fermi-surface/parse.js +0 -495
  473. package/dist/fermi-surface/symmetry.d.ts +0 -3
  474. package/dist/fermi-surface/symmetry.js +0 -46
  475. package/dist/fermi-surface/types.d.ts +0 -113
  476. package/dist/fermi-surface/types.js +0 -4
  477. package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
  478. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
  479. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  480. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
  481. package/dist/heatmap-matrix/index.d.ts +0 -53
  482. package/dist/heatmap-matrix/index.js +0 -100
  483. package/dist/heatmap-matrix/shared.d.ts +0 -2
  484. package/dist/heatmap-matrix/shared.js +0 -4
  485. package/dist/icons.d.ts +0 -569
  486. package/dist/icons.js +0 -648
  487. package/dist/index.d.ts +0 -39
  488. package/dist/index.js +0 -39
  489. package/dist/io/decompress.d.ts +0 -10
  490. package/dist/io/decompress.js +0 -74
  491. package/dist/io/export.d.ts +0 -16
  492. package/dist/io/export.js +0 -316
  493. package/dist/io/fetch.d.ts +0 -5
  494. package/dist/io/fetch.js +0 -39
  495. package/dist/io/file-drop.d.ts +0 -7
  496. package/dist/io/file-drop.js +0 -43
  497. package/dist/io/index.d.ts +0 -7
  498. package/dist/io/index.js +0 -7
  499. package/dist/io/is-binary.d.ts +0 -1
  500. package/dist/io/is-binary.js +0 -20
  501. package/dist/io/types.d.ts +0 -8
  502. package/dist/io/types.js +0 -1
  503. package/dist/io/url-drop.d.ts +0 -2
  504. package/dist/io/url-drop.js +0 -117
  505. package/dist/isosurface/Isosurface.svelte +0 -285
  506. package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
  507. package/dist/isosurface/IsosurfaceControls.svelte +0 -291
  508. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
  509. package/dist/isosurface/index.d.ts +0 -5
  510. package/dist/isosurface/index.js +0 -6
  511. package/dist/isosurface/parse.d.ts +0 -6
  512. package/dist/isosurface/parse.js +0 -553
  513. package/dist/isosurface/slice.d.ts +0 -11
  514. package/dist/isosurface/slice.js +0 -140
  515. package/dist/isosurface/types.d.ts +0 -56
  516. package/dist/isosurface/types.js +0 -227
  517. package/dist/labels.d.ts +0 -53
  518. package/dist/labels.js +0 -274
  519. package/dist/layout/FullscreenToggle.svelte +0 -50
  520. package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
  521. package/dist/layout/InfoCard.svelte +0 -120
  522. package/dist/layout/InfoCard.svelte.d.ts +0 -21
  523. package/dist/layout/InfoTag.svelte +0 -183
  524. package/dist/layout/InfoTag.svelte.d.ts +0 -19
  525. package/dist/layout/PropertyFilter.svelte +0 -244
  526. package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
  527. package/dist/layout/SettingsSection.svelte +0 -148
  528. package/dist/layout/SettingsSection.svelte.d.ts +0 -17
  529. package/dist/layout/SubpageGrid.svelte +0 -82
  530. package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
  531. package/dist/layout/fullscreen.d.ts +0 -9
  532. package/dist/layout/fullscreen.js +0 -53
  533. package/dist/layout/index.d.ts +0 -10
  534. package/dist/layout/index.js +0 -8
  535. package/dist/layout/json-tree/JsonNode.svelte +0 -548
  536. package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
  537. package/dist/layout/json-tree/JsonTree.svelte +0 -1222
  538. package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
  539. package/dist/layout/json-tree/JsonValue.svelte +0 -334
  540. package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
  541. package/dist/layout/json-tree/index.d.ts +0 -3
  542. package/dist/layout/json-tree/index.js +0 -3
  543. package/dist/layout/json-tree/types.d.ts +0 -73
  544. package/dist/layout/json-tree/types.js +0 -3
  545. package/dist/layout/json-tree/utils.d.ts +0 -29
  546. package/dist/layout/json-tree/utils.js +0 -649
  547. package/dist/marching-cubes.d.ts +0 -14
  548. package/dist/marching-cubes.js +0 -542
  549. package/dist/math.d.ts +0 -91
  550. package/dist/math.js +0 -896
  551. package/dist/overlays/ContextMenu.svelte +0 -162
  552. package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
  553. package/dist/overlays/CopyButton.svelte +0 -45
  554. package/dist/overlays/CopyButton.svelte.d.ts +0 -8
  555. package/dist/overlays/DraggablePane.svelte +0 -564
  556. package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
  557. package/dist/overlays/InfoPaneCards.svelte +0 -149
  558. package/dist/overlays/InfoPaneCards.svelte.d.ts +0 -22
  559. package/dist/overlays/index.d.ts +0 -2
  560. package/dist/overlays/index.js +0 -2
  561. package/dist/periodic-table/PeriodicTable.svelte +0 -469
  562. package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
  563. package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
  564. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
  565. package/dist/periodic-table/PropertySelect.svelte +0 -37
  566. package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
  567. package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
  568. package/dist/periodic-table/index.d.ts +0 -10
  569. package/dist/periodic-table/index.js +0 -4
  570. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1084
  571. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
  572. package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -449
  573. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
  574. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  575. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
  576. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
  577. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
  578. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
  579. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
  580. package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
  581. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
  582. package/dist/phase-diagram/build-diagram.d.ts +0 -11
  583. package/dist/phase-diagram/build-diagram.js +0 -167
  584. package/dist/phase-diagram/colors.d.ts +0 -35
  585. package/dist/phase-diagram/colors.js +0 -51
  586. package/dist/phase-diagram/diagram-input.d.ts +0 -33
  587. package/dist/phase-diagram/diagram-input.js +0 -3
  588. package/dist/phase-diagram/index.d.ts +0 -13
  589. package/dist/phase-diagram/index.js +0 -13
  590. package/dist/phase-diagram/parse.d.ts +0 -55
  591. package/dist/phase-diagram/parse.js +0 -276
  592. package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
  593. package/dist/phase-diagram/svg-to-diagram.js +0 -867
  594. package/dist/phase-diagram/types.d.ts +0 -99
  595. package/dist/phase-diagram/types.js +0 -1
  596. package/dist/phase-diagram/utils.d.ts +0 -118
  597. package/dist/phase-diagram/utils.js +0 -606
  598. package/dist/plot/AxisLabel.svelte +0 -51
  599. package/dist/plot/AxisLabel.svelte.d.ts +0 -16
  600. package/dist/plot/BarPlot.svelte +0 -2265
  601. package/dist/plot/BarPlot.svelte.d.ts +0 -83
  602. package/dist/plot/BarPlotControls.svelte +0 -66
  603. package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
  604. package/dist/plot/ColorBar.svelte +0 -719
  605. package/dist/plot/ColorBar.svelte.d.ts +0 -31
  606. package/dist/plot/ColorScaleSelect.svelte +0 -54
  607. package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
  608. package/dist/plot/ElementScatter.svelte +0 -63
  609. package/dist/plot/ElementScatter.svelte.d.ts +0 -14
  610. package/dist/plot/FillArea.svelte +0 -225
  611. package/dist/plot/FillArea.svelte.d.ts +0 -21
  612. package/dist/plot/Histogram.svelte +0 -1672
  613. package/dist/plot/Histogram.svelte.d.ts +0 -50
  614. package/dist/plot/HistogramControls.svelte +0 -212
  615. package/dist/plot/HistogramControls.svelte.d.ts +0 -22
  616. package/dist/plot/InteractiveAxisLabel.svelte +0 -94
  617. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
  618. package/dist/plot/Line.svelte +0 -84
  619. package/dist/plot/Line.svelte.d.ts +0 -15
  620. package/dist/plot/PlotControls.svelte +0 -537
  621. package/dist/plot/PlotControls.svelte.d.ts +0 -4
  622. package/dist/plot/PlotLegend.svelte +0 -569
  623. package/dist/plot/PlotLegend.svelte.d.ts +0 -29
  624. package/dist/plot/PlotTooltip.svelte +0 -67
  625. package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
  626. package/dist/plot/PortalSelect.svelte +0 -253
  627. package/dist/plot/PortalSelect.svelte.d.ts +0 -16
  628. package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
  629. package/dist/plot/ReferenceLine3D.svelte +0 -154
  630. package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
  631. package/dist/plot/ReferencePlane.svelte +0 -178
  632. package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
  633. package/dist/plot/ScatterPlot.svelte +0 -2845
  634. package/dist/plot/ScatterPlot.svelte.d.ts +0 -93
  635. package/dist/plot/ScatterPlot3D.svelte +0 -502
  636. package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
  637. package/dist/plot/ScatterPlot3DControls.svelte +0 -437
  638. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
  639. package/dist/plot/ScatterPlot3DScene.svelte +0 -912
  640. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
  641. package/dist/plot/ScatterPlotControls.svelte +0 -307
  642. package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
  643. package/dist/plot/ScatterPoint.svelte +0 -191
  644. package/dist/plot/ScatterPoint.svelte.d.ts +0 -21
  645. package/dist/plot/SpacegroupBarPlot.svelte +0 -293
  646. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
  647. package/dist/plot/Surface3D.svelte +0 -200
  648. package/dist/plot/Surface3D.svelte.d.ts +0 -13
  649. package/dist/plot/ZeroLines.svelte +0 -96
  650. package/dist/plot/ZeroLines.svelte.d.ts +0 -32
  651. package/dist/plot/ZoomRect.svelte +0 -23
  652. package/dist/plot/ZoomRect.svelte.d.ts +0 -8
  653. package/dist/plot/axis-utils.d.ts +0 -19
  654. package/dist/plot/axis-utils.js +0 -80
  655. package/dist/plot/data-cleaning.d.ts +0 -37
  656. package/dist/plot/data-cleaning.js +0 -855
  657. package/dist/plot/data-transform.d.ts +0 -16
  658. package/dist/plot/data-transform.js +0 -45
  659. package/dist/plot/defaults.d.ts +0 -19
  660. package/dist/plot/defaults.js +0 -9
  661. package/dist/plot/fill-utils.d.ts +0 -51
  662. package/dist/plot/fill-utils.js +0 -337
  663. package/dist/plot/hover-lock.svelte.d.ts +0 -14
  664. package/dist/plot/hover-lock.svelte.js +0 -46
  665. package/dist/plot/index.d.ts +0 -37
  666. package/dist/plot/index.js +0 -37
  667. package/dist/plot/interactions.d.ts +0 -12
  668. package/dist/plot/interactions.js +0 -100
  669. package/dist/plot/layout.d.ts +0 -60
  670. package/dist/plot/layout.js +0 -230
  671. package/dist/plot/reference-line.d.ts +0 -60
  672. package/dist/plot/reference-line.js +0 -316
  673. package/dist/plot/scales.d.ts +0 -48
  674. package/dist/plot/scales.js +0 -484
  675. package/dist/plot/svg.d.ts +0 -1
  676. package/dist/plot/svg.js +0 -11
  677. package/dist/plot/types.d.ts +0 -859
  678. package/dist/plot/types.js +0 -103
  679. package/dist/plot/utils/label-placement.d.ts +0 -47
  680. package/dist/plot/utils/label-placement.js +0 -256
  681. package/dist/plot/utils/series-visibility.d.ts +0 -9
  682. package/dist/plot/utils/series-visibility.js +0 -67
  683. package/dist/plot/utils.d.ts +0 -1
  684. package/dist/plot/utils.js +0 -14
  685. package/dist/rdf/RdfPlot.svelte +0 -247
  686. package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
  687. package/dist/rdf/calc-rdf.d.ts +0 -4
  688. package/dist/rdf/calc-rdf.js +0 -111
  689. package/dist/rdf/index.d.ts +0 -23
  690. package/dist/rdf/index.js +0 -2
  691. package/dist/sanitize.d.ts +0 -4
  692. package/dist/sanitize.js +0 -114
  693. package/dist/settings.d.ts +0 -255
  694. package/dist/settings.js +0 -1132
  695. package/dist/spectral/Bands.svelte +0 -1040
  696. package/dist/spectral/Bands.svelte.d.ts +0 -40
  697. package/dist/spectral/BandsAndDos.svelte +0 -128
  698. package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
  699. package/dist/spectral/BrillouinBandsDos.svelte +0 -248
  700. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
  701. package/dist/spectral/Dos.svelte +0 -697
  702. package/dist/spectral/Dos.svelte.d.ts +0 -29
  703. package/dist/spectral/helpers.d.ts +0 -117
  704. package/dist/spectral/helpers.js +0 -1023
  705. package/dist/spectral/index.d.ts +0 -6
  706. package/dist/spectral/index.js +0 -7
  707. package/dist/spectral/types.d.ts +0 -84
  708. package/dist/spectral/types.js +0 -2
  709. package/dist/state.svelte.d.ts +0 -25
  710. package/dist/state.svelte.js +0 -45
  711. package/dist/structure/Arrow.svelte +0 -72
  712. package/dist/structure/Arrow.svelte.d.ts +0 -15
  713. package/dist/structure/AtomLegend.svelte +0 -798
  714. package/dist/structure/AtomLegend.svelte.d.ts +0 -34
  715. package/dist/structure/Bond.svelte +0 -140
  716. package/dist/structure/Bond.svelte.d.ts +0 -9
  717. package/dist/structure/CanvasTooltip.svelte +0 -33
  718. package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
  719. package/dist/structure/CellSelect.svelte +0 -351
  720. package/dist/structure/CellSelect.svelte.d.ts +0 -13
  721. package/dist/structure/Cylinder.svelte +0 -45
  722. package/dist/structure/Cylinder.svelte.d.ts +0 -10
  723. package/dist/structure/Lattice.svelte +0 -196
  724. package/dist/structure/Lattice.svelte.d.ts +0 -17
  725. package/dist/structure/Structure.svelte +0 -1999
  726. package/dist/structure/Structure.svelte.d.ts +0 -87
  727. package/dist/structure/StructureControls.svelte +0 -1298
  728. package/dist/structure/StructureControls.svelte.d.ts +0 -31
  729. package/dist/structure/StructureExportPane.svelte +0 -251
  730. package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
  731. package/dist/structure/StructureInfoPane.svelte +0 -735
  732. package/dist/structure/StructureInfoPane.svelte.d.ts +0 -19
  733. package/dist/structure/StructureScene.svelte +0 -1905
  734. package/dist/structure/StructureScene.svelte.d.ts +0 -108
  735. package/dist/structure/atom-properties.d.ts +0 -37
  736. package/dist/structure/atom-properties.js +0 -200
  737. package/dist/structure/bond-order-perception.d.ts +0 -13
  738. package/dist/structure/bond-order-perception.js +0 -367
  739. package/dist/structure/bonding.d.ts +0 -42
  740. package/dist/structure/bonding.js +0 -525
  741. package/dist/structure/export.d.ts +0 -20
  742. package/dist/structure/export.js +0 -727
  743. package/dist/structure/index.d.ts +0 -125
  744. package/dist/structure/index.js +0 -171
  745. package/dist/structure/label-placement.d.ts +0 -14
  746. package/dist/structure/label-placement.js +0 -72
  747. package/dist/structure/measure.d.ts +0 -6
  748. package/dist/structure/measure.js +0 -29
  749. package/dist/structure/parse.d.ts +0 -66
  750. package/dist/structure/parse.js +0 -1363
  751. package/dist/structure/partial-occupancy.d.ts +0 -25
  752. package/dist/structure/partial-occupancy.js +0 -99
  753. package/dist/structure/pbc.d.ts +0 -9
  754. package/dist/structure/pbc.js +0 -123
  755. package/dist/structure/supercell.d.ts +0 -8
  756. package/dist/structure/supercell.js +0 -170
  757. package/dist/structure/validation.d.ts +0 -2
  758. package/dist/structure/validation.js +0 -10
  759. package/dist/symmetry/SymmetryStats.svelte +0 -226
  760. package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
  761. package/dist/symmetry/WyckoffTable.svelte +0 -113
  762. package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
  763. package/dist/symmetry/cell-transform.d.ts +0 -12
  764. package/dist/symmetry/cell-transform.js +0 -91
  765. package/dist/symmetry/index.d.ts +0 -43
  766. package/dist/symmetry/index.js +0 -229
  767. package/dist/symmetry/spacegroups.d.ts +0 -9
  768. package/dist/symmetry/spacegroups.js +0 -394
  769. package/dist/table/HeatmapTable.svelte +0 -1854
  770. package/dist/table/HeatmapTable.svelte.d.ts +0 -49
  771. package/dist/table/ToggleMenu.svelte +0 -376
  772. package/dist/table/ToggleMenu.svelte.d.ts +0 -11
  773. package/dist/table/index.d.ts +0 -74
  774. package/dist/table/index.js +0 -38
  775. package/dist/theme/ThemeControl.svelte +0 -53
  776. package/dist/theme/ThemeControl.svelte.d.ts +0 -9
  777. package/dist/theme/index.d.ts +0 -29
  778. package/dist/theme/index.js +0 -79
  779. package/dist/theme/themes.mjs +0 -285
  780. package/dist/time.d.ts +0 -4
  781. package/dist/time.js +0 -70
  782. package/dist/tooltip/TooltipContent.svelte +0 -58
  783. package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
  784. package/dist/tooltip/index.d.ts +0 -2
  785. package/dist/tooltip/index.js +0 -2
  786. package/dist/tooltip/types.d.ts +0 -8
  787. package/dist/tooltip/types.js +0 -1
  788. package/dist/trajectory/Trajectory.svelte +0 -1517
  789. package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
  790. package/dist/trajectory/TrajectoryError.svelte +0 -128
  791. package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
  792. package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
  793. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
  794. package/dist/trajectory/TrajectoryInfoPane.svelte +0 -313
  795. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
  796. package/dist/trajectory/constants.d.ts +0 -6
  797. package/dist/trajectory/constants.js +0 -7
  798. package/dist/trajectory/extract.d.ts +0 -5
  799. package/dist/trajectory/extract.js +0 -162
  800. package/dist/trajectory/format-detect.d.ts +0 -9
  801. package/dist/trajectory/format-detect.js +0 -76
  802. package/dist/trajectory/frame-reader.d.ts +0 -17
  803. package/dist/trajectory/frame-reader.js +0 -332
  804. package/dist/trajectory/helpers.d.ts +0 -14
  805. package/dist/trajectory/helpers.js +0 -172
  806. package/dist/trajectory/index.d.ts +0 -63
  807. package/dist/trajectory/index.js +0 -126
  808. package/dist/trajectory/parse/ase.d.ts +0 -2
  809. package/dist/trajectory/parse/ase.js +0 -73
  810. package/dist/trajectory/parse/hdf5.d.ts +0 -2
  811. package/dist/trajectory/parse/hdf5.js +0 -127
  812. package/dist/trajectory/parse/index.d.ts +0 -12
  813. package/dist/trajectory/parse/index.js +0 -299
  814. package/dist/trajectory/parse/lammps.d.ts +0 -5
  815. package/dist/trajectory/parse/lammps.js +0 -179
  816. package/dist/trajectory/parse/vasp.d.ts +0 -2
  817. package/dist/trajectory/parse/vasp.js +0 -68
  818. package/dist/trajectory/parse/xyz.d.ts +0 -2
  819. package/dist/trajectory/parse/xyz.js +0 -110
  820. package/dist/trajectory/plotting.d.ts +0 -28
  821. package/dist/trajectory/plotting.js +0 -423
  822. package/dist/trajectory/types.d.ts +0 -11
  823. package/dist/trajectory/types.js +0 -1
  824. package/dist/utils.d.ts +0 -5
  825. package/dist/utils.js +0 -36
  826. package/dist/xrd/XrdPlot.svelte +0 -615
  827. package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
  828. package/dist/xrd/broadening.d.ts +0 -20
  829. package/dist/xrd/broadening.js +0 -97
  830. package/dist/xrd/calc-xrd.d.ts +0 -37
  831. package/dist/xrd/calc-xrd.js +0 -337
  832. package/dist/xrd/index.d.ts +0 -37
  833. package/dist/xrd/index.js +0 -4
  834. package/dist/xrd/parse.d.ts +0 -13
  835. package/dist/xrd/parse.js +0 -749
  836. /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
  837. /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
  838. /package/dist/{app.css → src/lib/app.css} +0 -0
  839. /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
  840. /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
  841. /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
  842. /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
  843. /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
  844. /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
  845. /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
  846. /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
  847. /package/dist/{element → src/lib/element}/data.json +0 -0
  848. /package/dist/{element → src/lib/element}/data.json.gz +0 -0
  849. /package/dist/{element → src/lib/element}/data.schema.json +0 -0
  850. /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
  851. /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
  852. /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
  853. /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
  854. /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
  855. /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