@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.
49 lines • 8.8 kB
JavaScript
import { __decorate } from "tslib";
import { inject, Injectable } from '@angular/core';
import { GetNormalizedConnectorRectRequest } from './get-normalized-connector-rect-request';
import { FExecutionRegister, FMediator } from '@foblex/mediator';
import { FComponentsStore } from '../../f-storage';
import { RoundedRect, SizeExtensions, } from '@foblex/2d';
import { GetElementRoundedRectRequest } from '../get-element-rounded-rect';
import { GetNormalizedPointRequest } from "../get-normalized-point";
import * as i0 from "@angular/core";
let GetNormalizedConnectorRectExecution = class GetNormalizedConnectorRectExecution {
_fComponentsStore = inject(FComponentsStore);
_fMediator = inject(FMediator);
get _transform() {
return this._fComponentsStore.fCanvas.transform;
}
handle(request) {
const systemRect = this._getElementRoundedRect(request);
const position = this._normalizePosition(systemRect);
const unscaledSize = this._unscaleSize(systemRect);
const unscaledRect = this._getUnscaledRect(position, unscaledSize, systemRect);
const offsetSize = this._getOffsetSize(request.element, unscaledSize);
return RoundedRect.fromCenter(unscaledRect, offsetSize.width, offsetSize.height);
}
_getElementRoundedRect(request) {
return this._fMediator.execute(new GetElementRoundedRectRequest(request.element));
}
_normalizePosition(rect) {
return this._fMediator.execute(new GetNormalizedPointRequest(rect));
}
_unscaleSize(rect) {
return SizeExtensions.initialize(rect.width / this._transform.scale, rect.height / this._transform.scale);
}
_getUnscaledRect(position, size, rect) {
return new RoundedRect(position.x, position.y, size.width, size.height, rect.radius1, rect.radius2, rect.radius3, rect.radius4);
}
_getOffsetSize(element, size) {
return SizeExtensions.offsetFromElement(element) || size;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetNormalizedConnectorRectExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetNormalizedConnectorRectExecution });
};
GetNormalizedConnectorRectExecution = __decorate([
FExecutionRegister(GetNormalizedConnectorRectRequest)
], GetNormalizedConnectorRectExecution);
export { GetNormalizedConnectorRectExecution };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetNormalizedConnectorRectExecution, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW5vcm1hbGl6ZWQtY29ubmVjdG9yLXJlY3QuZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9kb21haW4vZ2V0LW5vcm1hbGl6ZWQtY29ubmVjdG9yLXJlY3QvZ2V0LW5vcm1hbGl6ZWQtY29ubmVjdG9yLXJlY3QuZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsaUNBQWlDLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM1RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUVMLFdBQVcsRUFHWCxjQUFjLEdBRWYsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0UsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0seUJBQXlCLENBQUM7O0FBSTNELElBQU0sbUNBQW1DLEdBQXpDLE1BQU0sbUNBQW1DO0lBRTdCLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdDLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFaEQsSUFBWSxVQUFVO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQVEsQ0FBQyxTQUFTLENBQUM7SUFDbkQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUEwQztRQUN0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFFOUUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sV0FBVyxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVPLHNCQUFzQixDQUFDLE9BQTBDO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQzVCLElBQUksNEJBQTRCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUNsRCxDQUFDO0lBQ0osQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQWtCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTyxZQUFZLENBQUMsSUFBa0I7UUFDckMsT0FBTyxjQUFjLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUFnQixFQUFFLElBQVcsRUFBRSxJQUFrQjtRQUN4RSxPQUFPLElBQUksV0FBVyxDQUNwQixRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxFQUMvQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUN2RCxDQUFBO0lBQ0gsQ0FBQztJQUVPLGNBQWMsQ0FBQyxPQUFpQyxFQUFFLElBQVc7UUFDbkUsT0FBTyxjQUFjLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFBO0lBQzFELENBQUM7d0dBMUNVLG1DQUFtQzs0R0FBbkMsbUNBQW1DOztBQUFuQyxtQ0FBbUM7SUFEL0Msa0JBQWtCLENBQUMsaUNBQWlDLENBQUM7R0FDekMsbUNBQW1DLENBMkMvQzs7NEZBM0NZLG1DQUFtQztrQkFGL0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2V0Tm9ybWFsaXplZENvbm5lY3RvclJlY3RSZXF1ZXN0IH0gZnJvbSAnLi9nZXQtbm9ybWFsaXplZC1jb25uZWN0b3ItcmVjdC1yZXF1ZXN0JztcbmltcG9ydCB7IEZFeGVjdXRpb25SZWdpc3RlciwgRk1lZGlhdG9yLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7XG4gIElSb3VuZGVkUmVjdCxcbiAgUm91bmRlZFJlY3QsXG4gIElQb2ludCxcbiAgSVNpemUsXG4gIFNpemVFeHRlbnNpb25zLFxuICBJVHJhbnNmb3JtTW9kZWwsXG59IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgR2V0RWxlbWVudFJvdW5kZWRSZWN0UmVxdWVzdCB9IGZyb20gJy4uL2dldC1lbGVtZW50LXJvdW5kZWQtcmVjdCc7XG5pbXBvcnQge0dldE5vcm1hbGl6ZWRQb2ludFJlcXVlc3R9IGZyb20gXCIuLi9nZXQtbm9ybWFsaXplZC1wb2ludFwiO1xuXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKEdldE5vcm1hbGl6ZWRDb25uZWN0b3JSZWN0UmVxdWVzdClcbmV4cG9ydCBjbGFzcyBHZXROb3JtYWxpemVkQ29ubmVjdG9yUmVjdEV4ZWN1dGlvbiBpbXBsZW1lbnRzIElFeGVjdXRpb248R2V0Tm9ybWFsaXplZENvbm5lY3RvclJlY3RSZXF1ZXN0LCBJUm91bmRlZFJlY3Q+IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mQ29tcG9uZW50c1N0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mTWVkaWF0b3IgPSBpbmplY3QoRk1lZGlhdG9yKTtcblxuICBwcml2YXRlIGdldCBfdHJhbnNmb3JtKCk6IElUcmFuc2Zvcm1Nb2RlbCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZkNhbnZhcyEudHJhbnNmb3JtO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBHZXROb3JtYWxpemVkQ29ubmVjdG9yUmVjdFJlcXVlc3QpOiBJUm91bmRlZFJlY3Qge1xuICAgIGNvbnN0IHN5c3RlbVJlY3QgPSB0aGlzLl9nZXRFbGVtZW50Um91bmRlZFJlY3QocmVxdWVzdCk7XG4gICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLl9ub3JtYWxpemVQb3NpdGlvbihzeXN0ZW1SZWN0KTtcbiAgICBjb25zdCB1bnNjYWxlZFNpemUgPSB0aGlzLl91bnNjYWxlU2l6ZShzeXN0ZW1SZWN0KTtcbiAgICBjb25zdCB1bnNjYWxlZFJlY3QgPSB0aGlzLl9nZXRVbnNjYWxlZFJlY3QocG9zaXRpb24sIHVuc2NhbGVkU2l6ZSwgc3lzdGVtUmVjdClcblxuICAgIGNvbnN0IG9mZnNldFNpemUgPSB0aGlzLl9nZXRPZmZzZXRTaXplKHJlcXVlc3QuZWxlbWVudCwgdW5zY2FsZWRTaXplKTtcbiAgICByZXR1cm4gUm91bmRlZFJlY3QuZnJvbUNlbnRlcih1bnNjYWxlZFJlY3QsIG9mZnNldFNpemUud2lkdGgsIG9mZnNldFNpemUuaGVpZ2h0KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEVsZW1lbnRSb3VuZGVkUmVjdChyZXF1ZXN0OiBHZXROb3JtYWxpemVkQ29ubmVjdG9yUmVjdFJlcXVlc3QpOiBJUm91bmRlZFJlY3Qge1xuICAgIHJldHVybiB0aGlzLl9mTWVkaWF0b3IuZXhlY3V0ZTxJUm91bmRlZFJlY3Q+KFxuICAgICAgbmV3IEdldEVsZW1lbnRSb3VuZGVkUmVjdFJlcXVlc3QocmVxdWVzdC5lbGVtZW50KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9ub3JtYWxpemVQb3NpdGlvbihyZWN0OiBJUm91bmRlZFJlY3QpOiBJUG9pbnQge1xuICAgIHJldHVybiB0aGlzLl9mTWVkaWF0b3IuZXhlY3V0ZShuZXcgR2V0Tm9ybWFsaXplZFBvaW50UmVxdWVzdChyZWN0KSk7XG4gIH1cblxuICBwcml2YXRlIF91bnNjYWxlU2l6ZShyZWN0OiBJUm91bmRlZFJlY3QpOiBJU2l6ZSB7XG4gICAgcmV0dXJuIFNpemVFeHRlbnNpb25zLmluaXRpYWxpemUocmVjdC53aWR0aCAvIHRoaXMuX3RyYW5zZm9ybS5zY2FsZSwgcmVjdC5oZWlnaHQgLyB0aGlzLl90cmFuc2Zvcm0uc2NhbGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0VW5zY2FsZWRSZWN0KHBvc2l0aW9uOiBJUG9pbnQsIHNpemU6IElTaXplLCByZWN0OiBJUm91bmRlZFJlY3QpOiBJUm91bmRlZFJlY3Qge1xuICAgIHJldHVybiBuZXcgUm91bmRlZFJlY3QoXG4gICAgICBwb3NpdGlvbi54LCBwb3NpdGlvbi55LCBzaXplLndpZHRoLCBzaXplLmhlaWdodCxcbiAgICAgIHJlY3QucmFkaXVzMSwgcmVjdC5yYWRpdXMyLCByZWN0LnJhZGl1czMsIHJlY3QucmFkaXVzNFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgX2dldE9mZnNldFNpemUoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBTVkdFbGVtZW50LCBzaXplOiBJU2l6ZSk6IElTaXplIHtcbiAgICByZXR1cm4gU2l6ZUV4dGVuc2lvbnMub2Zmc2V0RnJvbUVsZW1lbnQoZWxlbWVudCkgfHwgc2l6ZVxuICB9XG59XG4iXX0=