@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.
55 lines • 9.48 kB
JavaScript
import { __decorate } from "tslib";
import { SortItemsByParentRequest } from './sort-items-by-parent.request';
import { inject, Injectable } from '@angular/core';
import { FExecutionRegister, FMediator } from '@foblex/mediator';
import { FComponentsStore } from '../../../f-storage';
import { GetDeepChildrenNodesAndGroupsRequest } from '../../get-deep-children-nodes-and-groups';
import { BrowserService } from '@foblex/platform';
import * as i0 from "@angular/core";
let SortItemsByParentExecution = class SortItemsByParentExecution {
_fMediator = inject(FMediator);
_fComponentsStore = inject(FComponentsStore);
_fBrowser = inject(BrowserService);
_fItemsContainer;
get _fItemElements() {
return Array.from(this._fItemsContainer.children);
}
handle(request) {
this._fItemsContainer = request.fItemsContainer;
this._getItemsOfContainer().forEach((fItem) => {
this._moveChildrenItems(this._getSortedChildrenItems(fItem), fItem);
});
}
_getItemsOfContainer() {
return this._fComponentsStore.fNodes
.filter((x) => this._fItemsContainer.contains(x.hostElement));
}
_getSortedChildrenItems(fItem) {
const indexInContainer = this._fItemElements.indexOf(fItem.hostElement);
return this._getChildrenItems(fItem.fId)
.filter((child) => this._fItemElements.indexOf(child) < indexInContainer)
.sort((a, b) => this._fItemElements.indexOf(a) - this._fItemElements.indexOf(b));
}
_getChildrenItems(fId) {
return this._fMediator.execute(new GetDeepChildrenNodesAndGroupsRequest(fId))
.filter((x) => this._fItemsContainer.contains(x.hostElement)).map((x) => x.hostElement);
}
_moveChildrenItems(sortedChildrenItems, parent) {
let nextSibling = parent.hostElement.nextElementSibling;
const fragment = this._fBrowser.document.createDocumentFragment();
sortedChildrenItems.forEach((child) => {
fragment.appendChild(child); // Append automatically removes the element from its current position
});
this._fItemsContainer.insertBefore(fragment, nextSibling);
}
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SortItemsByParentExecution, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SortItemsByParentExecution });
};
SortItemsByParentExecution = __decorate([
FExecutionRegister(SortItemsByParentRequest)
], SortItemsByParentExecution);
export { SortItemsByParentExecution };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SortItemsByParentExecution, decorators: [{
type: Injectable
}] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC1pdGVtcy1ieS1wYXJlbnQuZXhlY3V0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZi1mbG93L3NyYy9kb21haW4vc29ydC1pdGVtLWxheWVycy9zb3J0LWl0ZW1zLWJ5LXBhcmVudC9zb3J0LWl0ZW1zLWJ5LXBhcmVudC5leGVjdXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxTQUFTLEVBQWMsTUFBTSxrQkFBa0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNoRyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBSTNDLElBQU0sMEJBQTBCLEdBQWhDLE1BQU0sMEJBQTBCO0lBRXBCLFVBQVUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDL0IsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDN0MsU0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUU1QyxnQkFBZ0IsQ0FBZTtJQUV2QyxJQUFZLGNBQWM7UUFDeEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQWtCLENBQUM7SUFDckUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFpQztRQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQztRQUNoRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFnQixFQUFFLEVBQUU7WUFDdkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN0RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTTthQUNqQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLHVCQUF1QixDQUM3QixLQUFnQjtRQUVoQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RSxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ3JDLE1BQU0sQ0FBQyxDQUFDLEtBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLGdCQUFnQixDQUFDO2FBQ3JGLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEdBQVc7UUFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBYyxJQUFJLG9DQUFvQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ3ZGLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRU8sa0JBQWtCLENBQ3hCLG1CQUFrQyxFQUNsQyxNQUFpQjtRQUVqQixJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDO1FBRXhELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFFbEUsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBa0IsRUFBRSxFQUFFO1lBQ2pELFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxxRUFBcUU7UUFDcEcsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUM1RCxDQUFDO3dHQWxEVSwwQkFBMEI7NEdBQTFCLDBCQUEwQjs7QUFBMUIsMEJBQTBCO0lBRHRDLGtCQUFrQixDQUFDLHdCQUF3QixDQUFDO0dBQ2hDLDBCQUEwQixDQW1EdEM7OzRGQW5EWSwwQkFBMEI7a0JBRnRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTb3J0SXRlbXNCeVBhcmVudFJlcXVlc3QgfSBmcm9tICcuL3NvcnQtaXRlbXMtYnktcGFyZW50LnJlcXVlc3QnO1xuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGRXhlY3V0aW9uUmVnaXN0ZXIsIEZNZWRpYXRvciwgSUV4ZWN1dGlvbiB9IGZyb20gJ0Bmb2JsZXgvbWVkaWF0b3InO1xuaW1wb3J0IHsgRkNvbXBvbmVudHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL2Ytc3RvcmFnZSc7XG5pbXBvcnQgeyBGTm9kZUJhc2UgfSBmcm9tICcuLi8uLi8uLi9mLW5vZGUnO1xuaW1wb3J0IHsgR2V0RGVlcENoaWxkcmVuTm9kZXNBbmRHcm91cHNSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vZ2V0LWRlZXAtY2hpbGRyZW4tbm9kZXMtYW5kLWdyb3Vwcyc7XG5pbXBvcnQgeyBCcm93c2VyU2VydmljZSB9IGZyb20gJ0Bmb2JsZXgvcGxhdGZvcm0nO1xuXG5ASW5qZWN0YWJsZSgpXG5ARkV4ZWN1dGlvblJlZ2lzdGVyKFNvcnRJdGVtc0J5UGFyZW50UmVxdWVzdClcbmV4cG9ydCBjbGFzcyBTb3J0SXRlbXNCeVBhcmVudEV4ZWN1dGlvbiBpbXBsZW1lbnRzIElFeGVjdXRpb248U29ydEl0ZW1zQnlQYXJlbnRSZXF1ZXN0LCB2b2lkPiB7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZk1lZGlhdG9yID0gaW5qZWN0KEZNZWRpYXRvcik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZDb21wb25lbnRzU3RvcmUgPSBpbmplY3QoRkNvbXBvbmVudHNTdG9yZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZCcm93c2VyID0gaW5qZWN0KEJyb3dzZXJTZXJ2aWNlKTtcblxuICBwcml2YXRlIF9mSXRlbXNDb250YWluZXIhOiBIVE1MRWxlbWVudDtcblxuICBwcml2YXRlIGdldCBfZkl0ZW1FbGVtZW50cygpOiBIVE1MRWxlbWVudFtdIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9mSXRlbXNDb250YWluZXIuY2hpbGRyZW4pIGFzIEhUTUxFbGVtZW50W107XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlKHJlcXVlc3Q6IFNvcnRJdGVtc0J5UGFyZW50UmVxdWVzdCk6IHZvaWQge1xuICAgIHRoaXMuX2ZJdGVtc0NvbnRhaW5lciA9IHJlcXVlc3QuZkl0ZW1zQ29udGFpbmVyO1xuICAgIHRoaXMuX2dldEl0ZW1zT2ZDb250YWluZXIoKS5mb3JFYWNoKChmSXRlbTogRk5vZGVCYXNlKSA9PiB7XG4gICAgICB0aGlzLl9tb3ZlQ2hpbGRyZW5JdGVtcyh0aGlzLl9nZXRTb3J0ZWRDaGlsZHJlbkl0ZW1zKGZJdGVtKSwgZkl0ZW0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SXRlbXNPZkNvbnRhaW5lcigpOiBGTm9kZUJhc2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZDb21wb25lbnRzU3RvcmUuZk5vZGVzXG4gICAgICAuZmlsdGVyKCh4KSA9PiB0aGlzLl9mSXRlbXNDb250YWluZXIuY29udGFpbnMoeC5ob3N0RWxlbWVudCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0U29ydGVkQ2hpbGRyZW5JdGVtcyhcbiAgICBmSXRlbTogRk5vZGVCYXNlLFxuICApOiBIVE1MRWxlbWVudFtdIHtcbiAgICBjb25zdCBpbmRleEluQ29udGFpbmVyID0gdGhpcy5fZkl0ZW1FbGVtZW50cy5pbmRleE9mKGZJdGVtLmhvc3RFbGVtZW50KTtcbiAgICByZXR1cm4gdGhpcy5fZ2V0Q2hpbGRyZW5JdGVtcyhmSXRlbS5mSWQpXG4gICAgICAuZmlsdGVyKChjaGlsZDogSFRNTEVsZW1lbnQpID0+IHRoaXMuX2ZJdGVtRWxlbWVudHMuaW5kZXhPZihjaGlsZCkgPCBpbmRleEluQ29udGFpbmVyKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IHRoaXMuX2ZJdGVtRWxlbWVudHMuaW5kZXhPZihhKSAtIHRoaXMuX2ZJdGVtRWxlbWVudHMuaW5kZXhPZihiKSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDaGlsZHJlbkl0ZW1zKGZJZDogc3RyaW5nKTogSFRNTEVsZW1lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ZNZWRpYXRvci5leGVjdXRlPEZOb2RlQmFzZVtdPihuZXcgR2V0RGVlcENoaWxkcmVuTm9kZXNBbmRHcm91cHNSZXF1ZXN0KGZJZCkpXG4gICAgICAuZmlsdGVyKCh4KSA9PiB0aGlzLl9mSXRlbXNDb250YWluZXIuY29udGFpbnMoeC5ob3N0RWxlbWVudCkpLm1hcCgoeCkgPT4geC5ob3N0RWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIF9tb3ZlQ2hpbGRyZW5JdGVtcyhcbiAgICBzb3J0ZWRDaGlsZHJlbkl0ZW1zOiBIVE1MRWxlbWVudFtdLFxuICAgIHBhcmVudDogRk5vZGVCYXNlLFxuICApOiB2b2lkIHtcbiAgICBsZXQgbmV4dFNpYmxpbmcgPSBwYXJlbnQuaG9zdEVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nO1xuXG4gICAgY29uc3QgZnJhZ21lbnQgPSB0aGlzLl9mQnJvd3Nlci5kb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG5cbiAgICBzb3J0ZWRDaGlsZHJlbkl0ZW1zLmZvckVhY2goKGNoaWxkOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoY2hpbGQpOyAvLyBBcHBlbmQgYXV0b21hdGljYWxseSByZW1vdmVzIHRoZSBlbGVtZW50IGZyb20gaXRzIGN1cnJlbnQgcG9zaXRpb25cbiAgICB9KTtcbiAgICB0aGlzLl9mSXRlbXNDb250YWluZXIuaW5zZXJ0QmVmb3JlKGZyYWdtZW50LCBuZXh0U2libGluZyk7XG4gIH1cbn1cbiJdfQ==