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.

79 lines 11.7 kB
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==