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 9.12 kB
import { __decorate } from "tslib"; import { inject, Injectable } from '@angular/core'; import { ResetScaleAndCenterRequest } from './reset-scale-and-center-request'; import { FExecutionRegister, FMediator } from '@foblex/mediator'; import { PointExtensions, RectExtensions } from '@foblex/2d'; import { CalculateNodesBoundingBoxRequest, RedrawCanvasWithAnimationRequest } from '../../../domain'; import { FComponentsStore } from '../../../f-storage'; import * as i0 from "@angular/core"; let ResetScaleAndCenterExecution = class ResetScaleAndCenterExecution { _fMediator = inject(FMediator); _fComponentsStore = inject(FComponentsStore); get _transform() { return this._fComponentsStore.fCanvas.transform; } handle(request) { const fNodesRect = this._fMediator.execute(new CalculateNodesBoundingBoxRequest()) || RectExtensions.initialize(); if (fNodesRect.width === 0 || fNodesRect.height === 0) { return; } this._oneToOneCentering(fNodesRect, RectExtensions.fromElement(this._fComponentsStore.fFlow.hostElement), this._fComponentsStore.fNodes.map((x) => x.position)); this._fMediator.execute(new RedrawCanvasWithAnimationRequest(request.animated)); } _oneToOneCentering(rect, parentRect, points) { this._transform.scaledPosition = PointExtensions.initialize(); this._transform.position = this._getZeroPositionWithoutScale(points); const newX = (parentRect.width - rect.width / this._transform.scale) / 2 - this._transform.position.x; const newY = (parentRect.height - rect.height / this._transform.scale) / 2 - this._transform.position.y; this._transform.scale = 1; this._transform.position = PointExtensions.initialize(newX, newY); } _getZeroPositionWithoutScale(points) { const xPoint = points.length ? Math.min(...points.map((point) => point.x)) : 0; const yPoint = points.length ? Math.min(...points.map((point) => point.y)) : 0; return PointExtensions.initialize(xPoint, yPoint); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResetScaleAndCenterExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResetScaleAndCenterExecution }); }; ResetScaleAndCenterExecution = __decorate([ FExecutionRegister(ResetScaleAndCenterRequest) ], ResetScaleAndCenterExecution); export { ResetScaleAndCenterExecution }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ResetScaleAndCenterExecution, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzZXQtc2NhbGUtYW5kLWNlbnRlci5leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLWNhbnZhcy9yZXNldC1zY2FsZS1hbmQtY2VudGVyL3Jlc2V0LXNjYWxlLWFuZC1jZW50ZXIuZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFrQyxlQUFlLEVBQUUsY0FBYyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3JHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUkvQyxJQUFNLDRCQUE0QixHQUFsQyxNQUFNLDRCQUE0QjtJQUV0QixVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTlELElBQVksVUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFRLENBQUMsU0FBUyxDQUFDO0lBQ25ELENBQUM7SUFFTSxNQUFNLENBQUMsT0FBbUM7UUFDL0MsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQWUsSUFBSSxnQ0FBZ0MsRUFBRSxDQUFDLElBQUksY0FBYyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hJLElBQUksVUFBVSxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxrQkFBa0IsQ0FDckIsVUFBVSxFQUNWLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQU0sQ0FBQyxXQUFXLENBQUMsRUFDckUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FDckQsQ0FBQztRQUVGLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksZ0NBQWdDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVNLGtCQUFrQixDQUFDLElBQVcsRUFBRSxVQUFpQixFQUFFLE1BQWdCO1FBQ3hFLElBQUksQ0FBQyxVQUFVLENBQUMsY0FBYyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUM5RCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckUsTUFBTSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3RHLE1BQU0sSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUV4RyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVPLDRCQUE0QixDQUFDLE1BQWdCO1FBQ25ELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9FLE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDbkQsQ0FBQzt3R0F0Q1UsNEJBQTRCOzRHQUE1Qiw0QkFBNEI7O0FBQTVCLDRCQUE0QjtJQUR4QyxrQkFBa0IsQ0FBQywwQkFBMEIsQ0FBQztHQUNsQyw0QkFBNEIsQ0F1Q3hDOzs0RkF2Q1ksNEJBQTRCO2tCQUZ4QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXNldFNjYWxlQW5kQ2VudGVyUmVxdWVzdCB9IGZyb20gJy4vcmVzZXQtc2NhbGUtYW5kLWNlbnRlci1yZXF1ZXN0JztcbmltcG9ydCB7IEZFeGVjdXRpb25SZWdpc3RlciwgRk1lZGlhdG9yLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBJUG9pbnQsIElSZWN0LCBJVHJhbnNmb3JtTW9kZWwsIFBvaW50RXh0ZW5zaW9ucywgUmVjdEV4dGVuc2lvbnMgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IENhbGN1bGF0ZU5vZGVzQm91bmRpbmdCb3hSZXF1ZXN0LCBSZWRyYXdDYW52YXNXaXRoQW5pbWF0aW9uUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vZi1zdG9yYWdlJztcblxuQEluamVjdGFibGUoKVxuQEZFeGVjdXRpb25SZWdpc3RlcihSZXNldFNjYWxlQW5kQ2VudGVyUmVxdWVzdClcbmV4cG9ydCBjbGFzcyBSZXNldFNjYWxlQW5kQ2VudGVyRXhlY3V0aW9uIGltcGxlbWVudHMgSUV4ZWN1dGlvbjxSZXNldFNjYWxlQW5kQ2VudGVyUmVxdWVzdCwgdm9pZD4ge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZNZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mQ29tcG9uZW50c1N0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuXG4gIHByaXZhdGUgZ2V0IF90cmFuc2Zvcm0oKTogSVRyYW5zZm9ybU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5fZkNvbXBvbmVudHNTdG9yZS5mQ2FudmFzIS50cmFuc2Zvcm07XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IFJlc2V0U2NhbGVBbmRDZW50ZXJSZXF1ZXN0KTogdm9pZCB7XG4gICAgY29uc3QgZk5vZGVzUmVjdCA9IHRoaXMuX2ZNZWRpYXRvci5leGVjdXRlPElSZWN0IHwgbnVsbD4obmV3IENhbGN1bGF0ZU5vZGVzQm91bmRpbmdCb3hSZXF1ZXN0KCkpIHx8IFJlY3RFeHRlbnNpb25zLmluaXRpYWxpemUoKTtcbiAgICBpZiAoZk5vZGVzUmVjdC53aWR0aCA9PT0gMCB8fCBmTm9kZXNSZWN0LmhlaWdodCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9vbmVUb09uZUNlbnRlcmluZyhcbiAgICAgIGZOb2Rlc1JlY3QsXG4gICAgICBSZWN0RXh0ZW5zaW9ucy5mcm9tRWxlbWVudCh0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZGbG93IS5ob3N0RWxlbWVudCksXG4gICAgICB0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZOb2Rlcy5tYXAoKHgpID0+IHgucG9zaXRpb24pXG4gICAgKTtcblxuICAgIHRoaXMuX2ZNZWRpYXRvci5leGVjdXRlKG5ldyBSZWRyYXdDYW52YXNXaXRoQW5pbWF0aW9uUmVxdWVzdChyZXF1ZXN0LmFuaW1hdGVkKSk7XG4gIH1cblxuICBwdWJsaWMgX29uZVRvT25lQ2VudGVyaW5nKHJlY3Q6IElSZWN0LCBwYXJlbnRSZWN0OiBJUmVjdCwgcG9pbnRzOiBJUG9pbnRbXSk6IHZvaWQge1xuICAgIHRoaXMuX3RyYW5zZm9ybS5zY2FsZWRQb3NpdGlvbiA9IFBvaW50RXh0ZW5zaW9ucy5pbml0aWFsaXplKCk7XG4gICAgdGhpcy5fdHJhbnNmb3JtLnBvc2l0aW9uID0gdGhpcy5fZ2V0WmVyb1Bvc2l0aW9uV2l0aG91dFNjYWxlKHBvaW50cyk7XG5cbiAgICBjb25zdCBuZXdYID0gKHBhcmVudFJlY3Qud2lkdGggLSByZWN0LndpZHRoIC8gdGhpcy5fdHJhbnNmb3JtLnNjYWxlKSAvIDIgLSB0aGlzLl90cmFuc2Zvcm0ucG9zaXRpb24ueDtcbiAgICBjb25zdCBuZXdZID0gKHBhcmVudFJlY3QuaGVpZ2h0IC0gcmVjdC5oZWlnaHQgLyB0aGlzLl90cmFuc2Zvcm0uc2NhbGUpIC8gMiAtIHRoaXMuX3RyYW5zZm9ybS5wb3NpdGlvbi55O1xuXG4gICAgdGhpcy5fdHJhbnNmb3JtLnNjYWxlID0gMTtcbiAgICB0aGlzLl90cmFuc2Zvcm0ucG9zaXRpb24gPSBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZShuZXdYLCBuZXdZKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFplcm9Qb3NpdGlvbldpdGhvdXRTY2FsZShwb2ludHM6IElQb2ludFtdKTogSVBvaW50IHtcbiAgICBjb25zdCB4UG9pbnQgPSBwb2ludHMubGVuZ3RoID8gTWF0aC5taW4oLi4ucG9pbnRzLm1hcCgocG9pbnQpID0+IHBvaW50LngpKSA6IDA7XG4gICAgY29uc3QgeVBvaW50ID0gcG9pbnRzLmxlbmd0aCA/IE1hdGgubWluKC4uLnBvaW50cy5tYXAoKHBvaW50KSA9PiBwb2ludC55KSkgOiAwO1xuICAgIHJldHVybiBQb2ludEV4dGVuc2lvbnMuaW5pdGlhbGl6ZSh4UG9pbnQsIHlQb2ludClcbiAgfVxufVxuIl19