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,1144 @@
1
+ import type { D3SymbolName } from '$lib/labels'
2
+ import type { Point2D, Point3D, Vec2, Vec3 } from '$lib/math'
3
+ import type DraggablePane from '$lib/overlays/DraggablePane.svelte'
4
+ import type { ComponentProps, Snippet } from 'svelte'
5
+ import type { HTMLAttributes } from 'svelte/elements'
6
+ import type { TweenOptions } from 'svelte/motion'
7
+ export type { TweenOptions } from 'svelte/motion'
8
+ import type { Sides } from './layout'
9
+ import type PlotLegend from './PlotLegend.svelte'
10
+ import type { TicksOption } from './scales'
11
+
12
+ export type XyShift = { x?: number; y?: number } // For optional shift/offset values
13
+
14
+ // Snapshot of axis ranges at interaction start (shared by pan/zoom/touch handlers)
15
+ export type InitialRanges = {
16
+ initial_x_range: Vec2
17
+ initial_x2_range: Vec2
18
+ initial_y_range: Vec2
19
+ initial_y2_range: Vec2
20
+ }
21
+
22
+ export type Point<Metadata = Record<string, unknown>> = {
23
+ x: number
24
+ y: number
25
+ metadata?: Metadata
26
+ offset?: Point2D
27
+ }
28
+
29
+ export interface PointStyle {
30
+ fill?: string
31
+ radius?: number
32
+ stroke?: string
33
+ stroke_width?: number
34
+ stroke_opacity?: number
35
+ fill_opacity?: number
36
+ symbol_type?: D3SymbolName
37
+ symbol_size?: number | null // Optional override for marker size
38
+ shape?: string // Add optional shape (string for flexibility)
39
+ cursor?: string // Cursor style for the point
40
+ // Highlight support for phase diagrams and other use cases
41
+ is_highlighted?: boolean
42
+ highlight_color?: string
43
+ highlight_effect?: `pulse` | `glow` | `size` | `color` | `both`
44
+ }
45
+
46
+ export interface HoverStyle {
47
+ enabled?: boolean
48
+ scale?: number
49
+ stroke?: string
50
+ stroke_width?: number
51
+ brightness?: number
52
+ }
53
+
54
+ export interface LabelStyle {
55
+ text?: string
56
+ offset?: Point2D
57
+ font_size?: string
58
+ font_family?: string
59
+ auto_placement?: boolean // Enable/disable auto-placement
60
+ size?: { width: number; height: number }
61
+ }
62
+
63
+ export interface BarStyle {
64
+ color?: string
65
+ opacity?: number
66
+ stroke_width?: number
67
+ stroke_color?: string
68
+ stroke_opacity?: number
69
+ border_radius?: number // Shorthand: sets both rx and ry to this value (lower priority than explicit rx/ry)
70
+ rx?: number // SVG rx attribute for horizontal corner radius (overrides border_radius)
71
+ ry?: number // SVG ry attribute for vertical corner radius (overrides border_radius)
72
+ [key: string]: unknown
73
+ }
74
+
75
+ export interface LineStyle {
76
+ color?: string
77
+ width?: number
78
+ dash?: string
79
+ [key: string]: unknown
80
+ }
81
+
82
+ // Extend the base Point type to include optional styling and metadata
83
+ export interface PlotPoint<Metadata = Record<string, unknown>> extends Point<Metadata> {
84
+ color_value?: number | null
85
+ point_style?: PointStyle
86
+ point_hover?: HoverStyle
87
+ point_label?: LabelStyle
88
+ point_offset?: Point2D // Individual point offset (distinct from label offset)
89
+ point_tween?: TweenOptions<Point2D>
90
+ }
91
+
92
+ export type Markers = `line` | `points` | `line+points` | `none`
93
+
94
+ // Define the structure for a data series in the plot
95
+ export interface DataSeries<Metadata = Record<string, unknown>> {
96
+ id?: string | number // Optional stable identifier for the series (used for keying)
97
+ x: readonly number[]
98
+ y: readonly number[]
99
+ // Optional marker display type override for this specific series
100
+ markers?: Markers
101
+ // Specify which x-axis to use: 'x1' (bottom, default) or 'x2' (top)
102
+ x_axis?: `x1` | `x2`
103
+ // Specify which y-axis to use: 'y1' (left, default) or 'y2' (right)
104
+ y_axis?: `y1` | `y2`
105
+ color_values?: (number | null)[] | null
106
+ size_values?: readonly (number | null)[] | null
107
+ metadata?: Metadata[] | Metadata // Can be array or single object
108
+ point_style?: PointStyle[] | PointStyle // Can be array or single object
109
+ point_hover?: HoverStyle[] | HoverStyle // Can be array or single object
110
+ point_label?: LabelStyle[] | LabelStyle // Can be array or single object
111
+ point_offset?: Point2D[] | Point2D // Can be array or single object
112
+ point_tween?: TweenOptions<Point2D>
113
+ visible?: boolean // Optional visibility flag
114
+ label?: string // Optional series label for legend
115
+ // Group name for organizing legend items. Series with the same legend_group
116
+ // are displayed together under a collapsible header. Click the header to toggle
117
+ // visibility of all series in the group, or the chevron to collapse/expand.
118
+ legend_group?: string
119
+ unit?: string // Optional unit for the series (e.g. "eV", "eV/Å", "GPa")
120
+ line_style?: {
121
+ stroke?: string
122
+ stroke_width?: number
123
+ line_dash?: string
124
+ }
125
+ // Internal fields used after processing (not provided by users)
126
+ filtered_data?: InternalPoint<Metadata>[]
127
+ _id?: string | number
128
+ orig_series_idx?: number // Original series index for consistent auto-cycling colors/symbols
129
+ }
130
+
131
+ // Represents the internal structure used within ScatterPlot, merging series-level and point-level data
132
+ export interface InternalPoint<
133
+ Metadata = Record<string, unknown>,
134
+ > extends PlotPoint<Metadata> {
135
+ series_idx: number // Index of the series this point belongs to
136
+ point_idx: number // Index of the point within its series
137
+ size_value?: number | null // Size value for the point
138
+ }
139
+
140
+ export interface Tooltip {
141
+ show: boolean
142
+ x: number
143
+ y: number
144
+ title?: string
145
+ items?: { label: string; value: string; color?: string }[]
146
+ }
147
+
148
+ export interface HandlerProps<Metadata = Record<string, unknown>> {
149
+ x: number
150
+ y: number
151
+ metadata?: Metadata | null
152
+ label?: string | null
153
+ series_idx: number
154
+ x_axis: AxisConfig
155
+ x2_axis?: AxisConfig
156
+ y_axis: AxisConfig
157
+ y2_axis?: AxisConfig
158
+ fullscreen?: boolean
159
+ }
160
+
161
+ export interface ScatterHandlerProps<
162
+ Metadata = Record<string, unknown>,
163
+ > extends HandlerProps<Metadata> {
164
+ cx: number
165
+ cy: number
166
+ x_formatted: string
167
+ y_formatted: string
168
+ color_value?: number | null
169
+ colorbar?: {
170
+ value?: number | null
171
+ title?: string | null
172
+ scale?: unknown
173
+ tick_format?: string | null
174
+ }
175
+ }
176
+ export type ScatterHandlerEvent<Metadata = Record<string, unknown>> =
177
+ ScatterHandlerProps<Metadata> & { event: MouseEvent; point: InternalPoint<Metadata> }
178
+
179
+ export interface BarHandlerProps<
180
+ Metadata = Record<string, unknown>,
181
+ > extends HandlerProps<Metadata> {
182
+ bar_idx: number
183
+ orient_x: number
184
+ orient_y: number
185
+ active_y_axis: `y1` | `y2`
186
+ active_x_axis: `x1` | `x2`
187
+ color: string
188
+ category_label?: string // original string category (undefined when numeric x)
189
+ }
190
+
191
+ export interface HistogramHandlerProps<
192
+ Metadata = Record<string, unknown>,
193
+ > extends HandlerProps<Metadata> {
194
+ value: number
195
+ count: number
196
+ property: string
197
+ active_y_axis: `y1` | `y2`
198
+ active_x_axis: `x1` | `x2`
199
+ }
200
+
201
+ export type TimeInterval = `day` | `month` | `year`
202
+
203
+ // Base scale type names
204
+ export type ScaleTypeName = `linear` | `log` | `arcsinh` | `time`
205
+
206
+ // Arcsinh scale configuration with optional threshold parameter
207
+ // threshold controls where linear→log transition occurs (default: 1)
208
+ // For |x| << threshold: behaves linearly
209
+ // For |x| >> threshold: behaves logarithmically
210
+ export interface ArcsinhScaleConfig {
211
+ type: `arcsinh`
212
+ threshold?: number // default: 1
213
+ }
214
+
215
+ // Scale type can be a simple string or arcsinh config object
216
+ export type ScaleType = `linear` | `log` | `arcsinh` | `time` | ArcsinhScaleConfig
217
+
218
+ // Type guard for select value narrowing (avoids unsafe casts)
219
+ const SCALE_TYPE_NAMES = new Set<string>([`linear`, `log`, `arcsinh`, `time`])
220
+ export const is_scale_type_name = (val: string): val is ScaleTypeName =>
221
+ SCALE_TYPE_NAMES.has(val)
222
+
223
+ // Helper to normalize ScaleType to base type name
224
+ export function get_scale_type_name(scale_type: ScaleType | undefined): ScaleTypeName {
225
+ if (!scale_type) return `linear`
226
+ if (typeof scale_type === `string`) return scale_type
227
+ return scale_type.type
228
+ }
229
+
230
+ // Helper to get arcsinh threshold (returns 1 as default for non-arcsinh scales)
231
+ export function get_arcsinh_threshold(scale_type: ScaleType | undefined): number {
232
+ if (!scale_type) return 1
233
+ if (typeof scale_type === `object` && scale_type.type === `arcsinh`) {
234
+ const threshold = scale_type.threshold ?? 1
235
+ if (!Number.isFinite(threshold) || threshold <= 0) {
236
+ throw new Error(`arcsinh threshold must be a positive finite number, got ${threshold}`)
237
+ }
238
+ return threshold
239
+ }
240
+ return 1 // default threshold
241
+ }
242
+
243
+ // Helper to detect time scale - checks explicit scale_type or falls back to format heuristic
244
+ // Prefer explicit scale_type: 'time' for new code; format heuristic kept for backwards compatibility
245
+ export function is_time_scale(
246
+ scale_type: ScaleType | undefined,
247
+ format: string | undefined,
248
+ ): boolean {
249
+ if (get_scale_type_name(scale_type) === `time`) return true
250
+ // Fallback: d3 time format strings start with '%'
251
+ return format?.startsWith(`%`) ?? false
252
+ }
253
+
254
+ export type QuadrantCounts = {
255
+ top_left: number
256
+ top_right: number
257
+ bottom_left: number
258
+ bottom_right: number
259
+ }
260
+
261
+ // Energy weights for the simulated annealing label placement
262
+ export interface LabelPlacementWeights {
263
+ overlap?: number // Label-label overlap penalty (default: 30)
264
+ marker?: number // Label-marker overlap penalty (default: 100)
265
+ leader_cross?: number // Leader line crossing penalty (default: 10)
266
+ leader_text?: number // Leader line crossing label text penalty (default: 8)
267
+ distance?: number // Anchor distance penalty (default: 0.5)
268
+ bounds?: number // Out-of-bounds penalty (default: 100)
269
+ }
270
+
271
+ // Configuration for the label auto-placement algorithm (simulated annealing)
272
+ export interface LabelPlacementConfig {
273
+ sa_iterations?: number // SA iterations per label (default: 2000)
274
+ weights?: LabelPlacementWeights // Energy function weights
275
+ leader_line_threshold?: number // Min displacement (px) to show dotted leader line (default: 15)
276
+ max_labels?: number // Skip SA when label count exceeds this (default: 300)
277
+ candidate_gap?: number // Extra gap (px) between marker radius and label candidates (default: 4)
278
+ // Hide labels in dense regions with more than `count` neighbors within `radius` px
279
+ max_neighbors?: { count: number; radius: number }
280
+ }
281
+ export type HoverConfig = {
282
+ threshold_px: number // Max screen distance (pixels) to trigger hover
283
+ }
284
+
285
+ // Type for PlotLegend props forwarded from ScatterPlot props
286
+ export type LegendConfig = Omit<
287
+ ComponentProps<typeof PlotLegend>,
288
+ `series_data` | `on_drag_start` | `on_drag` | `on_drag_end`
289
+ > & {
290
+ margin?: number | Sides
291
+ tween?: TweenOptions<Point2D>
292
+ responsive?: boolean // Allow legend to move if density changes (default: false)
293
+ draggable?: boolean // Allow legend to be dragged (default: true)
294
+ // Minimum distance from plot edges to avoid axis label overlap (default: 40)
295
+ axis_clearance?: number
296
+ }
297
+
298
+ // attributes for each item passed to the legend
299
+ export interface LegendItem {
300
+ label: string
301
+ visible: boolean
302
+ series_idx: number
303
+ legend_group?: string // Optional group name for grouped legend rendering
304
+ // Type of item: 'series' for data series (default), 'fill' for fill regions
305
+ item_type?: `series` | `fill`
306
+ // For fill regions, the index in the computed_fills array (for unique keying)
307
+ fill_idx?: number
308
+ // For fill regions, the source type and index (for toggle handlers)
309
+ fill_source_type?: `fill_region` | `error_band`
310
+ fill_source_idx?: number
311
+ display_style: {
312
+ symbol_type?: D3SymbolName
313
+ symbol_color?: string
314
+ line_color?: string
315
+ line_dash?: string
316
+ // Fill region styling
317
+ fill_color?: string
318
+ fill_opacity?: number
319
+ edge_color?: string
320
+ // Gradient fill for legend swatch (when fill is a gradient, not a solid color)
321
+ fill_gradient?: FillGradient
322
+ }
323
+ }
324
+
325
+ export type UserContentProps = {
326
+ height: number
327
+ width: number
328
+ x_scale_fn: (x: number) => number
329
+ x2_scale_fn?: (x: number) => number
330
+ y_scale_fn: (y: number) => number
331
+ y2_scale_fn?: (y: number) => number
332
+ pad: Required<Sides>
333
+ x_range: Vec2
334
+ x2_range?: Vec2
335
+ y_range: Vec2
336
+ y2_range?: Vec2
337
+ fullscreen: boolean
338
+ }
339
+
340
+ export type Orientation = `vertical` | `horizontal`
341
+ export type BarMode = `overlay` | `stacked` | `grouped`
342
+
343
+ export interface BarSeries<Metadata = Record<string, unknown>> {
344
+ id?: string | number // Optional stable identifier for the series (used for keying)
345
+ x: readonly (number | string)[]
346
+ y: readonly number[]
347
+ label?: string
348
+ // Group name for organizing legend items. Series with the same legend_group
349
+ // are displayed together under a collapsible header. Click the header to toggle
350
+ // visibility of all series in the group, or the chevron to collapse/expand.
351
+ legend_group?: string
352
+ color?: string
353
+ bar_width?: number | readonly number[]
354
+ visible?: boolean
355
+ metadata?: Metadata[] | Metadata
356
+ labels?: readonly (string | null | undefined)[]
357
+ render_mode?: `bar` | `line` // Render as bars (default) or as a line
358
+ // Specify which x-axis to use: 'x1' (bottom, default) or 'x2' (top)
359
+ x_axis?: `x1` | `x2`
360
+ // Specify which y-axis to use: 'y1' (left, default) or 'y2' (right)
361
+ y_axis?: `y1` | `y2`
362
+ line_style?: {
363
+ stroke_width?: number
364
+ line_dash?: string
365
+ }
366
+ // Marker-related fields for line series (matching DataSeries)
367
+ markers?: Markers // 'line' | 'points' | 'line+points' | 'none'
368
+ color_values?: (number | null)[] | null
369
+ size_values?: readonly (number | null)[] | null
370
+ point_style?: PointStyle[] | PointStyle
371
+ point_hover?: HoverStyle[] | HoverStyle
372
+ point_label?: LabelStyle[] | LabelStyle
373
+ point_offset?: Point2D[] | Point2D
374
+ }
375
+
376
+ // Tick label configuration
377
+ export interface TickLabelConfig {
378
+ inside?: boolean // Render tick labels inside the plot area (default: false/outside)
379
+ shift?: XyShift
380
+ rotation?: number // Rotation angle in degrees
381
+ }
382
+
383
+ // Tick configuration
384
+ export interface TickConfig {
385
+ label?: TickLabelConfig
386
+ }
387
+
388
+ // Option for axis property dropdown (enables interactive axis switching)
389
+ export interface AxisOption {
390
+ key: string // unique identifier (e.g., 'energy', 'volume')
391
+ label: string // display name (e.g., 'Total Energy')
392
+ unit?: string // optional unit (e.g., 'eV', 'ų')
393
+ }
394
+
395
+ // Y2 axis synchronization modes
396
+ // - 'none': Independent axes (default)
397
+ // - 'synced': Y2 has exact same range as Y1
398
+ // - 'align': Y2 expands to show all data while keeping align_value (default 0) at same position as Y1
399
+ export type Y2SyncMode = `none` | `synced` | `align`
400
+
401
+ // Type guard for select value narrowing (avoids unsafe casts)
402
+ const Y2_SYNC_MODES = new Set<string>([`none`, `synced`, `align`])
403
+ export const is_y2_sync_mode = (val: string): val is Y2SyncMode => Y2_SYNC_MODES.has(val)
404
+
405
+ export interface Y2SyncConfig {
406
+ mode: Y2SyncMode
407
+ // For align mode: optionally specify which value to align (default: 0)
408
+ align_value?: number
409
+ }
410
+
411
+ // Axis configuration type for grouping related axis properties
412
+ export interface AxisConfig {
413
+ label?: string
414
+ format?: string
415
+ ticks?: TicksOption
416
+ tick?: TickConfig
417
+ scale_type?: ScaleType
418
+ range?: [number | null, number | null]
419
+ unit?: string
420
+ label_shift?: XyShift
421
+ grid_style?: HTMLAttributes<SVGLineElement>
422
+ color?: string | null // Color for axis label, tick labels, and axis line
423
+ // Interactive axis options (enables clickable axis labels)
424
+ options?: AxisOption[] // available properties for this axis
425
+ selected_key?: string // currently selected property key
426
+ // Synchronization with y1 axis (only applicable when used as y2_axis)
427
+ // - 'synced': Y2 has exact same range as Y1
428
+ // - 'align': Y2 expands to show all data, align_value (default 0) at same position
429
+ // - 'none' or undefined: Independent axes (default)
430
+ // Shorthand: 'synced' | 'align' | 'none'
431
+ // Full config: { mode: Y2SyncMode, align_value?: number }
432
+ sync?: Y2SyncConfig | Y2SyncMode
433
+ categories?: readonly string[] // explicit category order/filter for categorical bar plots
434
+ }
435
+
436
+ // Result from data loader - returns complete series array
437
+ // SeriesType defaults to DataSeries but can be BarSeries for bar plots
438
+ export interface DataLoaderResult<
439
+ Metadata = Record<string, unknown>,
440
+ SeriesType = DataSeries<Metadata>,
441
+ > {
442
+ series: SeriesType[] // full replacement series
443
+ axis_label?: string // optional new axis label
444
+ axis_unit?: string // optional axis unit
445
+ }
446
+
447
+ // Callback to fetch data for a property change
448
+ // Called when user selects a new property from the axis dropdown
449
+ // SeriesType defaults to DataSeries but can be BarSeries for bar plots
450
+ export type DataLoaderFn<
451
+ Metadata = Record<string, unknown>,
452
+ SeriesType = DataSeries<Metadata>,
453
+ > = (
454
+ axis: AxisKey,
455
+ property_key: string,
456
+ current_series: readonly SeriesType[], // passed for context
457
+ ) => Promise<DataLoaderResult<Metadata, SeriesType>>
458
+
459
+ // Error event for axis data loading failures
460
+ export interface AxisLoadError {
461
+ axis: AxisKey
462
+ key: string
463
+ message: string
464
+ }
465
+
466
+ // Option for color scale dropdown in ColorBar
467
+ export interface ColorScaleOption {
468
+ key: string // e.g., 'viridis', 'plasma'
469
+ label: string // e.g., 'Viridis', 'Plasma'
470
+ scale: string | ((t: number) => string) // d3 interpolator name or function
471
+ }
472
+
473
+ // Data loader for ColorBar property changes
474
+ export type ColorBarDataLoaderFn = (
475
+ property_key: string,
476
+ ) => Promise<{ range: Vec2; title?: string }>
477
+
478
+ // Display configuration for grid lines and zero lines
479
+ export interface DisplayConfig {
480
+ x_grid?: boolean
481
+ x2_grid?: boolean
482
+ y_grid?: boolean
483
+ y2_grid?: boolean
484
+ x_zero_line?: boolean
485
+ x2_zero_line?: boolean
486
+ y_zero_line?: boolean
487
+ y2_zero_line?: boolean
488
+ }
489
+
490
+ // Style overrides for point and line properties
491
+ export interface StyleOverrides {
492
+ point?: {
493
+ size?: number
494
+ color?: string
495
+ opacity?: number
496
+ stroke_width?: number
497
+ stroke_color?: string
498
+ stroke_opacity?: number
499
+ }
500
+ line?: {
501
+ width?: number
502
+ color?: string
503
+ opacity?: number
504
+ dash?: string
505
+ }
506
+ show_points?: boolean
507
+ show_lines?: boolean
508
+ }
509
+
510
+ export type AxisKey = `x` | `x2` | `y` | `y2`
511
+ export interface PlotConfig {
512
+ // Grouped configuration for plot axes and display settings
513
+ x_axis?: AxisConfig
514
+ x2_axis?: AxisConfig
515
+ y_axis?: AxisConfig
516
+ y2_axis?: AxisConfig
517
+ display?: DisplayConfig
518
+ }
519
+
520
+ // Controls configuration
521
+ export interface ControlsConfig {
522
+ show?: boolean
523
+ open?: boolean
524
+ toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
525
+ pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`]
526
+ }
527
+
528
+ // Pan configuration for 2D plot components
529
+ export interface PanConfig {
530
+ enabled?: boolean // default: true - whether panning is enabled
531
+ wheel_sensitivity?: number // default: 1 - multiplier for wheel delta
532
+ drag_sensitivity?: number // default: 1 - multiplier for drag delta
533
+ touch_enabled?: boolean // default: true - whether touch gestures are enabled
534
+ }
535
+
536
+ export type ControlsState = Required<PlotConfig> & {
537
+ show_controls: boolean
538
+ controls_open: boolean
539
+ range_inputs: Record<string, [number | null, number | null]>
540
+ }
541
+
542
+ export interface PlotControlsProps extends PlotConfig {
543
+ // Control pane visibility
544
+ show_controls?: boolean
545
+ controls_open?: boolean
546
+ // Custom snippets for additional controls
547
+ children?: Snippet<[ControlsState]>
548
+ post_children?: Snippet<[ControlsState]>
549
+ // Auto ranges for reset functionality
550
+ auto_x_range?: Vec2
551
+ auto_x2_range?: Vec2
552
+ auto_y_range?: Vec2
553
+ auto_y2_range?: Vec2
554
+ // Helper flags
555
+ has_x2_points?: boolean
556
+ has_y2_points?: boolean
557
+ show_ticks?: boolean
558
+ // Component props
559
+ controls_title?: string
560
+ controls_class?: string
561
+ toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
562
+ pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`]
563
+ }
564
+
565
+ // Base props shared across plot components (non-bindable props only)
566
+ // Components should declare x_axis, y_axis, display, etc. as $bindable() grouped configs
567
+ export interface BasePlotProps {
568
+ // Axis limits (non-bindable - used for auto-range calculation)
569
+ x_range?: [number | null, number | null]
570
+ x2_range?: [number | null, number | null]
571
+ y_range?: [number | null, number | null]
572
+ y2_range?: [number | null, number | null]
573
+ range_padding?: number // Factor to pad auto-detected ranges before nicing (e.g. 0.05 = 5%)
574
+ padding?: Sides
575
+ // State
576
+ hovered?: boolean
577
+ // Controls
578
+ show_controls?: boolean
579
+ controls_open?: boolean
580
+ controls_toggle_props?: ComponentProps<typeof DraggablePane>[`toggle_props`]
581
+ controls_pane_props?: ComponentProps<typeof DraggablePane>[`pane_props`]
582
+ // Fullscreen
583
+ fullscreen?: boolean
584
+ fullscreen_toggle?: boolean // default: true
585
+ // Callbacks
586
+ change?: (data: Record<string, unknown> | null) => void
587
+ // Children
588
+ children?: Snippet<[{ height: number; width: number; fullscreen?: boolean }]>
589
+ }
590
+ export const LINE_TYPES = [`solid`, `dashed`, `dotted`] as const
591
+ export type LineType = (typeof LINE_TYPES)[number]
592
+
593
+ // Define grid cell identifiers
594
+ export const CELLS_3X3 = [
595
+ `top-left`,
596
+ `top-center`,
597
+ `top-right`,
598
+ `middle-left`,
599
+ `middle-center`,
600
+ `middle-right`,
601
+ `bottom-left`,
602
+ `bottom-center`,
603
+ `bottom-right`,
604
+ ] as const
605
+ export const CORNER_CELLS = [`top-left`, `top-right`, `bottom-left`, `bottom-right`] as const
606
+
607
+ // Define the structure for GridCell and GridCellCounts for 3x3 grid
608
+ export type Cell3x3 = (typeof CELLS_3X3)[number]
609
+ export type Corner = (typeof CORNER_CELLS)[number]
610
+
611
+ // Default grid line style (SSOT for all plot components)
612
+ export const DEFAULT_GRID_STYLE = {
613
+ stroke: `var(--border-color, gray)`,
614
+ 'stroke-dasharray': `4`,
615
+ 'stroke-width': `1`,
616
+ } as const
617
+
618
+ export const DEFAULT_MARKERS = `line+points` as const
619
+
620
+ // Default series colors for auto-differentiation (similar to d3 schemeTableau10)
621
+ export const DEFAULT_SERIES_COLORS = [
622
+ `#4e79a7`, // blue
623
+ `#f28e2c`, // orange
624
+ `#e15759`, // red
625
+ `#76b7b2`, // teal
626
+ `#59a14f`, // green
627
+ `#edc949`, // yellow
628
+ `#af7aa1`, // purple
629
+ `#ff9da7`, // pink
630
+ `#9c755f`, // brown
631
+ `#bab0ab`, // gray
632
+ ] as const
633
+
634
+ // Default series symbols for auto-differentiation (cycling through distinct shapes)
635
+ export const DEFAULT_SERIES_SYMBOLS = [
636
+ `Circle`,
637
+ `Square`,
638
+ `Triangle`,
639
+ `Cross`,
640
+ `Diamond`,
641
+ `Star`,
642
+ `Wye`,
643
+ ] as const satisfies readonly D3SymbolName[]
644
+
645
+ // 3D point extending base Point with z coordinate (prefixed to avoid conflict with convex-hull)
646
+ export interface ScatterPoint3D<Metadata = Record<string, unknown>> extends Point<Metadata> {
647
+ z: number
648
+ }
649
+
650
+ // 3D data series extending DataSeries with z array
651
+ // Omit filtered_data since it uses 2D InternalPoint type, redeclare with 3D type
652
+ export interface DataSeries3D<Metadata = Record<string, unknown>> extends Omit<
653
+ DataSeries<Metadata>,
654
+ `y_axis` | `filtered_data`
655
+ > {
656
+ z: readonly number[]
657
+ filtered_data?: InternalPoint3D<Metadata>[]
658
+ }
659
+
660
+ // Internal 3D point for processing within ScatterPlot3D
661
+ export interface InternalPoint3D<
662
+ Metadata = Record<string, unknown>,
663
+ > extends ScatterPoint3D<Metadata> {
664
+ series_idx: number
665
+ point_idx: number
666
+ color_value?: number | null
667
+ size_value?: number | null
668
+ point_style?: PointStyle
669
+ }
670
+
671
+ // Surface types for 3D visualization
672
+ export type SurfaceType = `grid` | `parametric` | `triangulated`
673
+
674
+ // Configuration for 3D surfaces
675
+ export interface Surface3DConfig {
676
+ id?: string | number
677
+ type: SurfaceType
678
+ // For grid surfaces: regular grid with z values
679
+ x_range?: Vec2
680
+ y_range?: Vec2
681
+ resolution?: number | Vec2 // grid resolution (x, y)
682
+ z_fn?: (x: number, y: number) => number
683
+ // For parametric surfaces: u,v parameterization
684
+ u_range?: Vec2
685
+ v_range?: Vec2
686
+ parametric_fn?: (u: number, v: number) => Point3D
687
+ // For triangulated surfaces: explicit geometry (only x,y,z needed, not scatter-specific fields)
688
+ points?: Point3D[]
689
+ triangles?: Vec3[] // indices into points array
690
+ // Appearance
691
+ color?: string
692
+ color_fn?: (x: number, y: number, z: number) => string
693
+ opacity?: number
694
+ wireframe?: boolean
695
+ wireframe_color?: string
696
+ wireframe_width?: number
697
+ visible?: boolean
698
+ // Double-sided rendering
699
+ double_sided?: boolean
700
+ }
701
+
702
+ // Extended axis config for 3D (same as 2D but can add 3D-specific options)
703
+ export interface AxisConfig3D extends AxisConfig {
704
+ // 3D-specific axis options can be added here
705
+ show_plane?: boolean // Show grid plane for this axis
706
+ plane_opacity?: number
707
+ }
708
+
709
+ // Display config extended for 3D
710
+ export interface DisplayConfig3D extends DisplayConfig {
711
+ z_grid?: boolean
712
+ z_zero_line?: boolean
713
+ show_axes?: boolean
714
+ show_axis_labels?: boolean
715
+ show_bounding_box?: boolean
716
+ show_grid?: boolean
717
+ // Projection settings - render point shadows on background planes
718
+ // Coordinate mapping: user X→Three.js X, user Y→Three.js Z, user Z→Three.js Y
719
+ projections?: {
720
+ xy?: boolean // Project onto XY plane (floor/ceiling) - fixes user Z
721
+ xz?: boolean // Project onto XZ plane (back wall) - fixes user Y
722
+ yz?: boolean // Project onto YZ plane (side wall) - fixes user X
723
+ }
724
+ projection_opacity?: number // 0-1, default 0.3
725
+ projection_scale?: number // Relative to point size, default 0.5
726
+ }
727
+
728
+ // 3D scatter handler props
729
+ export interface Scatter3DHandlerProps<Metadata = Record<string, unknown>> extends Omit<
730
+ HandlerProps<Metadata>,
731
+ `x_axis` | `x2_axis` | `y_axis` | `y2_axis`
732
+ > {
733
+ z: number
734
+ x_axis: AxisConfig3D
735
+ y_axis: AxisConfig3D
736
+ z_axis: AxisConfig3D
737
+ x_formatted: string
738
+ y_formatted: string
739
+ z_formatted: string
740
+ color_value?: number | null
741
+ }
742
+
743
+ export type Scatter3DHandlerEvent<Metadata = Record<string, unknown>> =
744
+ Scatter3DHandlerProps<Metadata> & {
745
+ event?: MouseEvent
746
+ point: InternalPoint3D<Metadata>
747
+ }
748
+
749
+ // Camera projection types for 3D
750
+ export type CameraProjection3D = `perspective` | `orthographic`
751
+
752
+ // 3D plot config extending base
753
+ export interface PlotConfig3D {
754
+ x_axis?: AxisConfig3D
755
+ y_axis?: AxisConfig3D
756
+ z_axis?: AxisConfig3D
757
+ display?: DisplayConfig3D
758
+ }
759
+
760
+ // 3D style overrides
761
+ export interface StyleOverrides3D extends StyleOverrides {
762
+ point?: StyleOverrides[`point`] & {
763
+ sphere_segments?: number // Level of detail for sphere geometry
764
+ }
765
+ }
766
+
767
+ // Controls config for 3D
768
+ export interface ControlsConfig3D extends ControlsConfig {
769
+ show_camera_controls?: boolean
770
+ show_surface_controls?: boolean
771
+ }
772
+
773
+ // FillBoundary - references to data sources for fill regions
774
+ // Can reference series by index, by id, or specify constant/axis/function/data values
775
+ export type FillBoundary =
776
+ | { type: `series`; series_idx: number }
777
+ | { type: `series`; series_id: string | number }
778
+ | { type: `constant`; value: number }
779
+ | { type: `axis`; axis: `x` | `x2` | `y` | `y2`; value?: number }
780
+ | { type: `function`; fn: (coord: number) => number }
781
+ | { type: `data`; values: readonly number[] }
782
+ | number // Shorthand for constant value
783
+
784
+ // Styling types for fill regions
785
+
786
+ // Gradient configuration for fill regions
787
+ export interface FillGradient {
788
+ type: `linear` | `radial`
789
+ // For linear gradients: angle in degrees (0 = horizontal left-to-right, 90 = vertical top-to-bottom)
790
+ angle?: number
791
+ // For radial gradients: center position (0-1 normalized)
792
+ center?: { x: number; y: number }
793
+ // Color stops: array of [offset (0-1), color] pairs
794
+ stops: readonly [number, string][]
795
+ }
796
+
797
+ // Edge/stroke styling for fill region boundaries
798
+ export interface FillEdgeStyle {
799
+ color?: string
800
+ width?: number
801
+ dash?: string
802
+ opacity?: number
803
+ }
804
+
805
+ // Hover state styling for fill regions
806
+ export interface FillHoverStyle {
807
+ fill?: string
808
+ fill_opacity?: number
809
+ edge?: FillEdgeStyle
810
+ cursor?: string
811
+ scale?: number // Scale factor for hover effect
812
+ }
813
+
814
+ // Event type for fill region interactions
815
+ export interface FillHandlerEvent {
816
+ event: MouseEvent | KeyboardEvent
817
+ region_idx: number
818
+ region_id?: string | number
819
+ x: number // Data x-coordinate
820
+ y: number // Data y-coordinate
821
+ px: number // Pixel x-coordinate
822
+ py: number // Pixel y-coordinate
823
+ label?: string
824
+ metadata?: Record<string, unknown>
825
+ }
826
+
827
+ // z-index positions for rendering order (used by fill regions and reference lines)
828
+ export type LayerZIndex = `below-grid` | `below-lines` | `below-points` | `above-all`
829
+
830
+ // Curve types supported for fill path generation (matching d3-shape curves)
831
+ export const FILL_CURVE_TYPES = [
832
+ `linear`,
833
+ `monotoneX`,
834
+ `monotoneY`,
835
+ `step`,
836
+ `stepBefore`,
837
+ `stepAfter`,
838
+ `basis`,
839
+ `cardinal`,
840
+ `catmullRom`,
841
+ `natural`,
842
+ ] as const
843
+ export type FillCurveType = (typeof FILL_CURVE_TYPES)[number]
844
+
845
+ // Main configuration for a fill region
846
+ export interface FillRegion {
847
+ // Identity
848
+ id?: string | number
849
+ label?: string
850
+
851
+ // Boundaries - define the top and bottom of the fill area
852
+ upper: FillBoundary
853
+ lower: FillBoundary
854
+
855
+ // Optional range constraints
856
+ x_range?: [number | null, number | null]
857
+ y_range?: [number | null, number | null]
858
+
859
+ // Conditional fill: only fill where condition is true
860
+ // Example: where: (x, y_upper, y_lower) => y_upper > y_lower
861
+ where?: (x: number, y_upper: number, y_lower: number) => boolean
862
+
863
+ // Styling
864
+ fill?: string | FillGradient
865
+ fill_opacity?: number
866
+ edge_upper?: FillEdgeStyle
867
+ edge_lower?: FillEdgeStyle
868
+ curve?: FillCurveType
869
+ step_position?: number // For step curves: 0 = step, 0.5 = stepMiddle, 1 = stepEnd
870
+
871
+ // Rendering
872
+ z_index?: LayerZIndex
873
+ visible?: boolean
874
+
875
+ // Interactions
876
+ hover_style?: FillHoverStyle
877
+ on_click?: (event: FillHandlerEvent) => void
878
+ on_hover?: (event: FillHandlerEvent | null) => void
879
+
880
+ // Legend
881
+ show_in_legend?: boolean
882
+ legend_group?: string
883
+
884
+ // Metadata for user data
885
+ metadata?: Record<string, unknown>
886
+ }
887
+
888
+ // Convenience type for error bands (symmetric or asymmetric around a series)
889
+ export interface ErrorBand {
890
+ // Reference to the central series
891
+ series:
892
+ | { type: `series`; series_idx: number }
893
+ | {
894
+ type: `series`
895
+ series_id: string | number
896
+ }
897
+
898
+ // Error values - can be symmetric (single value/array) or asymmetric (upper/lower)
899
+ error:
900
+ | number // Symmetric constant error
901
+ | readonly number[] // Symmetric per-point error
902
+ | { upper: number | readonly number[]; lower: number | readonly number[] } // Asymmetric
903
+
904
+ // Styling (defaults applied if not specified)
905
+ fill?: string // Defaults to series color with reduced opacity
906
+ fill_opacity?: number // Defaults to 0.3
907
+ edge_style?: FillEdgeStyle
908
+
909
+ // Identity
910
+ id?: string | number
911
+ label?: string
912
+ show_in_legend?: boolean
913
+ }
914
+
915
+ // Reference line styling
916
+ export interface RefLineStyle {
917
+ color?: string // default: 'currentColor'
918
+ width?: number // default: 1
919
+ dash?: string // SVG stroke-dasharray, default: none (solid)
920
+ opacity?: number // default: 1
921
+ }
922
+
923
+ // Annotation/label for reference lines
924
+ export interface RefLineAnnotation {
925
+ text: string
926
+ position?: `start` | `center` | `end` // position along the line
927
+ side?: `above` | `below` | `left` | `right` // which side of line
928
+ offset?: { x?: number; y?: number }
929
+ gap?: number // pixels between line and annotation text, default: 8
930
+ edge_padding?: number // pixels inward from plot edge at start/end, default: 4
931
+ font_size?: string
932
+ font_family?: string
933
+ color?: string
934
+ background?: string
935
+ padding?: number
936
+ rotate?: boolean // rotate text to follow line angle
937
+ }
938
+
939
+ // Event type for reference line interactions
940
+ export interface RefLineEvent {
941
+ event: MouseEvent | KeyboardEvent | FocusEvent
942
+ line_idx: number
943
+ line_id?: string | number
944
+ type: RefLine[`type`]
945
+ label?: string
946
+ metadata?: Record<string, unknown>
947
+ }
948
+
949
+ // Base properties shared by all reference line types
950
+ export interface RefLineBase {
951
+ id?: string | number
952
+ x_span?: [number | null, number | null]
953
+ y_span?: [number | null, number | null]
954
+ coord_mode?: `data` | `relative` // default: 'data'
955
+ x_axis?: `x1` | `x2` // for vertical lines with dual x-axes
956
+ y_axis?: `y1` | `y2` // for horizontal lines with dual y-axes
957
+ style?: RefLineStyle
958
+ annotation?: RefLineAnnotation
959
+ z_index?: LayerZIndex
960
+ visible?: boolean
961
+ hover_style?: RefLineStyle
962
+ on_click?: (event: RefLineEvent) => void
963
+ on_hover?: (event: RefLineEvent | null) => void
964
+ show_in_legend?: boolean
965
+ label?: string
966
+ legend_group?: string
967
+ metadata?: Record<string, unknown>
968
+ }
969
+
970
+ // Reference line value type - supports numbers, Dates, and ISO date strings
971
+ export type RefLineValue = number | Date | string
972
+
973
+ // Flat discriminated union - type determines required fields
974
+ export type RefLine = RefLineBase &
975
+ (
976
+ | { type: `horizontal`; y: RefLineValue }
977
+ | { type: `vertical`; x: RefLineValue }
978
+ | { type: `diagonal`; slope: number; intercept: number }
979
+ | {
980
+ type: `segment`
981
+ p1: [RefLineValue, RefLineValue]
982
+ p2: [RefLineValue, RefLineValue]
983
+ }
984
+ | { type: `line`; p1: [RefLineValue, RefLineValue]; p2: [RefLineValue, RefLineValue] }
985
+ )
986
+
987
+ // Default style values for reference lines
988
+ export const REF_LINE_STYLE_DEFAULTS: Required<RefLineStyle> = {
989
+ color: `currentColor`,
990
+ width: 1,
991
+ dash: ``,
992
+ opacity: 1,
993
+ } as const
994
+
995
+ type Ref3DBase = Omit<
996
+ RefLineBase,
997
+ | `coord_mode`
998
+ | `x_axis`
999
+ | `y_axis`
1000
+ | `style`
1001
+ | `hover_style`
1002
+ | `annotation`
1003
+ | `on_click`
1004
+ | `on_hover`
1005
+ > & {
1006
+ z_span?: [number | null, number | null]
1007
+ }
1008
+
1009
+ // Base properties shared by all 3D reference line types
1010
+ // Aligned with RefLineBase for future feature parity (interactions, annotations, etc.)
1011
+ export interface RefLine3DBase extends Ref3DBase {
1012
+ style?: RefLineStyle
1013
+ hover_style?: RefLineStyle
1014
+ annotation?: RefLineAnnotation
1015
+ on_click?: (event: { line_idx: number; line_id?: string | number }) => void
1016
+ on_hover?: (event: { line_idx: number; line_id?: string | number } | null) => void
1017
+ }
1018
+
1019
+ // 3D reference line - discriminated union
1020
+ export type RefLine3D = RefLine3DBase &
1021
+ (
1022
+ | { type: `x-axis`; y: number; z: number } // line parallel to x-axis
1023
+ | { type: `y-axis`; x: number; z: number } // line parallel to y-axis
1024
+ | { type: `z-axis`; x: number; y: number } // line parallel to z-axis
1025
+ | { type: `segment`; p1: Vec3; p2: Vec3 }
1026
+ | { type: `line`; p1: Vec3; p2: Vec3 }
1027
+ )
1028
+
1029
+ // 3D reference plane styling
1030
+ export interface RefPlaneStyle {
1031
+ color?: string
1032
+ opacity?: number
1033
+ wireframe?: boolean
1034
+ wireframe_color?: string
1035
+ double_sided?: boolean
1036
+ }
1037
+
1038
+ // Base properties shared by all 3D reference plane types
1039
+ export interface RefPlaneBase extends Ref3DBase {
1040
+ style?: RefPlaneStyle
1041
+ }
1042
+
1043
+ // 3D reference plane - discriminated union
1044
+ export type RefPlane = RefPlaneBase &
1045
+ (
1046
+ | { type: `xy`; z: number } // horizontal plane at z
1047
+ | { type: `xz`; y: number } // vertical plane at y
1048
+ | { type: `yz`; x: number } // vertical plane at x
1049
+ | { type: `normal`; normal: Vec3; point: Vec3 }
1050
+ | { type: `points`; p1: Vec3; p2: Vec3; p3: Vec3 } // plane through 3 points
1051
+ )
1052
+
1053
+ // --- Data Cleaning Types ---
1054
+
1055
+ // Oscillation detection weights (all default to 1.0)
1056
+ export interface OscillationWeights {
1057
+ derivative_variance?: number // Weight for derivative variance method
1058
+ amplitude_growth?: number // Weight for exponential amplitude growth
1059
+ sign_changes?: number // Weight for derivative sign change frequency
1060
+ }
1061
+
1062
+ // How to handle invalid values (NaN, Infinity)
1063
+ export type InvalidValueMode = `remove` | `propagate` | `interpolate`
1064
+
1065
+ // Truncation strategy when instability detected
1066
+ export type TruncationMode = `hard_cut` | `mark_unstable`
1067
+
1068
+ // Physical bounds configuration
1069
+ export interface PhysicalBounds {
1070
+ min?: number | ((x: number) => number) // Static or x-dependent minimum
1071
+ max?: number | ((x: number) => number) // Static or x-dependent maximum
1072
+ mode?: `clamp` | `filter` | `null` // How to handle violations
1073
+ }
1074
+
1075
+ // Smoothing algorithm configuration (discriminated union for type safety)
1076
+ export type SmoothingConfig =
1077
+ | { type: `moving_avg`; window: number }
1078
+ | { type: `savgol`; window: number; polynomial_order?: number } // window must be odd
1079
+ | { type: `gaussian`; sigma: number } // sigma controls Gaussian kernel width
1080
+
1081
+ // Local outlier detection config (sliding window approach)
1082
+ export interface LocalOutlierConfig {
1083
+ window_half?: number // Points on each side for local context (default: 7)
1084
+ mad_threshold?: number // MADs from local median to flag outlier (default: 2.0)
1085
+ max_iterations?: number // Iterative passes to catch clustered outliers (default: 5)
1086
+ }
1087
+
1088
+ // Result of local outlier detection
1089
+ export interface LocalOutlierResult {
1090
+ kept_indices: number[]
1091
+ removed_indices: number[]
1092
+ iterations_used: number
1093
+ }
1094
+
1095
+ // Main cleaning configuration
1096
+ export interface CleaningConfig {
1097
+ // Oscillation detection
1098
+ oscillation_threshold?: number // Combined score threshold (default: 3.0)
1099
+ oscillation_weights?: OscillationWeights // Method weights
1100
+ window_size?: number // Rolling window for detection (default: 5)
1101
+
1102
+ // Data handling
1103
+ invalid_values?: InvalidValueMode // NaN/Infinity handling (default: 'remove')
1104
+ bounds?: PhysicalBounds // Physical constraints
1105
+ smooth?: SmoothingConfig // Optional smoothing
1106
+ local_outliers?: LocalOutlierConfig // Local sliding window outlier removal
1107
+
1108
+ // Truncation
1109
+ truncation_mode?: TruncationMode // 'hard_cut' or 'mark_unstable' (default: 'mark_unstable')
1110
+
1111
+ // Performance
1112
+ in_place?: boolean // Mutate input arrays (default: true)
1113
+ }
1114
+
1115
+ // Quality report from cleaning operation
1116
+ export interface CleaningQuality {
1117
+ points_removed: number
1118
+ invalid_values_found: number // NaN/Infinity count
1119
+ oscillation_detected: boolean
1120
+ oscillation_score?: number // Combined weighted score
1121
+ bounds_violations: number
1122
+ outliers_removed?: number // Count of local outliers removed
1123
+ stable_range?: Vec2 // [start_x, end_x] if mark_unstable mode
1124
+ truncated_at_x?: number // x value if hard_cut mode
1125
+ }
1126
+
1127
+ // Result of a cleaning operation
1128
+ export interface CleaningResult<T = DataSeries> {
1129
+ series: T // Cleaned data (same ref if in_place)
1130
+ quality: CleaningQuality
1131
+ }
1132
+
1133
+ // Instability detection result
1134
+ export interface InstabilityResult {
1135
+ detected: boolean
1136
+ onset_index: number
1137
+ onset_x: number
1138
+ combined_score: number
1139
+ method_scores: {
1140
+ derivative_variance: number
1141
+ amplitude_growth: number
1142
+ sign_changes: number
1143
+ }
1144
+ }