matterviz 0.4.1 → 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 (395) 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 +75 -85
  7. package/dist/brillouin/BrillouinZone.svelte.d.ts +5 -7
  8. package/dist/brillouin/BrillouinZoneControls.svelte +3 -6
  9. package/dist/brillouin/BrillouinZoneExportPane.svelte +18 -14
  10. package/dist/brillouin/BrillouinZoneInfoPane.svelte +6 -10
  11. package/dist/brillouin/BrillouinZoneScene.svelte +26 -39
  12. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
  13. package/dist/chempot-diagram/ChemPotDiagram.svelte +33 -38
  14. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +62 -74
  15. package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +1 -1
  16. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +511 -547
  17. package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +1 -1
  18. package/dist/chempot-diagram/async-compute.svelte.js +1 -1
  19. package/dist/chempot-diagram/controls-state.svelte.js +1 -1
  20. package/dist/colors/index.d.ts +0 -4
  21. package/dist/colors/index.js +19 -20
  22. package/dist/composition/BarChart.svelte +37 -31
  23. package/dist/composition/BubbleChart.svelte +17 -17
  24. package/dist/composition/Composition.svelte +7 -11
  25. package/dist/composition/Formula.svelte +18 -25
  26. package/dist/composition/FormulaFilter.svelte +92 -95
  27. package/dist/composition/PieChart.svelte +55 -41
  28. package/dist/composition/format.js +1 -1
  29. package/dist/composition/index.d.ts +2 -0
  30. package/dist/composition/index.js +14 -0
  31. package/dist/composition/parse.d.ts +2 -2
  32. package/dist/composition/parse.js +11 -10
  33. package/dist/constants.js +11 -9
  34. package/dist/convex-hull/ConvexHull.svelte +12 -15
  35. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -1
  36. package/dist/convex-hull/ConvexHull2D.svelte +93 -92
  37. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  38. package/dist/convex-hull/ConvexHull3D.svelte +109 -140
  39. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  40. package/dist/convex-hull/ConvexHull4D.svelte +75 -94
  41. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  42. package/dist/convex-hull/ConvexHullChrome.svelte +36 -40
  43. package/dist/convex-hull/ConvexHullControls.svelte +46 -48
  44. package/dist/convex-hull/ConvexHullStats.svelte +193 -195
  45. package/dist/convex-hull/ConvexHullTooltip.svelte +5 -12
  46. package/dist/convex-hull/GasPressureControls.svelte +5 -12
  47. package/dist/convex-hull/StructurePopup.svelte +17 -21
  48. package/dist/convex-hull/StructurePopup.svelte.d.ts +2 -0
  49. package/dist/convex-hull/TemperatureSlider.svelte +4 -10
  50. package/dist/convex-hull/canvas-interactions.svelte.js +2 -1
  51. package/dist/convex-hull/helpers.d.ts +8 -10
  52. package/dist/convex-hull/helpers.js +36 -36
  53. package/dist/convex-hull/hull-state.svelte.d.ts +1 -1
  54. package/dist/convex-hull/thermodynamics.js +18 -17
  55. package/dist/coordination/CoordinationBarPlot.svelte +38 -33
  56. package/dist/coordination/CoordinationBarPlot.svelte.d.ts +1 -1
  57. package/dist/coordination/calc-coordination.d.ts +1 -1
  58. package/dist/coordination/calc-coordination.js +28 -25
  59. package/dist/element/BohrAtom.svelte +5 -8
  60. package/dist/element/ElementHeading.svelte +4 -1
  61. package/dist/element/ElementPhoto.svelte +11 -9
  62. package/dist/element/ElementStats.svelte +12 -10
  63. package/dist/element/ElementTile.svelte +24 -29
  64. package/dist/element/Nucleus.svelte +4 -2
  65. package/dist/element/data.d.ts +1 -2
  66. package/dist/element/helpers.d.ts +4 -0
  67. package/dist/element/helpers.js +18 -0
  68. package/dist/element/index.d.ts +1 -4
  69. package/dist/element/index.js +3 -18
  70. package/dist/feedback/DragOverlay.svelte +5 -5
  71. package/dist/feedback/DragOverlay.svelte.d.ts +2 -2
  72. package/dist/feedback/StatusMessage.svelte +7 -4
  73. package/dist/fermi-surface/FermiSlice.svelte +21 -18
  74. package/dist/fermi-surface/FermiSurface.svelte +14 -22
  75. package/dist/fermi-surface/FermiSurface.svelte.d.ts +5 -7
  76. package/dist/fermi-surface/FermiSurfaceControls.svelte +6 -20
  77. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
  78. package/dist/fermi-surface/FermiSurfaceScene.svelte +37 -64
  79. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
  80. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +9 -6
  81. package/dist/fermi-surface/compute.js +3 -3
  82. package/dist/fermi-surface/parse.js +22 -24
  83. package/dist/heatmap-matrix/HeatmapMatrix.svelte +109 -148
  84. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +2 -2
  85. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +9 -7
  86. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +1 -1
  87. package/dist/heatmap-matrix/index.d.ts +5 -0
  88. package/dist/icons.d.ts +4 -0
  89. package/dist/icons.js +4 -0
  90. package/dist/io/ExportPane.svelte +10 -6
  91. package/dist/io/decompress.d.ts +2 -1
  92. package/dist/io/decompress.js +22 -35
  93. package/dist/io/export.d.ts +4 -0
  94. package/dist/io/export.js +5 -1
  95. package/dist/io/fetch.d.ts +0 -3
  96. package/dist/io/fetch.js +0 -11
  97. package/dist/io/index.d.ts +0 -1
  98. package/dist/io/index.js +2 -9
  99. package/dist/io/is-binary.d.ts +9 -0
  100. package/dist/io/is-binary.js +45 -1
  101. package/dist/io/url-drop.js +13 -25
  102. package/dist/isosurface/Isosurface.svelte +17 -23
  103. package/dist/isosurface/IsosurfaceControls.svelte +37 -42
  104. package/dist/isosurface/parse-vaspwave.d.ts +3 -0
  105. package/dist/isosurface/parse-vaspwave.js +138 -0
  106. package/dist/isosurface/parse.js +6 -6
  107. package/dist/labels.d.ts +6 -2
  108. package/dist/labels.js +43 -13
  109. package/dist/layout/FullscreenButton.svelte +2 -1
  110. package/dist/layout/FullscreenToggle.svelte +10 -4
  111. package/dist/layout/InfoCard.svelte +7 -18
  112. package/dist/layout/InfoTag.svelte +1 -3
  113. package/dist/layout/NumberRangeInput.svelte +46 -0
  114. package/dist/layout/NumberRangeInput.svelte.d.ts +12 -0
  115. package/dist/layout/PropertyFilter.svelte +2 -6
  116. package/dist/layout/SettingsSection.svelte +21 -17
  117. package/dist/layout/SubpageGrid.svelte +3 -1
  118. package/dist/layout/ViewerChrome.svelte +9 -10
  119. package/dist/layout/ViewerChrome.svelte.d.ts +2 -1
  120. package/dist/layout/fullscreen.js +3 -5
  121. package/dist/layout/fullscreen.svelte.js +1 -2
  122. package/dist/layout/index.d.ts +1 -0
  123. package/dist/layout/index.js +1 -0
  124. package/dist/layout/json-tree/JsonNode.svelte +8 -11
  125. package/dist/layout/json-tree/JsonTree.svelte +53 -77
  126. package/dist/layout/json-tree/JsonValue.svelte +7 -15
  127. package/dist/layout/json-tree/utils.js +14 -23
  128. package/dist/math.d.ts +2 -0
  129. package/dist/math.js +19 -0
  130. package/dist/overlays/ContextMenu.svelte +4 -2
  131. package/dist/overlays/CopyButton.svelte +11 -5
  132. package/dist/overlays/DragControlTab.svelte +6 -1
  133. package/dist/overlays/DraggablePane.svelte +81 -26
  134. package/dist/overlays/DraggablePane.svelte.d.ts +1 -0
  135. package/dist/overlays/GlassChip.svelte +30 -0
  136. package/dist/overlays/GlassChip.svelte.d.ts +8 -0
  137. package/dist/overlays/InfoPaneCards.svelte +11 -23
  138. package/dist/overlays/index.d.ts +7 -0
  139. package/dist/overlays/index.js +26 -0
  140. package/dist/overlays/portal.d.ts +2 -0
  141. package/dist/overlays/portal.js +14 -0
  142. package/dist/periodic-table/PeriodicTable.svelte +113 -145
  143. package/dist/periodic-table/PeriodicTable.svelte.d.ts +5 -3
  144. package/dist/periodic-table/PeriodicTableControls.svelte +11 -63
  145. package/dist/periodic-table/TableInset.svelte +9 -4
  146. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +50 -71
  147. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -8
  148. package/dist/phase-diagram/PhaseDiagramControls.svelte +70 -94
  149. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +1 -1
  150. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +2 -1
  151. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +12 -12
  152. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +54 -58
  153. package/dist/phase-diagram/TdbInfoPanel.svelte +21 -15
  154. package/dist/phase-diagram/build-diagram.js +3 -3
  155. package/dist/phase-diagram/diagram-input.d.ts +1 -2
  156. package/dist/phase-diagram/parse.js +15 -15
  157. package/dist/phase-diagram/svg-to-diagram.js +21 -15
  158. package/dist/phase-diagram/utils.js +2 -3
  159. package/dist/plot/bar/BarPlot.svelte +430 -391
  160. package/dist/plot/bar/BarPlot.svelte.d.ts +2 -0
  161. package/dist/plot/bar/BarPlotControls.svelte +1 -3
  162. package/dist/plot/bar/BarPlotControls.svelte.d.ts +4 -6
  163. package/dist/plot/bar/SpacegroupBarPlot.svelte +29 -36
  164. package/dist/plot/bar/data.d.ts +5 -4
  165. package/dist/plot/bar/data.js +2 -1
  166. package/dist/plot/box/BoxPlot.svelte +301 -209
  167. package/dist/plot/box/BoxPlot.svelte.d.ts +2 -0
  168. package/dist/plot/box/Violin.svelte.d.ts +1 -0
  169. package/dist/plot/box/box-plot.js +1 -1
  170. package/dist/plot/core/auto-place.js +1 -1
  171. package/dist/plot/core/axis-utils.d.ts +12 -7
  172. package/dist/plot/core/axis-utils.js +48 -48
  173. package/dist/plot/core/components/AxisLabel.svelte +82 -20
  174. package/dist/plot/core/components/AxisLabel.svelte.d.ts +1 -0
  175. package/dist/plot/core/components/ColorBar.svelte +101 -106
  176. package/dist/plot/core/components/ColorScaleSelect.svelte +1 -1
  177. package/dist/plot/core/components/FillArea.svelte +10 -17
  178. package/dist/plot/core/components/HierarchyControls.svelte +249 -0
  179. package/dist/plot/{sunburst/SunburstControls.svelte.d.ts → core/components/HierarchyControls.svelte.d.ts} +12 -8
  180. package/dist/plot/core/components/InteractiveAxisLabel.svelte +1 -1
  181. package/dist/plot/core/components/InteractiveAxisLabel.svelte.d.ts +1 -1
  182. package/dist/plot/core/components/Line.svelte +18 -9
  183. package/dist/plot/core/components/Line.svelte.d.ts +2 -0
  184. package/dist/plot/core/components/PlotAxis.svelte +40 -17
  185. package/dist/plot/core/components/PlotControls.svelte +65 -41
  186. package/dist/plot/core/components/PlotLegend.svelte +31 -35
  187. package/dist/plot/core/components/PlotMarginals.svelte +616 -0
  188. package/dist/plot/core/components/PlotMarginals.svelte.d.ts +15 -0
  189. package/dist/plot/core/components/PlotTooltip.svelte +1 -1
  190. package/dist/plot/core/components/PortalSelect.svelte +4 -8
  191. package/dist/plot/core/components/ReferenceLine.svelte +27 -24
  192. package/dist/plot/core/components/ReferenceLine3D.svelte +54 -57
  193. package/dist/plot/core/components/ReferencePlane.svelte +7 -8
  194. package/dist/plot/core/components/ZeroLines.svelte +4 -8
  195. package/dist/plot/core/components/ZoomRect.svelte +1 -2
  196. package/dist/plot/core/components/index.d.ts +1 -0
  197. package/dist/plot/core/components/index.js +1 -0
  198. package/dist/plot/core/data-cleaning-signal.d.ts +46 -0
  199. package/dist/plot/core/data-cleaning-signal.js +467 -0
  200. package/dist/plot/core/data-cleaning.d.ts +2 -42
  201. package/dist/plot/core/data-cleaning.js +27 -474
  202. package/dist/plot/core/data-transform.js +9 -5
  203. package/dist/plot/core/fill-utils.d.ts +3 -1
  204. package/dist/plot/core/fill-utils.js +28 -6
  205. package/dist/plot/core/index.d.ts +1 -0
  206. package/dist/plot/core/index.js +1 -0
  207. package/dist/plot/core/interactions.js +0 -2
  208. package/dist/plot/core/layout.d.ts +3 -1
  209. package/dist/plot/core/layout.js +22 -13
  210. package/dist/plot/core/marginals.d.ts +170 -0
  211. package/dist/plot/core/marginals.js +436 -0
  212. package/dist/plot/core/reference-line.js +1 -1
  213. package/dist/plot/core/scales.d.ts +23 -0
  214. package/dist/plot/core/scales.js +39 -13
  215. package/dist/plot/core/types/fills.d.ts +101 -0
  216. package/dist/plot/core/types/fills.js +15 -0
  217. package/dist/plot/core/types/plot-3d.d.ts +87 -0
  218. package/dist/plot/core/types/plot-3d.js +4 -0
  219. package/dist/plot/core/types/reference-lines.d.ts +140 -0
  220. package/dist/plot/core/types/reference-lines.js +9 -0
  221. package/dist/plot/core/types.d.ts +29 -324
  222. package/dist/plot/core/types.js +23 -20
  223. package/dist/plot/core/utils/hierarchy-chart.d.ts +51 -0
  224. package/dist/plot/core/utils/hierarchy-chart.js +179 -0
  225. package/dist/plot/core/utils/hierarchy-labels.d.ts +20 -0
  226. package/dist/plot/core/utils/hierarchy-labels.js +99 -0
  227. package/dist/plot/core/utils/label-placement.js +2 -2
  228. package/dist/plot/histogram/Histogram.svelte +304 -325
  229. package/dist/plot/histogram/Histogram.svelte.d.ts +7 -7
  230. package/dist/plot/histogram/HistogramControls.svelte +30 -28
  231. package/dist/plot/histogram/histogram.d.ts +31 -0
  232. package/dist/plot/histogram/histogram.js +70 -0
  233. package/dist/plot/histogram/index.d.ts +1 -0
  234. package/dist/plot/histogram/index.js +1 -0
  235. package/dist/plot/index.d.ts +1 -0
  236. package/dist/plot/index.js +1 -0
  237. package/dist/plot/sankey/Sankey.svelte +78 -69
  238. package/dist/plot/sankey/Sankey.svelte.d.ts +2 -2
  239. package/dist/plot/sankey/SankeyControls.svelte +22 -16
  240. package/dist/plot/scatter/BinnedScatterPlot.svelte +263 -109
  241. package/dist/plot/scatter/BinnedScatterPlot.svelte.d.ts +7 -0
  242. package/dist/plot/scatter/ElementScatter.svelte +4 -1
  243. package/dist/plot/scatter/ScatterPlot.svelte +477 -385
  244. package/dist/plot/scatter/ScatterPlot.svelte.d.ts +2 -0
  245. package/dist/plot/scatter/ScatterPlotControls.svelte +18 -19
  246. package/dist/plot/scatter/ScatterPlotControls.svelte.d.ts +1 -1
  247. package/dist/plot/scatter/ScatterPoint.svelte +16 -9
  248. package/dist/plot/scatter/binned-scatter-types.d.ts +3 -2
  249. package/dist/plot/scatter/binned-scatter-types.js +6 -1
  250. package/dist/plot/scatter/scatter-data.d.ts +1 -1
  251. package/dist/plot/scatter/scatter-data.js +8 -7
  252. package/dist/plot/scatter-3d/ScatterPlot3D.svelte +25 -34
  253. package/dist/plot/scatter-3d/ScatterPlot3D.svelte.d.ts +2 -2
  254. package/dist/plot/scatter-3d/ScatterPlot3DControls.svelte +8 -5
  255. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte +113 -116
  256. package/dist/plot/scatter-3d/ScatterPlot3DScene.svelte.d.ts +2 -2
  257. package/dist/plot/scatter-3d/Surface3D.svelte +4 -13
  258. package/dist/plot/sunburst/Sunburst.svelte +251 -329
  259. package/dist/plot/sunburst/Sunburst.svelte.d.ts +2 -2
  260. package/dist/plot/sunburst/index.d.ts +1 -1
  261. package/dist/plot/sunburst/index.js +2 -1
  262. package/dist/plot/sunburst/render.d.ts +2 -2
  263. package/dist/plot/sunburst/render.js +47 -22
  264. package/dist/plot/sunburst/sunburst.d.ts +5 -1
  265. package/dist/plot/sunburst/sunburst.js +10 -3
  266. package/dist/plot/treemap/Treemap.svelte +907 -0
  267. package/dist/plot/treemap/Treemap.svelte.d.ts +84 -0
  268. package/dist/plot/treemap/index.d.ts +3 -0
  269. package/dist/plot/treemap/index.js +4 -0
  270. package/dist/plot/treemap/treemap.d.ts +26 -0
  271. package/dist/plot/treemap/treemap.js +99 -0
  272. package/dist/rdf/RdfPlot.svelte +22 -26
  273. package/dist/rdf/RdfPlot.svelte.d.ts +1 -1
  274. package/dist/rdf/calc-rdf.js +4 -8
  275. package/dist/sanitize.js +1 -1
  276. package/dist/scene/bind-renderer.svelte.js +14 -6
  277. package/dist/settings.d.ts +19 -9
  278. package/dist/settings.js +77 -50
  279. package/dist/spectral/Bands.svelte +223 -230
  280. package/dist/spectral/BandsAndDos.svelte +11 -9
  281. package/dist/spectral/BrillouinBandsDos.svelte +19 -27
  282. package/dist/spectral/Dos.svelte +70 -73
  283. package/dist/spectral/helpers.d.ts +3 -3
  284. package/dist/spectral/helpers.js +25 -35
  285. package/dist/state.svelte.js +5 -18
  286. package/dist/structure/Arrow.svelte +5 -18
  287. package/dist/structure/ArrowInstances.svelte +160 -0
  288. package/dist/structure/ArrowInstances.svelte.d.ts +16 -0
  289. package/dist/structure/AtomLegend.svelte +115 -75
  290. package/dist/structure/AtomLegend.svelte.d.ts +1 -1
  291. package/dist/structure/Bond.svelte +31 -23
  292. package/dist/structure/CanvasTooltip.svelte +15 -3
  293. package/dist/structure/CellSelect.svelte +11 -26
  294. package/dist/structure/Cylinder.svelte +24 -40
  295. package/dist/structure/InstancedAtoms.svelte +114 -0
  296. package/dist/structure/InstancedAtoms.svelte.d.ts +15 -0
  297. package/dist/structure/Lattice.svelte +85 -149
  298. package/dist/structure/SiteLabels.svelte +122 -0
  299. package/dist/structure/SiteLabels.svelte.d.ts +18 -0
  300. package/dist/structure/Structure.svelte +473 -419
  301. package/dist/structure/Structure.svelte.d.ts +4 -2
  302. package/dist/structure/StructureCarousel.svelte +630 -0
  303. package/dist/structure/StructureCarousel.svelte.d.ts +19 -0
  304. package/dist/structure/StructureControls.svelte +157 -399
  305. package/dist/structure/StructureControls.svelte.d.ts +1 -1
  306. package/dist/structure/StructureExportPane.svelte +17 -21
  307. package/dist/structure/StructureInfoPane.svelte +72 -66
  308. package/dist/structure/StructureInfoPane.svelte.d.ts +1 -1
  309. package/dist/structure/StructureScene.svelte +467 -476
  310. package/dist/structure/StructureScene.svelte.d.ts +3 -1
  311. package/dist/structure/StructureViewport.svelte +386 -0
  312. package/dist/structure/StructureViewport.svelte.d.ts +63 -0
  313. package/dist/structure/atom-label-placement.d.ts +16 -12
  314. package/dist/structure/atom-label-placement.js +70 -37
  315. package/dist/structure/atom-properties.d.ts +2 -0
  316. package/dist/structure/atom-properties.js +104 -38
  317. package/dist/structure/bonding.d.ts +10 -3
  318. package/dist/structure/bonding.js +84 -28
  319. package/dist/structure/edit-history.d.ts +6 -0
  320. package/dist/structure/edit-history.js +27 -0
  321. package/dist/structure/export.d.ts +1 -0
  322. package/dist/structure/export.js +39 -31
  323. package/dist/structure/format-detect.d.ts +1 -0
  324. package/dist/structure/format-detect.js +22 -0
  325. package/dist/structure/geometry.d.ts +9 -0
  326. package/dist/structure/geometry.js +27 -0
  327. package/dist/structure/index.d.ts +16 -1
  328. package/dist/structure/index.js +13 -2
  329. package/dist/structure/measure.d.ts +1 -1
  330. package/dist/structure/measure.js +6 -12
  331. package/dist/structure/parse.d.ts +2 -1
  332. package/dist/structure/parse.js +243 -222
  333. package/dist/structure/partial-occupancy.js +4 -2
  334. package/dist/structure/pbc.js +78 -98
  335. package/dist/structure/polyhedra.d.ts +0 -1
  336. package/dist/structure/polyhedra.js +3 -18
  337. package/dist/structure/supercell.d.ts +1 -2
  338. package/dist/structure/supercell.js +7 -13
  339. package/dist/symmetry/SymmetryElements.svelte +11 -15
  340. package/dist/symmetry/SymmetryStats.svelte +56 -68
  341. package/dist/symmetry/WyckoffTable.svelte +5 -24
  342. package/dist/symmetry/cell-transform.js +1 -0
  343. package/dist/symmetry/index.d.ts +1 -0
  344. package/dist/symmetry/index.js +8 -2
  345. package/dist/symmetry/spacegroups.js +3 -2
  346. package/dist/table/HeatmapTable.svelte +1102 -365
  347. package/dist/table/HeatmapTable.svelte.d.ts +12 -2
  348. package/dist/table/ToggleMenu.svelte +5 -12
  349. package/dist/table/index.d.ts +21 -6
  350. package/dist/table/index.js +34 -21
  351. package/dist/theme/ThemeControl.svelte +16 -8
  352. package/dist/theme/index.d.ts +1 -5
  353. package/dist/theme/index.js +4 -10
  354. package/dist/theme/themes.mjs +14 -7
  355. package/dist/tooltip/KCoords.svelte +4 -1
  356. package/dist/tooltip/TooltipContent.svelte +2 -5
  357. package/dist/trajectory/Trajectory.svelte +515 -308
  358. package/dist/trajectory/Trajectory.svelte.d.ts +1 -1
  359. package/dist/trajectory/TrajectoryError.svelte +11 -8
  360. package/dist/trajectory/TrajectoryExportPane.svelte +14 -31
  361. package/dist/trajectory/TrajectoryInfoPane.svelte +85 -97
  362. package/dist/trajectory/extract.js +56 -34
  363. package/dist/trajectory/format-detect.js +11 -9
  364. package/dist/trajectory/frame-reader.d.ts +2 -0
  365. package/dist/trajectory/frame-reader.js +33 -29
  366. package/dist/trajectory/helpers.d.ts +2 -0
  367. package/dist/trajectory/helpers.js +18 -7
  368. package/dist/trajectory/index.d.ts +1 -0
  369. package/dist/trajectory/index.js +3 -0
  370. package/dist/trajectory/parse/h5-utils.d.ts +13 -0
  371. package/dist/trajectory/parse/h5-utils.js +109 -0
  372. package/dist/trajectory/parse/hdf5.d.ts +1 -1
  373. package/dist/trajectory/parse/hdf5.js +116 -106
  374. package/dist/trajectory/parse/index.d.ts +2 -3
  375. package/dist/trajectory/parse/index.js +17 -20
  376. package/dist/trajectory/parse/lammps.js +8 -12
  377. package/dist/trajectory/parse/vasp.js +10 -7
  378. package/dist/trajectory/parse/vaspout-electronic.d.ts +13 -0
  379. package/dist/trajectory/parse/vaspout-electronic.js +207 -0
  380. package/dist/trajectory/parse/vaspout-h5.d.ts +5 -0
  381. package/dist/trajectory/parse/vaspout-h5.js +284 -0
  382. package/dist/trajectory/parse/xyz.js +11 -7
  383. package/dist/trajectory/plotting.d.ts +8 -9
  384. package/dist/trajectory/plotting.js +99 -27
  385. package/dist/utils.d.ts +3 -0
  386. package/dist/utils.js +7 -0
  387. package/dist/xrd/XrdPlot.svelte +47 -61
  388. package/dist/xrd/broadening.js +2 -1
  389. package/dist/xrd/calc-xrd.js +2 -4
  390. package/dist/xrd/parse.d.ts +0 -1
  391. package/dist/xrd/parse.js +56 -73
  392. package/package.json +61 -33
  393. package/dist/api/mp.d.ts +0 -6
  394. package/dist/api/mp.js +0 -22
  395. package/dist/plot/sunburst/SunburstControls.svelte +0 -200
