matterviz 0.3.5 → 0.3.6

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 (855) hide show
  1. package/.vscode/launch.json +13 -0
  2. package/.vscodeignore +7 -0
  3. package/dist/assets/STLExporter-BpTH3YHE.js +8 -0
  4. package/dist/assets/browser-DdDecX_W.js +1 -0
  5. package/dist/assets/export-qgn-H9y6.js +2 -0
  6. package/dist/assets/main-DiKYzti2.css +1 -0
  7. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  8. package/dist/extension.js +31293 -0
  9. package/dist/src/lib/FilePicker.svelte +360 -0
  10. package/dist/src/lib/MillerIndexInput.svelte +66 -0
  11. package/dist/src/lib/api/mp.ts +26 -0
  12. package/dist/src/lib/api/optimade.ts +204 -0
  13. package/dist/src/lib/brillouin/BrillouinZone.svelte +549 -0
  14. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
  15. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
  16. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  17. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
  18. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
  19. package/dist/src/lib/brillouin/compute.ts +529 -0
  20. package/dist/src/lib/brillouin/index.ts +8 -0
  21. package/dist/src/lib/brillouin/types.ts +51 -0
  22. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
  23. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  24. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  25. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
  26. package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
  27. package/dist/src/lib/chempot-diagram/color.ts +42 -0
  28. package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
  29. package/dist/src/lib/chempot-diagram/index.ts +6 -0
  30. package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
  31. package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
  32. package/dist/src/lib/chempot-diagram/types.ts +130 -0
  33. package/dist/src/lib/colors/index.ts +249 -0
  34. package/dist/src/lib/composition/BarChart.svelte +297 -0
  35. package/dist/src/lib/composition/BubbleChart.svelte +218 -0
  36. package/dist/src/lib/composition/Composition.svelte +165 -0
  37. package/dist/src/lib/composition/Formula.svelte +268 -0
  38. package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
  39. package/dist/src/lib/composition/PieChart.svelte +323 -0
  40. package/dist/src/lib/composition/format.ts +155 -0
  41. package/dist/src/lib/composition/index.ts +37 -0
  42. package/dist/src/lib/composition/parse.ts +605 -0
  43. package/dist/src/lib/constants.ts +134 -0
  44. package/dist/src/lib/controls.ts +42 -0
  45. package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
  46. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
  47. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
  48. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
  49. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
  50. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
  51. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
  52. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
  53. package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
  54. package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
  55. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
  56. package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
  57. package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
  58. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
  59. package/dist/src/lib/convex-hull/helpers.ts +932 -0
  60. package/dist/src/lib/convex-hull/index.ts +202 -0
  61. package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
  62. package/dist/src/lib/convex-hull/types.ts +267 -0
  63. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
  64. package/dist/src/lib/coordination/calc-coordination.ts +93 -0
  65. package/dist/src/lib/coordination/index.ts +9 -0
  66. package/dist/src/lib/effects.svelte.ts +48 -0
  67. package/dist/src/lib/element/BohrAtom.svelte +147 -0
  68. package/dist/src/lib/element/ElementHeading.svelte +26 -0
  69. package/dist/src/lib/element/ElementPhoto.svelte +57 -0
  70. package/dist/src/lib/element/ElementStats.svelte +80 -0
  71. package/dist/src/lib/element/ElementTile.svelte +484 -0
  72. package/dist/src/lib/element/data.json.gz.d.ts +4 -0
  73. package/dist/src/lib/element/data.ts +14 -0
  74. package/dist/src/lib/element/index.ts +8 -0
  75. package/dist/src/lib/element/types.ts +62 -0
  76. package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
  77. package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
  78. package/dist/src/lib/feedback/index.ts +4 -0
  79. package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
  80. package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
  81. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
  82. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
  83. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  84. package/dist/src/lib/fermi-surface/compute.ts +728 -0
  85. package/dist/src/lib/fermi-surface/constants.ts +32 -0
  86. package/dist/src/lib/fermi-surface/export.ts +64 -0
  87. package/dist/src/lib/fermi-surface/index.ts +14 -0
  88. package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
  89. package/dist/src/lib/fermi-surface/parse.ts +574 -0
  90. package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
  91. package/dist/src/lib/fermi-surface/types.ts +159 -0
  92. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  93. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  94. package/dist/src/lib/heatmap-matrix/index.ts +167 -0
  95. package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
  96. package/dist/src/lib/icons.ts +650 -0
  97. package/dist/src/lib/index.ts +61 -0
  98. package/dist/src/lib/io/decompress.ts +92 -0
  99. package/dist/src/lib/io/export.ts +385 -0
  100. package/dist/src/lib/io/fetch.ts +46 -0
  101. package/dist/src/lib/io/file-drop.ts +51 -0
  102. package/dist/src/lib/io/index.ts +7 -0
  103. package/dist/src/lib/io/is-binary.ts +24 -0
  104. package/dist/src/lib/io/types.ts +8 -0
  105. package/dist/src/lib/io/url-drop.ts +141 -0
  106. package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
  107. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
  108. package/dist/src/lib/isosurface/index.ts +7 -0
  109. package/dist/src/lib/isosurface/parse.ts +656 -0
  110. package/dist/src/lib/isosurface/slice.ts +175 -0
  111. package/dist/src/lib/isosurface/types.ts +309 -0
  112. package/dist/src/lib/labels.ts +320 -0
  113. package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
  114. package/dist/src/lib/layout/InfoCard.svelte +120 -0
  115. package/dist/src/lib/layout/InfoTag.svelte +185 -0
  116. package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
  117. package/dist/src/lib/layout/SettingsSection.svelte +148 -0
  118. package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
  119. package/dist/src/lib/layout/fullscreen.ts +65 -0
  120. package/dist/src/lib/layout/index.ts +11 -0
  121. package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
  122. package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
  123. package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
  124. package/dist/src/lib/layout/json-tree/index.ts +3 -0
  125. package/dist/src/lib/layout/json-tree/types.ts +126 -0
  126. package/dist/src/lib/layout/json-tree/utils.ts +682 -0
  127. package/dist/src/lib/marching-cubes.ts +614 -0
  128. package/dist/src/lib/math.ts +1081 -0
  129. package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
  130. package/dist/src/lib/overlays/CopyButton.svelte +45 -0
  131. package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
  132. package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
  133. package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
  134. package/dist/src/lib/overlays/index.ts +3 -0
  135. package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
  136. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
  137. package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
  138. package/dist/src/lib/periodic-table/index.ts +12 -0
  139. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  140. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
  141. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  142. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  143. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  144. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
  145. package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
  146. package/dist/src/lib/phase-diagram/colors.ts +58 -0
  147. package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
  148. package/dist/src/lib/phase-diagram/index.ts +13 -0
  149. package/dist/src/lib/phase-diagram/parse.ts +348 -0
  150. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
  151. package/dist/src/lib/phase-diagram/types.ts +144 -0
  152. package/dist/src/lib/phase-diagram/utils.ts +775 -0
  153. package/dist/src/lib/plot/AxisLabel.svelte +51 -0
  154. package/dist/src/lib/plot/BarPlot.svelte +2113 -0
  155. package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
  156. package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
  157. package/dist/src/lib/plot/ColorBar.svelte +721 -0
  158. package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
  159. package/dist/src/lib/plot/ElementScatter.svelte +63 -0
  160. package/dist/src/lib/plot/FillArea.svelte +223 -0
  161. package/dist/src/lib/plot/Histogram.svelte +1558 -0
  162. package/dist/src/lib/plot/HistogramControls.svelte +212 -0
  163. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
  164. package/dist/src/lib/plot/Line.svelte +84 -0
  165. package/dist/src/lib/plot/PlotAxis.svelte +169 -0
  166. package/dist/src/lib/plot/PlotControls.svelte +537 -0
  167. package/dist/src/lib/plot/PlotLegend.svelte +569 -0
  168. package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
  169. package/dist/src/lib/plot/PortalSelect.svelte +253 -0
  170. package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
  171. package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
  172. package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
  173. package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
  174. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
  175. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
  176. package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
  177. package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
  178. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
  179. package/dist/src/lib/plot/Surface3D.svelte +197 -0
  180. package/dist/src/lib/plot/ZeroLines.svelte +97 -0
  181. package/dist/src/lib/plot/ZoomRect.svelte +23 -0
  182. package/dist/src/lib/plot/adaptive-density.ts +316 -0
  183. package/dist/src/lib/plot/auto-place.ts +184 -0
  184. package/dist/src/lib/plot/axis-utils.ts +122 -0
  185. package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
  186. package/dist/src/lib/plot/data-cleaning.ts +1069 -0
  187. package/dist/src/lib/plot/data-transform.ts +69 -0
  188. package/dist/src/lib/plot/defaults.ts +9 -0
  189. package/dist/src/lib/plot/fill-utils.ts +494 -0
  190. package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
  191. package/dist/src/lib/plot/index.ts +53 -0
  192. package/dist/src/lib/plot/interactions.ts +119 -0
  193. package/dist/src/lib/plot/layout.ts +425 -0
  194. package/dist/src/lib/plot/reference-line.ts +426 -0
  195. package/dist/src/lib/plot/scales.ts +654 -0
  196. package/dist/src/lib/plot/svg.ts +23 -0
  197. package/dist/src/lib/plot/types.ts +1144 -0
  198. package/dist/src/lib/plot/utils/label-placement.ts +541 -0
  199. package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
  200. package/dist/src/lib/plot/utils.ts +11 -0
  201. package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
  202. package/dist/src/lib/rdf/calc-rdf.ts +167 -0
  203. package/dist/src/lib/rdf/index.ts +27 -0
  204. package/dist/src/lib/sanitize.ts +126 -0
  205. package/dist/src/lib/settings.ts +1479 -0
  206. package/dist/src/lib/spectral/Bands.svelte +1040 -0
  207. package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
  208. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
  209. package/dist/src/lib/spectral/Dos.svelte +697 -0
  210. package/dist/src/lib/spectral/helpers.ts +1381 -0
  211. package/dist/src/lib/spectral/index.ts +8 -0
  212. package/dist/src/lib/spectral/types.ts +112 -0
  213. package/dist/src/lib/state.svelte.ts +64 -0
  214. package/dist/src/lib/structure/Arrow.svelte +72 -0
  215. package/dist/src/lib/structure/AtomLegend.svelte +815 -0
  216. package/dist/src/lib/structure/Bond.svelte +140 -0
  217. package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
  218. package/dist/src/lib/structure/CellSelect.svelte +349 -0
  219. package/dist/src/lib/structure/Cylinder.svelte +45 -0
  220. package/dist/src/lib/structure/Lattice.svelte +196 -0
  221. package/dist/src/lib/structure/Structure.svelte +2248 -0
  222. package/dist/src/lib/structure/StructureControls.svelte +1273 -0
  223. package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
  224. package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
  225. package/dist/src/lib/structure/StructureScene.svelte +2255 -0
  226. package/dist/src/lib/structure/atom-properties.ts +316 -0
  227. package/dist/src/lib/structure/bond-order-perception.ts +447 -0
  228. package/dist/src/lib/structure/bonding.ts +944 -0
  229. package/dist/src/lib/structure/export.ts +861 -0
  230. package/dist/src/lib/structure/index.ts +291 -0
  231. package/dist/src/lib/structure/label-placement.ts +130 -0
  232. package/dist/src/lib/structure/measure.ts +45 -0
  233. package/dist/src/lib/structure/parse.ts +1705 -0
  234. package/dist/src/lib/structure/partial-occupancy.ts +183 -0
  235. package/dist/src/lib/structure/pbc.ts +164 -0
  236. package/dist/src/lib/structure/supercell.ts +226 -0
  237. package/dist/src/lib/structure/validation.ts +11 -0
  238. package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
  239. package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
  240. package/dist/src/lib/symmetry/cell-transform.ts +118 -0
  241. package/dist/src/lib/symmetry/index.ts +348 -0
  242. package/dist/src/lib/symmetry/spacegroups.ts +404 -0
  243. package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
  244. package/dist/src/lib/table/ToggleMenu.svelte +385 -0
  245. package/dist/src/lib/table/index.ts +139 -0
  246. package/dist/src/lib/theme/ThemeControl.svelte +53 -0
  247. package/dist/src/lib/theme/index.ts +107 -0
  248. package/dist/src/lib/theme/themes.mjs +297 -0
  249. package/dist/src/lib/time.ts +71 -0
  250. package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
  251. package/dist/src/lib/tooltip/index.ts +2 -0
  252. package/dist/src/lib/tooltip/types.ts +13 -0
  253. package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
  254. package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
  255. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
  256. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
  257. package/dist/src/lib/trajectory/constants.ts +7 -0
  258. package/dist/src/lib/trajectory/extract.ts +196 -0
  259. package/dist/src/lib/trajectory/format-detect.ts +96 -0
  260. package/dist/src/lib/trajectory/frame-reader.ts +456 -0
  261. package/dist/src/lib/trajectory/helpers.ts +217 -0
  262. package/dist/src/lib/trajectory/index.ts +218 -0
  263. package/dist/src/lib/trajectory/parse/ase.ts +109 -0
  264. package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
  265. package/dist/src/lib/trajectory/parse/index.ts +411 -0
  266. package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
  267. package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
  268. package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
  269. package/dist/src/lib/trajectory/plotting.ts +599 -0
  270. package/dist/src/lib/trajectory/types.ts +13 -0
  271. package/dist/src/lib/utils.ts +56 -0
  272. package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
  273. package/dist/src/lib/xrd/broadening.ts +130 -0
  274. package/dist/src/lib/xrd/calc-xrd.ts +397 -0
  275. package/dist/src/lib/xrd/index.ts +38 -0
  276. package/dist/src/lib/xrd/parse.ts +858 -0
  277. package/dist/webview.js +29421 -0
  278. package/icon.png +0 -0
  279. package/license +1 -1
  280. package/matterviz-0.3.2.vsix +0 -0
  281. package/matterviz-0.3.4.vsix +0 -0
  282. package/matterviz-0.3.5.vsix +0 -0
  283. package/package.json +1460 -215
  284. package/readme.md +171 -98
  285. package/scripts/sync-config.ts +101 -0
  286. package/src/declarations.d.ts +2 -0
  287. package/src/extension.ts +972 -0
  288. package/src/node-io.ts +65 -0
  289. package/src/types.ts +17 -0
  290. package/src/webview/JsonBrowser.svelte +1079 -0
  291. package/src/webview/PlotPanel.svelte +346 -0
  292. package/src/webview/detect.ts +444 -0
  293. package/src/webview/main.ts +764 -0
  294. package/src/webview/plot-utils.ts +250 -0
  295. package/test-fixtures/all-viz-types.json.gz +0 -0
  296. package/test-fixtures/plot-demo-data.json.gz +0 -0
  297. package/tests/detect.test.ts +604 -0
  298. package/tests/extension.test.ts +2041 -0
  299. package/tests/node-io.test.ts +39 -0
  300. package/tests/plot-utils.test.ts +302 -0
  301. package/tests/vite-plugin-json-gz.test.ts +114 -0
  302. package/tests/vscode-mock.ts +18 -0
  303. package/tests/webview.test.ts +231 -0
  304. package/tsconfig.json +20 -0
  305. package/vite-plugin-json-gz.ts +29 -0
  306. package/vite.config.ts +34 -0
  307. package/vite.extension.config.ts +34 -0
  308. package/dist/EmptyState.svelte.d.ts +0 -9
  309. package/dist/FilePicker.svelte +0 -360
  310. package/dist/FilePicker.svelte.d.ts +0 -17
  311. package/dist/Icon.svelte.d.ts +0 -13
  312. package/dist/MillerIndexInput.svelte +0 -66
  313. package/dist/MillerIndexInput.svelte.d.ts +0 -7
  314. package/dist/api/mp.d.ts +0 -6
  315. package/dist/api/mp.js +0 -22
  316. package/dist/api/optimade.d.ts +0 -45
  317. package/dist/api/optimade.js +0 -135
  318. package/dist/brillouin/BrillouinZone.svelte +0 -546
  319. package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
  320. package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
  321. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
  322. package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
  323. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
  324. package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  325. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
  326. package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
  327. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
  328. package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
  329. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
  330. package/dist/brillouin/compute.d.ts +0 -17
  331. package/dist/brillouin/compute.js +0 -426
  332. package/dist/brillouin/index.d.ts +0 -8
  333. package/dist/brillouin/index.js +0 -8
  334. package/dist/brillouin/types.d.ts +0 -48
  335. package/dist/brillouin/types.js +0 -1
  336. package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
  337. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
  338. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
  339. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
  340. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
  341. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
  342. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
  343. package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
  344. package/dist/chempot-diagram/async-compute.svelte.js +0 -78
  345. package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
  346. package/dist/chempot-diagram/chempot-worker.js +0 -11
  347. package/dist/chempot-diagram/color.d.ts +0 -10
  348. package/dist/chempot-diagram/color.js +0 -32
  349. package/dist/chempot-diagram/compute.d.ts +0 -48
  350. package/dist/chempot-diagram/compute.js +0 -812
  351. package/dist/chempot-diagram/index.d.ts +0 -6
  352. package/dist/chempot-diagram/index.js +0 -6
  353. package/dist/chempot-diagram/pointer.d.ts +0 -16
  354. package/dist/chempot-diagram/pointer.js +0 -40
  355. package/dist/chempot-diagram/temperature.d.ts +0 -15
  356. package/dist/chempot-diagram/temperature.js +0 -36
  357. package/dist/chempot-diagram/types.d.ts +0 -86
  358. package/dist/chempot-diagram/types.js +0 -28
  359. package/dist/colors/index.d.ts +0 -47
  360. package/dist/colors/index.js +0 -203
  361. package/dist/composition/BarChart.svelte +0 -297
  362. package/dist/composition/BarChart.svelte.d.ts +0 -39
  363. package/dist/composition/BubbleChart.svelte +0 -218
  364. package/dist/composition/BubbleChart.svelte.d.ts +0 -28
  365. package/dist/composition/Composition.svelte +0 -164
  366. package/dist/composition/Composition.svelte.d.ts +0 -15
  367. package/dist/composition/Formula.svelte +0 -265
  368. package/dist/composition/Formula.svelte.d.ts +0 -19
  369. package/dist/composition/FormulaFilter.svelte +0 -1259
  370. package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
  371. package/dist/composition/PieChart.svelte +0 -323
  372. package/dist/composition/PieChart.svelte.d.ts +0 -37
  373. package/dist/composition/format.d.ts +0 -15
  374. package/dist/composition/format.js +0 -109
  375. package/dist/composition/index.d.ts +0 -20
  376. package/dist/composition/index.js +0 -14
  377. package/dist/composition/parse.d.ts +0 -55
  378. package/dist/composition/parse.js +0 -459
  379. package/dist/constants.d.ts +0 -29
  380. package/dist/constants.js +0 -99
  381. package/dist/controls.d.ts +0 -14
  382. package/dist/controls.js +0 -30
  383. package/dist/convex-hull/ConvexHull.svelte +0 -157
  384. package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
  385. package/dist/convex-hull/ConvexHull2D.svelte +0 -814
  386. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
  387. package/dist/convex-hull/ConvexHull3D.svelte +0 -1790
  388. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
  389. package/dist/convex-hull/ConvexHull4D.svelte +0 -1386
  390. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
  391. package/dist/convex-hull/ConvexHullControls.svelte +0 -546
  392. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
  393. package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -122
  394. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
  395. package/dist/convex-hull/ConvexHullStats.svelte +0 -922
  396. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
  397. package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
  398. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
  399. package/dist/convex-hull/GasPressureControls.svelte +0 -247
  400. package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
  401. package/dist/convex-hull/StructurePopup.svelte +0 -116
  402. package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
  403. package/dist/convex-hull/TemperatureSlider.svelte +0 -137
  404. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
  405. package/dist/convex-hull/barycentric-coords.d.ts +0 -18
  406. package/dist/convex-hull/barycentric-coords.js +0 -182
  407. package/dist/convex-hull/demo-temperature.d.ts +0 -6
  408. package/dist/convex-hull/demo-temperature.js +0 -40
  409. package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
  410. package/dist/convex-hull/gas-thermodynamics.js +0 -316
  411. package/dist/convex-hull/helpers.d.ts +0 -103
  412. package/dist/convex-hull/helpers.js +0 -689
  413. package/dist/convex-hull/index.d.ts +0 -118
  414. package/dist/convex-hull/index.js +0 -57
  415. package/dist/convex-hull/thermodynamics.d.ts +0 -66
  416. package/dist/convex-hull/thermodynamics.js +0 -1752
  417. package/dist/convex-hull/types.d.ts +0 -162
  418. package/dist/convex-hull/types.js +0 -36
  419. package/dist/coordination/CoordinationBarPlot.svelte +0 -311
  420. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
  421. package/dist/coordination/calc-coordination.d.ts +0 -15
  422. package/dist/coordination/calc-coordination.js +0 -63
  423. package/dist/coordination/index.d.ts +0 -8
  424. package/dist/coordination/index.js +0 -7
  425. package/dist/element/BohrAtom.svelte +0 -147
  426. package/dist/element/BohrAtom.svelte.d.ts +0 -20
  427. package/dist/element/ElementHeading.svelte +0 -26
  428. package/dist/element/ElementHeading.svelte.d.ts +0 -8
  429. package/dist/element/ElementPhoto.svelte +0 -57
  430. package/dist/element/ElementPhoto.svelte.d.ts +0 -9
  431. package/dist/element/ElementStats.svelte +0 -80
  432. package/dist/element/ElementStats.svelte.d.ts +0 -8
  433. package/dist/element/ElementTile.svelte +0 -484
  434. package/dist/element/ElementTile.svelte.d.ts +0 -29
  435. package/dist/element/Nucleus.svelte.d.ts +0 -17
  436. package/dist/element/data.d.ts +0 -2
  437. package/dist/element/data.js +0 -2
  438. package/dist/element/data.json.gz.d.ts +0 -2
  439. package/dist/element/index.d.ts +0 -8
  440. package/dist/element/index.js +0 -8
  441. package/dist/element/types.d.ts +0 -57
  442. package/dist/element/types.js +0 -1
  443. package/dist/feedback/ClickFeedback.svelte +0 -58
  444. package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
  445. package/dist/feedback/DragOverlay.svelte +0 -42
  446. package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
  447. package/dist/feedback/Spinner.svelte.d.ts +0 -7
  448. package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
  449. package/dist/feedback/index.d.ts +0 -4
  450. package/dist/feedback/index.js +0 -4
  451. package/dist/fermi-surface/FermiSlice.svelte +0 -189
  452. package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
  453. package/dist/fermi-surface/FermiSurface.svelte +0 -600
  454. package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
  455. package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
  456. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
  457. package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
  458. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
  459. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  460. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
  461. package/dist/fermi-surface/compute.d.ts +0 -5
  462. package/dist/fermi-surface/compute.js +0 -538
  463. package/dist/fermi-surface/constants.d.ts +0 -9
  464. package/dist/fermi-surface/constants.js +0 -27
  465. package/dist/fermi-surface/export.d.ts +0 -5
  466. package/dist/fermi-surface/export.js +0 -63
  467. package/dist/fermi-surface/index.d.ts +0 -12
  468. package/dist/fermi-surface/index.js +0 -13
  469. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  470. package/dist/fermi-surface/marching-cubes.js +0 -2
  471. package/dist/fermi-surface/parse.d.ts +0 -2
  472. package/dist/fermi-surface/parse.js +0 -495
  473. package/dist/fermi-surface/symmetry.d.ts +0 -3
  474. package/dist/fermi-surface/symmetry.js +0 -46
  475. package/dist/fermi-surface/types.d.ts +0 -113
  476. package/dist/fermi-surface/types.js +0 -4
  477. package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
  478. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
  479. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  480. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
  481. package/dist/heatmap-matrix/index.d.ts +0 -53
  482. package/dist/heatmap-matrix/index.js +0 -100
  483. package/dist/heatmap-matrix/shared.d.ts +0 -2
  484. package/dist/heatmap-matrix/shared.js +0 -4
  485. package/dist/icons.d.ts +0 -569
  486. package/dist/icons.js +0 -648
  487. package/dist/index.d.ts +0 -39
  488. package/dist/index.js +0 -39
  489. package/dist/io/decompress.d.ts +0 -10
  490. package/dist/io/decompress.js +0 -74
  491. package/dist/io/export.d.ts +0 -16
  492. package/dist/io/export.js +0 -316
  493. package/dist/io/fetch.d.ts +0 -5
  494. package/dist/io/fetch.js +0 -39
  495. package/dist/io/file-drop.d.ts +0 -7
  496. package/dist/io/file-drop.js +0 -43
  497. package/dist/io/index.d.ts +0 -7
  498. package/dist/io/index.js +0 -7
  499. package/dist/io/is-binary.d.ts +0 -1
  500. package/dist/io/is-binary.js +0 -20
  501. package/dist/io/types.d.ts +0 -8
  502. package/dist/io/types.js +0 -1
  503. package/dist/io/url-drop.d.ts +0 -2
  504. package/dist/io/url-drop.js +0 -117
  505. package/dist/isosurface/Isosurface.svelte +0 -285
  506. package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
  507. package/dist/isosurface/IsosurfaceControls.svelte +0 -291
  508. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
  509. package/dist/isosurface/index.d.ts +0 -5
  510. package/dist/isosurface/index.js +0 -6
  511. package/dist/isosurface/parse.d.ts +0 -6
  512. package/dist/isosurface/parse.js +0 -553
  513. package/dist/isosurface/slice.d.ts +0 -11
  514. package/dist/isosurface/slice.js +0 -140
  515. package/dist/isosurface/types.d.ts +0 -56
  516. package/dist/isosurface/types.js +0 -227
  517. package/dist/labels.d.ts +0 -53
  518. package/dist/labels.js +0 -274
  519. package/dist/layout/FullscreenToggle.svelte +0 -50
  520. package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
  521. package/dist/layout/InfoCard.svelte +0 -120
  522. package/dist/layout/InfoCard.svelte.d.ts +0 -21
  523. package/dist/layout/InfoTag.svelte +0 -183
  524. package/dist/layout/InfoTag.svelte.d.ts +0 -19
  525. package/dist/layout/PropertyFilter.svelte +0 -244
  526. package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
  527. package/dist/layout/SettingsSection.svelte +0 -148
  528. package/dist/layout/SettingsSection.svelte.d.ts +0 -17
  529. package/dist/layout/SubpageGrid.svelte +0 -82
  530. package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
  531. package/dist/layout/fullscreen.d.ts +0 -9
  532. package/dist/layout/fullscreen.js +0 -53
  533. package/dist/layout/index.d.ts +0 -10
  534. package/dist/layout/index.js +0 -8
  535. package/dist/layout/json-tree/JsonNode.svelte +0 -548
  536. package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
  537. package/dist/layout/json-tree/JsonTree.svelte +0 -1222
  538. package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
  539. package/dist/layout/json-tree/JsonValue.svelte +0 -334
  540. package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
  541. package/dist/layout/json-tree/index.d.ts +0 -3
  542. package/dist/layout/json-tree/index.js +0 -3
  543. package/dist/layout/json-tree/types.d.ts +0 -73
  544. package/dist/layout/json-tree/types.js +0 -3
  545. package/dist/layout/json-tree/utils.d.ts +0 -29
  546. package/dist/layout/json-tree/utils.js +0 -649
  547. package/dist/marching-cubes.d.ts +0 -14
  548. package/dist/marching-cubes.js +0 -542
  549. package/dist/math.d.ts +0 -91
  550. package/dist/math.js +0 -896
  551. package/dist/overlays/ContextMenu.svelte +0 -162
  552. package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
  553. package/dist/overlays/CopyButton.svelte +0 -45
  554. package/dist/overlays/CopyButton.svelte.d.ts +0 -8
  555. package/dist/overlays/DraggablePane.svelte +0 -564
  556. package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
  557. package/dist/overlays/InfoPaneCards.svelte +0 -149
  558. package/dist/overlays/InfoPaneCards.svelte.d.ts +0 -22
  559. package/dist/overlays/index.d.ts +0 -2
  560. package/dist/overlays/index.js +0 -2
  561. package/dist/periodic-table/PeriodicTable.svelte +0 -469
  562. package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
  563. package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
  564. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
  565. package/dist/periodic-table/PropertySelect.svelte +0 -37
  566. package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
  567. package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
  568. package/dist/periodic-table/index.d.ts +0 -10
  569. package/dist/periodic-table/index.js +0 -4
  570. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1084
  571. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
  572. package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -449
  573. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
  574. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  575. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
  576. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
  577. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
  578. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
  579. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
  580. package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
  581. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
  582. package/dist/phase-diagram/build-diagram.d.ts +0 -11
  583. package/dist/phase-diagram/build-diagram.js +0 -167
  584. package/dist/phase-diagram/colors.d.ts +0 -35
  585. package/dist/phase-diagram/colors.js +0 -51
  586. package/dist/phase-diagram/diagram-input.d.ts +0 -33
  587. package/dist/phase-diagram/diagram-input.js +0 -3
  588. package/dist/phase-diagram/index.d.ts +0 -13
  589. package/dist/phase-diagram/index.js +0 -13
  590. package/dist/phase-diagram/parse.d.ts +0 -55
  591. package/dist/phase-diagram/parse.js +0 -276
  592. package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
  593. package/dist/phase-diagram/svg-to-diagram.js +0 -867
  594. package/dist/phase-diagram/types.d.ts +0 -99
  595. package/dist/phase-diagram/types.js +0 -1
  596. package/dist/phase-diagram/utils.d.ts +0 -118
  597. package/dist/phase-diagram/utils.js +0 -606
  598. package/dist/plot/AxisLabel.svelte +0 -51
  599. package/dist/plot/AxisLabel.svelte.d.ts +0 -16
  600. package/dist/plot/BarPlot.svelte +0 -2265
  601. package/dist/plot/BarPlot.svelte.d.ts +0 -83
  602. package/dist/plot/BarPlotControls.svelte +0 -66
  603. package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
  604. package/dist/plot/ColorBar.svelte +0 -719
  605. package/dist/plot/ColorBar.svelte.d.ts +0 -31
  606. package/dist/plot/ColorScaleSelect.svelte +0 -54
  607. package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
  608. package/dist/plot/ElementScatter.svelte +0 -63
  609. package/dist/plot/ElementScatter.svelte.d.ts +0 -14
  610. package/dist/plot/FillArea.svelte +0 -225
  611. package/dist/plot/FillArea.svelte.d.ts +0 -21
  612. package/dist/plot/Histogram.svelte +0 -1672
  613. package/dist/plot/Histogram.svelte.d.ts +0 -50
  614. package/dist/plot/HistogramControls.svelte +0 -212
  615. package/dist/plot/HistogramControls.svelte.d.ts +0 -22
  616. package/dist/plot/InteractiveAxisLabel.svelte +0 -94
  617. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
  618. package/dist/plot/Line.svelte +0 -84
  619. package/dist/plot/Line.svelte.d.ts +0 -15
  620. package/dist/plot/PlotControls.svelte +0 -537
  621. package/dist/plot/PlotControls.svelte.d.ts +0 -4
  622. package/dist/plot/PlotLegend.svelte +0 -569
  623. package/dist/plot/PlotLegend.svelte.d.ts +0 -29
  624. package/dist/plot/PlotTooltip.svelte +0 -67
  625. package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
  626. package/dist/plot/PortalSelect.svelte +0 -253
  627. package/dist/plot/PortalSelect.svelte.d.ts +0 -16
  628. package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
  629. package/dist/plot/ReferenceLine3D.svelte +0 -154
  630. package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
  631. package/dist/plot/ReferencePlane.svelte +0 -178
  632. package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
  633. package/dist/plot/ScatterPlot.svelte +0 -2845
  634. package/dist/plot/ScatterPlot.svelte.d.ts +0 -93
  635. package/dist/plot/ScatterPlot3D.svelte +0 -502
  636. package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
  637. package/dist/plot/ScatterPlot3DControls.svelte +0 -437
  638. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
  639. package/dist/plot/ScatterPlot3DScene.svelte +0 -912
  640. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
  641. package/dist/plot/ScatterPlotControls.svelte +0 -307
  642. package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
  643. package/dist/plot/ScatterPoint.svelte +0 -191
  644. package/dist/plot/ScatterPoint.svelte.d.ts +0 -21
  645. package/dist/plot/SpacegroupBarPlot.svelte +0 -293
  646. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
  647. package/dist/plot/Surface3D.svelte +0 -200
  648. package/dist/plot/Surface3D.svelte.d.ts +0 -13
  649. package/dist/plot/ZeroLines.svelte +0 -96
  650. package/dist/plot/ZeroLines.svelte.d.ts +0 -32
  651. package/dist/plot/ZoomRect.svelte +0 -23
  652. package/dist/plot/ZoomRect.svelte.d.ts +0 -8
  653. package/dist/plot/axis-utils.d.ts +0 -19
  654. package/dist/plot/axis-utils.js +0 -80
  655. package/dist/plot/data-cleaning.d.ts +0 -37
  656. package/dist/plot/data-cleaning.js +0 -855
  657. package/dist/plot/data-transform.d.ts +0 -16
  658. package/dist/plot/data-transform.js +0 -45
  659. package/dist/plot/defaults.d.ts +0 -19
  660. package/dist/plot/defaults.js +0 -9
  661. package/dist/plot/fill-utils.d.ts +0 -51
  662. package/dist/plot/fill-utils.js +0 -337
  663. package/dist/plot/hover-lock.svelte.d.ts +0 -14
  664. package/dist/plot/hover-lock.svelte.js +0 -46
  665. package/dist/plot/index.d.ts +0 -37
  666. package/dist/plot/index.js +0 -37
  667. package/dist/plot/interactions.d.ts +0 -12
  668. package/dist/plot/interactions.js +0 -100
  669. package/dist/plot/layout.d.ts +0 -60
  670. package/dist/plot/layout.js +0 -230
  671. package/dist/plot/reference-line.d.ts +0 -60
  672. package/dist/plot/reference-line.js +0 -316
  673. package/dist/plot/scales.d.ts +0 -48
  674. package/dist/plot/scales.js +0 -484
  675. package/dist/plot/svg.d.ts +0 -1
  676. package/dist/plot/svg.js +0 -11
  677. package/dist/plot/types.d.ts +0 -859
  678. package/dist/plot/types.js +0 -103
  679. package/dist/plot/utils/label-placement.d.ts +0 -47
  680. package/dist/plot/utils/label-placement.js +0 -256
  681. package/dist/plot/utils/series-visibility.d.ts +0 -9
  682. package/dist/plot/utils/series-visibility.js +0 -67
  683. package/dist/plot/utils.d.ts +0 -1
  684. package/dist/plot/utils.js +0 -14
  685. package/dist/rdf/RdfPlot.svelte +0 -247
  686. package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
  687. package/dist/rdf/calc-rdf.d.ts +0 -4
  688. package/dist/rdf/calc-rdf.js +0 -111
  689. package/dist/rdf/index.d.ts +0 -23
  690. package/dist/rdf/index.js +0 -2
  691. package/dist/sanitize.d.ts +0 -4
  692. package/dist/sanitize.js +0 -114
  693. package/dist/settings.d.ts +0 -255
  694. package/dist/settings.js +0 -1132
  695. package/dist/spectral/Bands.svelte +0 -1040
  696. package/dist/spectral/Bands.svelte.d.ts +0 -40
  697. package/dist/spectral/BandsAndDos.svelte +0 -128
  698. package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
  699. package/dist/spectral/BrillouinBandsDos.svelte +0 -248
  700. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
  701. package/dist/spectral/Dos.svelte +0 -697
  702. package/dist/spectral/Dos.svelte.d.ts +0 -29
  703. package/dist/spectral/helpers.d.ts +0 -117
  704. package/dist/spectral/helpers.js +0 -1023
  705. package/dist/spectral/index.d.ts +0 -6
  706. package/dist/spectral/index.js +0 -7
  707. package/dist/spectral/types.d.ts +0 -84
  708. package/dist/spectral/types.js +0 -2
  709. package/dist/state.svelte.d.ts +0 -25
  710. package/dist/state.svelte.js +0 -45
  711. package/dist/structure/Arrow.svelte +0 -72
  712. package/dist/structure/Arrow.svelte.d.ts +0 -15
  713. package/dist/structure/AtomLegend.svelte +0 -798
  714. package/dist/structure/AtomLegend.svelte.d.ts +0 -34
  715. package/dist/structure/Bond.svelte +0 -140
  716. package/dist/structure/Bond.svelte.d.ts +0 -9
  717. package/dist/structure/CanvasTooltip.svelte +0 -33
  718. package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
  719. package/dist/structure/CellSelect.svelte +0 -351
  720. package/dist/structure/CellSelect.svelte.d.ts +0 -13
  721. package/dist/structure/Cylinder.svelte +0 -45
  722. package/dist/structure/Cylinder.svelte.d.ts +0 -10
  723. package/dist/structure/Lattice.svelte +0 -196
  724. package/dist/structure/Lattice.svelte.d.ts +0 -17
  725. package/dist/structure/Structure.svelte +0 -1999
  726. package/dist/structure/Structure.svelte.d.ts +0 -87
  727. package/dist/structure/StructureControls.svelte +0 -1298
  728. package/dist/structure/StructureControls.svelte.d.ts +0 -31
  729. package/dist/structure/StructureExportPane.svelte +0 -251
  730. package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
  731. package/dist/structure/StructureInfoPane.svelte +0 -735
  732. package/dist/structure/StructureInfoPane.svelte.d.ts +0 -19
  733. package/dist/structure/StructureScene.svelte +0 -1905
  734. package/dist/structure/StructureScene.svelte.d.ts +0 -108
  735. package/dist/structure/atom-properties.d.ts +0 -37
  736. package/dist/structure/atom-properties.js +0 -200
  737. package/dist/structure/bond-order-perception.d.ts +0 -13
  738. package/dist/structure/bond-order-perception.js +0 -367
  739. package/dist/structure/bonding.d.ts +0 -42
  740. package/dist/structure/bonding.js +0 -525
  741. package/dist/structure/export.d.ts +0 -20
  742. package/dist/structure/export.js +0 -727
  743. package/dist/structure/index.d.ts +0 -125
  744. package/dist/structure/index.js +0 -171
  745. package/dist/structure/label-placement.d.ts +0 -14
  746. package/dist/structure/label-placement.js +0 -72
  747. package/dist/structure/measure.d.ts +0 -6
  748. package/dist/structure/measure.js +0 -29
  749. package/dist/structure/parse.d.ts +0 -66
  750. package/dist/structure/parse.js +0 -1363
  751. package/dist/structure/partial-occupancy.d.ts +0 -25
  752. package/dist/structure/partial-occupancy.js +0 -99
  753. package/dist/structure/pbc.d.ts +0 -9
  754. package/dist/structure/pbc.js +0 -123
  755. package/dist/structure/supercell.d.ts +0 -8
  756. package/dist/structure/supercell.js +0 -170
  757. package/dist/structure/validation.d.ts +0 -2
  758. package/dist/structure/validation.js +0 -10
  759. package/dist/symmetry/SymmetryStats.svelte +0 -226
  760. package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
  761. package/dist/symmetry/WyckoffTable.svelte +0 -113
  762. package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
  763. package/dist/symmetry/cell-transform.d.ts +0 -12
  764. package/dist/symmetry/cell-transform.js +0 -91
  765. package/dist/symmetry/index.d.ts +0 -43
  766. package/dist/symmetry/index.js +0 -229
  767. package/dist/symmetry/spacegroups.d.ts +0 -9
  768. package/dist/symmetry/spacegroups.js +0 -394
  769. package/dist/table/HeatmapTable.svelte +0 -1854
  770. package/dist/table/HeatmapTable.svelte.d.ts +0 -49
  771. package/dist/table/ToggleMenu.svelte +0 -376
  772. package/dist/table/ToggleMenu.svelte.d.ts +0 -11
  773. package/dist/table/index.d.ts +0 -74
  774. package/dist/table/index.js +0 -38
  775. package/dist/theme/ThemeControl.svelte +0 -53
  776. package/dist/theme/ThemeControl.svelte.d.ts +0 -9
  777. package/dist/theme/index.d.ts +0 -29
  778. package/dist/theme/index.js +0 -79
  779. package/dist/theme/themes.mjs +0 -285
  780. package/dist/time.d.ts +0 -4
  781. package/dist/time.js +0 -70
  782. package/dist/tooltip/TooltipContent.svelte +0 -58
  783. package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
  784. package/dist/tooltip/index.d.ts +0 -2
  785. package/dist/tooltip/index.js +0 -2
  786. package/dist/tooltip/types.d.ts +0 -8
  787. package/dist/tooltip/types.js +0 -1
  788. package/dist/trajectory/Trajectory.svelte +0 -1517
  789. package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
  790. package/dist/trajectory/TrajectoryError.svelte +0 -128
  791. package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
  792. package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
  793. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
  794. package/dist/trajectory/TrajectoryInfoPane.svelte +0 -313
  795. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
  796. package/dist/trajectory/constants.d.ts +0 -6
  797. package/dist/trajectory/constants.js +0 -7
  798. package/dist/trajectory/extract.d.ts +0 -5
  799. package/dist/trajectory/extract.js +0 -162
  800. package/dist/trajectory/format-detect.d.ts +0 -9
  801. package/dist/trajectory/format-detect.js +0 -76
  802. package/dist/trajectory/frame-reader.d.ts +0 -17
  803. package/dist/trajectory/frame-reader.js +0 -332
  804. package/dist/trajectory/helpers.d.ts +0 -14
  805. package/dist/trajectory/helpers.js +0 -172
  806. package/dist/trajectory/index.d.ts +0 -63
  807. package/dist/trajectory/index.js +0 -126
  808. package/dist/trajectory/parse/ase.d.ts +0 -2
  809. package/dist/trajectory/parse/ase.js +0 -73
  810. package/dist/trajectory/parse/hdf5.d.ts +0 -2
  811. package/dist/trajectory/parse/hdf5.js +0 -127
  812. package/dist/trajectory/parse/index.d.ts +0 -12
  813. package/dist/trajectory/parse/index.js +0 -299
  814. package/dist/trajectory/parse/lammps.d.ts +0 -5
  815. package/dist/trajectory/parse/lammps.js +0 -179
  816. package/dist/trajectory/parse/vasp.d.ts +0 -2
  817. package/dist/trajectory/parse/vasp.js +0 -68
  818. package/dist/trajectory/parse/xyz.d.ts +0 -2
  819. package/dist/trajectory/parse/xyz.js +0 -110
  820. package/dist/trajectory/plotting.d.ts +0 -28
  821. package/dist/trajectory/plotting.js +0 -423
  822. package/dist/trajectory/types.d.ts +0 -11
  823. package/dist/trajectory/types.js +0 -1
  824. package/dist/utils.d.ts +0 -5
  825. package/dist/utils.js +0 -36
  826. package/dist/xrd/XrdPlot.svelte +0 -615
  827. package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
  828. package/dist/xrd/broadening.d.ts +0 -20
  829. package/dist/xrd/broadening.js +0 -97
  830. package/dist/xrd/calc-xrd.d.ts +0 -37
  831. package/dist/xrd/calc-xrd.js +0 -337
  832. package/dist/xrd/index.d.ts +0 -37
  833. package/dist/xrd/index.js +0 -4
  834. package/dist/xrd/parse.d.ts +0 -13
  835. package/dist/xrd/parse.js +0 -749
  836. /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
  837. /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
  838. /package/dist/{app.css → src/lib/app.css} +0 -0
  839. /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
  840. /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
  841. /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
  842. /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
  843. /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
  844. /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
  845. /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
  846. /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
  847. /package/dist/{element → src/lib/element}/data.json +0 -0
  848. /package/dist/{element → src/lib/element}/data.json.gz +0 -0
  849. /package/dist/{element → src/lib/element}/data.schema.json +0 -0
  850. /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
  851. /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
  852. /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
  853. /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
  854. /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
  855. /package/dist/{xrd → src/lib/xrd}/atomic_scattering_params.json +0 -0
