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
@@ -9,9 +9,13 @@
9
9
  import type { ComponentProps, Snippet } from 'svelte'
10
10
  import type { HTMLAttributes } from 'svelte/elements'
11
11
  import type { D3InterpolateName } from '../colors'
12
+ import type { MissingCellStyle } from '../heatmap-matrix'
12
13
  import type { ScaleContext } from './index'
13
14
  import { TableInset } from './index'
14
15
 
16
+ // a tile's heat value: scalar or 1-4-segment array of numbers/colors
17
+ type HeatValue = number | number[] | string | string[]
18
+
15
19
  const default_f_block_inset_tiles = [
16
20
  { name: `Lanthanides`, symbol: `La-Lu`, number: `57-71`, category: `lanthanide` },
17
21
  { name: `Actinides`, symbol: `Ac-Lr`, number: `89-103`, category: `actinide` },
@@ -36,7 +40,7 @@
36
40
  color_scale_range = [null, null],
37
41
  color_overrides = {},
38
42
  labels = {},
39
- missing_color = `element-category`,
43
+ missing = {},
40
44
  split_layout = undefined,
41
45
  show_color_bar = true,
42
46
  color_bar_props = {},
@@ -50,12 +54,10 @@
50
54
  tile_props?: Partial<ComponentProps<typeof ElementTile>>
51
55
  show_photo?: boolean
52
56
  disabled?: boolean // disable hover and click events from updating active_element
53
- // either array of numbers/colors (can be partial, missing elements default to 0) or object with
54
- // element symbol as key and heat value as value
55
- // NEW: each value can now be a single number/color or array of 1-4 numbers/colors for multi-segment display
56
- heatmap_values?:
57
- | Partial<Record<ElementSymbol, number | number[] | string | string[]>>
58
- | (number | number[] | string | string[])[]
57
+ // array (positional by atomic number, can be partial) or object keyed by element symbol.
58
+ // each value is a single number/color or an array of 1-4 numbers/colors for multi-segment
59
+ // tiles. null/omitted -> missing (uses the `missing` fallback); 0 is a real value
60
+ heatmap_values?: Partial<Record<ElementSymbol, HeatValue | null>> | (HeatValue | null)[]
59
61
  // links is either string with element property (name, symbol, number, ...) to use as link,
60
62
  // or object with mapping element symbols to link
61
63
  links?: keyof ChemicalElement | Record<ElementSymbol, string> | null
@@ -78,9 +80,7 @@
78
80
  color_scale_range?: [number | null, number | null]
79
81
  color_overrides?: Partial<Record<ElementSymbol, string>>
80
82
  labels?: Partial<Record<ElementSymbol, string>>
81
- // background color for elements missing from heatmap_values
82
- // "element-category" falls back to element category default color
83
- missing_color?: string
83
+ missing?: MissingCellStyle // styling for tiles with no heatmap value
84
84
  // control the layout of multi-value splits for all tiles
85
85
  split_layout?: `diagonal` | `horizontal` | `vertical` | `triangular` | `quadrant`
86
86
  // automatically show a color bar when heatmap_values is provided (default: true)
@@ -91,16 +91,16 @@
91
91
  bottom_left_inset?: Snippet<[{ active_element: ChemicalElement | null }]>
92
92
  tooltip?:
93
93
  | Snippet<
94
- [
95
- {
96
- element: ChemicalElement
97
- value: number | number[] | string | string[]
98
- active: boolean
99
- bg_color: string | null
100
- scale_context: ScaleContext
101
- },
102
- ]
103
- >
94
+ [
95
+ {
96
+ element: ChemicalElement
97
+ value: HeatValue | null
98
+ active: boolean
99
+ bg_color: string | null
100
+ scale_context: ScaleContext
101
+ },
102
+ ]
103
+ >
104
104
  | boolean
105
105
  children?: Snippet
106
106
  onenter?: (element: ChemicalElement) => void
@@ -114,7 +114,8 @@
114
114
  `each element possibly omitting elements at the end, got ${heatmap_values.length}`,
115
115
  )
116
116
  return []
117
- }return heatmap_values
117
+ }
118
+ return heatmap_values
118
119
  } else if (typeof heatmap_values === `object`) {
119
120
  const bad_keys = Object.keys(heatmap_values).filter(
120
121
  (key) => !ELEM_SYMBOLS.includes(key as ElementSymbol),
@@ -125,7 +126,9 @@
125
126
  )
126
127
  return []
127
128
  }
