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,99 @@
1
+ // Type guard for select value narrowing (avoids unsafe casts)
2
+ const SCALE_TYPE_NAMES = new Set([`linear`, `log`, `arcsinh`, `time`]);
3
+ export const is_scale_type_name = (val) => SCALE_TYPE_NAMES.has(val);
4
+ // Helper to normalize ScaleType to base type name
5
+ export function get_scale_type_name(scale_type) {
6
+ if (!scale_type)
7
+ return `linear`;
8
+ if (typeof scale_type === `string`)
9
+ return scale_type;
10
+ return scale_type.type;
11
+ }
12
+ // Helper to get arcsinh threshold (returns 1 as default for non-arcsinh scales)
13
+ export function get_arcsinh_threshold(scale_type) {
14
+ if (!scale_type)
15
+ return 1;
16
+ if (typeof scale_type === `object` && scale_type.type === `arcsinh`) {
17
+ const threshold = scale_type.threshold ?? 1;
18
+ if (!Number.isFinite(threshold) || threshold <= 0) {
19
+ throw new Error(`arcsinh threshold must be a positive finite number, got ${threshold}`);
20
+ }
21
+ return threshold;
22
+ }
23
+ return 1; // default threshold
24
+ }
25
+ // Helper to detect time scale - checks explicit scale_type or falls back to format heuristic
26
+ // Prefer explicit scale_type: 'time' for new code; format heuristic kept for backwards compatibility
27
+ export function is_time_scale(scale_type, format) {
28
+ if (get_scale_type_name(scale_type) === `time`)
29
+ return true;
30
+ // Fallback: d3 time format strings start with '%'
31
+ return format?.startsWith(`%`) ?? false;
32
+ }
33
+ // Type guard for select value narrowing (avoids unsafe casts)
34
+ const Y2_SYNC_MODES = new Set([`none`, `synced`, `align`]);
35
+ export const is_y2_sync_mode = (val) => Y2_SYNC_MODES.has(val);
36
+ export const LINE_TYPES = [`solid`, `dashed`, `dotted`];
37
+ // Define grid cell identifiers
38
+ export const CELLS_3X3 = [
39
+ `top-left`,
40
+ `top-center`,
41
+ `top-right`,
42
+ `middle-left`,
43
+ `middle-center`,
44
+ `middle-right`,
45
+ `bottom-left`,
46
+ `bottom-center`,
47
+ `bottom-right`,
48
+ ];
49
+ export const CORNER_CELLS = [`top-left`, `top-right`, `bottom-left`, `bottom-right`];
50
+ // Default grid line style (SSOT for all plot components)
51
+ export const DEFAULT_GRID_STYLE = {
52
+ stroke: `var(--border-color, gray)`,
53
+ 'stroke-dasharray': `4`,
54
+ 'stroke-width': `1`,
55
+ };
56
+ export const DEFAULT_MARKERS = `line+points`;
57
+ // Default series colors for auto-differentiation (similar to d3 schemeTableau10)
58
+ export const DEFAULT_SERIES_COLORS = [
59
+ `#4e79a7`, // blue
60
+ `#f28e2c`, // orange
61
+ `#e15759`, // red
62
+ `#76b7b2`, // teal
63
+ `#59a14f`, // green
64
+ `#edc949`, // yellow
65
+ `#af7aa1`, // purple
66
+ `#ff9da7`, // pink
67
+ `#9c755f`, // brown
68
+ `#bab0ab`, // gray
69
+ ];
70
+ // Default series symbols for auto-differentiation (cycling through distinct shapes)
71
+ export const DEFAULT_SERIES_SYMBOLS = [
72
+ `Circle`,
73
+ `Square`,
74
+ `Triangle`,
75
+ `Cross`,
76
+ `Diamond`,
77
+ `Star`,
78
+ `Wye`,
79
+ ];
80
+ // Curve types supported for fill path generation (matching d3-shape curves)
81
+ export const FILL_CURVE_TYPES = [
82
+ `linear`,
83
+ `monotoneX`,
84
+ `monotoneY`,
85
+ `step`,
86
+ `stepBefore`,
87
+ `stepAfter`,
88
+ `basis`,
89
+ `cardinal`,
90
+ `catmullRom`,
91
+ `natural`,
92
+ ];
93
+ // Default style values for reference lines
94
+ export const REF_LINE_STYLE_DEFAULTS = {
95
+ color: `currentColor`,
96
+ width: 1,
97
+ dash: ``,
98
+ opacity: 1,
99
+ };
@@ -0,0 +1,68 @@
1
+ import type { Point2D } from '../../math';
2
+ import type { AxisConfig, DataSeries } from '..';
3
+ import type { PlotScaleFn } from '../scales';
4
+ import type { LabelPlacementConfig, LabelPlacementWeights } from '../types';
5
+ export interface Rect {
6
+ x: number;
7
+ y: number;
8
+ w: number;
9
+ h: number;
10
+ }
11
+ export interface PlotBounds {
12
+ min_x: number;
13
+ min_y: number;
14
+ max_x: number;
15
+ max_y: number;
16
+ }
17
+ interface AnchorInfo {
18
+ x: number;
19
+ y: number;
20
+ radius: number;
21
+ }
22
+ interface LabelState extends Rect {
23
+ anchor_idx: number;
24
+ }
25
+ export interface LabelSize {
26
+ width: number;
27
+ height: number;
28
+ }
29
+ export interface LeaderLineSegment {
30
+ x1: number;
31
+ y1: number;
32
+ x2: number;
33
+ y2: number;
34
+ }
35
+ export interface LeaderLineOptions {
36
+ point: Point2D;
37
+ point_radius: number;
38
+ label_center: Point2D;
39
+ label_size: LabelSize;
40
+ min_length?: number;
41
+ label_padding?: number;
42
+ }
43
+ export declare function parse_font_size(size_str?: string): number;
44
+ export declare function estimate_label_size(text: string, font_size_str?: string): LabelSize;
45
+ export declare function rect_overlap_area(a: Rect, b: Rect): number;
46
+ export declare function rect_circle_overlap(rect: Rect, cx: number, cy: number, radius: number): number;
47
+ export declare function segments_intersect(ax1: number, ay1: number, ax2: number, ay2: number, bx1: number, by1: number, bx2: number, by2: number): boolean;
48
+ export declare function segment_rect_intersects(sx1: number, sy1: number, sx2: number, sy2: number, rect: Rect): boolean;
49
+ export declare function rect_out_of_bounds_area(rect: Rect, bounds: PlotBounds): number;
50
+ export declare function label_leader_segment({ point, point_radius, label_center, label_size, min_length, label_padding, }: LeaderLineOptions): LeaderLineSegment | null;
51
+ export declare function generate_candidates(ax: number, ay: number, point_radius: number, label_w: number, label_h: number, gap: number): Point2D[];
52
+ export declare function compute_delta_energy(labels: LabelState[], anchors: AnchorInfo[], changed_idx: number, old_state: LabelState, new_state: LabelState, weights: Required<LabelPlacementWeights>, bounds: PlotBounds): number;
53
+ export declare function compute_label_positions(filtered_series: DataSeries[], config: LabelPlacementConfig, scales: {
54
+ x_scale_fn: PlotScaleFn;
55
+ y_scale_fn: PlotScaleFn;
56
+ y2_scale_fn: PlotScaleFn;
57
+ x_axis: AxisConfig;
58
+ }, bounds: {
59
+ width: number;
60
+ height: number;
61
+ pad: {
62
+ t: number;
63
+ b: number;
64
+ l: number;
65
+ r: number;
66
+ };
67
+ }): Record<string, Point2D>;
68
+ export {};
@@ -0,0 +1,326 @@
1
+ import { is_time_scale } from '../types';
2
+ const DEFAULT_WEIGHTS = {
3
+ overlap: 30,
4
+ marker: 100,
5
+ leader_cross: 10,
6
+ leader_text: 8,
7
+ distance: 0.5,
8
+ bounds: 100,
9
+ };
10
+ const NEIGHBOR_CELL_OFFSETS = [-1, 0, 1];
11
+ const copy_state = (target, source) => {
12
+ target.x = source.x;
13
+ target.y = source.y;
14
+ target.w = source.w;
15
+ target.h = source.h;
16
+ target.anchor_idx = source.anchor_idx;
17
+ };
18
+ export function parse_font_size(size_str) {
19
+ if (!size_str)
20
+ return 12;
21
+ const match = /^(\d+(?:\.\d+)?)(px|em|rem)?$/.exec(size_str);
22
+ if (!match)
23
+ return 12;
24
+ const value = parseFloat(match[1]);
25
+ return match[2] === `em` || match[2] === `rem` ? value * 16 : value;
26
+ }
27
+ export function estimate_label_size(text, font_size_str) {
28
+ const font_size = parse_font_size(font_size_str);
29
+ const label_lines = text.split(/\r?\n/);
30
+ const max_line_length = Math.max(...label_lines.map((line) => line.length));
31
+ return {
32
+ width: max_line_length * font_size * 0.6 + 10,
33
+ height: label_lines.length * font_size * 1.2,
34
+ };
35
+ }
36
+ // === Geometry helpers ===
37
+ export function rect_overlap_area(a, b) {
38
+ const ox = Math.max(0, Math.min(a.x + a.w, b.x + b.w) - Math.max(a.x, b.x));
39
+ const oy = Math.max(0, Math.min(a.y + a.h, b.y + b.h) - Math.max(a.y, b.y));
40
+ return ox * oy;
41
+ }
42
+ export function rect_circle_overlap(rect, cx, cy, radius) {
43
+ // Inflate rect by radius to create an exclusion zone around the marker
44
+ const left = rect.x - radius;
45
+ const top = rect.y - radius;
46
+ const right = rect.x + rect.w + radius;
47
+ const bottom = rect.y + rect.h + radius;
48
+ if (cx < left || cx > right || cy < top || cy > bottom)
49
+ return 0;
50
+ // Penalty proportional to how deep the marker center is inside the exclusion zone
51
+ const dx = Math.min(cx - left, right - cx);
52
+ const dy = Math.min(cy - top, bottom - cy);
53
+ return Math.min(dx, dy) + radius;
54
+ }
55
+ export function segments_intersect(ax1, ay1, ax2, ay2, bx1, by1, bx2, by2) {
56
+ const d1x = ax2 - ax1, d1y = ay2 - ay1;
57
+ const d2x = bx2 - bx1, d2y = by2 - by1;
58
+ const cross = d1x * d2y - d1y * d2x;
59
+ if (Math.abs(cross) < 1e-10)
60
+ return false;
61
+ const t_val = ((bx1 - ax1) * d2y - (by1 - ay1) * d2x) / cross;
62
+ const u_val = ((bx1 - ax1) * d1y - (by1 - ay1) * d1x) / cross;
63
+ return t_val > 0 && t_val < 1 && u_val > 0 && u_val < 1;
64
+ }
65
+ export function segment_rect_intersects(sx1, sy1, sx2, sy2, rect) {
66
+ const rx = rect.x, ry = rect.y, rx2 = rx + rect.w, ry2 = ry + rect.h;
67
+ return (segments_intersect(sx1, sy1, sx2, sy2, rx, ry, rx2, ry) ||
68
+ segments_intersect(sx1, sy1, sx2, sy2, rx2, ry, rx2, ry2) ||
69
+ segments_intersect(sx1, sy1, sx2, sy2, rx, ry2, rx2, ry2) ||
70
+ segments_intersect(sx1, sy1, sx2, sy2, rx, ry, rx, ry2));
71
+ }
72
+ export function rect_out_of_bounds_area(rect, bounds) {
73
+ let penalty = 0;
74
+ if (rect.x < bounds.min_x)
75
+ penalty += (bounds.min_x - rect.x) * rect.h;
76
+ if (rect.y < bounds.min_y)
77
+ penalty += (bounds.min_y - rect.y) * rect.w;
78
+ if (rect.x + rect.w > bounds.max_x)
79
+ penalty += (rect.x + rect.w - bounds.max_x) * rect.h;
80
+ if (rect.y + rect.h > bounds.max_y)
81
+ penalty += (rect.y + rect.h - bounds.max_y) * rect.w;
82
+ return penalty;
83
+ }
84
+ export function label_leader_segment({ point, point_radius, label_center, label_size, min_length = 6, label_padding = 1, }) {
85
+ const delta_x = label_center.x - point.x;
86
+ const delta_y = label_center.y - point.y;
87
+ const center_distance = Math.hypot(delta_x, delta_y);
88
+ if (center_distance <= 0)
89
+ return null;
90
+ const unit_x = delta_x / center_distance;
91
+ const unit_y = delta_y / center_distance;
92
+ const start_x = point.x + unit_x * point_radius;
93
+ const start_y = point.y + unit_y * point_radius;
94
+ const half_width = label_size.width / 2 + label_padding;
95
+ const half_height = label_size.height / 2 + label_padding;
96
+ const edge_distance = Math.min(Math.abs(unit_x) > 0.001 ? half_width / Math.abs(unit_x) : Infinity, Math.abs(unit_y) > 0.001 ? half_height / Math.abs(unit_y) : Infinity);
97
+ const visible_length = center_distance - point_radius - edge_distance;
98
+ if (visible_length <= min_length)
99
+ return null;
100
+ const end_x = label_center.x - unit_x * edge_distance;
101
+ const end_y = label_center.y - unit_y * edge_distance;
102
+ return { x1: start_x, y1: start_y, x2: end_x, y2: end_y };
103
+ }
104
+ // 8 candidate positions around anchor: R, TR, T, TL, L, BL, B, BR
105
+ // Positions are top-left corner of the label bounding box.
106
+ // All positions keep a full `offset` gap from the marker edge.
107
+ export function generate_candidates(ax, ay, point_radius, label_w, label_h, gap) {
108
+ const offset = point_radius + gap;
109
+ return [
110
+ { x: ax + offset, y: ay - label_h + offset / 2 }, // R (baseline just below center)
111
+ { x: ax + offset, y: ay - label_h - offset / 2 }, // TR
112
+ { x: ax - label_w / 2, y: ay - label_h - offset }, // T
113
+ { x: ax - label_w - offset, y: ay - label_h - offset / 2 }, // TL
114
+ { x: ax - label_w - offset, y: ay - label_h + offset / 2 }, // L (baseline just below center)
115
+ { x: ax - label_w - offset, y: ay + offset / 2 }, // BL
116
+ { x: ax - label_w / 2, y: ay + offset }, // B
117
+ { x: ax + offset, y: ay + offset / 2 }, // BR
118
+ ];
119
+ }
120
+ // Compute energy delta when only label at `changed_idx` moves
121
+ export function compute_delta_energy(labels, anchors, changed_idx, old_state, new_state, weights, bounds) {
122
+ let delta = 0;
123
+ const anchor = anchors[new_state.anchor_idx];
124
+ const old_cx = old_state.x + old_state.w / 2, old_cy = old_state.y + old_state.h / 2;
125
+ const new_cx = new_state.x + new_state.w / 2, new_cy = new_state.y + new_state.h / 2;
126
+ // Distance penalty change
127
+ delta +=
128
+ weights.distance *
129
+ (Math.hypot(new_cx - anchor.x, new_cy - anchor.y) -
130
+ Math.hypot(old_cx - anchor.x, old_cy - anchor.y));
131
+ // Bounds penalty change
132
+ delta +=
133
+ weights.bounds *
134
+ (rect_out_of_bounds_area(new_state, bounds) - rect_out_of_bounds_area(old_state, bounds));
135
+ // Marker overlap change (all markers)
136
+ for (const marker of anchors) {
137
+ delta +=
138
+ weights.marker *
139
+ (rect_circle_overlap(new_state, marker.x, marker.y, marker.radius) -
140
+ rect_circle_overlap(old_state, marker.x, marker.y, marker.radius));
141
+ }
142
+ // Pairwise interactions with all other labels
143
+ for (let jdx = 0; jdx < labels.length; jdx++) {
144
+ if (jdx === changed_idx)
145
+ continue;
146
+ const other = labels[jdx];
147
+ const anchor_j = anchors[other.anchor_idx];
148
+ const other_cx = other.x + other.w / 2, other_cy = other.y + other.h / 2;
149
+ // Label-label overlap delta
150
+ delta +=
151
+ weights.overlap *
152
+ (rect_overlap_area(new_state, other) - rect_overlap_area(old_state, other));
153
+ // Leader line crossing delta (changed label's leader vs other's leader)
154
+ const old_cross = segments_intersect(anchor.x, anchor.y, old_cx, old_cy, anchor_j.x, anchor_j.y, other_cx, other_cy);
155
+ const new_cross = segments_intersect(anchor.x, anchor.y, new_cx, new_cy, anchor_j.x, anchor_j.y, other_cx, other_cy);
156
+ if (new_cross !== old_cross)
157
+ delta += (new_cross ? 1 : -1) * weights.leader_cross;
158
+ // Changed label's leader crossing other label's rect
159
+ const old_text = segment_rect_intersects(anchor.x, anchor.y, old_cx, old_cy, other);
160
+ const new_text = segment_rect_intersects(anchor.x, anchor.y, new_cx, new_cy, other);
161
+ if (new_text !== old_text)
162
+ delta += (new_text ? 1 : -1) * weights.leader_text;
163
+ // Other label's leader crossing changed label's rect
164
+ const old_other = segment_rect_intersects(anchor_j.x, anchor_j.y, other_cx, other_cy, old_state);
165
+ const new_other = segment_rect_intersects(anchor_j.x, anchor_j.y, other_cx, other_cy, new_state);
166
+ if (new_other !== old_other)
167
+ delta += (new_other ? 1 : -1) * weights.leader_text;
168
+ }
169
+ return delta;
170
+ }
171
+ function cull_dense_labels(label_infos, max_neighbors, radius) {
172
+ if (radius <= 0 || label_infos.length <= max_neighbors + 1)
173
+ return label_infos;
174
+ const radius_squared = radius * radius;
175
+ const get_cell = (value) => Math.floor(value / radius);
176
+ const grid = {};
177
+ label_infos.forEach(({ anchor }, label_idx) => {
178
+ const key = `${get_cell(anchor.x)},${get_cell(anchor.y)}`;
179
+ const bucket = grid[key] ?? (grid[key] = []);
180
+ bucket.push(label_idx);
181
+ });
182
+ return label_infos.filter(({ anchor }, label_idx) => {
183
+ const cell_x = get_cell(anchor.x);
184
+ const cell_y = get_cell(anchor.y);
185
+ let neighbors = 0;
186
+ for (const cell_x_offset of NEIGHBOR_CELL_OFFSETS) {
187
+ for (const cell_y_offset of NEIGHBOR_CELL_OFFSETS) {
188
+ const bucket = grid[`${cell_x + cell_x_offset},${cell_y + cell_y_offset}`];
189
+ if (!bucket)
190
+ continue;
191
+ for (const neighbor_idx of bucket) {
192
+ if (neighbor_idx === label_idx)
193
+ continue;
194
+ const delta_x = anchor.x - label_infos[neighbor_idx].anchor.x;
195
+ const delta_y = anchor.y - label_infos[neighbor_idx].anchor.y;
196
+ if (delta_x * delta_x + delta_y * delta_y <= radius_squared)
197
+ neighbors += 1;
198
+ if (neighbors > max_neighbors)
199
+ return false;
200
+ }
201
+ }
202
+ }
203
+ return true;
204
+ });
205
+ }
206
+ // === Main export ===
207
+ export function compute_label_positions(filtered_series, config, scales, bounds) {
208
+ const { x_scale_fn, y_scale_fn, y2_scale_fn, x_axis } = scales;
209
+ const { width, height, pad } = bounds;
210
+ const plot_bounds = {
211
+ min_x: pad.l,
212
+ min_y: pad.t,
213
+ max_x: width - pad.r,
214
+ max_y: height - pad.b,
215
+ };
216
+ // Collect all label data in a single pass
217
+ let label_infos = [];
218
+ const candidate_gap = config.candidate_gap ?? 4;
219
+ for (const series of filtered_series) {
220
+ for (const pt of series.filtered_data ?? []) {
221
+ if (!pt.point_label?.auto_placement || !pt.point_label.text)
222
+ continue;
223
+ const ax = is_time_scale(x_axis.scale_type, x_axis.format)
224
+ ? x_scale_fn(new Date(pt.x))
225
+ : x_scale_fn(pt.x);
226
+ const ay = (series.y_axis === `y2` ? y2_scale_fn : y_scale_fn)(pt.y);
227
+ const label_size = pt.point_label.size ??
228
+ estimate_label_size(pt.point_label.text, pt.point_label.font_size);
229
+ const label_w = label_size.width;
230
+ const label_h = label_size.height;
231
+ const radius = pt.point_style?.radius ?? 3;
232
+ label_infos.push({
233
+ id: `${pt.series_idx}-${pt.point_idx}`,
234
+ anchor: { x: ax, y: ay, radius },
235
+ width: label_w,
236
+ height: label_h,
237
+ candidates: generate_candidates(ax, ay, radius, label_w, label_h, candidate_gap),
238
+ });
239
+ }
240
+ }
241
+ if (config.max_neighbors) {
242
+ label_infos = cull_dense_labels(label_infos, config.max_neighbors.count, config.max_neighbors.radius);
243
+ }
244
+ const num_labels = label_infos.length;
245
+ if (num_labels === 0)
246
+ return {};
247
+ // Fallback: too many labels, just offset to the right with bounds clamping
248
+ if (config.max_labels && num_labels > config.max_labels) {
249
+ return Object.fromEntries(label_infos.map((info) => [
250
+ info.id,
251
+ {
252
+ x: Math.min(Math.max(info.anchor.x + 5, plot_bounds.min_x), plot_bounds.max_x - info.width),
253
+ y: Math.min(Math.max(info.anchor.y, plot_bounds.min_y), plot_bounds.max_y - info.height),
254
+ },
255
+ ]));
256
+ }
257
+ const weights = { ...DEFAULT_WEIGHTS, ...config.weights };
258
+ const anchors = label_infos.map((info) => info.anchor);
259
+ // Greedy initialization: pick best candidate per label
260
+ const labels = [];
261
+ for (let idx = 0; idx < num_labels; idx++) {
262
+ const { candidates, width: lw, height: lh, anchor } = label_infos[idx];
263
+ let best_candidate = candidates[0];
264
+ let best_score = Infinity;
265
+ for (const candidate of candidates) {
266
+ const test_rect = { x: candidate.x, y: candidate.y, w: lw, h: lh };
267
+ let score = weights.bounds * rect_out_of_bounds_area(test_rect, plot_bounds);
268
+ for (const placed of labels) {
269
+ score += weights.overlap * rect_overlap_area(test_rect, placed);
270
+ }
271
+ for (const marker of anchors) {
272
+ score +=
273
+ weights.marker * rect_circle_overlap(test_rect, marker.x, marker.y, marker.radius);
274
+ }
275
+ score +=
276
+ weights.distance *
277
+ Math.hypot(candidate.x + lw / 2 - anchor.x, candidate.y + lh / 2 - anchor.y);
278
+ if (score < best_score) {
279
+ best_score = score;
280
+ best_candidate = candidate;
281
+ }
282
+ }
283
+ labels.push({ x: best_candidate.x, y: best_candidate.y, w: lw, h: lh, anchor_idx: idx });
284
+ }
285
+ // Simulated annealing
286
+ const sa_iterations = config.sa_iterations ?? 2000;
287
+ const total_steps = sa_iterations * num_labels;
288
+ const cooling_rate = 1 / total_steps;
289
+ // Seeded pseudo-random for deterministic results
290
+ let rng_state = 42;
291
+ const next_random = () => {
292
+ rng_state = (rng_state * 1664525 + 1013904223) & 0x7fffffff;
293
+ return rng_state / 0x7fffffff;
294
+ };
295
+ // Reusable scratch objects to avoid allocations in the hot loop
296
+ const old_scratch = { x: 0, y: 0, w: 0, h: 0, anchor_idx: 0 };
297
+ const new_scratch = { x: 0, y: 0, w: 0, h: 0, anchor_idx: 0 };
298
+ for (let step = 0; step < total_steps; step++) {
299
+ const temperature = Math.max(0.001, 1.0 - step * cooling_rate);
300
+ const label_idx = Math.floor(next_random() * num_labels);
301
+ const current = labels[label_idx];
302
+ copy_state(old_scratch, current);
303
+ copy_state(new_scratch, current);
304
+ // 70% try a candidate position, 30% small perturbation
305
+ if (next_random() < 0.7) {
306
+ const candidate = label_infos[label_idx].candidates[Math.floor(next_random() * label_infos[label_idx].candidates.length)];
307
+ new_scratch.x = candidate.x;
308
+ new_scratch.y = candidate.y;
309
+ }
310
+ else {
311
+ const max_shift = 30 * temperature + 5;
312
+ new_scratch.x += (next_random() - 0.5) * 2 * max_shift;
313
+ new_scratch.y += (next_random() - 0.5) * 2 * max_shift;
314
+ }
315
+ const delta = compute_delta_energy(labels, anchors, label_idx, old_scratch, new_scratch, weights, plot_bounds);
316
+ if (delta < 0 || next_random() < Math.exp(-delta / (temperature * 10 + 0.1))) {
317
+ current.x = new_scratch.x;
318
+ current.y = new_scratch.y;
319
+ }
320
+ }
321
+ // Return label center positions (matching existing API)
322
+ return Object.fromEntries(labels.map((label, idx) => [
323
+ label_infos[idx].id,
324
+ { x: label.x + label.w / 2, y: label.y + label.h / 2 },
325
+ ]));
326
+ }
@@ -0,0 +1,15 @@
1
+ import type { DataSeries } from '../types';
2
+ export type StrRecord = Record<string, unknown>;
3
+ type SeriesSource = [string, string, string, unknown, unknown];
4
+ export type SeriesVisibilitySnapshot = {
5
+ visibility: boolean[];
6
+ source: SeriesSource[];
7
+ };
8
+ export declare function have_compatible_units<Metadata extends StrRecord = StrRecord>(series1: DataSeries<Metadata>, series2: DataSeries<Metadata>): boolean;
9
+ export declare function toggle_series_visibility<Metadata extends StrRecord = StrRecord>(series: DataSeries<Metadata>[], series_idx: number): DataSeries<Metadata>[];
10
+ export declare function toggle_group_visibility<Metadata extends StrRecord = StrRecord>(series: DataSeries<Metadata>[], series_indices: number[]): DataSeries<Metadata>[];
11
+ export declare function handle_legend_double_click<Metadata extends StrRecord = StrRecord>(series: DataSeries<Metadata>[], idx: number, prev_snapshot: SeriesVisibilitySnapshot | null): {
12
+ series: DataSeries<Metadata>[];
13
+ prev_visibility: SeriesVisibilitySnapshot | null;
14
+ };
15
+ export {};
@@ -0,0 +1,85 @@
1
+ const series_source = (series, length = series.length) => series
2
+ .slice(0, length)
3
+ .map((srs) => [srs.label ?? ``, srs.unit ?? ``, srs.y_axis ?? ``, srs.x, srs.y]);
4
+ const same_series_source = (series, snapshot_series) => series.length === snapshot_series.length &&
5
+ series.every((source, idx) => source.every((part, part_idx) => Object.is(part, snapshot_series[idx][part_idx])));
6
+ export function have_compatible_units(series1, series2) {
7
+ if (!series1.unit || !series2.unit)
8
+ return true;
9
+ return series1.unit === series2.unit;
10
+ }
11
+ export function toggle_series_visibility(series, series_idx) {
12
+ if (series_idx < 0 || series_idx >= series.length || !series[series_idx])
13
+ return series;
14
+ const toggled = series[series_idx];
15
+ const new_visibility = !(toggled.visible ?? true);
16
+ const target_axis = toggled.y_axis ?? `y1`;
17
+ return series.map((srs, idx) => {
18
+ if ((toggled.label && srs.label === toggled.label) ||
19
+ (idx === series_idx && !toggled.label)) {
20
+ return { ...srs, visible: new_visibility };
21
+ }
22
+ if (new_visibility && (srs.y_axis ?? `y1`) === target_axis) {
23
+ if (!have_compatible_units(toggled, srs) && (srs.visible ?? true)) {
24
+ return { ...srs, visible: false };
25
+ }
26
+ }
27
+ return srs;
28
+ });
29
+ }
30
+ export function toggle_group_visibility(series, series_indices) {
31
+ // Filter to valid indices upfront
32
+ const valid_indices = series_indices.filter((idx) => idx >= 0 && idx < series.length);
33
+ if (valid_indices.length === 0)
34
+ return series;
35
+ const idx_set = new Set(valid_indices);
36
+ // Check if all series in the group are currently visible
37
+ const all_visible = valid_indices.every((idx) => series[idx].visible ?? true);
38
+ // Toggle: if all visible, hide all; otherwise show all
39
+ const new_visibility = !all_visible;
40
+ return series.map((srs, idx) => idx_set.has(idx) ? { ...srs, visible: new_visibility } : srs);
41
+ }
42
+ export function handle_legend_double_click(series, idx, prev_snapshot) {
43
+ if (idx < 0 || idx >= series.length) {
44
+ return { series, prev_visibility: prev_snapshot };
45
+ }
46
+ const { label } = series[idx];
47
+ const current = series.map((srs) => srs.visible ?? true);
48
+ const current_source = prev_snapshot
49
+ ? series_source(series, prev_snapshot.visibility.length)
50
+ : [];
51
+ const prev_visibility = prev_snapshot && same_series_source(current_source, prev_snapshot.source)
52
+ ? prev_snapshot.visibility
53
+ : null;
54
+ // Only check original series (ignore new ones added after isolation)
55
+ const check_series = prev_visibility ? series.slice(0, prev_visibility.length) : series;
56
+ const is_isolated = check_series.every((srs, srs_idx) => {
57
+ const in_group = label ? srs.label === label : srs_idx === idx;
58
+ return in_group ? (srs.visible ?? true) : !(srs.visible ?? true);
59
+ });
60
+ // Restore from isolation
61
+ if (is_isolated && prev_visibility) {
62
+ return {
63
+ series: series.map((srs, srs_idx) => srs_idx < prev_visibility.length && current[srs_idx] !== prev_visibility[srs_idx]
64
+ ? { ...srs, visible: prev_visibility[srs_idx] }
65
+ : srs),
66
+ prev_visibility: null,
67
+ };
68
+ }
69
+ // Isolate series
70
+ const new_prev = prev_visibility
71
+ ? prev_snapshot
72
+ : current.filter(Boolean).length > 1
73
+ ? {
74
+ visibility: [...current],
75
+ source: series_source(series),
76
+ }
77
+ : null;
78
+ return {
79
+ series: series.map((srs, srs_idx) => {
80
+ const in_group = label ? srs.label === label : srs_idx === idx;
81
+ return (srs.visible ?? true) !== in_group ? { ...srs, visible: in_group } : srs;
82
+ }),
83
+ prev_visibility: new_prev,
84
+ };
85
+ }
@@ -0,0 +1 @@
1
+ export declare function calc_auto_range(values: number[]): [number, number];
@@ -0,0 +1,14 @@
1
+ export function calc_auto_range(values) {
2
+ const finite_values = values.filter(Number.isFinite);
3
+ if (finite_values.length === 0)
4
+ return [0, 1];
5
+ let [min_value, max_value] = [finite_values[0], finite_values[0]];
6
+ for (const value of finite_values) {
7
+ if (value < min_value)
8
+ min_value = value;
9
+ else if (value > max_value)
10
+ max_value = value;
11
+ }
12
+ const padding = (max_value - min_value) * 0.05 || 0.5;
13
+ return [min_value - padding, max_value + padding];
14
+ }