UNPKG

@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.

30 lines 4.45 kB
import { PointExtensions } from '@foblex/2d'; export class FNodeMoveDragHandler { fNode; fSourceHandlers; fTargetHandlers; fEventType = 'move-node'; _onPointerDownPosition = PointExtensions.initialize(); constructor(fNode, fSourceHandlers = [], fTargetHandlers = []) { this.fNode = fNode; this.fSourceHandlers = fSourceHandlers; this.fTargetHandlers = fTargetHandlers; this._onPointerDownPosition = { ...fNode.position }; } onPointerMove(difference) { this._redraw(this._calculateNewPosition(difference)); this.fSourceHandlers.forEach((x) => x.setSourceDifference(difference)); this.fTargetHandlers.forEach((x) => x.setTargetDifference(difference)); } _calculateNewPosition(difference) { return PointExtensions.sum(this._onPointerDownPosition, difference); } _redraw(position) { this.fNode.updatePosition(position); this.fNode.redraw(); } onPointerUp() { this.fNode.positionChange.emit(this.fNode.position); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1ub2RlLW1vdmUuZHJhZy1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9mLWRyYWdnYWJsZS9mLW5vZGUtbW92ZS9mLW5vZGUtbW92ZS5kcmFnLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFVLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUtyRCxNQUFNLE9BQU8sb0JBQW9CO0lBT3RCO0lBQ0E7SUFDQTtJQVBPLFVBQVUsR0FBRyxXQUFXLENBQUM7SUFFeEIsc0JBQXNCLEdBQUcsZUFBZSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBRXZFLFlBQ1MsS0FBZ0IsRUFDaEIsa0JBQStDLEVBQUUsRUFDakQsa0JBQStDLEVBQUU7UUFGakQsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUNoQixvQkFBZSxHQUFmLGVBQWUsQ0FBa0M7UUFDakQsb0JBQWUsR0FBZixlQUFlLENBQWtDO1FBRXhELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFTSxhQUFhLENBQUMsVUFBa0I7UUFDckMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztRQUVyRCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3pFLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxVQUFrQjtRQUM5QyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTyxPQUFPLENBQUMsUUFBZ0I7UUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sV0FBVztRQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUG9pbnQsIFBvaW50RXh0ZW5zaW9ucyB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgSUZEcmFnSGFuZGxlciB9IGZyb20gJy4uL2YtZHJhZy1oYW5kbGVyJztcbmltcG9ydCB7IEZOb2RlQmFzZSB9IGZyb20gJy4uLy4uL2Ytbm9kZSc7XG5pbXBvcnQgeyBCYXNlQ29ubmVjdGlvbkRyYWdIYW5kbGVyIH0gZnJvbSAnLi9jb25uZWN0aW9uLWRyYWctaGFuZGxlcnMnO1xuXG5leHBvcnQgY2xhc3MgRk5vZGVNb3ZlRHJhZ0hhbmRsZXIgaW1wbGVtZW50cyBJRkRyYWdIYW5kbGVyIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgZkV2ZW50VHlwZSA9ICdtb3ZlLW5vZGUnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29uUG9pbnRlckRvd25Qb3NpdGlvbiA9IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGZOb2RlOiBGTm9kZUJhc2UsXG4gICAgcHVibGljIGZTb3VyY2VIYW5kbGVyczogQmFzZUNvbm5lY3Rpb25EcmFnSGFuZGxlcltdID0gW10sXG4gICAgcHVibGljIGZUYXJnZXRIYW5kbGVyczogQmFzZUNvbm5lY3Rpb25EcmFnSGFuZGxlcltdID0gW10sXG4gICkge1xuICAgIHRoaXMuX29uUG9pbnRlckRvd25Qb3NpdGlvbiA9IHsgLi4uZk5vZGUucG9zaXRpb24gfTtcbiAgfVxuXG4gIHB1YmxpYyBvblBvaW50ZXJNb3ZlKGRpZmZlcmVuY2U6IElQb2ludCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZHJhdyh0aGlzLl9jYWxjdWxhdGVOZXdQb3NpdGlvbihkaWZmZXJlbmNlKSk7XG5cbiAgICB0aGlzLmZTb3VyY2VIYW5kbGVycy5mb3JFYWNoKCh4KSA9PiB4LnNldFNvdXJjZURpZmZlcmVuY2UoZGlmZmVyZW5jZSkpO1xuICAgIHRoaXMuZlRhcmdldEhhbmRsZXJzLmZvckVhY2goKHgpID0+IHguc2V0VGFyZ2V0RGlmZmVyZW5jZShkaWZmZXJlbmNlKSk7XG4gIH1cblxuICBwcml2YXRlIF9jYWxjdWxhdGVOZXdQb3NpdGlvbihkaWZmZXJlbmNlOiBJUG9pbnQpOiBJUG9pbnQge1xuICAgIHJldHVybiBQb2ludEV4dGVuc2lvbnMuc3VtKHRoaXMuX29uUG9pbnRlckRvd25Qb3NpdGlvbiwgZGlmZmVyZW5jZSk7XG4gIH1cblxuICBwcml2YXRlIF9yZWRyYXcocG9zaXRpb246IElQb2ludCk6IHZvaWQge1xuICAgIHRoaXMuZk5vZGUudXBkYXRlUG9zaXRpb24ocG9zaXRpb24pO1xuICAgIHRoaXMuZk5vZGUucmVkcmF3KCk7XG4gIH1cblxuICBwdWJsaWMgb25Qb2ludGVyVXAoKTogdm9pZCB7XG4gICAgdGhpcy5mTm9kZS5wb3NpdGlvbkNoYW5nZS5lbWl0KHRoaXMuZk5vZGUucG9zaXRpb24pO1xuICB9XG59XG4iXX0=