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,4 +1,4 @@
1
- import type { CellSnippet, ExportData, InitialSort, Label, Pagination, RowData, Search, SortHint, SpecialCells } from './';
1
+ import type { CellSnippet, ExportData, InitialSort, Label, Pagination, VirtualScroll, RowData, Search, SortHint, SpecialCells } from './';
2
2
  import type { Snippet } from 'svelte';
3
3
  import type { HTMLAttributes } from 'svelte/elements';
4
4
  type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
@@ -17,14 +17,24 @@ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
17
17
  default_num_format?: string;
18
18
  show_heatmap?: boolean;
19
19
  heatmap_class?: string;
20
+ onrowpointerdown?: (event: PointerEvent, row: RowData) => void;
20
21
  onrowclick?: (event: MouseEvent | KeyboardEvent, row: RowData) => void;
21
22
  onrowdblclick?: (event: MouseEvent, row: RowData) => void;
23
+ row_title?: (row: RowData) => string | null | undefined;
22
24
  column_order?: string[];
23
25
  export_data?: ExportData;
24
26
  show_column_toggle?: boolean;
25
27
  search?: Search;
28
+ search_query?: string;
26
29
  show_row_select?: boolean;
27
30
  pagination?: Pagination;
31
+ virtual?: VirtualScroll;
32
+ on_visible_range?: (range: {
33
+ start: number;
34
+ end: number;
35
+ total: number;
36
+ }) => void;
37
+ controls_target?: HTMLElement | null;
28
38
  selected_rows?: RowData[];
29
39
  hidden_columns?: string[];
30
40
  scroll_style?: string;
@@ -44,6 +54,6 @@ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
44
54
  }]>;
45
55
  footer?: Snippet;
46
56
  };
47
- declare const HeatmapTable: import("svelte").Component<$$ComponentProps, {}, "sort" | "data" | "show_controls" | "controls_open" | "loading" | "show_heatmap" | "column_order" | "selected_rows" | "hidden_columns" | "heatmap_opacity">;
57
+ declare const HeatmapTable: import("svelte").Component<$$ComponentProps, {}, "sort" | "show_controls" | "data" | "controls_open" | "loading" | "show_heatmap" | "column_order" | "search_query" | "selected_rows" | "hidden_columns" | "heatmap_opacity">;
48
58
  type HeatmapTable = ReturnType<typeof HeatmapTable>;
49
59
  export default HeatmapTable;
@@ -115,9 +115,7 @@
115
115
 
116
116
  // Grid template for section items
117
117
  let grid_template = $derived(
118
- n_columns
119
- ? `repeat(${n_columns}, max-content)`
120
- : `repeat(auto-fill, minmax(135px, 1fr))`,
118
+ n_columns ? `repeat(${n_columns}, max-content)` : `repeat(auto-fill, minmax(135px, 1fr))`,
121
119
  )
122
120
 
123
121
  // Reposition dropdown: left-aligned by default, switch to right if it overflows viewport
@@ -128,9 +126,7 @@
128
126
  void n_columns
129
127
  void collapsed_sections
130
128
  void sections
131
- const dropdown = details_el.querySelector<HTMLElement>(
132
- `.column-menu, .sections-container`,
133
- )
129
+ const dropdown = details_el.querySelector<HTMLElement>(`.column-menu, .sections-container`)
134
130
  if (!dropdown) return
135
131
  // Reset to left-aligned
136
132
  dropdown.style.left = `0`
