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.

46 lines 7.51 kB
import { __decorate } from "tslib"; import { inject, Injectable } from '@angular/core'; import { CenterGroupOrNodeRequest } from './center-group-or-node-request'; import { FExecutionRegister, FMediator } from '@foblex/mediator'; import { PointExtensions, RectExtensions } from '@foblex/2d'; import { FComponentsStore } from '../../../f-storage'; import { RedrawCanvasWithAnimationRequest } from '../../../domain'; import * as i0 from "@angular/core"; let CenterGroupOrNodeExecution = class CenterGroupOrNodeExecution { _fComponentsStore = inject(FComponentsStore); get transform() { return this._fComponentsStore.fCanvas.transform; } _fMediator = inject(FMediator); handle(request) { const fNode = this.getNode(request.id); if (!fNode) { return; } this.toCenter(this.getNodeRect(fNode), this.getFlowRect(), fNode.position); this._fMediator.execute(new RedrawCanvasWithAnimationRequest(request.animated)); } toCenter(fNodeRect, fFlowRect, position) { this.transform.scaledPosition = PointExtensions.initialize(); this.transform.position = PointExtensions.initialize((fFlowRect.width - fNodeRect.width) / 2 - position.x * this.transform.scale, (fFlowRect.height - fNodeRect.height) / 2 - position.y * this.transform.scale); } getNode(id) { return this._fComponentsStore.fNodes.find((x) => x.fId === id); } getNodeRect(fNode) { return RectExtensions.fromElement(fNode.hostElement); } getFlowRect() { return RectExtensions.fromElement(this._fComponentsStore.fFlow.hostElement); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CenterGroupOrNodeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CenterGroupOrNodeExecution }); }; CenterGroupOrNodeExecution = __decorate([ FExecutionRegister(CenterGroupOrNodeRequest) ], CenterGroupOrNodeExecution); export { CenterGroupOrNodeExecution }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CenterGroupOrNodeExecution, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2VudGVyLWdyb3VwLW9yLW5vZGUuZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9kb21haW4vZi1jYW52YXMvY2VudGVyLWdyb3VwLW9yLW5vZGUvY2VudGVyLWdyb3VwLW9yLW5vZGUuZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFrQyxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXRELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUk1RCxJQUFNLDBCQUEwQixHQUFoQyxNQUFNLDBCQUEwQjtJQUU3QixpQkFBaUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUVyRCxJQUFZLFNBQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBUSxDQUFDLFNBQVMsQ0FBQztJQUNuRCxDQUFDO0lBRU8sVUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUVoQyxNQUFNLENBQUMsT0FBaUM7UUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUzRSxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLGdDQUFnQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFTSxRQUFRLENBQUMsU0FBZ0IsRUFBRSxTQUFnQixFQUFFLFFBQWdCO1FBQ2xFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxlQUFlLENBQUMsVUFBVSxDQUNsRCxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUMzRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUM5RSxDQUFDO0lBQ0osQ0FBQztJQUVPLE9BQU8sQ0FBQyxFQUFVO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFnQjtRQUNsQyxPQUFPLGNBQWMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFTyxXQUFXO1FBQ2pCLE9BQU8sY0FBYyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9FLENBQUM7d0dBdkNVLDBCQUEwQjs0R0FBMUIsMEJBQTBCOztBQUExQiwwQkFBMEI7SUFEdEMsa0JBQWtCLENBQUMsd0JBQXdCLENBQUM7R0FDaEMsMEJBQTBCLENBd0N0Qzs7NEZBeENZLDBCQUEwQjtrQkFGdEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2VudGVyR3JvdXBPck5vZGVSZXF1ZXN0IH0gZnJvbSAnLi9jZW50ZXItZ3JvdXAtb3Itbm9kZS1yZXF1ZXN0JztcbmltcG9ydCB7IEZFeGVjdXRpb25SZWdpc3RlciwgRk1lZGlhdG9yLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBJUG9pbnQsIElSZWN0LCBJVHJhbnNmb3JtTW9kZWwsIFBvaW50RXh0ZW5zaW9ucywgUmVjdEV4dGVuc2lvbnMgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IEZDb21wb25lbnRzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHsgRk5vZGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vZi1ub2RlJztcbmltcG9ydCB7IFJlZHJhd0NhbnZhc1dpdGhBbmltYXRpb25SZXF1ZXN0IH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcblxuQEluamVjdGFibGUoKVxuQEZFeGVjdXRpb25SZWdpc3RlcihDZW50ZXJHcm91cE9yTm9kZVJlcXVlc3QpXG5leHBvcnQgY2xhc3MgQ2VudGVyR3JvdXBPck5vZGVFeGVjdXRpb24gaW1wbGVtZW50cyBJRXhlY3V0aW9uPENlbnRlckdyb3VwT3JOb2RlUmVxdWVzdCwgdm9pZD4ge1xuXG4gIHByaXZhdGUgX2ZDb21wb25lbnRzU3RvcmUgPSBpbmplY3QoRkNvbXBvbmVudHNTdG9yZSk7XG5cbiAgcHJpdmF0ZSBnZXQgdHJhbnNmb3JtKCk6IElUcmFuc2Zvcm1Nb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZkNhbnZhcyEudHJhbnNmb3JtO1xuICB9XG5cbiAgcHJpdmF0ZSBfZk1lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG5cbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBDZW50ZXJHcm91cE9yTm9kZVJlcXVlc3QpOiB2b2lkIHtcbiAgICBjb25zdCBmTm9kZSA9IHRoaXMuZ2V0Tm9kZShyZXF1ZXN0LmlkKTtcbiAgICBpZiAoIWZOb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50b0NlbnRlcih0aGlzLmdldE5vZGVSZWN0KGZOb2RlKSwgdGhpcy5nZXRGbG93UmVjdCgpLCBmTm9kZS5wb3NpdGlvbik7XG5cbiAgICB0aGlzLl9mTWVkaWF0b3IuZXhlY3V0ZShuZXcgUmVkcmF3Q2FudmFzV2l0aEFuaW1hdGlvblJlcXVlc3QocmVxdWVzdC5hbmltYXRlZCkpO1xuICB9XG5cbiAgcHVibGljIHRvQ2VudGVyKGZOb2RlUmVjdDogSVJlY3QsIGZGbG93UmVjdDogSVJlY3QsIHBvc2l0aW9uOiBJUG9pbnQpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zZm9ybS5zY2FsZWRQb3NpdGlvbiA9IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG4gICAgdGhpcy50cmFuc2Zvcm0ucG9zaXRpb24gPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZShcbiAgICAgIChmRmxvd1JlY3Qud2lkdGggLSBmTm9kZVJlY3Qud2lkdGgpIC8gMiAtIHBvc2l0aW9uLnggKiB0aGlzLnRyYW5zZm9ybS5zY2FsZSxcbiAgICAgIChmRmxvd1JlY3QuaGVpZ2h0IC0gZk5vZGVSZWN0LmhlaWdodCkgLyAyIC0gcG9zaXRpb24ueSAqIHRoaXMudHJhbnNmb3JtLnNjYWxlXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Tm9kZShpZDogc3RyaW5nKTogRk5vZGVCYXNlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fZkNvbXBvbmVudHNTdG9yZS5mTm9kZXMuZmluZCgoeCkgPT4geC5mSWQgPT09IGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Tm9kZVJlY3QoZk5vZGU6IEZOb2RlQmFzZSk6IElSZWN0IHtcbiAgICByZXR1cm4gUmVjdEV4dGVuc2lvbnMuZnJvbUVsZW1lbnQoZk5vZGUuaG9zdEVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGbG93UmVjdCgpOiBJUmVjdCB7XG4gICAgcmV0dXJuIFJlY3RFeHRlbnNpb25zLmZyb21FbGVtZW50KHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZkZsb3chLmhvc3RFbGVtZW50KTtcbiAgfVxufVxuIl19