matterviz 0.3.6 → 0.3.7

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 (863) 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.d.ts +13 -0
  5. package/dist/MillerIndexInput.svelte +66 -0
  6. package/dist/MillerIndexInput.svelte.d.ts +7 -0
  7. package/dist/api/mp.d.ts +6 -0
  8. package/dist/api/mp.js +22 -0
  9. package/dist/api/optimade.d.ts +45 -0
  10. package/dist/api/optimade.js +135 -0
  11. package/dist/brillouin/BrillouinZone.svelte +549 -0
  12. package/dist/brillouin/BrillouinZone.svelte.d.ts +83 -0
  13. package/dist/brillouin/BrillouinZoneControls.svelte +144 -0
  14. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +17 -0
  15. package/dist/brillouin/BrillouinZoneExportPane.svelte +146 -0
  16. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +15 -0
  17. package/dist/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  18. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +13 -0
  19. package/dist/brillouin/BrillouinZoneScene.svelte +476 -0
  20. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +48 -0
  21. package/dist/brillouin/BrillouinZoneTooltip.svelte +92 -0
  22. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +8 -0
  23. package/dist/brillouin/compute.d.ts +17 -0
  24. package/dist/brillouin/compute.js +426 -0
  25. package/dist/brillouin/index.d.ts +8 -0
  26. package/dist/brillouin/index.js +7 -0
  27. package/dist/brillouin/types.d.ts +43 -0
  28. package/dist/brillouin/types.js +1 -0
  29. package/dist/chempot-diagram/ChemPotDiagram.svelte +327 -0
  30. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
  31. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  32. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
  33. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  34. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
  35. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
  36. package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
  37. package/dist/chempot-diagram/async-compute.svelte.js +78 -0
  38. package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
  39. package/dist/chempot-diagram/chempot-worker.js +11 -0
  40. package/dist/chempot-diagram/color.d.ts +10 -0
  41. package/dist/chempot-diagram/color.js +32 -0
  42. package/dist/chempot-diagram/compute.d.ts +48 -0
  43. package/dist/chempot-diagram/compute.js +806 -0
  44. package/dist/chempot-diagram/index.d.ts +6 -0
  45. package/dist/chempot-diagram/index.js +6 -0
  46. package/dist/chempot-diagram/pointer.d.ts +16 -0
  47. package/dist/chempot-diagram/pointer.js +40 -0
  48. package/dist/chempot-diagram/temperature.d.ts +15 -0
  49. package/dist/chempot-diagram/temperature.js +34 -0
  50. package/dist/chempot-diagram/types.d.ts +81 -0
  51. package/dist/chempot-diagram/types.js +28 -0
  52. package/dist/colors/index.d.ts +47 -0
  53. package/dist/colors/index.js +203 -0
  54. package/dist/composition/BarChart.svelte +297 -0
  55. package/dist/composition/BarChart.svelte.d.ts +39 -0
  56. package/dist/composition/BubbleChart.svelte +218 -0
  57. package/dist/composition/BubbleChart.svelte.d.ts +28 -0
  58. package/dist/composition/Composition.svelte +165 -0
  59. package/dist/composition/Composition.svelte.d.ts +15 -0
  60. package/dist/composition/Formula.svelte +268 -0
  61. package/dist/composition/Formula.svelte.d.ts +19 -0
  62. package/dist/composition/FormulaFilter.svelte +1257 -0
  63. package/dist/composition/FormulaFilter.svelte.d.ts +51 -0
  64. package/dist/composition/PieChart.svelte +323 -0
  65. package/dist/composition/PieChart.svelte.d.ts +37 -0
  66. package/dist/composition/format.d.ts +15 -0
  67. package/dist/composition/format.js +109 -0
  68. package/dist/composition/index.d.ts +20 -0
  69. package/dist/composition/index.js +14 -0
  70. package/dist/composition/parse.d.ts +56 -0
  71. package/dist/composition/parse.js +474 -0
  72. package/dist/constants.d.ts +29 -0
  73. package/dist/constants.js +99 -0
  74. package/dist/controls.d.ts +14 -0
  75. package/dist/controls.js +30 -0
  76. package/dist/convex-hull/ConvexHull.svelte +157 -0
  77. package/dist/convex-hull/ConvexHull.svelte.d.ts +13 -0
  78. package/dist/convex-hull/ConvexHull2D.svelte +825 -0
  79. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +11 -0
  80. package/dist/convex-hull/ConvexHull3D.svelte +1801 -0
  81. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +8 -0
  82. package/dist/convex-hull/ConvexHull4D.svelte +1398 -0
  83. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +8 -0
  84. package/dist/convex-hull/ConvexHullControls.svelte +535 -0
  85. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +48 -0
  86. package/dist/convex-hull/ConvexHullInfoPane.svelte +125 -0
  87. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +20 -0
  88. package/dist/convex-hull/ConvexHullStats.svelte +929 -0
  89. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +17 -0
  90. package/dist/convex-hull/ConvexHullTooltip.svelte +131 -0
  91. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +33 -0
  92. package/dist/convex-hull/GasPressureControls.svelte +247 -0
  93. package/dist/convex-hull/GasPressureControls.svelte.d.ts +11 -0
  94. package/dist/convex-hull/StructurePopup.svelte +151 -0
  95. package/dist/convex-hull/StructurePopup.svelte.d.ts +18 -0
  96. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +8 -0
  97. package/dist/convex-hull/barycentric-coords.d.ts +18 -0
  98. package/dist/convex-hull/barycentric-coords.js +182 -0
  99. package/dist/convex-hull/demo-temperature.d.ts +6 -0
  100. package/dist/convex-hull/demo-temperature.js +40 -0
  101. package/dist/convex-hull/gas-thermodynamics.d.ts +16 -0
  102. package/dist/convex-hull/gas-thermodynamics.js +314 -0
  103. package/dist/convex-hull/helpers.d.ts +114 -0
  104. package/dist/convex-hull/helpers.js +710 -0
  105. package/dist/convex-hull/index.d.ts +119 -0
  106. package/dist/convex-hull/index.js +58 -0
  107. package/dist/convex-hull/thermodynamics.d.ts +67 -0
  108. package/dist/convex-hull/thermodynamics.js +1752 -0
  109. package/dist/convex-hull/types.d.ts +162 -0
  110. package/dist/convex-hull/types.js +36 -0
  111. package/dist/coordination/CoordinationBarPlot.svelte +311 -0
  112. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +30 -0
  113. package/dist/coordination/calc-coordination.d.ts +15 -0
  114. package/dist/coordination/calc-coordination.js +63 -0
  115. package/dist/coordination/index.d.ts +8 -0
  116. package/dist/coordination/index.js +7 -0
  117. package/dist/effects.svelte.d.ts +12 -0
  118. package/dist/effects.svelte.js +37 -0
  119. package/dist/element/BohrAtom.svelte.d.ts +20 -0
  120. package/dist/element/ElementHeading.svelte +26 -0
  121. package/dist/element/ElementHeading.svelte.d.ts +8 -0
  122. package/dist/element/ElementPhoto.svelte +57 -0
  123. package/dist/element/ElementPhoto.svelte.d.ts +9 -0
  124. package/dist/element/ElementStats.svelte +80 -0
  125. package/dist/element/ElementStats.svelte.d.ts +8 -0
  126. package/dist/element/ElementTile.svelte +484 -0
  127. package/dist/element/ElementTile.svelte.d.ts +29 -0
  128. package/dist/element/Nucleus.svelte.d.ts +17 -0
  129. package/dist/element/data.d.ts +2 -0
  130. package/dist/element/data.js +2 -0
  131. package/dist/element/index.d.ts +8 -0
  132. package/dist/element/index.js +7 -0
  133. package/dist/element/types.d.ts +57 -0
  134. package/dist/element/types.js +1 -0
  135. package/dist/feedback/ClickFeedback.svelte +58 -0
  136. package/dist/feedback/ClickFeedback.svelte.d.ts +12 -0
  137. package/dist/feedback/DragOverlay.svelte +42 -0
  138. package/dist/feedback/DragOverlay.svelte.d.ts +7 -0
  139. package/dist/feedback/Spinner.svelte.d.ts +7 -0
  140. package/dist/feedback/StatusMessage.svelte.d.ts +9 -0
  141. package/dist/feedback/index.d.ts +4 -0
  142. package/dist/feedback/index.js +4 -0
  143. package/dist/fermi-surface/FermiSlice.svelte +189 -0
  144. package/dist/fermi-surface/FermiSlice.svelte.d.ts +24 -0
  145. package/dist/fermi-surface/FermiSurface.svelte +600 -0
  146. package/dist/fermi-surface/FermiSurface.svelte.d.ts +83 -0
  147. package/dist/fermi-surface/FermiSurfaceControls.svelte +448 -0
  148. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +35 -0
  149. package/dist/fermi-surface/FermiSurfaceScene.svelte +794 -0
  150. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +50 -0
  151. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  152. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +8 -0
  153. package/dist/fermi-surface/compute.d.ts +5 -0
  154. package/dist/fermi-surface/compute.js +538 -0
  155. package/dist/fermi-surface/constants.d.ts +9 -0
  156. package/dist/fermi-surface/constants.js +27 -0
  157. package/dist/fermi-surface/export.d.ts +5 -0
  158. package/dist/fermi-surface/export.js +50 -0
  159. package/dist/fermi-surface/index.d.ts +12 -0
  160. package/dist/fermi-surface/index.js +13 -0
  161. package/dist/fermi-surface/marching-cubes.d.ts +2 -0
  162. package/dist/fermi-surface/marching-cubes.js +2 -0
  163. package/dist/fermi-surface/parse.d.ts +2 -0
  164. package/dist/fermi-surface/parse.js +491 -0
  165. package/dist/fermi-surface/symmetry.d.ts +3 -0
  166. package/dist/fermi-surface/symmetry.js +46 -0
  167. package/dist/fermi-surface/types.d.ts +110 -0
  168. package/dist/fermi-surface/types.js +4 -0
  169. package/dist/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  170. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
  171. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  172. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
  173. package/dist/heatmap-matrix/index.d.ts +53 -0
  174. package/dist/heatmap-matrix/index.js +100 -0
  175. package/dist/heatmap-matrix/shared.d.ts +2 -0
  176. package/dist/heatmap-matrix/shared.js +4 -0
  177. package/dist/icons.d.ts +569 -0
  178. package/dist/icons.js +648 -0
  179. package/dist/index.d.ts +39 -0
  180. package/dist/index.js +39 -0
  181. package/dist/io/decompress.d.ts +11 -0
  182. package/dist/io/decompress.js +74 -0
  183. package/dist/io/export.d.ts +16 -0
  184. package/dist/io/export.js +316 -0
  185. package/dist/io/fetch.d.ts +5 -0
  186. package/dist/io/fetch.js +39 -0
  187. package/dist/io/file-drop.d.ts +7 -0
  188. package/dist/io/file-drop.js +43 -0
  189. package/dist/io/index.d.ts +7 -0
  190. package/dist/io/index.js +6 -0
  191. package/dist/io/is-binary.d.ts +1 -0
  192. package/dist/io/is-binary.js +20 -0
  193. package/dist/io/types.d.ts +8 -0
  194. package/dist/io/types.js +1 -0
  195. package/dist/io/url-drop.d.ts +2 -0
  196. package/dist/io/url-drop.js +123 -0
  197. package/dist/isosurface/Isosurface.svelte +285 -0
  198. package/dist/isosurface/Isosurface.svelte.d.ts +8 -0
  199. package/dist/isosurface/IsosurfaceControls.svelte +277 -0
  200. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +9 -0
  201. package/dist/isosurface/index.d.ts +5 -0
  202. package/dist/isosurface/index.js +6 -0
  203. package/dist/isosurface/parse.d.ts +6 -0
  204. package/dist/isosurface/parse.js +553 -0
  205. package/dist/isosurface/slice.d.ts +11 -0
  206. package/dist/isosurface/slice.js +140 -0
  207. package/dist/isosurface/types.d.ts +56 -0
  208. package/dist/isosurface/types.js +227 -0
  209. package/dist/labels.d.ts +53 -0
  210. package/dist/labels.js +277 -0
  211. package/dist/layout/FullscreenToggle.svelte +50 -0
  212. package/dist/layout/FullscreenToggle.svelte.d.ts +7 -0
  213. package/dist/layout/InfoCard.svelte +120 -0
  214. package/dist/layout/InfoCard.svelte.d.ts +21 -0
  215. package/dist/layout/InfoTag.svelte +185 -0
  216. package/dist/layout/InfoTag.svelte.d.ts +19 -0
  217. package/dist/layout/PropertyFilter.svelte +246 -0
  218. package/dist/layout/PropertyFilter.svelte.d.ts +24 -0
  219. package/dist/layout/SettingsSection.svelte +148 -0
  220. package/dist/layout/SettingsSection.svelte.d.ts +17 -0
  221. package/dist/layout/SubpageGrid.svelte +82 -0
  222. package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
  223. package/dist/layout/fullscreen.d.ts +9 -0
  224. package/dist/layout/fullscreen.js +53 -0
  225. package/dist/layout/index.d.ts +10 -0
  226. package/dist/layout/index.js +8 -0
  227. package/dist/layout/json-tree/JsonNode.svelte +548 -0
  228. package/dist/layout/json-tree/JsonNode.svelte.d.ts +11 -0
  229. package/dist/layout/json-tree/JsonTree.svelte +1230 -0
  230. package/dist/layout/json-tree/JsonTree.svelte.d.ts +6 -0
  231. package/dist/layout/json-tree/JsonValue.svelte.d.ts +9 -0
  232. package/dist/layout/json-tree/index.d.ts +3 -0
  233. package/dist/layout/json-tree/index.js +3 -0
  234. package/dist/layout/json-tree/types.d.ts +74 -0
  235. package/dist/layout/json-tree/types.js +2 -0
  236. package/dist/layout/json-tree/utils.d.ts +29 -0
  237. package/dist/layout/json-tree/utils.js +641 -0
  238. package/dist/marching-cubes.d.ts +14 -0
  239. package/dist/marching-cubes.js +540 -0
  240. package/dist/math.d.ts +101 -0
  241. package/dist/math.js +905 -0
  242. package/dist/overlays/ContextMenu.svelte +162 -0
  243. package/dist/overlays/ContextMenu.svelte.d.ts +25 -0
  244. package/dist/overlays/CopyButton.svelte +45 -0
  245. package/dist/overlays/CopyButton.svelte.d.ts +8 -0
  246. package/dist/overlays/DragControlTab.svelte +98 -0
  247. package/dist/overlays/DragControlTab.svelte.d.ts +8 -0
  248. package/dist/overlays/DraggablePane.svelte +487 -0
  249. package/dist/overlays/DraggablePane.svelte.d.ts +36 -0
  250. package/dist/overlays/InfoPaneCards.svelte +149 -0
  251. package/dist/overlays/InfoPaneCards.svelte.d.ts +22 -0
  252. package/dist/overlays/index.d.ts +3 -0
  253. package/dist/overlays/index.js +3 -0
  254. package/dist/periodic-table/PeriodicTable.svelte +469 -0
  255. package/dist/periodic-table/PeriodicTable.svelte.d.ts +55 -0
  256. package/dist/periodic-table/PeriodicTableControls.svelte +557 -0
  257. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +24 -0
  258. package/dist/periodic-table/PropertySelect.svelte +37 -0
  259. package/dist/periodic-table/PropertySelect.svelte.d.ts +13 -0
  260. package/dist/periodic-table/TableInset.svelte.d.ts +9 -0
  261. package/dist/periodic-table/index.d.ts +10 -0
  262. package/dist/periodic-table/index.js +4 -0
  263. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  264. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +44 -0
  265. package/dist/phase-diagram/PhaseDiagramControls.svelte +444 -0
  266. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +30 -0
  267. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  268. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
  269. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  270. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +19 -0
  271. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  272. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +16 -0
  273. package/dist/phase-diagram/TdbInfoPanel.svelte +203 -0
  274. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +12 -0
  275. package/dist/phase-diagram/build-diagram.d.ts +11 -0
  276. package/dist/phase-diagram/build-diagram.js +160 -0
  277. package/dist/phase-diagram/colors.d.ts +35 -0
  278. package/dist/phase-diagram/colors.js +51 -0
  279. package/dist/phase-diagram/diagram-input.d.ts +29 -0
  280. package/dist/phase-diagram/diagram-input.js +3 -0
  281. package/dist/phase-diagram/index.d.ts +13 -0
  282. package/dist/phase-diagram/index.js +11 -0
  283. package/dist/phase-diagram/parse.d.ts +55 -0
  284. package/dist/phase-diagram/parse.js +272 -0
  285. package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
  286. package/dist/phase-diagram/svg-to-diagram.js +867 -0
  287. package/dist/phase-diagram/types.d.ts +93 -0
  288. package/dist/phase-diagram/types.js +1 -0
  289. package/dist/phase-diagram/utils.d.ts +118 -0
  290. package/dist/phase-diagram/utils.js +604 -0
  291. package/dist/plot/AxisLabel.svelte +51 -0
  292. package/dist/plot/AxisLabel.svelte.d.ts +16 -0
  293. package/dist/plot/BarPlot.svelte +2113 -0
  294. package/dist/plot/BarPlot.svelte.d.ts +84 -0
  295. package/dist/plot/BarPlotControls.svelte +66 -0
  296. package/dist/plot/BarPlotControls.svelte.d.ts +18 -0
  297. package/dist/plot/BinnedScatterPlot.svelte +1114 -0
  298. package/dist/plot/BinnedScatterPlot.svelte.d.ts +66 -0
  299. package/dist/plot/ColorBar.svelte +721 -0
  300. package/dist/plot/ColorBar.svelte.d.ts +31 -0
  301. package/dist/plot/ColorScaleSelect.svelte +54 -0
  302. package/dist/plot/ColorScaleSelect.svelte.d.ts +15 -0
  303. package/dist/plot/ElementScatter.svelte +63 -0
  304. package/dist/plot/ElementScatter.svelte.d.ts +14 -0
  305. package/dist/plot/FillArea.svelte.d.ts +21 -0
  306. package/dist/plot/Histogram.svelte +1558 -0
  307. package/dist/plot/Histogram.svelte.d.ts +50 -0
  308. package/dist/plot/HistogramControls.svelte +212 -0
  309. package/dist/plot/HistogramControls.svelte.d.ts +22 -0
  310. package/dist/plot/InteractiveAxisLabel.svelte +96 -0
  311. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +14 -0
  312. package/dist/plot/Line.svelte +84 -0
  313. package/dist/plot/Line.svelte.d.ts +15 -0
  314. package/dist/plot/PlotAxis.svelte +169 -0
  315. package/dist/plot/PlotAxis.svelte.d.ts +24 -0
  316. package/dist/plot/PlotControls.svelte +537 -0
  317. package/dist/plot/PlotControls.svelte.d.ts +4 -0
  318. package/dist/plot/PlotLegend.svelte +569 -0
  319. package/dist/plot/PlotLegend.svelte.d.ts +29 -0
  320. package/dist/plot/PlotTooltip.svelte +67 -0
  321. package/dist/plot/PlotTooltip.svelte.d.ts +17 -0
  322. package/dist/plot/PortalSelect.svelte +253 -0
  323. package/dist/plot/PortalSelect.svelte.d.ts +16 -0
  324. package/dist/plot/ReferenceLine.svelte.d.ts +20 -0
  325. package/dist/plot/ReferenceLine3D.svelte +156 -0
  326. package/dist/plot/ReferenceLine3D.svelte.d.ts +14 -0
  327. package/dist/plot/ReferencePlane.svelte +175 -0
  328. package/dist/plot/ReferencePlane.svelte.d.ts +14 -0
  329. package/dist/plot/ScatterPlot.svelte +2778 -0
  330. package/dist/plot/ScatterPlot.svelte.d.ts +96 -0
  331. package/dist/plot/ScatterPlot3D.svelte +529 -0
  332. package/dist/plot/ScatterPlot3D.svelte.d.ts +95 -0
  333. package/dist/plot/ScatterPlot3DControls.svelte +437 -0
  334. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +20 -0
  335. package/dist/plot/ScatterPlot3DScene.svelte +912 -0
  336. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +74 -0
  337. package/dist/plot/ScatterPlotControls.svelte +306 -0
  338. package/dist/plot/ScatterPlotControls.svelte.d.ts +17 -0
  339. package/dist/plot/ScatterPoint.svelte +182 -0
  340. package/dist/plot/ScatterPoint.svelte.d.ts +22 -0
  341. package/dist/plot/SpacegroupBarPlot.svelte +293 -0
  342. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +9 -0
  343. package/dist/plot/Surface3D.svelte +197 -0
  344. package/dist/plot/Surface3D.svelte.d.ts +13 -0
  345. package/dist/plot/ZeroLines.svelte +97 -0
  346. package/dist/plot/ZeroLines.svelte.d.ts +33 -0
  347. package/dist/plot/ZoomRect.svelte +23 -0
  348. package/dist/plot/ZoomRect.svelte.d.ts +8 -0
  349. package/dist/plot/adaptive-density.d.ts +69 -0
  350. package/dist/plot/adaptive-density.js +191 -0
  351. package/dist/plot/auto-place.d.ts +43 -0
  352. package/dist/plot/auto-place.js +122 -0
  353. package/dist/plot/axis-utils.d.ts +19 -0
  354. package/dist/plot/axis-utils.js +78 -0
  355. package/dist/plot/binned-scatter-types.d.ts +59 -0
  356. package/dist/plot/binned-scatter-types.js +1 -0
  357. package/dist/plot/data-cleaning.d.ts +37 -0
  358. package/dist/plot/data-cleaning.js +855 -0
  359. package/dist/plot/data-transform.d.ts +16 -0
  360. package/dist/plot/data-transform.js +45 -0
  361. package/dist/plot/defaults.d.ts +19 -0
  362. package/dist/plot/defaults.js +9 -0
  363. package/dist/plot/fill-utils.d.ts +46 -0
  364. package/dist/plot/fill-utils.js +322 -0
  365. package/dist/plot/hover-lock.svelte.d.ts +14 -0
  366. package/dist/plot/hover-lock.svelte.js +46 -0
  367. package/dist/plot/index.d.ts +41 -0
  368. package/dist/plot/index.js +39 -0
  369. package/dist/plot/interactions.d.ts +12 -0
  370. package/dist/plot/interactions.js +101 -0
  371. package/dist/plot/layout.d.ts +78 -0
  372. package/dist/plot/layout.js +273 -0
  373. package/dist/plot/reference-line.d.ts +60 -0
  374. package/dist/plot/reference-line.js +314 -0
  375. package/dist/plot/scales.d.ts +48 -0
  376. package/dist/plot/scales.js +481 -0
  377. package/dist/plot/svg.d.ts +1 -0
  378. package/dist/plot/svg.js +11 -0
  379. package/dist/plot/types.d.ts +831 -0
  380. package/dist/plot/types.js +99 -0
  381. package/dist/plot/utils/label-placement.d.ts +68 -0
  382. package/dist/plot/utils/label-placement.js +326 -0
  383. package/dist/plot/utils/series-visibility.d.ts +15 -0
  384. package/dist/plot/utils/series-visibility.js +85 -0
  385. package/dist/plot/utils.d.ts +1 -0
  386. package/dist/plot/utils.js +14 -0
  387. package/dist/rdf/RdfPlot.svelte +247 -0
  388. package/dist/rdf/RdfPlot.svelte.d.ts +27 -0
  389. package/dist/rdf/calc-rdf.d.ts +4 -0
  390. package/dist/rdf/calc-rdf.js +111 -0
  391. package/dist/rdf/index.d.ts +23 -0
  392. package/dist/rdf/index.js +2 -0
  393. package/dist/sanitize.d.ts +6 -0
  394. package/dist/sanitize.js +116 -0
  395. package/dist/settings.d.ts +255 -0
  396. package/dist/settings.js +1132 -0
  397. package/dist/spectral/Bands.svelte +1040 -0
  398. package/dist/spectral/Bands.svelte.d.ts +40 -0
  399. package/dist/spectral/BandsAndDos.svelte +134 -0
  400. package/dist/spectral/BandsAndDos.svelte.d.ts +18 -0
  401. package/dist/spectral/BrillouinBandsDos.svelte +252 -0
  402. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +20 -0
  403. package/dist/spectral/Dos.svelte +697 -0
  404. package/dist/spectral/Dos.svelte.d.ts +29 -0
  405. package/dist/spectral/helpers.d.ts +119 -0
  406. package/dist/spectral/helpers.js +1032 -0
  407. package/dist/spectral/index.d.ts +6 -0
  408. package/dist/spectral/index.js +6 -0
  409. package/dist/spectral/types.d.ts +84 -0
  410. package/dist/spectral/types.js +2 -0
  411. package/dist/state.svelte.d.ts +25 -0
  412. package/dist/state.svelte.js +45 -0
  413. package/dist/structure/Arrow.svelte +72 -0
  414. package/dist/structure/Arrow.svelte.d.ts +15 -0
  415. package/dist/structure/AtomLegend.svelte +815 -0
  416. package/dist/structure/AtomLegend.svelte.d.ts +35 -0
  417. package/dist/structure/Bond.svelte +140 -0
  418. package/dist/structure/Bond.svelte.d.ts +9 -0
  419. package/dist/structure/CanvasTooltip.svelte +33 -0
  420. package/dist/structure/CanvasTooltip.svelte.d.ts +12 -0
  421. package/dist/structure/CellSelect.svelte +349 -0
  422. package/dist/structure/CellSelect.svelte.d.ts +13 -0
  423. package/dist/structure/Cylinder.svelte +45 -0
  424. package/dist/structure/Cylinder.svelte.d.ts +10 -0
  425. package/dist/structure/Lattice.svelte +196 -0
  426. package/dist/structure/Lattice.svelte.d.ts +17 -0
  427. package/dist/structure/Structure.svelte +2248 -0
  428. package/dist/structure/Structure.svelte.d.ts +89 -0
  429. package/dist/structure/StructureControls.svelte +1273 -0
  430. package/dist/structure/StructureControls.svelte.d.ts +31 -0
  431. package/dist/structure/StructureExportPane.svelte +252 -0
  432. package/dist/structure/StructureExportPane.svelte.d.ts +17 -0
  433. package/dist/structure/StructureInfoPane.svelte +737 -0
  434. package/dist/structure/StructureInfoPane.svelte.d.ts +19 -0
  435. package/dist/structure/StructureScene.svelte +2255 -0
  436. package/dist/structure/StructureScene.svelte.d.ts +111 -0
  437. package/dist/structure/atom-properties.d.ts +37 -0
  438. package/dist/structure/atom-properties.js +200 -0
  439. package/dist/structure/bond-order-perception.d.ts +13 -0
  440. package/dist/structure/bond-order-perception.js +384 -0
  441. package/dist/structure/bonding.d.ts +68 -0
  442. package/dist/structure/bonding.js +696 -0
  443. package/dist/structure/export.d.ts +20 -0
  444. package/dist/structure/export.js +727 -0
  445. package/dist/structure/index.d.ts +126 -0
  446. package/dist/structure/index.js +169 -0
  447. package/dist/structure/label-placement.d.ts +14 -0
  448. package/dist/structure/label-placement.js +72 -0
  449. package/dist/structure/measure.d.ts +6 -0
  450. package/dist/structure/measure.js +29 -0
  451. package/dist/structure/parse.d.ts +66 -0
  452. package/dist/structure/parse.js +1392 -0
  453. package/dist/structure/partial-occupancy.d.ts +25 -0
  454. package/dist/structure/partial-occupancy.js +99 -0
  455. package/dist/structure/pbc.d.ts +9 -0
  456. package/dist/structure/pbc.js +123 -0
  457. package/dist/structure/supercell.d.ts +8 -0
  458. package/dist/structure/supercell.js +170 -0
  459. package/dist/structure/validation.d.ts +2 -0
  460. package/dist/structure/validation.js +10 -0
  461. package/dist/symmetry/SymmetryStats.svelte +226 -0
  462. package/dist/symmetry/SymmetryStats.svelte.d.ts +21 -0
  463. package/dist/symmetry/WyckoffTable.svelte +120 -0
  464. package/dist/symmetry/WyckoffTable.svelte.d.ts +11 -0
  465. package/dist/symmetry/cell-transform.d.ts +12 -0
  466. package/dist/symmetry/cell-transform.js +91 -0
  467. package/dist/symmetry/index.d.ts +43 -0
  468. package/dist/symmetry/index.js +228 -0
  469. package/dist/symmetry/spacegroups.d.ts +9 -0
  470. package/dist/symmetry/spacegroups.js +394 -0
  471. package/dist/table/HeatmapTable.svelte +1833 -0
  472. package/dist/table/HeatmapTable.svelte.d.ts +49 -0
  473. package/dist/table/ToggleMenu.svelte +385 -0
  474. package/dist/table/ToggleMenu.svelte.d.ts +11 -0
  475. package/dist/table/index.d.ts +74 -0
  476. package/dist/table/index.js +38 -0
  477. package/dist/theme/ThemeControl.svelte +53 -0
  478. package/dist/theme/ThemeControl.svelte.d.ts +9 -0
  479. package/dist/theme/index.d.ts +29 -0
  480. package/dist/theme/index.js +79 -0
  481. package/dist/time.d.ts +4 -0
  482. package/dist/time.js +70 -0
  483. package/dist/tooltip/TooltipContent.svelte +58 -0
  484. package/dist/tooltip/TooltipContent.svelte.d.ts +31 -0
  485. package/dist/tooltip/index.d.ts +2 -0
  486. package/dist/tooltip/index.js +1 -0
  487. package/dist/tooltip/types.d.ts +8 -0
  488. package/dist/tooltip/types.js +1 -0
  489. package/dist/trajectory/Trajectory.svelte +1545 -0
  490. package/dist/trajectory/Trajectory.svelte.d.ts +77 -0
  491. package/dist/trajectory/TrajectoryError.svelte +128 -0
  492. package/dist/trajectory/TrajectoryError.svelte.d.ts +13 -0
  493. package/dist/trajectory/TrajectoryExportPane.svelte +357 -0
  494. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +17 -0
  495. package/dist/trajectory/TrajectoryInfoPane.svelte +313 -0
  496. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +17 -0
  497. package/dist/trajectory/constants.d.ts +6 -0
  498. package/dist/trajectory/constants.js +7 -0
  499. package/dist/trajectory/extract.d.ts +5 -0
  500. package/dist/trajectory/extract.js +162 -0
  501. package/dist/trajectory/format-detect.d.ts +9 -0
  502. package/dist/trajectory/format-detect.js +76 -0
  503. package/dist/trajectory/frame-reader.d.ts +17 -0
  504. package/dist/trajectory/frame-reader.js +332 -0
  505. package/dist/trajectory/helpers.d.ts +15 -0
  506. package/dist/trajectory/helpers.js +164 -0
  507. package/dist/trajectory/index.d.ts +63 -0
  508. package/dist/trajectory/index.js +126 -0
  509. package/dist/trajectory/parse/ase.d.ts +2 -0
  510. package/dist/trajectory/parse/ase.js +73 -0
  511. package/dist/trajectory/parse/hdf5.d.ts +2 -0
  512. package/dist/trajectory/parse/hdf5.js +127 -0
  513. package/dist/trajectory/parse/index.d.ts +12 -0
  514. package/dist/trajectory/parse/index.js +298 -0
  515. package/dist/trajectory/parse/lammps.d.ts +5 -0
  516. package/dist/trajectory/parse/lammps.js +179 -0
  517. package/dist/trajectory/parse/vasp.d.ts +2 -0
  518. package/dist/trajectory/parse/vasp.js +68 -0
  519. package/dist/trajectory/parse/xyz.d.ts +2 -0
  520. package/dist/trajectory/parse/xyz.js +110 -0
  521. package/dist/trajectory/plotting.d.ts +28 -0
  522. package/dist/trajectory/plotting.js +423 -0
  523. package/dist/trajectory/types.d.ts +11 -0
  524. package/dist/trajectory/types.js +1 -0
  525. package/dist/utils.d.ts +6 -0
  526. package/dist/utils.js +45 -0
  527. package/dist/xrd/XrdPlot.svelte +615 -0
  528. package/dist/xrd/XrdPlot.svelte.d.ts +28 -0
  529. package/dist/xrd/broadening.d.ts +20 -0
  530. package/dist/xrd/broadening.js +97 -0
  531. package/dist/xrd/calc-xrd.d.ts +37 -0
  532. package/dist/xrd/calc-xrd.js +336 -0
  533. package/dist/xrd/index.d.ts +37 -0
  534. package/dist/xrd/index.js +4 -0
  535. package/dist/xrd/parse.d.ts +13 -0
  536. package/dist/xrd/parse.js +749 -0
  537. package/license +1 -1
  538. package/package.json +232 -1457
  539. package/readme.md +98 -171
  540. package/.vscode/launch.json +0 -13
  541. package/.vscodeignore +0 -7
  542. package/dist/assets/STLExporter-BpTH3YHE.js +0 -8
  543. package/dist/assets/browser-DdDecX_W.js +0 -1
  544. package/dist/assets/export-qgn-H9y6.js +0 -2
  545. package/dist/assets/main-DiKYzti2.css +0 -1
  546. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  547. package/dist/extension.js +0 -31293
  548. package/dist/src/lib/FilePicker.svelte +0 -360
  549. package/dist/src/lib/MillerIndexInput.svelte +0 -66
  550. package/dist/src/lib/api/mp.ts +0 -26
  551. package/dist/src/lib/api/optimade.ts +0 -204
  552. package/dist/src/lib/brillouin/BrillouinZone.svelte +0 -549
  553. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +0 -144
  554. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +0 -146
  555. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  556. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +0 -476
  557. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +0 -92
  558. package/dist/src/lib/brillouin/compute.ts +0 -529
  559. package/dist/src/lib/brillouin/index.ts +0 -8
  560. package/dist/src/lib/brillouin/types.ts +0 -51
  561. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +0 -327
  562. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +0 -846
  563. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +0 -3193
  564. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +0 -94
  565. package/dist/src/lib/chempot-diagram/chempot-worker.ts +0 -11
  566. package/dist/src/lib/chempot-diagram/color.ts +0 -42
  567. package/dist/src/lib/chempot-diagram/compute.ts +0 -1014
  568. package/dist/src/lib/chempot-diagram/index.ts +0 -6
  569. package/dist/src/lib/chempot-diagram/pointer.ts +0 -56
  570. package/dist/src/lib/chempot-diagram/temperature.ts +0 -77
  571. package/dist/src/lib/chempot-diagram/types.ts +0 -130
  572. package/dist/src/lib/colors/index.ts +0 -249
  573. package/dist/src/lib/composition/BarChart.svelte +0 -297
  574. package/dist/src/lib/composition/BubbleChart.svelte +0 -218
  575. package/dist/src/lib/composition/Composition.svelte +0 -165
  576. package/dist/src/lib/composition/Formula.svelte +0 -268
  577. package/dist/src/lib/composition/FormulaFilter.svelte +0 -1257
  578. package/dist/src/lib/composition/PieChart.svelte +0 -323
  579. package/dist/src/lib/composition/format.ts +0 -155
  580. package/dist/src/lib/composition/index.ts +0 -37
  581. package/dist/src/lib/composition/parse.ts +0 -605
  582. package/dist/src/lib/constants.ts +0 -134
  583. package/dist/src/lib/controls.ts +0 -42
  584. package/dist/src/lib/convex-hull/ConvexHull.svelte +0 -157
  585. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +0 -825
  586. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +0 -1801
  587. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +0 -1398
  588. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +0 -535
  589. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +0 -125
  590. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +0 -929
  591. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +0 -131
  592. package/dist/src/lib/convex-hull/GasPressureControls.svelte +0 -247
  593. package/dist/src/lib/convex-hull/StructurePopup.svelte +0 -151
  594. package/dist/src/lib/convex-hull/barycentric-coords.ts +0 -246
  595. package/dist/src/lib/convex-hull/demo-temperature.ts +0 -63
  596. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +0 -405
  597. package/dist/src/lib/convex-hull/helpers.ts +0 -932
  598. package/dist/src/lib/convex-hull/index.ts +0 -202
  599. package/dist/src/lib/convex-hull/thermodynamics.ts +0 -2192
  600. package/dist/src/lib/convex-hull/types.ts +0 -267
  601. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +0 -311
  602. package/dist/src/lib/coordination/calc-coordination.ts +0 -93
  603. package/dist/src/lib/coordination/index.ts +0 -9
  604. package/dist/src/lib/effects.svelte.ts +0 -48
  605. package/dist/src/lib/element/ElementHeading.svelte +0 -26
  606. package/dist/src/lib/element/ElementPhoto.svelte +0 -57
  607. package/dist/src/lib/element/ElementStats.svelte +0 -80
  608. package/dist/src/lib/element/ElementTile.svelte +0 -484
  609. package/dist/src/lib/element/data.ts +0 -14
  610. package/dist/src/lib/element/index.ts +0 -8
  611. package/dist/src/lib/element/types.ts +0 -62
  612. package/dist/src/lib/feedback/ClickFeedback.svelte +0 -58
  613. package/dist/src/lib/feedback/DragOverlay.svelte +0 -42
  614. package/dist/src/lib/feedback/index.ts +0 -4
  615. package/dist/src/lib/fermi-surface/FermiSlice.svelte +0 -189
  616. package/dist/src/lib/fermi-surface/FermiSurface.svelte +0 -600
  617. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +0 -448
  618. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +0 -794
  619. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  620. package/dist/src/lib/fermi-surface/compute.ts +0 -728
  621. package/dist/src/lib/fermi-surface/constants.ts +0 -32
  622. package/dist/src/lib/fermi-surface/export.ts +0 -64
  623. package/dist/src/lib/fermi-surface/index.ts +0 -14
  624. package/dist/src/lib/fermi-surface/marching-cubes.ts +0 -3
  625. package/dist/src/lib/fermi-surface/parse.ts +0 -574
  626. package/dist/src/lib/fermi-surface/symmetry.ts +0 -56
  627. package/dist/src/lib/fermi-surface/types.ts +0 -159
  628. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +0 -1545
  629. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  630. package/dist/src/lib/heatmap-matrix/index.ts +0 -167
  631. package/dist/src/lib/heatmap-matrix/shared.ts +0 -7
  632. package/dist/src/lib/icons.ts +0 -650
  633. package/dist/src/lib/index.ts +0 -61
  634. package/dist/src/lib/io/decompress.ts +0 -92
  635. package/dist/src/lib/io/export.ts +0 -385
  636. package/dist/src/lib/io/fetch.ts +0 -46
  637. package/dist/src/lib/io/file-drop.ts +0 -51
  638. package/dist/src/lib/io/index.ts +0 -7
  639. package/dist/src/lib/io/is-binary.ts +0 -24
  640. package/dist/src/lib/io/types.ts +0 -8
  641. package/dist/src/lib/io/url-drop.ts +0 -141
  642. package/dist/src/lib/isosurface/Isosurface.svelte +0 -285
  643. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +0 -277
  644. package/dist/src/lib/isosurface/index.ts +0 -7
  645. package/dist/src/lib/isosurface/parse.ts +0 -656
  646. package/dist/src/lib/isosurface/slice.ts +0 -175
  647. package/dist/src/lib/isosurface/types.ts +0 -309
  648. package/dist/src/lib/labels.ts +0 -320
  649. package/dist/src/lib/layout/FullscreenToggle.svelte +0 -50
  650. package/dist/src/lib/layout/InfoCard.svelte +0 -120
  651. package/dist/src/lib/layout/InfoTag.svelte +0 -185
  652. package/dist/src/lib/layout/PropertyFilter.svelte +0 -246
  653. package/dist/src/lib/layout/SettingsSection.svelte +0 -148
  654. package/dist/src/lib/layout/SubpageGrid.svelte +0 -82
  655. package/dist/src/lib/layout/fullscreen.ts +0 -65
  656. package/dist/src/lib/layout/index.ts +0 -11
  657. package/dist/src/lib/layout/json-tree/JsonNode.svelte +0 -548
  658. package/dist/src/lib/layout/json-tree/JsonTree.svelte +0 -1230
  659. package/dist/src/lib/layout/json-tree/index.ts +0 -3
  660. package/dist/src/lib/layout/json-tree/types.ts +0 -126
  661. package/dist/src/lib/layout/json-tree/utils.ts +0 -682
  662. package/dist/src/lib/marching-cubes.ts +0 -614
  663. package/dist/src/lib/math.ts +0 -1081
  664. package/dist/src/lib/overlays/ContextMenu.svelte +0 -162
  665. package/dist/src/lib/overlays/CopyButton.svelte +0 -45
  666. package/dist/src/lib/overlays/DragControlTab.svelte +0 -98
  667. package/dist/src/lib/overlays/DraggablePane.svelte +0 -487
  668. package/dist/src/lib/overlays/InfoPaneCards.svelte +0 -149
  669. package/dist/src/lib/overlays/index.ts +0 -3
  670. package/dist/src/lib/periodic-table/PeriodicTable.svelte +0 -469
  671. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +0 -557
  672. package/dist/src/lib/periodic-table/PropertySelect.svelte +0 -37
  673. package/dist/src/lib/periodic-table/index.ts +0 -12
  674. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  675. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +0 -444
  676. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  677. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +0 -184
  678. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +0 -391
  679. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +0 -203
  680. package/dist/src/lib/phase-diagram/build-diagram.ts +0 -186
  681. package/dist/src/lib/phase-diagram/colors.ts +0 -58
  682. package/dist/src/lib/phase-diagram/diagram-input.ts +0 -40
  683. package/dist/src/lib/phase-diagram/index.ts +0 -13
  684. package/dist/src/lib/phase-diagram/parse.ts +0 -348
  685. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +0 -1023
  686. package/dist/src/lib/phase-diagram/types.ts +0 -144
  687. package/dist/src/lib/phase-diagram/utils.ts +0 -775
  688. package/dist/src/lib/plot/AxisLabel.svelte +0 -51
  689. package/dist/src/lib/plot/BarPlot.svelte +0 -2113
  690. package/dist/src/lib/plot/BarPlotControls.svelte +0 -66
  691. package/dist/src/lib/plot/BinnedScatterPlot.svelte +0 -1114
  692. package/dist/src/lib/plot/ColorBar.svelte +0 -721
  693. package/dist/src/lib/plot/ColorScaleSelect.svelte +0 -54
  694. package/dist/src/lib/plot/ElementScatter.svelte +0 -63
  695. package/dist/src/lib/plot/Histogram.svelte +0 -1558
  696. package/dist/src/lib/plot/HistogramControls.svelte +0 -212
  697. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +0 -96
  698. package/dist/src/lib/plot/Line.svelte +0 -84
  699. package/dist/src/lib/plot/PlotAxis.svelte +0 -169
  700. package/dist/src/lib/plot/PlotControls.svelte +0 -537
  701. package/dist/src/lib/plot/PlotLegend.svelte +0 -569
  702. package/dist/src/lib/plot/PlotTooltip.svelte +0 -67
  703. package/dist/src/lib/plot/PortalSelect.svelte +0 -253
  704. package/dist/src/lib/plot/ReferenceLine3D.svelte +0 -156
  705. package/dist/src/lib/plot/ReferencePlane.svelte +0 -175
  706. package/dist/src/lib/plot/ScatterPlot.svelte +0 -2778
  707. package/dist/src/lib/plot/ScatterPlot3D.svelte +0 -529
  708. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +0 -437
  709. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +0 -912
  710. package/dist/src/lib/plot/ScatterPlotControls.svelte +0 -306
  711. package/dist/src/lib/plot/ScatterPoint.svelte +0 -182
  712. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +0 -293
  713. package/dist/src/lib/plot/Surface3D.svelte +0 -197
  714. package/dist/src/lib/plot/ZeroLines.svelte +0 -97
  715. package/dist/src/lib/plot/ZoomRect.svelte +0 -23
  716. package/dist/src/lib/plot/adaptive-density.ts +0 -316
  717. package/dist/src/lib/plot/auto-place.ts +0 -184
  718. package/dist/src/lib/plot/axis-utils.ts +0 -122
  719. package/dist/src/lib/plot/binned-scatter-types.ts +0 -83
  720. package/dist/src/lib/plot/data-cleaning.ts +0 -1069
  721. package/dist/src/lib/plot/data-transform.ts +0 -69
  722. package/dist/src/lib/plot/defaults.ts +0 -9
  723. package/dist/src/lib/plot/fill-utils.ts +0 -494
  724. package/dist/src/lib/plot/hover-lock.svelte.ts +0 -60
  725. package/dist/src/lib/plot/index.ts +0 -53
  726. package/dist/src/lib/plot/interactions.ts +0 -119
  727. package/dist/src/lib/plot/layout.ts +0 -425
  728. package/dist/src/lib/plot/reference-line.ts +0 -426
  729. package/dist/src/lib/plot/scales.ts +0 -654
  730. package/dist/src/lib/plot/svg.ts +0 -23
  731. package/dist/src/lib/plot/types.ts +0 -1144
  732. package/dist/src/lib/plot/utils/label-placement.ts +0 -541
  733. package/dist/src/lib/plot/utils/series-visibility.ts +0 -140
  734. package/dist/src/lib/plot/utils.ts +0 -11
  735. package/dist/src/lib/rdf/RdfPlot.svelte +0 -247
  736. package/dist/src/lib/rdf/calc-rdf.ts +0 -167
  737. package/dist/src/lib/rdf/index.ts +0 -27
  738. package/dist/src/lib/sanitize.ts +0 -126
  739. package/dist/src/lib/settings.ts +0 -1479
  740. package/dist/src/lib/spectral/Bands.svelte +0 -1040
  741. package/dist/src/lib/spectral/BandsAndDos.svelte +0 -134
  742. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +0 -252
  743. package/dist/src/lib/spectral/Dos.svelte +0 -697
  744. package/dist/src/lib/spectral/helpers.ts +0 -1381
  745. package/dist/src/lib/spectral/index.ts +0 -8
  746. package/dist/src/lib/spectral/types.ts +0 -112
  747. package/dist/src/lib/state.svelte.ts +0 -64
  748. package/dist/src/lib/structure/Arrow.svelte +0 -72
  749. package/dist/src/lib/structure/AtomLegend.svelte +0 -815
  750. package/dist/src/lib/structure/Bond.svelte +0 -140
  751. package/dist/src/lib/structure/CanvasTooltip.svelte +0 -33
  752. package/dist/src/lib/structure/CellSelect.svelte +0 -349
  753. package/dist/src/lib/structure/Cylinder.svelte +0 -45
  754. package/dist/src/lib/structure/Lattice.svelte +0 -196
  755. package/dist/src/lib/structure/Structure.svelte +0 -2248
  756. package/dist/src/lib/structure/StructureControls.svelte +0 -1273
  757. package/dist/src/lib/structure/StructureExportPane.svelte +0 -252
  758. package/dist/src/lib/structure/StructureInfoPane.svelte +0 -737
  759. package/dist/src/lib/structure/StructureScene.svelte +0 -2255
  760. package/dist/src/lib/structure/atom-properties.ts +0 -316
  761. package/dist/src/lib/structure/bond-order-perception.ts +0 -447
  762. package/dist/src/lib/structure/bonding.ts +0 -944
  763. package/dist/src/lib/structure/export.ts +0 -861
  764. package/dist/src/lib/structure/index.ts +0 -291
  765. package/dist/src/lib/structure/label-placement.ts +0 -130
  766. package/dist/src/lib/structure/measure.ts +0 -45
  767. package/dist/src/lib/structure/parse.ts +0 -1705
  768. package/dist/src/lib/structure/partial-occupancy.ts +0 -183
  769. package/dist/src/lib/structure/pbc.ts +0 -164
  770. package/dist/src/lib/structure/supercell.ts +0 -226
  771. package/dist/src/lib/structure/validation.ts +0 -11
  772. package/dist/src/lib/symmetry/SymmetryStats.svelte +0 -226
  773. package/dist/src/lib/symmetry/WyckoffTable.svelte +0 -120
  774. package/dist/src/lib/symmetry/cell-transform.ts +0 -118
  775. package/dist/src/lib/symmetry/index.ts +0 -348
  776. package/dist/src/lib/symmetry/spacegroups.ts +0 -404
  777. package/dist/src/lib/table/HeatmapTable.svelte +0 -1833
  778. package/dist/src/lib/table/ToggleMenu.svelte +0 -385
  779. package/dist/src/lib/table/index.ts +0 -139
  780. package/dist/src/lib/theme/ThemeControl.svelte +0 -53
  781. package/dist/src/lib/theme/index.ts +0 -107
  782. package/dist/src/lib/time.ts +0 -71
  783. package/dist/src/lib/tooltip/TooltipContent.svelte +0 -58
  784. package/dist/src/lib/tooltip/index.ts +0 -2
  785. package/dist/src/lib/tooltip/types.ts +0 -13
  786. package/dist/src/lib/trajectory/Trajectory.svelte +0 -1545
  787. package/dist/src/lib/trajectory/TrajectoryError.svelte +0 -128
  788. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +0 -357
  789. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +0 -313
  790. package/dist/src/lib/trajectory/constants.ts +0 -7
  791. package/dist/src/lib/trajectory/extract.ts +0 -196
  792. package/dist/src/lib/trajectory/format-detect.ts +0 -96
  793. package/dist/src/lib/trajectory/frame-reader.ts +0 -456
  794. package/dist/src/lib/trajectory/helpers.ts +0 -217
  795. package/dist/src/lib/trajectory/index.ts +0 -218
  796. package/dist/src/lib/trajectory/parse/ase.ts +0 -109
  797. package/dist/src/lib/trajectory/parse/hdf5.ts +0 -173
  798. package/dist/src/lib/trajectory/parse/index.ts +0 -411
  799. package/dist/src/lib/trajectory/parse/lammps.ts +0 -215
  800. package/dist/src/lib/trajectory/parse/vasp.ts +0 -102
  801. package/dist/src/lib/trajectory/parse/xyz.ts +0 -143
  802. package/dist/src/lib/trajectory/plotting.ts +0 -599
  803. package/dist/src/lib/trajectory/types.ts +0 -13
  804. package/dist/src/lib/utils.ts +0 -56
  805. package/dist/src/lib/xrd/XrdPlot.svelte +0 -615
  806. package/dist/src/lib/xrd/broadening.ts +0 -130
  807. package/dist/src/lib/xrd/calc-xrd.ts +0 -397
  808. package/dist/src/lib/xrd/index.ts +0 -38
  809. package/dist/src/lib/xrd/parse.ts +0 -858
  810. package/dist/webview.js +0 -29421
  811. package/icon.png +0 -0
  812. package/matterviz-0.3.2.vsix +0 -0
  813. package/matterviz-0.3.4.vsix +0 -0
  814. package/matterviz-0.3.5.vsix +0 -0
  815. package/scripts/sync-config.ts +0 -101
  816. package/src/declarations.d.ts +0 -2
  817. package/src/extension.ts +0 -972
  818. package/src/node-io.ts +0 -65
  819. package/src/types.ts +0 -17
  820. package/src/webview/JsonBrowser.svelte +0 -1079
  821. package/src/webview/PlotPanel.svelte +0 -346
  822. package/src/webview/detect.ts +0 -444
  823. package/src/webview/main.ts +0 -764
  824. package/src/webview/plot-utils.ts +0 -250
  825. package/test-fixtures/all-viz-types.json.gz +0 -0
  826. package/test-fixtures/plot-demo-data.json.gz +0 -0
  827. package/tests/detect.test.ts +0 -604
  828. package/tests/extension.test.ts +0 -2041
  829. package/tests/node-io.test.ts +0 -39
  830. package/tests/plot-utils.test.ts +0 -302
  831. package/tests/vite-plugin-json-gz.test.ts +0 -114
  832. package/tests/vscode-mock.ts +0 -18
  833. package/tests/webview.test.ts +0 -231
  834. package/tsconfig.json +0 -20
  835. package/vite-plugin-json-gz.ts +0 -29
  836. package/vite.config.ts +0 -34
  837. package/vite.extension.config.ts +0 -34
  838. /package/dist/{src/lib/EmptyState.svelte → EmptyState.svelte} +0 -0
  839. /package/dist/{src/lib/Icon.svelte → Icon.svelte} +0 -0
  840. /package/dist/{src/lib/app.css → app.css} +0 -0
  841. /package/dist/{src/lib/chempot-diagram → chempot-diagram}/ChemPotScene3D.svelte +0 -0
  842. /package/dist/{src/lib/colors → colors}/alloy-colors.json +0 -0
  843. /package/dist/{src/lib/colors → colors}/dark-mode-colors.json +0 -0
  844. /package/dist/{src/lib/colors → colors}/jmol-colors.json +0 -0
  845. /package/dist/{src/lib/colors → colors}/muted-colors.json +0 -0
  846. /package/dist/{src/lib/colors → colors}/pastel-colors.json +0 -0
  847. /package/dist/{src/lib/colors → colors}/vesta-colors.json +0 -0
  848. /package/dist/{src/lib/convex-hull → convex-hull}/TemperatureSlider.svelte +0 -0
  849. /package/dist/{src/lib/element → element}/BohrAtom.svelte +0 -0
  850. /package/dist/{src/lib/element → element}/Nucleus.svelte +0 -0
  851. /package/dist/{src/lib/element → element}/data.json +0 -0
  852. /package/dist/{src/lib/element → element}/data.json.gz +0 -0
  853. /package/dist/{src/lib/element → element}/data.json.gz.d.ts +0 -0
  854. /package/dist/{src/lib/element → element}/data.schema.json +0 -0
  855. /package/dist/{src/lib/element-image-urls.json → element-image-urls.json} +0 -0
  856. /package/dist/{src/lib/feedback → feedback}/Spinner.svelte +0 -0
  857. /package/dist/{src/lib/feedback → feedback}/StatusMessage.svelte +0 -0
  858. /package/dist/{src/lib/layout → layout}/json-tree/JsonValue.svelte +0 -0
  859. /package/dist/{src/lib/periodic-table → periodic-table}/TableInset.svelte +0 -0
  860. /package/dist/{src/lib/plot → plot}/FillArea.svelte +0 -0
  861. /package/dist/{src/lib/plot → plot}/ReferenceLine.svelte +0 -0
  862. /package/dist/{src/lib/theme → theme}/themes.mjs +0 -0
  863. /package/dist/{src/lib/xrd → xrd}/atomic_scattering_params.json +0 -0