@@ -198,8 +194,8 @@
198
194
  {#if has_sections}
199
195
  <div class="sections-container" role="group">
200
196
  {#each sections as section (section.name)}
201
- {@const is_collapsed = section.name !== `` &&
202
- collapsed_sections.includes(section.name)}
197
+ {@const is_collapsed =
198
+ section.name !== `` && collapsed_sections.includes(section.name)}
203
199
  <div class="section">
204
200
  {#if section.name}
205
201
  <div class="section-header-row">
@@ -325,10 +321,7 @@
325
321
  margin-bottom: 4pt;
326
322
  padding: 2pt 4pt;
327
323
  border-radius: var(--tgl-border-radius, 3pt);
328
- background: var(
329
- --tgl-section-header-bg,
330
- color-mix(in srgb, currentColor 5%, transparent)
331
- );
324
+ background: var(--tgl-section-header-bg, color-mix(in srgb, currentColor 5%, transparent));
332
325
  &:hover {
333
326
  background: var(
334
327
  --tgl-section-header-hover-bg,
@@ -1,19 +1,22 @@
1
- import * as d3sc from 'd3-scale-chromatic';
1
+ import type * as d3sc from 'd3-scale-chromatic';
2
2
  import type { Snippet } from 'svelte';
3
3
  export { default as HeatmapTable } from './HeatmapTable.svelte';
4
4
  export { default as ToggleMenu } from './ToggleMenu.svelte';
5
- export type CellVal = string | number | boolean | undefined | null | Record<string, unknown> | Record<string, string | number | null | undefined | boolean>[];
5
+ export type CellVal = string | number | boolean | Date | undefined | null | Record<string, unknown> | Record<string, string | number | null | undefined | boolean>[];
6
6
  export type RowData = {
7
7
  style?: string;
8
8
  class?: string;
9
9
  [key: string]: CellVal;
10
10
  };
11
+ export type DateTimeFormatMode = `date` | `time` | `datetime` | `iso` | `relative`;
11
12
  export type Label = {
12
13
  label: string;
13
14
  key?: string;
14
15
  group?: string;
15
16
  description?: string;
16
17
  format?: string;
18
+ format_type?: `datetime`;
19
+ datetime_format?: DateTimeFormatMode;
17
20
  better?: `higher` | `lower`;
18
21
  color_scale?: keyof typeof d3sc | null;
19
22
  scale_type?: `linear` | `log`;
@@ -51,10 +54,17 @@ export type InitialSort = string | {
51
54
  export type Pagination = boolean | {
52
55
  page_size?: number;
53
56
  page_sizes?: number[];
57
+ on_page_size_change?: (page_size: number) => void;
58
+ };
59
+ export type VirtualScroll = boolean | {
60
+ overscan?: number;
61
+ min_window?: number;
54
62
  };
55
63
  export type Search = boolean | {
56
64
  placeholder?: string;
57
65
  expanded?: boolean;
66
+ keys?: string[];
67
+ fuzzy?: boolean;
58
68
  };
59
69
  export type ExportData = boolean | {
60
70
  formats?: (`csv` | `json`)[];
@@ -62,11 +72,16 @@ export type ExportData = boolean | {
62
72
  };
63
73
  export type OnSortCallback = (column: string, dir: `asc` | `desc`) => Promise<RowData[]>;
64
74
  export declare const strip_html: (str: string) => string;
75
+ export type CellColor = {
76
+ bg: string | null;
77
+ text: string | null;
78
+ };
79
+ export declare function make_cell_color_scale(all_values: CellVal[], // all values in the column
80
+ better: `higher` | `lower` | undefined, // sort direction
81
+ color_scale?: keyof typeof d3sc | null, // color scale name
82
+ scale_type?: `linear` | `log`): (val: number | null | undefined) => CellColor;
65
83
  export declare function calc_cell_color(val: number | null | undefined, // cell value
66
84
  all_values: CellVal[], // all values in the column
67
85
  better: `higher` | `lower` | undefined, // sort direction
68
86
  color_scale?: keyof typeof d3sc | null, // color scale name
69
- scale_type?: `linear` | `log`): {
70
- bg: string | null;
71
- text: string | null;
72
- };
87
+ scale_type?: `linear` | `log`): CellColor;
@@ -1,38 +1,51 @@
1
- import { pick_contrast_color } from '../colors';
1
+ import { get_d3_interpolator, pick_contrast_color } from '../colors';
2
2
  import { max, min } from 'd3-array';
3
3
  import { scaleLog, scaleSequential } from 'd3-scale';
4
- import * as d3sc from 'd3-scale-chromatic';
5
4
  export { default as HeatmapTable } from './HeatmapTable.svelte';
6
5
  export { default as ToggleMenu } from './ToggleMenu.svelte';
7
6
  // Strip HTML tags from a string (for search, export, etc.)
8
7
  export const strip_html = (str) => str.replaceAll(/<[^>]*>/g, ``);
9
- // Calculate table cell background color based on its value and column config
10
- export function calc_cell_color(val, // cell value
11
- all_values, // all values in the column
8
+ const NULL_CELL_COLOR = { bg: null, text: null };
9
+ // Build a memoized value→color mapper for one column. The O(column-length)
10
+ // work (numeric filter + min/max) and d3 scale construction happen ONCE here;
11
+ // the returned function is O(1) per cell. HeatmapTable derives one mapper per
12
+ // colored column instead of rescanning the full column for every cell render.
13
+ export function make_cell_color_scale(all_values, // all values in the column
12
14
  better, // sort direction
13
15
  color_scale = `interpolateViridis`, // color scale name
14
16
  scale_type = `linear`) {
15
- // Skip color calculation for null/undefined/NaN values or if color_scale is null
16
- if (val == null || Number.isNaN(val) || color_scale === null) {
17
- return { bg: null, text: null };
18
- }
19
- // Log scale cannot handle non-positive values, return null colors
20
- if (scale_type === `log` && val <= 0) {
21
- return { bg: null, text: null };
22
- }
17
+ if (color_scale === null)
18
+ return () => NULL_CELL_COLOR;
23
19
  const numeric_vals = all_values.filter((v) => typeof v === `number` && !Number.isNaN(v) && (scale_type === `log` ? v > 0 : true));
24
20
  if (numeric_vals.length === 0)
25
- return { bg: null, text: null };
21
+ return () => NULL_CELL_COLOR;
26
22
  const range = [min(numeric_vals) ?? 0, max(numeric_vals) ?? 1];
27
23
  // Reverse the range if lower values are better
28
24
  if (better === `lower`)
29
25
  range.reverse();
30
- // Get interpolator function, fallback to viridis if not a valid function
31
- const scale_fn = d3sc[color_scale];
32
- const interpolator = (typeof scale_fn === `function` ? scale_fn : d3sc.interpolateViridis);
26
+ const interpolator = get_d3_interpolator(color_scale);
33
27
  // Use log scale for positive values, otherwise linear/sequential scale
34
- const bg = scale_type === `log` && range[0] > 0 && range[1] > 0
35
- ? interpolator(scaleLog().domain(range).range([0, 1]).clamp(true)(val))
36
- : scaleSequential().domain(range).interpolator(interpolator)(val);
37
- return { bg, text: pick_contrast_color({ bg_color: bg }) };
28
+ const use_log = scale_type === `log` && range[0] > 0 && range[1] > 0;
29
+ const log_scale = use_log ? scaleLog().domain(range).range([0, 1]).clamp(true) : null;
30
+ const seq_scale = scaleSequential().domain(range).interpolator(interpolator);
31
+ return (val) => {
32
+ // Skip color calculation for null/undefined/NaN values
33
+ if (val == null || Number.isNaN(val))
34
+ return NULL_CELL_COLOR;
35
+ // Log scale cannot handle non-positive values, return null colors
36
+ if (scale_type === `log` && val <= 0)
37
+ return NULL_CELL_COLOR;
38
+ const bg = log_scale ? interpolator(log_scale(val)) : seq_scale(val);
39
+ return { bg, text: pick_contrast_color({ bg_color: bg }) };
40
+ };
41
+ }
42
+ // Calculate table cell background color based on its value and column config.
43
+ // One-shot convenience wrapper around make_cell_color_scale — prefer the
44
+ // factory when coloring many cells of the same column.
45
+ export function calc_cell_color(val, // cell value
46
+ all_values, // all values in the column
47
+ better, // sort direction
48
+ color_scale = `interpolateViridis`, // color scale name
49
+ scale_type = `linear`) {
50
+ return make_cell_color_scale(all_values, better, color_scale, scale_type)(val);
38
51
  }
@@ -4,14 +4,17 @@
4
4
  import type { ThemeMode } from './index'
5
5
  import { apply_theme_to_dom, save_theme_preference, THEME_OPTIONS } from './index'
6
6
 
7
- let { theme_mode = $bindable(theme_state.mode), onchange = () => {}, ...rest }:
8
- & Omit<HTMLAttributes<HTMLSelectElement>, `onchange`>
9
- & {
10
- theme_mode?: ThemeMode // Current theme mode (now bindable to global state)
11
- onchange?: (mode: ThemeMode) => void // Callback when theme changes
12
- } = $props()
7
+ let {
8
+ theme_mode = $bindable(theme_state.mode),
9
+ onchange = () => {},
10
+ ...rest
11
+ }: Omit<HTMLAttributes<HTMLSelectElement>, `onchange`> & {
12
+ theme_mode?: ThemeMode // Current theme mode (now bindable to global state)
13
+ onchange?: (mode: ThemeMode) => void // Callback when theme changes
14
+ } = $props()
13
15
 
14
- $effect(() => { // Sync and save to local storage when theme changes
16
+ $effect(() => {
17
+ // Sync and save to local storage when theme changes
15
18
  const prev = theme_state.mode
16
19
  if (prev === theme_mode) return
17
20
  theme_state.mode = theme_mode
@@ -21,7 +24,12 @@
21
24
  })
22
25
  </script>
23
26
 
24
- <select bind:value={theme_mode} {...rest} class="theme-control {rest.class ?? ``}">
27
+ <select
28
+ aria-label="Color theme"
29
+ bind:value={theme_mode}
30
+ {...rest}
31
+ class={[`theme-control`, rest.class]}
32
+ >
25
33
  {#each THEME_OPTIONS as { label, icon, value } (value)}
26
34
  <option {value}>{icon}&ensp;{label}</option>
27
35
  {/each}
@@ -1,3 +1,4 @@
1
+ export declare const THEME_STORAGE_KEY = "matterviz-theme";
1
2
  export declare const COLOR_THEMES: {
2
3
  readonly light: "light";
3
4
  readonly dark: "dark";
@@ -22,8 +23,3 @@ export declare const get_theme_preference: () => ThemeMode;
22
23
  export declare const save_theme_preference: (mode: ThemeMode) => void;
23
24
  export declare const get_system_mode: () => ThemeType;
24
25
  export declare const apply_theme_to_dom: (mode: ThemeMode) => void;
25
- export declare const light_theme: () => any;
26
- export declare const dark_theme: () => any;
27
- export declare const white_theme: () => any;
28
- export declare const black_theme: () => any;
29
- export declare const get_theme_by_name: (name: ThemeName) => any;
@@ -1,6 +1,6 @@
1
1
  // Theme System for MatterViz
2
2
  const is_browser = typeof window !== `undefined`;
3
- const storage_key = `matterviz-theme`;
3
+ export const THEME_STORAGE_KEY = `matterviz-theme`;
4
4
  // Core theme constants
5
5
  export const COLOR_THEMES = {
6
6
  light: `light`,
@@ -32,7 +32,7 @@ export const get_theme_preference = () => {
32
32
  if (!is_browser)
33
33
  return AUTO_THEME;
34
34
  try {
35
- const saved = localStorage[storage_key];
35
+ const saved = localStorage[THEME_STORAGE_KEY];
36
36
  return is_valid_theme_mode(saved ?? ``) ? saved : AUTO_THEME;
37
37
  }
38
38
  catch {
@@ -41,13 +41,13 @@ export const get_theme_preference = () => {
41
41
  };
42
42
  export const save_theme_preference = (mode) => {
43
43
  try {
44
- localStorage[storage_key] = mode;
44
+ localStorage[THEME_STORAGE_KEY] = mode;
45
45
  }
46
46
  catch {
47
47
  // Silently fail if localStorage is unavailable
48
48
  }
49
49
  };
50
- export const get_system_mode = () => is_browser && matchMedia(`(prefers-color-scheme: dark)`).matches
50
+ export const get_system_mode = () => is_browser && globalThis.matchMedia?.(`(prefers-color-scheme: dark)`)?.matches
51
51
  ? COLOR_THEMES.dark
52
52
  : COLOR_THEMES.light;
53
53
  export const apply_theme_to_dom = (mode) => {
@@ -71,9 +71,3 @@ export const apply_theme_to_dom = (mode) => {
71
71
  const color_scheme = THEME_TYPE[resolved];
72
72
  root.style.setProperty(`color-scheme`, color_scheme);
73
73
  };
74
- // Theme getters
75
- export const light_theme = () => globalThis.MATTERVIZ_THEMES?.[COLOR_THEMES.light] ?? {};
76
- export const dark_theme = () => globalThis.MATTERVIZ_THEMES?.[COLOR_THEMES.dark] ?? {};
77
- export const white_theme = () => globalThis.MATTERVIZ_THEMES?.[COLOR_THEMES.white] ?? {};
78
- export const black_theme = () => globalThis.MATTERVIZ_THEMES?.[COLOR_THEMES.black] ?? {};
79
- export const get_theme_by_name = (name) => globalThis.MATTERVIZ_THEMES?.[name] ?? {};
@@ -41,6 +41,17 @@ const tooltip_bg = (light_bg, dark_bg, light_op = 0.95, dark_op = 0.95) => ({
41
41
  black: `rgba(20, 20, 20, 0.98)`,
42
42
  })
43
43
 
44
+ // Slight contrast shading drawn behind plot SVGs and structure canvases so they read
45
+ // as panels sitting on top of the page background. Shared so a plot and a structure
46
+ // shown side by side (e.g. trajectory view) get an identical tint. Kept subtle; light
47
+ // modes darken, dark modes lighten.
48
+ const canvas_bg = {
49
+ light: `rgba(0, 0, 0, 0.03)`,
50
+ dark: `rgba(255, 255, 255, 0.07)`,
51
+ white: `rgba(0, 0, 0, 0.025)`,
52
+ black: `rgba(255, 255, 255, 0.1)`,
53
+ }
54
+
44
55
  const themes = {
45
56
  // Core colors
46
57
  'page-bg': {
@@ -167,13 +178,9 @@ const themes = {
167
178
  black: `1px solid rgba(255, 255, 255, 0.075)`,
168
179
  },
169
180
 
170
- // Structure-specific
171
- 'struct-bg': {
172
- light: `rgba(0, 0, 0, 0.02)`,
173
- dark: `rgba(255, 255, 255, 0.07)`,
174
- white: `rgba(0, 0, 0, 0.01)`,
175
- black: `rgba(255, 255, 255, 0.1)`,
176
- },
181
+ // Plot & structure canvas backgrounds (shared subtle panel shading)
182
+ 'plot-bg': canvas_bg,
183
+ 'struct-bg': canvas_bg,
177
184
  'struct-bg-fullscreen': {
178
185
  light: page_bg_light,
179
186
  dark: page_bg_dark,
@@ -3,7 +3,10 @@
3
3
  import { format_vec3 } from '../labels'
4
4
  import type { Vec3 } from '../math'
5
5
 
6
- let { cartesian, fractional = null }: {
6
+ let {
7
+ cartesian,
8
+ fractional = null,
9
+ }: {
7
10
  cartesian: Vec3
8
11
  fractional?: Vec3 | null
9
12
  } = $props()
@@ -20,9 +20,7 @@
20
20
  } = $props()
21
21
 
22
22
  const is_snippet = $derived(typeof tooltip === `function`)
23
- const config = $derived(
24
- !is_snippet && tooltip ? (tooltip as TooltipConfig<T>) : null,
25
- )
23
+ const config = $derived(!is_snippet && tooltip ? (tooltip as TooltipConfig<T>) : null)
26
24
  const prefix = $derived(
27
25
  typeof config?.prefix === `function` ? config.prefix(data) : config?.prefix,
28
26
  )
@@ -47,8 +45,7 @@
47
45
  .tooltip-prefix {
48
46
  margin-bottom: 6px;
49
47
  padding-bottom: 6px;
50
- border-bottom: 1px solid
51
- var(--tooltip-border, var(--border, rgba(128, 128, 128, 0.3)));
48
+ border-bottom: 1px solid var(--tooltip-border, var(--border, rgba(128, 128, 128, 0.3)));
52
49
  }
53
50
  .tooltip-suffix {
54
51
  margin-top: 6px;