devexpress-diagram
Version:
DevExpress Diagram Control
25 lines (23 loc) • 1.19 kB
text/typescript
import { PasteSelectionCommandBase } from "./PasteSelectionCommandBase";
import { DiagramItem } from "../../Model/DiagramItem";
import { Shape } from "../../Model/Shapes/Shape";
import { Connector } from "../../Model/Connectors/Connector";
import { Point } from "@devexpress/utils/lib/geometry/point";
export class PasteSelectionInPositionCommand extends PasteSelectionCommandBase {
protected getEventPositionOffset(items: DiagramItem[], evtPosition?: Point): Point {
const selectionPos = items.reduce((min, i) => {
return {
x: Math.min(min.x, i instanceof Shape ? i.position.x : i instanceof Connector ? i.getMinX() : Number.MAX_VALUE),
y: Math.min(min.y, i instanceof Shape ? i.position.y : i instanceof Connector ? i.getMinY() : Number.MAX_VALUE)
};
}, {
x: Number.MAX_VALUE,
y: Number.MAX_VALUE
});
const newSelectionPos = this.control.render.getModelPointByEventPoint(evtPosition.x, evtPosition.y);
return new Point(
newSelectionPos.x - selectionPos.x,
newSelectionPos.y - selectionPos.y
);
}
}