@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.
79 lines • 11.7 kB
JavaScript
import { booleanAttribute, Directive, ElementRef, inject, Input } from '@angular/core';
import { F_NODE_INPUT, FNodeInputBase } from './f-node-input-base';
import { EFConnectableSide } from '../e-f-connectable-side';
import { F_NODE } from '../../f-node';
import { castToEnum } from '@foblex/utils';
import { FMediator } from '@foblex/mediator';
import { AddInputToStoreRequest, F_CSS_CLASS, RemoveInputFromStoreRequest } from '../../domain';
import * as i0 from "@angular/core";
let uniqueId = 0;
export class FNodeInputDirective extends FNodeInputBase {
_elementReference = inject(ElementRef);
_fMediator = inject(FMediator);
_fNode = inject(F_NODE);
fId = `f-node-input-${uniqueId++}`;
multiple = true;
disabled = false;
userFConnectableSide = EFConnectableSide.AUTO;
get fNodeId() {
return this._fNode.fId;
}
get hostElement() {
return this._elementReference.nativeElement;
}
ngOnInit() {
this._fMediator.execute(new AddInputToStoreRequest(this));
this._fNode.addConnector(this);
}
ngOnChanges(changes) {
if (changes['userFConnectableSide']) {
this._fNode.refresh();
}
}
setConnected(toConnector) {
super.setConnected(toConnector);
this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_CONNECTED, true);
this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_NOT_CONNECTABLE, !this.canBeConnected);
}
resetConnected() {
super.resetConnected();
this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_CONNECTED, false);
this.hostElement.classList.toggle(F_CSS_CLASS.CONNECTOR.INPUT_NOT_CONNECTABLE, !this.canBeConnected);
}
ngOnDestroy() {
this._fNode.removeConnector(this);
this._fMediator.execute(new RemoveInputFromStoreRequest(this));
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeInputDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.13", type: FNodeInputDirective, selector: "[fNodeInput]", inputs: { fId: ["fInputId", "fId"], multiple: ["fInputMultiple", "multiple"], disabled: ["fInputDisabled", "disabled", booleanAttribute], userFConnectableSide: ["fInputConnectableSide", "userFConnectableSide", (value) => castToEnum(value, 'fInputConnectableSide', EFConnectableSide)] }, host: { properties: { "attr.data-f-input-id": "fId", "class.f-node-input-multiple": "multiple", "class.f-node-input-disabled": "disabled" }, classAttribute: "f-component f-node-input" }, providers: [{ provide: F_NODE_INPUT, useExisting: FNodeInputDirective }], exportAs: ["fNodeInput"], usesInheritance: true, usesOnChanges: true, ngImport: i0 });
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeInputDirective, decorators: [{
type: Directive,
args: [{
selector: "[fNodeInput]",
exportAs: 'fNodeInput',
host: {
'[attr.data-f-input-id]': 'fId',
class: "f-component f-node-input",
'[class.f-node-input-multiple]': 'multiple',
'[class.f-node-input-disabled]': 'disabled'
},
providers: [{ provide: F_NODE_INPUT, useExisting: FNodeInputDirective }],
}]
}], propDecorators: { fId: [{
type: Input,
args: ['fInputId']
}], multiple: [{
type: Input,
args: ['fInputMultiple']
}], disabled: [{
type: Input,
args: [{ alias: 'fInputDisabled', transform: booleanAttribute }]
}], userFConnectableSide: [{
type: Input,
args: [{
alias: 'fInputConnectableSide',
transform: (value) => castToEnum(value, 'fInputConnectableSide', EFConnectableSide)
}]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1ub2RlLWlucHV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1jb25uZWN0b3JzL2Ytbm9kZS1pbnB1dC9mLW5vZGUtaW5wdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUlOLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sY0FBYyxDQUFDOztBQUdoRyxJQUFJLFFBQVEsR0FBVyxDQUFDLENBQUM7QUFhekIsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGNBQWM7SUFFN0MsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZDLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUdoQixHQUFHLEdBQVEsZ0JBQWlCLFFBQVEsRUFBRyxFQUFFLENBQUM7SUFHMUMsUUFBUSxHQUFZLElBQUksQ0FBQztJQUd6QixRQUFRLEdBQVksS0FBSyxDQUFDO0lBTTFCLG9CQUFvQixHQUFzQixpQkFBaUIsQ0FBQyxJQUFJLENBQUM7SUFFakYsSUFBb0IsT0FB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QUM7cUJBQzdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LCBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRl9OT0RFX0lOUFVULCBGTm9kZUlucHV0QmFzZSB9IGZyb20gJy4vZi1ub2RlLWlucHV0LWJhc2UnO1xuaW1wb3J0IHsgRUZDb25uZWN0YWJsZVNpZGUgfSBmcm9tICcuLi9lLWYtY29ubmVjdGFibGUtc2lkZSc7XG5pbXBvcnQgeyBGX05PREUgfSBmcm9tICcuLi8uLi9mLW5vZGUnO1xuaW1wb3J0IHsgY2FzdFRvRW51bSB9IGZyb20gJ0Bmb2JsZXgvdXRpbHMnO1xuaW1wb3J0IHsgRk1lZGlhdG9yIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBBZGRJbnB1dFRvU3RvcmVSZXF1ZXN0LCBGX0NTU19DTEFTUywgUmVtb3ZlSW5wdXRGcm9tU3RvcmVSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEZDb25uZWN0b3JCYXNlIH0gZnJvbSAnLi4vZi1jb25uZWN0b3ItYmFzZSc7XG5cbmxldCB1bmlxdWVJZDogbnVtYmVyID0gMDtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiBcIltmTm9kZUlucHV0XVwiLFxuICBleHBvcnRBczogJ2ZOb2RlSW5wdXQnLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLmRhdGEtZi1pbnB1dC1pZF0nOiAnZklkJyxcbiAgICBjbGFzczogXCJmLWNvbXBvbmVudCBmLW5vZGUtaW5wdXRcIixcbiAgICAnW2NsYXNzLmYtbm9kZS1pbnB1dC1tdWx0aXBsZV0nOiAnbXVsdGlwbGUnLFxuICAgICdbY2xhc3MuZi1ub2RlLWlucHV0LWRpc2FibGVkXSc6ICdkaXNhYmxlZCdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbIHsgcHJvdmlkZTogRl9OT0RFX0lOUFVULCB1c2VFeGlzdGluZzogRk5vZGVJbnB1dERpcmVjdGl2ZSB9IF0sXG59KVxuZXhwb3J0IGNsYXNzIEZOb2RlSW5wdXREaXJlY3RpdmUgZXh0ZW5kcyBGTm9kZUlucHV0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIHByaXZhdGUgX2VsZW1lbnRSZWZlcmVuY2UgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gIHByaXZhdGUgX2ZNZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuICBwcml2YXRlIF9mTm9kZSA9IGluamVjdChGX05PREUpO1xuXG4gIEBJbnB1dCgnZklucHV0SWQnKVxuICBwdWJsaWMgb3ZlcnJpZGUgZklkOiBhbnkgPSBgZi1ub2RlLWlucHV0LSR7IHVuaXF1ZUlkKysgfWA7XG5cbiAgQElucHV0KCdmSW5wdXRNdWx0aXBsZScpXG4gIHB1YmxpYyBvdmVycmlkZSBtdWx0aXBsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KHsgYWxpYXM6ICdmSW5wdXREaXNhYmxlZCcsIHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoe1xuICAgIGFsaWFzOiAnZklucHV0Q29ubmVjdGFibGVTaWRlJyxcbiAgICB0cmFuc2Zvcm06ICh2YWx1ZTogdW5rbm93bikgPT4gY2FzdFRvRW51bSh2YWx1ZSwgJ2ZJbnB1dENvbm5lY3RhYmxlU2lkZScsIEVGQ29ubmVjdGFibGVTaWRlKVxuICB9KVxuICBwdWJsaWMgb3ZlcnJpZGUgdXNlckZDb25uZWN0YWJsZVNpZGU6IEVGQ29ubmVjdGFibGVTaWRlID0gRUZDb25uZWN0YWJsZVNpZGUuQVVUTztcblxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGZOb2RlSWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZk5vZGUuZklkO1xuICB9XG5cbiAgcHVibGljIGdldCBob3N0RWxlbWVudCgpOiBIVE1MRWxlbWVudCB8IFNWR0VsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmZXJlbmNlLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5fZk1lZGlhdG9yLmV4ZWN1dGUobmV3IEFkZElucHV0VG9TdG9yZVJlcXVlc3QodGhpcykpO1xuICAgIHRoaXMuX2ZOb2RlLmFkZENvbm5lY3Rvcih0aGlzKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbICd1c2VyRkNvbm5lY3RhYmxlU2lkZScgXSkge1xuICAgICAgdGhpcy5fZk5vZGUucmVmcmVzaCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSBzZXRDb25uZWN0ZWQodG9Db25uZWN0b3I6IEZDb25uZWN0b3JCYXNlKTogdm9pZCB7XG4gICAgc3VwZXIuc2V0Q29ubmVjdGVkKHRvQ29ubmVjdG9yKTtcbiAgICB0aGlzLmhvc3RFbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoRl9DU1NfQ0xBU1MuQ09OTkVDVE9SLklOUFVUX0NPTk5FQ1RFRCwgdHJ1ZSk7XG4gICAgdGhpcy5ob3N0RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKEZfQ1NTX0NMQVNTLkNPTk5FQ1RPUi5JTlBVVF9OT1RfQ09OTkVDVEFCTEUsICF0aGlzLmNhbkJlQ29ubmVjdGVkKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZSByZXNldENvbm5lY3RlZCgpOiB2b2lkIHtcbiAgICBzdXBlci5yZXNldENvbm5lY3RlZCgpO1xuICAgIHRoaXMuaG9zdEVsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShGX0NTU19DTEFTUy5DT05ORUNUT1IuSU5QVVRfQ09OTkVDVEVELCBmYWxzZSk7XG4gICAgdGhpcy5ob3N0RWxlbWVudC5jbGFzc0xpc3QudG9nZ2xlKEZfQ1NTX0NMQVNTLkNPTk5FQ1RPUi5JTlBVVF9OT1RfQ09OTkVDVEFCTEUsICF0aGlzLmNhbkJlQ29ubmVjdGVkKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9mTm9kZS5yZW1vdmVDb25uZWN0b3IodGhpcyk7XG4gICAgdGhpcy5fZk1lZGlhdG9yLmV4ZWN1dGUobmV3IFJlbW92ZUlucHV0RnJvbVN0b3JlUmVxdWVzdCh0aGlzKSk7XG4gIH1cbn1cbiJdfQ==