matterviz 0.3.5 → 0.3.7

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 (229) hide show
  1. package/dist/MillerIndexInput.svelte +5 -5
  2. package/dist/api/optimade.js +3 -3
  3. package/dist/brillouin/BrillouinZone.svelte +5 -2
  4. package/dist/brillouin/BrillouinZone.svelte.d.ts +1 -1
  5. package/dist/brillouin/BrillouinZoneExportPane.svelte +1 -3
  6. package/dist/brillouin/BrillouinZoneInfoPane.svelte +1 -1
  7. package/dist/brillouin/BrillouinZoneScene.svelte +5 -5
  8. package/dist/brillouin/compute.js +21 -21
  9. package/dist/brillouin/index.d.ts +1 -1
  10. package/dist/brillouin/index.js +0 -1
  11. package/dist/brillouin/types.d.ts +8 -13
  12. package/dist/chempot-diagram/ChemPotDiagram.svelte +3 -3
  13. package/dist/chempot-diagram/ChemPotDiagram2D.svelte +3 -4
  14. package/dist/chempot-diagram/ChemPotDiagram3D.svelte +33 -34
  15. package/dist/chempot-diagram/compute.js +1 -7
  16. package/dist/chempot-diagram/temperature.d.ts +1 -1
  17. package/dist/chempot-diagram/temperature.js +1 -3
  18. package/dist/chempot-diagram/types.d.ts +4 -9
  19. package/dist/colors/index.js +5 -5
  20. package/dist/composition/Composition.svelte +2 -1
  21. package/dist/composition/Formula.svelte +7 -4
  22. package/dist/composition/FormulaFilter.svelte +1 -3
  23. package/dist/composition/format.js +4 -4
  24. package/dist/composition/parse.d.ts +2 -1
  25. package/dist/composition/parse.js +61 -46
  26. package/dist/convex-hull/ConvexHull2D.svelte +62 -51
  27. package/dist/convex-hull/ConvexHull3D.svelte +101 -90
  28. package/dist/convex-hull/ConvexHull4D.svelte +70 -58
  29. package/dist/convex-hull/ConvexHullControls.svelte +24 -35
  30. package/dist/convex-hull/ConvexHullInfoPane.svelte +8 -5
  31. package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +2 -0
  32. package/dist/convex-hull/ConvexHullStats.svelte +9 -2
  33. package/dist/convex-hull/ConvexHullStats.svelte.d.ts +2 -0
  34. package/dist/convex-hull/GasPressureControls.svelte +7 -7
  35. package/dist/convex-hull/StructurePopup.svelte +65 -30
  36. package/dist/convex-hull/StructurePopup.svelte.d.ts +6 -6
  37. package/dist/convex-hull/TemperatureSlider.svelte +8 -5
  38. package/dist/convex-hull/barycentric-coords.d.ts +2 -2
  39. package/dist/convex-hull/barycentric-coords.js +2 -2
  40. package/dist/convex-hull/gas-thermodynamics.js +2 -4
  41. package/dist/convex-hull/helpers.d.ts +13 -2
  42. package/dist/convex-hull/helpers.js +37 -16
  43. package/dist/convex-hull/index.d.ts +1 -0
  44. package/dist/convex-hull/index.js +1 -0
  45. package/dist/convex-hull/thermodynamics.d.ts +2 -1
  46. package/dist/convex-hull/thermodynamics.js +7 -7
  47. package/dist/convex-hull/types.d.ts +15 -15
  48. package/dist/effects.svelte.d.ts +12 -0
  49. package/dist/effects.svelte.js +37 -0
  50. package/dist/element/BohrAtom.svelte +4 -4
  51. package/dist/element/data.json.gz.d.ts +3 -1
  52. package/dist/element/index.d.ts +1 -1
  53. package/dist/element/index.js +0 -1
  54. package/dist/fermi-surface/FermiSurface.svelte +4 -4
  55. package/dist/fermi-surface/FermiSurface.svelte.d.ts +1 -1
  56. package/dist/fermi-surface/FermiSurfaceControls.svelte +15 -19
  57. package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
  58. package/dist/fermi-surface/FermiSurfaceScene.svelte +8 -6
  59. package/dist/fermi-surface/compute.js +2 -2
  60. package/dist/fermi-surface/export.js +13 -26
  61. package/dist/fermi-surface/parse.js +8 -12
  62. package/dist/fermi-surface/types.d.ts +2 -5
  63. package/dist/heatmap-matrix/HeatmapMatrix.svelte +21 -3
  64. package/dist/heatmap-matrix/index.js +6 -6
  65. package/dist/io/decompress.d.ts +2 -1
  66. package/dist/io/decompress.js +1 -1
  67. package/dist/io/export.js +1 -1
  68. package/dist/io/index.d.ts +1 -1
  69. package/dist/io/index.js +0 -1
  70. package/dist/io/url-drop.js +7 -1
  71. package/dist/isosurface/IsosurfaceControls.svelte +11 -25
  72. package/dist/isosurface/slice.js +1 -1
  73. package/dist/isosurface/types.js +12 -12
  74. package/dist/labels.d.ts +1 -1
  75. package/dist/labels.js +14 -11
  76. package/dist/layout/InfoTag.svelte +6 -4
  77. package/dist/layout/PropertyFilter.svelte +4 -2
  78. package/dist/layout/json-tree/JsonTree.svelte +22 -14
  79. package/dist/layout/json-tree/JsonValue.svelte +2 -2
  80. package/dist/layout/json-tree/types.d.ts +3 -2
  81. package/dist/layout/json-tree/types.js +0 -1
  82. package/dist/layout/json-tree/utils.d.ts +4 -4
  83. package/dist/layout/json-tree/utils.js +12 -20
  84. package/dist/marching-cubes.js +13 -15
  85. package/dist/math.d.ts +11 -1
  86. package/dist/math.js +15 -6
  87. package/dist/overlays/DragControlTab.svelte +98 -0
  88. package/dist/overlays/DragControlTab.svelte.d.ts +8 -0
  89. package/dist/overlays/DraggablePane.svelte +7 -84
  90. package/dist/overlays/index.d.ts +1 -0
  91. package/dist/overlays/index.js +1 -0
  92. package/dist/periodic-table/PeriodicTable.svelte +11 -11
  93. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +4 -2
  94. package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +1 -1
  95. package/dist/phase-diagram/PhaseDiagramControls.svelte +4 -9
  96. package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +1 -1
  97. package/dist/phase-diagram/PhaseDiagramExportPane.svelte +2 -10
  98. package/dist/phase-diagram/PhaseDiagramTooltip.svelte +2 -3
  99. package/dist/phase-diagram/TdbInfoPanel.svelte +3 -3
  100. package/dist/phase-diagram/build-diagram.js +11 -18
  101. package/dist/phase-diagram/diagram-input.d.ts +5 -9
  102. package/dist/phase-diagram/index.d.ts +2 -2
  103. package/dist/phase-diagram/index.js +0 -2
  104. package/dist/phase-diagram/parse.d.ts +2 -2
  105. package/dist/phase-diagram/parse.js +6 -10
  106. package/dist/phase-diagram/svg-to-diagram.js +15 -15
  107. package/dist/phase-diagram/types.d.ts +5 -11
  108. package/dist/phase-diagram/utils.d.ts +2 -2
  109. package/dist/phase-diagram/utils.js +9 -11
  110. package/dist/plot/BarPlot.svelte +162 -314
  111. package/dist/plot/BarPlot.svelte.d.ts +5 -4
  112. package/dist/plot/BarPlotControls.svelte.d.ts +1 -1
  113. package/dist/plot/BinnedScatterPlot.svelte +1114 -0
  114. package/dist/plot/BinnedScatterPlot.svelte.d.ts +66 -0
  115. package/dist/plot/ColorBar.svelte +19 -17
  116. package/dist/plot/ColorBar.svelte.d.ts +1 -1
  117. package/dist/plot/FillArea.svelte +2 -4
  118. package/dist/plot/FillArea.svelte.d.ts +1 -1
  119. package/dist/plot/Histogram.svelte +167 -281
  120. package/dist/plot/Histogram.svelte.d.ts +1 -1
  121. package/dist/plot/HistogramControls.svelte.d.ts +1 -1
  122. package/dist/plot/InteractiveAxisLabel.svelte +5 -3
  123. package/dist/plot/InteractiveAxisLabel.svelte.d.ts +1 -1
  124. package/dist/plot/PlotAxis.svelte +169 -0
  125. package/dist/plot/PlotAxis.svelte.d.ts +24 -0
  126. package/dist/plot/PlotControls.svelte.d.ts +1 -1
  127. package/dist/plot/ReferenceLine3D.svelte +53 -51
  128. package/dist/plot/ReferencePlane.svelte +39 -42
  129. package/dist/plot/ScatterPlot.svelte +300 -367
  130. package/dist/plot/ScatterPlot.svelte.d.ts +8 -5
  131. package/dist/plot/ScatterPlot3D.svelte +33 -6
  132. package/dist/plot/ScatterPlot3D.svelte.d.ts +3 -2
  133. package/dist/plot/ScatterPlot3DControls.svelte +9 -9
  134. package/dist/plot/ScatterPlotControls.svelte +3 -4
  135. package/dist/plot/ScatterPoint.svelte +18 -27
  136. package/dist/plot/ScatterPoint.svelte.d.ts +4 -3
  137. package/dist/plot/Surface3D.svelte +4 -7
  138. package/dist/plot/ZeroLines.svelte +2 -1
  139. package/dist/plot/ZeroLines.svelte.d.ts +2 -1
  140. package/dist/plot/ZoomRect.svelte +2 -2
  141. package/dist/plot/ZoomRect.svelte.d.ts +3 -3
  142. package/dist/plot/adaptive-density.d.ts +69 -0
  143. package/dist/plot/adaptive-density.js +191 -0
  144. package/dist/plot/auto-place.d.ts +43 -0
  145. package/dist/plot/auto-place.js +122 -0
  146. package/dist/plot/axis-utils.js +3 -5
  147. package/dist/plot/binned-scatter-types.d.ts +59 -0
  148. package/dist/plot/binned-scatter-types.js +1 -0
  149. package/dist/plot/data-cleaning.js +1 -1
  150. package/dist/plot/data-transform.js +1 -1
  151. package/dist/plot/fill-utils.d.ts +4 -9
  152. package/dist/plot/fill-utils.js +29 -44
  153. package/dist/plot/index.d.ts +4 -0
  154. package/dist/plot/index.js +2 -0
  155. package/dist/plot/interactions.d.ts +4 -4
  156. package/dist/plot/interactions.js +4 -3
  157. package/dist/plot/layout.d.ts +20 -2
  158. package/dist/plot/layout.js +59 -16
  159. package/dist/plot/reference-line.d.ts +1 -1
  160. package/dist/plot/reference-line.js +9 -11
  161. package/dist/plot/scales.d.ts +1 -1
  162. package/dist/plot/scales.js +20 -23
  163. package/dist/plot/types.d.ts +30 -58
  164. package/dist/plot/types.js +2 -6
  165. package/dist/plot/utils/label-placement.d.ts +24 -3
  166. package/dist/plot/utils/label-placement.js +82 -12
  167. package/dist/plot/utils/series-visibility.d.ts +8 -2
  168. package/dist/plot/utils/series-visibility.js +23 -5
  169. package/dist/rdf/RdfPlot.svelte +5 -5
  170. package/dist/rdf/calc-rdf.js +3 -3
  171. package/dist/sanitize.d.ts +2 -0
  172. package/dist/sanitize.js +2 -0
  173. package/dist/spectral/Bands.svelte +1 -1
  174. package/dist/spectral/BandsAndDos.svelte +22 -16
  175. package/dist/spectral/BrillouinBandsDos.svelte +20 -16
  176. package/dist/spectral/Dos.svelte +1 -1
  177. package/dist/spectral/helpers.d.ts +4 -2
  178. package/dist/spectral/helpers.js +44 -35
  179. package/dist/spectral/index.d.ts +1 -1
  180. package/dist/spectral/index.js +0 -1
  181. package/dist/structure/AtomLegend.svelte +23 -6
  182. package/dist/structure/AtomLegend.svelte.d.ts +1 -0
  183. package/dist/structure/CanvasTooltip.svelte +9 -9
  184. package/dist/structure/CanvasTooltip.svelte.d.ts +1 -1
  185. package/dist/structure/CellSelect.svelte +14 -16
  186. package/dist/structure/Structure.svelte +317 -68
  187. package/dist/structure/Structure.svelte.d.ts +4 -2
  188. package/dist/structure/StructureControls.svelte +20 -45
  189. package/dist/structure/StructureExportPane.svelte +2 -1
  190. package/dist/structure/StructureInfoPane.svelte +10 -8
  191. package/dist/structure/StructureScene.svelte +527 -177
  192. package/dist/structure/StructureScene.svelte.d.ts +5 -2
  193. package/dist/structure/atom-properties.js +4 -4
  194. package/dist/structure/bond-order-perception.js +115 -98
  195. package/dist/structure/bonding.d.ts +27 -1
  196. package/dist/structure/bonding.js +187 -16
  197. package/dist/structure/export.js +1 -1
  198. package/dist/structure/index.d.ts +3 -2
  199. package/dist/structure/index.js +0 -2
  200. package/dist/structure/parse.js +88 -59
  201. package/dist/symmetry/WyckoffTable.svelte +7 -0
  202. package/dist/symmetry/index.js +13 -14
  203. package/dist/table/HeatmapTable.svelte +45 -66
  204. package/dist/table/HeatmapTable.svelte.d.ts +1 -1
  205. package/dist/table/ToggleMenu.svelte +19 -10
  206. package/dist/theme/themes.mjs +12 -0
  207. package/dist/tooltip/index.d.ts +1 -1
  208. package/dist/tooltip/index.js +0 -1
  209. package/dist/trajectory/Trajectory.svelte +43 -15
  210. package/dist/trajectory/TrajectoryInfoPane.svelte +2 -2
  211. package/dist/trajectory/extract.js +1 -1
  212. package/dist/trajectory/frame-reader.js +4 -4
  213. package/dist/trajectory/helpers.d.ts +5 -4
  214. package/dist/trajectory/helpers.js +9 -17
  215. package/dist/trajectory/index.d.ts +2 -2
  216. package/dist/trajectory/index.js +2 -2
  217. package/dist/trajectory/parse/ase.js +4 -4
  218. package/dist/trajectory/parse/hdf5.js +1 -1
  219. package/dist/trajectory/parse/index.js +2 -3
  220. package/dist/trajectory/parse/lammps.js +1 -1
  221. package/dist/trajectory/parse/vasp.js +1 -1
  222. package/dist/trajectory/plotting.d.ts +1 -1
  223. package/dist/trajectory/plotting.js +38 -38
  224. package/dist/trajectory/types.d.ts +1 -1
  225. package/dist/utils.d.ts +1 -0
  226. package/dist/utils.js +9 -0
  227. package/dist/xrd/calc-xrd.js +3 -4
  228. package/dist/xrd/parse.js +1 -1
  229. package/package.json +42 -22
