@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.
60 lines • 9.98 kB
JavaScript
import { __decorate } from "tslib";
import { inject, Injectable } from '@angular/core';
import { GetNormalizedElementRectRequest } from './get-normalized-element-rect-request';
import { FExecutionRegister, FMediator } from '@foblex/mediator';
import { FComponentsStore } from '../../f-storage';
import { RoundedRect, SizeExtensions, RectExtensions } from '@foblex/2d';
import { GetNormalizedPointRequest } from "../get-normalized-point";
import * as i0 from "@angular/core";
let GetNormalizedElementRectExecution = class GetNormalizedElementRectExecution {
_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);
}
// BrowserWindow
// +--------------------------------+
// | |
// | Element |
// | (x: 100, y: 50) |
// | +--------+ |
// | | | |
// | | | |
// | +--------+ |
// | |
// +--------------------------------+
// This data of the element is relative to the browser window, not the canvas, with all transformations applied.
_getElementRoundedRect(request) {
return RoundedRect.fromRect(RectExtensions.fromElement(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: GetNormalizedElementRectExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetNormalizedElementRectExecution });
};
GetNormalizedElementRectExecution = __decorate([
FExecutionRegister(GetNormalizedElementRectRequest)
], GetNormalizedElementRectExecution);
export { GetNormalizedElementRectExecution };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetNormalizedElementRectExecution, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LW5vcm1hbGl6ZWQtZWxlbWVudC1yZWN0LmV4ZWN1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZG9tYWluL2dldC1ub3JtYWxpemVkLWVsZW1lbnQtcmVjdC9nZXQtbm9ybWFsaXplZC1lbGVtZW50LXJlY3QuZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN4RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUVMLFdBQVcsRUFHWCxjQUFjLEVBRWQsY0FBYyxFQUNmLE1BQU0sWUFBWSxDQUFDO0FBQ3BCLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDOztBQUkzRCxJQUFNLGlDQUFpQyxHQUF2QyxNQUFNLGlDQUFpQztJQUUzQixpQkFBaUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3QyxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBRWhELElBQVksVUFBVTtRQUNwQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFRLENBQUMsU0FBUyxDQUFDO0lBQ25ELENBQUM7SUFFTSxNQUFNLENBQUMsT0FBd0M7UUFDcEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFBO1FBRTlFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsQ0FBQztRQUN0RSxPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIscUNBQXFDO0lBQ3JDLHFDQUFxQztJQUNyQyxxQ0FBcUM7SUFDckMscUNBQXFDO0lBQ3JDLHFDQUFxQztJQUNyQyxxQ0FBcUM7SUFDckMscUNBQXFDO0lBQ3JDLHFDQUFxQztJQUNyQyxxQ0FBcUM7SUFDckMscUNBQXFDO0lBQ3JDLGdIQUFnSDtJQUN4RyxzQkFBc0IsQ0FBQyxPQUF3QztRQUNyRSxPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBa0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFrQjtRQUNyQyxPQUFPLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUcsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFFBQWdCLEVBQUUsSUFBVyxFQUFFLElBQWtCO1FBQ3hFLE9BQU8sSUFBSSxXQUFXLENBQ3BCLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQy9DLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQ3ZELENBQUE7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLE9BQWlDLEVBQUUsSUFBVztRQUNuRSxPQUFPLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUE7SUFDMUQsQ0FBQzt3R0FwRFUsaUNBQWlDOzRHQUFqQyxpQ0FBaUM7O0FBQWpDLGlDQUFpQztJQUQ3QyxrQkFBa0IsQ0FBQywrQkFBK0IsQ0FBQztHQUN2QyxpQ0FBaUMsQ0FxRDdDOzs0RkFyRFksaUNBQWlDO2tCQUY3QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBHZXROb3JtYWxpemVkRWxlbWVudFJlY3RSZXF1ZXN0IH0gZnJvbSAnLi9nZXQtbm9ybWFsaXplZC1lbGVtZW50LXJlY3QtcmVxdWVzdCc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgRkNvbXBvbmVudHNTdG9yZSB9IGZyb20gJy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQge1xuICBJUm91bmRlZFJlY3QsXG4gIFJvdW5kZWRSZWN0LFxuICBJUG9pbnQsXG4gIElTaXplLFxuICBTaXplRXh0ZW5zaW9ucyxcbiAgSVRyYW5zZm9ybU1vZGVsLFxuICBSZWN0RXh0ZW5zaW9ucywgSVJlY3Rcbn0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQge0dldE5vcm1hbGl6ZWRQb2ludFJlcXVlc3R9IGZyb20gXCIuLi9nZXQtbm9ybWFsaXplZC1wb2ludFwiO1xuXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKEdldE5vcm1hbGl6ZWRFbGVtZW50UmVjdFJlcXVlc3QpXG5leHBvcnQgY2xhc3MgR2V0Tm9ybWFsaXplZEVsZW1lbnRSZWN0RXhlY3V0aW9uIGltcGxlbWVudHMgSUV4ZWN1dGlvbjxHZXROb3JtYWxpemVkRWxlbWVudFJlY3RSZXF1ZXN0LCBJUmVjdD4ge1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZDb21wb25lbnRzU3RvcmUgPSBpbmplY3QoRkNvbXBvbmVudHNTdG9yZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZNZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuXG4gIHByaXZhdGUgZ2V0IF90cmFuc2Zvcm0oKTogSVRyYW5zZm9ybU1vZGVsIHtcbiAgICByZXR1cm4gdGhpcy5fZkNvbXBvbmVudHNTdG9yZS5mQ2FudmFzIS50cmFuc2Zvcm07XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IEdldE5vcm1hbGl6ZWRFbGVtZW50UmVjdFJlcXVlc3QpOiBJUmVjdCB7XG4gICAgY29uc3Qgc3lzdGVtUmVjdCA9IHRoaXMuX2dldEVsZW1lbnRSb3VuZGVkUmVjdChyZXF1ZXN0KTtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuX25vcm1hbGl6ZVBvc2l0aW9uKHN5c3RlbVJlY3QpO1xuICAgIGNvbnN0IHVuc2NhbGVkU2l6ZSA9IHRoaXMuX3Vuc2NhbGVTaXplKHN5c3RlbVJlY3QpO1xuICAgIGNvbnN0IHVuc2NhbGVkUmVjdCA9IHRoaXMuX2dldFVuc2NhbGVkUmVjdChwb3NpdGlvbiwgdW5zY2FsZWRTaXplLCBzeXN0ZW1SZWN0KVxuXG4gICAgY29uc3Qgb2Zmc2V0U2l6ZSA9IHRoaXMuX2dldE9mZnNldFNpemUocmVxdWVzdC5lbGVtZW50LCB1bnNjYWxlZFNpemUpO1xuICAgIHJldHVybiBSb3VuZGVkUmVjdC5mcm9tQ2VudGVyKHVuc2NhbGVkUmVjdCwgb2Zmc2V0U2l6ZS53aWR0aCwgb2Zmc2V0U2l6ZS5oZWlnaHQpO1xuICB9XG5cbiAgLy8gQnJvd3NlcldpbmRvd1xuICAvLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gIC8vIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgLy8gfCAgICAgRWxlbWVudCAgICAgICAgICAgICAgICAgICAgfFxuICAvLyB8ICAgICAoeDogMTAwLCB5OiA1MCkgICAgICAgICAgICB8XG4gIC8vIHwgICAgICstLS0tLS0tLSsgICAgICAgICAgICAgICAgIHxcbiAgLy8gfCAgICAgfCAgICAgICAgfCAgICAgICAgICAgICAgICAgfFxuICAvLyB8ICAgICB8ICAgICAgICB8ICAgICAgICAgICAgICAgICB8XG4gIC8vIHwgICAgICstLS0tLS0tLSsgICAgICAgICAgICAgICAgIHxcbiAgLy8gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAvLyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gIC8vIFRoaXMgZGF0YSBvZiB0aGUgZWxlbWVudCBpcyByZWxhdGl2ZSB0byB0aGUgYnJvd3NlciB3aW5kb3csIG5vdCB0aGUgY2FudmFzLCB3aXRoIGFsbCB0cmFuc2Zvcm1hdGlvbnMgYXBwbGllZC5cbiAgcHJpdmF0ZSBfZ2V0RWxlbWVudFJvdW5kZWRSZWN0KHJlcXVlc3Q6IEdldE5vcm1hbGl6ZWRFbGVtZW50UmVjdFJlcXVlc3QpOiBJUm91bmRlZFJlY3Qge1xuICAgIHJldHVybiBSb3VuZGVkUmVjdC5mcm9tUmVjdChSZWN0RXh0ZW5zaW9ucy5mcm9tRWxlbWVudChyZXF1ZXN0LmVsZW1lbnQpKTtcbiAgfVxuXG4gIHByaXZhdGUgX25vcm1hbGl6ZVBvc2l0aW9uKHJlY3Q6IElSb3VuZGVkUmVjdCk6IElQb2ludCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZNZWRpYXRvci5leGVjdXRlKG5ldyBHZXROb3JtYWxpemVkUG9pbnRSZXF1ZXN0KHJlY3QpKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Vuc2NhbGVTaXplKHJlY3Q6IElSb3VuZGVkUmVjdCk6IElTaXplIHtcbiAgICByZXR1cm4gU2l6ZUV4dGVuc2lvbnMuaW5pdGlhbGl6ZShyZWN0LndpZHRoIC8gdGhpcy5fdHJhbnNmb3JtLnNjYWxlLCByZWN0LmhlaWdodCAvIHRoaXMuX3RyYW5zZm9ybS5zY2FsZSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRVbnNjYWxlZFJlY3QocG9zaXRpb246IElQb2ludCwgc2l6ZTogSVNpemUsIHJlY3Q6IElSb3VuZGVkUmVjdCk6IElSb3VuZGVkUmVjdCB7XG4gICAgcmV0dXJuIG5ldyBSb3VuZGVkUmVjdChcbiAgICAgIHBvc2l0aW9uLngsIHBvc2l0aW9uLnksIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LFxuICAgICAgcmVjdC5yYWRpdXMxLCByZWN0LnJhZGl1czIsIHJlY3QucmFkaXVzMywgcmVjdC5yYWRpdXM0XG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0T2Zmc2V0U2l6ZShlbGVtZW50OiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQsIHNpemU6IElTaXplKTogSVNpemUge1xuICAgIHJldHVybiBTaXplRXh0ZW5zaW9ucy5vZmZzZXRGcm9tRWxlbWVudChlbGVtZW50KSB8fCBzaXplXG4gIH1cbn1cbiJdfQ==