@swimlane/ngx-datatable 18.0.0 → 20.0.0-alpha-1

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.
Files changed (136) hide show
  1. package/README.md +0 -1
  2. package/esm2020/lib/components/body/body-cell.component.mjs +432 -0
  3. package/esm2020/lib/components/body/body-group-header-template.directive.mjs +16 -0
  4. package/esm2020/lib/components/body/body-group-header.directive.mjs +62 -0
  5. package/esm2020/lib/components/body/body-row-wrapper.component.mjs +140 -0
  6. package/esm2020/lib/components/body/body-row.component.mjs +262 -0
  7. package/esm2020/lib/components/body/body.component.mjs +863 -0
  8. package/esm2020/lib/components/body/progress-bar.component.mjs +27 -0
  9. package/esm2020/lib/components/body/scroller.component.mjs +91 -0
  10. package/esm2020/lib/components/body/selection.component.mjs +150 -0
  11. package/esm2020/lib/components/body/summary/summary-row.component.mjs +105 -0
  12. package/esm2020/lib/components/columns/column-cell.directive.mjs +14 -0
  13. package/esm2020/lib/components/columns/column-header.directive.mjs +14 -0
  14. package/esm2020/lib/components/columns/column.directive.mjs +98 -0
  15. package/esm2020/lib/components/columns/tree.directive.mjs +14 -0
  16. package/esm2020/lib/components/datatable.component.mjs +1008 -0
  17. package/esm2020/lib/components/footer/footer-template.directive.mjs +14 -0
  18. package/esm2020/lib/components/footer/footer.component.mjs +128 -0
  19. package/esm2020/lib/components/footer/footer.directive.mjs +35 -0
  20. package/esm2020/lib/components/footer/pager.component.mjs +181 -0
  21. package/esm2020/lib/components/header/header-cell.component.mjs +243 -0
  22. package/esm2020/lib/components/header/header.component.mjs +376 -0
  23. package/esm2020/lib/components/row-detail/row-detail-template.directive.mjs +16 -0
  24. package/esm2020/lib/components/row-detail/row-detail.directive.mjs +63 -0
  25. package/esm2020/lib/directives/draggable.directive.mjs +108 -0
  26. package/esm2020/lib/directives/long-press.directive.mjs +117 -0
  27. package/esm2020/lib/directives/orderable.directive.mjs +136 -0
  28. package/esm2020/lib/directives/resizeable.directive.mjs +93 -0
  29. package/esm2020/lib/directives/visibility.directive.mjs +63 -0
  30. package/{esm2015/lib/events.js → esm2020/lib/events.mjs} +0 -0
  31. package/esm2020/lib/ngx-datatable.module.mjs +139 -0
  32. package/esm2020/lib/services/column-changes.service.mjs +24 -0
  33. package/esm2020/lib/services/dimensions-helper.service.mjs +17 -0
  34. package/esm2020/lib/services/scrollbar-helper.service.mjs +37 -0
  35. package/{esm2015/lib/types/click.type.js → esm2020/lib/types/click.type.mjs} +0 -0
  36. package/{esm2015/lib/types/column-mode.type.js → esm2020/lib/types/column-mode.type.mjs} +0 -0
  37. package/{esm2015/lib/types/contextmenu.type.js → esm2020/lib/types/contextmenu.type.mjs} +0 -0
  38. package/{esm2015/lib/types/selection.type.js → esm2020/lib/types/selection.type.mjs} +0 -0
  39. package/{esm2015/lib/types/sort-direction.type.js → esm2020/lib/types/sort-direction.type.mjs} +0 -0
  40. package/{esm2015/lib/types/sort-prop-dir.type.js → esm2020/lib/types/sort-prop-dir.type.mjs} +1 -0
  41. package/{esm2015/lib/types/sort.type.js → esm2020/lib/types/sort.type.mjs} +0 -0
  42. package/{esm2015/lib/types/table-column.type.js → esm2020/lib/types/table-column.type.mjs} +1 -0
  43. package/{esm2015/lib/utils/camel-case.js → esm2020/lib/utils/camel-case.mjs} +0 -0
  44. package/{esm2015/lib/utils/column-helper.js → esm2020/lib/utils/column-helper.mjs} +0 -0
  45. package/{esm2015/lib/utils/column-prop-getters.js → esm2020/lib/utils/column-prop-getters.mjs} +0 -0
  46. package/{esm2015/lib/utils/column.js → esm2020/lib/utils/column.mjs} +0 -0
  47. package/{esm2015/lib/utils/elm-from-point.js → esm2020/lib/utils/elm-from-point.mjs} +0 -0
  48. package/{esm2015/lib/utils/id.js → esm2020/lib/utils/id.mjs} +0 -0
  49. package/{esm2015/lib/utils/keys.js → esm2020/lib/utils/keys.mjs} +0 -0
  50. package/{esm2015/lib/utils/math.js → esm2020/lib/utils/math.mjs} +0 -0
  51. package/esm2020/lib/utils/prefixes.mjs +38 -0
  52. package/{esm2015/lib/utils/row-height-cache.js → esm2020/lib/utils/row-height-cache.mjs} +0 -0
  53. package/{esm2015/lib/utils/selection.js → esm2020/lib/utils/selection.mjs} +0 -0
  54. package/{esm2015/lib/utils/sort.js → esm2020/lib/utils/sort.mjs} +0 -0
  55. package/{esm2015/lib/utils/throttle.js → esm2020/lib/utils/throttle.mjs} +0 -0
  56. package/{esm2015/lib/utils/translate.js → esm2020/lib/utils/translate.mjs} +0 -0
  57. package/{esm2015/lib/utils/tree.js → esm2020/lib/utils/tree.mjs} +0 -0
  58. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  59. package/{esm2015/swimlane-ngx-datatable.js → esm2020/swimlane-ngx-datatable.mjs} +0 -0
  60. package/fesm2015/{swimlane-ngx-datatable.js → swimlane-ngx-datatable.mjs} +4104 -3337
  61. package/fesm2015/swimlane-ngx-datatable.mjs.map +1 -0
  62. package/fesm2020/swimlane-ngx-datatable.mjs +5974 -0
  63. package/fesm2020/swimlane-ngx-datatable.mjs.map +1 -0
  64. package/lib/components/body/body-cell.component.d.ts +3 -0
  65. package/lib/components/body/body-group-header-template.directive.d.ts +3 -0
  66. package/lib/components/body/body-group-header.directive.d.ts +3 -0
  67. package/lib/components/body/body-row-wrapper.component.d.ts +3 -0
  68. package/lib/components/body/body-row.component.d.ts +3 -0
  69. package/lib/components/body/body.component.d.ts +3 -0
  70. package/lib/components/body/progress-bar.component.d.ts +3 -0
  71. package/lib/components/body/scroller.component.d.ts +3 -0
  72. package/lib/components/body/selection.component.d.ts +3 -0
  73. package/lib/components/body/summary/summary-row.component.d.ts +3 -0
  74. package/lib/components/columns/column-cell.directive.d.ts +3 -0
  75. package/lib/components/columns/column-header.directive.d.ts +3 -0
  76. package/lib/components/columns/column.directive.d.ts +3 -0
  77. package/lib/components/columns/tree.directive.d.ts +3 -0
  78. package/lib/components/datatable.component.d.ts +3 -0
  79. package/lib/components/footer/footer-template.directive.d.ts +3 -0
  80. package/lib/components/footer/footer.component.d.ts +3 -0
  81. package/lib/components/footer/footer.directive.d.ts +3 -0
  82. package/lib/components/footer/pager.component.d.ts +3 -0
  83. package/lib/components/header/header-cell.component.d.ts +3 -0
  84. package/lib/components/header/header.component.d.ts +3 -0
  85. package/lib/components/row-detail/row-detail-template.directive.d.ts +3 -0
  86. package/lib/components/row-detail/row-detail.directive.d.ts +3 -0
  87. package/lib/directives/draggable.directive.d.ts +3 -0
  88. package/lib/directives/long-press.directive.d.ts +3 -0
  89. package/lib/directives/orderable.directive.d.ts +3 -0
  90. package/lib/directives/resizeable.directive.d.ts +3 -0
  91. package/lib/directives/visibility.directive.d.ts +3 -0
  92. package/lib/ngx-datatable.module.d.ts +33 -0
  93. package/lib/services/column-changes.service.d.ts +3 -0
  94. package/lib/services/dimensions-helper.service.d.ts +3 -0
  95. package/lib/services/scrollbar-helper.service.d.ts +3 -0
  96. package/package.json +24 -12
  97. package/swimlane-ngx-datatable.d.ts +1 -0
  98. package/bundles/swimlane-ngx-datatable.umd.js +0 -5876
  99. package/bundles/swimlane-ngx-datatable.umd.js.map +0 -1
  100. package/bundles/swimlane-ngx-datatable.umd.min.js +0 -2
  101. package/bundles/swimlane-ngx-datatable.umd.min.js.map +0 -1
  102. package/esm2015/lib/components/body/body-cell.component.js +0 -361
  103. package/esm2015/lib/components/body/body-group-header-template.directive.js +0 -15
  104. package/esm2015/lib/components/body/body-group-header.directive.js +0 -54
  105. package/esm2015/lib/components/body/body-row-wrapper.component.js +0 -106
  106. package/esm2015/lib/components/body/body-row.component.js +0 -212
  107. package/esm2015/lib/components/body/body.component.js +0 -713
  108. package/esm2015/lib/components/body/progress-bar.component.js +0 -17
  109. package/esm2015/lib/components/body/scroller.component.js +0 -83
  110. package/esm2015/lib/components/body/selection.component.js +0 -140
  111. package/esm2015/lib/components/body/summary/summary-row.component.js +0 -81
  112. package/esm2015/lib/components/columns/column-cell.directive.js +0 -13
  113. package/esm2015/lib/components/columns/column-header.directive.js +0 -13
  114. package/esm2015/lib/components/columns/column.directive.js +0 -65
  115. package/esm2015/lib/components/columns/tree.directive.js +0 -13
  116. package/esm2015/lib/components/datatable.component.js +0 -925
  117. package/esm2015/lib/components/footer/footer-template.directive.js +0 -13
  118. package/esm2015/lib/components/footer/footer.component.js +0 -75
  119. package/esm2015/lib/components/footer/footer.directive.js +0 -22
  120. package/esm2015/lib/components/footer/pager.component.js +0 -136
  121. package/esm2015/lib/components/header/header-cell.component.js +0 -191
  122. package/esm2015/lib/components/header/header.component.js +0 -295
  123. package/esm2015/lib/components/row-detail/row-detail-template.directive.js +0 -15
  124. package/esm2015/lib/components/row-detail/row-detail.directive.js +0 -55
  125. package/esm2015/lib/directives/draggable.directive.js +0 -102
  126. package/esm2015/lib/directives/long-press.directive.js +0 -103
  127. package/esm2015/lib/directives/orderable.directive.js +0 -131
  128. package/esm2015/lib/directives/resizeable.directive.js +0 -89
  129. package/esm2015/lib/directives/visibility.directive.js +0 -62
  130. package/esm2015/lib/ngx-datatable.module.js +0 -96
  131. package/esm2015/lib/services/column-changes.service.js +0 -21
  132. package/esm2015/lib/services/dimensions-helper.service.js +0 -14
  133. package/esm2015/lib/services/scrollbar-helper.service.js +0 -34
  134. package/esm2015/lib/utils/prefixes.js +0 -40
  135. package/fesm2015/swimlane-ngx-datatable.js.map +0 -1
  136. package/swimlane-ngx-datatable.metadata.json +0 -1
