@@ -910,28 +910,30 @@ module Settings = {
910
910
{switch experimentalVersions {
911
911
| [] => React .null
912
912
| experimentalVersions =>
913
- let versionByOrder = experimentalVersions -> Belt .SortArray .stableSortBy ((a , b ) => {
914
- let cmp = ({Semver .major : major , minor , patch , preRelease }) => {
915
- let preRelease = switch preRelease {
916
- | Some (preRelease ) =>
917
- switch preRelease {
918
- | Dev (id ) => 0 + id
919
- | Alpha (id ) => 10 + id
920
- | Beta (id ) => 20 + id
921
- | Rc (id ) => 30 + id
913
+ let versionByOrder = experimentalVersions -> Array .toSorted ((b , a ) => {
914
+ if a .major != b .major {
915
+ a .major - b .major
916
+ } else if a .minor != b .minor {
917
+ a .minor - b .minor
918
+ } else if a .patch != b .patch {
919
+ a .patch - b .patch
920
+ } else {
921
+ switch (a .preRelease , b .preRelease )-> Option .all2 {
922
+ | Some ((prereleaseA , prereleaseB )) =>
923
+ switch (prereleaseA , prereleaseB ) {
924
+ | (Rc (rcA ), Rc (rcB )) => rcA - rcB
925
+ | (Rc (rcA ), _ ) => rcA
926
+ | (Beta (betaA ), Beta (betaB )) => betaA - betaB
927
+ | (Beta (betaA ), _ ) => betaA
928
+ | (Alpha (alphaA ), Alpha (alphaB )) => alphaA - alphaB
929
+ | (Alpha (alphaA ), _ ) => alphaA
930
+ | (Dev (devA ), Dev (devB )) => devA - devB
931
+ | (Dev (devA ), _ ) => devA
922
932
}
933
+
923
934
| None => 0
924
935
}
925
- let number =
926
- [major , minor , patch ]
927
- -> Array .map (v => v -> Int .toString )
928
- -> Array .join ("" )
929
- -> Int .fromString
930
- -> Option .getOr (0 )
931
-
932
- number + preRelease
933
- }
934
- cmp (b ) - cmp (a )
936
+ }-> Float .fromInt
935
937
})
936
938
<>
937
939
<VersionSelect .SectionHeader value = Constants .dropdownLabelNext />
0 commit comments