|
|
|
@ -519,13 +519,13 @@ const randomNumInBetween = (start: number, end: number) => {
|
|
|
|
|
return Math.random() * (end - start) + start;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export const generateFractionalIndex = ({
|
|
|
|
|
start = FRACTIONAL_INDEX_FLOOR,
|
|
|
|
|
end = FRACTIONAL_INDEX_CEILING,
|
|
|
|
|
}: {
|
|
|
|
|
start?: number;
|
|
|
|
|
end?: number;
|
|
|
|
|
}) => {
|
|
|
|
|
export const generateFractionalIndex = (
|
|
|
|
|
predecessorElement: ExcalidrawElement | undefined,
|
|
|
|
|
successorElement: ExcalidrawElement | undefined,
|
|
|
|
|
) => {
|
|
|
|
|
const start = getFractionalIndex(predecessorElement, FRACTIONAL_INDEX_FLOOR);
|
|
|
|
|
const end = getFractionalIndex(successorElement, FRACTIONAL_INDEX_CEILING);
|
|
|
|
|
|
|
|
|
|
const nextTemp = randomNumInBetween(start, end);
|
|
|
|
|
return (
|
|
|
|
|
(randomNumInBetween(nextTemp, end) + randomNumInBetween(start, nextTemp)) /
|
|
|
|
@ -533,12 +533,24 @@ export const generateFractionalIndex = ({
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
export const getNextFractionalIndexAt = (
|
|
|
|
|
index: number,
|
|
|
|
|
allElements: ExcalidrawElement[],
|
|
|
|
|
) => {
|
|
|
|
|
const predecessor = allElements[index - 1];
|
|
|
|
|
const successor = allElements[index + 1];
|
|
|
|
|
|
|
|
|
|
return generateFractionalIndex(predecessor, successor);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* normalize the fractional indicies of the elements in the given array such that
|
|
|
|
|
* a. all elements have a fraction index between floor and ceiling as defined above
|
|
|
|
|
* b. for every element, its fractional index is greater than its predecessor's and smaller than its successor's
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
export const normalizeFractionalIndexing = (
|
|
|
|
|
allElements: readonly ExcalidrawElement[],
|
|
|
|
|
) => {
|
|
|
|
@ -558,10 +570,10 @@ export const normalizeFractionalIndexing = (
|
|
|
|
|
successorElement,
|
|
|
|
|
)
|
|
|
|
|
) {
|
|
|
|
|
const nextFractionalIndex = generateFractionalIndex({
|
|
|
|
|
start: getFractionalIndex(predecessorElement, FRACTIONAL_INDEX_FLOOR),
|
|
|
|
|
end: getFractionalIndex(successorElement, FRACTIONAL_INDEX_CEILING),
|
|
|
|
|
});
|
|
|
|
|
const nextFractionalIndex = generateFractionalIndex(
|
|
|
|
|
predecessorElement,
|
|
|
|
|
successorElement,
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
normalizedElements.push({
|
|
|
|
|
...element,
|
|
|
|
|