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
@@ -11,7 +11,11 @@
11
11
  import type { Vec2 } from '../../../math'
12
12
  import type { AxisKey, PlotControlsProps } from '../types'
13
13
  import { normalize_y2_sync } from '../interactions'
14
- import { get_scale_type_name, is_scale_type_name, is_y2_sync_mode } from '../types'
14
+ import {
15
+ get_scale_type_name,
16
+ is_scale_type_name,
17
+ is_y2_sync_mode,
18
+ } from '../types'
15
19
 
16
20
  let {
17
21
  show_controls = $bindable(false),
@@ -37,9 +41,12 @@
37
41
  }: PlotControlsProps = $props()
38
42
 
39
43
  // Range input state
40
- let range_inputs: Record<AxisKey, [number | null, number | null]> = $state(
41
- { x: [null, null], x2: [null, null], y: [null, null], y2: [null, null] },
42
- )
44
+ let range_inputs: Record<AxisKey, [number | null, number | null]> = $state({
45
+ x: [null, null],
46
+ x2: [null, null],
47
+ y: [null, null],
48
+ y2: [null, null],
49
+ })
43
50
  let range_els = $state<Record<string, HTMLInputElement>>({})
44
51
 
45
52
  // Check if an axis range spans zero (handles inverted ranges like [3.5, 1.4])
@@ -53,7 +60,8 @@
53
60
  ),
54
61
  )
55
62
  let x2_includes_zero = $derived(
56
- has_x2_points && auto_x2_range != null &&
63
+ has_x2_points &&
64
+ auto_x2_range != null &&
57
65
  range_spans_zero(
58
66
  x2_axis.range?.[0] ?? auto_x2_range[0],
59
67
  x2_axis.range?.[1] ?? auto_x2_range[1],
@@ -66,7 +74,8 @@
66
74
  ),
67
75
  )
