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
@@ -0,0 +1,249 @@
1
+ <script lang="ts">
2
+ // Shared controls pane for the hierarchical part-of-whole charts. Exported as
3
+ // SunburstControls/TreemapControls from the chart barrels; `chart` picks the
4
+ // chart-specific controls (shape/rotation/radius vs cell paddings) and labels.
5
+ import { NumberRangeInput, SettingsSection } from '../../../layout'
6
+ import type {
7
+ SunburstLabelRotation,
8
+ SunburstLabelText,
9
+ SunburstShape,
10
+ SunburstValueMode,
11
+ } from '../..'
12
+ import { DEFAULTS, SETTINGS_CONFIG } from '../../../settings'
13
+ import type { Snippet } from 'svelte'
14
+ import type { HTMLAttributes } from 'svelte/elements'
15
+ import ControlPane from './ControlPane.svelte'
16
+
17
+ let {
18
+ chart,
19
+ show_controls = $bindable(true),
20
+ controls_open = $bindable(false),
21
+ // shared-option defaults come from the bound chart's own settings (chart is
22
+ // destructured first so later prop defaults can reference it)
23
+ value_mode = $bindable(DEFAULTS[chart].value_mode),
24
+ max_depth = $bindable(DEFAULTS[chart].max_depth),
25
+ min_fraction = $bindable(DEFAULTS[chart].min_fraction),
26
+ show_labels = $bindable(DEFAULTS[chart].show_labels),
27
+ label_text = $bindable(DEFAULTS[chart].label_text),
28
+ zoom_on_click = $bindable(DEFAULTS[chart].zoom_on_click),
29
+ show_breadcrumbs = $bindable(DEFAULTS[chart].show_breadcrumbs),
30
+ shape = $bindable(DEFAULTS.sunburst.shape),
31
+ inner_radius = $bindable(DEFAULTS.sunburst.inner_radius),
32
+ pad_angle = $bindable(DEFAULTS.sunburst.pad_angle),
33
+ label_rotation = $bindable(DEFAULTS.sunburst.label_rotation),
34
+ padding_inner = $bindable(DEFAULTS.treemap.padding_inner),
35
+ padding_top = $bindable(DEFAULTS.treemap.padding_top),
36
+ padding_outer = $bindable(DEFAULTS.treemap.padding_outer),
37
+ export_buttons = true,
38
+ on_export,
39
+ toggle_props = {},
40
+ pane_props = {},
41
+ children,
42
+ }: {
43
+ chart: `sunburst` | `treemap`
44
+ show_controls?: boolean
45
+ controls_open?: boolean
46
+ value_mode?: SunburstValueMode
47
+ max_depth?: number
48
+ min_fraction?: number
49
+ show_labels?: boolean
50
+ label_text?: SunburstLabelText
51
+ zoom_on_click?: boolean
52
+ show_breadcrumbs?: boolean
53
+ // sunburst-only (ignored for treemap)
54
+ shape?: SunburstShape
55
+ inner_radius?: number
56
+ pad_angle?: number
57
+ label_rotation?: SunburstLabelRotation
58
+ // treemap-only (ignored for sunburst)
59
+ padding_inner?: number
60
+ padding_top?: number
61
+ padding_outer?: number
62
+ export_buttons?: boolean // show SVG/PNG download buttons in the pane
63
+ on_export?: (format: `svg` | `png`) => void
64
+ toggle_props?: HTMLAttributes<HTMLButtonElement>
65
+ pane_props?: HTMLAttributes<HTMLDivElement>
66
+ children?: Snippet
67
+ } = $props()
68
+
69
+ let current_values = $derived({
70
+ value_mode,
71
+ max_depth,
72
+ min_fraction,
73
+ show_labels,
74
+ label_text,
75
+ zoom_on_click,
76
+ show_breadcrumbs,
77
+ ...(chart === `sunburst`
78
+ ? { shape, inner_radius, pad_angle, label_rotation }
79
+ : { padding_inner, padding_top, padding_outer }),
80
+ })
81
+
82
+ function reset_to_defaults() {
83
+ ;({
84
+ value_mode,
85
+ max_depth,
86
+ min_fraction,
87
+ show_labels,
88
+ label_text,
89
+ zoom_on_click,
90
+ show_breadcrumbs,
91
+ } = DEFAULTS[chart])
92
+ if (chart === `sunburst`) {
93
+ ;({ shape, inner_radius, pad_angle, label_rotation } = DEFAULTS.sunburst)
94
+ } else ({ padding_inner, padding_top, padding_outer } = DEFAULTS.treemap)
95
+ }
96
+ </script>
97
+
98
+ {#if show_controls}
99
+ <!-- snippets live at the template top level (not inside the components below) so
100
+ they're locally renderable rather than treated as ControlPane/SettingsSection props -->
101
+ {#snippet options(enum_map: Record<string, string>)}
102
+ {#each Object.entries(enum_map) as [value, label] (value)}
103
+ <option {value}>{label}</option>
104
+ {/each}
105
+ {/snippet}
106
+ <ControlPane bind:controls_open controls_class={chart} {toggle_props} {pane_props}>
107
+ {@render children?.()}
108
+ <SettingsSection
109
+ title={chart === `sunburst` ? `Sunburst` : `Treemap`}
110
+ {current_values}
111
+ on_reset={reset_to_defaults}
112
+ style="display: flex; flex-wrap: wrap; gap: 2ex"
113
+ >
114
+ <!-- select options come from the settings schema so labels/values have a
115
+ single source of truth -->
116
+ {#if chart === `sunburst`}
117
+ <label style="flex: 1">
118
+ Shape:
119
+ <select bind:value={shape}>
120
+ {@render options(SETTINGS_CONFIG.sunburst.shape.enum ?? {})}
121
+ </select>
122
+ </label>
123
+ {/if}
124
+ <label style="flex: 1">
125
+ Value mode:
126
+ <select bind:value={value_mode}>
127
+ {@render options(SETTINGS_CONFIG[chart].value_mode.enum ?? {})}
128
+ </select>
129
+ </label>
130
+ {#if chart === `sunburst` && shape === `sunburst`}
131
+ <!-- icicle labels are always horizontal; inner radius/pad angle are polar-only -->
132
+ <label style="flex: 1">
133
+ Labels:
134
+ <select bind:value={label_rotation}>
135
+ {@render options(SETTINGS_CONFIG.sunburst.label_rotation.enum ?? {})}
136
+ </select>
137
+ </label>
138
+ {/if}
139
+ <label style="flex: 1">
140
+ Label text:
141
+ <select bind:value={label_text}>
142
+ {@render options(SETTINGS_CONFIG[chart].label_text.enum ?? {})}
143
+ </select>
144
+ </label>
145
+ <NumberRangeInput min={0} max={10} step={1} bind:value={max_depth} style="flex: 1 1 100%"
146
+ >Max depth (0 = all):</NumberRangeInput
147
+ >
148
+ {#if chart === `sunburst`}
149
+ {#if shape === `sunburst`}
150
+ <NumberRangeInput
151
+ min={0}
152
+ max={0.8}
153
+ step={0.05}
154
+ bind:value={inner_radius}
155
+ style="flex: 1 1 100%">Inner radius:</NumberRangeInput
156
+ >
157
+ <NumberRangeInput
158
+ min={0}
159
+ max={4}
160
+ step={0.1}
161
+ bind:value={pad_angle}
162
+ style="flex: 1 1 100%">Pad angle (°):</NumberRangeInput
163
+ >
164
+ {/if}
165
+ {:else}
166
+ <NumberRangeInput
167
+ min={0}
168
+ max={10}
169
+ step={0.5}
170
+ bind:value={padding_inner}
171
+ style="flex: 1 1 100%">Cell gap (px):</NumberRangeInput
172
+ >
173
+ <NumberRangeInput
174
+ min={0}
175
+ max={40}
176
+ step={1}
177
+ bind:value={padding_top}
178
+ style="flex: 1 1 100%">Header height (px, 0 = none):</NumberRangeInput
179
+ >
180
+ <NumberRangeInput
181
+ min={0}
182
+ max={10}
183
+ step={0.5}
184
+ bind:value={padding_outer}
185
+ style="flex: 1 1 100%">Child inset (px):</NumberRangeInput
186
+ >
187
+ {/if}
188
+ <NumberRangeInput
189
+ min={0}
190
+ max={0.2}
191
+ step={0.005}
192
+ bind:value={min_fraction}
193
+ style="flex: 1 1 100%"
194
+ >Group {chart === `sunburst` ? `slices` : `cells`} below (fraction of total):</NumberRangeInput
195
+ >
196
+ <label style="flex: 1 1 100%">
197
+ <input type="checkbox" bind:checked={show_labels} />
198
+ Show {chart === `sunburst` ? `arc` : `cell`} labels
199
+ </label>
200
+ <label style="flex: 1 1 100%">
201
+ <input type="checkbox" bind:checked={zoom_on_click} />
202
+ Zoom on click
203
+ </label>
204
+ <label style="flex: 1 1 100%">
205
+ <input type="checkbox" bind:checked={show_breadcrumbs} />
206
+ Show breadcrumbs when zoomed
207
+ </label>
208
+ </SettingsSection>
209
+ {#if export_buttons && on_export}
210
+ <!-- --hier-btn-*: forward the chart's own theming vars (--sunburst-btn-bg /
211
+ --treemap-btn-bg); when unset, the outer var() falls back to the gray default -->
212
+ <div
213
+ class="export-row"
214
+ style="--hier-btn-bg: var(--{chart}-btn-bg); --hier-btn-hover-bg: var(--{chart}-btn-hover-bg)"
215
+ >
216
+ Export:
217
+ {#each [`svg`, `png`] as const as fmt (fmt)}
218
+ <button
219
+ type="button"
220
+ class="export-btn"
221
+ aria-label="Download {fmt.toUpperCase()}"
222
+ onclick={() => on_export?.(fmt)}>{fmt.toUpperCase()}</button
223
+ >
224
+ {/each}
225
+ </div>
226
+ {/if}
227
+ </ControlPane>
228
+ {/if}
229
+
230
+ <style>
231
+ .export-row {
232
+ display: flex;
233
+ align-items: center;
234
+ gap: 6px;
235
+ margin-top: 6px;
236
+ font-size: 0.85em;
237
+ }
238
+ .export-btn {
239
+ background: var(--hier-btn-bg, rgba(128, 128, 128, 0.15));
240
+ color: inherit;
241
+ border: none;
242
+ border-radius: 3pt;
243
+ padding: 1px 6px;
244
+ cursor: pointer;
245
+ }
246
+ .export-btn:hover {
247
+ background: var(--hier-btn-hover-bg, rgba(128, 128, 128, 0.35));
248
+ }
249
+ </style>
@@ -1,26 +1,30 @@
1
- import type { SunburstLabelRotation, SunburstLabelText, SunburstShape, SunburstValueMode } from '..';
1
+ import type { SunburstLabelRotation, SunburstLabelText, SunburstShape, SunburstValueMode } from '../..';
2
2
  import type { Snippet } from 'svelte';
3
3
  import type { HTMLAttributes } from 'svelte/elements';
4
4
  type $$ComponentProps = {
5
+ chart: `sunburst` | `treemap`;
5
6
  show_controls?: boolean;
6
7
  controls_open?: boolean;
7
- shape?: SunburstShape;
8
8
  value_mode?: SunburstValueMode;
9
9
  max_depth?: number;
10
- inner_radius?: number;
11
- pad_angle?: number;
12
10
  min_fraction?: number;
13
11
  show_labels?: boolean;
14
- label_rotation?: SunburstLabelRotation;
15
12
  label_text?: SunburstLabelText;
16
13
  zoom_on_click?: boolean;
17
14
  show_breadcrumbs?: boolean;
15
+ shape?: SunburstShape;
16
+ inner_radius?: number;
17
+ pad_angle?: number;
18
+ label_rotation?: SunburstLabelRotation;
19
+ padding_inner?: number;
20
+ padding_top?: number;
21
+ padding_outer?: number;
18
22
  export_buttons?: boolean;
19
23
  on_export?: (format: `svg` | `png`) => void;
20
24
  toggle_props?: HTMLAttributes<HTMLButtonElement>;
21
25
  pane_props?: HTMLAttributes<HTMLDivElement>;
22
26
  children?: Snippet;
23
27
  };
24
- declare const SunburstControls: import("svelte").Component<$$ComponentProps, {}, "show_controls" | "controls_open" | "value_mode" | "min_fraction" | "show_labels" | "shape" | "max_depth" | "inner_radius" | "pad_angle" | "label_rotation" | "label_text" | "zoom_on_click" | "show_breadcrumbs">;
25
- type SunburstControls = ReturnType<typeof SunburstControls>;
26
- export default SunburstControls;
28
+ declare const HierarchyControls: import("svelte").Component<$$ComponentProps, {}, "show_controls" | "show_labels" | "controls_open" | "shape" | "inner_radius" | "pad_angle" | "label_rotation" | "padding_inner" | "padding_top" | "padding_outer" | "value_mode" | "max_depth" | "min_fraction" | "label_text" | "zoom_on_click" | "show_breadcrumbs">;
29
+ type HierarchyControls = ReturnType<typeof HierarchyControls>;
30
+ export default HierarchyControls;
@@ -43,7 +43,7 @@
43
43
  onkeydown={stop_key}
44
44
  role="group"
45
45
  {...rest}
46
- class="interactive-axis-label {axis_type} {rest.class ?? ``}"
46
+ class={[`interactive-axis-label`, axis_type, rest.class]}
47
47
  >
48
48
  {#if is_interactive && options}
49
49
  <PortalSelect
@@ -9,6 +9,6 @@ type $$ComponentProps = {
9
9
  on_select?: (key: string) => void;
10
10
  [key: string]: unknown;
11
11
  };
12
- declare const InteractiveAxisLabel: import("svelte").Component<$$ComponentProps, {}, "color" | "loading" | "selected_key">;
12
+ declare const InteractiveAxisLabel: import("svelte").Component<$$ComponentProps, {}, "color" | "selected_key" | "loading">;
13
13
  type InteractiveAxisLabel = ReturnType<typeof InteractiveAxisLabel>;
14
14
  export default InteractiveAxisLabel;
@@ -1,8 +1,11 @@
1
1
  <script lang="ts">
2
+ import type { Vec2 } from '../../../math'
3
+ import { line_curve_factory } from '../fill-utils'
4
+ import type { LineCurve } from '../types'
2
5
  import { DEFAULTS } from '../../../settings'
3
6
  import { extent, min } from 'd3-array'
4
7
  import { interpolatePath } from 'd3-interpolate-path'
5
- import { curveMonotoneX, line } from 'd3-shape'
8
+ import { line } from 'd3-shape'
6
9
  import { untrack } from 'svelte'
7
10
  import { linear } from 'svelte/easing'
8
11
  import type { SVGAttributes } from 'svelte/elements'
@@ -17,22 +20,28 @@
17
20
  area_stroke = null,
18
21
  line_tween = {},
19
22
  line_dash = DEFAULTS.scatter.line.dash,
23
+ curve = `monotone`,
20
24
  ...rest
21
25
  }: Omit<SVGAttributes<SVGPathElement>, `origin` | `points`> & {
22
- points: readonly [number, number][]
23
- origin: [number, number]
26
+ points: readonly Vec2[]
27
+ origin: Vec2
24
28
  line_color?: string
25
29
  line_width?: number
26
30
  area_color?: string
27
31
  area_stroke?: string | null
28
32
  line_tween?: TweenOptions<string>
29
33
  line_dash?: string
34
+ curve?: LineCurve
30
35
  } = $props()
31
36
 
32
- const lineGenerator = line()
33
- .x((point) => point[0])
34
- .y((point) => point[1])
35
- .curve(curveMonotoneX)
37
+ // falls back to monotone for unknown strings from untyped (Python/JSON) callers
38
+ let curve_fn = $derived(line_curve_factory(curve))
39
+ let lineGenerator = $derived(
40
+ line()
41
+ .x((point) => point[0])
42
+ .y((point) => point[1])
43
+ .curve(curve_fn),
44
+ )
36
45
 
37
46
  // Only compute/render/tween the area fill when it is actually visible. Most line
38
47
  // plots (e.g. every ScatterPlot line) pass a transparent area, so skipping it
@@ -47,7 +56,10 @@
47
56
  let ymin = $derived(origin[1] ?? min(points.map((point) => point[1])))
48
57
  // Guard against NaN/Infinity in area_path coords (can happen during scale transitions)
49
58
  let area_path = $derived(
50
- show_area && line_path && isFinite(x_min ?? NaN) && isFinite(x_max ?? NaN) &&
59
+ show_area &&
60
+ line_path &&
61
+ isFinite(x_min ?? NaN) &&
62
+ isFinite(x_max ?? NaN) &&
51
63
  isFinite(ymin ?? NaN)
52
64
  ? `${line_path}L${x_max},${ymin}L${x_min},${ymin}Z`
53
65
  : ``,
@@ -79,9 +91,7 @@
79
91
  })
80
92
 
81
93
  let line_d = $derived(tween_disabled ? line_path : tweened_line.current)
82
- let area_d = $derived(
83
- show_area ? (tween_disabled ? area_path : tweened_area.current) : ``,
84
- )
94
+ let area_d = $derived(show_area ? (tween_disabled ? area_path : tweened_area.current) : ``)
85
95
  </script>
86
96
 
87
97
  <path
@@ -1,14 +1,17 @@
1
+ import type { Vec2 } from '../../../math';
2
+ import type { LineCurve } from '../types';
1
3
  import type { SVGAttributes } from 'svelte/elements';
2
4
  import { type TweenOptions } from 'svelte/motion';
3
5
  type $$ComponentProps = Omit<SVGAttributes<SVGPathElement>, `origin` | `points`> & {
4
- points: readonly [number, number][];
5
- origin: [number, number];
6
+ points: readonly Vec2[];
7
+ origin: Vec2;
6
8
  line_color?: string;
7
9
  line_width?: number;
8
10
  area_color?: string;
9
11
  area_stroke?: string | null;
10
12
  line_tween?: TweenOptions<string>;
11
13
  line_dash?: string;
14
+ curve?: LineCurve;
12
15
  };
13
16
  declare const Line: import("svelte").Component<$$ComponentProps, {}, "">;
14
17
  type Line = ReturnType<typeof Line>;
@@ -1,5 +1,7 @@
1
1
  <script lang="ts">
2
- import { format_value } from '../../../labels'
2
+ import { format_value_or_num } from '../../../labels'
3
+ import type { Vec2 } from '../../../math'
4
+ import { AXIS_LABEL_CONTAINER } from '../axis-utils'
3
5
  import AxisLabel from './AxisLabel.svelte'
4
6
  import type { Sides } from '../layout'
5
7
  import type { AxisConfig } from '../types'
@@ -40,7 +42,7 @@
40
42
  show_baseline?: boolean // axis spine line (ScatterPlot omits it)
41
43
  tick_label?: (tick: number) => string | null | undefined // custom/categorical label
42
44
  tick_color?: (tick: number) => string | undefined // per-tick label color (else axis.color)
43
- domain?: [number, number] // when set, cull off-plot ticks and hide out-of-domain labels
45
+ domain?: Vec2 // when set, cull off-plot ticks and hide out-of-domain labels
44
46
  unit_on_first_tick?: boolean // append axis.unit after the first tick label (ScatterPlot)
45
47
  label_x?: number
46
48
  label_y?: number
@@ -66,23 +68,39 @@
66
68
 
67
69
  // Tick-invariant label geometry (depends only on side/inside/rotation/shift)
68
70
  const text_x = $derived(
69
- is_x ? shift_x : (side === `y` ? (inside ? 8 : -8) : (inside ? -8 : 8)) + shift_x,
71
+ is_x ? shift_x : (side === `y` ? (inside ? 8 : -8) : inside ? -8 : 8) + shift_x,
70
72
  )
71
73
  const text_y = $derived(
72
- is_x ? (side === `x` ? (inside ? -8 : 8) : (inside ? 8 : -8)) + shift_y : shift_y,
74
+ is_x ? (side === `x` ? (inside ? -8 : 8) : inside ? 8 : -8) + shift_y : shift_y,
73
75
  )
74
76
  const text_anchor = $derived(
75
77
  is_x
76
- ? (rotation === 0
78
+ ? rotation === 0
77
79
  ? `middle`
78
80
  : side === `x`
79
- ? (inside ? `end` : `start`)
80
- : (inside ? `start` : `end`)) // x2 rotates opposite to x
81
- : (side === `y` ? (inside ? `start` : `end`) : (inside ? `end` : `start`)),
81
+ ? inside
82
+ ? `end`
83
+ : `start`
84
+ : inside
85
+ ? `start`
86
+ : `end` // x2 rotates opposite to x
87
+ : side === `y`
88
+ ? inside
89
+ ? `start`
90
+ : `end`
91
+ : inside
92
+ ? `end`
93
+ : `start`,
82
94
  )
83
95
  const text_baseline = $derived(
84
96
  is_x
85
- ? (side === `x` ? (inside ? `auto` : `hanging`) : (inside ? `hanging` : `auto`))
97
+ ? side === `x`
98
+ ? inside
99
+ ? `auto`
100
+ : `hanging`
101
+ : inside
102
+ ? `hanging`
103
+ : `auto`
86
104
  : `central`,
87
105
  )
88
106
  const text_transform = $derived(
@@ -93,17 +111,21 @@
93
111
  // Keep tick marks' y1="0"/x1="0" explicit: BarPlot's grid test selects `.tick line:not([y1='0'])`.
94
112
  const grid_line = $derived(
95
113
  is_x
96
- ? (side === `x` ? { y1: -plot_h, y2: 0 } : { y1: 0, y2: plot_h })
97
- : (side === `y` ? { x1: 0, x2: plot_w } : { x1: -plot_w, x2: 0 }),
114
+ ? side === `x`
115
+ ? { y1: -plot_h, y2: 0 }
116
+ : { y1: 0, y2: plot_h }
117
+ : side === `y`
118
+ ? { x1: 0, x2: plot_w }
119
+ : { x1: -plot_w, x2: 0 },
98
120
  )
99
121
  const tick_mark = $derived(
100
122
  is_x
101
- ? (side === `x`
123
+ ? side === `x`
102
124
  ? { y1: 0, y2: inside ? -5 : 5 }
103
- : { y1: inside ? 0 : -5, y2: inside ? 5 : 0 })
104
- : (side === `y`
125
+ : { y1: inside ? 0 : -5, y2: inside ? 5 : 0 }
126
+ : side === `y`
105
127
  ? { x1: inside ? 0 : -5, x2: inside ? 5 : 0 }
106
- : { x1: inside ? -5 : 0, x2: inside ? 0 : 5 }),
128
+ : { x1: inside ? -5 : 0, x2: inside ? 0 : 5 },
107
129
  )
108
130
 
109
131
  // ScatterPlot mode: cull ticks whose pixel pos is off-plot and hide labels outside the data domain
@@ -113,7 +135,7 @@
113
135
  !domain ||
114
136
  (is_x ? pos >= pad.l && pos <= width - pad.r : pos >= pad.t && pos <= height - pad.b)
115
137
  const tick_text = (tick: number): string =>
116
- tick_label?.(tick) ?? format_value(tick, axis.format ?? ``)
138
+ tick_label?.(tick) ?? format_value_or_num(tick, axis.format)
117
139
  </script>
118
140
 
119
141
  <g class="{side}-axis">
@@ -141,8 +163,9 @@
141
163
  fill={tick_color?.(tick) ?? text_fill}
142
164
  transform={text_transform}
143
165
  >
144
- {tick_text(tick)}{#if unit_on_first_tick && idx === 0 && axis.unit}&zwnj;&ensp;{axis
145
- .unit}{/if}
166
+ {tick_text(
167
+ tick,
168
+ )}{#if unit_on_first_tick && idx === 0 && axis.unit}&zwnj;&ensp;{axis.unit}{/if}
146
169
  </text>
147
170
  {/if}
148
171
  </g>
@@ -160,6 +183,7 @@
160
183
  axis_type={side}
161
184
  color={axis.color}
162
185
  on_select={(key) => on_axis_change?.(key)}
186
+ width={is_x ? Math.max(plot_w, AXIS_LABEL_CONTAINER.width) : undefined}
163
187
  />
164
188
  {/if}
165
189
  </g>
@@ -1,3 +1,4 @@
1
+ import type { Vec2 } from '../../../math';
1
2
  import type { Sides } from '../layout';
2
3
  import type { AxisConfig } from '../types';
3
4
  type Side = `x` | `x2` | `y` | `y2`;
@@ -13,7 +14,7 @@ type $$ComponentProps = {
13
14
  show_baseline?: boolean;
14
15
  tick_label?: (tick: number) => string | null | undefined;
15
16
  tick_color?: (tick: number) => string | undefined;
16
- domain?: [number, number];
17
+ domain?: Vec2;
17
18
  unit_on_first_tick?: boolean;
18
19
  label_x?: number;
19
20
  label_y?: number;