@@ -1,5 +1,6 @@
1
1
  import type { Vec2 } from '../../math';
2
2
  import type { BandwidthOption, BasePlotProps, BoxHandlerProps, BoxPlotSeries, LegendConfig, Orientation, PanConfig, PlotConfig, RefLine, RefLineEvent, UserContentProps, ViolinKind, ViolinSide, WhiskerMode } from '..';
3
+ import type { MarginalsProp } from '../core/marginals';
3
4
  import type { Snippet } from 'svelte';
4
5
  import type { HTMLAttributes } from 'svelte/elements';
5
6
  declare function $$render<Metadata extends Record<string, unknown> = Record<string, unknown>>(): {
@@ -70,6 +71,7 @@ declare function $$render<Metadata extends Record<string, unknown> = Record<stri
70
71
  on_ref_line_click?: (event: RefLineEvent) => void;
71
72
  on_ref_line_hover?: (event: RefLineEvent | null) => void;
72
73
  pan?: PanConfig;
74
+ marginals?: MarginalsProp;
73
75
  };
74
76
  exports: {};
75
77
  bindings: "display" | "orientation" | "show_controls" | "x2_axis" | "y_axis" | "y2_axis" | "fullscreen" | "series" | "hovered" | "ref_lines" | "controls_open" | "x_axis" | "kind" | "side" | "whisker_mode" | "show_outliers" | "show_mean";