68
76
  let y2_includes_zero = $derived(
69
- has_y2_points && auto_y2_range != null &&
77
+ has_y2_points &&
78
+ auto_y2_range != null &&
70
79
  range_spans_zero(
71
80
  y2_axis.range?.[0] ?? auto_y2_range[0],
72
81
  y2_axis.range?.[1] ?? auto_y2_range[1],
@@ -108,16 +117,18 @@
108
117
  const parsed = value === `` ? null : Number(value)
109
118
  range_inputs[axis][bound] = Number.isFinite(parsed) ? parsed : null
110
119
  const [min, max] = range_inputs[axis]
111
- const auto =
112
- { x: auto_x_range, x2: auto_x2_range, y: auto_y_range, y2: auto_y2_range }[axis]
120
+ const auto = { x: auto_x_range, x2: auto_x2_range, y: auto_y_range, y2: auto_y2_range }[
121
+ axis
122
+ ]
113
123
  const invalid = min !== null && max !== null && min >= max
114
124
  range_els[`${axis}-min`]?.classList.toggle(`invalid`, invalid)
115
125
  range_els[`${axis}-max`]?.classList.toggle(`invalid`, invalid)
116
126
  if (invalid) return
117
127
  const axis_config = { x: x_axis, x2: x2_axis, y: y_axis, y2: y2_axis }[axis]
118
- const next_range = min === null && max === null
119
- ? undefined
120
- : [min ?? auto?.[0] ?? 0, max ?? auto?.[1] ?? 1] as Vec2
128
+ const next_range =
129
+ min === null && max === null
130
+ ? undefined
131
+ : ([min ?? auto?.[0] ?? 0, max ?? auto?.[1] ?? 1] as Vec2)
121
132
  // If auto range is undefined, only set if both min and max are provided
122
133
  if (!auto && (min === null || max === null)) return
123
134
  if (axis === `x`) x_axis = { ...axis_config, range: next_range }
@@ -149,7 +160,7 @@
149
160
  {#if show_controls}
150
161
  <ControlPane
151
162
  bind:controls_open
152
- controls_class={controls_class}
163
+ {controls_class}
153
164
  title={controls_title}
154
165
  {toggle_props}
155
166
  {pane_props}
@@ -182,24 +193,30 @@
182
193
  style="display: flex; flex-wrap: wrap; gap: 1ex; align-items: center"
183
194
  >
184
195
  {#if x_includes_zero || x2_includes_zero || y_includes_zero || y2_includes_zero}
185
- <span class="control-group" data-label="zero line">Zero line:
196
+ <span class="control-group" data-label="zero line"
197
+ >Zero line:
186
198
  {#if x_includes_zero}
187
199
  <label><input type="checkbox" bind:checked={display.x_zero_line} /> X</label>
188
200
  {/if}
189
201
  {#if x2_includes_zero}
190
- <label><input type="checkbox" bind:checked={display.x2_zero_line} />
191
- X2</label>
202
+ <label
203
+ ><input type="checkbox" bind:checked={display.x2_zero_line} />
204
+ X2</label
205
+ >
192
206
  {/if}
193
207
  {#if y_includes_zero}
194
208
  <label><input type="checkbox" bind:checked={display.y_zero_line} /> Y</label>
195
209
  {/if}
196
210
  {#if y2_includes_zero}
197
- <label><input type="checkbox" bind:checked={display.y2_zero_line} />
198
- Y2</label>
211
+ <label
212
+ ><input type="checkbox" bind:checked={display.y2_zero_line} />
213
+ Y2</label
214
+ >
199
215
  {/if}
200
216
  </span>
201
217
  {/if}
202
- <span class="control-group" data-label="grid">Grid:
218
+ <span class="control-group" data-label="grid"
219
+ >Grid:
203
220
  <label><input type="checkbox" bind:checked={display.x_grid} /> X</label>
204
221
  {#if has_x2_points}
205
222
  <label><input type="checkbox" bind:checked={display.x2_grid} /> X2</label>
@@ -229,17 +246,10 @@
229
246
  }}
230
247
  style="display: flex; flex-wrap: wrap; gap: 2pt"
231
248
  >
232
- {#each [
233
- [`x`, `X`],
234
- ...(has_x2_points ? [[`x2`, `X2`]] : []),
235
- [`y`, `Y`],
236
- ...(has_y2_points ? [[`y2`, `Y2`]] : []),
237
- ] as
238
- [axis_key, label]
239
- (axis_key)
240
- }
249
+ {#each [[`x`, `X`], ...(has_x2_points ? [[`x2`, `X2`]] : []), [`y`, `Y`], ...(has_y2_points ? [[`y2`, `Y2`]] : [])] as [axis_key, label] (axis_key)}
241
250
  {@const axis = axis_key as AxisKey}
242
- <label>{label}:
251
+ <label
252
+ >{label}:
243
253
  <input
244
254
  type="number"
245
255
  value={range_inputs[axis][0] ?? ``}
@@ -248,7 +258,9 @@
248
258
  class="range-input"
249
259
  oninput={(evt) => update_range(axis, 0, evt.currentTarget.value)}
250
260
  onkeydown={(evt) => evt.key === `Enter` && evt.currentTarget?.blur()}
251
- /> to <input
261
+ />
262
+ to
263
+ <input
252
264
  type="number"
253
265
  value={range_inputs[axis][1] ?? ``}
254
266
  bind:this={range_els[`${axis}-max`]}
@@ -273,7 +285,8 @@
273
285
  }}
274
286
  style="display: flex; flex-wrap: wrap; gap: 1ex"
275
287
  >
276
- <label>X-axis:
288
+ <label
289
+ >X-axis:
277
290
  <input
278
291
  type="number"
279
292
  min={min_ticks}
@@ -290,7 +303,8 @@
290
303
  }}
291
304
  />
292
305
  </label>
293
- <label>Y-axis:
306
+ <label
307
+ >Y-axis:
294
308
  <input
295
309
  type="number"
296
310
  min={min_ticks}
@@ -327,7 +341,8 @@
327
341
  }}
328
342
  style="display: flex; flex-wrap: wrap; gap: 1ex"
329
343
  >
330
- <label>X:
344
+ <label
345
+ >X:
331
346
  <select
332
347
  value={get_scale_type_name(x_axis.scale_type)}
333
348
  onchange={(evt) => {
@@ -344,7 +359,8 @@
344
359
  </select>
345
360
  </label>
346
361
  {#if has_x2_points}
347
- <label>X2:
362
+ <label
363
+ >X2:
348
364
  <select
349
365
  value={get_scale_type_name(x2_axis.scale_type)}
350
366
  onchange={(evt) => {
@@ -361,7 +377,8 @@
361
377
  </select>
362
378
  </label>
363
379
  {/if}
364
- <label>Y:
380
+ <label
381
+ >Y:
365
382
  <select
366
383
  value={get_scale_type_name(y_axis.scale_type)}
367
384
  onchange={(evt) => {
@@ -378,7 +395,8 @@
378
395
  </select>
379
396
  </label>
380
397
  {#if has_y2_points}
381
- <label>Y2:
398
+ <label
399
+ >Y2:
382
400
  <select
383
401
  value={get_scale_type_name(y2_axis.scale_type)}
384
402
  onchange={(evt) => {
@@ -412,7 +430,8 @@
412
430
  }}
413
431
  style="display: flex; gap: 1ex; align-items: center; flex-wrap: wrap"
414
432
  >
415
- <label {@attach tooltip({ content: y2_sync_tip })}>Mode:
433
+ <label {@attach tooltip({ content: y2_sync_tip })}
434
+ >Mode:
416
435
  <select
417
436
  value={current_sync.mode}
418
437
  aria-label="Y2 axis synchronization mode"
@@ -437,7 +456,8 @@
437
456
  </select>
438
457
  </label>
439
458
  {#if current_sync.mode === `align`}
440
- <label>Align at:
459
+ <label
460
+ >Align at:
441
461
  <input
442
462
  type="number"
443
463
  value={current_sync.align_value ?? 0}
@@ -478,7 +498,8 @@
478
498
  class="pane-grid"
479
499
  style="grid-template-columns: 1fr 1fr"
480
500
  >
481
- <label style="white-space: nowrap">X-axis:
501
+ <label style="white-space: nowrap"
502
+ >X-axis:
482
503
  <input
483
504
  type="text"
484
505
  value={x_axis.format ?? DEFAULTS.plot.x_format}
@@ -487,7 +508,8 @@
487
508
  />
488
509
  </label>
489
510
  {#if has_x2_points}
490
- <label style="white-space: nowrap">X2-axis:
511
+ <label style="white-space: nowrap"
512
+ >X2-axis:
491
513
  <input
492
514
  type="text"
493
515
  value={x2_axis.format ?? DEFAULTS.plot.x2_format}
@@ -497,7 +519,8 @@
497
519
  />
498
520
  </label>
499
521
  {/if}
500
- <label style="white-space: nowrap">Y-axis:
522
+ <label style="white-space: nowrap"
523
+ >Y-axis:
501
524
  <input
502
525
  type="text"
503
526
  value={y_axis.format ?? DEFAULTS.plot.y_format}
@@ -507,7 +530,8 @@
507
530
  />
508
531
  </label>
509
532
  {#if has_y2_points}
510
- <label style="white-space: nowrap">Y2-axis:
533
+ <label style="white-space: nowrap"
534
+ >Y2-axis:
511
535
  <input
512
536
  type="text"
513
537
  value={y2_axis.format ?? DEFAULTS.plot.y2_format}
@@ -1,4 +1,4 @@
1
1
  import type { PlotControlsProps } from '../types';
2
- declare const PlotControls: import("svelte").Component<PlotControlsProps, {}, "display" | "show_controls" | "controls_open" | "x_axis" | "y_axis" | "x2_axis" | "y2_axis">;
2
+ declare const PlotControls: import("svelte").Component<PlotControlsProps, {}, "display" | "show_controls" | "x2_axis" | "y_axis" | "y2_axis" | "controls_open" | "x_axis">;
3
3
  type PlotControls = ReturnType<typeof PlotControls>;
4
4
  export default PlotControls;
@@ -46,10 +46,7 @@
46
46
  collapsed_groups?: Set<string>
47
47
  on_toggle?: (series_idx: number) => void
48
48
  on_double_click?: (series_idx: number) => void
49
- on_fill_toggle?: (
50
- source_type: `fill_region` | `error_band`,
51
- source_idx: number,
52
- ) => void
49
+ on_fill_toggle?: (source_type: `fill_region` | `error_band`, source_idx: number) => void
53
50
  on_fill_double_click?: (
54
51
  source_type: `fill_region` | `error_band`,
55
52
  source_idx: number,
@@ -100,9 +97,7 @@
100
97
 
101
98
  // Check if any grouping is present
102
99
  let has_groups = $derived(
103
- grouped_series.some((group) =>
104
- group.group_name !== null && group.items.length > 0
105
- ),
100
+ grouped_series.some((group) => group.group_name !== null && group.items.length > 0),
106
101
  )
107
102
 
108
103
  let show_filter = $derived(filterable && series_data.length >= filter_threshold)
@@ -115,7 +110,7 @@
115
110
  group_name,
116
111
  all_items: items,
117
112
  items: items.filter((item) =>
118
- `${group_name ?? ``} ${strip_html(item.label)}`.toLowerCase().includes(filter)
113
+ `${group_name ?? ``} ${strip_html(item.label)}`.toLowerCase().includes(filter),
119
114
  ),
120
115
  }))
121
116
  .filter(({ items }) => items.length > 0)
@@ -131,7 +126,10 @@
131
126
  }
132
127
 
133
128
  const handle_group_click = (group_name: string, items: LegendItem[]) =>
134
- on_group_toggle?.(group_name, items.map((item) => item.series_idx))
129
+ on_group_toggle?.(
130
+ group_name,
131
+ items.map((item) => item.series_idx),
132
+ )
135
133
 
136
134
  function cleanup_drag_listeners() {
137
135
  if (is_dragging) {
@@ -192,15 +190,16 @@
192
190
  let div_style = $derived(
193
191
  {
194
192
  horizontal: `grid-template-columns: repeat(${layout_tracks}, auto);`,
195
- vertical:
196
- `grid-template-rows: repeat(${layout_tracks}, auto); grid-template-columns: auto;`,
193
+ vertical: `grid-template-rows: repeat(${layout_tracks}, auto); grid-template-columns: auto;`,
197
194
  }[layout] + style,
198
195
  )
199
196
 
200
197
  // Extracted toggle handlers to reduce duplication
201
198
  function toggle_item(item: LegendItem) {
202
199
  if (
203
- item.item_type === `fill` && on_fill_toggle && item.fill_source_type &&
200
+ item.item_type === `fill` &&
201
+ on_fill_toggle &&
202
+ item.fill_source_type &&
204
203
  item.fill_source_idx !== undefined
205
204
  ) {
206
205
  on_fill_toggle(item.fill_source_type, item.fill_source_idx)
@@ -208,7 +207,9 @@
208
207
  }
209
208
  function double_click_item(item: LegendItem) {
210
209
  if (
211
- item.item_type === `fill` && on_fill_double_click && item.fill_source_type &&
210
+ item.item_type === `fill` &&
211
+ on_fill_double_click &&
212
+ item.fill_source_type &&
212
213
  item.fill_source_idx !== undefined
213
214
  ) {
214
215
  on_fill_double_click(item.fill_source_type, item.fill_source_idx)
@@ -219,8 +220,8 @@
219
220
  {#snippet legend_item(series: LegendItem, indent: boolean = false)}
220
221
  {@const is_fill_item = series.item_type === `fill`}
221
222
  {@const is_active = is_fill_item
222
- ? active_fill_idx === series.fill_idx
223
- : active_series_idx === series.series_idx}
223
+ ? active_fill_idx === series.fill_idx
224
+ : active_series_idx === series.series_idx}
224
225
  <div
225
226
  class="legend-item"
226
227
  class:hidden={!series.visible}
@@ -255,8 +256,7 @@
255
256
  >
256
257
  <span class="legend-marker">
257
258
  <!-- Fill region swatch -->
258
- {#if is_fill_item &&
259
- (series.display_style.fill_color || series.display_style.fill_gradient)}
259
+ {#if is_fill_item && (series.display_style.fill_color || series.display_style.fill_gradient)}
260
260
  {@const gradient = series.display_style.fill_gradient}
261
261
  {@const gradient_id = `legend-grad-${instance_id}-${series.fill_idx}`}
262
262
  <svg width="16" height="12" viewBox="0 0 16 12" class="fill-swatch">
@@ -292,8 +292,8 @@
292
292
  height="10"
293
293
  rx="2"
294
294
  fill={gradient
295
- ? `url(#${gradient_id})`
296
- : add_alpha(series.display_style.fill_color ?? `steelblue`, 1)}
295
+ ? `url(#${gradient_id})`
296
+ : add_alpha(series.display_style.fill_color ?? `steelblue`, 1)}
297
297
  fill-opacity="0.7"
298
298
  stroke={series.display_style.edge_color ?? `none`}
299
299
  stroke-width="1"
@@ -351,7 +351,7 @@
351
351
  onmouseleave={() => on_hover_change?.(false)}
352
352
  {...rest}
353
353
  style={div_style}
354
- class="legend {rest.class ?? ``}"
354
+ class={[`legend`, rest.class]}
355
355
  class:draggable
356
356
  class:is-dragging={is_dragging}
357
357
  class:grouped={has_groups}
@@ -387,7 +387,10 @@
387
387
  ondblclick={(event: MouseEvent) => {
388
388
  event.preventDefault()
389
389
  event.stopPropagation()
390
- on_group_double_click?.(group_name, group_items.map((item) => item.series_idx))
390
+ on_group_double_click?.(
391
+ group_name,
392
+ group_items.map((item) => item.series_idx),
393
+ )
391
394
  }}
392
395
  onkeydown={(event) => {
393
396
  if ([`Enter`, ` `].includes(event.key)) {
@@ -425,23 +428,13 @@
425
428
  </div>
426
429
  <!-- Group items (collapsible) -->
427
430
  {#if !is_collapsed}
428
- {#each items as
429
- series
430
- (series.item_type === `fill`
431
- ? `fill-${series.fill_idx}`
432
- : `series-${series.series_idx}`)
433
- }
431
+ {#each items as series (series.item_type === `fill` ? `fill-${series.fill_idx}` : `series-${series.series_idx}`)}
434
432
  {@render legend_item(series, true)}
435
433
  {/each}
436
434
  {/if}
437
435
  {:else}
438
436
  <!-- Ungrouped items -->
439
- {#each items as
440
- series
441
- (series.item_type === `fill`
442
- ? `fill-${series.fill_idx}`
443
- : `series-${series.series_idx}`)
444
- }
437
+ {#each items as series (series.item_type === `fill` ? `fill-${series.fill_idx}` : `series-${series.series_idx}`)}
445
438
  {@render legend_item(series, false)}
446
439
  {/each}
447
440
  {/if}
@@ -511,7 +504,9 @@
511
504
  .legend-item.hidden {
512
505
  opacity: var(--plot-legend-item-hidden-opacity, 0.5);
513
506
  }
514
- .legend-item:hover, .legend-item:focus, .legend-item.active {
507
+ .legend-item:hover,
508
+ .legend-item:focus,
509
+ .legend-item.active {
515
510
  background-color: var(--plot-legend-item-hover-bg-color);
516
511
  }
517
512
  .legend-item.active {
@@ -553,7 +548,8 @@
553
548
  .legend-group-header.hidden {
554
549
  opacity: var(--plot-legend-item-hidden-opacity, 0.5);
555
550
  }
556
- .legend-group-header:hover, .legend-group-header:focus {
551
+ .legend-group-header:hover,
552
+ .legend-group-header:focus {
557
553
  background-color: var(--plot-legend-item-hover-bg-color);
558
554
  }
559
555
  .group-chevron {