ms-data-grid 0.0.0-watch

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,44 @@
1
+ export const STATUSES_BADGE_MAP = {
2
+ // Success – Green
3
+ 'active': 'badge badge-success',
4
+ 'approved': 'badge badge-success',
5
+ 'accepted': 'badge badge-success',
6
+ 'completed': 'badge badge-success',
7
+ 'evaluated': 'badge badge-success',
8
+ 'assigned': 'badge badge-success',
9
+ 'scrap': 'badge badge-success',
10
+ 'move-available': 'badge badge-success',
11
+ 'move-assigned': 'badge badge-success',
12
+ // Warning – Yellow/Amber
13
+ 'contract': 'badge badge-warning',
14
+ 'warranty': 'badge badge-warning',
15
+ 'scheduled': 'badge badge-warning',
16
+ 'leased': 'badge badge-warning',
17
+ 'disposed': 'badge badge-warning',
18
+ 'maintenance': 'badge badge-warning',
19
+ 'assigning start': 'badge badge-warning',
20
+ 'evaluation start': 'badge badge-warning',
21
+ 'to be start assigning': 'badge badge-warning',
22
+ 'pending': 'badge badge-warning',
23
+ 'leave': 'badge badge-warning',
24
+ // Danger – Red
25
+ 'inactive': 'badge badge-danger',
26
+ 'rejected': 'badge badge-danger',
27
+ 'unassigned': 'badge badge-danger',
28
+ 'trashed': 'badge badge-danger',
29
+ 'onhold': 'badge badge-danger',
30
+ 'assigning stop': 'badge badge-danger',
31
+ 'evaluation stop': 'badge badge-danger',
32
+ 'unavailable': 'badge badge-danger',
33
+ 'move-error': 'badge badge-danger',
34
+ 'failed': 'badge badge-danger',
35
+ 'absent': 'badge badge-danger',
36
+ // Info – Blue
37
+ 'insurance': 'badge badge-info',
38
+ 'pastdue': 'badge badge-info',
39
+ // Dark – Neutral/Other
40
+ 'expired': 'badge badge-dark',
41
+ 'draft': 'badge badge-dark',
42
+ 'present': 'badge badge-success'
43
+ };
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWdyaWQvc3JjL2xpYi9kYXRhLWdyaWQvc3RhdHVzZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQThCO0lBQzNELG1CQUFtQjtJQUNuQixRQUFRLEVBQUUscUJBQXFCO0lBQy9CLFVBQVUsRUFBRSxxQkFBcUI7SUFDakMsVUFBVSxFQUFFLHFCQUFxQjtJQUNqQyxXQUFXLEVBQUUscUJBQXFCO0lBQ2xDLFdBQVcsRUFBRSxxQkFBcUI7SUFDbEMsVUFBVSxFQUFFLHFCQUFxQjtJQUNqQyxPQUFPLEVBQUUscUJBQXFCO0lBQzlCLGdCQUFnQixFQUFFLHFCQUFxQjtJQUN2QyxlQUFlLEVBQUUscUJBQXFCO0lBRXRDLHlCQUF5QjtJQUN6QixVQUFVLEVBQUUscUJBQXFCO0lBQ2pDLFVBQVUsRUFBRSxxQkFBcUI7SUFDakMsV0FBVyxFQUFFLHFCQUFxQjtJQUNsQyxRQUFRLEVBQUUscUJBQXFCO0lBQy9CLFVBQVUsRUFBRSxxQkFBcUI7SUFDakMsYUFBYSxFQUFFLHFCQUFxQjtJQUNwQyxpQkFBaUIsRUFBRSxxQkFBcUI7SUFDeEMsa0JBQWtCLEVBQUUscUJBQXFCO0lBQ3pDLHVCQUF1QixFQUFFLHFCQUFxQjtJQUM5QyxTQUFTLEVBQUUscUJBQXFCO0lBQ2hDLE9BQU8sRUFBRSxxQkFBcUI7SUFFOUIsZ0JBQWdCO0lBQ2hCLFVBQVUsRUFBRSxvQkFBb0I7SUFDaEMsVUFBVSxFQUFFLG9CQUFvQjtJQUNoQyxZQUFZLEVBQUUsb0JBQW9CO0lBQ2xDLFNBQVMsRUFBRSxvQkFBb0I7SUFDL0IsUUFBUSxFQUFFLG9CQUFvQjtJQUM5QixnQkFBZ0IsRUFBRSxvQkFBb0I7SUFDdEMsaUJBQWlCLEVBQUUsb0JBQW9CO0lBQ3ZDLGFBQWEsRUFBRSxvQkFBb0I7SUFDbkMsWUFBWSxFQUFFLG9CQUFvQjtJQUNsQyxRQUFRLEVBQUUsb0JBQW9CO0lBQzlCLFFBQVEsRUFBRSxvQkFBb0I7SUFFOUIsZUFBZTtJQUNmLFdBQVcsRUFBRSxrQkFBa0I7SUFDL0IsU0FBUyxFQUFFLGtCQUFrQjtJQUU3Qix3QkFBd0I7SUFDeEIsU0FBUyxFQUFFLGtCQUFrQjtJQUM3QixPQUFPLEVBQUUsa0JBQWtCO0lBQzNCLFNBQVMsRUFBRSxxQkFBcUI7Q0FDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBTVEFUVVNFU19CQURHRV9NQVA6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgLy8gIFN1Y2Nlc3Mg4oCTIEdyZWVuXHJcbiAgJ2FjdGl2ZSc6ICdiYWRnZSBiYWRnZS1zdWNjZXNzJyxcclxuICAnYXBwcm92ZWQnOiAnYmFkZ2UgYmFkZ2Utc3VjY2VzcycsXHJcbiAgJ2FjY2VwdGVkJzogJ2JhZGdlIGJhZGdlLXN1Y2Nlc3MnLFxyXG4gICdjb21wbGV0ZWQnOiAnYmFkZ2UgYmFkZ2Utc3VjY2VzcycsXHJcbiAgJ2V2YWx1YXRlZCc6ICdiYWRnZSBiYWRnZS1zdWNjZXNzJyxcclxuICAnYXNzaWduZWQnOiAnYmFkZ2UgYmFkZ2Utc3VjY2VzcycsXHJcbiAgJ3NjcmFwJzogJ2JhZGdlIGJhZGdlLXN1Y2Nlc3MnLFxyXG4gICdtb3ZlLWF2YWlsYWJsZSc6ICdiYWRnZSBiYWRnZS1zdWNjZXNzJyxcclxuICAnbW92ZS1hc3NpZ25lZCc6ICdiYWRnZSBiYWRnZS1zdWNjZXNzJyxcclxuXHJcbiAgLy8gV2FybmluZyDigJMgWWVsbG93L0FtYmVyXHJcbiAgJ2NvbnRyYWN0JzogJ2JhZGdlIGJhZGdlLXdhcm5pbmcnLFxyXG4gICd3YXJyYW50eSc6ICdiYWRnZSBiYWRnZS13YXJuaW5nJyxcclxuICAnc2NoZWR1bGVkJzogJ2JhZGdlIGJhZGdlLXdhcm5pbmcnLFxyXG4gICdsZWFzZWQnOiAnYmFkZ2UgYmFkZ2Utd2FybmluZycsXHJcbiAgJ2Rpc3Bvc2VkJzogJ2JhZGdlIGJhZGdlLXdhcm5pbmcnLFxyXG4gICdtYWludGVuYW5jZSc6ICdiYWRnZSBiYWRnZS13YXJuaW5nJyxcclxuICAnYXNzaWduaW5nIHN0YXJ0JzogJ2JhZGdlIGJhZGdlLXdhcm5pbmcnLFxyXG4gICdldmFsdWF0aW9uIHN0YXJ0JzogJ2JhZGdlIGJhZGdlLXdhcm5pbmcnLFxyXG4gICd0byBiZSBzdGFydCBhc3NpZ25pbmcnOiAnYmFkZ2UgYmFkZ2Utd2FybmluZycsXHJcbiAgJ3BlbmRpbmcnOiAnYmFkZ2UgYmFkZ2Utd2FybmluZycsXHJcbiAgJ2xlYXZlJzogJ2JhZGdlIGJhZGdlLXdhcm5pbmcnLFxyXG5cclxuICAvLyAgRGFuZ2VyIOKAkyBSZWRcclxuICAnaW5hY3RpdmUnOiAnYmFkZ2UgYmFkZ2UtZGFuZ2VyJyxcclxuICAncmVqZWN0ZWQnOiAnYmFkZ2UgYmFkZ2UtZGFuZ2VyJyxcclxuICAndW5hc3NpZ25lZCc6ICdiYWRnZSBiYWRnZS1kYW5nZXInLFxyXG4gICd0cmFzaGVkJzogJ2JhZGdlIGJhZGdlLWRhbmdlcicsXHJcbiAgJ29uaG9sZCc6ICdiYWRnZSBiYWRnZS1kYW5nZXInLFxyXG4gICdhc3NpZ25pbmcgc3RvcCc6ICdiYWRnZSBiYWRnZS1kYW5nZXInLFxyXG4gICdldmFsdWF0aW9uIHN0b3AnOiAnYmFkZ2UgYmFkZ2UtZGFuZ2VyJyxcclxuICAndW5hdmFpbGFibGUnOiAnYmFkZ2UgYmFkZ2UtZGFuZ2VyJyxcclxuICAnbW92ZS1lcnJvcic6ICdiYWRnZSBiYWRnZS1kYW5nZXInLFxyXG4gICdmYWlsZWQnOiAnYmFkZ2UgYmFkZ2UtZGFuZ2VyJyxcclxuICAnYWJzZW50JzogJ2JhZGdlIGJhZGdlLWRhbmdlcicsXHJcblxyXG4gIC8vICBJbmZvIOKAkyBCbHVlXHJcbiAgJ2luc3VyYW5jZSc6ICdiYWRnZSBiYWRnZS1pbmZvJyxcclxuICAncGFzdGR1ZSc6ICdiYWRnZSBiYWRnZS1pbmZvJyxcclxuXHJcbiAgLy8gIERhcmsg4oCTIE5ldXRyYWwvT3RoZXJcclxuICAnZXhwaXJlZCc6ICdiYWRnZSBiYWRnZS1kYXJrJyxcclxuICAnZHJhZnQnOiAnYmFkZ2UgYmFkZ2UtZGFyaycsXHJcbiAgJ3ByZXNlbnQnOiAnYmFkZ2UgYmFkZ2Utc3VjY2VzcydcclxufTtcclxuIl19
@@ -0,0 +1,26 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DataGridComponent } from './data-grid/data-grid.component';
3
+ import { CommonModule } from '@angular/common';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { FilterPipe } from './pipes/filter.pipe';
6
+ import { DraggableHeaderDirective } from './directives/draggable-header.directive';
7
+ import { DragDropModule } from '@angular/cdk/drag-drop';
8
+ import { InlineSVGModule } from 'ng-inline-svg';
9
+ import { ScrollingModule } from '@angular/cdk/scrolling';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "ng-inline-svg";
12
+ export class DataGridModule {
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataGridModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: DataGridModule, declarations: [DataGridComponent, FilterPipe, DraggableHeaderDirective], imports: [CommonModule, FormsModule, DragDropModule, i1.InlineSVGModule, ScrollingModule], exports: [DataGridComponent, DraggableHeaderDirective] }); }
15
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataGridModule, imports: [CommonModule, FormsModule, DragDropModule, InlineSVGModule.forRoot(), ScrollingModule] }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataGridModule, decorators: [{
18
+ type: NgModule,
19
+ args: [{
20
+ declarations: [DataGridComponent, FilterPipe, DraggableHeaderDirective],
21
+ imports: [CommonModule, FormsModule, DragDropModule, InlineSVGModule.forRoot(), ScrollingModule],
22
+ exports: [DataGridComponent, DraggableHeaderDirective],
23
+ providers: [],
24
+ }]
25
+ }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGEtZ3JpZC9zcmMvbGliL2RhdGEtZ3JpZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7OztBQVV6RCxNQUFNLE9BQU8sY0FBYzsrR0FBZCxjQUFjO2dIQUFkLGNBQWMsaUJBTFYsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLHdCQUF3QixhQUM1RCxZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWMsc0JBQTZCLGVBQWUsYUFDckYsaUJBQWlCLEVBQUUsd0JBQXdCO2dIQUcxQyxjQUFjLFlBSmYsWUFBWSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDLE9BQU8sRUFBRSxFQUFFLGVBQWU7OzRGQUlwRixjQUFjO2tCQU4xQixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSx3QkFBd0IsQ0FBQztvQkFDdkUsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsZUFBZSxDQUFDLE9BQU8sRUFBRSxFQUFFLGVBQWUsQ0FBQztvQkFDaEcsT0FBTyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsd0JBQXdCLENBQUM7b0JBQ3RELFNBQVMsRUFBRSxFQUFFO2lCQUNkIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGF0YUdyaWRDb21wb25lbnQgfSBmcm9tICcuL2RhdGEtZ3JpZC9kYXRhLWdyaWQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZpbHRlclBpcGUgfSBmcm9tICcuL3BpcGVzL2ZpbHRlci5waXBlJztcclxuaW1wb3J0IHsgRHJhZ2dhYmxlSGVhZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2RyYWdnYWJsZS1oZWFkZXIuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgSW5saW5lU1ZHTW9kdWxlIH0gZnJvbSAnbmctaW5saW5lLXN2Zyc7XHJcbmltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcclxuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7IFxyXG5cclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0RhdGFHcmlkQ29tcG9uZW50LCBGaWx0ZXJQaXBlLCBEcmFnZ2FibGVIZWFkZXJEaXJlY3RpdmVdLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBEcmFnRHJvcE1vZHVsZSwgSW5saW5lU1ZHTW9kdWxlLmZvclJvb3QoKSwgU2Nyb2xsaW5nTW9kdWxlXSxcclxuICBleHBvcnRzOiBbRGF0YUdyaWRDb21wb25lbnQsIERyYWdnYWJsZUhlYWRlckRpcmVjdGl2ZV0sXHJcbiAgcHJvdmlkZXJzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFHcmlkTW9kdWxlIHt9XHJcbiJdfQ==
@@ -0,0 +1,14 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class DataGridService {
4
+ constructor() { }
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataGridService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
6
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataGridService, providedIn: 'root' }); }
7
+ }
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DataGridService, decorators: [{
9
+ type: Injectable,
10
+ args: [{
11
+ providedIn: 'root'
12
+ }]
13
+ }], ctorParameters: function () { return []; } });
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1ncmlkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWdyaWQvc3JjL2xpYi9kYXRhLWdyaWQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sZUFBZTtJQUUxQixnQkFBZ0IsQ0FBQzsrR0FGTixlQUFlO21IQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIERhdGFHcmlkU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbn1cclxuIl19
@@ -0,0 +1,145 @@
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
@@ -0,0 +1,22 @@
1
+ import { Pipe } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class FilterPipe {
4
+ transform(items, searchText, key) {
5
+ if (!items || !searchText)
6
+ return items;
7
+ searchText = searchText.toLowerCase();
8
+ return items.filter(item => {
9
+ const value = key ? item?.[key] : item;
10
+ return value?.toString().toLowerCase().includes(searchText);
11
+ });
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
14
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: FilterPipe, name: "filter" }); }
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: FilterPipe, decorators: [{
17
+ type: Pipe,
18
+ args: [{
19
+ name: 'filter',
20
+ }]
21
+ }] });
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWdyaWQvc3JjL2xpYi9waXBlcy9maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFLcEQsTUFBTSxPQUFPLFVBQVU7SUFDdkIsU0FBUyxDQUFDLEtBQVksRUFBRSxVQUFrQixFQUFHLEdBQVk7UUFDdkQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLFVBQVU7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUV4QyxVQUFVLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXhDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN2QixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDdkMsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzlELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FWWSxVQUFVOzZHQUFWLFVBQVU7OzRGQUFWLFVBQVU7a0JBSHRCLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLFFBQVE7aUJBQ2YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5AUGlwZSh7XHJcbiAgbmFtZTogJ2ZpbHRlcicsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcbnRyYW5zZm9ybShpdGVtczogYW55W10sIHNlYXJjaFRleHQ6IHN0cmluZywgIGtleT86IHN0cmluZyk6IGFueVtdIHtcclxuICBpZiAoIWl0ZW1zIHx8ICFzZWFyY2hUZXh0KSByZXR1cm4gaXRlbXM7XHJcblxyXG4gIHNlYXJjaFRleHQgPSBzZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCk7XHJcblxyXG5yZXR1cm4gaXRlbXMuZmlsdGVyKGl0ZW0gPT4ge1xyXG4gICAgY29uc3QgdmFsdWUgPSBrZXkgPyBpdGVtPy5ba2V5XSA6IGl0ZW07XHJcbiAgICByZXR1cm4gdmFsdWU/LnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhzZWFyY2hUZXh0KTtcclxuICB9KTtcclxufX1cclxuIl19
@@ -0,0 +1,206 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class CommonService {
4
+ constructor() {
5
+ this.activeFilteredColumns = [];
6
+ }
7
+ gethasVisibleColumns(columns) {
8
+ const checkVisible = (columns) => {
9
+ return columns.some((col) => {
10
+ if (col?.is_visible)
11
+ return true;
12
+ if (col?.children?.length) {
13
+ return checkVisible(col.children);
14
+ }
15
+ return false;
16
+ });
17
+ };
18
+ return checkVisible(columns);
19
+ }
20
+ gethasInVisibleColumns(columns) {
21
+ const checkVisible = (columns) => {
22
+ return columns.some((col) => {
23
+ if (!col?.is_visible)
24
+ return true;
25
+ if (col?.children?.length) {
26
+ return checkVisible(col.children);
27
+ }
28
+ return false;
29
+ });
30
+ };
31
+ return checkVisible(columns);
32
+ }
33
+ getTotalColumnsLength(columns) {
34
+ let count = 0;
35
+ columns.forEach(col => {
36
+ if (col.children && Array.isArray(col.children) && col.children.length) {
37
+ count += col.children.length; // count children instead of parent
38
+ }
39
+ else {
40
+ count += 1; // count parent directly
41
+ }
42
+ });
43
+ return count;
44
+ }
45
+ gethasRightPinnedColumns(columns) {
46
+ const checkPinnedRight = (columns) => {
47
+ return columns.some((col) => {
48
+ if (col?.pinned === 'right' && col?.is_visible)
49
+ return true;
50
+ if (col?.children?.length) {
51
+ return checkPinnedRight(col.children);
52
+ }
53
+ return false;
54
+ });
55
+ };
56
+ return checkPinnedRight(columns);
57
+ }
58
+ gethasLeftPinnedColumns(columns) {
59
+ const checkPinnedRight = (columns) => {
60
+ return columns.some((col) => {
61
+ if (col?.pinned === 'left' && col?.is_visible)
62
+ return true;
63
+ if (col?.children?.length) {
64
+ return checkPinnedRight(col.children);
65
+ }
66
+ return false;
67
+ });
68
+ };
69
+ return checkPinnedRight(columns);
70
+ }
71
+ getExpandedRowCount(data) {
72
+ let groupCount = 0;
73
+ let rowCount = 0;
74
+ data.forEach(group => {
75
+ if (group?.isGroup) {
76
+ groupCount++;
77
+ if (group?.isExpand && Array.isArray(group?.children)) {
78
+ group.children.forEach((child) => {
79
+ if (child.isGroup) {
80
+ if (child.isExpand && Array.isArray(child.children)) {
81
+ rowCount += child.children.length;
82
+ }
83
+ }
84
+ else {
85
+ rowCount++;
86
+ }
87
+ });
88
+ }
89
+ }
90
+ });
91
+ if (groupCount === 0) {
92
+ return data.length;
93
+ }
94
+ return groupCount + rowCount;
95
+ }
96
+ getFiltersFromColumns(columns, filtersConfig) {
97
+ const result = [];
98
+ const checkColumn = (col) => {
99
+ const hasFirstValue = col.query?.first_value != null && col.query?.first_value !== "" && filtersConfig.some((ele) => ele.field == col.field);
100
+ const hasIds = Array.isArray(col.query?._ids) && col.query._ids.length > 0 && filtersConfig.some((ele) => ele.field == col.field);
101
+ if (hasFirstValue || hasIds) {
102
+ result.push({
103
+ search: col.search ?? "",
104
+ field: col.field,
105
+ type: col.type,
106
+ _ids: col.type == 'dropdown' ? col.query?._ids : [],
107
+ query: col.type == 'dropdown' ? null : (col?.query?.first_value ? col?.query : null)
108
+ });
109
+ }
110
+ if (Array.isArray(col.children) && col.children.length > 0) {
111
+ col.children.forEach(checkColumn);
112
+ }
113
+ };
114
+ columns.forEach(checkColumn);
115
+ return result;
116
+ }
117
+ async applyFiltersToColumns(columns, filters) {
118
+ for (const col of columns) {
119
+ if (!col.query) {
120
+ col.query = {
121
+ first_value: null,
122
+ second_value: null,
123
+ first_condition: col.type !== 'date' ? 'contain' : 'equal',
124
+ second_condition: null,
125
+ condition: 'none',
126
+ _ids: []
127
+ };
128
+ }
129
+ const filter = filters.find(f => f.field === col.field);
130
+ if (filter) {
131
+ if (col.type === 'dropdown') {
132
+ col.filterValue = filter._ids ?? [];
133
+ col.search = filter.search ?? '';
134
+ col.query._ids = filter._ids ?? [];
135
+ }
136
+ else {
137
+ col.filterValue = filter.search || filter.query.first_value;
138
+ col.search = filter.search ?? '';
139
+ col.query.first_value = filter.query?.first_value ?? null;
140
+ col.query.second_value = filter.query?.second_value ?? null;
141
+ col.query.first_condition = filter.query?.first_condition || filter.type !== 'date' ? 'contain' : 'equal';
142
+ col.query.second_condition = filter.query?.second_condition || null;
143
+ col.query.condition = filter.query?.condition ?? 'none';
144
+ }
145
+ }
146
+ if (Array.isArray(col.children) && col.children.length > 0) {
147
+ col.children = await this.applyFiltersToColumns(col.children, filters);
148
+ }
149
+ }
150
+ return columns;
151
+ }
152
+ updateActiveFilteredColumns(columns) {
153
+ const collectFiltered = (cols) => {
154
+ let result = [];
155
+ for (let i = 0; i < cols.length; i++) {
156
+ const col = cols[i];
157
+ if (col.children && col.children.length > 0) {
158
+ result = result.concat(collectFiltered(col.children));
159
+ }
160
+ if (col.query) {
161
+ const hasDropdownFilter = Array.isArray(col.query._ids) && col.query._ids.length > 0;
162
+ const hasValueFilter = (col.query.first_value && col.query.first_value !== '') ||
163
+ (col.query.second_value && col.query.second_value !== '');
164
+ if (hasDropdownFilter || hasValueFilter) {
165
+ result.push(col);
166
+ }
167
+ }
168
+ }
169
+ return result;
170
+ };
171
+ this.activeFilteredColumns = [...collectFiltered(columns)];
172
+ return this.activeFilteredColumns;
173
+ }
174
+ hasFieldChanged(current, original, type) {
175
+ switch (type) {
176
+ case 'number':
177
+ return Number(current) !== Number(original);
178
+ case 'string':
179
+ return String(current || '') !== String(original || '');
180
+ case 'dropdown':
181
+ if (typeof current === 'object' && typeof original === 'object') {
182
+ return current?.id !== original?.id || current?.value !== original?.value;
183
+ }
184
+ return current !== original;
185
+ case 'boolean':
186
+ return Boolean(current) !== Boolean(original);
187
+ case 'date':
188
+ const currentDate = new Date(current).getTime();
189
+ const originalDate = new Date(original).getTime();
190
+ return isNaN(currentDate) || isNaN(originalDate)
191
+ ? current !== original
192
+ : currentDate !== originalDate;
193
+ default:
194
+ return JSON.stringify(current) !== JSON.stringify(original);
195
+ }
196
+ }
197
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CommonService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
198
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CommonService, providedIn: 'root' }); }
199
+ }
200
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CommonService, decorators: [{
201
+ type: Injectable,
202
+ args: [{
203
+ providedIn: 'root'
204
+ }]
205
+ }], ctorParameters: function () { return []; } });
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kYXRhLWdyaWQvc3JjL2xpYi9zZXJ2aWNlcy9jb21tb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sYUFBYTtJQUV4QjtRQXFLRiwwQkFBcUIsR0FBVSxFQUFFLENBQUM7SUFyS2hCLENBQUM7SUFDakIsb0JBQW9CLENBQUMsT0FBYztRQUNqQyxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWMsRUFBVyxFQUFFO1lBQy9DLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMxQixJQUFJLEdBQUcsRUFBRSxVQUFVO29CQUFFLE9BQU8sSUFBSSxDQUFDO2dCQUNqQyxJQUFJLEdBQUcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFO29CQUN6QixPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ25DO2dCQUNELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUM7UUFDRixPQUFPLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsc0JBQXNCLENBQUMsT0FBYztRQUNuQyxNQUFNLFlBQVksR0FBRyxDQUFDLE9BQWMsRUFBVyxFQUFFO1lBQy9DLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUMxQixJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVU7b0JBQUUsT0FBTyxJQUFJLENBQUM7Z0JBQ2xDLElBQUksR0FBRyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUU7b0JBQ3pCLE9BQU8sWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDbkM7Z0JBQ0Qs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QUssQ0FBQyxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDO29CQUM5QyxDQUFDLENBQUMsT0FBTyxLQUFLLFFBQVE7b0JBQ3RCLENBQUMsQ0FBQyxXQUFXLEtBQUssWUFBWSxDQUFDO1lBRW5DO2dCQUNFLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQzsrR0FsT1UsYUFBYTttSEFBYixhQUFhLGNBRlosTUFBTTs7NEZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25TZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuICBnZXRoYXNWaXNpYmxlQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2hlY2tWaXNpYmxlID0gKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIHJldHVybiBjb2x1bW5zLnNvbWUoKGNvbCkgPT4ge1xyXG4gICAgICAgIGlmIChjb2w/LmlzX3Zpc2libGUpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChjb2w/LmNoaWxkcmVuPy5sZW5ndGgpIHtcclxuICAgICAgICAgIHJldHVybiBjaGVja1Zpc2libGUoY29sLmNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9KTtcclxuICAgIH07XHJcbiAgICByZXR1cm4gY2hlY2tWaXNpYmxlKGNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0aGFzSW5WaXNpYmxlQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2hlY2tWaXNpYmxlID0gKGNvbHVtbnM6IGFueVtdKTogYm9vbGVhbiA9PiB7XHJcbiAgICAgIHJldHVybiBjb2x1bW5zLnNvbWUoKGNvbCkgPT4ge1xyXG4gICAgICAgIGlmICghY29sPy5pc192aXNpYmxlKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAoY29sPy5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gY2hlY2tWaXNpYmxlKGNvbC5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGNoZWNrVmlzaWJsZShjb2x1bW5zKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRUb3RhbENvbHVtbnNMZW5ndGgoY29sdW1uczogYW55W10pOiBudW1iZXIge1xyXG4gICAgbGV0IGNvdW50ID0gMDtcclxuXHJcbiAgICBjb2x1bW5zLmZvckVhY2goY29sID0+IHtcclxuICAgICAgaWYgKGNvbC5jaGlsZHJlbiAmJiBBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikgJiYgY29sLmNoaWxkcmVuLmxlbmd0aCkge1xyXG4gICAgICAgIGNvdW50ICs9IGNvbC5jaGlsZHJlbi5sZW5ndGg7IC8vIGNvdW50IGNoaWxkcmVuIGluc3RlYWQgb2YgcGFyZW50XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY291bnQgKz0gMTsgLy8gY291bnQgcGFyZW50IGRpcmVjdGx5XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBjb3VudDtcclxuICB9XHJcblxyXG4gIGdldGhhc1JpZ2h0UGlubmVkQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgY2hlY2tQaW5uZWRSaWdodCA9IChjb2x1bW5zOiBhbnlbXSk6IGJvb2xlYW4gPT4ge1xyXG4gICAgICByZXR1cm4gY29sdW1ucy5zb21lKChjb2wpID0+IHtcclxuICAgICAgICBpZiAoY29sPy5waW5uZWQgPT09ICdyaWdodCcgJiYgY29sPy5pc192aXNpYmxlKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAoY29sPy5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gY2hlY2tQaW5uZWRSaWdodChjb2wuY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBjaGVja1Bpbm5lZFJpZ2h0KGNvbHVtbnMpO1xyXG4gIH1cclxuXHJcbiAgZ2V0aGFzTGVmdFBpbm5lZENvbHVtbnMoY29sdW1uczogYW55W10pOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGNoZWNrUGlubmVkUmlnaHQgPSAoY29sdW1uczogYW55W10pOiBib29sZWFuID0+IHtcclxuICAgICAgcmV0dXJuIGNvbHVtbnMuc29tZSgoY29sKSA9PiB7XHJcbiAgICAgICAgaWYgKGNvbD8ucGlubmVkID09PSAnbGVmdCcgJiYgY29sPy5pc192aXNpYmxlKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAoY29sPy5jaGlsZHJlbj8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gY2hlY2tQaW5uZWRSaWdodChjb2wuY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuICAgIHJldHVybiBjaGVja1Bpbm5lZFJpZ2h0KGNvbHVtbnMpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdldEV4cGFuZGVkUm93Q291bnQoZGF0YTogYW55W10pOiBudW1iZXIge1xyXG4gICAgbGV0IGdyb3VwQ291bnQgPSAwO1xyXG4gICAgbGV0IHJvd0NvdW50ID0gMDtcclxuXHJcbiAgICBkYXRhLmZvckVhY2goZ3JvdXAgPT4ge1xyXG4gICAgICBpZiAoZ3JvdXA/LmlzR3JvdXApIHtcclxuICAgICAgICBncm91cENvdW50Kys7XHJcblxyXG4gICAgICAgIGlmIChncm91cD8uaXNFeHBhbmQgJiYgQXJyYXkuaXNBcnJheShncm91cD8uY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICBncm91cC5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZC5pc0dyb3VwKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGNoaWxkLmlzRXhwYW5kICYmIEFycmF5LmlzQXJyYXkoY2hpbGQuY2hpbGRyZW4pKSB7XHJcbiAgICAgICAgICAgICAgICByb3dDb3VudCArPSBjaGlsZC5jaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJvd0NvdW50Kys7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGdyb3VwQ291bnQgPT09IDApIHtcclxuICAgICAgcmV0dXJuIGRhdGEubGVuZ3RoO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBncm91cENvdW50ICsgcm93Q291bnQ7XHJcbiAgfVxyXG5cclxuXHJcbmdldEZpbHRlcnNGcm9tQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSwgZmlsdGVyc0NvbmZpZzphbnkgW10pOiBhbnlbXSB7XHJcbiAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gXHJcbiAgY29uc3QgY2hlY2tDb2x1bW4gPSAoY29sOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IGhhc0ZpcnN0VmFsdWUgPSBjb2wucXVlcnk/LmZpcnN0X3ZhbHVlICE9IG51bGwgJiYgY29sLnF1ZXJ5Py5maXJzdF92YWx1ZSAhPT0gXCJcIiAmJiBmaWx0ZXJzQ29uZmlnLnNvbWUoKGVsZSk9PiBlbGUuZmllbGQgPT0gY29sLmZpZWxkKTtcclxuICAgIGNvbnN0IGhhc0lkcyA9IEFycmF5LmlzQXJyYXkoY29sLnF1ZXJ5Py5faWRzKSAmJiBjb2wucXVlcnkuX2lkcy5sZW5ndGggPiAwICYmIGZpbHRlcnNDb25maWcuc29tZSgoZWxlKT0+IGVsZS5maWVsZCA9PSBjb2wuZmllbGQpO1xyXG4gICAgaWYgKGhhc0ZpcnN0VmFsdWUgfHwgaGFzSWRzKSB7XHJcbiAgICAgIHJlc3VsdC5wdXNoKHtcclxuICAgICAgICBzZWFyY2g6IGNvbC5zZWFyY2ggPz8gXCJcIixcclxuICAgICAgICBmaWVsZDogY29sLmZpZWxkLFxyXG4gICAgICAgIHR5cGU6IGNvbC50eXBlLFxyXG4gICAgICAgIF9pZHM6IGNvbC50eXBlID09ICdkcm9wZG93bic/IGNvbC5xdWVyeT8uX2lkczogW10sXHJcbiAgICAgICAgcXVlcnk6IGNvbC50eXBlID09ICdkcm9wZG93bic/IG51bGwgOiAoY29sPy5xdWVyeT8uZmlyc3RfdmFsdWUgPyBjb2w/LnF1ZXJ5IDogbnVsbClcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiBcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbC5jaGlsZHJlbikgJiYgY29sLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29sLmNoaWxkcmVuLmZvckVhY2goY2hlY2tDb2x1bW4pO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgY29sdW1ucy5mb3JFYWNoKGNoZWNrQ29sdW1uKTtcclxuIFxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmFzeW5jIGFwcGx5RmlsdGVyc1RvQ29sdW1ucyhjb2x1bW5zOiBhbnlbXSwgZmlsdGVyczogYW55W10pOiBQcm9taXNlPGFueVtdPiB7XHJcbiAgZm9yIChjb25zdCBjb2wgb2YgY29sdW1ucykge1xyXG4gICAgaWYgKCFjb2wucXVlcnkpIHtcclxuICAgICAgY29sLnF1ZXJ5ID0ge1xyXG4gICAgICAgIGZpcnN0X3ZhbHVlOiBudWxsLFxyXG4gICAgICAgIHNlY29uZF92YWx1ZTogbnVsbCxcclxuICAgICAgICBmaXJzdF9jb25kaXRpb246IGNvbC50eXBlICE9PSAnZGF0ZSc/ICdjb250YWluJzogJ2VxdWFsJyxcclxuICAgICAgICBzZWNvbmRfY29uZGl0aW9uOiBudWxsLFxyXG4gICAgICAgIGNvbmRpdGlvbjogJ25vbmUnLFxyXG4gICAgICAgIF9pZHM6IFtdXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZmlsdGVyID0gZmlsdGVycy5maW5kKGYgPT4gZi5maWVsZCA9PT0gY29sLmZpZWxkKTtcclxuXHJcbiAgICBpZiAoZmlsdGVyKSB7XHJcbiAgICAgIGlmIChjb2wudHlwZSA9PT0gJ2Ryb3Bkb3duJykge1xyXG4gICAgICAgIGNvbC5maWx0ZXJWYWx1ZSA9IGZpbHRlci5faWRzID8/IFtdO1xyXG4gICAgICAgIGNvbC5zZWFyY2ggPSBmaWx0ZXIuc2VhcmNoID8/ICcnO1xyXG4gICAgICAgIGNvbC5xdWVyeS5faWRzID0gZmlsdGVyLl9pZHMgPz8gW107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29sLmZpbHRlclZhbHVlID0gZmlsdGVyLnNlYXJjaCB8fCBmaWx0ZXIucXVlcnkuZmlyc3RfdmFsdWU7XHJcbiAgICAgICAgY29sLnNlYXJjaCA9IGZpbHRlci5zZWFyY2ggPz8gJyc7XHJcbiAgICAgICAgY29sLnF1ZXJ5LmZpcnN0X3ZhbHVlID0gZmlsdGVyLnF1ZXJ5Py5maXJzdF92YWx1ZSA/PyBudWxsO1xyXG4gICAgICAgIGNvbC5xdWVyeS5zZWNvbmRfdmFsdWUgPSBmaWx0ZXIucXVlcnk/LnNlY29uZF92YWx1ZSA/PyBudWxsO1xyXG4gICAgICAgIGNvbC5xdWVyeS5maXJzdF9jb25kaXRpb24gPSBmaWx0ZXIucXVlcnk/LmZpcnN0X2NvbmRpdGlvbiB8fCBmaWx0ZXIudHlwZSAhPT0gJ2RhdGUnPyAnY29udGFpbic6ICdlcXVhbCc7XHJcbiAgICAgICAgY29sLnF1ZXJ5LnNlY29uZF9jb25kaXRpb24gPSBmaWx0ZXIucXVlcnk/LnNlY29uZF9jb25kaXRpb24gfHwgbnVsbDtcclxuICAgICAgICBjb2wucXVlcnkuY29uZGl0aW9uID0gZmlsdGVyLnF1ZXJ5Py5jb25kaXRpb24gPz8gJ25vbmUnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb2wuY2hpbGRyZW4pICYmIGNvbC5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbC5jaGlsZHJlbiA9IGF3YWl0IHRoaXMuYXBwbHlGaWx0ZXJzVG9Db2x1bW5zKGNvbC5jaGlsZHJlbiwgZmlsdGVycyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBjb2x1bW5zO1xyXG59XHJcblxyXG5cclxuXHJcblxyXG5cclxuYWN0aXZlRmlsdGVyZWRDb2x1bW5zOiBhbnlbXSA9IFtdO1xyXG51cGRhdGVBY3RpdmVGaWx0ZXJlZENvbHVtbnMoY29sdW1uczogYW55W10pOiBhbnlbXSB7XHJcbiAgY29uc3QgY29sbGVjdEZpbHRlcmVkID0gKGNvbHM6IGFueVtdKTogYW55W10gPT4ge1xyXG4gICAgbGV0IHJlc3VsdDogYW55W10gPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgY29sID0gY29sc1tpXTtcclxuICAgICAgaWYgKGNvbC5jaGlsZHJlbiAmJiBjb2wuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoY29sbGVjdEZpbHRlcmVkKGNvbC5jaGlsZHJlbikpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoY29sLnF1ZXJ5KSB7XHJcbiAgICAgICAgY29uc3QgaGFzRHJvcGRvd25GaWx0ZXIgPVxyXG4gICAgICAgICAgQXJyYXkuaXNBcnJheShjb2wucXVlcnkuX2lkcykgJiYgY29sLnF1ZXJ5Ll9pZHMubGVuZ3RoID4gMDtcclxuXHJcbiAgICAgICAgY29uc3QgaGFzVmFsdWVGaWx0ZXIgPVxyXG4gICAgICAgICAgKGNvbC5xdWVyeS5maXJzdF92YWx1ZSAmJiBjb2wucXVlcnkuZmlyc3RfdmFsdWUgIT09ICcnKSB8fFxyXG4gICAgICAgICAgKGNvbC5xdWVyeS5zZWNvbmRfdmFsdWUgJiYgY29sLnF1ZXJ5LnNlY29uZF92YWx1ZSAhPT0gJycpO1xyXG5cclxuICAgICAgICBpZiAoaGFzRHJvcGRvd25GaWx0ZXIgfHwgaGFzVmFsdWVGaWx0ZXIpIHtcclxuICAgICAgICAgIHJlc3VsdC5wdXNoKGNvbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH07XHJcbiAgdGhpcy5hY3RpdmVGaWx0ZXJlZENvbHVtbnMgPSBbLi4uY29sbGVjdEZpbHRlcmVkKGNvbHVtbnMpXTtcclxuICByZXR1cm4gdGhpcy5hY3RpdmVGaWx0ZXJlZENvbHVtbnM7XHJcbn1cclxuXHJcblxyXG5cclxuaGFzRmllbGRDaGFuZ2VkKGN1cnJlbnQ6IGFueSwgb3JpZ2luYWw6IGFueSwgdHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgY2FzZSAnbnVtYmVyJzpcclxuICAgICAgICByZXR1cm4gTnVtYmVyKGN1cnJlbnQpICE9PSBOdW1iZXIob3JpZ2luYWwpO1xyXG5cclxuICAgICAgY2FzZSAnc3RyaW5nJzpcclxuICAgICAgICByZXR1cm4gU3RyaW5nKGN1cnJlbnQgfHwgJycpICE9PSBTdHJpbmcob3JpZ2luYWwgfHwgJycpO1xyXG5cclxuICAgICAgY2FzZSAnZHJvcGRvd24nOlxyXG4gICAgICAgIGlmICh0eXBlb2YgY3VycmVudCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9yaWdpbmFsID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQ/LmlkICE9PSBvcmlnaW5hbD8uaWQgfHwgY3VycmVudD8udmFsdWUgIT09IG9yaWdpbmFsPy52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGN1cnJlbnQgIT09IG9yaWdpbmFsO1xyXG5cclxuICAgICAgY2FzZSAnYm9vbGVhbic6XHJcbiAgICAgICAgcmV0dXJuIEJvb2xlYW4oY3VycmVudCkgIT09IEJvb2xlYW4ob3JpZ2luYWwpO1xyXG5cclxuICAgICAgY2FzZSAnZGF0ZSc6XHJcbiAgICAgICAgY29uc3QgY3VycmVudERhdGUgPSBuZXcgRGF0ZShjdXJyZW50KS5nZXRUaW1lKCk7XHJcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxEYXRlID0gbmV3IERhdGUob3JpZ2luYWwpLmdldFRpbWUoKTtcclxuICAgICAgICByZXR1cm4gaXNOYU4oY3VycmVudERhdGUpIHx8IGlzTmFOKG9yaWdpbmFsRGF0ZSlcclxuICAgICAgICAgID8gY3VycmVudCAhPT0gb3JpZ2luYWxcclxuICAgICAgICAgIDogY3VycmVudERhdGUgIT09IG9yaWdpbmFsRGF0ZTtcclxuXHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGN1cnJlbnQpICE9PSBKU09OLnN0cmluZ2lmeShvcmlnaW5hbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuXHJcblxyXG5cclxuXHJcbiJdfQ==