@@ -0,0 +1,316 @@
1
+ import type { Point2D, Vec2 } from '$lib/math'
2
+
3
+ export type NumericArray = ArrayLike<number>
4
+
5
+ export interface DensePointSeries<Metadata = Record<string, unknown>> {
6
+ id?: string | number
7
+ label?: string
8
+ x: NumericArray
9
+ y: NumericArray
10
+ metadata?: Metadata[] | Metadata
11
+ point_ids?: ArrayLike<string | number>
12
+ size_values?: ArrayLike<number | null>
13
+ color?: string
14
+ }
15
+
16
+ export interface DenseInternalPoint<Metadata = Record<string, unknown>> {
17
+ x: number
18
+ y: number
19
+ series_idx: number
20
+ point_idx: number
21
+ metadata?: Metadata
22
+ point_id?: string | number
23
+ size_value?: number | null
24
+ cx: number
25
+ cy: number
26
+ }
27
+
28
+ export interface DensityBinResult {
29
+ counts: Uint32Array
30
+ first_point_idxs: Int32Array
31
+ first_series_idxs: Int32Array
32
+ max_count: number
33
+ visible_count: number
34
+ x_bins: number
35
+ y_bins: number
36
+ }
37
+
38
+ export interface DensityBin {
39
+ x_bin: number
40
+ y_bin: number
41
+ count: number
42
+ x_range: Vec2
43
+ y_range: Vec2
44
+ }
45
+
46
+ export interface PickNearestOptions {
47
+ x_range: Vec2
48
+ y_range: Vec2
49
+ x_scale: (value: number) => number
50
+ y_scale: (value: number) => number
51
+ radius_px?: number
52
+ }
53
+
54
+ export interface PickIndex<Metadata = Record<string, unknown>> {
55
+ cells: Map<string, DenseInternalPoint<Metadata>[]>
56
+ cell_size: number
57
+ radius_px: number
58
+ }
59
+
60
+ export interface PlotRect {
61
+ x: number
62
+ y: number
63
+ width: number
64
+ height: number
65
+ }
66
+
67
+ export const get_metadata_at = <Metadata>(
68
+ metadata: DensePointSeries<Metadata>[`metadata`],
69
+ point_idx: number,
70
+ ): Metadata | undefined => (Array.isArray(metadata) ? metadata[point_idx] : metadata)
71
+
72
+ const cell_key = (x_bin: number, y_bin: number): string => `${x_bin},${y_bin}`
73
+
74
+ export const range_bounds = (range: Vec2): Vec2 =>
75
+ range[0] <= range[1] ? range : [range[1], range[0]]
76
+
77
+ const in_bounds = (value: number, min: number, max: number): boolean =>
78
+ Number.isFinite(value) && value >= min && value <= max
79
+
80
+ const value_bin = (value: number, min: number, span: number, bins: number): number =>
81
+ Math.min(bins - 1, Math.max(0, Math.floor(((value - min) / span) * bins)))
82
+
83
+ const series_length = (srs: Pick<DensePointSeries, `x` | `y`>): number =>
84
+ Math.min(srs.x.length, srs.y.length)
85
+
86
+ const padded_extent = (min: number, max: number): Vec2 => {
87
+ if (!Number.isFinite(min) || !Number.isFinite(max)) return [0, 1]
88
+ if (min === max) return [min - 0.5, max + 0.5]
89
+ const padding = (max - min) * 0.05
90
+ return [min - padding, max + padding]
91
+ }
92
+
93
+ export function series_extents(series: readonly DensePointSeries[]): { x: Vec2; y: Vec2 } {
94
+ let x_min = Infinity
95
+ let x_max = -Infinity
96
+ let y_min = Infinity
97
+ let y_max = -Infinity
98
+
99
+ for (const srs of series) {
100
+ const n_points = series_length(srs)
101
+ for (let idx = 0; idx < n_points; idx++) {
102
+ const x = srs.x[idx]
103
+ const y = srs.y[idx]
104
+ if (Number.isFinite(x)) {
105
+ if (x < x_min) x_min = x
106
+ if (x > x_max) x_max = x
107
+ }
108
+ if (Number.isFinite(y)) {
109
+ if (y < y_min) y_min = y
110
+ if (y > y_max) y_max = y
111
+ }
112
+ }
113
+ }
114
+
115
+ return { x: padded_extent(x_min, x_max), y: padded_extent(y_min, y_max) }
116
+ }
117
+
118
+ export function bin_points(
119
+ series: readonly DensePointSeries[],
120
+ x_range: Vec2,
121
+ y_range: Vec2,
122
+ x_bins: number,
123
+ y_bins: number,
124
+ ): DensityBinResult {
125
+ const counts = new Uint32Array(x_bins * y_bins)
126
+ const first_point_idxs = new Int32Array(counts.length)
127
+ const first_series_idxs = new Int32Array(counts.length)
128
+ const [x_min, x_max] = range_bounds(x_range)
129
+ const [y_min, y_max] = range_bounds(y_range)
130
+ const x_span = x_max - x_min || 1
131
+ const y_span = y_max - y_min || 1
132
+ const x_bin_scale = x_bins / x_span
133
+ const y_bin_scale = y_bins / y_span
134
+ const last_x_bin = x_bins - 1
135
+ const last_y_bin = y_bins - 1
136
+ let visible_count = 0
137
+ let max_count = 0
138
+
139
+ for (let series_idx = 0; series_idx < series.length; series_idx++) {
140
+ const srs = series[series_idx]
141
+ const n_points = series_length(srs)
142
+ for (let point_idx = 0; point_idx < n_points; point_idx++) {
143
+ const x = srs.x[point_idx]
144
+ const y = srs.y[point_idx]
145
+ if (
146
+ !Number.isFinite(x) ||
147
+ !Number.isFinite(y) ||
148
+ x < x_min ||
149
+ x > x_max ||
150
+ y < y_min ||
151
+ y > y_max
152
+ )
153
+ continue
154
+
155
+ const raw_x_bin = Math.floor((x - x_min) * x_bin_scale)
156
+ const raw_y_bin = Math.floor((y - y_min) * y_bin_scale)
157
+ const x_bin = raw_x_bin > last_x_bin ? last_x_bin : raw_x_bin
158
+ const y_bin = raw_y_bin > last_y_bin ? last_y_bin : raw_y_bin
159
+ const idx = y_bin * x_bins + x_bin
160
+ const count = ++counts[idx]
161
+ if (count === 1) {
162
+ first_series_idxs[idx] = series_idx
163
+ first_point_idxs[idx] = point_idx
164
+ }
165
+ visible_count++
166
+ if (count > max_count) max_count = count
167
+ }
168
+ }
169
+
170
+ return {
171
+ counts,
172
+ first_point_idxs,
173
+ first_series_idxs,
174
+ max_count,
175
+ visible_count,
176
+ x_bins,
177
+ y_bins,
178
+ }
179
+ }
180
+
181
+ export function density_bin_at_point(
182
+ density: DensityBinResult,
183
+ pointer: Point2D,
184
+ plot_rect: PlotRect,
185
+ x_range: Vec2,
186
+ y_range: Vec2,
187
+ ): DensityBin | null {
188
+ const rel_x = pointer.x - plot_rect.x
189
+ const rel_y = pointer.y - plot_rect.y
190
+ if (rel_x < 0 || rel_y < 0 || rel_x >= plot_rect.width || rel_y >= plot_rect.height) {
191
+ return null
192
+ }
193
+
194
+ const x_bin = value_bin(rel_x, 0, plot_rect.width || 1, density.x_bins)
195
+ // Screen coordinates grow downward, while density bins use bottom-up data Y.
196
+ const y_bin = density.y_bins - 1 - value_bin(rel_y, 0, plot_rect.height || 1, density.y_bins)
197
+ const count = density.counts[y_bin * density.x_bins + x_bin]
198
+ if (!count) return null
199
+
200
+ const [x_min, x_max] = range_bounds(x_range)
201
+ const [y_min, y_max] = range_bounds(y_range)
202
+ const x_step = (x_max - x_min || 1) / density.x_bins
203
+ const y_step = (y_max - y_min || 1) / density.y_bins
204
+ return {
205
+ x_bin,
206
+ y_bin,
207
+ count,
208
+ x_range: [x_min + x_bin * x_step, x_min + (x_bin + 1) * x_step],
209
+ y_range: [y_min + y_bin * y_step, y_min + (y_bin + 1) * y_step],
210
+ }
211
+ }
212
+
213
+ export function should_render_points(
214
+ visible_count: number,
215
+ plot_area_px: number,
216
+ max_points: number,
217
+ max_points_per_px: number,
218
+ ): boolean {
219
+ return (
220
+ visible_count <= max_points ||
221
+ (plot_area_px > 0 && visible_count / plot_area_px <= max_points_per_px)
222
+ )
223
+ }
224
+
225
+ const internal_point = <Metadata>(
226
+ srs: DensePointSeries<Metadata>,
227
+ series_idx: number,
228
+ point_idx: number,
229
+ x_scale: (value: number) => number,
230
+ y_scale: (value: number) => number,
231
+ ): DenseInternalPoint<Metadata> => {
232
+ const x = srs.x[point_idx]
233
+ const y = srs.y[point_idx]
234
+ return {
235
+ x,
236
+ y,
237
+ cx: x_scale(x),
238
+ cy: y_scale(y),
239
+ series_idx,
240
+ point_idx,
241
+ metadata: get_metadata_at(srs.metadata, point_idx),
242
+ point_id: srs.point_ids?.[point_idx],
243
+ size_value: srs.size_values?.[point_idx],
244
+ }
245
+ }
246
+
247
+ export function build_pick_index<Metadata>(
248
+ series: readonly DensePointSeries<Metadata>[],
249
+ options: PickNearestOptions,
250
+ ): PickIndex<Metadata> {
251
+ const { x_range, y_range, x_scale, y_scale, radius_px = 12 } = options
252
+ const [x_min, x_max] = range_bounds(x_range)
253
+ const [y_min, y_max] = range_bounds(y_range)
254
+ const cell_size = Math.max(1, radius_px)
255
+ const cells = new Map<string, DenseInternalPoint<Metadata>[]>()
256
+
257
+ for (let series_idx = 0; series_idx < series.length; series_idx++) {
258
+ const srs = series[series_idx]
259
+ const n_points = series_length(srs)
260
+ for (let point_idx = 0; point_idx < n_points; point_idx++) {
261
+ const x = srs.x[point_idx]
262
+ const y = srs.y[point_idx]
263
+ if (!in_bounds(x, x_min, x_max) || !in_bounds(y, y_min, y_max)) continue
264
+
265
+ const point = internal_point(srs, series_idx, point_idx, x_scale, y_scale)
266
+ const key = cell_key(Math.floor(point.cx / cell_size), Math.floor(point.cy / cell_size))
267
+ const points = cells.get(key)
268
+ if (points) points.push(point)
269
+ else cells.set(key, [point])
270
+ }
271
+ }
272
+
273
+ return { cells, cell_size, radius_px }
274
+ }
275
+
276
+ export function pick_from_index<Metadata>(
277
+ index: PickIndex<Metadata>,
278
+ pointer: Point2D,
279
+ ): DenseInternalPoint<Metadata> | null {
280
+ const radius_sq = index.radius_px ** 2
281
+ const center_x = Math.floor(pointer.x / index.cell_size)
282
+ const center_y = Math.floor(pointer.y / index.cell_size)
283
+ const cell_radius = Math.ceil(index.radius_px / index.cell_size)
284
+ let best: DenseInternalPoint<Metadata> | null = null
285
+ let best_dist_sq = radius_sq
286
+
287
+ for (let y_bin = center_y - cell_radius; y_bin <= center_y + cell_radius; y_bin++) {
288
+ for (let x_bin = center_x - cell_radius; x_bin <= center_x + cell_radius; x_bin++) {
289
+ for (const point of index.cells.get(cell_key(x_bin, y_bin)) ?? []) {
290
+ const dx = pointer.x - point.cx
291
+ const dy = pointer.y - point.cy
292
+ const dist_sq = dx * dx + dy * dy
293
+ if (dist_sq > best_dist_sq) continue
294
+ best_dist_sq = dist_sq
295
+ best = point
296
+ }
297
+ }
298
+ }
299
+
300
+ return best
301
+ }
302
+
303
+ export function first_point_in_bin<Metadata>(
304
+ series: readonly DensePointSeries<Metadata>[],
305
+ density: DensityBinResult,
306
+ bin: Pick<DensityBin, `x_bin` | `y_bin`>,
307
+ x_scale: (value: number) => number,
308
+ y_scale: (value: number) => number,
309
+ ): DenseInternalPoint<Metadata> | null {
310
+ const idx = bin.y_bin * density.x_bins + bin.x_bin
311
+ if (!density.counts[idx]) return null
312
+ const series_idx = density.first_series_idxs[idx]
313
+ const point_idx = density.first_point_idxs[idx]
314
+ const srs = series[series_idx]
315
+ return srs ? internal_point(srs, series_idx, point_idx, x_scale, y_scale) : null
316
+ }
@@ -0,0 +1,184 @@
1
+ import { compute_element_placement, sample_series_obstacle_points } from './layout'
2
+ import type { Sides } from './layout'
3
+
4
+ // Shared "move a decoration (legend/colorbar) outside the plot when interior overlap is
5
+ // unavoidable" logic, reused by every 2D plot (ScatterPlot/BarPlot/Histogram/BinnedScatterPlot).
6
+
7
+ export const DECOR_GAP = 8 // px gap between an outside decoration and the plot edge
8
+
9
+ type Pt = { x: number; y: number }
10
+ type Size = { width: number; height: number }
11
+
12
+ // True when the user pinned a decoration via its style (an edge property or position:absolute),
13
+ // in which case auto-placement must leave it alone.
14
+ export const has_explicit_position = (style?: string | null): boolean =>
15
+ /(^|[;{]\s*)(top|bottom|left|right)\s*:|position\s*:\s*absolute/.test(style ?? ``)
16
+
17
+ // A decoration's pixel footprint: its rendered box once laid out, else `fallback` (offset dims read
18
+ // 0 before first render). Used to decide crowding before the real size is known.
19
+ export const measured_footprint = (el: HTMLElement | null | undefined, fallback: Size): Size =>
20
+ el?.offsetWidth && el?.offsetHeight
21
+ ? { width: el.offsetWidth, height: el.offsetHeight }
22
+ : fallback
23
+
24
+ // Build the obstacle field in normalized [0,1] plot coords from one or more series. Callers pass
25
+ // points already normalized to [0,1] with y=0 at the top. Built from data (not pixel scales) so the
26
+ // crowding decision below is independent of any margins reserved for outside decorations — this
27
+ // prevents a reserve -> data-shift -> re-decide oscillation loop.
28
+ export function build_obstacles_norm(
29
+ series: { points: Pt[]; draws_line?: boolean }[],
30
+ base_w: number,
31
+ base_h: number,
32
+ ): Pt[] {
33
+ const step = 12 / Math.max(base_w, base_h, 1)
34
+ const out: Pt[] = []
35
+ for (const srs of series) {
36
+ // avoid out.push(...arr): a long series would overflow the call-stack arg limit
37
+ for (const pt of sample_series_obstacle_points(
38
+ srs.points,
39
+ srs.draws_line ?? false,
40
+ step,
41
+ )) {
42
+ if (isFinite(pt.x) && isFinite(pt.y)) out.push(pt)
43
+ }
44
+ }
45
+ return out
46
+ }
47
+
48
+ // Build an obstacle segment for one bar, clipped to the visible [0,1]x[0,1] box (null if off-plot).
49
+ // Clipping is essential: when zoomed in, off-screen bars normalize to huge coords and would make
50
+ // sample_series_obstacle_points emit millions of points. `cross` is the fixed bar position; `a`/`b`
51
+ // are the span endpoints (baseline -> tip) along the other axis.
52
+ export function clip_bar(
53
+ vertical: boolean,
54
+ cross: number,
55
+ a: number,
56
+ b: number,
57
+ ): { points: Pt[]; draws_line: boolean } | null {
58
+ if (!(cross >= 0 && cross <= 1)) return null
59
+ const lo = Math.max(0, Math.min(a, b))
60
+ const hi = Math.min(1, Math.max(a, b))
61
+ if (hi < lo) return null
62
+ const points = vertical
63
+ ? [
64
+ { x: cross, y: lo },
65
+ { x: cross, y: hi },
66
+ ]
67
+ : [
68
+ { x: lo, y: cross },
69
+ { x: hi, y: cross },
70
+ ]
71
+ return { points, draws_line: true }
72
+ }
73
+
74
+ // A decoration is "crowded out" only when even the emptiest interior spot is at least this dense
75
+ // relative to the plot-wide average. A single clear region (e.g. one sparse quadrant) keeps the
76
+ // decoration inside; a roughly uniformly-full plot pushes it out. Using a relative ratio (not "any
77
+ // overlap") keeps the decision stable for wide decorations that merely clip a dense neighbor.
78
+ const CROWDING_RATIO = 0.5
79
+
80
+ // True when even the best interior spot for `footprint` (px) is too dense to host the decoration
81
+ function is_crowded(
82
+ obstacles: Pt[],
83
+ footprint: Size,
84
+ base_w: number,
85
+ base_h: number,
86
+ clearance: number,
87
+ ): boolean {
88
+ if (!obstacles.length || base_w <= 0 || base_h <= 0) return false
89
+ const fw = footprint.width / base_w
90
+ const fh = footprint.height / base_h
91
+ if (fw >= 1 || fh >= 1) return true // too big to fit inside -> outside
92
+ const best = compute_element_placement({
93
+ plot_bounds: { x: 0, y: 0, width: 1, height: 1 },
94
+ element_size: { width: fw, height: fh },
95
+ axis_clearance: clearance / Math.min(base_w, base_h),
96
+ points: obstacles,
97
+ })
98
+ const in_box = obstacles.filter(
99
+ (pt) => pt.x >= best.x && pt.x <= best.x + fw && pt.y >= best.y && pt.y <= best.y + fh,
100
+ ).length
101
+ // expected count if obstacles were spread uniformly = total * box-area fraction
102
+ return in_box > CROWDING_RATIO * obstacles.length * fw * fh
103
+ }
104
+
105
+ export type DecorationInput = { footprint: Size; clearance?: number }
106
+
107
+ export type DecorationLayout = {
108
+ pad: Required<Sides> // base_pad plus reservations for whatever moved outside
109
+ legend_outside: boolean
110
+ legend_pos: Pt // outside position (right or bottom margin; valid when legend_outside)
111
+ colorbar_outside: boolean
112
+ colorbar_style: string // wrapper style for the reserved margin ('' when interior)
113
+ }
114
+
115
+ // Decide which decorations must move outside (interior placement unavoidably overlaps data), the
116
+ // reserved padding, and the outside positions/styles. `base_pad` must be decoration-independent so
117
+ // the crowding decision can't see the reservation it produces.
118
+ export function place_decorations(cfg: {
119
+ base_pad: Required<Sides>
120
+ width: number
121
+ height: number
122
+ obstacles_norm: Pt[]
123
+ legend?: DecorationInput | null // null = no auto-placeable legend
124
+ colorbar?: (DecorationInput & { horizontal?: boolean }) | null
125
+ gap?: number
126
+ }): DecorationLayout {
127
+ const { base_pad, width, height, obstacles_norm, legend, colorbar, gap = DECOR_GAP } = cfg
128
+ const base_w = width - base_pad.l - base_pad.r
129
+ const base_h = height - base_pad.t - base_pad.b
130
+
131
+ const colorbar_outside =
132
+ colorbar != null &&
133
+ is_crowded(obstacles_norm, colorbar.footprint, base_w, base_h, colorbar.clearance ?? 15)
134
+ const cbar_horizontal = colorbar?.horizontal ?? false
135
+ const colorbar_takes_right = colorbar_outside && !cbar_horizontal // vertical colorbar -> right
136
+ const cbar_w = colorbar?.footprint.width ?? 0
137
+ const cbar_h = colorbar?.footprint.height ?? 0
138
+
139
+ const legend_outside =
140
+ legend != null &&
141
+ is_crowded(obstacles_norm, legend.footprint, base_w, base_h, legend.clearance ?? 12)
142
+ const legend_w = legend?.footprint.width ?? 0
143
+ const legend_h = legend?.footprint.height ?? 0
144
+ // Put a narrow/tall legend on the right (wastes less reserved margin than a wide bottom strip);
145
+ // a wide/short legend goes below. Skip the right side if a vertical colorbar already took it.
146
+ const legend_right =
147
+ legend_outside && !colorbar_takes_right && legend_h * base_w > legend_w * base_h
148
+ const legend_bottom = legend_outside && !legend_right
149
+
150
+ // colorbar: horizontal -> above (reserves top), vertical -> right. legend: right or bottom.
151
+ // A right legend replaces the plot's right margin (it sits flush at the edge), so reserve only its
152
+ // width + a gap on each side instead of stacking it on top of base_pad.r (which left a wide gap).
153
+ const pad: Required<Sides> = {
154
+ t: base_pad.t + (colorbar_outside && cbar_horizontal ? cbar_h + gap : 0),
155
+ l: base_pad.l,
156
+ b: base_pad.b + (legend_bottom ? legend_h + gap : 0),
157
+ r: legend_right
158
+ ? legend_w + 2 * gap
159
+ : base_pad.r + (colorbar_takes_right ? cbar_w + gap : 0),
160
+ }
161
+
162
+ const colorbar_style = !colorbar_outside
163
+ ? ``
164
+ : cbar_horizontal
165
+ ? `position: absolute; top: ${gap}px; inset-inline: 0; margin-inline: auto; width: calc(100% - ${
166
+ base_pad.l + base_pad.r
167
+ }px); max-width: 100%;`
168
+ : `position: absolute; right: ${gap}px; inset-block: 0; margin-block: auto; height: calc(100% - ${
169
+ base_pad.t + base_pad.b
170
+ }px); max-height: 100%;`
171
+
172
+ // right: flush to the right edge, vertically centered in the plot area; bottom: centered below
173
+ const legend_pos: Pt = legend_right
174
+ ? {
175
+ x: width - legend_w - gap,
176
+ y: base_pad.t + (height - base_pad.t - base_pad.b - legend_h) / 2,
177
+ }
178
+ : {
179
+ x: base_pad.l + (width - base_pad.l - base_pad.r - legend_w) / 2,
180
+ y: height - legend_h - gap,
181
+ }
182
+
183
+ return { pad, legend_outside, legend_pos, colorbar_outside, colorbar_style }
184
+ }
@@ -0,0 +1,122 @@
1
+ // Shared utilities for interactive axis functionality
2
+
3
+ import type {
4
+ AxisConfig,
5
+ AxisLoadError,
6
+ BarSeries,
7
+ DataLoaderFn,
8
+ DataLoaderResult,
9
+ DataSeries,
10
+ } from './types'
11
+
12
+ type AxisType = `x` | `x2` | `y` | `y2`
13
+
14
+ // Merge new series with preserved UI state from old series.
15
+ // Matches by stable id first, then by index only for ordered id-less series.
16
+ export function merge_series_state<T extends DataSeries | BarSeries>(
17
+ old_series: T[],
18
+ new_series: T[],
19
+ ): T[] {
20
+ // Build id lookup map for O(1) matching (string or number ids)
21
+ const by_id = new Map<string | number, T>()
22
+ for (const srs of old_series) {
23
+ if (srs.id !== undefined && srs.id !== ``) by_id.set(srs.id, srs)
24
+ }
25
+
26
+ return new_series.map((new_srs, idx) => {
27
+ const old_srs =
28
+ new_srs.id !== undefined && new_srs.id !== `` ? by_id.get(new_srs.id) : old_series[idx]
29
+ if (!old_srs) {
30
+ return new_srs
31
+ }
32
+
33
+ // Preserve UI state: visibility and styling from old series if not in new
34
+ const result: Record<string, unknown> = { ...new_srs }
35
+ result.visible ??= old_srs.visible
36
+
37
+ // Preserve style properties only when key exists in BOTH series (guards against
38
+ // cross-type injection when T is a union like DataSeries | BarSeries)
39
+ for (const key of [`point_style`, `line_style`, `color`]) {
40
+ if (key in old_srs && key in new_srs && result[key] === undefined) {
41
+ result[key] = old_srs[key as keyof typeof old_srs]
42
+ }
43
+ }
44
+ return result as T
45
+ })
46
+ }
47
+
48
+ // State accessors for axis change handler - enables sharing logic across plot components
49
+ export interface AxisChangeState<T extends DataSeries | BarSeries> {
50
+ get_axis: (axis: AxisType) => AxisConfig
51
+ set_axis: (axis: AxisType, config: AxisConfig) => void
52
+ get_series: () => T[]
53
+ set_series: (series: T[]) => void
54
+ get_loading: () => AxisType | null
55
+ set_loading: (axis: AxisType | null) => void
56
+ }
57
+
58
+ // Handle axis property change - loads new data via data_loader
59
+ // Returns a function bound to the component's state accessors
60
+ export function create_axis_change_handler<T extends DataSeries | BarSeries>(
61
+ state: AxisChangeState<T>,
62
+ data_loader: DataLoaderFn<Record<string, unknown>, T> | undefined,
63
+ on_axis_change?: (axis: AxisType, key: string, new_series: T[]) => void,
64
+ on_error?: (error: AxisLoadError) => void,
65
+ ): (axis: AxisType, key: string) => Promise<void> {
66
+ return async (axis: AxisType, key: string) => {
67
+ if (!data_loader || state.get_loading()) return
68
+
69
+ const axis_config = state.get_axis(axis)
70
+ const prev_key = axis_config.selected_key
71
+
72
+ // Skip if key unchanged AND series already loaded (allows initial load when series empty)
73
+ if (prev_key === key && state.get_series().length > 0) return
74
+
75
+ // Update selected_key immediately for UI feedback
76
+ state.set_axis(axis, { ...axis_config, selected_key: key })
77
+ state.set_loading(axis)
78
+
79
+ try {
80
+ const result: DataLoaderResult<Record<string, unknown>, T> = await data_loader(
81
+ axis,
82
+ key,
83
+ state.get_series(),
84
+ )
85
+
86
+ // Merge new series with preserved state from old series
87
+ const merged = merge_series_state(state.get_series(), result.series)
88
+ state.set_series(merged)
89
+
90
+ // Update axis label/unit if provided
91
+ if (result.axis_label || result.axis_unit) {
92
+ const current = state.get_axis(axis)
93
+ state.set_axis(axis, {
94
+ ...current,
95
+ label: result.axis_label ?? current.label,
96
+ unit: result.axis_unit ?? current.unit,
97
+ })
98
+ }
99
+
100
+ on_axis_change?.(axis, key, merged)
101
+ } catch (err) {
102
+ console.error(`Failed to load data for ${axis}=${key}:`, err)
103
+
104
+ // Revert selection
105
+ state.set_axis(axis, { ...state.get_axis(axis), selected_key: prev_key })
106
+
107
+ const message = err instanceof Error ? err.message : String(err)
108
+ on_error?.({ axis, key, message })
109
+ } finally {
110
+ state.set_loading(null)
111
+ }
112
+ }
113
+ }
114
+
115
+ // Constants for axis label foreignObject positioning (all values in px)
116
+ // Use minimal dimensions - overflow: visible handles any dropdown expansion
117
+ export const AXIS_LABEL_CONTAINER = {
118
+ width: 200, // container width for centering; dropdown can overflow
119
+ height: 24, // single line height; dropdown options overflow downward
120
+ x_offset: 100, // half of width for horizontal centering
121
+ y_offset: 12, // half of height for vertical centering
122
+ } as const
@@ -0,0 +1,83 @@
1
+ import type { D3ColorSchemeName, D3InterpolateName } from '$lib/colors'
2
+ import type { DenseInternalPoint } from '$lib/plot/adaptive-density'
3
+ import type ColorBar from '$lib/plot/ColorBar.svelte'
4
+ import type { LabelPlacementConfig, ScaleType, ScatterHandlerProps } from '$lib/plot/types'
5
+ import type { ComponentProps, Snippet } from 'svelte'
6
+
7
+ export type BinnedColorScaleConfig =
8
+ | {
9
+ type?: ScaleType
10
+ scheme?: D3ColorSchemeName | D3InterpolateName
11
+ value_range?: [number, number]
12
+ }
13
+ | D3InterpolateName
14
+
15
+ export type BinnedSizeScaleConfig = {
16
+ type?: ScaleType
17
+ radius_range?: [number, number]
18
+ value_range?: [number, number]
19
+ pick_radius?: number | `auto`
20
+ }
21
+
22
+ export type BinnedDensityConfig = {
23
+ bin_px?: number
24
+ color_scale?: BinnedColorScaleConfig
25
+ color_bar?: ComponentProps<typeof ColorBar> | null
26
+ auto_point_mode?: false | { max_points?: number; max_points_per_px?: number }
27
+ bin_click?: `zoom` | `point` | `none`
28
+ }
29
+
30
+ export type BinnedRefLine = {
31
+ x1: number
32
+ y1: number
33
+ x2: number
34
+ y2: number
35
+ color?: string
36
+ dash?: string
37
+ width?: number
38
+ }
39
+
40
+ export type BinnedOverlaysConfig = {
41
+ ref_lines?: BinnedRefLine[]
42
+ }
43
+
44
+ export type BinnedPointBasePayload<
45
+ Metadata extends Record<string, unknown> = Record<string, unknown>,
46
+ > = ScatterHandlerProps<Metadata> & {
47
+ point: DenseInternalPoint<Metadata>
48
+ color?: string
49
+ }
50
+
51
+ export type BinnedPointDataFn<
52
+ Metadata extends Record<string, unknown> = Record<string, unknown>,
53
+ PointData extends Record<string, unknown> = Record<string, unknown>,
54
+ > = (payload: BinnedPointBasePayload<Metadata>) => PointData | null | undefined
55
+
56
+ export type BinnedPointPayload<
57
+ Metadata extends Record<string, unknown> = Record<string, unknown>,
58
+ PointData extends Record<string, unknown> = Record<string, unknown>,
59
+ > = BinnedPointBasePayload<Metadata> & {
60
+ point_data?: PointData
61
+ }
62
+
63
+ export type BinnedPointTooltipPayload<
64
+ Metadata extends Record<string, unknown> = Record<string, unknown>,
65
+ PointData extends Record<string, unknown> = Record<string, unknown>,
66
+ > = BinnedPointPayload<Metadata, PointData>
67
+
68
+ export type BinnedPointLabelPlacementConfig = Partial<LabelPlacementConfig>
69
+
70
+ export type BinnedPointLabelsConfig<
71
+ Metadata extends Record<string, unknown> = Record<string, unknown>,
72
+ PointData extends Record<string, unknown> = Record<string, unknown>,
73
+ > = {
74
+ render?: Snippet<[BinnedPointPayload<Metadata, PointData>]>
75
+ measure_text?: (payload: BinnedPointPayload<Metadata, PointData>) => string
76
+ font_size?: string
77
+ max_count?: number
78
+ gap_px?: number
79
+ placement?: BinnedPointLabelPlacementConfig
80
+ leaders?: {
81
+ min_length_px?: number
82
+ }
83
+ }