matterviz 0.4.0 → 0.4.2

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 (527) hide show
  1. package/dist/EmptyState.svelte +10 -4
  2. package/dist/FilePicker.svelte +12 -14
  3. package/dist/Icon.svelte +7 -4
  4. package/dist/MillerIndexInput.svelte +2 -2
  5. package/dist/app.css +53 -0
  6. package/dist/brillouin/BrillouinZone.svelte +132 -219
  7. package/dist/brillouin/BrillouinZone.svelte.d.ts +9 -20
  8. package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
  9. package/dist/brillouin/BrillouinZoneExportPane.svelte +47 -96
  10. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
  11. package/dist/brillouin/BrillouinZoneInfoPane.svelte +15 -42
  12. package/dist/brillouin/BrillouinZoneInfoPane.svelte.d.ts +2 -3
  13. package/dist/brillouin/BrillouinZoneScene.svelte +63 -230
  14. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +3 -23
  15. package/dist/brillouin/ReciprocalVectors.svelte +39 -0
  16. package/dist/brillouin/ReciprocalVectors.svelte.d.ts +9 -0
  17. package/dist/brillouin/compute.d.ts +2 -0
  18. package/dist/brillouin/compute.js +80 -77
  19. package/dist/brillouin/geometry.d.ts +8 -0
  20. package/dist/brillouin/geometry.js +57 -0
  21. package/dist/brillouin/index.d.ts +2 -0
  22. package/dist/brillouin/index.js +2 -0
  23. package/dist/brillouin/types.d.ts +2 -2
  24. package/dist/chempot-diagram/ChemPotDiagram.svelte +33 -38
  25. package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +1 -1
  26. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +143 -246
  27. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +4 -1
  28. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +652 -976
  29. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +7 -1
  30. package/dist/chempot-diagram/async-compute.svelte.js +1 -1
  31. package/dist/chempot-diagram/color.d.ts +3 -6
  32. package/dist/chempot-diagram/color.js +5 -5
  33. package/dist/chempot-diagram/compute.d.ts +3 -3
  34. package/dist/chempot-diagram/compute.js +3 -1
  35. package/dist/chempot-diagram/controls-state.svelte.d.ts +10 -0
  36. package/dist/chempot-diagram/controls-state.svelte.js +42 -0
  37. package/dist/chempot-diagram/export.d.ts +47 -0
  38. package/dist/chempot-diagram/export.js +133 -0
  39. package/dist/chempot-diagram/index.d.ts +1 -0
  40. package/dist/chempot-diagram/index.js +1 -0
  41. package/dist/chempot-diagram/pointer.d.ts +0 -10
  42. package/dist/chempot-diagram/pointer.js +4 -4
  43. package/dist/chempot-diagram/types.d.ts +3 -3
  44. package/dist/colors/index.d.ts +0 -4
  45. package/dist/colors/index.js +21 -22
  46. package/dist/composition/BarChart.svelte +37 -31
  47. package/dist/composition/BubbleChart.svelte +17 -17
  48. package/dist/composition/Composition.svelte +7 -11
  49. package/dist/composition/Formula.svelte +18 -25
  50. package/dist/composition/FormulaFilter.svelte +96 -98
  51. package/dist/composition/PieChart.svelte +60 -46
  52. package/dist/composition/chem-sys.js +3 -2
  53. package/dist/composition/format.js +4 -3
  54. package/dist/composition/index.d.ts +2 -0
  55. package/dist/composition/index.js +14 -0
  56. package/dist/composition/parse.d.ts +2 -3
  57. package/dist/composition/parse.js +27 -28
  58. package/dist/constants.js +11 -9
  59. package/dist/controls.d.ts +1 -0
  60. package/dist/controls.js +0 -1
  61. package/dist/convex-hull/ConvexHull.svelte +20 -25
  62. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -4
  63. package/dist/convex-hull/ConvexHull2D.svelte +176 -256
  64. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  65. package/dist/convex-hull/ConvexHull3D.svelte +269 -804
  66. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  67. package/dist/convex-hull/ConvexHull4D.svelte +236 -755
  68. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  69. package/dist/convex-hull/ConvexHullChrome.svelte +264 -0
  70. package/dist/convex-hull/ConvexHullChrome.svelte.d.ts +30 -0
  71. package/dist/convex-hull/ConvexHullControls.svelte +128 -49
  72. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +7 -6
  73. package/dist/convex-hull/ConvexHullInfoPane.svelte +18 -5
  74. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +6 -5
  75. package/dist/convex-hull/ConvexHullStats.svelte +210 -351
  76. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +3 -1
  77. package/dist/convex-hull/ConvexHullTooltip.svelte +16 -14
  78. package/dist/convex-hull/ConvexHullTooltip.svelte.d.ts +2 -1
  79. package/dist/convex-hull/GasPressureControls.svelte +5 -12
  80. package/dist/convex-hull/StructurePopup.svelte +17 -21
  81. package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
  82. package/dist/convex-hull/TemperatureSlider.svelte +4 -10
  83. package/dist/convex-hull/barycentric-coords.d.ts +2 -4
  84. package/dist/convex-hull/barycentric-coords.js +6 -33
  85. package/dist/convex-hull/canvas-interactions.svelte.d.ts +79 -0
  86. package/dist/convex-hull/canvas-interactions.svelte.js +279 -0
  87. package/dist/convex-hull/helpers.d.ts +47 -17
  88. package/dist/convex-hull/helpers.js +186 -101
  89. package/dist/convex-hull/hull-state.svelte.d.ts +44 -0
  90. package/dist/convex-hull/hull-state.svelte.js +124 -0
  91. package/dist/convex-hull/index.d.ts +9 -7
  92. package/dist/convex-hull/index.js +7 -2
  93. package/dist/convex-hull/thermodynamics.js +109 -937
  94. package/dist/convex-hull/types.d.ts +12 -4
  95. package/dist/convex-hull/types.js +12 -0
  96. package/dist/coordination/CoordinationBarPlot.svelte +41 -43
  97. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +1 -1
  98. package/dist/coordination/calc-coordination.d.ts +1 -1
  99. package/dist/coordination/calc-coordination.js +28 -25
  100. package/dist/element/BohrAtom.svelte +6 -8
  101. package/dist/element/ElementHeading.svelte +4 -1
  102. package/dist/element/ElementPhoto.svelte +11 -9
  103. package/dist/element/ElementStats.svelte +12 -10
  104. package/dist/element/ElementTile.svelte +24 -29
  105. package/dist/element/ElementTile.svelte.d.ts +1 -1
  106. package/dist/element/Nucleus.svelte +4 -2
  107. package/dist/element/data.d.ts +1 -2
  108. package/dist/element/helpers.d.ts +4 -0
  109. package/dist/element/helpers.js +18 -0
  110. package/dist/element/index.d.ts +1 -0
  111. package/dist/element/index.js +3 -0
  112. package/dist/feedback/DragOverlay.svelte +5 -3
  113. package/dist/feedback/DragOverlay.svelte.d.ts +2 -1
  114. package/dist/feedback/StatusMessage.svelte +20 -7
  115. package/dist/fermi-surface/FermiSlice.svelte +21 -18
  116. package/dist/fermi-surface/FermiSurface.svelte +78 -165
  117. package/dist/fermi-surface/FermiSurface.svelte.d.ts +9 -20
  118. package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
  119. package/dist/fermi-surface/FermiSurfaceScene.svelte +93 -272
  120. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +3 -23
  121. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
  122. package/dist/fermi-surface/compute.js +14 -13
  123. package/dist/fermi-surface/export.js +4 -15
  124. package/dist/fermi-surface/index.d.ts +0 -1
  125. package/dist/fermi-surface/index.js +0 -1
  126. package/dist/fermi-surface/parse.d.ts +1 -1
  127. package/dist/fermi-surface/parse.js +84 -97
  128. package/dist/fermi-surface/types.d.ts +2 -2
  129. package/dist/heatmap-matrix/HeatmapMatrix.svelte +161 -185
  130. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +6 -5
  131. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +12 -9
  132. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +5 -5
  133. package/dist/heatmap-matrix/index.d.ts +8 -2
  134. package/dist/icons.d.ts +4 -0
  135. package/dist/icons.js +4 -0
  136. package/dist/index.d.ts +1 -0
  137. package/dist/index.js +1 -0
  138. package/dist/io/ExportPane.svelte +170 -0
  139. package/dist/io/ExportPane.svelte.d.ts +17 -0
  140. package/dist/io/decompress.d.ts +2 -1
  141. package/dist/io/decompress.js +22 -36
  142. package/dist/io/export.d.ts +9 -1
  143. package/dist/io/export.js +37 -29
  144. package/dist/io/fetch.d.ts +2 -4
  145. package/dist/io/fetch.js +0 -11
  146. package/dist/io/file-drop.d.ts +7 -0
  147. package/dist/io/file-drop.js +13 -0
  148. package/dist/io/index.d.ts +1 -0
  149. package/dist/io/index.js +3 -0
  150. package/dist/io/is-binary.d.ts +9 -0
  151. package/dist/io/is-binary.js +45 -1
  152. package/dist/io/types.d.ts +13 -0
  153. package/dist/io/url-drop.js +13 -25
  154. package/dist/isosurface/Isosurface.svelte +17 -23
  155. package/dist/isosurface/IsosurfaceControls.svelte +37 -42
  156. package/dist/isosurface/parse-vaspwave.d.ts +3 -0
  157. package/dist/isosurface/parse-vaspwave.js +138 -0
  158. package/dist/isosurface/parse.js +50 -48
  159. package/dist/labels.d.ts +6 -2
  160. package/dist/labels.js +44 -14
  161. package/dist/layout/FullscreenButton.svelte +34 -0
  162. package/dist/layout/FullscreenButton.svelte.d.ts +10 -0
  163. package/dist/layout/FullscreenToggle.svelte +12 -12
  164. package/dist/layout/InfoCard.svelte +7 -18
  165. package/dist/layout/InfoTag.svelte +1 -3
  166. package/dist/layout/NumberRangeInput.svelte +46 -0
  167. package/dist/layout/NumberRangeInput.svelte.d.ts +12 -0
  168. package/dist/layout/PropertyFilter.svelte +2 -6
  169. package/dist/layout/SettingsSection.svelte +21 -17
  170. package/dist/layout/SubpageGrid.svelte +3 -1
  171. package/dist/layout/ViewerChrome.svelte +115 -0
  172. package/dist/layout/ViewerChrome.svelte.d.ts +18 -0
  173. package/dist/layout/fullscreen.d.ts +4 -0
  174. package/dist/layout/fullscreen.js +3 -5
  175. package/dist/layout/fullscreen.svelte.d.ts +8 -0
  176. package/dist/layout/fullscreen.svelte.js +36 -0
  177. package/dist/layout/index.d.ts +4 -0
  178. package/dist/layout/index.js +4 -0
  179. package/dist/layout/json-tree/JsonNode.svelte +8 -11
  180. package/dist/layout/json-tree/JsonTree.svelte +53 -77
  181. package/dist/layout/json-tree/JsonValue.svelte +7 -15
  182. package/dist/layout/json-tree/utils.js +14 -23
  183. package/dist/math.d.ts +9 -3
  184. package/dist/math.js +37 -21
  185. package/dist/overlays/ContextMenu.svelte +4 -2
  186. package/dist/overlays/CopyButton.svelte +11 -5
  187. package/dist/overlays/DragControlTab.svelte +6 -1
  188. package/dist/overlays/DraggablePane.svelte +81 -26
  189. package/dist/overlays/DraggablePane.svelte.d.ts +1 -0
  190. package/dist/overlays/GlassChip.svelte +30 -0
  191. package/dist/overlays/GlassChip.svelte.d.ts +8 -0
  192. package/dist/overlays/InfoPaneCards.svelte +11 -23
  193. package/dist/overlays/index.d.ts +11 -0
  194. package/dist/overlays/index.js +26 -0
  195. package/dist/overlays/portal.d.ts +2 -0
  196. package/dist/overlays/portal.js +14 -0
  197. package/dist/periodic-table/PeriodicTable.svelte +115 -146
  198. package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
  199. package/dist/periodic-table/PeriodicTableControls.svelte +11 -63
  200. package/dist/periodic-table/TableInset.svelte +9 -4
  201. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +50 -71
  202. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
  203. package/dist/phase-diagram/PhaseDiagramControls.svelte +73 -96
  204. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +4 -3
  205. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +4 -2
  206. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +2 -3
  207. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +49 -134
  208. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +3 -4
  209. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
  210. package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
  211. package/dist/phase-diagram/build-diagram.js +3 -3
  212. package/dist/phase-diagram/colors.js +1 -1
  213. package/dist/phase-diagram/diagram-input.d.ts +1 -2
  214. package/dist/phase-diagram/parse.d.ts +2 -1
  215. package/dist/phase-diagram/parse.js +15 -15
  216. package/dist/phase-diagram/svg-to-diagram.js +21 -15
  217. package/dist/phase-diagram/utils.js +2 -3
  218. package/dist/plot/bar/BarPlot.svelte +494 -692
  219. package/dist/plot/bar/BarPlot.svelte.d.ts +9 -15
  220. package/dist/plot/bar/BarPlotControls.svelte +1 -3
  221. package/dist/plot/bar/BarPlotControls.svelte.d.ts +5 -7
  222. package/dist/plot/bar/SpacegroupBarPlot.svelte +31 -37
  223. package/dist/plot/bar/data.d.ts +5 -4
  224. package/dist/plot/bar/data.js +2 -1
  225. package/dist/plot/box/BoxPlot.svelte +361 -439
  226. package/dist/plot/box/BoxPlot.svelte.d.ts +6 -3
  227. package/dist/plot/box/BoxPlotControls.svelte.d.ts +1 -1
  228. package/dist/plot/box/Violin.svelte.d.ts +2 -1
  229. package/dist/plot/box/box-plot.d.ts +3 -2
  230. package/dist/plot/box/box-plot.js +6 -3
  231. package/dist/plot/box/kde.d.ts +2 -1
  232. package/dist/plot/box/kde.js +4 -4
  233. package/dist/plot/core/auto-place.d.ts +1 -1
  234. package/dist/plot/core/auto-place.js +5 -2
  235. package/dist/plot/core/axis-utils.d.ts +12 -7
  236. package/dist/plot/core/axis-utils.js +48 -48
  237. package/dist/plot/core/components/AxisLabel.svelte +82 -20
  238. package/dist/plot/core/components/AxisLabel.svelte.d.ts +1 -0
  239. package/dist/plot/core/components/ColorBar.svelte +106 -111
  240. package/dist/plot/core/components/ColorBar.svelte.d.ts +5 -4
  241. package/dist/plot/core/components/ColorScaleSelect.svelte +1 -1
  242. package/dist/plot/core/components/FillArea.svelte +10 -17
  243. package/dist/plot/core/components/HierarchyControls.svelte +249 -0
  244. package/dist/plot/{sunburst/SunburstControls.svelte.d.ts → core/components/HierarchyControls.svelte.d.ts} +12 -8
  245. package/dist/plot/core/components/InteractiveAxisLabel.svelte +1 -1
  246. package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +1 -1
  247. package/dist/plot/core/components/Line.svelte +21 -11
  248. package/dist/plot/core/components/Line.svelte.d.ts +5 -2
  249. package/dist/plot/core/components/PlotAxis.svelte +42 -18
  250. package/dist/plot/core/components/PlotAxis.svelte.d.ts +2 -1
  251. package/dist/plot/core/components/PlotControls.svelte +65 -41
  252. package/dist/plot/core/components/PlotControls.svelte.d.ts +1 -1
  253. package/dist/plot/core/components/PlotLegend.svelte +31 -35
  254. package/dist/plot/core/components/PlotMarginals.svelte +616 -0
  255. package/dist/plot/core/components/PlotMarginals.svelte.d.ts +15 -0
  256. package/dist/plot/core/components/PlotTooltip.svelte +1 -1
  257. package/dist/plot/core/components/PortalSelect.svelte +4 -8
  258. package/dist/plot/core/components/ReferenceLine.svelte +27 -24
  259. package/dist/plot/core/components/ReferenceLine3D.svelte +56 -59
  260. package/dist/plot/core/components/ReferenceLine3D.svelte.d.ts +4 -4
  261. package/dist/plot/core/components/ReferencePlane.svelte +9 -10
  262. package/dist/plot/core/components/ReferencePlane.svelte.d.ts +4 -4
  263. package/dist/plot/core/components/ZeroLines.svelte +4 -8
  264. package/dist/plot/core/components/ZoomRect.svelte +1 -2
  265. package/dist/plot/core/components/index.d.ts +1 -0
  266. package/dist/plot/core/components/index.js +1 -0
  267. package/dist/plot/core/data-cleaning-signal.d.ts +46 -0
  268. package/dist/plot/core/data-cleaning-signal.js +467 -0
  269. package/dist/plot/core/data-cleaning.d.ts +2 -42
  270. package/dist/plot/core/data-cleaning.js +29 -476
  271. package/dist/plot/core/data-transform.js +9 -5
  272. package/dist/plot/core/fill-utils.d.ts +7 -4
  273. package/dist/plot/core/fill-utils.js +34 -9
  274. package/dist/plot/core/index.d.ts +1 -0
  275. package/dist/plot/core/index.js +1 -0
  276. package/dist/plot/core/interactions.d.ts +5 -1
  277. package/dist/plot/core/interactions.js +14 -2
  278. package/dist/plot/core/layout.d.ts +3 -1
  279. package/dist/plot/core/layout.js +22 -13
  280. package/dist/plot/core/marginals.d.ts +170 -0
  281. package/dist/plot/core/marginals.js +436 -0
  282. package/dist/plot/core/pan-zoom.svelte.d.ts +35 -0
  283. package/dist/plot/core/pan-zoom.svelte.js +221 -0
  284. package/dist/plot/core/placed-tween.svelte.d.ts +21 -0
  285. package/dist/plot/core/placed-tween.svelte.js +68 -0
  286. package/dist/plot/core/reference-line.d.ts +10 -10
  287. package/dist/plot/core/reference-line.js +7 -7
  288. package/dist/plot/core/scales.d.ts +40 -25
  289. package/dist/plot/core/scales.js +49 -21
  290. package/dist/plot/core/svg.d.ts +2 -1
  291. package/dist/plot/core/types/fills.d.ts +101 -0
  292. package/dist/plot/core/types/fills.js +15 -0
  293. package/dist/plot/core/types/plot-3d.d.ts +87 -0
  294. package/dist/plot/core/types/plot-3d.js +4 -0
  295. package/dist/plot/core/types/reference-lines.d.ts +140 -0
  296. package/dist/plot/core/types/reference-lines.js +9 -0
  297. package/dist/plot/core/types.d.ts +47 -331
  298. package/dist/plot/core/types.js +23 -20
  299. package/dist/plot/core/utils/hierarchy-chart.d.ts +51 -0
  300. package/dist/plot/core/utils/hierarchy-chart.js +179 -0
  301. package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
  302. package/dist/plot/core/utils/hierarchy-labels.js +99 -0
  303. package/dist/plot/core/utils/label-placement.d.ts +1 -1
  304. package/dist/plot/core/utils/label-placement.js +5 -5
  305. package/dist/plot/core/utils.d.ts +2 -1
  306. package/dist/plot/histogram/Histogram.svelte +373 -631
  307. package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
  308. package/dist/plot/histogram/HistogramControls.svelte +30 -28
  309. package/dist/plot/histogram/HistogramControls.svelte.d.ts +1 -1
  310. package/dist/plot/histogram/histogram.d.ts +31 -0
  311. package/dist/plot/histogram/histogram.js +70 -0
  312. package/dist/plot/histogram/index.d.ts +1 -0
  313. package/dist/plot/histogram/index.js +1 -0
  314. package/dist/plot/index.d.ts +1 -0
  315. package/dist/plot/index.js +1 -0
  316. package/dist/plot/sankey/Sankey.svelte +79 -73
  317. package/dist/plot/sankey/Sankey.svelte.d.ts +3 -3
  318. package/dist/plot/sankey/SankeyControls.svelte +22 -16
  319. package/dist/plot/sankey/sankey.js +3 -1
  320. package/dist/plot/scatter/BinnedScatterPlot.svelte +264 -112
  321. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +11 -4
  322. package/dist/plot/scatter/ElementScatter.svelte +4 -1
  323. package/dist/plot/scatter/ScatterPlot.svelte +623 -821
  324. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +9 -15
  325. package/dist/plot/scatter/ScatterPlotControls.svelte +18 -19
  326. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
  327. package/dist/plot/scatter/ScatterPoint.svelte +16 -9
  328. package/dist/plot/scatter/binned-scatter-types.d.ts +6 -12
  329. package/dist/plot/scatter/binned-scatter-types.js +6 -1
  330. package/dist/plot/scatter/index.d.ts +1 -1
  331. package/dist/plot/scatter/scatter-data.d.ts +1 -1
  332. package/dist/plot/scatter/scatter-data.js +8 -7
  333. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +40 -60
  334. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +6 -14
  335. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +17 -15
  336. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte.d.ts +5 -5
  337. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +232 -234
  338. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +5 -14
  339. package/dist/plot/scatter-3d/Surface3D.svelte +9 -17
  340. package/dist/plot/scatter-3d/Surface3D.svelte.d.ts +4 -3
  341. package/dist/plot/sunburst/Sunburst.svelte +256 -338
  342. package/dist/plot/sunburst/Sunburst.svelte.d.ts +4 -3
  343. package/dist/plot/sunburst/index.d.ts +1 -1
  344. package/dist/plot/sunburst/index.js +2 -1
  345. package/dist/plot/sunburst/render.d.ts +2 -2
  346. package/dist/plot/sunburst/render.js +47 -22
  347. package/dist/plot/sunburst/sunburst.d.ts +5 -1
  348. package/dist/plot/sunburst/sunburst.js +14 -4
  349. package/dist/plot/treemap/Treemap.svelte +907 -0
  350. package/dist/plot/treemap/Treemap.svelte.d.ts +84 -0
  351. package/dist/plot/treemap/index.d.ts +3 -0
  352. package/dist/plot/treemap/index.js +4 -0
  353. package/dist/plot/treemap/treemap.d.ts +26 -0
  354. package/dist/plot/treemap/treemap.js +99 -0
  355. package/dist/rdf/RdfPlot.svelte +22 -26
  356. package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
  357. package/dist/rdf/calc-rdf.js +4 -8
  358. package/dist/sanitize.js +14 -3
  359. package/dist/scene/SceneCamera.svelte +62 -0
  360. package/dist/scene/SceneCamera.svelte.d.ts +19 -0
  361. package/dist/scene/bind-renderer.svelte.d.ts +2 -0
  362. package/dist/scene/bind-renderer.svelte.js +22 -0
  363. package/dist/scene/index.d.ts +4 -0
  364. package/dist/scene/index.js +5 -0
  365. package/dist/scene/props.js +52 -0
  366. package/dist/scene/types.d.ts +26 -0
  367. package/dist/scene/types.js +1 -0
  368. package/dist/settings.d.ts +33 -11
  369. package/dist/settings.js +136 -51
  370. package/dist/spectral/Bands.svelte +231 -237
  371. package/dist/spectral/Bands.svelte.d.ts +3 -2
  372. package/dist/spectral/BandsAndDos.svelte +29 -29
  373. package/dist/spectral/BrillouinBandsDos.svelte +21 -29
  374. package/dist/spectral/Dos.svelte +75 -77
  375. package/dist/spectral/Dos.svelte.d.ts +2 -1
  376. package/dist/spectral/helpers.d.ts +9 -9
  377. package/dist/spectral/helpers.js +66 -70
  378. package/dist/state.svelte.d.ts +0 -7
  379. package/dist/state.svelte.js +5 -24
  380. package/dist/structure/Arrow.svelte +6 -21
  381. package/dist/structure/ArrowInstances.svelte +160 -0
  382. package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
  383. package/dist/structure/AtomLegend.svelte +115 -75
  384. package/dist/structure/AtomLegend.svelte.d.ts +1 -1
  385. package/dist/structure/Bond.svelte +31 -23
  386. package/dist/structure/CanvasTooltip.svelte +16 -3
  387. package/dist/structure/CellSelect.svelte +22 -29
  388. package/dist/structure/CellSelect.svelte.d.ts +2 -1
  389. package/dist/structure/Cylinder.svelte +24 -40
  390. package/dist/structure/InstancedAtoms.svelte +114 -0
  391. package/dist/structure/InstancedAtoms.svelte.d.ts +15 -0
  392. package/dist/structure/Lattice.svelte +85 -149
  393. package/dist/structure/SiteLabels.svelte +122 -0
  394. package/dist/structure/SiteLabels.svelte.d.ts +18 -0
  395. package/dist/structure/Structure.svelte +725 -735
  396. package/dist/structure/Structure.svelte.d.ts +8 -16
  397. package/dist/structure/StructureCarousel.svelte +630 -0
  398. package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
  399. package/dist/structure/StructureControls.svelte +298 -325
  400. package/dist/structure/StructureControls.svelte.d.ts +5 -3
  401. package/dist/structure/StructureExportPane.svelte +62 -168
  402. package/dist/structure/StructureExportPane.svelte.d.ts +4 -5
  403. package/dist/structure/StructureInfoPane.svelte +77 -69
  404. package/dist/structure/StructureInfoPane.svelte.d.ts +6 -6
  405. package/dist/structure/StructureScene.svelte +758 -600
  406. package/dist/structure/StructureScene.svelte.d.ts +24 -20
  407. package/dist/structure/StructureViewport.svelte +386 -0
  408. package/dist/structure/StructureViewport.svelte.d.ts +63 -0
  409. package/dist/structure/atom-label-placement.d.ts +18 -0
  410. package/dist/structure/atom-label-placement.js +115 -0
  411. package/dist/structure/atom-properties.d.ts +3 -1
  412. package/dist/structure/atom-properties.js +115 -54
  413. package/dist/structure/bond-order-perception.js +2 -4
  414. package/dist/structure/bonding.d.ts +12 -2
  415. package/dist/structure/bonding.js +172 -73
  416. package/dist/structure/edit-history.d.ts +6 -0
  417. package/dist/structure/edit-history.js +27 -0
  418. package/dist/structure/export.d.ts +25 -4
  419. package/dist/structure/export.js +103 -153
  420. package/dist/structure/format-detect.d.ts +1 -0
  421. package/dist/structure/format-detect.js +22 -0
  422. package/dist/structure/geometry.d.ts +9 -0
  423. package/dist/structure/geometry.js +27 -0
  424. package/dist/structure/index.d.ts +18 -1
  425. package/dist/structure/index.js +15 -2
  426. package/dist/structure/measure.d.ts +1 -1
  427. package/dist/structure/measure.js +6 -12
  428. package/dist/structure/parse.d.ts +5 -3
  429. package/dist/structure/parse.js +551 -567
  430. package/dist/structure/partial-occupancy.d.ts +0 -1
  431. package/dist/structure/partial-occupancy.js +5 -3
  432. package/dist/structure/pbc.d.ts +1 -1
  433. package/dist/structure/pbc.js +204 -51
  434. package/dist/structure/polyhedra.d.ts +40 -0
  435. package/dist/structure/polyhedra.js +587 -0
  436. package/dist/structure/site.d.ts +4 -0
  437. package/dist/structure/site.js +1 -0
  438. package/dist/structure/supercell.d.ts +1 -2
  439. package/dist/structure/supercell.js +10 -15
  440. package/dist/structure/validation.js +5 -6
  441. package/dist/symmetry/SymmetryElementControls.svelte +69 -0
  442. package/dist/symmetry/SymmetryElementControls.svelte.d.ts +9 -0
  443. package/dist/symmetry/SymmetryElements.svelte +350 -0
  444. package/dist/symmetry/SymmetryElements.svelte.d.ts +24 -0
  445. package/dist/symmetry/SymmetryStats.svelte +142 -49
  446. package/dist/symmetry/WyckoffTable.svelte +58 -16
  447. package/dist/symmetry/WyckoffTable.svelte.d.ts +3 -0
  448. package/dist/symmetry/cell-transform.js +8 -14
  449. package/dist/symmetry/index.d.ts +15 -4
  450. package/dist/symmetry/index.js +308 -81
  451. package/dist/symmetry/spacegroups.d.ts +5 -1
  452. package/dist/symmetry/spacegroups.js +18 -3
  453. package/dist/symmetry/symmetry-elements.d.ts +33 -0
  454. package/dist/symmetry/symmetry-elements.js +521 -0
  455. package/dist/symmetry/wyckoff-db.d.ts +9 -0
  456. package/dist/symmetry/wyckoff-db.js +87 -0
  457. package/dist/table/HeatmapTable.svelte +1104 -378
  458. package/dist/table/HeatmapTable.svelte.d.ts +12 -2
  459. package/dist/table/ToggleMenu.svelte +5 -12
  460. package/dist/table/index.d.ts +21 -6
  461. package/dist/table/index.js +34 -21
  462. package/dist/theme/ThemeControl.svelte +16 -8
  463. package/dist/theme/index.d.ts +1 -5
  464. package/dist/theme/index.js +4 -10
  465. package/dist/theme/themes.mjs +14 -7
  466. package/dist/tooltip/KCoords.svelte +4 -1
  467. package/dist/tooltip/TooltipContent.svelte +2 -5
  468. package/dist/trajectory/Trajectory.svelte +556 -352
  469. package/dist/trajectory/Trajectory.svelte.d.ts +10 -22
  470. package/dist/trajectory/TrajectoryError.svelte +11 -8
  471. package/dist/trajectory/TrajectoryExportPane.svelte +28 -54
  472. package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +4 -5
  473. package/dist/trajectory/TrajectoryInfoPane.svelte +88 -99
  474. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +3 -2
  475. package/dist/trajectory/constants.js +6 -2
  476. package/dist/trajectory/extract.js +73 -71
  477. package/dist/trajectory/format-detect.d.ts +0 -1
  478. package/dist/trajectory/format-detect.js +13 -17
  479. package/dist/trajectory/frame-reader.d.ts +2 -1
  480. package/dist/trajectory/frame-reader.js +74 -136
  481. package/dist/trajectory/helpers.d.ts +12 -2
  482. package/dist/trajectory/helpers.js +68 -37
  483. package/dist/trajectory/index.d.ts +1 -0
  484. package/dist/trajectory/index.js +3 -0
  485. package/dist/trajectory/parse/ase.d.ts +9 -1
  486. package/dist/trajectory/parse/ase.js +47 -32
  487. package/dist/trajectory/parse/diagnostics.d.ts +3 -0
  488. package/dist/trajectory/parse/diagnostics.js +14 -0
  489. package/dist/trajectory/parse/h5-utils.d.ts +13 -0
  490. package/dist/trajectory/parse/h5-utils.js +109 -0
  491. package/dist/trajectory/parse/hdf5.d.ts +1 -1
  492. package/dist/trajectory/parse/hdf5.js +116 -106
  493. package/dist/trajectory/parse/index.d.ts +3 -4
  494. package/dist/trajectory/parse/index.js +68 -119
  495. package/dist/trajectory/parse/lammps.d.ts +0 -2
  496. package/dist/trajectory/parse/lammps.js +14 -16
  497. package/dist/trajectory/parse/pymatgen.d.ts +2 -0
  498. package/dist/trajectory/parse/pymatgen.js +74 -0
  499. package/dist/trajectory/parse/vasp.js +13 -9
  500. package/dist/trajectory/parse/vaspout-electronic.d.ts +13 -0
  501. package/dist/trajectory/parse/vaspout-electronic.js +207 -0
  502. package/dist/trajectory/parse/vaspout-h5.d.ts +5 -0
  503. package/dist/trajectory/parse/vaspout-h5.js +284 -0
  504. package/dist/trajectory/parse/xyz.d.ts +9 -21
  505. package/dist/trajectory/parse/xyz.js +38 -39
  506. package/dist/trajectory/plotting.d.ts +8 -10
  507. package/dist/trajectory/plotting.js +102 -127
  508. package/dist/utils.d.ts +4 -0
  509. package/dist/utils.js +8 -1
  510. package/dist/xrd/XrdPlot.svelte +56 -85
  511. package/dist/xrd/broadening.d.ts +2 -1
  512. package/dist/xrd/broadening.js +2 -1
  513. package/dist/xrd/calc-xrd.js +8 -15
  514. package/dist/xrd/index.d.ts +2 -2
  515. package/dist/xrd/parse.d.ts +0 -1
  516. package/dist/xrd/parse.js +56 -73
  517. package/package.json +77 -36
  518. package/dist/api/mp.d.ts +0 -6
  519. package/dist/api/mp.js +0 -22
  520. package/dist/element/data.json +0 -11864
  521. package/dist/fermi-surface/marching-cubes.d.ts +0 -2
  522. package/dist/fermi-surface/marching-cubes.js +0 -2
  523. package/dist/plot/core/hover-lock.svelte.d.ts +0 -14
  524. package/dist/plot/core/hover-lock.svelte.js +0 -45
  525. package/dist/plot/sunburst/SunburstControls.svelte +0 -200
  526. package/dist/structure/label-placement.d.ts +0 -14
  527. package/dist/structure/label-placement.js +0 -72