@@ -0,0 +1,39 @@
1
+ export * from './brillouin';
2
+ export * from './chempot-diagram';
3
+ export * from './colors';
4
+ export * from './composition';
5
+ export * from './constants';
6
+ export * from './controls';
7
+ export * from './convex-hull';
8
+ export * from './coordination';
9
+ export * from './element';
10
+ export { default as EmptyState } from './EmptyState.svelte';
11
+ export * from './feedback';
12
+ export * from './fermi-surface';
13
+ export { default as FilePicker } from './FilePicker.svelte';
14
+ export * from './heatmap-matrix';
15
+ export { default as Icon } from './Icon.svelte';
16
+ export * from './icons';
17
+ export * from './io';
18
+ export { default as MillerIndexInput } from './MillerIndexInput.svelte';
19
+ export { auto_isosurface_settings, DEFAULT_ISOSURFACE_SETTINGS, generate_layers, grid_data_range, Isosurface as VolumetricIsosurface, IsosurfaceControls, LAYER_COLORS, parse_chgcar, parse_cube, parse_volumetric_file, sample_hkl_slice, tile_volumetric_data, trilinear_interpolate, } from './isosurface';
20
+ export type { DataRange, IsosurfaceLayer, IsosurfaceSettings, SliceResult, VolumetricData, VolumetricFileData, } from './isosurface';
21
+ export * from './labels';
22
+ export * from './layout';
23
+ export * from './math';
24
+ export * from './overlays';
25
+ export * from './periodic-table';
26
+ export * from './phase-diagram';
27
+ export * from './plot';
28
+ export * from './rdf';
29
+ export * from './sanitize';
30
+ export * from './settings';
31
+ export * from './spectral';
32
+ export * from './structure';
33
+ export * from './symmetry';
34
+ export * from './table';
35
+ export * from './theme';
36
+ export * from './time';
37
+ export { default as Trajectory } from './trajectory/Trajectory.svelte';
38
+ export * from './utils';
39
+ export * from './xrd';
package/dist/index.js ADDED
@@ -0,0 +1,39 @@
1
+ export * from './brillouin';
2
+ export * from './chempot-diagram';
3
+ export * from './colors';
4
+ export * from './composition';
5
+ export * from './constants';
6
+ export * from './controls';
7
+ export * from './convex-hull';
8
+ export * from './coordination';
9
+ export * from './element';
10
+ export { default as EmptyState } from './EmptyState.svelte';
11
+ export * from './feedback';
12
+ export * from './fermi-surface';
13
+ export { default as FilePicker } from './FilePicker.svelte';
14
+ export * from './heatmap-matrix';
15
+ export { default as Icon } from './Icon.svelte';
16
+ export * from './icons';
17
+ export * from './io';
18
+ export { default as MillerIndexInput } from './MillerIndexInput.svelte';
19
+ // Explicit exports to avoid name clash with fermi-surface's Isosurface type
20
+ export { auto_isosurface_settings, DEFAULT_ISOSURFACE_SETTINGS, generate_layers, grid_data_range, Isosurface as VolumetricIsosurface, IsosurfaceControls, LAYER_COLORS, parse_chgcar, parse_cube, parse_volumetric_file, sample_hkl_slice, tile_volumetric_data, trilinear_interpolate, } from './isosurface';
21
+ export * from './labels';
22
+ export * from './layout';
23
+ export * from './math';
24
+ export * from './overlays';
25
+ export * from './periodic-table';
26
+ export * from './phase-diagram';
27
+ export * from './plot';
28
+ export * from './rdf';
29
+ export * from './sanitize';
30
+ export * from './settings';
31
+ export * from './spectral';
32
+ export * from './structure';
33
+ export * from './symmetry';
34
+ export * from './table';
35
+ export * from './theme';
36
+ export * from './time';
37
+ export { default as Trajectory } from './trajectory/Trajectory.svelte';
38
+ export * from './utils';
39
+ export * from './xrd';
@@ -0,0 +1,11 @@
1
+ import type { COMPRESSION_EXTENSIONS } from '../constants';
2
+ import { COMPRESSION_FORMATS } from '../constants';
3
+ export type CompressionFormat = keyof typeof COMPRESSION_FORMATS;
4
+ export type CompressionExtension = (typeof COMPRESSION_EXTENSIONS)[number];
5
+ export declare function detect_compression_format(filename: string): CompressionFormat | null;
6
+ export declare function decompress_data(data: ArrayBuffer | ReadableStream<Uint8Array> | null, format: CompressionFormat): Promise<string>;
7
+ export declare function decompress_data_binary(data: ArrayBuffer | ReadableStream<Uint8Array> | null, format: CompressionFormat): Promise<ArrayBuffer>;
8
+ export declare function decompress_file(file: File): Promise<{
9
+ content: string;
10
+ filename: string;
11
+ }>;
@@ -0,0 +1,74 @@
1
+ import { COMPRESSION_EXTENSIONS_REGEX, COMPRESSION_FORMATS } from '../constants';
2
+ export function detect_compression_format(filename) {
3
+ const lower = filename.toLowerCase();
4
+ for (const [format, extensions] of Object.entries(COMPRESSION_FORMATS)) {
5
+ if (extensions.some((ext) => lower.endsWith(ext)))
6
+ return format;
7
+ }
8
+ return null;
9
+ }
10
+ // Decompress data and return as text string
11
+ export async function decompress_data(data, format) {
12
+ const buffer = await decompress_data_binary(data, format);
13
+ return new TextDecoder().decode(buffer);
14
+ }
15
+ // Decompress data and return as ArrayBuffer (for binary files like .brml.gz)
16
+ export async function decompress_data_binary(data, format) {
17
+ try {
18
+ // Handle unsupported formats
19
+ if (format === `zip` || format === `xz` || format === `bz2`) {
20
+ throw new Error(`${format.toUpperCase()} decompression is not supported in the browser. ` +
21
+ `Please extract the ${format.toUpperCase()} file first.`);
22
+ }
23
+ const stream = data instanceof ArrayBuffer
24
+ ? new ReadableStream({
25
+ start(controller) {
26
+ controller.enqueue(new Uint8Array(data));
27
+ controller.close();
28
+ },
29
+ })
30
+ : data;
31
+ if (!stream)
32
+ throw new Error(`Invalid data stream`);
33
+ const unzip = new DecompressionStream(format);
34
+ return await new Response(stream.pipeThrough(unzip)).arrayBuffer();
35
+ }
36
+ catch (error) {
37
+ throw new Error(`Failed to decompress ${format} file: ${error}`, { cause: error });
38
+ }
39
+ }
40
+ export function decompress_file(file) {
41
+ const format = detect_compression_format(file.name);
42
+ const is_supported = Boolean(format && ![`zip`, `xz`, `bz2`].includes(format));
43
+ return new Promise((resolve, reject) => {
44
+ const reader = new FileReader();
45
+ reader.addEventListener(`load`, () => {
46
+ try {
47
+ const result = reader.result;
48
+ if (!result)
49
+ throw new Error(`Failed to read file`);
50
+ if (is_supported && format) {
51
+ if (!(result instanceof ArrayBuffer))
52
+ throw new Error(`Expected binary file data`);
53
+ decompress_data(result, format).then((content) => {
54
+ const filename = file.name.replace(COMPRESSION_EXTENSIONS_REGEX, ``);
55
+ resolve({ content, filename });
56
+ }, reject);
57
+ }
58
+ else {
59
+ if (typeof result !== `string`)
60
+ throw new Error(`Expected text file data`);
61
+ resolve({ content: result, filename: file.name });
62
+ }
63
+ }
64
+ catch (error) {
65
+ reject(error);
66
+ }
67
+ }, { once: true });
68
+ reader.addEventListener(`error`, () => reject(new Error(`Failed to read file ${file.name}`)));
69
+ if (is_supported)
70
+ reader.readAsArrayBuffer(file);
71
+ else
72
+ reader.readAsText(file);
73
+ });
74
+ }
@@ -0,0 +1,16 @@
1
+ import type { AnyStructure } from '../structure';
2
+ import { type Camera, type Scene } from 'three';
3
+ export declare function canvas_to_png_blob(canvas: HTMLCanvasElement, png_dpi?: number, scene?: Scene | null, camera?: Camera | null): Promise<Blob>;
4
+ export declare function export_canvas_as_png(canvas: HTMLCanvasElement | null, structure_or_filename: AnyStructure | string | undefined, png_dpi?: number, scene?: Scene | null, camera?: Camera | null): void;
5
+ export declare function svg_to_svg_string(svg_element: SVGElement): string;
6
+ export declare function export_svg_as_svg(svg_element: SVGElement | null, filename: string): void;
7
+ export declare function svg_to_png_blob(svg_element: SVGElement, png_dpi?: number): Promise<Blob>;
8
+ export declare function export_svg_as_png(svg_element: SVGElement | null, filename: string, png_dpi?: number): void;
9
+ export declare function get_ffmpeg_conversion_command(input_filename: string): string;
10
+ export declare function export_trajectory_video(canvas: HTMLCanvasElement | null, filename: string, options?: {
11
+ fps?: number;
12
+ total_frames?: number;
13
+ on_progress?: (progress: number) => void;
14
+ on_step?: (step_idx: number) => void | Promise<void>;
15
+ resolution_multiplier?: number;
16
+ }): Promise<void>;
@@ -0,0 +1,316 @@
1
+ import { download } from './fetch';
2
+ import { create_structure_filename } from '../structure/export';
3
+ import { Vector2 } from 'three';
4
+ function is_webgl_renderer_like(value) {
5
+ if (typeof value !== `object` || !value)
6
+ return false;
7
+ const renderer_obj = value;
8
+ return (typeof renderer_obj.render === `function` &&
9
+ typeof renderer_obj.getPixelRatio === `function` &&
10
+ typeof renderer_obj.setPixelRatio === `function` &&
11
+ typeof renderer_obj.getSize === `function` &&
12
+ typeof renderer_obj.setSize === `function`);
13
+ }
14
+ function get_canvas_renderer(canvas) {
15
+ const renderer_val = canvas[`__renderer`];
16
+ return is_webgl_renderer_like(renderer_val) ? renderer_val : undefined;
17
+ }
18
+ // Capture a WebGL canvas as a PNG Blob at the given DPI.
19
+ // Temporarily adjusts renderer pixel ratio for high-res capture, then restores.
20
+ // Returns data directly (no browser download), suitable for programmatic capture
21
+ // in test suites, server-side rendering, or Python widget integration via anywidget.
22
+ // DPI is converted to a resolution multiplier relative to 72 DPI baseline, capped at 10x.
23
+ export function canvas_to_png_blob(canvas, png_dpi = 150, scene = null, camera = null) {
24
+ const resolution_multiplier = Math.min(png_dpi / 72, 10);
25
+ const renderer = get_canvas_renderer(canvas);
26
+ if (resolution_multiplier <= 1.1 || !renderer) {
27
+ if (renderer && scene && camera)
28
+ renderer.render(scene, camera);
29
+ return new Promise((resolve, reject) => {
30
+ try {
31
+ canvas.toBlob((blob) => {
32
+ if (blob)
33
+ resolve(blob);
34
+ else
35
+ reject(new Error(`Failed to generate PNG - canvas may be empty`));
36
+ }, `image/png`);
37
+ }
38
+ catch (error) {
39
+ reject(error);
40
+ }
41
+ });
42
+ }
43
+ // Temporarily modify the renderer's pixel ratio for high-res capture
44
+ const orig_pixel_ratio = renderer.getPixelRatio();
45
+ const orig_size = renderer.getSize(new Vector2());
46
+ const restore = () => {
47
+ renderer.setPixelRatio(orig_pixel_ratio);
48
+ renderer.setSize(orig_size.width, orig_size.height, false);
49
+ };
50
+ renderer.setPixelRatio(resolution_multiplier);
51
+ renderer.setSize(orig_size.width, orig_size.height, false);
52
+ if (scene && camera)
53
+ renderer.render(scene, camera);
54
+ return new Promise((resolve, reject) => {
55
+ try {
56
+ canvas.toBlob((blob) => {
57
+ restore();
58
+ if (blob)
59
+ resolve(blob);
60
+ else
61
+ reject(new Error(`Failed to generate high-resolution PNG`));
62
+ }, `image/png`);
63
+ }
64
+ catch (error) {
65
+ restore();
66
+ reject(error);
67
+ }
68
+ });
69
+ }
70
+ // Export structure as PNG image from canvas (triggers browser download)
71
+ export function export_canvas_as_png(canvas, structure_or_filename, png_dpi = 150, scene = null, camera = null) {
72
+ if (!canvas) {
73
+ if (typeof window !== `undefined`)
74
+ console.warn(`Canvas not found for PNG export`);
75
+ return;
76
+ }
77
+ let filename = typeof structure_or_filename === `string`
78
+ ? structure_or_filename
79
+ : create_structure_filename(structure_or_filename, `png`);
80
+ const suffix = `-${Math.round(png_dpi)}dpi`;
81
+ if (filename.toLowerCase().endsWith(`.png`)) {
82
+ filename = filename.replace(/\.png$/i, `${suffix}.png`);
83
+ }
84
+ else {
85
+ filename = `${filename}${suffix}.png`;
86
+ }
87
+ canvas_to_png_blob(canvas, png_dpi, scene, camera)
88
+ .then((blob) => download(blob, filename, `image/png`))
89
+ .catch((error) => console.error(`Error exporting PNG:`, error));
90
+ }
91
+ // Helper to ensure font-family is set on SVG root
92
+ function set_svg_font_family(svg) {
93
+ const style = svg.getAttribute(`style`) || ``;
94
+ if (!style.includes(`font-family`)) {
95
+ svg.setAttribute(`style`, `${style}${style ? `;` : ``}font-family:sans-serif;`);
96
+ }
97
+ // Also set as attribute for extra robustness
98
+ svg.setAttribute(`font-family`, `sans-serif`);
99
+ }
100
+ // Serialize an SVG element to a standalone SVG string with proper XML headers.
101
+ // Clones the element to avoid mutation, sets font-family/xmlns, and
102
+ // prepends XML declaration + SVG DOCTYPE. Returns a complete SVG document string
103
+ // suitable for saving to file or further processing.
104
+ export function svg_to_svg_string(svg_element) {
105
+ const cloned_svg = svg_element.cloneNode(true);
106
+ set_svg_font_family(cloned_svg);
107
+ if (!cloned_svg.hasAttribute(`xmlns`)) {
108
+ cloned_svg.setAttribute(`xmlns`, `http://www.w3.org/2000/svg`);
109
+ }
110
+ const svg_string = new XMLSerializer().serializeToString(cloned_svg);
111
+ return `<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n${svg_string}`;
112
+ }
113
+ // Export SVG element as SVG file (triggers browser download)
114
+ export function export_svg_as_svg(svg_element, filename) {
115
+ if (!svg_element) {
116
+ console.warn(`SVG element not found for export`);
117
+ return;
118
+ }
119
+ try {
120
+ const svg_content = svg_to_svg_string(svg_element);
121
+ download(svg_content, filename, `image/svg+xml;charset=utf-8`);
122
+ }
123
+ catch (error) {
124
+ console.error(`Error exporting SVG:`, error);
125
+ }
126
+ }
127
+ // Rasterize an SVG element to a PNG Blob at the given DPI.
128
+ // Creates an offscreen canvas at the scaled resolution, draws the SVG via an
129
+ // Image element, and returns the resulting PNG Blob. Rejects if viewBox is
130
+ // missing or dimensions are invalid (zero width/height).
131
+ // DPI is converted to a resolution multiplier relative to 72 DPI baseline, capped at 10x.
132
+ export function svg_to_png_blob(svg_element, png_dpi = 150) {
133
+ const viewBox = svg_element.getAttribute(`viewBox`)?.trim();
134
+ if (!viewBox)
135
+ return Promise.reject(new Error(`SVG viewBox not found for PNG export`));
136
+ const parts = viewBox.split(/[\s,]+/).map(Number);
137
+ if (parts.length < 4 || !parts.every(Number.isFinite)) {
138
+ return Promise.reject(new Error(`Invalid SVG dimensions for PNG export`));
139
+ }
140
+ const [, , width, height] = parts;
141
+ if (!(width > 0) || !(height > 0)) {
142
+ return Promise.reject(new Error(`Invalid SVG dimensions for PNG export`));
143
+ }
144
+ if (!Number.isFinite(png_dpi) || png_dpi <= 0) {
145
+ return Promise.reject(new Error(`Invalid PNG DPI for export`));
146
+ }
147
+ const resolution_multiplier = Math.min(png_dpi / 72, 10);
148
+ const pixel_width = Math.round(width * resolution_multiplier);
149
+ const pixel_height = Math.round(height * resolution_multiplier);
150
+ const canvas = document.createElement(`canvas`);
151
+ const ctx = canvas.getContext(`2d`);
152
+ if (!ctx)
153
+ return Promise.reject(new Error(`Canvas 2D context not available`));
154
+ canvas.width = pixel_width;
155
+ canvas.height = pixel_height;
156
+ const cloned_svg = svg_element.cloneNode(true);
157
+ set_svg_font_family(cloned_svg);
158
+ const serialized = new XMLSerializer().serializeToString(cloned_svg);
159
+ const svg_blob = new Blob([serialized], { type: `image/svg+xml;charset=utf-8` });
160
+ const svg_data_url = URL.createObjectURL(svg_blob);
161
+ return new Promise((resolve, reject) => {
162
+ const img = new Image();
163
+ img.addEventListener(`load`, () => {
164
+ try {
165
+ ctx.clearRect(0, 0, pixel_width, pixel_height);
166
+ ctx.drawImage(img, 0, 0, pixel_width, pixel_height);
167
+ canvas.toBlob((blob) => {
168
+ if (blob)
169
+ resolve(blob);
170
+ else
171
+ reject(new Error(`Failed to generate PNG blob`));
172
+ }, `image/png`, 1);
173
+ }
174
+ catch (error) {
175
+ reject(error);
176
+ }
177
+ finally {
178
+ URL.revokeObjectURL(svg_data_url);
179
+ }
180
+ });
181
+ img.addEventListener(`error`, () => {
182
+ URL.revokeObjectURL(svg_data_url);
183
+ reject(new Error(`Failed to load SVG for PNG export`));
184
+ });
185
+ img.src = svg_data_url;
186
+ });
187
+ }
188
+ // Export SVG element as PNG (triggers browser download)
189
+ export function export_svg_as_png(svg_element, filename, png_dpi = 150) {
190
+ if (!svg_element) {
191
+ console.warn(`SVG element not found for PNG export`);
192
+ return;
193
+ }
194
+ svg_to_png_blob(svg_element, png_dpi)
195
+ .then((blob) => download(blob, filename, `image/png`))
196
+ .catch((error) => console.error(`Error exporting PNG:`, error));
197
+ }
198
+ // Generate FFmpeg command for WebM to MP4 conversion
199
+ export function get_ffmpeg_conversion_command(input_filename) {
200
+ const output = input_filename.replace(/\.webm$/i, `.mp4`);
201
+ return `ffmpeg -i "${input_filename}" -c:v libx264 -preset medium -crf 18 -pix_fmt yuv420p -movflags faststart "${output}"`;
202
+ }
203
+ // Export trajectory video as WebM with frame-by-frame rendering to prevent dropped frames.
204
+ // Note: Browsers only support WebM natively. Use FFmpeg for MP4 conversion (see get_ffmpeg_conversion_command).
205
+ export async function export_trajectory_video(canvas, filename, options = {}) {
206
+ const { fps = 30, total_frames = 100, on_progress, on_step, resolution_multiplier = 1, } = options;
207
+ if (!canvas ||
208
+ typeof MediaRecorder === `undefined` ||
209
+ !MediaRecorder.isTypeSupported(`video/webm;codecs=vp9`))
210
+ throw new Error(`WebM video recording not supported in this browser`);
211
+ const renderer = get_canvas_renderer(canvas);
212
+ // Store original renderer settings if changing resolution
213
+ let orig_pixel_ratio;
214
+ let orig_size;
215
+ if (resolution_multiplier !== 1 && renderer) {
216
+ orig_pixel_ratio = renderer.getPixelRatio();
217
+ orig_size = renderer.getSize(new Vector2());
218
+ // Adjust pixel ratio for different resolution export
219
+ renderer.setPixelRatio(orig_pixel_ratio * resolution_multiplier);
220
+ renderer.setSize(orig_size.width, orig_size.height, false);
221
+ }
222
+ // Calculate bitrate based on actual video dimensions
223
+ // VP9 typically needs 0.08-0.12 bits per pixel per frame for good quality
224
+ // canvas dimensions include device pixel ratio and any resolution_multiplier
225
+ const pixels_per_frame = canvas.width * canvas.height;
226
+ const bits_per_pixel_per_frame = 0.1; // Good quality for VP9
227
+ // Clamp bitrate to reasonable bounds (1 Mbps min, 200 Mbps max)
228
+ const calculated_bitrate = pixels_per_frame * fps * bits_per_pixel_per_frame;
229
+ const bitrate = Math.max(1_000_000, Math.min(calculated_bitrate, 200_000_000));
230
+ const stream = canvas.captureStream(0);
231
+ const chunks = [];
232
+ const recorder = new MediaRecorder(stream, {
233
+ mimeType: `video/webm;codecs=vp9`,
234
+ videoBitsPerSecond: bitrate,
235
+ });
236
+ recorder.addEventListener(`dataavailable`, (event) => {
237
+ if (event.data.size > 0)
238
+ chunks.push(event.data);
239
+ });
240
+ const track = stream.getVideoTracks()[0];
241
+ // Start recording
242
+ recorder.start();
243
+ const frame_duration = 1000 / fps;
244
+ try {
245
+ // Render each frame sequentially with precise timing
246
+ for (let idx = 0; idx < total_frames; idx++) {
247
+ const frame_start = performance.now();
248
+ on_progress?.((idx / total_frames) * 100);
249
+ // Update trajectory step
250
+ if (on_step)
251
+ await on_step(idx);
252
+ // Double RAF ensures Three.js completes rendering before capture
253
+ await new Promise((resolve) => requestAnimationFrame(() => requestAnimationFrame(resolve)));
254
+ // Capture frame
255
+ track.requestFrame?.();
256
+ // Wait for remaining frame time to maintain consistent FPS
257
+ const elapsed = performance.now() - frame_start;
258
+ const remaining = Math.max(0, frame_duration - elapsed);
259
+ if (remaining > 0) {
260
+ await new Promise((resolve) => setTimeout(resolve, remaining));
261
+ }
262
+ }
263
+ }
264
+ finally {
265
+ // Restore original renderer settings
266
+ if (orig_pixel_ratio !== undefined && orig_size && renderer) {
267
+ renderer.setPixelRatio(orig_pixel_ratio);
268
+ renderer.setSize(orig_size.width, orig_size.height, false);
269
+ }
270
+ }
271
+ // Finalize recording
272
+ return new Promise((resolve, reject) => {
273
+ let is_resolved = false;
274
+ recorder.addEventListener(`stop`, () => {
275
+ if (is_resolved)
276
+ return;
277
+ is_resolved = true;
278
+ try {
279
+ const blob = new Blob(chunks, { type: `video/webm` });
280
+ const webm_filename = filename.replace(/\.(mp4|webm)$/i, `.webm`);
281
+ download(blob, webm_filename, `video/webm`);
282
+ on_progress?.(100);
283
+ resolve();
284
+ }
285
+ catch (error) {
286
+ reject(error);
287
+ }
288
+ });
289
+ recorder.addEventListener(`error`, (event) => {
290
+ if (is_resolved)
291
+ return;
292
+ is_resolved = true;
293
+ const error_msg = event instanceof ErrorEvent && event.error instanceof Error
294
+ ? event.error.message
295
+ : event.type;
296
+ reject(new Error(`MediaRecorder error: ${error_msg}`));
297
+ });
298
+ // Stop recording with safety timeout
299
+ try {
300
+ recorder.stop();
301
+ // Fallback: force resolution if recorder doesn't stop within 5 seconds
302
+ setTimeout(() => {
303
+ if (!is_resolved) {
304
+ is_resolved = true;
305
+ reject(new Error(`Recording timeout - recorder did not stop`));
306
+ }
307
+ }, 5000);
308
+ }
309
+ catch (error) {
310
+ if (!is_resolved) {
311
+ is_resolved = true;
312
+ reject(error);
313
+ }
314
+ }
315
+ });
316
+ }
@@ -0,0 +1,5 @@
1
+ export declare const to_query: (params: Record<string, string | number | undefined>) => string;
2
+ export declare function fetch_zipped<T>(url: string, { unzip }?: {
3
+ unzip?: boolean | undefined;
4
+ }): Promise<T | null>;
5
+ export declare function download(data: string | Blob, filename: string, type: string): void;
@@ -0,0 +1,39 @@
1
+ import { decompress_data } from './decompress';
2
+ // Convert params object to URL query string, omitting empty/undefined values.
3
+ // Example: {foo: "bar", baz: 42, empty: ""} → "foo=bar&baz=42"
4
+ export const to_query = (params) => new URLSearchParams(Object.entries(params)
5
+ .filter(([, val]) => val !== `` && val !== undefined)
6
+ .map(([key, val]) => [key, String(val)])).toString();
7
+ export async function fetch_zipped(url, { unzip = true } = {}) {
8
+ const response = await fetch(url);
9
+ if (!response.ok) {
10
+ console.error(`${response.status} ${response.statusText} for ${response.url}`);
11
+ return null;
12
+ }
13
+ if (!unzip)
14
+ return (await response.blob());
15
+ return JSON.parse(await decompress_data(response.body, `gzip`));
16
+ }
17
+ // Original download implementation
18
+ function default_download(data, filename, type) {
19
+ const file = new Blob([data], { type });
20
+ const link = document.createElement(`a`);
21
+ const url = URL.createObjectURL(file);
22
+ link.style.display = `none`;
23
+ link.href = url;
24
+ link.download = filename;
25
+ document.body.appendChild(link);
26
+ link.click();
27
+ link.remove();
28
+ URL.revokeObjectURL(url);
29
+ }
30
+ // Function to download data to a file - checks for global override first
31
+ export function download(data, filename, type) {
32
+ // Check if there's a global download override (used by VSCode extension)
33
+ const global_download = globalThis.download;
34
+ if (typeof global_download === `function` && global_download !== download) {
35
+ return global_download(data, filename, type);
36
+ }
37
+ // Use default browser download
38
+ return default_download(data, filename, type);
39
+ }
@@ -0,0 +1,7 @@
1
+ export interface FileDropOptions {
2
+ allow: () => boolean;
3
+ on_drop: (content: string | ArrayBuffer, filename: string) => void | Promise<void>;
4
+ on_error?: (msg: string) => void;
5
+ set_loading?: (loading: boolean) => void;
6
+ }
7
+ export declare function create_file_drop_handler(opts: FileDropOptions): (event: DragEvent) => Promise<void>;
@@ -0,0 +1,43 @@
1
+ // Shared file-drop handler composable for drag-and-drop file loading.
2
+ import { decompress_file } from './decompress';
3
+ import { handle_url_drop } from './url-drop';
4
+ // Handles URL drops (from FilePicker), direct file drops with decompression,
5
+ // loading state, and error reporting.
6
+ export function create_file_drop_handler(opts) {
7
+ return async (event) => {
8
+ event.preventDefault();
9
+ if (!opts.allow())
10
+ return;
11
+ opts.set_loading?.(true);
12
+ let drop_filename = ``;
13
+ try {
14
+ let url_error;
15
+ const handled = await handle_url_drop(event, opts.on_drop).catch((exc) => {
16
+ url_error = exc instanceof Error ? exc.message : String(exc);
17
+ return false;
18
+ });
19
+ if (handled)
20
+ return;
21
+ const file = event.dataTransfer?.files[0];
22
+ if (!file) {
23
+ if (url_error)
24
+ opts.on_error?.(`Failed to load from URL: ${url_error}`);
25
+ return;
26
+ }
27
+ drop_filename = file.name;
28
+ const { content, filename } = await decompress_file(file);
29
+ if (content)
30
+ await opts.on_drop(content, filename);
31
+ }
32
+ catch (exc) {
33
+ const detail = exc instanceof Error ? exc.message : String(exc);
34
+ const msg = drop_filename
35
+ ? `Failed to load file ${drop_filename}: ${detail}`
36
+ : `Failed to load file: ${detail}`;
37
+ opts.on_error?.(msg);
38
+ }
39
+ finally {
40
+ opts.set_loading?.(false);
41
+ }
42
+ };
43
+ }
@@ -0,0 +1,7 @@
1
+ export * from './decompress';
2
+ export * from './export';
3
+ export * from './fetch';
4
+ export * from './file-drop';
5
+ export * from './is-binary';
6
+ export type * from './types';
7
+ export * from './url-drop';
@@ -0,0 +1,6 @@
1
+ export * from './decompress';
2
+ export * from './export';
3
+ export * from './fetch';
4
+ export * from './file-drop';
5
+ export * from './is-binary';
6
+ export * from './url-drop';
@@ -0,0 +1 @@
1
+ export declare const is_binary: (content: string) => boolean;
@@ -0,0 +1,20 @@
1
+ // Simplified binary detection
2
+ export const is_binary = (content) => {
3
+ if (!content)
4
+ return false;
5
+ if (content.includes(`\0`))
6
+ return true;
7
+ let binary_char_count = 0;
8
+ let printable_ascii_count = 0;
9
+ for (let char_idx = 0; char_idx < content.length; char_idx += 1) {
10
+ const char_code = content.charCodeAt(char_idx);
11
+ if (char_code <= 8 ||
12
+ (char_code >= 14 && char_code <= 31) ||
13
+ (char_code >= 127 && char_code <= 255)) {
14
+ binary_char_count += 1;
15
+ }
16
+ if (char_code >= 32 && char_code <= 126)
17
+ printable_ascii_count += 1;
18
+ }
19
+ return (binary_char_count / content.length > 0.1 || printable_ascii_count / content.length < 0.7);
20
+ };
@@ -0,0 +1,8 @@
1
+ export interface FileInfo {
2
+ name: string;
3
+ url: string;
4
+ label?: string;
5
+ type?: string;
6
+ category?: string;
7
+ category_icon?: string;
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export declare function handle_url_drop(drag_event: DragEvent, callback: (content: string | ArrayBuffer, filename: string) => Promise<void> | void): Promise<boolean>;
2
+ export declare function load_from_url(url: string, callback: (content: string | ArrayBuffer, filename: string) => Promise<void> | void): Promise<void>;