@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.
69 lines • 10.7 kB
JavaScript
import { __decorate } from "tslib";
import { inject, Injectable } from '@angular/core';
import { CalculateCommonNodeMoveLimitsRequest } from './calculate-common-node-move-limits.request';
import { FExecutionRegister } from '@foblex/mediator';
import { FComponentsStore } from '../../../../../f-storage';
import * as i0 from "@angular/core";
let CalculateCommonNodeMoveLimitsExecution = class CalculateCommonNodeMoveLimitsExecution {
_fComponentsStore = inject(FComponentsStore);
get _vCellSize() {
return this._fComponentsStore.fDraggable.vCellSize;
}
get _hCellSize() {
return this._fComponentsStore.fDraggable.hCellSize;
}
handle(request) {
return this._calculateCommonLimits(request.limits);
}
_calculateCommonLimits(limits) {
this._snapLimitToGrid(limits[0]);
return limits.reduce((result, x) => {
this._snapLimitToGrid(x);
return this._clampRestrictions(result, x);
}, limits[0]);
}
_clampRestrictions(common, x) {
common.min = this._clampMinRestrictions(common.min, x.min);
common.max = this._clampMaxRestrictions(common.max, x.max);
return common;
}
_clampMinRestrictions(common, node) {
return {
x: Math.max(common.x, node.x),
y: Math.max(common.y, node.y),
};
}
_clampMaxRestrictions(common, node) {
return {
x: Math.min(common.x, node.x),
y: Math.min(common.y, node.y),
};
}
_snapLimitToGrid(restriction) {
const { min, max, position } = restriction;
restriction.min = {
x: this._snapLimitToGridMinimum(position.x + min.x, this._hCellSize) - position.x,
y: this._snapLimitToGridMinimum(position.y + min.y, this._vCellSize) - position.y,
};
restriction.max = {
x: this._snapLimitToGridMaximum(position.x + max.x, this._hCellSize) - position.x,
y: this._snapLimitToGridMaximum(position.y + max.y, this._vCellSize) - position.y,
};
}
_snapLimitToGridMinimum(value, cellSize) {
return Math.ceil(value / cellSize) * cellSize;
}
_snapLimitToGridMaximum(value, cellSize) {
return Math.floor(value / cellSize) * cellSize;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateCommonNodeMoveLimitsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateCommonNodeMoveLimitsExecution });
};
CalculateCommonNodeMoveLimitsExecution = __decorate([
FExecutionRegister(CalculateCommonNodeMoveLimitsRequest)
], CalculateCommonNodeMoveLimitsExecution);
export { CalculateCommonNodeMoveLimitsExecution };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateCommonNodeMoveLimitsExecution, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLWNvbW1vbi1ub2RlLW1vdmUtbGltaXRzLmV4ZWN1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1kcmFnZ2FibGUvZi1ub2RlLW1vdmUvY3JlYXRlLW1vdmUtbm9kZXMtZHJhZy1tb2RlbC1mcm9tLXNlbGVjdGlvbi9kb21haW4vY2FsY3VsYXRlLWNvbW1vbi1ub2RlLW1vdmUtbGltaXRzL2NhbGN1bGF0ZS1jb21tb24tbm9kZS1tb3ZlLWxpbWl0cy5leGVjdXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRW5HLE9BQU8sRUFBRSxrQkFBa0IsRUFBYyxNQUFNLGtCQUFrQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQU1yRCxJQUFNLHNDQUFzQyxHQUE1QyxNQUFNLHNDQUFzQztJQUdoQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU5RCxJQUFZLFVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVyxDQUFDLFNBQVMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBWSxVQUFVO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVcsQ0FBQyxTQUFTLENBQUM7SUFDdEQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUE2QztRQUN6RCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVPLHNCQUFzQixDQUFDLE1BQW9DO1FBQ2pFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUF1QixFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDNUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxNQUF1QixFQUFFLENBQTZCO1FBQy9FLE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE1BQU0sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxxQkFBcUIsQ0FBQyxNQUFjLEVBQUUsSUFBWTtRQUN4RCxPQUFPO1lBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzdCLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztTQUM5QixDQUFBO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQixDQUFDLE1BQWMsRUFBRSxJQUFZO1FBQ3hELE9BQU87WUFDTCxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDN0IsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzlCLENBQUE7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsV0FBdUM7UUFDOUQsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsV0FBVyxDQUFDO1FBQzNDLFdBQVcsQ0FBQyxHQUFHLEdBQUc7WUFDaEIsQ0FBQyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1lBQ2pGLENBQUMsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztTQUNsRixDQUFDO1FBQ0YsV0FBVyxDQUFDLEdBQUcsR0FBRztZQUNoQixDQUFDLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDakYsQ0FBQyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1NBQ2xGLENBQUM7SUFDSixDQUFDO0lBRU8sdUJBQXVCLENBQUMsS0FBYSxFQUFFLFFBQWdCO1FBQzdELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQ2hELENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxLQUFhLEVBQUUsUUFBZ0I7UUFDN0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDakQsQ0FBQzt3R0EvRFUsc0NBQXNDOzRHQUF0QyxzQ0FBc0M7O0FBQXRDLHNDQUFzQztJQURsRCxrQkFBa0IsQ0FBQyxvQ0FBb0MsQ0FBQztHQUM1QyxzQ0FBc0MsQ0FnRWxEOzs0RkFoRVksc0NBQXNDO2tCQUZsRCxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYWxjdWxhdGVDb21tb25Ob2RlTW92ZUxpbWl0c1JlcXVlc3QgfSBmcm9tICcuL2NhbGN1bGF0ZS1jb21tb24tbm9kZS1tb3ZlLWxpbWl0cy5yZXF1ZXN0JztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgRkV4ZWN1dGlvblJlZ2lzdGVyLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IElOb2RlTW92ZUxpbWl0c0FuZFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vaS1ub2RlLW1vdmUtbGltaXRzLWFuZC1wb3NpdGlvbic7XG5pbXBvcnQgeyBJTm9kZU1vdmVMaW1pdHMgfSBmcm9tICcuLi8uLi9pLW5vZGUtbW92ZS1saW1pdHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKENhbGN1bGF0ZUNvbW1vbk5vZGVNb3ZlTGltaXRzUmVxdWVzdClcbmV4cG9ydCBjbGFzcyBDYWxjdWxhdGVDb21tb25Ob2RlTW92ZUxpbWl0c0V4ZWN1dGlvblxuICBpbXBsZW1lbnRzIElFeGVjdXRpb248Q2FsY3VsYXRlQ29tbW9uTm9kZU1vdmVMaW1pdHNSZXF1ZXN0LCBJTm9kZU1vdmVMaW1pdHM+IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mQ29tcG9uZW50c1N0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuXG4gIHByaXZhdGUgZ2V0IF92Q2VsbFNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZkNvbXBvbmVudHNTdG9yZS5mRHJhZ2dhYmxlIS52Q2VsbFNpemU7XG4gIH1cblxuICBwcml2YXRlIGdldCBfaENlbGxTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZkRyYWdnYWJsZSEuaENlbGxTaXplO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBDYWxjdWxhdGVDb21tb25Ob2RlTW92ZUxpbWl0c1JlcXVlc3QpOiBJTm9kZU1vdmVMaW1pdHMge1xuICAgIHJldHVybiB0aGlzLl9jYWxjdWxhdGVDb21tb25MaW1pdHMocmVxdWVzdC5saW1pdHMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2FsY3VsYXRlQ29tbW9uTGltaXRzKGxpbWl0czogSU5vZGVNb3ZlTGltaXRzQW5kUG9zaXRpb25bXSk6IElOb2RlTW92ZUxpbWl0cyB7XG4gICAgdGhpcy5fc25hcExpbWl0VG9HcmlkKGxpbWl0c1swXSk7XG4gICAgcmV0dXJuIGxpbWl0cy5yZWR1Y2UoKHJlc3VsdDogSU5vZGVNb3ZlTGltaXRzLCB4KSA9PiB7XG4gICAgICB0aGlzLl9zbmFwTGltaXRUb0dyaWQoeCk7XG4gICAgICByZXR1cm4gdGhpcy5fY2xhbXBSZXN0cmljdGlvbnMocmVzdWx0LCB4KTtcbiAgICB9LCBsaW1pdHNbMF0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2xhbXBSZXN0cmljdGlvbnMoY29tbW9uOiBJTm9kZU1vdmVMaW1pdHMsIHg6IElOb2RlTW92ZUxpbWl0c0FuZFBvc2l0aW9uKTogSU5vZGVNb3ZlTGltaXRzIHtcbiAgICBjb21tb24ubWluID0gdGhpcy5fY2xhbXBNaW5SZXN0cmljdGlvbnMoY29tbW9uLm1pbiwgeC5taW4pO1xuICAgIGNvbW1vbi5tYXggPSB0aGlzLl9jbGFtcE1heFJlc3RyaWN0aW9ucyhjb21tb24ubWF4LCB4Lm1heCk7XG4gICAgcmV0dXJuIGNvbW1vbjtcbiAgfVxuXG4gIHByaXZhdGUgX2NsYW1wTWluUmVzdHJpY3Rpb25zKGNvbW1vbjogSVBvaW50LCBub2RlOiBJUG9pbnQpOiBJUG9pbnQge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBNYXRoLm1heChjb21tb24ueCwgbm9kZS54KSxcbiAgICAgIHk6IE1hdGgubWF4KGNvbW1vbi55LCBub2RlLnkpLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NsYW1wTWF4UmVzdHJpY3Rpb25zKGNvbW1vbjogSVBvaW50LCBub2RlOiBJUG9pbnQpOiBJUG9pbnQge1xuICAgIHJldHVybiB7XG4gICAgICB4OiBNYXRoLm1pbihjb21tb24ueCwgbm9kZS54KSxcbiAgICAgIHk6IE1hdGgubWluKGNvbW1vbi55LCBub2RlLnkpLFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3NuYXBMaW1pdFRvR3JpZChyZXN0cmljdGlvbjogSU5vZGVNb3ZlTGltaXRzQW5kUG9zaXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCB7IG1pbiwgbWF4LCBwb3NpdGlvbiB9ID0gcmVzdHJpY3Rpb247XG4gICAgcmVzdHJpY3Rpb24ubWluID0ge1xuICAgICAgeDogdGhpcy5fc25hcExpbWl0VG9HcmlkTWluaW11bShwb3NpdGlvbi54ICsgbWluLngsIHRoaXMuX2hDZWxsU2l6ZSkgLSBwb3NpdGlvbi54LFxuICAgICAgeTogdGhpcy5fc25hcExpbWl0VG9HcmlkTWluaW11bShwb3NpdGlvbi55ICsgbWluLnksIHRoaXMuX3ZDZWxsU2l6ZSkgLSBwb3NpdGlvbi55LFxuICAgIH07XG4gICAgcmVzdHJpY3Rpb24ubWF4ID0ge1xuICAgICAgeDogdGhpcy5fc25hcExpbWl0VG9HcmlkTWF4aW11bShwb3NpdGlvbi54ICsgbWF4LngsIHRoaXMuX2hDZWxsU2l6ZSkgLSBwb3NpdGlvbi54LFxuICAgICAgeTogdGhpcy5fc25hcExpbWl0VG9HcmlkTWF4aW11bShwb3NpdGlvbi55ICsgbWF4LnksIHRoaXMuX3ZDZWxsU2l6ZSkgLSBwb3NpdGlvbi55LFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIF9zbmFwTGltaXRUb0dyaWRNaW5pbXVtKHZhbHVlOiBudW1iZXIsIGNlbGxTaXplOiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmNlaWwodmFsdWUgLyBjZWxsU2l6ZSkgKiBjZWxsU2l6ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3NuYXBMaW1pdFRvR3JpZE1heGltdW0odmFsdWU6IG51bWJlciwgY2VsbFNpemU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGguZmxvb3IodmFsdWUgLyBjZWxsU2l6ZSkgKiBjZWxsU2l6ZTtcbiAgfVxufVxuIl19