@recursyve/nice-ui-kit.v2 14.0.0-beta.108 → 14.0.0-beta.109

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,82 @@
1
+ import { CdkDropList, moveItemInArray } from "@angular/cdk/drag-drop";
2
+ import { Directive, EventEmitter, Input, Optional, Output } from "@angular/core";
3
+ import { FormArrayName } from "@angular/forms";
4
+ import { LexoRankUtils } from "../../utils/lexorank.utils";
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "@angular/cdk/drag-drop";
8
+ export class NiceDraggableListDirective {
9
+ constructor(formArrayName, cdkDropList) {
10
+ this.formArrayName = formArrayName;
11
+ this.cdkDropList = cdkDropList;
12
+ this.rankProperty = "rank";
13
+ this.itemsUpdated = new EventEmitter();
14
+ this.itemRankUpdated = new EventEmitter();
15
+ this.sortedItems = [];
16
+ }
17
+ ngOnInit() {
18
+ if (this.formArrayName) {
19
+ this.formArray = this.formArrayName.control;
20
+ this.sortItems(this.formArray.getRawValue());
21
+ }
22
+ this.cdkDropList.dropped.subscribe((event) => this.drop(event));
23
+ }
24
+ ngOnChanges(changes) {
25
+ if ("items" in changes && this.items) {
26
+ this.sortItems(this.items);
27
+ }
28
+ }
29
+ drop(event) {
30
+ if (event.previousContainer === event.container) {
31
+ if (event.previousIndex === event.currentIndex) {
32
+ return;
33
+ }
34
+ event.item.data[this.rankProperty] = this.getNextRank(event);
35
+ this.sortItems(this.sortedItems);
36
+ this.itemsUpdated.next(this.sortedItems);
37
+ this.itemRankUpdated.next(event.item.data);
38
+ if (this.formArray) {
39
+ this.formArray.get([event.previousIndex, this.rankProperty])?.patchValue(event.item.data[this.rankProperty]);
40
+ moveItemInArray(this.formArray.controls, event.previousIndex, event.currentIndex);
41
+ }
42
+ }
43
+ else {
44
+ // TODO: Handle container change
45
+ }
46
+ }
47
+ sortItems(items) {
48
+ if (items.length && items.some((item) => !item[this.rankProperty])) {
49
+ throw new Error(`All items must have a ${this.rankProperty}`);
50
+ }
51
+ this.sortedItems = [...items]
52
+ .map(item => ({ ...item }))
53
+ .sort((itemA, itemB) => LexoRankUtils.compareStringFn(itemA[this.rankProperty], itemB[this.rankProperty]));
54
+ this.cdkDropList.data = this.sortedItems;
55
+ }
56
+ getNextRank(event) {
57
+ const fromIndex = event.previousIndex;
58
+ const toIndex = event.currentIndex;
59
+ const itemAfter = this.sortedItems[fromIndex > toIndex ? toIndex : toIndex + 1];
60
+ const itemBefore = this.sortedItems[fromIndex > toIndex ? toIndex - 1 : toIndex];
61
+ return LexoRankUtils.getNewRank(itemAfter?.[this.rankProperty], itemBefore?.[this.rankProperty]);
62
+ }
63
+ }
64
+ NiceDraggableListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceDraggableListDirective, deps: [{ token: i1.FormArrayName, optional: true }, { token: i2.CdkDropList }], target: i0.ɵɵFactoryTarget.Directive });
65
+ NiceDraggableListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.3", type: NiceDraggableListDirective, selector: "[cdkDropList][niceDraggableList]", inputs: { items: "items", rankProperty: "rankProperty" }, outputs: { itemsUpdated: "itemsUpdated", itemRankUpdated: "itemRankUpdated" }, usesOnChanges: true, ngImport: i0 });
66
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceDraggableListDirective, decorators: [{
67
+ type: Directive,
68
+ args: [{
69
+ selector: "[cdkDropList][niceDraggableList]"
70
+ }]
71
+ }], ctorParameters: function () { return [{ type: i1.FormArrayName, decorators: [{
72
+ type: Optional
73
+ }] }, { type: i2.CdkDropList }]; }, propDecorators: { items: [{
74
+ type: Input
75
+ }], rankProperty: [{
76
+ type: Input
77
+ }], itemsUpdated: [{
78
+ type: Output
79
+ }], itemRankUpdated: [{
80
+ type: Output
81
+ }] } });
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLWxpc3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS11aS1raXQtdjIvc3JjL2xpYi9kaXJlY3RpdmVzL2RyYWdnYWJsZS1saXN0L2RyYWdnYWJsZS1saXN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWUsV0FBVyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ25GLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFFLE1BQU0sRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDbkgsT0FBTyxFQUFhLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQUszRCxNQUFNLE9BQU8sMEJBQTBCO0lBZ0JuQyxZQUFnQyxhQUE0QixFQUFVLFdBQXdCO1FBQTlELGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFYdkYsaUJBQVksR0FBRyxNQUFNLENBQUM7UUFHdEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBR3ZDLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUssQ0FBQztRQUV4QyxnQkFBVyxHQUFRLEVBQUUsQ0FBQztJQUdvRSxDQUFDO0lBRTNGLFFBQVE7UUFDWCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztZQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztTQUNoRDtRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQUss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QUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakYsT0FBTyxhQUFhLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUNyRyxDQUFDOzt1SEF2RVEsMEJBQTBCOzJHQUExQiwwQkFBMEI7MkZBQTFCLDBCQUEwQjtrQkFIdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsa0NBQWtDO2lCQUMvQzs7MEJBaUJnQixRQUFRO3NFQWRkLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLE1BQU07Z0JBSUEsZUFBZTtzQkFEckIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9kcmFnLWRyb3BcIjtcbmltcG9ydCB7IERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE9wdGlvbmFsLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQXJyYXlOYW1lIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBMZXhvUmFua1V0aWxzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2xleG9yYW5rLnV0aWxzXCI7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiBcIltjZGtEcm9wTGlzdF1bbmljZURyYWdnYWJsZUxpc3RdXCJcbn0pXG5leHBvcnQgY2xhc3MgTmljZURyYWdnYWJsZUxpc3REaXJlY3RpdmU8VD4gaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXRlbXM6IFRbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJhbmtQcm9wZXJ0eSA9IFwicmFua1wiO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGl0ZW1zVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VFtdPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGl0ZW1SYW5rVXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcblxuICAgIHB1YmxpYyBzb3J0ZWRJdGVtczogVFtdID0gW107XG4gICAgcHVibGljIGZvcm1BcnJheTogRm9ybUFycmF5O1xuXG4gICAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtQXJyYXlOYW1lOiBGb3JtQXJyYXlOYW1lLCBwcml2YXRlIGNka0Ryb3BMaXN0OiBDZGtEcm9wTGlzdCkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybUFycmF5TmFtZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtQXJyYXkgPSB0aGlzLmZvcm1BcnJheU5hbWUuY29udHJvbDtcbiAgICAgICAgICAgIHRoaXMuc29ydEl0ZW1zKHRoaXMuZm9ybUFycmF5LmdldFJhd1ZhbHVlKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jZGtEcm9wTGlzdC5kcm9wcGVkLnN1YnNjcmliZSgoZXZlbnQpID0+IHRoaXMuZHJvcChldmVudCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGlmIChcIml0ZW1zXCIgaW4gY2hhbmdlcyAmJiB0aGlzLml0ZW1zKSB7XG4gICAgICAgICAgICB0aGlzLnNvcnRJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnksIGFueT4pOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LnByZXZpb3VzQ29udGFpbmVyID09PSBldmVudC5jb250YWluZXIpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5wcmV2aW91c0luZGV4ID09PSBldmVudC5jdXJyZW50SW5kZXgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGV2ZW50Lml0ZW0uZGF0YVt0aGlzLnJhbmtQcm9wZXJ0eV0gPSB0aGlzLmdldE5leHRSYW5rKGV2ZW50KTtcbiAgICAgICAgICAgIHRoaXMuc29ydEl0ZW1zKHRoaXMuc29ydGVkSXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5pdGVtc1VwZGF0ZWQubmV4dCh0aGlzLnNvcnRlZEl0ZW1zKTtcbiAgICAgICAgICAgIHRoaXMuaXRlbVJhbmtVcGRhdGVkLm5leHQoZXZlbnQuaXRlbS5kYXRhKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZm9ybUFycmF5KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtQXJyYXkuZ2V0KFtldmVudC5wcmV2aW91c0luZGV4LCB0aGlzLnJhbmtQcm9wZXJ0eV0pPy5wYXRjaFZhbHVlKGV2ZW50Lml0ZW0uZGF0YVt0aGlzLnJhbmtQcm9wZXJ0eV0pO1xuICAgICAgICAgICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmZvcm1BcnJheS5jb250cm9scywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIFRPRE86IEhhbmRsZSBjb250YWluZXIgY2hhbmdlXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNvcnRJdGVtcyhpdGVtczogYW55W10pOiB2b2lkIHtcbiAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCAmJiBpdGVtcy5zb21lKChpdGVtKSA9PiAhaXRlbVt0aGlzLnJhbmtQcm9wZXJ0eV0pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFsbCBpdGVtcyBtdXN0IGhhdmUgYSAke3RoaXMucmFua1Byb3BlcnR5fWApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zb3J0ZWRJdGVtcyA9IFsuLi5pdGVtc11cbiAgICAgICAgICAgIC5tYXAoaXRlbSA9PiAoey4uLml0ZW19KSlcbiAgICAgICAgICAgIC5zb3J0KChpdGVtQSwgaXRlbUIpID0+IExleG9SYW5rVXRpbHMuY29tcGFyZVN0cmluZ0ZuKGl0ZW1BW3RoaXMucmFua1Byb3BlcnR5XSwgaXRlbUJbdGhpcy5yYW5rUHJvcGVydHldKSk7XG4gICAgICAgIHRoaXMuY2RrRHJvcExpc3QuZGF0YSA9IHRoaXMuc29ydGVkSXRlbXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROZXh0UmFuayhldmVudDogQ2RrRHJhZ0Ryb3A8YW55LCBhbnk+KTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZnJvbUluZGV4ID0gZXZlbnQucHJldmlvdXNJbmRleDtcbiAgICAgICAgY29uc3QgdG9JbmRleCA9IGV2ZW50LmN1cnJlbnRJbmRleDtcblxuICAgICAgICBjb25zdCBpdGVtQWZ0ZXIgPSB0aGlzLnNvcnRlZEl0ZW1zW2Zyb21JbmRleCA+IHRvSW5kZXggPyB0b0luZGV4IDogdG9JbmRleCArIDFdO1xuICAgICAgICBjb25zdCBpdGVtQmVmb3JlID0gdGhpcy5zb3J0ZWRJdGVtc1tmcm9tSW5kZXggPiB0b0luZGV4ID8gdG9JbmRleCAtIDEgOiB0b0luZGV4XTtcbiAgICAgICAgcmV0dXJuIExleG9SYW5rVXRpbHMuZ2V0TmV3UmFuayhpdGVtQWZ0ZXI/Llt0aGlzLnJhbmtQcm9wZXJ0eV0sIGl0ZW1CZWZvcmU/Llt0aGlzLnJhbmtQcm9wZXJ0eV0pO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { DragDropModule } from "@angular/cdk/drag-drop";
2
+ import { NgModule } from "@angular/core";
3
+ import { NiceDraggableListDirective } from "./draggable-list.directive";
4
+ import * as i0 from "@angular/core";
5
+ export class NiceDraggableListModule {
6
+ }
7
+ NiceDraggableListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceDraggableListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
8
+ NiceDraggableListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.3", ngImport: i0, type: NiceDraggableListModule, declarations: [NiceDraggableListDirective], imports: [DragDropModule], exports: [NiceDraggableListDirective] });
9
+ NiceDraggableListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceDraggableListModule, imports: [DragDropModule] });
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceDraggableListModule, decorators: [{
11
+ type: NgModule,
12
+ args: [{
13
+ imports: [DragDropModule],
14
+ declarations: [NiceDraggableListDirective],
15
+ exports: [NiceDraggableListDirective],
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLWxpc3QubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmljZS11aS1raXQtdjIvc3JjL2xpYi9kaXJlY3RpdmVzL2RyYWdnYWJsZS1saXN0L2RyYWdnYWJsZS1saXN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7QUFPeEUsTUFBTSxPQUFPLHVCQUF1Qjs7b0hBQXZCLHVCQUF1QjtxSEFBdkIsdUJBQXVCLGlCQUhqQiwwQkFBMEIsYUFEL0IsY0FBYyxhQUVkLDBCQUEwQjtxSEFFM0IsdUJBQXVCLFlBSnRCLGNBQWM7MkZBSWYsdUJBQXVCO2tCQUxuQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDekIsWUFBWSxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQzFDLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUN4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWdEcm9wTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9kcmFnLWRyb3BcIjtcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuaW1wb3J0IHsgTmljZURyYWdnYWJsZUxpc3REaXJlY3RpdmUgfSBmcm9tIFwiLi9kcmFnZ2FibGUtbGlzdC5kaXJlY3RpdmVcIjtcblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbRHJhZ0Ryb3BNb2R1bGVdLFxuICAgIGRlY2xhcmF0aW9uczogW05pY2VEcmFnZ2FibGVMaXN0RGlyZWN0aXZlXSxcbiAgICBleHBvcnRzOiBbTmljZURyYWdnYWJsZUxpc3REaXJlY3RpdmVdLFxufSlcbmV4cG9ydCBjbGFzcyBOaWNlRHJhZ2dhYmxlTGlzdE1vZHVsZSB7fVxuIl19
@@ -0,0 +1,2 @@
1
+ export * from "./public-api";
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLXVpLWtpdC12Mi9zcmMvbGliL2RpcmVjdGl2ZXMvZHJhZ2dhYmxlLWxpc3QvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9wdWJsaWMtYXBpXCI7XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from "./draggable-list.directive";
2
+ export * from "./draggable-list.module";
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvZGlyZWN0aXZlcy9kcmFnZ2FibGUtbGlzdC9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2RyYWdnYWJsZS1saXN0LmRpcmVjdGl2ZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZHJhZ2dhYmxlLWxpc3QubW9kdWxlXCI7XG4iXX0=
@@ -2,6 +2,7 @@ export * from "./autofocus";
2
2
  export * from "./autogrow";
3
3
  export * from "./chip-async-typeahead";
4
4
  export * from "./chip-list";
5
+ export * from "./draggable-list";
5
6
  export * from "./dropzone";
6
7
  export * from "./image-error-placeholder";
7
8
  export * from "./material";
@@ -10,4 +11,4 @@ export * from "./scroll-reset";
10
11
  export * from "./scrollbar";
11
12
  export * from "./stop-propagation";
12
13
  export * from "./window";
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvZGlyZWN0aXZlcy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hdXRvZm9jdXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2F1dG9ncm93XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jaGlwLWFzeW5jLXR5cGVhaGVhZFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vY2hpcC1saXN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kcm9wem9uZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW1hZ2UtZXJyb3ItcGxhY2Vob2xkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21hdGVyaWFsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb2RhbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Njcm9sbC1yZXNldFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2Nyb2xsYmFyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9wLXByb3BhZ2F0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93aW5kb3dcIjtcbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvZGlyZWN0aXZlcy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsWUFBWSxDQUFDO0FBQzNCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2F1dG9mb2N1c1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vYXV0b2dyb3dcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NoaXAtYXN5bmMtdHlwZWFoZWFkXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jaGlwLWxpc3RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RyYWdnYWJsZS1saXN0XCI7XG5leHBvcnQgKiBmcm9tIFwiLi9kcm9wem9uZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vaW1hZ2UtZXJyb3ItcGxhY2Vob2xkZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21hdGVyaWFsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb2RhbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3Njcm9sbC1yZXNldFwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2Nyb2xsYmFyXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdG9wLXByb3BhZ2F0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi93aW5kb3dcIjtcbiJdfQ==
@@ -0,0 +1,28 @@
1
+ import { LexoRank } from "lexorank";
2
+ export class LexoRankUtils {
3
+ static compareStringFn(previousRank, nextRank) {
4
+ if (!previousRank || !nextRank) {
5
+ return 0;
6
+ }
7
+ return LexoRank.parse(previousRank).compareTo(LexoRank.parse(nextRank));
8
+ }
9
+ static compareFn(previousRank, nextRank) {
10
+ return previousRank.compareTo(nextRank);
11
+ }
12
+ static getNewRank(afterRank, beforeRank) {
13
+ if (afterRank && beforeRank) {
14
+ if (LexoRank.parse(beforeRank).equals(LexoRank.parse(afterRank))) {
15
+ return LexoRank.parse(afterRank).genPrev().toString();
16
+ }
17
+ return LexoRank.parse(afterRank).between(LexoRank.parse(beforeRank)).toString();
18
+ }
19
+ if (afterRank) {
20
+ return LexoRank.parse(afterRank).genPrev().toString();
21
+ }
22
+ if (beforeRank) {
23
+ return LexoRank.parse(beforeRank).genNext().toString();
24
+ }
25
+ return LexoRank.middle().toString();
26
+ }
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV4b3JhbmsudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uaWNlLXVpLWtpdC12Mi9zcmMvbGliL3V0aWxzL2xleG9yYW5rLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFcEMsTUFBTSxPQUFPLGFBQWE7SUFDZixNQUFNLENBQUMsZUFBZSxDQUFDLFlBQXFCLEVBQUUsUUFBaUI7UUFDbEUsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUM1QixPQUFPLENBQUMsQ0FBQztTQUNaO1FBRUQsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLENBQUMsWUFBc0IsRUFBRSxRQUFrQjtRQUM5RCxPQUFPLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBa0IsRUFBRSxVQUFtQjtRQUM1RCxJQUFJLFNBQVMsSUFBSSxVQUFVLEVBQUU7WUFDekIsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUU7Z0JBQzlELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQzthQUN6RDtZQUVELE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ25GO1FBRUQsSUFBSSxTQUFTLEVBQUU7WUFDWCxPQUFPLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDekQ7UUFFRCxJQUFJLFVBQVUsRUFBRTtZQUNaLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUMxRDtRQUVELE9BQU8sUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3hDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExleG9SYW5rIH0gZnJvbSBcImxleG9yYW5rXCI7XG5cbmV4cG9ydCBjbGFzcyBMZXhvUmFua1V0aWxzIHtcbiAgICBwdWJsaWMgc3RhdGljIGNvbXBhcmVTdHJpbmdGbihwcmV2aW91c1Jhbms/OiBzdHJpbmcsIG5leHRSYW5rPzogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgaWYgKCFwcmV2aW91c1JhbmsgfHwgIW5leHRSYW5rKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBMZXhvUmFuay5wYXJzZShwcmV2aW91c1JhbmspLmNvbXBhcmVUbyhMZXhvUmFuay5wYXJzZShuZXh0UmFuaykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgY29tcGFyZUZuKHByZXZpb3VzUmFuazogTGV4b1JhbmssIG5leHRSYW5rOiBMZXhvUmFuayk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBwcmV2aW91c1JhbmsuY29tcGFyZVRvKG5leHRSYW5rKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldE5ld1JhbmsoYWZ0ZXJSYW5rPzogc3RyaW5nLCBiZWZvcmVSYW5rPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKGFmdGVyUmFuayAmJiBiZWZvcmVSYW5rKSB7XG4gICAgICAgICAgICBpZiAoTGV4b1JhbmsucGFyc2UoYmVmb3JlUmFuaykuZXF1YWxzKExleG9SYW5rLnBhcnNlKGFmdGVyUmFuaykpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIExleG9SYW5rLnBhcnNlKGFmdGVyUmFuaykuZ2VuUHJldigpLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBMZXhvUmFuay5wYXJzZShhZnRlclJhbmspLmJldHdlZW4oTGV4b1JhbmsucGFyc2UoYmVmb3JlUmFuaykpLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYWZ0ZXJSYW5rKSB7XG4gICAgICAgICAgICByZXR1cm4gTGV4b1JhbmsucGFyc2UoYWZ0ZXJSYW5rKS5nZW5QcmV2KCkudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChiZWZvcmVSYW5rKSB7XG4gICAgICAgICAgICByZXR1cm4gTGV4b1JhbmsucGFyc2UoYmVmb3JlUmFuaykuZ2VuTmV4dCgpLnRvU3RyaW5nKCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gTGV4b1JhbmsubWlkZGxlKCkudG9TdHJpbmcoKTtcbiAgICB9XG59XG4iXX0=
@@ -7,6 +7,7 @@ export * from "./font-awesome.utils";
7
7
  export * from "./form-data.utils";
8
8
  export * from "./http-status.utils";
9
9
  export * from "./keyboard.utils";
10
+ export * from "./lexorank.utils";
10
11
  export * from "./modal.utils";
11
12
  export * from "./number.utils";
12
13
  export * from "./object.utils";
@@ -15,4 +16,4 @@ export * from "./query-params.utils";
15
16
  export * from "./regex.utils";
16
17
  export * from "./type.utils";
17
18
  export * from "./url.utils";
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvdXRpbHMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxlQUFlLENBQUM7QUFDOUIsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2FycmF5LnV0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jYXNlLnV0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jb2xvcnMudXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGUudXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZpbGUudXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2ZvbnQtYXdlc29tZS51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9ybS1kYXRhLnV0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9odHRwLXN0YXR1cy51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4va2V5Ym9hcmQudXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vZGFsLnV0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9udW1iZXIudXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29iamVjdC51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJvbWlzZS51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcXVlcnktcGFyYW1zLnV0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZWdleC51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZS51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXJsLnV0aWxzXCI7XG4iXX0=
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25pY2UtdWkta2l0LXYyL3NyYy9saWIvdXRpbHMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYXJyYXkudXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2Nhc2UudXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2NvbG9ycy51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGF0ZS51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZmlsZS51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZm9udC1hd2Vzb21lLnV0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9mb3JtLWRhdGEudXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2h0dHAtc3RhdHVzLnV0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9rZXlib2FyZC51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbGV4b3JhbmsudXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL21vZGFsLnV0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9udW1iZXIudXRpbHNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL29iamVjdC51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcHJvbWlzZS51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vcXVlcnktcGFyYW1zLnV0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9yZWdleC51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZS51dGlsc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdXJsLnV0aWxzXCI7XG4iXX0=
@@ -16,6 +16,7 @@ import * as i4 from '@angular/material/icon';
16
16
  import { MatIconModule } from '@angular/material/icon';
17
17
  import * as i1$2 from '@angular/forms';
18
18
  import { NG_VALUE_ACCESSOR, FormControl, Validators, ReactiveFormsModule, FormsModule, FormGroup } from '@angular/forms';
19
+ import { LexoRank } from 'lexorank';
19
20
  import * as i4$1 from '@angular/material/menu';
20
21
  import { MatMenuModule } from '@angular/material/menu';
21
22
  import * as i2$1 from '@angular/material/core';
@@ -66,6 +67,8 @@ import * as i1$e from '@angular/material/dialog';
66
67
  import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
67
68
  import * as i1$f from '@angular/material/snack-bar';
68
69
  import { MAT_SNACK_BAR_DATA, MatSnackBarModule } from '@angular/material/snack-bar';
70
+ import * as i2$4 from '@angular/cdk/drag-drop';
71
+ import { moveItemInArray, DragDropModule } from '@angular/cdk/drag-drop';
69
72
 
70
73
  class NiceAnimationCurves {
71
74
  }
@@ -1451,6 +1454,33 @@ var KeyboardCodes;
1451
1454
  KeyboardCodes["Comma"] = "Comma";
1452
1455
  })(KeyboardCodes || (KeyboardCodes = {}));
1453
1456
 
1457
+ class LexoRankUtils {
1458
+ static compareStringFn(previousRank, nextRank) {
1459
+ if (!previousRank || !nextRank) {
1460
+ return 0;
1461
+ }
1462
+ return LexoRank.parse(previousRank).compareTo(LexoRank.parse(nextRank));
1463
+ }
1464
+ static compareFn(previousRank, nextRank) {
1465
+ return previousRank.compareTo(nextRank);
1466
+ }
1467
+ static getNewRank(afterRank, beforeRank) {
1468
+ if (afterRank && beforeRank) {
1469
+ if (LexoRank.parse(beforeRank).equals(LexoRank.parse(afterRank))) {
1470
+ return LexoRank.parse(afterRank).genPrev().toString();
1471
+ }
1472
+ return LexoRank.parse(afterRank).between(LexoRank.parse(beforeRank)).toString();
1473
+ }
1474
+ if (afterRank) {
1475
+ return LexoRank.parse(afterRank).genPrev().toString();
1476
+ }
1477
+ if (beforeRank) {
1478
+ return LexoRank.parse(beforeRank).genNext().toString();
1479
+ }
1480
+ return LexoRank.middle().toString();
1481
+ }
1482
+ }
1483
+
1454
1484
  var ModalMode;
1455
1485
  (function (ModalMode) {
1456
1486
  ModalMode[ModalMode["Create"] = 0] = "Create";
@@ -10414,6 +10444,98 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImpor
10414
10444
  }]
10415
10445
  }] });
