@clr/angular 15.0.0-beta.1 → 15.0.0-beta.3

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 (119) hide show
  1. package/clarity.api.md +158 -489
  2. package/clr-angular.module.d.ts +12 -15
  3. package/data/datagrid/datagrid-column.d.ts +1 -22
  4. package/data/datagrid/datagrid-pagination.d.ts +2 -2
  5. package/data/datagrid/datagrid.module.d.ts +13 -13
  6. package/data/stack-view/index.d.ts +0 -2
  7. package/data/stack-view/stack-block.d.ts +1 -17
  8. package/data/stack-view/stack-view.d.ts +1 -11
  9. package/data/stack-view/stack-view.module.d.ts +5 -7
  10. package/data/tree-view/tree-node.d.ts +6 -6
  11. package/esm2020/accordion/accordion-panel.mjs +3 -3
  12. package/esm2020/accordion/stepper/stepper-panel.mjs +3 -3
  13. package/esm2020/clr-angular.module.mjs +1 -13
  14. package/esm2020/data/datagrid/datagrid-action-overflow.mjs +10 -10
  15. package/esm2020/data/datagrid/datagrid-column-separator.mjs +16 -15
  16. package/esm2020/data/datagrid/datagrid-column-toggle.mjs +18 -20
  17. package/esm2020/data/datagrid/datagrid-column.mjs +2 -48
  18. package/esm2020/data/datagrid/datagrid-detail.mjs +8 -6
  19. package/esm2020/data/datagrid/datagrid-filter.mjs +10 -10
  20. package/esm2020/data/datagrid/datagrid-pagination.mjs +10 -5
  21. package/esm2020/data/datagrid/datagrid-row-detail.mjs +7 -8
  22. package/esm2020/data/datagrid/datagrid-row.mjs +3 -3
  23. package/esm2020/data/datagrid/datagrid.module.mjs +9 -9
  24. package/esm2020/data/stack-view/index.mjs +1 -3
  25. package/esm2020/data/stack-view/stack-block.mjs +2 -8
  26. package/esm2020/data/stack-view/stack-header.mjs +2 -23
  27. package/esm2020/data/stack-view/stack-view.mjs +4 -28
  28. package/esm2020/data/stack-view/stack-view.module.mjs +3 -23
  29. package/esm2020/data/tree-view/tree-node.mjs +30 -26
  30. package/esm2020/forms/datepicker/date-container.mjs +9 -9
  31. package/esm2020/forms/datepicker/datepicker.module.mjs +5 -5
  32. package/esm2020/layout/nav/nav-level.mjs +23 -10
  33. package/esm2020/layout/vertical-nav/vertical-nav-group.mjs +3 -7
  34. package/esm2020/modal/modal.mjs +8 -19
  35. package/esm2020/modal/modal.module.mjs +5 -5
  36. package/esm2020/popover/dropdown/dropdown-item.mjs +30 -33
  37. package/esm2020/utils/cdk/cdk-drag.module.mjs +37 -0
  38. package/esm2020/utils/cdk/cdk-trap-focus.module.mjs +37 -0
  39. package/esm2020/utils/i18n/common-strings.default.mjs +2 -3
  40. package/esm2020/utils/i18n/common-strings.interface.mjs +1 -1
  41. package/esm2020/utils/index.mjs +1 -5
  42. package/esm2020/wizard/wizard.mjs +6 -30
  43. package/fesm2015/clr-angular.mjs +259 -1990
  44. package/fesm2015/clr-angular.mjs.map +1 -1
  45. package/fesm2020/clr-angular.mjs +306 -2033
  46. package/fesm2020/clr-angular.mjs.map +1 -1
  47. package/forms/datepicker/datepicker.module.d.ts +6 -6
  48. package/layout/nav/nav-level.d.ts +12 -4
  49. package/layout/vertical-nav/vertical-nav-group.d.ts +1 -2
  50. package/modal/modal.d.ts +1 -4
  51. package/modal/modal.module.d.ts +3 -3
  52. package/package.json +2 -1
  53. package/popover/dropdown/dropdown-item.d.ts +7 -13
  54. package/src/utils/popover/README.md +1 -1
  55. package/utils/cdk/cdk-drag.module.d.ts +17 -0
  56. package/utils/cdk/cdk-trap-focus.module.d.ts +17 -0
  57. package/utils/i18n/common-strings.interface.d.ts +0 -17
  58. package/utils/index.d.ts +0 -4
  59. package/wizard/wizard.d.ts +2 -13
  60. package/data/stack-view/stack-control.d.ts +0 -16
  61. package/data/stack-view/stack-input.d.ts +0 -10
  62. package/data/stack-view/stack-select.d.ts +0 -9
  63. package/esm2020/data/stack-view/stack-control.mjs +0 -34
  64. package/esm2020/data/stack-view/stack-input.mjs +0 -42
  65. package/esm2020/data/stack-view/stack-select.mjs +0 -48
  66. package/esm2020/utils/a11y/aria-live.service.mjs +0 -163
  67. package/esm2020/utils/a11y/index.mjs +0 -7
  68. package/esm2020/utils/drag-and-drop/drag-and-drop.module.mjs +0 -42
  69. package/esm2020/utils/drag-and-drop/drag-event.mjs +0 -16
  70. package/esm2020/utils/drag-and-drop/drag-handle.mjs +0 -35
  71. package/esm2020/utils/drag-and-drop/draggable/draggable.mjs +0 -135
  72. package/esm2020/utils/drag-and-drop/draggable-ghost.mjs +0 -124
  73. package/esm2020/utils/drag-and-drop/droppable/droppable.mjs +0 -222
  74. package/esm2020/utils/drag-and-drop/if-dragged.mjs +0 -47
  75. package/esm2020/utils/drag-and-drop/index.mjs +0 -14
  76. package/esm2020/utils/drag-and-drop/interfaces/drag-event.interface.mjs +0 -15
  77. package/esm2020/utils/drag-and-drop/interfaces/drop-tolerance.interface.mjs +0 -7
  78. package/esm2020/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.mjs +0 -54
  79. package/esm2020/utils/drag-and-drop/providers/drag-event-listener.service.mjs +0 -179
  80. package/esm2020/utils/drag-and-drop/providers/drag-handle-registrar.service.mjs +0 -60
  81. package/esm2020/utils/drag-and-drop/providers/draggable-snapshot.service.mjs +0 -38
  82. package/esm2020/utils/drag-and-drop/providers/global-drag-mode.service.mjs +0 -26
  83. package/esm2020/utils/focus-trap/focus-trap-config.interface.mjs +0 -7
  84. package/esm2020/utils/focus-trap/focus-trap-tracker.service.mjs +0 -32
  85. package/esm2020/utils/focus-trap/focus-trap.directive.mjs +0 -158
  86. package/esm2020/utils/focus-trap/focus-trap.mjs +0 -141
  87. package/esm2020/utils/focus-trap/focus-trap.module.mjs +0 -24
  88. package/esm2020/utils/focus-trap/index.mjs +0 -9
  89. package/esm2020/utils/for-type-ahead/for-type-ahead.mjs +0 -54
  90. package/esm2020/utils/for-type-ahead/for-type-ahead.module.mjs +0 -23
  91. package/esm2020/utils/for-type-ahead/for-type-ahead.service.mjs +0 -29
  92. package/esm2020/utils/for-type-ahead/index.mjs +0 -8
  93. package/utils/a11y/aria-live.service.d.ts +0 -93
  94. package/utils/a11y/index.d.ts +0 -1
  95. package/utils/drag-and-drop/drag-and-drop.module.d.ts +0 -14
  96. package/utils/drag-and-drop/drag-event.d.ts +0 -8
  97. package/utils/drag-and-drop/drag-handle.d.ts +0 -11
  98. package/utils/drag-and-drop/draggable/draggable.d.ts +0 -36
  99. package/utils/drag-and-drop/draggable-ghost.d.ts +0 -30
  100. package/utils/drag-and-drop/droppable/droppable.d.ts +0 -42
  101. package/utils/drag-and-drop/if-dragged.d.ts +0 -13
  102. package/utils/drag-and-drop/index.d.ts +0 -8
  103. package/utils/drag-and-drop/interfaces/drag-event.interface.d.ts +0 -22
  104. package/utils/drag-and-drop/interfaces/drop-tolerance.interface.d.ts +0 -6
  105. package/utils/drag-and-drop/providers/drag-and-drop-event-bus.service.d.ts +0 -16
  106. package/utils/drag-and-drop/providers/drag-event-listener.service.d.ts +0 -39
  107. package/utils/drag-and-drop/providers/drag-handle-registrar.service.d.ts +0 -18
  108. package/utils/drag-and-drop/providers/draggable-snapshot.service.d.ts +0 -16
  109. package/utils/drag-and-drop/providers/global-drag-mode.service.d.ts +0 -10
  110. package/utils/focus-trap/focus-trap-config.interface.d.ts +0 -3
  111. package/utils/focus-trap/focus-trap-tracker.service.d.ts +0 -12
  112. package/utils/focus-trap/focus-trap.d.ts +0 -29
  113. package/utils/focus-trap/focus-trap.directive.d.ts +0 -38
  114. package/utils/focus-trap/focus-trap.module.d.ts +0 -10
  115. package/utils/focus-trap/index.d.ts +0 -3
  116. package/utils/for-type-ahead/for-type-ahead.d.ts +0 -15
  117. package/utils/for-type-ahead/for-type-ahead.module.d.ts +0 -8
  118. package/utils/for-type-ahead/for-type-ahead.service.d.ts +0 -11
  119. package/utils/for-type-ahead/index.d.ts +0 -2
