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.

60 lines 11.6 kB
import { __decorate } from "tslib"; import { inject, Injectable } from '@angular/core'; import { FComponentsStore } from '../../../../f-storage'; import { isNodeOutlet } from '../../../../f-connectors'; import { FCreateConnectionFinalizeRequest } from './f-create-connection-finalize.request'; import { FExecutionRegister, FMediator } from '@foblex/mediator'; import { FDraggableDataContext } from '../../../f-draggable-data-context'; import { GetFirstConnectableOutputRequest } from '../get-first-connectable-output'; import { FCreateConnectionEvent } from '../f-create-connection.event'; import { FCreateConnectionDragHandler } from '../f-create-connection.drag-handler'; import { FindInputAtPositionRequest } from '../../../../domain'; import { FDragHandlerResult } from '../../../f-drag-handler'; import * as i0 from "@angular/core"; let FCreateConnectionFinalizeExecution = class FCreateConnectionFinalizeExecution { _fResult = inject(FDragHandlerResult); _fMediator = inject(FMediator); _fComponentsStore = inject(FComponentsStore); _fDraggableDataContext = inject(FDraggableDataContext); get _fDragHandler() { return this._fDraggableDataContext.draggableItems[0]; } handle(request) { if (!this._isValid()) { return; } this.emitEvent(request.event); this._fDragHandler.onPointerUp(); } _isValid() { return this._fDraggableDataContext.draggableItems.some((x) => x instanceof FCreateConnectionDragHandler); } getTargetOutput(output) { if (!output) { throw new Error(`Output with fOutputId ${this._fResult.getData().fOutputId} not found. Make sure there is no f-connection to a non-existent fOutput.`); } return isNodeOutlet(output.hostElement) ? this._fMediator.execute(new GetFirstConnectableOutputRequest(output)) : output; } getOutput() { return this._fComponentsStore.fOutputs.find((x) => x.fId === this._fResult.getData().fOutputId); } getOutlet() { return this._fComponentsStore.fOutlets.find((x) => x.fId === this._fResult.getData().fOutputId); } emitEvent(event) { this._fComponentsStore.fDraggable?.fCreateConnection.emit(new FCreateConnectionEvent(this.getTargetOutput(this.getOutput() || this.getOutlet()).fId, this._getInputUnderPointer(event)?.fId, event.getPosition())); } _getInputUnderPointer(event) { return this._fMediator.execute(new FindInputAtPositionRequest(event.getPosition(), this._fResult.getData().toConnectorRect, this._fResult.getData().canBeConnectedInputs)); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCreateConnectionFinalizeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCreateConnectionFinalizeExecution }); }; FCreateConnectionFinalizeExecution = __decorate([ FExecutionRegister(FCreateConnectionFinalizeRequest) ], FCreateConnectionFinalizeExecution); export { FCreateConnectionFinalizeExecution }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCreateConnectionFinalizeExecution, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jcmVhdGUtY29ubmVjdGlvbi1maW5hbGl6ZS5leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZHJhZ2dhYmxlL2YtY29ubmVjdGlvbi9mLWNyZWF0ZS1jb25uZWN0aW9uL2NyZWF0ZS1maW5hbGl6ZS9mLWNyZWF0ZS1jb25uZWN0aW9uLWZpbmFsaXplLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFvRCxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbkYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBTXRELElBQU0sa0NBQWtDLEdBQXhDLE1BQU0sa0NBQWtDO0lBR3JDLFFBQVEsR0FBcUQsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFeEYsVUFBVSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQixp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bGV4L21lZGlhdG9yJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRkNvbXBvbmVudHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBGQ29ubmVjdG9yQmFzZSwgRk5vZGVPdXRsZXRCYXNlLCBGTm9kZU91dHB1dEJhc2UsIGlzTm9kZU91dGxldCB9IGZyb20gJy4uLy4uLy4uLy4uL2YtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBGQ3JlYXRlQ29ubmVjdGlvbkZpbmFsaXplUmVxdWVzdCB9IGZyb20gJy4vZi1jcmVhdGUtY29ubmVjdGlvbi1maW5hbGl6ZS5yZXF1ZXN0JztcbmltcG9ydCB7IEZFeGVjdXRpb25SZWdpc3RlciwgRk1lZGlhdG9yIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBGRHJhZ2dhYmxlRGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9mLWRyYWdnYWJsZS1kYXRhLWNvbnRleHQnO1xuaW1wb3J0IHsgR2V0Rmlyc3RDb25uZWN0YWJsZU91dHB1dFJlcXVlc3QgfSBmcm9tICcuLi9nZXQtZmlyc3QtY29ubmVjdGFibGUtb3V0cHV0JztcbmltcG9ydCB7IEZDcmVhdGVDb25uZWN0aW9uRXZlbnQgfSBmcm9tICcuLi9mLWNyZWF0ZS1jb25uZWN0aW9uLmV2ZW50JztcbmltcG9ydCB7IEZDcmVhdGVDb25uZWN0aW9uRHJhZ0hhbmRsZXIgfSBmcm9tICcuLi9mLWNyZWF0ZS1jb25uZWN0aW9uLmRyYWctaGFuZGxlcic7XG5pbXBvcnQgeyBGaW5kSW5wdXRBdFBvc2l0aW9uUmVxdWVzdCB9IGZyb20gJy4uLy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBGRHJhZ0hhbmRsZXJSZXN1bHQgfSBmcm9tICcuLi8uLi8uLi9mLWRyYWctaGFuZGxlcic7XG5pbXBvcnQgeyBJRkNyZWF0ZUNvbm5lY3Rpb25EcmFnUmVzdWx0IH0gZnJvbSAnLi4vaS1mLWNyZWF0ZS1jb25uZWN0aW9uLWRyYWctcmVzdWx0JztcbmltcG9ydCB7SVBvaW50ZXJFdmVudH0gZnJvbSBcIi4uLy4uLy4uLy4uL2RyYWctdG9vbGtpdFwiO1xuXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKEZDcmVhdGVDb25uZWN0aW9uRmluYWxpemVSZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIEZDcmVhdGVDb25uZWN0aW9uRmluYWxpemVFeGVjdXRpb25cbiAgaW1wbGVtZW50cyBJSGFuZGxlcjxGQ3JlYXRlQ29ubmVjdGlvbkZpbmFsaXplUmVxdWVzdCwgdm9pZD4ge1xuXG4gIHByaXZhdGUgX2ZSZXN1bHQ6IEZEcmFnSGFuZGxlclJlc3VsdDxJRkNyZWF0ZUNvbm5lY3Rpb25EcmFnUmVzdWx0PiA9IGluamVjdChGRHJhZ0hhbmRsZXJSZXN1bHQpO1xuXG4gIHByaXZhdGUgX2ZNZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuICBwcml2YXRlIF9mQ29tcG9uZW50c1N0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuICBwcml2YXRlIF9mRHJhZ2dhYmxlRGF0YUNvbnRleHQgPSBpbmplY3QoRkRyYWdnYWJsZURhdGFDb250ZXh0KTtcblxuICBwcml2YXRlIGdldCBfZkRyYWdIYW5kbGVyKCk6IEZDcmVhdGVDb25uZWN0aW9uRHJhZ0hhbmRsZXIge1xuICAgIHJldHVybiB0aGlzLl9mRHJhZ2dhYmxlRGF0YUNvbnRleHQuZHJhZ2dhYmxlSXRlbXNbIDAgXSBhcyBGQ3JlYXRlQ29ubmVjdGlvbkRyYWdIYW5kbGVyO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBGQ3JlYXRlQ29ubmVjdGlvbkZpbmFsaXplUmVxdWVzdCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faXNWYWxpZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW1pdEV2ZW50KHJlcXVlc3QuZXZlbnQpO1xuICAgIHRoaXMuX2ZEcmFnSGFuZGxlci5vblBvaW50ZXJVcCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZkRyYWdnYWJsZURhdGFDb250ZXh0LmRyYWdnYWJsZUl0ZW1zLnNvbWUoXG4gICAgICAoeCkgPT4geCBpbnN0YW5jZW9mIEZDcmVhdGVDb25uZWN0aW9uRHJhZ0hhbmRsZXJcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRUYXJnZXRPdXRwdXQob3V0cHV0OiBGQ29ubmVjdG9yQmFzZSB8IHVuZGVmaW5lZCk6IEZDb25uZWN0b3JCYXNlIHtcbiAgICBpZiAoIW91dHB1dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBPdXRwdXQgd2l0aCBmT3V0cHV0SWQgJHsgdGhpcy5fZlJlc3VsdC5nZXREYXRhKCkuZk91dHB1dElkIH0gbm90IGZvdW5kLiBNYWtlIHN1cmUgdGhlcmUgaXMgbm8gZi1jb25uZWN0aW9uIHRvIGEgbm9uLWV4aXN0ZW50IGZPdXRwdXQuYCk7XG4gICAgfVxuICAgIHJldHVybiBpc05vZGVPdXRsZXQob3V0cHV0Lmhvc3RFbGVtZW50KSA/IHRoaXMuX2ZNZWRpYXRvci5leGVjdXRlPEZOb2RlT3V0cHV0QmFzZT4oXG4gICAgICBuZXcgR2V0Rmlyc3RDb25uZWN0YWJsZU91dHB1dFJlcXVlc3Qob3V0cHV0IGFzIEZOb2RlT3V0bGV0QmFzZSlcbiAgICApIDogb3V0cHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdXRwdXQoKTogRkNvbm5lY3RvckJhc2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZPdXRwdXRzLmZpbmQoKHgpID0+IHguZklkID09PSB0aGlzLl9mUmVzdWx0LmdldERhdGEoKS5mT3V0cHV0SWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRPdXRsZXQoKTogRkNvbm5lY3RvckJhc2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZPdXRsZXRzLmZpbmQoKHgpID0+IHguZklkID09PSB0aGlzLl9mUmVzdWx0LmdldERhdGEoKS5mT3V0cHV0SWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0RXZlbnQoZXZlbnQ6IElQb2ludGVyRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZEcmFnZ2FibGU/LmZDcmVhdGVDb25uZWN0aW9uLmVtaXQoXG4gICAgICBuZXcgRkNyZWF0ZUNvbm5lY3Rpb25FdmVudChcbiAgICAgICAgdGhpcy5nZXRUYXJnZXRPdXRwdXQodGhpcy5nZXRPdXRwdXQoKSB8fCB0aGlzLmdldE91dGxldCgpKS5mSWQsXG4gICAgICAgIHRoaXMuX2dldElucHV0VW5kZXJQb2ludGVyKGV2ZW50KT8uZklkLFxuICAgICAgICBldmVudC5nZXRQb3NpdGlvbigpXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldElucHV0VW5kZXJQb2ludGVyKGV2ZW50OiBJUG9pbnRlckV2ZW50KTogRkNvbm5lY3RvckJhc2UgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9mTWVkaWF0b3IuZXhlY3V0ZTxGQ29ubmVjdG9yQmFzZSB8IHVuZGVmaW5lZD4oXG4gICAgICBuZXcgRmluZElucHV0QXRQb3NpdGlvblJlcXVlc3QoXG4gICAgICAgIGV2ZW50LmdldFBvc2l0aW9uKCksXG4gICAgICAgIHRoaXMuX2ZSZXN1bHQuZ2V0RGF0YSgpLnRvQ29ubmVjdG9yUmVjdCxcbiAgICAgICAgdGhpcy5fZlJlc3VsdC5nZXREYXRhKCkuY2FuQmVDb25uZWN0ZWRJbnB1dHNcbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iXX0=