10416
10446
 
10447
+ class NiceDraggableListDirective {
10448
+ constructor(formArrayName, cdkDropList) {
10449
+ this.formArrayName = formArrayName;
10450
+ this.cdkDropList = cdkDropList;
10451
+ this.rankProperty = "rank";
10452
+ this.itemsUpdated = new EventEmitter();
10453
+ this.itemRankUpdated = new EventEmitter();
10454
+ this.sortedItems = [];
10455
+ }
10456
+ ngOnInit() {
10457
+ if (this.formArrayName) {
10458
+ this.formArray = this.formArrayName.control;
10459
+ this.sortItems(this.formArray.getRawValue());
10460
+ }
10461
+ this.cdkDropList.dropped.subscribe((event) => this.drop(event));
10462
+ }
10463
+ ngOnChanges(changes) {
10464
+ if ("items" in changes && this.items) {
10465
+ this.sortItems(this.items);
10466
+ }
10467
+ }
10468
+ drop(event) {
10469
+ var _a;
10470
+ if (event.previousContainer === event.container) {
10471
+ if (event.previousIndex === event.currentIndex) {
10472
+ return;
10473
+ }
10474
+ event.item.data[this.rankProperty] = this.getNextRank(event);
10475
+ this.sortItems(this.sortedItems);
10476
+ this.itemsUpdated.next(this.sortedItems);
10477
+ this.itemRankUpdated.next(event.item.data);
10478
+ if (this.formArray) {
10479
+ (_a = this.formArray.get([event.previousIndex, this.rankProperty])) === null || _a === void 0 ? void 0 : _a.patchValue(event.item.data[this.rankProperty]);
10480
+ moveItemInArray(this.formArray.controls, event.previousIndex, event.currentIndex);
10481
+ }
10482
+ }
10483
+ else {
10484
+ // TODO: Handle container change
10485
+ }
10486
+ }
10487
+ sortItems(items) {
10488
+ if (items.length && items.some((item) => !item[this.rankProperty])) {
10489
+ throw new Error(`All items must have a ${this.rankProperty}`);
10490
+ }
10491
+ this.sortedItems = [...items]
10492
+ .map(item => (Object.assign({}, item)))
10493
+ .sort((itemA, itemB) => LexoRankUtils.compareStringFn(itemA[this.rankProperty], itemB[this.rankProperty]));
10494
+ this.cdkDropList.data = this.sortedItems;
10495
+ }
10496
+ getNextRank(event) {
10497
+ const fromIndex = event.previousIndex;
10498
+ const toIndex = event.currentIndex;
10499
+ const itemAfter = this.sortedItems[fromIndex > toIndex ? toIndex : toIndex + 1];
10500
+ const itemBefore = this.sortedItems[fromIndex > toIndex ? toIndex - 1 : toIndex];
10501
+ return LexoRankUtils.getNewRank(itemAfter === null || itemAfter === void 0 ? void 0 : itemAfter[this.rankProperty], itemBefore === null || itemBefore === void 0 ? void 0 : itemBefore[this.rankProperty]);
10502
+ }
10503
+ }
10504
+ NiceDraggableListDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceDraggableListDirective, deps: [{ token: i1$2.FormArrayName, optional: true }, { token: i2$4.CdkDropList }], target: i0.ɵɵFactoryTarget.Directive });
10505
+ NiceDraggableListDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.3", type: NiceDraggableListDirective, selector: "[cdkDropList][niceDraggableList]", inputs: { items: "items", rankProperty: "rankProperty" }, outputs: { itemsUpdated: "itemsUpdated", itemRankUpdated: "itemRankUpdated" }, usesOnChanges: true, ngImport: i0 });
10506
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceDraggableListDirective, decorators: [{
10507
+ type: Directive,
10508
+ args: [{
10509
+ selector: "[cdkDropList][niceDraggableList]"
10510
+ }]
10511
+ }], ctorParameters: function () {
10512
+ return [{ type: i1$2.FormArrayName, decorators: [{
10513
+ type: Optional
10514
+ }] }, { type: i2$4.CdkDropList }];
10515
+ }, propDecorators: { items: [{
10516
+ type: Input
10517
+ }], rankProperty: [{
10518
+ type: Input
10519
+ }], itemsUpdated: [{
10520
+ type: Output
10521
+ }], itemRankUpdated: [{
10522
+ type: Output
10523
+ }] } });
10524
+
10525
+ class NiceDraggableListModule {
10526
+ }
10527
+ NiceDraggableListModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceDraggableListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10528
+ NiceDraggableListModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.3", ngImport: i0, type: NiceDraggableListModule, declarations: [NiceDraggableListDirective], imports: [DragDropModule], exports: [NiceDraggableListDirective] });
10529
+ NiceDraggableListModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceDraggableListModule, imports: [DragDropModule] });
10530
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImport: i0, type: NiceDraggableListModule, decorators: [{
10531
+ type: NgModule,
10532
+ args: [{
10533
+ imports: [DragDropModule],
10534
+ declarations: [NiceDraggableListDirective],
10535
+ exports: [NiceDraggableListDirective],
10536
+ }]
10537
+ }] });
10538
+
10417
10539
  class NiceImageErrorPlaceholderDirective {
10418
10540
  constructor(elementRef, viewContainerRef) {
10419
10541
  this.elementRef = elementRef;
@@ -10738,5 +10860,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.3", ngImpor
10738
10860
  * Generated bundle index. Do not edit.
10739
10861
  */
10740
10862
 
10741
- export { ArrayUtils, BooleanPipe, CapitalizeFirstLetterPipe, CarouselComponent, CaseUtils, CeilPipe, ChipListItemLabelDirective, ColorsUtils, DateUtils, DefaultExportBottomSheetService, EntriesPipe, ExportBottomSheetComponent, ExportBottomSheetService, FileUtils, FindByKeyPipe, FirstLetterPipe, FloorPipe, FontAwesomeUtils, FormDataUtils, HttpStatusCodes, ImgCropperConfig, ImgCropperError, ImgResolution, JoinPipe, KeyboardCodes, LinkPipe, LocalizedBooleanPipe, LocalizedCurrencyPipe, LocalizedDateOnlyPipe, LocalizedDatePipe, MinutesToTimePipe, ModalMode, NavigationHideItemResolver, NavigationHintResolver, NiceAlertComponent, NiceAlertModule, NiceAlertService, NiceApiException, NiceAssetsCarouselActiveContentDirective, NiceAssetsCarouselComponent, NiceAssetsCarouselModule, NiceAsyncTypeaheadComponent, NiceAsyncTypeaheadModule, NiceAsyncTypeaheadProvider, NiceAutofocusDirective, NiceAutofocusDirectiveModule, NiceAutogrowDirective, NiceAutogrowModule, NiceBaseForm, NiceBaseFormComponent, NiceBaseFormModule, NiceCardComponent, NiceCardModule, NiceCarouselModule, NiceChipAsyncTypeaheadDirective, NiceChipListDirective, NiceChipListDirectiveModule, NiceChipListItemsComponent, NiceClickStopPropagationDirective, NiceCollapsableComponent, NiceCollapsableModule, NiceConfigModule, NiceConfigService, NiceControlStatusDirective, NiceCropperAreaComponent, NiceDateRangePickerComponent, NiceDateRangePickerModule, NiceDrawerComponent, NiceDrawerModule, NiceDrawerService, NiceDropzoneDirective, NiceDropzoneModule, NiceExportBottomSheetModule, NiceFormErrorComponent, NiceFormErrorModule, NiceFormSubmitDirective, NiceHorizontalNavigationBasicItemComponent, NiceHorizontalNavigationBranchItemComponent, NiceHorizontalNavigationComponent, NiceHorizontalNavigationDividerItemComponent, NiceHorizontalNavigationSpacerItemComponent, NiceHorizontalStepperComponent, NiceHorizontalStepperModule, NiceHttpExceptionFactory, NiceImageCropperComponent, NiceImageCropperModule, NiceImageErrorPlaceholderDirective, NiceImageErrorPlaceholderDirectiveModule, NiceLayoutComponent, NiceLayoutModule, NiceLoadingDirective, NiceLoadingSpinnerComponent, NiceLoadingSpinnerModule, NiceLottieComponent, NiceLottieModule, NiceMaterialModule, NiceMaterialStyleDirective, NiceMediaWatcherModule, NiceMediaWatcherService, NiceModalOnClickDirective, NiceModalOpenerDirective, NiceModule, NiceNavigationComponent, NiceNavigationModule, NiceNavigationService, NicePipesModule, NicePreventCloseWindowDirective, NiceRoundedStyleDirective, NiceScrollResetDirective, NiceScrollResetModule, NiceScrollbarDirective, NiceScrollbarModule, NiceSearchBarComponent, NiceSearchBarModule, NiceSplashScreenModule, NiceSplashScreenService, NiceStepComponent, NiceStopPropagationModule, NiceSweetAlertComponent, NiceSweetAlertDirective, NiceSweetAlertModule, NiceSweetAlertService, NiceToastComponent, NiceToastModule, NiceToastService, NiceToggleButtonGroupModule, NiceTransformResponseInterceptor, NiceTypeaheadComponent, NiceTypeaheadModule, NiceTypeaheadNewValue, NiceUtilsModule, NiceUtilsService, NiceVerticalNavigationAsideItemComponent, NiceVerticalNavigationBasicItemComponent, NiceVerticalNavigationCollapsableItemComponent, NiceVerticalNavigationComponent, NiceVerticalNavigationDividerItemComponent, NiceVerticalNavigationGroupItemComponent, NiceVerticalNavigationSpacerItemComponent, NiceWindowDirectiveModule, NumberToOrdinalIndicatorPipe, NumberUtils, ObjectUtils, OptionsScrollDirective, PadPipe, PhonePipe, PictureModalComponent, PictureModalService, PostalCodePipe, PromiseUtils, QueryParamsUtils, RangePipe, RegexUtils, RoundPipe, SanitizeBypassPipe, SecondsToTimePipe, TRANSFORM_TYPE, ToggleButtonComponent, ToggleButtonGroupComponent, TrackByPropPipe, TypeUtils, UrlUtils, _HintComponentBase, _normalizeDegrees, isNotNullOrUndefined, isNullOrUndefined, mergeDeep, mixinNiceApi, niceAnimations, round };
10863
+ export { ArrayUtils, BooleanPipe, CapitalizeFirstLetterPipe, CarouselComponent, CaseUtils, CeilPipe, ChipListItemLabelDirective, ColorsUtils, DateUtils, DefaultExportBottomSheetService, EntriesPipe, ExportBottomSheetComponent, ExportBottomSheetService, FileUtils, FindByKeyPipe, FirstLetterPipe, FloorPipe, FontAwesomeUtils, FormDataUtils, HttpStatusCodes, ImgCropperConfig, ImgCropperError, ImgResolution, JoinPipe, KeyboardCodes, LexoRankUtils, LinkPipe, LocalizedBooleanPipe, LocalizedCurrencyPipe, LocalizedDateOnlyPipe, LocalizedDatePipe, MinutesToTimePipe, ModalMode, NavigationHideItemResolver, NavigationHintResolver, NiceAlertComponent, NiceAlertModule, NiceAlertService, NiceApiException, NiceAssetsCarouselActiveContentDirective, NiceAssetsCarouselComponent, NiceAssetsCarouselModule, NiceAsyncTypeaheadComponent, NiceAsyncTypeaheadModule, NiceAsyncTypeaheadProvider, NiceAutofocusDirective, NiceAutofocusDirectiveModule, NiceAutogrowDirective, NiceAutogrowModule, NiceBaseForm, NiceBaseFormComponent, NiceBaseFormModule, NiceCardComponent, NiceCardModule, NiceCarouselModule, NiceChipAsyncTypeaheadDirective, NiceChipListDirective, NiceChipListDirectiveModule, NiceChipListItemsComponent, NiceClickStopPropagationDirective, NiceCollapsableComponent, NiceCollapsableModule, NiceConfigModule, NiceConfigService, NiceControlStatusDirective, NiceCropperAreaComponent, NiceDateRangePickerComponent, NiceDateRangePickerModule, NiceDraggableListDirective, NiceDraggableListModule, NiceDrawerComponent, NiceDrawerModule, NiceDrawerService, NiceDropzoneDirective, NiceDropzoneModule, NiceExportBottomSheetModule, NiceFormErrorComponent, NiceFormErrorModule, NiceFormSubmitDirective, NiceHorizontalNavigationBasicItemComponent, NiceHorizontalNavigationBranchItemComponent, NiceHorizontalNavigationComponent, NiceHorizontalNavigationDividerItemComponent, NiceHorizontalNavigationSpacerItemComponent, NiceHorizontalStepperComponent, NiceHorizontalStepperModule, NiceHttpExceptionFactory, NiceImageCropperComponent, NiceImageCropperModule, NiceImageErrorPlaceholderDirective, NiceImageErrorPlaceholderDirectiveModule, NiceLayoutComponent, NiceLayoutModule, NiceLoadingDirective, NiceLoadingSpinnerComponent, NiceLoadingSpinnerModule, NiceLottieComponent, NiceLottieModule, NiceMaterialModule, NiceMaterialStyleDirective, NiceMediaWatcherModule, NiceMediaWatcherService, NiceModalOnClickDirective, NiceModalOpenerDirective, NiceModule, NiceNavigationComponent, NiceNavigationModule, NiceNavigationService, NicePipesModule, NicePreventCloseWindowDirective, NiceRoundedStyleDirective, NiceScrollResetDirective, NiceScrollResetModule, NiceScrollbarDirective, NiceScrollbarModule, NiceSearchBarComponent, NiceSearchBarModule, NiceSplashScreenModule, NiceSplashScreenService, NiceStepComponent, NiceStopPropagationModule, NiceSweetAlertComponent, NiceSweetAlertDirective, NiceSweetAlertModule, NiceSweetAlertService, NiceToastComponent, NiceToastModule, NiceToastService, NiceToggleButtonGroupModule, NiceTransformResponseInterceptor, NiceTypeaheadComponent, NiceTypeaheadModule, NiceTypeaheadNewValue, NiceUtilsModule, NiceUtilsService, NiceVerticalNavigationAsideItemComponent, NiceVerticalNavigationBasicItemComponent, NiceVerticalNavigationCollapsableItemComponent, NiceVerticalNavigationComponent, NiceVerticalNavigationDividerItemComponent, NiceVerticalNavigationGroupItemComponent, NiceVerticalNavigationSpacerItemComponent, NiceWindowDirectiveModule, NumberToOrdinalIndicatorPipe, NumberUtils, ObjectUtils, OptionsScrollDirective, PadPipe, PhonePipe, PictureModalComponent, PictureModalService, PostalCodePipe, PromiseUtils, QueryParamsUtils, RangePipe, RegexUtils, RoundPipe, SanitizeBypassPipe, SecondsToTimePipe, TRANSFORM_TYPE, ToggleButtonComponent, ToggleButtonGroupComponent, TrackByPropPipe, TypeUtils, UrlUtils, _HintComponentBase, _normalizeDegrees, isNotNullOrUndefined, isNullOrUndefined, mergeDeep, mixinNiceApi, niceAnimations, round };
10742
10864
  //# sourceMappingURL=recursyve-nice-ui-kit.v2.mjs.map