@@ -206,9 +206,8 @@
206
206
  let available_vector_keys = $derived(
207
207
  structure ? get_structure_vector_keys(structure) : [],
208
208
  )
209
- function is_key_visible(key: string): boolean {
210
- return scene_props.vector_configs?.[key]?.visible !== false
211
- }
209
+ const is_key_visible = (key: string): boolean =>
210
+ scene_props.vector_configs?.[key]?.visible !== false
212
211
 
213
212
  let any_vectors_visible = $derived(available_vector_keys.some(is_key_visible))
214
213
 
@@ -319,27 +318,21 @@
319
318
  Atoms
320
319
  </label>
321
320
  <label
322
- {@attach tooltip({
323
- content: SETTINGS_CONFIG.structure.show_image_atoms.description,
324
- })}
321
+ {@attach tooltip({ content: SETTINGS_CONFIG.structure.show_image_atoms.description })}
325
322
  style="gap: 6pt"
326
323
  >
327
324
  <input type="checkbox" bind:checked={show_image_atoms} />
328
325
  Image Atoms
329
326
  </label>
330
327
  <label
331
- {@attach tooltip({
332
- content: SETTINGS_CONFIG.structure.show_site_labels.description,
333
- })}
328
+ {@attach tooltip({ content: SETTINGS_CONFIG.structure.show_site_labels.description })}
334
329
  style="gap: 6pt"