128
- return ELEM_SYMBOLS.map((symbol) => heatmap_values[symbol] ?? 0)
129
+ // keep absent elements as null (distinct from a real 0 value) so they map to the
130
+ // missing fallback while explicit 0 maps through the color scale
131
+ return ELEM_SYMBOLS.map((symbol) => heatmap_values[symbol] ?? null)
129
132
  }
130
133
  return []
131
134
  })
@@ -158,14 +161,11 @@
158
161
  ArrowDown: row === 6 && in_f_block ? 9 : row === 7 && in_f_block ? 10 : row + 1,
159
162
  }
160
163
  const target_row = row_map[event.key] ?? row
161
- const target_col = event.key === `ArrowLeft`
162
- ? col - 1
163
- : event.key === `ArrowRight`
164
- ? col + 1
165
- : col
164
+ const target_col =
165
+ event.key === `ArrowLeft` ? col - 1 : event.key === `ArrowRight` ? col + 1 : col
166
166
  active_element =
167
167
  element_data.find((el) => el.column === target_col && el.row === target_row) ??
168
- active_element
168
+ active_element
169
169
  }
170
170
 
171
171
  function handle_tooltip_enter(element: ChemicalElement, event: MouseEvent) {
@@ -188,124 +188,92 @@
188
188
  typeof color_scale === `string` ? get_d3_interpolator(color_scale) : color_scale,
189
189
  )
190
190
 
191
+ // finite numeric heat value (numeric strings coerced; colors, null/false and non-finite
192
+ // excluded so they can't poison the color-scale domain). null => not a mappable number
193
+ const to_heat_num = (value: number | string | false | null | undefined): number | null => {
194
+ if (value == null || value === false || is_color(value)) return null
195
+ const num = Number(value)
196
+ return Number.isFinite(num) ? num : null
197
+ }
198
+
199
+ let heat_nums = $derived(
200
+ heat_values
201
+ .flat()
202
+ .map(to_heat_num)
203
+ .filter((num): num is number => num !== null),
204
+ )
205
+ // values usable by the active scale (log excludes non-positive)
206
+ let usable_heat_nums = $derived(log ? heat_nums.filter((num) => num > 0) : heat_nums)
207
+
191
208
  let cs_min = $derived(
192
- color_scale_range[0] ??
193
- (heat_values.length > 0
194
- ? Math.min(
195
- ...heat_values.flat().filter((val): val is number => typeof val === `number`),
196
- )
197
- : 0),
209
+ color_scale_range[0] ?? (heat_nums.length > 0 ? Math.min(...heat_nums) : 0),
198
210
  )
199
211
  let cs_max = $derived(
200
- color_scale_range[1] ??
201
- (heat_values.length > 0
202
- ? Math.max(
203
- ...heat_values.flat().filter((val): val is number => typeof val === `number`),
204
- )
205
- : 1),
212
+ color_scale_range[1] ?? (heat_nums.length > 0 ? Math.max(...heat_nums) : 1),
206
213
  )
207
214
 
208
215
  // smallest positive bound for log color mapping (matches the auto ColorBar's log scale)
209
216
  let cs_min_pos = $derived.by(() => {
210
217
  if (cs_min > 0) return cs_min
211
- const pos = heat_values.flat().filter((val): val is number =>
212
- typeof val === `number` && val > 0
213
- )
218
+ const pos = heat_nums.filter((num) => num > 0)
214
219
  return pos.length > 0 ? Math.min(...pos) : cs_max
215
220
  })
216
221
 
