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.
- package/dist/MillerIndexInput.svelte +5 -5
- package/dist/api/optimade.js +3 -3
- package/dist/brillouin/BrillouinZone.svelte +5 -2
- package/dist/brillouin/BrillouinZone.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneExportPane.svelte +1 -3
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +1 -1
- package/dist/brillouin/BrillouinZoneScene.svelte +5 -5
- package/dist/brillouin/compute.js +21 -21
- package/dist/brillouin/index.d.ts +1 -1
- package/dist/brillouin/index.js +0 -1
- package/dist/brillouin/types.d.ts +8 -13
- package/dist/chempot-diagram/ChemPotDiagram.svelte +3 -3
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +3 -4
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +33 -34
- package/dist/chempot-diagram/compute.js +1 -7
- package/dist/chempot-diagram/temperature.d.ts +1 -1
- package/dist/chempot-diagram/temperature.js +1 -3
- package/dist/chempot-diagram/types.d.ts +4 -9
- package/dist/colors/index.js +5 -5
- package/dist/composition/Composition.svelte +2 -1
- package/dist/composition/Formula.svelte +7 -4
- package/dist/composition/FormulaFilter.svelte +1 -3
- package/dist/composition/format.js +4 -4
- package/dist/composition/parse.d.ts +2 -1
- package/dist/composition/parse.js +61 -46
- package/dist/convex-hull/ConvexHull2D.svelte +62 -51
- package/dist/convex-hull/ConvexHull3D.svelte +101 -90
- package/dist/convex-hull/ConvexHull4D.svelte +70 -58
- package/dist/convex-hull/ConvexHullControls.svelte +24 -35
- package/dist/convex-hull/ConvexHullInfoPane.svelte +8 -5
- package/dist/convex-hull/ConvexHullInfoPane.svelte.d.ts +2 -0
- package/dist/convex-hull/ConvexHullStats.svelte +9 -2
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +2 -0
- package/dist/convex-hull/GasPressureControls.svelte +7 -7
- package/dist/convex-hull/StructurePopup.svelte +65 -30
- package/dist/convex-hull/StructurePopup.svelte.d.ts +6 -6
- package/dist/convex-hull/TemperatureSlider.svelte +8 -5
- package/dist/convex-hull/barycentric-coords.d.ts +2 -2
- package/dist/convex-hull/barycentric-coords.js +2 -2
- package/dist/convex-hull/gas-thermodynamics.js +2 -4
- package/dist/convex-hull/helpers.d.ts +13 -2
- package/dist/convex-hull/helpers.js +37 -16
- package/dist/convex-hull/index.d.ts +1 -0
- package/dist/convex-hull/index.js +1 -0
- package/dist/convex-hull/thermodynamics.d.ts +2 -1
- package/dist/convex-hull/thermodynamics.js +7 -7
- package/dist/convex-hull/types.d.ts +15 -15
- package/dist/effects.svelte.d.ts +12 -0
- package/dist/effects.svelte.js +37 -0
- package/dist/element/BohrAtom.svelte +4 -4
- package/dist/element/data.json.gz.d.ts +3 -1
- package/dist/element/index.d.ts +1 -1
- package/dist/element/index.js +0 -1
- package/dist/fermi-surface/FermiSurface.svelte +4 -4
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceControls.svelte +15 -19
- package/dist/fermi-surface/FermiSurfaceControls.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceScene.svelte +8 -6
- package/dist/fermi-surface/compute.js +2 -2
- package/dist/fermi-surface/export.js +13 -26
- package/dist/fermi-surface/parse.js +8 -12
- package/dist/fermi-surface/types.d.ts +2 -5
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +21 -3
- package/dist/heatmap-matrix/index.js +6 -6
- package/dist/io/decompress.d.ts +2 -1
- package/dist/io/decompress.js +1 -1
- package/dist/io/export.js +1 -1
- package/dist/io/index.d.ts +1 -1
- package/dist/io/index.js +0 -1
- package/dist/io/url-drop.js +7 -1
- package/dist/isosurface/IsosurfaceControls.svelte +11 -25
- package/dist/isosurface/slice.js +1 -1
- package/dist/isosurface/types.js +12 -12
- package/dist/labels.d.ts +1 -1
- package/dist/labels.js +14 -11
- package/dist/layout/InfoTag.svelte +6 -4
- package/dist/layout/PropertyFilter.svelte +4 -2
- package/dist/layout/json-tree/JsonTree.svelte +22 -14
- package/dist/layout/json-tree/JsonValue.svelte +2 -2
- package/dist/layout/json-tree/types.d.ts +3 -2
- package/dist/layout/json-tree/types.js +0 -1
- package/dist/layout/json-tree/utils.d.ts +4 -4
- package/dist/layout/json-tree/utils.js +12 -20
- package/dist/marching-cubes.js +13 -15
- package/dist/math.d.ts +11 -1
- package/dist/math.js +15 -6
- package/dist/overlays/DragControlTab.svelte +98 -0
- package/dist/overlays/DragControlTab.svelte.d.ts +8 -0
- package/dist/overlays/DraggablePane.svelte +7 -84
- package/dist/overlays/index.d.ts +1 -0
- package/dist/overlays/index.js +1 -0
- package/dist/periodic-table/PeriodicTable.svelte +11 -11
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +4 -2
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +1 -1
- package/dist/phase-diagram/PhaseDiagramControls.svelte +4 -9
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +1 -1
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +2 -10
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +2 -3
- package/dist/phase-diagram/TdbInfoPanel.svelte +3 -3
- package/dist/phase-diagram/build-diagram.js +11 -18
- package/dist/phase-diagram/diagram-input.d.ts +5 -9
- package/dist/phase-diagram/index.d.ts +2 -2
- package/dist/phase-diagram/index.js +0 -2
- package/dist/phase-diagram/parse.d.ts +2 -2
- package/dist/phase-diagram/parse.js +6 -10
- package/dist/phase-diagram/svg-to-diagram.js +15 -15
- package/dist/phase-diagram/types.d.ts +5 -11
- package/dist/phase-diagram/utils.d.ts +2 -2
- package/dist/phase-diagram/utils.js +9 -11
- package/dist/plot/BarPlot.svelte +162 -314
- package/dist/plot/BarPlot.svelte.d.ts +5 -4
- package/dist/plot/BarPlotControls.svelte.d.ts +1 -1
- package/dist/plot/BinnedScatterPlot.svelte +1114 -0
- package/dist/plot/BinnedScatterPlot.svelte.d.ts +66 -0
- package/dist/plot/ColorBar.svelte +19 -17
- package/dist/plot/ColorBar.svelte.d.ts +1 -1
- package/dist/plot/FillArea.svelte +2 -4
- package/dist/plot/FillArea.svelte.d.ts +1 -1
- package/dist/plot/Histogram.svelte +167 -281
- package/dist/plot/Histogram.svelte.d.ts +1 -1
- package/dist/plot/HistogramControls.svelte.d.ts +1 -1
- package/dist/plot/InteractiveAxisLabel.svelte +5 -3
- package/dist/plot/InteractiveAxisLabel.svelte.d.ts +1 -1
- package/dist/plot/PlotAxis.svelte +169 -0
- package/dist/plot/PlotAxis.svelte.d.ts +24 -0
- package/dist/plot/PlotControls.svelte.d.ts +1 -1
- package/dist/plot/ReferenceLine3D.svelte +53 -51
- package/dist/plot/ReferencePlane.svelte +39 -42
- package/dist/plot/ScatterPlot.svelte +300 -367
- package/dist/plot/ScatterPlot.svelte.d.ts +8 -5
- package/dist/plot/ScatterPlot3D.svelte +33 -6
- package/dist/plot/ScatterPlot3D.svelte.d.ts +3 -2
- package/dist/plot/ScatterPlot3DControls.svelte +9 -9
- package/dist/plot/ScatterPlotControls.svelte +3 -4
- package/dist/plot/ScatterPoint.svelte +18 -27
- package/dist/plot/ScatterPoint.svelte.d.ts +4 -3
- package/dist/plot/Surface3D.svelte +4 -7
- package/dist/plot/ZeroLines.svelte +2 -1
- package/dist/plot/ZeroLines.svelte.d.ts +2 -1
- package/dist/plot/ZoomRect.svelte +2 -2
- package/dist/plot/ZoomRect.svelte.d.ts +3 -3
- package/dist/plot/adaptive-density.d.ts +69 -0
- package/dist/plot/adaptive-density.js +191 -0
- package/dist/plot/auto-place.d.ts +43 -0
- package/dist/plot/auto-place.js +122 -0
- package/dist/plot/axis-utils.js +3 -5
- package/dist/plot/binned-scatter-types.d.ts +59 -0
- package/dist/plot/binned-scatter-types.js +1 -0
- package/dist/plot/data-cleaning.js +1 -1
- package/dist/plot/data-transform.js +1 -1
- package/dist/plot/fill-utils.d.ts +4 -9
- package/dist/plot/fill-utils.js +29 -44
- package/dist/plot/index.d.ts +4 -0
- package/dist/plot/index.js +2 -0
- package/dist/plot/interactions.d.ts +4 -4
- package/dist/plot/interactions.js +4 -3
- package/dist/plot/layout.d.ts +20 -2
- package/dist/plot/layout.js +59 -16
- package/dist/plot/reference-line.d.ts +1 -1
- package/dist/plot/reference-line.js +9 -11
- package/dist/plot/scales.d.ts +1 -1
- package/dist/plot/scales.js +20 -23
- package/dist/plot/types.d.ts +30 -58
- package/dist/plot/types.js +2 -6
- package/dist/plot/utils/label-placement.d.ts +24 -3
- package/dist/plot/utils/label-placement.js +82 -12
- package/dist/plot/utils/series-visibility.d.ts +8 -2
- package/dist/plot/utils/series-visibility.js +23 -5
- package/dist/rdf/RdfPlot.svelte +5 -5
- package/dist/rdf/calc-rdf.js +3 -3
- package/dist/sanitize.d.ts +2 -0
- package/dist/sanitize.js +2 -0
- package/dist/spectral/Bands.svelte +1 -1
- package/dist/spectral/BandsAndDos.svelte +22 -16
- package/dist/spectral/BrillouinBandsDos.svelte +20 -16
- package/dist/spectral/Dos.svelte +1 -1
- package/dist/spectral/helpers.d.ts +4 -2
- package/dist/spectral/helpers.js +44 -35
- package/dist/spectral/index.d.ts +1 -1
- package/dist/spectral/index.js +0 -1
- package/dist/structure/AtomLegend.svelte +23 -6
- package/dist/structure/AtomLegend.svelte.d.ts +1 -0
- package/dist/structure/CanvasTooltip.svelte +9 -9
- package/dist/structure/CanvasTooltip.svelte.d.ts +1 -1
- package/dist/structure/CellSelect.svelte +14 -16
- package/dist/structure/Structure.svelte +317 -68
- package/dist/structure/Structure.svelte.d.ts +4 -2
- package/dist/structure/StructureControls.svelte +20 -45
- package/dist/structure/StructureExportPane.svelte +2 -1
- package/dist/structure/StructureInfoPane.svelte +10 -8
- package/dist/structure/StructureScene.svelte +527 -177
- package/dist/structure/StructureScene.svelte.d.ts +5 -2
- package/dist/structure/atom-properties.js +4 -4
- package/dist/structure/bond-order-perception.js +115 -98
- package/dist/structure/bonding.d.ts +27 -1
- package/dist/structure/bonding.js +187 -16
- package/dist/structure/export.js +1 -1
- package/dist/structure/index.d.ts +3 -2
- package/dist/structure/index.js +0 -2
- package/dist/structure/parse.js +88 -59
- package/dist/symmetry/WyckoffTable.svelte +7 -0
- package/dist/symmetry/index.js +13 -14
- package/dist/table/HeatmapTable.svelte +45 -66
- package/dist/table/HeatmapTable.svelte.d.ts +1 -1
- package/dist/table/ToggleMenu.svelte +19 -10
- package/dist/theme/themes.mjs +12 -0
- package/dist/tooltip/index.d.ts +1 -1
- package/dist/tooltip/index.js +0 -1
- package/dist/trajectory/Trajectory.svelte +43 -15
- package/dist/trajectory/TrajectoryInfoPane.svelte +2 -2
- package/dist/trajectory/extract.js +1 -1
- package/dist/trajectory/frame-reader.js +4 -4
- package/dist/trajectory/helpers.d.ts +5 -4
- package/dist/trajectory/helpers.js +9 -17
- package/dist/trajectory/index.d.ts +2 -2
- package/dist/trajectory/index.js +2 -2
- package/dist/trajectory/parse/ase.js +4 -4
- package/dist/trajectory/parse/hdf5.js +1 -1
- package/dist/trajectory/parse/index.js +2 -3
- package/dist/trajectory/parse/lammps.js +1 -1
- package/dist/trajectory/parse/vasp.js +1 -1
- package/dist/trajectory/plotting.d.ts +1 -1
- package/dist/trajectory/plotting.js +38 -38
- package/dist/trajectory/types.d.ts +1 -1
- package/dist/utils.d.ts +1 -0
- package/dist/utils.js +9 -0
- package/dist/xrd/calc-xrd.js +3 -4
- package/dist/xrd/parse.js +1 -1
- 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
|
-
|
|
210
|
-
|
|
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:
|
|
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 = (
|
|
915
|
-
|
|
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 =
|
|
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(
|
|
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
|
|
157
|
+
const current_card = event.currentTarget
|
|
155
158
|
const sibling_cards = Array.from(
|
|
156
|
-
current_card
|
|
159
|
+
current_card.parentElement?.querySelectorAll<HTMLDivElement>(`.site-card`) ?? [],
|
|
157
160
|
)
|
|
158
|
-
const current_idx = sibling_cards.indexOf(current_card
|
|
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
|
-
|
|
166
|
-
|
|
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((
|
|
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++
|