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 13.3 kB
import { __decorate } from "tslib"; import { inject, Injectable } from '@angular/core'; import { FExternalItemFinalizeRequest } from './f-external-item-finalize.request'; import { FExecutionRegister, FMediator } from '@foblex/mediator'; import { FComponentsStore } from '../../../f-storage'; import { FExternalItemDragHandler } from '../f-external-item.drag-handler'; import { FCreateNodeEvent } from '../f-create-node.event'; import { GetNormalizedElementRectRequest } from '../../../domain'; import { FDraggableDataContext, FDragHandlerResult, FNodeDropToGroupDragHandler } from '../../../f-draggable'; import { BrowserService } from '@foblex/platform'; import * as i0 from "@angular/core"; let FExternalItemFinalizeExecution = class FExternalItemFinalizeExecution { _fResult = inject(FDragHandlerResult); _fMediator = inject(FMediator); _fComponentsStore = inject(FComponentsStore); _fDraggableDataContext = inject(FDraggableDataContext); _fBrowser = inject(BrowserService); get _fHost() { return this._fComponentsStore.fFlow.hostElement; } get _fCreateNode() { return this._fComponentsStore.fDraggable.fCreateNode; } get _fDragHandler() { return this._fDraggableDataContext.draggableItems[0]; } handle(request) { if (!this._isValid()) { return; } const destinationNodeOrGroupId = this._getDestinationNodeOrGroupId(); this._emitEvent(this._getElementsFromPoint(request.event.getPosition()), destinationNodeOrGroupId, request.event.getPosition()); this._fDragHandler.onPointerUp(); this._fDraggableDataContext.draggableItems = []; } _isValid() { return this._fDraggableDataContext.draggableItems.some((x) => x instanceof FExternalItemDragHandler); } _getDestinationNodeOrGroupId() { const dropToGroupHandler = this._getDropToGroupHandler(); let result = dropToGroupHandler.fNodeWithRect?.node.fId; dropToGroupHandler.onPointerUp?.(); return result; } _getDropToGroupHandler() { const result = this._fDraggableDataContext.draggableItems .find((x) => x instanceof FNodeDropToGroupDragHandler); if (!result) { throw new Error('NodeDragToParentDragHandler not found'); } return result; } _getElementsFromPoint(position) { return this._fBrowser.document.elementsFromPoint(position.x, position.y) .filter(x => !x.closest('.f-external-item') && !x.closest('.f-external-item-preview')); } _emitEvent(elements, destinationNodeOrGroupId, eventPosition) { if (this.isPointerInCanvasRect(elements)) { this._fCreateNode.emit(new FCreateNodeEvent(this._getPreviewRect(), this._fResult.getData().fExternalItem.fData, destinationNodeOrGroupId, destinationNodeOrGroupId ? eventPosition : undefined)); } } isPointerInCanvasRect(elements) { return elements.length ? this._fHost.contains(elements[0]) : false; } _getPreviewRect() { return this._fMediator.execute(new GetNormalizedElementRectRequest(this._fResult.getData().preview)); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FExternalItemFinalizeExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FExternalItemFinalizeExecution }); }; FExternalItemFinalizeExecution = __decorate([ FExecutionRegister(FExternalItemFinalizeRequest) ], FExternalItemFinalizeExecution); export { FExternalItemFinalizeExecution }; i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FExternalItemFinalizeExecution, decorators: [{ type: Injectable }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1leHRlcm5hbC1pdGVtLWZpbmFsaXplLmV4ZWN1dGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2YtZmxvdy9zcmMvZi1leHRlcm5hbC1pdGVtL2RvbWFpbi9maW5hbGl6ZS9mLWV4dGVybmFsLWl0ZW0tZmluYWxpemUuZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWUsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMvRCxPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUVoRixPQUFPLEVBQUMsa0JBQWtCLEVBQUUsU0FBUyxFQUFhLE1BQU0sa0JBQWtCLENBQUM7QUFDM0UsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDekUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUNMLHFCQUFxQixFQUNyQixrQkFBa0IsRUFDbEIsMkJBQTJCLEVBQzVCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLGtCQUFrQixDQUFDOztBQUt6QyxJQUFNLDhCQUE4QixHQUFwQyxNQUFNLDhCQUE4QjtJQUV4QixRQUFRLEdBQWlELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBRXBGLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0Msc0JBQXNCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDdkQsU0FBUyxHQUFHLE1BQU0s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Q0FBQyxRQUF1QjtRQUNuRCxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDckUsQ0FBQztJQUVPLGVBQWU7UUFDckIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBUSxJQUFJLCtCQUErQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM5RyxDQUFDO3dHQWxGVSw4QkFBOEI7NEdBQTlCLDhCQUE4Qjs7QUFBOUIsOEJBQThCO0lBRDFDLGtCQUFrQixDQUFDLDRCQUE0QixDQUFDO0dBQ3BDLDhCQUE4QixDQW1GMUM7OzRGQW5GWSw4QkFBOEI7a0JBRjFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlciwgaW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RkV4dGVybmFsSXRlbUZpbmFsaXplUmVxdWVzdH0gZnJvbSAnLi9mLWV4dGVybmFsLWl0ZW0tZmluYWxpemUucmVxdWVzdCc7XG5pbXBvcnQge0lQb2ludCwgSVJlY3R9IGZyb20gJ0Bmb2JsZXgvMmQnO1xuaW1wb3J0IHtGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbn0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQge0ZDb21wb25lbnRzU3RvcmV9IGZyb20gJy4uLy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQge0ZFeHRlcm5hbEl0ZW1EcmFnSGFuZGxlcn0gZnJvbSAnLi4vZi1leHRlcm5hbC1pdGVtLmRyYWctaGFuZGxlcic7XG5pbXBvcnQge0ZDcmVhdGVOb2RlRXZlbnR9IGZyb20gJy4uL2YtY3JlYXRlLW5vZGUuZXZlbnQnO1xuaW1wb3J0IHtHZXROb3JtYWxpemVkRWxlbWVudFJlY3RSZXF1ZXN0fSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHtcbiAgRkRyYWdnYWJsZURhdGFDb250ZXh0LFxuICBGRHJhZ0hhbmRsZXJSZXN1bHQsXG4gIEZOb2RlRHJvcFRvR3JvdXBEcmFnSGFuZGxlclxufSBmcm9tICcuLi8uLi8uLi9mLWRyYWdnYWJsZSc7XG5pbXBvcnQge0Jyb3dzZXJTZXJ2aWNlfSBmcm9tICdAZm9ibGV4L3BsYXRmb3JtJztcbmltcG9ydCB7SUZFeHRlcm5hbEl0ZW1EcmFnUmVzdWx0fSBmcm9tICcuLi9pLWYtZXh0ZXJuYWwtaXRlbS1kcmFnLXJlc3VsdCc7XG5cbkBJbmplY3RhYmxlKClcbkBGRXhlY3V0aW9uUmVnaXN0ZXIoRkV4dGVybmFsSXRlbUZpbmFsaXplUmVxdWVzdClcbmV4cG9ydCBjbGFzcyBGRXh0ZXJuYWxJdGVtRmluYWxpemVFeGVjdXRpb24gaW1wbGVtZW50cyBJRXhlY3V0aW9uPEZFeHRlcm5hbEl0ZW1GaW5hbGl6ZVJlcXVlc3QsIHZvaWQ+IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9mUmVzdWx0OiBGRHJhZ0hhbmRsZXJSZXN1bHQ8SUZFeHRlcm5hbEl0ZW1EcmFnUmVzdWx0PiA9IGluamVjdChGRHJhZ0hhbmRsZXJSZXN1bHQpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZNZWRpYXRvciA9IGluamVjdChGTWVkaWF0b3IpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mQ29tcG9uZW50c1N0b3JlID0gaW5qZWN0KEZDb21wb25lbnRzU3RvcmUpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9mRHJhZ2dhYmxlRGF0YUNvbnRleHQgPSBpbmplY3QoRkRyYWdnYWJsZURhdGFDb250ZXh0KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZkJyb3dzZXIgPSBpbmplY3QoQnJvd3NlclNlcnZpY2UpO1xuXG4gIHByaXZhdGUgZ2V0IF9mSG9zdCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZkZsb3chLmhvc3RFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2ZDcmVhdGVOb2RlKCk6IEV2ZW50RW1pdHRlcjxGQ3JlYXRlTm9kZUV2ZW50PiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZkRyYWdnYWJsZSEuZkNyZWF0ZU5vZGU7XG4gIH1cblxuICBwcml2YXRlIGdldCBfZkRyYWdIYW5kbGVyKCk6IEZFeHRlcm5hbEl0ZW1EcmFnSGFuZGxlciB7XG4gICAgcmV0dXJuIHRoaXMuX2ZEcmFnZ2FibGVEYXRhQ29udGV4dC5kcmFnZ2FibGVJdGVtc1swXSBhcyBGRXh0ZXJuYWxJdGVtRHJhZ0hhbmRsZXI7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IEZFeHRlcm5hbEl0ZW1GaW5hbGl6ZVJlcXVlc3QpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX2lzVmFsaWQoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgZGVzdGluYXRpb25Ob2RlT3JHcm91cElkID0gdGhpcy5fZ2V0RGVzdGluYXRpb25Ob2RlT3JHcm91cElkKCk7XG5cbiAgICB0aGlzLl9lbWl0RXZlbnQoXG4gICAgICB0aGlzLl9nZXRFbGVtZW50c0Zyb21Qb2ludChyZXF1ZXN0LmV2ZW50LmdldFBvc2l0aW9uKCkpLFxuICAgICAgZGVzdGluYXRpb25Ob2RlT3JHcm91cElkLCByZXF1ZXN0LmV2ZW50LmdldFBvc2l0aW9uKClcbiAgICApO1xuXG4gICAgdGhpcy5fZkRyYWdIYW5kbGVyLm9uUG9pbnRlclVwKCk7XG4gICAgdGhpcy5fZkRyYWdnYWJsZURhdGFDb250ZXh0LmRyYWdnYWJsZUl0ZW1zID0gW107XG4gIH1cblxuICBwcml2YXRlIF9pc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mRHJhZ2dhYmxlRGF0YUNvbnRleHQuZHJhZ2dhYmxlSXRlbXMuc29tZShcbiAgICAgICh4KSA9PiB4IGluc3RhbmNlb2YgRkV4dGVybmFsSXRlbURyYWdIYW5kbGVyXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldERlc3RpbmF0aW9uTm9kZU9yR3JvdXBJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGRyb3BUb0dyb3VwSGFuZGxlciA9IHRoaXMuX2dldERyb3BUb0dyb3VwSGFuZGxlcigpO1xuICAgIGxldCByZXN1bHQgPSBkcm9wVG9Hcm91cEhhbmRsZXIuZk5vZGVXaXRoUmVjdD8ubm9kZS5mSWQ7XG4gICAgZHJvcFRvR3JvdXBIYW5kbGVyLm9uUG9pbnRlclVwPy4oKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0RHJvcFRvR3JvdXBIYW5kbGVyKCk6IEZOb2RlRHJvcFRvR3JvdXBEcmFnSGFuZGxlciB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5fZkRyYWdnYWJsZURhdGFDb250ZXh0LmRyYWdnYWJsZUl0ZW1zXG4gICAgICAuZmluZCgoeCkgPT4geCBpbnN0YW5jZW9mIEZOb2RlRHJvcFRvR3JvdXBEcmFnSGFuZGxlcilcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb2RlRHJhZ1RvUGFyZW50RHJhZ0hhbmRsZXIgbm90IGZvdW5kJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIF9nZXRFbGVtZW50c0Zyb21Qb2ludChwb3NpdGlvbjogSVBvaW50KTogSFRNTEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZCcm93c2VyLmRvY3VtZW50LmVsZW1lbnRzRnJvbVBvaW50KHBvc2l0aW9uLngsIHBvc2l0aW9uLnkpXG4gICAgICAuZmlsdGVyKHggPT4gIXguY2xvc2VzdCgnLmYtZXh0ZXJuYWwtaXRlbScpXG4gICAgICAgICYmICF4LmNsb3Nlc3QoJy5mLWV4dGVybmFsLWl0ZW0tcHJldmlldycpKSBhcyBIVE1MRWxlbWVudFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdEV2ZW50KGVsZW1lbnRzOiBIVE1MRWxlbWVudFtdLCBkZXN0aW5hdGlvbk5vZGVPckdyb3VwSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCwgZXZlbnRQb3NpdGlvbjogSVBvaW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNQb2ludGVySW5DYW52YXNSZWN0KGVsZW1lbnRzKSkge1xuICAgICAgdGhpcy5fZkNyZWF0ZU5vZGUuZW1pdChcbiAgICAgICAgbmV3IEZDcmVhdGVOb2RlRXZlbnQoXG4gICAgICAgICAgdGhpcy5fZ2V0UHJldmlld1JlY3QoKSwgdGhpcy5fZlJlc3VsdC5nZXREYXRhKCkuZkV4dGVybmFsSXRlbS5mRGF0YSxcbiAgICAgICAgICBkZXN0aW5hdGlvbk5vZGVPckdyb3VwSWQsIGRlc3RpbmF0aW9uTm9kZU9yR3JvdXBJZCA/IGV2ZW50UG9zaXRpb24gOiB1bmRlZmluZWRcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzUG9pbnRlckluQ2FudmFzUmVjdChlbGVtZW50czogSFRNTEVsZW1lbnRbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBlbGVtZW50cy5sZW5ndGggPyB0aGlzLl9mSG9zdC5jb250YWlucyhlbGVtZW50c1swXSkgOiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldFByZXZpZXdSZWN0KCk6IElSZWN0IHtcbiAgICByZXR1cm4gdGhpcy5fZk1lZGlhdG9yLmV4ZWN1dGU8SVJlY3Q+KG5ldyBHZXROb3JtYWxpemVkRWxlbWVudFJlY3RSZXF1ZXN0KHRoaXMuX2ZSZXN1bHQuZ2V0RGF0YSgpLnByZXZpZXcpKTtcbiAgfVxufVxuIl19