217
- let bg_color = $derived(
218
- (
219
- value: number | number[] | string | string[] | false,
220
- element?: ChemicalElement,
221
- ): string | null => {
222
- if (Array.isArray(value)) {
223
- // For arrays, return the color of the first value (used as fallback)
224
- return bg_color(value[0], element)
225
- }
226
-
227
- // If it's already a color string, return it directly
228
- if (is_color(value)) return value
229
-
230
- // Return missing color for zero/invalid values or when no heatmap data
231
- if (
232
- !value ||
233
- value === 0 ||
234
- (log && value <= 0) ||
235
- !heat_values?.length ||
236
- !color_scale_fn
237
- ) {
238
- // Use missing color for zero/missing values or when no heatmap data
239
- if (missing_color === `element-category` && element) {
240
- return colors.category[element.category] || `#cccccc`
241
- }
242
- return missing_color
243
- }
244
-
245
- // map value to [0, 1] range
246
- const span = cs_max - cs_min
247
- if (span === 0) return color_scale_fn?.(0.5) // midpoint when all values equal
222
+ // whether a value maps to a heatmap color (false => use the missing fallback). 0 is a
223
+ // real value; only absent/null/non-finite (and <=0 in log mode) count as missing. a
224
+ // multi-value tile is missing only when every segment is missing
225
+ const value_is_missing = (value: HeatValue | false | null): boolean => {
226
+ if (Array.isArray(value)) return value.every(value_is_missing) // [] -> true (missing)
227
+ if (is_color(value)) return false // explicit colors are real values, not missing
228
+ const num = to_heat_num(value)
229
+ return num === null || (log && num <= 0)
230
+ }
248
231
 
249
- if (log) {
250
- // log mapping matching the log ColorBar (value <= 0 returned missing_color above)
251
- const log_span = Math.log(cs_max) - Math.log(cs_min_pos)
252
- if (log_span === 0) return color_scale_fn?.(0.5)
253
- value = (Math.log(value as number) - Math.log(cs_min_pos)) / log_span
254
- } else value = ((value as number) - cs_min) / span
255
- return color_scale_fn?.(value as number)
256
- },
257
- )
232
+ const bg_color = (
233
+ value: HeatValue | false | null,
234
+ element?: ChemicalElement,
235
+ ): string | null => {
236
+ if (Array.isArray(value)) return bg_color(value[0], element) // arrays: use first value
237
+ if (is_color(value)) return value // already a color string
238
+
239
+ if (!heat_values.length || !color_scale_fn || value_is_missing(value)) {
240
+ const category_color = (element && colors.category[element.category]) || `#cccccc`
241
+ if (missing.color === `element-category`) return category_color
242
+ // default: category colors for a plain table, gray for missing heatmap data
243
+ return missing.color || (heat_values.length ? `#666` : category_color)
244
+ }
258
245
 
259
- let bg_colors = $derived(
260
- (
261
- value: number | number[] | string | string[] | false,
262
- element?: ChemicalElement,
263
- ) => {
264
- if (!Array.isArray(value)) return []
246
+ // map value to [0, 1] range
247
+ const num = Number(value)
248
+ const span = cs_max - cs_min
249
+ if (span === 0) return color_scale_fn(0.5) // midpoint when all values equal
250
+ if (log) {
251
+ const log_span = Math.log(cs_max) - Math.log(cs_min_pos)
252
+ if (log_span === 0) return color_scale_fn(0.5)
253
+ return color_scale_fn((Math.log(num) - Math.log(cs_min_pos)) / log_span)
254
+ }
255
+ return color_scale_fn((num - cs_min) / span)
256
+ }
265
257
 
266
- return value.map((val) => {
267
- // If it's already a color string, return it directly
268
- if (is_color(val)) return val
269
- // Otherwise, map it through the color scale
270
- return bg_color(val as number, element)
271
- })
272
- },
273
- )
258
+ // per-segment colors for multi-value tiles (bg_color already handles color strings)
259
+ const bg_colors = (value: HeatValue | false, element?: ChemicalElement) =>
260
+ Array.isArray(value) ? value.map((val) => bg_color(val, element)) : []
274
261
 
275
262
  // Determine whether to automatically show the color bar
276
- let should_show_color_bar = $derived.by(() => {
277
- if (!show_color_bar || inset || heat_values.length === 0) return false
278
-
279
- const num_vals = heat_values
280
- .flat()
281
- .filter((val): val is number => typeof val === `number`)
282
-
283
- const usable_values = log ? num_vals.filter((val) => val > 0) : num_vals
284
-
285
- return usable_values.length > 0
286
- })
263
+ let should_show_color_bar = $derived(show_color_bar && !inset && usable_heat_nums.length > 0)
287
264
 
288
265
  // Calculate heat range for color bar
