matterviz 0.4.2 → 0.4.3

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 (244) hide show
  1. package/dist/FilePicker.svelte +40 -50
  2. package/dist/api/optimade.js +10 -7
  3. package/dist/app.css +15 -0
  4. package/dist/brillouin/BrillouinZone.svelte +18 -9
  5. package/dist/brillouin/BrillouinZoneScene.svelte +20 -29
  6. package/dist/brillouin/compute.js +10 -16
  7. package/dist/brillouin/geometry.js +2 -2
  8. package/dist/chempot-diagram/ChemPotDiagram.svelte +18 -15
  9. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +17 -113
  10. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +104 -264
  11. package/dist/chempot-diagram/async-compute.svelte.js +12 -13
  12. package/dist/chempot-diagram/color.d.ts +21 -1
  13. package/dist/chempot-diagram/color.js +70 -1
  14. package/dist/chempot-diagram/compute.d.ts +7 -0
  15. package/dist/chempot-diagram/compute.js +85 -26
  16. package/dist/chempot-diagram/export.js +1 -6
  17. package/dist/chempot-diagram/temperature.js +9 -10
  18. package/dist/composition/BarChart.svelte +7 -9
  19. package/dist/composition/Composition.svelte +3 -8
  20. package/dist/composition/Formula.svelte +2 -2
  21. package/dist/composition/FormulaFilter.svelte +27 -93
  22. package/dist/composition/format.js +6 -8
  23. package/dist/composition/parse.js +50 -105
  24. package/dist/constants.d.ts +0 -1
  25. package/dist/constants.js +6 -17
  26. package/dist/convex-hull/ConvexHull2D.svelte +0 -2
  27. package/dist/convex-hull/ConvexHull3D.svelte +19 -47
  28. package/dist/convex-hull/ConvexHull4D.svelte +65 -95
  29. package/dist/convex-hull/StructurePopup.svelte +1 -1
  30. package/dist/convex-hull/gas-thermodynamics.js +21 -53
  31. package/dist/convex-hull/helpers.js +1 -7
  32. package/dist/convex-hull/thermodynamics.js +19 -27
  33. package/dist/coordination/CoordinationBarPlot.svelte +12 -21
  34. package/dist/element/BohrAtom.svelte +0 -1
  35. package/dist/element/ElementTile.svelte +26 -44
  36. package/dist/element/data.d.ts +2 -0
  37. package/dist/element/data.js +5 -1
  38. package/dist/element/index.d.ts +1 -1
  39. package/dist/element/index.js +1 -1
  40. package/dist/fermi-surface/FermiSurface.svelte +22 -23
  41. package/dist/fermi-surface/FermiSurface.svelte.d.ts +2 -6
  42. package/dist/fermi-surface/FermiSurfaceScene.svelte +32 -77
  43. package/dist/fermi-surface/compute.js +22 -55
  44. package/dist/fermi-surface/parse.js +38 -70
  45. package/dist/file-viewer/JsonBrowser.svelte +1043 -0
  46. package/dist/file-viewer/JsonBrowser.svelte.d.ts +9 -0
  47. package/dist/file-viewer/PlotPanel.svelte +350 -0
  48. package/dist/file-viewer/PlotPanel.svelte.d.ts +9 -0
  49. package/dist/file-viewer/TrajectoryWithDos.svelte +30 -0
  50. package/dist/file-viewer/TrajectoryWithDos.svelte.d.ts +10 -0
  51. package/dist/file-viewer/detect.d.ts +11 -0
  52. package/dist/file-viewer/detect.js +381 -0
  53. package/dist/file-viewer/eligibility.d.ts +4 -0
  54. package/dist/file-viewer/eligibility.js +53 -0
  55. package/dist/file-viewer/host-protocol.d.ts +50 -0
  56. package/dist/file-viewer/host-transfer.d.ts +25 -0
  57. package/dist/file-viewer/host-transfer.js +42 -0
  58. package/dist/file-viewer/index.d.ts +5 -0
  59. package/dist/file-viewer/index.js +5 -0
  60. package/dist/file-viewer/main.d.ts +44 -0
  61. package/dist/file-viewer/main.js +535 -0
  62. package/dist/file-viewer/parse.d.ts +9 -0
  63. package/dist/file-viewer/parse.js +170 -0
  64. package/dist/file-viewer/plot-utils.d.ts +24 -0
  65. package/dist/file-viewer/plot-utils.js +191 -0
  66. package/dist/file-viewer/types.d.ts +4 -0
  67. package/dist/file-viewer/types.js +5 -0
  68. package/dist/heatmap-matrix/HeatmapMatrix.svelte +57 -84
  69. package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +1 -1
  70. package/dist/index.d.ts +2 -2
  71. package/dist/index.js +1 -1
  72. package/dist/io/ExportPane.svelte +1 -1
  73. package/dist/io/decompress.d.ts +2 -0
  74. package/dist/io/decompress.js +3 -2
  75. package/dist/io/export.d.ts +7 -4
  76. package/dist/io/export.js +70 -18
  77. package/dist/io/file-drop.js +60 -35
  78. package/dist/io/url-drop.d.ts +2 -0
  79. package/dist/io/url-drop.js +28 -16
  80. package/dist/isosurface/Isosurface.svelte +687 -196
  81. package/dist/isosurface/Isosurface.svelte.d.ts +7 -1
  82. package/dist/isosurface/IsosurfaceControls.svelte +564 -85
  83. package/dist/isosurface/IsosurfaceControls.svelte.d.ts +1 -1
  84. package/dist/isosurface/VolumeSlice.svelte +224 -0
  85. package/dist/isosurface/VolumeSlice.svelte.d.ts +28 -0
  86. package/dist/isosurface/coloring.d.ts +20 -0
  87. package/dist/isosurface/coloring.js +118 -0
  88. package/dist/isosurface/geometry-worker-types.d.ts +38 -0
  89. package/dist/isosurface/geometry.worker.d.ts +1 -0
  90. package/dist/isosurface/geometry.worker.js +59 -0
  91. package/dist/isosurface/grid.d.ts +10 -0
  92. package/dist/isosurface/grid.js +31 -0
  93. package/dist/isosurface/index.d.ts +4 -0
  94. package/dist/isosurface/index.js +4 -0
  95. package/dist/isosurface/profile.d.ts +12 -0
  96. package/dist/isosurface/profile.js +19 -0
  97. package/dist/isosurface/sampling.d.ts +34 -0
  98. package/dist/isosurface/sampling.js +408 -0
  99. package/dist/isosurface/slice-rendering.d.ts +13 -0
  100. package/dist/isosurface/slice-rendering.js +79 -0
  101. package/dist/isosurface/slice.d.ts +22 -2
  102. package/dist/isosurface/slice.js +200 -116
  103. package/dist/isosurface/types.d.ts +24 -1
  104. package/dist/isosurface/types.js +120 -8
  105. package/dist/json-path.d.ts +4 -0
  106. package/dist/json-path.js +89 -0
  107. package/dist/labels.js +1 -1
  108. package/dist/layout/InfoCard.svelte +1 -3
  109. package/dist/layout/SettingsSection.svelte +52 -61
  110. package/dist/layout/SettingsSection.svelte.d.ts +6 -7
  111. package/dist/layout/ViewerChrome.svelte +7 -1
  112. package/dist/layout/json-tree/JsonNode.svelte +14 -48
  113. package/dist/layout/json-tree/JsonTree.svelte +48 -95
  114. package/dist/layout/json-tree/JsonValue.svelte +3 -18
  115. package/dist/layout/json-tree/utils.d.ts +0 -3
  116. package/dist/layout/json-tree/utils.js +50 -179
  117. package/dist/marching-cubes.d.ts +8 -1
  118. package/dist/marching-cubes.js +115 -48
  119. package/dist/math.d.ts +3 -2
  120. package/dist/math.js +29 -38
  121. package/dist/overlays/ContextMenu.svelte +15 -32
  122. package/dist/overlays/DraggablePane.svelte +39 -58
  123. package/dist/overlays/DraggablePane.svelte.d.ts +1 -1
  124. package/dist/overlays/GlassChip.svelte +3 -1
  125. package/dist/periodic-table/PeriodicTableControls.svelte +26 -52
  126. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +18 -34
  127. package/dist/phase-diagram/build-diagram.js +1 -6
  128. package/dist/phase-diagram/svg-to-diagram.js +9 -14
  129. package/dist/plot/bar/BarPlot.svelte +38 -42
  130. package/dist/plot/bar/SpacegroupBarPlot.svelte +18 -42
  131. package/dist/plot/box/BoxPlot.svelte +27 -23
  132. package/dist/plot/core/auto-place.d.ts +1 -1
  133. package/dist/plot/core/auto-place.js +1 -1
  134. package/dist/plot/core/data-transform.d.ts +1 -2
  135. package/dist/plot/core/data-transform.js +0 -10
  136. package/dist/plot/core/layout.d.ts +12 -5
  137. package/dist/plot/core/layout.js +37 -27
  138. package/dist/plot/core/pan-zoom.svelte.d.ts +2 -4
  139. package/dist/plot/core/pan-zoom.svelte.js +34 -17
  140. package/dist/plot/core/placed-tween.svelte.d.ts +3 -0
  141. package/dist/plot/core/placed-tween.svelte.js +68 -21
  142. package/dist/plot/core/svg.js +0 -1
  143. package/dist/plot/core/utils/hierarchy-chart.d.ts +1 -0
  144. package/dist/plot/core/utils/hierarchy-chart.js +12 -0
  145. package/dist/plot/core/utils/hierarchy-labels.js +3 -2
  146. package/dist/plot/histogram/Histogram.svelte +21 -26
  147. package/dist/plot/sankey/sankey.js +13 -9
  148. package/dist/plot/scatter/BinnedScatterPlot.svelte +59 -43
  149. package/dist/plot/scatter/ScatterPlot.svelte +67 -52
  150. package/dist/plot/scatter/adaptive-density.d.ts +1 -1
  151. package/dist/plot/scatter/adaptive-density.js +36 -20
  152. package/dist/plot/sunburst/Sunburst.svelte +20 -20
  153. package/dist/plot/treemap/Treemap.svelte +175 -60
  154. package/dist/plot/treemap/Treemap.svelte.d.ts +6 -0
  155. package/dist/plot/treemap/index.d.ts +1 -0
  156. package/dist/plot/treemap/labels.d.ts +38 -0
  157. package/dist/plot/treemap/labels.js +80 -0
  158. package/dist/plot/treemap/treemap.d.ts +4 -2
  159. package/dist/plot/treemap/treemap.js +5 -2
  160. package/dist/rdf/RdfPlot.svelte +17 -35
  161. package/dist/rdf/calc-rdf.js +59 -44
  162. package/dist/rdf/index.d.ts +0 -1
  163. package/dist/sanitize.js +84 -26
  164. package/dist/scene/SceneCamera.svelte +1 -1
  165. package/dist/scene/SceneCamera.svelte.d.ts +1 -1
  166. package/dist/scene/index.d.ts +1 -2
  167. package/dist/scene/index.js +1 -1
  168. package/dist/scene/{props.js → props.svelte.js} +15 -1
  169. package/dist/settings.js +159 -482
  170. package/dist/spectral/Bands.svelte +151 -158
  171. package/dist/spectral/BrillouinBandsDos.svelte +4 -19
  172. package/dist/spectral/Dos.svelte +26 -24
  173. package/dist/spectral/helpers.js +40 -105
  174. package/dist/structure/AtomLegend.svelte +8 -13
  175. package/dist/structure/AtomLegend.svelte.d.ts +2 -3
  176. package/dist/structure/CellSelect.svelte +35 -10
  177. package/dist/structure/Structure.svelte +177 -99
  178. package/dist/structure/Structure.svelte.d.ts +1 -1
  179. package/dist/structure/StructureCarousel.svelte +10 -3
  180. package/dist/structure/StructureControls.svelte +8 -26
  181. package/dist/structure/StructureControls.svelte.d.ts +1 -1
  182. package/dist/structure/StructureInfoPane.svelte +65 -76
  183. package/dist/structure/StructureScene.svelte +75 -109
  184. package/dist/structure/StructureScene.svelte.d.ts +3 -1
  185. package/dist/structure/StructureViewport.svelte +120 -55
  186. package/dist/structure/StructureViewport.svelte.d.ts +3 -1
  187. package/dist/structure/atom-properties.d.ts +1 -1
  188. package/dist/structure/atom-properties.js +4 -3
  189. package/dist/structure/bond-order-perception.js +3 -8
  190. package/dist/structure/bonding.d.ts +0 -1
  191. package/dist/structure/bonding.js +16 -23
  192. package/dist/structure/export.js +50 -74
  193. package/dist/structure/format-detect.js +5 -7
  194. package/dist/structure/index.js +6 -12
  195. package/dist/structure/parse.js +38 -100
  196. package/dist/structure/partial-occupancy.js +7 -4
  197. package/dist/structure/pbc.js +8 -10
  198. package/dist/structure/polyhedra.js +5 -4
  199. package/dist/structure/prop-groups.d.ts +85 -0
  200. package/dist/structure/prop-groups.js +18 -0
  201. package/dist/symmetry/SymmetryStats.svelte +0 -4
  202. package/dist/symmetry/WyckoffTable.svelte +5 -4
  203. package/dist/symmetry/cell-transform.js +5 -14
  204. package/dist/symmetry/index.js +6 -9
  205. package/dist/table/HeatmapTable.svelte +61 -103
  206. package/dist/table/ToggleMenu.svelte +166 -44
  207. package/dist/table/ToggleMenu.svelte.d.ts +1 -1
  208. package/dist/theme/embedded.d.ts +18 -0
  209. package/dist/theme/embedded.js +206 -0
  210. package/dist/theme/index.d.ts +4 -0
  211. package/dist/theme/index.js +1 -2
  212. package/dist/theme/themes.mjs +31 -60
  213. package/dist/tooltip/TooltipContent.svelte +1 -1
  214. package/dist/tooltip/TooltipContent.svelte.d.ts +1 -1
  215. package/dist/tooltip/index.d.ts +8 -1
  216. package/dist/trajectory/Trajectory.svelte +140 -120
  217. package/dist/trajectory/TrajectoryError.svelte +1 -66
  218. package/dist/trajectory/TrajectoryExportPane.svelte +0 -1
  219. package/dist/trajectory/TrajectoryInfoPane.svelte +55 -80
  220. package/dist/trajectory/TrajectoryInfoPane.svelte.d.ts +2 -1
  221. package/dist/trajectory/extract.js +19 -29
  222. package/dist/trajectory/format-detect.d.ts +2 -0
  223. package/dist/trajectory/format-detect.js +7 -5
  224. package/dist/trajectory/frame-reader.js +3 -4
  225. package/dist/trajectory/helpers.js +16 -49
  226. package/dist/trajectory/index.js +2 -8
  227. package/dist/trajectory/parse/ase.js +1 -1
  228. package/dist/trajectory/parse/index.d.ts +4 -3
  229. package/dist/trajectory/parse/index.js +12 -17
  230. package/dist/trajectory/parse/vaspout-h5.d.ts +0 -1
  231. package/dist/trajectory/parse/vaspout-h5.js +1 -4
  232. package/dist/trajectory/parse/xyz.js +48 -2
  233. package/dist/trajectory/plotting.js +14 -37
  234. package/dist/xrd/XrdPlot.svelte +43 -68
  235. package/dist/xrd/calc-xrd.js +22 -58
  236. package/dist/xrd/parse.js +13 -22
  237. package/package.json +40 -8
  238. package/readme.md +6 -5
  239. package/dist/scene/types.d.ts +0 -26
  240. package/dist/tooltip/types.d.ts +0 -8
  241. package/dist/trajectory/constants.d.ts +0 -6
  242. package/dist/trajectory/constants.js +0 -11
  243. /package/dist/{scene/types.js → file-viewer/host-protocol.js} +0 -0
  244. /package/dist/{tooltip/types.js → isosurface/geometry-worker-types.js} +0 -0
