matterviz 0.3.2 → 0.3.4

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 (281) hide show
  1. package/dist/EmptyState.svelte +10 -2
  2. package/dist/FilePicker.svelte +123 -82
  3. package/dist/Icon.svelte +18 -12
  4. package/dist/MillerIndexInput.svelte +27 -21
  5. package/dist/api/optimade.js +6 -6
  6. package/dist/app.css +216 -207
  7. package/dist/brillouin/BrillouinZone.svelte +292 -149
  8. package/dist/brillouin/BrillouinZone.svelte.d.ts +1 -1
  9. package/dist/brillouin/BrillouinZoneControls.svelte +32 -5
  10. package/dist/brillouin/BrillouinZoneExportPane.svelte +69 -42
  11. package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
  12. package/dist/brillouin/BrillouinZoneInfoPane.svelte +99 -68
  13. package/dist/brillouin/BrillouinZoneScene.svelte +275 -163
  14. package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
  15. package/dist/brillouin/BrillouinZoneTooltip.svelte +17 -7
  16. package/dist/brillouin/compute.js +11 -6
  17. package/dist/chempot-diagram/ChemPotDiagram.svelte +162 -27
  18. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +451 -281
  19. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +2148 -1642
  20. package/dist/chempot-diagram/ChemPotScene3D.svelte +8 -5
  21. package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
  22. package/dist/chempot-diagram/async-compute.svelte.js +77 -0
  23. package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
  24. package/dist/chempot-diagram/chempot-worker.js +11 -0
  25. package/dist/chempot-diagram/color.js +1 -2
  26. package/dist/chempot-diagram/compute.d.ts +10 -0
  27. package/dist/chempot-diagram/compute.js +250 -88
  28. package/dist/chempot-diagram/index.d.ts +2 -1
  29. package/dist/chempot-diagram/index.js +2 -1
  30. package/dist/chempot-diagram/temperature.js +8 -9
  31. package/dist/chempot-diagram/types.d.ts +3 -0
  32. package/dist/chempot-diagram/types.js +1 -0
  33. package/dist/colors/index.d.ts +1 -1
  34. package/dist/colors/index.js +5 -3
  35. package/dist/composition/BarChart.svelte +128 -55
  36. package/dist/composition/BubbleChart.svelte +102 -49
  37. package/dist/composition/Composition.svelte +100 -79
  38. package/dist/composition/Formula.svelte +108 -62
  39. package/dist/composition/FormulaFilter.svelte +665 -537
  40. package/dist/composition/PieChart.svelte +183 -108
  41. package/dist/composition/format.d.ts +5 -0
  42. package/dist/composition/format.js +20 -3
  43. package/dist/composition/parse.js +14 -9
  44. package/dist/convex-hull/ConvexHull.svelte +93 -40
  45. package/dist/convex-hull/ConvexHull.svelte.d.ts +1 -1
  46. package/dist/convex-hull/ConvexHull2D.svelte +549 -360
  47. package/dist/convex-hull/ConvexHull2D.svelte.d.ts +1 -1
  48. package/dist/convex-hull/ConvexHull3D.svelte +1296 -827
  49. package/dist/convex-hull/ConvexHull3D.svelte.d.ts +1 -1
  50. package/dist/convex-hull/ConvexHull4D.svelte +1004 -688
  51. package/dist/convex-hull/ConvexHull4D.svelte.d.ts +1 -1
  52. package/dist/convex-hull/ConvexHullControls.svelte +115 -28
  53. package/dist/convex-hull/ConvexHullControls.svelte.d.ts +1 -1
  54. package/dist/convex-hull/ConvexHullInfoPane.svelte +29 -3
  55. package/dist/convex-hull/ConvexHullStats.svelte +425 -328
  56. package/dist/convex-hull/ConvexHullTooltip.svelte +40 -16
  57. package/dist/convex-hull/GasPressureControls.svelte +104 -61
  58. package/dist/convex-hull/StructurePopup.svelte +25 -4
  59. package/dist/convex-hull/TemperatureSlider.svelte +45 -25
  60. package/dist/convex-hull/barycentric-coords.js +13 -7
  61. package/dist/convex-hull/demo-temperature.js +8 -4
  62. package/dist/convex-hull/gas-thermodynamics.js +17 -12
  63. package/dist/convex-hull/helpers.d.ts +9 -0
  64. package/dist/convex-hull/helpers.js +77 -34
  65. package/dist/convex-hull/thermodynamics.js +61 -56
  66. package/dist/convex-hull/types.d.ts +9 -14
  67. package/dist/convex-hull/types.js +0 -17
  68. package/dist/coordination/CoordinationBarPlot.svelte +227 -154
  69. package/dist/element/BohrAtom.svelte +55 -12
  70. package/dist/element/ElementHeading.svelte +7 -2
  71. package/dist/element/ElementPhoto.svelte +15 -9
  72. package/dist/element/ElementStats.svelte +10 -4
  73. package/dist/element/ElementTile.svelte +137 -73
  74. package/dist/element/Nucleus.svelte +39 -11
  75. package/dist/element/data.js +1 -1
  76. package/dist/feedback/ClickFeedback.svelte +16 -5
  77. package/dist/feedback/DragOverlay.svelte +10 -2
  78. package/dist/feedback/Spinner.svelte +4 -2
  79. package/dist/feedback/StatusMessage.svelte +8 -2
  80. package/dist/fermi-surface/FermiSlice.svelte +118 -88
  81. package/dist/fermi-surface/FermiSurface.svelte +328 -187
  82. package/dist/fermi-surface/FermiSurface.svelte.d.ts +1 -1
  83. package/dist/fermi-surface/FermiSurfaceControls.svelte +113 -46
  84. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
  85. package/dist/fermi-surface/FermiSurfaceScene.svelte +535 -342
  86. package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
  87. package/dist/fermi-surface/FermiSurfaceTooltip.svelte +14 -5
  88. package/dist/fermi-surface/compute.js +16 -20
  89. package/dist/fermi-surface/parse.js +24 -14
  90. package/dist/fermi-surface/symmetry.js +2 -7
  91. package/dist/fermi-surface/types.d.ts +3 -5
  92. package/dist/heatmap-matrix/HeatmapMatrix.svelte +1019 -765
  93. package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +1 -1
  94. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +76 -22
  95. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +2 -3
  96. package/dist/icons.js +47 -0
  97. package/dist/index.d.ts +2 -1
  98. package/dist/index.js +2 -1
  99. package/dist/io/decompress.js +1 -1
  100. package/dist/io/export.d.ts +3 -0
  101. package/dist/io/export.js +129 -143
  102. package/dist/io/is-binary.js +2 -3
  103. package/dist/io/url-drop.js +1 -2
  104. package/dist/isosurface/Isosurface.svelte +202 -148
  105. package/dist/isosurface/IsosurfaceControls.svelte +46 -28
  106. package/dist/isosurface/parse.js +34 -29
  107. package/dist/isosurface/slice.js +5 -10
  108. package/dist/isosurface/types.d.ts +2 -1
  109. package/dist/isosurface/types.js +61 -12
  110. package/dist/labels.js +11 -8
  111. package/dist/layout/FullscreenToggle.svelte +11 -2
  112. package/dist/layout/InfoCard.svelte +38 -6
  113. package/dist/layout/InfoTag.svelte +63 -32
  114. package/dist/layout/PropertyFilter.svelte +82 -37
  115. package/dist/layout/SettingsSection.svelte +85 -55
  116. package/dist/layout/SubpageGrid.svelte +10 -2
  117. package/dist/layout/json-tree/JsonNode.svelte +183 -138
  118. package/dist/layout/json-tree/JsonTree.svelte +499 -413
  119. package/dist/layout/json-tree/JsonValue.svelte +127 -99
  120. package/dist/layout/json-tree/utils.js +4 -2
  121. package/dist/marching-cubes.js +25 -2
  122. package/dist/math.d.ts +13 -17
  123. package/dist/math.js +133 -67
  124. package/dist/overlays/ContextMenu.svelte +65 -40
  125. package/dist/overlays/DraggablePane.svelte +211 -139
  126. package/dist/periodic-table/PeriodicTable.svelte +278 -145
  127. package/dist/periodic-table/PeriodicTableControls.svelte +178 -128
  128. package/dist/periodic-table/PropertySelect.svelte +25 -7
  129. package/dist/periodic-table/TableInset.svelte +8 -3
  130. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +446 -309
  131. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +1 -1
  132. package/dist/phase-diagram/PhaseDiagramControls.svelte +102 -43
  133. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +1 -1
  134. package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +63 -40
  135. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +71 -28
  136. package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +1 -1
  137. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +158 -101
  138. package/dist/phase-diagram/TdbInfoPanel.svelte +28 -4
  139. package/dist/phase-diagram/build-diagram.js +9 -9
  140. package/dist/phase-diagram/colors.js +1 -3
  141. package/dist/phase-diagram/parse.js +10 -9
  142. package/dist/phase-diagram/svg-to-diagram.js +53 -49
  143. package/dist/phase-diagram/utils.d.ts +1 -0
  144. package/dist/phase-diagram/utils.js +80 -25
  145. package/dist/plot/AxisLabel.svelte +28 -3
  146. package/dist/plot/BarPlot.svelte +1182 -734
  147. package/dist/plot/BarPlot.svelte.d.ts +2 -2
  148. package/dist/plot/BarPlotControls.svelte +31 -5
  149. package/dist/plot/BarPlotControls.svelte.d.ts +1 -1
  150. package/dist/plot/ColorBar.svelte +479 -329
  151. package/dist/plot/ColorScaleSelect.svelte +27 -6
  152. package/dist/plot/ElementScatter.svelte +36 -15
  153. package/dist/plot/FillArea.svelte +152 -95
  154. package/dist/plot/Histogram.svelte +934 -571
  155. package/dist/plot/Histogram.svelte.d.ts +1 -1
  156. package/dist/plot/HistogramControls.svelte +53 -9
  157. package/dist/plot/HistogramControls.svelte.d.ts +1 -1
  158. package/dist/plot/InteractiveAxisLabel.svelte +34 -11
  159. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +1 -1
  160. package/dist/plot/Line.svelte +63 -28
  161. package/dist/plot/PlotControls.svelte +157 -114
  162. package/dist/plot/PlotControls.svelte.d.ts +1 -1
  163. package/dist/plot/PlotLegend.svelte +174 -91
  164. package/dist/plot/PlotTooltip.svelte +45 -6
  165. package/dist/plot/PortalSelect.svelte +175 -147
  166. package/dist/plot/ReferenceLine.svelte +76 -22
  167. package/dist/plot/ReferenceLine3D.svelte +132 -107
  168. package/dist/plot/ReferencePlane.svelte +146 -121
  169. package/dist/plot/ScatterPlot.svelte +1681 -1091
  170. package/dist/plot/ScatterPlot.svelte.d.ts +2 -2
  171. package/dist/plot/ScatterPlot3D.svelte +256 -131
  172. package/dist/plot/ScatterPlot3D.svelte.d.ts +2 -2
  173. package/dist/plot/ScatterPlot3DControls.svelte +113 -63
  174. package/dist/plot/ScatterPlot3DControls.svelte.d.ts +2 -1
  175. package/dist/plot/ScatterPlot3DScene.svelte +608 -403
  176. package/dist/plot/ScatterPlot3DScene.svelte.d.ts +2 -2
  177. package/dist/plot/ScatterPlotControls.svelte +65 -25
  178. package/dist/plot/ScatterPlotControls.svelte.d.ts +1 -1
  179. package/dist/plot/ScatterPoint.svelte +98 -26
  180. package/dist/plot/ScatterPoint.svelte.d.ts +1 -0
  181. package/dist/plot/SpacegroupBarPlot.svelte +142 -85
  182. package/dist/plot/Surface3D.svelte +159 -108
  183. package/dist/plot/ZeroLines.svelte +55 -3
  184. package/dist/plot/ZoomRect.svelte +4 -2
  185. package/dist/plot/axis-utils.js +1 -3
  186. package/dist/plot/data-cleaning.js +12 -28
  187. package/dist/plot/data-transform.js +2 -1
  188. package/dist/plot/fill-utils.js +2 -0
  189. package/dist/plot/layout.d.ts +4 -1
  190. package/dist/plot/layout.js +33 -14
  191. package/dist/plot/reference-line.d.ts +2 -2
  192. package/dist/plot/reference-line.js +7 -5
  193. package/dist/plot/scales.js +24 -36
  194. package/dist/plot/types.d.ts +11 -23
  195. package/dist/plot/types.js +6 -11
  196. package/dist/plot/utils/label-placement.d.ts +32 -15
  197. package/dist/plot/utils/label-placement.js +227 -66
  198. package/dist/plot/utils/series-visibility.js +2 -3
  199. package/dist/rdf/RdfPlot.svelte +143 -91
  200. package/dist/rdf/calc-rdf.js +4 -5
  201. package/dist/sanitize.d.ts +4 -0
  202. package/dist/sanitize.js +107 -0
  203. package/dist/settings.d.ts +18 -6
  204. package/dist/settings.js +46 -16
  205. package/dist/spectral/Bands.svelte +632 -453
  206. package/dist/spectral/BandsAndDos.svelte +90 -49
  207. package/dist/spectral/BrillouinBandsDos.svelte +151 -93
  208. package/dist/spectral/Dos.svelte +389 -258
  209. package/dist/spectral/helpers.js +55 -43
  210. package/dist/state.svelte.d.ts +1 -1
  211. package/dist/state.svelte.js +3 -2
  212. package/dist/structure/Arrow.svelte +59 -20
  213. package/dist/structure/AtomLegend.svelte +215 -134
  214. package/dist/structure/Bond.svelte +73 -47
  215. package/dist/structure/CanvasTooltip.svelte +10 -2
  216. package/dist/structure/CellSelect.svelte +72 -45
  217. package/dist/structure/Cylinder.svelte +33 -17
  218. package/dist/structure/Lattice.svelte +88 -33
  219. package/dist/structure/Structure.svelte +1063 -797
  220. package/dist/structure/Structure.svelte.d.ts +1 -1
  221. package/dist/structure/StructureControls.svelte +349 -118
  222. package/dist/structure/StructureExportPane.svelte +124 -89
  223. package/dist/structure/StructureExportPane.svelte.d.ts +1 -1
  224. package/dist/structure/StructureInfoPane.svelte +304 -237
  225. package/dist/structure/StructureScene.svelte +879 -443
  226. package/dist/structure/StructureScene.svelte.d.ts +15 -7
  227. package/dist/structure/atom-properties.js +8 -8
  228. package/dist/structure/bonding.js +6 -7
  229. package/dist/structure/export.js +14 -29
  230. package/dist/structure/ferrox-wasm.js +1 -1
  231. package/dist/structure/index.d.ts +13 -3
  232. package/dist/structure/index.js +83 -23
  233. package/dist/structure/measure.d.ts +2 -2
  234. package/dist/structure/measure.js +4 -44
  235. package/dist/structure/parse.js +113 -141
  236. package/dist/structure/partial-occupancy.js +7 -10
  237. package/dist/structure/pbc.d.ts +1 -0
  238. package/dist/structure/pbc.js +16 -6
  239. package/dist/structure/supercell.d.ts +2 -2
  240. package/dist/structure/supercell.js +12 -22
  241. package/dist/structure/validation.js +1 -2
  242. package/dist/symmetry/SymmetryStats.svelte +84 -41
  243. package/dist/symmetry/WyckoffTable.svelte +26 -6
  244. package/dist/symmetry/cell-transform.js +5 -3
  245. package/dist/symmetry/index.js +8 -7
  246. package/dist/symmetry/spacegroups.js +148 -148
  247. package/dist/table/HeatmapTable.svelte +790 -554
  248. package/dist/table/HeatmapTable.svelte.d.ts +1 -1
  249. package/dist/table/ToggleMenu.svelte +125 -92
  250. package/dist/table/index.js +2 -4
  251. package/dist/theme/ThemeControl.svelte +21 -12
  252. package/dist/time.js +4 -1
  253. package/dist/tooltip/TooltipContent.svelte +33 -8
  254. package/dist/trajectory/Trajectory.svelte +758 -558
  255. package/dist/trajectory/TrajectoryError.svelte +14 -3
  256. package/dist/trajectory/TrajectoryExportPane.svelte +137 -83
  257. package/dist/trajectory/TrajectoryInfoPane.svelte +272 -143
  258. package/dist/trajectory/extract.js +10 -26
  259. package/dist/trajectory/format-detect.js +5 -5
  260. package/dist/trajectory/frame-reader.d.ts +1 -1
  261. package/dist/trajectory/frame-reader.js +5 -12
  262. package/dist/trajectory/helpers.d.ts +0 -1
  263. package/dist/trajectory/helpers.js +2 -17
  264. package/dist/trajectory/index.js +14 -12
  265. package/dist/trajectory/parse/ase.js +5 -4
  266. package/dist/trajectory/parse/hdf5.js +26 -18
  267. package/dist/trajectory/parse/index.js +13 -18
  268. package/dist/trajectory/parse/lammps.js +17 -7
  269. package/dist/trajectory/parse/vasp.js +5 -2
  270. package/dist/trajectory/parse/xyz.js +8 -7
  271. package/dist/trajectory/plotting.js +13 -8
  272. package/dist/utils.d.ts +1 -0
  273. package/dist/utils.js +13 -0
  274. package/dist/xrd/XrdPlot.svelte +337 -247
  275. package/dist/xrd/broadening.js +14 -9
  276. package/dist/xrd/calc-xrd.js +12 -18
  277. package/dist/xrd/parse.d.ts +1 -1
  278. package/dist/xrd/parse.js +17 -17
  279. package/package.json +99 -103
  280. package/readme.md +1 -1
  281. /package/dist/theme/{themes.js → themes.mjs} +0 -0
