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
@@ -1,316 +0,0 @@
1
- import type { Point2D, Vec2 } from '$lib/math'
2
-
3
- export type NumericArray = ArrayLike<number>
4
-
5
- export interface DensePointSeries<Metadata = Record<string, unknown>> {
6
- id?: string | number
7
- label?: string
8
- x: NumericArray
9
- y: NumericArray
10
- metadata?: Metadata[] | Metadata
11
- point_ids?: ArrayLike<string | number>
12
- size_values?: ArrayLike<number | null>
13
- color?: string
14
- }
15
-
16
- export interface DenseInternalPoint<Metadata = Record<string, unknown>> {
17
- x: number
18
- y: number
19
- series_idx: number
20
- point_idx: number
21
- metadata?: Metadata
22
- point_id?: string | number
23
- size_value?: number | null
24
- cx: number
25
- cy: number
26
- }
27
-
28
- export interface DensityBinResult {
29
- counts: Uint32Array
30
- first_point_idxs: Int32Array
31
- first_series_idxs: Int32Array
32
- max_count: number
33
- visible_count: number
34
- x_bins: number
35
- y_bins: number
36
- }
37
-
38
- export interface DensityBin {
39
- x_bin: number
40
- y_bin: number
41
- count: number
42
- x_range: Vec2
43
- y_range: Vec2
44
- }
45
-
46
- export interface PickNearestOptions {
47
- x_range: Vec2
48
- y_range: Vec2
49
- x_scale: (value: number) => number
50
- y_scale: (value: number) => number
51
- radius_px?: number
52
- }
53
-
54
- export interface PickIndex<Metadata = Record<string, unknown>> {
55
- cells: Map<string, DenseInternalPoint<Metadata>[]>
56
- cell_size: number
57
- radius_px: number
58
- }
59
-
60
- export interface PlotRect {
61
- x: number
62
- y: number
63
- width: number
64
- height: number
65
- }
66
-
67
- export const get_metadata_at = <Metadata>(
68
- metadata: DensePointSeries<Metadata>[`metadata`],
69
- point_idx: number,
70
- ): Metadata | undefined => (Array.isArray(metadata) ? metadata[point_idx] : metadata)
71
-
72
- const cell_key = (x_bin: number, y_bin: number): string => `${x_bin},${y_bin}`
73
-
74
- export const range_bounds = (range: Vec2): Vec2 =>
75
- range[0] <= range[1] ? range : [range[1], range[0]]
76
-
77
- const in_bounds = (value: number, min: number, max: number): boolean =>
78
- Number.isFinite(value) && value >= min && value <= max
79
-
80
- const value_bin = (value: number, min: number, span: number, bins: number): number =>
81
- Math.min(bins - 1, Math.max(0, Math.floor(((value - min) / span) * bins)))
82
-
83
- const series_length = (srs: Pick<DensePointSeries, `x` | `y`>): number =>
84
- Math.min(srs.x.length, srs.y.length)
85
-
86
- const padded_extent = (min: number, max: number): Vec2 => {
87
- if (!Number.isFinite(min) || !Number.isFinite(max)) return [0, 1]
88
- if (min === max) return [min - 0.5, max + 0.5]
89
- const padding = (max - min) * 0.05
90
- return [min - padding, max + padding]
91
- }
92
-
93
- export function series_extents(series: readonly DensePointSeries[]): { x: Vec2; y: Vec2 } {
94
- let x_min = Infinity
95
- let x_max = -Infinity
96
- let y_min = Infinity
97
- let y_max = -Infinity
98
-
99
- for (const srs of series) {
100
- const n_points = series_length(srs)
101
- for (let idx = 0; idx < n_points; idx++) {
102
- const x = srs.x[idx]
103
- const y = srs.y[idx]
104
- if (Number.isFinite(x)) {
105
- if (x < x_min) x_min = x
106
- if (x > x_max) x_max = x
107
- }
108
- if (Number.isFinite(y)) {
109
- if (y < y_min) y_min = y
110
- if (y > y_max) y_max = y
111
- }
112
- }
113
- }
114
-
115
- return { x: padded_extent(x_min, x_max), y: padded_extent(y_min, y_max) }
116
- }
117
-
118
- export function bin_points(
119
- series: readonly DensePointSeries[],
120
- x_range: Vec2,
121
- y_range: Vec2,
122
- x_bins: number,
123
- y_bins: number,
124
- ): DensityBinResult {
125
- const counts = new Uint32Array(x_bins * y_bins)
126
- const first_point_idxs = new Int32Array(counts.length)
127
- const first_series_idxs = new Int32Array(counts.length)
128
- const [x_min, x_max] = range_bounds(x_range)
129
- const [y_min, y_max] = range_bounds(y_range)
130
- const x_span = x_max - x_min || 1
131
- const y_span = y_max - y_min || 1
132
- const x_bin_scale = x_bins / x_span
133
- const y_bin_scale = y_bins / y_span
134
- const last_x_bin = x_bins - 1
135
- const last_y_bin = y_bins - 1
136
- let visible_count = 0
137
- let max_count = 0
138
-
139
- for (let series_idx = 0; series_idx < series.length; series_idx++) {
140
- const srs = series[series_idx]
141
- const n_points = series_length(srs)
142
- for (let point_idx = 0; point_idx < n_points; point_idx++) {
143
- const x = srs.x[point_idx]
144
- const y = srs.y[point_idx]
145
- if (
146
- !Number.isFinite(x) ||
147
- !Number.isFinite(y) ||
148
- x < x_min ||
149
- x > x_max ||
150
- y < y_min ||
151
- y > y_max
152
- )
153
- continue
154
-
155
- const raw_x_bin = Math.floor((x - x_min) * x_bin_scale)
156
- const raw_y_bin = Math.floor((y - y_min) * y_bin_scale)
157
- const x_bin = raw_x_bin > last_x_bin ? last_x_bin : raw_x_bin
158
- const y_bin = raw_y_bin > last_y_bin ? last_y_bin : raw_y_bin
159
- const idx = y_bin * x_bins + x_bin
160
- const count = ++counts[idx]
161
- if (count === 1) {
162
- first_series_idxs[idx] = series_idx
163
- first_point_idxs[idx] = point_idx
164
- }
165
- visible_count++
166
- if (count > max_count) max_count = count
167
- }
168
- }
169
-
170
- return {
171
- counts,
172
- first_point_idxs,
173
- first_series_idxs,
174
- max_count,
175
- visible_count,
176
- x_bins,
177
- y_bins,
178
- }
179
- }
180
-
181
- export function density_bin_at_point(
182
- density: DensityBinResult,
183
- pointer: Point2D,
184
- plot_rect: PlotRect,
185
- x_range: Vec2,
186
- y_range: Vec2,
187
- ): DensityBin | null {
188
- const rel_x = pointer.x - plot_rect.x
189
- const rel_y = pointer.y - plot_rect.y
190
- if (rel_x < 0 || rel_y < 0 || rel_x >= plot_rect.width || rel_y >= plot_rect.height) {
191
- return null
192
- }
193
-
194
- const x_bin = value_bin(rel_x, 0, plot_rect.width || 1, density.x_bins)
195
- // Screen coordinates grow downward, while density bins use bottom-up data Y.
196
- const y_bin = density.y_bins - 1 - value_bin(rel_y, 0, plot_rect.height || 1, density.y_bins)
197
- const count = density.counts[y_bin * density.x_bins + x_bin]
198
- if (!count) return null
199
-
200
- const [x_min, x_max] = range_bounds(x_range)
201
- const [y_min, y_max] = range_bounds(y_range)
202
- const x_step = (x_max - x_min || 1) / density.x_bins
203
- const y_step = (y_max - y_min || 1) / density.y_bins
204
- return {
205
- x_bin,
206
- y_bin,
207
- count,
208
- x_range: [x_min + x_bin * x_step, x_min + (x_bin + 1) * x_step],
209
- y_range: [y_min + y_bin * y_step, y_min + (y_bin + 1) * y_step],
210
- }
211
- }
212
-
213
- export function should_render_points(
214
- visible_count: number,
215
- plot_area_px: number,
216
- max_points: number,
217
- max_points_per_px: number,
218
- ): boolean {
219
- return (
220
- visible_count <= max_points ||
221
- (plot_area_px > 0 && visible_count / plot_area_px <= max_points_per_px)
222
- )
223
- }
224
-
225
- const internal_point = <Metadata>(
226
- srs: DensePointSeries<Metadata>,
227
- series_idx: number,
228
- point_idx: number,
229
- x_scale: (value: number) => number,
230
- y_scale: (value: number) => number,
231
- ): DenseInternalPoint<Metadata> => {
232
- const x = srs.x[point_idx]
233
- const y = srs.y[point_idx]
234
- return {
235
- x,
236
- y,
237
- cx: x_scale(x),
238
- cy: y_scale(y),
239
- series_idx,
240
- point_idx,
241
- metadata: get_metadata_at(srs.metadata, point_idx),
242
- point_id: srs.point_ids?.[point_idx],
243
- size_value: srs.size_values?.[point_idx],
244
- }
245
- }
246
-
247
- export function build_pick_index<Metadata>(
248
- series: readonly DensePointSeries<Metadata>[],
249
- options: PickNearestOptions,
250
- ): PickIndex<Metadata> {
251
- const { x_range, y_range, x_scale, y_scale, radius_px = 12 } = options
252
- const [x_min, x_max] = range_bounds(x_range)
253
- const [y_min, y_max] = range_bounds(y_range)
254
- const cell_size = Math.max(1, radius_px)
255
- const cells = new Map<string, DenseInternalPoint<Metadata>[]>()
256
-
257
- for (let series_idx = 0; series_idx < series.length; series_idx++) {
258
- const srs = series[series_idx]
259
- const n_points = series_length(srs)
260
- for (let point_idx = 0; point_idx < n_points; point_idx++) {
261
- const x = srs.x[point_idx]
262
- const y = srs.y[point_idx]
263
- if (!in_bounds(x, x_min, x_max) || !in_bounds(y, y_min, y_max)) continue
264
-
265
- const point = internal_point(srs, series_idx, point_idx, x_scale, y_scale)
266
- const key = cell_key(Math.floor(point.cx / cell_size), Math.floor(point.cy / cell_size))
267
- const points = cells.get(key)
268
- if (points) points.push(point)
269
- else cells.set(key, [point])
270
- }
271
- }
272
-
273
- return { cells, cell_size, radius_px }
274
- }
275
-
276
- export function pick_from_index<Metadata>(
277
- index: PickIndex<Metadata>,
278
- pointer: Point2D,
279
- ): DenseInternalPoint<Metadata> | null {
280
- const radius_sq = index.radius_px ** 2
281
- const center_x = Math.floor(pointer.x / index.cell_size)
282
- const center_y = Math.floor(pointer.y / index.cell_size)
283
- const cell_radius = Math.ceil(index.radius_px / index.cell_size)
284
- let best: DenseInternalPoint<Metadata> | null = null
285
- let best_dist_sq = radius_sq
286
-
287
- for (let y_bin = center_y - cell_radius; y_bin <= center_y + cell_radius; y_bin++) {
288
- for (let x_bin = center_x - cell_radius; x_bin <= center_x + cell_radius; x_bin++) {
289
- for (const point of index.cells.get(cell_key(x_bin, y_bin)) ?? []) {
290
- const dx = pointer.x - point.cx
291
- const dy = pointer.y - point.cy
292
- const dist_sq = dx * dx + dy * dy
293
- if (dist_sq > best_dist_sq) continue
294
- best_dist_sq = dist_sq
295
- best = point
296
- }
297
- }
298
- }
299
-
300
- return best
301
- }
302
-
303
- export function first_point_in_bin<Metadata>(
304
- series: readonly DensePointSeries<Metadata>[],
305
- density: DensityBinResult,
306
- bin: Pick<DensityBin, `x_bin` | `y_bin`>,
307
- x_scale: (value: number) => number,
308
- y_scale: (value: number) => number,
309
- ): DenseInternalPoint<Metadata> | null {
310
- const idx = bin.y_bin * density.x_bins + bin.x_bin
311
- if (!density.counts[idx]) return null
312
- const series_idx = density.first_series_idxs[idx]
313
- const point_idx = density.first_point_idxs[idx]
314
- const srs = series[series_idx]
315
- return srs ? internal_point(srs, series_idx, point_idx, x_scale, y_scale) : null
316
- }
@@ -1,184 +0,0 @@
1
- import { compute_element_placement, sample_series_obstacle_points } from './layout'
2
- import type { Sides } from './layout'
3
-
4
- // Shared "move a decoration (legend/colorbar) outside the plot when interior overlap is
5
- // unavoidable" logic, reused by every 2D plot (ScatterPlot/BarPlot/Histogram/BinnedScatterPlot).
6
-
7
- export const DECOR_GAP = 8 // px gap between an outside decoration and the plot edge
8
-
9
- type Pt = { x: number; y: number }
10
- type Size = { width: number; height: number }
11
-
12
- // True when the user pinned a decoration via its style (an edge property or position:absolute),
13
- // in which case auto-placement must leave it alone.
14
- export const has_explicit_position = (style?: string | null): boolean =>
15
- /(^|[;{]\s*)(top|bottom|left|right)\s*:|position\s*:\s*absolute/.test(style ?? ``)
16
-
17
- // A decoration's pixel footprint: its rendered box once laid out, else `fallback` (offset dims read
18
- // 0 before first render). Used to decide crowding before the real size is known.
19
- export const measured_footprint = (el: HTMLElement | null | undefined, fallback: Size): Size =>
20
- el?.offsetWidth && el?.offsetHeight
21
- ? { width: el.offsetWidth, height: el.offsetHeight }
22
- : fallback
23
-
24
- // Build the obstacle field in normalized [0,1] plot coords from one or more series. Callers pass
25
- // points already normalized to [0,1] with y=0 at the top. Built from data (not pixel scales) so the
26
- // crowding decision below is independent of any margins reserved for outside decorations — this
27
- // prevents a reserve -> data-shift -> re-decide oscillation loop.
28
- export function build_obstacles_norm(
29
- series: { points: Pt[]; draws_line?: boolean }[],
30
- base_w: number,
31
- base_h: number,
32
- ): Pt[] {
33
- const step = 12 / Math.max(base_w, base_h, 1)
34
- const out: Pt[] = []
35
- for (const srs of series) {
36
- // avoid out.push(...arr): a long series would overflow the call-stack arg limit
37
- for (const pt of sample_series_obstacle_points(
38
- srs.points,
39
- srs.draws_line ?? false,
40
- step,
41
- )) {
42
- if (isFinite(pt.x) && isFinite(pt.y)) out.push(pt)
43
- }
44
- }
45
- return out
46
- }
47
-
48
- // Build an obstacle segment for one bar, clipped to the visible [0,1]x[0,1] box (null if off-plot).
49
- // Clipping is essential: when zoomed in, off-screen bars normalize to huge coords and would make
50
- // sample_series_obstacle_points emit millions of points. `cross` is the fixed bar position; `a`/`b`
51
- // are the span endpoints (baseline -> tip) along the other axis.
52
- export function clip_bar(
53
- vertical: boolean,
54
- cross: number,
55
- a: number,
56
- b: number,
57
- ): { points: Pt[]; draws_line: boolean } | null {
58
- if (!(cross >= 0 && cross <= 1)) return null
59
- const lo = Math.max(0, Math.min(a, b))
60
- const hi = Math.min(1, Math.max(a, b))
61
- if (hi < lo) return null
62
- const points = vertical
63
- ? [
64
- { x: cross, y: lo },
65
- { x: cross, y: hi },
66
- ]
67
- : [
68
- { x: lo, y: cross },
69
- { x: hi, y: cross },
70
- ]
71
- return { points, draws_line: true }
72
- }
73
-
74
- // A decoration is "crowded out" only when even the emptiest interior spot is at least this dense
75
- // relative to the plot-wide average. A single clear region (e.g. one sparse quadrant) keeps the
76
- // decoration inside; a roughly uniformly-full plot pushes it out. Using a relative ratio (not "any
77
- // overlap") keeps the decision stable for wide decorations that merely clip a dense neighbor.
78
- const CROWDING_RATIO = 0.5
79
-
80
- // True when even the best interior spot for `footprint` (px) is too dense to host the decoration
81
- function is_crowded(
82
- obstacles: Pt[],
83
- footprint: Size,
84
- base_w: number,
85
- base_h: number,
86
- clearance: number,
87
- ): boolean {
88
- if (!obstacles.length || base_w <= 0 || base_h <= 0) return false
89
- const fw = footprint.width / base_w
90
- const fh = footprint.height / base_h
91
- if (fw >= 1 || fh >= 1) return true // too big to fit inside -> outside
92
- const best = compute_element_placement({
93
- plot_bounds: { x: 0, y: 0, width: 1, height: 1 },
94
- element_size: { width: fw, height: fh },
95
- axis_clearance: clearance / Math.min(base_w, base_h),
96
- points: obstacles,
97
- })
98
- const in_box = obstacles.filter(
99
- (pt) => pt.x >= best.x && pt.x <= best.x + fw && pt.y >= best.y && pt.y <= best.y + fh,
100
- ).length
101
- // expected count if obstacles were spread uniformly = total * box-area fraction
102
- return in_box > CROWDING_RATIO * obstacles.length * fw * fh
103
- }
104
-
105
- export type DecorationInput = { footprint: Size; clearance?: number }
106
-
107
- export type DecorationLayout = {
108
- pad: Required<Sides> // base_pad plus reservations for whatever moved outside
109
- legend_outside: boolean
110
- legend_pos: Pt // outside position (right or bottom margin; valid when legend_outside)
111
- colorbar_outside: boolean
112
- colorbar_style: string // wrapper style for the reserved margin ('' when interior)
113
- }
114
-
115
- // Decide which decorations must move outside (interior placement unavoidably overlaps data), the
116
- // reserved padding, and the outside positions/styles. `base_pad` must be decoration-independent so
117
- // the crowding decision can't see the reservation it produces.
118
- export function place_decorations(cfg: {
119
- base_pad: Required<Sides>
120
- width: number
121
- height: number
122
- obstacles_norm: Pt[]
123
- legend?: DecorationInput | null // null = no auto-placeable legend
124
- colorbar?: (DecorationInput & { horizontal?: boolean }) | null
125
- gap?: number
126
- }): DecorationLayout {
127
- const { base_pad, width, height, obstacles_norm, legend, colorbar, gap = DECOR_GAP } = cfg
128
- const base_w = width - base_pad.l - base_pad.r
129
- const base_h = height - base_pad.t - base_pad.b
130
-
131
- const colorbar_outside =
132
- colorbar != null &&
133
- is_crowded(obstacles_norm, colorbar.footprint, base_w, base_h, colorbar.clearance ?? 15)
134
- const cbar_horizontal = colorbar?.horizontal ?? false
135
- const colorbar_takes_right = colorbar_outside && !cbar_horizontal // vertical colorbar -> right
136
- const cbar_w = colorbar?.footprint.width ?? 0
137
- const cbar_h = colorbar?.footprint.height ?? 0
138
-
139
- const legend_outside =
140
- legend != null &&
141
- is_crowded(obstacles_norm, legend.footprint, base_w, base_h, legend.clearance ?? 12)
142
- const legend_w = legend?.footprint.width ?? 0
143
- const legend_h = legend?.footprint.height ?? 0
144
- // Put a narrow/tall legend on the right (wastes less reserved margin than a wide bottom strip);
145
- // a wide/short legend goes below. Skip the right side if a vertical colorbar already took it.
146
- const legend_right =
147
- legend_outside && !colorbar_takes_right && legend_h * base_w > legend_w * base_h
148
- const legend_bottom = legend_outside && !legend_right
149
-
150
- // colorbar: horizontal -> above (reserves top), vertical -> right. legend: right or bottom.
151
- // A right legend replaces the plot's right margin (it sits flush at the edge), so reserve only its
152
- // width + a gap on each side instead of stacking it on top of base_pad.r (which left a wide gap).
153
- const pad: Required<Sides> = {
154
- t: base_pad.t + (colorbar_outside && cbar_horizontal ? cbar_h + gap : 0),
155
- l: base_pad.l,
156
- b: base_pad.b + (legend_bottom ? legend_h + gap : 0),
157
- r: legend_right
158
- ? legend_w + 2 * gap
159
- : base_pad.r + (colorbar_takes_right ? cbar_w + gap : 0),
160
- }
161
-
162
- const colorbar_style = !colorbar_outside
163
- ? ``
164
- : cbar_horizontal
165
- ? `position: absolute; top: ${gap}px; inset-inline: 0; margin-inline: auto; width: calc(100% - ${
166
- base_pad.l + base_pad.r
167
- }px); max-width: 100%;`
168
- : `position: absolute; right: ${gap}px; inset-block: 0; margin-block: auto; height: calc(100% - ${
169
- base_pad.t + base_pad.b
170
- }px); max-height: 100%;`
171
-
172
- // right: flush to the right edge, vertically centered in the plot area; bottom: centered below
173
- const legend_pos: Pt = legend_right
174
- ? {
175
- x: width - legend_w - gap,
176
- y: base_pad.t + (height - base_pad.t - base_pad.b - legend_h) / 2,
177
- }
178
- : {
179
- x: base_pad.l + (width - base_pad.l - base_pad.r - legend_w) / 2,
180
- y: height - legend_h - gap,
181
- }
182
-
183
- return { pad, legend_outside, legend_pos, colorbar_outside, colorbar_style }
184
- }
@@ -1,122 +0,0 @@
1
- // Shared utilities for interactive axis functionality
2
-
3
- import type {
4
- AxisConfig,
5
- AxisLoadError,
6
- BarSeries,
7
- DataLoaderFn,
8
- DataLoaderResult,
9
- DataSeries,
10
- } from './types'
11
-
12
- type AxisType = `x` | `x2` | `y` | `y2`
13
-
14
- // Merge new series with preserved UI state from old series.
15
- // Matches by stable id first, then by index only for ordered id-less series.
16
- export function merge_series_state<T extends DataSeries | BarSeries>(
17
- old_series: T[],
18
- new_series: T[],
19
- ): T[] {
20
- // Build id lookup map for O(1) matching (string or number ids)
21
- const by_id = new Map<string | number, T>()
22
- for (const srs of old_series) {
23
- if (srs.id !== undefined && srs.id !== ``) by_id.set(srs.id, srs)
24
- }
25
-
26
- return new_series.map((new_srs, idx) => {
27
- const old_srs =
28
- new_srs.id !== undefined && new_srs.id !== `` ? by_id.get(new_srs.id) : old_series[idx]
29
- if (!old_srs) {
30
- return new_srs
31
- }
32
-
33
- // Preserve UI state: visibility and styling from old series if not in new
34
- const result: Record<string, unknown> = { ...new_srs }
35
- result.visible ??= old_srs.visible
36
-
37
- // Preserve style properties only when key exists in BOTH series (guards against
38
- // cross-type injection when T is a union like DataSeries | BarSeries)
39
- for (const key of [`point_style`, `line_style`, `color`]) {
40
- if (key in old_srs && key in new_srs && result[key] === undefined) {
41
- result[key] = old_srs[key as keyof typeof old_srs]
42
- }
43
- }
44
- return result as T
45
- })
46
- }
47
-
48
- // State accessors for axis change handler - enables sharing logic across plot components
49
- export interface AxisChangeState<T extends DataSeries | BarSeries> {
50
- get_axis: (axis: AxisType) => AxisConfig
51
- set_axis: (axis: AxisType, config: AxisConfig) => void
52
- get_series: () => T[]
53
- set_series: (series: T[]) => void
54
- get_loading: () => AxisType | null
55
- set_loading: (axis: AxisType | null) => void
56
- }
57
-
58
- // Handle axis property change - loads new data via data_loader
59
- // Returns a function bound to the component's state accessors
60
- export function create_axis_change_handler<T extends DataSeries | BarSeries>(
61
- state: AxisChangeState<T>,
62
- data_loader: DataLoaderFn<Record<string, unknown>, T> | undefined,
63
- on_axis_change?: (axis: AxisType, key: string, new_series: T[]) => void,
64
- on_error?: (error: AxisLoadError) => void,
65
- ): (axis: AxisType, key: string) => Promise<void> {
66
- return async (axis: AxisType, key: string) => {
67
- if (!data_loader || state.get_loading()) return
68
-
69
- const axis_config = state.get_axis(axis)
70
- const prev_key = axis_config.selected_key
71
-
72
- // Skip if key unchanged AND series already loaded (allows initial load when series empty)
73
- if (prev_key === key && state.get_series().length > 0) return
74
-
75
- // Update selected_key immediately for UI feedback
76
- state.set_axis(axis, { ...axis_config, selected_key: key })
77
- state.set_loading(axis)
78
-
79
- try {
80
- const result: DataLoaderResult<Record<string, unknown>, T> = await data_loader(
81
- axis,
82
- key,
83
- state.get_series(),
84
- )
85
-
86
- // Merge new series with preserved state from old series
87
- const merged = merge_series_state(state.get_series(), result.series)
88
- state.set_series(merged)
89
-
90
- // Update axis label/unit if provided
91
- if (result.axis_label || result.axis_unit) {
92
- const current = state.get_axis(axis)
93
- state.set_axis(axis, {
94
- ...current,
95
- label: result.axis_label ?? current.label,
96
- unit: result.axis_unit ?? current.unit,
97
- })
98
- }
99
-
100
- on_axis_change?.(axis, key, merged)
101
- } catch (err) {
102
- console.error(`Failed to load data for ${axis}=${key}:`, err)
103
-
104
- // Revert selection
105
- state.set_axis(axis, { ...state.get_axis(axis), selected_key: prev_key })
106
-
107
- const message = err instanceof Error ? err.message : String(err)
108
- on_error?.({ axis, key, message })
109
- } finally {
110
- state.set_loading(null)
111
- }
112
- }
113
- }
114
-
115
- // Constants for axis label foreignObject positioning (all values in px)
116
- // Use minimal dimensions - overflow: visible handles any dropdown expansion
117
- export const AXIS_LABEL_CONTAINER = {
118
- width: 200, // container width for centering; dropdown can overflow
119
- height: 24, // single line height; dropdown options overflow downward
120
- x_offset: 100, // half of width for horizontal centering
121
- y_offset: 12, // half of height for vertical centering
122
- } as const
@@ -1,83 +0,0 @@
1
- import type { D3ColorSchemeName, D3InterpolateName } from '$lib/colors'
2
- import type { DenseInternalPoint } from '$lib/plot/adaptive-density'
3
- import type ColorBar from '$lib/plot/ColorBar.svelte'
4
- import type { LabelPlacementConfig, ScaleType, ScatterHandlerProps } from '$lib/plot/types'
5
- import type { ComponentProps, Snippet } from 'svelte'
6
-
7
- export type BinnedColorScaleConfig =
8
- | {
9
- type?: ScaleType
10
- scheme?: D3ColorSchemeName | D3InterpolateName
11
- value_range?: [number, number]
12
- }
13
- | D3InterpolateName
14
-
15
- export type BinnedSizeScaleConfig = {
16
- type?: ScaleType
17
- radius_range?: [number, number]
18
- value_range?: [number, number]
19
- pick_radius?: number | `auto`
20
- }
21
-
22
- export type BinnedDensityConfig = {
23
- bin_px?: number
24
- color_scale?: BinnedColorScaleConfig
25
- color_bar?: ComponentProps<typeof ColorBar> | null
26
- auto_point_mode?: false | { max_points?: number; max_points_per_px?: number }
27
- bin_click?: `zoom` | `point` | `none`
28
- }
29
-
30
- export type BinnedRefLine = {
31
- x1: number
32
- y1: number
33
- x2: number
34
- y2: number
35
- color?: string
36
- dash?: string
37
- width?: number
38
- }
39
-
40
- export type BinnedOverlaysConfig = {
41
- ref_lines?: BinnedRefLine[]
42
- }
43
-
44
- export type BinnedPointBasePayload<
45
- Metadata extends Record<string, unknown> = Record<string, unknown>,
46
- > = ScatterHandlerProps<Metadata> & {
47
- point: DenseInternalPoint<Metadata>
48
- color?: string
49
- }
50
-
51
- export type BinnedPointDataFn<
52
- Metadata extends Record<string, unknown> = Record<string, unknown>,
53
- PointData extends Record<string, unknown> = Record<string, unknown>,
54
- > = (payload: BinnedPointBasePayload<Metadata>) => PointData | null | undefined
55
-
56
- export type BinnedPointPayload<
57
- Metadata extends Record<string, unknown> = Record<string, unknown>,
58
- PointData extends Record<string, unknown> = Record<string, unknown>,
59
- > = BinnedPointBasePayload<Metadata> & {
60
- point_data?: PointData
61
- }
62
-
63
- export type BinnedPointTooltipPayload<
64
- Metadata extends Record<string, unknown> = Record<string, unknown>,
65
- PointData extends Record<string, unknown> = Record<string, unknown>,
66
- > = BinnedPointPayload<Metadata, PointData>
67
-
68
- export type BinnedPointLabelPlacementConfig = Partial<LabelPlacementConfig>
69
-
70
- export type BinnedPointLabelsConfig<
71
- Metadata extends Record<string, unknown> = Record<string, unknown>,
72
- PointData extends Record<string, unknown> = Record<string, unknown>,
73
- > = {
74
- render?: Snippet<[BinnedPointPayload<Metadata, PointData>]>
75
- measure_text?: (payload: BinnedPointPayload<Metadata, PointData>) => string
76
- font_size?: string
77
- max_count?: number
78
- gap_px?: number
79
- placement?: BinnedPointLabelPlacementConfig
80
- leaders?: {
81
- min_length_px?: number
82
- }
83
- }