matterviz 0.3.6 → 0.3.7

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