matterviz 0.3.6 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (926) hide show
  1. package/dist/EmptyState.svelte.d.ts +9 -0
  2. package/dist/FilePicker.svelte +360 -0
  3. package/dist/FilePicker.svelte.d.ts +17 -0
  4. package/dist/Icon.svelte +44 -0
  5. package/dist/Icon.svelte.d.ts +13 -0
  6. package/dist/MillerIndexInput.svelte +66 -0
  7. package/dist/MillerIndexInput.svelte.d.ts +7 -0
  8. package/dist/api/mp.d.ts +6 -0
  9. package/dist/api/mp.js +22 -0
  10. package/dist/api/optimade.d.ts +45 -0
  11. package/dist/api/optimade.js +141 -0
  12. package/dist/app.css +244 -0
  13. package/dist/brillouin/BrillouinZone.svelte +554 -0
  14. package/dist/brillouin/BrillouinZone.svelte.d.ts +84 -0
  15. package/dist/brillouin/BrillouinZoneControls.svelte +144 -0
  16. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +17 -0
  17. package/dist/brillouin/BrillouinZoneExportPane.svelte +146 -0
  18. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +15 -0
  19. package/dist/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  20. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +13 -0
  21. package/dist/brillouin/BrillouinZoneScene.svelte +522 -0
  22. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +49 -0
  23. package/dist/brillouin/BrillouinZoneTooltip.svelte +83 -0
  24. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +8 -0
  25. package/dist/brillouin/compute.d.ts +17 -0
  26. package/dist/brillouin/compute.js +422 -0
  27. package/dist/brillouin/index.d.ts +8 -0
  28. package/dist/brillouin/index.js +7 -0
  29. package/dist/brillouin/types.d.ts +43 -0
  30. package/dist/brillouin/types.js +1 -0
  31. package/dist/chempot-diagram/ChemPotDiagram.svelte +328 -0
  32. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
  33. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +843 -0
  34. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
  35. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3191 -0
  36. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
  37. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
  38. package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
  39. package/dist/chempot-diagram/async-compute.svelte.js +80 -0
  40. package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
  41. package/dist/chempot-diagram/chempot-worker.js +12 -0
  42. package/dist/chempot-diagram/color.d.ts +10 -0
  43. package/dist/chempot-diagram/color.js +32 -0
  44. package/dist/chempot-diagram/compute.d.ts +48 -0
  45. package/dist/chempot-diagram/compute.js +804 -0
  46. package/dist/chempot-diagram/index.d.ts +6 -0
  47. package/dist/chempot-diagram/index.js +6 -0
  48. package/dist/chempot-diagram/pointer.d.ts +16 -0
  49. package/dist/chempot-diagram/pointer.js +40 -0
  50. package/dist/chempot-diagram/temperature.d.ts +15 -0
  51. package/dist/chempot-diagram/temperature.js +34 -0
  52. package/dist/chempot-diagram/types.d.ts +81 -0
  53. package/dist/chempot-diagram/types.js +28 -0
  54. package/dist/colors/index.d.ts +47 -0
  55. package/dist/colors/index.js +204 -0
  56. package/dist/composition/BarChart.svelte +297 -0
  57. package/dist/composition/BarChart.svelte.d.ts +39 -0
  58. package/dist/composition/BubbleChart.svelte +218 -0
  59. package/dist/composition/BubbleChart.svelte.d.ts +28 -0
  60. package/dist/composition/Composition.svelte +165 -0
  61. package/dist/composition/Composition.svelte.d.ts +15 -0
  62. package/dist/composition/Formula.svelte +268 -0
  63. package/dist/composition/Formula.svelte.d.ts +19 -0
  64. package/dist/composition/FormulaFilter.svelte +1263 -0
  65. package/dist/composition/FormulaFilter.svelte.d.ts +51 -0
  66. package/dist/composition/PieChart.svelte +324 -0
  67. package/dist/composition/PieChart.svelte.d.ts +37 -0
  68. package/dist/composition/chem-sys.d.ts +8 -0
  69. package/dist/composition/chem-sys.js +85 -0
  70. package/dist/composition/format.d.ts +15 -0
  71. package/dist/composition/format.js +111 -0
  72. package/dist/composition/index.d.ts +21 -0
  73. package/dist/composition/index.js +15 -0
  74. package/dist/composition/parse.d.ts +56 -0
  75. package/dist/composition/parse.js +486 -0
  76. package/dist/constants.d.ts +29 -0
  77. package/dist/constants.js +99 -0
  78. package/dist/controls.d.ts +14 -0
  79. package/dist/controls.js +30 -0
  80. package/dist/convex-hull/ConvexHull.svelte +157 -0
  81. package/dist/convex-hull/ConvexHull.svelte.d.ts +13 -0
  82. package/dist/convex-hull/ConvexHull2D.svelte +827 -0
  83. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +11 -0
  84. package/dist/convex-hull/ConvexHull3D.svelte +1801 -0
  85. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +8 -0
  86. package/dist/convex-hull/ConvexHull4D.svelte +1394 -0
  87. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +8 -0
  88. package/dist/convex-hull/ConvexHullControls.svelte +535 -0
  89. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +48 -0
  90. package/dist/convex-hull/ConvexHullInfoPane.svelte +125 -0
  91. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +20 -0
  92. package/dist/convex-hull/ConvexHullStats.svelte +929 -0
  93. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +17 -0
  94. package/dist/convex-hull/ConvexHullTooltip.svelte +131 -0
  95. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +33 -0
  96. package/dist/convex-hull/GasPressureControls.svelte +247 -0
  97. package/dist/convex-hull/GasPressureControls.svelte.d.ts +11 -0
  98. package/dist/convex-hull/StructurePopup.svelte +151 -0
  99. package/dist/convex-hull/StructurePopup.svelte.d.ts +18 -0
  100. package/dist/convex-hull/TemperatureSlider.svelte +140 -0
  101. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +8 -0
  102. package/dist/convex-hull/barycentric-coords.d.ts +18 -0
  103. package/dist/convex-hull/barycentric-coords.js +182 -0
  104. package/dist/convex-hull/demo-temperature.d.ts +6 -0
  105. package/dist/convex-hull/demo-temperature.js +38 -0
  106. package/dist/convex-hull/gas-thermodynamics.d.ts +16 -0
  107. package/dist/convex-hull/gas-thermodynamics.js +306 -0
  108. package/dist/convex-hull/helpers.d.ts +117 -0
  109. package/dist/convex-hull/helpers.js +718 -0
  110. package/dist/convex-hull/index.d.ts +119 -0
  111. package/dist/convex-hull/index.js +58 -0
  112. package/dist/convex-hull/thermodynamics.d.ts +67 -0
  113. package/dist/convex-hull/thermodynamics.js +1757 -0
  114. package/dist/convex-hull/types.d.ts +162 -0
  115. package/dist/convex-hull/types.js +36 -0
  116. package/dist/coordination/CoordinationBarPlot.svelte +311 -0
  117. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +30 -0
  118. package/dist/coordination/calc-coordination.d.ts +15 -0
  119. package/dist/coordination/calc-coordination.js +63 -0
  120. package/dist/coordination/index.d.ts +8 -0
  121. package/dist/coordination/index.js +7 -0
  122. package/dist/effects.svelte.d.ts +12 -0
  123. package/dist/effects.svelte.js +37 -0
  124. package/dist/element/BohrAtom.svelte.d.ts +20 -0
  125. package/dist/element/ElementHeading.svelte +26 -0
  126. package/dist/element/ElementHeading.svelte.d.ts +8 -0
  127. package/dist/element/ElementPhoto.svelte +57 -0
  128. package/dist/element/ElementPhoto.svelte.d.ts +9 -0
  129. package/dist/element/ElementStats.svelte +80 -0
  130. package/dist/element/ElementStats.svelte.d.ts +8 -0
  131. package/dist/element/ElementTile.svelte +484 -0
  132. package/dist/element/ElementTile.svelte.d.ts +29 -0
  133. package/dist/element/Nucleus.svelte.d.ts +17 -0
  134. package/dist/element/data.d.ts +2 -0
  135. package/dist/element/data.js +2 -0
  136. package/dist/element/index.d.ts +8 -0
  137. package/dist/element/index.js +7 -0
  138. package/dist/element/types.d.ts +57 -0
  139. package/dist/element/types.js +1 -0
  140. package/dist/feedback/ClickFeedback.svelte +58 -0
  141. package/dist/feedback/ClickFeedback.svelte.d.ts +12 -0
  142. package/dist/feedback/DragOverlay.svelte +42 -0
  143. package/dist/feedback/DragOverlay.svelte.d.ts +7 -0
  144. package/dist/feedback/Spinner.svelte.d.ts +7 -0
  145. package/dist/feedback/StatusMessage.svelte.d.ts +9 -0
  146. package/dist/feedback/index.d.ts +4 -0
  147. package/dist/feedback/index.js +4 -0
  148. package/dist/fermi-surface/FermiSlice.svelte +197 -0
  149. package/dist/fermi-surface/FermiSlice.svelte.d.ts +24 -0
  150. package/dist/fermi-surface/FermiSurface.svelte +606 -0
  151. package/dist/fermi-surface/FermiSurface.svelte.d.ts +83 -0
  152. package/dist/fermi-surface/FermiSurfaceControls.svelte +448 -0
  153. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +35 -0
  154. package/dist/fermi-surface/FermiSurfaceScene.svelte +797 -0
  155. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +50 -0
  156. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +85 -0
  157. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +8 -0
  158. package/dist/fermi-surface/compute.d.ts +5 -0
  159. package/dist/fermi-surface/compute.js +538 -0
  160. package/dist/fermi-surface/constants.d.ts +9 -0
  161. package/dist/fermi-surface/constants.js +27 -0
  162. package/dist/fermi-surface/export.d.ts +5 -0
  163. package/dist/fermi-surface/export.js +51 -0
  164. package/dist/fermi-surface/index.d.ts +12 -0
  165. package/dist/fermi-surface/index.js +13 -0
  166. package/dist/fermi-surface/marching-cubes.d.ts +2 -0
  167. package/dist/fermi-surface/marching-cubes.js +2 -0
  168. package/dist/fermi-surface/parse.d.ts +2 -0
  169. package/dist/fermi-surface/parse.js +494 -0
  170. package/dist/fermi-surface/symmetry.d.ts +3 -0
  171. package/dist/fermi-surface/symmetry.js +46 -0
  172. package/dist/fermi-surface/types.d.ts +111 -0
  173. package/dist/fermi-surface/types.js +4 -0
  174. package/dist/heatmap-matrix/HeatmapMatrix.svelte +1547 -0
  175. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
  176. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  177. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
  178. package/dist/heatmap-matrix/index.d.ts +53 -0
  179. package/dist/heatmap-matrix/index.js +100 -0
  180. package/dist/heatmap-matrix/shared.d.ts +2 -0
  181. package/dist/heatmap-matrix/shared.js +4 -0
  182. package/dist/icons.d.ts +569 -0
  183. package/dist/icons.js +648 -0
  184. package/dist/index.d.ts +39 -0
  185. package/dist/index.js +39 -0
  186. package/dist/io/decompress.d.ts +11 -0
  187. package/dist/io/decompress.js +76 -0
  188. package/dist/io/export.d.ts +16 -0
  189. package/dist/io/export.js +338 -0
  190. package/dist/io/fetch.d.ts +5 -0
  191. package/dist/io/fetch.js +43 -0
  192. package/dist/io/file-drop.d.ts +7 -0
  193. package/dist/io/file-drop.js +42 -0
  194. package/dist/io/index.d.ts +7 -0
  195. package/dist/io/index.js +6 -0
  196. package/dist/io/is-binary.d.ts +1 -0
  197. package/dist/io/is-binary.js +20 -0
  198. package/dist/io/types.d.ts +8 -0
  199. package/dist/io/types.js +1 -0
  200. package/dist/io/url-drop.d.ts +2 -0
  201. package/dist/io/url-drop.js +154 -0
  202. package/dist/isosurface/Isosurface.svelte +285 -0
  203. package/dist/isosurface/Isosurface.svelte.d.ts +8 -0
  204. package/dist/isosurface/IsosurfaceControls.svelte +277 -0
  205. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +9 -0
  206. package/dist/isosurface/index.d.ts +5 -0
  207. package/dist/isosurface/index.js +6 -0
  208. package/dist/isosurface/parse.d.ts +6 -0
  209. package/dist/isosurface/parse.js +552 -0
  210. package/dist/isosurface/slice.d.ts +11 -0
  211. package/dist/isosurface/slice.js +141 -0
  212. package/dist/isosurface/types.d.ts +56 -0
  213. package/dist/isosurface/types.js +227 -0
  214. package/dist/keyboard.d.ts +3 -0
  215. package/dist/keyboard.js +23 -0
  216. package/dist/labels.d.ts +53 -0
  217. package/dist/labels.js +278 -0
  218. package/dist/layout/FullscreenToggle.svelte +50 -0
  219. package/dist/layout/FullscreenToggle.svelte.d.ts +7 -0
  220. package/dist/layout/InfoCard.svelte +120 -0
  221. package/dist/layout/InfoCard.svelte.d.ts +21 -0
  222. package/dist/layout/InfoTag.svelte +185 -0
  223. package/dist/layout/InfoTag.svelte.d.ts +19 -0
  224. package/dist/layout/PropertyFilter.svelte +247 -0
  225. package/dist/layout/PropertyFilter.svelte.d.ts +24 -0
  226. package/dist/layout/SettingsSection.svelte +148 -0
  227. package/dist/layout/SettingsSection.svelte.d.ts +17 -0
  228. package/dist/layout/SubpageGrid.svelte +82 -0
  229. package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
  230. package/dist/layout/fullscreen.d.ts +9 -0
  231. package/dist/layout/fullscreen.js +53 -0
  232. package/dist/layout/index.d.ts +10 -0
  233. package/dist/layout/index.js +8 -0
  234. package/dist/layout/json-tree/JsonNode.svelte +548 -0
  235. package/dist/layout/json-tree/JsonNode.svelte.d.ts +11 -0
  236. package/dist/layout/json-tree/JsonTree.svelte +1230 -0
  237. package/dist/layout/json-tree/JsonTree.svelte.d.ts +6 -0
  238. package/dist/layout/json-tree/JsonValue.svelte.d.ts +9 -0
  239. package/dist/layout/json-tree/index.d.ts +3 -0
  240. package/dist/layout/json-tree/index.js +3 -0
  241. package/dist/layout/json-tree/types.d.ts +74 -0
  242. package/dist/layout/json-tree/types.js +2 -0
  243. package/dist/layout/json-tree/utils.d.ts +29 -0
  244. package/dist/layout/json-tree/utils.js +642 -0
  245. package/dist/marching-cubes.d.ts +14 -0
  246. package/dist/marching-cubes.js +535 -0
  247. package/dist/math.d.ts +105 -0
  248. package/dist/math.js +920 -0
  249. package/dist/overlays/ContextMenu.svelte +162 -0
  250. package/dist/overlays/ContextMenu.svelte.d.ts +25 -0
  251. package/dist/overlays/CopyButton.svelte +45 -0
  252. package/dist/overlays/CopyButton.svelte.d.ts +8 -0
  253. package/dist/overlays/DragControlTab.svelte +98 -0
  254. package/dist/overlays/DragControlTab.svelte.d.ts +8 -0
  255. package/dist/overlays/DraggablePane.svelte +487 -0
  256. package/dist/overlays/DraggablePane.svelte.d.ts +36 -0
  257. package/dist/overlays/InfoPaneCards.svelte +149 -0
  258. package/dist/overlays/InfoPaneCards.svelte.d.ts +22 -0
  259. package/dist/overlays/index.d.ts +3 -0
  260. package/dist/overlays/index.js +3 -0
  261. package/dist/periodic-table/PeriodicTable.svelte +480 -0
  262. package/dist/periodic-table/PeriodicTable.svelte.d.ts +55 -0
  263. package/dist/periodic-table/PeriodicTableControls.svelte +557 -0
  264. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +24 -0
  265. package/dist/periodic-table/PropertySelect.svelte +38 -0
  266. package/dist/periodic-table/PropertySelect.svelte.d.ts +13 -0
  267. package/dist/periodic-table/TableInset.svelte.d.ts +9 -0
  268. package/dist/periodic-table/index.d.ts +10 -0
  269. package/dist/periodic-table/index.js +4 -0
  270. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1092 -0
  271. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +44 -0
  272. package/dist/phase-diagram/PhaseDiagramControls.svelte +444 -0
  273. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +30 -0
  274. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +127 -0
  275. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
  276. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  277. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +19 -0
  278. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  279. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +16 -0
  280. package/dist/phase-diagram/TdbInfoPanel.svelte +203 -0
  281. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +12 -0
  282. package/dist/phase-diagram/build-diagram.d.ts +11 -0
  283. package/dist/phase-diagram/build-diagram.js +160 -0
  284. package/dist/phase-diagram/colors.d.ts +35 -0
  285. package/dist/phase-diagram/colors.js +51 -0
  286. package/dist/phase-diagram/diagram-input.d.ts +29 -0
  287. package/dist/phase-diagram/diagram-input.js +3 -0
  288. package/dist/phase-diagram/index.d.ts +13 -0
  289. package/dist/phase-diagram/index.js +11 -0
  290. package/dist/phase-diagram/parse.d.ts +55 -0
  291. package/dist/phase-diagram/parse.js +273 -0
  292. package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
  293. package/dist/phase-diagram/svg-to-diagram.js +867 -0
  294. package/dist/phase-diagram/types.d.ts +93 -0
  295. package/dist/phase-diagram/types.js +1 -0
  296. package/dist/phase-diagram/utils.d.ts +118 -0
  297. package/dist/phase-diagram/utils.js +600 -0
  298. package/dist/plot/bar/BarPlot.svelte +1755 -0
  299. package/dist/plot/bar/BarPlot.svelte.d.ts +84 -0
  300. package/dist/plot/bar/BarPlotControls.svelte +67 -0
  301. package/dist/plot/bar/BarPlotControls.svelte.d.ts +18 -0
  302. package/dist/plot/bar/SpacegroupBarPlot.svelte +293 -0
  303. package/dist/plot/bar/SpacegroupBarPlot.svelte.d.ts +9 -0
  304. package/dist/plot/bar/data.d.ts +40 -0
  305. package/dist/plot/bar/data.js +154 -0
  306. package/dist/plot/bar/geometry.d.ts +39 -0
  307. package/dist/plot/bar/geometry.js +60 -0
  308. package/dist/plot/bar/index.d.ts +3 -0
  309. package/dist/plot/bar/index.js +3 -0
  310. package/dist/plot/box/BoxPlot.svelte +1462 -0
  311. package/dist/plot/box/BoxPlot.svelte.d.ts +94 -0
  312. package/dist/plot/box/BoxPlotControls.svelte +109 -0
  313. package/dist/plot/box/BoxPlotControls.svelte.d.ts +19 -0
  314. package/dist/plot/box/Violin.svelte +14 -0
  315. package/dist/plot/box/Violin.svelte.d.ts +70 -0
  316. package/dist/plot/box/box-plot.d.ts +55 -0
  317. package/dist/plot/box/box-plot.js +126 -0
  318. package/dist/plot/box/index.d.ts +5 -0
  319. package/dist/plot/box/index.js +5 -0
  320. package/dist/plot/box/kde.d.ts +16 -0
  321. package/dist/plot/box/kde.js +160 -0
  322. package/dist/plot/box/quantile.d.ts +3 -0
  323. package/dist/plot/box/quantile.js +53 -0
  324. package/dist/plot/core/auto-place.d.ts +43 -0
  325. package/dist/plot/core/auto-place.js +122 -0
  326. package/dist/plot/core/axis-utils.d.ts +46 -0
  327. package/dist/plot/core/axis-utils.js +110 -0
  328. package/dist/plot/core/components/AxisLabel.svelte +51 -0
  329. package/dist/plot/core/components/AxisLabel.svelte.d.ts +16 -0
  330. package/dist/plot/core/components/ColorBar.svelte +724 -0
  331. package/dist/plot/core/components/ColorBar.svelte.d.ts +31 -0
  332. package/dist/plot/core/components/ColorScaleSelect.svelte +55 -0
  333. package/dist/plot/core/components/ColorScaleSelect.svelte.d.ts +15 -0
  334. package/dist/plot/core/components/ControlPane.svelte +46 -0
  335. package/dist/plot/core/components/ControlPane.svelte.d.ts +13 -0
  336. package/dist/plot/core/components/FillArea.svelte +234 -0
  337. package/dist/plot/core/components/FillArea.svelte.d.ts +21 -0
  338. package/dist/plot/core/components/InteractiveAxisLabel.svelte +96 -0
  339. package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +14 -0
  340. package/dist/plot/core/components/Line.svelte +101 -0
  341. package/dist/plot/core/components/Line.svelte.d.ts +15 -0
  342. package/dist/plot/core/components/PlotAxis.svelte +171 -0
  343. package/dist/plot/core/components/PlotAxis.svelte.d.ts +25 -0
  344. package/dist/plot/core/components/PlotControls.svelte +525 -0
  345. package/dist/plot/core/components/PlotControls.svelte.d.ts +4 -0
  346. package/dist/plot/core/components/PlotLegend.svelte +580 -0
  347. package/dist/plot/core/components/PlotLegend.svelte.d.ts +30 -0
  348. package/dist/plot/core/components/PlotTooltip.svelte +83 -0
  349. package/dist/plot/core/components/PlotTooltip.svelte.d.ts +25 -0
  350. package/dist/plot/core/components/PortalSelect.svelte +257 -0
  351. package/dist/plot/core/components/PortalSelect.svelte.d.ts +16 -0
  352. package/dist/plot/core/components/ReferenceLine.svelte +204 -0
  353. package/dist/plot/core/components/ReferenceLine.svelte.d.ts +20 -0
  354. package/dist/plot/core/components/ReferenceLine3D.svelte +156 -0
  355. package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +14 -0
  356. package/dist/plot/core/components/ReferencePlane.svelte +175 -0
  357. package/dist/plot/core/components/ReferencePlane.svelte.d.ts +14 -0
  358. package/dist/plot/core/components/ZeroLines.svelte +97 -0
  359. package/dist/plot/core/components/ZeroLines.svelte.d.ts +33 -0
  360. package/dist/plot/core/components/ZoomRect.svelte +23 -0
  361. package/dist/plot/core/components/ZoomRect.svelte.d.ts +8 -0
  362. package/dist/plot/core/components/index.d.ts +17 -0
  363. package/dist/plot/core/components/index.js +17 -0
  364. package/dist/plot/core/data-cleaning.d.ts +107 -0
  365. package/dist/plot/core/data-cleaning.js +853 -0
  366. package/dist/plot/core/data-transform.d.ts +16 -0
  367. package/dist/plot/core/data-transform.js +45 -0
  368. package/dist/plot/core/fill-utils.d.ts +33 -0
  369. package/dist/plot/core/fill-utils.js +388 -0
  370. package/dist/plot/core/hover-lock.svelte.d.ts +14 -0
  371. package/dist/plot/core/hover-lock.svelte.js +45 -0
  372. package/dist/plot/core/index.d.ts +10 -0
  373. package/dist/plot/core/index.js +11 -0
  374. package/dist/plot/core/interactions.d.ts +35 -0
  375. package/dist/plot/core/interactions.js +195 -0
  376. package/dist/plot/core/layout.d.ts +79 -0
  377. package/dist/plot/core/layout.js +281 -0
  378. package/dist/plot/core/reference-line.d.ts +60 -0
  379. package/dist/plot/core/reference-line.js +301 -0
  380. package/dist/plot/core/scales.d.ts +48 -0
  381. package/dist/plot/core/scales.js +480 -0
  382. package/dist/plot/core/svg.d.ts +2 -0
  383. package/dist/plot/core/svg.js +41 -0
  384. package/dist/plot/core/types.d.ts +771 -0
  385. package/dist/plot/core/types.js +99 -0
  386. package/dist/plot/core/utils/label-placement.d.ts +68 -0
  387. package/dist/plot/core/utils/label-placement.js +326 -0
  388. package/dist/plot/core/utils/series-visibility.d.ts +26 -0
  389. package/dist/plot/core/utils/series-visibility.js +112 -0
  390. package/dist/plot/core/utils.d.ts +11 -0
  391. package/dist/plot/core/utils.js +27 -0
  392. package/dist/plot/histogram/Histogram.svelte +1418 -0
  393. package/dist/plot/histogram/Histogram.svelte.d.ts +50 -0
  394. package/dist/plot/histogram/HistogramControls.svelte +212 -0
  395. package/dist/plot/histogram/HistogramControls.svelte.d.ts +22 -0
  396. package/dist/plot/histogram/index.d.ts +2 -0
  397. package/dist/plot/histogram/index.js +2 -0
  398. package/dist/plot/index.d.ts +8 -0
  399. package/dist/plot/index.js +10 -0
  400. package/dist/plot/sankey/Sankey.svelte +700 -0
  401. package/dist/plot/sankey/Sankey.svelte.d.ts +74 -0
  402. package/dist/plot/sankey/SankeyControls.svelte +98 -0
  403. package/dist/plot/sankey/SankeyControls.svelte.d.ts +19 -0
  404. package/dist/plot/sankey/index.d.ts +4 -0
  405. package/dist/plot/sankey/index.js +3 -0
  406. package/dist/plot/sankey/sankey-types.d.ts +42 -0
  407. package/dist/plot/sankey/sankey-types.js +4 -0
  408. package/dist/plot/sankey/sankey.d.ts +52 -0
  409. package/dist/plot/sankey/sankey.js +187 -0
  410. package/dist/plot/scatter/BinnedScatterPlot.svelte +1116 -0
  411. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +66 -0
  412. package/dist/plot/scatter/ElementScatter.svelte +63 -0
  413. package/dist/plot/scatter/ElementScatter.svelte.d.ts +14 -0
  414. package/dist/plot/scatter/ScatterPlot.svelte +2357 -0
  415. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +96 -0
  416. package/dist/plot/scatter/ScatterPlotControls.svelte +307 -0
  417. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +17 -0
  418. package/dist/plot/scatter/ScatterPoint.svelte +182 -0
  419. package/dist/plot/scatter/ScatterPoint.svelte.d.ts +22 -0
  420. package/dist/plot/scatter/adaptive-density.d.ts +79 -0
  421. package/dist/plot/scatter/adaptive-density.js +217 -0
  422. package/dist/plot/scatter/binned-scatter-types.d.ts +59 -0
  423. package/dist/plot/scatter/binned-scatter-types.js +1 -0
  424. package/dist/plot/scatter/index.d.ts +7 -0
  425. package/dist/plot/scatter/index.js +5 -0
  426. package/dist/plot/scatter/scatter-data.d.ts +19 -0
  427. package/dist/plot/scatter/scatter-data.js +212 -0
  428. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +531 -0
  429. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +95 -0
  430. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +438 -0
  431. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +20 -0
  432. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +912 -0
  433. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +74 -0
  434. package/dist/plot/scatter-3d/Surface3D.svelte +197 -0
  435. package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +13 -0
  436. package/dist/plot/scatter-3d/index.d.ts +4 -0
  437. package/dist/plot/scatter-3d/index.js +4 -0
  438. package/dist/plot/sunburst/Sunburst.svelte +1045 -0
  439. package/dist/plot/sunburst/Sunburst.svelte.d.ts +96 -0
  440. package/dist/plot/sunburst/SunburstControls.svelte +200 -0
  441. package/dist/plot/sunburst/SunburstControls.svelte.d.ts +26 -0
  442. package/dist/plot/sunburst/index.d.ts +4 -0
  443. package/dist/plot/sunburst/index.js +4 -0
  444. package/dist/plot/sunburst/render.d.ts +34 -0
  445. package/dist/plot/sunburst/render.js +122 -0
  446. package/dist/plot/sunburst/sunburst.d.ts +62 -0
  447. package/dist/plot/sunburst/sunburst.js +266 -0
  448. package/dist/rdf/RdfPlot.svelte +248 -0
  449. package/dist/rdf/RdfPlot.svelte.d.ts +27 -0
  450. package/dist/rdf/calc-rdf.d.ts +4 -0
  451. package/dist/rdf/calc-rdf.js +98 -0
  452. package/dist/rdf/index.d.ts +23 -0
  453. package/dist/rdf/index.js +2 -0
  454. package/dist/sanitize.d.ts +6 -0
  455. package/dist/sanitize.js +116 -0
  456. package/dist/settings.d.ts +319 -0
  457. package/dist/settings.js +1394 -0
  458. package/dist/spectral/Bands.svelte +1050 -0
  459. package/dist/spectral/Bands.svelte.d.ts +39 -0
  460. package/dist/spectral/BandsAndDos.svelte +134 -0
  461. package/dist/spectral/BandsAndDos.svelte.d.ts +18 -0
  462. package/dist/spectral/BrillouinBandsDos.svelte +264 -0
  463. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +20 -0
  464. package/dist/spectral/Dos.svelte +688 -0
  465. package/dist/spectral/Dos.svelte.d.ts +29 -0
  466. package/dist/spectral/helpers.d.ts +121 -0
  467. package/dist/spectral/helpers.js +1098 -0
  468. package/dist/spectral/index.d.ts +6 -0
  469. package/dist/spectral/index.js +6 -0
  470. package/dist/spectral/types.d.ts +84 -0
  471. package/dist/spectral/types.js +2 -0
  472. package/dist/state.svelte.d.ts +25 -0
  473. package/dist/state.svelte.js +45 -0
  474. package/dist/structure/Arrow.svelte +72 -0
  475. package/dist/structure/Arrow.svelte.d.ts +15 -0
  476. package/dist/structure/AtomLegend.svelte +814 -0
  477. package/dist/structure/AtomLegend.svelte.d.ts +35 -0
  478. package/dist/structure/Bond.svelte +140 -0
  479. package/dist/structure/Bond.svelte.d.ts +9 -0
  480. package/dist/structure/CanvasTooltip.svelte +33 -0
  481. package/dist/structure/CanvasTooltip.svelte.d.ts +12 -0
  482. package/dist/structure/CellSelect.svelte +348 -0
  483. package/dist/structure/CellSelect.svelte.d.ts +13 -0
  484. package/dist/structure/Cylinder.svelte +49 -0
  485. package/dist/structure/Cylinder.svelte.d.ts +13 -0
  486. package/dist/structure/Lattice.svelte +196 -0
  487. package/dist/structure/Lattice.svelte.d.ts +17 -0
  488. package/dist/structure/Structure.svelte +2254 -0
  489. package/dist/structure/Structure.svelte.d.ts +89 -0
  490. package/dist/structure/StructureControls.svelte +1273 -0
  491. package/dist/structure/StructureControls.svelte.d.ts +31 -0
  492. package/dist/structure/StructureExportPane.svelte +252 -0
  493. package/dist/structure/StructureExportPane.svelte.d.ts +17 -0
  494. package/dist/structure/StructureInfoPane.svelte +736 -0
  495. package/dist/structure/StructureInfoPane.svelte.d.ts +19 -0
  496. package/dist/structure/StructureScene.svelte +2256 -0
  497. package/dist/structure/StructureScene.svelte.d.ts +111 -0
  498. package/dist/structure/atom-properties.d.ts +37 -0
  499. package/dist/structure/atom-properties.js +200 -0
  500. package/dist/structure/bond-order-perception.d.ts +13 -0
  501. package/dist/structure/bond-order-perception.js +384 -0
  502. package/dist/structure/bonding.d.ts +69 -0
  503. package/dist/structure/bonding.js +724 -0
  504. package/dist/structure/export.d.ts +20 -0
  505. package/dist/structure/export.js +731 -0
  506. package/dist/structure/index.d.ts +124 -0
  507. package/dist/structure/index.js +167 -0
  508. package/dist/structure/label-placement.d.ts +14 -0
  509. package/dist/structure/label-placement.js +72 -0
  510. package/dist/structure/measure.d.ts +7 -0
  511. package/dist/structure/measure.js +30 -0
  512. package/dist/structure/parse.d.ts +66 -0
  513. package/dist/structure/parse.js +1410 -0
  514. package/dist/structure/partial-occupancy.d.ts +25 -0
  515. package/dist/structure/partial-occupancy.js +99 -0
  516. package/dist/structure/pbc.d.ts +9 -0
  517. package/dist/structure/pbc.js +127 -0
  518. package/dist/structure/supercell.d.ts +8 -0
  519. package/dist/structure/supercell.js +170 -0
  520. package/dist/structure/validation.d.ts +2 -0
  521. package/dist/structure/validation.js +10 -0
  522. package/dist/symmetry/SymmetryStats.svelte +226 -0
  523. package/dist/symmetry/SymmetryStats.svelte.d.ts +21 -0
  524. package/dist/symmetry/WyckoffTable.svelte +120 -0
  525. package/dist/symmetry/WyckoffTable.svelte.d.ts +11 -0
  526. package/dist/symmetry/cell-transform.d.ts +12 -0
  527. package/dist/symmetry/cell-transform.js +91 -0
  528. package/dist/symmetry/index.d.ts +43 -0
  529. package/dist/symmetry/index.js +226 -0
  530. package/dist/symmetry/spacegroups.d.ts +16 -0
  531. package/dist/symmetry/spacegroups.js +429 -0
  532. package/dist/table/HeatmapTable.svelte +1885 -0
  533. package/dist/table/HeatmapTable.svelte.d.ts +49 -0
  534. package/dist/table/ToggleMenu.svelte +385 -0
  535. package/dist/table/ToggleMenu.svelte.d.ts +11 -0
  536. package/dist/table/index.d.ts +72 -0
  537. package/dist/table/index.js +38 -0
  538. package/dist/theme/ThemeControl.svelte +53 -0
  539. package/dist/theme/ThemeControl.svelte.d.ts +9 -0
  540. package/dist/theme/index.d.ts +29 -0
  541. package/dist/theme/index.js +79 -0
  542. package/dist/time.d.ts +4 -0
  543. package/dist/time.js +70 -0
  544. package/dist/tooltip/KCoords.svelte +45 -0
  545. package/dist/tooltip/KCoords.svelte.d.ts +8 -0
  546. package/dist/tooltip/TooltipContent.svelte +58 -0
  547. package/dist/tooltip/TooltipContent.svelte.d.ts +31 -0
  548. package/dist/tooltip/index.d.ts +3 -0
  549. package/dist/tooltip/index.js +2 -0
  550. package/dist/tooltip/types.d.ts +8 -0
  551. package/dist/tooltip/types.js +1 -0
  552. package/dist/trajectory/Trajectory.svelte +1571 -0
  553. package/dist/trajectory/Trajectory.svelte.d.ts +78 -0
  554. package/dist/trajectory/TrajectoryError.svelte +128 -0
  555. package/dist/trajectory/TrajectoryError.svelte.d.ts +13 -0
  556. package/dist/trajectory/TrajectoryExportPane.svelte +358 -0
  557. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +17 -0
  558. package/dist/trajectory/TrajectoryInfoPane.svelte +314 -0
  559. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +17 -0
  560. package/dist/trajectory/constants.d.ts +6 -0
  561. package/dist/trajectory/constants.js +7 -0
  562. package/dist/trajectory/extract.d.ts +5 -0
  563. package/dist/trajectory/extract.js +162 -0
  564. package/dist/trajectory/format-detect.d.ts +10 -0
  565. package/dist/trajectory/format-detect.js +90 -0
  566. package/dist/trajectory/frame-reader.d.ts +17 -0
  567. package/dist/trajectory/frame-reader.js +299 -0
  568. package/dist/trajectory/helpers.d.ts +15 -0
  569. package/dist/trajectory/helpers.js +164 -0
  570. package/dist/trajectory/index.d.ts +63 -0
  571. package/dist/trajectory/index.js +126 -0
  572. package/dist/trajectory/parse/ase.d.ts +2 -0
  573. package/dist/trajectory/parse/ase.js +73 -0
  574. package/dist/trajectory/parse/hdf5.d.ts +2 -0
  575. package/dist/trajectory/parse/hdf5.js +127 -0
  576. package/dist/trajectory/parse/index.d.ts +12 -0
  577. package/dist/trajectory/parse/index.js +306 -0
  578. package/dist/trajectory/parse/lammps.d.ts +5 -0
  579. package/dist/trajectory/parse/lammps.js +179 -0
  580. package/dist/trajectory/parse/vasp.d.ts +2 -0
  581. package/dist/trajectory/parse/vasp.js +87 -0
  582. package/dist/trajectory/parse/xyz.d.ts +26 -0
  583. package/dist/trajectory/parse/xyz.js +123 -0
  584. package/dist/trajectory/plotting.d.ts +28 -0
  585. package/dist/trajectory/plotting.js +423 -0
  586. package/dist/trajectory/types.d.ts +11 -0
  587. package/dist/trajectory/types.js +1 -0
  588. package/dist/utils.d.ts +7 -0
  589. package/dist/utils.js +47 -0
  590. package/dist/xrd/XrdPlot.svelte +616 -0
  591. package/dist/xrd/XrdPlot.svelte.d.ts +28 -0
  592. package/dist/xrd/broadening.d.ts +20 -0
  593. package/dist/xrd/broadening.js +97 -0
  594. package/dist/xrd/calc-xrd.d.ts +37 -0
  595. package/dist/xrd/calc-xrd.js +339 -0
  596. package/dist/xrd/index.d.ts +37 -0
  597. package/dist/xrd/index.js +4 -0
  598. package/dist/xrd/parse.d.ts +13 -0
  599. package/dist/xrd/parse.js +749 -0
  600. package/license +1 -1
  601. package/package.json +237 -1458
  602. package/readme.md +98 -171
  603. package/.vscode/launch.json +0 -13
  604. package/.vscodeignore +0 -7
  605. package/dist/assets/STLExporter-BpTH3YHE.js +0 -8
  606. package/dist/assets/browser-DdDecX_W.js +0 -1
  607. package/dist/assets/export-qgn-H9y6.js +0 -2
  608. package/dist/assets/main-DiKYzti2.css +0 -1
  609. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  610. package/dist/extension.js +0 -31293
  611. package/dist/src/lib/FilePicker.svelte +0 -360
  612. package/dist/src/lib/Icon.svelte +0 -41
  613. package/dist/src/lib/MillerIndexInput.svelte +0 -66
  614. package/dist/src/lib/api/mp.ts +0 -26
  615. package/dist/src/lib/api/optimade.ts +0 -204
  616. package/dist/src/lib/app.css +0 -247
  617. package/dist/src/lib/brillouin/BrillouinZone.svelte +0 -549
  618. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +0 -144
  619. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +0 -146
  620. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  621. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +0 -476
  622. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +0 -92
  623. package/dist/src/lib/brillouin/compute.ts +0 -529
  624. package/dist/src/lib/brillouin/index.ts +0 -8
  625. package/dist/src/lib/brillouin/types.ts +0 -51
  626. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +0 -327
  627. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +0 -846
  628. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +0 -3193
  629. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +0 -94
  630. package/dist/src/lib/chempot-diagram/chempot-worker.ts +0 -11
  631. package/dist/src/lib/chempot-diagram/color.ts +0 -42
  632. package/dist/src/lib/chempot-diagram/compute.ts +0 -1014
  633. package/dist/src/lib/chempot-diagram/index.ts +0 -6
  634. package/dist/src/lib/chempot-diagram/pointer.ts +0 -56
  635. package/dist/src/lib/chempot-diagram/temperature.ts +0 -77
  636. package/dist/src/lib/chempot-diagram/types.ts +0 -130
  637. package/dist/src/lib/colors/index.ts +0 -249
  638. package/dist/src/lib/composition/BarChart.svelte +0 -297
  639. package/dist/src/lib/composition/BubbleChart.svelte +0 -218
  640. package/dist/src/lib/composition/Composition.svelte +0 -165
  641. package/dist/src/lib/composition/Formula.svelte +0 -268
  642. package/dist/src/lib/composition/FormulaFilter.svelte +0 -1257
  643. package/dist/src/lib/composition/PieChart.svelte +0 -323
  644. package/dist/src/lib/composition/format.ts +0 -155
  645. package/dist/src/lib/composition/index.ts +0 -37
  646. package/dist/src/lib/composition/parse.ts +0 -605
  647. package/dist/src/lib/constants.ts +0 -134
  648. package/dist/src/lib/controls.ts +0 -42
  649. package/dist/src/lib/convex-hull/ConvexHull.svelte +0 -157
  650. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +0 -825
  651. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +0 -1801
  652. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +0 -1398
  653. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +0 -535
  654. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +0 -125
  655. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +0 -929
  656. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +0 -131
  657. package/dist/src/lib/convex-hull/GasPressureControls.svelte +0 -247
  658. package/dist/src/lib/convex-hull/StructurePopup.svelte +0 -151
  659. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +0 -140
  660. package/dist/src/lib/convex-hull/barycentric-coords.ts +0 -246
  661. package/dist/src/lib/convex-hull/demo-temperature.ts +0 -63
  662. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +0 -405
  663. package/dist/src/lib/convex-hull/helpers.ts +0 -932
  664. package/dist/src/lib/convex-hull/index.ts +0 -202
  665. package/dist/src/lib/convex-hull/thermodynamics.ts +0 -2192
  666. package/dist/src/lib/convex-hull/types.ts +0 -267
  667. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +0 -311
  668. package/dist/src/lib/coordination/calc-coordination.ts +0 -93
  669. package/dist/src/lib/coordination/index.ts +0 -9
  670. package/dist/src/lib/effects.svelte.ts +0 -48
  671. package/dist/src/lib/element/ElementHeading.svelte +0 -26
  672. package/dist/src/lib/element/ElementPhoto.svelte +0 -57
  673. package/dist/src/lib/element/ElementStats.svelte +0 -80
  674. package/dist/src/lib/element/ElementTile.svelte +0 -484
  675. package/dist/src/lib/element/data.ts +0 -14
  676. package/dist/src/lib/element/index.ts +0 -8
  677. package/dist/src/lib/element/types.ts +0 -62
  678. package/dist/src/lib/feedback/ClickFeedback.svelte +0 -58
  679. package/dist/src/lib/feedback/DragOverlay.svelte +0 -42
  680. package/dist/src/lib/feedback/index.ts +0 -4
  681. package/dist/src/lib/fermi-surface/FermiSlice.svelte +0 -189
  682. package/dist/src/lib/fermi-surface/FermiSurface.svelte +0 -600
  683. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +0 -448
  684. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +0 -794
  685. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  686. package/dist/src/lib/fermi-surface/compute.ts +0 -728
  687. package/dist/src/lib/fermi-surface/constants.ts +0 -32
  688. package/dist/src/lib/fermi-surface/export.ts +0 -64
  689. package/dist/src/lib/fermi-surface/index.ts +0 -14
  690. package/dist/src/lib/fermi-surface/marching-cubes.ts +0 -3
  691. package/dist/src/lib/fermi-surface/parse.ts +0 -574
  692. package/dist/src/lib/fermi-surface/symmetry.ts +0 -56
  693. package/dist/src/lib/fermi-surface/types.ts +0 -159
  694. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +0 -1545
  695. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  696. package/dist/src/lib/heatmap-matrix/index.ts +0 -167
  697. package/dist/src/lib/heatmap-matrix/shared.ts +0 -7
  698. package/dist/src/lib/icons.ts +0 -650
  699. package/dist/src/lib/index.ts +0 -61
  700. package/dist/src/lib/io/decompress.ts +0 -92
  701. package/dist/src/lib/io/export.ts +0 -385
  702. package/dist/src/lib/io/fetch.ts +0 -46
  703. package/dist/src/lib/io/file-drop.ts +0 -51
  704. package/dist/src/lib/io/index.ts +0 -7
  705. package/dist/src/lib/io/is-binary.ts +0 -24
  706. package/dist/src/lib/io/types.ts +0 -8
  707. package/dist/src/lib/io/url-drop.ts +0 -141
  708. package/dist/src/lib/isosurface/Isosurface.svelte +0 -285
  709. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +0 -277
  710. package/dist/src/lib/isosurface/index.ts +0 -7
  711. package/dist/src/lib/isosurface/parse.ts +0 -656
  712. package/dist/src/lib/isosurface/slice.ts +0 -175
  713. package/dist/src/lib/isosurface/types.ts +0 -309
  714. package/dist/src/lib/labels.ts +0 -320
  715. package/dist/src/lib/layout/FullscreenToggle.svelte +0 -50
  716. package/dist/src/lib/layout/InfoCard.svelte +0 -120
  717. package/dist/src/lib/layout/InfoTag.svelte +0 -185
  718. package/dist/src/lib/layout/PropertyFilter.svelte +0 -246
  719. package/dist/src/lib/layout/SettingsSection.svelte +0 -148
  720. package/dist/src/lib/layout/SubpageGrid.svelte +0 -82
  721. package/dist/src/lib/layout/fullscreen.ts +0 -65
  722. package/dist/src/lib/layout/index.ts +0 -11
  723. package/dist/src/lib/layout/json-tree/JsonNode.svelte +0 -548
  724. package/dist/src/lib/layout/json-tree/JsonTree.svelte +0 -1230
  725. package/dist/src/lib/layout/json-tree/index.ts +0 -3
  726. package/dist/src/lib/layout/json-tree/types.ts +0 -126
  727. package/dist/src/lib/layout/json-tree/utils.ts +0 -682
  728. package/dist/src/lib/marching-cubes.ts +0 -614
  729. package/dist/src/lib/math.ts +0 -1081
  730. package/dist/src/lib/overlays/ContextMenu.svelte +0 -162
  731. package/dist/src/lib/overlays/CopyButton.svelte +0 -45
  732. package/dist/src/lib/overlays/DragControlTab.svelte +0 -98
  733. package/dist/src/lib/overlays/DraggablePane.svelte +0 -487
  734. package/dist/src/lib/overlays/InfoPaneCards.svelte +0 -149
  735. package/dist/src/lib/overlays/index.ts +0 -3
  736. package/dist/src/lib/periodic-table/PeriodicTable.svelte +0 -469
  737. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +0 -557
  738. package/dist/src/lib/periodic-table/PropertySelect.svelte +0 -37
  739. package/dist/src/lib/periodic-table/index.ts +0 -12
  740. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  741. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +0 -444
  742. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  743. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +0 -184
  744. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +0 -391
  745. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +0 -203
  746. package/dist/src/lib/phase-diagram/build-diagram.ts +0 -186
  747. package/dist/src/lib/phase-diagram/colors.ts +0 -58
  748. package/dist/src/lib/phase-diagram/diagram-input.ts +0 -40
  749. package/dist/src/lib/phase-diagram/index.ts +0 -13
  750. package/dist/src/lib/phase-diagram/parse.ts +0 -348
  751. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +0 -1023
  752. package/dist/src/lib/phase-diagram/types.ts +0 -144
  753. package/dist/src/lib/phase-diagram/utils.ts +0 -775
  754. package/dist/src/lib/plot/AxisLabel.svelte +0 -51
  755. package/dist/src/lib/plot/BarPlot.svelte +0 -2113
  756. package/dist/src/lib/plot/BarPlotControls.svelte +0 -66
  757. package/dist/src/lib/plot/BinnedScatterPlot.svelte +0 -1114
  758. package/dist/src/lib/plot/ColorBar.svelte +0 -721
  759. package/dist/src/lib/plot/ColorScaleSelect.svelte +0 -54
  760. package/dist/src/lib/plot/ElementScatter.svelte +0 -63
  761. package/dist/src/lib/plot/FillArea.svelte +0 -223
  762. package/dist/src/lib/plot/Histogram.svelte +0 -1558
  763. package/dist/src/lib/plot/HistogramControls.svelte +0 -212
  764. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +0 -96
  765. package/dist/src/lib/plot/Line.svelte +0 -84
  766. package/dist/src/lib/plot/PlotAxis.svelte +0 -169
  767. package/dist/src/lib/plot/PlotControls.svelte +0 -537
  768. package/dist/src/lib/plot/PlotLegend.svelte +0 -569
  769. package/dist/src/lib/plot/PlotTooltip.svelte +0 -67
  770. package/dist/src/lib/plot/PortalSelect.svelte +0 -253
  771. package/dist/src/lib/plot/ReferenceLine.svelte +0 -204
  772. package/dist/src/lib/plot/ReferenceLine3D.svelte +0 -156
  773. package/dist/src/lib/plot/ReferencePlane.svelte +0 -175
  774. package/dist/src/lib/plot/ScatterPlot.svelte +0 -2778
  775. package/dist/src/lib/plot/ScatterPlot3D.svelte +0 -529
  776. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +0 -437
  777. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +0 -912
  778. package/dist/src/lib/plot/ScatterPlotControls.svelte +0 -306
  779. package/dist/src/lib/plot/ScatterPoint.svelte +0 -182
  780. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +0 -293
  781. package/dist/src/lib/plot/Surface3D.svelte +0 -197
  782. package/dist/src/lib/plot/ZeroLines.svelte +0 -97
  783. package/dist/src/lib/plot/ZoomRect.svelte +0 -23
  784. package/dist/src/lib/plot/adaptive-density.ts +0 -316
  785. package/dist/src/lib/plot/auto-place.ts +0 -184
  786. package/dist/src/lib/plot/axis-utils.ts +0 -122
  787. package/dist/src/lib/plot/binned-scatter-types.ts +0 -83
  788. package/dist/src/lib/plot/data-cleaning.ts +0 -1069
  789. package/dist/src/lib/plot/data-transform.ts +0 -69
  790. package/dist/src/lib/plot/defaults.ts +0 -9
  791. package/dist/src/lib/plot/fill-utils.ts +0 -494
  792. package/dist/src/lib/plot/hover-lock.svelte.ts +0 -60
  793. package/dist/src/lib/plot/index.ts +0 -53
  794. package/dist/src/lib/plot/interactions.ts +0 -119
  795. package/dist/src/lib/plot/layout.ts +0 -425
  796. package/dist/src/lib/plot/reference-line.ts +0 -426
  797. package/dist/src/lib/plot/scales.ts +0 -654
  798. package/dist/src/lib/plot/svg.ts +0 -23
  799. package/dist/src/lib/plot/types.ts +0 -1144
  800. package/dist/src/lib/plot/utils/label-placement.ts +0 -541
  801. package/dist/src/lib/plot/utils/series-visibility.ts +0 -140
  802. package/dist/src/lib/plot/utils.ts +0 -11
  803. package/dist/src/lib/rdf/RdfPlot.svelte +0 -247
  804. package/dist/src/lib/rdf/calc-rdf.ts +0 -167
  805. package/dist/src/lib/rdf/index.ts +0 -27
  806. package/dist/src/lib/sanitize.ts +0 -126
  807. package/dist/src/lib/settings.ts +0 -1479
  808. package/dist/src/lib/spectral/Bands.svelte +0 -1040
  809. package/dist/src/lib/spectral/BandsAndDos.svelte +0 -134
  810. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +0 -252
  811. package/dist/src/lib/spectral/Dos.svelte +0 -697
  812. package/dist/src/lib/spectral/helpers.ts +0 -1381
  813. package/dist/src/lib/spectral/index.ts +0 -8
  814. package/dist/src/lib/spectral/types.ts +0 -112
  815. package/dist/src/lib/state.svelte.ts +0 -64
  816. package/dist/src/lib/structure/Arrow.svelte +0 -72
  817. package/dist/src/lib/structure/AtomLegend.svelte +0 -815
  818. package/dist/src/lib/structure/Bond.svelte +0 -140
  819. package/dist/src/lib/structure/CanvasTooltip.svelte +0 -33
  820. package/dist/src/lib/structure/CellSelect.svelte +0 -349
  821. package/dist/src/lib/structure/Cylinder.svelte +0 -45
  822. package/dist/src/lib/structure/Lattice.svelte +0 -196
  823. package/dist/src/lib/structure/Structure.svelte +0 -2248
  824. package/dist/src/lib/structure/StructureControls.svelte +0 -1273
  825. package/dist/src/lib/structure/StructureExportPane.svelte +0 -252
  826. package/dist/src/lib/structure/StructureInfoPane.svelte +0 -737
  827. package/dist/src/lib/structure/StructureScene.svelte +0 -2255
  828. package/dist/src/lib/structure/atom-properties.ts +0 -316
  829. package/dist/src/lib/structure/bond-order-perception.ts +0 -447
  830. package/dist/src/lib/structure/bonding.ts +0 -944
  831. package/dist/src/lib/structure/export.ts +0 -861
  832. package/dist/src/lib/structure/index.ts +0 -291
  833. package/dist/src/lib/structure/label-placement.ts +0 -130
  834. package/dist/src/lib/structure/measure.ts +0 -45
  835. package/dist/src/lib/structure/parse.ts +0 -1705
  836. package/dist/src/lib/structure/partial-occupancy.ts +0 -183
  837. package/dist/src/lib/structure/pbc.ts +0 -164
  838. package/dist/src/lib/structure/supercell.ts +0 -226
  839. package/dist/src/lib/structure/validation.ts +0 -11
  840. package/dist/src/lib/symmetry/SymmetryStats.svelte +0 -226
  841. package/dist/src/lib/symmetry/WyckoffTable.svelte +0 -120
  842. package/dist/src/lib/symmetry/cell-transform.ts +0 -118
  843. package/dist/src/lib/symmetry/index.ts +0 -348
  844. package/dist/src/lib/symmetry/spacegroups.ts +0 -404
  845. package/dist/src/lib/table/HeatmapTable.svelte +0 -1833
  846. package/dist/src/lib/table/ToggleMenu.svelte +0 -385
  847. package/dist/src/lib/table/index.ts +0 -139
  848. package/dist/src/lib/theme/ThemeControl.svelte +0 -53
  849. package/dist/src/lib/theme/index.ts +0 -107
  850. package/dist/src/lib/time.ts +0 -71
  851. package/dist/src/lib/tooltip/TooltipContent.svelte +0 -58
  852. package/dist/src/lib/tooltip/index.ts +0 -2
  853. package/dist/src/lib/tooltip/types.ts +0 -13
  854. package/dist/src/lib/trajectory/Trajectory.svelte +0 -1545
  855. package/dist/src/lib/trajectory/TrajectoryError.svelte +0 -128
  856. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +0 -357
  857. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +0 -313
  858. package/dist/src/lib/trajectory/constants.ts +0 -7
  859. package/dist/src/lib/trajectory/extract.ts +0 -196
  860. package/dist/src/lib/trajectory/format-detect.ts +0 -96
  861. package/dist/src/lib/trajectory/frame-reader.ts +0 -456
  862. package/dist/src/lib/trajectory/helpers.ts +0 -217
  863. package/dist/src/lib/trajectory/index.ts +0 -218
  864. package/dist/src/lib/trajectory/parse/ase.ts +0 -109
  865. package/dist/src/lib/trajectory/parse/hdf5.ts +0 -173
  866. package/dist/src/lib/trajectory/parse/index.ts +0 -411
  867. package/dist/src/lib/trajectory/parse/lammps.ts +0 -215
  868. package/dist/src/lib/trajectory/parse/vasp.ts +0 -102
  869. package/dist/src/lib/trajectory/parse/xyz.ts +0 -143
  870. package/dist/src/lib/trajectory/plotting.ts +0 -599
  871. package/dist/src/lib/trajectory/types.ts +0 -13
  872. package/dist/src/lib/utils.ts +0 -56
  873. package/dist/src/lib/xrd/XrdPlot.svelte +0 -615
  874. package/dist/src/lib/xrd/broadening.ts +0 -130
  875. package/dist/src/lib/xrd/calc-xrd.ts +0 -397
  876. package/dist/src/lib/xrd/index.ts +0 -38
  877. package/dist/src/lib/xrd/parse.ts +0 -858
  878. package/dist/webview.js +0 -29421
  879. package/icon.png +0 -0
  880. package/matterviz-0.3.2.vsix +0 -0
  881. package/matterviz-0.3.4.vsix +0 -0
  882. package/matterviz-0.3.5.vsix +0 -0
  883. package/scripts/sync-config.ts +0 -101
  884. package/src/declarations.d.ts +0 -2
  885. package/src/extension.ts +0 -972
  886. package/src/node-io.ts +0 -65
  887. package/src/types.ts +0 -17
  888. package/src/webview/JsonBrowser.svelte +0 -1079
  889. package/src/webview/PlotPanel.svelte +0 -346
  890. package/src/webview/detect.ts +0 -444
  891. package/src/webview/main.ts +0 -764
  892. package/src/webview/plot-utils.ts +0 -250
  893. package/test-fixtures/all-viz-types.json.gz +0 -0
  894. package/test-fixtures/plot-demo-data.json.gz +0 -0
  895. package/tests/detect.test.ts +0 -604
  896. package/tests/extension.test.ts +0 -2041
  897. package/tests/node-io.test.ts +0 -39
  898. package/tests/plot-utils.test.ts +0 -302
  899. package/tests/vite-plugin-json-gz.test.ts +0 -114
  900. package/tests/vscode-mock.ts +0 -18
  901. package/tests/webview.test.ts +0 -231
  902. package/tsconfig.json +0 -20
  903. package/vite-plugin-json-gz.ts +0 -29
  904. package/vite.config.ts +0 -34
  905. package/vite.extension.config.ts +0 -34
  906. /package/dist/{src/lib/EmptyState.svelte → EmptyState.svelte} +0 -0
  907. /package/dist/{src/lib/chempot-diagram → chempot-diagram}/ChemPotScene3D.svelte +0 -0
  908. /package/dist/{src/lib/colors → colors}/alloy-colors.json +0 -0
  909. /package/dist/{src/lib/colors → colors}/dark-mode-colors.json +0 -0
  910. /package/dist/{src/lib/colors → colors}/jmol-colors.json +0 -0
  911. /package/dist/{src/lib/colors → colors}/muted-colors.json +0 -0
  912. /package/dist/{src/lib/colors → colors}/pastel-colors.json +0 -0
  913. /package/dist/{src/lib/colors → colors}/vesta-colors.json +0 -0
  914. /package/dist/{src/lib/element → element}/BohrAtom.svelte +0 -0
  915. /package/dist/{src/lib/element → element}/Nucleus.svelte +0 -0
  916. /package/dist/{src/lib/element → element}/data.json +0 -0
  917. /package/dist/{src/lib/element → element}/data.json.gz +0 -0
  918. /package/dist/{src/lib/element → element}/data.json.gz.d.ts +0 -0
  919. /package/dist/{src/lib/element → element}/data.schema.json +0 -0
  920. /package/dist/{src/lib/element-image-urls.json → element-image-urls.json} +0 -0
  921. /package/dist/{src/lib/feedback → feedback}/Spinner.svelte +0 -0
  922. /package/dist/{src/lib/feedback → feedback}/StatusMessage.svelte +0 -0
  923. /package/dist/{src/lib/layout → layout}/json-tree/JsonValue.svelte +0 -0
  924. /package/dist/{src/lib/periodic-table → periodic-table}/TableInset.svelte +0 -0
  925. /package/dist/{src/lib/theme → theme}/themes.mjs +0 -0
  926. /package/dist/{src/lib/xrd → xrd}/atomic_scattering_params.json +0 -0