335
330
  >
336
331
  <input type="checkbox" bind:checked={scene_props.show_site_labels} />
337
332
  Site Labels
338
333
  </label>
339
334
  <label
340
- {@attach tooltip({
341
- content: SETTINGS_CONFIG.structure.show_site_indices.description,
342
- })}
335
+ {@attach tooltip({ content: SETTINGS_CONFIG.structure.show_site_indices.description })}
343
336
  style="gap: 6pt"
344
337
  >
345
338
  <input type="checkbox" bind:checked={scene_props.show_site_indices} />
@@ -365,7 +358,7 @@
365
358
  VECTOR_PALETTE[idx % VECTOR_PALETTE.length]}
366
359
  onchange={(evt) =>
367
360
  update_vector_config(key, {
368
- color: (evt.target as HTMLInputElement).value,
361
+ color: evt.currentTarget.value,
369
362
  })}
370
363
  style="width: 22px; height: 22px; padding: 0; border: none; cursor: pointer"
371
364
  />
@@ -428,9 +421,7 @@
428
421
  >
429
422
  <label>
430
423
  <span
431
- {@attach tooltip({
432
- content: SETTINGS_CONFIG.structure.camera_projection.description,
433
- })}
424
+ {@attach tooltip({ content: SETTINGS_CONFIG.structure.camera_projection.description })}
434
425
  >
