matterviz 0.3.4 → 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 (852) 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/app.css +247 -0
  14. package/dist/src/lib/brillouin/BrillouinZone.svelte +549 -0
  15. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +144 -0
  16. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +146 -0
  17. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  18. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +476 -0
  19. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +92 -0
  20. package/dist/src/lib/brillouin/compute.ts +529 -0
  21. package/dist/src/lib/brillouin/index.ts +8 -0
  22. package/dist/src/lib/brillouin/types.ts +51 -0
  23. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +327 -0
  24. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +846 -0
  25. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +3193 -0
  26. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +94 -0
  27. package/dist/src/lib/chempot-diagram/chempot-worker.ts +11 -0
  28. package/dist/src/lib/chempot-diagram/color.ts +42 -0
  29. package/dist/src/lib/chempot-diagram/compute.ts +1014 -0
  30. package/dist/src/lib/chempot-diagram/index.ts +6 -0
  31. package/dist/src/lib/chempot-diagram/pointer.ts +56 -0
  32. package/dist/src/lib/chempot-diagram/temperature.ts +77 -0
  33. package/dist/src/lib/chempot-diagram/types.ts +130 -0
  34. package/dist/src/lib/colors/index.ts +249 -0
  35. package/dist/src/lib/composition/BarChart.svelte +297 -0
  36. package/dist/src/lib/composition/BubbleChart.svelte +218 -0
  37. package/dist/src/lib/composition/Composition.svelte +165 -0
  38. package/dist/src/lib/composition/Formula.svelte +268 -0
  39. package/dist/src/lib/composition/FormulaFilter.svelte +1257 -0
  40. package/dist/src/lib/composition/PieChart.svelte +323 -0
  41. package/dist/src/lib/composition/format.ts +155 -0
  42. package/dist/src/lib/composition/index.ts +37 -0
  43. package/dist/src/lib/composition/parse.ts +605 -0
  44. package/dist/src/lib/constants.ts +134 -0
  45. package/dist/src/lib/controls.ts +42 -0
  46. package/dist/src/lib/convex-hull/ConvexHull.svelte +157 -0
  47. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +825 -0
  48. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +1801 -0
  49. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +1398 -0
  50. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +535 -0
  51. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +125 -0
  52. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +929 -0
  53. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +131 -0
  54. package/dist/src/lib/convex-hull/GasPressureControls.svelte +247 -0
  55. package/dist/src/lib/convex-hull/StructurePopup.svelte +151 -0
  56. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +140 -0
  57. package/dist/src/lib/convex-hull/barycentric-coords.ts +246 -0
  58. package/dist/src/lib/convex-hull/demo-temperature.ts +63 -0
  59. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +405 -0
  60. package/dist/src/lib/convex-hull/helpers.ts +932 -0
  61. package/dist/src/lib/convex-hull/index.ts +202 -0
  62. package/dist/src/lib/convex-hull/thermodynamics.ts +2192 -0
  63. package/dist/src/lib/convex-hull/types.ts +267 -0
  64. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +311 -0
  65. package/dist/src/lib/coordination/calc-coordination.ts +93 -0
  66. package/dist/src/lib/coordination/index.ts +9 -0
  67. package/dist/src/lib/effects.svelte.ts +48 -0
  68. package/dist/src/lib/element/BohrAtom.svelte +147 -0
  69. package/dist/src/lib/element/ElementHeading.svelte +26 -0
  70. package/dist/src/lib/element/ElementPhoto.svelte +57 -0
  71. package/dist/src/lib/element/ElementStats.svelte +80 -0
  72. package/dist/src/lib/element/ElementTile.svelte +484 -0
  73. package/dist/src/lib/element/data.json.gz.d.ts +4 -0
  74. package/dist/src/lib/element/data.ts +14 -0
  75. package/dist/src/lib/element/index.ts +8 -0
  76. package/dist/src/lib/element/types.ts +62 -0
  77. package/dist/src/lib/feedback/ClickFeedback.svelte +58 -0
  78. package/dist/src/lib/feedback/DragOverlay.svelte +42 -0
  79. package/dist/src/lib/feedback/index.ts +4 -0
  80. package/dist/src/lib/fermi-surface/FermiSlice.svelte +189 -0
  81. package/dist/src/lib/fermi-surface/FermiSurface.svelte +600 -0
  82. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +448 -0
  83. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +794 -0
  84. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +111 -0
  85. package/dist/src/lib/fermi-surface/compute.ts +728 -0
  86. package/dist/src/lib/fermi-surface/constants.ts +32 -0
  87. package/dist/src/lib/fermi-surface/export.ts +64 -0
  88. package/dist/src/lib/fermi-surface/index.ts +14 -0
  89. package/dist/src/lib/fermi-surface/marching-cubes.ts +3 -0
  90. package/dist/src/lib/fermi-surface/parse.ts +574 -0
  91. package/dist/src/lib/fermi-surface/symmetry.ts +56 -0
  92. package/dist/src/lib/fermi-surface/types.ts +159 -0
  93. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +1545 -0
  94. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  95. package/dist/src/lib/heatmap-matrix/index.ts +167 -0
  96. package/dist/src/lib/heatmap-matrix/shared.ts +7 -0
  97. package/dist/src/lib/icons.ts +650 -0
  98. package/dist/src/lib/index.ts +61 -0
  99. package/dist/src/lib/io/decompress.ts +92 -0
  100. package/dist/src/lib/io/export.ts +385 -0
  101. package/dist/src/lib/io/fetch.ts +46 -0
  102. package/dist/src/lib/io/file-drop.ts +51 -0
  103. package/dist/src/lib/io/index.ts +7 -0
  104. package/dist/src/lib/io/is-binary.ts +24 -0
  105. package/dist/src/lib/io/types.ts +8 -0
  106. package/dist/src/lib/io/url-drop.ts +141 -0
  107. package/dist/src/lib/isosurface/Isosurface.svelte +285 -0
  108. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +277 -0
  109. package/dist/src/lib/isosurface/index.ts +7 -0
  110. package/dist/src/lib/isosurface/parse.ts +656 -0
  111. package/dist/src/lib/isosurface/slice.ts +175 -0
  112. package/dist/src/lib/isosurface/types.ts +309 -0
  113. package/dist/src/lib/labels.ts +320 -0
  114. package/dist/src/lib/layout/FullscreenToggle.svelte +50 -0
  115. package/dist/src/lib/layout/InfoCard.svelte +120 -0
  116. package/dist/src/lib/layout/InfoTag.svelte +185 -0
  117. package/dist/src/lib/layout/PropertyFilter.svelte +246 -0
  118. package/dist/src/lib/layout/SettingsSection.svelte +148 -0
  119. package/dist/src/lib/layout/SubpageGrid.svelte +82 -0
  120. package/dist/src/lib/layout/fullscreen.ts +65 -0
  121. package/dist/src/lib/layout/index.ts +11 -0
  122. package/dist/src/lib/layout/json-tree/JsonNode.svelte +548 -0
  123. package/dist/src/lib/layout/json-tree/JsonTree.svelte +1230 -0
  124. package/dist/src/lib/layout/json-tree/JsonValue.svelte +334 -0
  125. package/dist/src/lib/layout/json-tree/index.ts +3 -0
  126. package/dist/src/lib/layout/json-tree/types.ts +126 -0
  127. package/dist/src/lib/layout/json-tree/utils.ts +682 -0
  128. package/dist/src/lib/marching-cubes.ts +614 -0
  129. package/dist/src/lib/math.ts +1081 -0
  130. package/dist/src/lib/overlays/ContextMenu.svelte +162 -0
  131. package/dist/src/lib/overlays/CopyButton.svelte +45 -0
  132. package/dist/src/lib/overlays/DragControlTab.svelte +98 -0
  133. package/dist/src/lib/overlays/DraggablePane.svelte +487 -0
  134. package/dist/src/lib/overlays/InfoPaneCards.svelte +149 -0
  135. package/dist/src/lib/overlays/index.ts +3 -0
  136. package/dist/src/lib/periodic-table/PeriodicTable.svelte +469 -0
  137. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +557 -0
  138. package/dist/src/lib/periodic-table/PropertySelect.svelte +37 -0
  139. package/dist/src/lib/periodic-table/index.ts +12 -0
  140. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1086 -0
  141. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +444 -0
  142. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
  143. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  144. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  145. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +203 -0
  146. package/dist/src/lib/phase-diagram/build-diagram.ts +186 -0
  147. package/dist/src/lib/phase-diagram/colors.ts +58 -0
  148. package/dist/src/lib/phase-diagram/diagram-input.ts +40 -0
  149. package/dist/src/lib/phase-diagram/index.ts +13 -0
  150. package/dist/src/lib/phase-diagram/parse.ts +348 -0
  151. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +1023 -0
  152. package/dist/src/lib/phase-diagram/types.ts +144 -0
  153. package/dist/src/lib/phase-diagram/utils.ts +775 -0
  154. package/dist/src/lib/plot/AxisLabel.svelte +51 -0
  155. package/dist/src/lib/plot/BarPlot.svelte +2113 -0
  156. package/dist/src/lib/plot/BarPlotControls.svelte +66 -0
  157. package/dist/src/lib/plot/BinnedScatterPlot.svelte +1114 -0
  158. package/dist/src/lib/plot/ColorBar.svelte +721 -0
  159. package/dist/src/lib/plot/ColorScaleSelect.svelte +54 -0
  160. package/dist/src/lib/plot/ElementScatter.svelte +63 -0
  161. package/dist/src/lib/plot/FillArea.svelte +223 -0
  162. package/dist/src/lib/plot/Histogram.svelte +1558 -0
  163. package/dist/src/lib/plot/HistogramControls.svelte +212 -0
  164. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +96 -0
  165. package/dist/src/lib/plot/Line.svelte +84 -0
  166. package/dist/src/lib/plot/PlotAxis.svelte +169 -0
  167. package/dist/src/lib/plot/PlotControls.svelte +537 -0
  168. package/dist/src/lib/plot/PlotLegend.svelte +569 -0
  169. package/dist/src/lib/plot/PlotTooltip.svelte +67 -0
  170. package/dist/src/lib/plot/PortalSelect.svelte +253 -0
  171. package/dist/src/lib/plot/ReferenceLine3D.svelte +156 -0
  172. package/dist/src/lib/plot/ReferencePlane.svelte +175 -0
  173. package/dist/src/lib/plot/ScatterPlot.svelte +2778 -0
  174. package/dist/src/lib/plot/ScatterPlot3D.svelte +529 -0
  175. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +437 -0
  176. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +912 -0
  177. package/dist/src/lib/plot/ScatterPlotControls.svelte +306 -0
  178. package/dist/src/lib/plot/ScatterPoint.svelte +182 -0
  179. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +293 -0
  180. package/dist/src/lib/plot/Surface3D.svelte +197 -0
  181. package/dist/src/lib/plot/ZeroLines.svelte +97 -0
  182. package/dist/src/lib/plot/ZoomRect.svelte +23 -0
  183. package/dist/src/lib/plot/adaptive-density.ts +316 -0
  184. package/dist/src/lib/plot/auto-place.ts +184 -0
  185. package/dist/src/lib/plot/axis-utils.ts +122 -0
  186. package/dist/src/lib/plot/binned-scatter-types.ts +83 -0
  187. package/dist/src/lib/plot/data-cleaning.ts +1069 -0
  188. package/dist/src/lib/plot/data-transform.ts +69 -0
  189. package/dist/src/lib/plot/defaults.ts +9 -0
  190. package/dist/src/lib/plot/fill-utils.ts +494 -0
  191. package/dist/src/lib/plot/hover-lock.svelte.ts +60 -0
  192. package/dist/src/lib/plot/index.ts +53 -0
  193. package/dist/src/lib/plot/interactions.ts +119 -0
  194. package/dist/src/lib/plot/layout.ts +425 -0
  195. package/dist/src/lib/plot/reference-line.ts +426 -0
  196. package/dist/src/lib/plot/scales.ts +654 -0
  197. package/dist/src/lib/plot/svg.ts +23 -0
  198. package/dist/src/lib/plot/types.ts +1144 -0
  199. package/dist/src/lib/plot/utils/label-placement.ts +541 -0
  200. package/dist/src/lib/plot/utils/series-visibility.ts +140 -0
  201. package/dist/src/lib/plot/utils.ts +11 -0
  202. package/dist/src/lib/rdf/RdfPlot.svelte +247 -0
  203. package/dist/src/lib/rdf/calc-rdf.ts +167 -0
  204. package/dist/src/lib/rdf/index.ts +27 -0
  205. package/dist/src/lib/sanitize.ts +126 -0
  206. package/dist/src/lib/settings.ts +1479 -0
  207. package/dist/src/lib/spectral/Bands.svelte +1040 -0
  208. package/dist/src/lib/spectral/BandsAndDos.svelte +134 -0
  209. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +252 -0
  210. package/dist/src/lib/spectral/Dos.svelte +697 -0
  211. package/dist/src/lib/spectral/helpers.ts +1381 -0
  212. package/dist/src/lib/spectral/index.ts +8 -0
  213. package/dist/src/lib/spectral/types.ts +112 -0
  214. package/dist/src/lib/state.svelte.ts +64 -0
  215. package/dist/src/lib/structure/Arrow.svelte +72 -0
  216. package/dist/src/lib/structure/AtomLegend.svelte +815 -0
  217. package/dist/src/lib/structure/Bond.svelte +140 -0
  218. package/dist/src/lib/structure/CanvasTooltip.svelte +33 -0
  219. package/dist/src/lib/structure/CellSelect.svelte +349 -0
  220. package/dist/src/lib/structure/Cylinder.svelte +45 -0
  221. package/dist/src/lib/structure/Lattice.svelte +196 -0
  222. package/dist/src/lib/structure/Structure.svelte +2248 -0
  223. package/dist/src/lib/structure/StructureControls.svelte +1273 -0
  224. package/dist/src/lib/structure/StructureExportPane.svelte +252 -0
  225. package/dist/src/lib/structure/StructureInfoPane.svelte +737 -0
  226. package/dist/src/lib/structure/StructureScene.svelte +2255 -0
  227. package/dist/src/lib/structure/atom-properties.ts +316 -0
  228. package/dist/src/lib/structure/bond-order-perception.ts +447 -0
  229. package/dist/src/lib/structure/bonding.ts +944 -0
  230. package/dist/src/lib/structure/export.ts +861 -0
  231. package/dist/src/lib/structure/index.ts +291 -0
  232. package/dist/src/lib/structure/label-placement.ts +130 -0
  233. package/dist/src/lib/structure/measure.ts +45 -0
  234. package/dist/src/lib/structure/parse.ts +1705 -0
  235. package/dist/src/lib/structure/partial-occupancy.ts +183 -0
  236. package/dist/src/lib/structure/pbc.ts +164 -0
  237. package/dist/src/lib/structure/supercell.ts +226 -0
  238. package/dist/src/lib/structure/validation.ts +11 -0
  239. package/dist/src/lib/symmetry/SymmetryStats.svelte +226 -0
  240. package/dist/src/lib/symmetry/WyckoffTable.svelte +120 -0
  241. package/dist/src/lib/symmetry/cell-transform.ts +118 -0
  242. package/dist/src/lib/symmetry/index.ts +348 -0
  243. package/dist/src/lib/symmetry/spacegroups.ts +404 -0
  244. package/dist/src/lib/table/HeatmapTable.svelte +1833 -0
  245. package/dist/src/lib/table/ToggleMenu.svelte +385 -0
  246. package/dist/src/lib/table/index.ts +139 -0
  247. package/dist/src/lib/theme/ThemeControl.svelte +53 -0
  248. package/dist/src/lib/theme/index.ts +107 -0
  249. package/dist/src/lib/theme/themes.mjs +297 -0
  250. package/dist/src/lib/time.ts +71 -0
  251. package/dist/src/lib/tooltip/TooltipContent.svelte +58 -0
  252. package/dist/src/lib/tooltip/index.ts +2 -0
  253. package/dist/src/lib/tooltip/types.ts +13 -0
  254. package/dist/src/lib/trajectory/Trajectory.svelte +1545 -0
  255. package/dist/src/lib/trajectory/TrajectoryError.svelte +128 -0
  256. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +357 -0
  257. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +313 -0
  258. package/dist/src/lib/trajectory/constants.ts +7 -0
  259. package/dist/src/lib/trajectory/extract.ts +196 -0
  260. package/dist/src/lib/trajectory/format-detect.ts +96 -0
  261. package/dist/src/lib/trajectory/frame-reader.ts +456 -0
  262. package/dist/src/lib/trajectory/helpers.ts +217 -0
  263. package/dist/src/lib/trajectory/index.ts +218 -0
  264. package/dist/src/lib/trajectory/parse/ase.ts +109 -0
  265. package/dist/src/lib/trajectory/parse/hdf5.ts +173 -0
  266. package/dist/src/lib/trajectory/parse/index.ts +411 -0
  267. package/dist/src/lib/trajectory/parse/lammps.ts +215 -0
  268. package/dist/src/lib/trajectory/parse/vasp.ts +102 -0
  269. package/dist/src/lib/trajectory/parse/xyz.ts +143 -0
  270. package/dist/src/lib/trajectory/plotting.ts +599 -0
  271. package/dist/src/lib/trajectory/types.ts +13 -0
  272. package/dist/src/lib/utils.ts +56 -0
  273. package/dist/src/lib/xrd/XrdPlot.svelte +615 -0
  274. package/dist/src/lib/xrd/broadening.ts +130 -0
  275. package/dist/src/lib/xrd/calc-xrd.ts +397 -0
  276. package/dist/src/lib/xrd/index.ts +38 -0
  277. package/dist/src/lib/xrd/parse.ts +858 -0
  278. package/dist/webview.js +29421 -0
  279. package/icon.png +0 -0
  280. package/license +1 -1
  281. package/matterviz-0.3.2.vsix +0 -0
  282. package/matterviz-0.3.4.vsix +0 -0
  283. package/matterviz-0.3.5.vsix +0 -0
  284. package/package.json +1461 -231
  285. package/readme.md +171 -98
  286. package/scripts/sync-config.ts +101 -0
  287. package/src/declarations.d.ts +2 -0
  288. package/src/extension.ts +972 -0
  289. package/src/node-io.ts +65 -0
  290. package/src/types.ts +17 -0
  291. package/src/webview/JsonBrowser.svelte +1079 -0
  292. package/src/webview/PlotPanel.svelte +346 -0
  293. package/src/webview/detect.ts +444 -0
  294. package/src/webview/main.ts +764 -0
  295. package/src/webview/plot-utils.ts +250 -0
  296. package/test-fixtures/all-viz-types.json.gz +0 -0
  297. package/test-fixtures/plot-demo-data.json.gz +0 -0
  298. package/tests/detect.test.ts +604 -0
  299. package/tests/extension.test.ts +2041 -0
  300. package/tests/node-io.test.ts +39 -0
  301. package/tests/plot-utils.test.ts +302 -0
  302. package/tests/vite-plugin-json-gz.test.ts +114 -0
  303. package/tests/vscode-mock.ts +18 -0
  304. package/tests/webview.test.ts +231 -0
  305. package/tsconfig.json +20 -0
  306. package/vite-plugin-json-gz.ts +29 -0
  307. package/vite.config.ts +34 -0
  308. package/vite.extension.config.ts +34 -0
  309. package/dist/EmptyState.svelte.d.ts +0 -9
  310. package/dist/FilePicker.svelte +0 -360
  311. package/dist/FilePicker.svelte.d.ts +0 -17
  312. package/dist/Icon.svelte.d.ts +0 -13
  313. package/dist/MillerIndexInput.svelte +0 -66
  314. package/dist/MillerIndexInput.svelte.d.ts +0 -7
  315. package/dist/api/mp.d.ts +0 -6
  316. package/dist/api/mp.js +0 -22
  317. package/dist/api/optimade.d.ts +0 -45
  318. package/dist/api/optimade.js +0 -135
  319. package/dist/app.css +0 -240
  320. package/dist/brillouin/BrillouinZone.svelte +0 -543
  321. package/dist/brillouin/BrillouinZone.svelte.d.ts +0 -83
  322. package/dist/brillouin/BrillouinZoneControls.svelte +0 -144
  323. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +0 -17
  324. package/dist/brillouin/BrillouinZoneExportPane.svelte +0 -148
  325. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +0 -15
  326. package/dist/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  327. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +0 -13
  328. package/dist/brillouin/BrillouinZoneScene.svelte +0 -476
  329. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +0 -48
  330. package/dist/brillouin/BrillouinZoneTooltip.svelte +0 -92
  331. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +0 -8
  332. package/dist/brillouin/compute.d.ts +0 -17
  333. package/dist/brillouin/compute.js +0 -422
  334. package/dist/brillouin/index.d.ts +0 -8
  335. package/dist/brillouin/index.js +0 -8
  336. package/dist/brillouin/types.d.ts +0 -48
  337. package/dist/brillouin/types.js +0 -1
  338. package/dist/chempot-diagram/ChemPotDiagram.svelte +0 -327
  339. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +0 -13
  340. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +0 -847
  341. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +0 -16
  342. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +0 -3194
  343. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +0 -16
  344. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +0 -7
  345. package/dist/chempot-diagram/async-compute.svelte.d.ts +0 -3
  346. package/dist/chempot-diagram/async-compute.svelte.js +0 -77
  347. package/dist/chempot-diagram/chempot-worker.d.ts +0 -1
  348. package/dist/chempot-diagram/chempot-worker.js +0 -11
  349. package/dist/chempot-diagram/color.d.ts +0 -10
  350. package/dist/chempot-diagram/color.js +0 -32
  351. package/dist/chempot-diagram/compute.d.ts +0 -48
  352. package/dist/chempot-diagram/compute.js +0 -812
  353. package/dist/chempot-diagram/index.d.ts +0 -6
  354. package/dist/chempot-diagram/index.js +0 -6
  355. package/dist/chempot-diagram/pointer.d.ts +0 -16
  356. package/dist/chempot-diagram/pointer.js +0 -40
  357. package/dist/chempot-diagram/temperature.d.ts +0 -15
  358. package/dist/chempot-diagram/temperature.js +0 -36
  359. package/dist/chempot-diagram/types.d.ts +0 -86
  360. package/dist/chempot-diagram/types.js +0 -28
  361. package/dist/colors/index.d.ts +0 -47
  362. package/dist/colors/index.js +0 -203
  363. package/dist/composition/BarChart.svelte +0 -297
  364. package/dist/composition/BarChart.svelte.d.ts +0 -39
  365. package/dist/composition/BubbleChart.svelte +0 -218
  366. package/dist/composition/BubbleChart.svelte.d.ts +0 -28
  367. package/dist/composition/Composition.svelte +0 -164
  368. package/dist/composition/Composition.svelte.d.ts +0 -15
  369. package/dist/composition/Formula.svelte +0 -265
  370. package/dist/composition/Formula.svelte.d.ts +0 -19
  371. package/dist/composition/FormulaFilter.svelte +0 -1259
  372. package/dist/composition/FormulaFilter.svelte.d.ts +0 -51
  373. package/dist/composition/PieChart.svelte +0 -323
  374. package/dist/composition/PieChart.svelte.d.ts +0 -37
  375. package/dist/composition/format.d.ts +0 -15
  376. package/dist/composition/format.js +0 -109
  377. package/dist/composition/index.d.ts +0 -20
  378. package/dist/composition/index.js +0 -14
  379. package/dist/composition/parse.d.ts +0 -55
  380. package/dist/composition/parse.js +0 -459
  381. package/dist/constants.d.ts +0 -29
  382. package/dist/constants.js +0 -105
  383. package/dist/controls.d.ts +0 -14
  384. package/dist/controls.js +0 -30
  385. package/dist/convex-hull/ConvexHull.svelte +0 -157
  386. package/dist/convex-hull/ConvexHull.svelte.d.ts +0 -13
  387. package/dist/convex-hull/ConvexHull2D.svelte +0 -813
  388. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +0 -11
  389. package/dist/convex-hull/ConvexHull3D.svelte +0 -1788
  390. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +0 -8
  391. package/dist/convex-hull/ConvexHull4D.svelte +0 -1374
  392. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +0 -8
  393. package/dist/convex-hull/ConvexHullControls.svelte +0 -546
  394. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +0 -48
  395. package/dist/convex-hull/ConvexHullInfoPane.svelte +0 -115
  396. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +0 -18
  397. package/dist/convex-hull/ConvexHullStats.svelte +0 -905
  398. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +0 -15
  399. package/dist/convex-hull/ConvexHullTooltip.svelte +0 -131
  400. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +0 -33
  401. package/dist/convex-hull/GasPressureControls.svelte +0 -247
  402. package/dist/convex-hull/GasPressureControls.svelte.d.ts +0 -11
  403. package/dist/convex-hull/StructurePopup.svelte +0 -116
  404. package/dist/convex-hull/StructurePopup.svelte.d.ts +0 -18
  405. package/dist/convex-hull/TemperatureSlider.svelte +0 -137
  406. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +0 -8
  407. package/dist/convex-hull/barycentric-coords.d.ts +0 -18
  408. package/dist/convex-hull/barycentric-coords.js +0 -182
  409. package/dist/convex-hull/demo-temperature.d.ts +0 -6
  410. package/dist/convex-hull/demo-temperature.js +0 -40
  411. package/dist/convex-hull/gas-thermodynamics.d.ts +0 -16
  412. package/dist/convex-hull/gas-thermodynamics.js +0 -316
  413. package/dist/convex-hull/helpers.d.ts +0 -103
  414. package/dist/convex-hull/helpers.js +0 -671
  415. package/dist/convex-hull/index.d.ts +0 -118
  416. package/dist/convex-hull/index.js +0 -57
  417. package/dist/convex-hull/thermodynamics.d.ts +0 -66
  418. package/dist/convex-hull/thermodynamics.js +0 -1752
  419. package/dist/convex-hull/types.d.ts +0 -162
  420. package/dist/convex-hull/types.js +0 -36
  421. package/dist/coordination/CoordinationBarPlot.svelte +0 -311
  422. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +0 -30
  423. package/dist/coordination/calc-coordination.d.ts +0 -15
  424. package/dist/coordination/calc-coordination.js +0 -63
  425. package/dist/coordination/index.d.ts +0 -8
  426. package/dist/coordination/index.js +0 -7
  427. package/dist/element/BohrAtom.svelte +0 -149
  428. package/dist/element/BohrAtom.svelte.d.ts +0 -20
  429. package/dist/element/ElementHeading.svelte +0 -26
  430. package/dist/element/ElementHeading.svelte.d.ts +0 -8
  431. package/dist/element/ElementPhoto.svelte +0 -57
  432. package/dist/element/ElementPhoto.svelte.d.ts +0 -9
  433. package/dist/element/ElementStats.svelte +0 -80
  434. package/dist/element/ElementStats.svelte.d.ts +0 -8
  435. package/dist/element/ElementTile.svelte +0 -484
  436. package/dist/element/ElementTile.svelte.d.ts +0 -29
  437. package/dist/element/Nucleus.svelte.d.ts +0 -17
  438. package/dist/element/data.d.ts +0 -3
  439. package/dist/element/data.js +0 -2
  440. package/dist/element/data.json.gz.d.ts +0 -2
  441. package/dist/element/index.d.ts +0 -8
  442. package/dist/element/index.js +0 -8
  443. package/dist/element/types.d.ts +0 -57
  444. package/dist/element/types.js +0 -1
  445. package/dist/feedback/ClickFeedback.svelte +0 -58
  446. package/dist/feedback/ClickFeedback.svelte.d.ts +0 -12
  447. package/dist/feedback/DragOverlay.svelte +0 -42
  448. package/dist/feedback/DragOverlay.svelte.d.ts +0 -7
  449. package/dist/feedback/Spinner.svelte.d.ts +0 -7
  450. package/dist/feedback/StatusMessage.svelte.d.ts +0 -9
  451. package/dist/feedback/index.d.ts +0 -4
  452. package/dist/feedback/index.js +0 -4
  453. package/dist/fermi-surface/FermiSlice.svelte +0 -189
  454. package/dist/fermi-surface/FermiSlice.svelte.d.ts +0 -24
  455. package/dist/fermi-surface/FermiSurface.svelte +0 -597
  456. package/dist/fermi-surface/FermiSurface.svelte.d.ts +0 -83
  457. package/dist/fermi-surface/FermiSurfaceControls.svelte +0 -452
  458. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +0 -35
  459. package/dist/fermi-surface/FermiSurfaceScene.svelte +0 -792
  460. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +0 -50
  461. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  462. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +0 -8
  463. package/dist/fermi-surface/compute.d.ts +0 -5
  464. package/dist/fermi-surface/compute.js +0 -538
  465. package/dist/fermi-surface/constants.d.ts +0 -9
  466. package/dist/fermi-surface/constants.js +0 -27
  467. package/dist/fermi-surface/export.d.ts +0 -5
  468. package/dist/fermi-surface/export.js +0 -63
  469. package/dist/fermi-surface/index.d.ts +0 -12
  470. package/dist/fermi-surface/index.js +0 -13
  471. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  472. package/dist/fermi-surface/marching-cubes.js +0 -2
  473. package/dist/fermi-surface/parse.d.ts +0 -2
  474. package/dist/fermi-surface/parse.js +0 -495
  475. package/dist/fermi-surface/symmetry.d.ts +0 -3
  476. package/dist/fermi-surface/symmetry.js +0 -46
  477. package/dist/fermi-surface/types.d.ts +0 -113
  478. package/dist/fermi-surface/types.js +0 -4
  479. package/dist/heatmap-matrix/HeatmapMatrix.svelte +0 -1527
  480. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +0 -110
  481. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  482. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +0 -30
  483. package/dist/heatmap-matrix/index.d.ts +0 -53
  484. package/dist/heatmap-matrix/index.js +0 -100
  485. package/dist/heatmap-matrix/shared.d.ts +0 -2
  486. package/dist/heatmap-matrix/shared.js +0 -4
  487. package/dist/icons.d.ts +0 -569
  488. package/dist/icons.js +0 -648
  489. package/dist/index.d.ts +0 -39
  490. package/dist/index.js +0 -39
  491. package/dist/io/decompress.d.ts +0 -10
  492. package/dist/io/decompress.js +0 -69
  493. package/dist/io/export.d.ts +0 -16
  494. package/dist/io/export.js +0 -312
  495. package/dist/io/fetch.d.ts +0 -5
  496. package/dist/io/fetch.js +0 -39
  497. package/dist/io/file-drop.d.ts +0 -7
  498. package/dist/io/file-drop.js +0 -43
  499. package/dist/io/index.d.ts +0 -7
  500. package/dist/io/index.js +0 -7
  501. package/dist/io/is-binary.d.ts +0 -1
  502. package/dist/io/is-binary.js +0 -5
  503. package/dist/io/types.d.ts +0 -8
  504. package/dist/io/types.js +0 -1
  505. package/dist/io/url-drop.d.ts +0 -2
  506. package/dist/io/url-drop.js +0 -117
  507. package/dist/isosurface/Isosurface.svelte +0 -285
  508. package/dist/isosurface/Isosurface.svelte.d.ts +0 -8
  509. package/dist/isosurface/IsosurfaceControls.svelte +0 -291
  510. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +0 -9
  511. package/dist/isosurface/index.d.ts +0 -5
  512. package/dist/isosurface/index.js +0 -6
  513. package/dist/isosurface/parse.d.ts +0 -6
  514. package/dist/isosurface/parse.js +0 -553
  515. package/dist/isosurface/slice.d.ts +0 -11
  516. package/dist/isosurface/slice.js +0 -140
  517. package/dist/isosurface/types.d.ts +0 -56
  518. package/dist/isosurface/types.js +0 -227
  519. package/dist/labels.d.ts +0 -53
  520. package/dist/labels.js +0 -274
  521. package/dist/layout/FullscreenToggle.svelte +0 -50
  522. package/dist/layout/FullscreenToggle.svelte.d.ts +0 -7
  523. package/dist/layout/InfoCard.svelte +0 -120
  524. package/dist/layout/InfoCard.svelte.d.ts +0 -21
  525. package/dist/layout/InfoTag.svelte +0 -183
  526. package/dist/layout/InfoTag.svelte.d.ts +0 -19
  527. package/dist/layout/PropertyFilter.svelte +0 -244
  528. package/dist/layout/PropertyFilter.svelte.d.ts +0 -24
  529. package/dist/layout/SettingsSection.svelte +0 -148
  530. package/dist/layout/SettingsSection.svelte.d.ts +0 -17
  531. package/dist/layout/SubpageGrid.svelte +0 -82
  532. package/dist/layout/SubpageGrid.svelte.d.ts +0 -14
  533. package/dist/layout/fullscreen.d.ts +0 -9
  534. package/dist/layout/fullscreen.js +0 -53
  535. package/dist/layout/index.d.ts +0 -10
  536. package/dist/layout/index.js +0 -8
  537. package/dist/layout/json-tree/JsonNode.svelte +0 -547
  538. package/dist/layout/json-tree/JsonNode.svelte.d.ts +0 -11
  539. package/dist/layout/json-tree/JsonTree.svelte +0 -1222
  540. package/dist/layout/json-tree/JsonTree.svelte.d.ts +0 -6
  541. package/dist/layout/json-tree/JsonValue.svelte +0 -334
  542. package/dist/layout/json-tree/JsonValue.svelte.d.ts +0 -9
  543. package/dist/layout/json-tree/index.d.ts +0 -3
  544. package/dist/layout/json-tree/index.js +0 -3
  545. package/dist/layout/json-tree/types.d.ts +0 -73
  546. package/dist/layout/json-tree/types.js +0 -3
  547. package/dist/layout/json-tree/utils.d.ts +0 -29
  548. package/dist/layout/json-tree/utils.js +0 -648
  549. package/dist/marching-cubes.d.ts +0 -14
  550. package/dist/marching-cubes.js +0 -542
  551. package/dist/math.d.ts +0 -91
  552. package/dist/math.js +0 -896
  553. package/dist/overlays/ContextMenu.svelte +0 -162
  554. package/dist/overlays/ContextMenu.svelte.d.ts +0 -25
  555. package/dist/overlays/DraggablePane.svelte +0 -564
  556. package/dist/overlays/DraggablePane.svelte.d.ts +0 -36
  557. package/dist/overlays/index.d.ts +0 -2
  558. package/dist/overlays/index.js +0 -2
  559. package/dist/periodic-table/PeriodicTable.svelte +0 -469
  560. package/dist/periodic-table/PeriodicTable.svelte.d.ts +0 -55
  561. package/dist/periodic-table/PeriodicTableControls.svelte +0 -557
  562. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +0 -24
  563. package/dist/periodic-table/PropertySelect.svelte +0 -37
  564. package/dist/periodic-table/PropertySelect.svelte.d.ts +0 -13
  565. package/dist/periodic-table/TableInset.svelte.d.ts +0 -9
  566. package/dist/periodic-table/index.d.ts +0 -10
  567. package/dist/periodic-table/index.js +0 -4
  568. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  569. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +0 -44
  570. package/dist/phase-diagram/PhaseDiagramControls.svelte +0 -451
  571. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +0 -30
  572. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  573. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +0 -15
  574. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +0 -192
  575. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +0 -19
  576. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +0 -392
  577. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +0 -16
  578. package/dist/phase-diagram/TdbInfoPanel.svelte +0 -203
  579. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +0 -12
  580. package/dist/phase-diagram/build-diagram.d.ts +0 -11
  581. package/dist/phase-diagram/build-diagram.js +0 -167
  582. package/dist/phase-diagram/colors.d.ts +0 -35
  583. package/dist/phase-diagram/colors.js +0 -51
  584. package/dist/phase-diagram/diagram-input.d.ts +0 -33
  585. package/dist/phase-diagram/diagram-input.js +0 -3
  586. package/dist/phase-diagram/index.d.ts +0 -13
  587. package/dist/phase-diagram/index.js +0 -13
  588. package/dist/phase-diagram/parse.d.ts +0 -55
  589. package/dist/phase-diagram/parse.js +0 -276
  590. package/dist/phase-diagram/svg-to-diagram.d.ts +0 -2
  591. package/dist/phase-diagram/svg-to-diagram.js +0 -869
  592. package/dist/phase-diagram/types.d.ts +0 -99
  593. package/dist/phase-diagram/types.js +0 -1
  594. package/dist/phase-diagram/utils.d.ts +0 -118
  595. package/dist/phase-diagram/utils.js +0 -606
  596. package/dist/plot/AxisLabel.svelte +0 -51
  597. package/dist/plot/AxisLabel.svelte.d.ts +0 -16
  598. package/dist/plot/BarPlot.svelte +0 -2256
  599. package/dist/plot/BarPlot.svelte.d.ts +0 -82
  600. package/dist/plot/BarPlotControls.svelte +0 -66
  601. package/dist/plot/BarPlotControls.svelte.d.ts +0 -18
  602. package/dist/plot/ColorBar.svelte +0 -719
  603. package/dist/plot/ColorBar.svelte.d.ts +0 -31
  604. package/dist/plot/ColorScaleSelect.svelte +0 -54
  605. package/dist/plot/ColorScaleSelect.svelte.d.ts +0 -15
  606. package/dist/plot/ElementScatter.svelte +0 -63
  607. package/dist/plot/ElementScatter.svelte.d.ts +0 -14
  608. package/dist/plot/FillArea.svelte +0 -226
  609. package/dist/plot/FillArea.svelte.d.ts +0 -20
  610. package/dist/plot/Histogram.svelte +0 -1654
  611. package/dist/plot/Histogram.svelte.d.ts +0 -50
  612. package/dist/plot/HistogramControls.svelte +0 -212
  613. package/dist/plot/HistogramControls.svelte.d.ts +0 -22
  614. package/dist/plot/InteractiveAxisLabel.svelte +0 -94
  615. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +0 -14
  616. package/dist/plot/Line.svelte +0 -85
  617. package/dist/plot/Line.svelte.d.ts +0 -15
  618. package/dist/plot/PlotControls.svelte +0 -537
  619. package/dist/plot/PlotControls.svelte.d.ts +0 -4
  620. package/dist/plot/PlotLegend.svelte +0 -498
  621. package/dist/plot/PlotLegend.svelte.d.ts +0 -25
  622. package/dist/plot/PlotTooltip.svelte +0 -67
  623. package/dist/plot/PlotTooltip.svelte.d.ts +0 -17
  624. package/dist/plot/PortalSelect.svelte +0 -253
  625. package/dist/plot/PortalSelect.svelte.d.ts +0 -16
  626. package/dist/plot/ReferenceLine.svelte.d.ts +0 -20
  627. package/dist/plot/ReferenceLine3D.svelte +0 -154
  628. package/dist/plot/ReferenceLine3D.svelte.d.ts +0 -14
  629. package/dist/plot/ReferencePlane.svelte +0 -178
  630. package/dist/plot/ReferencePlane.svelte.d.ts +0 -14
  631. package/dist/plot/ScatterPlot.svelte +0 -2831
  632. package/dist/plot/ScatterPlot.svelte.d.ts +0 -92
  633. package/dist/plot/ScatterPlot3D.svelte +0 -499
  634. package/dist/plot/ScatterPlot3D.svelte.d.ts +0 -94
  635. package/dist/plot/ScatterPlot3DControls.svelte +0 -437
  636. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +0 -20
  637. package/dist/plot/ScatterPlot3DScene.svelte +0 -912
  638. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +0 -74
  639. package/dist/plot/ScatterPlotControls.svelte +0 -307
  640. package/dist/plot/ScatterPlotControls.svelte.d.ts +0 -17
  641. package/dist/plot/ScatterPoint.svelte +0 -185
  642. package/dist/plot/ScatterPoint.svelte.d.ts +0 -19
  643. package/dist/plot/SpacegroupBarPlot.svelte +0 -292
  644. package/dist/plot/SpacegroupBarPlot.svelte.d.ts +0 -9
  645. package/dist/plot/Surface3D.svelte +0 -200
  646. package/dist/plot/Surface3D.svelte.d.ts +0 -13
  647. package/dist/plot/ZeroLines.svelte +0 -96
  648. package/dist/plot/ZeroLines.svelte.d.ts +0 -32
  649. package/dist/plot/ZoomRect.svelte +0 -23
  650. package/dist/plot/ZoomRect.svelte.d.ts +0 -8
  651. package/dist/plot/axis-utils.d.ts +0 -19
  652. package/dist/plot/axis-utils.js +0 -80
  653. package/dist/plot/data-cleaning.d.ts +0 -37
  654. package/dist/plot/data-cleaning.js +0 -855
  655. package/dist/plot/data-transform.d.ts +0 -16
  656. package/dist/plot/data-transform.js +0 -45
  657. package/dist/plot/defaults.d.ts +0 -19
  658. package/dist/plot/defaults.js +0 -9
  659. package/dist/plot/fill-utils.d.ts +0 -51
  660. package/dist/plot/fill-utils.js +0 -337
  661. package/dist/plot/hover-lock.svelte.d.ts +0 -14
  662. package/dist/plot/hover-lock.svelte.js +0 -46
  663. package/dist/plot/index.d.ts +0 -43
  664. package/dist/plot/index.js +0 -37
  665. package/dist/plot/interactions.d.ts +0 -12
  666. package/dist/plot/interactions.js +0 -100
  667. package/dist/plot/layout.d.ts +0 -60
  668. package/dist/plot/layout.js +0 -230
  669. package/dist/plot/reference-line.d.ts +0 -60
  670. package/dist/plot/reference-line.js +0 -316
  671. package/dist/plot/scales.d.ts +0 -48
  672. package/dist/plot/scales.js +0 -484
  673. package/dist/plot/svg.d.ts +0 -1
  674. package/dist/plot/svg.js +0 -11
  675. package/dist/plot/types.d.ts +0 -863
  676. package/dist/plot/types.js +0 -103
  677. package/dist/plot/utils/label-placement.d.ts +0 -47
  678. package/dist/plot/utils/label-placement.js +0 -256
  679. package/dist/plot/utils/series-visibility.d.ts +0 -9
  680. package/dist/plot/utils/series-visibility.js +0 -67
  681. package/dist/plot/utils.d.ts +0 -1
  682. package/dist/plot/utils.js +0 -14
  683. package/dist/rdf/RdfPlot.svelte +0 -247
  684. package/dist/rdf/RdfPlot.svelte.d.ts +0 -27
  685. package/dist/rdf/calc-rdf.d.ts +0 -4
  686. package/dist/rdf/calc-rdf.js +0 -111
  687. package/dist/rdf/index.d.ts +0 -23
  688. package/dist/rdf/index.js +0 -2
  689. package/dist/sanitize.d.ts +0 -4
  690. package/dist/sanitize.js +0 -107
  691. package/dist/settings.d.ts +0 -253
  692. package/dist/settings.js +0 -1123
  693. package/dist/spectral/Bands.svelte +0 -1040
  694. package/dist/spectral/Bands.svelte.d.ts +0 -40
  695. package/dist/spectral/BandsAndDos.svelte +0 -128
  696. package/dist/spectral/BandsAndDos.svelte.d.ts +0 -18
  697. package/dist/spectral/BrillouinBandsDos.svelte +0 -248
  698. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +0 -20
  699. package/dist/spectral/Dos.svelte +0 -697
  700. package/dist/spectral/Dos.svelte.d.ts +0 -29
  701. package/dist/spectral/helpers.d.ts +0 -117
  702. package/dist/spectral/helpers.js +0 -1023
  703. package/dist/spectral/index.d.ts +0 -6
  704. package/dist/spectral/index.js +0 -7
  705. package/dist/spectral/types.d.ts +0 -84
  706. package/dist/spectral/types.js +0 -2
  707. package/dist/state.svelte.d.ts +0 -25
  708. package/dist/state.svelte.js +0 -45
  709. package/dist/structure/Arrow.svelte +0 -72
  710. package/dist/structure/Arrow.svelte.d.ts +0 -15
  711. package/dist/structure/AtomLegend.svelte +0 -798
  712. package/dist/structure/AtomLegend.svelte.d.ts +0 -34
  713. package/dist/structure/Bond.svelte +0 -140
  714. package/dist/structure/Bond.svelte.d.ts +0 -9
  715. package/dist/structure/CanvasTooltip.svelte +0 -33
  716. package/dist/structure/CanvasTooltip.svelte.d.ts +0 -12
  717. package/dist/structure/CellSelect.svelte +0 -351
  718. package/dist/structure/CellSelect.svelte.d.ts +0 -13
  719. package/dist/structure/Cylinder.svelte +0 -45
  720. package/dist/structure/Cylinder.svelte.d.ts +0 -10
  721. package/dist/structure/Lattice.svelte +0 -196
  722. package/dist/structure/Lattice.svelte.d.ts +0 -17
  723. package/dist/structure/Structure.svelte +0 -1857
  724. package/dist/structure/Structure.svelte.d.ts +0 -83
  725. package/dist/structure/StructureControls.svelte +0 -1184
  726. package/dist/structure/StructureControls.svelte.d.ts +0 -31
  727. package/dist/structure/StructureExportPane.svelte +0 -251
  728. package/dist/structure/StructureExportPane.svelte.d.ts +0 -17
  729. package/dist/structure/StructureInfoPane.svelte +0 -434
  730. package/dist/structure/StructureInfoPane.svelte.d.ts +0 -18
  731. package/dist/structure/StructureScene.svelte +0 -1574
  732. package/dist/structure/StructureScene.svelte.d.ts +0 -104
  733. package/dist/structure/atom-properties.d.ts +0 -37
  734. package/dist/structure/atom-properties.js +0 -198
  735. package/dist/structure/bonding.d.ts +0 -33
  736. package/dist/structure/bonding.js +0 -304
  737. package/dist/structure/export.d.ts +0 -20
  738. package/dist/structure/export.js +0 -725
  739. package/dist/structure/ferrox-wasm-types.d.ts +0 -46
  740. package/dist/structure/ferrox-wasm-types.js +0 -18
  741. package/dist/structure/ferrox-wasm.d.ts +0 -94
  742. package/dist/structure/ferrox-wasm.js +0 -249
  743. package/dist/structure/index.d.ts +0 -110
  744. package/dist/structure/index.js +0 -168
  745. package/dist/structure/measure.d.ts +0 -6
  746. package/dist/structure/measure.js +0 -29
  747. package/dist/structure/parse.d.ts +0 -65
  748. package/dist/structure/parse.js +0 -1374
  749. package/dist/structure/partial-occupancy.d.ts +0 -25
  750. package/dist/structure/partial-occupancy.js +0 -99
  751. package/dist/structure/pbc.d.ts +0 -9
  752. package/dist/structure/pbc.js +0 -123
  753. package/dist/structure/supercell.d.ts +0 -8
  754. package/dist/structure/supercell.js +0 -137
  755. package/dist/structure/validation.d.ts +0 -2
  756. package/dist/structure/validation.js +0 -10
  757. package/dist/symmetry/SymmetryStats.svelte +0 -226
  758. package/dist/symmetry/SymmetryStats.svelte.d.ts +0 -21
  759. package/dist/symmetry/WyckoffTable.svelte +0 -113
  760. package/dist/symmetry/WyckoffTable.svelte.d.ts +0 -11
  761. package/dist/symmetry/cell-transform.d.ts +0 -12
  762. package/dist/symmetry/cell-transform.js +0 -77
  763. package/dist/symmetry/index.d.ts +0 -43
  764. package/dist/symmetry/index.js +0 -229
  765. package/dist/symmetry/spacegroups.d.ts +0 -9
  766. package/dist/symmetry/spacegroups.js +0 -394
  767. package/dist/table/HeatmapTable.svelte +0 -1854
  768. package/dist/table/HeatmapTable.svelte.d.ts +0 -49
  769. package/dist/table/ToggleMenu.svelte +0 -376
  770. package/dist/table/ToggleMenu.svelte.d.ts +0 -11
  771. package/dist/table/index.d.ts +0 -74
  772. package/dist/table/index.js +0 -38
  773. package/dist/theme/ThemeControl.svelte +0 -53
  774. package/dist/theme/ThemeControl.svelte.d.ts +0 -9
  775. package/dist/theme/index.d.ts +0 -29
  776. package/dist/theme/index.js +0 -79
  777. package/dist/theme/themes.mjs +0 -285
  778. package/dist/time.d.ts +0 -4
  779. package/dist/time.js +0 -70
  780. package/dist/tooltip/TooltipContent.svelte +0 -58
  781. package/dist/tooltip/TooltipContent.svelte.d.ts +0 -31
  782. package/dist/tooltip/index.d.ts +0 -2
  783. package/dist/tooltip/index.js +0 -2
  784. package/dist/tooltip/types.d.ts +0 -8
  785. package/dist/tooltip/types.js +0 -1
  786. package/dist/trajectory/Trajectory.svelte +0 -1517
  787. package/dist/trajectory/Trajectory.svelte.d.ts +0 -77
  788. package/dist/trajectory/TrajectoryError.svelte +0 -128
  789. package/dist/trajectory/TrajectoryError.svelte.d.ts +0 -13
  790. package/dist/trajectory/TrajectoryExportPane.svelte +0 -357
  791. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +0 -17
  792. package/dist/trajectory/TrajectoryInfoPane.svelte +0 -387
  793. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +0 -17
  794. package/dist/trajectory/constants.d.ts +0 -6
  795. package/dist/trajectory/constants.js +0 -7
  796. package/dist/trajectory/extract.d.ts +0 -5
  797. package/dist/trajectory/extract.js +0 -162
  798. package/dist/trajectory/format-detect.d.ts +0 -9
  799. package/dist/trajectory/format-detect.js +0 -76
  800. package/dist/trajectory/frame-reader.d.ts +0 -17
  801. package/dist/trajectory/frame-reader.js +0 -332
  802. package/dist/trajectory/helpers.d.ts +0 -14
  803. package/dist/trajectory/helpers.js +0 -172
  804. package/dist/trajectory/index.d.ts +0 -63
  805. package/dist/trajectory/index.js +0 -126
  806. package/dist/trajectory/parse/ase.d.ts +0 -2
  807. package/dist/trajectory/parse/ase.js +0 -77
  808. package/dist/trajectory/parse/hdf5.d.ts +0 -2
  809. package/dist/trajectory/parse/hdf5.js +0 -129
  810. package/dist/trajectory/parse/index.d.ts +0 -12
  811. package/dist/trajectory/parse/index.js +0 -299
  812. package/dist/trajectory/parse/lammps.d.ts +0 -5
  813. package/dist/trajectory/parse/lammps.js +0 -179
  814. package/dist/trajectory/parse/vasp.d.ts +0 -2
  815. package/dist/trajectory/parse/vasp.js +0 -68
  816. package/dist/trajectory/parse/xyz.d.ts +0 -2
  817. package/dist/trajectory/parse/xyz.js +0 -110
  818. package/dist/trajectory/plotting.d.ts +0 -28
  819. package/dist/trajectory/plotting.js +0 -423
  820. package/dist/trajectory/types.d.ts +0 -11
  821. package/dist/trajectory/types.js +0 -1
  822. package/dist/utils.d.ts +0 -5
  823. package/dist/utils.js +0 -36
  824. package/dist/xrd/XrdPlot.svelte +0 -615
  825. package/dist/xrd/XrdPlot.svelte.d.ts +0 -28
  826. package/dist/xrd/broadening.d.ts +0 -20
  827. package/dist/xrd/broadening.js +0 -97
  828. package/dist/xrd/calc-xrd.d.ts +0 -37
  829. package/dist/xrd/calc-xrd.js +0 -337
  830. package/dist/xrd/index.d.ts +0 -37
  831. package/dist/xrd/index.js +0 -4
  832. package/dist/xrd/parse.d.ts +0 -13
  833. package/dist/xrd/parse.js +0 -749
  834. /package/dist/{EmptyState.svelte → src/lib/EmptyState.svelte} +0 -0
  835. /package/dist/{Icon.svelte → src/lib/Icon.svelte} +0 -0
  836. /package/dist/{chempot-diagram → src/lib/chempot-diagram}/ChemPotScene3D.svelte +0 -0
  837. /package/dist/{colors → src/lib/colors}/alloy-colors.json +0 -0
  838. /package/dist/{colors → src/lib/colors}/dark-mode-colors.json +0 -0
  839. /package/dist/{colors → src/lib/colors}/jmol-colors.json +0 -0
  840. /package/dist/{colors → src/lib/colors}/muted-colors.json +0 -0
  841. /package/dist/{colors → src/lib/colors}/pastel-colors.json +0 -0
  842. /package/dist/{colors → src/lib/colors}/vesta-colors.json +0 -0
  843. /package/dist/{element → src/lib/element}/Nucleus.svelte +0 -0
  844. /package/dist/{element → src/lib/element}/data.json +0 -0
  845. /package/dist/{element → src/lib/element}/data.json.gz +0 -0
  846. /package/dist/{element → src/lib/element}/data.schema.json +0 -0
  847. /package/dist/{element-image-urls.json → src/lib/element-image-urls.json} +0 -0
  848. /package/dist/{feedback → src/lib/feedback}/Spinner.svelte +0 -0
  849. /package/dist/{feedback → src/lib/feedback}/StatusMessage.svelte +0 -0
  850. /package/dist/{periodic-table → src/lib/periodic-table}/TableInset.svelte +0 -0
  851. /package/dist/{plot → src/lib/plot}/ReferenceLine.svelte +0 -0
  852. /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
+ }