@@ -1,12 +1,57 @@
1
- <script lang="ts">import { DEFAULT_CATEGORY_COLORS } from '../colors';
2
- import { colors, selected } from '../state.svelte';
3
- let { tile_gap = $bindable(`0.3cqw`), symbol_font_size = $bindable(40), number_font_size = $bindable(22), name_font_size = $bindable(12), value_font_size = $bindable(18), tooltip_font_size = $bindable(14), tooltip_bg_color = $bindable(`#000000`), tile_border_radius = $bindable(1), inner_transition_offset = $bindable(0.5), tile_font_color = $bindable(`#ffffff`),
4
- // Additional Element Tile controls
5
- tile_transition_duration = $bindable(0.4), hover_border_width = $bindable(1), symbol_font_weight = $bindable(400), number_font_weight = $bindable(300),
6
- // Additional Tooltip controls
7
- tooltip_border_radius = $bindable(6), tooltip_padding = $bindable(`4px 6px`), tooltip_line_height = $bindable(1.2), tooltip_text_align = $bindable(`center`), ...rest } = $props();
8
- // Default values for easy reset
9
- const defaults = {
1
+ <script lang="ts">
2
+ import type { ElementCategory } from '../element'
3
+ import { DEFAULT_CATEGORY_COLORS } from '../colors'
4
+ import { colors, selected } from '../state.svelte'
5
+ import type { HTMLAttributes } from 'svelte/elements'
6
+
7
+ let {
8
+ tile_gap = $bindable(`0.3cqw`),
9
+ symbol_font_size = $bindable(40),
10
+ number_font_size = $bindable(22),
11
+ name_font_size = $bindable(12),
12
+ value_font_size = $bindable(18),
13
+ tooltip_font_size = $bindable(14),
14
+ tooltip_bg_color = $bindable(`#000000`),
15
+ tile_border_radius = $bindable(1),
16
+ inner_transition_offset = $bindable(0.5),
17
+ tile_font_color = $bindable(`#ffffff`),
18
+ // Additional Element Tile controls
19
+ tile_transition_duration = $bindable(0.4),
20
+ hover_border_width = $bindable(1),
21
+ symbol_font_weight = $bindable(400),
22
+ number_font_weight = $bindable(300),
23
+ // Additional Tooltip controls
24
+ tooltip_border_radius = $bindable(6),
25
+ tooltip_padding = $bindable(`4px 6px`),
26
+ tooltip_line_height = $bindable(1.2),
27
+ tooltip_text_align = $bindable(`center`),
28
+ ...rest
29
+ }: HTMLAttributes<HTMLDivElement> & {
30
+ // Appearance control values
31
+ tile_gap?: string
32
+ symbol_font_size?: number
33
+ number_font_size?: number
34
+ name_font_size?: number
35
+ value_font_size?: number
36
+ tooltip_font_size?: number
37
+ tooltip_bg_color?: string
38
+ tile_border_radius?: number
39
+ inner_transition_offset?: number
40
+ tile_font_color?: string
41
+ // Additional Element Tile controls
42
+ tile_transition_duration?: number
43
+ hover_border_width?: number
44
+ symbol_font_weight?: number
45
+ number_font_weight?: number
46
+ // Additional Tooltip controls
47
+ tooltip_border_radius?: number
48
+ tooltip_padding?: string
49
+ tooltip_line_height?: number
50
+ tooltip_text_align?: string
51
+ } = $props()
52
+
53
+ // Default values for easy reset
54
+ const defaults = {
10
55
  tile_gap: `0.3cqw`,
11
56
  symbol_font_size: 40,
12
57
  number_font_size: 22,
@@ -25,134 +70,139 @@ const defaults = {
25
70
  tooltip_padding: `4px 6px`,
26
71
  tooltip_line_height: 1.2,
27
72
  tooltip_text_align: `center`,
28
- };
29
- // Apply CSS custom properties to document root
30
- $effect(() => {
73
+ }
74
+
75
+ // Apply CSS custom properties to document root
76
+ $effect(() => {
31
77
  if (typeof document !== `undefined`) {
32
- const css_vars = {
33
- '--ptable-gap': tile_gap,
34
- '--elem-symbol-font-size': `${symbol_font_size}cqw`,
35
- '--elem-number-font-size': `${number_font_size}cqw`,
36
- '--elem-name-font-size': `${name_font_size}cqw`,
37
- '--elem-value-font-size': `${value_font_size}cqw`,
38
- '--tooltip-font-size': `${tooltip_font_size}px`,
39
- '--tooltip-bg': tooltip_bg_color,
40
- '--elem-tile-border-radius': `${tile_border_radius}pt`,
41
- '--ptable-spacer-ratio': `${1 / inner_transition_offset}`,
42
- '--elem-tile-font-color': tile_font_color,
43
- '--elem-tile-transition-duration': `${tile_transition_duration}s`,
44
- '--elem-tile-hover-border-width': `${hover_border_width}px`,
45
- '--elem-symbol-font-weight': `${symbol_font_weight}`,
46
- '--elem-number-font-weight': `${number_font_weight}`,
47
- '--tooltip-border-radius': `${tooltip_border_radius}px`,
48
- '--tooltip-padding': tooltip_padding,
49
- '--tooltip-line-height': `${tooltip_line_height}`,
50
- '--tooltip-text-align': tooltip_text_align,
51
- };
52
- for (const [prop, val] of Object.entries(css_vars)) {
53
- document.documentElement.style.setProperty(prop, val);
54
- }
78
+ const css_vars = {
79
+ '--ptable-gap': tile_gap,
80
+ '--elem-symbol-font-size': `${symbol_font_size}cqw`,
81
+ '--elem-number-font-size': `${number_font_size}cqw`,
82
+ '--elem-name-font-size': `${name_font_size}cqw`,
83
+ '--elem-value-font-size': `${value_font_size}cqw`,
84
+ '--tooltip-font-size': `${tooltip_font_size}px`,
85
+ '--tooltip-bg': tooltip_bg_color,
86
+ '--elem-tile-border-radius': `${tile_border_radius}pt`,
87
+ '--ptable-spacer-ratio': `${1 / inner_transition_offset}`,
88
+ '--elem-tile-font-color': tile_font_color,
89
+ '--elem-tile-transition-duration': `${tile_transition_duration}s`,
90
+ '--elem-tile-hover-border-width': `${hover_border_width}px`,
91
+ '--elem-symbol-font-weight': `${symbol_font_weight}`,
92
+ '--elem-number-font-weight': `${number_font_weight}`,
93
+ '--tooltip-border-radius': `${tooltip_border_radius}px`,
94
+ '--tooltip-padding': tooltip_padding,
95
+ '--tooltip-line-height': `${tooltip_line_height}`,
96
+ '--tooltip-text-align': tooltip_text_align,
97
+ }
98
+
99
+ for (const [prop, val] of Object.entries(css_vars)) {
100
+ document.documentElement.style.setProperty(prop, val)
101
+ }
55
102
  }
56
- });
57
- // Generic reset function using simple object key access
58
- function reset_property(prop) {
59
- const default_value = defaults[prop];
103
+ })
104
+
105
+ // Generic reset function using simple object key access
106
+ function reset_property(prop: keyof typeof defaults): void {
107
+ const default_value = defaults[prop]
108
+
60
109
  // Use simple assignment based on property name
61
- if (prop === `tile_gap`)
62
- tile_gap = default_value;
63
- else if (prop === `symbol_font_size`)
64
- symbol_font_size = default_value;
65
- else if (prop === `number_font_size`)
66
- number_font_size = default_value;
67
- else if (prop === `name_font_size`)
68
- name_font_size = default_value;
69
- else if (prop === `value_font_size`)
70
- value_font_size = default_value;
71
- else if (prop === `tooltip_font_size`)
72
- tooltip_font_size = default_value;
73
- else if (prop === `tooltip_bg_color`)
74
- tooltip_bg_color = default_value;
75
- else if (prop === `tile_border_radius`)
76
- tile_border_radius = Number(default_value);
110
+ if (prop === `tile_gap`) tile_gap = default_value as string
111
+ else if (prop === `symbol_font_size`) symbol_font_size = default_value as number
112
+ else if (prop === `number_font_size`) number_font_size = default_value as number
113
+ else if (prop === `name_font_size`) name_font_size = default_value as number
114
+ else if (prop === `value_font_size`) value_font_size = default_value as number
115
+ else if (prop === `tooltip_font_size`) tooltip_font_size = default_value as number
116
+ else if (prop === `tooltip_bg_color`) tooltip_bg_color = default_value as string
117
+ else if (prop === `tile_border_radius`) tile_border_radius = Number(default_value)
77
118
  else if (prop === `inner_transition_offset`) {
78
- inner_transition_offset = Number(default_value);
79
- }
80
- else if (prop === `tile_font_color`)
81
- tile_font_color = String(default_value);
119
+ inner_transition_offset = Number(default_value)
120
+ } else if (prop === `tile_font_color`) tile_font_color = String(default_value)
82
121
  else if (prop === `tile_transition_duration`) {
83
- tile_transition_duration = Number(default_value);
84
- }
85
- else if (prop === `hover_border_width`) {
86
- hover_border_width = Number(default_value);
87
- }
88
- else if (prop === `symbol_font_weight`) {
89
- symbol_font_weight = Number(default_value);
90
- }
91
- else if (prop === `number_font_weight`) {
92
- number_font_weight = Number(default_value);
93
- }
94
- else if (prop === `tooltip_border_radius`) {
95
- tooltip_border_radius = Number(default_value);
96
- }
97
- else if (prop === `tooltip_padding`)
98
- tooltip_padding = String(default_value);
122
+ tile_transition_duration = Number(default_value)
123
+ } else if (prop === `hover_border_width`) {
124
+ hover_border_width = Number(default_value)
125
+ } else if (prop === `symbol_font_weight`) {
126
+ symbol_font_weight = Number(default_value)
127
+ } else if (prop === `number_font_weight`) {
128
+ number_font_weight = Number(default_value)
129
+ } else if (prop === `tooltip_border_radius`) {
130
+ tooltip_border_radius = Number(default_value)
131
+ } else if (prop === `tooltip_padding`) tooltip_padding = String(default_value)
99
132
  else if (prop === `tooltip_line_height`) {
100
- tooltip_line_height = Number(default_value);
101
- }
102
- else if (prop === `tooltip_text_align`) {
103
- tooltip_text_align = String(default_value);
133
+ tooltip_line_height = Number(default_value)
134
+ } else if (prop === `tooltip_text_align`) {
135
+ tooltip_text_align = String(default_value)
104
136
  }
105
- }
106
- // Check if settings in each section have been modified from defaults
107
- let category_colors_modified = $derived(Object.keys(colors.category).some((key) => colors.category[key] !== DEFAULT_CATEGORY_COLORS[key]));
108
- let tiles_modified = $derived(tile_gap !== defaults.tile_gap ||
109
- tile_border_radius !== defaults.tile_border_radius ||
110
- inner_transition_offset !== defaults.inner_transition_offset ||
111
- tile_transition_duration !== defaults.tile_transition_duration ||
112
- hover_border_width !== defaults.hover_border_width ||
113
- tile_font_color !== defaults.tile_font_color);
114
- let fonts_modified = $derived(symbol_font_size !== defaults.symbol_font_size ||
115
- number_font_size !== defaults.number_font_size ||
116
- name_font_size !== defaults.name_font_size ||
117
- value_font_size !== defaults.value_font_size ||
118
- symbol_font_weight !== defaults.symbol_font_weight ||
119
- number_font_weight !== defaults.number_font_weight);
120
- let tooltip_modified = $derived(tooltip_font_size !== defaults.tooltip_font_size ||
121
- tooltip_bg_color !== defaults.tooltip_bg_color ||
122
- tooltip_border_radius !== defaults.tooltip_border_radius ||
123
- tooltip_padding !== defaults.tooltip_padding ||
124
- tooltip_line_height !== defaults.tooltip_line_height ||
125
- tooltip_text_align !== defaults.tooltip_text_align);
126
- // Reset functions for each section
127
- function reset_category_colors() {
137
+ }
138
+
139
+ // Check if settings in each section have been modified from defaults
140
+ let category_colors_modified = $derived(
141
+ Object.keys(colors.category).some(
142
+ (key) => colors.category[key] !== DEFAULT_CATEGORY_COLORS[key],
143
+ ),
144
+ )
145
+
146
+ let tiles_modified = $derived(
147
+ tile_gap !== defaults.tile_gap ||
148
+ tile_border_radius !== defaults.tile_border_radius ||
149
+ inner_transition_offset !== defaults.inner_transition_offset ||
150
+ tile_transition_duration !== defaults.tile_transition_duration ||
151
+ hover_border_width !== defaults.hover_border_width ||
152
+ tile_font_color !== defaults.tile_font_color,
153
+ )
154
+
155
+ let fonts_modified = $derived(
156
+ symbol_font_size !== defaults.symbol_font_size ||
157
+ number_font_size !== defaults.number_font_size ||
158
+ name_font_size !== defaults.name_font_size ||
159
+ value_font_size !== defaults.value_font_size ||
160
+ symbol_font_weight !== defaults.symbol_font_weight ||
161
+ number_font_weight !== defaults.number_font_weight,
162
+ )
163
+
164
+ let tooltip_modified = $derived(
165
+ tooltip_font_size !== defaults.tooltip_font_size ||
166
+ tooltip_bg_color !== defaults.tooltip_bg_color ||
167
+ tooltip_border_radius !== defaults.tooltip_border_radius ||
168
+ tooltip_padding !== defaults.tooltip_padding ||
169
+ tooltip_line_height !== defaults.tooltip_line_height ||
170
+ tooltip_text_align !== defaults.tooltip_text_align,
171
+ )
172
+
173
+ // Reset functions for each section
174
+ function reset_category_colors(): void {
128
175
  for (const key of Object.keys(colors.category)) {
129
- colors.category[key] = DEFAULT_CATEGORY_COLORS[key];
176
+ colors.category[key] = DEFAULT_CATEGORY_COLORS[key]
130
177
  }
131
- }
132
- function reset_tiles() {
133
- tile_gap = defaults.tile_gap;
134
- tile_border_radius = defaults.tile_border_radius;
135
- inner_transition_offset = defaults.inner_transition_offset;
136
- tile_transition_duration = defaults.tile_transition_duration;
137
- hover_border_width = defaults.hover_border_width;
138
- tile_font_color = defaults.tile_font_color;
139
- }
140
- function reset_fonts() {
141
- symbol_font_size = defaults.symbol_font_size;
142
- number_font_size = defaults.number_font_size;
143
- name_font_size = defaults.name_font_size;
144
- value_font_size = defaults.value_font_size;
145
- symbol_font_weight = defaults.symbol_font_weight;
146
- number_font_weight = defaults.number_font_weight;
147
- }
148
- function reset_tooltip() {
149
- tooltip_font_size = defaults.tooltip_font_size;
150
- tooltip_bg_color = defaults.tooltip_bg_color;
151
- tooltip_border_radius = defaults.tooltip_border_radius;
152
- tooltip_padding = defaults.tooltip_padding;
153
- tooltip_line_height = defaults.tooltip_line_height;
154
- tooltip_text_align = defaults.tooltip_text_align;
155
- }
178
+ }
179
+
180
+ function reset_tiles(): void {
181
+ tile_gap = defaults.tile_gap
182
+ tile_border_radius = defaults.tile_border_radius
183
+ inner_transition_offset = defaults.inner_transition_offset
184
+ tile_transition_duration = defaults.tile_transition_duration
185
+ hover_border_width = defaults.hover_border_width
186
+ tile_font_color = defaults.tile_font_color
187
+ }
188
+
189
+ function reset_fonts(): void {
190
+ symbol_font_size = defaults.symbol_font_size
191
+ number_font_size = defaults.number_font_size
192
+ name_font_size = defaults.name_font_size
193
+ value_font_size = defaults.value_font_size
194
+ symbol_font_weight = defaults.symbol_font_weight
195
+ number_font_weight = defaults.number_font_weight
196
+ }
197
+
198
+ function reset_tooltip(): void {
199
+ tooltip_font_size = defaults.tooltip_font_size
200
+ tooltip_bg_color = defaults.tooltip_bg_color
201
+ tooltip_border_radius = defaults.tooltip_border_radius
202
+ tooltip_padding = defaults.tooltip_padding
203
+ tooltip_line_height = defaults.tooltip_line_height
204
+ tooltip_text_align = defaults.tooltip_text_align
205
+ }
156
206
  </script>