@@ -1,7 +1,6 @@
1
1
  <script lang="ts">
2
2
  import type { D3InterpolateName } from '../colors'
3
3
  import { get_electro_neg_formula } from '../composition/format'
4
- import { extract_formula_elements } from '../composition/parse'
5
4
  import TemperatureSlider from '../convex-hull/TemperatureSlider.svelte'
6
5
  import type { PhaseData } from '../convex-hull/types'
7
6
  import Spinner from '../feedback/Spinner.svelte'
@@ -12,9 +11,8 @@
12
11
  import { constrain_tooltip_position } from '../plot/core/layout'
13
12
  import type { DataSeries, UserContentProps } from '../plot/core/types'
14
13
  import { sanitize_html } from '../sanitize'
15
- import { SvelteMap } from 'svelte/reactivity'
16
14
  import { compute_chempot_async } from './async-compute.svelte'
17
- import { get_chempot_color_bar_config, make_chempot_color_scale } from './color'
15
+ import { ARITY_COLORS, get_chempot_color_bar_config, get_domain_color_data } from './color'
18
16
  import {
19
17
  CHEMPOT_COLOR_MODE_OPTIONS,
20
18
  CHEMPOT_COLOR_SCALE_OPTIONS,
@@ -22,10 +20,8 @@
22
20
  } from './controls-state.svelte'