@@ -1,10 +1,11 @@
1
- import type { D3ColorSchemeName, D3InterpolateName } from '../../colors';
1
+ import type { D3InterpolateName } from '../../colors';
2
2
  import type { Point2D } from '../../math';
3
- import type { AxisLoadError, BasePlotProps, ControlsConfig, DataLoaderFn, DataSeries, ErrorBand, FillHandlerEvent, FillRegion, HoverConfig, InternalPoint, LabelPlacementConfig, LegendConfig, PanConfig, PlotConfig, Point, RefLine, RefLineEvent, ScaleType, ScatterHandlerEvent, ScatterHandlerProps, StyleOverrides, UserContentProps } from '..';
3
+ import type { AxisLoadError, BasePlotProps, ColorScaleConfig, ControlsConfig, DataLoaderFn, DataSeries, ErrorBand, FillHandlerEvent, FillRegion, HoverConfig, InternalPoint, LabelPlacementConfig, LegendConfig, PanConfig, PlotConfig, Point, RefLine, RefLineEvent, ScatterHandlerEvent, ScatterHandlerProps, SizeScaleConfig, StyleOverrides, UserContentProps } from '..';
4
4
  import { ColorBar } from '..';
5
+ import type { MarginalsProp } from '../core/marginals';
5
6
  import type { ComponentProps, Snippet } from 'svelte';
