matterviz 0.3.6 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (926) hide show
  1. package/dist/EmptyState.svelte.d.ts +9 -0
  2. package/dist/FilePicker.svelte +360 -0
  3. package/dist/FilePicker.svelte.d.ts +17 -0
  4. package/dist/Icon.svelte +44 -0
  5. package/dist/Icon.svelte.d.ts +13 -0
  6. package/dist/MillerIndexInput.svelte +66 -0
  7. package/dist/MillerIndexInput.svelte.d.ts +7 -0
  8. package/dist/api/mp.d.ts +6 -0
  9. package/dist/api/mp.js +22 -0
  10. package/dist/api/optimade.d.ts +45 -0
  11. package/dist/api/optimade.js +141 -0
  12. package/dist/app.css +244 -0
  13. package/dist/brillouin/BrillouinZone.svelte +554 -0
  14. package/dist/brillouin/BrillouinZone.svelte.d.ts +84 -0
  15. package/dist/brillouin/BrillouinZoneControls.svelte +144 -0
  16. package/dist/brillouin/BrillouinZoneControls.svelte.d.ts +17 -0
  17. package/dist/brillouin/BrillouinZoneExportPane.svelte +146 -0
  18. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +15 -0
  19. package/dist/brillouin/BrillouinZoneInfoPane.svelte +146 -0
  20. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +13 -0
  21. package/dist/brillouin/BrillouinZoneScene.svelte +522 -0
  22. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +49 -0
  23. package/dist/brillouin/BrillouinZoneTooltip.svelte +83 -0
  24. package/dist/brillouin/BrillouinZoneTooltip.svelte.d.ts +8 -0
  25. package/dist/brillouin/compute.d.ts +17 -0
  26. package/dist/brillouin/compute.js +422 -0
  27. package/dist/brillouin/index.d.ts +8 -0
  28. package/dist/brillouin/index.js +7 -0
  29. package/dist/brillouin/types.d.ts +43 -0
  30. package/dist/brillouin/types.js +1 -0
  31. package/dist/chempot-diagram/ChemPotDiagram.svelte +328 -0
  32. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
  33. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +843 -0
  34. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
  35. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3191 -0
  36. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
  37. package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
  38. package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
  39. package/dist/chempot-diagram/async-compute.svelte.js +80 -0
  40. package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
  41. package/dist/chempot-diagram/chempot-worker.js +12 -0
  42. package/dist/chempot-diagram/color.d.ts +10 -0
  43. package/dist/chempot-diagram/color.js +32 -0
  44. package/dist/chempot-diagram/compute.d.ts +48 -0
  45. package/dist/chempot-diagram/compute.js +804 -0
  46. package/dist/chempot-diagram/index.d.ts +6 -0
  47. package/dist/chempot-diagram/index.js +6 -0
  48. package/dist/chempot-diagram/pointer.d.ts +16 -0
  49. package/dist/chempot-diagram/pointer.js +40 -0
  50. package/dist/chempot-diagram/temperature.d.ts +15 -0
  51. package/dist/chempot-diagram/temperature.js +34 -0
  52. package/dist/chempot-diagram/types.d.ts +81 -0
  53. package/dist/chempot-diagram/types.js +28 -0
  54. package/dist/colors/index.d.ts +47 -0
  55. package/dist/colors/index.js +204 -0
  56. package/dist/composition/BarChart.svelte +297 -0
  57. package/dist/composition/BarChart.svelte.d.ts +39 -0
  58. package/dist/composition/BubbleChart.svelte +218 -0
  59. package/dist/composition/BubbleChart.svelte.d.ts +28 -0
  60. package/dist/composition/Composition.svelte +165 -0
  61. package/dist/composition/Composition.svelte.d.ts +15 -0
  62. package/dist/composition/Formula.svelte +268 -0
  63. package/dist/composition/Formula.svelte.d.ts +19 -0
  64. package/dist/composition/FormulaFilter.svelte +1263 -0
  65. package/dist/composition/FormulaFilter.svelte.d.ts +51 -0
  66. package/dist/composition/PieChart.svelte +324 -0
  67. package/dist/composition/PieChart.svelte.d.ts +37 -0
  68. package/dist/composition/chem-sys.d.ts +8 -0
  69. package/dist/composition/chem-sys.js +85 -0
  70. package/dist/composition/format.d.ts +15 -0
  71. package/dist/composition/format.js +111 -0
  72. package/dist/composition/index.d.ts +21 -0
  73. package/dist/composition/index.js +15 -0
  74. package/dist/composition/parse.d.ts +56 -0
  75. package/dist/composition/parse.js +486 -0
  76. package/dist/constants.d.ts +29 -0
  77. package/dist/constants.js +99 -0
  78. package/dist/controls.d.ts +14 -0
  79. package/dist/controls.js +30 -0
  80. package/dist/convex-hull/ConvexHull.svelte +157 -0
  81. package/dist/convex-hull/ConvexHull.svelte.d.ts +13 -0
  82. package/dist/convex-hull/ConvexHull2D.svelte +827 -0
  83. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +11 -0
  84. package/dist/convex-hull/ConvexHull3D.svelte +1801 -0
  85. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +8 -0
  86. package/dist/convex-hull/ConvexHull4D.svelte +1394 -0
  87. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +8 -0
  88. package/dist/convex-hull/ConvexHullControls.svelte +535 -0
  89. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +48 -0
  90. package/dist/convex-hull/ConvexHullInfoPane.svelte +125 -0
  91. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +20 -0
  92. package/dist/convex-hull/ConvexHullStats.svelte +929 -0
  93. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +17 -0
  94. package/dist/convex-hull/ConvexHullTooltip.svelte +131 -0
  95. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +33 -0
  96. package/dist/convex-hull/GasPressureControls.svelte +247 -0
  97. package/dist/convex-hull/GasPressureControls.svelte.d.ts +11 -0
  98. package/dist/convex-hull/StructurePopup.svelte +151 -0
  99. package/dist/convex-hull/StructurePopup.svelte.d.ts +18 -0
  100. package/dist/convex-hull/TemperatureSlider.svelte +140 -0
  101. package/dist/convex-hull/TemperatureSlider.svelte.d.ts +8 -0
  102. package/dist/convex-hull/barycentric-coords.d.ts +18 -0
  103. package/dist/convex-hull/barycentric-coords.js +182 -0
  104. package/dist/convex-hull/demo-temperature.d.ts +6 -0
  105. package/dist/convex-hull/demo-temperature.js +38 -0
  106. package/dist/convex-hull/gas-thermodynamics.d.ts +16 -0
  107. package/dist/convex-hull/gas-thermodynamics.js +306 -0
  108. package/dist/convex-hull/helpers.d.ts +117 -0
  109. package/dist/convex-hull/helpers.js +718 -0
  110. package/dist/convex-hull/index.d.ts +119 -0
  111. package/dist/convex-hull/index.js +58 -0
  112. package/dist/convex-hull/thermodynamics.d.ts +67 -0
  113. package/dist/convex-hull/thermodynamics.js +1757 -0
  114. package/dist/convex-hull/types.d.ts +162 -0
  115. package/dist/convex-hull/types.js +36 -0
  116. package/dist/coordination/CoordinationBarPlot.svelte +311 -0
  117. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +30 -0
  118. package/dist/coordination/calc-coordination.d.ts +15 -0
  119. package/dist/coordination/calc-coordination.js +63 -0
  120. package/dist/coordination/index.d.ts +8 -0
  121. package/dist/coordination/index.js +7 -0
  122. package/dist/effects.svelte.d.ts +12 -0
  123. package/dist/effects.svelte.js +37 -0
  124. package/dist/element/BohrAtom.svelte.d.ts +20 -0
  125. package/dist/element/ElementHeading.svelte +26 -0
  126. package/dist/element/ElementHeading.svelte.d.ts +8 -0
  127. package/dist/element/ElementPhoto.svelte +57 -0
  128. package/dist/element/ElementPhoto.svelte.d.ts +9 -0
  129. package/dist/element/ElementStats.svelte +80 -0
  130. package/dist/element/ElementStats.svelte.d.ts +8 -0
  131. package/dist/element/ElementTile.svelte +484 -0
  132. package/dist/element/ElementTile.svelte.d.ts +29 -0
  133. package/dist/element/Nucleus.svelte.d.ts +17 -0
  134. package/dist/element/data.d.ts +2 -0
  135. package/dist/element/data.js +2 -0
  136. package/dist/element/index.d.ts +8 -0
  137. package/dist/element/index.js +7 -0
  138. package/dist/element/types.d.ts +57 -0
  139. package/dist/element/types.js +1 -0
  140. package/dist/feedback/ClickFeedback.svelte +58 -0
  141. package/dist/feedback/ClickFeedback.svelte.d.ts +12 -0
  142. package/dist/feedback/DragOverlay.svelte +42 -0
  143. package/dist/feedback/DragOverlay.svelte.d.ts +7 -0
  144. package/dist/feedback/Spinner.svelte.d.ts +7 -0
  145. package/dist/feedback/StatusMessage.svelte.d.ts +9 -0
  146. package/dist/feedback/index.d.ts +4 -0
  147. package/dist/feedback/index.js +4 -0
  148. package/dist/fermi-surface/FermiSlice.svelte +197 -0
  149. package/dist/fermi-surface/FermiSlice.svelte.d.ts +24 -0
  150. package/dist/fermi-surface/FermiSurface.svelte +606 -0
  151. package/dist/fermi-surface/FermiSurface.svelte.d.ts +83 -0
  152. package/dist/fermi-surface/FermiSurfaceControls.svelte +448 -0
  153. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +35 -0
  154. package/dist/fermi-surface/FermiSurfaceScene.svelte +797 -0
  155. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +50 -0
  156. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +85 -0
  157. package/dist/fermi-surface/FermiSurfaceTooltip.svelte.d.ts +8 -0
  158. package/dist/fermi-surface/compute.d.ts +5 -0
  159. package/dist/fermi-surface/compute.js +538 -0
  160. package/dist/fermi-surface/constants.d.ts +9 -0
  161. package/dist/fermi-surface/constants.js +27 -0
  162. package/dist/fermi-surface/export.d.ts +5 -0
  163. package/dist/fermi-surface/export.js +51 -0
  164. package/dist/fermi-surface/index.d.ts +12 -0
  165. package/dist/fermi-surface/index.js +13 -0
  166. package/dist/fermi-surface/marching-cubes.d.ts +2 -0
  167. package/dist/fermi-surface/marching-cubes.js +2 -0
  168. package/dist/fermi-surface/parse.d.ts +2 -0
  169. package/dist/fermi-surface/parse.js +494 -0
  170. package/dist/fermi-surface/symmetry.d.ts +3 -0
  171. package/dist/fermi-surface/symmetry.js +46 -0
  172. package/dist/fermi-surface/types.d.ts +111 -0
  173. package/dist/fermi-surface/types.js +4 -0
  174. package/dist/heatmap-matrix/HeatmapMatrix.svelte +1547 -0
  175. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
  176. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
  177. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
  178. package/dist/heatmap-matrix/index.d.ts +53 -0
  179. package/dist/heatmap-matrix/index.js +100 -0
  180. package/dist/heatmap-matrix/shared.d.ts +2 -0
  181. package/dist/heatmap-matrix/shared.js +4 -0
  182. package/dist/icons.d.ts +569 -0
  183. package/dist/icons.js +648 -0
  184. package/dist/index.d.ts +39 -0
  185. package/dist/index.js +39 -0
  186. package/dist/io/decompress.d.ts +11 -0
  187. package/dist/io/decompress.js +76 -0
  188. package/dist/io/export.d.ts +16 -0
  189. package/dist/io/export.js +338 -0
  190. package/dist/io/fetch.d.ts +5 -0
  191. package/dist/io/fetch.js +43 -0
  192. package/dist/io/file-drop.d.ts +7 -0
  193. package/dist/io/file-drop.js +42 -0
  194. package/dist/io/index.d.ts +7 -0
  195. package/dist/io/index.js +6 -0
  196. package/dist/io/is-binary.d.ts +1 -0
  197. package/dist/io/is-binary.js +20 -0
  198. package/dist/io/types.d.ts +8 -0
  199. package/dist/io/types.js +1 -0
  200. package/dist/io/url-drop.d.ts +2 -0
  201. package/dist/io/url-drop.js +154 -0
  202. package/dist/isosurface/Isosurface.svelte +285 -0
  203. package/dist/isosurface/Isosurface.svelte.d.ts +8 -0
  204. package/dist/isosurface/IsosurfaceControls.svelte +277 -0
  205. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +9 -0
  206. package/dist/isosurface/index.d.ts +5 -0
  207. package/dist/isosurface/index.js +6 -0
  208. package/dist/isosurface/parse.d.ts +6 -0
  209. package/dist/isosurface/parse.js +552 -0
  210. package/dist/isosurface/slice.d.ts +11 -0
  211. package/dist/isosurface/slice.js +141 -0
  212. package/dist/isosurface/types.d.ts +56 -0
  213. package/dist/isosurface/types.js +227 -0
  214. package/dist/keyboard.d.ts +3 -0
  215. package/dist/keyboard.js +23 -0
  216. package/dist/labels.d.ts +53 -0
  217. package/dist/labels.js +278 -0
  218. package/dist/layout/FullscreenToggle.svelte +50 -0
  219. package/dist/layout/FullscreenToggle.svelte.d.ts +7 -0
  220. package/dist/layout/InfoCard.svelte +120 -0
  221. package/dist/layout/InfoCard.svelte.d.ts +21 -0
  222. package/dist/layout/InfoTag.svelte +185 -0
  223. package/dist/layout/InfoTag.svelte.d.ts +19 -0
  224. package/dist/layout/PropertyFilter.svelte +247 -0
  225. package/dist/layout/PropertyFilter.svelte.d.ts +24 -0
  226. package/dist/layout/SettingsSection.svelte +148 -0
  227. package/dist/layout/SettingsSection.svelte.d.ts +17 -0
  228. package/dist/layout/SubpageGrid.svelte +82 -0
  229. package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
  230. package/dist/layout/fullscreen.d.ts +9 -0
  231. package/dist/layout/fullscreen.js +53 -0
  232. package/dist/layout/index.d.ts +10 -0
  233. package/dist/layout/index.js +8 -0
  234. package/dist/layout/json-tree/JsonNode.svelte +548 -0
  235. package/dist/layout/json-tree/JsonNode.svelte.d.ts +11 -0
  236. package/dist/layout/json-tree/JsonTree.svelte +1230 -0
  237. package/dist/layout/json-tree/JsonTree.svelte.d.ts +6 -0
  238. package/dist/layout/json-tree/JsonValue.svelte.d.ts +9 -0
  239. package/dist/layout/json-tree/index.d.ts +3 -0
  240. package/dist/layout/json-tree/index.js +3 -0
  241. package/dist/layout/json-tree/types.d.ts +74 -0
  242. package/dist/layout/json-tree/types.js +2 -0
  243. package/dist/layout/json-tree/utils.d.ts +29 -0
  244. package/dist/layout/json-tree/utils.js +642 -0
  245. package/dist/marching-cubes.d.ts +14 -0
  246. package/dist/marching-cubes.js +535 -0
  247. package/dist/math.d.ts +105 -0
  248. package/dist/math.js +920 -0
  249. package/dist/overlays/ContextMenu.svelte +162 -0
  250. package/dist/overlays/ContextMenu.svelte.d.ts +25 -0
  251. package/dist/overlays/CopyButton.svelte +45 -0
  252. package/dist/overlays/CopyButton.svelte.d.ts +8 -0
  253. package/dist/overlays/DragControlTab.svelte +98 -0
  254. package/dist/overlays/DragControlTab.svelte.d.ts +8 -0
  255. package/dist/overlays/DraggablePane.svelte +487 -0
  256. package/dist/overlays/DraggablePane.svelte.d.ts +36 -0
  257. package/dist/overlays/InfoPaneCards.svelte +149 -0
  258. package/dist/overlays/InfoPaneCards.svelte.d.ts +22 -0
  259. package/dist/overlays/index.d.ts +3 -0
  260. package/dist/overlays/index.js +3 -0
  261. package/dist/periodic-table/PeriodicTable.svelte +480 -0
  262. package/dist/periodic-table/PeriodicTable.svelte.d.ts +55 -0
  263. package/dist/periodic-table/PeriodicTableControls.svelte +557 -0
  264. package/dist/periodic-table/PeriodicTableControls.svelte.d.ts +24 -0
  265. package/dist/periodic-table/PropertySelect.svelte +38 -0
  266. package/dist/periodic-table/PropertySelect.svelte.d.ts +13 -0
  267. package/dist/periodic-table/TableInset.svelte.d.ts +9 -0
  268. package/dist/periodic-table/index.d.ts +10 -0
  269. package/dist/periodic-table/index.js +4 -0
  270. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +1092 -0
  271. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +44 -0
  272. package/dist/phase-diagram/PhaseDiagramControls.svelte +444 -0
  273. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +30 -0
  274. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +127 -0
  275. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
  276. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +184 -0
  277. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +19 -0
  278. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +391 -0
  279. package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +16 -0
  280. package/dist/phase-diagram/TdbInfoPanel.svelte +203 -0
  281. package/dist/phase-diagram/TdbInfoPanel.svelte.d.ts +12 -0
  282. package/dist/phase-diagram/build-diagram.d.ts +11 -0
  283. package/dist/phase-diagram/build-diagram.js +160 -0
  284. package/dist/phase-diagram/colors.d.ts +35 -0
  285. package/dist/phase-diagram/colors.js +51 -0
  286. package/dist/phase-diagram/diagram-input.d.ts +29 -0
  287. package/dist/phase-diagram/diagram-input.js +3 -0
  288. package/dist/phase-diagram/index.d.ts +13 -0
  289. package/dist/phase-diagram/index.js +11 -0
  290. package/dist/phase-diagram/parse.d.ts +55 -0
  291. package/dist/phase-diagram/parse.js +273 -0
  292. package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
  293. package/dist/phase-diagram/svg-to-diagram.js +867 -0
  294. package/dist/phase-diagram/types.d.ts +93 -0
  295. package/dist/phase-diagram/types.js +1 -0
  296. package/dist/phase-diagram/utils.d.ts +118 -0
  297. package/dist/phase-diagram/utils.js +600 -0
  298. package/dist/plot/bar/BarPlot.svelte +1755 -0
  299. package/dist/plot/bar/BarPlot.svelte.d.ts +84 -0
  300. package/dist/plot/bar/BarPlotControls.svelte +67 -0
  301. package/dist/plot/bar/BarPlotControls.svelte.d.ts +18 -0
  302. package/dist/plot/bar/SpacegroupBarPlot.svelte +293 -0
  303. package/dist/plot/bar/SpacegroupBarPlot.svelte.d.ts +9 -0
  304. package/dist/plot/bar/data.d.ts +40 -0
  305. package/dist/plot/bar/data.js +154 -0
  306. package/dist/plot/bar/geometry.d.ts +39 -0
  307. package/dist/plot/bar/geometry.js +60 -0
  308. package/dist/plot/bar/index.d.ts +3 -0
  309. package/dist/plot/bar/index.js +3 -0
  310. package/dist/plot/box/BoxPlot.svelte +1462 -0
  311. package/dist/plot/box/BoxPlot.svelte.d.ts +94 -0
  312. package/dist/plot/box/BoxPlotControls.svelte +109 -0
  313. package/dist/plot/box/BoxPlotControls.svelte.d.ts +19 -0
  314. package/dist/plot/box/Violin.svelte +14 -0
  315. package/dist/plot/box/Violin.svelte.d.ts +70 -0
  316. package/dist/plot/box/box-plot.d.ts +55 -0
  317. package/dist/plot/box/box-plot.js +126 -0
  318. package/dist/plot/box/index.d.ts +5 -0
  319. package/dist/plot/box/index.js +5 -0
  320. package/dist/plot/box/kde.d.ts +16 -0
  321. package/dist/plot/box/kde.js +160 -0
  322. package/dist/plot/box/quantile.d.ts +3 -0
  323. package/dist/plot/box/quantile.js +53 -0
  324. package/dist/plot/core/auto-place.d.ts +43 -0
  325. package/dist/plot/core/auto-place.js +122 -0
  326. package/dist/plot/core/axis-utils.d.ts +46 -0
  327. package/dist/plot/core/axis-utils.js +110 -0
  328. package/dist/plot/core/components/AxisLabel.svelte +51 -0
  329. package/dist/plot/core/components/AxisLabel.svelte.d.ts +16 -0
  330. package/dist/plot/core/components/ColorBar.svelte +724 -0
  331. package/dist/plot/core/components/ColorBar.svelte.d.ts +31 -0
  332. package/dist/plot/core/components/ColorScaleSelect.svelte +55 -0
  333. package/dist/plot/core/components/ColorScaleSelect.svelte.d.ts +15 -0
  334. package/dist/plot/core/components/ControlPane.svelte +46 -0
  335. package/dist/plot/core/components/ControlPane.svelte.d.ts +13 -0
  336. package/dist/plot/core/components/FillArea.svelte +234 -0
  337. package/dist/plot/core/components/FillArea.svelte.d.ts +21 -0
  338. package/dist/plot/core/components/InteractiveAxisLabel.svelte +96 -0
  339. package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +14 -0
  340. package/dist/plot/core/components/Line.svelte +101 -0
  341. package/dist/plot/core/components/Line.svelte.d.ts +15 -0
  342. package/dist/plot/core/components/PlotAxis.svelte +171 -0
  343. package/dist/plot/core/components/PlotAxis.svelte.d.ts +25 -0
  344. package/dist/plot/core/components/PlotControls.svelte +525 -0
  345. package/dist/plot/core/components/PlotControls.svelte.d.ts +4 -0
  346. package/dist/plot/core/components/PlotLegend.svelte +580 -0
  347. package/dist/plot/core/components/PlotLegend.svelte.d.ts +30 -0
  348. package/dist/plot/core/components/PlotTooltip.svelte +83 -0
  349. package/dist/plot/core/components/PlotTooltip.svelte.d.ts +25 -0
  350. package/dist/plot/core/components/PortalSelect.svelte +257 -0
  351. package/dist/plot/core/components/PortalSelect.svelte.d.ts +16 -0
  352. package/dist/plot/core/components/ReferenceLine.svelte +204 -0
  353. package/dist/plot/core/components/ReferenceLine.svelte.d.ts +20 -0
  354. package/dist/plot/core/components/ReferenceLine3D.svelte +156 -0
  355. package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +14 -0
  356. package/dist/plot/core/components/ReferencePlane.svelte +175 -0
  357. package/dist/plot/core/components/ReferencePlane.svelte.d.ts +14 -0
  358. package/dist/plot/core/components/ZeroLines.svelte +97 -0
  359. package/dist/plot/core/components/ZeroLines.svelte.d.ts +33 -0
  360. package/dist/plot/core/components/ZoomRect.svelte +23 -0
  361. package/dist/plot/core/components/ZoomRect.svelte.d.ts +8 -0
  362. package/dist/plot/core/components/index.d.ts +17 -0
  363. package/dist/plot/core/components/index.js +17 -0
  364. package/dist/plot/core/data-cleaning.d.ts +107 -0
  365. package/dist/plot/core/data-cleaning.js +853 -0
  366. package/dist/plot/core/data-transform.d.ts +16 -0
  367. package/dist/plot/core/data-transform.js +45 -0
  368. package/dist/plot/core/fill-utils.d.ts +33 -0
  369. package/dist/plot/core/fill-utils.js +388 -0
  370. package/dist/plot/core/hover-lock.svelte.d.ts +14 -0
  371. package/dist/plot/core/hover-lock.svelte.js +45 -0
  372. package/dist/plot/core/index.d.ts +10 -0
  373. package/dist/plot/core/index.js +11 -0
  374. package/dist/plot/core/interactions.d.ts +35 -0
  375. package/dist/plot/core/interactions.js +195 -0
  376. package/dist/plot/core/layout.d.ts +79 -0
  377. package/dist/plot/core/layout.js +281 -0
  378. package/dist/plot/core/reference-line.d.ts +60 -0
  379. package/dist/plot/core/reference-line.js +301 -0
  380. package/dist/plot/core/scales.d.ts +48 -0
  381. package/dist/plot/core/scales.js +480 -0
  382. package/dist/plot/core/svg.d.ts +2 -0
  383. package/dist/plot/core/svg.js +41 -0
  384. package/dist/plot/core/types.d.ts +771 -0
  385. package/dist/plot/core/types.js +99 -0
  386. package/dist/plot/core/utils/label-placement.d.ts +68 -0
  387. package/dist/plot/core/utils/label-placement.js +326 -0
  388. package/dist/plot/core/utils/series-visibility.d.ts +26 -0
  389. package/dist/plot/core/utils/series-visibility.js +112 -0
  390. package/dist/plot/core/utils.d.ts +11 -0
  391. package/dist/plot/core/utils.js +27 -0
  392. package/dist/plot/histogram/Histogram.svelte +1418 -0
  393. package/dist/plot/histogram/Histogram.svelte.d.ts +50 -0
  394. package/dist/plot/histogram/HistogramControls.svelte +212 -0
  395. package/dist/plot/histogram/HistogramControls.svelte.d.ts +22 -0
  396. package/dist/plot/histogram/index.d.ts +2 -0
  397. package/dist/plot/histogram/index.js +2 -0
  398. package/dist/plot/index.d.ts +8 -0
  399. package/dist/plot/index.js +10 -0
  400. package/dist/plot/sankey/Sankey.svelte +700 -0
  401. package/dist/plot/sankey/Sankey.svelte.d.ts +74 -0
  402. package/dist/plot/sankey/SankeyControls.svelte +98 -0
  403. package/dist/plot/sankey/SankeyControls.svelte.d.ts +19 -0
  404. package/dist/plot/sankey/index.d.ts +4 -0
  405. package/dist/plot/sankey/index.js +3 -0
  406. package/dist/plot/sankey/sankey-types.d.ts +42 -0
  407. package/dist/plot/sankey/sankey-types.js +4 -0
  408. package/dist/plot/sankey/sankey.d.ts +52 -0
  409. package/dist/plot/sankey/sankey.js +187 -0
  410. package/dist/plot/scatter/BinnedScatterPlot.svelte +1116 -0
  411. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +66 -0
  412. package/dist/plot/scatter/ElementScatter.svelte +63 -0
  413. package/dist/plot/scatter/ElementScatter.svelte.d.ts +14 -0
  414. package/dist/plot/scatter/ScatterPlot.svelte +2357 -0
  415. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +96 -0
  416. package/dist/plot/scatter/ScatterPlotControls.svelte +307 -0
  417. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +17 -0
  418. package/dist/plot/scatter/ScatterPoint.svelte +182 -0
  419. package/dist/plot/scatter/ScatterPoint.svelte.d.ts +22 -0
  420. package/dist/plot/scatter/adaptive-density.d.ts +79 -0
  421. package/dist/plot/scatter/adaptive-density.js +217 -0
  422. package/dist/plot/scatter/binned-scatter-types.d.ts +59 -0
  423. package/dist/plot/scatter/binned-scatter-types.js +1 -0
  424. package/dist/plot/scatter/index.d.ts +7 -0
  425. package/dist/plot/scatter/index.js +5 -0
  426. package/dist/plot/scatter/scatter-data.d.ts +19 -0
  427. package/dist/plot/scatter/scatter-data.js +212 -0
  428. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +531 -0
  429. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +95 -0
  430. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +438 -0
  431. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +20 -0
  432. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +912 -0
  433. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +74 -0
  434. package/dist/plot/scatter-3d/Surface3D.svelte +197 -0
  435. package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +13 -0
  436. package/dist/plot/scatter-3d/index.d.ts +4 -0
  437. package/dist/plot/scatter-3d/index.js +4 -0
  438. package/dist/plot/sunburst/Sunburst.svelte +1045 -0
  439. package/dist/plot/sunburst/Sunburst.svelte.d.ts +96 -0
  440. package/dist/plot/sunburst/SunburstControls.svelte +200 -0
  441. package/dist/plot/sunburst/SunburstControls.svelte.d.ts +26 -0
  442. package/dist/plot/sunburst/index.d.ts +4 -0
  443. package/dist/plot/sunburst/index.js +4 -0
  444. package/dist/plot/sunburst/render.d.ts +34 -0
  445. package/dist/plot/sunburst/render.js +122 -0
  446. package/dist/plot/sunburst/sunburst.d.ts +62 -0
  447. package/dist/plot/sunburst/sunburst.js +266 -0
  448. package/dist/rdf/RdfPlot.svelte +248 -0
  449. package/dist/rdf/RdfPlot.svelte.d.ts +27 -0
  450. package/dist/rdf/calc-rdf.d.ts +4 -0
  451. package/dist/rdf/calc-rdf.js +98 -0
  452. package/dist/rdf/index.d.ts +23 -0
  453. package/dist/rdf/index.js +2 -0
  454. package/dist/sanitize.d.ts +6 -0
  455. package/dist/sanitize.js +116 -0
  456. package/dist/settings.d.ts +319 -0
  457. package/dist/settings.js +1394 -0
  458. package/dist/spectral/Bands.svelte +1050 -0
  459. package/dist/spectral/Bands.svelte.d.ts +39 -0
  460. package/dist/spectral/BandsAndDos.svelte +134 -0
  461. package/dist/spectral/BandsAndDos.svelte.d.ts +18 -0
  462. package/dist/spectral/BrillouinBandsDos.svelte +264 -0
  463. package/dist/spectral/BrillouinBandsDos.svelte.d.ts +20 -0
  464. package/dist/spectral/Dos.svelte +688 -0
  465. package/dist/spectral/Dos.svelte.d.ts +29 -0
  466. package/dist/spectral/helpers.d.ts +121 -0
  467. package/dist/spectral/helpers.js +1098 -0
  468. package/dist/spectral/index.d.ts +6 -0
  469. package/dist/spectral/index.js +6 -0
  470. package/dist/spectral/types.d.ts +84 -0
  471. package/dist/spectral/types.js +2 -0
  472. package/dist/state.svelte.d.ts +25 -0
  473. package/dist/state.svelte.js +45 -0
  474. package/dist/structure/Arrow.svelte +72 -0
  475. package/dist/structure/Arrow.svelte.d.ts +15 -0
  476. package/dist/structure/AtomLegend.svelte +814 -0
  477. package/dist/structure/AtomLegend.svelte.d.ts +35 -0
  478. package/dist/structure/Bond.svelte +140 -0
  479. package/dist/structure/Bond.svelte.d.ts +9 -0
  480. package/dist/structure/CanvasTooltip.svelte +33 -0
  481. package/dist/structure/CanvasTooltip.svelte.d.ts +12 -0
  482. package/dist/structure/CellSelect.svelte +348 -0
  483. package/dist/structure/CellSelect.svelte.d.ts +13 -0
  484. package/dist/structure/Cylinder.svelte +49 -0
  485. package/dist/structure/Cylinder.svelte.d.ts +13 -0
  486. package/dist/structure/Lattice.svelte +196 -0
  487. package/dist/structure/Lattice.svelte.d.ts +17 -0
  488. package/dist/structure/Structure.svelte +2254 -0
  489. package/dist/structure/Structure.svelte.d.ts +89 -0
  490. package/dist/structure/StructureControls.svelte +1273 -0
  491. package/dist/structure/StructureControls.svelte.d.ts +31 -0
  492. package/dist/structure/StructureExportPane.svelte +252 -0
  493. package/dist/structure/StructureExportPane.svelte.d.ts +17 -0
  494. package/dist/structure/StructureInfoPane.svelte +736 -0
  495. package/dist/structure/StructureInfoPane.svelte.d.ts +19 -0
  496. package/dist/structure/StructureScene.svelte +2256 -0
  497. package/dist/structure/StructureScene.svelte.d.ts +111 -0
  498. package/dist/structure/atom-properties.d.ts +37 -0
  499. package/dist/structure/atom-properties.js +200 -0
  500. package/dist/structure/bond-order-perception.d.ts +13 -0
  501. package/dist/structure/bond-order-perception.js +384 -0
  502. package/dist/structure/bonding.d.ts +69 -0
  503. package/dist/structure/bonding.js +724 -0
  504. package/dist/structure/export.d.ts +20 -0
  505. package/dist/structure/export.js +731 -0
  506. package/dist/structure/index.d.ts +124 -0
  507. package/dist/structure/index.js +167 -0
  508. package/dist/structure/label-placement.d.ts +14 -0
  509. package/dist/structure/label-placement.js +72 -0
  510. package/dist/structure/measure.d.ts +7 -0
  511. package/dist/structure/measure.js +30 -0
  512. package/dist/structure/parse.d.ts +66 -0
  513. package/dist/structure/parse.js +1410 -0
  514. package/dist/structure/partial-occupancy.d.ts +25 -0
  515. package/dist/structure/partial-occupancy.js +99 -0
  516. package/dist/structure/pbc.d.ts +9 -0
  517. package/dist/structure/pbc.js +127 -0
  518. package/dist/structure/supercell.d.ts +8 -0
  519. package/dist/structure/supercell.js +170 -0
  520. package/dist/structure/validation.d.ts +2 -0
  521. package/dist/structure/validation.js +10 -0
  522. package/dist/symmetry/SymmetryStats.svelte +226 -0
  523. package/dist/symmetry/SymmetryStats.svelte.d.ts +21 -0
  524. package/dist/symmetry/WyckoffTable.svelte +120 -0
  525. package/dist/symmetry/WyckoffTable.svelte.d.ts +11 -0
  526. package/dist/symmetry/cell-transform.d.ts +12 -0
  527. package/dist/symmetry/cell-transform.js +91 -0
  528. package/dist/symmetry/index.d.ts +43 -0
  529. package/dist/symmetry/index.js +226 -0
  530. package/dist/symmetry/spacegroups.d.ts +16 -0
  531. package/dist/symmetry/spacegroups.js +429 -0
  532. package/dist/table/HeatmapTable.svelte +1885 -0
  533. package/dist/table/HeatmapTable.svelte.d.ts +49 -0
  534. package/dist/table/ToggleMenu.svelte +385 -0
  535. package/dist/table/ToggleMenu.svelte.d.ts +11 -0
  536. package/dist/table/index.d.ts +72 -0
  537. package/dist/table/index.js +38 -0
  538. package/dist/theme/ThemeControl.svelte +53 -0
  539. package/dist/theme/ThemeControl.svelte.d.ts +9 -0
  540. package/dist/theme/index.d.ts +29 -0
  541. package/dist/theme/index.js +79 -0
  542. package/dist/time.d.ts +4 -0
  543. package/dist/time.js +70 -0
  544. package/dist/tooltip/KCoords.svelte +45 -0
  545. package/dist/tooltip/KCoords.svelte.d.ts +8 -0
  546. package/dist/tooltip/TooltipContent.svelte +58 -0
  547. package/dist/tooltip/TooltipContent.svelte.d.ts +31 -0
  548. package/dist/tooltip/index.d.ts +3 -0
  549. package/dist/tooltip/index.js +2 -0
  550. package/dist/tooltip/types.d.ts +8 -0
  551. package/dist/tooltip/types.js +1 -0
  552. package/dist/trajectory/Trajectory.svelte +1571 -0
  553. package/dist/trajectory/Trajectory.svelte.d.ts +78 -0
  554. package/dist/trajectory/TrajectoryError.svelte +128 -0
  555. package/dist/trajectory/TrajectoryError.svelte.d.ts +13 -0
  556. package/dist/trajectory/TrajectoryExportPane.svelte +358 -0
  557. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +17 -0
  558. package/dist/trajectory/TrajectoryInfoPane.svelte +314 -0
  559. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +17 -0
  560. package/dist/trajectory/constants.d.ts +6 -0
  561. package/dist/trajectory/constants.js +7 -0
  562. package/dist/trajectory/extract.d.ts +5 -0
  563. package/dist/trajectory/extract.js +162 -0
  564. package/dist/trajectory/format-detect.d.ts +10 -0
  565. package/dist/trajectory/format-detect.js +90 -0
  566. package/dist/trajectory/frame-reader.d.ts +17 -0
  567. package/dist/trajectory/frame-reader.js +299 -0
  568. package/dist/trajectory/helpers.d.ts +15 -0
  569. package/dist/trajectory/helpers.js +164 -0
  570. package/dist/trajectory/index.d.ts +63 -0
  571. package/dist/trajectory/index.js +126 -0
  572. package/dist/trajectory/parse/ase.d.ts +2 -0
  573. package/dist/trajectory/parse/ase.js +73 -0
  574. package/dist/trajectory/parse/hdf5.d.ts +2 -0
  575. package/dist/trajectory/parse/hdf5.js +127 -0
  576. package/dist/trajectory/parse/index.d.ts +12 -0
  577. package/dist/trajectory/parse/index.js +306 -0
  578. package/dist/trajectory/parse/lammps.d.ts +5 -0
  579. package/dist/trajectory/parse/lammps.js +179 -0
  580. package/dist/trajectory/parse/vasp.d.ts +2 -0
  581. package/dist/trajectory/parse/vasp.js +87 -0
  582. package/dist/trajectory/parse/xyz.d.ts +26 -0
  583. package/dist/trajectory/parse/xyz.js +123 -0
  584. package/dist/trajectory/plotting.d.ts +28 -0
  585. package/dist/trajectory/plotting.js +423 -0
  586. package/dist/trajectory/types.d.ts +11 -0
  587. package/dist/trajectory/types.js +1 -0
  588. package/dist/utils.d.ts +7 -0
  589. package/dist/utils.js +47 -0
  590. package/dist/xrd/XrdPlot.svelte +616 -0
  591. package/dist/xrd/XrdPlot.svelte.d.ts +28 -0
  592. package/dist/xrd/broadening.d.ts +20 -0
  593. package/dist/xrd/broadening.js +97 -0
  594. package/dist/xrd/calc-xrd.d.ts +37 -0
  595. package/dist/xrd/calc-xrd.js +339 -0
  596. package/dist/xrd/index.d.ts +37 -0
  597. package/dist/xrd/index.js +4 -0
  598. package/dist/xrd/parse.d.ts +13 -0
  599. package/dist/xrd/parse.js +749 -0
  600. package/license +1 -1
  601. package/package.json +237 -1458
  602. package/readme.md +98 -171
  603. package/.vscode/launch.json +0 -13
  604. package/.vscodeignore +0 -7
  605. package/dist/assets/STLExporter-BpTH3YHE.js +0 -8
  606. package/dist/assets/browser-DdDecX_W.js +0 -1
  607. package/dist/assets/export-qgn-H9y6.js +0 -2
  608. package/dist/assets/main-DiKYzti2.css +0 -1
  609. package/dist/assets/moyo_wasm_bg-0ocwg7xY.wasm +0 -0
  610. package/dist/extension.js +0 -31293
  611. package/dist/src/lib/FilePicker.svelte +0 -360
  612. package/dist/src/lib/Icon.svelte +0 -41
  613. package/dist/src/lib/MillerIndexInput.svelte +0 -66
  614. package/dist/src/lib/api/mp.ts +0 -26
  615. package/dist/src/lib/api/optimade.ts +0 -204
  616. package/dist/src/lib/app.css +0 -247
  617. package/dist/src/lib/brillouin/BrillouinZone.svelte +0 -549
  618. package/dist/src/lib/brillouin/BrillouinZoneControls.svelte +0 -144
  619. package/dist/src/lib/brillouin/BrillouinZoneExportPane.svelte +0 -146
  620. package/dist/src/lib/brillouin/BrillouinZoneInfoPane.svelte +0 -146
  621. package/dist/src/lib/brillouin/BrillouinZoneScene.svelte +0 -476
  622. package/dist/src/lib/brillouin/BrillouinZoneTooltip.svelte +0 -92
  623. package/dist/src/lib/brillouin/compute.ts +0 -529
  624. package/dist/src/lib/brillouin/index.ts +0 -8
  625. package/dist/src/lib/brillouin/types.ts +0 -51
  626. package/dist/src/lib/chempot-diagram/ChemPotDiagram.svelte +0 -327
  627. package/dist/src/lib/chempot-diagram/ChemPotDiagram2D.svelte +0 -846
  628. package/dist/src/lib/chempot-diagram/ChemPotDiagram3D.svelte +0 -3193
  629. package/dist/src/lib/chempot-diagram/async-compute.svelte.ts +0 -94
  630. package/dist/src/lib/chempot-diagram/chempot-worker.ts +0 -11
  631. package/dist/src/lib/chempot-diagram/color.ts +0 -42
  632. package/dist/src/lib/chempot-diagram/compute.ts +0 -1014
  633. package/dist/src/lib/chempot-diagram/index.ts +0 -6
  634. package/dist/src/lib/chempot-diagram/pointer.ts +0 -56
  635. package/dist/src/lib/chempot-diagram/temperature.ts +0 -77
  636. package/dist/src/lib/chempot-diagram/types.ts +0 -130
  637. package/dist/src/lib/colors/index.ts +0 -249
  638. package/dist/src/lib/composition/BarChart.svelte +0 -297
  639. package/dist/src/lib/composition/BubbleChart.svelte +0 -218
  640. package/dist/src/lib/composition/Composition.svelte +0 -165
  641. package/dist/src/lib/composition/Formula.svelte +0 -268
  642. package/dist/src/lib/composition/FormulaFilter.svelte +0 -1257
  643. package/dist/src/lib/composition/PieChart.svelte +0 -323
  644. package/dist/src/lib/composition/format.ts +0 -155
  645. package/dist/src/lib/composition/index.ts +0 -37
  646. package/dist/src/lib/composition/parse.ts +0 -605
  647. package/dist/src/lib/constants.ts +0 -134
  648. package/dist/src/lib/controls.ts +0 -42
  649. package/dist/src/lib/convex-hull/ConvexHull.svelte +0 -157
  650. package/dist/src/lib/convex-hull/ConvexHull2D.svelte +0 -825
  651. package/dist/src/lib/convex-hull/ConvexHull3D.svelte +0 -1801
  652. package/dist/src/lib/convex-hull/ConvexHull4D.svelte +0 -1398
  653. package/dist/src/lib/convex-hull/ConvexHullControls.svelte +0 -535
  654. package/dist/src/lib/convex-hull/ConvexHullInfoPane.svelte +0 -125
  655. package/dist/src/lib/convex-hull/ConvexHullStats.svelte +0 -929
  656. package/dist/src/lib/convex-hull/ConvexHullTooltip.svelte +0 -131
  657. package/dist/src/lib/convex-hull/GasPressureControls.svelte +0 -247
  658. package/dist/src/lib/convex-hull/StructurePopup.svelte +0 -151
  659. package/dist/src/lib/convex-hull/TemperatureSlider.svelte +0 -140
  660. package/dist/src/lib/convex-hull/barycentric-coords.ts +0 -246
  661. package/dist/src/lib/convex-hull/demo-temperature.ts +0 -63
  662. package/dist/src/lib/convex-hull/gas-thermodynamics.ts +0 -405
  663. package/dist/src/lib/convex-hull/helpers.ts +0 -932
  664. package/dist/src/lib/convex-hull/index.ts +0 -202
  665. package/dist/src/lib/convex-hull/thermodynamics.ts +0 -2192
  666. package/dist/src/lib/convex-hull/types.ts +0 -267
  667. package/dist/src/lib/coordination/CoordinationBarPlot.svelte +0 -311
  668. package/dist/src/lib/coordination/calc-coordination.ts +0 -93
  669. package/dist/src/lib/coordination/index.ts +0 -9
  670. package/dist/src/lib/effects.svelte.ts +0 -48
  671. package/dist/src/lib/element/ElementHeading.svelte +0 -26
  672. package/dist/src/lib/element/ElementPhoto.svelte +0 -57
  673. package/dist/src/lib/element/ElementStats.svelte +0 -80
  674. package/dist/src/lib/element/ElementTile.svelte +0 -484
  675. package/dist/src/lib/element/data.ts +0 -14
  676. package/dist/src/lib/element/index.ts +0 -8
  677. package/dist/src/lib/element/types.ts +0 -62
  678. package/dist/src/lib/feedback/ClickFeedback.svelte +0 -58
  679. package/dist/src/lib/feedback/DragOverlay.svelte +0 -42
  680. package/dist/src/lib/feedback/index.ts +0 -4
  681. package/dist/src/lib/fermi-surface/FermiSlice.svelte +0 -189
  682. package/dist/src/lib/fermi-surface/FermiSurface.svelte +0 -600
  683. package/dist/src/lib/fermi-surface/FermiSurfaceControls.svelte +0 -448
  684. package/dist/src/lib/fermi-surface/FermiSurfaceScene.svelte +0 -794
  685. package/dist/src/lib/fermi-surface/FermiSurfaceTooltip.svelte +0 -111
  686. package/dist/src/lib/fermi-surface/compute.ts +0 -728
  687. package/dist/src/lib/fermi-surface/constants.ts +0 -32
  688. package/dist/src/lib/fermi-surface/export.ts +0 -64
  689. package/dist/src/lib/fermi-surface/index.ts +0 -14
  690. package/dist/src/lib/fermi-surface/marching-cubes.ts +0 -3
  691. package/dist/src/lib/fermi-surface/parse.ts +0 -574
  692. package/dist/src/lib/fermi-surface/symmetry.ts +0 -56
  693. package/dist/src/lib/fermi-surface/types.ts +0 -159
  694. package/dist/src/lib/heatmap-matrix/HeatmapMatrix.svelte +0 -1545
  695. package/dist/src/lib/heatmap-matrix/HeatmapMatrixControls.svelte +0 -225
  696. package/dist/src/lib/heatmap-matrix/index.ts +0 -167
  697. package/dist/src/lib/heatmap-matrix/shared.ts +0 -7
  698. package/dist/src/lib/icons.ts +0 -650
  699. package/dist/src/lib/index.ts +0 -61
  700. package/dist/src/lib/io/decompress.ts +0 -92
  701. package/dist/src/lib/io/export.ts +0 -385
  702. package/dist/src/lib/io/fetch.ts +0 -46
  703. package/dist/src/lib/io/file-drop.ts +0 -51
  704. package/dist/src/lib/io/index.ts +0 -7
  705. package/dist/src/lib/io/is-binary.ts +0 -24
  706. package/dist/src/lib/io/types.ts +0 -8
  707. package/dist/src/lib/io/url-drop.ts +0 -141
  708. package/dist/src/lib/isosurface/Isosurface.svelte +0 -285
  709. package/dist/src/lib/isosurface/IsosurfaceControls.svelte +0 -277
  710. package/dist/src/lib/isosurface/index.ts +0 -7
  711. package/dist/src/lib/isosurface/parse.ts +0 -656
  712. package/dist/src/lib/isosurface/slice.ts +0 -175
  713. package/dist/src/lib/isosurface/types.ts +0 -309
  714. package/dist/src/lib/labels.ts +0 -320
  715. package/dist/src/lib/layout/FullscreenToggle.svelte +0 -50
  716. package/dist/src/lib/layout/InfoCard.svelte +0 -120
  717. package/dist/src/lib/layout/InfoTag.svelte +0 -185
  718. package/dist/src/lib/layout/PropertyFilter.svelte +0 -246
  719. package/dist/src/lib/layout/SettingsSection.svelte +0 -148
  720. package/dist/src/lib/layout/SubpageGrid.svelte +0 -82
  721. package/dist/src/lib/layout/fullscreen.ts +0 -65
  722. package/dist/src/lib/layout/index.ts +0 -11
  723. package/dist/src/lib/layout/json-tree/JsonNode.svelte +0 -548
  724. package/dist/src/lib/layout/json-tree/JsonTree.svelte +0 -1230
  725. package/dist/src/lib/layout/json-tree/index.ts +0 -3
  726. package/dist/src/lib/layout/json-tree/types.ts +0 -126
  727. package/dist/src/lib/layout/json-tree/utils.ts +0 -682
  728. package/dist/src/lib/marching-cubes.ts +0 -614
  729. package/dist/src/lib/math.ts +0 -1081
  730. package/dist/src/lib/overlays/ContextMenu.svelte +0 -162
  731. package/dist/src/lib/overlays/CopyButton.svelte +0 -45
  732. package/dist/src/lib/overlays/DragControlTab.svelte +0 -98
  733. package/dist/src/lib/overlays/DraggablePane.svelte +0 -487
  734. package/dist/src/lib/overlays/InfoPaneCards.svelte +0 -149
  735. package/dist/src/lib/overlays/index.ts +0 -3
  736. package/dist/src/lib/periodic-table/PeriodicTable.svelte +0 -469
  737. package/dist/src/lib/periodic-table/PeriodicTableControls.svelte +0 -557
  738. package/dist/src/lib/periodic-table/PropertySelect.svelte +0 -37
  739. package/dist/src/lib/periodic-table/index.ts +0 -12
  740. package/dist/src/lib/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +0 -1086
  741. package/dist/src/lib/phase-diagram/PhaseDiagramControls.svelte +0 -444
  742. package/dist/src/lib/phase-diagram/PhaseDiagramEditorPane.svelte +0 -126
  743. package/dist/src/lib/phase-diagram/PhaseDiagramExportPane.svelte +0 -184
  744. package/dist/src/lib/phase-diagram/PhaseDiagramTooltip.svelte +0 -391
  745. package/dist/src/lib/phase-diagram/TdbInfoPanel.svelte +0 -203
  746. package/dist/src/lib/phase-diagram/build-diagram.ts +0 -186
  747. package/dist/src/lib/phase-diagram/colors.ts +0 -58
  748. package/dist/src/lib/phase-diagram/diagram-input.ts +0 -40
  749. package/dist/src/lib/phase-diagram/index.ts +0 -13
  750. package/dist/src/lib/phase-diagram/parse.ts +0 -348
  751. package/dist/src/lib/phase-diagram/svg-to-diagram.ts +0 -1023
  752. package/dist/src/lib/phase-diagram/types.ts +0 -144
  753. package/dist/src/lib/phase-diagram/utils.ts +0 -775
  754. package/dist/src/lib/plot/AxisLabel.svelte +0 -51
  755. package/dist/src/lib/plot/BarPlot.svelte +0 -2113
  756. package/dist/src/lib/plot/BarPlotControls.svelte +0 -66
  757. package/dist/src/lib/plot/BinnedScatterPlot.svelte +0 -1114
  758. package/dist/src/lib/plot/ColorBar.svelte +0 -721
  759. package/dist/src/lib/plot/ColorScaleSelect.svelte +0 -54
  760. package/dist/src/lib/plot/ElementScatter.svelte +0 -63
  761. package/dist/src/lib/plot/FillArea.svelte +0 -223
  762. package/dist/src/lib/plot/Histogram.svelte +0 -1558
  763. package/dist/src/lib/plot/HistogramControls.svelte +0 -212
  764. package/dist/src/lib/plot/InteractiveAxisLabel.svelte +0 -96
  765. package/dist/src/lib/plot/Line.svelte +0 -84
  766. package/dist/src/lib/plot/PlotAxis.svelte +0 -169
  767. package/dist/src/lib/plot/PlotControls.svelte +0 -537
  768. package/dist/src/lib/plot/PlotLegend.svelte +0 -569
  769. package/dist/src/lib/plot/PlotTooltip.svelte +0 -67
  770. package/dist/src/lib/plot/PortalSelect.svelte +0 -253
  771. package/dist/src/lib/plot/ReferenceLine.svelte +0 -204
  772. package/dist/src/lib/plot/ReferenceLine3D.svelte +0 -156
  773. package/dist/src/lib/plot/ReferencePlane.svelte +0 -175
  774. package/dist/src/lib/plot/ScatterPlot.svelte +0 -2778
  775. package/dist/src/lib/plot/ScatterPlot3D.svelte +0 -529
  776. package/dist/src/lib/plot/ScatterPlot3DControls.svelte +0 -437
  777. package/dist/src/lib/plot/ScatterPlot3DScene.svelte +0 -912
  778. package/dist/src/lib/plot/ScatterPlotControls.svelte +0 -306
  779. package/dist/src/lib/plot/ScatterPoint.svelte +0 -182
  780. package/dist/src/lib/plot/SpacegroupBarPlot.svelte +0 -293
  781. package/dist/src/lib/plot/Surface3D.svelte +0 -197
  782. package/dist/src/lib/plot/ZeroLines.svelte +0 -97
  783. package/dist/src/lib/plot/ZoomRect.svelte +0 -23
  784. package/dist/src/lib/plot/adaptive-density.ts +0 -316
  785. package/dist/src/lib/plot/auto-place.ts +0 -184
  786. package/dist/src/lib/plot/axis-utils.ts +0 -122
  787. package/dist/src/lib/plot/binned-scatter-types.ts +0 -83
  788. package/dist/src/lib/plot/data-cleaning.ts +0 -1069
  789. package/dist/src/lib/plot/data-transform.ts +0 -69
  790. package/dist/src/lib/plot/defaults.ts +0 -9
  791. package/dist/src/lib/plot/fill-utils.ts +0 -494
  792. package/dist/src/lib/plot/hover-lock.svelte.ts +0 -60
  793. package/dist/src/lib/plot/index.ts +0 -53
  794. package/dist/src/lib/plot/interactions.ts +0 -119
  795. package/dist/src/lib/plot/layout.ts +0 -425
  796. package/dist/src/lib/plot/reference-line.ts +0 -426
  797. package/dist/src/lib/plot/scales.ts +0 -654
  798. package/dist/src/lib/plot/svg.ts +0 -23
  799. package/dist/src/lib/plot/types.ts +0 -1144
  800. package/dist/src/lib/plot/utils/label-placement.ts +0 -541
  801. package/dist/src/lib/plot/utils/series-visibility.ts +0 -140
  802. package/dist/src/lib/plot/utils.ts +0 -11
  803. package/dist/src/lib/rdf/RdfPlot.svelte +0 -247
  804. package/dist/src/lib/rdf/calc-rdf.ts +0 -167
  805. package/dist/src/lib/rdf/index.ts +0 -27
  806. package/dist/src/lib/sanitize.ts +0 -126
  807. package/dist/src/lib/settings.ts +0 -1479
  808. package/dist/src/lib/spectral/Bands.svelte +0 -1040
  809. package/dist/src/lib/spectral/BandsAndDos.svelte +0 -134
  810. package/dist/src/lib/spectral/BrillouinBandsDos.svelte +0 -252
  811. package/dist/src/lib/spectral/Dos.svelte +0 -697
  812. package/dist/src/lib/spectral/helpers.ts +0 -1381
  813. package/dist/src/lib/spectral/index.ts +0 -8
  814. package/dist/src/lib/spectral/types.ts +0 -112
  815. package/dist/src/lib/state.svelte.ts +0 -64
  816. package/dist/src/lib/structure/Arrow.svelte +0 -72
  817. package/dist/src/lib/structure/AtomLegend.svelte +0 -815
  818. package/dist/src/lib/structure/Bond.svelte +0 -140
  819. package/dist/src/lib/structure/CanvasTooltip.svelte +0 -33
  820. package/dist/src/lib/structure/CellSelect.svelte +0 -349
  821. package/dist/src/lib/structure/Cylinder.svelte +0 -45
  822. package/dist/src/lib/structure/Lattice.svelte +0 -196
  823. package/dist/src/lib/structure/Structure.svelte +0 -2248
  824. package/dist/src/lib/structure/StructureControls.svelte +0 -1273
  825. package/dist/src/lib/structure/StructureExportPane.svelte +0 -252
  826. package/dist/src/lib/structure/StructureInfoPane.svelte +0 -737
  827. package/dist/src/lib/structure/StructureScene.svelte +0 -2255
  828. package/dist/src/lib/structure/atom-properties.ts +0 -316
  829. package/dist/src/lib/structure/bond-order-perception.ts +0 -447
  830. package/dist/src/lib/structure/bonding.ts +0 -944
  831. package/dist/src/lib/structure/export.ts +0 -861
  832. package/dist/src/lib/structure/index.ts +0 -291
  833. package/dist/src/lib/structure/label-placement.ts +0 -130
  834. package/dist/src/lib/structure/measure.ts +0 -45
  835. package/dist/src/lib/structure/parse.ts +0 -1705
  836. package/dist/src/lib/structure/partial-occupancy.ts +0 -183
  837. package/dist/src/lib/structure/pbc.ts +0 -164
  838. package/dist/src/lib/structure/supercell.ts +0 -226
  839. package/dist/src/lib/structure/validation.ts +0 -11
  840. package/dist/src/lib/symmetry/SymmetryStats.svelte +0 -226
  841. package/dist/src/lib/symmetry/WyckoffTable.svelte +0 -120
  842. package/dist/src/lib/symmetry/cell-transform.ts +0 -118
  843. package/dist/src/lib/symmetry/index.ts +0 -348
  844. package/dist/src/lib/symmetry/spacegroups.ts +0 -404
  845. package/dist/src/lib/table/HeatmapTable.svelte +0 -1833
  846. package/dist/src/lib/table/ToggleMenu.svelte +0 -385
  847. package/dist/src/lib/table/index.ts +0 -139
  848. package/dist/src/lib/theme/ThemeControl.svelte +0 -53
  849. package/dist/src/lib/theme/index.ts +0 -107
  850. package/dist/src/lib/time.ts +0 -71
  851. package/dist/src/lib/tooltip/TooltipContent.svelte +0 -58
  852. package/dist/src/lib/tooltip/index.ts +0 -2
  853. package/dist/src/lib/tooltip/types.ts +0 -13
  854. package/dist/src/lib/trajectory/Trajectory.svelte +0 -1545
  855. package/dist/src/lib/trajectory/TrajectoryError.svelte +0 -128
  856. package/dist/src/lib/trajectory/TrajectoryExportPane.svelte +0 -357
  857. package/dist/src/lib/trajectory/TrajectoryInfoPane.svelte +0 -313
  858. package/dist/src/lib/trajectory/constants.ts +0 -7
  859. package/dist/src/lib/trajectory/extract.ts +0 -196
  860. package/dist/src/lib/trajectory/format-detect.ts +0 -96
  861. package/dist/src/lib/trajectory/frame-reader.ts +0 -456
  862. package/dist/src/lib/trajectory/helpers.ts +0 -217
  863. package/dist/src/lib/trajectory/index.ts +0 -218
  864. package/dist/src/lib/trajectory/parse/ase.ts +0 -109
  865. package/dist/src/lib/trajectory/parse/hdf5.ts +0 -173
  866. package/dist/src/lib/trajectory/parse/index.ts +0 -411
  867. package/dist/src/lib/trajectory/parse/lammps.ts +0 -215
  868. package/dist/src/lib/trajectory/parse/vasp.ts +0 -102
  869. package/dist/src/lib/trajectory/parse/xyz.ts +0 -143
  870. package/dist/src/lib/trajectory/plotting.ts +0 -599
  871. package/dist/src/lib/trajectory/types.ts +0 -13
  872. package/dist/src/lib/utils.ts +0 -56
  873. package/dist/src/lib/xrd/XrdPlot.svelte +0 -615
  874. package/dist/src/lib/xrd/broadening.ts +0 -130
  875. package/dist/src/lib/xrd/calc-xrd.ts +0 -397
  876. package/dist/src/lib/xrd/index.ts +0 -38
  877. package/dist/src/lib/xrd/parse.ts +0 -858
  878. package/dist/webview.js +0 -29421
  879. package/icon.png +0 -0
  880. package/matterviz-0.3.2.vsix +0 -0
  881. package/matterviz-0.3.4.vsix +0 -0
  882. package/matterviz-0.3.5.vsix +0 -0
  883. package/scripts/sync-config.ts +0 -101
  884. package/src/declarations.d.ts +0 -2
  885. package/src/extension.ts +0 -972
  886. package/src/node-io.ts +0 -65
  887. package/src/types.ts +0 -17
  888. package/src/webview/JsonBrowser.svelte +0 -1079
  889. package/src/webview/PlotPanel.svelte +0 -346
  890. package/src/webview/detect.ts +0 -444
  891. package/src/webview/main.ts +0 -764
  892. package/src/webview/plot-utils.ts +0 -250
  893. package/test-fixtures/all-viz-types.json.gz +0 -0
  894. package/test-fixtures/plot-demo-data.json.gz +0 -0
  895. package/tests/detect.test.ts +0 -604
  896. package/tests/extension.test.ts +0 -2041
  897. package/tests/node-io.test.ts +0 -39
  898. package/tests/plot-utils.test.ts +0 -302
  899. package/tests/vite-plugin-json-gz.test.ts +0 -114
  900. package/tests/vscode-mock.ts +0 -18
  901. package/tests/webview.test.ts +0 -231
  902. package/tsconfig.json +0 -20
  903. package/vite-plugin-json-gz.ts +0 -29
  904. package/vite.config.ts +0 -34
  905. package/vite.extension.config.ts +0 -34
  906. /package/dist/{src/lib/EmptyState.svelte → EmptyState.svelte} +0 -0
  907. /package/dist/{src/lib/chempot-diagram → chempot-diagram}/ChemPotScene3D.svelte +0 -0
  908. /package/dist/{src/lib/colors → colors}/alloy-colors.json +0 -0
  909. /package/dist/{src/lib/colors → colors}/dark-mode-colors.json +0 -0
  910. /package/dist/{src/lib/colors → colors}/jmol-colors.json +0 -0
  911. /package/dist/{src/lib/colors → colors}/muted-colors.json +0 -0
  912. /package/dist/{src/lib/colors → colors}/pastel-colors.json +0 -0
  913. /package/dist/{src/lib/colors → colors}/vesta-colors.json +0 -0
  914. /package/dist/{src/lib/element → element}/BohrAtom.svelte +0 -0
  915. /package/dist/{src/lib/element → element}/Nucleus.svelte +0 -0
  916. /package/dist/{src/lib/element → element}/data.json +0 -0
  917. /package/dist/{src/lib/element → element}/data.json.gz +0 -0
  918. /package/dist/{src/lib/element → element}/data.json.gz.d.ts +0 -0
  919. /package/dist/{src/lib/element → element}/data.schema.json +0 -0
  920. /package/dist/{src/lib/element-image-urls.json → element-image-urls.json} +0 -0
  921. /package/dist/{src/lib/feedback → feedback}/Spinner.svelte +0 -0
  922. /package/dist/{src/lib/feedback → feedback}/StatusMessage.svelte +0 -0
  923. /package/dist/{src/lib/layout → layout}/json-tree/JsonValue.svelte +0 -0
  924. /package/dist/{src/lib/periodic-table → periodic-table}/TableInset.svelte +0 -0
  925. /package/dist/{src/lib/theme → theme}/themes.mjs +0 -0
  926. /package/dist/{src/lib/xrd → xrd}/atomic_scattering_params.json +0 -0
