@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.
47 lines • 6.58 kB
JavaScript
import { __decorate } from "tslib";
import { inject, Injectable } from '@angular/core';
import { FComponentsStore } from '../../../../f-storage';
import { GetFirstConnectableOutputRequest } from './get-first-connectable-output.request';
import { FExecutionRegister } from '@foblex/mediator';
import * as i0 from "@angular/core";
let GetFirstConnectableOutputExecution = class GetFirstConnectableOutputExecution {
_fComponentStore = inject(FComponentsStore);
get _fNodes() {
return this._fComponentStore.fNodes;
}
get _fOutputs() {
return this._fComponentStore.fOutputs;
}
_fNode;
handle(request) {
if (!this._isValid(request)) {
return;
}
const fOutputs = this._getConnectableOutputs();
if (!fOutputs.length) {
throw new Error('The fNode must contain at least one fOutput if there is an fOutlet');
}
return fOutputs[0];
}
_isValid(request) {
return !!this._getNode(request.fOutlet);
}
_getNode(fOutlet) {
this._fNode = this._fNodes.find((x) => x.isContains(fOutlet.hostElement));
return this._fNode;
}
_getConnectableOutputs() {
return this._fOutputs
.filter((x) => this._fNode.isContains(x.hostElement) && x.canBeConnected);
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetFirstConnectableOutputExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetFirstConnectableOutputExecution });
};
GetFirstConnectableOutputExecution = __decorate([
FExecutionRegister(GetFirstConnectableOutputRequest)
], GetFirstConnectableOutputExecution);
export { GetFirstConnectableOutputExecution };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetFirstConnectableOutputExecution, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LWZpcnN0LWNvbm5lY3RhYmxlLW91dHB1dC5leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZHJhZ2dhYmxlL2YtY29ubmVjdGlvbi9mLWNyZWF0ZS1jb25uZWN0aW9uL2dldC1maXJzdC1jb25uZWN0YWJsZS1vdXRwdXQvZ2V0LWZpcnN0LWNvbm5lY3RhYmxlLW91dHB1dC5leGVjdXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBR3pELE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUkvQyxJQUFNLGtDQUFrQyxHQUF4QyxNQUFNLGtDQUFrQztJQUc1QixnQkFBZ0IsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU3RCxJQUFZLE9BQU87UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFZLFNBQVM7UUFDbkIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDO0lBQ3hDLENBQUM7SUFFTyxNQUFNLENBQXdCO0lBRS9CLE1BQU0sQ0FBQyxPQUF5QztRQUNyRCxJQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDL0MsSUFBRyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLG9FQUFvRSxDQUFDLENBQUE7UUFDdkYsQ0FBQztRQUNELE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFTyxRQUFRLENBQUMsT0FBeUM7UUFDeEQsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVPLFFBQVEsQ0FBQyxPQUF3QjtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBRSxDQUFDO1FBQzNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFNBQVM7YUFDbEIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7d0dBdkNVLGtDQUFrQzs0R0FBbEMsa0NBQWtDOztBQUFsQyxrQ0FBa0M7SUFEOUMsa0JBQWtCLENBQUMsZ0NBQWdDLENBQUM7R0FDeEMsa0NBQWtDLENBd0M5Qzs7NEZBeENZLGtDQUFrQztrQkFGOUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElIYW5kbGVyIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZDb21wb25lbnRzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi8uLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHsgRkNvbm5lY3RvckJhc2UsIEZOb2RlT3V0bGV0QmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uL2YtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBGTm9kZUJhc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9mLW5vZGUnO1xuaW1wb3J0IHsgR2V0Rmlyc3RDb25uZWN0YWJsZU91dHB1dFJlcXVlc3QgfSBmcm9tICcuL2dldC1maXJzdC1jb25uZWN0YWJsZS1vdXRwdXQucmVxdWVzdCc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIgfSBmcm9tICdAZm9ibGV4L21lZGlhdG9yJztcblxuQEluamVjdGFibGUoKVxuQEZFeGVjdXRpb25SZWdpc3RlcihHZXRGaXJzdENvbm5lY3RhYmxlT3V0cHV0UmVxdWVzdClcbmV4cG9ydCBjbGFzcyBHZXRGaXJzdENvbm5lY3RhYmxlT3V0cHV0RXhlY3V0aW9uXG4gIGltcGxlbWVudHMgSUhhbmRsZXI8R2V0Rmlyc3RDb25uZWN0YWJsZU91dHB1dFJlcXVlc3QsIEZDb25uZWN0b3JCYXNlIHwgdW5kZWZpbmVkPiB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZkNvbXBvbmVudFN0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuXG4gIHByaXZhdGUgZ2V0IF9mTm9kZXMoKTogRk5vZGVCYXNlW10ge1xuICAgIHJldHVybiB0aGlzLl9mQ29tcG9uZW50U3RvcmUuZk5vZGVzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2ZPdXRwdXRzKCk6IEZDb25uZWN0b3JCYXNlW10ge1xuICAgIHJldHVybiB0aGlzLl9mQ29tcG9uZW50U3RvcmUuZk91dHB1dHM7XG4gIH1cblxuICBwcml2YXRlIF9mTm9kZTogRk5vZGVCYXNlIHwgdW5kZWZpbmVkO1xuXG4gIHB1YmxpYyBoYW5kbGUocmVxdWVzdDogR2V0Rmlyc3RDb25uZWN0YWJsZU91dHB1dFJlcXVlc3QpOiBGQ29ubmVjdG9yQmFzZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYoIXRoaXMuX2lzVmFsaWQocmVxdWVzdCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmT3V0cHV0cyA9IHRoaXMuX2dldENvbm5lY3RhYmxlT3V0cHV0cygpO1xuICAgIGlmKCFmT3V0cHV0cy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIGZOb2RlIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgZk91dHB1dCBpZiB0aGVyZSBpcyBhbiBmT3V0bGV0JylcbiAgICB9XG4gICAgcmV0dXJuIGZPdXRwdXRzWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNWYWxpZChyZXF1ZXN0OiBHZXRGaXJzdENvbm5lY3RhYmxlT3V0cHV0UmVxdWVzdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuX2dldE5vZGUocmVxdWVzdC5mT3V0bGV0KTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE5vZGUoZk91dGxldDogRk5vZGVPdXRsZXRCYXNlKTogRk5vZGVCYXNlIHtcbiAgICB0aGlzLl9mTm9kZSA9IHRoaXMuX2ZOb2Rlcy5maW5kKCh4KSA9PiB4LmlzQ29udGFpbnMoZk91dGxldC5ob3N0RWxlbWVudCkpITtcbiAgICByZXR1cm4gdGhpcy5fZk5vZGU7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb25uZWN0YWJsZU91dHB1dHMoKTogRkNvbm5lY3RvckJhc2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZPdXRwdXRzXG4gICAgICAuZmlsdGVyKCh4KSA9PiB0aGlzLl9mTm9kZSEuaXNDb250YWlucyh4Lmhvc3RFbGVtZW50KSAmJiB4LmNhbkJlQ29ubmVjdGVkKTtcbiAgfVxufVxuIl19