|
@@ -1,7 +1,7 @@
|
|
|
import { mutateElement } from "./element/mutateElement";
|
|
|
import { ExcalidrawElement } from "./element/types";
|
|
|
import {
|
|
|
- generateKeyBetween,
|
|
|
+ generateJitteredKeyBetween,
|
|
|
generateNJitteredKeysBetween,
|
|
|
} from "fractional-indexing-jittered";
|
|
|
|
|
@@ -66,19 +66,6 @@ const getContiguousMovedIndices = (
|
|
|
return result;
|
|
|
};
|
|
|
|
|
|
-export const generateFractionalIndexBetween = (
|
|
|
- predecessor: FractionalIndex,
|
|
|
- successor: FractionalIndex,
|
|
|
-) => {
|
|
|
- if (predecessor && successor) {
|
|
|
- if (predecessor < successor) {
|
|
|
- return generateKeyBetween(predecessor, successor);
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
- return generateKeyBetween(predecessor, successor);
|
|
|
-};
|
|
|
-
|
|
|
export const fixFractionalIndices = (
|
|
|
elements: readonly ExcalidrawElement[],
|
|
|
movedElementsMap: Map<string, ExcalidrawElement>,
|
|
@@ -153,29 +140,31 @@ const restoreFractionalIndex = (
|
|
|
if (successor && !predecessor) {
|
|
|
// first element in the array
|
|
|
// insert before successor
|
|
|
- return generateKeyBetween(null, successor);
|
|
|
+ return generateJitteredKeyBetween(null, successor);
|
|
|
}
|
|
|
|
|
|
if (predecessor && !successor) {
|
|
|
// last element in the array
|
|
|
// insert after predecessor
|
|
|
- return generateKeyBetween(predecessor, null);
|
|
|
+ return generateJitteredKeyBetween(predecessor, null);
|
|
|
}
|
|
|
|
|
|
// both predecessor and successor exist
|
|
|
// insert after predecessor
|
|
|
- return generateKeyBetween(predecessor, null);
|
|
|
+ return generateJitteredKeyBetween(predecessor, null);
|
|
|
}
|
|
|
|
|
|
- return generateKeyBetween(null, null);
|
|
|
+ return generateJitteredKeyBetween(null, null);
|
|
|
};
|
|
|
|
|
|
/**
|
|
|
- * normalize the fractional indicies of the elements in the given array such that
|
|
|
+ * restore the fractional indicies of the elements in the given array such that
|
|
|
* every element in the array has a fractional index smaller than its successor's
|
|
|
*
|
|
|
- * note that this function is not pure, it mutates elements whose fractional indicies
|
|
|
- * need updating
|
|
|
+ * neighboring indices might be updated as well
|
|
|
+ *
|
|
|
+ * only use this function when restoring or as a fallback to guarantee fractional
|
|
|
+ * indices consistency
|
|
|
*/
|
|
|
export const restoreFractionalIndicies = (
|
|
|
allElements: readonly ExcalidrawElement[],
|