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.

50 lines 7.28 kB
import { __decorate } from "tslib"; import { inject, Injectable } from '@angular/core'; import { FExecutionRegister, FMediator } from '@foblex/mediator'; import { SetZoomRequest } from './set-zoom-request'; import { FComponentsStore } from '../../../f-storage'; import { F_ZOOM_TAG } from '../f-zoom-tag'; import { Point } from '@foblex/2d'; import { IsDragStartedRequest } from '../../f-draggable'; import * as i0 from "@angular/core"; let SetZoomExecution = class SetZoomExecution { _fMediator = inject(FMediator); _fComponentsStore = inject(FComponentsStore); get _fHost() { return this._fComponentsStore.fFlow?.hostElement; } get _fCanvas() { return this._fComponentsStore.fCanvas; } get _fZoomComponent() { return this._fComponentsStore.fComponents[F_ZOOM_TAG]; } get _isDragStarted() { return this._fMediator.execute(new IsDragStartedRequest()); } handle(request) { if (this._isDragStarted || !this._fZoomComponent) { return; } const result = this._fCanvas.transform.scale + request.step * request.direction; this._fCanvas.setScale(this._clamp(result), this._castPositionToFlow(request.position)); request.animate ? this._fCanvas.redrawWithAnimation() : this._fCanvas.redraw(); this._fCanvas.emitCanvasChangeEvent(); } _clamp(value) { return Math.max(this._fZoomComponent.minimum, Math.min(value, this._fZoomComponent.maximum)); } _castPositionToFlow(position) { return Point.fromPoint(position).elementTransform(this._fHost); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SetZoomExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SetZoomExecution }); }; SetZoomExecution = __decorate([ FExecutionRegister(SetZoomRequest) ], SetZoomExecution); export { SetZoomExecution }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SetZoomExecution, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0LXpvb20uZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9kb21haW4vZi16b29tL3NldC16b29tL3NldC16b29tLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBYyxNQUFNLGtCQUFrQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBVSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHM0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7O0FBSWxELElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBRW5CLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFckQsSUFBWSxNQUFNO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxXQUFZLENBQUM7SUFDcEQsQ0FBQztJQUVELElBQVksUUFBUTtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFRLENBQUM7SUFDekMsQ0FBQztJQUVELElBQVksZUFBZTtRQUN6QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFFLENBQUM7SUFDekQsQ0FBQztJQUVELElBQVksY0FBYztRQUN4QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFVLElBQUksb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxNQUFNLENBQUMsT0FBdUI7UUFDbkMsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ2pELE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztRQUVoRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN4RixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDL0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxNQUFNLENBQUMsS0FBYTtRQUMxQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxRQUFnQjtRQUMxQyxPQUFPLEtBQUssQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pFLENBQUM7d0dBdkNVLGdCQUFnQjs0R0FBaEIsZ0JBQWdCOztBQUFoQixnQkFBZ0I7SUFENUIsa0JBQWtCLENBQUMsY0FBYyxDQUFDO0dBQ3RCLGdCQUFnQixDQXdDNUI7OzRGQXhDWSxnQkFBZ0I7a0JBRjVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZFeGVjdXRpb25SZWdpc3RlciwgRk1lZGlhdG9yLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBTZXRab29tUmVxdWVzdCB9IGZyb20gJy4vc2V0LXpvb20tcmVxdWVzdCc7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IEZfWk9PTV9UQUcgfSBmcm9tICcuLi9mLXpvb20tdGFnJztcbmltcG9ydCB7IElQb2ludCwgUG9pbnQgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IEZDYW52YXNCYXNlIH0gZnJvbSAnLi4vLi4vLi4vZi1jYW52YXMnO1xuaW1wb3J0IHsgRlpvb21CYXNlIH0gZnJvbSAnLi4vLi4vLi4vZi16b29tJztcbmltcG9ydCB7IElzRHJhZ1N0YXJ0ZWRSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZi1kcmFnZ2FibGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKFNldFpvb21SZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIFNldFpvb21FeGVjdXRpb24gaW1wbGVtZW50cyBJRXhlY3V0aW9uPFNldFpvb21SZXF1ZXN0LCB2b2lkPiB7XG5cbiAgcHJpdmF0ZSBfZk1lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG4gIHByaXZhdGUgX2ZDb21wb25lbnRzU3RvcmUgPSBpbmplY3QoRkNvbXBvbmVudHNTdG9yZSk7XG5cbiAgcHJpdmF0ZSBnZXQgX2ZIb3N0KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZkNvbXBvbmVudHNTdG9yZS5mRmxvdz8uaG9zdEVsZW1lbnQhO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2ZDYW52YXMoKTogRkNhbnZhc0Jhc2Uge1xuICAgIHJldHVybiB0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZDYW52YXMhO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2Zab29tQ29tcG9uZW50KCk6IEZab29tQmFzZSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZkNvbXBvbmVudHNbRl9aT09NX1RBR10hO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2lzRHJhZ1N0YXJ0ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZNZWRpYXRvci5leGVjdXRlPGJvb2xlYW4+KG5ldyBJc0RyYWdTdGFydGVkUmVxdWVzdCgpKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGUocmVxdWVzdDogU2V0Wm9vbVJlcXVlc3QpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNEcmFnU3RhcnRlZCB8fCAhdGhpcy5fZlpvb21Db21wb25lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSB0aGlzLl9mQ2FudmFzLnRyYW5zZm9ybS5zY2FsZSArIHJlcXVlc3Quc3RlcCAqIHJlcXVlc3QuZGlyZWN0aW9uO1xuXG4gICAgdGhpcy5fZkNhbnZhcy5zZXRTY2FsZSh0aGlzLl9jbGFtcChyZXN1bHQpLCB0aGlzLl9jYXN0UG9zaXRpb25Ub0Zsb3cocmVxdWVzdC5wb3NpdGlvbikpO1xuICAgIHJlcXVlc3QuYW5pbWF0ZSA/IHRoaXMuX2ZDYW52YXMucmVkcmF3V2l0aEFuaW1hdGlvbigpIDogdGhpcy5fZkNhbnZhcy5yZWRyYXcoKTtcbiAgICB0aGlzLl9mQ2FudmFzLmVtaXRDYW52YXNDaGFuZ2VFdmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xhbXAodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgubWF4KHRoaXMuX2Zab29tQ29tcG9uZW50Lm1pbmltdW0sIE1hdGgubWluKHZhbHVlLCB0aGlzLl9mWm9vbUNvbXBvbmVudC5tYXhpbXVtKSk7XG4gIH1cblxuICBwcml2YXRlIF9jYXN0UG9zaXRpb25Ub0Zsb3cocG9zaXRpb246IElQb2ludCk6IElQb2ludCB7XG4gICAgcmV0dXJuIFBvaW50LmZyb21Qb2ludChwb3NpdGlvbikuZWxlbWVudFRyYW5zZm9ybSh0aGlzLl9mSG9zdCk7XG4gIH1cbn1cbiJdfQ==