6
7
  import type { HTMLAttributes } from 'svelte/elements';
7
- import { type TweenOptions } from 'svelte/motion';
8
+ import type { TweenOptions } from 'svelte/motion';
8
9
  import type { Sides } from '../core/layout';
9
10
  declare function $$render<Metadata extends Record<string, unknown> = Record<string, unknown>>(): {
10
11
  props: HTMLAttributes<HTMLDivElement> & Omit<BasePlotProps, "change"> & PlotConfig & {
@@ -31,16 +32,8 @@ declare function $$render<Metadata extends Record<string, unknown> = Record<stri
31
32
  change?: (data: (Point<Metadata> & {
32
33
  series: DataSeries<Metadata>;
33
34
  }) | null) => void;
34
- color_scale?: {
35
- type?: ScaleType;
36
- scheme?: D3ColorSchemeName | D3InterpolateName;
37
- value_range?: [number, number];
38
- } | D3InterpolateName;
39
- size_scale?: {
40
- type?: ScaleType;
41
- radius_range?: [number, number];
42
- value_range?: [number, number];
43
- };
35
+ color_scale?: ColorScaleConfig | D3InterpolateName;
36
+ size_scale?: SizeScaleConfig;
44
37
  color_bar?: (ComponentProps<typeof ColorBar> & {
45
38
  margin?: number | Sides;
46
39
  tween?: TweenOptions<Point2D>;
@@ -71,9 +64,10 @@ declare function $$render<Metadata extends Record<string, unknown> = Record<stri
71
64
  on_axis_change?: (axis: `x` | `x2` | `y` | `y2`, key: string, new_series: DataSeries<Metadata>[]) => void;
72
65
  on_error?: (error: AxisLoadError) => void;
73
66
  pan?: PanConfig;
67
+ marginals?: MarginalsProp;
74
68
  };
75
69
  exports: {};
76
- bindings: "display" | "fullscreen" | "series" | "hovered" | "ref_lines" | "x_axis" | "y_axis" | "x2_axis" | "y2_axis" | "wrapper" | "tooltip_point" | "fill_regions" | "selected_series_idx";
70
+ bindings: "display" | "x2_axis" | "y_axis" | "y2_axis" | "fullscreen" | "wrapper" | "series" | "hovered" | "ref_lines" | "x_axis" | "tooltip_point" | "fill_regions" | "selected_series_idx";
77
71
  slots: {};
78
72
  events: {};
79
73
  };
@@ -81,7 +75,7 @@ declare class __sveltets_Render<Metadata extends Record<string, unknown> = Recor
81
75
  props(): ReturnType<typeof $$render<Metadata>>['props'];
82
76
  events(): ReturnType<typeof $$render<Metadata>>['events'];
83
77
  slots(): ReturnType<typeof $$render<Metadata>>['slots'];
84
- bindings(): "display" | "fullscreen" | "series" | "hovered" | "ref_lines" | "x_axis" | "y_axis" | "x2_axis" | "y2_axis" | "wrapper" | "tooltip_point" | "fill_regions" | "selected_series_idx";
78
+ bindings(): "display" | "x2_axis" | "y_axis" | "y2_axis" | "fullscreen" | "wrapper" | "series" | "hovered" | "ref_lines" | "x_axis" | "tooltip_point" | "fill_regions" | "selected_series_idx";
85
79
  exports(): {};
86
80
  }
87
81
  interface $$IsomorphicComponent {
@@ -38,9 +38,7 @@
38
38
  } = $props()
39
39
 
40
40
  let non_null_series = $derived(series.filter((srs) => srs != null))
41
- let visible_series = $derived(
42
- non_null_series.filter((srs) => (srs.visible ?? true)),
43
- )
41
+ let visible_series = $derived(non_null_series.filter((srs) => srs.visible ?? true))
44
42
  let has_multiple_series = $derived(non_null_series.length > 1)
45
43
 
46
44
  // Derive what marker types are present, and whether color/size are data-driven
@@ -55,7 +53,8 @@
55
53
  visible_series.some((srs) => srs?.size_values?.some((val) => val != null)),
56
54
  )