@@ -0,0 +1,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': `0.5`,
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,26 @@
1
+ type VisSeries = {
2
+ label?: string | null;
3
+ unit?: string;
4
+ y_axis?: string;
5
+ visible?: boolean;
6
+ x?: unknown;
7
+ y?: unknown;
8
+ };
9
+ type SeriesSource = [string, string, string, ...unknown[]];
10
+ export type SeriesVisibilitySnapshot = {
11
+ visibility: boolean[];
12
+ source: SeriesSource[];
13
+ };
14
+ export declare function have_compatible_units(series1: VisSeries, series2: VisSeries): boolean;
15
+ export declare function toggle_series_visibility<Series extends VisSeries>(series: Series[], series_idx: number): Series[];
16
+ export declare function toggle_group_visibility<Series extends VisSeries>(series: Series[], series_indices: number[]): Series[];
17
+ export declare function handle_legend_double_click<Series extends VisSeries>(series: Series[], idx: number, prev_snapshot: SeriesVisibilitySnapshot | null): {
18
+ series: Series[];
19
+ prev_visibility: SeriesVisibilitySnapshot | null;
20
+ };
21
+ export declare function create_legend_visibility<Series extends VisSeries>(get_series: () => Series[], set_series: (series: Series[]) => void): {
22
+ on_toggle: (series_idx: number) => void;
23
+ on_group_toggle: (group_name: string, series_indices: number[]) => void;
24
+ on_double_click: (series_idx: number) => void;
25
+ };
26
+ export {};
@@ -0,0 +1,112 @@
1
+ // Length + first/last element: a by-value signature for x/y data. Deliberately NOT
2
+ // array identity: inside components those are $state proxies whose identity changes
3
+ // when the series prop is reassigned (e.g. by the isolate itself), which made the
4
+ // snapshot reject itself and permanently broke restore-from-isolation.
5
+ const data_sig = (arr) => Array.isArray(arr) ? [arr.length, arr[0], arr[arr.length - 1]] : [arr];
6
+ const series_source = (series, length = series.length) => series
7
+ .slice(0, length)
8
+ .map((srs) => [
9
+ srs.label ?? ``,
10
+ srs.unit ?? ``,
11
+ srs.y_axis ?? ``,
12
+ ...data_sig(srs.x),
13
+ ...data_sig(srs.y),
14
+ ]);
15
+ const same_series_source = (series, snapshot_series) => series.length === snapshot_series.length &&
16
+ series.every((source, idx) => source.length === snapshot_series[idx].length &&
17
+ source.every((part, part_idx) => Object.is(part, snapshot_series[idx][part_idx])));
18
+ export function have_compatible_units(series1, series2) {
19
+ if (!series1.unit || !series2.unit)
20
+ return true;
21
+ return series1.unit === series2.unit;
22
+ }
23
+ export function toggle_series_visibility(series, series_idx) {
24
+ if (series_idx < 0 || series_idx >= series.length || !series[series_idx])
25
+ return series;
26
+ const toggled = series[series_idx];
27
+ const new_visibility = !(toggled.visible ?? true);
28
+ const target_axis = toggled.y_axis ?? `y1`;
29
+ return series.map((srs, idx) => {
30
+ if ((toggled.label && srs.label === toggled.label) ||
31
+ (idx === series_idx && !toggled.label)) {
32
+ return { ...srs, visible: new_visibility };
33
+ }
34
+ if (new_visibility && (srs.y_axis ?? `y1`) === target_axis) {
35
+ if (!have_compatible_units(toggled, srs) && (srs.visible ?? true)) {
36
+ return { ...srs, visible: false };
37
+ }
38
+ }
39
+ return srs;
40
+ });
41
+ }
42
+ export function toggle_group_visibility(series, series_indices) {
43
+ // Filter to valid indices upfront
44
+ const valid_indices = series_indices.filter((idx) => idx >= 0 && idx < series.length);
45
+ if (valid_indices.length === 0)
46
+ return series;
47
+ const idx_set = new Set(valid_indices);
48
+ // Check if all series in the group are currently visible
49
+ const all_visible = valid_indices.every((idx) => series[idx].visible ?? true);
50
+ // Toggle: if all visible, hide all; otherwise show all
51
+ const new_visibility = !all_visible;
52
+ return series.map((srs, idx) => idx_set.has(idx) ? { ...srs, visible: new_visibility } : srs);
53
+ }
54
+ export function handle_legend_double_click(series, idx, prev_snapshot) {
55
+ if (idx < 0 || idx >= series.length) {
56
+ return { series, prev_visibility: prev_snapshot };
57
+ }
58
+ const { label } = series[idx];
59
+ const current = series.map((srs) => srs.visible ?? true);
60
+ const current_source = prev_snapshot
61
+ ? series_source(series, prev_snapshot.visibility.length)
62
+ : [];
63
+ const prev_visibility = prev_snapshot && same_series_source(current_source, prev_snapshot.source)
64
+ ? prev_snapshot.visibility
65
+ : null;
66
+ // Only check original series (ignore new ones added after isolation)
67
+ const check_series = prev_visibility ? series.slice(0, prev_visibility.length) : series;
68
+ const is_isolated = check_series.every((srs, srs_idx) => {
69
+ const in_group = label ? srs.label === label : srs_idx === idx;
70
+ return in_group ? (srs.visible ?? true) : !(srs.visible ?? true);
71
+ });
72
+ // Restore from isolation
73
+ if (is_isolated && prev_visibility) {
74
+ return {
75
+ series: series.map((srs, srs_idx) => srs_idx < prev_visibility.length && current[srs_idx] !== prev_visibility[srs_idx]
76
+ ? { ...srs, visible: prev_visibility[srs_idx] }
77
+ : srs),
78
+ prev_visibility: null,
79
+ };
80
+ }
81
+ // Isolate series
82
+ const new_prev = prev_visibility
83
+ ? prev_snapshot
84
+ : current.filter(Boolean).length > 1
85
+ ? {
86
+ visibility: [...current],
87
+ source: series_source(series),
88
+ }
89
+ : null;
90
+ return {
91
+ series: series.map((srs, srs_idx) => {
92
+ const in_group = label ? srs.label === label : srs_idx === idx;
93
+ return (srs.visible ?? true) !== in_group ? { ...srs, visible: in_group } : srs;
94
+ }),
95
+ prev_visibility: new_prev,
96
+ };
97
+ }
98
+ // Bundle the three legend visibility handlers (click toggle, group toggle,
99
+ // double-click isolate/restore) around a series accessor pair. Owns the
100
+ // isolate/restore snapshot internally so components don't each carry it.
101
+ export function create_legend_visibility(get_series, set_series) {
102
+ let prev_visibility = null;
103
+ return {
104
+ on_toggle: (series_idx) => set_series(toggle_series_visibility(get_series(), series_idx)),
105
+ on_group_toggle: (_group_name, series_indices) => set_series(toggle_group_visibility(get_series(), series_indices)),
106
+ on_double_click: (series_idx) => {
107
+ const result = handle_legend_double_click(get_series(), series_idx, prev_visibility);
108
+ set_series(result.series);
109
+ prev_visibility = result.prev_visibility;
110
+ },
111
+ };
112
+ }
@@ -0,0 +1,11 @@
1
+ import type { TweenOptions } from 'svelte/motion';
2
+ export declare const unique_id: (prefix?: string) => string;
3
+ export declare const LINE_TWEEN: {
4
+ max_series: number;
5
+ max_points: number;
6
+ };
7
+ export declare const resolve_line_tween: (line_tween: TweenOptions<string> | undefined, load: {
8
+ series: number;
9
+ points: number;
10
+ }) => TweenOptions<string> | undefined;
11
+ export declare function calc_auto_range(values: number[]): [number, number];
@@ -0,0 +1,27 @@
1
+ // Unique DOM id token (for SVG clipPath/gradient ids, control `for`/`id` prefixes). Returns a
2
+ // fresh id on every call; callers should store it in a const (e.g. `const id = unique_id('foo')`)
3
+ // so it stays stable across re-renders. Pass a prefix for a readable `prefix-<uuid>`, or omit it
4
+ // when the caller adds its own prefix.
5
+ export const unique_id = (prefix = ``) => prefix ? `${prefix}-${crypto.randomUUID()}` : crypto.randomUUID();
6
+ // Path-morph (interpolatePath) tweening scales poorly with many simultaneously morphing
7
+ // <path> elements (band structures with 100+ bands) or a single very long line. Disable
8
+ // the morph above these budgets unless the caller explicitly opts into a tween.
9
+ export const LINE_TWEEN = { max_series: 16, max_points: 8000 };
10
+ export const resolve_line_tween = (line_tween, load) => line_tween ??
11
+ (load.series > LINE_TWEEN.max_series || load.points > LINE_TWEEN.max_points
12
+ ? { duration: 0 }
13
+ : undefined);
14
+ export function calc_auto_range(values) {
15
+ const finite_values = values.filter(Number.isFinite);
16
+ if (finite_values.length === 0)
17
+ return [0, 1];
18
+ let [min_value, max_value] = [finite_values[0], finite_values[0]];
19
+ for (const value of finite_values) {
20
+ if (value < min_value)
21
+ min_value = value;
22
+ else if (value > max_value)
23
+ max_value = value;
24
+ }
25
+ const padding = (max_value - min_value) * 0.05 || 0.5;
26
+ return [min_value - padding, max_value + padding];
27
+ }