matterviz 0.3.6 → 0.4.0

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