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.7 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 FConnectionDragHandleStartComponent { _elementReference = inject(ElementRef); class = F_CSS_CLASS.CONNECTION.DRAG_HANDLE; point; get hostElement() { return this._elementReference.nativeElement; } redraw(penultimatePoint, startPoint) { this.point = this._calculateCircleCenter(penultimatePoint, startPoint, 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: FConnectionDragHandleStartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FConnectionDragHandleStartComponent, selector: "circle[f-connection-drag-handle-start]", 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: FConnectionDragHandleStartComponent, decorators: [{ type: Component, args: [{ selector: "circle[f-connection-drag-handle-start]", template: '', changeDetection: ChangeDetectionStrategy.OnPush, host: { '[class]': 'class' } }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jb25uZWN0aW9uLWRyYWctaGFuZGxlLXN0YXJ0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0aW9uL2NvbW1vbi9mLWRyYWctaGFuZGxlL2YtY29ubmVjdGlvbi1kcmFnLWhhbmRsZS1zdGFydC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFDOUIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQVV0RCxNQUFNLE9BQU8sbUNBQW1DO0lBQzdCLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUVyQyxLQUFLLEdBQVcsV0FBVyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUM7SUFFL0QsS0FBSyxDQUFVO0lBRXRCLElBQVcsV0FBVztRQUNwQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUM7SUFDOUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxnQkFBd0IsRUFBRSxVQUFrQjtRQUN4RCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVPLHNCQUFzQixDQUFDLEtBQWEsRUFBRSxHQUFXLEVBQUUsTUFBYztRQUN2RSxNQUFNLFNBQVMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzdELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRixNQUFNLGFBQWEsR0FBRyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUMzRSxNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQztRQUNyRixPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDeEUsQ0FBQzt3R0F2QlUsbUNBQW1DOzRGQUFuQyxtQ0FBbUMsMEhBTnBDLEVBQUU7OzRGQU1ELG1DQUFtQztrQkFSL0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0NBQXdDO29CQUNsRCxRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtvQkFDL0MsSUFBSSxFQUFFO3dCQUNKLFNBQVMsRUFBRSxPQUFPO3FCQUNuQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGluamVjdFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgSVBvaW50IH0gZnJvbSAnQGZvYmxleC8yZCc7XG5pbXBvcnQgeyBJSGFzSG9zdEVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi9pLWhhcy1ob3N0LWVsZW1lbnQnO1xuaW1wb3J0IHsgRl9DU1NfQ0xBU1MgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vY3NzLWNscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJjaXJjbGVbZi1jb25uZWN0aW9uLWRyYWctaGFuZGxlLXN0YXJ0XVwiLFxuICB0ZW1wbGF0ZTogJycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzc10nOiAnY2xhc3MnXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgRkNvbm5lY3Rpb25EcmFnSGFuZGxlU3RhcnRDb21wb25lbnQgaW1wbGVtZW50cyBJSGFzSG9zdEVsZW1lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmZXJlbmNlID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIHByb3RlY3RlZCByZWFkb25seSBjbGFzczogc3RyaW5nID0gRl9DU1NfQ0xBU1MuQ09OTkVDVElPTi5EUkFHX0hBTkRMRTtcblxuICBwdWJsaWMgcG9pbnQhOiBJUG9pbnQ7XG5cbiAgcHVibGljIGdldCBob3N0RWxlbWVudCgpOiBTVkdDaXJjbGVFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudFJlZmVyZW5jZS5uYXRpdmVFbGVtZW50O1xuICB9XG5cbiAgcHVibGljIHJlZHJhdyhwZW51bHRpbWF0ZVBvaW50OiBJUG9pbnQsIHN0YXJ0UG9pbnQ6IElQb2ludCk6IHZvaWQge1xuICAgIHRoaXMucG9pbnQgPSB0aGlzLl9jYWxjdWxhdGVDaXJjbGVDZW50ZXIocGVudWx0aW1hdGVQb2ludCwgc3RhcnRQb2ludCwgOCk7XG4gICAgdGhpcy5ob3N0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2N4JywgdGhpcy5wb2ludC54LnRvU3RyaW5nKCkpO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuc2V0QXR0cmlidXRlKCdjeScsIHRoaXMucG9pbnQueS50b1N0cmluZygpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NhbGN1bGF0ZUNpcmNsZUNlbnRlcihzdGFydDogSVBvaW50LCBlbmQ6IElQb2ludCwgcmFkaXVzOiBudW1iZXIpOiBJUG9pbnQge1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9IHsgeDogZW5kLnggLSBzdGFydC54LCB5OiBlbmQueSAtIHN0YXJ0LnkgfTtcbiAgICBjb25zdCBsZW5ndGggPSBNYXRoLnNxcnQoZGlyZWN0aW9uLnggKiBkaXJlY3Rpb24ueCArIGRpcmVjdGlvbi55ICogZGlyZWN0aW9uLnkpIHx8IDE7XG4gICAgY29uc3QgdW5pdERpcmVjdGlvbiA9IHsgeDogZGlyZWN0aW9uLnggLyBsZW5ndGgsIHk6IGRpcmVjdGlvbi55IC8gbGVuZ3RoIH07XG4gICAgY29uc3Qgc2NhbGVkRGlyZWN0aW9uID0geyB4OiB1bml0RGlyZWN0aW9uLnggKiByYWRpdXMsIHk6IHVuaXREaXJlY3Rpb24ueSAqIHJhZGl1cyB9O1xuICAgIHJldHVybiB7IHg6IGVuZC54IC0gc2NhbGVkRGlyZWN0aW9uLngsIHk6IGVuZC55IC0gc2NhbGVkRGlyZWN0aW9uLnkgfTtcbiAgfVxufVxuXG4iXX0=