@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.
73 lines • 11.9 kB
JavaScript
import { __decorate } from "tslib";
import { inject, Injectable, Injector } from '@angular/core';
import { FNodeResizePreparationRequest } from './f-node-resize-preparation.request';
import { Point } from '@foblex/2d';
import { FExecutionRegister, FMediator } from '@foblex/mediator';
import { FComponentsStore } from '../../../f-storage';
import { FDraggableDataContext } from '../../f-draggable-data-context';
import { isValidEventTrigger, SelectAndUpdateNodeLayerRequest, } from '../../../domain';
import { EFResizeHandleType } from '../../../f-node';
import { FNodeResizeDragHandler } from '../f-node-resize.drag-handler';
import { getDataAttrValueFromClosestElementWithClass, isClosestElementHasClass } from '@foblex/utils';
import * as i0 from "@angular/core";
let FNodeResizePreparationExecution = class FNodeResizePreparationExecution {
_fMediator = inject(FMediator);
_fComponentsStore = inject(FComponentsStore);
_fDraggableDataContext = inject(FDraggableDataContext);
_injector = inject(Injector);
get _transform() {
return this._fComponentsStore.fCanvas.transform;
}
get _fHost() {
return this._fComponentsStore.fFlow.hostElement;
}
_fNode;
handle(request) {
if (!this._isValid(request) || !this._isValidTrigger(request)) {
return;
}
this._selectAndUpdateNodeLayer();
this._fDraggableDataContext.onPointerDownScale = this._transform.scale;
this._fDraggableDataContext.onPointerDownPosition = Point.fromPoint(request.event.getPosition())
.elementTransform(this._fHost).div(this._transform.scale);
const resizeHandleType = EFResizeHandleType[this._getHandleType(request.event.targetElement)];
this._fDraggableDataContext.draggableItems = [
new FNodeResizeDragHandler(this._injector, this._fNode, resizeHandleType)
];
}
_isValid(request) {
return this._fDraggableDataContext.isEmpty()
&& this._isDragHandleElement(request.event.targetElement)
&& this._isNodeCanBeDragged(this._getNode(request.event.targetElement));
}
_isDragHandleElement(element) {
return isClosestElementHasClass(element, '.f-resize-handle');
}
_isNodeCanBeDragged(fNode) {
return !!fNode && !fNode.fDraggingDisabled;
}
_getNode(element) {
this._fNode = this._fComponentsStore
.fNodes.find(x => x.isContains(element));
return this._fNode;
}
_isValidTrigger(request) {
return isValidEventTrigger(request.event.originalEvent, request.fTrigger);
}
_selectAndUpdateNodeLayer() {
this._fMediator.execute(new SelectAndUpdateNodeLayerRequest(this._fNode));
}
_getHandleType(element) {
return getDataAttrValueFromClosestElementWithClass(element, 'fResizeHandleType', '.f-resize-handle');
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeResizePreparationExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeResizePreparationExecution });
};
FNodeResizePreparationExecution = __decorate([
FExecutionRegister(FNodeResizePreparationRequest)
], FNodeResizePreparationExecution);
export { FNodeResizePreparationExecution };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FNodeResizePreparationExecution, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZi1ub2RlLXJlc2l6ZS1wcmVwYXJhdGlvbi5leGVjdXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mLWZsb3cvc3JjL2YtZHJhZ2dhYmxlL2Ytbm9kZS1yZXNpemUvcmVzaXplLXByZXBhcmF0aW9uL2Ytbm9kZS1yZXNpemUtcHJlcGFyYXRpb24uZXhlY3V0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDcEYsT0FBTyxFQUFtQixLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDcEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBYyxNQUFNLGtCQUFrQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3ZFLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsK0JBQStCLEdBQ2hDLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLGtCQUFrQixFQUFhLE1BQU0saUJBQWlCLENBQUM7QUFDaEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDdkUsT0FBTyxFQUFFLDJDQUEyQyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkvRixJQUFNLCtCQUErQixHQUFyQyxNQUFNLCtCQUErQjtJQUV6QixVQUFVLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9CLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzdDLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFD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QUFBL0IsK0JBQStCO0lBRDNDLGtCQUFrQixDQUFDLDZCQUE2QixDQUFDO0dBQ3JDLCtCQUErQixDQXNFM0M7OzRGQXRFWSwrQkFBK0I7a0JBRjNDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGTm9kZVJlc2l6ZVByZXBhcmF0aW9uUmVxdWVzdCB9IGZyb20gJy4vZi1ub2RlLXJlc2l6ZS1wcmVwYXJhdGlvbi5yZXF1ZXN0JztcbmltcG9ydCB7IElUcmFuc2Zvcm1Nb2RlbCwgUG9pbnQgfSBmcm9tICdAZm9ibGV4LzJkJztcbmltcG9ydCB7IEZFeGVjdXRpb25SZWdpc3RlciwgRk1lZGlhdG9yLCBJRXhlY3V0aW9uIH0gZnJvbSAnQGZvYmxleC9tZWRpYXRvcic7XG5pbXBvcnQgeyBGQ29tcG9uZW50c1N0b3JlIH0gZnJvbSAnLi4vLi4vLi4vZi1zdG9yYWdlJztcbmltcG9ydCB7IEZEcmFnZ2FibGVEYXRhQ29udGV4dCB9IGZyb20gJy4uLy4uL2YtZHJhZ2dhYmxlLWRhdGEtY29udGV4dCc7XG5pbXBvcnQge1xuICBpc1ZhbGlkRXZlbnRUcmlnZ2VyLFxuICBTZWxlY3RBbmRVcGRhdGVOb2RlTGF5ZXJSZXF1ZXN0LFxufSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgRUZSZXNpemVIYW5kbGVUeXBlLCBGTm9kZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9mLW5vZGUnO1xuaW1wb3J0IHsgRk5vZGVSZXNpemVEcmFnSGFuZGxlciB9IGZyb20gJy4uL2Ytbm9kZS1yZXNpemUuZHJhZy1oYW5kbGVyJztcbmltcG9ydCB7IGdldERhdGFBdHRyVmFsdWVGcm9tQ2xvc2VzdEVsZW1lbnRXaXRoQ2xhc3MsIGlzQ2xvc2VzdEVsZW1lbnRIYXNDbGFzcyB9IGZyb20gJ0Bmb2JsZXgvdXRpbHMnO1xuXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKEZOb2RlUmVzaXplUHJlcGFyYXRpb25SZXF1ZXN0KVxuZXhwb3J0IGNsYXNzIEZOb2RlUmVzaXplUHJlcGFyYXRpb25FeGVjdXRpb24gaW1wbGVtZW50cyBJRXhlY3V0aW9uPEZOb2RlUmVzaXplUHJlcGFyYXRpb25SZXF1ZXN0LCB2b2lkPiB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZk1lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZDb21wb25lbnRzU3RvcmUgPSBpbmplY3QoRkNvbXBvbmVudHNTdG9yZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZEcmFnZ2FibGVEYXRhQ29udGV4dCA9IGluamVjdChGRHJhZ2dhYmxlRGF0YUNvbnRleHQpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgcHJpdmF0ZSBnZXQgX3RyYW5zZm9ybSgpOiBJVHJhbnNmb3JtTW9kZWwge1xuICAgIHJldHVybiB0aGlzLl9mQ29tcG9uZW50c1N0b3JlLmZDYW52YXMhLnRyYW5zZm9ybTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9mSG9zdCgpOiBIVE1MRWxlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZkZsb3chLmhvc3RFbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBfZk5vZGU6IEZOb2RlQmFzZSB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IEZOb2RlUmVzaXplUHJlcGFyYXRpb25SZXF1ZXN0KTogdm9pZCB7XG4gICAgaWYoIXRoaXMuX2lzVmFsaWQocmVxdWVzdCkgfHwgIXRoaXMuX2lzVmFsaWRUcmlnZ2VyKHJlcXVlc3QpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc2VsZWN0QW5kVXBkYXRlTm9kZUxheWVyKCk7XG5cbiAgICB0aGlzLl9mRHJhZ2dhYmxlRGF0YUNvbnRleHQub25Qb2ludGVyRG93blNjYWxlID0gdGhpcy5fdHJhbnNmb3JtLnNjYWxlO1xuICAgIHRoaXMuX2ZEcmFnZ2FibGVEYXRhQ29udGV4dC5vblBvaW50ZXJEb3duUG9zaXRpb24gPSBQb2ludC5mcm9tUG9pbnQocmVxdWVzdC5ldmVudC5nZXRQb3NpdGlvbigpKVxuICAgICAgLmVsZW1lbnRUcmFuc2Zvcm0odGhpcy5fZkhvc3QpLmRpdih0aGlzLl90cmFuc2Zvcm0uc2NhbGUpO1xuXG4gICAgY29uc3QgcmVzaXplSGFuZGxlVHlwZSA9IEVGUmVzaXplSGFuZGxlVHlwZVsgdGhpcy5fZ2V0SGFuZGxlVHlwZShyZXF1ZXN0LmV2ZW50LnRhcmdldEVsZW1lbnQpIF07XG4gICAgdGhpcy5fZkRyYWdnYWJsZURhdGFDb250ZXh0LmRyYWdnYWJsZUl0ZW1zID0gW1xuICAgICAgbmV3IEZOb2RlUmVzaXplRHJhZ0hhbmRsZXIoXG4gICAgICAgIHRoaXMuX2luamVjdG9yLFxuICAgICAgICB0aGlzLl9mTm9kZSEsIHJlc2l6ZUhhbmRsZVR5cGVcbiAgICAgIClcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNWYWxpZChyZXF1ZXN0OiBGTm9kZVJlc2l6ZVByZXBhcmF0aW9uUmVxdWVzdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9mRHJhZ2dhYmxlRGF0YUNvbnRleHQuaXNFbXB0eSgpXG4gICAgICAmJiB0aGlzLl9pc0RyYWdIYW5kbGVFbGVtZW50KHJlcXVlc3QuZXZlbnQudGFyZ2V0RWxlbWVudClcbiAgICAgICYmIHRoaXMuX2lzTm9kZUNhbkJlRHJhZ2dlZCh0aGlzLl9nZXROb2RlKHJlcXVlc3QuZXZlbnQudGFyZ2V0RWxlbWVudCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNEcmFnSGFuZGxlRWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc0Nsb3Nlc3RFbGVtZW50SGFzQ2xhc3MoZWxlbWVudCwgJy5mLXJlc2l6ZS1oYW5kbGUnKTtcbiAgfVxuXG4gIHByaXZhdGUgX2lzTm9kZUNhbkJlRHJhZ2dlZChmTm9kZT86IEZOb2RlQmFzZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWZOb2RlICYmICFmTm9kZS5mRHJhZ2dpbmdEaXNhYmxlZDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldE5vZGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBGTm9kZUJhc2UgfCB1bmRlZmluZWQge1xuICAgIHRoaXMuX2ZOb2RlID0gdGhpcy5fZkNvbXBvbmVudHNTdG9yZVxuICAgICAgLmZOb2Rlcy5maW5kKHggPT4geC5pc0NvbnRhaW5zKGVsZW1lbnQpKTtcbiAgICByZXR1cm4gdGhpcy5fZk5vZGU7XG4gIH1cblxuICBwcml2YXRlIF9pc1ZhbGlkVHJpZ2dlcihyZXF1ZXN0OiBGTm9kZVJlc2l6ZVByZXBhcmF0aW9uUmVxdWVzdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkRXZlbnRUcmlnZ2VyKHJlcXVlc3QuZXZlbnQub3JpZ2luYWxFdmVudCwgcmVxdWVzdC5mVHJpZ2dlcik7XG4gIH1cblxuICBwcml2YXRlIF9zZWxlY3RBbmRVcGRhdGVOb2RlTGF5ZXIoKSB7XG4gICAgdGhpcy5fZk1lZGlhdG9yLmV4ZWN1dGUoXG4gICAgICBuZXcgU2VsZWN0QW5kVXBkYXRlTm9kZUxheWVyUmVxdWVzdCh0aGlzLl9mTm9kZSEpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEhhbmRsZVR5cGUoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBrZXlvZiB0eXBlb2YgRUZSZXNpemVIYW5kbGVUeXBlIHtcbiAgICByZXR1cm4gZ2V0RGF0YUF0dHJWYWx1ZUZyb21DbG9zZXN0RWxlbWVudFdpdGhDbGFzcyhlbGVtZW50LCAnZlJlc2l6ZUhhbmRsZVR5cGUnLCAnLmYtcmVzaXplLWhhbmRsZScpO1xuICB9XG59XG4iXX0=