157
207
 
158
208
  <div {...rest} class="controls-grid {rest.class ?? ``}">
@@ -1,10 +1,28 @@
1
- <script lang="ts">import { ELEM_HEATMAP_LABELS } from '../labels';
2
- import Select from 'svelte-multiselect';
3
- const options = Object.keys(ELEM_HEATMAP_LABELS);
4
- let { value = $bindable(null), empty = false, selected = empty ? [] : [options[1]], minSelect = 0, key = $bindable(null), ...rest } = $props();
5
- $effect.pre(() => {
6
- key = ELEM_HEATMAP_LABELS[value ?? ``] ?? null;
7
- });
1
+ <script lang="ts">
2
+ import type { ChemicalElement } from '../element'
3
+ import { ELEM_HEATMAP_LABELS } from '../labels'
4
+ import type { ComponentProps } from 'svelte'
5
+ import Select from 'svelte-multiselect'
6
+
7
+ const options = Object.keys(ELEM_HEATMAP_LABELS)
8
+ let {
9
+ value = $bindable(null),
10
+ empty = false,
11
+ selected = empty ? [] : [options[1]],
12
+ minSelect = 0,
13
+ key = $bindable(null),
14
+ ...rest
15
+ }: Omit<ComponentProps<typeof Select>, `options` | `key`> & {
16
+ value?: keyof ChemicalElement | null
17
+ empty?: boolean
18
+ selected?: string[]
19
+ minSelect?: number
20
+ key?: string | null
21
+ } = $props()
22
+
23
+ $effect.pre(() => {
24
+ key = ELEM_HEATMAP_LABELS[value ?? ``] ?? null
25
+ })
8
26
  </script>
9
27
 
10
28
  <Select
@@ -1,5 +1,10 @@
1
- <script lang="ts">let { as = `aside`, children, ...rest } = $props();
2
- export {};
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte'
3
+ import type { HTMLAttributes } from 'svelte/elements'
4
+
5
+ let { as = `aside`, children, ...rest }:
6
+ & HTMLAttributes<HTMLElementTagNameMap[`aside`]>
7
+ & { as?: keyof HTMLElementTagNameMap; children?: Snippet } = $props()
3
8
  </script>
4
9
 
5
10
  <svelte:element this={as} {...rest} class="table-inset {rest.class ?? ``}">
@@ -15,6 +20,6 @@ export {};
15
20
  container-type: inline-size;
16
21
  container-name: table-inset;
17
22
  overflow: visible;
18
- padding: var(--ptable-inset-padding, 0 0 5px 15px);
23
+ padding: var(--ptable-inset-padding);
19
24
  }
20
25
  </style>