@@ -1,179 +0,0 @@
1
- /*
2
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
3
- * This software is released under MIT license.
4
- * The full license information can be found in LICENSE in the root directory of this project.
5
- */
6
- import { Injectable } from '@angular/core';
7
- import { Subject } from 'rxjs';
8
- import { DragEventType } from '../interfaces/drag-event.interface';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "./drag-and-drop-event-bus.service";
11
- export class DragEventListenerService {
12
- constructor(ngZone, renderer, eventBus) {
13
- this.ngZone = ngZone;
14
- this.renderer = renderer;
15
- this.eventBus = eventBus;
16
- // contains listeners for the starting events such as mousedown and touchstart
17
- this.listeners = [];
18
- this.dragStart = new Subject();
19
- this.dragMove = new Subject();
20
- this.dragEnd = new Subject();
21
- this.hasDragStarted = false;
22
- this.dragStartDelay = 0;
23
- }
24
- get dragStarted() {
25
- return this.dragStart.asObservable();
26
- }
27
- get dragMoved() {
28
- return this.dragMove.asObservable();
29
- }
30
- get dragEnded() {
31
- return this.dragEnd.asObservable();
32
- }
33
- get dragStartPosition() {
34
- return this.initialPosition;
35
- }
36
- attachDragListeners(draggableEl) {
37
- this.draggableEl = draggableEl;
38
- this.listeners.push(this.customDragEvent(this.draggableEl, 'mousedown', 'mousemove', 'mouseup'));
39
- this.listeners.push(this.customDragEvent(this.draggableEl, 'touchstart', 'touchmove', 'touchend'));
40
- }
41
- detachDragListeners() {
42
- if (this.listeners) {
43
- this.listeners.map(event => event());
44
- }
45
- // In most cases, once users start dragging with mousedown/touchstart events,
46
- // they will end dragging at one point with mouseup/touchend.
47
- // However, there might be a few cases where mousedown/touchstart events get registered,
48
- // but the draggable element gets removed before user ends dragging.
49
- // In that case, we need to remove the attached listeners that happened during the mousedown/touchstart events.
50
- if (this.nestedListeners) {
51
- this.nestedListeners.map(event => event());
52
- }
53
- if (this.checkDragStartBoundaryListener) {
54
- this.checkDragStartBoundaryListener();
55
- }
56
- }
57
- getNativeEventObject(event) {
58
- if (Object.prototype.hasOwnProperty.call(event, 'changedTouches')) {
59
- return event.changedTouches[0];
60
- }
61
- else {
62
- return event;
63
- }
64
- }
65
- customDragEvent(element, startOnEvent, moveOnEvent, endOnEvent) {
66
- return this.renderer.listen(element, startOnEvent, (startEvent) => {
67
- // save the initial point to initialPosition
68
- // this will be used to calculate how far the draggable has been dragged from its initial position
69
- this.initialPosition = {
70
- pageX: this.getNativeEventObject(startEvent).pageX,
71
- pageY: this.getNativeEventObject(startEvent).pageY,
72
- };
73
- // Initialize nested listeners' property with a new empty array;
74
- this.nestedListeners = [];
75
- // Listen to selectstart/mousemove/touchmove events outside of angular zone.
76
- this.ngZone.runOutsideAngular(() => {
77
- // This is needed to disable selection during dragging (especially in EDGE/IE11).
78
- this.nestedListeners.push(this.renderer.listen('document', 'selectstart', (selectEvent) => {
79
- selectEvent.preventDefault();
80
- selectEvent.stopImmediatePropagation();
81
- }));
82
- // During the drag start delay, pointer should stay within the boundary.
83
- this.checkDragStartBoundary(moveOnEvent);
84
- this.dragStartDelayTimeout = setTimeout(() => {
85
- if (this.checkDragStartBoundaryListener) {
86
- this.checkDragStartBoundaryListener();
87
- }
88
- this.hasDragStarted = true;
89
- // Fire "dragstart"
90
- this.broadcast(startEvent, DragEventType.DRAG_START);
91
- this.nestedListeners.push(this.renderer.listen('document', moveOnEvent, (moveEvent) => {
92
- // Event.stopImmediatePropagation() is needed here to prevent nested draggables from getting dragged
93
- // altogether. We shouldn't use Event.stopPropagation() here as we are listening to the events
94
- // on the global element level.
95
- // With Event.stopImmediatePropagation(), it registers the events sent from the inner most draggable
96
- // first. Then immediately after that, it stops listening to the same type of events on the same
97
- // element. So this will help us to not register the same events that would come from the parent
98
- // level draggables eventually.
99
- moveEvent.stopImmediatePropagation();
100
- if (this.hasDragStarted) {
101
- // Fire "dragmove"
102
- this.broadcast(moveEvent, DragEventType.DRAG_MOVE);
103
- }
104
- }));
105
- }, this.dragStartDelay);
106
- });
107
- // Listen to mouseup/touchend events.
108
- this.nestedListeners.push(this.renderer.listen('document', endOnEvent, (endEvent) => {
109
- if (this.hasDragStarted) {
110
- // Fire "dragend" only if dragstart is registered
111
- this.hasDragStarted = false;
112
- this.broadcast(endEvent, DragEventType.DRAG_END);
113
- }
114
- clearTimeout(this.dragStartDelayTimeout);
115
- // We must remove the the nested listeners every time drag completes.
116
- this.nestedListeners.map(event => event());
117
- // We must remove the event listener from checkDragStartBoundary
118
- if (this.checkDragStartBoundaryListener) {
119
- this.checkDragStartBoundaryListener();
120
- }
121
- }));
122
- });
123
- }
124
- checkDragStartBoundary(eventType) {
125
- this.checkDragStartBoundaryListener = this.renderer.listen('document', eventType, (moveEvent) => {
126
- const deltaX = Math.abs(this.getNativeEventObject(moveEvent).pageX - this.initialPosition.pageX);
127
- const deltaY = Math.abs(this.getNativeEventObject(moveEvent).pageY - this.initialPosition.pageY);
128
- // If pointer move delta exceeds horizontal or vertical threshold,
129
- // we should cancel drag initiation.
130
- if (deltaX > 1 || deltaY > 1) {
131
- clearTimeout(this.dragStartDelayTimeout);
132
- if (this.checkDragStartBoundaryListener) {
133
- this.checkDragStartBoundaryListener();
134
- }
135
- }
136
- });
137
- }
138
- broadcast(event, eventType) {
139
- const dragEvent = this.generateDragEvent(event, eventType);
140
- switch (dragEvent.type) {
141
- case DragEventType.DRAG_START:
142
- this.dragStart.next(dragEvent);
143
- break;
144
- case DragEventType.DRAG_MOVE:
145
- this.dragMove.next(dragEvent);
146
- break;
147
- case DragEventType.DRAG_END:
148
- this.dragEnd.next(dragEvent);
149
- break;
150
- default:
151
- break;
152
- }
153
- // The following properties are set after they are broadcasted to the DraggableGhost component.
154
- dragEvent.ghostElement = this.ghostElement;
155
- dragEvent.dropPointPosition = this.dropPointPosition;
156
- this.eventBus.broadcast(dragEvent);
157
- }
158
- generateDragEvent(event, eventType) {
159
- const nativeEvent = this.getNativeEventObject(event);
160
- return {
161
- type: eventType,
162
- dragPosition: {
163
- pageX: nativeEvent.pageX,
164
- pageY: nativeEvent.pageY,
165
- moveX: nativeEvent.pageX - this.initialPosition.pageX,
166
- moveY: nativeEvent.pageY - this.initialPosition.pageY,
167
- },
168
- group: this.group,
169
- dragDataTransfer: this.dragDataTransfer,
170
- ghostElement: this.ghostElement,
171
- };
172
- }
173
- }
174
- DragEventListenerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragEventListenerService, deps: [{ token: i0.NgZone }, { token: i0.Renderer2 }, { token: i1.DragAndDropEventBusService }], target: i0.ɵɵFactoryTarget.Injectable });
175
- DragEventListenerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragEventListenerService });
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragEventListenerService, decorators: [{
177
- type: Injectable
178
- }], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i0.Renderer2 }, { type: i1.DragAndDropEventBusService }]; } });
179
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1ldmVudC1saXN0ZW5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvZHJhZy1hbmQtZHJvcC9wcm92aWRlcnMvZHJhZy1ldmVudC1saXN0ZW5lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE9BQU8sRUFBc0IsYUFBYSxFQUFxQixNQUFNLG9DQUFvQyxDQUFDOzs7QUFJMUcsTUFBTSxPQUFPLHdCQUF3QjtJQW9DbkMsWUFBb0IsTUFBYyxFQUFVLFFBQW1CLEVBQVUsUUFBdUM7UUFBNUYsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUFVLGFBQVEsR0FBUixRQUFRLENBQVc7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUErQjtRQWpDaEgsOEVBQThFO1FBQ3RFLGNBQVMsR0FBbUIsRUFBRSxDQUFDO1FBUS9CLGNBQVMsR0FBbUMsSUFBSSxPQUFPLEVBQXlCLENBQUM7UUFDakYsYUFBUSxHQUFtQyxJQUFJLE9BQU8sRUFBeUIsQ0FBQztRQUNoRixZQUFPLEdBQW1DLElBQUksT0FBTyxFQUF5QixDQUFDO1FBRS9FLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBMkIvQixtQkFBYyxHQUFHLENBQUMsQ0FBQztJQVBnRyxDQUFDO0lBaEJwSCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlB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QUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQzs7cUhBNU5VLHdCQUF3Qjt5SEFBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIE5nWm9uZSwgUmVuZGVyZXIyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IERyYWdFdmVudEludGVyZmFjZSwgRHJhZ0V2ZW50VHlwZSwgRHJhZ1BvaW50UG9zaXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2RyYWctZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IERyYWdBbmREcm9wRXZlbnRCdXNTZXJ2aWNlIH0gZnJvbSAnLi9kcmFnLWFuZC1kcm9wLWV2ZW50LWJ1cy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERyYWdFdmVudExpc3RlbmVyU2VydmljZTxUPiB7XG4gIHByaXZhdGUgZHJhZ2dhYmxlRWw6IGFueTtcblxuICAvLyBjb250YWlucyBsaXN0ZW5lcnMgZm9yIHRoZSBzdGFydGluZyBldmVudHMgc3VjaCBhcyBtb3VzZWRvd24gYW5kIHRvdWNoc3RhcnRcbiAgcHJpdmF0ZSBsaXN0ZW5lcnM6ICgoKSA9PiB2b2lkKVtdID0gW107XG4gIC8vIGNvbnRhaW5zIGxpc3RlbmVycyBmb3IgbmVzdGVkIGV2ZW50cyB0aGF0IGhhcHBlbnMgYWZ0ZXIvaW5zaWRlIHRoZSBzdGFydGluZyBldmVudHNcbiAgLy8gc3VjaCBhcyBzZWxlY3RzdGFydCwgbW91c2Vtb3ZlL3RvdWNobW92ZSwgbW91c2V1cC90b3VjaGVuZFxuICBwcml2YXRlIG5lc3RlZExpc3RlbmVyczogKCgpID0+IHZvaWQpW107XG5cbiAgLy8gY29udGFpbnMgbGlzdGVuZXIgZm9yIG1vdXNlbW92ZS90b3VjaG1vdmUgYmVmb3JlIGRlbGF5XG4gIHByaXZhdGUgY2hlY2tEcmFnU3RhcnRCb3VuZGFyeUxpc3RlbmVyOiAoKSA9PiB2b2lkO1xuXG4gIHByaXZhdGUgZHJhZ1N0YXJ0OiBTdWJqZWN0PERyYWdFdmVudEludGVyZmFjZTxUPj4gPSBuZXcgU3ViamVjdDxEcmFnRXZlbnRJbnRlcmZhY2U8VD4+KCk7XG4gIHByaXZhdGUgZHJhZ01vdmU6IFN1YmplY3Q8RHJhZ0V2ZW50SW50ZXJmYWNlPFQ+PiA9IG5ldyBTdWJqZWN0PERyYWdFdmVudEludGVyZmFjZTxUPj4oKTtcbiAgcHJpdmF0ZSBkcmFnRW5kOiBTdWJqZWN0PERyYWdFdmVudEludGVyZmFjZTxUPj4gPSBuZXcgU3ViamVjdDxEcmFnRXZlbnRJbnRlcmZhY2U8VD4+KCk7XG5cbiAgcHJpdmF0ZSBoYXNEcmFnU3RhcnRlZCA9IGZhbHNlO1xuXG4gIHByaXZhdGUgZHJhZ1N0YXJ0RGVsYXlUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PjtcblxuICBnZXQgZHJhZ1N0YXJ0ZWQoKTogT2JzZXJ2YWJsZTxEcmFnRXZlbnRJbnRlcmZhY2U8VD4+IHtcbiAgICByZXR1cm4gdGhpcy5kcmFnU3RhcnQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgZHJhZ01vdmVkKCk6IE9ic2VydmFibGU8RHJhZ0V2ZW50SW50ZXJmYWNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ01vdmUuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgZHJhZ0VuZGVkKCk6IE9ic2VydmFibGU8RHJhZ0V2ZW50SW50ZXJmYWNlPFQ+PiB7XG4gICAgcmV0dXJuIHRoaXMuZHJhZ0VuZC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBkcmFnU3RhcnRQb3NpdGlvbigpOiBEcmFnUG9pbnRQb3NpdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuaW5pdGlhbFBvc2l0aW9uO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLCBwcml2YXRlIGV2ZW50QnVzOiBEcmFnQW5kRHJvcEV2ZW50QnVzU2VydmljZTxUPikge31cblxuICBwcml2YXRlIGluaXRpYWxQb3NpdGlvbjogRHJhZ1BvaW50UG9zaXRpb247XG5cbiAgLy8gRHJhZ2dhYmxlIGNvbXBvbmVudCBzZXRzIHRoZXNlIHByb3BlcnRpZXM6XG4gIGRyYWdEYXRhVHJhbnNmZXI/OiBUO1xuICBncm91cD86IHN0cmluZyB8IHN0cmluZ1tdO1xuICBkcmFnU3RhcnREZWxheSA9IDA7XG5cbiAgLy8gRHJhZ2dhYmxlR2hvc3QgY29tcG9uZW50IHNldHMgdGhlc2UgcHJvcGVydGllczpcbiAgZ2hvc3RFbGVtZW50PzogYW55O1xuICBkcm9wUG9pbnRQb3NpdGlvbj86IERyYWdQb2ludFBvc2l0aW9uO1xuXG4gIGF0dGFjaERyYWdMaXN0ZW5lcnMoZHJhZ2dhYmxlRWw6IE5vZGUpIHtcbiAgICB0aGlzLmRyYWdnYWJsZUVsID0gZHJhZ2dhYmxlRWw7XG4gICAgdGhpcy5saXN0ZW5lcnMucHVzaCh0aGlzLmN1c3RvbURyYWdFdmVudCh0aGlzLmRyYWdnYWJsZUVsLCAnbW91c2Vkb3duJywgJ21vdXNlbW92ZScsICdtb3VzZXVwJykpO1xuICAgIHRoaXMubGlzdGVuZXJzLnB1c2godGhpcy5jdXN0b21EcmFnRXZlbnQodGhpcy5kcmFnZ2FibGVFbCwgJ3RvdWNoc3RhcnQnLCAndG91Y2htb3ZlJywgJ3RvdWNoZW5kJykpO1xuICB9XG5cbiAgZGV0YWNoRHJhZ0xpc3RlbmVycygpIHtcbiAgICBpZiAodGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIHRoaXMubGlzdGVuZXJzLm1hcChldmVudCA9PiBldmVudCgpKTtcbiAgICB9XG5cbiAgICAvLyBJbiBtb3N0IGNhc2VzLCBvbmNlIHVzZXJzIHN0YXJ0IGRyYWdnaW5nIHdpdGggbW91c2Vkb3duL3RvdWNoc3RhcnQgZXZlbnRzLFxuICAgIC8vIHRoZXkgd2lsbCBlbmQgZHJhZ2dpbmcgYXQgb25lIHBvaW50IHdpdGggbW91c2V1cC90b3VjaGVuZC5cbiAgICAvLyBIb3dldmVyLCB0aGVyZSBtaWdodCBiZSBhIGZldyBjYXNlcyB3aGVyZSBtb3VzZWRvd24vdG91Y2hzdGFydCBldmVudHMgZ2V0IHJlZ2lzdGVyZWQsXG4gICAgLy8gYnV0IHRoZSBkcmFnZ2FibGUgZWxlbWVudCBnZXRzIHJlbW92ZWQgYmVmb3JlIHVzZXIgZW5kcyBkcmFnZ2luZy5cbiAgICAvLyBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBhdHRhY2hlZCBsaXN0ZW5lcnMgdGhhdCBoYXBwZW5lZCBkdXJpbmcgdGhlIG1vdXNlZG93bi90b3VjaHN0YXJ0IGV2ZW50cy5cbiAgICBpZiAodGhpcy5uZXN0ZWRMaXN0ZW5lcnMpIHtcbiAgICAgIHRoaXMubmVzdGVkTGlzdGVuZXJzLm1hcChldmVudCA9PiBldmVudCgpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5jaGVja0RyYWdTdGFydEJvdW5kYXJ5TGlzdGVuZXIpIHtcbiAgICAgIHRoaXMuY2hlY2tEcmFnU3RhcnRCb3VuZGFyeUxpc3RlbmVyKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXROYXRpdmVFdmVudE9iamVjdChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBhbnkge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXZlbnQsICdjaGFuZ2VkVG91Y2hlcycpKSB7XG4gICAgICByZXR1cm4gKGV2ZW50IGFzIFRvdWNoRXZlbnQpLmNoYW5nZWRUb3VjaGVzWzBdO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZXZlbnQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjdXN0b21EcmFnRXZlbnQoZWxlbWVudDogTm9kZSwgc3RhcnRPbkV2ZW50OiBzdHJpbmcsIG1vdmVPbkV2ZW50OiBzdHJpbmcsIGVuZE9uRXZlbnQ6IHN0cmluZyk6ICgpID0+IHZvaWQge1xuICAgIHJldHVybiB0aGlzLnJlbmRlcmVyLmxpc3RlbihlbGVtZW50LCBzdGFydE9uRXZlbnQsIChzdGFydEV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkgPT4ge1xuICAgICAgLy8gc2F2ZSB0aGUgaW5pdGlhbCBwb2ludCB0byBpbml0aWFsUG9zaXRpb25cbiAgICAgIC8vIHRoaXMgd2lsbCBiZSB1c2VkIHRvIGNhbGN1bGF0ZSBob3cgZmFyIHRoZSBkcmFnZ2FibGUgaGFzIGJlZW4gZHJhZ2dlZCBmcm9tIGl0cyBpbml0aWFsIHBvc2l0aW9uXG4gICAgICB0aGlzLmluaXRpYWxQb3NpdGlvbiA9IHtcbiAgICAgICAgcGFnZVg6IHRoaXMuZ2V0TmF0aXZlRXZlbnRPYmplY3Qoc3RhcnRFdmVudCkucGFnZVgsXG4gICAgICAgIHBhZ2VZOiB0aGlzLmdldE5hdGl2ZUV2ZW50T2JqZWN0KHN0YXJ0RXZlbnQpLnBhZ2VZLFxuICAgICAgfTtcblxuICAgICAgLy8gSW5pdGlhbGl6ZSBuZXN0ZWQgbGlzdGVuZXJzJyBwcm9wZXJ0eSB3aXRoIGEgbmV3IGVtcHR5IGFycmF5O1xuICAgICAgdGhpcy5uZXN0ZWRMaXN0ZW5lcnMgPSBbXTtcblxuICAgICAgLy8gTGlzdGVuIHRvIHNlbGVjdHN0YXJ0L21vdXNlbW92ZS90b3VjaG1vdmUgZXZlbnRzIG91dHNpZGUgb2YgYW5ndWxhciB6b25lLlxuICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCB0byBkaXNhYmxlIHNlbGVjdGlvbiBkdXJpbmcgZHJhZ2dpbmcgKGVzcGVjaWFsbHkgaW4gRURHRS9JRTExKS5cbiAgICAgICAgdGhpcy5uZXN0ZWRMaXN0ZW5lcnMucHVzaChcbiAgICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnc2VsZWN0c3RhcnQnLCAoc2VsZWN0RXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgICBzZWxlY3RFdmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgc2VsZWN0RXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBEdXJpbmcgdGhlIGRyYWcgc3RhcnQgZGVsYXksIHBvaW50ZXIgc2hvdWxkIHN0YXkgd2l0aGluIHRoZSBib3VuZGFyeS5cbiAgICAgICAgdGhpcy5jaGVja0RyYWdTdGFydEJvdW5kYXJ5KG1vdmVPbkV2ZW50KTtcblxuICAgICAgICB0aGlzLmRyYWdTdGFydERlbGF5VGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5jaGVja0RyYWdTdGFydEJvdW5kYXJ5TGlzdGVuZXIoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmhhc0RyYWdTdGFydGVkID0gdHJ1ZTtcbiAgICAgICAgICAvLyBGaXJlIFwiZHJhZ3N0YXJ0XCJcbiAgICAgICAgICB0aGlzLmJyb2FkY2FzdChzdGFydEV2ZW50LCBEcmFnRXZlbnRUeXBlLkRSQUdfU1RBUlQpO1xuXG4gICAgICAgICAgdGhpcy5uZXN0ZWRMaXN0ZW5lcnMucHVzaChcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsIG1vdmVPbkV2ZW50LCAobW92ZUV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAvLyBFdmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKSBpcyBuZWVkZWQgaGVyZSB0byBwcmV2ZW50IG5lc3RlZCBkcmFnZ2FibGVzIGZyb20gZ2V0dGluZyBkcmFnZ2VkXG4gICAgICAgICAgICAgIC8vIGFsdG9nZXRoZXIuIFdlIHNob3VsZG4ndCB1c2UgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgaGVyZSBhcyB3ZSBhcmUgbGlzdGVuaW5nIHRvIHRoZSBldmVudHNcbiAgICAgICAgICAgICAgLy8gb24gdGhlIGdsb2JhbCBlbGVtZW50IGxldmVsLlxuXG4gICAgICAgICAgICAgIC8vIFdpdGggRXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksIGl0IHJlZ2lzdGVycyB0aGUgZXZlbnRzIHNlbnQgZnJvbSB0aGUgaW5uZXIgbW9zdCBkcmFnZ2FibGVcbiAgICAgICAgICAgICAgLy8gZmlyc3QuIFRoZW4gaW1tZWRpYXRlbHkgYWZ0ZXIgdGhhdCwgaXQgc3RvcHMgbGlzdGVuaW5nIHRvIHRoZSBzYW1lIHR5cGUgb2YgZXZlbnRzIG9uIHRoZSBzYW1lXG4gICAgICAgICAgICAgIC8vIGVsZW1lbnQuIFNvIHRoaXMgd2lsbCBoZWxwIHVzIHRvIG5vdCByZWdpc3RlciB0aGUgc2FtZSBldmVudHMgdGhhdCB3b3VsZCBjb21lIGZyb20gdGhlIHBhcmVudFxuICAgICAgICAgICAgICAvLyBsZXZlbCBkcmFnZ2FibGVzIGV2ZW50dWFsbHkuXG5cbiAgICAgICAgICAgICAgbW92ZUV2ZW50LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuXG4gICAgICAgICAgICAgIGlmICh0aGlzLmhhc0RyYWdTdGFydGVkKSB7XG4gICAgICAgICAgICAgICAgLy8gRmlyZSBcImRyYWdtb3ZlXCJcbiAgICAgICAgICAgICAgICB0aGlzLmJyb2FkY2FzdChtb3ZlRXZlbnQsIERyYWdFdmVudFR5cGUuRFJBR19NT1ZFKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9LCB0aGlzLmRyYWdTdGFydERlbGF5KTtcbiAgICAgIH0pO1xuXG4gICAgICAvLyBMaXN0ZW4gdG8gbW91c2V1cC90b3VjaGVuZCBldmVudHMuXG4gICAgICB0aGlzLm5lc3RlZExpc3RlbmVycy5wdXNoKFxuICAgICAgICB0aGlzLnJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCBlbmRPbkV2ZW50LCAoZW5kRXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuaGFzRHJhZ1N0YXJ0ZWQpIHtcbiAgICAgICAgICAgIC8vIEZpcmUgXCJkcmFnZW5kXCIgb25seSBpZiBkcmFnc3RhcnQgaXMgcmVnaXN0ZXJlZFxuICAgICAgICAgICAgdGhpcy5oYXNEcmFnU3RhcnRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5icm9hZGNhc3QoZW5kRXZlbnQsIERyYWdFdmVudFR5cGUuRFJBR19FTkQpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRyYWdTdGFydERlbGF5VGltZW91dCk7XG5cbiAgICAgICAgICAvLyBXZSBtdXN0IHJlbW92ZSB0aGUgdGhlIG5lc3RlZCBsaXN0ZW5lcnMgZXZlcnkgdGltZSBkcmFnIGNvbXBsZXRlcy5cbiAgICAgICAgICB0aGlzLm5lc3RlZExpc3RlbmVycy5tYXAoZXZlbnQgPT4gZXZlbnQoKSk7XG5cbiAgICAgICAgICAvLyBXZSBtdXN0IHJlbW92ZSB0aGUgZXZlbnQgbGlzdGVuZXIgZnJvbSBjaGVja0RyYWdTdGFydEJvdW5kYXJ5XG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tEcmFnU3RhcnRCb3VuZGFyeUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnkoZXZlbnRUeXBlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lciA9IHRoaXMucmVuZGVyZXIubGlzdGVuKFxuICAgICAgJ2RvY3VtZW50JyxcbiAgICAgIGV2ZW50VHlwZSxcbiAgICAgIChtb3ZlRXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IGRlbHRhWCA9IE1hdGguYWJzKHRoaXMuZ2V0TmF0aXZlRXZlbnRPYmplY3QobW92ZUV2ZW50KS5wYWdlWCAtIHRoaXMuaW5pdGlhbFBvc2l0aW9uLnBhZ2VYKTtcbiAgICAgICAgY29uc3QgZGVsdGFZID0gTWF0aC5hYnModGhpcy5nZXROYXRpdmVFdmVudE9iamVjdChtb3ZlRXZlbnQpLnBhZ2VZIC0gdGhpcy5pbml0aWFsUG9zaXRpb24ucGFnZVkpO1xuXG4gICAgICAgIC8vIElmIHBvaW50ZXIgbW92ZSBkZWx0YSBleGNlZWRzIGhvcml6b250YWwgb3IgdmVydGljYWwgdGhyZXNob2xkLFxuICAgICAgICAvLyB3ZSBzaG91bGQgY2FuY2VsIGRyYWcgaW5pdGlhdGlvbi5cbiAgICAgICAgaWYgKGRlbHRhWCA+IDEgfHwgZGVsdGFZID4gMSkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRyYWdTdGFydERlbGF5VGltZW91dCk7XG4gICAgICAgICAgaWYgKHRoaXMuY2hlY2tEcmFnU3RhcnRCb3VuZGFyeUxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrRHJhZ1N0YXJ0Qm91bmRhcnlMaXN0ZW5lcigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGJyb2FkY2FzdChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQsIGV2ZW50VHlwZTogRHJhZ0V2ZW50VHlwZSk6IHZvaWQge1xuICAgIGNvbnN0IGRyYWdFdmVudDogRHJhZ0V2ZW50SW50ZXJmYWNlPFQ+ID0gdGhpcy5nZW5lcmF0ZURyYWdFdmVudChldmVudCwgZXZlbnRUeXBlKTtcblxuICAgIHN3aXRjaCAoZHJhZ0V2ZW50LnR5cGUpIHtcbiAgICAgIGNhc2UgRHJhZ0V2ZW50VHlwZS5EUkFHX1NUQVJUOlxuICAgICAgICB0aGlzLmRyYWdTdGFydC5uZXh0KGRyYWdFdmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEcmFnRXZlbnRUeXBlLkRSQUdfTU9WRTpcbiAgICAgICAgdGhpcy5kcmFnTW92ZS5uZXh0KGRyYWdFdmVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBEcmFnRXZlbnRUeXBlLkRSQUdfRU5EOlxuICAgICAgICB0aGlzLmRyYWdFbmQubmV4dChkcmFnRXZlbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIFRoZSBmb2xsb3dpbmcgcHJvcGVydGllcyBhcmUgc2V0IGFmdGVyIHRoZXkgYXJlIGJyb2FkY2FzdGVkIHRvIHRoZSBEcmFnZ2FibGVHaG9zdCBjb21wb25lbnQuXG4gICAgZHJhZ0V2ZW50Lmdob3N0RWxlbWVudCA9IHRoaXMuZ2hvc3RFbGVtZW50O1xuICAgIGRyYWdFdmVudC5kcm9wUG9pbnRQb3NpdGlvbiA9IHRoaXMuZHJvcFBvaW50UG9zaXRpb247XG5cbiAgICB0aGlzLmV2ZW50QnVzLmJyb2FkY2FzdChkcmFnRXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZURyYWdFdmVudChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQsIGV2ZW50VHlwZTogRHJhZ0V2ZW50VHlwZSk6IERyYWdFdmVudEludGVyZmFjZTxUPiB7XG4gICAgY29uc3QgbmF0aXZlRXZlbnQ6IGFueSA9IHRoaXMuZ2V0TmF0aXZlRXZlbnRPYmplY3QoZXZlbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IGV2ZW50VHlwZSxcbiAgICAgIGRyYWdQb3NpdGlvbjoge1xuICAgICAgICBwYWdlWDogbmF0aXZlRXZlbnQucGFnZVgsXG4gICAgICAgIHBhZ2VZOiBuYXRpdmVFdmVudC5wYWdlWSxcbiAgICAgICAgbW92ZVg6IG5hdGl2ZUV2ZW50LnBhZ2VYIC0gdGhpcy5pbml0aWFsUG9zaXRpb24ucGFnZVgsXG4gICAgICAgIG1vdmVZOiBuYXRpdmVFdmVudC5wYWdlWSAtIHRoaXMuaW5pdGlhbFBvc2l0aW9uLnBhZ2VZLFxuICAgICAgfSxcbiAgICAgIGdyb3VwOiB0aGlzLmdyb3VwLFxuICAgICAgZHJhZ0RhdGFUcmFuc2ZlcjogdGhpcy5kcmFnRGF0YVRyYW5zZmVyLFxuICAgICAgZ2hvc3RFbGVtZW50OiB0aGlzLmdob3N0RWxlbWVudCxcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,60 +0,0 @@
1
- /*
2
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
3
- * This software is released under MIT license.
4
- * The full license information can be found in LICENSE in the root directory of this project.
5
- */
6
- import { Injectable } from '@angular/core';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "./drag-event-listener.service";
9
- // This provider registers the drag handle element.
10
- // When it registers a element as a drag handle, it attaches that element to the listeners from ClrDragEventListener.
11
- // Also, it adds the "drag-handle" css class to the registered element through Renderer.
12
- export class DragHandleRegistrarService {
13
- constructor(dragEventListener, renderer) {
14
- this.dragEventListener = dragEventListener;
15
- this.renderer = renderer;
16
- }
17
- get defaultHandleEl() {
18
- return this._defaultHandleEl;
19
- }
20
- set defaultHandleEl(el) {
21
- this._defaultHandleEl = el; // defaultHandleEl will be usually the clrDraggable element.
22
- // If the customHandleEl has been registered,
23
- // don't make the defaultHandleEl the drag handle yet until the customHandleEl is unregistered.
24
- if (!this._customHandleEl) {
25
- this.makeElementHandle(this._defaultHandleEl);
26
- }
27
- }
28
- makeElementHandle(el) {
29
- if (this._defaultHandleEl && this._defaultHandleEl !== el) {
30
- // Before making an element the custom handle element,
31
- // we should remove the existing drag-handle class from the draggable element.
32
- this.renderer.removeClass(this._defaultHandleEl, 'drag-handle');
33
- }
34
- this.dragEventListener.attachDragListeners(el);
35
- this.renderer.addClass(el, 'drag-handle');
36
- }
37
- get customHandleEl() {
38
- return this._customHandleEl;
39
- }
40
- registerCustomHandle(el) {
41
- this.dragEventListener.detachDragListeners(); // removes the existing listeners
42
- this._customHandleEl = el;
43
- this.makeElementHandle(this._customHandleEl);
44
- }
45
- unregisterCustomHandle() {
46
- this.dragEventListener.detachDragListeners(); // removes the existing listeners
47
- this.renderer.removeClass(this._customHandleEl, 'drag-handle');
48
- delete this._customHandleEl;
49
- // if default handle is set, make that handle
50
- if (this._defaultHandleEl) {
51
- this.makeElementHandle(this._defaultHandleEl);
52
- }
53
- }
54
- }
55
- DragHandleRegistrarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragHandleRegistrarService, deps: [{ token: i1.DragEventListenerService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
56
- DragHandleRegistrarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragHandleRegistrarService });
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DragHandleRegistrarService, decorators: [{
58
- type: Injectable
59
- }], ctorParameters: function () { return [{ type: i1.DragEventListenerService }, { type: i0.Renderer2 }]; } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZy1oYW5kbGUtcmVnaXN0cmFyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91dGlscy9kcmFnLWFuZC1kcm9wL3Byb3ZpZGVycy9kcmFnLWhhbmRsZS1yZWdpc3RyYXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQzs7O0FBSXRELG1EQUFtRDtBQUNuRCxxSEFBcUg7QUFDckgsd0ZBQXdGO0FBRXhGLE1BQU0sT0FBTywwQkFBMEI7SUFrQnJDLFlBQW9CLGlCQUE4QyxFQUFVLFFBQW1CO1FBQTNFLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBNkI7UUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFXO0lBQUcsQ0FBQztJQWRuRyxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksZUFBZSxDQUFDLEVBQVE7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDLDREQUE0RDtRQUV4Riw2Q0FBNkM7UUFDN0MsK0ZBQStGO1FBQy9GLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMvQztJQUNILENBQUM7SUFJTyxpQkFBaUIsQ0FBQyxFQUFRO1FBQ2hDLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxFQUFFLEVBQUU7WUFDekQsc0RBQXNEO1lBQ3RELDhFQUE4RTtZQUM5RSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLENBQUM7U0FDakU7UUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxFQUFRO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUMsaUNBQWlDO1FBQy9FLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLGlDQUFpQztRQUMvRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM1Qiw2Q0FBNkM7UUFDN0MsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQy9DO0lBQ0gsQ0FBQzs7dUhBaERVLDBCQUEwQjsySEFBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBEcmFnRXZlbnRMaXN0ZW5lclNlcnZpY2UgfSBmcm9tICcuL2RyYWctZXZlbnQtbGlzdGVuZXIuc2VydmljZSc7XG5cbi8vIFRoaXMgcHJvdmlkZXIgcmVnaXN0ZXJzIHRoZSBkcmFnIGhhbmRsZSBlbGVtZW50LlxuLy8gV2hlbiBpdCByZWdpc3RlcnMgYSBlbGVtZW50IGFzIGEgZHJhZyBoYW5kbGUsIGl0IGF0dGFjaGVzIHRoYXQgZWxlbWVudCB0byB0aGUgbGlzdGVuZXJzIGZyb20gQ2xyRHJhZ0V2ZW50TGlzdGVuZXIuXG4vLyBBbHNvLCBpdCBhZGRzIHRoZSBcImRyYWctaGFuZGxlXCIgY3NzIGNsYXNzIHRvIHRoZSByZWdpc3RlcmVkIGVsZW1lbnQgdGhyb3VnaCBSZW5kZXJlci5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEcmFnSGFuZGxlUmVnaXN0cmFyU2VydmljZTxUPiB7XG4gIHByaXZhdGUgX2N1c3RvbUhhbmRsZUVsOiBhbnk7XG4gIHByaXZhdGUgX2RlZmF1bHRIYW5kbGVFbDogYW55O1xuXG4gIGdldCBkZWZhdWx0SGFuZGxlRWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2RlZmF1bHRIYW5kbGVFbDtcbiAgfVxuXG4gIHNldCBkZWZhdWx0SGFuZGxlRWwoZWw6IE5vZGUpIHtcbiAgICB0aGlzLl9kZWZhdWx0SGFuZGxlRWwgPSBlbDsgLy8gZGVmYXVsdEhhbmRsZUVsIHdpbGwgYmUgdXN1YWxseSB0aGUgY2xyRHJhZ2dhYmxlIGVsZW1lbnQuXG5cbiAgICAvLyBJZiB0aGUgY3VzdG9tSGFuZGxlRWwgaGFzIGJlZW4gcmVnaXN0ZXJlZCxcbiAgICAvLyBkb24ndCBtYWtlIHRoZSBkZWZhdWx0SGFuZGxlRWwgdGhlIGRyYWcgaGFuZGxlIHlldCB1bnRpbCB0aGUgY3VzdG9tSGFuZGxlRWwgaXMgdW5yZWdpc3RlcmVkLlxuICAgIGlmICghdGhpcy5fY3VzdG9tSGFuZGxlRWwpIHtcbiAgICAgIHRoaXMubWFrZUVsZW1lbnRIYW5kbGUodGhpcy5fZGVmYXVsdEhhbmRsZUVsKTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRyYWdFdmVudExpc3RlbmVyOiBEcmFnRXZlbnRMaXN0ZW5lclNlcnZpY2U8VD4sIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICBwcml2YXRlIG1ha2VFbGVtZW50SGFuZGxlKGVsOiBOb2RlKSB7XG4gICAgaWYgKHRoaXMuX2RlZmF1bHRIYW5kbGVFbCAmJiB0aGlzLl9kZWZhdWx0SGFuZGxlRWwgIT09IGVsKSB7XG4gICAgICAvLyBCZWZvcmUgbWFraW5nIGFuIGVsZW1lbnQgdGhlIGN1c3RvbSBoYW5kbGUgZWxlbWVudCxcbiAgICAgIC8vIHdlIHNob3VsZCByZW1vdmUgdGhlIGV4aXN0aW5nIGRyYWctaGFuZGxlIGNsYXNzIGZyb20gdGhlIGRyYWdnYWJsZSBlbGVtZW50LlxuICAgICAgdGhpcy5yZW5kZXJlci5yZW1vdmVDbGFzcyh0aGlzLl9kZWZhdWx0SGFuZGxlRWwsICdkcmFnLWhhbmRsZScpO1xuICAgIH1cbiAgICB0aGlzLmRyYWdFdmVudExpc3RlbmVyLmF0dGFjaERyYWdMaXN0ZW5lcnMoZWwpO1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3MoZWwsICdkcmFnLWhhbmRsZScpO1xuICB9XG5cbiAgZ2V0IGN1c3RvbUhhbmRsZUVsKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXN0b21IYW5kbGVFbDtcbiAgfVxuXG4gIHJlZ2lzdGVyQ3VzdG9tSGFuZGxlKGVsOiBOb2RlKSB7XG4gICAgdGhpcy5kcmFnRXZlbnRMaXN0ZW5lci5kZXRhY2hEcmFnTGlzdGVuZXJzKCk7IC8vIHJlbW92ZXMgdGhlIGV4aXN0aW5nIGxpc3RlbmVyc1xuICAgIHRoaXMuX2N1c3RvbUhhbmRsZUVsID0gZWw7XG4gICAgdGhpcy5tYWtlRWxlbWVudEhhbmRsZSh0aGlzLl9jdXN0b21IYW5kbGVFbCk7XG4gIH1cblxuICB1bnJlZ2lzdGVyQ3VzdG9tSGFuZGxlKCkge1xuICAgIHRoaXMuZHJhZ0V2ZW50TGlzdGVuZXIuZGV0YWNoRHJhZ0xpc3RlbmVycygpOyAvLyByZW1vdmVzIHRoZSBleGlzdGluZyBsaXN0ZW5lcnNcbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKHRoaXMuX2N1c3RvbUhhbmRsZUVsLCAnZHJhZy1oYW5kbGUnKTtcbiAgICBkZWxldGUgdGhpcy5fY3VzdG9tSGFuZGxlRWw7XG4gICAgLy8gaWYgZGVmYXVsdCBoYW5kbGUgaXMgc2V0LCBtYWtlIHRoYXQgaGFuZGxlXG4gICAgaWYgKHRoaXMuX2RlZmF1bHRIYW5kbGVFbCkge1xuICAgICAgdGhpcy5tYWtlRWxlbWVudEhhbmRsZSh0aGlzLl9kZWZhdWx0SGFuZGxlRWwpO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,38 +0,0 @@
1
- /*
2
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
3
- * This software is released under MIT license.
4
- * The full license information can be found in LICENSE in the root directory of this project.
5
- */
6
- import { Injectable } from '@angular/core';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "../../dom-adapter/dom-adapter";
9
- // This service is used to capture the state of clrDraggable element
10
- // at a certain event and passes it to clrDraggableGhost component.
11
- export class DraggableSnapshotService {
12
- constructor(domAdapter) {
13
- this.domAdapter = domAdapter;
14
- }
15
- capture(el, event) {
16
- this.draggableElClientRect = this.domAdapter.clientRect(el);
17
- this.snapshotDragEvent = event;
18
- }
19
- discard() {
20
- delete this.draggableElClientRect;
21
- delete this.snapshotDragEvent;
22
- }
23
- get hasDraggableState() {
24
- return !!this.snapshotDragEvent && !!this.draggableElClientRect;
25
- }
26
- get clientRect() {
27
- return this.draggableElClientRect;
28
- }
29
- get dragEvent() {
30
- return this.snapshotDragEvent;
31
- }
32
- }
33
- DraggableSnapshotService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DraggableSnapshotService, deps: [{ token: i1.DomAdapter }], target: i0.ɵɵFactoryTarget.Injectable });
34
- DraggableSnapshotService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DraggableSnapshotService });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DraggableSnapshotService, decorators: [{
36
- type: Injectable
37
- }], ctorParameters: function () { return [{ type: i1.DomAdapter }]; } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJhZ2dhYmxlLXNuYXBzaG90LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91dGlscy9kcmFnLWFuZC1kcm9wL3Byb3ZpZGVycy9kcmFnZ2FibGUtc25hcHNob3Quc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSzNDLG9FQUFvRTtBQUNwRSxtRUFBbUU7QUFFbkUsTUFBTSxPQUFPLHdCQUF3QjtJQUNuQyxZQUFvQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUcsQ0FBQztJQUs5QyxPQUFPLENBQUMsRUFBUSxFQUFFLEtBQTRCO1FBQzVDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFDRCxPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQztJQUNELElBQUksaUJBQWlCO1FBQ25CLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ2xFLENBQUM7SUFDRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDaEMsQ0FBQzs7cUhBdEJVLHdCQUF3Qjt5SEFBeEIsd0JBQXdCOzJGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRG9tQWRhcHRlciB9IGZyb20gJy4uLy4uL2RvbS1hZGFwdGVyL2RvbS1hZGFwdGVyJztcbmltcG9ydCB7IERyYWdFdmVudEludGVyZmFjZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvZHJhZy1ldmVudC5pbnRlcmZhY2UnO1xuXG4vLyBUaGlzIHNlcnZpY2UgaXMgdXNlZCB0byBjYXB0dXJlIHRoZSBzdGF0ZSBvZiBjbHJEcmFnZ2FibGUgZWxlbWVudFxuLy8gYXQgYSBjZXJ0YWluIGV2ZW50IGFuZCBwYXNzZXMgaXQgdG8gY2xyRHJhZ2dhYmxlR2hvc3QgY29tcG9uZW50LlxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERyYWdnYWJsZVNuYXBzaG90U2VydmljZTxUPiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZG9tQWRhcHRlcjogRG9tQWRhcHRlcikge31cblxuICBwcml2YXRlIGRyYWdnYWJsZUVsQ2xpZW50UmVjdDogQ2xpZW50UmVjdDtcbiAgcHJpdmF0ZSBzbmFwc2hvdERyYWdFdmVudDogRHJhZ0V2ZW50SW50ZXJmYWNlPFQ+O1xuXG4gIGNhcHR1cmUoZWw6IE5vZGUsIGV2ZW50OiBEcmFnRXZlbnRJbnRlcmZhY2U8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmRyYWdnYWJsZUVsQ2xpZW50UmVjdCA9IHRoaXMuZG9tQWRhcHRlci5jbGllbnRSZWN0KGVsKTtcbiAgICB0aGlzLnNuYXBzaG90RHJhZ0V2ZW50ID0gZXZlbnQ7XG4gIH1cbiAgZGlzY2FyZCgpOiB2b2lkIHtcbiAgICBkZWxldGUgdGhpcy5kcmFnZ2FibGVFbENsaWVudFJlY3Q7XG4gICAgZGVsZXRlIHRoaXMuc25hcHNob3REcmFnRXZlbnQ7XG4gIH1cbiAgZ2V0IGhhc0RyYWdnYWJsZVN0YXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuc25hcHNob3REcmFnRXZlbnQgJiYgISF0aGlzLmRyYWdnYWJsZUVsQ2xpZW50UmVjdDtcbiAgfVxuICBnZXQgY2xpZW50UmVjdCgpOiBDbGllbnRSZWN0IHtcbiAgICByZXR1cm4gdGhpcy5kcmFnZ2FibGVFbENsaWVudFJlY3Q7XG4gIH1cbiAgZ2V0IGRyYWdFdmVudCgpOiBEcmFnRXZlbnRJbnRlcmZhY2U8VD4ge1xuICAgIHJldHVybiB0aGlzLnNuYXBzaG90RHJhZ0V2ZW50O1xuICB9XG59XG4iXX0=
@@ -1,26 +0,0 @@
1
- /*
2
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
3
- * This software is released under MIT license.
4
- * The full license information can be found in LICENSE in the root directory of this project.
5
- */
6
- import { Injectable } from '@angular/core';
7
- import * as i0 from "@angular/core";
8
- // This service class adds and removes the "in-drag" class to the document body element
9
- // through its public enter() and exit() methods.
10
- export class GlobalDragModeService {
11
- constructor(renderer) {
12
- this.renderer = renderer;
13
- }
14
- enter() {
15
- this.renderer.addClass(document.body, 'in-drag');
16
- }
17
- exit() {
18
- this.renderer.removeClass(document.body, 'in-drag');
19
- }
20
- }
21
- GlobalDragModeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: GlobalDragModeService, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Injectable });
22
- GlobalDragModeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: GlobalDragModeService });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: GlobalDragModeService, decorators: [{
24
- type: Injectable
25
- }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; } });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWRyYWctbW9kZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvZHJhZy1hbmQtZHJvcC9wcm92aWRlcnMvZ2xvYmFsLWRyYWctbW9kZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDOztBQUV0RCx1RkFBdUY7QUFDdkYsaURBQWlEO0FBRWpELE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFBb0IsUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztJQUFHLENBQUM7SUFFM0MsS0FBSztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7O2tIQVRVLHFCQUFxQjtzSEFBckIscUJBQXFCOzJGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vLyBUaGlzIHNlcnZpY2UgY2xhc3MgYWRkcyBhbmQgcmVtb3ZlcyB0aGUgXCJpbi1kcmFnXCIgY2xhc3MgdG8gdGhlIGRvY3VtZW50IGJvZHkgZWxlbWVudFxuLy8gdGhyb3VnaCBpdHMgcHVibGljIGVudGVyKCkgYW5kIGV4aXQoKSBtZXRob2RzLlxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEdsb2JhbERyYWdNb2RlU2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMikge31cblxuICBlbnRlcigpOiB2b2lkIHtcbiAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKGRvY3VtZW50LmJvZHksICdpbi1kcmFnJyk7XG4gIH1cblxuICBleGl0KCk6IHZvaWQge1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZG9jdW1lbnQuYm9keSwgJ2luLWRyYWcnKTtcbiAgfVxufVxuIl19
@@ -1,7 +0,0 @@
1
- /*
2
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
3
- * This software is released under MIT license.
4
- * The full license information can be found in LICENSE in the root directory of this project.
5
- */
6
- export {};
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC1jb25maWcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvdXRpbHMvZm9jdXMtdHJhcC9mb2N1cy10cmFwLWNvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMiBWTXdhcmUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UuXG4gKiBUaGUgZnVsbCBsaWNlbnNlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBpbiBMSUNFTlNFIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHByb2plY3QuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBGb2N1c1RyYXBDb25maWcge1xuICBzdHJpY3Q6IGJvb2xlYW47XG59XG4iXX0=
@@ -1,32 +0,0 @@
1
- /*
2
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
3
- * This software is released under MIT license.
4
- * The full license information can be found in LICENSE in the root directory of this project.
5
- */
6
- import { Injectable } from '@angular/core';
7
- import * as i0 from "@angular/core";
8
- export class FocusTrapTracker {
9
- constructor() {
10
- this._previousFocusTraps = [];
11
- }
12
- get current() {
13
- return this._current;
14
- }
15
- set current(value) {
16
- this._previousFocusTraps.push(this._current);
17
- this._current = value;
18
- }
19
- get nbFocusTrappers() {
20
- return this._previousFocusTraps.length;
21
- }
22
- activatePreviousTrapper() {
23
- this._current = this._previousFocusTraps.pop();
24
- }
25
- }
26
- FocusTrapTracker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrapTracker, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
27
- FocusTrapTracker.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrapTracker, providedIn: 'root' });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrapTracker, decorators: [{
29
- type: Injectable,
30
- args: [{ providedIn: 'root' }]
31
- }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC10cmFja2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91dGlscy9mb2N1cy10cmFwL2ZvY3VzLXRyYXAtdHJhY2tlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBRVUsd0JBQW1CLEdBQXlCLEVBQUUsQ0FBQztLQW1CeEQ7SUFoQkMsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUF5QjtRQUNuQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztJQUN6QyxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ2pELENBQUM7OzZHQW5CVSxnQkFBZ0I7aUhBQWhCLGdCQUFnQixjQURILE1BQU07MkZBQ25CLGdCQUFnQjtrQkFENUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRm9jdXNUcmFwRGlyZWN0aXZlIH0gZnJvbSAnLi9mb2N1cy10cmFwLmRpcmVjdGl2ZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgRm9jdXNUcmFwVHJhY2tlciB7XG4gIHByaXZhdGUgX3ByZXZpb3VzRm9jdXNUcmFwczogRm9jdXNUcmFwRGlyZWN0aXZlW10gPSBbXTtcbiAgcHJpdmF0ZSBfY3VycmVudDogRm9jdXNUcmFwRGlyZWN0aXZlO1xuXG4gIGdldCBjdXJyZW50KCk6IEZvY3VzVHJhcERpcmVjdGl2ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQ7XG4gIH1cblxuICBzZXQgY3VycmVudCh2YWx1ZTogRm9jdXNUcmFwRGlyZWN0aXZlKSB7XG4gICAgdGhpcy5fcHJldmlvdXNGb2N1c1RyYXBzLnB1c2godGhpcy5fY3VycmVudCk7XG4gICAgdGhpcy5fY3VycmVudCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IG5iRm9jdXNUcmFwcGVycygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9wcmV2aW91c0ZvY3VzVHJhcHMubGVuZ3RoO1xuICB9XG5cbiAgYWN0aXZhdGVQcmV2aW91c1RyYXBwZXIoKSB7XG4gICAgdGhpcy5fY3VycmVudCA9IHRoaXMuX3ByZXZpb3VzRm9jdXNUcmFwcy5wb3AoKTtcbiAgfVxufVxuIl19
@@ -1,158 +0,0 @@
1
- /*
2
- * Copyright (c) 2016-2022 VMware, Inc. All Rights Reserved.
3
- * This software is released under MIT license.
4
- * The full license information can be found in LICENSE in the root directory of this project.
5
- */
6
- import { DOCUMENT, isPlatformBrowser } from '@angular/common';
7
- import { Directive, HostListener, Inject, Input, PLATFORM_ID, } from '@angular/core';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "./focus-trap-tracker.service";
10
- export const FOCUSABLES = '[href]:not([tabindex="-1"]), button:not([disabled]):not([tabindex="-1"]), input:not([disabled]):not([tabindex="-1"]), select:not([disabled]):not([tabindex="-1"]), textarea:not([disabled]):not([tabindex="-1"]), [contenteditable="true"]:not([tabindex="-1"]), [tabindex]:not([tabindex="-1"]) ';
11
- export class FocusTrapDirective {
12
- constructor(el, injector, focusTrapsTracker, renderer, platformId) {
13
- this.el = el;
14
- this.injector = injector;
15
- this.focusTrapsTracker = focusTrapsTracker;
16
- this.renderer = renderer;
17
- this.platformId = platformId;
18
- this.localFocusEscaped = false;
19
- this._config = {
20
- strict: true,
21
- };
22
- this.document = this.injector.get(DOCUMENT);
23
- this.focusTrapsTracker.current = this;
24
- }
25
- set config(config) {
26
- this._config = Object.assign(this._config, config === '' ? {} : config);
27
- }
28
- onFocusIn(event) {
29
- const nativeElement = this.el.nativeElement;
30
- if (this.focusTrapsTracker.current !== this ||
31
- !isPlatformBrowser(this.platformId) ||
32
- this.localFocusEscaped ||
33
- nativeElement.contains(event.target)) {
34
- return;
35
- }
36
- if (event.target === this.topReboundEl && nativeElement.contains(event.relatedTarget)) {
37
- this.focusLastFocusable();
38
- // if it fails to focus element inside the trap, focus the trap element.
39
- this.focusTrapElIfOutside();
40
- }
41
- else if (event.target === this.bottomReboundEl && nativeElement.contains(event.relatedTarget)) {
42
- this.focusFirstFocusable();
43
- // if it fails to focus element inside the trap, focus the trap element.
44
- this.focusTrapElIfOutside();
45
- }
46
- else {
47
- this._config.strict ? this.el.nativeElement.focus() : (this.localFocusEscaped = true);
48
- }
49
- }
50
- createFocusableOffScreenEl() {
51
- // Not using Renderer2's createElement method because that leads to DOM leakage.
52
- // https://github.com/angular/angular/issues/26954
53
- const offScreenSpan = this.document.createElement('span');
54
- this.renderer.setAttribute(offScreenSpan, 'tabindex', '0');
55
- this.renderer.addClass(offScreenSpan, 'offscreen-focus-rebounder');
56
- return offScreenSpan;
57
- }
58
- addReboundEls() {
59
- if (isPlatformBrowser(this.platformId)) {
60
- this.topReboundEl = this.createFocusableOffScreenEl();
61
- this.bottomReboundEl = this.createFocusableOffScreenEl();
62
- const hostElement = this.el.nativeElement;
63
- // Add reboundBeforeTrapEl right outside of host element
64
- this.renderer.insertBefore(hostElement.parentElement, this.topReboundEl, hostElement);
65
- // Add reboundAfterTrapEl right after host element
66
- if (hostElement.nextSibling) {
67
- this.renderer.insertBefore(hostElement.parentNode, this.bottomReboundEl, hostElement.nextSibling);
68
- }
69
- else {
70
- this.renderer.appendChild(hostElement.parentNode, this.bottomReboundEl);
71
- }
72
- }
73
- }
74
- removeReboundEls() {
75
- if (isPlatformBrowser(this.platformId) && this.topReboundEl && this.bottomReboundEl) {
76
- this.parentElement.removeChild(this.topReboundEl);
77
- this.parentElement.removeChild(this.bottomReboundEl);
78
- // These are here to to make sure that
79
- // we completely delete all traces of the removed DOM objects.
80
- delete this.topReboundEl;
81
- delete this.bottomReboundEl;
82
- }
83
- }
84
- setPreviousFocus() {
85
- if (this.previousActiveElement && this.previousActiveElement.focus) {
86
- this.previousActiveElement.focus();
87
- }
88
- }
89
- ngOnInit() {
90
- if (isPlatformBrowser(this.platformId)) {
91
- this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '-1');
92
- this.el.nativeElement.focus();
93
- }
94
- }
95
- ngAfterViewInit() {
96
- if (isPlatformBrowser(this.platformId)) {
97
- this.previousActiveElement = this.document.activeElement;
98
- this.parentElement = this.el.nativeElement.parentElement;
99
- }
100
- this.addReboundEls();
101
- }
102
- get potentiallyFocusableEls() {
103
- return [...this.el.nativeElement.querySelectorAll(FOCUSABLES)];
104
- }
105
- focusFirstFocusable() {
106
- for (let i = 0; i < this.potentiallyFocusableEls.length; i++) {
107
- this.firstFocusableEl = this.focusElement(this.potentiallyFocusableEls[i]);
108
- if (this.firstFocusableEl) {
109
- break;
110
- }
111
- }
112
- }
113
- focusLastFocusable() {
114
- for (let i = this.potentiallyFocusableEls.length - 1; i >= 0; i--) {
115
- this.lastFocusableEl = this.focusElement(this.potentiallyFocusableEls[i]);
116
- if (this.lastFocusableEl) {
117
- break;
118
- }
119
- }
120
- }
121
- focusTrapElIfOutside() {
122
- if (!this.el.nativeElement.contains(document.activeElement)) {
123
- this.el.nativeElement.focus();
124
- }
125
- }
126
- focusElement(el) {
127
- if (el && el.focus) {
128
- el.focus();
129
- if (document.activeElement === el) {
130
- return el;
131
- }
132
- }
133
- return null;
134
- }
135
- ngOnDestroy() {
136
- this.removeReboundEls();
137
- this.setPreviousFocus();
138
- this.focusTrapsTracker.activatePreviousTrapper();
139
- }
140
- }
141
- FocusTrapDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrapDirective, deps: [{ token: i0.ElementRef }, { token: i0.Injector }, { token: i1.FocusTrapTracker }, { token: i0.Renderer2 }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive });
142
- FocusTrapDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: FocusTrapDirective, selector: "[clrFocusTrap]", inputs: { config: ["clrFocusTrap", "config"] }, host: { listeners: { "document:focusin": "onFocusIn($event)" } }, ngImport: i0 });
143
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusTrapDirective, decorators: [{
144
- type: Directive,
145
- args: [{
146
- selector: '[clrFocusTrap]',
147
- }]
148
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Injector }, { type: i1.FocusTrapTracker }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
149
- type: Inject,
150
- args: [PLATFORM_ID]
151
- }] }]; }, propDecorators: { config: [{
152
- type: Input,
153
- args: ['clrFocusTrap']
154
- }], onFocusIn: [{
155
- type: HostListener,
156
- args: ['document:focusin', ['$event']]
157
- }] } });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMtdHJhcC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy91dGlscy9mb2N1cy10cmFwL2ZvY3VzLXRyYXAuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUQsT0FBTyxFQUVMLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUVOLEtBQUssRUFHTCxXQUFXLEdBRVosTUFBTSxlQUFlLENBQUM7OztBQUt2QixNQUFNLENBQUMsTUFBTSxVQUFVLEdBQ3JCLG1TQUFtUyxDQUFDO0FBS3RTLE1BQU0sT0FBTyxrQkFBa0I7SUFZN0IsWUFDVSxFQUFjLEVBQ2QsUUFBa0IsRUFDbEIsaUJBQW1DLEVBQ25DLFFBQW1CLEVBQ0UsVUFBZTtRQUpwQyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBQ25DLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDRSxlQUFVLEdBQVYsVUFBVSxDQUFLO1FBZnRDLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQXFCMUIsWUFBTyxHQUFvQjtZQUNqQyxNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7UUFOQSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3hDLENBQUM7SUFLRCxJQUNJLE1BQU0sQ0FBQyxNQUFnQztRQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxNQUFNLEtBQUssRUFB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QUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNuRCxDQUFDOzsrR0E1SlUsa0JBQWtCLDZIQWlCbkIsV0FBVzttR0FqQlYsa0JBQWtCOzJGQUFsQixrQkFBa0I7a0JBSDlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7OzBCQWtCSSxNQUFNOzJCQUFDLFdBQVc7NENBVWpCLE1BQU07c0JBRFQsS0FBSzt1QkFBQyxjQUFjO2dCQU1yQixTQUFTO3NCQURSLFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChjKSAyMDE2LTIwMjIgVk13YXJlLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIE1JVCBsaWNlbnNlLlxuICogVGhlIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gTElDRU5TRSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBwcm9qZWN0LlxuICovXG5cbmltcG9ydCB7IERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBQTEFURk9STV9JRCxcbiAgUmVuZGVyZXIyLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRm9jdXNUcmFwQ29uZmlnIH0gZnJvbSAnLi9mb2N1cy10cmFwLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRm9jdXNUcmFwVHJhY2tlciB9IGZyb20gJy4vZm9jdXMtdHJhcC10cmFja2VyLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgRk9DVVNBQkxFUyA9XG4gICdbaHJlZl06bm90KFt0YWJpbmRleD1cIi0xXCJdKSwgYnV0dG9uOm5vdChbZGlzYWJsZWRdKTpub3QoW3RhYmluZGV4PVwiLTFcIl0pLCBpbnB1dDpub3QoW2Rpc2FibGVkXSk6bm90KFt0YWJpbmRleD1cIi0xXCJdKSwgc2VsZWN0Om5vdChbZGlzYWJsZWRdKTpub3QoW3RhYmluZGV4PVwiLTFcIl0pLCB0ZXh0YXJlYTpub3QoW2Rpc2FibGVkXSk6bm90KFt0YWJpbmRleD1cIi0xXCJdKSwgW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl06bm90KFt0YWJpbmRleD1cIi0xXCJdKSwgW3RhYmluZGV4XTpub3QoW3RhYmluZGV4PVwiLTFcIl0pICc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tjbHJGb2N1c1RyYXBdJyxcbn0pXG5leHBvcnQgY2xhc3MgRm9jdXNUcmFwRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHByZXZpb3VzQWN0aXZlRWxlbWVudDogYW55O1xuICBwcml2YXRlIGxvY2FsRm9jdXNFc2NhcGVkID0gZmFsc2U7XG4gIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50O1xuICBwcml2YXRlIHBhcmVudEVsZW1lbnQ6IEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSB0b3BSZWJvdW5kRWw6IGFueTtcbiAgcHJpdmF0ZSBib3R0b21SZWJvdW5kRWw6IGFueTtcblxuICBwcml2YXRlIGZpcnN0Rm9jdXNhYmxlRWw6IEhUTUxFbGVtZW50O1xuICBwcml2YXRlIGxhc3RGb2N1c2FibGVFbDogSFRNTEVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIGZvY3VzVHJhcHNUcmFja2VyOiBGb2N1c1RyYXBUcmFja2VyLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IGFueVxuICApIHtcbiAgICB0aGlzLmRvY3VtZW50ID0gdGhpcy5pbmplY3Rvci5nZXQoRE9DVU1FTlQpO1xuICAgIHRoaXMuZm9jdXNUcmFwc1RyYWNrZXIuY3VycmVudCA9IHRoaXM7XG4gIH1cblxuICBwcml2YXRlIF9jb25maWc6IEZvY3VzVHJhcENvbmZpZyA9IHtcbiAgICBzdHJpY3Q6IHRydWUsXG4gIH07XG4gIEBJbnB1dCgnY2xyRm9jdXNUcmFwJylcbiAgc2V0IGNvbmZpZyhjb25maWc6IEZvY3VzVHJhcENvbmZpZyB8IHN0cmluZykge1xuICAgIHRoaXMuX2NvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5fY29uZmlnLCBjb25maWcgPT09ICcnID8ge30gOiBjb25maWcpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6Zm9jdXNpbicsIFsnJGV2ZW50J10pXG4gIG9uRm9jdXNJbihldmVudDogYW55KSB7XG4gICAgY29uc3QgbmF0aXZlRWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKFxuICAgICAgdGhpcy5mb2N1c1RyYXBzVHJhY2tlci5jdXJyZW50ICE9PSB0aGlzIHx8XG4gICAgICAhaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSB8fFxuICAgICAgdGhpcy5sb2NhbEZvY3VzRXNjYXBlZCB8fFxuICAgICAgbmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudC50YXJnZXQgPT09IHRoaXMudG9wUmVib3VuZEVsICYmIG5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQucmVsYXRlZFRhcmdldCkpIHtcbiAgICAgIHRoaXMuZm9jdXNMYXN0Rm9jdXNhYmxlKCk7XG4gICAgICAvLyBpZiBpdCBmYWlscyB0byBmb2N1cyBlbGVtZW50IGluc2lkZSB0aGUgdHJhcCwgZm9jdXMgdGhlIHRyYXAgZWxlbWVudC5cbiAgICAgIHRoaXMuZm9jdXNUcmFwRWxJZk91dHNpZGUoKTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50LnRhcmdldCA9PT0gdGhpcy5ib3R0b21SZWJvdW5kRWwgJiYgbmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgdGhpcy5mb2N1c0ZpcnN0Rm9jdXNhYmxlKCk7XG4gICAgICAvLyBpZiBpdCBmYWlscyB0byBmb2N1cyBlbGVtZW50IGluc2lkZSB0aGUgdHJhcCwgZm9jdXMgdGhlIHRyYXAgZWxlbWVudC5cbiAgICAgIHRoaXMuZm9jdXNUcmFwRWxJZk91dHNpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fY29uZmlnLnN0cmljdCA/IHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpIDogKHRoaXMubG9jYWxGb2N1c0VzY2FwZWQgPSB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUZvY3VzYWJsZU9mZlNjcmVlbkVsKCk6IGFueSB7XG4gICAgLy8gTm90IHVzaW5nIFJlbmRlcmVyMidzIGNyZWF0ZUVsZW1lbnQgbWV0aG9kIGJlY2F1c2UgdGhhdCBsZWFkcyB0byBET00gbGVha2FnZS5cbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy8yNjk1NFxuICAgIGNvbnN0IG9mZlNjcmVlblNwYW4gPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtcbiAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZShvZmZTY3JlZW5TcGFuLCAndGFiaW5kZXgnLCAnMCcpO1xuICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3Mob2ZmU2NyZWVuU3BhbiwgJ29mZnNjcmVlbi1mb2N1cy1yZWJvdW5kZXInKTtcblxuICAgIHJldHVybiBvZmZTY3JlZW5TcGFuO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRSZWJvdW5kRWxzKCkge1xuICAgIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG4gICAgICB0aGlzLnRvcFJlYm91bmRFbCA9IHRoaXMuY3JlYXRlRm9jdXNhYmxlT2ZmU2NyZWVuRWwoKTtcbiAgICAgIHRoaXMuYm90dG9tUmVib3VuZEVsID0gdGhpcy5jcmVhdGVGb2N1c2FibGVPZmZTY3JlZW5FbCgpO1xuICAgICAgY29uc3QgaG9zdEVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAvLyBBZGQgcmVib3VuZEJlZm9yZVRyYXBFbCByaWdodCBvdXRzaWRlIG9mIGhvc3QgZWxlbWVudFxuICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoaG9zdEVsZW1lbnQucGFyZW50RWxlbWVudCwgdGhpcy50b3BSZWJvdW5kRWwsIGhvc3RFbGVtZW50KTtcbiAgICAgIC8vIEFkZCByZWJvdW5kQWZ0ZXJUcmFwRWwgcmlnaHQgYWZ0ZXIgaG9zdCBlbGVtZW50XG4gICAgICBpZiAoaG9zdEVsZW1lbnQubmV4dFNpYmxpbmcpIHtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUoaG9zdEVsZW1lbnQucGFyZW50Tm9kZSwgdGhpcy5ib3R0b21SZWJvdW5kRWwsIGhvc3RFbGVtZW50Lm5leHRTaWJsaW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuYXBwZW5kQ2hpbGQoaG9zdEVsZW1lbnQucGFyZW50Tm9kZSwgdGhpcy5ib3R0b21SZWJvdW5kRWwpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlUmVib3VuZEVscygpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0aGlzLnRvcFJlYm91bmRFbCAmJiB0aGlzLmJvdHRvbVJlYm91bmRFbCkge1xuICAgICAgdGhpcy5wYXJlbnRFbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMudG9wUmVib3VuZEVsKTtcbiAgICAgIHRoaXMucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLmJvdHRvbVJlYm91bmRFbCk7XG4gICAgICAvLyBUaGVzZSBhcmUgaGVyZSB0byB0byBtYWtlIHN1cmUgdGhhdFxuICAgICAgLy8gd2UgY29tcGxldGVseSBkZWxldGUgYWxsIHRyYWNlcyBvZiB0aGUgcmVtb3ZlZCBET00gb2JqZWN0cy5cbiAgICAgIGRlbGV0ZSB0aGlzLnRvcFJlYm91bmRFbDtcbiAgICAgIGRlbGV0ZSB0aGlzLmJvdHRvbVJlYm91bmRFbDtcbiAgICB9XG4gIH1cblxuICBzZXRQcmV2aW91c0ZvY3VzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnByZXZpb3VzQWN0aXZlRWxlbWVudCAmJiB0aGlzLnByZXZpb3VzQWN0aXZlRWxlbWVudC5mb2N1cykge1xuICAgICAgdGhpcy5wcmV2aW91c0FjdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgdGhpcy5wcmV2aW91c0FjdGl2ZUVsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICB0aGlzLnBhcmVudEVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICB0aGlzLmFkZFJlYm91bmRFbHMoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHBvdGVudGlhbGx5Rm9jdXNhYmxlRWxzKCk6IEhUTUxFbGVtZW50W10ge1xuICAgIHJldHVybiBbLi4udGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoRk9DVVNBQkxFUyldO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0ZpcnN0Rm9jdXNhYmxlKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5wb3RlbnRpYWxseUZvY3VzYWJsZUVscy5sZW5ndGg7IGkrKykge1xuICAgICAgdGhpcy5maXJzdEZvY3VzYWJsZUVsID0gdGhpcy5mb2N1c0VsZW1lbnQodGhpcy5wb3RlbnRpYWxseUZvY3VzYWJsZUVsc1tpXSk7XG4gICAgICBpZiAodGhpcy5maXJzdEZvY3VzYWJsZUVsKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNMYXN0Rm9jdXNhYmxlKCkge1xuICAgIGZvciAobGV0IGkgPSB0aGlzLnBvdGVudGlhbGx5Rm9jdXNhYmxlRWxzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB0aGlzLmxhc3RGb2N1c2FibGVFbCA9IHRoaXMuZm9jdXNFbGVtZW50KHRoaXMucG90ZW50aWFsbHlGb2N1c2FibGVFbHNbaV0pO1xuICAgICAgaWYgKHRoaXMubGFzdEZvY3VzYWJsZUVsKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNUcmFwRWxJZk91dHNpZGUoKSB7XG4gICAgaWYgKCF0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNFbGVtZW50KGVsOiBIVE1MRWxlbWVudCk6IEhUTUxFbGVtZW50IHtcbiAgICBpZiAoZWwgJiYgZWwuZm9jdXMpIHtcbiAgICAgIGVsLmZvY3VzKCk7XG4gICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PT0gZWwpIHtcbiAgICAgICAgcmV0dXJuIGVsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVtb3ZlUmVib3VuZEVscygpO1xuICAgIHRoaXMuc2V0UHJldmlvdXNGb2N1cygpO1xuICAgIHRoaXMuZm9jdXNUcmFwc1RyYWNrZXIuYWN0aXZhdGVQcmV2aW91c1RyYXBwZXIoKTtcbiAgfVxufVxuIl19