ms-data-grid 0.0.46 → 0.0.48

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.
@@ -1,145 +0,0 @@
1
- import { Directive, EventEmitter, HostListener, Input, Output, } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class DraggableHeaderDirective {
4
- constructor(el, renderer) {
5
- this.el = el;
6
- this.renderer = renderer;
7
- this.headerName = '';
8
- this.dragStart = new EventEmitter();
9
- this.dragMove = new EventEmitter();
10
- this.dragEnd = new EventEmitter();
11
- this.isDragging = false;
12
- this.placeholderEl = null;
13
- this.previewEl = null;
14
- this.startX = 0;
15
- this.startY = 0;
16
- this.onMouseMove = (event) => {
17
- debugger;
18
- const moveX = Math.abs(event.clientX - this.startX - 10);
19
- const moveY = Math.abs(event.clientY - this.startY - 10);
20
- if (!this.isDragging && (moveX > 1 || moveY > 1)) {
21
- this.startDragging(event);
22
- }
23
- if (this.isDragging && this.previewEl) {
24
- this.renderer.setStyle(this.previewEl, 'top', `${event.pageY + 10}px`);
25
- this.renderer.setStyle(this.previewEl, 'left', `${event.pageX + 10}px`);
26
- // Find the element under cursor (hovered element)
27
- const hoveredElement = document.elementFromPoint(event.clientX, event.clientY);
28
- this.dragMove.emit({
29
- event,
30
- column: this.column,
31
- hoveredElement,
32
- });
33
- }
34
- };
35
- this.onMouseUp = (event) => {
36
- if (!this.isDragging)
37
- return;
38
- this.isDragging = false;
39
- this.dragEnd.emit({ column: this.column, event });
40
- if (this.previewEl) {
41
- this.renderer.removeChild(document.body, this.previewEl);
42
- this.previewEl = null;
43
- }
44
- if (this.placeholderEl) {
45
- const parent = this.placeholderEl.parentNode;
46
- if (parent) {
47
- parent.replaceChild(this.el.nativeElement, this.placeholderEl);
48
- }
49
- this.placeholderEl = null;
50
- }
51
- // Reset the cursor
52
- this.resetCursor();
53
- document.removeEventListener('mousemove', this.onMouseMove);
54
- document.removeEventListener('mouseup', this.onMouseUp);
55
- };
56
- this.originalCursor = null;
57
- }
58
- onMouseDown(event) {
59
- if (event.button !== 0)
60
- return;
61
- let target = event.target;
62
- const classes = target.classList;
63
- debugger;
64
- if (event.target.classList.contains('three-dots'))
65
- return;
66
- this.startX = event.clientX;
67
- this.startY = event.clientY;
68
- this.isDragging = false;
69
- document.addEventListener('mousemove', this.onMouseMove);
70
- document.addEventListener('mouseup', this.onMouseUp);
71
- }
72
- setCursor(cursorStyle) {
73
- this.renderer.setStyle(document.body, 'cursor', cursorStyle);
74
- }
75
- resetCursor() {
76
- this.renderer.setStyle(document.body, 'cursor', this.originalCursor || '');
77
- }
78
- startDragging(event) {
79
- this.isDragging = true;
80
- // Store original cursor (optional fallback)
81
- this.originalCursor = getComputedStyle(document.body).cursor;
82
- // Set cursor to grabbing
83
- this.setCursor('move');
84
- // --- Clone the element as a placeholder ---
85
- this.placeholderEl = this.el.nativeElement.cloneNode(true);
86
- this.renderer.setStyle(this.placeholderEl, 'opacity', '0.5');
87
- this.renderer.setStyle(this.placeholderEl, 'pointer-events', 'none');
88
- this.renderer.addClass(this.placeholderEl, 'drag-placeholder');
89
- const parent = this.el.nativeElement.parentNode;
90
- parent.replaceChild(this.placeholderEl, this.el.nativeElement);
91
- // --- Create floating preview ---
92
- this.previewEl = this.renderer.createElement('div');
93
- this.renderer.setStyle(this.previewEl, 'position', 'absolute');
94
- this.renderer.setStyle(this.previewEl, 'top', `${event.pageY + 10}px`);
95
- this.renderer.setStyle(this.previewEl, 'left', `${event.pageX + 10}px`);
96
- this.renderer.setStyle(this.previewEl, 'pointer-events', 'none');
97
- this.renderer.setStyle(this.previewEl, 'z-index', '1000');
98
- this.renderer.setStyle(this.previewEl, 'max-width', '200px');
99
- this.renderer.setStyle(this.previewEl, 'padding', '8px');
100
- this.renderer.setStyle(this.previewEl, 'border', '1px solid #ccc');
101
- this.renderer.setStyle(this.previewEl, 'background-color', '#fff');
102
- this.renderer.setStyle(this.previewEl, 'box-shadow', '0 2px 6px rgba(0,0,0,0.2)');
103
- this.renderer.setStyle(this.previewEl, 'border-radius', '4px');
104
- this.renderer.setStyle(this.previewEl, 'display', 'flex');
105
- this.renderer.setStyle(this.previewEl, 'align-items', 'center');
106
- this.renderer.setStyle(this.previewEl, 'gap', '8px');
107
- this.renderer.setStyle(this.previewEl, 'font-weight', '500');
108
- this.renderer.setStyle(this.previewEl, 'white-space', 'nowrap');
109
- const icon = this.renderer.createElement('span');
110
- this.renderer.setStyle(icon, 'font-size', '16px');
111
- this.renderer.setStyle(icon, 'user-select', 'none');
112
- this.renderer.setProperty(icon, 'innerText', '≡');
113
- const text = this.renderer.createElement('span');
114
- this.renderer.setProperty(text, 'innerText', this.headerName || 'Dragging');
115
- this.renderer.appendChild(this.previewEl, icon);
116
- this.renderer.appendChild(this.previewEl, text);
117
- this.renderer.appendChild(document.body, this.previewEl);
118
- this.dragStart.emit({ column: this.column, event });
119
- }
120
- overrideCursor(style) {
121
- this.setCursor(style);
122
- }
123
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DraggableHeaderDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
124
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: DraggableHeaderDirective, selector: "[appDraggableHeader]", inputs: { column: "column", headerName: "headerName" }, outputs: { dragStart: "dragStart", dragMove: "dragMove", dragEnd: "dragEnd" }, host: { listeners: { "mousedown": "onMouseDown($event)" } }, ngImport: i0 }); }
125
- }
126
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DraggableHeaderDirective, decorators: [{
127
- type: Directive,
128
- args: [{
129
- selector: '[appDraggableHeader]',
130
- }]
131
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { column: [{
132
- type: Input
133
- }], headerName: [{
134
- type: Input
135
- }], dragStart: [{
136
- type: Output
137
- }], dragMove: [{
138
- type: Output
139
- }], dragEnd: [{
140
- type: Output
141
- }], onMouseDown: [{
142
- type: HostListener,
143
- args: ['mousedown', ['$event']]
144
- }] } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLWhlYWRlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWdyaWQvc3JjL2xpYi9kaXJlY3RpdmVzL2RyYWdnYWJsZS1oZWFkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDOztBQVV2QixNQUFNLE9BQU8sd0JBQXdCO0lBWW5DLFlBQW9CLEVBQWMsRUFBVSxRQUFtQjtRQUEzQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVZ0RCxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRXZCLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3BDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ25DLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXBDLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsa0JBQWEsR0FBdUIsSUFBSSxDQUFDO1FBQ3pDLGNBQVMsR0FBdUIsSUFBSSxDQUFDO1FBSTdDLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFDWCxXQUFNLEdBQUcsQ0FBQyxDQUFDO1FBaUJYLGdCQUFXLEdBQUcsQ0FBQyxLQUFpQixFQUFFLEVBQUU7WUFDbEMsUUFBUSxDQUFBO1lBQ1IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLElB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b250ZW50IjpbImltcG9ydCB7XHJcbiAgRGlyZWN0aXZlLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgUmVuZGVyZXIyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBEcmFnTW92ZUV2ZW50IHtcclxuICBldmVudDogTW91c2VFdmVudDtcclxuICBkYXRhOiBhbnk7XHJcbn1cclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW2FwcERyYWdnYWJsZUhlYWRlcl0nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRHJhZ2dhYmxlSGVhZGVyRGlyZWN0aXZlIHtcclxuICBASW5wdXQoKSBjb2x1bW46IGFueTtcclxuICBASW5wdXQoKSBoZWFkZXJOYW1lOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQE91dHB1dCgpIGRyYWdTdGFydCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBkcmFnTW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBkcmFnRW5kID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHByaXZhdGUgaXNEcmFnZ2luZyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgcGxhY2Vob2xkZXJFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHByZXZpZXdFbDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxyXG5cclxuICBzdGFydFggPSAwO1xyXG4gIHN0YXJ0WSA9IDA7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ21vdXNlZG93bicsIFsnJGV2ZW50J10pXHJcbiAgb25Nb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5idXR0b24gIT09IDApIHJldHVybjtcclxuICAgIGxldCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBjbGFzc2VzID0gdGFyZ2V0LmNsYXNzTGlzdDtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudCkuY2xhc3NMaXN0LmNvbnRhaW5zKCd0aHJlZS1kb3RzJykpIHJldHVybjtcclxuICAgICAgdGhpcy5zdGFydFggPSBldmVudC5jbGllbnRYO1xyXG4gICAgdGhpcy5zdGFydFkgPSBldmVudC5jbGllbnRZO1xyXG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vbk1vdXNlTW92ZSk7XHJcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vbk1vdXNlVXApO1xyXG4gIH1cclxuXHJcbiAgb25Nb3VzZU1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcclxuICAgIGRlYnVnZ2VyXHJcbiAgICBjb25zdCBtb3ZlWCA9IE1hdGguYWJzKGV2ZW50LmNsaWVudFggLSB0aGlzLnN0YXJ0WCAtIDEwKTtcclxuICAgIGNvbnN0IG1vdmVZID0gTWF0aC5hYnMoZXZlbnQuY2xpZW50WSAtIHRoaXMuc3RhcnRZIC0gMTApO1xyXG4gICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmcgJiYgKG1vdmVYID4gMSB8fCBtb3ZlWSA+IDEpKSB7XHJcbiAgICAgIHRoaXMuc3RhcnREcmFnZ2luZyhldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNEcmFnZ2luZyAmJiB0aGlzLnByZXZpZXdFbCkge1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAndG9wJywgYCR7ZXZlbnQucGFnZVkgKyAxMH1weGApO1xyXG4gICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAnbGVmdCcsIGAke2V2ZW50LnBhZ2VYICsgMTB9cHhgKTtcclxuXHJcbiAgICAgIC8vIEZpbmQgdGhlIGVsZW1lbnQgdW5kZXIgY3Vyc29yIChob3ZlcmVkIGVsZW1lbnQpXHJcbiAgICAgIGNvbnN0IGhvdmVyZWRFbGVtZW50ID0gZG9jdW1lbnQuZWxlbWVudEZyb21Qb2ludChcclxuICAgICAgICBldmVudC5jbGllbnRYLFxyXG4gICAgICAgIGV2ZW50LmNsaWVudFlcclxuICAgICAgKTtcclxuXHJcbiAgICAgIHRoaXMuZHJhZ01vdmUuZW1pdCh7XHJcbiAgICAgICAgZXZlbnQsXHJcbiAgICAgICAgY29sdW1uOiB0aGlzLmNvbHVtbixcclxuICAgICAgICBob3ZlcmVkRWxlbWVudCxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgb25Nb3VzZVVwID0gKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICBpZiAoIXRoaXMuaXNEcmFnZ2luZykgcmV0dXJuO1xyXG4gICAgdGhpcy5pc0RyYWdnaW5nID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5kcmFnRW5kLmVtaXQoeyBjb2x1bW46IHRoaXMuY29sdW1uLCBldmVudCB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5wcmV2aWV3RWwpIHtcclxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZChkb2N1bWVudC5ib2R5LCB0aGlzLnByZXZpZXdFbCk7XHJcbiAgICAgIHRoaXMucHJldmlld0VsID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlckVsKSB7XHJcbiAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMucGxhY2Vob2xkZXJFbC5wYXJlbnROb2RlO1xyXG4gICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgcGFyZW50LnJlcGxhY2VDaGlsZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMucGxhY2Vob2xkZXJFbCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5wbGFjZWhvbGRlckVsID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBSZXNldCB0aGUgY3Vyc29yXHJcbiAgICB0aGlzLnJlc2V0Q3Vyc29yKCk7XHJcblxyXG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5vbk1vdXNlTW92ZSk7XHJcbiAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5vbk1vdXNlVXApO1xyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgb3JpZ2luYWxDdXJzb3I6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIHNldEN1cnNvcihjdXJzb3JTdHlsZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGRvY3VtZW50LmJvZHksICdjdXJzb3InLCBjdXJzb3JTdHlsZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlc2V0Q3Vyc29yKCkge1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShkb2N1bWVudC5ib2R5LCAnY3Vyc29yJywgdGhpcy5vcmlnaW5hbEN1cnNvciB8fCAnJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXJ0RHJhZ2dpbmcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgIHRoaXMuaXNEcmFnZ2luZyA9IHRydWU7XHJcblxyXG4gICAgLy8gU3RvcmUgb3JpZ2luYWwgY3Vyc29yIChvcHRpb25hbCBmYWxsYmFjaylcclxuICAgIHRoaXMub3JpZ2luYWxDdXJzb3IgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpLmN1cnNvcjtcclxuXHJcbiAgICAvLyBTZXQgY3Vyc29yIHRvIGdyYWJiaW5nXHJcbiAgICB0aGlzLnNldEN1cnNvcignbW92ZScpO1xyXG5cclxuICAgIC8vIC0tLSBDbG9uZSB0aGUgZWxlbWVudCBhcyBhIHBsYWNlaG9sZGVyIC0tLVxyXG4gICAgdGhpcy5wbGFjZWhvbGRlckVsID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LmNsb25lTm9kZSh0cnVlKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wbGFjZWhvbGRlckVsLCAnb3BhY2l0eScsICcwLjUnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wbGFjZWhvbGRlckVsLCAncG9pbnRlci1ldmVudHMnLCAnbm9uZScpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aGlzLnBsYWNlaG9sZGVyRWwsICdkcmFnLXBsYWNlaG9sZGVyJyk7XHJcblxyXG4gICAgY29uc3QgcGFyZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XHJcbiAgICBwYXJlbnQucmVwbGFjZUNoaWxkKHRoaXMucGxhY2Vob2xkZXJFbCwgdGhpcy5lbC5uYXRpdmVFbGVtZW50KTtcclxuXHJcbiAgICAvLyAtLS0gQ3JlYXRlIGZsb2F0aW5nIHByZXZpZXcgLS0tXHJcbiAgICB0aGlzLnByZXZpZXdFbCA9IHRoaXMucmVuZGVyZXIuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAncG9zaXRpb24nLCAnYWJzb2x1dGUnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICd0b3AnLCBgJHtldmVudC5wYWdlWSArIDEwfXB4YCk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAnbGVmdCcsIGAke2V2ZW50LnBhZ2VYICsgMTB9cHhgKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICdwb2ludGVyLWV2ZW50cycsICdub25lJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAnei1pbmRleCcsICcxMDAwJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAnbWF4LXdpZHRoJywgJzIwMHB4Jyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMucHJldmlld0VsLCAncGFkZGluZycsICc4cHgnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICdib3JkZXInLCAnMXB4IHNvbGlkICNjY2MnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICdiYWNrZ3JvdW5kLWNvbG9yJywgJyNmZmYnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoXHJcbiAgICAgIHRoaXMucHJldmlld0VsLFxyXG4gICAgICAnYm94LXNoYWRvdycsXHJcbiAgICAgICcwIDJweCA2cHggcmdiYSgwLDAsMCwwLjIpJ1xyXG4gICAgKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICdib3JkZXItcmFkaXVzJywgJzRweCcpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnByZXZpZXdFbCwgJ2Rpc3BsYXknLCAnZmxleCcpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnByZXZpZXdFbCwgJ2FsaWduLWl0ZW1zJywgJ2NlbnRlcicpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnByZXZpZXdFbCwgJ2dhcCcsICc4cHgnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICdmb250LXdlaWdodCcsICc1MDAnKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5wcmV2aWV3RWwsICd3aGl0ZS1zcGFjZScsICdub3dyYXAnKTtcclxuXHJcbiAgICBjb25zdCBpY29uID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGljb24sICdmb250LXNpemUnLCAnMTZweCcpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShpY29uLCAndXNlci1zZWxlY3QnLCAnbm9uZScpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5zZXRQcm9wZXJ0eShpY29uLCAnaW5uZXJUZXh0JywgJ+KJoScpO1xyXG5cclxuICAgIGNvbnN0IHRleHQgPSB0aGlzLnJlbmRlcmVyLmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcclxuICAgIHRoaXMucmVuZGVyZXIuc2V0UHJvcGVydHkodGV4dCwgJ2lubmVyVGV4dCcsIHRoaXMuaGVhZGVyTmFtZSB8fCAnRHJhZ2dpbmcnKTtcclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMucHJldmlld0VsLCBpY29uKTtcclxuICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQodGhpcy5wcmV2aWV3RWwsIHRleHQpO1xyXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZChkb2N1bWVudC5ib2R5LCB0aGlzLnByZXZpZXdFbCk7XHJcblxyXG4gICAgdGhpcy5kcmFnU3RhcnQuZW1pdCh7IGNvbHVtbjogdGhpcy5jb2x1bW4sIGV2ZW50IH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG92ZXJyaWRlQ3Vyc29yKHN0eWxlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2V0Q3Vyc29yKHN0eWxlKTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,118 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class SwapColumnsService {
4
- constructor() { }
5
- deepClone(obj) {
6
- return JSON.parse(JSON.stringify(obj));
7
- }
8
- flattenColumnsWithPaths(columns) {
9
- const result = [];
10
- const recurse = (cols, currentPath = []) => {
11
- cols.forEach((col, index) => {
12
- const path = [...currentPath, index];
13
- result.push({ col, path });
14
- if (Array.isArray(col.children)) {
15
- recurse(col.children, path);
16
- }
17
- });
18
- };
19
- recurse(columns);
20
- return result;
21
- }
22
- findColumnByIndex(columns, index, flat, _path = [], currentPath = []) {
23
- for (let i = 0; i < columns.length; i++) {
24
- const col = columns[i];
25
- const nextPath = [...currentPath, i];
26
- if (flat[index] === col) {
27
- return { column: col, parent: columns, path: nextPath };
28
- }
29
- if (Array.isArray(col?.children)) {
30
- const result = this.findColumnByIndex(col?.children, index, flat, _path, nextPath);
31
- if (result)
32
- return result;
33
- }
34
- }
35
- return null;
36
- }
37
- insertAtPath(columns, path, newColumn) {
38
- const cloned = this.deepClone(columns);
39
- let current = cloned;
40
- for (let i = 0; i < path.length - 1; i++) {
41
- if (!current[path[i]]?.children) {
42
- current[path[i]].children = [];
43
- }
44
- current = current[path[i]]?.children;
45
- }
46
- const insertIndex = path[path.length - 1];
47
- current.splice(insertIndex, 0, newColumn);
48
- return cloned;
49
- }
50
- removeAtPath(columns, path) {
51
- const cloned = this.deepClone(columns);
52
- let current = cloned;
53
- for (let i = 0; i < path.length - 1; i++) {
54
- if (!current[path[i]]?.children) {
55
- return cloned; // Safety: path is invalid
56
- }
57
- current = current[path[i]]?.children;
58
- }
59
- const removeIndex = path[path.length - 1];
60
- if (Array.isArray(current) && current.length > removeIndex) {
61
- current.splice(removeIndex, 1);
62
- }
63
- return cloned;
64
- }
65
- swapColumnsInTree(currentColumn, columns, fromIndex, toIndex) {
66
- const flat = this.flattenColumnsWithPaths(columns);
67
- if (fromIndex < 0 ||
68
- toIndex < 0 ||
69
- fromIndex >= flat.length ||
70
- toIndex >= flat.length) {
71
- return columns; // invalid indices
72
- }
73
- const fromInfo = this.findColumnByIndex(columns, fromIndex, flat);
74
- const toInfo = this.findColumnByIndex(columns, toIndex, flat);
75
- if (!fromInfo || !toInfo)
76
- return columns;
77
- const fromCol = fromInfo.column;
78
- const toCol = toInfo.column;
79
- let updatedCols = this.removeAtPath(columns, fromInfo.path);
80
- // Case 1: Same parent
81
- if (JSON.stringify(fromInfo.path.slice(0, -1)) ===
82
- JSON.stringify(toInfo.path.slice(0, -1))) {
83
- return this.insertAtPath(updatedCols, toInfo.path, fromCol);
84
- }
85
- // Case 2: Drop target is a group header
86
- if (Array.isArray(toCol?.children)) {
87
- const cloned = this.deepClone(updatedCols);
88
- let parent = cloned;
89
- for (let i = 0; i < toInfo.path.length - 1; i++) {
90
- parent = parent[toInfo.path[i]].children;
91
- }
92
- const target = parent[toInfo.path[toInfo.path.length - 1]];
93
- if (!target.children) {
94
- target.children = [];
95
- }
96
- target.children.push(fromCol);
97
- return cloned;
98
- }
99
- // Case 3: Drop target is a regular column → wrap both into a group
100
- const groupHeader = {
101
- headerName: toCol.headerName || 'Group',
102
- children: [toCol, fromCol],
103
- };
104
- // Remove target from its original location
105
- updatedCols = this.removeAtPath(updatedCols, toInfo.path);
106
- // Insert group at target index
107
- return this.insertAtPath(updatedCols, toInfo.path, groupHeader);
108
- }
109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SwapColumnsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
110
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SwapColumnsService, providedIn: 'root' }); }
111
- }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SwapColumnsService, decorators: [{
113
- type: Injectable,
114
- args: [{
115
- providedIn: 'root',
116
- }]
117
- }], ctorParameters: function () { return []; } });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3dhcC1jb2x1bW5zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWdyaWQvc3JjL2xpYi9zZXJ2aWNlcy9zd2FwLWNvbHVtbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLGdCQUFlLENBQUM7SUFFaEIsU0FBUyxDQUFDLEdBQVE7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsT0FBYztRQUNwQyxNQUFNLE1BQU0sR0FBbUMsRUFBRSxDQUFDO1FBRWxELE1BQU0sT0FBTyxHQUFHLENBQUMsSUFBVyxFQUFFLGNBQXdCLEVBQUUsRUFBRSxFQUFFO1lBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQzFCLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7Z0JBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFM0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtvQkFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQzdCO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakIsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGlCQUFpQixDQUNmLE9BQWMsRUFDZCxLQUFhLEVBQ2IsSUFBVyxF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Q0FBQzsrR0EzSlUsa0JBQWtCO21IQUFsQixrQkFBa0IsY0FGakIsTUFBTTs7NEZBRVAsa0JBQWtCO2tCQUg5QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTd2FwQ29sdW1uc1NlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKCkge31cclxuXHJcbiAgZGVlcENsb25lKG9iajogYW55KSB7XHJcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcclxuICB9XHJcblxyXG4gIGZsYXR0ZW5Db2x1bW5zV2l0aFBhdGhzKGNvbHVtbnM6IGFueVtdKTogeyBjb2w6IGFueTsgcGF0aDogbnVtYmVyW10gfVtdIHtcclxuICAgIGNvbnN0IHJlc3VsdDogeyBjb2w6IGFueTsgcGF0aDogbnVtYmVyW10gfVtdID0gW107XHJcblxyXG4gICAgY29uc3QgcmVjdXJzZSA9IChjb2xzOiBhbnlbXSwgY3VycmVudFBhdGg6IG51bWJlcltdID0gW10pID0+IHtcclxuICAgICAgY29scy5mb3JFYWNoKChjb2wsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgcGF0aCA9IFsuLi5jdXJyZW50UGF0aCwgaW5kZXhdO1xyXG4gICAgICAgIHJlc3VsdC5wdXNoKHsgY29sLCBwYXRoIH0pO1xyXG5cclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICByZWN1cnNlKGNvbC5jaGlsZHJlbiwgcGF0aCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgcmVjdXJzZShjb2x1bW5zKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBmaW5kQ29sdW1uQnlJbmRleChcclxuICAgIGNvbHVtbnM6IGFueVtdLFxyXG4gICAgaW5kZXg6IG51bWJlcixcclxuICAgIGZsYXQ6IGFueVtdLFxyXG4gICAgX3BhdGg6IG51bWJlcltdW10gPSBbXSxcclxuICAgIGN1cnJlbnRQYXRoOiBudW1iZXJbXSA9IFtdXHJcbiAgKTogeyBjb2x1bW46IGFueTsgcGFyZW50OiBhbnlbXTsgcGF0aDogbnVtYmVyW10gfSB8IG51bGwge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGNvbCA9IGNvbHVtbnNbaV07XHJcbiAgICAgIGNvbnN0IG5leHRQYXRoID0gWy4uLmN1cnJlbnRQYXRoLCBpXTtcclxuXHJcbiAgICAgIGlmIChmbGF0W2luZGV4XSA9PT0gY29sKSB7XHJcbiAgICAgICAgcmV0dXJuIHsgY29sdW1uOiBjb2wsIHBhcmVudDogY29sdW1ucywgcGF0aDogbmV4dFBhdGggfTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29sPy5jaGlsZHJlbikpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmZpbmRDb2x1bW5CeUluZGV4KFxyXG4gICAgICAgICAgY29sPy5jaGlsZHJlbixcclxuICAgICAgICAgIGluZGV4LFxyXG4gICAgICAgICAgZmxhdCxcclxuICAgICAgICAgIF9wYXRoLFxyXG4gICAgICAgICAgbmV4dFBhdGhcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHJldHVybiByZXN1bHQ7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGluc2VydEF0UGF0aChjb2x1bW5zOiBhbnlbXSwgcGF0aDogbnVtYmVyW10sIG5ld0NvbHVtbjogYW55KTogYW55W10ge1xyXG4gICAgY29uc3QgY2xvbmVkID0gdGhpcy5kZWVwQ2xvbmUoY29sdW1ucyk7XHJcbiAgICBsZXQgY3VycmVudCA9IGNsb25lZDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgIGlmICghY3VycmVudFtwYXRoW2ldXT8uY2hpbGRyZW4pIHtcclxuICAgICAgICBjdXJyZW50W3BhdGhbaV1dIS5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjdXJyZW50ID0gY3VycmVudFtwYXRoW2ldXT8uY2hpbGRyZW47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgaW5zZXJ0SW5kZXggPSBwYXRoW3BhdGgubGVuZ3RoIC0gMV07XHJcbiAgICBjdXJyZW50LnNwbGljZShpbnNlcnRJbmRleCwgMCwgbmV3Q29sdW1uKTtcclxuICAgIHJldHVybiBjbG9uZWQ7XHJcbiAgfVxyXG5cclxuICByZW1vdmVBdFBhdGgoY29sdW1uczogYW55W10sIHBhdGg6IG51bWJlcltdKTogYW55W10ge1xyXG4gICAgY29uc3QgY2xvbmVkID0gdGhpcy5kZWVwQ2xvbmUoY29sdW1ucyk7XHJcbiAgICBsZXQgY3VycmVudCA9IGNsb25lZDtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhdGgubGVuZ3RoIC0gMTsgaSsrKSB7XHJcbiAgICAgIGlmICghY3VycmVudFtwYXRoW2ldXT8uY2hpbGRyZW4pIHtcclxuICAgICAgICByZXR1cm4gY2xvbmVkOyAvLyBTYWZldHk6IHBhdGggaXMgaW52YWxpZFxyXG4gICAgICB9XHJcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50W3BhdGhbaV1dPy5jaGlsZHJlbjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZW1vdmVJbmRleCA9IHBhdGhbcGF0aC5sZW5ndGggLSAxXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGN1cnJlbnQpICYmIGN1cnJlbnQubGVuZ3RoID4gcmVtb3ZlSW5kZXgpIHtcclxuICAgICAgY3VycmVudC5zcGxpY2UocmVtb3ZlSW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBjbG9uZWQ7XHJcbiAgfVxyXG5cclxuICBzd2FwQ29sdW1uc0luVHJlZShcclxuICAgIGN1cnJlbnRDb2x1bW46IGFueSxcclxuICAgIGNvbHVtbnM6IGFueVtdLFxyXG4gICAgZnJvbUluZGV4OiBudW1iZXIsXHJcbiAgICB0b0luZGV4OiBudW1iZXJcclxuICApOiBhbnlbXSB7XHJcbiAgICBjb25zdCBmbGF0ID0gdGhpcy5mbGF0dGVuQ29sdW1uc1dpdGhQYXRocyhjb2x1bW5zKTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgIGZyb21JbmRleCA8IDAgfHxcclxuICAgICAgdG9JbmRleCA8IDAgfHxcclxuICAgICAgZnJvbUluZGV4ID49IGZsYXQubGVuZ3RoIHx8XHJcbiAgICAgIHRvSW5kZXggPj0gZmxhdC5sZW5ndGhcclxuICAgICkge1xyXG4gICAgICByZXR1cm4gY29sdW1uczsgLy8gaW52YWxpZCBpbmRpY2VzXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZnJvbUluZm8gPSB0aGlzLmZpbmRDb2x1bW5CeUluZGV4KGNvbHVtbnMsIGZyb21JbmRleCwgZmxhdCk7XHJcbiAgICBjb25zdCB0b0luZm8gPSB0aGlzLmZpbmRDb2x1bW5CeUluZGV4KGNvbHVtbnMsIHRvSW5kZXgsIGZsYXQpO1xyXG5cclxuICAgIGlmICghZnJvbUluZm8gfHwgIXRvSW5mbykgcmV0dXJuIGNvbHVtbnM7XHJcblxyXG4gICAgY29uc3QgZnJvbUNvbCA9IGZyb21JbmZvLmNvbHVtbjtcclxuICAgIGNvbnN0IHRvQ29sID0gdG9JbmZvLmNvbHVtbjtcclxuXHJcbiAgICBsZXQgdXBkYXRlZENvbHMgPSB0aGlzLnJlbW92ZUF0UGF0aChjb2x1bW5zLCBmcm9tSW5mby5wYXRoKTtcclxuXHJcbiAgICAvLyBDYXNlIDE6IFNhbWUgcGFyZW50XHJcbiAgICBpZiAoXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KGZyb21JbmZvLnBhdGguc2xpY2UoMCwgLTEpKSA9PT1cclxuICAgICAgSlNPTi5zdHJpbmdpZnkodG9JbmZvLnBhdGguc2xpY2UoMCwgLTEpKVxyXG4gICAgKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmluc2VydEF0UGF0aCh1cGRhdGVkQ29scywgdG9JbmZvLnBhdGgsIGZyb21Db2wpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhc2UgMjogRHJvcCB0YXJnZXQgaXMgYSBncm91cCBoZWFkZXJcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRvQ29sPy5jaGlsZHJlbikpIHtcclxuICAgICAgY29uc3QgY2xvbmVkID0gdGhpcy5kZWVwQ2xvbmUodXBkYXRlZENvbHMpO1xyXG4gICAgICBsZXQgcGFyZW50ID0gY2xvbmVkO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b0luZm8ucGF0aC5sZW5ndGggLSAxOyBpKyspIHtcclxuICAgICAgICBwYXJlbnQgPSBwYXJlbnRbdG9JbmZvLnBhdGhbaV1dLmNoaWxkcmVuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCB0YXJnZXQgPSBwYXJlbnRbdG9JbmZvLnBhdGhbdG9JbmZvLnBhdGgubGVuZ3RoIC0gMV1dO1xyXG4gICAgICBpZiAoIXRhcmdldC5jaGlsZHJlbikge1xyXG4gICAgICAgIHRhcmdldC5jaGlsZHJlbiA9IFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0YXJnZXQuY2hpbGRyZW4ucHVzaChmcm9tQ29sKTtcclxuICAgICAgcmV0dXJuIGNsb25lZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDYXNlIDM6IERyb3AgdGFyZ2V0IGlzIGEgcmVndWxhciBjb2x1bW4g4oaSIHdyYXAgYm90aCBpbnRvIGEgZ3JvdXBcclxuICAgIGNvbnN0IGdyb3VwSGVhZGVyID0ge1xyXG4gICAgICBoZWFkZXJOYW1lOiB0b0NvbC5oZWFkZXJOYW1lIHx8ICdHcm91cCcsXHJcbiAgICAgIGNoaWxkcmVuOiBbdG9Db2wsIGZyb21Db2xdLFxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBSZW1vdmUgdGFyZ2V0IGZyb20gaXRzIG9yaWdpbmFsIGxvY2F0aW9uXHJcbiAgICB1cGRhdGVkQ29scyA9IHRoaXMucmVtb3ZlQXRQYXRoKHVwZGF0ZWRDb2xzLCB0b0luZm8ucGF0aCk7XHJcblxyXG4gICAgLy8gSW5zZXJ0IGdyb3VwIGF0IHRhcmdldCBpbmRleFxyXG4gICAgcmV0dXJuIHRoaXMuaW5zZXJ0QXRQYXRoKHVwZGF0ZWRDb2xzLCB0b0luZm8ucGF0aCwgZ3JvdXBIZWFkZXIpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,6 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class DataGridService {
3
- constructor();
4
- static ɵfac: i0.ɵɵFactoryDeclaration<DataGridService, never>;
5
- static ɵprov: i0.ɵɵInjectableDeclaration<DataGridService>;
6
- }
@@ -1,31 +0,0 @@
1
- import { ElementRef, EventEmitter, Renderer2 } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export interface DragMoveEvent {
4
- event: MouseEvent;
5
- data: any;
6
- }
7
- export declare class DraggableHeaderDirective {
8
- private el;
9
- private renderer;
10
- column: any;
11
- headerName: string;
12
- dragStart: EventEmitter<any>;
13
- dragMove: EventEmitter<any>;
14
- dragEnd: EventEmitter<any>;
15
- private isDragging;
16
- private placeholderEl;
17
- private previewEl;
18
- constructor(el: ElementRef, renderer: Renderer2);
19
- startX: number;
20
- startY: number;
21
- onMouseDown(event: MouseEvent): void;
22
- onMouseMove: (event: MouseEvent) => void;
23
- onMouseUp: (event: MouseEvent) => void;
24
- private originalCursor;
25
- private setCursor;
26
- private resetCursor;
27
- private startDragging;
28
- overrideCursor(style: string): void;
29
- static ɵfac: i0.ɵɵFactoryDeclaration<DraggableHeaderDirective, never>;
30
- static ɵdir: i0.ɵɵDirectiveDeclaration<DraggableHeaderDirective, "[appDraggableHeader]", never, { "column": { "alias": "column"; "required": false; }; "headerName": { "alias": "headerName"; "required": false; }; }, { "dragStart": "dragStart"; "dragMove": "dragMove"; "dragEnd": "dragEnd"; }, never, never, false, never>;
31
- }
@@ -1,19 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class SwapColumnsService {
3
- constructor();
4
- deepClone(obj: any): any;
5
- flattenColumnsWithPaths(columns: any[]): {
6
- col: any;
7
- path: number[];
8
- }[];
9
- findColumnByIndex(columns: any[], index: number, flat: any[], _path?: number[][], currentPath?: number[]): {
10
- column: any;
11
- parent: any[];
12
- path: number[];
13
- } | null;
14
- insertAtPath(columns: any[], path: number[], newColumn: any): any[];
15
- removeAtPath(columns: any[], path: number[]): any[];
16
- swapColumnsInTree(currentColumn: any, columns: any[], fromIndex: number, toIndex: number): any[];
17
- static ɵfac: i0.ɵɵFactoryDeclaration<SwapColumnsService, never>;
18
- static ɵprov: i0.ɵɵInjectableDeclaration<SwapColumnsService>;
19
- }