feat: raw boards dnd
This commit is contained in:
36
src/utils/lexorank.ts
Normal file
36
src/utils/lexorank.ts
Normal file
@ -0,0 +1,36 @@
|
||||
import { LexoRank } from "lexorank";
|
||||
|
||||
type LexorankSortable = {
|
||||
rank: string;
|
||||
};
|
||||
|
||||
export function compareByLexorank<T extends LexorankSortable>(
|
||||
a: T,
|
||||
b: T
|
||||
): -1 | 1 | 0 {
|
||||
if (a.rank < b.rank) {
|
||||
return -1;
|
||||
}
|
||||
if (a.rank > b.rank) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
export function sortByLexorank<T extends LexorankSortable>(items: T[]): T[] {
|
||||
return items.sort(compareByLexorank);
|
||||
}
|
||||
|
||||
export function getNewLexorank(
|
||||
left?: LexoRank | null,
|
||||
right?: LexoRank | null
|
||||
): LexoRank {
|
||||
if (right) {
|
||||
if (left) return left?.between(right);
|
||||
return right.genPrev();
|
||||
}
|
||||
if (left) {
|
||||
return left.genNext();
|
||||
}
|
||||
return LexoRank.middle();
|
||||
}
|
||||
Reference in New Issue
Block a user