|
|
@ -31,6 +31,7 @@ import {
|
|
|
|
excludeElementsInFramesFromSelection,
|
|
|
|
excludeElementsInFramesFromSelection,
|
|
|
|
getSelectedElements,
|
|
|
|
getSelectedElements,
|
|
|
|
} from "../scene/selection";
|
|
|
|
} from "../scene/selection";
|
|
|
|
|
|
|
|
import { fixFractionalIndices } from "../fractionalIndex";
|
|
|
|
|
|
|
|
|
|
|
|
export const actionDuplicateSelection = register({
|
|
|
|
export const actionDuplicateSelection = register({
|
|
|
|
name: "duplicateSelection",
|
|
|
|
name: "duplicateSelection",
|
|
|
@ -85,6 +86,7 @@ const duplicateElements = (
|
|
|
|
const newElements: ExcalidrawElement[] = [];
|
|
|
|
const newElements: ExcalidrawElement[] = [];
|
|
|
|
const oldElements: ExcalidrawElement[] = [];
|
|
|
|
const oldElements: ExcalidrawElement[] = [];
|
|
|
|
const oldIdToDuplicatedId = new Map();
|
|
|
|
const oldIdToDuplicatedId = new Map();
|
|
|
|
|
|
|
|
const duplicatedElementsMap = new Map<string, ExcalidrawElement>();
|
|
|
|
|
|
|
|
|
|
|
|
const duplicateAndOffsetElement = (element: ExcalidrawElement) => {
|
|
|
|
const duplicateAndOffsetElement = (element: ExcalidrawElement) => {
|
|
|
|
const newElement = duplicateElement(
|
|
|
|
const newElement = duplicateElement(
|
|
|
@ -96,6 +98,7 @@ const duplicateElements = (
|
|
|
|
y: element.y + GRID_SIZE / 2,
|
|
|
|
y: element.y + GRID_SIZE / 2,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
duplicatedElementsMap.set(newElement.id, newElement);
|
|
|
|
oldIdToDuplicatedId.set(element.id, newElement.id);
|
|
|
|
oldIdToDuplicatedId.set(element.id, newElement.id);
|
|
|
|
oldElements.push(element);
|
|
|
|
oldElements.push(element);
|
|
|
|
newElements.push(newElement);
|
|
|
|
newElements.push(newElement);
|
|
|
@ -234,7 +237,10 @@ const duplicateElements = (
|
|
|
|
|
|
|
|
|
|
|
|
// step (3)
|
|
|
|
// step (3)
|
|
|
|
|
|
|
|
|
|
|
|
const finalElements = finalElementsReversed.reverse();
|
|
|
|
const finalElements = fixFractionalIndices(
|
|
|
|
|
|
|
|
finalElementsReversed.reverse(),
|
|
|
|
|
|
|
|
duplicatedElementsMap,
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
// ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|