289
266
  let heat_range = $derived.by((): Vec2 => {
290
267
  if (!should_show_color_bar) return [0, 1]
291
-
292
- const numeric_values = heat_values
293
- .flat()
294
- .filter((val): val is number => typeof val === `number`)
295
- const usable_values = log ? numeric_values.filter((val) => val > 0) : numeric_values
296
-
297
- if (usable_values.length === 0) return [0, 1]
298
-
299
- const min = color_scale_range[0] ?? Math.min(...usable_values)
300
- const max = color_scale_range[1] ?? Math.max(...usable_values)
301
-
268
+ const min = color_scale_range[0] ?? Math.min(...usable_heat_nums)
269
+ const max = color_scale_range[1] ?? Math.max(...usable_heat_nums)
302
270
  return [min, max]
303
271
  })
304
272
  </script>
305
273
 
306
274
  <svelte:window bind:innerWidth={window_width} onkeydown={handle_key} />
307
275
 
308
- <div {...rest} class="periodic-table {rest.class ?? ``}">
276
+ <div {...rest} class={[`periodic-table`, rest.class]}>
309
277
  <div class="ptable-grid" style:gap>
310
278
  {#if should_show_color_bar}
311
279
  <TableInset class="auto-colorbar-inset">
@@ -326,28 +294,32 @@
326
294
  {#each element_data as element (element.number)}
327
295
  {@const { column, row, category, name, symbol } = element}
328
296
  {@const value = heat_values[element.number - 1]}
297
+ {@const override = color_overrides[symbol]}
298
+ {@const tile_missing = heat_values.length > 0 && !override && value_is_missing(value)}
329
299
  {@const is_active_elem = active_elements?.some((active_elem) =>
330
300
  typeof active_elem === `string`
331
301
  ? active_elem === symbol
332
- : active_elem?.symbol === symbol
302
+ : active_elem?.symbol === symbol,
333
303
  )}
334
- {@const active = active_category === category ||
335
- active_element?.name === name || is_active_elem}
336
- {@const style = `grid-column: ${column}; grid-row: ${row};`}
304
+ {@const active =
305
+ active_category === category || active_element?.name === name || is_active_elem}
306
+ {@const style = `grid-column: ${column}; grid-row: ${row};${
307
+ tile_props?.style ? ` ${tile_props.style}` : ``
308
+ }${tile_missing && missing.style ? ` ${missing.style}` : ``}`}
337
309
  <ElementTile
338
310
  {element}
339
311
  href={links
340
- ? typeof links == `string`
341
- ? `/${element[links]}`.toLowerCase()
342
- : links[symbol]
343
- : undefined}
344
- {style}
345
- {value}
346
- bg_color={color_overrides[symbol] ?? bg_color(value, element) ?? undefined}
347
- bg_colors={Array.isArray(value) ? bg_colors(value, element) : []}
312
+ ? typeof links == `string`
313
+ ? `/${element[links]}`.toLowerCase()
314
+ : links[symbol]
315
+ : undefined}
316
+ value={tile_missing ? undefined : (value ?? undefined)}
317
+ bg_color={override ?? bg_color(value, element) ?? undefined}
318
+ bg_colors={!override && Array.isArray(value) ? bg_colors(value, element) : []}
348
319
  {active}
349
- label={labels[symbol]}
320
+ label={labels[symbol] ?? (tile_missing ? missing.label : undefined)}
350
321
  {...tile_props}
322
+ {style}
351
323
  onmouseenter={(event: MouseEvent) => {
352
324
  set_active_element(element)()
353
325
  handle_tooltip_enter(element, event)
@@ -390,17 +362,16 @@
390
362
  {#if tooltip_visible && tooltip_element}
391
363
  {@const el = tooltip_element as ChemicalElement}
392
364
  {@const style = `left: ${tooltip_pos.x}px; top: ${tooltip_pos.y}px;`}
393
- {@const tooltip_value = heat_values[el.number - 1] ?? 0}
365
+ {@const tooltip_value = heat_values[el.number - 1]}
394
366
  {#if typeof tooltip == `function`}
395
367
  <div class="tooltip" {style}>
396
368
  {@render tooltip({
397
- element: el,
398
- value: tooltip_value,
399
- active: active_category === el.category ||
400
- active_element?.name === el.name,
401
- bg_color: color_overrides[el.symbol] ?? bg_color(tooltip_value, el),
402
- scale_context: { min: cs_min, max: cs_max, color_scale },
403
- })}
369
+ element: el,
370
+ value: tooltip_value ?? null,
371
+ active: active_category === el.category || active_element?.name === el.name,
372
+ bg_color: color_overrides[el.symbol] ?? bg_color(tooltip_value, el),
373
+ scale_context: { min: log ? cs_min_pos : cs_min, max: cs_max, color_scale },
374
+ })}
404
375
  </div>
405
376
  {:else if tooltip !== false}
406
377
  <div class="tooltip" {style}>
@@ -448,10 +419,7 @@
448
419
  .tooltip {
449
420
  position: absolute;
450
421
  transform: translate(-50%, -10%);
451
- background: var(
452
- --tooltip-bg,
453
- light-dark(rgba(255, 255, 255, 0.95), rgba(0, 0, 0, 0.85))
454
- );
422
+ background: var(--tooltip-bg, light-dark(rgba(255, 255, 255, 0.95), rgba(0, 0, 0, 0.85)));
455
423
  color: var(--tooltip-color, light-dark(#222, #eee));
456
424
  padding: var(--tooltip-padding, 4px 6px);
457
425
  border-radius: var(--tooltip-border-radius, var(--border-radius, 3pt));
@@ -4,12 +4,14 @@ import { ColorBar } from '../plot';
4
4
  import type { ComponentProps, Snippet } from 'svelte';
5
5
  import type { HTMLAttributes } from 'svelte/elements';
6
6
  import type { D3InterpolateName } from '../colors';
7
+ import type { MissingCellStyle } from '../heatmap-matrix';
7
8
  import type { ScaleContext } from './index';
9
+ type HeatValue = number | number[] | string | string[];
8
10
  type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
9
11
  tile_props?: Partial<ComponentProps<typeof ElementTile>>;
10
12
  show_photo?: boolean;
11
13
  disabled?: boolean;
12
- heatmap_values?: Partial<Record<ElementSymbol, number | number[] | string | string[]>> | (number | number[] | string | string[])[];
14
+ heatmap_values?: Partial<Record<ElementSymbol, HeatValue | null>> | (HeatValue | null)[];
13
15
  links?: keyof ChemicalElement | Record<ElementSymbol, string> | null;
14
16
  log?: boolean;
15
17
  color_scale?: D3InterpolateName | ((num: number) => string);
@@ -28,7 +30,7 @@ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
28
30
  color_scale_range?: [number | null, number | null];
29
31
  color_overrides?: Partial<Record<ElementSymbol, string>>;
30
32
  labels?: Partial<Record<ElementSymbol, string>>;
31
- missing_color?: string;
33
+ missing?: MissingCellStyle;
32
34
  split_layout?: `diagonal` | `horizontal` | `vertical` | `triangular` | `quadrant`;
33
35
  show_color_bar?: boolean;
34
36
  color_bar_props?: Partial<ComponentProps<typeof ColorBar>>;
@@ -41,7 +43,7 @@ type $$ComponentProps = HTMLAttributes<HTMLDivElement> & {
41
43
  tooltip?: Snippet<[
42
44
  {
43
45
  element: ChemicalElement;
44
- value: number | number[] | string | string[];
46
+ value: HeatValue | null;
45
47
  active: boolean;
46
48
  bg_color: string | null;
47
49
  scale_context: ScaleContext;
@@ -205,7 +205,7 @@
205
205
  }
206
206
  </script>
207
207
 
208
- <div {...rest} class="controls-grid {rest.class ?? ``}">
208
+ <div {...rest} class={[`controls-grid`, rest.class]}>
209
209
  <section class="category-colors">
210
210
  <h3 id="element-category-colors-reset" style="grid-column: span 2">
211
211
  Element Category Colors
@@ -220,10 +220,7 @@
220
220
  onmouseleave={() => (selected.category = null)}
221
221
  onblur={() => (selected.category = null)}
222
222
  >
223
- <input
224
- type="color"
225
- bind:value={colors.category[category]}
226
- />
223
+ <input type="color" bind:value={colors.category[category]} />
227
224
  <span>{category}</span>
228
225
  {#if colors.category[category] !== DEFAULT_CATEGORY_COLORS[category]}
229
226
  <button
@@ -262,32 +259,14 @@
262
259
 
263
260
  <label>
264
261
  <span>Inner transition offset</span>
265
- <input
266
- type="range"
267
- min="0.1"
268
- max="2"
269
- step="0.1"
270
- bind:value={inner_transition_offset}
271
- />
272
- <input
273
- type="number"
274
- min="0.1"
275
- max="2"
276
- step="0.1"
277
- bind:value={inner_transition_offset}
278
- />
262
+ <input type="range" min="0.1" max="2" step="0.1" bind:value={inner_transition_offset} />
263
+ <input type="number" min="0.1" max="2" step="0.1" bind:value={inner_transition_offset} />
279
264
  <button onclick={() => reset_property(`inner_transition_offset`)}>reset</button>
280
265
  </label>
281
266
 
282
267
  <label>
283
268
  <span>Transition duration (s)</span>
284
- <input
285
- type="range"
286
- min="0.1"
287
- max="2"
288
- step="0.1"
289
- bind:value={tile_transition_duration}
290
- />
269
+ <input type="range" min="0.1" max="2" step="0.1" bind:value={tile_transition_duration} />
291
270
  <input
292
271
  type="number"
293
272
  min="0.1"
@@ -350,39 +329,15 @@
350
329
 
351
330
  <label>
352
331
  <span>Symbol weight</span>
353
- <input
354
- type="range"
355
- min="100"
356
- max="900"
357
- step="100"
358
- bind:value={symbol_font_weight}
359
- />
360
- <input
361
- type="number"
362
- min="100"
363
- max="900"
364
- step="100"
365
- bind:value={symbol_font_weight}
366
- />
332
+ <input type="range" min="100" max="900" step="100" bind:value={symbol_font_weight} />
333
+ <input type="number" min="100" max="900" step="100" bind:value={symbol_font_weight} />
367
334
  <button onclick={() => reset_property(`symbol_font_weight`)}>reset</button>
368
335
  </label>
369
336
 
370
337
  <label>
371
338
  <span>Number weight</span>
372
- <input
373
- type="range"
374
- min="100"
375
- max="900"
376
- step="100"
377
- bind:value={number_font_weight}
378
- />
379
- <input
380
- type="number"
381
- min="100"
382
- max="900"
383
- step="100"
384
- bind:value={number_font_weight}
385
- />
339
+ <input type="range" min="100" max="900" step="100" bind:value={number_font_weight} />
340
+ <input type="number" min="100" max="900" step="100" bind:value={number_font_weight} />
386
341
  <button onclick={() => reset_property(`number_font_weight`)}>reset</button>
387
342
  </label>
388
343
  </section>
@@ -424,13 +379,7 @@
424
379
  <label>
425
380
  <span>Line height</span>
426
381
  <input type="range" min="0.8" max="2" step="0.1" bind:value={tooltip_line_height} />
427
- <input
428
- type="number"
429
- min="0.8"
430
- max="2"
431
- step="0.1"
432
- bind:value={tooltip_line_height}
433
- />
382
+ <input type="number" min="0.8" max="2" step="0.1" bind:value={tooltip_line_height} />
434
383
  <button onclick={() => reset_property(`tooltip_line_height`)}>reset</button>
435
384
  </label>
436
385
 
@@ -449,8 +398,7 @@
449
398
  <style>
450
399
  .controls-grid {
451
400
  display: grid;
452
- grid-template-columns:
453
- var(--ptable-ctrl-columns, repeat(auto-fit, minmax(320px, 1fr)));
401
+ grid-template-columns: var(--ptable-ctrl-columns, repeat(auto-fit, minmax(320px, 1fr)));
454
402
  gap: var(--ptable-ctrl-gap, 1.5em);
455
403
  margin: var(--ptable-ctrl-margin, 2em auto);
456
404
  padding: 0 1em;
@@ -2,12 +2,17 @@
2
2
  import type { Snippet } from 'svelte'
3
3
  import type { HTMLAttributes } from 'svelte/elements'
4
4
 
5
- let { as = `aside`, children, ...rest }:
6
- & HTMLAttributes<HTMLElementTagNameMap[`aside`]>
7
- & { as?: keyof HTMLElementTagNameMap; children?: Snippet } = $props()
5
+ let {
6
+ as = `aside`,
7
+ children,
8
+ ...rest
9
+ }: HTMLAttributes<HTMLElementTagNameMap[`aside`]> & {
10
+ as?: keyof HTMLElementTagNameMap
11
+ children?: Snippet
12
+ } = $props()
8
13
  </script>
9
14
 
10
- <svelte:element this={as} {...rest} class="table-inset {rest.class ?? ``}">
15
+ <svelte:element this={as} {...rest} class={[`table-inset`, rest.class]}>
11
16
  {@render children?.()}
12
17
  </svelte:element>
13
18