matterviz 0.3.4 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (852) hide show
  1. package/.vscode/launch.json +13 -0
  2. package/.vscodeignore +7 -0
  3. package/dist/assets/STLExporter-BpTH3YHE.js +8 -0
  4. package/dist/assets/browser-DdDecX_W.js +1 -0
  5. package/dist/assets/export-qgn-H9y6.js +2 -0
  6. package/dist/assets/main-DiKYzti2.css +1 -0
  7. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  8. package/dist/extension.js +31293 -0
  9. package/dist/src/lib/FilePicker.svelte +360 -0
  10. package/dist/src/lib/MillerIndexInput.svelte +66 -0
  11. package/dist/src/lib/api/mp.ts +26 -0
  12. package/dist/src/lib/api/optimade.ts +204 -0
  13. package/dist/src/lib/app.css +247 -0
  14. package/dist/src/lib/brillouin/BrillouinZone.svelte +549 -0
  15. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
  16. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
  17. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  18. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
  19. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
  20. package/dist/src/lib/brillouin/compute.ts +529 -0
  21. package/dist/src/lib/brillouin/index.ts +8 -0
  22. package/dist/src/lib/brillouin/types.ts +51 -0
  23. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
  24. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  25. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  26. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
  27. package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
  28. package/dist/src/lib/chempot-diagram/color.ts +42 -0
  29. package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
  30. package/dist/src/lib/chempot-diagram/index.ts +6 -0
  31. package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
  32. package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
  33. package/dist/src/lib/chempot-diagram/types.ts +130 -0
  34. package/dist/src/lib/colors/index.ts +249 -0
  35. package/dist/src/lib/composition/BarChart.svelte +297 -0
  36. package/dist/src/lib/composition/BubbleChart.svelte +218 -0
  37. package/dist/src/lib/composition/Composition.svelte +165 -0
  38. package/dist/src/lib/composition/Formula.svelte +268 -0
  39. package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
  40. package/dist/src/lib/composition/PieChart.svelte +323 -0
  41. package/dist/src/lib/composition/format.ts +155 -0
  42. package/dist/src/lib/composition/index.ts +37 -0
  43. package/dist/src/lib/composition/parse.ts +605 -0
  44. package/dist/src/lib/constants.ts +134 -0
  45. package/dist/src/lib/controls.ts +42 -0
  46. package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
  47. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
  48. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
  49. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
  50. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
  51. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
  52. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
  53. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
  54. package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
  55. package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
  56. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
  57. package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
  58. package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
  59. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
  60. package/dist/src/lib/convex-hull/helpers.ts +932 -0
  61. package/dist/src/lib/convex-hull/index.ts +202 -0
  62. package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
  63. package/dist/src/lib/convex-hull/types.ts +267 -0
  64. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
  65. package/dist/src/lib/coordination/calc-coordination.ts +93 -0
  66. package/dist/src/lib/coordination/index.ts +9 -0
  67. package/dist/src/lib/effects.svelte.ts +48 -0
  68. package/dist/src/lib/element/BohrAtom.svelte +147 -0
  69. package/dist/src/lib/element/ElementHeading.svelte +26 -0
  70. package/dist/src/lib/element/ElementPhoto.svelte +57 -0
  71. package/dist/src/lib/element/ElementStats.svelte +80 -0
  72. package/dist/src/lib/element/ElementTile.svelte +484 -0
  73. package/dist/src/lib/element/data.json.gz.d.ts +4 -0
  74. package/dist/src/lib/element/data.ts +14 -0
  75. package/dist/src/lib/element/index.ts +8 -0
  76. package/dist/src/lib/element/types.ts +62 -0
  77. package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
  78. package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
  79. package/dist/src/lib/feedback/index.ts +4 -0
  80. package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
  81. package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
  82. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
  83. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
  84. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  85. package/dist/src/lib/fermi-surface/compute.ts +728 -0
  86. package/dist/src/lib/fermi-surface/constants.ts +32 -0
  87. package/dist/src/lib/fermi-surface/export.ts +64 -0
  88. package/dist/src/lib/fermi-surface/index.ts +14 -0
  89. package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
  90. package/dist/src/lib/fermi-surface/parse.ts +574 -0
  91. package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
  92. package/dist/src/lib/fermi-surface/types.ts +159 -0
  93. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  94. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  95. package/dist/src/lib/heatmap-matrix/index.ts +167 -0
  96. package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
  97. package/dist/src/lib/icons.ts +650 -0
  98. package/dist/src/lib/index.ts +61 -0
  99. package/dist/src/lib/io/decompress.ts +92 -0
  100. package/dist/src/lib/io/export.ts +385 -0
  101. package/dist/src/lib/io/fetch.ts +46 -0
  102. package/dist/src/lib/io/file-drop.ts +51 -0
  103. package/dist/src/lib/io/index.ts +7 -0
  104. package/dist/src/lib/io/is-binary.ts +24 -0
  105. package/dist/src/lib/io/types.ts +8 -0
  106. package/dist/src/lib/io/url-drop.ts +141 -0
  107. package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
  108. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
  109. package/dist/src/lib/isosurface/index.ts +7 -0
  110. package/dist/src/lib/isosurface/parse.ts +656 -0
  111. package/dist/src/lib/isosurface/slice.ts +175 -0
  112. package/dist/src/lib/isosurface/types.ts +309 -0
  113. package/dist/src/lib/labels.ts +320 -0
  114. package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
  115. package/dist/src/lib/layout/InfoCard.svelte +120 -0
  116. package/dist/src/lib/layout/InfoTag.svelte +185 -0
  117. package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
  118. package/dist/src/lib/layout/SettingsSection.svelte +148 -0
  119. package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
  120. package/dist/src/lib/layout/fullscreen.ts +65 -0
  121. package/dist/src/lib/layout/index.ts +11 -0
  122. package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
  123. package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
  124. package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
  125. package/dist/src/lib/layout/json-tree/index.ts +3 -0
  126. package/dist/src/lib/layout/json-tree/types.ts +126 -0
  127. package/dist/src/lib/layout/json-tree/utils.ts +682 -0
  128. package/dist/src/lib/marching-cubes.ts +614 -0
  129. package/dist/src/lib/math.ts +1081 -0
  130. package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
  131. package/dist/src/lib/overlays/CopyButton.svelte +45 -0
  132. package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
  133. package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
  134. package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
  135. package/dist/src/lib/overlays/index.ts +3 -0
  136. package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
  137. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
  138. package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
  139. package/dist/src/lib/periodic-table/index.ts +12 -0
  140. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  141. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
  142. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  143. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  144. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  145. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
  146. package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
  147. package/dist/src/lib/phase-diagram/colors.ts +58 -0
  148. package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
  149. package/dist/src/lib/phase-diagram/index.ts +13 -0
  150. package/dist/src/lib/phase-diagram/parse.ts +348 -0
  151. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
  152. package/dist/src/lib/phase-diagram/types.ts +144 -0
  153. package/dist/src/lib/phase-diagram/utils.ts +775 -0
  154. package/dist/src/lib/plot/AxisLabel.svelte +51 -0
  155. package/dist/src/lib/plot/BarPlot.svelte +2113 -0
  156. package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
  157. package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
  158. package/dist/src/lib/plot/ColorBar.svelte +721 -0
  159. package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
  160. package/dist/src/lib/plot/ElementScatter.svelte +63 -0
  161. package/dist/src/lib/plot/FillArea.svelte +223 -0
  162. package/dist/src/lib/plot/Histogram.svelte +1558 -0
  163. package/dist/src/lib/plot/HistogramControls.svelte +212 -0
  164. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
  165. package/dist/src/lib/plot/Line.svelte +84 -0
  166. package/dist/src/lib/plot/PlotAxis.svelte +169 -0
  167. package/dist/src/lib/plot/PlotControls.svelte +537 -0
  168. package/dist/src/lib/plot/PlotLegend.svelte +569 -0
  169. package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
  170. package/dist/src/lib/plot/PortalSelect.svelte +253 -0
  171. package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
  172. package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
  173. package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
  174. package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
  175. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
  176. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
  177. package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
  178. package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
  179. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
  180. package/dist/src/lib/plot/Surface3D.svelte +197 -0
  181. package/dist/src/lib/plot/ZeroLines.svelte +97 -0
  182. package/dist/src/lib/plot/ZoomRect.svelte +23 -0
  183. package/dist/src/lib/plot/adaptive-density.ts +316 -0
  184. package/dist/src/lib/plot/auto-place.ts +184 -0
  185. package/dist/src/lib/plot/axis-utils.ts +122 -0
  186. package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
  187. package/dist/src/lib/plot/data-cleaning.ts +1069 -0
  188. package/dist/src/lib/plot/data-transform.ts +69 -0
  189. package/dist/src/lib/plot/defaults.ts +9 -0
  190. package/dist/src/lib/plot/fill-utils.ts +494 -0
  191. package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
  192. package/dist/src/lib/plot/index.ts +53 -0
  193. package/dist/src/lib/plot/interactions.ts +119 -0
  194. package/dist/src/lib/plot/layout.ts +425 -0
  195. package/dist/src/lib/plot/reference-line.ts +426 -0
  196. package/dist/src/lib/plot/scales.ts +654 -0
  197. package/dist/src/lib/plot/svg.ts +23 -0
  198. package/dist/src/lib/plot/types.ts +1144 -0
  199. package/dist/src/lib/plot/utils/label-placement.ts +541 -0
  200. package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
  201. package/dist/src/lib/plot/utils.ts +11 -0
  202. package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
  203. package/dist/src/lib/rdf/calc-rdf.ts +167 -0
  204. package/dist/src/lib/rdf/index.ts +27 -0
  205. package/dist/src/lib/sanitize.ts +126 -0
  206. package/dist/src/lib/settings.ts +1479 -0
  207. package/dist/src/lib/spectral/Bands.svelte +1040 -0
  208. package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
  209. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
  210. package/dist/src/lib/spectral/Dos.svelte +697 -0
  211. package/dist/src/lib/spectral/helpers.ts +1381 -0
  212. package/dist/src/lib/spectral/index.ts +8 -0
  213. package/dist/src/lib/spectral/types.ts +112 -0
  214. package/dist/src/lib/state.svelte.ts +64 -0
  215. package/dist/src/lib/structure/Arrow.svelte +72 -0
  216. package/dist/src/lib/structure/AtomLegend.svelte +815 -0
  217. package/dist/src/lib/structure/Bond.svelte +140 -0
  218. package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
  219. package/dist/src/lib/structure/CellSelect.svelte +349 -0
  220. package/dist/src/lib/structure/Cylinder.svelte +45 -0
  221. package/dist/src/lib/structure/Lattice.svelte +196 -0
  222. package/dist/src/lib/structure/Structure.svelte +2248 -0
  223. package/dist/src/lib/structure/StructureControls.svelte +1273 -0
  224. package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
  225. package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
  226. package/dist/src/lib/structure/StructureScene.svelte +2255 -0
  227. package/dist/src/lib/structure/atom-properties.ts +316 -0
  228. package/dist/src/lib/structure/bond-order-perception.ts +447 -0
  229. package/dist/src/lib/structure/bonding.ts +944 -0
  230. package/dist/src/lib/structure/export.ts +861 -0
  231. package/dist/src/lib/structure/index.ts +291 -0
  232. package/dist/src/lib/structure/label-placement.ts +130 -0
  233. package/dist/src/lib/structure/measure.ts +45 -0
  234. package/dist/src/lib/structure/parse.ts +1705 -0
  235. package/dist/src/lib/structure/partial-occupancy.ts +183 -0
  236. package/dist/src/lib/structure/pbc.ts +164 -0
  237. package/dist/src/lib/structure/supercell.ts +226 -0
  238. package/dist/src/lib/structure/validation.ts +11 -0
  239. package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
  240. package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
  241. package/dist/src/lib/symmetry/cell-transform.ts +118 -0
  242. package/dist/src/lib/symmetry/index.ts +348 -0
  243. package/dist/src/lib/symmetry/spacegroups.ts +404 -0
  244. package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
  245. package/dist/src/lib/table/ToggleMenu.svelte +385 -0
  246. package/dist/src/lib/table/index.ts +139 -0
  247. package/dist/src/lib/theme/ThemeControl.svelte +53 -0
  248. package/dist/src/lib/theme/index.ts +107 -0
  249. package/dist/src/lib/theme/themes.mjs +297 -0
  250. package/dist/src/lib/time.ts +71 -0
  251. package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
  252. package/dist/src/lib/tooltip/index.ts +2 -0
  253. package/dist/src/lib/tooltip/types.ts +13 -0
  254. package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
  255. package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
  256. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
  257. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
  258. package/dist/src/lib/trajectory/constants.ts +7 -0
  259. package/dist/src/lib/trajectory/extract.ts +196 -0
  260. package/dist/src/lib/trajectory/format-detect.ts +96 -0
  261. package/dist/src/lib/trajectory/frame-reader.ts +456 -0
  262. package/dist/src/lib/trajectory/helpers.ts +217 -0
  263. package/dist/src/lib/trajectory/index.ts +218 -0
  264. package/dist/src/lib/trajectory/parse/ase.ts +109 -0
  265. package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
  266. package/dist/src/lib/trajectory/parse/index.ts +411 -0
  267. package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
  268. package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
  269. package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
  270. package/dist/src/lib/trajectory/plotting.ts +599 -0
  271. package/dist/src/lib/trajectory/types.ts +13 -0
  272. package/dist/src/lib/utils.ts +56 -0
  273. package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
  274. package/dist/src/lib/xrd/broadening.ts +130 -0
  275. package/dist/src/lib/xrd/calc-xrd.ts +397 -0
  276. package/dist/src/lib/xrd/index.ts +38 -0
  277. package/dist/src/lib/xrd/parse.ts +858 -0
  278. package/dist/webview.js +29421 -0
  279. package/icon.png +0 -0
  280. package/license +1 -1
  281. package/matterviz-0.3.2.vsix +0 -0
  282. package/matterviz-0.3.4.vsix +0 -0
  283. package/matterviz-0.3.5.vsix +0 -0
  284. package/package.json +1461 -231
  285. package/readme.md +171 -98
  286. package/scripts/sync-config.ts +101 -0
  287. package/src/declarations.d.ts +2 -0
  288. package/src/extension.ts +972 -0
  289. package/src/node-io.ts +65 -0
  290. package/src/types.ts +17 -0
  291. package/src/webview/JsonBrowser.svelte +1079 -0
  292. package/src/webview/PlotPanel.svelte +346 -0
  293. package/src/webview/detect.ts +444 -0
  294. package/src/webview/main.ts +764 -0
  295. package/src/webview/plot-utils.ts +250 -0
  296. package/test-fixtures/all-viz-types.json.gz +0 -0
  297. package/test-fixtures/plot-demo-data.json.gz +0 -0
  298. package/tests/detect.test.ts +604 -0
  299. package/tests/extension.test.ts +2041 -0
  300. package/tests/node-io.test.ts +39 -0
  301. package/tests/plot-utils.test.ts +302 -0
  302. package/tests/vite-plugin-json-gz.test.ts +114 -0
  303. package/tests/vscode-mock.ts +18 -0
  304. package/tests/webview.test.ts +231 -0
  305. package/tsconfig.json +20 -0
  306. package/vite-plugin-json-gz.ts +29 -0
  307. package/vite.config.ts +34 -0
  308. package/vite.extension.config.ts +34 -0
  309. package/dist/EmptyState.svelte.d.ts +0 -9
  310. package/dist/FilePicker.svelte +0 -360
  311. package/dist/FilePicker.svelte.d.ts +0 -17
  312. package/dist/Icon.svelte.d.ts +0 -13
  313. package/dist/MillerIndexInput.svelte +0 -66
  314. package/dist/MillerIndexInput.svelte.d.ts +0 -7
  315. package/dist/api/mp.d.ts +0 -6
  316. package/dist/api/mp.js +0 -22
  317. package/dist/api/optimade.d.ts +0 -45
  318. package/dist/api/optimade.js +0 -135
  319. package/dist/app.css +0 -240
  320. package/dist/brillouin/BrillouinZone.svelte +0 -543
  321. package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
  322. package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
  323. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
  324. package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
  325. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
  326. package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  327. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
  328. package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
  329. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
  330. package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
  331. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
  332. package/dist/brillouin/compute.d.ts +0 -17
  333. package/dist/brillouin/compute.js +0 -422
  334. package/dist/brillouin/index.d.ts +0 -8
  335. package/dist/brillouin/index.js +0 -8
  336. package/dist/brillouin/types.d.ts +0 -48
  337. package/dist/brillouin/types.js +0 -1
  338. package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
  339. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
  340. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
  341. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
  342. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
  343. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
  344. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
  345. package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
  346. package/dist/chempot-diagram/async-compute.svelte.js +0 -77
  347. package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
  348. package/dist/chempot-diagram/chempot-worker.js +0 -11
  349. package/dist/chempot-diagram/color.d.ts +0 -10
  350. package/dist/chempot-diagram/color.js +0 -32
  351. package/dist/chempot-diagram/compute.d.ts +0 -48
  352. package/dist/chempot-diagram/compute.js +0 -812
  353. package/dist/chempot-diagram/index.d.ts +0 -6
  354. package/dist/chempot-diagram/index.js +0 -6
  355. package/dist/chempot-diagram/pointer.d.ts +0 -16
  356. package/dist/chempot-diagram/pointer.js +0 -40
  357. package/dist/chempot-diagram/temperature.d.ts +0 -15
  358. package/dist/chempot-diagram/temperature.js +0 -36
  359. package/dist/chempot-diagram/types.d.ts +0 -86
  360. package/dist/chempot-diagram/types.js +0 -28
  361. package/dist/colors/index.d.ts +0 -47
  362. package/dist/colors/index.js +0 -203
  363. package/dist/composition/BarChart.svelte +0 -297
  364. package/dist/composition/BarChart.svelte.d.ts +0 -39
  365. package/dist/composition/BubbleChart.svelte +0 -218
  366. package/dist/composition/BubbleChart.svelte.d.ts +0 -28
  367. package/dist/composition/Composition.svelte +0 -164
  368. package/dist/composition/Composition.svelte.d.ts +0 -15
  369. package/dist/composition/Formula.svelte +0 -265
  370. package/dist/composition/Formula.svelte.d.ts +0 -19
  371. package/dist/composition/FormulaFilter.svelte +0 -1259
  372. package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
  373. package/dist/composition/PieChart.svelte +0 -323
  374. package/dist/composition/PieChart.svelte.d.ts +0 -37
  375. package/dist/composition/format.d.ts +0 -15
  376. package/dist/composition/format.js +0 -109
  377. package/dist/composition/index.d.ts +0 -20
  378. package/dist/composition/index.js +0 -14
  379. package/dist/composition/parse.d.ts +0 -55
  380. package/dist/composition/parse.js +0 -459
  381. package/dist/constants.d.ts +0 -29
  382. package/dist/constants.js +0 -105
  383. package/dist/controls.d.ts +0 -14
  384. package/dist/controls.js +0 -30
  385. package/dist/convex-hull/ConvexHull.svelte +0 -157
  386. package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
  387. package/dist/convex-hull/ConvexHull2D.svelte +0 -813
  388. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
  389. package/dist/convex-hull/ConvexHull3D.svelte +0 -1788
  390. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
  391. package/dist/convex-hull/ConvexHull4D.svelte +0 -1374
  392. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
  393. package/dist/convex-hull/ConvexHullControls.svelte +0 -546
  394. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
  395. package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -115
  396. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
  397. package/dist/convex-hull/ConvexHullStats.svelte +0 -905
  398. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
  399. package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
  400. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
  401. package/dist/convex-hull/GasPressureControls.svelte +0 -247
  402. package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
  403. package/dist/convex-hull/StructurePopup.svelte +0 -116
  404. package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
  405. package/dist/convex-hull/TemperatureSlider.svelte +0 -137
  406. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
  407. package/dist/convex-hull/barycentric-coords.d.ts +0 -18
  408. package/dist/convex-hull/barycentric-coords.js +0 -182
  409. package/dist/convex-hull/demo-temperature.d.ts +0 -6
  410. package/dist/convex-hull/demo-temperature.js +0 -40
  411. package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
  412. package/dist/convex-hull/gas-thermodynamics.js +0 -316
  413. package/dist/convex-hull/helpers.d.ts +0 -103
  414. package/dist/convex-hull/helpers.js +0 -671
  415. package/dist/convex-hull/index.d.ts +0 -118
  416. package/dist/convex-hull/index.js +0 -57
  417. package/dist/convex-hull/thermodynamics.d.ts +0 -66
  418. package/dist/convex-hull/thermodynamics.js +0 -1752
  419. package/dist/convex-hull/types.d.ts +0 -162
  420. package/dist/convex-hull/types.js +0 -36
  421. package/dist/coordination/CoordinationBarPlot.svelte +0 -311
  422. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
  423. package/dist/coordination/calc-coordination.d.ts +0 -15
  424. package/dist/coordination/calc-coordination.js +0 -63
  425. package/dist/coordination/index.d.ts +0 -8
  426. package/dist/coordination/index.js +0 -7
  427. package/dist/element/BohrAtom.svelte +0 -149
  428. package/dist/element/BohrAtom.svelte.d.ts +0 -20
  429. package/dist/element/ElementHeading.svelte +0 -26
  430. package/dist/element/ElementHeading.svelte.d.ts +0 -8
  431. package/dist/element/ElementPhoto.svelte +0 -57
  432. package/dist/element/ElementPhoto.svelte.d.ts +0 -9
  433. package/dist/element/ElementStats.svelte +0 -80
  434. package/dist/element/ElementStats.svelte.d.ts +0 -8
  435. package/dist/element/ElementTile.svelte +0 -484
  436. package/dist/element/ElementTile.svelte.d.ts +0 -29
  437. package/dist/element/Nucleus.svelte.d.ts +0 -17
  438. package/dist/element/data.d.ts +0 -3
  439. package/dist/element/data.js +0 -2
  440. package/dist/element/data.json.gz.d.ts +0 -2
  441. package/dist/element/index.d.ts +0 -8
  442. package/dist/element/index.js +0 -8
  443. package/dist/element/types.d.ts +0 -57
  444. package/dist/element/types.js +0 -1
  445. package/dist/feedback/ClickFeedback.svelte +0 -58
  446. package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
  447. package/dist/feedback/DragOverlay.svelte +0 -42
  448. package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
  449. package/dist/feedback/Spinner.svelte.d.ts +0 -7
  450. package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
  451. package/dist/feedback/index.d.ts +0 -4
  452. package/dist/feedback/index.js +0 -4
  453. package/dist/fermi-surface/FermiSlice.svelte +0 -189
  454. package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
  455. package/dist/fermi-surface/FermiSurface.svelte +0 -597
  456. package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
  457. package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
  458. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
  459. package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
  460. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
  461. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  462. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
  463. package/dist/fermi-surface/compute.d.ts +0 -5
  464. package/dist/fermi-surface/compute.js +0 -538
  465. package/dist/fermi-surface/constants.d.ts +0 -9
  466. package/dist/fermi-surface/constants.js +0 -27
  467. package/dist/fermi-surface/export.d.ts +0 -5
  468. package/dist/fermi-surface/export.js +0 -63
  469. package/dist/fermi-surface/index.d.ts +0 -12
  470. package/dist/fermi-surface/index.js +0 -13
  471. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  472. package/dist/fermi-surface/marching-cubes.js +0 -2
  473. package/dist/fermi-surface/parse.d.ts +0 -2
  474. package/dist/fermi-surface/parse.js +0 -495
  475. package/dist/fermi-surface/symmetry.d.ts +0 -3
  476. package/dist/fermi-surface/symmetry.js +0 -46
  477. package/dist/fermi-surface/types.d.ts +0 -113
  478. package/dist/fermi-surface/types.js +0 -4
  479. package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
  480. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
  481. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  482. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
  483. package/dist/heatmap-matrix/index.d.ts +0 -53
  484. package/dist/heatmap-matrix/index.js +0 -100
  485. package/dist/heatmap-matrix/shared.d.ts +0 -2
  486. package/dist/heatmap-matrix/shared.js +0 -4
  487. package/dist/icons.d.ts +0 -569
  488. package/dist/icons.js +0 -648
  489. package/dist/index.d.ts +0 -39
  490. package/dist/index.js +0 -39
  491. package/dist/io/decompress.d.ts +0 -10
  492. package/dist/io/decompress.js +0 -69
  493. package/dist/io/export.d.ts +0 -16
  494. package/dist/io/export.js +0 -312
  495. package/dist/io/fetch.d.ts +0 -5
  496. package/dist/io/fetch.js +0 -39
  497. package/dist/io/file-drop.d.ts +0 -7
  498. package/dist/io/file-drop.js +0 -43
  499. package/dist/io/index.d.ts +0 -7
  500. package/dist/io/index.js +0 -7
  501. package/dist/io/is-binary.d.ts +0 -1
  502. package/dist/io/is-binary.js +0 -5
  503. package/dist/io/types.d.ts +0 -8
  504. package/dist/io/types.js +0 -1
  505. package/dist/io/url-drop.d.ts +0 -2
  506. package/dist/io/url-drop.js +0 -117
  507. package/dist/isosurface/Isosurface.svelte +0 -285
  508. package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
  509. package/dist/isosurface/IsosurfaceControls.svelte +0 -291
  510. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
  511. package/dist/isosurface/index.d.ts +0 -5
  512. package/dist/isosurface/index.js +0 -6
  513. package/dist/isosurface/parse.d.ts +0 -6
  514. package/dist/isosurface/parse.js +0 -553
  515. package/dist/isosurface/slice.d.ts +0 -11
  516. package/dist/isosurface/slice.js +0 -140
  517. package/dist/isosurface/types.d.ts +0 -56
  518. package/dist/isosurface/types.js +0 -227
  519. package/dist/labels.d.ts +0 -53
  520. package/dist/labels.js +0 -274
  521. package/dist/layout/FullscreenToggle.svelte +0 -50
  522. package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
  523. package/dist/layout/InfoCard.svelte +0 -120
  524. package/dist/layout/InfoCard.svelte.d.ts +0 -21
  525. package/dist/layout/InfoTag.svelte +0 -183
  526. package/dist/layout/InfoTag.svelte.d.ts +0 -19
  527. package/dist/layout/PropertyFilter.svelte +0 -244
  528. package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
  529. package/dist/layout/SettingsSection.svelte +0 -148
  530. package/dist/layout/SettingsSection.svelte.d.ts +0 -17
  531. package/dist/layout/SubpageGrid.svelte +0 -82
  532. package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
  533. package/dist/layout/fullscreen.d.ts +0 -9
  534. package/dist/layout/fullscreen.js +0 -53
  535. package/dist/layout/index.d.ts +0 -10
  536. package/dist/layout/index.js +0 -8
  537. package/dist/layout/json-tree/JsonNode.svelte +0 -547
  538. package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
  539. package/dist/layout/json-tree/JsonTree.svelte +0 -1222
  540. package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
  541. package/dist/layout/json-tree/JsonValue.svelte +0 -334
  542. package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
  543. package/dist/layout/json-tree/index.d.ts +0 -3
  544. package/dist/layout/json-tree/index.js +0 -3
  545. package/dist/layout/json-tree/types.d.ts +0 -73
  546. package/dist/layout/json-tree/types.js +0 -3
  547. package/dist/layout/json-tree/utils.d.ts +0 -29
  548. package/dist/layout/json-tree/utils.js +0 -648
  549. package/dist/marching-cubes.d.ts +0 -14
  550. package/dist/marching-cubes.js +0 -542
  551. package/dist/math.d.ts +0 -91
  552. package/dist/math.js +0 -896
  553. package/dist/overlays/ContextMenu.svelte +0 -162
  554. package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
  555. package/dist/overlays/DraggablePane.svelte +0 -564
  556. package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
  557. package/dist/overlays/index.d.ts +0 -2
  558. package/dist/overlays/index.js +0 -2
  559. package/dist/periodic-table/PeriodicTable.svelte +0 -469
  560. package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
  561. package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
  562. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
  563. package/dist/periodic-table/PropertySelect.svelte +0 -37
  564. package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
  565. package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
  566. package/dist/periodic-table/index.d.ts +0 -10
  567. package/dist/periodic-table/index.js +0 -4
  568. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  569. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
  570. package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -451
  571. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
  572. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  573. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
  574. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
  575. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
  576. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
  577. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
  578. package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
  579. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
  580. package/dist/phase-diagram/build-diagram.d.ts +0 -11
  581. package/dist/phase-diagram/build-diagram.js +0 -167
  582. package/dist/phase-diagram/colors.d.ts +0 -35
  583. package/dist/phase-diagram/colors.js +0 -51
  584. package/dist/phase-diagram/diagram-input.d.ts +0 -33
  585. package/dist/phase-diagram/diagram-input.js +0 -3
  586. package/dist/phase-diagram/index.d.ts +0 -13
  587. package/dist/phase-diagram/index.js +0 -13
  588. package/dist/phase-diagram/parse.d.ts +0 -55
  589. package/dist/phase-diagram/parse.js +0 -276
  590. package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
  591. package/dist/phase-diagram/svg-to-diagram.js +0 -869
  592. package/dist/phase-diagram/types.d.ts +0 -99
  593. package/dist/phase-diagram/types.js +0 -1
  594. package/dist/phase-diagram/utils.d.ts +0 -118
  595. package/dist/phase-diagram/utils.js +0 -606
  596. package/dist/plot/AxisLabel.svelte +0 -51
  597. package/dist/plot/AxisLabel.svelte.d.ts +0 -16
  598. package/dist/plot/BarPlot.svelte +0 -2256
  599. package/dist/plot/BarPlot.svelte.d.ts +0 -82
  600. package/dist/plot/BarPlotControls.svelte +0 -66
  601. package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
  602. package/dist/plot/ColorBar.svelte +0 -719
  603. package/dist/plot/ColorBar.svelte.d.ts +0 -31
  604. package/dist/plot/ColorScaleSelect.svelte +0 -54
  605. package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
  606. package/dist/plot/ElementScatter.svelte +0 -63
  607. package/dist/plot/ElementScatter.svelte.d.ts +0 -14
  608. package/dist/plot/FillArea.svelte +0 -226
  609. package/dist/plot/FillArea.svelte.d.ts +0 -20
  610. package/dist/plot/Histogram.svelte +0 -1654
  611. package/dist/plot/Histogram.svelte.d.ts +0 -50
  612. package/dist/plot/HistogramControls.svelte +0 -212
  613. package/dist/plot/HistogramControls.svelte.d.ts +0 -22
  614. package/dist/plot/InteractiveAxisLabel.svelte +0 -94
  615. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
  616. package/dist/plot/Line.svelte +0 -85
  617. package/dist/plot/Line.svelte.d.ts +0 -15
  618. package/dist/plot/PlotControls.svelte +0 -537
  619. package/dist/plot/PlotControls.svelte.d.ts +0 -4
  620. package/dist/plot/PlotLegend.svelte +0 -498
  621. package/dist/plot/PlotLegend.svelte.d.ts +0 -25
  622. package/dist/plot/PlotTooltip.svelte +0 -67
  623. package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
  624. package/dist/plot/PortalSelect.svelte +0 -253
  625. package/dist/plot/PortalSelect.svelte.d.ts +0 -16
  626. package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
  627. package/dist/plot/ReferenceLine3D.svelte +0 -154
  628. package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
  629. package/dist/plot/ReferencePlane.svelte +0 -178
  630. package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
  631. package/dist/plot/ScatterPlot.svelte +0 -2831
  632. package/dist/plot/ScatterPlot.svelte.d.ts +0 -92
  633. package/dist/plot/ScatterPlot3D.svelte +0 -499
  634. package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
  635. package/dist/plot/ScatterPlot3DControls.svelte +0 -437
  636. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
  637. package/dist/plot/ScatterPlot3DScene.svelte +0 -912
  638. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
  639. package/dist/plot/ScatterPlotControls.svelte +0 -307
  640. package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
  641. package/dist/plot/ScatterPoint.svelte +0 -185
  642. package/dist/plot/ScatterPoint.svelte.d.ts +0 -19
  643. package/dist/plot/SpacegroupBarPlot.svelte +0 -292
  644. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
  645. package/dist/plot/Surface3D.svelte +0 -200
  646. package/dist/plot/Surface3D.svelte.d.ts +0 -13
  647. package/dist/plot/ZeroLines.svelte +0 -96
  648. package/dist/plot/ZeroLines.svelte.d.ts +0 -32
  649. package/dist/plot/ZoomRect.svelte +0 -23
  650. package/dist/plot/ZoomRect.svelte.d.ts +0 -8
  651. package/dist/plot/axis-utils.d.ts +0 -19
  652. package/dist/plot/axis-utils.js +0 -80
  653. package/dist/plot/data-cleaning.d.ts +0 -37
  654. package/dist/plot/data-cleaning.js +0 -855
  655. package/dist/plot/data-transform.d.ts +0 -16
  656. package/dist/plot/data-transform.js +0 -45
  657. package/dist/plot/defaults.d.ts +0 -19
  658. package/dist/plot/defaults.js +0 -9
  659. package/dist/plot/fill-utils.d.ts +0 -51
  660. package/dist/plot/fill-utils.js +0 -337
  661. package/dist/plot/hover-lock.svelte.d.ts +0 -14
  662. package/dist/plot/hover-lock.svelte.js +0 -46
  663. package/dist/plot/index.d.ts +0 -43
  664. package/dist/plot/index.js +0 -37
  665. package/dist/plot/interactions.d.ts +0 -12
  666. package/dist/plot/interactions.js +0 -100
  667. package/dist/plot/layout.d.ts +0 -60
  668. package/dist/plot/layout.js +0 -230
  669. package/dist/plot/reference-line.d.ts +0 -60
  670. package/dist/plot/reference-line.js +0 -316
  671. package/dist/plot/scales.d.ts +0 -48
  672. package/dist/plot/scales.js +0 -484
  673. package/dist/plot/svg.d.ts +0 -1
  674. package/dist/plot/svg.js +0 -11
  675. package/dist/plot/types.d.ts +0 -863
  676. package/dist/plot/types.js +0 -103
  677. package/dist/plot/utils/label-placement.d.ts +0 -47
  678. package/dist/plot/utils/label-placement.js +0 -256
  679. package/dist/plot/utils/series-visibility.d.ts +0 -9
  680. package/dist/plot/utils/series-visibility.js +0 -67
  681. package/dist/plot/utils.d.ts +0 -1
  682. package/dist/plot/utils.js +0 -14
  683. package/dist/rdf/RdfPlot.svelte +0 -247
  684. package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
  685. package/dist/rdf/calc-rdf.d.ts +0 -4
  686. package/dist/rdf/calc-rdf.js +0 -111
  687. package/dist/rdf/index.d.ts +0 -23
  688. package/dist/rdf/index.js +0 -2
  689. package/dist/sanitize.d.ts +0 -4
  690. package/dist/sanitize.js +0 -107
  691. package/dist/settings.d.ts +0 -253
  692. package/dist/settings.js +0 -1123
  693. package/dist/spectral/Bands.svelte +0 -1040
  694. package/dist/spectral/Bands.svelte.d.ts +0 -40
  695. package/dist/spectral/BandsAndDos.svelte +0 -128
  696. package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
  697. package/dist/spectral/BrillouinBandsDos.svelte +0 -248
  698. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
  699. package/dist/spectral/Dos.svelte +0 -697
  700. package/dist/spectral/Dos.svelte.d.ts +0 -29
  701. package/dist/spectral/helpers.d.ts +0 -117
  702. package/dist/spectral/helpers.js +0 -1023
  703. package/dist/spectral/index.d.ts +0 -6
  704. package/dist/spectral/index.js +0 -7
  705. package/dist/spectral/types.d.ts +0 -84
  706. package/dist/spectral/types.js +0 -2
  707. package/dist/state.svelte.d.ts +0 -25
  708. package/dist/state.svelte.js +0 -45
  709. package/dist/structure/Arrow.svelte +0 -72
  710. package/dist/structure/Arrow.svelte.d.ts +0 -15
  711. package/dist/structure/AtomLegend.svelte +0 -798
  712. package/dist/structure/AtomLegend.svelte.d.ts +0 -34
  713. package/dist/structure/Bond.svelte +0 -140
  714. package/dist/structure/Bond.svelte.d.ts +0 -9
  715. package/dist/structure/CanvasTooltip.svelte +0 -33
  716. package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
  717. package/dist/structure/CellSelect.svelte +0 -351
  718. package/dist/structure/CellSelect.svelte.d.ts +0 -13
  719. package/dist/structure/Cylinder.svelte +0 -45
  720. package/dist/structure/Cylinder.svelte.d.ts +0 -10
  721. package/dist/structure/Lattice.svelte +0 -196
  722. package/dist/structure/Lattice.svelte.d.ts +0 -17
  723. package/dist/structure/Structure.svelte +0 -1857
  724. package/dist/structure/Structure.svelte.d.ts +0 -83
  725. package/dist/structure/StructureControls.svelte +0 -1184
  726. package/dist/structure/StructureControls.svelte.d.ts +0 -31
  727. package/dist/structure/StructureExportPane.svelte +0 -251
  728. package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
  729. package/dist/structure/StructureInfoPane.svelte +0 -434
  730. package/dist/structure/StructureInfoPane.svelte.d.ts +0 -18
  731. package/dist/structure/StructureScene.svelte +0 -1574
  732. package/dist/structure/StructureScene.svelte.d.ts +0 -104
  733. package/dist/structure/atom-properties.d.ts +0 -37
  734. package/dist/structure/atom-properties.js +0 -198
  735. package/dist/structure/bonding.d.ts +0 -33
  736. package/dist/structure/bonding.js +0 -304
  737. package/dist/structure/export.d.ts +0 -20
  738. package/dist/structure/export.js +0 -725
  739. package/dist/structure/ferrox-wasm-types.d.ts +0 -46
  740. package/dist/structure/ferrox-wasm-types.js +0 -18
  741. package/dist/structure/ferrox-wasm.d.ts +0 -94
  742. package/dist/structure/ferrox-wasm.js +0 -249
  743. package/dist/structure/index.d.ts +0 -110
  744. package/dist/structure/index.js +0 -168
  745. package/dist/structure/measure.d.ts +0 -6
  746. package/dist/structure/measure.js +0 -29
  747. package/dist/structure/parse.d.ts +0 -65
  748. package/dist/structure/parse.js +0 -1374
  749. package/dist/structure/partial-occupancy.d.ts +0 -25
  750. package/dist/structure/partial-occupancy.js +0 -99
  751. package/dist/structure/pbc.d.ts +0 -9
  752. package/dist/structure/pbc.js +0 -123
  753. package/dist/structure/supercell.d.ts +0 -8
  754. package/dist/structure/supercell.js +0 -137
  755. package/dist/structure/validation.d.ts +0 -2
  756. package/dist/structure/validation.js +0 -10
  757. package/dist/symmetry/SymmetryStats.svelte +0 -226
  758. package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
  759. package/dist/symmetry/WyckoffTable.svelte +0 -113
  760. package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
  761. package/dist/symmetry/cell-transform.d.ts +0 -12
  762. package/dist/symmetry/cell-transform.js +0 -77
  763. package/dist/symmetry/index.d.ts +0 -43
  764. package/dist/symmetry/index.js +0 -229
  765. package/dist/symmetry/spacegroups.d.ts +0 -9
  766. package/dist/symmetry/spacegroups.js +0 -394
  767. package/dist/table/HeatmapTable.svelte +0 -1854
  768. package/dist/table/HeatmapTable.svelte.d.ts +0 -49
  769. package/dist/table/ToggleMenu.svelte +0 -376
  770. package/dist/table/ToggleMenu.svelte.d.ts +0 -11
  771. package/dist/table/index.d.ts +0 -74
  772. package/dist/table/index.js +0 -38
  773. package/dist/theme/ThemeControl.svelte +0 -53
  774. package/dist/theme/ThemeControl.svelte.d.ts +0 -9
  775. package/dist/theme/index.d.ts +0 -29
  776. package/dist/theme/index.js +0 -79
  777. package/dist/theme/themes.mjs +0 -285
  778. package/dist/time.d.ts +0 -4
  779. package/dist/time.js +0 -70
  780. package/dist/tooltip/TooltipContent.svelte +0 -58
  781. package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
  782. package/dist/tooltip/index.d.ts +0 -2
  783. package/dist/tooltip/index.js +0 -2
  784. package/dist/tooltip/types.d.ts +0 -8
  785. package/dist/tooltip/types.js +0 -1
  786. package/dist/trajectory/Trajectory.svelte +0 -1517
  787. package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
  788. package/dist/trajectory/TrajectoryError.svelte +0 -128
  789. package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
  790. package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
  791. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
  792. package/dist/trajectory/TrajectoryInfoPane.svelte +0 -387
  793. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
  794. package/dist/trajectory/constants.d.ts +0 -6
  795. package/dist/trajectory/constants.js +0 -7
  796. package/dist/trajectory/extract.d.ts +0 -5
  797. package/dist/trajectory/extract.js +0 -162
  798. package/dist/trajectory/format-detect.d.ts +0 -9
  799. package/dist/trajectory/format-detect.js +0 -76
  800. package/dist/trajectory/frame-reader.d.ts +0 -17
  801. package/dist/trajectory/frame-reader.js +0 -332
  802. package/dist/trajectory/helpers.d.ts +0 -14
  803. package/dist/trajectory/helpers.js +0 -172
  804. package/dist/trajectory/index.d.ts +0 -63
  805. package/dist/trajectory/index.js +0 -126
  806. package/dist/trajectory/parse/ase.d.ts +0 -2
  807. package/dist/trajectory/parse/ase.js +0 -77
  808. package/dist/trajectory/parse/hdf5.d.ts +0 -2
  809. package/dist/trajectory/parse/hdf5.js +0 -129
  810. package/dist/trajectory/parse/index.d.ts +0 -12
  811. package/dist/trajectory/parse/index.js +0 -299
  812. package/dist/trajectory/parse/lammps.d.ts +0 -5
  813. package/dist/trajectory/parse/lammps.js +0 -179
  814. package/dist/trajectory/parse/vasp.d.ts +0 -2
  815. package/dist/trajectory/parse/vasp.js +0 -68
  816. package/dist/trajectory/parse/xyz.d.ts +0 -2
  817. package/dist/trajectory/parse/xyz.js +0 -110
  818. package/dist/trajectory/plotting.d.ts +0 -28
  819. package/dist/trajectory/plotting.js +0 -423
  820. package/dist/trajectory/types.d.ts +0 -11
  821. package/dist/trajectory/types.js +0 -1
  822. package/dist/utils.d.ts +0 -5
  823. package/dist/utils.js +0 -36
  824. package/dist/xrd/XrdPlot.svelte +0 -615
  825. package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
  826. package/dist/xrd/broadening.d.ts +0 -20
  827. package/dist/xrd/broadening.js +0 -97
  828. package/dist/xrd/calc-xrd.d.ts +0 -37
  829. package/dist/xrd/calc-xrd.js +0 -337
  830. package/dist/xrd/index.d.ts +0 -37
  831. package/dist/xrd/index.js +0 -4
  832. package/dist/xrd/parse.d.ts +0 -13
  833. package/dist/xrd/parse.js +0 -749
  834. /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
  835. /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
  836. /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
  837. /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
  838. /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
  839. /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
  840. /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
  841. /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
  842. /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
  843. /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
  844. /package/dist/{element → src/lib/element}/data.json +0 -0
  845. /package/dist/{element → src/lib/element}/data.json.gz +0 -0
  846. /package/dist/{element → src/lib/element}/data.schema.json +0 -0
  847. /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
  848. /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
  849. /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
  850. /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
  851. /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
  852. /package/dist/{xrd → src/lib/xrd}/atomic_scattering_params.json +0 -0