435
426
  Projection
436
427
  </span>
@@ -843,27 +834,21 @@
843
834
  />
844
835
  </label>
845
836
  <label
846
- {@attach tooltip({
847
- content: SETTINGS_CONFIG.structure.vector_normalize.description,
848
- })}
837
+ {@attach tooltip({ content: SETTINGS_CONFIG.structure.vector_normalize.description })}
849
838
  style="gap: 6pt"
850
839
  >
851
840
  <input type="checkbox" bind:checked={scene_props.vector_normalize} />
852
841
  Normalize
853
842
  </label>
854
843
  <label
855
- {@attach tooltip({
856
- content: SETTINGS_CONFIG.structure.vector_uniform_thickness.description,
857
- })}
844
+ {@attach tooltip({ content: SETTINGS_CONFIG.structure.vector_uniform_thickness.description })}
858
845
  style="gap: 6pt"
859
846
  >
860
847
  <input type="checkbox" bind:checked={scene_props.vector_uniform_thickness} />
861
848
  Uniform Thickness
862
849
  </label>
863
850
  <label
864
- {@attach tooltip({
865
- content: SETTINGS_CONFIG.structure.vector_color_mode.description,
866
- })}
851
+ {@attach tooltip({ content: SETTINGS_CONFIG.structure.vector_color_mode.description })}
867
852
  >
