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,794 @@
1
+ <script lang="ts">
2
+ import type { BrillouinZoneData } from '$lib/brillouin'
3
+ import { AXIS_COLORS, NEG_AXIS_COLORS } from '$lib/colors'
4
+ import type { Matrix4Tuple, Vec3 } from '$lib/math'
5
+ import * as math from '$lib/math'
6
+ import type { CameraProjection } from '$lib/settings'
7
+ import { DEFAULTS } from '$lib/settings'
8
+ import { Arrow, Cylinder } from '$lib/structure'
9
+ import { T, useThrelte } from '@threlte/core'
10
+ import * as extras from '@threlte/extras'
11
+ import * as d3_sc from 'd3-scale-chromatic'
12
+ import type { ComponentProps } from 'svelte'
13
+ import { SvelteMap } from 'svelte/reactivity'
14
+ import type { Camera, Scene } from 'three'
15
+ import {
16
+ BackSide,
17
+ BufferAttribute,
18
+ BufferGeometry,
19
+ Color,
20
+ DoubleSide,
21
+ FrontSide,
22
+ Matrix4,
23
+ Plane,
24
+ Vector3,
25
+ } from 'three'
26
+ import * as constants from './constants'
27
+ import { IDENTITY_4x4, OH_SYMMETRY_MATRICES } from './symmetry'
28
+ import type {
29
+ ColorProperty,
30
+ FermiHoverData,
31
+ FermiSurfaceData,
32
+ Isosurface,
33
+ RepresentationMode,
34
+ } from './types'
35
+
36
+ // Threlte pointer event type for mesh interactions
37
+ type ThreltePointerEvent = { point: Vector3; nativeEvent: PointerEvent }
38
+
39
+ let {
40
+ fermi_data = $bindable(),
41
+ bz_data = $bindable(),
42
+ camera_position = $bindable(),
43
+ camera_projection = $bindable(`perspective`),
44
+ // Fermi surface styling
45
+ color_property = `band`,
46
+ color_scale = `interpolateViridis`,
47
+ representation = `solid`,
48
+ surface_opacity = $bindable(0.8),
49
+ selected_bands,
50
+ // BZ styling
51
+ show_bz = true,
52
+ bz_color = `#888888`,
53
+ bz_opacity = 0.1,
54
+ bz_edge_color = `#333333`,
55
+ bz_edge_width = 0.02,
56
+ show_vectors = true,
57
+ tile_bz = false,
58
+ // Clipping plane
59
+ clip_enabled = false,
60
+ clip_axis = `z`,
61
+ clip_position = 0,
62
+ clip_flip = false,
63
+ vector_scale = 1.0,
64
+ // Camera controls
65
+ rotation_damping = DEFAULTS.structure.rotation_damping,
66
+ max_zoom = DEFAULTS.structure.max_zoom,
67
+ min_zoom = DEFAULTS.structure.min_zoom,
68
+ rotate_speed = DEFAULTS.structure.rotate_speed,
69
+ zoom_speed = DEFAULTS.structure.zoom_speed,
70
+ pan_speed = DEFAULTS.structure.pan_speed,
71
+ zoom_to_cursor = DEFAULTS.structure.zoom_to_cursor,
72
+ fov = DEFAULTS.structure.fov,
73
+ initial_zoom = DEFAULTS.structure.initial_zoom,
74
+ ambient_light = DEFAULTS.structure.ambient_light,
75
+ directional_light = DEFAULTS.structure.directional_light,
76
+ gizmo = DEFAULTS.structure.show_gizmo,
77
+ auto_rotate = DEFAULTS.structure.auto_rotate,
78
+ camera_is_moving = $bindable(false),
79
+ scene = $bindable(),
80
+ camera = $bindable(),
81
+ hover_data = $bindable<FermiHoverData | null>(null),
82
+ }: {
83
+ fermi_data?: FermiSurfaceData
84
+ bz_data?: BrillouinZoneData
85
+ camera_position?: Vec3 | undefined
86
+ camera_projection?: CameraProjection
87
+ color_property?: ColorProperty
88
+ color_scale?: string
89
+ representation?: RepresentationMode
90
+ surface_opacity?: number
91
+ selected_bands?: number[]
92
+ show_bz?: boolean
93
+ bz_color?: string
94
+ bz_opacity?: number
95
+ bz_edge_color?: string
96
+ bz_edge_width?: number
97
+ show_vectors?: boolean
98
+ tile_bz?: boolean
99
+ clip_enabled?: boolean
100
+ clip_axis?: `x` | `y` | `z`
101
+ clip_position?: number
102
+ clip_flip?: boolean
103
+ vector_scale?: number
104
+ rotation_damping?: number
105
+ max_zoom?: number
106
+ min_zoom?: number
107
+ rotate_speed?: number
108
+ zoom_speed?: number
109
+ pan_speed?: number
110
+ zoom_to_cursor?: boolean
111
+ fov?: number
112
+ initial_zoom?: number
113
+ ambient_light?: number
114
+ directional_light?: number
115
+ gizmo?: boolean | ComponentProps<typeof extras.Gizmo>
116
+ auto_rotate?: number
117
+ camera_is_moving?: boolean
118
+ scene?: Scene
119
+ camera?: Camera
120
+ hover_data?: FermiHoverData | null
121
+ } = $props()
122
+
123
+ const threlte = useThrelte()
124
+
125
+ // Compute scene size for clipping (also used for camera positioning later)
126
+ function get_scene_size(): number {
127
+ if (!fermi_data?.k_lattice) return 10
128
+ const mags = fermi_data.k_lattice.map((vec) => Math.hypot(...vec))
129
+ return mags.reduce((sum, mag) => sum + mag, 0) / 3
130
+ }
131
+
132
+ // Compute clipping plane based on axis and position
133
+ // Plane equation: dot(normal, point) + constant >= 0 means point is visible
134
+ const clip_plane = $derived.by(() => {
135
+ if (!clip_enabled) return null
136
+
137
+ const axis_idx = { x: 0, y: 1, z: 2 }[clip_axis]
138
+ const normal_arr: Vec3 = [0, 0, 0]
139
+ normal_arr[axis_idx] = clip_flip ? -1 : 1
140
+
141
+ const scaled_position = clip_position * get_scene_size()
142
+ // constant = -position for normal case (keep points >= position)
143
+ // constant = +position for flipped case (keep points <= position)
144
+ const constant = clip_flip ? scaled_position : -scaled_position
145
+
146
+ return new Plane(new Vector3(...normal_arr), constant)
147
+ })
148
+
149
+ // Apply clipping plane to renderer
150
+ $effect(() => {
151
+ if (!threlte.renderer) return
152
+
153
+ if (clip_plane) {
154
+ threlte.renderer.clippingPlanes = [clip_plane]
155
+ threlte.renderer.localClippingEnabled = true
156
+ } else {
157
+ threlte.renderer.clippingPlanes = []
158
+ threlte.renderer.localClippingEnabled = false
159
+ }
160
+ })
161
+
162
+ $effect(() => {
163
+ scene = threlte.scene
164
+ camera = threlte.camera.current
165
+ if (threlte.renderer) {
166
+ // Enable object sorting for proper depth ordering of transparent surfaces
167
+ threlte.renderer.sortObjects = true
168
+ Object.assign(threlte.renderer.domElement, { __renderer: threlte.renderer })
169
+ }
170
+ })
171
+
172
+ extras.interactivity()
173
+
174
+ // Get color interpolator from d3
175
+ const get_interpolator = (name: string): (t: number) => string => {
176
+ const fn = d3_sc[name as keyof typeof d3_sc]
177
+ return typeof fn === `function` ? fn : d3_sc.interpolateViridis
178
+ }
179
+
180
+ // Filter surfaces based on selected bands
181
+ let visible_surfaces = $derived(
182
+ fermi_data?.isosurfaces.filter((surface) =>
183
+ selected_bands === undefined || selected_bands.includes(surface.band_index)
184
+ ) ?? [],
185
+ )
186
+
187
+ // Compute average vertex distance from origin for each surface (used for render ordering)
188
+ // Smaller distance = inner surface = render first (lower renderOrder)
189
+ // Larger distance = outer surface = render last (higher renderOrder)
190
+ function compute_surface_radius(surface: Isosurface): number {
191
+ if (surface.vertices.length === 0) return 0
192
+ let sum = 0
193
+ for (const vertex of surface.vertices) {
194
+ sum += Math.hypot(vertex[0], vertex[1], vertex[2])
195
+ }
196
+ return sum / surface.vertices.length
197
+ }
198
+
199
+ // Map from surface to its render order based on size (inner surfaces first)
200
+ let surface_render_orders = $derived.by((): Map<Isosurface, number> => {
201
+ const order_map = new SvelteMap<Isosurface, number>()
202
+ if (visible_surfaces.length === 0) return order_map
203
+
204
+ // Compute radius for each surface and sort by it
205
+ const surfaces_with_radius = visible_surfaces.map((surface) => ({
206
+ surface,
207
+ radius: compute_surface_radius(surface),
208
+ }))
209
+ surfaces_with_radius.sort((a, b) => a.radius - b.radius)
210
+
211
+ // Assign render order: smaller radius (inner) = lower order = rendered first
212
+ for (let idx = 0; idx < surfaces_with_radius.length; idx++) {
213
+ order_map.set(surfaces_with_radius[idx].surface, idx)
214
+ }
215
+ return order_map
216
+ })
217
+
218
+ // Compute property range for color scaling
219
+ let property_range = $derived.by((): [number, number] => {
220
+ if (color_property !== `velocity` && color_property !== `custom`) {
221
+ return [0, 1]
222
+ }
223
+ let [min_val, max_val] = [Infinity, -Infinity]
224
+ for (const surface of visible_surfaces) {
225
+ if (!surface.properties) continue
226
+ for (const prop of surface.properties) {
227
+ if (prop < min_val) min_val = prop
228
+ if (prop > max_val) max_val = prop
229
+ }
230
+ }
231
+ if (min_val === Infinity) return [0, 1]
232
+ return [min_val, max_val]
233
+ })
234
+
235
+ // Get color for a surface/vertex
236
+ function get_surface_color(surface: Isosurface, vertex_idx?: number): string {
237
+ if (color_property === `band`) {
238
+ return constants.BAND_COLORS[surface.band_index % constants.BAND_COLORS.length]
239
+ }
240
+ if (
241
+ (color_property === `velocity` || color_property === `custom`) &&
242
+ surface.properties &&
243
+ vertex_idx !== undefined
244
+ ) {
245
+ const prop = surface.properties[vertex_idx]
246
+ const [min_val, max_val] = property_range
247
+ const normalized = max_val > min_val
248
+ ? (prop - min_val) / (max_val - min_val)
249
+ : 0.5
250
+ return get_interpolator(color_scale)(normalized)
251
+ }
252
+ // Spin coloring
253
+ if (color_property === `spin` && surface.spin) {
254
+ return surface.spin === `up` ? `#e41a1c` : `#377eb8`
255
+ }
256
+ return constants.BAND_COLORS[surface.band_index % constants.BAND_COLORS.length]
257
+ }
258
+
259
+ // Create geometry for an isosurface
260
+ function create_isosurface_geometry(
261
+ surface: Isosurface,
262
+ ): { geometry: BufferGeometry; dispose: () => void } | null {
263
+ if (surface.vertices.length === 0 || surface.faces.length === 0) return null
264
+
265
+ const positions: number[] = []
266
+ const normals: number[] = []
267
+ const colors: number[] = []
268
+
269
+ const use_vertex_colors = color_property === `velocity` ||
270
+ color_property === `custom`
271
+
272
+ const n_vertices = surface.vertices.length
273
+
274
+ for (const face of surface.faces) {
275
+ if (face.length < 3) continue
276
+
277
+ // Fan triangulation: for polygon with N vertices, create N-2 triangles
278
+ // e.g. quad [0,1,2,3] becomes triangles [0,1,2] and [0,2,3]
279
+ for (let fan_idx = 1; fan_idx < face.length - 1; fan_idx++) {
280
+ const idx0 = face[0]
281
+ const idx1 = face[fan_idx]
282
+ const idx2 = face[fan_idx + 1]
283
+
284
+ // Validate face indices are within bounds (protects against malformed JSON files)
285
+ if (
286
+ idx0 < 0 || idx0 >= n_vertices ||
287
+ idx1 < 0 || idx1 >= n_vertices ||
288
+ idx2 < 0 || idx2 >= n_vertices
289
+ ) {
290
+ continue
291
+ }
292
+
293
+ const v0 = surface.vertices[idx0]
294
+ const v1 = surface.vertices[idx1]
295
+ const v2 = surface.vertices[idx2]
296
+
297
+ positions.push(...v0, ...v1, ...v2)
298
+
299
+ // Use per-vertex normals if available, otherwise compute face normal
300
+ if (surface.normals && surface.normals.length > 0) {
301
+ const n0 = surface.normals[idx0] ?? [0, 0, 1]
302
+ const n1 = surface.normals[idx1] ?? [0, 0, 1]
303
+ const n2 = surface.normals[idx2] ?? [0, 0, 1]
304
+ normals.push(...n0, ...n1, ...n2)
305
+ } else {
306
+ const e1: Vec3 = math.subtract(v1, v0)
307
+ const e2: Vec3 = math.subtract(v2, v0)
308
+ const normal = math.cross_3d(e1, e2)
309
+ const len = Math.hypot(...normal)
310
+ const unit_normal = len > 1e-10 ? normal.map((coord) => coord / len) : [0, 0, 1]
311
+ normals.push(...unit_normal, ...unit_normal, ...unit_normal)
312
+ }
313
+
314
+ // Per-vertex colors for this triangle
315
+ if (use_vertex_colors) {
316
+ for (const vert_idx of [idx0, idx1, idx2]) {
317
+ const color_str = get_surface_color(surface, vert_idx)
318
+ const color = new Color(color_str)
319
+ colors.push(color.r, color.g, color.b)
320
+ }
321
+ }
322
+ }
323
+ }
324
+
325
+ const geometry = new BufferGeometry()
326
+ geometry.setAttribute(
327
+ `position`,
328
+ new BufferAttribute(new Float32Array(positions), 3),
329
+ )
330
+ geometry.setAttribute(`normal`, new BufferAttribute(new Float32Array(normals), 3))
331
+
332
+ if (use_vertex_colors) {
333
+ geometry.setAttribute(`color`, new BufferAttribute(new Float32Array(colors), 3))
334
+ }
335
+
336
+ geometry.computeBoundingSphere()
337
+
338
+ return { geometry, dispose: () => geometry.dispose() }
339
+ }
340
+
341
+ // Memoized geometry cache - pre-compute geometries to avoid recomputation on every render
342
+ type GeometryData = { geometry: BufferGeometry; dispose: () => void }
343
+ let geometry_cache = $derived.by((): Map<string, GeometryData | null> => {
344
+ const cache = new SvelteMap<string, GeometryData | null>()
345
+ for (let idx = 0; idx < visible_surfaces.length; idx++) {
346
+ const surface = visible_surfaces[idx]
347
+ const key = `${surface.band_index}-${surface.spin}-${idx}`
348
+ cache.set(key, create_isosurface_geometry(surface))
349
+ }
350
+ return cache
351
+ })
352
+
353
+ // Cleanup geometries when cache changes
354
+ $effect(() => {
355
+ const current_cache = geometry_cache
356
+ return () => {
357
+ for (const geo_data of current_cache.values()) {
358
+ geo_data?.dispose()
359
+ }
360
+ }
361
+ })
362
+
363
+ // Count total triangles and auto-disable tiling for very large surfaces
364
+ let total_triangles = $derived(
365
+ visible_surfaces.reduce((sum, surface) => sum + surface.faces.length, 0),
366
+ )
367
+ let effective_tile_bz = $derived(
368
+ tile_bz && total_triangles < constants.MAX_TRIANGLES_FOR_TILING,
369
+ )
370
+
371
+ // Warn user when tiling is auto-disabled
372
+ $effect(() => {
373
+ if (tile_bz && !effective_tile_bz && total_triangles > 0) {
374
+ console.warn(
375
+ `Fermi surface has ${total_triangles} triangles, auto-disabled BZ tiling for performance`,
376
+ )
377
+ }
378
+ })
379
+
380
+ // Compute rotation target from surfaces or BZ
381
+ const rotation_target = $derived.by((): Vec3 => {
382
+ if (bz_data?.vertices && bz_data.vertices.length > 0) {
383
+ const sum = bz_data.vertices.reduce(
384
+ (acc, vert) => math.add(acc, vert),
385
+ [0, 0, 0] as Vec3,
386
+ )
387
+ return math.scale(sum, 1 / bz_data.vertices.length)
388
+ }
389
+ return [0, 0, 0]
390
+ })
391
+
392
+ // Scene size for camera positioning (uses helper function defined earlier)
393
+ const scene_size = $derived(get_scene_size())
394
+
395
+ const computed_camera_position = $derived.by(
396
+ () =>
397
+ camera_position || ([10, 3, 8].map((coord) =>
398
+ coord * Math.max(1, scene_size)
399
+ ) as Vec3),
400
+ )
401
+
402
+ const gizmo_props = $derived({
403
+ background: { enabled: false },
404
+ className: `responsive-gizmo`,
405
+ ...Object.fromEntries(
406
+ [...AXIS_COLORS, ...NEG_AXIS_COLORS].map(([axis, color, hover]) => [
407
+ axis,
408
+ {
409
+ color,
410
+ labelColor: `#111`,
411
+ opacity: axis.startsWith(`n`) ? 0.9 : 0.8,
412
+ hover: {
413
+ color: hover,
414
+ labelColor: `#222`,
415
+ opacity: axis.startsWith(`n`) ? 1 : 0.9,
416
+ },
417
+ },
418
+ ]),
419
+ ),
420
+ ...(typeof gizmo === `object` ? gizmo : {}),
421
+ offset: { left: 5, bottom: 5 },
422
+ })
423
+
424
+ const is_ortho = $derived(camera_projection === `orthographic`)
425
+ const orbit_controls_props = $derived({
426
+ position: [0, 0, 0],
427
+ target: rotation_target,
428
+ enableRotate: rotate_speed > 0,
429
+ rotateSpeed: rotate_speed,
430
+ enableZoom: zoom_speed > 0,
431
+ zoomSpeed: is_ortho ? zoom_speed * 2 : zoom_speed,
432
+ zoomToCursor: zoom_to_cursor,
433
+ enablePan: pan_speed > 0,
434
+ panSpeed: pan_speed,
435
+ maxZoom: max_zoom,
436
+ minZoom: min_zoom,
437
+ autoRotate: Boolean(auto_rotate),
438
+ autoRotateSpeed: auto_rotate,
439
+ enableDamping: Boolean(rotation_damping),
440
+ dampingFactor: rotation_damping,
441
+ onstart: () => (camera_is_moving = true),
442
+ onend: () => (camera_is_moving = false),
443
+ })
444
+
445
+ const vector_colors = [`red`, `green`, `blue`]
446
+ const vector_labels = [`b₁`, `b₂`, `b₃`]
447
+
448
+ // Create BZ geometry
449
+ const bz_geometry = $derived.by(() => {
450
+ if (!bz_data || bz_data.faces.length === 0) return null
451
+
452
+ const positions: number[] = []
453
+ const normals: number[] = []
454
+
455
+ for (const face of bz_data.faces) {
456
+ if (face.length < 3) continue
457
+
458
+ for (let face_idx = 1; face_idx < face.length - 1; face_idx++) {
459
+ const indices = [face[0], face[face_idx], face[face_idx + 1]]
460
+ if (indices.some((idx) => idx < 0 || idx >= bz_data.vertices.length)) continue
461
+ const [v0, v1, v2] = indices.map((idx) => bz_data.vertices[idx])
462
+ positions.push(...v0, ...v1, ...v2)
463
+
464
+ const e1: Vec3 = math.subtract(v1, v0)
465
+ const e2: Vec3 = math.subtract(v2, v0)
466
+ const normal_vec = math.cross_3d(e1, e2)
467
+ const len = Math.hypot(...normal_vec)
468
+ const norm = len > 1e-10 ? normal_vec.map((coord) => coord / len) : [0, 0, 0]
469
+ normals.push(...norm, ...norm, ...norm)
470
+ }
471
+ }
472
+
473
+ const geometry = new BufferGeometry()
474
+ geometry.setAttribute(
475
+ `position`,
476
+ new BufferAttribute(new Float32Array(positions), 3),
477
+ )
478
+ geometry.setAttribute(`normal`, new BufferAttribute(new Float32Array(normals), 3))
479
+ geometry.computeBoundingSphere()
480
+ return geometry
481
+ })
482
+
483
+ $effect(() => {
484
+ const prev_geometry = bz_geometry
485
+ return () => prev_geometry?.dispose()
486
+ })
487
+
488
+ // Get material props for two-pass transparent rendering
489
+ // Pass 1 (back faces): renders interior/back of surfaces first
490
+ // Pass 2 (front faces): renders exterior/front of surfaces on top
491
+ // This avoids z-fighting while showing both sides correctly
492
+ const get_material_props = (
493
+ surface_color: string,
494
+ use_vertex_colors: boolean,
495
+ surface_idx: number,
496
+ pass: `front` | `back`,
497
+ ) => {
498
+ const is_transparent = surface_opacity < 1
499
+ const base = {
500
+ transparent: is_transparent,
501
+ opacity: surface_opacity,
502
+ // Two-pass: back faces first (pass=back), front faces second (pass=front)
503
+ // For opaque: just use DoubleSide
504
+ side: is_transparent ? (pass === `back` ? BackSide : FrontSide) : DoubleSide,
505
+ depthWrite: true,
506
+ depthTest: true,
507
+ // Polygon offset helps separate overlapping geometry
508
+ polygonOffset: true,
509
+ polygonOffsetFactor: 1 + surface_idx * 0.5,
510
+ polygonOffsetUnits: 1 + surface_idx * 0.5,
511
+ }
512
+
513
+ if (use_vertex_colors) {
514
+ return { ...base, vertexColors: true }
515
+ }
516
+ return { ...base, color: surface_color }
517
+ }
518
+
519
+ // Compute inverse of k_lattice for Cartesian->fractional conversion (cached)
520
+ const k_lattice_inv = $derived.by(() => {
521
+ if (!fermi_data?.k_lattice) return null
522
+ try {
523
+ return math.matrix_inverse_3x3(fermi_data.k_lattice)
524
+ } catch {
525
+ return null
526
+ }
527
+ })
528
+
529
+ // Throttle state for pointer move events to avoid O(n) vertex lookups causing jank
530
+ let last_hover_time = 0
531
+
532
+ // Convert Cartesian k-coordinates to fractional (reciprocal lattice units)
533
+ // Returns null if k_lattice is unavailable or inversion failed
534
+ function cartesian_to_fractional(cart: Vec3): Vec3 | null {
535
+ if (!k_lattice_inv) return null
536
+ return math.mat3x3_vec3_multiply(k_lattice_inv, cart)
537
+ }
538
+
539
+ // Find index of nearest vertex to a point in a surface
540
+ function find_nearest_vertex(surface: Isosurface, point: Vec3): number {
541
+ let [min_dist, nearest_idx] = [Infinity, 0]
542
+ for (let idx = 0; idx < surface.vertices.length; idx++) {
543
+ const vertex = surface.vertices[idx]
544
+ const dist = Math.hypot(
545
+ point[0] - vertex[0],
546
+ point[1] - vertex[1],
547
+ point[2] - vertex[2],
548
+ )
549
+ if (dist < min_dist) {
550
+ min_dist = dist
551
+ nearest_idx = idx
552
+ }
553
+ }
554
+ return nearest_idx
555
+ }
556
+
557
+ // Create hover data from pointer event on a surface
558
+ function create_hover_data(
559
+ event: ThreltePointerEvent,
560
+ surface: Isosurface,
561
+ surface_color: string,
562
+ sym_idx: number,
563
+ sym_matrix: Matrix4Tuple,
564
+ ): FermiHoverData {
565
+ // event.point is in world space (after sym_matrix transformation)
566
+ const position_cartesian: Vec3 = [event.point.x, event.point.y, event.point.z]
567
+ const position_fractional = cartesian_to_fractional(position_cartesian)
568
+
569
+ // Transform world-space point to local space for nearest-vertex lookup
570
+ // surface.vertices are in local space (raw geometry before sym_matrix)
571
+ const local_point = event.point.clone()
572
+ const inv_matrix = new Matrix4().fromArray(sym_matrix).invert()
573
+ local_point.applyMatrix4(inv_matrix)
574
+ const local_position: Vec3 = [local_point.x, local_point.y, local_point.z]
575
+
576
+ // Find nearest vertex for property lookup (in local space)
577
+ const nearest_idx = find_nearest_vertex(surface, local_position)
578
+ const property_value = surface.properties?.[nearest_idx]
579
+ const has_velocities = fermi_data?.metadata?.has_velocities
580
+ const property_name = property_value != null
581
+ ? (has_velocities ? `velocity` : `custom`)
582
+ : undefined
583
+
584
+ const { clientX, clientY } = event.nativeEvent
585
+ return {
586
+ band_index: surface.band_index,
587
+ spin: surface.spin,
588
+ position_cartesian,
589
+ position_fractional,
590
+ screen_position: { x: clientX, y: clientY },
591
+ surface_color,
592
+ property_value,
593
+ property_name,
594
+ is_tiled: effective_tile_bz,
595
+ symmetry_index: sym_idx,
596
+ }
597
+ }
598
+
599
+ // Throttled handler for pointer move events
600
+ // Skips expensive nearest-vertex lookups if called too frequently
601
+ function handle_pointer_move(
602
+ event: ThreltePointerEvent,
603
+ surface: Isosurface,
604
+ surface_color: string,
605
+ sym_idx: number,
606
+ sym_matrix: Matrix4Tuple,
607
+ ): void {
608
+ const now = performance.now()
609
+ if (now - last_hover_time < constants.HOVER_THROTTLE_MS) return
610
+ last_hover_time = now
611
+ hover_data = create_hover_data(event, surface, surface_color, sym_idx, sym_matrix)
612
+ }
613
+ </script>
614
+
615
+ {#if camera_projection === `perspective`}
616
+ <T.PerspectiveCamera makeDefault position={computed_camera_position} {fov}>
617
+ <extras.OrbitControls {...orbit_controls_props}>
618
+ {#if gizmo}<extras.Gizmo {...gizmo_props} />{/if}
619
+ </extras.OrbitControls>
620
+ </T.PerspectiveCamera>
621
+ {:else}
622
+ <T.OrthographicCamera
623
+ makeDefault
624
+ position={computed_camera_position}
625
+ zoom={initial_zoom}
626
+ near={-100}
627
+ >
628
+ <extras.OrbitControls {...orbit_controls_props}>
629
+ {#if gizmo}<extras.Gizmo {...gizmo_props} />{/if}
630
+ </extras.OrbitControls>
631
+ </T.OrthographicCamera>
632
+ {/if}
633
+
634
+ <T.DirectionalLight position={[3, 10, 10]} intensity={directional_light} />
635
+ <T.DirectionalLight position={[-3, -5, -10]} intensity={directional_light * 0.5} />
636
+ <T.AmbientLight intensity={ambient_light} />
637
+
638
+ <T.Group position={rotation_target}>
639
+ <!-- Brillouin zone overlay -->
640
+ {#if show_bz && bz_data && bz_geometry}
641
+ <T.Mesh geometry={bz_geometry}>
642
+ <T.MeshStandardMaterial
643
+ color={bz_color}
644
+ transparent
645
+ opacity={bz_opacity}
646
+ side={2}
647
+ depthWrite={false}
648
+ />
649
+ </T.Mesh>
650
+
651
+ <!-- BZ edges -->
652
+ {#each bz_data.edges as edge_segment, edge_idx (`bz-edge-${edge_idx}`)}
653
+ {@const [from, to] = edge_segment}
654
+ <Cylinder {from} {to} thickness={bz_edge_width} color={bz_edge_color} />
655
+ {/each}
656
+ {/if}
657
+
658
+ <!-- Reciprocal lattice vectors -->
659
+ {#if show_vectors && fermi_data?.k_lattice}
660
+ {#each fermi_data.k_lattice as vec, idx (idx)}
661
+ {@const scaled_vec = vec.map((coord) => coord * vector_scale) as Vec3}
662
+ {@const label_position = scaled_vec.map((coord) => coord * 1.15) as Vec3}
663
+ <Arrow
664
+ position={[0, 0, 0]}
665
+ vector={scaled_vec}
666
+ color={vector_colors[idx]}
667
+ scale={1}
668
+ />
669
+ <extras.HTML center position={label_position}>
670
+ <span style:color={vector_colors[idx]} style:font-size="1.2em">
671
+ {vector_labels[idx]}
672
+ </span>
673
+ </extras.HTML>
674
+ {/each}
675
+ {/if}
676
+
677
+ <!-- Fermi surfaces (with optional symmetry tiling) -->
678
+ {#each visible_surfaces as
679
+ surface,
680
+ surface_idx
681
+ (`surface-${surface.band_index}-${surface.spin}-${surface_idx}`)
682
+ }
683
+ {@const geo_key = `${surface.band_index}-${surface.spin}-${surface_idx}`}
684
+ {@const geo_data = geometry_cache.get(geo_key)}
685
+ {@const surface_color = get_surface_color(surface)}
686
+ {@const use_vertex_colors = color_property === `velocity` || color_property === `custom`}
687
+ {@const symmetry_ops = effective_tile_bz ? OH_SYMMETRY_MATRICES : [IDENTITY_4x4]}
688
+ {@const renderOrder = surface_render_orders.get(surface) ?? surface_idx}
689
+
690
+ {#if geo_data}
691
+ {#each symmetry_ops as sym_matrix, sym_idx (`sym-${sym_idx}`)}
692
+ {#if representation === `wireframe`}
693
+ <T.Mesh
694
+ geometry={geo_data.geometry}
695
+ matrix={sym_matrix}
696
+ matrixAutoUpdate={false}
697
+ {renderOrder}
698
+ onpointermove={(event: ThreltePointerEvent) =>
699
+ handle_pointer_move(event, surface, surface_color, sym_idx, sym_matrix)}
700
+ onpointerleave={() => {
701
+ hover_data = null
702
+ }}
703
+ >
704
+ <T.MeshBasicMaterial
705
+ color={surface_color}
706
+ wireframe
707
+ transparent={surface_opacity < 1}
708
+ opacity={surface_opacity}
709
+ depthWrite={true}
710
+ depthTest={true}
711
+ />
712
+ </T.Mesh>
713
+ {:else if surface_opacity < 1}
714
+ <!-- Two-pass rendering for transparent surfaces -->
715
+ <!-- Pass 1: Back faces (rendered first, lower renderOrder) -->
716
+ <T.Mesh
717
+ geometry={geo_data.geometry}
718
+ matrix={sym_matrix}
719
+ matrixAutoUpdate={false}
720
+ renderOrder={renderOrder * 2}
721
+ onpointermove={(event: ThreltePointerEvent) =>
722
+ handle_pointer_move(event, surface, surface_color, sym_idx, sym_matrix)}
723
+ onpointerleave={() => {
724
+ hover_data = null
725
+ }}
726
+ >
727
+ <T.MeshStandardMaterial
728
+ {...get_material_props(surface_color, use_vertex_colors, surface_idx, `back`)}
729
+ metalness={0.1}
730
+ roughness={0.6}
731
+ flatShading={false}
732
+ />
733
+ </T.Mesh>
734
+ <!-- Pass 2: Front faces (rendered second, higher renderOrder) -->
735
+ <T.Mesh
736
+ geometry={geo_data.geometry}
737
+ matrix={sym_matrix}
738
+ matrixAutoUpdate={false}
739
+ renderOrder={renderOrder * 2 + 1}
740
+ onpointermove={(event: ThreltePointerEvent) =>
741
+ handle_pointer_move(event, surface, surface_color, sym_idx, sym_matrix)}
742
+ onpointerleave={() => {
743
+ hover_data = null
744
+ }}
745
+ >
746
+ <T.MeshStandardMaterial
747
+ {...get_material_props(
748
+ surface_color,
749
+ use_vertex_colors,
750
+ surface_idx,
751
+ `front`,
752
+ )}
753
+ metalness={0.1}
754
+ roughness={0.6}
755
+ flatShading={false}
756
+ />
757
+ </T.Mesh>
758
+ {:else}
759
+ <!-- Single pass for opaque surfaces -->
760
+ <T.Mesh
761
+ geometry={geo_data.geometry}
762
+ matrix={sym_matrix}
763
+ matrixAutoUpdate={false}
764
+ {renderOrder}
765
+ onpointermove={(event: ThreltePointerEvent) =>
766
+ handle_pointer_move(event, surface, surface_color, sym_idx, sym_matrix)}
767
+ onpointerleave={() => {
768
+ hover_data = null
769
+ }}
770
+ >
771
+ <T.MeshStandardMaterial
772
+ {...get_material_props(
773
+ surface_color,
774
+ use_vertex_colors,
775
+ surface_idx,
776
+ `front`,
777
+ )}
778
+ metalness={0.1}
779
+ roughness={0.6}
780
+ flatShading={false}
781
+ />
782
+ </T.Mesh>
783
+ {/if}
784
+ {/each}
785
+ {/if}
786
+ {/each}
787
+ </T.Group>
788
+
789
+ <style>
790
+ :global(.fermi-surface .responsive-gizmo) {
791
+ width: clamp(70px, 18cqmin, 100px) !important;
792
+ height: clamp(70px, 18cqmin, 100px) !important;
793
+ }
794
+ </style>