@@ -0,0 +1,141 @@
1
+ import { load_binary_traj } from '$lib/trajectory/parse'
2
+ import type { FileInfo } from './types'
3
+
4
+ const BINARY_EXTENSIONS = new Set(
5
+ `h5 hdf5 traj npz pkl dat gz gzip zip bz2 xz brml`.split(` `),
6
+ )
7
+ const TEXT_EXTENSIONS = new Set(
8
+ `xyz extxyz json cif poscar yaml yml txt md py js ts css html xml`.split(` `),
9
+ )
10
+ const VASP_BASENAME_RE = /^(poscar|xdatcar|contcar)$/i
11
+
12
+ // Extract filename from Content-Disposition header, falling back to url_basename.
13
+ function extract_filename(headers: Headers | undefined, fallback: string): string {
14
+ if (!headers) return fallback
15
+ const content_disposition_str = headers.get(`content-disposition`)
16
+ if (!content_disposition_str) return fallback
17
+ const star_match = /filename\*=(?:UTF-8''|)([^;]+)/i.exec(content_disposition_str)
18
+ if (star_match?.[1]) {
19
+ const raw = star_match[1].trim().replace(/^"|"$/g, ``)
20
+ try {
21
+ return decodeURIComponent(raw)
22
+ } catch {
23
+ return raw
24
+ }
25
+ }
26
+ const plain_match = /filename\s*=\s*"?([^";]+)"?/i.exec(content_disposition_str)
27
+ return plain_match?.[1]?.trim() || fallback
28
+ }
29
+
30
+ // Handle URL-based file drop data by fetching content lazily
31
+ export async function handle_url_drop(
32
+ drag_event: DragEvent,
33
+ callback: (content: string | ArrayBuffer, filename: string) => Promise<void> | void,
34
+ ): Promise<boolean> {
35
+ const json_data = drag_event.dataTransfer?.getData(`application/json`)
36
+ if (!json_data) return false
37
+
38
+ let file_info: FileInfo
39
+ try {
40
+ file_info = JSON.parse(json_data)
41
+ } catch {
42
+ return false
43
+ }
44
+ if (!file_info.url) return false
45
+
46
+ await load_from_url(file_info.url, callback)
47
+ return true
48
+ }
49
+
50
+ export async function load_from_url(
51
+ url: string,
52
+ callback: (content: string | ArrayBuffer, filename: string) => Promise<void> | void,
53
+ ): Promise<void> {
54
+ const url_basename = url.split(`/`).pop() || url
55
+ const ext = url_basename.split(`.`).pop()?.toLowerCase() || ``
56
+
57
+ if (BINARY_EXTENSIONS.has(ext)) {
58
+ // Force binary mode for known binary files to handle GitHub Pages content-type issues
59
+ const resp = await fetch(url)
60
+ if (!resp.ok) throw new Error(`Fetch failed: ${resp.status}`)
61
+ const filename = extract_filename(resp.headers, url_basename)
62
+
63
+ // Handle gzipped files with proper content-encoding detection
64
+ if (ext === `gz` || ext === `gzip`) {
65
+ if (resp.headers.get(`content-encoding`) === `gzip`) {
66
+ // Browser automatically decompressed it, so it's text
67
+ return callback(await resp.text(), filename)
68
+ } else {
69
+ // Need to decompress manually
70
+ const { decompress_data } = await import(`./decompress`)
71
+ const buffer = await resp.arrayBuffer()
72
+ const content = await decompress_data(buffer, `gzip`)
73
+ // Remove .gz extension when manually decompressing
74
+ return callback(content, filename.replace(/\.gz$/, ``))
75
+ }
76
+ }
77
+
78
+ // For H5 files, always load as binary regardless of signature
79
+ // to handle files that have .h5/.hdf5 extensions but may not have the proper HDF5 signature
80
+ if (ext === `h5` || ext === `hdf5`) {
81
+ const result = await load_binary_traj(resp, `H5`, true)
82
+
83
+ // Log warning if signature doesn't match (only for ArrayBuffer results)
84
+ if (result instanceof ArrayBuffer && result.byteLength >= 8) {
85
+ const view = new Uint8Array(result.slice(0, 8))
86
+ const hdf5_signature = [0x89, 0x48, 0x44, 0x46, 0x0d, 0x0a, 0x1a, 0x0a]
87
+ if (!hdf5_signature.every((byte, idx) => view[idx] === byte)) {
88
+ console.warn(`File has .h5/.hdf5 extension but missing HDF5 signature`)
89
+ }
90
+ }
91
+
92
+ return callback(result, filename)
93
+ }
94
+
95
+ // For .traj files, ensure we always get ArrayBuffer for proper ASE parsing
96
+ if (ext === `traj`) {
97
+ const buffer = await load_binary_traj(resp, `.traj`)
98
+ return callback(buffer, filename)
99
+ }
100
+
101
+ if (resp.headers.get(`content-encoding`) === `gzip`) {
102
+ return callback(await resp.text(), filename)
103
+ }
104
+
105
+ return callback(await resp.arrayBuffer(), filename)
106
+ }
107
+
108
+ // Skip Range requests for known text formats to avoid production server issues
109
+ // Include VASP files that don't have extensions (POSCAR, XDATCAR, CONTCAR)
110
+ const is_known_text = TEXT_EXTENSIONS.has(ext) || VASP_BASENAME_RE.test(url_basename)
111
+ let binary_callback_args: [content: ArrayBuffer, filename: string] | undefined
112
+
113
+ if (!is_known_text) {
114
+ try {
115
+ // Check for magic bytes only for unknown formats
116
+ const head = await fetch(url, { headers: { Range: `bytes=0-15` } })
117
+ if (head.ok) {
118
+ const buf = new Uint8Array(await head.arrayBuffer())
119
+ const is_gzip = buf[0] === 0x1f && buf[1] === 0x8b
120
+ const is_hdf5 =
121
+ buf[0] === 0x89 && buf[1] === 0x48 && buf[2] === 0x44 && buf[3] === 0x46
122
+ if (is_gzip || is_hdf5) {
123
+ const resp = await fetch(url)
124
+ if (!resp.ok) throw new Error(`Fetch failed: ${resp.status}`)
125
+ binary_callback_args = [
126
+ await resp.arrayBuffer(),
127
+ extract_filename(resp.headers, url_basename),
128
+ ]
129
+ }
130
+ }
131
+ } catch {
132
+ // Fall through to text fetch if HEAD request fails
133
+ }
134
+ }
135
+
136
+ if (binary_callback_args) return callback(...binary_callback_args)
137
+
138
+ const resp = await fetch(url)
139
+ if (!resp.ok) throw new Error(`Fetch failed: ${resp.status}`)
140
+ return callback(await resp.text(), extract_filename(resp.headers, url_basename))
141
+ }
@@ -0,0 +1,285 @@
1
+ <script lang="ts">
2
+ // Threlte component that renders isosurface meshes from volumetric data using marching cubes.
3
+ // Supports multiple layers at different isovalues with independent colors,
4
+ // plus positive/negative lobes and two-pass transparency.
5
+ import { marching_cubes } from '$lib/marching-cubes'
6
+ import type { Matrix3x3, Vec3 } from '$lib/math'
7
+ import { T } from '@threlte/core'
8
+ import {
9
+ BackSide,
10
+ BufferAttribute,
11
+ BufferGeometry,
12
+ DoubleSide,
13
+ FrontSide,
14
+ Uint32BufferAttribute,
15
+ } from 'three'
16
+ import type { IsosurfaceLayer, IsosurfaceSettings, VolumetricData } from './types'
17
+ import {
18
+ DEFAULT_ISOSURFACE_SETTINGS,
19
+ downsample_grid,
20
+ pad_periodic_grid,
21
+ } from './types'
22
+
23
+ let { volume, settings = DEFAULT_ISOSURFACE_SETTINGS }: {
24
+ volume: VolumetricData
25
+ settings?: IsosurfaceSettings
26
+ } = $props()
27
+
28
+ // Resolve layers: use explicit layers array if provided, else build from single-isovalue settings
29
+ let resolved_layers = $derived.by((): IsosurfaceLayer[] => {
30
+ if (settings.layers?.length) return settings.layers
31
+ return [{
32
+ isovalue: settings.isovalue,
33
+ color: settings.positive_color,
34
+ opacity: settings.opacity,
35
+ visible: true,
36
+ show_negative: settings.show_negative,
37
+ negative_color: settings.negative_color,
38
+ }]
39
+ })
40
+
41
+ // Build indexed BufferGeometry from marching cubes output.
42
+ // Uses Three.js index buffer to avoid tripling vertex data, and
43
+ // computeVertexNormals() for fast GPU-friendly normals.
44
+ function build_geometry(
45
+ vertices: Vec3[],
46
+ faces: number[][],
47
+ ): BufferGeometry | null {
48
+ if (vertices.length === 0 || faces.length === 0) return null
49
+
50
+ // Flatten vertices: Vec3[] → Float32Array
51
+ const positions = new Float32Array(vertices.length * 3)
52
+ for (let idx = 0; idx < vertices.length; idx++) {
53
+ const vert = vertices[idx]
54
+ positions[idx * 3] = vert[0]
55
+ positions[idx * 3 + 1] = vert[1]
56
+ positions[idx * 3 + 2] = vert[2]
57
+ }
58
+
59
+ // Flatten face indices: number[][] → Uint32Array
60
+ const indices = new Uint32Array(faces.length * 3)
61
+ for (let idx = 0; idx < faces.length; idx++) {
62
+ const face = faces[idx]
63
+ indices[idx * 3] = face[0]
64
+ indices[idx * 3 + 1] = face[1]
65
+ indices[idx * 3 + 2] = face[2]
66
+ }
67
+
68
+ const geometry = new BufferGeometry()
69
+ geometry.setAttribute(`position`, new BufferAttribute(positions, 3))
70
+ geometry.setIndex(new Uint32BufferAttribute(indices, 1))
71
+ geometry.computeVertexNormals()
72
+ geometry.computeBoundingSphere()
73
+ return geometry
74
+ }
75
+
76
+ // Downsample large grids once when volume changes to keep marching cubes interactive
77
+ let ds_result = $derived.by(() => {
78
+ if (!volume) return undefined
79
+ return downsample_grid(volume.grid, volume.grid_dims)
80
+ })
81
+
82
+ // Run marching cubes at the given isovalue with pre-prepared grid/lattice/shift.
83
+ function extract_surface(
84
+ isovalue: number,
85
+ mc_grid: number[][][],
86
+ mc_lattice: Matrix3x3,
87
+ origin_shift: Vec3 | null,
88
+ ): BufferGeometry | null {
89
+ if (isovalue === 0) return null
90
+
91
+ const result = marching_cubes(mc_grid, isovalue, mc_lattice, {
92
+ periodic: false,
93
+ interpolate: true,
94
+ centered: false,
95
+ normals: false,
96
+ })
97
+
98
+ if (origin_shift) {
99
+ for (const vert of result.vertices) {
100
+ vert[0] += origin_shift[0]
101
+ vert[1] += origin_shift[1]
102
+ vert[2] += origin_shift[2]
103
+ }
104
+ }
105
+
106
+ return build_geometry(result.vertices, result.faces)
107
+ }
108
+
109
+ // === Multi-layer geometry management ===
110
+ // Each layer produces up to 2 geometries (positive + optional negative lobe).
111
+ // Keyed by "layer_idx:sign" for cache invalidation.
112
+ type GeoEntry = {
113
+ geometry: BufferGeometry
114
+ color: string
115
+ opacity: number
116
+ render_order: number
117
+ }
118
+ let active_geometries = $state<GeoEntry[]>([])
119
+ let raf_id = 0
120
+ let debounce_id = 0
121
+
122
+ // Dispose all current geometries
123
+ function dispose_all() {
124
+ for (const entry of active_geometries) entry.geometry.dispose()
125
+ active_geometries = []
126
+ }
127
+
128
+ // Dispose on unmount
129
+ $effect(() => () => dispose_all())
130
+
131
+ function rebuild_geometries(layers: IsosurfaceLayer[]) {
132
+ if (!volume || !ds_result) return
133
+ const old = active_geometries
134
+ const entries: GeoEntry[] = []
135
+
136
+ // Prepare grid/lattice/shift once for all layers.
137
+ // When halo > 0 for periodic volumes, the downsampled grid is padded with
138
+ // halo cells from the opposite face so isosurfaces extend beyond the unit
139
+ // cell and close into complete enclosed shapes around boundary atoms.
140
+ let mc_grid = ds_result.grid
141
+ let mc_lattice: Matrix3x3 = volume.lattice
142
+ let origin_shift: Vec3 | null = null
143
+
144
+ if (settings.halo > 0 && volume.periodic) {
145
+ const padded = pad_periodic_grid(ds_result.grid, ds_result.dims, settings.halo)
146
+ mc_grid = padded.grid
147
+ // marching_cubes maps [0,1] fractional -> Cartesian via lattice.
148
+ // The padded grid covers a wider fractional range, so scale the lattice
149
+ // to match. Then shift all vertices by the fractional offset.
150
+ const [la, lb, lc] = volume.lattice
151
+ const sx = padded.dims[0] / ds_result.dims[0]
152
+ const sy = padded.dims[1] / ds_result.dims[1]
153
+ const sz = padded.dims[2] / ds_result.dims[2]
154
+ mc_lattice = [
155
+ [la[0] * sx, la[1] * sx, la[2] * sx],
156
+ [lb[0] * sy, lb[1] * sy, lb[2] * sy],
157
+ [lc[0] * sz, lc[1] * sz, lc[2] * sz],
158
+ ]
159
+ const [ox, oy, oz] = padded.offset
160
+ origin_shift = [
161
+ ox * la[0] + oy * lb[0] + oz * lc[0],
162
+ ox * la[1] + oy * lb[1] + oz * lc[1],
163
+ ox * la[2] + oy * lb[2] + oz * lc[2],
164
+ ]
165
+ }
166
+
167
+ const surface_at = (isovalue: number) =>
168
+ extract_surface(isovalue, mc_grid, mc_lattice, origin_shift)
169
+
170
+ // Render lower-isovalue (outer) shells earlier so per-layer back/front passes
171
+ // interleave back-to-front across shells and reduce transparency artefacts.
172
+ const layer_render_rank = new Map<number, number>(
173
+ layers
174
+ .map((layer, layer_idx) => ({ layer_idx, isovalue: layer.isovalue }))
175
+ .sort((layer_a, layer_b) => layer_a.isovalue - layer_b.isovalue)
176
+ .map(({ layer_idx }, rank) => [layer_idx, rank]),
177
+ )
178
+
179
+ for (let layer_idx = 0; layer_idx < layers.length; layer_idx++) {
180
+ const layer = layers[layer_idx]
181
+ if (!layer.visible || layer.isovalue <= 0) continue
182
+
183
+ // Each layer gets 4 slots (positive back/front + negative back/front).
184
+ const base_order = (layer_render_rank.get(layer_idx) ?? layer_idx) * 4
185
+
186
+ const pos_geo = surface_at(layer.isovalue)
187
+ if (pos_geo) {
188
+ entries.push({
189
+ geometry: pos_geo,
190
+ color: layer.color,
191
+ opacity: layer.opacity,
192
+ render_order: base_order,
193
+ })
194
+ }
195
+
196
+ if (layer.show_negative) {
197
+ const neg_geo = surface_at(-layer.isovalue)
198
+ if (neg_geo) {
199
+ entries.push({
200
+ geometry: neg_geo,
201
+ color: layer.negative_color,
202
+ opacity: layer.opacity,
203
+ render_order: base_order + 2,
204
+ })
205
+ }
206
+ }
207
+ }
208
+
209
+ active_geometries = entries
210
+ for (const entry of old) entry.geometry.dispose()
211
+ }
212
+
213
+ // Rebuild all layer geometries when layers or volume change.
214
+ // Debounces rapid changes (e.g. slider drags) to avoid repeated expensive marching cubes.
215
+ $effect(() => {
216
+ const layers = resolved_layers
217
+ void settings.halo
218
+ if (!ds_result) {
219
+ dispose_all()
220
+ return
221
+ }
222
+ debounce_id = window.setTimeout(() => {
223
+ raf_id = requestAnimationFrame(() => rebuild_geometries(layers))
224
+ }, 50)
225
+ return () => {
226
+ clearTimeout(debounce_id)
227
+ cancelAnimationFrame(raf_id)
228
+ }
229
+ })
230
+ </script>
231
+
232
+ <!-- Render each geometry entry with appropriate material -->
233
+ {#each active_geometries as entry (entry)}
234
+ {#if settings.wireframe}
235
+ <T.Mesh geometry={entry.geometry} frustumCulled={false}>
236
+ <T.MeshBasicMaterial
237
+ color={entry.color}
238
+ wireframe
239
+ transparent={entry.opacity < 1}
240
+ opacity={entry.opacity}
241
+ />
242
+ </T.Mesh>
243
+ {:else if entry.opacity < 1}
244
+ <!-- Two-pass rendering for correct transparency -->
245
+ <T.Mesh
246
+ geometry={entry.geometry}
247
+ renderOrder={entry.render_order}
248
+ frustumCulled={false}
249
+ >
250
+ <T.MeshStandardMaterial
251
+ color={entry.color}
252
+ transparent
253
+ opacity={entry.opacity}
254
+ side={BackSide}
255
+ depthWrite={false}
256
+ metalness={0.1}
257
+ roughness={0.6}
258
+ />
259
+ </T.Mesh>
260
+ <T.Mesh
261
+ geometry={entry.geometry}
262
+ renderOrder={entry.render_order + 1}
263
+ frustumCulled={false}
264
+ >
265
+ <T.MeshStandardMaterial
266
+ color={entry.color}
267
+ transparent
268
+ opacity={entry.opacity}
269
+ side={FrontSide}
270
+ depthWrite={false}
271
+ metalness={0.1}
272
+ roughness={0.6}
273
+ />
274
+ </T.Mesh>
275
+ {:else}
276
+ <T.Mesh geometry={entry.geometry} frustumCulled={false}>
277
+ <T.MeshStandardMaterial
278
+ color={entry.color}
279
+ side={DoubleSide}
280
+ metalness={0.1}
281
+ roughness={0.6}
282
+ />
283
+ </T.Mesh>
284
+ {/if}
285
+ {/each}
@@ -0,0 +1,277 @@
1
+ <script lang="ts">
2
+ // Controls panel for isosurface visualization settings (isovalue, opacity, colors, etc.)
3
+ // Supports both single-isovalue mode and multi-layer mode.
4
+ import { format_num } from '$lib/labels'
5
+ import { SettingsSection } from '$lib/layout'
6
+ import { tooltip } from 'svelte-multiselect/attachments'
7
+ import type { IsosurfaceLayer, IsosurfaceSettings, VolumetricData } from './types'
8
+ import { DEFAULT_ISOSURFACE_SETTINGS, generate_layers } from './types'
9
+
10
+ let {
11
+ settings = $bindable({ ...DEFAULT_ISOSURFACE_SETTINGS }),
12
+ volumes = [],
13
+ active_volume_idx = $bindable(0),
14
+ }: {
15
+ settings?: IsosurfaceSettings
16
+ volumes?: VolumetricData[]
17
+ active_volume_idx?: number
18
+ } = $props()
19
+
20
+ // Clamp active_volume_idx when volumes list changes (e.g. dataset swap)
21
+ $effect(() => {
22
+ if (volumes.length > 0 && active_volume_idx >= volumes.length) {
23
+ active_volume_idx = 0
24
+ }
25
+ })
26
+
27
+ // Use precomputed data_range from the active volume
28
+ let data_range = $derived(
29
+ volumes[active_volume_idx]?.data_range ?? { min: 0, max: 1, abs_max: 1, mean: 0 },
30
+ )
31
+
32
+ let slider_max = $derived(Math.max(data_range.abs_max, 0.001))
33
+ let step = $derived(slider_max / 200)
34
+ let is_multi_layer = $derived((settings.layers?.length ?? 0) > 0)
35
+ let n_layers = $derived(settings.layers?.length ?? 1)
36
+
37
+ function set_layer_count(count: number) {
38
+ if (count <= 1) {
39
+ settings.layers = undefined
40
+ } else {
41
+ settings.layers = generate_layers(data_range, count)
42
+ }
43
+ }
44
+
45
+ function update_layer(idx: number, updates: Partial<IsosurfaceLayer>) {
46
+ if (!settings.layers) return
47
+ settings.layers = settings.layers.map((layer, layer_idx) =>
48
+ layer_idx === idx ? { ...layer, ...updates } : layer
49
+ )
50
+ }
51
+ </script>
52
+
53
+ <SettingsSection
54
+ title="Isosurface"
55
+ current_values={{
56
+ isovalue: settings.isovalue,
57
+ opacity: settings.opacity,
58
+ show_negative: settings.show_negative,
59
+ wireframe: settings.wireframe,
60
+ halo: settings.halo,
61
+ layers: n_layers,
62
+ }}
63
+ on_reset={() => {
64
+ settings = { ...DEFAULT_ISOSURFACE_SETTINGS }
65
+ }}
66
+ >
67
+ <!-- Top row: volume selector (if multi-volume) + layer count + toggles -->
68
+ <div class="pane-row compact-row">
69
+ {#if volumes.length > 1}
70
+ <label
71
+ {@attach tooltip({ content: `Select which volume to display (e.g. charge vs magnetization)` })}
72
+ >
73
+ <span>Volume:</span>
74
+ <select bind:value={active_volume_idx}>
75
+ {#each volumes as vol, idx (idx)}
76
+ <option value={idx}>{vol.label ?? `Volume ${idx + 1}`}</option>
77
+ {/each}
78
+ </select>
79
+ </label>
80
+ {/if}
81
+ <label
82
+ {@attach tooltip({ content: `Number of isosurface shells at different density thresholds` })}
83
+ >
84
+ <span>Layers:</span>
85
+ <select
86
+ value={n_layers}
87
+ onchange={(event) =>
88
+ set_layer_count(Number(event.currentTarget.value))}
89
+ >
90
+ {#each [1, 2, 3, 4, 5] as count (count)}
91
+ <option value={count}>{count}</option>
92
+ {/each}
93
+ </select>
94
+ </label>
95
+ <!-- Sync both settings.show_negative (single-layer fallback) and all layer entries
96
+ so the toggle works consistently regardless of which mode is active -->
97
+ <label
98
+ {@attach tooltip({ content: `Show negative lobe at −isovalue (for orbitals, ESP, magnetization)` })}
99
+ >
100
+ <span>Neg. lobe</span>
101
+ <input
102
+ type="checkbox"
103
+ checked={is_multi_layer
104
+ ? settings.layers?.some((layer) => layer.show_negative) ?? false
105
+ : settings.show_negative}
106
+ onchange={(event) => {
107
+ const checked = event.currentTarget.checked
108
+ settings.show_negative = checked
109
+ if (settings.layers) {
110
+ settings.layers = settings.layers.map((layer) => ({
111
+ ...layer,
112
+ show_negative: checked,
113
+ }))
114
+ }
115
+ }}
116
+ />
117
+ </label>
118
+ <label
119
+ {@attach tooltip({ content: `Render as wireframe mesh instead of solid surface` })}
120
+ >
121
+ <span>Wireframe</span>
122
+ <input type="checkbox" bind:checked={settings.wireframe} />
123
+ </label>
124
+ </div>
125
+
126
+ {#if is_multi_layer && settings.layers}
127
+ <!-- Multi-layer controls: each row has visibility, color, isovalue slider, opacity -->
128
+ {#each settings.layers as layer, idx (idx)}
129
+ <div class="layer-row">
130
+ <input
131
+ type="checkbox"
132
+ checked={layer.visible}
133
+ onchange={() => update_layer(idx, { visible: !layer.visible })}
134
+ />
135
+ <input
136
+ type="color"
137
+ value={layer.color}
138
+ onchange={(event) =>
139
+ update_layer(idx, { color: event.currentTarget.value })}
140
+ />
141
+ <input
142
+ type="range"
143
+ min={step}
144
+ max={slider_max}
145
+ {step}
146
+ value={layer.isovalue}
147
+ oninput={(event) =>
148
+ update_layer(idx, {
149
+ isovalue: Number(event.currentTarget.value),
150
+ })}
151
+ style="flex: 1; min-width: 60px"
152
+ />
153
+ <span class="layer-value">{format_num(layer.isovalue, `.3~g`)}</span>
154
+ <input
155
+ type="range"
156
+ min={0.1}
157
+ max={1}
158
+ step={0.05}
159
+ value={layer.opacity}
160
+ oninput={(event) =>
161
+ update_layer(idx, {
162
+ opacity: Number(event.currentTarget.value),
163
+ })}
164
+ style="width: 50px"
165
+ title="Opacity: {format_num(layer.opacity, `.2f`)}"
166
+ />
167
+ </div>
168
+ {/each}
169
+ {:else}
170
+ <!-- Single-layer: isovalue slider full width -->
171
+ <label
172
+ {@attach tooltip({ content: `Density threshold — surface is drawn where grid values equal this` })}
173
+ >
174
+ <span>Isovalue:</span>
175
+ <input
176
+ type="range"
177
+ min={step}
178
+ max={slider_max}
179
+ {step}
180
+ bind:value={settings.isovalue}
181
+ />
182
+ <span class="value">{format_num(settings.isovalue, `.4~g`)}</span>
183
+ </label>
184
+
185
+ <!-- Opacity + colors on one row -->
186
+ <div class="pane-row compact-row">
187
+ <label
188
+ {@attach tooltip({ content: `Surface transparency — lower values reveal inner structure` })}
189
+ >
190
+ <span>Opacity:</span>
191
+ <input
192
+ type="range"
193
+ min={0.1}
194
+ max={1}
195
+ step={0.05}
196
+ bind:value={settings.opacity}
197
+ style="width: 60px"
198
+ />
199
+ <span class="value">{format_num(settings.opacity, `.2f`)}</span>
200
+ </label>
201
+ <label {@attach tooltip({ content: `Color for the positive isovalue surface` })}>
202
+ <span>+ Color</span>
203
+ <input type="color" bind:value={settings.positive_color} />
204
+ </label>
205
+ {#if settings.show_negative}
206
+ <label
207
+ {@attach tooltip({ content: `Color for the negative (−isovalue) surface` })}
208
+ >
209
+ <span>&minus; Color</span>
210
+ <input type="color" bind:value={settings.negative_color} />
211
+ </label>
212
+ {/if}
213
+ </div>
214
+ {/if}
215
+
216
+ {#if volumes?.[active_volume_idx]?.periodic}
217
+ <label
218
+ {@attach tooltip({ content: `Extend isosurface beyond cell boundaries to close partial spheres (fraction of cell)` })}
219
+ >
220
+ Halo: {format_num(settings.halo, `.2f`)}
221
+ <input
222
+ type="range"
223
+ min={0}
224
+ max={0.5}
225
+ step={0.01}
226
+ bind:value={settings.halo}
227
+ />
228
+ </label>
229
+ {/if}
230
+
231
+ {#if volumes[active_volume_idx]}
232
+ <div class="grid-info">
233
+ {volumes[active_volume_idx].grid_dims.join(` × `)} grid &nbsp;|&nbsp; [{
234
+ format_num(data_range.min, `.3~g`)
235
+ }, {format_num(data_range.max, `.3~g`)}]
236
+ </div>
237
+ {/if}
238
+ </SettingsSection>
239
+
240
+ <style>
241
+ .compact-row {
242
+ flex-wrap: wrap;
243
+ gap: 4pt 14pt;
244
+ }
245
+ label {
246
+ gap: 6pt;
247
+ }
248
+ .grid-info {
249
+ font-size: 0.75em;
250
+ opacity: 0.7;
251
+ padding: 2px 0;
252
+ }
253
+ .layer-row {
254
+ display: flex;
255
+ align-items: center;
256
+ gap: 0.3em;
257
+ font-size: 0.85em;
258
+ input[type='color'] {
259
+ width: 24px;
260
+ height: 20px;
261
+ padding: 0;
262
+ border: 1px solid var(--border-color, #ccc);
263
+ border-radius: 3px;
264
+ box-sizing: border-box;
265
+ cursor: pointer;
266
+ }
267
+ input[type='checkbox'] {
268
+ margin: 0;
269
+ }
270
+ }
271
+ .layer-value {
272
+ font-family: monospace;
273
+ font-size: 0.85em;
274
+ min-width: 3.5em;
275
+ text-align: right;
276
+ }
277
+ </style>
@@ -0,0 +1,7 @@
1
+ // Isosurface visualization module for volumetric data (CHGCAR, .cube files)
2
+ export { default as Isosurface } from './Isosurface.svelte'
3
+ export { default as IsosurfaceControls } from './IsosurfaceControls.svelte'
4
+
5
+ export * from './parse'
6
+ export * from './slice'
7
+ export * from './types'