@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.
34 lines • 4.95 kB
JavaScript
import { __decorate } from "tslib";
import { inject, Injectable } from '@angular/core';
import { GetParentNodesRequest } from './get-parent-nodes.request';
import { FExecutionRegister } from '@foblex/mediator';
import { FComponentsStore } from '../../../f-storage';
import * as i0 from "@angular/core";
let GetParentNodesExecution = class GetParentNodesExecution {
_fComponentsStore = inject(FComponentsStore);
handle(request) {
return this._getParentNodes(request.fNode, new Set(), []);
}
_getParentNodes(fNode, visited, result) {
if (visited.has(fNode.fId)) {
throw new Error('Circular reference detected in the node hierarchy. Node id: ' + fNode.fId);
}
visited.add(fNode.fId);
const parent = this._fComponentsStore.fNodes.find((x) => x.fId === fNode.fParentId);
if (!parent) {
return result;
}
result.push(parent);
return this._getParentNodes(parent, visited, result);
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetParentNodesExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetParentNodesExecution });
};
GetParentNodesExecution = __decorate([
FExecutionRegister(GetParentNodesRequest)
], GetParentNodesExecution);
export { GetParentNodesExecution };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: GetParentNodesExecution, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXBhcmVudC1ub2Rlcy5leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2RvbWFpbi9mLW5vZGUvZ2V0LXBhcmVudC1ub2Rlcy9nZXQtcGFyZW50LW5vZGVzLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGtCQUFrQixFQUFjLE1BQU0sa0JBQWtCLENBQUM7QUFFbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBSS9DLElBQU0sdUJBQXVCLEdBQTdCLE1BQU0sdUJBQXVCO0lBRzFCLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRTlDLE1BQU0sQ0FBQyxPQUE4QjtRQUMxQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEdBQUcsRUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFTyxlQUFlLENBQUMsS0FBZ0IsRUFBRSxPQUFvQixFQUFFLE1BQW1CO1FBQ2pGLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5RixDQUFDO1FBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFdkIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELENBQUM7d0dBdEJVLHVCQUF1Qjs0R0FBdkIsdUJBQXVCOztBQUF2Qix1QkFBdUI7SUFEbkMsa0JBQWtCLENBQUMscUJBQXFCLENBQUM7R0FDN0IsdUJBQXVCLENBdUJuQzs7NEZBdkJZLHVCQUF1QjtrQkFGbkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR2V0UGFyZW50Tm9kZXNSZXF1ZXN0IH0gZnJvbSAnLi9nZXQtcGFyZW50LW5vZGVzLnJlcXVlc3QnO1xuaW1wb3J0IHsgRkV4ZWN1dGlvblJlZ2lzdGVyLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBGTm9kZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9mLW5vZGUnO1xuaW1wb3J0IHsgRkNvbXBvbmVudHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL2Ytc3RvcmFnZSc7XG5cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoR2V0UGFyZW50Tm9kZXNSZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIEdldFBhcmVudE5vZGVzRXhlY3V0aW9uXG4gIGltcGxlbWVudHMgSUV4ZWN1dGlvbjxHZXRQYXJlbnROb2Rlc1JlcXVlc3QsIEZOb2RlQmFzZVtdPiB7XG5cbiAgcHJpdmF0ZSBfZkNvbXBvbmVudHNTdG9yZSA9IGluamVjdChGQ29tcG9uZW50c1N0b3JlKTtcblxuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IEdldFBhcmVudE5vZGVzUmVxdWVzdCk6IEZOb2RlQmFzZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0UGFyZW50Tm9kZXMocmVxdWVzdC5mTm9kZSwgbmV3IFNldDxzdHJpbmc+KCksIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFBhcmVudE5vZGVzKGZOb2RlOiBGTm9kZUJhc2UsIHZpc2l0ZWQ6IFNldDxzdHJpbmc+LCByZXN1bHQ6IEZOb2RlQmFzZVtdKTogRk5vZGVCYXNlW10ge1xuICAgIGlmICh2aXNpdGVkLmhhcyhmTm9kZS5mSWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NpcmN1bGFyIHJlZmVyZW5jZSBkZXRlY3RlZCBpbiB0aGUgbm9kZSBoaWVyYXJjaHkuIE5vZGUgaWQ6ICcgKyBmTm9kZS5mSWQpO1xuICAgIH1cbiAgICB2aXNpdGVkLmFkZChmTm9kZS5mSWQpO1xuXG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5fZkNvbXBvbmVudHNTdG9yZS5mTm9kZXMuZmluZCgoeCkgPT4geC5mSWQgPT09IGZOb2RlLmZQYXJlbnRJZCk7XG4gICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmVzdWx0LnB1c2gocGFyZW50KTtcbiAgICByZXR1cm4gdGhpcy5fZ2V0UGFyZW50Tm9kZXMocGFyZW50LCB2aXNpdGVkLCByZXN1bHQpO1xuICB9XG59XG4iXX0=