@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.
54 lines • 8.88 kB
JavaScript
import { __decorate } from "tslib";
import { inject, Injectable } from '@angular/core';
import { FCreateConnectionFromOutletPreparationRequest } from './f-create-connection-from-outlet-preparation.request';
import { FComponentsStore } from '../../../../../f-storage';
import { FExecutionRegister, FMediator } from '@foblex/mediator';
import { GetFirstConnectableOutputRequest } from '../../get-first-connectable-output';
import { FCreateConnectionDragHandlerPreparationRequest } from '../drag-handler-preparation';
import * as i0 from "@angular/core";
let FCreateConnectionFromOutletPreparationExecution = class FCreateConnectionFromOutletPreparationExecution {
_fMediator = inject(FMediator);
_fComponentsStore = inject(FComponentsStore);
handle(request) {
const fOutlet = this._getNodeOutlet(request.fNode);
const fOutputs = this._getNodeOutputs(request.fNode);
fOutlet.setOutputs(fOutputs);
if (!fOutlet.canBeConnected) {
return;
}
if (fOutlet.isConnectionFromOutlet) {
this._createDragHandler(request.event.getPosition(), fOutlet);
}
else {
this._createDragHandler(request.event.getPosition(), this._getConnectableOutput(fOutlet));
}
}
_getNodeOutlet(fNode) {
const result = this._fComponentsStore.fOutlets
.find((x) => fNode.isContains(x.hostElement));
if (!result) {
throw new Error('Outlet not found');
}
return result;
}
_getNodeOutputs(fNode) {
return this._fComponentsStore.fOutputs
.filter((x) => fNode.isContains(x.hostElement));
}
_createDragHandler(position, fOutputOrOutlet) {
this._fMediator.execute(new FCreateConnectionDragHandlerPreparationRequest(position, fOutputOrOutlet));
}
_getConnectableOutput(fOutlet) {
return this._fMediator.execute(new GetFirstConnectableOutputRequest(fOutlet));
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCreateConnectionFromOutletPreparationExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCreateConnectionFromOutletPreparationExecution });
};
FCreateConnectionFromOutletPreparationExecution = __decorate([
FExecutionRegister(FCreateConnectionFromOutletPreparationRequest)
], FCreateConnectionFromOutletPreparationExecution);
export { FCreateConnectionFromOutletPreparationExecution };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCreateConnectionFromOutletPreparationExecution, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jcmVhdGUtY29ubmVjdGlvbi1mcm9tLW91dGxldC1wcmVwYXJhdGlvbi5leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZHJhZ2dhYmxlL2YtY29ubmVjdGlvbi9mLWNyZWF0ZS1jb25uZWN0aW9uL2NyZWF0ZS1wcmVwYXJhdGlvbi9mcm9tLW91dGxldC1wcmVwYXJhdGlvbi9mLWNyZWF0ZS1jb25uZWN0aW9uLWZyb20tb3V0bGV0LXByZXBhcmF0aW9uLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDdEgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBTWpFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSw4Q0FBOEMsRUFBRSxNQUFNLDZCQUE2QixDQUFDOztBQUt0RixJQUFNLCtDQUErQyxHQUFyRCxNQUFNLCtDQUErQztJQUdsRCxVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTlDLE1BQU0sQ0FBQyxPQUFzRDtRQUVsRSxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyRCxPQUFPLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDNUIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDNUYsQ0FBQztJQUNILENBQUM7SUFFTyxjQUFjLENBQUMsS0FBZ0I7UUFDckMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVE7YUFDM0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsT0FBTyxNQUF5QixDQUFDO0lBQ25DLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBZ0I7UUFDdEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUTthQUNuQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFFBQWdCLEVBQUUsZUFBa0Q7UUFDN0YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSw4Q0FBOEMsQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUN6RyxDQUFDO0lBRU8scUJBQXFCLENBQUMsT0FBd0I7UUFDcEQsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBa0IsSUFBSSxnQ0FBZ0MsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7d0dBNUNVLCtDQUErQzs0R0FBL0MsK0NBQStDOztBQUEvQywrQ0FBK0M7SUFEM0Qsa0JBQWtCLENBQUMsNkNBQTZDLENBQUM7R0FDckQsK0NBQStDLENBNkMzRDs7NEZBN0NZLCtDQUErQztrQkFGM0QsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElIYW5kbGVyIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBJUG9pbnQgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRkNyZWF0ZUNvbm5lY3Rpb25Gcm9tT3V0bGV0UHJlcGFyYXRpb25SZXF1ZXN0IH0gZnJvbSAnLi9mLWNyZWF0ZS1jb25uZWN0aW9uLWZyb20tb3V0bGV0LXByZXBhcmF0aW9uLnJlcXVlc3QnO1xuaW1wb3J0IHsgRkNvbXBvbmVudHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHtcbiAgRkNvbm5lY3RvckJhc2UsXG4gIEZOb2RlT3V0bGV0QmFzZSxcbiAgRk5vZGVPdXRwdXRCYXNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9mLWNvbm5lY3RvcnMnO1xuaW1wb3J0IHsgR2V0Rmlyc3RDb25uZWN0YWJsZU91dHB1dFJlcXVlc3QgfSBmcm9tICcuLi8uLi9nZXQtZmlyc3QtY29ubmVjdGFibGUtb3V0cHV0JztcbmltcG9ydCB7IEZDcmVhdGVDb25uZWN0aW9uRHJhZ0hhbmRsZXJQcmVwYXJhdGlvblJlcXVlc3QgfSBmcm9tICcuLi9kcmFnLWhhbmRsZXItcHJlcGFyYXRpb24nO1xuaW1wb3J0IHsgRk5vZGVCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZi1ub2RlJztcblxuQEluamVjdGFibGUoKVxuQEZFeGVjdXRpb25SZWdpc3RlcihGQ3JlYXRlQ29ubmVjdGlvbkZyb21PdXRsZXRQcmVwYXJhdGlvblJlcXVlc3QpXG5leHBvcnQgY2xhc3MgRkNyZWF0ZUNvbm5lY3Rpb25Gcm9tT3V0bGV0UHJlcGFyYXRpb25FeGVjdXRpb25cbiAgaW1wbGVtZW50cyBJSGFuZGxlcjxGQ3JlYXRlQ29ubmVjdGlvbkZyb21PdXRsZXRQcmVwYXJhdGlvblJlcXVlc3QsIHZvaWQ+IHtcblxuICBwcml2YXRlIF9mTWVkaWF0b3IgPSBpbmplY3QoRk1lZGlhdG9yKTtcbiAgcHJpdmF0ZSBfZkNvbXBvbmVudHNTdG9yZSA9IGluamVjdChGQ29tcG9uZW50c1N0b3JlKTtcblxuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IEZDcmVhdGVDb25uZWN0aW9uRnJvbU91dGxldFByZXBhcmF0aW9uUmVxdWVzdCk6IHZvaWQge1xuXG4gICAgY29uc3QgZk91dGxldCA9IHRoaXMuX2dldE5vZGVPdXRsZXQocmVxdWVzdC5mTm9kZSk7XG4gICAgY29uc3QgZk91dHB1dHMgPSB0aGlzLl9nZXROb2RlT3V0cHV0cyhyZXF1ZXN0LmZOb2RlKTtcblxuICAgIGZPdXRsZXQuc2V0T3V0cHV0cyhmT3V0cHV0cyk7XG5cbiAgICBpZiAoIWZPdXRsZXQuY2FuQmVDb25uZWN0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZk91dGxldC5pc0Nvbm5lY3Rpb25Gcm9tT3V0bGV0KSB7XG4gICAgICB0aGlzLl9jcmVhdGVEcmFnSGFuZGxlcihyZXF1ZXN0LmV2ZW50LmdldFBvc2l0aW9uKCksIGZPdXRsZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9jcmVhdGVEcmFnSGFuZGxlcihyZXF1ZXN0LmV2ZW50LmdldFBvc2l0aW9uKCksIHRoaXMuX2dldENvbm5lY3RhYmxlT3V0cHV0KGZPdXRsZXQpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9nZXROb2RlT3V0bGV0KGZOb2RlOiBGTm9kZUJhc2UpOiBGTm9kZU91dGxldEJhc2Uge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZk91dGxldHNcbiAgICAgIC5maW5kKCh4KSA9PiBmTm9kZS5pc0NvbnRhaW5zKHguaG9zdEVsZW1lbnQpKTtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPdXRsZXQgbm90IGZvdW5kJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQgYXMgRk5vZGVPdXRsZXRCYXNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Tm9kZU91dHB1dHMoZk5vZGU6IEZOb2RlQmFzZSk6IEZDb25uZWN0b3JCYXNlW10ge1xuICAgIHJldHVybiB0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZPdXRwdXRzXG4gICAgICAuZmlsdGVyKCh4KSA9PiBmTm9kZS5pc0NvbnRhaW5zKHguaG9zdEVsZW1lbnQpKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZURyYWdIYW5kbGVyKHBvc2l0aW9uOiBJUG9pbnQsIGZPdXRwdXRPck91dGxldDogRk5vZGVPdXRwdXRCYXNlIHwgRk5vZGVPdXRsZXRCYXNlKTogdm9pZCB7XG4gICAgdGhpcy5fZk1lZGlhdG9yLmV4ZWN1dGUobmV3IEZDcmVhdGVDb25uZWN0aW9uRHJhZ0hhbmRsZXJQcmVwYXJhdGlvblJlcXVlc3QocG9zaXRpb24sIGZPdXRwdXRPck91dGxldCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Q29ubmVjdGFibGVPdXRwdXQoZk91dGxldDogRk5vZGVPdXRsZXRCYXNlKTogRk5vZGVPdXRwdXRCYXNlIHtcbiAgICByZXR1cm4gdGhpcy5fZk1lZGlhdG9yLmV4ZWN1dGU8Rk5vZGVPdXRwdXRCYXNlPihuZXcgR2V0Rmlyc3RDb25uZWN0YWJsZU91dHB1dFJlcXVlc3QoZk91dGxldCkpO1xuICB9XG59XG4iXX0=