@@ -0,0 +1,117 @@
1
+ import { Directive, Input, Output, EventEmitter, HostBinding, HostListener } from '@angular/core';
2
+ import { fromEvent } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ export class LongPressDirective {
6
+ constructor() {
7
+ this.pressEnabled = true;
8
+ this.duration = 500;
9
+ this.longPressStart = new EventEmitter();
10
+ this.longPressing = new EventEmitter();
11
+ this.longPressEnd = new EventEmitter();
12
+ this.mouseX = 0;
13
+ this.mouseY = 0;
14
+ }
15
+ get press() {
16
+ return this.pressing;
17
+ }
18
+ get isLongPress() {
19
+ return this.isLongPressing;
20
+ }
21
+ onMouseDown(event) {
22
+ // don't do right/middle clicks
23
+ if (event.which !== 1 || !this.pressEnabled)
24
+ return;
25
+ // don't start drag if its on resize handle
26
+ const target = event.target;
27
+ if (target.classList.contains('resize-handle'))
28
+ return;
29
+ this.mouseX = event.clientX;
30
+ this.mouseY = event.clientY;
31
+ this.pressing = true;
32
+ this.isLongPressing = false;
33
+ const mouseup = fromEvent(document, 'mouseup');
34
+ this.subscription = mouseup.subscribe((ev) => this.onMouseup());
35
+ this.timeout = setTimeout(() => {
36
+ this.isLongPressing = true;
37
+ this.longPressStart.emit({
38
+ event,
39
+ model: this.pressModel
40
+ });
41
+ this.subscription.add(fromEvent(document, 'mousemove')
42
+ .pipe(takeUntil(mouseup))
43
+ .subscribe((mouseEvent) => this.onMouseMove(mouseEvent)));
44
+ this.loop(event);
45
+ }, this.duration);
46
+ this.loop(event);
47
+ }
48
+ onMouseMove(event) {
49
+ if (this.pressing && !this.isLongPressing) {
50
+ const xThres = Math.abs(event.clientX - this.mouseX) > 10;
51
+ const yThres = Math.abs(event.clientY - this.mouseY) > 10;
52
+ if (xThres || yThres) {
53
+ this.endPress();
54
+ }
55
+ }
56
+ }
57
+ loop(event) {
58
+ if (this.isLongPressing) {
59
+ this.timeout = setTimeout(() => {
60
+ this.longPressing.emit({
61
+ event,
62
+ model: this.pressModel
63
+ });
64
+ this.loop(event);
65
+ }, 50);
66
+ }
67
+ }
68
+ endPress() {
69
+ clearTimeout(this.timeout);
70
+ this.isLongPressing = false;
71
+ this.pressing = false;
72
+ this._destroySubscription();
73
+ this.longPressEnd.emit({
74
+ model: this.pressModel
75
+ });
76
+ }
77
+ onMouseup() {
78
+ this.endPress();
79
+ }
80
+ ngOnDestroy() {
81
+ this._destroySubscription();
82
+ }
83
+ _destroySubscription() {
84
+ if (this.subscription) {
85
+ this.subscription.unsubscribe();
86
+ this.subscription = undefined;
87
+ }
88
+ }
89
+ }
90
+ LongPressDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LongPressDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
91
+ LongPressDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: LongPressDirective, selector: "[long-press]", inputs: { pressEnabled: "pressEnabled", pressModel: "pressModel", duration: "duration" }, outputs: { longPressStart: "longPressStart", longPressing: "longPressing", longPressEnd: "longPressEnd" }, host: { listeners: { "mousedown": "onMouseDown($event)" }, properties: { "class.press": "this.press", "class.longpress": "this.isLongPress" } }, ngImport: i0 });
92
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: LongPressDirective, decorators: [{
93
+ type: Directive,
94
+ args: [{ selector: '[long-press]' }]
95
+ }], propDecorators: { pressEnabled: [{
96
+ type: Input
97
+ }], pressModel: [{
98
+ type: Input
99
+ }], duration: [{
100
+ type: Input
101
+ }], longPressStart: [{
102
+ type: Output
103
+ }], longPressing: [{
104
+ type: Output
105
+ }], longPressEnd: [{
106
+ type: Output
107
+ }], press: [{
108
+ type: HostBinding,
109
+ args: ['class.press']
110
+ }], isLongPress: [{
111
+ type: HostBinding,
112
+ args: ['class.longpress']
113
+ }], onMouseDown: [{
114
+ type: HostListener,
115
+ args: ['mousedown', ['$event']]
116
+ }] } });
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9uZy1wcmVzcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zd2ltbGFuZS9uZ3gtZGF0YXRhYmxlL3NyYy9saWIvZGlyZWN0aXZlcy9sb25nLXByZXNzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDN0csT0FBTyxFQUE0QixTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0QsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUkzQyxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRVcsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFFN0IsYUFBUSxHQUFXLEdBQUcsQ0FBQztRQUV0QixtQkFBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZELGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQsaUJBQVksR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUsvRCxXQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ25CLFdBQU0sR0FBVyxDQUFDLENBQUM7S0FtR3BCO0lBL0ZDLElBQ0ksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFDSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFHRCxXQUFXLENBQUMsS0FBaUI7UUFDM0IsK0JBQStCO1FBQy9CLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUFFLE9BQU87UUFFcEQsMkNBQTJDO1FBQzNDLE1BQU0sTUFBTSxHQUFnQixLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ3pD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RSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztTQUMvQjtJQUNILENBQUM7OytHQS9HVSxrQkFBa0I7bUdBQWxCLGtCQUFrQjsyRkFBbEIsa0JBQWtCO2tCQUQ5QixTQUFTO21CQUFDLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRTs4QkFFNUIsWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBV0gsS0FBSztzQkFEUixXQUFXO3VCQUFDLGFBQWE7Z0JBTXRCLFdBQVc7c0JBRGQsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBTTlCLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTW91c2VFdmVudCB9IGZyb20gJy4uL2V2ZW50cyc7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tsb25nLXByZXNzXScgfSlcbmV4cG9ydCBjbGFzcyBMb25nUHJlc3NEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwcmVzc0VuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBwcmVzc01vZGVsOiBhbnk7XG4gIEBJbnB1dCgpIGR1cmF0aW9uOiBudW1iZXIgPSA1MDA7XG5cbiAgQE91dHB1dCgpIGxvbmdQcmVzc1N0YXJ0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGxvbmdQcmVzc2luZzogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBsb25nUHJlc3NFbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHByZXNzaW5nOiBib29sZWFuO1xuICBpc0xvbmdQcmVzc2luZzogYm9vbGVhbjtcbiAgdGltZW91dDogYW55O1xuICBtb3VzZVg6IG51bWJlciA9IDA7XG4gIG1vdXNlWTogbnVtYmVyID0gMDtcblxuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnByZXNzJylcbiAgZ2V0IHByZXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnByZXNzaW5nO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5sb25ncHJlc3MnKVxuICBnZXQgaXNMb25nUHJlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNMb25nUHJlc3Npbmc7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdtb3VzZWRvd24nLCBbJyRldmVudCddKVxuICBvbk1vdXNlRG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xuICAgIC8vIGRvbid0IGRvIHJpZ2h0L21pZGRsZSBjbGlja3NcbiAgICBpZiAoZXZlbnQud2hpY2ggIT09IDEgfHwgIXRoaXMucHJlc3NFbmFibGVkKSByZXR1cm47XG5cbiAgICAvLyBkb24ndCBzdGFydCBkcmFnIGlmIGl0cyBvbiByZXNpemUgaGFuZGxlXG4gICAgY29uc3QgdGFyZ2V0ID0gPEhUTUxFbGVtZW50PmV2ZW50LnRhcmdldDtcbiAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygncmVzaXplLWhhbmRsZScpKSByZXR1cm47XG5cbiAgICB0aGlzLm1vdXNlWCA9IGV2ZW50LmNsaWVudFg7XG4gICAgdGhpcy5tb3VzZVkgPSBldmVudC5jbGllbnRZO1xuXG4gICAgdGhpcy5wcmVzc2luZyA9IHRydWU7XG4gICAgdGhpcy5pc0xvbmdQcmVzc2luZyA9IGZhbHNlO1xuXG4gICAgY29uc3QgbW91c2V1cCA9IGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNldXAnKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG1vdXNldXAuc3Vic2NyaWJlKChldjogTW91c2VFdmVudCkgPT4gdGhpcy5vbk1vdXNldXAoKSk7XG5cbiAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaXNMb25nUHJlc3NpbmcgPSB0cnVlO1xuICAgICAgdGhpcy5sb25nUHJlc3NTdGFydC5lbWl0KHtcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIG1vZGVsOiB0aGlzLnByZXNzTW9kZWxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQoXG4gICAgICAgIGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNlbW92ZScpXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKG1vdXNldXApKVxuICAgICAgICAgIC5zdWJzY3JpYmUoKG1vdXNlRXZlbnQ6IE1vdXNlRXZlbnQpID0+IHRoaXMub25Nb3VzZU1vdmUobW91c2VFdmVudCkpXG4gICAgICApO1xuXG4gICAgICB0aGlzLmxvb3AoZXZlbnQpO1xuICAgIH0sIHRoaXMuZHVyYXRpb24pO1xuXG4gICAgdGhpcy5sb29wKGV2ZW50KTtcbiAgfVxuXG4gIG9uTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJlc3NpbmcgJiYgIXRoaXMuaXNMb25nUHJlc3NpbmcpIHtcbiAgICAgIGNvbnN0IHhUaHJlcyA9IE1hdGguYWJzKGV2ZW50LmNsaWVudFggLSB0aGlzLm1vdXNlWCkgPiAxMDtcbiAgICAgIGNvbnN0IHlUaHJlcyA9IE1hdGguYWJzKGV2ZW50LmNsaWVudFkgLSB0aGlzLm1vdXNlWSkgPiAxMDtcblxuICAgICAgaWYgKHhUaHJlcyB8fCB5VGhyZXMpIHtcbiAgICAgICAgdGhpcy5lbmRQcmVzcygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxvb3AoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0xvbmdQcmVzc2luZykge1xuICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9uZ1ByZXNzaW5nLmVtaXQoe1xuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIG1vZGVsOiB0aGlzLnByZXNzTW9kZWxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubG9vcChldmVudCk7XG4gICAgICB9LCA1MCk7XG4gICAgfVxuICB9XG5cbiAgZW5kUHJlc3MoKTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgdGhpcy5pc0xvbmdQcmVzc2luZyA9IGZhbHNlO1xuICAgIHRoaXMucHJlc3NpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9kZXN0cm95U3Vic2NyaXB0aW9uKCk7XG5cbiAgICB0aGlzLmxvbmdQcmVzc0VuZC5lbWl0KHtcbiAgICAgIG1vZGVsOiB0aGlzLnByZXNzTW9kZWxcbiAgICB9KTtcbiAgfVxuXG4gIG9uTW91c2V1cCgpOiB2b2lkIHtcbiAgICB0aGlzLmVuZFByZXNzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95U3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95U3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,136 @@
1
+ import { Directive, Output, EventEmitter, ContentChildren, Inject } from '@angular/core';
2
+ import { DraggableDirective } from './draggable.directive';
3
+ import { DOCUMENT } from '@angular/common';
4
+ import * as i0 from "@angular/core";
5
+ export class OrderableDirective {
6
+ constructor(differs, document) {
7
+ this.document = document;
8
+ this.reorder = new EventEmitter();
9
+ this.targetChanged = new EventEmitter();
10
+ this.differ = differs.find({}).create();
11
+ }
12
+ ngAfterContentInit() {
13
+ // HACK: Investigate Better Way
14
+ this.updateSubscriptions();
15
+ this.draggables.changes.subscribe(this.updateSubscriptions.bind(this));
16
+ }
17
+ ngOnDestroy() {
18
+ this.draggables.forEach(d => {
19
+ d.dragStart.unsubscribe();
20
+ d.dragging.unsubscribe();
21
+ d.dragEnd.unsubscribe();
22
+ });
23
+ }
24
+ updateSubscriptions() {
25
+ const diffs = this.differ.diff(this.createMapDiffs());
26
+ if (diffs) {
27
+ const subscribe = ({ currentValue, previousValue }) => {
28
+ unsubscribe({ previousValue });
29
+ if (currentValue) {
30
+ currentValue.dragStart.subscribe(this.onDragStart.bind(this));
31
+ currentValue.dragging.subscribe(this.onDragging.bind(this));
32
+ currentValue.dragEnd.subscribe(this.onDragEnd.bind(this));
33
+ }
34
+ };
35
+ const unsubscribe = ({ previousValue }) => {
36
+ if (previousValue) {
37
+ previousValue.dragStart.unsubscribe();
38
+ previousValue.dragging.unsubscribe();
39
+ previousValue.dragEnd.unsubscribe();
40
+ }
41
+ };
42
+ diffs.forEachAddedItem(subscribe);
43
+ // diffs.forEachChangedItem(subscribe.bind(this));
44
+ diffs.forEachRemovedItem(unsubscribe);
45
+ }
46
+ }
47
+ onDragStart() {
48
+ this.positions = {};
49
+ let i = 0;
50
+ for (const dragger of this.draggables.toArray()) {
51
+ const elm = dragger.element;
52
+ const left = parseInt(elm.offsetLeft.toString(), 0);
53
+ this.positions[dragger.dragModel.prop] = {
54
+ left,
55
+ right: left + parseInt(elm.offsetWidth.toString(), 0),
56
+ index: i++,
57
+ element: elm
58
+ };
59
+ }
60
+ }
61
+ onDragging({ element, model, event }) {
62
+ const prevPos = this.positions[model.prop];
63
+ const target = this.isTarget(model, event);
64
+ if (target) {
65
+ if (this.lastDraggingIndex !== target.i) {
66
+ this.targetChanged.emit({
67
+ prevIndex: this.lastDraggingIndex,
68
+ newIndex: target.i,
69
+ initialIndex: prevPos.index
70
+ });
71
+ this.lastDraggingIndex = target.i;
72
+ }
73
+ }
74
+ else if (this.lastDraggingIndex !== prevPos.index) {
75
+ this.targetChanged.emit({
76
+ prevIndex: this.lastDraggingIndex,
77
+ initialIndex: prevPos.index
78
+ });
79
+ this.lastDraggingIndex = prevPos.index;
80
+ }
81
+ }
82
+ onDragEnd({ element, model, event }) {
83
+ const prevPos = this.positions[model.prop];
84
+ const target = this.isTarget(model, event);
85
+ if (target) {
86
+ this.reorder.emit({
87
+ prevIndex: prevPos.index,
88
+ newIndex: target.i,
89
+ model
90
+ });
91
+ }
92
+ this.lastDraggingIndex = undefined;
93
+ element.style.left = 'auto';
94
+ }
95
+ isTarget(model, event) {
96
+ let i = 0;
97
+ const x = event.x || event.clientX;
98
+ const y = event.y || event.clientY;
99
+ const targets = this.document.elementsFromPoint(x, y);
100
+ for (const prop in this.positions) {
101
+ // current column position which throws event.
102
+ const pos = this.positions[prop];
103
+ // since we drag the inner span, we need to find it in the elements at the cursor
104
+ if (model.prop !== prop && targets.find((el) => el === pos.element)) {
105
+ return {
106
+ pos,
107
+ i
108
+ };
109
+ }
110
+ i++;
111
+ }
112
+ }
113
+ createMapDiffs() {
114
+ return this.draggables.toArray().reduce((acc, curr) => {
115
+ acc[curr.dragModel.$$id] = curr;
116
+ return acc;
117
+ }, {});
118
+ }
119
+ }
120
+ OrderableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: OrderableDirective, deps: [{ token: i0.KeyValueDiffers }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Directive });
121
+ OrderableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: OrderableDirective, selector: "[orderable]", outputs: { reorder: "reorder", targetChanged: "targetChanged" }, queries: [{ propertyName: "draggables", predicate: DraggableDirective, descendants: true }], ngImport: i0 });
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: OrderableDirective, decorators: [{
123
+ type: Directive,
124
+ args: [{ selector: '[orderable]' }]
125
+ }], ctorParameters: function () { return [{ type: i0.KeyValueDiffers }, { type: undefined, decorators: [{
126
+ type: Inject,
127
+ args: [DOCUMENT]
128
+ }] }]; }, propDecorators: { reorder: [{
129
+ type: Output
130
+ }], targetChanged: [{
131
+ type: Output
132
+ }], draggables: [{
133
+ type: ContentChildren,
134
+ args: [DraggableDirective, { descendants: true }]
135
+ }] } });
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3JkZXJhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N3aW1sYW5lL25neC1kYXRhdGFibGUvc3JjL2xpYi9kaXJlY3RpdmVzL29yZGVyYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sWUFBWSxFQUNaLGVBQWUsRUFLZixNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQUczQyxNQUFNLE9BQU8sa0JBQWtCO0lBVzdCLFlBQVksT0FBd0IsRUFBNEIsUUFBYTtRQUFiLGFBQVEsR0FBUixRQUFRLENBQUs7UUFWbkUsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hELGtCQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFVOUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsK0JBQStCO1FBQy9CLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMxQixDQUFDLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzFCLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFF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QUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdCxcbiAgS2V5VmFsdWVEaWZmZXJzLFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBPbkRlc3Ryb3ksXG4gIEluamVjdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERyYWdnYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vZHJhZ2dhYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1tvcmRlcmFibGVdJyB9KVxuZXhwb3J0IGNsYXNzIE9yZGVyYWJsZURpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIEBPdXRwdXQoKSByZW9yZGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHRhcmdldENoYW5nZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oRHJhZ2dhYmxlRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIGRyYWdnYWJsZXM6IFF1ZXJ5TGlzdDxEcmFnZ2FibGVEaXJlY3RpdmU+O1xuXG4gIHBvc2l0aW9uczogYW55O1xuICBkaWZmZXI6IGFueTtcbiAgbGFzdERyYWdnaW5nSW5kZXg6IG51bWJlcjtcblxuICBjb25zdHJ1Y3RvcihkaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IGFueSkge1xuICAgIHRoaXMuZGlmZmVyID0gZGlmZmVycy5maW5kKHt9KS5jcmVhdGUoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAvLyBIQUNLOiBJbnZlc3RpZ2F0ZSBCZXR0ZXIgV2F5XG4gICAgdGhpcy51cGRhdGVTdWJzY3JpcHRpb25zKCk7XG4gICAgdGhpcy5kcmFnZ2FibGVzLmNoYW5nZXMuc3Vic2NyaWJlKHRoaXMudXBkYXRlU3Vic2NyaXB0aW9ucy5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZHJhZ2dhYmxlcy5mb3JFYWNoKGQgPT4ge1xuICAgICAgZC5kcmFnU3RhcnQudW5zdWJzY3JpYmUoKTtcbiAgICAgIGQuZHJhZ2dpbmcudW5zdWJzY3JpYmUoKTtcbiAgICAgIGQuZHJhZ0VuZC51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgdXBkYXRlU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcbiAgICBjb25zdCBkaWZmcyA9IHRoaXMuZGlmZmVyLmRpZmYodGhpcy5jcmVhdGVNYXBEaWZmcygpKTtcblxuICAgIGlmIChkaWZmcykge1xuICAgICAgY29uc3Qgc3Vic2NyaWJlID0gKHsgY3VycmVudFZhbHVlLCBwcmV2aW91c1ZhbHVlIH06IGFueSkgPT4ge1xuICAgICAgICB1bnN1YnNjcmliZSh7IHByZXZpb3VzVmFsdWUgfSk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgIGN1cnJlbnRWYWx1ZS5kcmFnU3RhcnQuc3Vic2NyaWJlKHRoaXMub25EcmFnU3RhcnQuYmluZCh0aGlzKSk7XG4gICAgICAgICAgY3VycmVudFZhbHVlLmRyYWdnaW5nLnN1YnNjcmliZSh0aGlzLm9uRHJhZ2dpbmcuYmluZCh0aGlzKSk7XG4gICAgICAgICAgY3VycmVudFZhbHVlLmRyYWdFbmQuc3Vic2NyaWJlKHRoaXMub25EcmFnRW5kLmJpbmQodGhpcykpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCB1bnN1YnNjcmliZSA9ICh7IHByZXZpb3VzVmFsdWUgfTogYW55KSA9PiB7XG4gICAgICAgIGlmIChwcmV2aW91c1ZhbHVlKSB7XG4gICAgICAgICAgcHJldmlvdXNWYWx1ZS5kcmFnU3RhcnQudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICBwcmV2aW91c1ZhbHVlLmRyYWdnaW5nLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgcHJldmlvdXNWYWx1ZS5kcmFnRW5kLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGRpZmZzLmZvckVhY2hBZGRlZEl0ZW0oc3Vic2NyaWJlKTtcbiAgICAgIC8vIGRpZmZzLmZvckVhY2hDaGFuZ2VkSXRlbShzdWJzY3JpYmUuYmluZCh0aGlzKSk7XG4gICAgICBkaWZmcy5mb3JFYWNoUmVtb3ZlZEl0ZW0odW5zdWJzY3JpYmUpO1xuICAgIH1cbiAgfVxuXG4gIG9uRHJhZ1N0YXJ0KCk6IHZvaWQge1xuICAgIHRoaXMucG9zaXRpb25zID0ge307XG5cbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yIChjb25zdCBkcmFnZ2VyIG9mIHRoaXMuZHJhZ2dhYmxlcy50b0FycmF5KCkpIHtcbiAgICAgIGNvbnN0IGVsbSA9IGRyYWdnZXIuZWxlbWVudDtcbiAgICAgIGNvbnN0IGxlZnQgPSBwYXJzZUludChlbG0ub2Zmc2V0TGVmdC50b1N0cmluZygpLCAwKTtcbiAgICAgIHRoaXMucG9zaXRpb25zW2RyYWdnZXIuZHJhZ01vZGVsLnByb3BdID0ge1xuICAgICAgICBsZWZ0LFxuICAgICAgICByaWdodDogbGVmdCArIHBhcnNlSW50KGVsbS5vZmZzZXRXaWR0aC50b1N0cmluZygpLCAwKSxcbiAgICAgICAgaW5kZXg6IGkrKyxcbiAgICAgICAgZWxlbWVudDogZWxtXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIG9uRHJhZ2dpbmcoeyBlbGVtZW50LCBtb2RlbCwgZXZlbnQgfTogYW55KTogdm9pZCB7XG4gICAgY29uc3QgcHJldlBvcyA9IHRoaXMucG9zaXRpb25zW21vZGVsLnByb3BdO1xuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuaXNUYXJnZXQobW9kZWwsIGV2ZW50KTtcblxuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgIGlmICh0aGlzLmxhc3REcmFnZ2luZ0luZGV4ICE9PSB0YXJnZXQuaSkge1xuICAgICAgICB0aGlzLnRhcmdldENoYW5nZWQuZW1pdCh7XG4gICAgICAgICAgcHJldkluZGV4OiB0aGlzLmxhc3REcmFnZ2luZ0luZGV4LFxuICAgICAgICAgIG5ld0luZGV4OiB0YXJnZXQuaSxcbiAgICAgICAgICBpbml0aWFsSW5kZXg6IHByZXZQb3MuaW5kZXhcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubGFzdERyYWdnaW5nSW5kZXggPSB0YXJnZXQuaTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMubGFzdERyYWdnaW5nSW5kZXggIT09IHByZXZQb3MuaW5kZXgpIHtcbiAgICAgIHRoaXMudGFyZ2V0Q2hhbmdlZC5lbWl0KHtcbiAgICAgICAgcHJldkluZGV4OiB0aGlzLmxhc3REcmFnZ2luZ0luZGV4LFxuICAgICAgICBpbml0aWFsSW5kZXg6IHByZXZQb3MuaW5kZXhcbiAgICAgIH0pO1xuICAgICAgdGhpcy5sYXN0RHJhZ2dpbmdJbmRleCA9IHByZXZQb3MuaW5kZXg7XG4gICAgfVxuICB9XG5cbiAgb25EcmFnRW5kKHsgZWxlbWVudCwgbW9kZWwsIGV2ZW50IH06IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZQb3MgPSB0aGlzLnBvc2l0aW9uc1ttb2RlbC5wcm9wXTtcblxuICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuaXNUYXJnZXQobW9kZWwsIGV2ZW50KTtcbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICB0aGlzLnJlb3JkZXIuZW1pdCh7XG4gICAgICAgIHByZXZJbmRleDogcHJldlBvcy5pbmRleCxcbiAgICAgICAgbmV3SW5kZXg6IHRhcmdldC5pLFxuICAgICAgICBtb2RlbFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5sYXN0RHJhZ2dpbmdJbmRleCA9IHVuZGVmaW5lZDtcbiAgICBlbGVtZW50LnN0eWxlLmxlZnQgPSAnYXV0byc7XG4gIH1cblxuICBpc1RhcmdldChtb2RlbDogYW55LCBldmVudDogYW55KTogYW55IHtcbiAgICBsZXQgaSA9IDA7XG4gICAgY29uc3QgeCA9IGV2ZW50LnggfHwgZXZlbnQuY2xpZW50WDtcbiAgICBjb25zdCB5ID0gZXZlbnQueSB8fCBldmVudC5jbGllbnRZO1xuICAgIGNvbnN0IHRhcmdldHMgPSB0aGlzLmRvY3VtZW50LmVsZW1lbnRzRnJvbVBvaW50KHgsIHkpO1xuXG4gICAgZm9yIChjb25zdCBwcm9wIGluIHRoaXMucG9zaXRpb25zKSB7XG4gICAgICAvLyBjdXJyZW50IGNvbHVtbiBwb3NpdGlvbiB3aGljaCB0aHJvd3MgZXZlbnQuXG4gICAgICBjb25zdCBwb3MgPSB0aGlzLnBvc2l0aW9uc1twcm9wXTtcblxuICAgICAgLy8gc2luY2Ugd2UgZHJhZyB0aGUgaW5uZXIgc3Bhbiwgd2UgbmVlZCB0byBmaW5kIGl0IGluIHRoZSBlbGVtZW50cyBhdCB0aGUgY3Vyc29yXG4gICAgICBpZiAobW9kZWwucHJvcCAhPT0gcHJvcCAmJiB0YXJnZXRzLmZpbmQoKGVsOiBhbnkpID0+IGVsID09PSBwb3MuZWxlbWVudCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwb3MsXG4gICAgICAgICAgaVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVNYXBEaWZmcygpOiB7IFtrZXk6IHN0cmluZ106IERyYWdnYWJsZURpcmVjdGl2ZSB9IHtcbiAgICByZXR1cm4gdGhpcy5kcmFnZ2FibGVzLnRvQXJyYXkoKS5yZWR1Y2UoKGFjYywgY3VycikgPT4ge1xuICAgICAgYWNjW2N1cnIuZHJhZ01vZGVsLiQkaWRdID0gY3VycjtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,93 @@
1
+ import { Directive, HostListener, Input, Output, EventEmitter } from '@angular/core';
2
+ import { fromEvent } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ export class ResizeableDirective {
6
+ constructor(element, renderer) {
7
+ this.renderer = renderer;
8
+ this.resizeEnabled = true;
9
+ this.resize = new EventEmitter();
10
+ this.resizing = false;
11
+ this.element = element.nativeElement;
12
+ }
13
+ ngAfterViewInit() {
14
+ const renderer2 = this.renderer;
15
+ this.resizeHandle = renderer2.createElement('span');
16
+ if (this.resizeEnabled) {
17
+ renderer2.addClass(this.resizeHandle, 'resize-handle');
18
+ }
19
+ else {
20
+ renderer2.addClass(this.resizeHandle, 'resize-handle--not-resizable');
21
+ }
22
+ renderer2.appendChild(this.element, this.resizeHandle);
23
+ }
24
+ ngOnDestroy() {
25
+ this._destroySubscription();
26
+ if (this.renderer.destroyNode) {
27
+ this.renderer.destroyNode(this.resizeHandle);
28
+ }
29
+ else if (this.resizeHandle) {
30
+ this.renderer.removeChild(this.renderer.parentNode(this.resizeHandle), this.resizeHandle);
31
+ }
32
+ }
33
+ onMouseup() {
34
+ this.resizing = false;
35
+ if (this.subscription && !this.subscription.closed) {
36
+ this._destroySubscription();
37
+ this.resize.emit(this.element.clientWidth);
38
+ }
39
+ }
40
+ onMousedown(event) {
41
+ const isHandle = event.target.classList.contains('resize-handle');
42
+ const initialWidth = this.element.clientWidth;
43
+ const mouseDownScreenX = event.screenX;
44
+ if (isHandle) {
45
+ event.stopPropagation();
46
+ this.resizing = true;
47
+ const mouseup = fromEvent(document, 'mouseup');
48
+ this.subscription = mouseup.subscribe((ev) => this.onMouseup());
49
+ const mouseMoveSub = fromEvent(document, 'mousemove')
50
+ .pipe(takeUntil(mouseup))
51
+ .subscribe((e) => this.move(e, initialWidth, mouseDownScreenX));
52
+ this.subscription.add(mouseMoveSub);
53
+ }
54
+ }
55
+ move(event, initialWidth, mouseDownScreenX) {
56
+ const movementX = event.screenX - mouseDownScreenX;
57
+ const newWidth = initialWidth + movementX;
58
+ const overMinWidth = !this.minWidth || newWidth >= this.minWidth;
59
+ const underMaxWidth = !this.maxWidth || newWidth <= this.maxWidth;
60
+ if (overMinWidth && underMaxWidth) {
61
+ this.element.style.width = `${newWidth}px`;
62
+ }
63
+ }
64
+ _destroySubscription() {
65
+ if (this.subscription) {
66
+ this.subscription.unsubscribe();
67
+ this.subscription = undefined;
68
+ }
69
+ }
70
+ }
71
+ ResizeableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ResizeableDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
72
+ ResizeableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: ResizeableDirective, selector: "[resizeable]", inputs: { resizeEnabled: "resizeEnabled", minWidth: "minWidth", maxWidth: "maxWidth" }, outputs: { resize: "resize" }, host: { listeners: { "mousedown": "onMousedown($event)" }, properties: { "class.resizeable": "resizeEnabled" } }, ngImport: i0 });
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: ResizeableDirective, decorators: [{
74
+ type: Directive,
75
+ args: [{
76
+ selector: '[resizeable]',
77
+ host: {
78
+ '[class.resizeable]': 'resizeEnabled'
79
+ }
80
+ }]
81
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { resizeEnabled: [{
82
+ type: Input
83
+ }], minWidth: [{
84
+ type: Input
85
+ }], maxWidth: [{
86
+ type: Input
87
+ }], resize: [{
88
+ type: Output
89
+ }], onMousedown: [{
90
+ type: HostListener,
91
+ args: ['mousedown', ['$event']]
92
+ }] } });
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplYWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zd2ltbGFuZS9uZ3gtZGF0YXRhYmxlL3NyYy9saWIvZGlyZWN0aXZlcy9yZXNpemVhYmxlLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFJYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWdCLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBUTNDLE1BQU0sT0FBTyxtQkFBbUI7SUFZOUIsWUFBWSxPQUFtQixFQUFVLFFBQW1CO1FBQW5CLGFBQVEsR0FBUixRQUFRLENBQVc7UUFYbkQsa0JBQWEsR0FBWSxJQUFJLENBQUM7UUFJN0IsV0FBTSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSXpELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFJeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxlQUFlO1FBQ2IsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEQsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUMsQ0FBQztTQUN4RDthQUFNO1lBQ0wsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLDhCQUE4QixDQUFDLENBQUM7U0FDdkU7UUFDRCxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxP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LFNBQVMsQ0FBQztTQUMvQjtJQUNILENBQUM7O2dIQW5GVSxtQkFBbUI7b0dBQW5CLG1CQUFtQjsyRkFBbkIsbUJBQW1CO2tCQU4vQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxjQUFjO29CQUN4QixJQUFJLEVBQUU7d0JBQ0osb0JBQW9CLEVBQUUsZUFBZTtxQkFDdEM7aUJBQ0Y7eUhBRVUsYUFBYTtzQkFBckIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQXlDUCxXQUFXO3NCQURWLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25EZXN0cm95LFxuICBBZnRlclZpZXdJbml0LFxuICBSZW5kZXJlcjJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24sIGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbcmVzaXplYWJsZV0nLFxuICBob3N0OiB7XG4gICAgJ1tjbGFzcy5yZXNpemVhYmxlXSc6ICdyZXNpemVFbmFibGVkJ1xuICB9XG59KVxuZXhwb3J0IGNsYXNzIFJlc2l6ZWFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSByZXNpemVFbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgbWluV2lkdGg6IG51bWJlcjtcbiAgQElucHV0KCkgbWF4V2lkdGg6IG51bWJlcjtcblxuICBAT3V0cHV0KCkgcmVzaXplOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBlbGVtZW50OiBIVE1MRWxlbWVudDtcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIHJlc2l6aW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgcmVzaXplSGFuZGxlOiBIVE1MRWxlbWVudDtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50OiBFbGVtZW50UmVmLCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgcmVuZGVyZXIyID0gdGhpcy5yZW5kZXJlcjtcbiAgICB0aGlzLnJlc2l6ZUhhbmRsZSA9IHJlbmRlcmVyMi5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgaWYgKHRoaXMucmVzaXplRW5hYmxlZCkge1xuICAgICAgcmVuZGVyZXIyLmFkZENsYXNzKHRoaXMucmVzaXplSGFuZGxlLCAncmVzaXplLWhhbmRsZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW5kZXJlcjIuYWRkQ2xhc3ModGhpcy5yZXNpemVIYW5kbGUsICdyZXNpemUtaGFuZGxlLS1ub3QtcmVzaXphYmxlJyk7XG4gICAgfVxuICAgIHJlbmRlcmVyMi5hcHBlbmRDaGlsZCh0aGlzLmVsZW1lbnQsIHRoaXMucmVzaXplSGFuZGxlKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3lTdWJzY3JpcHRpb24oKTtcbiAgICBpZiAodGhpcy5yZW5kZXJlci5kZXN0cm95Tm9kZSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5kZXN0cm95Tm9kZSh0aGlzLnJlc2l6ZUhhbmRsZSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnJlc2l6ZUhhbmRsZSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDaGlsZCh0aGlzLnJlbmRlcmVyLnBhcmVudE5vZGUodGhpcy5yZXNpemVIYW5kbGUpLCB0aGlzLnJlc2l6ZUhhbmRsZSk7XG4gICAgfVxuICB9XG5cbiAgb25Nb3VzZXVwKCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXppbmcgPSBmYWxzZTtcblxuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbiAmJiAhdGhpcy5zdWJzY3JpcHRpb24uY2xvc2VkKSB7XG4gICAgICB0aGlzLl9kZXN0cm95U3Vic2NyaXB0aW9uKCk7XG4gICAgICB0aGlzLnJlc2l6ZS5lbWl0KHRoaXMuZWxlbWVudC5jbGllbnRXaWR0aCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb25Nb3VzZWRvd24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpc0hhbmRsZSA9ICg8SFRNTEVsZW1lbnQ+ZXZlbnQudGFyZ2V0KS5jbGFzc0xpc3QuY29udGFpbnMoJ3Jlc2l6ZS1oYW5kbGUnKTtcbiAgICBjb25zdCBpbml0aWFsV2lkdGggPSB0aGlzLmVsZW1lbnQuY2xpZW50V2lkdGg7XG4gICAgY29uc3QgbW91c2VEb3duU2NyZWVuWCA9IGV2ZW50LnNjcmVlblg7XG5cbiAgICBpZiAoaXNIYW5kbGUpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgdGhpcy5yZXNpemluZyA9IHRydWU7XG5cbiAgICAgIGNvbnN0IG1vdXNldXAgPSBmcm9tRXZlbnQoZG9jdW1lbnQsICdtb3VzZXVwJyk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG1vdXNldXAuc3Vic2NyaWJlKChldjogTW91c2VFdmVudCkgPT4gdGhpcy5vbk1vdXNldXAoKSk7XG5cbiAgICAgIGNvbnN0IG1vdXNlTW92ZVN1YiA9IGZyb21FdmVudChkb2N1bWVudCwgJ21vdXNlbW92ZScpXG4gICAgICAgIC5waXBlKHRha2VVbnRpbChtb3VzZXVwKSlcbiAgICAgICAgLnN1YnNjcmliZSgoZTogTW91c2VFdmVudCkgPT4gdGhpcy5tb3ZlKGUsIGluaXRpYWxXaWR0aCwgbW91c2VEb3duU2NyZWVuWCkpO1xuXG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQobW91c2VNb3ZlU3ViKTtcbiAgICB9XG4gIH1cblxuICBtb3ZlKGV2ZW50OiBNb3VzZUV2ZW50LCBpbml0aWFsV2lkdGg6IG51bWJlciwgbW91c2VEb3duU2NyZWVuWDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgbW92ZW1lbnRYID0gZXZlbnQuc2NyZWVuWCAtIG1vdXNlRG93blNjcmVlblg7XG4gICAgY29uc3QgbmV3V2lkdGggPSBpbml0aWFsV2lkdGggKyBtb3ZlbWVudFg7XG5cbiAgICBjb25zdCBvdmVyTWluV2lkdGggPSAhdGhpcy5taW5XaWR0aCB8fCBuZXdXaWR0aCA+PSB0aGlzLm1pbldpZHRoO1xuICAgIGNvbnN0IHVuZGVyTWF4V2lkdGggPSAhdGhpcy5tYXhXaWR0aCB8fCBuZXdXaWR0aCA8PSB0aGlzLm1heFdpZHRoO1xuXG4gICAgaWYgKG92ZXJNaW5XaWR0aCAmJiB1bmRlck1heFdpZHRoKSB7XG4gICAgICB0aGlzLmVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtuZXdXaWR0aH1weGA7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveVN1YnNjcmlwdGlvbigpIHtcbiAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,63 @@
1
+ import { Directive, Output, EventEmitter, HostBinding } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * Visibility Observer Directive
5
+ *
6
+ * Usage:
7
+ *
8
+ * <div
9
+ * visibilityObserver
10
+ * (visible)="onVisible($event)">
11
+ * </div>
12
+ *
13
+ */
14
+ export class VisibilityDirective {
15
+ constructor(element, zone) {
16
+ this.element = element;
17
+ this.zone = zone;
18
+ this.isVisible = false;
19
+ this.visible = new EventEmitter();
20
+ }
21
+ ngOnInit() {
22
+ this.runCheck();
23
+ }
24
+ ngOnDestroy() {
25
+ clearTimeout(this.timeout);
26
+ }
27
+ onVisibilityChange() {
28
+ // trigger zone recalc for columns
29
+ this.zone.run(() => {
30
+ this.isVisible = true;
31
+ this.visible.emit(true);
32
+ });
33
+ }
34
+ runCheck() {
35
+ const check = () => {
36
+ // https://davidwalsh.name/offsetheight-visibility
37
+ const { offsetHeight, offsetWidth } = this.element.nativeElement;
38
+ if (offsetHeight && offsetWidth) {
39
+ clearTimeout(this.timeout);
40
+ this.onVisibilityChange();
41
+ }
42
+ else {
43
+ clearTimeout(this.timeout);
44
+ this.zone.runOutsideAngular(() => {
45
+ this.timeout = setTimeout(() => check(), 50);
46
+ });
47
+ }
48
+ };
49
+ this.timeout = setTimeout(() => check());
50
+ }
51
+ }
52
+ VisibilityDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: VisibilityDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
53
+ VisibilityDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", version: "13.1.1", type: VisibilityDirective, selector: "[visibilityObserver]", outputs: { visible: "visible" }, host: { properties: { "class.visible": "this.isVisible" } }, ngImport: i0 });
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: VisibilityDirective, decorators: [{
55
+ type: Directive,
56
+ args: [{ selector: '[visibilityObserver]' }]
57
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { isVisible: [{
58
+ type: HostBinding,
59
+ args: ['class.visible']
60
+ }], visible: [{
61
+ type: Output
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlzaWJpbGl0eS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zd2ltbGFuZS9uZ3gtZGF0YXRhYmxlL3NyYy9saWIvZGlyZWN0aXZlcy92aXNpYmlsaXR5LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQWMsV0FBVyxFQUE2QixNQUFNLGVBQWUsQ0FBQzs7QUFFcEg7Ozs7Ozs7Ozs7R0FVRztBQUVILE1BQU0sT0FBTyxtQkFBbUI7SUFROUIsWUFBb0IsT0FBbUIsRUFBVSxJQUFZO1FBQXpDLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFRO1FBTjdELGNBQVMsR0FBWSxLQUFLLENBQUM7UUFFakIsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBSU0sQ0FBQztJQUVqRSxRQUFRO1FBQ04sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxXQUFXO1FBQ1QsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLGtDQUFrQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLE1BQU0sS0FBSyxHQUFHLEdBQUcsRUFBRTtZQUNqQixrREFBa0Q7WUFDbEQsTUFBTSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztZQUVqRSxJQUFJLFlBQVksSUFBSSxXQUFXLEVBQUU7Z0JBQy9CLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQzNCO2lCQUFNO2dCQUNMLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO29CQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDL0MsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDM0MsQ0FBQzs7Z0hBM0NVLG1CQUFtQjtvR0FBbkIsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBRC9CLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUU7c0hBRzdDLFNBQVM7c0JBRFIsV0FBVzt1QkFBQyxlQUFlO2dCQUdsQixPQUFPO3NCQUFoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIE5nWm9uZSwgT25Jbml0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBWaXNpYmlsaXR5IE9ic2VydmVyIERpcmVjdGl2ZVxuICpcbiAqIFVzYWdlOlxuICpcbiAqIFx0XHQ8ZGl2XG4gKiBcdFx0XHR2aXNpYmlsaXR5T2JzZXJ2ZXJcbiAqIFx0XHRcdCh2aXNpYmxlKT1cIm9uVmlzaWJsZSgkZXZlbnQpXCI+XG4gKiBcdFx0PC9kaXY+XG4gKlxuICovXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdmlzaWJpbGl0eU9ic2VydmVyXScgfSlcbmV4cG9ydCBjbGFzcyBWaXNpYmlsaXR5RGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnZpc2libGUnKVxuICBpc1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgdmlzaWJsZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgdGltZW91dDogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZiwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5ydW5DaGVjaygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gIH1cblxuICBvblZpc2liaWxpdHlDaGFuZ2UoKTogdm9pZCB7XG4gICAgLy8gdHJpZ2dlciB6b25lIHJlY2FsYyBmb3IgY29sdW1uc1xuICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xuICAgICAgdGhpcy5pc1Zpc2libGUgPSB0cnVlO1xuICAgICAgdGhpcy52aXNpYmxlLmVtaXQodHJ1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBydW5DaGVjaygpOiB2b2lkIHtcbiAgICBjb25zdCBjaGVjayA9ICgpID0+IHtcbiAgICAgIC8vIGh0dHBzOi8vZGF2aWR3YWxzaC5uYW1lL29mZnNldGhlaWdodC12aXNpYmlsaXR5XG4gICAgICBjb25zdCB7IG9mZnNldEhlaWdodCwgb2Zmc2V0V2lkdGggfSA9IHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50O1xuXG4gICAgICBpZiAob2Zmc2V0SGVpZ2h0ICYmIG9mZnNldFdpZHRoKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpO1xuICAgICAgICB0aGlzLm9uVmlzaWJpbGl0eUNoYW5nZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCk7XG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgdGhpcy50aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiBjaGVjaygpLCA1MCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLnRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IGNoZWNrKCkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,139 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { ScrollbarHelper } from './services/scrollbar-helper.service';
4
+ import { DimensionsHelper } from './services/dimensions-helper.service';
5
+ import { ColumnChangesService } from './services/column-changes.service';
6
+ import { DataTableFooterTemplateDirective } from './components/footer/footer-template.directive';
7
+ import { VisibilityDirective } from './directives/visibility.directive';
8
+ import { DraggableDirective } from './directives/draggable.directive';
9
+ import { ResizeableDirective } from './directives/resizeable.directive';
10
+ import { OrderableDirective } from './directives/orderable.directive';
11
+ import { LongPressDirective } from './directives/long-press.directive';
12
+ import { ScrollerComponent } from './components/body/scroller.component';
13
+ import { DatatableComponent } from './components/datatable.component';
14
+ import { DataTableColumnDirective } from './components/columns/column.directive';
15
+ import { DataTableHeaderComponent } from './components/header/header.component';
16
+ import { DataTableHeaderCellComponent } from './components/header/header-cell.component';
17
+ import { DataTableBodyComponent } from './components/body/body.component';
18
+ import { DataTableFooterComponent } from './components/footer/footer.component';
19
+ import { DataTablePagerComponent } from './components/footer/pager.component';
20
+ import { ProgressBarComponent } from './components/body/progress-bar.component';
21
+ import { DataTableBodyRowComponent } from './components/body/body-row.component';
22
+ import { DataTableRowWrapperComponent } from './components/body/body-row-wrapper.component';
23
+ import { DatatableRowDetailDirective } from './components/row-detail/row-detail.directive';
24
+ import { DatatableGroupHeaderDirective } from './components/body/body-group-header.directive';
25
+ import { DatatableRowDetailTemplateDirective } from './components/row-detail/row-detail-template.directive';
26
+ import { DataTableBodyCellComponent } from './components/body/body-cell.component';
27
+ import { DataTableSelectionComponent } from './components/body/selection.component';
28
+ import { DataTableColumnHeaderDirective } from './components/columns/column-header.directive';
29
+ import { DataTableColumnCellDirective } from './components/columns/column-cell.directive';
30
+ import { DataTableColumnCellTreeToggle } from './components/columns/tree.directive';
31
+ import { DatatableFooterDirective } from './components/footer/footer.directive';
32
+ import { DatatableGroupHeaderTemplateDirective } from './components/body/body-group-header-template.directive';
33
+ import { DataTableSummaryRowComponent } from './components/body/summary/summary-row.component';
34
+ import * as i0 from "@angular/core";
35
+ export class NgxDatatableModule {
36
+ /**
37
+ * Configure global configuration via INgxDatatableConfig
38
+ * @param configuration
39
+ */
40
+ static forRoot(configuration) {
41
+ return {
42
+ ngModule: NgxDatatableModule,
43
+ providers: [{ provide: 'configuration', useValue: configuration }]
44
+ };
45
+ }
46
+ }
47
+ NgxDatatableModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDatatableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
48
+ NgxDatatableModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDatatableModule, declarations: [DataTableFooterTemplateDirective,
49
+ VisibilityDirective,
50
+ DraggableDirective,
51
+ ResizeableDirective,
52
+ OrderableDirective,
53
+ LongPressDirective,
54
+ ScrollerComponent,
55
+ DatatableComponent,
56
+ DataTableColumnDirective,
57
+ DataTableHeaderComponent,
58
+ DataTableHeaderCellComponent,
59
+ DataTableBodyComponent,
60
+ DataTableFooterComponent,
61
+ DataTablePagerComponent,
62
+ ProgressBarComponent,
63
+ DataTableBodyRowComponent,
64
+ DataTableRowWrapperComponent,
65
+ DatatableRowDetailDirective,
66
+ DatatableGroupHeaderDirective,
67
+ DatatableRowDetailTemplateDirective,
68
+ DataTableBodyCellComponent,
69
+ DataTableSelectionComponent,
70
+ DataTableColumnHeaderDirective,
71
+ DataTableColumnCellDirective,
72
+ DataTableColumnCellTreeToggle,
73
+ DatatableFooterDirective,
74
+ DatatableGroupHeaderTemplateDirective,
75
+ DataTableSummaryRowComponent], imports: [CommonModule], exports: [DatatableComponent,
76
+ DatatableRowDetailDirective,
77
+ DatatableGroupHeaderDirective,
78
+ DatatableRowDetailTemplateDirective,
79
+ DataTableColumnDirective,
80
+ DataTableColumnHeaderDirective,
81
+ DataTableColumnCellDirective,
82
+ DataTableColumnCellTreeToggle,
83
+ DataTableFooterTemplateDirective,
84
+ DatatableFooterDirective,
85
+ DataTablePagerComponent,
86
+ DatatableGroupHeaderTemplateDirective] });
87
+ NgxDatatableModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDatatableModule, providers: [ScrollbarHelper, DimensionsHelper, ColumnChangesService], imports: [[CommonModule]] });
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: NgxDatatableModule, decorators: [{
89
+ type: NgModule,
90
+ args: [{
91
+ imports: [CommonModule],
92
+ providers: [ScrollbarHelper, DimensionsHelper, ColumnChangesService],
93
+ declarations: [
94
+ DataTableFooterTemplateDirective,
95
+ VisibilityDirective,
96
+ DraggableDirective,
97
+ ResizeableDirective,
98
+ OrderableDirective,
99
+ LongPressDirective,
100
+ ScrollerComponent,
101
+ DatatableComponent,
102
+ DataTableColumnDirective,
103
+ DataTableHeaderComponent,
104
+ DataTableHeaderCellComponent,
105
+ DataTableBodyComponent,
106
+ DataTableFooterComponent,
107
+ DataTablePagerComponent,
108
+ ProgressBarComponent,
109
+ DataTableBodyRowComponent,
110
+ DataTableRowWrapperComponent,
111
+ DatatableRowDetailDirective,
112
+ DatatableGroupHeaderDirective,
113
+ DatatableRowDetailTemplateDirective,
114
+ DataTableBodyCellComponent,
115
+ DataTableSelectionComponent,
116
+ DataTableColumnHeaderDirective,
117
+ DataTableColumnCellDirective,
118
+ DataTableColumnCellTreeToggle,
119
+ DatatableFooterDirective,
120
+ DatatableGroupHeaderTemplateDirective,
121
+ DataTableSummaryRowComponent
122
+ ],
123
+ exports: [
124
+ DatatableComponent,
125
+ DatatableRowDetailDirective,
126
+ DatatableGroupHeaderDirective,
127
+ DatatableRowDetailTemplateDirective,
128
+ DataTableColumnDirective,
129
+ DataTableColumnHeaderDirective,
130
+ DataTableColumnCellDirective,
131
+ DataTableColumnCellTreeToggle,
132
+ DataTableFooterTemplateDirective,
133
+ DatatableFooterDirective,
134
+ DataTablePagerComponent,
135
+ DatatableGroupHeaderTemplateDirective
136
+ ]
137
+ }]
138
+ }] });
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWRhdGF0YWJsZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zd2ltbGFuZS9uZ3gtZGF0YXRhYmxlL3NyYy9saWIvbmd4LWRhdGF0YWJsZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNqRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RixPQUFP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QkFDbEIsa0JBQWtCO3dCQUNsQixpQkFBaUI7d0JBQ2pCLGtCQUFrQjt3QkFDbEIsd0JBQXdCO3dCQUN4Qix3QkFBd0I7d0JBQ3hCLDRCQUE0Qjt3QkFDNUIsc0JBQXNCO3dCQUN0Qix3QkFBd0I7d0JBQ3hCLHVCQUF1Qjt3QkFDdkIsb0JBQW9CO3dCQUNwQix5QkFBeUI7d0JBQ3pCLDRCQUE0Qjt3QkFDNUIsMkJBQTJCO3dCQUMzQiw2QkFBNkI7d0JBQzdCLG1DQUFtQzt3QkFDbkMsMEJBQTBCO3dCQUMxQiwyQkFBMkI7d0JBQzNCLDhCQUE4Qjt3QkFDOUIsNEJBQTRCO3dCQUM1Qiw2QkFBNkI7d0JBQzdCLHdCQUF3Qjt3QkFDeEIscUNBQXFDO3dCQUNyQyw0QkFBNEI7cUJBQzdCO29CQUNELE9BQU8sRUFBRTt3QkFDUCxrQkFBa0I7d0JBQ2xCLDJCQUEyQjt3QkFDM0IsNkJBQTZCO3dCQUM3QixtQ0FBbUM7d0JBQ25DLHdCQUF3Qjt3QkFDeEIsOEJBQThCO3dCQUM5Qiw0QkFBNEI7d0JBQzVCLDZCQUE2Qjt3QkFDN0IsZ0NBQWdDO3dCQUNoQyx3QkFBd0I7d0JBQ3hCLHVCQUF1Qjt3QkFDdkIscUNBQXFDO3FCQUN0QztpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU2Nyb2xsYmFySGVscGVyIH0gZnJvbSAnLi9zZXJ2aWNlcy9zY3JvbGxiYXItaGVscGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGltZW5zaW9uc0hlbHBlciB9IGZyb20gJy4vc2VydmljZXMvZGltZW5zaW9ucy1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb2x1bW5DaGFuZ2VzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvY29sdW1uLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQgeyBEYXRhVGFibGVGb290ZXJUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLXRlbXBsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBWaXNpYmlsaXR5RGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL3Zpc2liaWxpdHkuZGlyZWN0aXZlJztcbmltcG9ydCB7IERyYWdnYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9kcmFnZ2FibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJlc2l6ZWFibGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvcmVzaXplYWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgT3JkZXJhYmxlRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL29yZGVyYWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTG9uZ1ByZXNzRGlyZWN0aXZlIH0gZnJvbSAnLi9kaXJlY3RpdmVzL2xvbmctcHJlc3MuZGlyZWN0aXZlJztcbmltcG9ydCB7IFNjcm9sbGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2JvZHkvc2Nyb2xsZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGF0YWJsZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9kYXRhdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZUNvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9jb2x1bW5zL2NvbHVtbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0YVRhYmxlSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZUhlYWRlckNlbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci1jZWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRhVGFibGVCb2R5Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2JvZHkvYm9keS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlRm9vdGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvb3Rlci9mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZVBhZ2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2Zvb3Rlci9wYWdlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgUHJvZ3Jlc3NCYXJDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYm9keS9wcm9ncmVzcy1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZUJvZHlSb3dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYm9keS9ib2R5LXJvdy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlUm93V3JhcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9ib2R5L2JvZHktcm93LXdyYXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9yb3ctZGV0YWlsL3Jvdy1kZXRhaWwuZGlyZWN0aXZlJztcbmltcG9ydCB7IERhdGF0YWJsZUdyb3VwSGVhZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21wb25lbnRzL2JvZHkvYm9keS1ncm91cC1oZWFkZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IERhdGF0YWJsZVJvd0RldGFpbFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21wb25lbnRzL3Jvdy1kZXRhaWwvcm93LWRldGFpbC10ZW1wbGF0ZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0YVRhYmxlQm9keUNlbGxDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYm9keS9ib2R5LWNlbGwuY29tcG9uZW50JztcbmltcG9ydCB7IERhdGFUYWJsZVNlbGVjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9ib2R5L3NlbGVjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21wb25lbnRzL2NvbHVtbnMvY29sdW1uLWhlYWRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29sdW1uQ2VsbERpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9jb2x1bW5zL2NvbHVtbi1jZWxsLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYXRhVGFibGVDb2x1bW5DZWxsVHJlZVRvZ2dsZSB9IGZyb20gJy4vY29tcG9uZW50cy9jb2x1bW5zL3RyZWUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERhdGF0YWJsZUZvb3RlckRpcmVjdGl2ZSB9IGZyb20gJy4vY29tcG9uZW50cy9mb290ZXIvZm9vdGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBEYXRhdGFibGVHcm91cEhlYWRlclRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi9jb21wb25lbnRzL2JvZHkvYm9keS1ncm91cC1oZWFkZXItdGVtcGxhdGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IERhdGFUYWJsZVN1bW1hcnlSb3dDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYm9keS9zdW1tYXJ5L3N1bW1hcnktcm93LmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBwcm92aWRlcnM6IFtTY3JvbGxiYXJIZWxwZXIsIERpbWVuc2lvbnNIZWxwZXIsIENvbHVtbkNoYW5nZXNTZXJ2aWNlXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgRGF0YVRhYmxlRm9vdGVyVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgVmlzaWJpbGl0eURpcmVjdGl2ZSxcbiAgICBEcmFnZ2FibGVEaXJlY3RpdmUsXG4gICAgUmVzaXplYWJsZURpcmVjdGl2ZSxcbiAgICBPcmRlcmFibGVEaXJlY3RpdmUsXG4gICAgTG9uZ1ByZXNzRGlyZWN0aXZlLFxuICAgIFNjcm9sbGVyQ29tcG9uZW50LFxuICAgIERhdGF0YWJsZUNvbXBvbmVudCxcbiAgICBEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmUsXG4gICAgRGF0YVRhYmxlSGVhZGVyQ29tcG9uZW50LFxuICAgIERhdGFUYWJsZUhlYWRlckNlbGxDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQm9keUNvbXBvbmVudCxcbiAgICBEYXRhVGFibGVGb290ZXJDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlUGFnZXJDb21wb25lbnQsXG4gICAgUHJvZ3Jlc3NCYXJDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQm9keVJvd0NvbXBvbmVudCxcbiAgICBEYXRhVGFibGVSb3dXcmFwcGVyQ29tcG9uZW50LFxuICAgIERhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZSxcbiAgICBEYXRhdGFibGVHcm91cEhlYWRlckRpcmVjdGl2ZSxcbiAgICBEYXRhdGFibGVSb3dEZXRhaWxUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEYXRhVGFibGVCb2R5Q2VsbENvbXBvbmVudCxcbiAgICBEYXRhVGFibGVTZWxlY3Rpb25Db21wb25lbnQsXG4gICAgRGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlLFxuICAgIERhdGFUYWJsZUNvbHVtbkNlbGxEaXJlY3RpdmUsXG4gICAgRGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGUsXG4gICAgRGF0YXRhYmxlRm9vdGVyRGlyZWN0aXZlLFxuICAgIERhdGF0YWJsZUdyb3VwSGVhZGVyVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgRGF0YVRhYmxlU3VtbWFyeVJvd0NvbXBvbmVudFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgRGF0YXRhYmxlQ29tcG9uZW50LFxuICAgIERhdGF0YWJsZVJvd0RldGFpbERpcmVjdGl2ZSxcbiAgICBEYXRhdGFibGVHcm91cEhlYWRlckRpcmVjdGl2ZSxcbiAgICBEYXRhdGFibGVSb3dEZXRhaWxUZW1wbGF0ZURpcmVjdGl2ZSxcbiAgICBEYXRhVGFibGVDb2x1bW5EaXJlY3RpdmUsXG4gICAgRGF0YVRhYmxlQ29sdW1uSGVhZGVyRGlyZWN0aXZlLFxuICAgIERhdGFUYWJsZUNvbHVtbkNlbGxEaXJlY3RpdmUsXG4gICAgRGF0YVRhYmxlQ29sdW1uQ2VsbFRyZWVUb2dnbGUsXG4gICAgRGF0YVRhYmxlRm9vdGVyVGVtcGxhdGVEaXJlY3RpdmUsXG4gICAgRGF0YXRhYmxlRm9vdGVyRGlyZWN0aXZlLFxuICAgIERhdGFUYWJsZVBhZ2VyQ29tcG9uZW50LFxuICAgIERhdGF0YWJsZUdyb3VwSGVhZGVyVGVtcGxhdGVEaXJlY3RpdmVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBOZ3hEYXRhdGFibGVNb2R1bGUge1xuICAvKipcbiAgICogQ29uZmlndXJlIGdsb2JhbCBjb25maWd1cmF0aW9uIHZpYSBJTmd4RGF0YXRhYmxlQ29uZmlnXG4gICAqIEBwYXJhbSBjb25maWd1cmF0aW9uXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdChjb25maWd1cmF0aW9uOiBJTmd4RGF0YXRhYmxlQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxOZ3hEYXRhdGFibGVNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IE5neERhdGF0YWJsZU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogJ2NvbmZpZ3VyYXRpb24nLCB1c2VWYWx1ZTogY29uZmlndXJhdGlvbiB9XVxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZGVmaW5pdGlvbiBmb3IgSU5neERhdGF0YWJsZUNvbmZpZyBnbG9iYWwgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIElOZ3hEYXRhdGFibGVDb25maWcge1xuICBtZXNzYWdlczoge1xuICAgIGVtcHR5TWVzc2FnZTogc3RyaW5nOyAvLyBNZXNzYWdlIHRvIHNob3cgd2hlbiBhcnJheSBpcyBwcmVzZW50ZWQsIGJ1dCBjb250YWlucyBubyB2YWx1ZXNcbiAgICB0b3RhbE1lc3NhZ2U6IHN0cmluZzsgLy8gRm9vdGVyIHRvdGFsIG1lc3NhZ2VcbiAgICBzZWxlY3RlZE1lc3NhZ2U6IHN0cmluZzsgLy8gRm9vdGVyIHNlbGVjdGVkIG1lc3NhZ2VcbiAgfTtcbn1cbiJdfQ==