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.

42 lines 6.43 kB
import { __decorate } from "tslib"; import { CalculateClosestInputRequest } from './calculate-closest-input.request'; import { Injectable } from '@angular/core'; import { FExecutionRegister } from '@foblex/mediator'; import * as i0 from "@angular/core"; let CalculateClosestInputExecution = class CalculateClosestInputExecution { handle(payload) { let result; let minDistance = Infinity; for (const element of payload.canBeConnectedInputs) { const distance = this._distanceToRectangle(payload.position, element); if (distance < minDistance) { minDistance = distance; result = element; } } return result ? { ...result, distance: minDistance, } : undefined; } _distanceToRectangle(point, inputWithRect) { const closestX = this._clamp(point.x, inputWithRect.fRect.x, inputWithRect.fRect.x + inputWithRect.fRect.width); const closestY = this._clamp(point.y, inputWithRect.fRect.y, inputWithRect.fRect.y + inputWithRect.fRect.height); const dx = point.x - closestX; const dy = point.y - closestY; return Math.sqrt(dx * dx + dy * dy); } _clamp(value, min, max) { return Math.max(min, Math.min(max, value)); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateClosestInputExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateClosestInputExecution }); }; CalculateClosestInputExecution = __decorate([ FExecutionRegister(CalculateClosestInputRequest) ], CalculateClosestInputExecution); export { CalculateClosestInputExecution }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CalculateClosestInputExecution, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsY3VsYXRlLWNsb3Nlc3QtaW5wdXQuZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9kb21haW4vZi1jb25uZWN0b3JzL2NhbGN1bGF0ZS1jbG9zZXN0LWlucHV0L2NhbGN1bGF0ZS1jbG9zZXN0LWlucHV0LmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDakYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsa0JBQWtCLEVBQWMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFPM0QsSUFBTSw4QkFBOEIsR0FBcEMsTUFBTSw4QkFBOEI7SUFHbEMsTUFBTSxDQUFDLE9BQXFDO1FBQ2pELElBQUksTUFBcUMsQ0FBQztRQUMxQyxJQUFJLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFFM0IsS0FBSyxNQUFNLE9BQU8sSUFBSSxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUV0RSxJQUFJLFFBQVEsR0FBRyxXQUFXLEVBQUUsQ0FBQztnQkFDM0IsV0FBVyxHQUFHLFFBQVEsQ0FBQztnQkFDdkIsTUFBTSxHQUFHLE9BQU8sQ0FBQztZQUNuQixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQztZQUNkLEdBQUcsTUFBTTtZQUNULFFBQVEsRUFBRSxXQUFXO1NBQ3RCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUNoQixDQUFDO0lBRU8sb0JBQW9CLENBQUMsS0FBYSxFQUFFLGFBQWdDO1FBQzFFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hILE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWpILE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzlCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBRTlCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRU8sTUFBTSxDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsR0FBVztRQUNwRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQzt3R0FsQ1UsOEJBQThCOzRHQUE5Qiw4QkFBOEI7O0FBQTlCLDhCQUE4QjtJQUQxQyxrQkFBa0IsQ0FBQyw0QkFBNEIsQ0FBQztHQUNwQyw4QkFBOEIsQ0FtQzFDOzs0RkFuQ1ksOEJBQThCO2tCQUYxQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FsY3VsYXRlQ2xvc2VzdElucHV0UmVxdWVzdCB9IGZyb20gJy4vY2FsY3VsYXRlLWNsb3Nlc3QtaW5wdXQucmVxdWVzdCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIElFeGVjdXRpb24gfSBmcm9tICdAZm9ibGV4L21lZGlhdG9yJztcbmltcG9ydCB7IElQb2ludCB9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHsgSUNsb3Nlc3RJbnB1dCB9IGZyb20gJy4uL2ktY2xvc2VzdC1pbnB1dCc7XG5pbXBvcnQgeyBJQ29ubmVjdG9yQW5kUmVjdCB9IGZyb20gJy4uL2luZGV4JztcblxuQEluamVjdGFibGUoKVxuQEZFeGVjdXRpb25SZWdpc3RlcihDYWxjdWxhdGVDbG9zZXN0SW5wdXRSZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIENhbGN1bGF0ZUNsb3Nlc3RJbnB1dEV4ZWN1dGlvblxuICBpbXBsZW1lbnRzIElFeGVjdXRpb248Q2FsY3VsYXRlQ2xvc2VzdElucHV0UmVxdWVzdCwgSUNsb3Nlc3RJbnB1dCB8IHVuZGVmaW5lZD4ge1xuXG4gIHB1YmxpYyBoYW5kbGUocGF5bG9hZDogQ2FsY3VsYXRlQ2xvc2VzdElucHV0UmVxdWVzdCk6IElDbG9zZXN0SW5wdXQgfCB1bmRlZmluZWQge1xuICAgIGxldCByZXN1bHQ6IElDb25uZWN0b3JBbmRSZWN0IHwgdW5kZWZpbmVkO1xuICAgIGxldCBtaW5EaXN0YW5jZSA9IEluZmluaXR5O1xuXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHBheWxvYWQuY2FuQmVDb25uZWN0ZWRJbnB1dHMpIHtcbiAgICAgIGNvbnN0IGRpc3RhbmNlID0gdGhpcy5fZGlzdGFuY2VUb1JlY3RhbmdsZShwYXlsb2FkLnBvc2l0aW9uLCBlbGVtZW50KTtcblxuICAgICAgaWYgKGRpc3RhbmNlIDwgbWluRGlzdGFuY2UpIHtcbiAgICAgICAgbWluRGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgICAgcmVzdWx0ID0gZWxlbWVudDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0ID8ge1xuICAgICAgLi4ucmVzdWx0LFxuICAgICAgZGlzdGFuY2U6IG1pbkRpc3RhbmNlLFxuICAgIH0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIF9kaXN0YW5jZVRvUmVjdGFuZ2xlKHBvaW50OiBJUG9pbnQsIGlucHV0V2l0aFJlY3Q6IElDb25uZWN0b3JBbmRSZWN0KTogbnVtYmVyIHtcbiAgICBjb25zdCBjbG9zZXN0WCA9IHRoaXMuX2NsYW1wKHBvaW50LngsIGlucHV0V2l0aFJlY3QuZlJlY3QueCwgaW5wdXRXaXRoUmVjdC5mUmVjdC54ICsgaW5wdXRXaXRoUmVjdC5mUmVjdC53aWR0aCk7XG4gICAgY29uc3QgY2xvc2VzdFkgPSB0aGlzLl9jbGFtcChwb2ludC55LCBpbnB1dFdpdGhSZWN0LmZSZWN0LnksIGlucHV0V2l0aFJlY3QuZlJlY3QueSArIGlucHV0V2l0aFJlY3QuZlJlY3QuaGVpZ2h0KTtcblxuICAgIGNvbnN0IGR4ID0gcG9pbnQueCAtIGNsb3Nlc3RYO1xuICAgIGNvbnN0IGR5ID0gcG9pbnQueSAtIGNsb3Nlc3RZO1xuXG4gICAgcmV0dXJuIE1hdGguc3FydChkeCAqIGR4ICsgZHkgKiBkeSk7XG4gIH1cblxuICBwcml2YXRlIF9jbGFtcCh2YWx1ZTogbnVtYmVyLCBtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLm1heChtaW4sIE1hdGgubWluKG1heCwgdmFsdWUpKTtcbiAgfVxufVxuIl19