1
+ <script lang="ts">
2
+ const shuffleMembers = (members : Member [], pinTheFirstMember = false ): void => {
3
+ let offset = pinTheFirstMember ? 1 : 0
4
+ // `i` is between `1` and `length - offset`
5
+ // `j` is between `0` and `length - offset - 1`
6
+ // `offset + i - 1` is between `offset` and `length - 1`
7
+ // `offset + j` is between `offset` and `length - 1`
8
+ let i = members .length - offset
9
+ while (i > 0 ) {
10
+ const j = Math .floor (Math .random () * i );
11
+ [
12
+ members [offset + i - 1 ],
13
+ members [offset + j ]
14
+ ] = [
15
+ members [offset + j ],
16
+ members [offset + i - 1 ]
17
+ ]
18
+ i --
19
+ }
20
+ }
21
+ </script >
22
+
1
23
<script setup lang="ts">
2
24
import { VTLink } from ' @vue/theme'
3
25
import membersCoreData from ' ./members-core.json'
@@ -6,6 +28,9 @@ import membersPartnerData from './members-partner.json'
6
28
import TeamHero from ' ./TeamHero.vue'
7
29
import TeamList from ' ./TeamList.vue'
8
30
import type { Member } from ' ./Member'
31
+ shuffleMembers (membersCoreData as Member [], true )
32
+ shuffleMembers (membersEmeritiData as Member [])
33
+ shuffleMembers (membersPartnerData as Member [])
9
34
</script >
10
35
11
36
<template >
@@ -26,7 +51,7 @@ import type { Member } from './Member'
26
51
</template >
27
52
</TeamHero >
28
53
29
- <TeamList :members =" membersCoreData" >
54
+ <TeamList :members =" membersCoreData as Member[] " >
30
55
<template #title >Core Team Members</template >
31
56
<template #lead
32
57
>Core team members are those who are actively involved in the
0 commit comments