@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.
59 lines • 8.38 kB
JavaScript
import { booleanAttribute, Directive, ElementRef, inject, Input } from '@angular/core';
import { F_NODE_OUTLET, FNodeOutletBase } from './f-node-outlet-base';
import { F_NODE } from '../../f-node';
import { EFConnectableSide } from '../e-f-connectable-side';
import { FMediator } from '@foblex/mediator';
import { AddOutletToStoreRequest, RemoveOutletFromStoreRequest } from '../../domain';
import * as i0 from "@angular/core";
let uniqueId = 0;
export class FNodeOutletDirective extends FNodeOutletBase {
_elementReference = inject(ElementRef);
_fMediator = inject(FMediator);
/// Inject FNodeBase to check if the outlet inside the node
_fNode = inject(F_NODE);
fId = `f-node-outlet-${uniqueId++}`;
disabled = false;
fConnectableSide = EFConnectableSide.AUTO;
userFConnectableSide = EFConnectableSide.AUTO;
isConnectionFromOutlet = false;
canBeConnectedInputs = [];
get fNodeId() {
return this._fNode.fId;
}
get hostElement() {
return this._elementReference.nativeElement;
}
ngOnInit() {
this._fMediator.execute(new AddOutletToStoreRequest(this));
}
ngOnDestroy() {
this._fMediator.execute(new RemoveOutletFromStoreRequest(this));
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutletDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.13", type: FNodeOutletDirective, selector: "[fNodeOutlet]", inputs: { fId: ["fOutletId", "fId"], disabled: ["fOutletDisabled", "disabled", booleanAttribute], isConnectionFromOutlet: "isConnectionFromOutlet", canBeConnectedInputs: ["fCanBeConnectedInputs", "canBeConnectedInputs"] }, host: { properties: { "attr.data-f-outlet-id": "fId", "class.f-node-outlet-disabled": "disabled" }, classAttribute: "f-component f-node-outlet" }, providers: [{ provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective }], exportAs: ["fNodeOutlet"], usesInheritance: true, ngImport: i0 });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeOutletDirective, decorators: [{
type: Directive,
args: [{
selector: "[fNodeOutlet]",
exportAs: 'fNodeOutlet',
host: {
'[attr.data-f-outlet-id]': 'fId',
class: "f-component f-node-outlet",
'[class.f-node-outlet-disabled]': 'disabled'
},
providers: [{ provide: F_NODE_OUTLET, useExisting: FNodeOutletDirective }],
}]
}], propDecorators: { fId: [{
type: Input,
args: ['fOutletId']
}], disabled: [{
type: Input,
args: [{ alias: 'fOutletDisabled', transform: booleanAttribute }]
}], isConnectionFromOutlet: [{
type: Input
}], canBeConnectedInputs: [{
type: Input,
args: [{ alias: 'fCanBeConnectedInputs' }]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1ub2RlLW91dGxldC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtY29ubmVjdG9ycy9mLW5vZGUtb3V0bGV0L2Ytbm9kZS1vdXRsZXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDRCQUE0QixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUdyRixJQUFJLFFBQVEsR0FBVyxDQUFDLENBQUM7QUFZekIsTUFBTSxPQUFPLG9CQUFxQixTQUFRLGVBQWU7SUFFL0MsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkMsMkRBQTJEO0lBQ25ELE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFHaEIsR0FBRyxHQUFXLGlCQUFrQixRQUFRLEVBQUcsRUFBRSxDQUFDO0lBRzlDLFFBQVEsR0FBWSxLQUFLLENBQUM7SUFFMUIsZ0JBQWdCLEdBQXNCLGlCQUFpQixDQUFDLElBQUksQ0FBQztJQUU3RCxvQkFBb0IsR0FBc0IsaUJBQWlCLENBQUMsSUFBSSxDQUFDO0lBR2pFLHNCQUFzQixHQUFZLEtBQUssQ0FBQztJQUd4QyxvQkFBb0IsR0FBYSxFQUFFLENBQUM7SUFFcEQsSUFBb0IsT0FBTztRQUN6QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDO0lBQzlDLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksNEJBQTRCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO3dHQXJDVSxvQkFBb0I7NEZBQXBCLG9CQUFvQiw0R0FVZSxnQkFBZ0IsOFJBWm5ELENBQUUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxDQUFFOzs0RkFFakUsb0JBQW9CO2tCQVZoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO29CQUN6QixRQUFRLEVBQUUsYUFBYTtvQkFDdkIsSUFBSSxFQUFFO3dCQUNKLHlCQUF5QixFQUFFLEtBQUs7d0JBQ2hDLEtBQUssRUFBRSwyQkFBMkI7d0JBQ2xDLGdDQUFnQyxFQUFFLFVBQVU7cUJBQzdDO29CQUNELFNBQVMsRUFBRSxDQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLHNCQUFzQixFQUFFLENBQUU7aUJBQzdFOzhCQVNpQixHQUFHO3NCQURsQixLQUFLO3VCQUFDLFdBQVc7Z0JBSUYsUUFBUTtzQkFEdkIsS0FBSzt1QkFBQyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBUWhELHNCQUFzQjtzQkFEckMsS0FBSztnQkFJVSxvQkFBb0I7c0JBRG5DLEtBQUs7dUJBQUMsRUFBRSxLQUFLLEVBQUUsdUJBQXVCLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBib29sZWFuQXR0cmlidXRlLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGX05PREVfT1VUTEVULCBGTm9kZU91dGxldEJhc2UgfSBmcm9tICcuL2Ytbm9kZS1vdXRsZXQtYmFzZSc7XG5pbXBvcnQgeyBGX05PREUgfSBmcm9tICcuLi8uLi9mLW5vZGUnO1xuaW1wb3J0IHsgRUZDb25uZWN0YWJsZVNpZGUgfSBmcm9tICcuLi9lLWYtY29ubmVjdGFibGUtc2lkZSc7XG5pbXBvcnQgeyBGTWVkaWF0b3IgfSBmcm9tICdAZm9ibGV4L21lZGlhdG9yJztcbmltcG9ydCB7IEFkZE91dGxldFRvU3RvcmVSZXF1ZXN0LCBSZW1vdmVPdXRsZXRGcm9tU3RvcmVSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEZDb25uZWN0b3JCYXNlIH0gZnJvbSAnLi4vZi1jb25uZWN0b3ItYmFzZSc7XG5cbmxldCB1bmlxdWVJZDogbnVtYmVyID0gMDtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcIltmTm9kZU91dGxldF1cIixcbiAgZXhwb3J0QXM6ICdmTm9kZU91dGxldCcsXG4gIGhvc3Q6IHtcbiAgICAnW2F0dHIuZGF0YS1mLW91dGxldC1pZF0nOiAnZklkJyxcbiAgICBjbGFzczogXCJmLWNvbXBvbmVudCBmLW5vZGUtb3V0bGV0XCIsXG4gICAgJ1tjbGFzcy5mLW5vZGUtb3V0bGV0LWRpc2FibGVkXSc6ICdkaXNhYmxlZCdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbIHsgcHJvdmlkZTogRl9OT0RFX09VVExFVCwgdXNlRXhpc3Rpbmc6IEZOb2RlT3V0bGV0RGlyZWN0aXZlIH0gXSxcbn0pXG5leHBvcnQgY2xhc3MgRk5vZGVPdXRsZXREaXJlY3RpdmUgZXh0ZW5kcyBGTm9kZU91dGxldEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cbiAgcHJpdmF0ZSBfZWxlbWVudFJlZmVyZW5jZSA9IGluamVjdChFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSBfZk1lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG4gIC8vLyBJbmplY3QgRk5vZGVCYXNlIHRvIGNoZWNrIGlmIHRoZSBvdXRsZXQgaW5zaWRlIHRoZSBub2RlXG4gIHByaXZhdGUgX2ZOb2RlID0gaW5qZWN0KEZfTk9ERSk7XG5cbiAgQElucHV0KCdmT3V0bGV0SWQnKVxuICBwdWJsaWMgb3ZlcnJpZGUgZklkOiBzdHJpbmcgPSBgZi1ub2RlLW91dGxldC0keyB1bmlxdWVJZCsrIH1gO1xuXG4gIEBJbnB1dCh7IGFsaWFzOiAnZk91dGxldERpc2FibGVkJywgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIHB1YmxpYyBvdmVycmlkZSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBmQ29ubmVjdGFibGVTaWRlOiBFRkNvbm5lY3RhYmxlU2lkZSA9IEVGQ29ubmVjdGFibGVTaWRlLkFVVE87XG5cbiAgcHVibGljIG92ZXJyaWRlIHVzZXJGQ29ubmVjdGFibGVTaWRlOiBFRkNvbm5lY3RhYmxlU2lkZSA9IEVGQ29ubmVjdGFibGVTaWRlLkFVVE87XG5cbiAgQElucHV0KClcbiAgcHVibGljIG92ZXJyaWRlIGlzQ29ubmVjdGlvbkZyb21PdXRsZXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoeyBhbGlhczogJ2ZDYW5CZUNvbm5lY3RlZElucHV0cycgfSlcbiAgcHVibGljIG92ZXJyaWRlIGNhbkJlQ29ubmVjdGVkSW5wdXRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHB1YmxpYyBvdmVycmlkZSBnZXQgZk5vZGVJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9mTm9kZS5mSWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhvc3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHwgU1ZHRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWZlcmVuY2UubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLl9mTWVkaWF0b3IuZXhlY3V0ZShuZXcgQWRkT3V0bGV0VG9TdG9yZVJlcXVlc3QodGhpcykpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2ZNZWRpYXRvci5leGVjdXRlKG5ldyBSZW1vdmVPdXRsZXRGcm9tU3RvcmVSZXF1ZXN0KHRoaXMpKTtcbiAgfVxufVxuIl19