57
55
 
58
- $effect(() => { // Initialize show_points/show_lines from defaults
56
+ $effect(() => {
57
+ // Initialize show_points/show_lines from defaults
59
58
  styles.show_points ??= DEFAULTS.scatter.show_points
60
59
  styles.show_lines ??= DEFAULTS.scatter.show_lines
61
60
  })
@@ -77,14 +76,14 @@
77
76
  {...rest}
78
77
  >
79
78
  {@render children?.({
80
- x_axis,
81
- x2_axis,
82
- y_axis,
83
- y2_axis,
84
- display,
85
- styles,
86
- selected_series_idx,
87
- })}
79
+ x_axis,
80
+ x2_axis,
81
+ y_axis,
82
+ y2_axis,
83
+ display,
84
+ styles,
85
+ selected_series_idx,
86
+ })}
88
87
  {#if has_any_points || has_any_lines}
89
88
  <SettingsSection
90
89
  title="Markers"
@@ -97,14 +96,18 @@
97
96
  >
98
97
  {#if has_any_points}
99
98
  <label
100
- {@attach tooltip({ content: `Toggle visibility of data points in the scatter plot` })}
99
+ {@attach tooltip({
100
+ content: `Toggle visibility of data points in the scatter plot`,
101
+ })}
101
102
  >
102
103
  <input type="checkbox" bind:checked={styles.show_points} /> Show points
103
104
  </label>
104
105
  {/if}
105
106
  {#if has_any_lines}
106
107
  <label
107
- {@attach tooltip({ content: `Toggle visibility of connecting lines between data points` })}
108
+ {@attach tooltip({
109
+ content: `Toggle visibility of connecting lines between data points`,
110
+ })}
108
111
  >
109
112
  <input type="checkbox" bind:checked={styles.show_lines} /> Show lines
110
113
  </label>
@@ -164,11 +167,7 @@
164
167
  {#if !has_color_data}
165
168
  <div class="pane-row" data-key="point.color">
166
169
  <label for="{uid}-point-color">Color:</label>
167
- <input
168
- id="{uid}-point-color"
169
- type="color"
170
- bind:value={styles.point.color}
171
- />
170
+ <input id="{uid}-point-color" type="color" bind:value={styles.point.color} />
172
171
  </div>
173
172
  {/if}
174
173
  <div class="pane-row" data-key="point.opacity">
@@ -12,6 +12,6 @@ type $$ComponentProps = Omit<PlotControlsProps, `children` | `post_children`> &
12
12
  } & Required<PlotConfig>
13
13
  ]>;
14
14
  };
15
- declare const ScatterPlotControls: import("svelte").Component<$$ComponentProps, {}, "display" | "x_axis" | "y_axis" | "x2_axis" | "y2_axis" | "selected_series_idx" | "styles">;
15
+ declare const ScatterPlotControls: import("svelte").Component<$$ComponentProps, {}, "display" | "x2_axis" | "y_axis" | "y2_axis" | "x_axis" | "styles" | "selected_series_idx">;
16
16
  type ScatterPlotControls = ReturnType<typeof ScatterPlotControls>;
17
17
  export default ScatterPlotControls;
@@ -3,7 +3,10 @@
3
3
  import type { HoverStyle, LabelStyle, Point } from '..'
4
4
  import type { Point2D } from '../../math'
5
5
  import type { PointStyle } from '../core/types'
6
- import { estimate_label_size, label_leader_segment } from '../core/utils/label-placement'
6
+ import {
7
+ estimate_label_size,
8
+ label_leader_segment,
9
+ } from '../core/utils/label-placement'
7
10
  import { DEFAULTS } from '../../settings'
8
11
  import * as d3_symbols from 'd3-shape'
9
12
  import { symbol } from 'd3-shape'
@@ -103,13 +106,16 @@
103
106
  {@const offset_x = label.offset?.x ?? 10}
104
107
  {@const offset_y = label.offset?.y ?? 0}
105
108
  {@const displacement = Math.hypot(offset_x, offset_y)}
106
- {@const leader_line = displacement > leader_line_threshold ? label_leader_segment({
107
- point: { x: 0, y: 0 },
108
- point_radius: style.radius ?? 3,
109
- label_center: { x: offset_x, y: offset_y },
110
- label_size: label.size ?? estimate_label_size(label.text, label.font_size),
111
- min_length: 6,
112
- }) : null}
109
+ {@const leader_line =
110
+ displacement > leader_line_threshold
111
+ ? label_leader_segment({
112
+ point: { x: 0, y: 0 },
113
+ point_radius: style.radius ?? 3,
114
+ label_center: { x: offset_x, y: offset_y },
115
+ label_size: label.size ?? estimate_label_size(label.text, label.font_size),
116
+ min_length: 6,
117
+ })
118
+ : null}
113
119
  {#if leader_line}
114
120
  <line
115
121
  x1={leader_line.x1}
@@ -164,7 +170,8 @@
164
170
  filter: blur(3px);
165
171
  }
166
172
  @keyframes ring-pulse {
167
- 0%, 100% {
173
+ 0%,
174
+ 100% {
168
175
  opacity: 0.3;
169
176
  transform: scale(1);
170
177
  }
@@ -1,19 +1,13 @@
1
- import type { D3ColorSchemeName, D3InterpolateName } from '../../colors';
1
+ import type { D3InterpolateName } from '../../colors';
2
2
  import type { DenseInternalPoint } from './adaptive-density';
3
3
  import type ColorBar from '../core/components/ColorBar.svelte';
4
- import type { LabelPlacementConfig, ScaleType, ScatterHandlerProps } from '../core/types';
4
+ import type { ColorScaleConfig, LabelPlacementConfig, RefLine, ScatterHandlerProps, SizeScaleConfig } from '../core/types';
5
5
  import type { ComponentProps, Snippet } from 'svelte';
6
- export type BinnedColorScaleConfig = {
7
- type?: ScaleType;
8
- scheme?: D3ColorSchemeName | D3InterpolateName;
9
- value_range?: [number, number];
10
- } | D3InterpolateName;
11
- export type BinnedSizeScaleConfig = {
12
- type?: ScaleType;
13
- radius_range?: [number, number];
14
- value_range?: [number, number];
6
+ export type BinnedColorScaleConfig = ColorScaleConfig | D3InterpolateName;
7
+ export type BinnedSizeScaleConfig = SizeScaleConfig & {
15
8
  pick_radius?: number | `auto`;
16
9
  };
10
+ export declare const DEFAULT_BINNED_SIZE_SCALE: BinnedSizeScaleConfig;
17
11
  export type BinnedDensityConfig = {
18
12
  bin_px?: number;
19
13
  color_scale?: BinnedColorScaleConfig;
@@ -34,7 +28,7 @@ export type BinnedRefLine = {
34
28
  width?: number;
35
29
  };
36
30
  export type BinnedOverlaysConfig = {
37
- ref_lines?: BinnedRefLine[];
31
+ ref_lines?: (BinnedRefLine | RefLine)[];
38
32
  };
39
33
  export type BinnedPointBasePayload<Metadata extends Record<string, unknown> = Record<string, unknown>> = ScatterHandlerProps<Metadata> & {
40
34
  point: DenseInternalPoint<Metadata>;
@@ -1 +1,6 @@
1
- export {};
1
+ import { SCALE_DEFAULTS } from '../core/types';
2
+ export const DEFAULT_BINNED_SIZE_SCALE = {
3
+ type: `linear`,
4
+ radius_range: SCALE_DEFAULTS.binned_radius,
5
+ pick_radius: SCALE_DEFAULTS.binned_radius[1],
6
+ };
@@ -1,4 +1,4 @@
1
- export type { DensePointSeries } from './adaptive-density';
1
+ export type { DensePointSeries, NumericArray } from './adaptive-density';
2
2
  export { default as BinnedScatterPlot } from './BinnedScatterPlot.svelte';
3
3
  export type { BinnedColorScaleConfig, BinnedDensityConfig, BinnedOverlaysConfig, BinnedPointBasePayload, BinnedPointDataFn, BinnedPointLabelPlacementConfig, BinnedPointLabelsConfig, BinnedPointPayload, BinnedPointTooltipPayload, BinnedRefLine, BinnedSizeScaleConfig, } from './binned-scatter-types';
4
4
  export { default as ElementScatter } from './ElementScatter.svelte';
@@ -1,6 +1,6 @@
1
1
  import type { DataSeries, FillRegion, InternalPoint, LegendItem, PointStyle } from '..';
2
2
  import { type AxisRanges } from '../core/types';
3
- export type { AxisRanges };
3
+ export { type AxisRanges } from '../core/types';
4
4
  export declare function filter_series_to_ranges<Metadata = Record<string, unknown>>(series: readonly DataSeries<Metadata>[], ranges: AxisRanges): (DataSeries<Metadata> & {
5
5
  filtered_data: InternalPoint<Metadata>[];
6
6
  })[];
@@ -2,7 +2,8 @@ import { symbol_names } from '../../labels';
2
2
  import { get_series_color, get_series_symbol, process_prop, } from '../core/data-transform';
3
3
  import { is_fill_gradient } from '../core/fill-utils';
4
4
  import { DEFAULT_MARKERS } from '../core/types';
5
- const in_range = (val, lo, hi) => val != null && !isNaN(val) && val >= Math.min(lo, hi) && val <= Math.max(lo, hi);
5
+ export {} from '../core/types';
6
+ const in_range = (val, lo, hi) => val != null && Number.isFinite(val) && val >= Math.min(lo, hi) && val <= Math.max(lo, hi);
6
7
  // Filter series data to only include points within bounds and augment with internal data.
7
8
  // Full x/y arrays are kept on each returned series (via spread) so connecting lines can
8
9
  // continue through off-range points; only filtered_data (rendered markers) is range-limited.
@@ -79,7 +80,7 @@ export function build_legend_data(series, computed_fills, color_scale_fn) {
79
80
  const first_point_style = Array.isArray(data_series?.point_style)
80
81
  ? data_series.point_style[0]
81
82
  : data_series?.point_style;
82
- if (series_markers?.includes(`points`)) {
83
+ if (series_markers.includes(`points`)) {
83
84
  if (first_point_style) {
84
85
  if (typeof first_point_style.symbol_type === `string` &&
85
86
  symbol_names.includes(first_point_style.symbol_type)) {
@@ -101,7 +102,7 @@ export function build_legend_data(series, computed_fills, color_scale_fn) {
101
102
  display_style.symbol_type = undefined;
102
103
  display_style.symbol_color = undefined;
103
104
  }
104
- if (series_markers?.includes(`line`)) {
105
+ if (series_markers.includes(`line`)) {
105
106
  // Explicit line stroke, then color scale, then point colors, then series default
106
107
  let line_color = data_series?.line_style?.stroke;
107
108
  if (!line_color) {
@@ -172,7 +173,7 @@ export function build_legend_data(series, computed_fills, color_scale_fn) {
172
173
  const is_transparent_or_none = (color) => !color ||
173
174
  color === `none` ||
174
175
  color === `transparent` ||
175
- /rgba\([^)]+[,/]\s*0(\.0*)?\s*\)$/.test(color);
176
+ /rgba\([^)]+[,/]\s*0(?:\.0*)?\s*\)$/.test(color);
176
177
  // Type-guard negation of is_transparent_or_none so usable colors narrow to string
177
178
  const is_opaque_color = (color) => !is_transparent_or_none(color);
178
179
  // Resolve tooltip background color: point color-scale value, then point fill, then point
@@ -186,12 +187,12 @@ export function pick_tooltip_bg(point, series, color_scale_fn) {
186
187
  const fill_color = point_style?.fill;
187
188
  if (is_opaque_color(fill_color))
188
189
  return fill_color;
189
- if (series_markers?.includes(`points`)) {
190
+ if (series_markers.includes(`points`)) {
190
191
  const stroke_color = point_style?.stroke;
191
192
  if (is_opaque_color(stroke_color))
192
193
  return stroke_color;
193
194
  }
194
- if (series_markers?.includes(`line`)) {
195
+ if (series_markers.includes(`line`)) {
195
196
  const line_style = series?.line_style ?? {};
196
197
  const first_point_style = Array.isArray(series?.point_style)
197
198
  ? series?.point_style[0]
@@ -203,7 +204,7 @@ export function pick_tooltip_bg(point, series, color_scale_fn) {
203
204
  }
204
205
  if (is_transparent_or_none(line_color_candidate) && first_color_value != null)
205
206
  line_color_candidate = color_scale_fn(first_color_value);
206
- if (is_transparent_or_none(line_color_candidate) && series_markers?.includes(`points`))
207
+ if (is_transparent_or_none(line_color_candidate) && series_markers.includes(`points`))
207
208
  line_color_candidate = first_point_style?.stroke;
208
209
  if (is_opaque_color(line_color_candidate))
209
210
  return line_color_candidate;
@@ -2,7 +2,7 @@
2
2
  lang="ts"
3
3
  generics="Metadata extends Record<string, unknown> = Record<string, unknown>"
4
4
  >
5
- import type { D3ColorSchemeName, D3InterpolateName } from '../../colors'
5
+ import type { D3InterpolateName } from '../../colors'
6
6
  import { FullscreenToggle } from '../../layout'
7
7
  import type { Vec2, Vec3 } from '../../math'
8
8
  import { ColorBar, PlotLegend } from '..'
@@ -11,6 +11,7 @@
11
11
  import type {
12
12
  AxisConfig3D,
13
13
  CameraProjection3D,
14
+ ColorScaleConfig,
14
15
  ControlsConfig3D,
15
16
  DataSeries3D,
16
17
  DisplayConfig3D,
@@ -18,11 +19,12 @@
18
19
  LegendConfig,
19
20
  RefLine3D,
20
21
  RefPlane,
21
- ScaleType,
22
22
  Scatter3DHandlerEvent,
23
+ SizeScaleConfig,
23
24
  StyleOverrides3D,
24
25
  Surface3DConfig,
25
26
  } from '../core/types'
27
+ import { SCALE_DEFAULTS } from '../core/types'
26
28
  import { Canvas } from '@threlte/core'
27
29
  import * as extras from '@threlte/extras'
28
30
  import { onMount } from 'svelte'
@@ -30,7 +32,7 @@
30
32
  import type { HTMLAttributes } from 'svelte/elements'
31
33
  import { SvelteMap, SvelteSet } from 'svelte/reactivity'
32
34
  import type { Camera, Scene } from 'three'
33
- import { create_color_scale } from '../core/scales'
35
+ import { calculate_domain, create_color_scale } from '../core/scales'
34
36
  import ScatterPlot3DControls from './ScatterPlot3DControls.svelte'
35
37
  import ScatterPlot3DScene from './ScatterPlot3DScene.svelte'
36
38
 
@@ -52,17 +54,9 @@
52
54
  },
53
55
  styles = {},
54
56
  // Color and size scaling
55
- color_scale = {
56
- type: `linear` as ScaleType,
57
- scheme: `interpolateViridis` as D3InterpolateName,
58
- value_range: undefined,
59
- },
57
+ color_scale = SCALE_DEFAULTS.color,
60
58
  color_bar = {},
61
- size_scale = {
62
- type: `linear` as ScaleType,
63
- radius_range: [0.05, 0.2],
64
- value_range: undefined,
65
- },
59
+ size_scale = SCALE_DEFAULTS.size_3d,
66
60
  // Legend
67
61
  legend = {},
68
62
  // Camera settings
@@ -116,17 +110,9 @@
116
110
  z_axis?: AxisConfig3D
117
111
  display?: DisplayConfig3D
118
112
  styles?: StyleOverrides3D
119
- color_scale?: {
120
- type?: ScaleType
121
- scheme?: D3ColorSchemeName | D3InterpolateName
122
- value_range?: [number, number]
123
- } | D3InterpolateName
124
- color_bar?: ComponentProps<typeof ColorBar> & { margin?: number | Sides } | null
125
- size_scale?: {
126
- type?: ScaleType
127
- radius_range?: [number, number]
128
- value_range?: [number, number]
129
- }
113
+ color_scale?: ColorScaleConfig | D3InterpolateName
114
+ color_bar?: (ComponentProps<typeof ColorBar> & { margin?: number | Sides }) | null
115
+ size_scale?: SizeScaleConfig
130
116
  legend?: LegendConfig | null
131
117
  camera_position?: Vec3
132
118
  camera_projection?: CameraProjection3D
@@ -156,9 +142,7 @@
156
142
  orbit_controls?: ComponentProps<typeof extras.OrbitControls>[`ref`]
157
143
  tooltip?: Snippet<[Scatter3DHandlerEvent<Metadata>]>
158
144
  children?: Snippet<[{ height: number; width: number; fullscreen: boolean }]>
159
- header_controls?: Snippet<
160
- [{ height: number; width: number; fullscreen: boolean }]
161
- >
145
+ header_controls?: Snippet<[{ height: number; width: number; fullscreen: boolean }]>
162
146
  controls_extra?: Snippet
163
147
  } = $props()
164
148
 
@@ -166,7 +150,7 @@
166
150
 
167
151
  // Track mounted state to avoid SSR/hydration mismatch with Canvas
168
152
  let mounted = $state(false)
169
- onMount(() => mounted = true)
153
+ onMount(() => (mounted = true))
170
154
 
171
155
  const series_visibility_keys = $derived.by((): string[] => {
172
156
  const id_counts = new Map<string | number, number>()
@@ -175,11 +159,14 @@
175
159
  id_counts.set(srs.id, (id_counts.get(srs.id) ?? 0) + 1)
176
160
  }
177
161
  }
162
+ // Prefix classes stay disjoint: `idx:` keys have `x` at index 2 where `id:` keys
163
+ // have `:`, and `dup:` keys differ in first char. Within a class, idx is unique
164
+ // and bare ids are only used when they occur exactly once.
178
165
  return series.map((srs, idx) => {
179
- if (srs?.id === undefined || srs.id === ``) return JSON.stringify([`idx`, idx])
180
- return id_counts.get(srs.id) === 1
181
- ? JSON.stringify([`id`, srs.id])
182
- : JSON.stringify([`duplicate-id`, idx, srs.id])
166
+ if (srs?.id === undefined || srs.id === ``) return `idx:${idx}`
167
+ // include typeof so numeric/string ids (1 vs "1") don't collide on the same key
168
+ const id_key = `${typeof srs.id}:${String(srs.id)}`
169
+ return id_counts.get(srs.id) === 1 ? `id:${id_key}` : `dup:${idx}:${id_key}`
183
170
  })
184
171
  })
185
172
 
@@ -193,8 +180,9 @@
193
180
  }
194
181
  })
195
182
  let series_visibility = $derived(
196
- series.map((srs, idx) =>
197
- visibility_overrides.get(series_visibility_keys[idx]) ?? srs?.visible ?? true
183
+ series.map(
184
+ (srs, idx) =>
185
+ visibility_overrides.get(series_visibility_keys[idx]) ?? srs?.visible ?? true,
198
186
  ),
199
187
  )
200
188
 
@@ -222,24 +210,14 @@
222
210
 
223
211
  // Collect all color values for color bar
224
212
  let all_color_values = $derived(
225
- series.filter(Boolean).flatMap((srs) =>
226
- srs.color_values?.filter((val): val is number => val != null) ?? []
227
- ),
213
+ series
214
+ .filter(Boolean)
215
+ .flatMap((srs) => srs.color_values?.filter((val): val is number => val != null) ?? []),
228
216
  )
229
217
 
230
- let auto_color_range = $derived.by((): [number, number] => {
231
- if (all_color_values.length === 0) return [0, 1]
232
- let [min, max] = [Infinity, -Infinity]
233
- for (const val of all_color_values) {
234
- if (val < min) min = val
235
- if (val > max) max = val
236
- }
237
- return [min, max]
238
- })
218
+ let auto_color_range = $derived(calculate_domain(all_color_values))
239
219
 
240
- let color_scale_fn = $derived(
241
- create_color_scale(normalized_color_scale, auto_color_range),
242
- )
220
+ let color_scale_fn = $derived(create_color_scale(normalized_color_scale, auto_color_range))
243
221
 
244
222
  // Legend data
245
223
  let legend_data = $derived(
@@ -255,10 +233,9 @@
255
233
  display_style: {
256
234
  symbol_type: `Circle` as const,
257
235
  symbol_color: srs?.point_style
258
- ? (Array.isArray(srs.point_style)
259
- ? srs.point_style[0]?.fill
260
- : srs.point_style?.fill) ??
261
- series_color
236
+ ? ((Array.isArray(srs.point_style)
237
+ ? srs.point_style[0]?.fill
238
+ : srs.point_style?.fill) ?? series_color)
262
239
  : series_color,
263
240
  },
264
241
  has_explicit_label: Boolean(srs?.label),
@@ -317,7 +294,7 @@
317
294
  bind:clientWidth={width}
318
295
  bind:clientHeight={height}
319
296
  {...rest}
320
- class="scatter-3d {rest.class ?? ``}"
297
+ class={[`scatter-3d`, rest.class]}
321
298
  class:fullscreen
322
299
  >
323
300
  {#if width && height}
@@ -342,7 +319,7 @@
342
319
  {z_axis}
343
320
  {display}
344
321
  {styles}
345
- color_scale={normalized_color_scale}
322
+ {color_scale_fn}
346
323
  {size_scale}
347
324
  {camera_position}
348
325
  {camera_projection}
@@ -402,9 +379,9 @@
402
379
  <!-- Color Bar -->
403
380
  {#if color_bar && all_color_values.length > 0}
404
381
  {@const color_domain = [
405
- normalized_color_scale.value_range?.[0] ?? auto_color_range[0],
406
- normalized_color_scale.value_range?.[1] ?? auto_color_range[1],
407
- ] as Vec2}
382
+ normalized_color_scale.value_range?.[0] ?? auto_color_range[0],
383
+ normalized_color_scale.value_range?.[1] ?? auto_color_range[1],
384
+ ] as Vec2}
408
385
  <ColorBar
409
386
  tick_labels={4}
410
387
  tick_side="primary"
@@ -412,7 +389,8 @@
412
389
  color_scale_domain={color_domain}
413
390
  scale_type={normalized_color_scale.type}
414
391
  range={color_domain?.every((val) => val != null) ? color_domain : undefined}
415
- wrapper_style="position: absolute; bottom: 2em; left: 2em; {color_bar?.wrapper_style ?? ``}"
392
+ wrapper_style="position: absolute; bottom: 2em; left: 2em; {color_bar?.wrapper_style ??
393
+ ``}"
416
394
  bar_style="width: 200px; height: 16px; {color_bar?.style ?? ``}"
417
395
  {...color_bar}
418
396
  />
@@ -519,7 +497,9 @@
519
497
  div.scatter-3d :global(.pane-toggle),
520
498
  div.scatter-3d .header-controls {
521
499
  opacity: 0;
522
- transition: opacity 0.2s, background-color 0.2s;
500
+ transition:
501
+ opacity 0.2s,
502
+ background-color 0.2s;
523
503
  }
524
504
  div.scatter-3d:hover :global(.pane-toggle),
525
505
  div.scatter-3d:hover .header-controls,
@@ -1,8 +1,8 @@
1
- import type { D3ColorSchemeName, D3InterpolateName } from '../../colors';
1
+ import type { D3InterpolateName } from '../../colors';
2
2
  import type { Vec3 } from '../../math';
3
3
  import { ColorBar } from '..';
4
4
  import type { Sides } from '../core/layout';
5
- import type { AxisConfig3D, CameraProjection3D, ControlsConfig3D, DataSeries3D, DisplayConfig3D, InternalPoint3D, LegendConfig, RefLine3D, RefPlane, ScaleType, Scatter3DHandlerEvent, StyleOverrides3D, Surface3DConfig } from '../core/types';
5
+ import type { AxisConfig3D, CameraProjection3D, ColorScaleConfig, ControlsConfig3D, DataSeries3D, DisplayConfig3D, InternalPoint3D, LegendConfig, RefLine3D, RefPlane, Scatter3DHandlerEvent, SizeScaleConfig, StyleOverrides3D, Surface3DConfig } from '../core/types';
6
6
  import * as extras from '@threlte/extras';
7
7
  import type { ComponentProps, Snippet } from 'svelte';
8
8
  import type { HTMLAttributes } from 'svelte/elements';
@@ -18,19 +18,11 @@ declare function $$render<Metadata extends Record<string, unknown> = Record<stri
18
18
  z_axis?: AxisConfig3D;
19
19
  display?: DisplayConfig3D;
20
20
  styles?: StyleOverrides3D;
21
- color_scale?: {
22
- type?: ScaleType;
23
- scheme?: D3ColorSchemeName | D3InterpolateName;
24
- value_range?: [number, number];
25
- } | D3InterpolateName;
21
+ color_scale?: ColorScaleConfig | D3InterpolateName;
26
22
  color_bar?: (ComponentProps<typeof ColorBar> & {
27
23
  margin?: number | Sides;
28
24
  }) | null;
29
- size_scale?: {
30
- type?: ScaleType;
31
- radius_range?: [number, number];
32
- value_range?: [number, number];
33
- };
25
+ size_scale?: SizeScaleConfig;
34
26
  legend?: LegendConfig | null;
35
27
  camera_position?: Vec3;
36
28
  camera_projection?: CameraProjection3D;
@@ -72,7 +64,7 @@ declare function $$render<Metadata extends Record<string, unknown> = Record<stri
72
64
  controls_extra?: Snippet;
73
65
  };
74
66
  exports: {};
75
- bindings: "fullscreen" | "hovered" | "camera_position" | "wrapper" | "camera" | "tooltip_point" | "scene" | "orbit_controls";
67
+ bindings: "fullscreen" | "wrapper" | "hovered" | "camera" | "camera_position" | "orbit_controls" | "scene" | "tooltip_point";
76
68
  slots: {};
77
69
  events: {};
78
70
  };
@@ -80,7 +72,7 @@ declare class __sveltets_Render<Metadata extends Record<string, unknown> = Recor
80
72
  props(): ReturnType<typeof $$render<Metadata>>['props'];
81
73
  events(): ReturnType<typeof $$render<Metadata>>['events'];
82
74
  slots(): ReturnType<typeof $$render<Metadata>>['slots'];
83
- bindings(): "fullscreen" | "hovered" | "camera_position" | "wrapper" | "camera" | "tooltip_point" | "scene" | "orbit_controls";
75
+ bindings(): "fullscreen" | "wrapper" | "hovered" | "camera" | "camera_position" | "orbit_controls" | "scene" | "tooltip_point";
84
76
  exports(): {};
85
77
  }
86
78
  interface $$IsomorphicComponent {