868
853
  Color Mode
869
854
  <select bind:value={scene_props.vector_color_mode}>
@@ -889,9 +874,7 @@
889
874
  {/if}
890
875
  {#if available_vector_keys.length > 1}
891
876
  <label
892
- {@attach tooltip({
893
- content: SETTINGS_CONFIG.structure.vector_origin_gap.description,
894
- })}
877
+ {@attach tooltip({ content: SETTINGS_CONFIG.structure.vector_origin_gap.description })}
895
878
  >
896
879
  Origin Gap
897
880
  <input
@@ -911,15 +894,14 @@
911
894
  </label>
912
895
  {#each available_vector_keys as key (key)}
913
896
  {#if is_key_visible(key)}
914
- {@const on_scale = (evt: Event) => {
915
- const parsed = parseFloat((evt.target as HTMLInputElement).value)
897
+ {@const on_scale = (
898
+ evt: Event & { currentTarget: HTMLInputElement },
899
+ ) => {
900
+ const parsed = parseFloat(evt.currentTarget.value)
916
901
  update_vector_config(key, { scale: Number.isNaN(parsed) ? 1.0 : parsed })
917
902
  }}
918
903
  <label
919
- {@attach tooltip({
920
- content:
921
- `Scale multiplier for ${key} arrows (applied on top of global scale)`,
922
- })}
904
+ {@attach tooltip({ content: `Scale multiplier for ${key} arrows (applied on top of global scale)` })}
923
905
  >
924
906
  {key} scale
925
907
  <input
@@ -981,10 +963,7 @@
981
963
  </label>
982
964
  <label>
983
965
  <span
984
- {@attach tooltip({
985
- content:
986
- `Create supercells by repeating the unit cell. Examples: "2x2x2", "3x1x2", or "2"`,
987
- })}
966
+ {@attach tooltip({ content: `Create supercells by repeating the unit cell. Examples: "2x2x2", "3x1x2", or "2"` })}
988
967
  >
989
968
  Supercell Scaling
990
969
  </span>
@@ -1092,7 +1071,7 @@
1092
1071
  type="color"
1093
1072
  value={background_color}
1094
1073
  oninput={(event) => {
1095
- background_color = (event.target as HTMLInputElement).value
1074
+ background_color = event.currentTarget.value
1096
1075
  }}
1097
1076
  />
1098
1077
  </label>
@@ -1193,18 +1172,14 @@
1193
1172
  </label>
1194
1173
  <label
1195
1174
  style="gap: 6pt"
1196
- {@attach tooltip({
1197
- content: SETTINGS_CONFIG.structure.auto_bond_order.description,
1198
- })}
1175
+ {@attach tooltip({ content: SETTINGS_CONFIG.structure.auto_bond_order.description })}
1199
1176
  >
1200
1177
  <input type="checkbox" bind:checked={scene_props.auto_bond_order} />
1201
1178
  Auto bond order (perceive double/triple/aromatic)
1202
1179
  </label>
1203
1180
  {#if scene_props.auto_bond_order}
1204
1181
  <label
1205
- {@attach tooltip({
1206
- content: SETTINGS_CONFIG.structure.aromatic_display.description,
1207
- })}
1182
+ {@attach tooltip({ content: SETTINGS_CONFIG.structure.aromatic_display.description })}
1208
1183
  >
1209
1184
  Aromatic display <select bind:value={scene_props.aromatic_display}>
1210
1185
  {#each Object.entries(
@@ -2,6 +2,7 @@
2
2
  import type { AnyStructure } from './'
3
3
  import DraggablePane from '../overlays/DraggablePane.svelte'
4
4
  import { export_canvas_as_png } from '../io/export'
5
+ import { sanitize_html } from '../sanitize'
5
6
  import * as exports from './export'
6
7
  import type { ComponentProps } from 'svelte'
7
8
  import { tooltip } from 'svelte-multiselect/attachments'
@@ -163,7 +164,7 @@
163
164
  <div class="export-buttons">
164
165
  {#each text_export_formats as { label, format, hint } (format)}
165
166
  <div style="display: flex; align-items: center; gap: 4pt">
166
- <span {@attach tooltip({ content: hint })}>{label}</span>
167
+ <span {@attach tooltip({ allow_html: true, content: sanitize_html(hint) })}>{label}</span>
167
168
  <button
168
169
  type="button"
169
170
  onclick={() => export_structure(format)}
@@ -137,7 +137,10 @@
137
137
  site_window_start = 0
138
138
  }
139
139
 
140
- function handle_site_keydown(event: KeyboardEvent, card: SiteCard) {
140
+ function handle_site_keydown(
141
+ event: KeyboardEvent & { currentTarget: HTMLDivElement },
142
+ card: SiteCard,
143
+ ) {
141
144
  const plain_key = !event.altKey && !event.ctrlKey && !event.metaKey
142
145
  if ([`Enter`, ` `].includes(event.key)) {
143
146
  event.preventDefault()
@@ -151,20 +154,19 @@
151
154
  }
152
155
  if (![`ArrowDown`, `ArrowUp`].includes(event.key)) return
153
156
  event.preventDefault()
154
- const current_card = event.currentTarget as HTMLDivElement | null
157
+ const current_card = event.currentTarget
155
158
  const sibling_cards = Array.from(
156
- current_card?.parentElement?.querySelectorAll<HTMLDivElement>(`.site-card`) ?? [],
159
+ current_card.parentElement?.querySelectorAll<HTMLDivElement>(`.site-card`) ?? [],
157
160
  )
158
- const current_idx = sibling_cards.indexOf(current_card as HTMLDivElement)
161
+ const current_idx = sibling_cards.indexOf(current_card)
159
162
  const next_idx = event.key === `ArrowDown`
160
163
  ? Math.min(current_idx + 1, sibling_cards.length - 1)
161
164
  : Math.max(current_idx - 1, 0)
162
165
  sibling_cards[next_idx]?.focus()
163
166
  }
164
167
 
165
- function get_element_name(element: string): string {
166
- return element_data?.find((el) => el.symbol === element)?.name || element
167
- }
168
+ const get_element_name = (element: string): string =>
169
+ element_data?.find((element_record) => element_record.symbol === element)?.name || element
168
170
 
169
171
  function site_summary(card: SiteCard): string {
170
172
  return [
@@ -268,7 +270,7 @@
268
270
  const { operations } = sym_data
269
271
  let translations = 0, rotations = 0, roto_translations = 0
270
272
  for (const op of operations) {
271
- const has_translation = op.translation.some((t) => t !== 0)
273
+ const has_translation = op.translation.some((offset) => offset !== 0)
272
274
  const is_identity = String(op.rotation) === `1,0,0,0,1,0,0,0,1`
273
275
  if (is_identity && has_translation) translations++
274
276
  else if (!has_translation) rotations++