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