@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.
49 lines • 7.88 kB
JavaScript
import { __decorate } from "tslib";
import { inject, Injectable } from '@angular/core';
import { FCreateConnectionFromOutputPreparationRequest } from './f-create-connection-from-output-preparation.request';
import { isNodeOutput } from '../../../../../f-connectors';
import { FCreateConnectionDragHandlerPreparationRequest } from '../drag-handler-preparation';
import { FComponentsStore } from '../../../../../f-storage';
import { FExecutionRegister, FMediator } from '@foblex/mediator';
import * as i0 from "@angular/core";
let FCreateConnectionFromOutputPreparationExecution = class FCreateConnectionFromOutputPreparationExecution {
_fMediator = inject(FMediator);
_fComponentsStore = inject(FComponentsStore);
handle(request) {
if (!this._isValid(request)) {
return;
}
const fOutput = this._getOutput(request.event.targetElement);
if (fOutput.canBeConnected) {
this._fMediator.execute(new FCreateConnectionDragHandlerPreparationRequest(request.event.getPosition(), fOutput));
}
}
_isValid(request) {
return this._isNodeOutput(request.event.targetElement, request.fNode);
}
_isNodeOutput(element, fNode) {
return isNodeOutput(element) && !this._getNodeOutlets(fNode).length;
}
_getNodeOutlets(node) {
return this._fComponentsStore.fOutlets
.filter((x) => node.isContains(x.hostElement));
}
_getOutput(element) {
const result = this._fComponentsStore.fOutputs
.find((x) => x.hostElement.contains(element));
if (!result) {
throw new Error('Output not found');
}
return result;
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCreateConnectionFromOutputPreparationExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCreateConnectionFromOutputPreparationExecution });
};
FCreateConnectionFromOutputPreparationExecution = __decorate([
FExecutionRegister(FCreateConnectionFromOutputPreparationRequest)
], FCreateConnectionFromOutputPreparationExecution);
export { FCreateConnectionFromOutputPreparationExecution };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FCreateConnectionFromOutputPreparationExecution, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1jcmVhdGUtY29ubmVjdGlvbi1mcm9tLW91dHB1dC1wcmVwYXJhdGlvbi5leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZHJhZ2dhYmxlL2YtY29ubmVjdGlvbi9mLWNyZWF0ZS1jb25uZWN0aW9uL2NyZWF0ZS1wcmVwYXJhdGlvbi9mcm9tLW91dHB1dC1wcmVwYXJhdGlvbi9mLWNyZWF0ZS1jb25uZWN0aW9uLWZyb20tb3V0cHV0LXByZXBhcmF0aW9uLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLDZDQUE2QyxFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDdEgsT0FBTyxFQUFtQyxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RixPQUFPLEVBQUUsOENBQThDLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM3RixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBSzFELElBQU0sK0NBQStDLEdBQXJELE1BQU0sK0NBQStDO0lBR2xELFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFFOUMsTUFBTSxDQUFDLE9BQXNEO1FBQ2xFLElBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFN0QsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQ3JCLElBQUksOENBQThDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FDekYsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU8sUUFBUSxDQUFDLE9BQXNEO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVPLGFBQWEsQ0FBQyxPQUFvQixFQUFFLEtBQWdCO1FBQzFELE9BQU8sWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDdEUsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFlO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVE7YUFDbkMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFTyxVQUFVLENBQUMsT0FBZ0I7UUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVE7YUFDM0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsT0FBTyxNQUF5QixDQUFDO0lBQ25DLENBQUM7d0dBdkNVLCtDQUErQzs0R0FBL0MsK0NBQStDOztBQUEvQywrQ0FBK0M7SUFEM0Qsa0JBQWtCLENBQUMsNkNBQTZDLENBQUM7R0FDckQsK0NBQStDLENBd0MzRDs7NEZBeENZLCtDQUErQztrQkFGM0QsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElIYW5kbGVyIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZDcmVhdGVDb25uZWN0aW9uRnJvbU91dHB1dFByZXBhcmF0aW9uUmVxdWVzdCB9IGZyb20gJy4vZi1jcmVhdGUtY29ubmVjdGlvbi1mcm9tLW91dHB1dC1wcmVwYXJhdGlvbi5yZXF1ZXN0JztcbmltcG9ydCB7IEZDb25uZWN0b3JCYXNlLCBGTm9kZU91dHB1dEJhc2UsIGlzTm9kZU91dHB1dCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2YtY29ubmVjdG9ycyc7XG5pbXBvcnQgeyBGQ3JlYXRlQ29ubmVjdGlvbkRyYWdIYW5kbGVyUHJlcGFyYXRpb25SZXF1ZXN0IH0gZnJvbSAnLi4vZHJhZy1oYW5kbGVyLXByZXBhcmF0aW9uJztcbmltcG9ydCB7IEZDb21wb25lbnRzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHsgRkV4ZWN1dGlvblJlZ2lzdGVyLCBGTWVkaWF0b3IgfSBmcm9tICdAZm9ibGV4L21lZGlhdG9yJztcbmltcG9ydCB7IEZOb2RlQmFzZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Ytbm9kZSc7XG5cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoRkNyZWF0ZUNvbm5lY3Rpb25Gcm9tT3V0cHV0UHJlcGFyYXRpb25SZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIEZDcmVhdGVDb25uZWN0aW9uRnJvbU91dHB1dFByZXBhcmF0aW9uRXhlY3V0aW9uXG4gIGltcGxlbWVudHMgSUhhbmRsZXI8RkNyZWF0ZUNvbm5lY3Rpb25Gcm9tT3V0cHV0UHJlcGFyYXRpb25SZXF1ZXN0LCB2b2lkPiB7XG5cbiAgcHJpdmF0ZSBfZk1lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG4gIHByaXZhdGUgX2ZDb21wb25lbnRzU3RvcmUgPSBpbmplY3QoRkNvbXBvbmVudHNTdG9yZSk7XG5cbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBGQ3JlYXRlQ29ubmVjdGlvbkZyb21PdXRwdXRQcmVwYXJhdGlvblJlcXVlc3QpOiB2b2lkIHtcbiAgICBpZighdGhpcy5faXNWYWxpZChyZXF1ZXN0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmT3V0cHV0ID0gdGhpcy5fZ2V0T3V0cHV0KHJlcXVlc3QuZXZlbnQudGFyZ2V0RWxlbWVudCk7XG5cbiAgICBpZiAoZk91dHB1dC5jYW5CZUNvbm5lY3RlZCkge1xuICAgICAgdGhpcy5fZk1lZGlhdG9yLmV4ZWN1dGUoXG4gICAgICAgIG5ldyBGQ3JlYXRlQ29ubmVjdGlvbkRyYWdIYW5kbGVyUHJlcGFyYXRpb25SZXF1ZXN0KHJlcXVlc3QuZXZlbnQuZ2V0UG9zaXRpb24oKSwgZk91dHB1dClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaXNWYWxpZChyZXF1ZXN0OiBGQ3JlYXRlQ29ubmVjdGlvbkZyb21PdXRwdXRQcmVwYXJhdGlvblJlcXVlc3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faXNOb2RlT3V0cHV0KHJlcXVlc3QuZXZlbnQudGFyZ2V0RWxlbWVudCwgcmVxdWVzdC5mTm9kZSk7XG4gIH1cblxuICBwcml2YXRlIF9pc05vZGVPdXRwdXQoZWxlbWVudDogSFRNTEVsZW1lbnQsIGZOb2RlOiBGTm9kZUJhc2UpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNOb2RlT3V0cHV0KGVsZW1lbnQpICYmICF0aGlzLl9nZXROb2RlT3V0bGV0cyhmTm9kZSkubGVuZ3RoO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Tm9kZU91dGxldHMobm9kZTogRk5vZGVCYXNlKTogRkNvbm5lY3RvckJhc2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZk91dGxldHNcbiAgICAgIC5maWx0ZXIoKHgpID0+IG5vZGUuaXNDb250YWlucyh4Lmhvc3RFbGVtZW50KSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRPdXRwdXQoZWxlbWVudDogRWxlbWVudCk6IEZOb2RlT3V0cHV0QmFzZSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZkNvbXBvbmVudHNTdG9yZS5mT3V0cHV0c1xuICAgICAgLmZpbmQoKHgpID0+IHguaG9zdEVsZW1lbnQuY29udGFpbnMoZWxlbWVudCkpO1xuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ091dHB1dCBub3QgZm91bmQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdCBhcyBGTm9kZU91dHB1dEJhc2U7XG4gIH1cbn1cbiJdfQ==