@@ -0,0 +1,195 @@
1
+ import { LOG_EPS } from '../../math';
2
+ import { get_arcsinh_threshold, get_scale_type_name } from './types';
3
+ // Get coordinates of a mouse event relative to an element (the event's
4
+ // currentTarget by default; pass `element` when the handler is delegated and the
5
+ // reference frame differs, e.g. coordinates relative to the svg root)
6
+ export function get_relative_coords(evt, element = evt.currentTarget) {
7
+ if (!(element instanceof Element))
8
+ return null;
9
+ const box = element.getBoundingClientRect();
10
+ if (!box)
11
+ return null;
12
+ return { x: evt.clientX - box.left, y: evt.clientY - box.top };
13
+ }
14
+ // Resolve a delegated event to the integer value of the nearest ancestor's data
15
+ // attribute (e.g. data-sunburst-node-idx), scoped to `root` so targets outside the
16
+ // component don't leak in. Returns null when the event didn't hit an indexed element.
17
+ export function closest_data_idx(event, attr, root) {
18
+ const target = event.target instanceof Element ? event.target.closest(`[${attr}]`) : null;
19
+ if (!target || (root && !root.contains(target)))
20
+ return null;
21
+ const idx = Number(target.getAttribute(attr));
22
+ return Number.isInteger(idx) ? idx : null;
23
+ }
24
+ // Normalize Y2 sync config (handle shorthand string vs full object)
25
+ export function normalize_y2_sync(sync) {
26
+ if (!sync || sync === `none`)
27
+ return { mode: `none` };
28
+ if (typeof sync === `string`)
29
+ return { mode: sync };
30
+ return sync;
31
+ }
32
+ // Helper to check if all values in ranges are finite
33
+ const all_finite = (...ranges) => ranges.every(([a, b]) => Number.isFinite(a) && Number.isFinite(b));
34
+ // Calculate synced y2 range based on sync mode
35
+ export function sync_y2_range(y1_range, y2_base_range, sync) {
36
+ if (sync.mode === `none`)
37
+ return y2_base_range;
38
+ if (!all_finite(y1_range, y2_base_range))
39
+ return y2_base_range;
40
+ // Synced: Y2 has exact same range as Y1
41
+ if (sync.mode === `synced`) {
42
+ return [y1_range[0], y1_range[1]];
43
+ }
44
+ // Align: Position so align_val (default 0) is at same relative position on both axes
45
+ // Y2 range expands as needed to show all data while maintaining alignment
46
+ if (sync.mode === `align`) {
47
+ const align_val = sync.align_value ?? 0;
48
+ const y1_span = y1_range[1] - y1_range[0];
49
+ if (y1_span === 0)
50
+ return y2_base_range;
51
+ // Where is align_val in Y1's range? (0 = bottom, 1 = top)
52
+ const rel_pos = (align_val - y1_range[0]) / y1_span;
53
+ // Ensure Y2 range includes both align_val and all data
54
+ const y2_min_data = Math.min(y2_base_range[0], align_val);
55
+ const y2_max_data = Math.max(y2_base_range[1], align_val);
56
+ // Calculate minimum span needed to fit all data while keeping align_val at rel_pos
57
+ // Constraints: y2_min <= y2_min_data AND y2_max >= y2_max_data
58
+ let y2_span = y2_max_data - y2_min_data;
59
+ if (rel_pos > 0) {
60
+ y2_span = Math.max(y2_span, (align_val - y2_min_data) / rel_pos);
61
+ }
62
+ if (rel_pos < 1) {
63
+ y2_span = Math.max(y2_span, (y2_max_data - align_val) / (1 - rel_pos));
64
+ }
65
+ const y2_min_computed = align_val - rel_pos * y2_span;
66
+ const y2_max_computed = align_val + (1 - rel_pos) * y2_span;
67
+ // When align_val is outside y1_range (rel_pos < 0 or > 1), the formula can produce
68
+ // a range that omits y2_base_range or align_val. Ensure both are always included.
69
+ const y2_min = Math.min(y2_min_computed, y2_base_range[0], align_val);
70
+ const y2_max = Math.max(y2_max_computed, y2_base_range[1], align_val);
71
+ return [y2_min, y2_max];
72
+ }
73
+ return y2_base_range;
74
+ }
75
+ // Forward/inverse transform pair mapping an axis's data values onto its visual
76
+ // metric (the space where equal pixel steps are equal steps; identity for
77
+ // linear/time). Pan and pinch must be uniform in *screen* space - doing the math
78
+ // linearly on a log axis stretches one end of the view and shifts past zero into
79
+ // an all-NaN domain. log clamps at LOG_EPS so a non-positive bound (stale explicit
80
+ // range) recovers instead of propagating -Infinity.
81
+ function axis_transform(scale_type) {
82
+ const name = get_scale_type_name(scale_type);
83
+ if (name === `log`) {
84
+ return { to: (val) => Math.log(Math.max(val, LOG_EPS)), from: Math.exp };
85
+ }
86
+ if (name === `arcsinh`) {
87
+ const threshold = get_arcsinh_threshold(scale_type);
88
+ const to = (val) => Math.asinh(val / threshold);
89
+ const from = (val) => Math.sinh(val) * threshold;
90
+ return { to, from };
91
+ }
92
+ return { to: (val) => val, from: (val) => val };
93
+ }
94
+ // Pan a range by a pixel delta, uniformly in screen space: linear axes shift by a
95
+ // constant amount, log axes by a constant factor (which also can't cross zero).
96
+ // `pixel_span` is the plot's pixel extent along the axis.
97
+ export function pan_range_by_pixels(range, pixel_delta, pixel_span, scale_type) {
98
+ if (pixel_span === 0)
99
+ return range;
100
+ const { to, from } = axis_transform(scale_type);
101
+ const [t0, t1] = [to(range[0]), to(range[1])];
102
+ const t_delta = (pixel_delta / pixel_span) * (t1 - t0);
103
+ return [from(t0 + t_delta), from(t1 + t_delta)];
104
+ }
105
+ // Zoom a range about its screen-space center by `factor` (pinch: >1 zooms in).
106
+ // On log axes the fixed point is the geometric mean - the visual center.
107
+ export function zoom_range_by_factor(range, factor, scale_type) {
108
+ // Guard invalid factors (0/negative/NaN) that would emit Infinity/NaN into axis state
109
+ if (!Number.isFinite(factor) || factor <= 0)
110
+ return range;
111
+ const { to, from } = axis_transform(scale_type);
112
+ const [t0, t1] = [to(range[0]), to(range[1])];
113
+ const center = (t0 + t1) / 2;
114
+ const half_span = (t1 - t0) / factor / 2;
115
+ return [from(center - half_span), from(center + half_span)];
116
+ }
117
+ // Coerce a scale.invert result (number, or Date for time scales) to an epoch number
118
+ export const to_epoch_num = (val) => val instanceof Date ? val.getTime() : val;
119
+ // Remove window drag/pan listeners and reset the body cursor. Call from onDestroy:
120
+ // a component unmounting mid-drag would otherwise leak its listeners and leave the
121
+ // cursor stuck (the mouseup that normally cleans up never fires after unmount).
122
+ export function remove_drag_listeners(move_handlers, up_handlers) {
123
+ if (typeof window === `undefined`)
124
+ return;
125
+ for (const handler of move_handlers) {
126
+ window.removeEventListener(`mousemove`, handler);
127
+ }
128
+ for (const handler of up_handlers) {
129
+ window.removeEventListener(`mouseup`, handler);
130
+ }
131
+ document.body.style.cursor = ``;
132
+ }
133
+ // Sorted [min, max] from two scalar bounds (rect-zoom inverts drag start/end,
134
+ // which arrive in either order depending on drag direction)
135
+ export const sorted_range = (a, b) => [Math.min(a, b), Math.max(a, b)];
136
+ // Strict per-bound equality of two [min, max] ranges
137
+ export const vec2_equal = (a, b) => a[0] === b[0] && a[1] === b[1];
138
+ // True when all four axis ranges match. The range-sync effects use this to skip
139
+ // no-op writes that would otherwise re-trigger the effect and loop.
140
+ export const axis_ranges_equal = (a, b) => vec2_equal(a.x, b.x) &&
141
+ vec2_equal(a.x2, b.x2) &&
142
+ vec2_equal(a.y, b.y) &&
143
+ vec2_equal(a.y2, b.y2);
144
+ // Merge each axis's explicit range over its auto range (per-bound: a null bound
145
+ // falls back to the auto value). Returns null if any resolved bound is non-finite so
146
+ // the caller can skip the sync - writing NaN breaks scales and, since NaN !== NaN,
147
+ // makes the change comparison never settle (an infinite effect loop).
148
+ export function resolve_axis_ranges(axes, auto) {
149
+ const resolve = (axis, fallback) => [
150
+ axis.range?.[0] ?? fallback[0],
151
+ axis.range?.[1] ?? fallback[1],
152
+ ];
153
+ const next = {
154
+ x: resolve(axes.x, auto.x),
155
+ x2: resolve(axes.x2, auto.x2),
156
+ y: resolve(axes.y, auto.y),
157
+ y2: resolve(axes.y2, auto.y2),
158
+ };
159
+ for (const [lo, hi] of [next.x, next.x2, next.y, next.y2]) {
160
+ if (!Number.isFinite(lo) || !Number.isFinite(hi))
161
+ return null;
162
+ }
163
+ return next;
164
+ }
165
+ // Threshold for distinguishing pinch-zoom from pan in touch gestures
166
+ // Scale change > this value triggers zoom instead of pan
167
+ export const PINCH_ZOOM_THRESHOLD = 0.1;
168
+ // Minimum start distance (px) between two touches to treat the gesture as a valid pinch.
169
+ // Guards curr_dist / start_dist scale from blowing up on near-coincident touches
170
+ export const MIN_TOUCH_DISTANCE_PIXELS = 10;
171
+ // Helper to check if range is the default [0, 1] sentinel (no data)
172
+ // Note: min === 0 handles -0 correctly since -0 === 0 in JavaScript
173
+ const is_default_range = ([min, max]) => min === 0 && max === 1;
174
+ // Adopt the new data range, unless all series were hidden (sentinel [0, 1] fallback).
175
+ // NOTE: [0, 1] is the "no data" sentinel - when all series are hidden, auto ranges
176
+ // fall back to [0, 1]. Actual data spanning exactly [0, 1] is a rare edge case.
177
+ export function expand_range_if_needed(current, new_range) {
178
+ // Guard against NaN/Infinity - prefer valid range, fall back to sentinel [0, 1] if both invalid
179
+ const current_valid = all_finite(current);
180
+ const new_valid = all_finite(new_range);
181
+ if (!current_valid && !new_valid)
182
+ return { range: [0, 1], changed: true };
183
+ if (!new_valid)
184
+ return { range: current, changed: false };
185
+ if (!current_valid)
186
+ return { range: new_range, changed: true };
187
+ // When all series are hidden, auto ranges fall back to [0, 1] sentinel.
188
+ // Don't shrink to that — preserve the current view so it doesn't jump.
189
+ if (!is_default_range(current) && is_default_range(new_range)) {
190
+ return { range: current, changed: false };
191
+ }
192
+ // Otherwise adopt the new range directly (both expand and shrink)
193
+ const changed = new_range[0] !== current[0] || new_range[1] !== current[1];
194
+ return { range: new_range, changed };
195
+ }
@@ -0,0 +1,79 @@
1
+ import type { AxisConfig } from './types';
2
+ export type Sides = {
3
+ t?: number;
4
+ b?: number;
5
+ l?: number;
6
+ r?: number;
7
+ };
8
+ export declare const LABEL_GAP_DEFAULT = 30;
9
+ export declare function y2_axis_label_x(axis: AxisConfig, width: number, pad_r: number, max_tick_width: number): number;
10
+ export declare const filter_padding: (padding: Partial<Sides> | undefined | null, defaults: Required<Sides>) => Required<Sides>;
11
+ export declare function measure_text_width(text: string, font?: string): number;
12
+ export declare function measure_full_footprint(el: HTMLElement): {
13
+ width: number;
14
+ height: number;
15
+ };
16
+ export interface AutoPaddingConfig {
17
+ padding: Partial<Sides>;
18
+ default_padding: Required<Sides>;
19
+ x2_axis?: AxisConfig & {
20
+ tick_values?: (string | number)[];
21
+ };
22
+ y_axis?: AxisConfig & {
23
+ tick_values?: (string | number)[];
24
+ };
25
+ y2_axis?: AxisConfig & {
26
+ tick_values?: (string | number)[];
27
+ };
28
+ label_gap?: number;
29
+ }
30
+ export declare const measure_max_tick_width: (ticks: (string | number)[], format?: string) => number;
31
+ export declare const TICK_LABEL_HEIGHT = 16;
32
+ export declare const AXIS_LABEL_HEIGHT = 20;
33
+ export declare const calc_auto_padding: ({ padding, default_padding, x2_axis, y_axis, y2_axis, label_gap, }: AutoPaddingConfig) => Required<Sides>;
34
+ export declare function constrain_tooltip_position(cursor_x: number, cursor_y: number, tooltip_width: number, tooltip_height: number, viewport_width: number, viewport_height: number, options?: {
35
+ offset?: number;
36
+ offset_x?: number;
37
+ offset_y?: number;
38
+ }): {
39
+ x: number;
40
+ y: number;
41
+ };
42
+ export interface Rect {
43
+ x: number;
44
+ y: number;
45
+ width: number;
46
+ height: number;
47
+ }
48
+ export declare const pad_rect: (rect: Rect, padding: number) => Rect;
49
+ export declare const centered_rect: (center_x: number, top_y: number, width: number, height: number) => Rect;
50
+ export declare const rect_within_rect: (rect: Rect, bounds: Rect) => boolean;
51
+ export interface ElementPlacementConfig {
52
+ plot_bounds: Rect;
53
+ element_size: {
54
+ width: number;
55
+ height: number;
56
+ };
57
+ element?: HTMLElement | null;
58
+ axis_clearance?: number;
59
+ exclude_rects?: Rect[];
60
+ points: {
61
+ x: number;
62
+ y: number;
63
+ }[];
64
+ grid_resolution?: number;
65
+ }
66
+ export interface ElementPlacementResult {
67
+ x: number;
68
+ y: number;
69
+ score: number;
70
+ }
71
+ export declare const rects_overlap: (r1: Rect, r2: Rect) => boolean;
72
+ export declare function sample_series_obstacle_points(pixel_points: {
73
+ x: number;
74
+ y: number;
75
+ }[], draws_line: boolean, step: number): {
76
+ x: number;
77
+ y: number;
78
+ }[];
79
+ export declare function compute_element_placement(config: ElementPlacementConfig): ElementPlacementResult;
@@ -0,0 +1,281 @@
1
+ import { format_value } from '../../labels';
2
+ import { euclidean_dist } from '../../math';
3
+ // Default gap between tick labels and axis labels
4
+ export const LABEL_GAP_DEFAULT = 30;
5
+ // X position for a right-side (y2) axis label: past the plot edge plus tick shift and
6
+ // measured tick-label width (both zero when tick labels render inside the plot)
7
+ export function y2_axis_label_x(axis, width, pad_r, max_tick_width) {
8
+ const inside = axis.tick?.label?.inside ?? false;
9
+ const tick_shift = inside ? 0 : (axis.tick?.label?.shift?.x ?? 0) + 8;
10
+ const label_offset = (inside ? 0 : max_tick_width) + LABEL_GAP_DEFAULT + (axis.label_shift?.x ?? 0);
11
+ return width - pad_r + tick_shift + label_offset;
12
+ }
13
+ // Filter undefined values from padding to prevent overriding defaults when spreading
14
+ // Guards against undefined/null padding inputs (common for optional props)
15
+ export const filter_padding = (padding, defaults) => ({
16
+ ...defaults,
17
+ ...Object.fromEntries(Object.entries(padding ?? {}).filter(([, v]) => v !== undefined)),
18
+ });
19
+ // Measure text width using canvas (singleton pattern for performance)
20
+ let measurement_canvas = null;
21
+ export function measure_text_width(text, font = `12px sans-serif`) {
22
+ if (typeof document === `undefined`)
23
+ return 0;
24
+ measurement_canvas ??= document.createElement(`canvas`);
25
+ const ctx = measurement_canvas.getContext(`2d`);
26
+ if (!ctx)
27
+ return 0;
28
+ ctx.font = font;
29
+ return ctx.measureText(text).width;
30
+ }
31
+ // Measure an element's full visual footprint, including descendants that overflow its
32
+ // offset box. Colorbar tick labels are position:absolute outside the bar, so
33
+ // offsetWidth/offsetHeight underestimate the space they actually occupy — which lets
34
+ // auto-placement put the colorbar where its labels overlap the axes.
35
+ export function measure_full_footprint(el) {
36
+ const root = el.getBoundingClientRect();
37
+ let right = root.right;
38
+ let bottom = root.bottom;
39
+ for (const child of el.querySelectorAll(`*`)) {
40
+ const rect = child.getBoundingClientRect();
41
+ if (rect.width === 0 && rect.height === 0)
42
+ continue;
43
+ right = Math.max(right, rect.right);
44
+ bottom = Math.max(bottom, rect.bottom);
45
+ }
46
+ return { width: right - root.left, height: bottom - root.top };
47
+ }
48
+ // Measure the widest formatted tick label. Used for auto-padding and label placement.
49
+ export const measure_max_tick_width = (ticks, format = ``) => ticks.length === 0
50
+ ? 0
51
+ : Math.max(...ticks.map((tick) => {
52
+ const label = typeof tick === `string` ? tick : format_value(tick, format);
53
+ return measure_text_width(label, `12px sans-serif`);
54
+ }));
55
+ // Estimated height of a single tick label line (font-size 0.8em ≈ 12px + leading)
56
+ export const TICK_LABEL_HEIGHT = 16;
57
+ // Estimated height of an axis label (font-size ~14px + margin)
58
+ export const AXIS_LABEL_HEIGHT = 20;
59
+ export const calc_auto_padding = ({ padding, default_padding, x2_axis = {}, y_axis = {}, y2_axis = {}, label_gap = LABEL_GAP_DEFAULT, }) => {
60
+ const x2_ticks = x2_axis.tick_values ?? [];
61
+ const y_ticks = y_axis.tick_values ?? [];
62
+ const y_format = y_axis.format ?? ``;
63
+ const y2_ticks = y2_axis.tick_values ?? [];
64
+ const y2_format = y2_axis.format ?? ``;
65
+ return {
66
+ t: padding.t ??
67
+ (x2_ticks.length > 0
68
+ ? Math.max(default_padding.t, TICK_LABEL_HEIGHT + label_gap + (x2_axis.label ? AXIS_LABEL_HEIGHT : 0))
69
+ : default_padding.t),
70
+ b: padding.b ?? default_padding.b,
71
+ l: padding.l ??
72
+ Math.max(default_padding.l, measure_max_tick_width(y_ticks, y_format) + label_gap),
73
+ r: padding.r ??
74
+ Math.max(default_padding.r, measure_max_tick_width(y2_ticks, y2_format) + label_gap),
75
+ };
76
+ };
77
+ // Constrain tooltip position within bounds, flipping to opposite side if overflow
78
+ // offset_x/offset_y control initial positioning: positive = right/down, negative = left/up
79
+ export function constrain_tooltip_position(cursor_x, cursor_y, tooltip_width, tooltip_height, viewport_width, viewport_height, options = {}) {
80
+ const { offset = 10 } = options;
81
+ const offset_x = options.offset_x ?? offset;
82
+ const offset_y = options.offset_y ?? offset;
83
+ // Position to left of cursor if right-side placement overflows (and vice versa)
84
+ const flip_x = offset_x >= 0
85
+ ? cursor_x + offset_x + tooltip_width > viewport_width
86
+ : cursor_x + offset_x - tooltip_width < 0;
87
+ // Position above cursor if bottom placement overflows (and vice versa)
88
+ const flip_y = offset_y >= 0
89
+ ? cursor_y + offset_y + tooltip_height > viewport_height
90
+ : cursor_y + offset_y - tooltip_height < 0;
91
+ // Calculate position: apply offset, flip if needed
92
+ const abs_offset_x = Math.abs(offset_x);
93
+ const abs_offset_y = Math.abs(offset_y);
94
+ // Determine X position based on preferred side and flip state
95
+ let raw_x;
96
+ if (offset_x >= 0) {
97
+ // Prefer right side: flip to left if overflows
98
+ raw_x = flip_x ? cursor_x - abs_offset_x - tooltip_width : cursor_x + abs_offset_x;
99
+ }
100
+ else {
101
+ // Prefer left side: flip to right if overflows
102
+ raw_x = flip_x ? cursor_x + abs_offset_x : cursor_x - abs_offset_x - tooltip_width;
103
+ }
104
+ // Determine Y position based on preferred side and flip state
105
+ let raw_y;
106
+ if (offset_y >= 0) {
107
+ // Prefer bottom: flip to top if overflows
108
+ raw_y = flip_y ? cursor_y - abs_offset_y - tooltip_height : cursor_y + abs_offset_y;
109
+ }
110
+ else {
111
+ // Prefer top: flip to bottom if overflows
112
+ raw_y = flip_y ? cursor_y + abs_offset_y : cursor_y - abs_offset_y - tooltip_height;
113
+ }
114
+ // Clamp to viewport bounds
115
+ const x_pos = Math.max(0, Math.min(raw_x, viewport_width - tooltip_width));
116
+ const y_pos = Math.max(0, Math.min(raw_y, viewport_height - tooltip_height));
117
+ return { x: x_pos, y: y_pos };
118
+ }
119
+ export const pad_rect = (rect, padding) => ({
120
+ x: rect.x - padding,
121
+ y: rect.y - padding,
122
+ width: rect.width + 2 * padding,
123
+ height: rect.height + 2 * padding,
124
+ });
125
+ export const centered_rect = (center_x, top_y, width, height) => ({
126
+ x: center_x - width / 2,
127
+ y: top_y,
128
+ width,
129
+ height,
130
+ });
131
+ export const rect_within_rect = (rect, bounds) => rect.x >= bounds.x &&
132
+ rect.x + rect.width <= bounds.x + bounds.width &&
133
+ rect.y >= bounds.y &&
134
+ rect.y + rect.height <= bounds.y + bounds.height;
135
+ // Scoring constants
136
+ const EXCLUSION_PENALTY = 1000;
137
+ const DISTANCE_WEIGHT = 0.001;
138
+ // Strong corner preference: corners can have 3-4 more overlapping points and still win
139
+ const CORNER_WEIGHT = 5.0;
140
+ const MAX_SAMPLE_POINTS = 500;
141
+ // Check if a point is inside a rectangle
142
+ const point_in_rect = (point, rect) => point.x >= rect.x &&
143
+ point.x <= rect.x + rect.width &&
144
+ point.y >= rect.y &&
145
+ point.y <= rect.y + rect.height;
146
+ // Check if two rectangles overlap
147
+ export const rects_overlap = (r1, r2) => !(r1.x + r1.width <= r2.x ||
148
+ r2.x + r2.width <= r1.x ||
149
+ r1.y + r1.height <= r2.y ||
150
+ r2.y + r2.height <= r1.y);
151
+ // Build placement obstacles for one series' pixel-space polyline. Always includes the finite
152
+ // vertices; when the series draws a connecting line, also walks each segment between
153
+ // consecutive finite vertices at ~step px so legend/colorbar auto-placement avoids the line,
154
+ // not just sparse markers (e.g. a steep y=x^2 line has few markers but a long visible segment).
155
+ export function sample_series_obstacle_points(pixel_points, draws_line, step) {
156
+ const obstacles = [];
157
+ let prev = null;
158
+ for (const point of pixel_points) {
159
+ if (!isFinite(point.x) || !isFinite(point.y)) {
160
+ prev = null; // non-finite breaks the line; don't sample across the gap
161
+ continue;
162
+ }
163
+ obstacles.push(point);
164
+ if (draws_line && prev && step > 0) {
165
+ const n_samples = Math.floor(Math.hypot(point.x - prev.x, point.y - prev.y) / step);
166
+ for (let idx = 1; idx < n_samples; idx++) {
167
+ const frac = idx / n_samples;
168
+ const x = prev.x + (point.x - prev.x) * frac;
169
+ const y = prev.y + (point.y - prev.y) * frac;
170
+ obstacles.push({ x, y });
171
+ }
172
+ }
173
+ prev = point;
174
+ }
175
+ return obstacles;
176
+ }
177
+ // Find the best placement position using continuous grid sampling
178
+ // Scores each candidate position by:
179
+ // 1. Number of data points overlapping the element bounds (fewer = better)
180
+ // 2. Overlap with exclusion rectangles (heavy penalty)
181
+ // 3. Distance to nearest point (tie-breaker, farther = better)
182
+ export function compute_element_placement(config) {
183
+ const { plot_bounds, element_size, element, axis_clearance = 12, exclude_rects = [], points, grid_resolution: raw_resolution = 10, } = config;
184
+ // Ensure grid_resolution >= 2 to avoid division by zero in step calculation
185
+ const grid_resolution = Math.max(2, raw_resolution);
186
+ // Measure the element's full footprint (incl. descendants that overflow its box,
187
+ // such as colorbar tick labels) once it's laid out; fall back to element_size before
188
+ // first render. Centralizing this keeps every plot's auto-placement overlap-free.
189
+ const { width: elem_width, height: elem_height } = element?.offsetWidth && element?.offsetHeight
190
+ ? measure_full_footprint(element)
191
+ : element_size;
192
+ // Calculate valid placement region (plot bounds minus axis clearance)
193
+ const valid_x_min = plot_bounds.x + axis_clearance;
194
+ const valid_y_min = plot_bounds.y + axis_clearance;
195
+ const valid_x_max = plot_bounds.x + plot_bounds.width - axis_clearance - elem_width;
196
+ const valid_y_max = plot_bounds.y + plot_bounds.height - axis_clearance - elem_height;
197
+ // Handle case where element is too large for the valid region
198
+ const effective_x_min = Math.min(valid_x_min, valid_x_max);
199
+ const effective_x_max = Math.max(valid_x_min, valid_x_max);
200
+ const effective_y_min = Math.min(valid_y_min, valid_y_max);
201
+ const effective_y_max = Math.max(valid_y_min, valid_y_max);
202
+ // Subsample points for performance
203
+ const sampled_points = points.length > MAX_SAMPLE_POINTS
204
+ ? Array.from({ length: MAX_SAMPLE_POINTS }, (_, idx) => points[Math.floor((idx * points.length) / MAX_SAMPLE_POINTS)])
205
+ : points;
206
+ let best_result = {
207
+ x: effective_x_min,
208
+ y: effective_y_min,
209
+ score: -Infinity,
210
+ };
211
+ // Sample candidate positions on a grid
212
+ const x_step = effective_x_max > effective_x_min
213
+ ? (effective_x_max - effective_x_min) / (grid_resolution - 1)
214
+ : 0;
215
+ const y_step = effective_y_max > effective_y_min
216
+ ? (effective_y_max - effective_y_min) / (grid_resolution - 1)
217
+ : 0;
218
+ // Precompute plot corners (constant across all candidates)
219
+ const plot_left = plot_bounds.x + axis_clearance;
220
+ const plot_right = plot_bounds.x + plot_bounds.width - axis_clearance;
221
+ const plot_top = plot_bounds.y + axis_clearance;
222
+ const plot_bottom = plot_bounds.y + plot_bounds.height - axis_clearance;
223
+ const max_corner_dist = euclidean_dist([plot_left, plot_top], [plot_right, plot_bottom]);
224
+ for (let grid_x = 0; grid_x < grid_resolution; grid_x++) {
225
+ for (let grid_y = 0; grid_y < grid_resolution; grid_y++) {
226
+ const cand_x = effective_x_min + grid_x * x_step;
227
+ const cand_y = effective_y_min + grid_y * y_step;
228
+ const cand_rect = {
229
+ x: cand_x,
230
+ y: cand_y,
231
+ width: elem_width,
232
+ height: elem_height,
233
+ };
234
+ // Check for overlap with exclusion rectangles first (early rejection)
235
+ let exclusion_penalty = 0;
236
+ for (const excl_rect of exclude_rects) {
237
+ if (rects_overlap(cand_rect, excl_rect)) {
238
+ exclusion_penalty += EXCLUSION_PENALTY;
239
+ }
240
+ }
241
+ // Count points overlapping this candidate position
242
+ let overlap_count = 0;
243
+ let min_distance_sq = Infinity;
244
+ const center_x = cand_x + elem_width / 2;
245
+ const center_y = cand_y + elem_height / 2;
246
+ for (const point of sampled_points) {
247
+ if (point_in_rect(point, cand_rect)) {
248
+ overlap_count++;
249
+ }
250
+ // Track distance to nearest point for tie-breaking
251
+ const dx = point.x - center_x;
252
+ const dy = point.y - center_y;
253
+ const dist_sq = dx * dx + dy * dy;
254
+ if (dist_sq < min_distance_sq) {
255
+ min_distance_sq = dist_sq;
256
+ }
257
+ }
258
+ // Score: fewer overlaps = better (less negative)
259
+ // Add small distance bonus for tie-breaking
260
+ // When no points exist, min_distance_sq stays Infinity - treat as 0 (no distance bonus)
261
+ const min_distance = min_distance_sq === Infinity ? 0 : Math.sqrt(min_distance_sq);
262
+ // Corner preference: use element's actual corner (not center) for distance
263
+ // This ensures a wide element at the left edge gets proper corner credit
264
+ // (measured footprint, same as cand_rect — not the element_size fallback)
265
+ const elem_right = cand_x + elem_width;
266
+ const elem_bottom = cand_y + elem_height;
267
+ // Distance from element's matching corner to each plot corner
268
+ const min_corner_dist = Math.min(euclidean_dist([cand_x, cand_y], [plot_left, plot_top]), // top-left
269
+ euclidean_dist([elem_right, cand_y], [plot_right, plot_top]), // top-right
270
+ euclidean_dist([cand_x, elem_bottom], [plot_left, plot_bottom]), // bottom-left
271
+ euclidean_dist([elem_right, elem_bottom], [plot_right, plot_bottom]));
272
+ // Higher bonus for positions closer to corners (0 = at corner, 1 = far from all)
273
+ const corner_bonus = max_corner_dist > 0 ? (1 - min_corner_dist / max_corner_dist) * CORNER_WEIGHT : 0;
274
+ const score = -overlap_count + min_distance * DISTANCE_WEIGHT + corner_bonus - exclusion_penalty;
275
+ if (score > best_result.score) {
276
+ best_result = { x: cand_x, y: cand_y, score };
277
+ }
278
+ }
279
+ }
280
+ return best_result;
281
+ }
@@ -0,0 +1,60 @@
1
+ import type { RefLine, RefLineValue } from './types';
2
+ export type IndexedRefLine = RefLine & {
3
+ idx: number;
4
+ };
5
+ export declare const index_ref_lines: (ref_lines: RefLine[] | undefined) => IndexedRefLine[];
6
+ export interface RefLinesByZIndex {
7
+ below_grid: IndexedRefLine[];
8
+ below_lines: IndexedRefLine[];
9
+ below_points: IndexedRefLine[];
10
+ above_all: IndexedRefLine[];
11
+ }
12
+ export declare function group_ref_lines_by_z(lines: IndexedRefLine[]): RefLinesByZIndex;
13
+ export declare function normalize_value(value: RefLineValue): number;
14
+ export declare const normalize_point: (point: [RefLineValue, RefLineValue]) => [number, number];
15
+ export declare function resolve_line_endpoints(ref_line: RefLine, { x_min, x_max, y_min, y_max, }: {
16
+ x_min: number;
17
+ x_max: number;
18
+ y_min: number;
19
+ y_max: number;
20
+ }, { x_scale, x2_scale, y_scale, y2_scale, }: {
21
+ x_scale: (val: number) => number;
22
+ x2_scale?: (val: number) => number;
23
+ y_scale: (val: number) => number;
24
+ y2_scale?: (val: number) => number;
25
+ }): [number, number, number, number] | null;
26
+ interface AnnotationPosition {
27
+ x: number;
28
+ y: number;
29
+ text_anchor: `start` | `middle` | `end`;
30
+ dominant_baseline: `auto` | `middle` | `hanging`;
31
+ rotation?: number;
32
+ }
33
+ export declare function calculate_annotation_position(x1: number, y1: number, x2: number, y2: number, annotation: {
34
+ position?: `start` | `center` | `end`;
35
+ side?: `above` | `below` | `left` | `right`;
36
+ offset?: {
37
+ x?: number;
38
+ y?: number;
39
+ };
40
+ gap?: number;
41
+ edge_padding?: number;
42
+ rotate?: boolean;
43
+ }): AnnotationPosition;
44
+ export interface Scene3DParams {
45
+ scene_x: number;
46
+ scene_y: number;
47
+ scene_z: number;
48
+ x_range: [number, number];
49
+ y_range: [number, number];
50
+ z_range: [number, number];
51
+ }
52
+ /** Apply span constraints or use full range as fallback */
53
+ export declare const span_or: (span: [number | null, number | null] | undefined, range: [number, number]) => [number, number];
54
+ export declare function normalize_to_scene(value: number, [min_val, max_val]: [number, number], scene_size: number): number;
55
+ export declare function create_to_threejs(params: Scene3DParams): (user_x: number, user_y: number, user_z: number) => {
56
+ x: number;
57
+ y: number;
58
+ z: number;
59
+ };
60
+ export {};