matterviz 0.3.5 → 0.3.6

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