@@ -65,6 +65,7 @@ declare const Violin: import("svelte").Component<import("svelte/elements").HTMLA
65
65
  on_ref_line_click?: ((event: import("..").RefLineEvent) => void) | undefined;
66
66
  on_ref_line_hover?: ((event: import("..").RefLineEvent | null) => void) | undefined;
67
67
  pan?: import("..").PanConfig;
68
+ marginals?: import("..").MarginalsProp;
68
69
  }, {}, "series" | "kind">;
69
70
  type Violin = ReturnType<typeof Violin>;
70
71
  export default Violin;
@@ -3,6 +3,7 @@
3
3
  import { ascending } from 'd3-array';
4
4
  import { quantile_unordered } from './quantile';
5
5
  import { DEFAULTS } from '../../settings';
6
+ import { clamp01 } from '../../utils';
6
7
  export const WHISKER_MODES = [`tukey`, `minmax`, `percentile`, `std`];
7
8
  const WHISKER_MODE_SET = new Set(WHISKER_MODES);
8
9
  export const is_whisker_mode = (val) => WHISKER_MODE_SET.has(val);
@@ -18,7 +19,6 @@ const EMPTY_STATS = {
18
19
  outliers: [],
19
20
  n: 0,
20
21
  };
21
- const clamp01 = (val) => Math.max(0, Math.min(1, val));
22
22
  function collect_outliers_by_scan(values, low_bound, high_bound, collect) {
23
23
  if (!collect)
24
24
  return [];
@@ -7,7 +7,7 @@ const DECOR_GAP = 8; // px gap between an outside decoration and the plot edge
7
7
  export const placed_coords = (auto_outside, outside, placement, tweened, fallback) => (auto_outside ? outside : placement ? tweened : fallback);
8
8
  // True when the user pinned a decoration via its style (an edge property or position:absolute),
9
9
  // in which case auto-placement must leave it alone.
10
- export const has_explicit_position = (style) => /(^|[;{]\s*)(top|bottom|left|right)\s*:|position\s*:\s*absolute/.test(style ?? ``);
10
+ export const has_explicit_position = (style) => /(?:^|[;{]\s*)(?:top|bottom|left|right)\s*:|position\s*:\s*absolute/.test(style ?? ``);
11
11
  // A decoration's pixel footprint: its rendered box once laid out, else `fallback` (offset dims read
12
12
  // 0 before first render). Used to decide crowding before the real size is known.
13
13
  export const measured_footprint = (el, fallback) => el?.offsetWidth && el?.offsetHeight
@@ -21,14 +21,19 @@ export declare const AXIS_DEFAULTS: {
21
21
  type AxisType = `x` | `x2` | `y` | `y2`;
22
22
  export declare function merge_series_state<T extends DataSeries | BarSeries>(old_series: T[], new_series: T[]): T[];
23
23
  export interface AxisChangeState<T extends DataSeries | BarSeries> {
24
- get_axis: (axis: AxisType) => AxisConfig;
25
- set_axis: (axis: AxisType, config: AxisConfig) => void;
26
- get_series: () => T[];
27
- set_series: (series: T[]) => void;
28
- get_loading: () => AxisType | null;
29
- set_loading: (axis: AxisType | null) => void;
24
+ axes: Record<AxisType, {
25
+ get: () => AxisConfig;
26
+ set: (config: AxisConfig) => void;
27
+ }>;
28
+ series: {
29
+ get: () => T[];
30
+ set: (series: T[]) => void;
31
+ };
32
+ loading: {
33
+ get: () => AxisType | null;
34
+ set: (axis: AxisType | null) => void;
35
+ };
30
36
  }
31
- export declare const create_axis_change_handler: <T extends DataSeries | BarSeries>(state: AxisChangeState<T>, data_loader: DataLoaderFn<Record<string, unknown>, T> | undefined, on_axis_change?: (axis: AxisType, key: string, new_series: T[]) => void, on_error?: (error: AxisLoadError) => void) => ((axis: AxisType, key: string) => Promise<void>);
32
37
  export declare function create_axis_loader<T extends DataSeries | BarSeries>(state: AxisChangeState<T>, get_props: () => {
33
38
  data_loader?: DataLoaderFn<Record<string, unknown>, T>;
34
39
  on_axis_change?: (axis: AxisType, key: string, new_series: T[]) => void;
@@ -36,61 +36,61 @@ export function merge_series_state(old_series, new_series) {
36
36
  return result;
37
37
  });
38
38
  }
39
- // Handle axis property change - loads new data via data_loader
40
- // Returns a function bound to the component's state accessors
41
- export const create_axis_change_handler = (state, data_loader, on_axis_change, on_error) => async (axis, key) => {
42
- if (!data_loader || state.get_loading())
43
- return;
44
- const axis_config = state.get_axis(axis);
45
- const prev_key = axis_config.selected_key;
46
- // Skip if key unchanged AND series already loaded (allows initial load when series empty)
47
- if (prev_key === key && state.get_series().length > 0)
48
- return;
49
- // Update selected_key immediately for UI feedback
50
- state.set_axis(axis, { ...axis_config, selected_key: key });
51
- state.set_loading(axis);
52
- try {
53
- const result = await data_loader(axis, key, state.get_series());
54
- // Merge new series with preserved state from old series
55
- const merged = merge_series_state(state.get_series(), result.series);
56
- state.set_series(merged);
57
- // Update axis label/unit if provided
58
- if (result.axis_label || result.axis_unit) {
59
- const current = state.get_axis(axis);
60
- state.set_axis(axis, {
61
- ...current,
62
- label: result.axis_label ?? current.label,
63
- unit: result.axis_unit ?? current.unit,
64
- });
65
- }
66
- on_axis_change?.(axis, key, merged);
67
- }
68
- catch (err) {
69
- console.error(`Failed to load data for ${axis}=${key}:`, err);
70
- // Revert selection
71
- state.set_axis(axis, { ...state.get_axis(axis), selected_key: prev_key });
72
- const message = to_error(err).message;
73
- on_error?.({ axis, key, message });
74
- }
75
- finally {
76
- state.set_loading(null);
77
- }
78
- };
79
- // Bundle axis change handler with one-shot auto-load of the first axis option.
80
- // get_props keeps callback props fresh; try_auto_load reads series/axis configs
81
- // through state getters so a component `$effect(try_auto_load)` tracks them reactively.
39
+ // Axis-change loader: `handle_axis_change` loads new data for an axis property change via the
40
+ // data_loader (reading `get_props` fresh each call so callbacks stay current), and `try_auto_load`
41
+ // loads the first axis option once when series start empty. Reads state through getters so a
42
+ // component `$effect(try_auto_load)` tracks them reactively.
82
43
  export function create_axis_loader(state, get_props) {
83
44
  let auto_load_attempted = false; // prevent infinite retries on failure
84
- const handle_axis_change = (axis, key) => {
45
+ // No-op when already loading, or when the key is unchanged and series are already present
46
+ const handle_axis_change = async (axis, key) => {
85
47
  const { data_loader, on_axis_change, on_error } = get_props();
86
- return create_axis_change_handler(state, data_loader, on_axis_change, on_error)(axis, key);
48
+ if (!data_loader || state.loading.get())
49
+ return;
50
+ const axis_config = state.axes[axis].get();
51
+ const prev_key = axis_config.selected_key;
52
+ if (prev_key === key && state.series.get().length > 0)
53
+ return;
54
+ state.axes[axis].set({ ...axis_config, selected_key: key }); // immediate UI feedback
55
+ state.loading.set(axis);
56
+ let merged = state.series.get();
57
+ let load_error;
58
+ try {
59
+ const result = await data_loader(axis, key, state.series.get());
60
+ merged = merge_series_state(state.series.get(), result.series);
61
+ state.series.set(merged);
62
+ // !== undefined (not truthiness) so a loader can intentionally clear a label/unit to ``
63
+ if (result.axis_label !== undefined || result.axis_unit !== undefined) {
64
+ const current = state.axes[axis].get();
65
+ state.axes[axis].set({
66
+ ...current,
67
+ label: result.axis_label ?? current.label,
68
+ unit: result.axis_unit ?? current.unit,
69
+ });
70
+ }
71
+ }
72
+ catch (err) {
73
+ console.error(`Failed to load data for ${axis}=${key}:`, err);
74
+ state.axes[axis].set(axis_config); // revert every axis field mutated above, not just selected_key
75
+ load_error = { axis, key, message: to_error(err).message };
76
+ }
77
+ finally {
78
+ state.loading.set(null); // always clears, even if a consumer callback below throws
79
+ }
80
+ // callbacks run only after internal state is fully settled, so a throwing consumer callback
81
+ // can neither leave `loading` stuck nor trigger the loader rollback
82
+ if (load_error) {
83
+ on_error?.(load_error);
84
+ return;
85
+ }
86
+ on_axis_change?.(axis, key, merged);
87
87
  };
88
- // Auto-load data if series is empty but options exist (runs once, x-axis first then y)
88
+ // Auto-load once if series is empty but options exist (x-axis first, then y)
89
89
  const try_auto_load = () => {
90
- if (state.get_series().length > 0 || !get_props().data_loader || auto_load_attempted)
90
+ if (state.series.get().length > 0 || !get_props().data_loader || auto_load_attempted)
91
91
  return;
92
92
  for (const axis of [`x`, `y`]) {
93
- const config = state.get_axis(axis);
93
+ const config = state.axes[axis].get();
94
94
  if (config.options?.length) {
95
95
  auto_load_attempted = true;
96
96
  handle_axis_change(axis, config.selected_key ?? config.options[0].key).catch(() => { });
@@ -14,6 +14,7 @@
14
14
  loading = false,
15
15
  axis_type,
16
16
  on_select,
17
+ width = AXIS_LABEL_CONTAINER.width,
17
18
  }: {
18
19
  x: number
19
20
  y: number
@@ -25,27 +26,88 @@
25
26
  loading?: boolean
26
27
  axis_type: `x` | `x2` | `y` | `y2`
27
28
  on_select?: (key: string) => void
29
+ // container width for centering/wrapping; wider lets long horizontal titles fit on one line
30
+ width?: number
28
31
  } = $props()
32
+
33
+ interface LabelSegment {
34
+ text: string
35
+ shift?: `sub` | `super`
36
+ }
37
+
38
+ const decode_text = (value: string, textarea?: HTMLTextAreaElement): string => {
39
+ // Strip only sub/sup markup so literal angle-bracket text like <100> survives
40
+ const without_tags = value.replaceAll(/<\/?(?:sub|sup)\b[^>]*>/gi, ``)
41
+ if (!textarea) return without_tags
42
+ textarea.innerHTML = without_tags
43
+ return textarea.value
44
+ }
45
+
46
+ const label_segments = (value: string): LabelSegment[] => {
47
+ const segments: LabelSegment[] = []
48
+ const tag_pattern = /<(?<tag>sub|sup)\b[^>]*>(?<inner>.*?)<\/\k<tag>>/gis
49
+ const textarea =
50
+ typeof document === `undefined` ? undefined : document.createElement(`textarea`)
51
+ let cursor = 0
52
+ for (const match of value.matchAll(tag_pattern)) {
53
+ const start = match.index ?? 0
54
+ const plain_text = decode_text(value.slice(cursor, start), textarea)
55
+ if (plain_text) segments.push({ text: plain_text })
56
+ const shifted_text = decode_text(match.groups?.inner ?? ``, textarea)
57
+ if (shifted_text) {
58
+ segments.push({
59
+ text: shifted_text,
60
+ shift: match.groups?.tag?.toLowerCase() === `sub` ? `sub` : `super`,
61
+ })
62
+ }
63
+ cursor = start + match[0].length
64
+ }
65
+ const tail_text = decode_text(value.slice(cursor), textarea)
66
+ if (tail_text) segments.push({ text: tail_text })
67
+ return segments
68
+ }
69
+
70
+ let use_svg_text = $derived(rotate && !options?.length && !loading)
71
+ let segments = $derived(use_svg_text ? label_segments(label) : [])
29
72
  </script>
30
73
 
31
- <foreignObject
32
- x={x - AXIS_LABEL_CONTAINER.x_offset}
33
- y={y - AXIS_LABEL_CONTAINER.y_offset}
34
- width={AXIS_LABEL_CONTAINER.width}
35
- height={AXIS_LABEL_CONTAINER.height}
36
- style="overflow: visible; pointer-events: none"
37
- transform={rotate ? `rotate(-90, ${x}, ${y})` : undefined}
38
- >
39
- <div xmlns="http://www.w3.org/1999/xhtml" style="pointer-events: auto">
40
- <InteractiveAxisLabel
41
- {label}
42
- {options}
43
- {selected_key}
44
- {loading}
45
- {axis_type}
46
- {color}
47
- {on_select}
74
+ <g transform={rotate ? `rotate(-90, ${x}, ${y})` : undefined}>
75
+ {#if use_svg_text}
76
+ <text
48
77
  class="axis-label {axis_type}-label"
49
- />
50
- </div>
51
- </foreignObject>
78
+ dominant-baseline="central"
79
+ fill={color ?? `currentColor`}
80
+ pointer-events="none"
81
+ text-anchor="middle"
82
+ {x}
83
+ {y}
84
+ >
85
+ {#each segments as segment}
86
+ <tspan baseline-shift={segment.shift} font-size={segment.shift ? `75%` : undefined}
87
+ >{segment.text}</tspan
88
+ >
89
+ {/each}
90
+ </text>
91
+ {:else}
92
+ <foreignObject
93
+ x={x - width / 2}
94
+ y={y - AXIS_LABEL_CONTAINER.y_offset}
95
+ {width}
96
+ height={AXIS_LABEL_CONTAINER.height}
97
+ style="overflow: visible; pointer-events: none"
98
+ >
99
+ <div xmlns="http://www.w3.org/1999/xhtml" style="pointer-events: auto">
100
+ <InteractiveAxisLabel
101
+ {label}
102
+ {options}
103
+ {selected_key}
104
+ {loading}
105
+ {axis_type}
106
+ {color}
107
+ {on_select}
108
+ class="axis-label {axis_type}-label"
109
+ />
110
+ </div>
111
+ </foreignObject>
112
+ {/if}
113
+ </g>
@@ -10,6 +10,7 @@ type $$ComponentProps = {
10
10
  loading?: boolean;
11
11
  axis_type: `x` | `x2` | `y` | `y2`;
12
12
  on_select?: (key: string) => void;
13
+ width?: number;
13
14
  };
14
15
  declare const AxisLabel: import("svelte").Component<$$ComponentProps, {}, "">;
15
16
  type AxisLabel = ReturnType<typeof AxisLabel>;