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.

68 lines 12 kB
import { __decorate } from "tslib"; import { inject, Injectable } from '@angular/core'; import { RedrawConnectionsRequest } from './redraw-connections-request'; import { FComponentsStore } from '../../../f-storage'; import { CalculateConnectionLineByBehaviorRequest } from '../calculate-connection-line-by-behavior'; import { FExecutionRegister, FMediator } from '@foblex/mediator'; import { CreateConnectionMarkersRequest } from '../create-connection-markers'; import { GetNormalizedConnectorRectRequest } from "../../get-normalized-connector-rect"; import * as i0 from "@angular/core"; let RedrawConnectionsExecution = class RedrawConnectionsExecution { _fMediator = inject(FMediator); _fComponentsStore = inject(FComponentsStore); handle(request) { this._resetConnectors(); if (this._fComponentsStore.fTempConnection) { this._setMarkers(this._fComponentsStore.fTempConnection); } if (this._fComponentsStore.fSnapConnection) { this._setMarkers(this._fComponentsStore.fSnapConnection); } this._fComponentsStore.fConnections.forEach((x) => { this._setupConnection(this._getOutput(x.fOutputId), this._getInput(x.fInputId), x); }); } _getOutput(id) { const result = this._fComponentsStore.fOutputs.find((x) => x.fId === id); if (!result) { throw new Error(`Output with id ${id} not found`); } return result; } _getInput(id) { const result = this._fComponentsStore.fInputs.find((x) => x.fId === id); if (!result) { throw new Error(`Input with id ${id} not found`); } return result; } _resetConnectors() { this._fComponentsStore.fOutputs.forEach((x) => x.resetConnected()); this._fComponentsStore.fInputs.forEach((x) => x.resetConnected()); } _setupConnection(fOutput, fInput, fConnection) { fOutput.setConnected(fInput); fInput.setConnected(fOutput); const line = this._getLine(fOutput, fInput, fConnection); this._setMarkers(fConnection); fConnection.setLine(line, fOutput.fConnectableSide, fInput.fConnectableSide); fConnection.initialize(); fConnection.isSelected() ? fConnection.markAsSelected() : null; } _getLine(output, input, connection) { return this._fMediator.execute(new CalculateConnectionLineByBehaviorRequest(this._fMediator.execute(new GetNormalizedConnectorRectRequest(output.hostElement)), this._fMediator.execute(new GetNormalizedConnectorRectRequest(input.hostElement)), connection.fBehavior, output.fConnectableSide, input.fConnectableSide)); } _setMarkers(connection) { this._fMediator.execute(new CreateConnectionMarkersRequest(connection)); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedrawConnectionsExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedrawConnectionsExecution }); }; RedrawConnectionsExecution = __decorate([ FExecutionRegister(RedrawConnectionsRequest) ], RedrawConnectionsExecution); export { RedrawConnectionsExecution }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedrawConnectionsExecution, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkcmF3LWNvbm5lY3Rpb25zLmV4ZWN1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZG9tYWluL2YtY29ubmVjdGlvbi9yZWRyYXctY29ubmVjdGlvbnMvcmVkcmF3LWNvbm5lY3Rpb25zLmV4ZWN1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDdEUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFDLHdDQUF3QyxFQUFDLE1BQU0sMENBQTBDLENBQUM7QUFHbEcsT0FBTyxFQUFDLGtCQUFrQixFQUFFLFNBQVMsRUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQzNFLE9BQU8sRUFBQyw4QkFBOEIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxpQ0FBaUMsRUFBQyxNQUFNLHFDQUFxQyxDQUFDOztBQUkvRSxJQUFNLDBCQUEwQixHQUFoQyxNQUFNLDBCQUEwQjtJQUVwQixVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRXZELE1BQU0sQ0FBQyxPQUFpQztRQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUV4QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMzRCxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0Ms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TUFBTSxDQUFDLGdCQUFnQixFQUN2QixLQUFLLENBQUMsZ0JBQWdCLENBQ3ZCLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxXQUFXLENBQUMsVUFBMkI7UUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQ3JCLElBQUksOEJBQThCLENBQUMsVUFBVSxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO3dHQXZFVSwwQkFBMEI7NEdBQTFCLDBCQUEwQjs7QUFBMUIsMEJBQTBCO0lBRHRDLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDO0dBQ2hDLDBCQUEwQixDQXdFdEM7OzRGQXhFWSwwQkFBMEI7a0JBRnRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lMaW5lLCBJUm91bmRlZFJlY3R9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHtpbmplY3QsIEluamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSZWRyYXdDb25uZWN0aW9uc1JlcXVlc3R9IGZyb20gJy4vcmVkcmF3LWNvbm5lY3Rpb25zLXJlcXVlc3QnO1xuaW1wb3J0IHtGQ29tcG9uZW50c1N0b3JlfSBmcm9tICcuLi8uLi8uLi9mLXN0b3JhZ2UnO1xuaW1wb3J0IHtDYWxjdWxhdGVDb25uZWN0aW9uTGluZUJ5QmVoYXZpb3JSZXF1ZXN0fSBmcm9tICcuLi9jYWxjdWxhdGUtY29ubmVjdGlvbi1saW5lLWJ5LWJlaGF2aW9yJztcbmltcG9ydCB7RkNvbm5lY3RvckJhc2V9IGZyb20gJy4uLy4uLy4uL2YtY29ubmVjdG9ycyc7XG5pbXBvcnQge0ZDb25uZWN0aW9uQmFzZX0gZnJvbSAnLi4vLi4vLi4vZi1jb25uZWN0aW9uJztcbmltcG9ydCB7RkV4ZWN1dGlvblJlZ2lzdGVyLCBGTWVkaWF0b3IsIElFeGVjdXRpb259IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHtDcmVhdGVDb25uZWN0aW9uTWFya2Vyc1JlcXVlc3R9IGZyb20gJy4uL2NyZWF0ZS1jb25uZWN0aW9uLW1hcmtlcnMnO1xuaW1wb3J0IHtHZXROb3JtYWxpemVkQ29ubmVjdG9yUmVjdFJlcXVlc3R9IGZyb20gXCIuLi8uLi9nZXQtbm9ybWFsaXplZC1jb25uZWN0b3ItcmVjdFwiO1xuXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKFJlZHJhd0Nvbm5lY3Rpb25zUmVxdWVzdClcbmV4cG9ydCBjbGFzcyBSZWRyYXdDb25uZWN0aW9uc0V4ZWN1dGlvbiBpbXBsZW1lbnRzIElFeGVjdXRpb248UmVkcmF3Q29ubmVjdGlvbnNSZXF1ZXN0LCB2b2lkPiB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZk1lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZDb21wb25lbnRzU3RvcmUgPSBpbmplY3QoRkNvbXBvbmVudHNTdG9yZSk7XG5cbiAgcHVibGljIGhhbmRsZShyZXF1ZXN0OiBSZWRyYXdDb25uZWN0aW9uc1JlcXVlc3QpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNldENvbm5lY3RvcnMoKTtcblxuICAgIGlmICh0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZUZW1wQ29ubmVjdGlvbikge1xuICAgICAgdGhpcy5fc2V0TWFya2Vycyh0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZUZW1wQ29ubmVjdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZlNuYXBDb25uZWN0aW9uKSB7XG4gICAgICB0aGlzLl9zZXRNYXJrZXJzKHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZlNuYXBDb25uZWN0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZDb25uZWN0aW9ucy5mb3JFYWNoKCh4KSA9PiB7XG4gICAgICB0aGlzLl9zZXR1cENvbm5lY3Rpb24odGhpcy5fZ2V0T3V0cHV0KHguZk91dHB1dElkKSwgdGhpcy5fZ2V0SW5wdXQoeC5mSW5wdXRJZCksIHgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0T3V0cHV0KGlkOiBzdHJpbmcpOiBGQ29ubmVjdG9yQmFzZSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZkNvbXBvbmVudHNTdG9yZS5mT3V0cHV0cy5maW5kKCh4KSA9PiB4LmZJZCA9PT0gaWQpITtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBPdXRwdXQgd2l0aCBpZCAke2lkfSBub3QgZm91bmRgKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldElucHV0KGlkOiBzdHJpbmcpOiBGQ29ubmVjdG9yQmFzZSB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZkNvbXBvbmVudHNTdG9yZS5mSW5wdXRzLmZpbmQoKHgpID0+IHguZklkID09PSBpZCkhO1xuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYElucHV0IHdpdGggaWQgJHtpZH0gbm90IGZvdW5kYCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldENvbm5lY3RvcnMoKTogdm9pZCB7XG4gICAgdGhpcy5fZkNvbXBvbmVudHNTdG9yZS5mT3V0cHV0cy5mb3JFYWNoKCh4KSA9PiB4LnJlc2V0Q29ubmVjdGVkKCkpO1xuICAgIHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZklucHV0cy5mb3JFYWNoKCh4KSA9PiB4LnJlc2V0Q29ubmVjdGVkKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0dXBDb25uZWN0aW9uKGZPdXRwdXQ6IEZDb25uZWN0b3JCYXNlLCBmSW5wdXQ6IEZDb25uZWN0b3JCYXNlLCBmQ29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlKTogdm9pZCB7XG4gICAgZk91dHB1dC5zZXRDb25uZWN0ZWQoZklucHV0KTtcbiAgICBmSW5wdXQuc2V0Q29ubmVjdGVkKGZPdXRwdXQpO1xuXG4gICAgY29uc3QgbGluZSA9IHRoaXMuX2dldExpbmUoZk91dHB1dCwgZklucHV0LCBmQ29ubmVjdGlvbik7XG5cbiAgICB0aGlzLl9zZXRNYXJrZXJzKGZDb25uZWN0aW9uKTtcblxuICAgIGZDb25uZWN0aW9uLnNldExpbmUobGluZSwgZk91dHB1dC5mQ29ubmVjdGFibGVTaWRlLCBmSW5wdXQuZkNvbm5lY3RhYmxlU2lkZSk7XG5cbiAgICBmQ29ubmVjdGlvbi5pbml0aWFsaXplKCk7XG4gICAgZkNvbm5lY3Rpb24uaXNTZWxlY3RlZCgpID8gZkNvbm5lY3Rpb24ubWFya0FzU2VsZWN0ZWQoKSA6IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9nZXRMaW5lKG91dHB1dDogRkNvbm5lY3RvckJhc2UsIGlucHV0OiBGQ29ubmVjdG9yQmFzZSwgY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlKTogSUxpbmUge1xuICAgIHJldHVybiB0aGlzLl9mTWVkaWF0b3IuZXhlY3V0ZShuZXcgQ2FsY3VsYXRlQ29ubmVjdGlvbkxpbmVCeUJlaGF2aW9yUmVxdWVzdChcbiAgICAgICAgdGhpcy5fZk1lZGlhdG9yLmV4ZWN1dGU8SVJvdW5kZWRSZWN0PihuZXcgR2V0Tm9ybWFsaXplZENvbm5lY3RvclJlY3RSZXF1ZXN0KG91dHB1dC5ob3N0RWxlbWVudCkpLFxuICAgICAgICB0aGlzLl9mTWVkaWF0b3IuZXhlY3V0ZTxJUm91bmRlZFJlY3Q+KG5ldyBHZXROb3JtYWxpemVkQ29ubmVjdG9yUmVjdFJlcXVlc3QoaW5wdXQuaG9zdEVsZW1lbnQpKSxcbiAgICAgICAgY29ubmVjdGlvbi5mQmVoYXZpb3IsXG4gICAgICAgIG91dHB1dC5mQ29ubmVjdGFibGVTaWRlLFxuICAgICAgICBpbnB1dC5mQ29ubmVjdGFibGVTaWRlXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldE1hcmtlcnMoY29ubmVjdGlvbjogRkNvbm5lY3Rpb25CYXNlKTogdm9pZCB7XG4gICAgdGhpcy5fZk1lZGlhdG9yLmV4ZWN1dGUoXG4gICAgICBuZXcgQ3JlYXRlQ29ubmVjdGlvbk1hcmtlcnNSZXF1ZXN0KGNvbm5lY3Rpb24pXG4gICAgKTtcbiAgfVxufVxuXG4iXX0=