23
21
  import {
24
22
  apply_element_padding,
25
- best_form_energy_for_formula,
26
23
  build_axis_ranges,
27
- formula_key_from_composition,
28
- get_energy_per_atom,
24
+ get_energy_stats_by_formula,
29
25
  get_min_entries_and_el_refs,
30
26
  orthonormal_2d,
31
27
  pad_domain_points,
@@ -33,12 +29,7 @@
33
29
  import { export_json_file, get_json_string } from './export'
34
30
  import { with_hover_pointer } from './pointer'
35
31
  import { get_temp_filter_payload, get_valid_temperature } from './temperature'
36
- import type {
37
- ChemPotColorMode,
38
- ChemPotDiagramConfig,
39
- ChemPotDiagramData,
40
- ChemPotHoverInfo,
41
- } from './types'
32
+ import type { ChemPotDiagramConfig, ChemPotDiagramData, ChemPotHoverInfo } from './types'
42
33
  import { CHEMPOT_DEFAULTS } from './types'
43
34
 
44
35
  let {
@@ -97,7 +88,6 @@
97
88
  const color_mode = $derived(overrides.resolve(`color_mode`))
98
89
  const color_scale = $derived(overrides.resolve(`color_scale`))
99
90
  const reverse_color_scale = $derived(overrides.resolve(`reverse_color_scale`))
100
- const arity_colors = [`#3498db`, `#2ecc71`, `#e67e22`, `#9b59b6`] as const
101
91
  const show_tooltip = $derived(config.show_tooltip ?? CHEMPOT_DEFAULTS.show_tooltip)
102
92
  const effective_config = $derived({
103
93
  ...config,
@@ -183,108 +173,22 @@
183
173
  return result
184
174
  })
185
175
  const domain_entries = $derived(Object.entries(draw_domains))
186
- const domain_formulas = $derived(Object.keys(draw_domains))
187
-
188
- interface FormulaEnergyStats {
189
- matching_entry_count: number
190
- min_energy_per_atom: number | null
191
- }
192
- type NumericColorMode = Exclude<ChemPotColorMode, `none` | `arity`>
193
176
 
177
+ // Raw (non-renormalized) elemental refs for true formation energies
194
178
  const raw_el_refs = $derived(get_min_entries_and_el_refs(temp_filtered_entries).el_refs)
195
- const entry_energy_stats_by_formula = $derived.by(
196
- (): SvelteMap<string, FormulaEnergyStats> => {
197
- const stats = new SvelteMap<string, FormulaEnergyStats>()
198
- for (const entry of temp_filtered_entries) {
199
- const formula_key = formula_key_from_composition(entry.composition)
200
- const epa = get_energy_per_atom(entry)
201
- const prev_stats = stats.get(formula_key)
202
- if (!prev_stats) {
203
- stats.set(formula_key, {
204
- matching_entry_count: 1,
205
- min_energy_per_atom: epa,
206
- })
207
- continue
208
- }
209
- stats.set(formula_key, {
210
- matching_entry_count: prev_stats.matching_entry_count + 1,
211
- min_energy_per_atom: Math.min(prev_stats.min_energy_per_atom ?? epa, epa),
212
- })
213
- }
214
- return stats
215
- },
216
- )
217
- const color_mode_labels: Record<NumericColorMode, string> = {
218
- energy: `Energy per atom (eV)`,
219
- formation_energy: `Formation energy (eV/atom)`,
220
- entries: `Entry count`,
221
- }
222
- function get_numeric_color_value(
223
- formula: string,
224
- active_color_mode: NumericColorMode,
225
- ): number | null {
226
- if (active_color_mode === `energy`) {
227
- return entry_energy_stats_by_formula.get(formula)?.min_energy_per_atom ?? null
228
- }
229
- if (active_color_mode === `formation_energy`) {
230
- return best_form_energy_for_formula(temp_filtered_entries, formula, raw_el_refs) ?? null
231
- }
232
- return entry_energy_stats_by_formula.get(formula)?.matching_entry_count ?? 0
233
- }
234
- const domain_color_values = $derived.by(
235
- (): { value_by_formula: SvelteMap<string, number>; values: number[] } | null => {
236
- if (color_mode === `none` || color_mode === `arity`) return null
237
- const active_color_mode = color_mode as NumericColorMode
238
- const value_by_formula = new SvelteMap<string, number>()
239
- const values: number[] = []
240
- for (const formula of domain_formulas) {
241
- const value = get_numeric_color_value(formula, active_color_mode)
242
- if (value == null || !Number.isFinite(value)) continue
243
- values.push(value)
244
- value_by_formula.set(formula, value)
245
- }
246
- return { value_by_formula, values }
247
- },
248
- )
249
- const domain_colors = $derived.by((): SvelteMap<string, string> => {
250
- const colors = new SvelteMap<string, string>()
251
- if (color_mode === `none`) return colors
252
- if (color_mode === `arity`) {
253
- for (const formula of domain_formulas) {
254
- const n_elements = extract_formula_elements(formula).length
255
- const color_idx = Math.min(n_elements, arity_colors.length) - 1
256
- colors.set(formula, arity_colors[Math.max(0, color_idx)])
257
- }
258
- return colors
259
- }
260
- const values_payload = domain_color_values
261
- const scale = make_chempot_color_scale(
262
- values_payload?.values ?? [],
179
+ // Memoize separately so color-control toggles don't re-scan all entries
180
+ const energy_stats = $derived(get_energy_stats_by_formula(temp_filtered_entries))
181
+ const { colors: domain_colors, color_range } = $derived(
182
+ get_domain_color_data({
183
+ formulas: Object.keys(draw_domains),
184
+ color_mode,
263
185
  color_scale,
264
186
  reverse_color_scale,
265
- )
266
- for (const formula of domain_formulas) {
267
- const color_val = values_payload?.value_by_formula.get(formula)
268
- colors.set(formula, color_val != null && scale ? scale(color_val) : `#999`)
269
- }
270
- return colors
271
- })
272
- const color_range = $derived.by((): { min: number; max: number; label: string } | null => {
273
- const values = domain_color_values?.values ?? []
274
- if (values.length === 0) return null
275
- let min_val = values[0],
276
- max_val = values[0]
277
- for (let idx = 1; idx < values.length; idx++) {
278
- if (values[idx] < min_val) min_val = values[idx]
279
- if (values[idx] > max_val) max_val = values[idx]
280
- }
281
- return {
282
- min: min_val,
283
- max: Math.max(max_val, min_val + 1e-6),
284
- label:
285
- color_mode === `none` || color_mode === `arity` ? `` : color_mode_labels[color_mode],
286
- }
287
- })
187
+ entries: temp_filtered_entries,
188
+ el_refs: raw_el_refs,
189
+ energy_stats,
190
+ }),
191
+ )
288
192
 
289
193
  // === Convert domains to ScatterPlot DataSeries ===
290
194
  const series = $derived<DataSeries[]>(
@@ -601,7 +505,7 @@
601
505
  on_point_click={handle_click}
602
506
  style="--scatter-width: 100%; --scatter-height: {render_height}px; --fullscreen-btn-offset: 68px"
603
507
  />
604
- {#if color_mode !== `none` && color_mode !== `arity` && color_range}
508
+ {#if color_range}
605
509
  {@const color_bar_config = get_chempot_color_bar_config(
606
510
  color_scale,
607
511
  reverse_color_scale,
@@ -620,7 +524,7 @@
620
524
  <div class="arity-legend">
621
525
  {#each [`Unary`, `Binary`, `Ternary`, `4+`] as label_text, color_idx (label_text)}
622
526
  <span>
623
- <span style:background={arity_colors[color_idx]}></span>
527
+ <span style:background={ARITY_COLORS[color_idx]}></span>
624
528
  {label_text}
625
529
  </span>
626
530
  {/each}