@foblex/flow
Version:
An Angular library designed to simplify the creation and manipulation of dynamic flow. Provides components for flows, nodes, and connections, automating node manipulation and inter-node connections.
42 lines • 6.22 kB
JavaScript
import { Point } from '@foblex/2d';
import { CalculateFlowPointFromMinimapPointRequest } from './calculate-flow-point-from-minimap-point';
export class FMinimapDragHandler {
fComponentsStore;
fMediator;
flowRect;
canvasPosition;
eventPoint;
minimap;
fEventType = 'minimap';
lastDifference = null;
constructor(fComponentsStore, fMediator, flowRect, canvasPosition, eventPoint, minimap) {
this.fComponentsStore = fComponentsStore;
this.fMediator = fMediator;
this.flowRect = flowRect;
this.canvasPosition = canvasPosition;
this.eventPoint = eventPoint;
this.minimap = minimap;
}
prepareDragSequence() {
this.fComponentsStore.fCanvas?.hostElement.classList.add('f-scaled-animate');
}
onPointerMove(difference) {
if (this.lastDifference && this.isSamePoint(difference, this.lastDifference)) {
return;
}
this.lastDifference = difference;
this.fComponentsStore.fCanvas.setPosition(this.getNewPosition(Point.fromPoint(this.eventPoint).add(difference)));
this.fComponentsStore.fCanvas.redraw();
}
isSamePoint(point1, point2) {
return point1.x === point2.x && point1.y === point2.y;
}
getNewPosition(eventPoint) {
return this.fMediator.execute(new CalculateFlowPointFromMinimapPointRequest(this.flowRect, this.canvasPosition, eventPoint, this.minimap));
}
onPointerUp() {
this.fComponentsStore.fCanvas?.hostElement.classList.remove('f-scaled-animate');
this.fComponentsStore.fCanvas.emitCanvasChangeEvent();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1taW5pbWFwLmRyYWctaGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1taW5pbWFwL2RvbWFpbi9mLW1pbmltYXAuZHJhZy1oYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBSWxELE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBR3RHLE1BQU0sT0FBTyxtQkFBbUI7SUFPcEI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBVkgsVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUV0QixjQUFjLEdBQWtCLElBQUksQ0FBQztJQUU3QyxZQUNVLGdCQUFrQyxFQUNsQyxTQUFvQixFQUNwQixRQUFlLEVBQ2YsY0FBc0IsRUFDdEIsVUFBa0IsRUFDbEIsT0FBcUI7UUFMckIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQU87UUFDZixtQkFBYyxHQUFkLGNBQWMsQ0FBUTtRQUN0QixlQUFVLEdBQVYsVUFBVSxDQUFRO1FBQ2xCLFlBQU8sR0FBUCxPQUFPLENBQWM7SUFFL0IsQ0FBQztJQUVNLG1CQUFtQjtRQUN4QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVNLGFBQWEsQ0FBQyxVQUFrQjtRQUNyQyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDN0UsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxHQUFHLFVBQVUsQ0FBQztRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRU8sV0FBVyxDQUFDLE1BQWMsRUFBRSxNQUFjO1FBQ2hELE9BQU8sTUFBTSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU8sY0FBYyxDQUFDLFVBQWtCO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQVMsSUFBSSx5Q0FBeUMsQ0FDakYsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUM3RCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3pELENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQb2ludCwgSVJlY3QsIFBvaW50IH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IElGRHJhZ0hhbmRsZXIgfSBmcm9tICcuLi8uLi9mLWRyYWdnYWJsZSc7XG5pbXBvcnQgeyBGTWVkaWF0b3IgfSBmcm9tICdAZm9ibGV4L21lZGlhdG9yJztcbmltcG9ydCB7IENhbGN1bGF0ZUZsb3dQb2ludEZyb21NaW5pbWFwUG9pbnRSZXF1ZXN0IH0gZnJvbSAnLi9jYWxjdWxhdGUtZmxvdy1wb2ludC1mcm9tLW1pbmltYXAtcG9pbnQnO1xuaW1wb3J0IHsgRk1pbmltYXBEYXRhIH0gZnJvbSAnLi9mLW1pbmltYXAtZGF0YSc7XG5cbmV4cG9ydCBjbGFzcyBGTWluaW1hcERyYWdIYW5kbGVyIGltcGxlbWVudHMgSUZEcmFnSGFuZGxlciB7XG5cbiAgcHVibGljIGZFdmVudFR5cGUgPSAnbWluaW1hcCc7XG5cbiAgcHJpdmF0ZSBsYXN0RGlmZmVyZW5jZTogSVBvaW50IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmQ29tcG9uZW50c1N0b3JlOiBGQ29tcG9uZW50c1N0b3JlLFxuICAgIHByaXZhdGUgZk1lZGlhdG9yOiBGTWVkaWF0b3IsXG4gICAgcHJpdmF0ZSBmbG93UmVjdDogSVJlY3QsXG4gICAgcHJpdmF0ZSBjYW52YXNQb3NpdGlvbjogSVBvaW50LFxuICAgIHByaXZhdGUgZXZlbnRQb2ludDogSVBvaW50LFxuICAgIHByaXZhdGUgbWluaW1hcDogRk1pbmltYXBEYXRhXG4gICkge1xuICB9XG5cbiAgcHVibGljIHByZXBhcmVEcmFnU2VxdWVuY2UoKTogdm9pZCB7XG4gICAgdGhpcy5mQ29tcG9uZW50c1N0b3JlLmZDYW52YXM/Lmhvc3RFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2Ytc2NhbGVkLWFuaW1hdGUnKTtcbiAgfVxuXG4gIHB1YmxpYyBvblBvaW50ZXJNb3ZlKGRpZmZlcmVuY2U6IElQb2ludCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxhc3REaWZmZXJlbmNlICYmIHRoaXMuaXNTYW1lUG9pbnQoZGlmZmVyZW5jZSwgdGhpcy5sYXN0RGlmZmVyZW5jZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmxhc3REaWZmZXJlbmNlID0gZGlmZmVyZW5jZTtcbiAgICB0aGlzLmZDb21wb25lbnRzU3RvcmUuZkNhbnZhcyEuc2V0UG9zaXRpb24odGhpcy5nZXROZXdQb3NpdGlvbihQb2ludC5mcm9tUG9pbnQodGhpcy5ldmVudFBvaW50KS5hZGQoZGlmZmVyZW5jZSkpKTtcbiAgICB0aGlzLmZDb21wb25lbnRzU3RvcmUuZkNhbnZhcyEucmVkcmF3KCk7XG4gIH1cblxuICBwcml2YXRlIGlzU2FtZVBvaW50KHBvaW50MTogSVBvaW50LCBwb2ludDI6IElQb2ludCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwb2ludDEueCA9PT0gcG9pbnQyLnggJiYgcG9pbnQxLnkgPT09IHBvaW50Mi55O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXROZXdQb3NpdGlvbihldmVudFBvaW50OiBJUG9pbnQpOiBJUG9pbnQge1xuICAgIHJldHVybiB0aGlzLmZNZWRpYXRvci5leGVjdXRlPElQb2ludD4obmV3IENhbGN1bGF0ZUZsb3dQb2ludEZyb21NaW5pbWFwUG9pbnRSZXF1ZXN0KFxuICAgICAgdGhpcy5mbG93UmVjdCwgdGhpcy5jYW52YXNQb3NpdGlvbiwgZXZlbnRQb2ludCwgdGhpcy5taW5pbWFwXG4gICAgKSk7XG4gIH1cblxuICBwdWJsaWMgb25Qb2ludGVyVXAoKTogdm9pZCB7XG4gICAgdGhpcy5mQ29tcG9uZW50c1N0b3JlLmZDYW52YXM/Lmhvc3RFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2Ytc2NhbGVkLWFuaW1hdGUnKTtcbiAgICB0aGlzLmZDb21wb25lbnRzU3RvcmUuZkNhbnZhcyEuZW1pdENhbnZhc0NoYW5nZUV2ZW50KCk7XG4gIH1cbn1cbiJdfQ==