@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
JavaScript
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=