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.

37 lines 6.67 kB
import { ChangeDetectionStrategy, Component, ElementRef, inject } from "@angular/core"; import { F_CSS_CLASS } from '../../../domain/css-cls'; import * as i0 from "@angular/core"; export class FConnectionDragHandleEndComponent { _elementReference = inject(ElementRef); class = F_CSS_CLASS.CONNECTION.DRAG_HANDLE; point; get hostElement() { return this._elementReference.nativeElement; } redraw(penultimatePoint, endPoint) { this.point = this._calculateCircleCenter(penultimatePoint, endPoint, 8); this.hostElement.setAttribute('cx', this.point.x.toString()); this.hostElement.setAttribute('cy', this.point.y.toString()); } _calculateCircleCenter(start, end, radius) { const direction = { x: end.x - start.x, y: end.y - start.y }; const length = Math.sqrt(direction.x * direction.x + direction.y * direction.y) || 1; const unitDirection = { x: direction.x / length, y: direction.y / length }; const scaledDirection = { x: unitDirection.x * radius, y: unitDirection.y * radius }; return { x: end.x - scaledDirection.x, y: end.y - scaledDirection.y }; } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionDragHandleEndComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionDragHandleEndComponent, selector: "circle[f-connection-drag-handle-end]", host: { properties: { "class": "class" } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FConnectionDragHandleEndComponent, decorators: [{ type: Component, args: [{ selector: "circle[f-connection-drag-handle-end]", template: '', changeDetection: ChangeDetectionStrategy.OnPush, host: { '[class]': 'class' } }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWRyYWctaGFuZGxlLWVuZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdGlvbi9jb21tb24vZi1kcmFnLWhhbmRsZS9mLWNvbm5lY3Rpb24tZHJhZy1oYW5kbGUtZW5kLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUM5QixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBVXRELE1BQU0sT0FBTyxpQ0FBaUM7SUFDM0IsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJDLEtBQUssR0FBVyxXQUFXLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQztJQUUvRCxLQUFLLENBQVU7SUFFdEIsSUFBVyxXQUFXO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQztJQUM5QyxDQUFDO0lBRU0sTUFBTSxDQUFDLGdCQUF3QixFQUFFLFFBQWdCO1FBQ3RELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxNQUFjO1FBQ3ZFLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDN0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sYUFBYSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQzNFLE1BQU0sZUFBZSxHQUFHLEVBQUUsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3JGLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUN4RSxDQUFDO3dHQXZCVSxpQ0FBaUM7NEZBQWpDLGlDQUFpQyx3SEFObEMsRUFBRTs7NEZBTUQsaUNBQWlDO2tCQVI3QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxzQ0FBc0M7b0JBQ2hELFFBQVEsRUFBRSxFQUFFO29CQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxJQUFJLEVBQUU7d0JBQ0osU0FBUyxFQUFFLE9BQU87cUJBQ25CO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0XG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IElIYXNIb3N0RWxlbWVudCB9IGZyb20gJy4uLy4uLy4uL2ktaGFzLWhvc3QtZWxlbWVudCc7XG5pbXBvcnQgeyBGX0NTU19DTEFTUyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi9jc3MtY2xzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImNpcmNsZVtmLWNvbm5lY3Rpb24tZHJhZy1oYW5kbGUtZW5kXVwiLFxuICB0ZW1wbGF0ZTogJycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzc10nOiAnY2xhc3MnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgRkNvbm5lY3Rpb25EcmFnSGFuZGxlRW5kQ29tcG9uZW50IGltcGxlbWVudHMgSUhhc0hvc3RFbGVtZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZmVyZW5jZSA9IGluamVjdChFbGVtZW50UmVmKTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2xhc3M6IHN0cmluZyA9IEZfQ1NTX0NMQVNTLkNPTk5FQ1RJT04uRFJBR19IQU5ETEU7XG5cbiAgcHVibGljIHBvaW50ITogSVBvaW50O1xuXG4gIHB1YmxpYyBnZXQgaG9zdEVsZW1lbnQoKTogU1ZHQ2lyY2xlRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyByZWRyYXcocGVudWx0aW1hdGVQb2ludDogSVBvaW50LCBlbmRQb2ludDogSVBvaW50KTogdm9pZCB7XG4gICAgdGhpcy5wb2ludCA9IHRoaXMuX2NhbGN1bGF0ZUNpcmNsZUNlbnRlcihwZW51bHRpbWF0ZVBvaW50LCBlbmRQb2ludCwgOCk7XG4gICAgdGhpcy5ob3N0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2N4JywgdGhpcy5wb2ludC54LnRvU3RyaW5nKCkpO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKCdjeScsIHRoaXMucG9pbnQueS50b1N0cmluZygpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGN1bGF0ZUNpcmNsZUNlbnRlcihzdGFydDogSVBvaW50LCBlbmQ6IElQb2ludCwgcmFkaXVzOiBudW1iZXIpOiBJUG9pbnQge1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9IHsgeDogZW5kLnggLSBzdGFydC54LCB5OiBlbmQueSAtIHN0YXJ0LnkgfTtcbiAgICBjb25zdCBsZW5ndGggPSBNYXRoLnNxcnQoZGlyZWN0aW9uLnggKiBkaXJlY3Rpb24ueCArIGRpcmVjdGlvbi55ICogZGlyZWN0aW9uLnkpIHx8IDE7XG4gICAgY29uc3QgdW5pdERpcmVjdGlvbiA9IHsgeDogZGlyZWN0aW9uLnggLyBsZW5ndGgsIHk6IGRpcmVjdGlvbi55IC8gbGVuZ3RoIH07XG4gICAgY29uc3Qgc2NhbGVkRGlyZWN0aW9uID0geyB4OiB1bml0RGlyZWN0aW9uLnggKiByYWRpdXMsIHk6IHVuaXREaXJlY3Rpb24ueSAqIHJhZGl1cyB9O1xuICAgIHJldHVybiB7IHg6IGVuZC54IC0gc2NhbGVkRGlyZWN0aW9uLngsIHk6IGVuZC55IC0gc2NhbGVkRGlyZWN0aW9uLnkgfTtcbiAgfVxufVxuXG4iXX0=