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.

34 lines 4.95 kB
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=