cmat 0.0.5 → 0.0.7
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.
- package/components/breadcrumb/public-api.d.ts +2 -0
- package/components/card/public-api.d.ts +1 -0
- package/components/cascade/public-api.d.ts +1 -0
- package/components/chip-input/chip-input.component.d.ts +3 -1
- package/components/material-datetimepicker/public-api.d.ts +1 -0
- package/components/pagination/public-api.d.ts +1 -0
- package/components/popover/popover-trigger.d.ts +121 -0
- package/components/popover/popover.target.d.ts +8 -0
- package/components/popover/public-api.d.ts +3 -0
- package/components/select-tree/public-api.d.ts +2 -0
- package/components/toast/public-api.d.ts +4 -0
- package/esm2022/components/breadcrumb/public-api.mjs +3 -1
- package/esm2022/components/card/public-api.mjs +2 -1
- package/esm2022/components/cascade/public-api.mjs +2 -1
- package/esm2022/components/chip-input/chip-input.component.mjs +11 -5
- package/esm2022/components/material-datetimepicker/public-api.mjs +2 -1
- package/esm2022/components/pagination/public-api.mjs +2 -1
- package/esm2022/components/popover/popover-trigger.mjs +444 -0
- package/esm2022/components/popover/popover.target.mjs +18 -0
- package/esm2022/components/popover/public-api.mjs +4 -1
- package/esm2022/components/select-tree/public-api.mjs +3 -1
- package/esm2022/components/toast/public-api.mjs +5 -1
- package/fesm2022/cmat-components-chip-input.mjs +10 -4
- package/fesm2022/cmat-components-chip-input.mjs.map +1 -1
- package/fesm2022/cmat-components-popover.mjs +458 -3
- package/fesm2022/cmat-components-popover.mjs.map +1 -1
- package/fesm2022/cmat-components-select-tree.mjs +4 -1
- package/fesm2022/cmat-components-select-tree.mjs.map +1 -1
- package/fesm2022/cmat-components-toast.mjs +1 -1
- package/package.json +67 -67
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
import { Directive, EventEmitter, HostBinding, HostListener, Input, Optional, Output, } from '@angular/core';
|
|
2
|
+
import { isFakeMousedownFromScreenReader } from '@angular/cdk/a11y';
|
|
3
|
+
import { OverlayConfig, } from '@angular/cdk/overlay';
|
|
4
|
+
import { TemplatePortal } from '@angular/cdk/portal';
|
|
5
|
+
import { Subject } from 'rxjs';
|
|
6
|
+
import { takeUntil } from 'rxjs/operators';
|
|
7
|
+
import { throwCmatPopoverMissingError } from './popover.errors';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
10
|
+
import * as i2 from "@angular/cdk/bidi";
|
|
11
|
+
/**
|
|
12
|
+
* This directive is intended to be used in conjunction with an cmat-popover tag. It is
|
|
13
|
+
* responsible for toggling the display of the provided popover instance.
|
|
14
|
+
*/
|
|
15
|
+
export class CmatPopoverTriggerDirective {
|
|
16
|
+
constructor(_overlay, _elementRef, _viewContainerRef, _dir, _changeDetectorRef) {
|
|
17
|
+
this._overlay = _overlay;
|
|
18
|
+
this._elementRef = _elementRef;
|
|
19
|
+
this._viewContainerRef = _viewContainerRef;
|
|
20
|
+
this._dir = _dir;
|
|
21
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
22
|
+
this.ariaHaspopup = true;
|
|
23
|
+
/** Event emitted when the associated popover is opened. */
|
|
24
|
+
this.popoverOpened = new EventEmitter();
|
|
25
|
+
/** Event emitted when the associated popover is closed. */
|
|
26
|
+
this.popoverClosed = new EventEmitter();
|
|
27
|
+
this.popoverOpened$ = new Subject();
|
|
28
|
+
this.popoverClosed$ = new Subject();
|
|
29
|
+
this._overlayRef = null;
|
|
30
|
+
this._popoverOpen = false;
|
|
31
|
+
this._halt = false;
|
|
32
|
+
// tracking input type is necessary so it's possible to only auto-focus
|
|
33
|
+
// the first item of the list when the popover is opened via the keyboard
|
|
34
|
+
this._openedByMouse = false;
|
|
35
|
+
this._onDestroy = new Subject();
|
|
36
|
+
}
|
|
37
|
+
/** Whether the popover is open. */
|
|
38
|
+
get popoverOpen() {
|
|
39
|
+
return this._popoverOpen;
|
|
40
|
+
}
|
|
41
|
+
/** The text direction of the containing app. */
|
|
42
|
+
get dir() {
|
|
43
|
+
return this._dir && this._dir.value === 'rtl' ? 'rtl' : 'ltr';
|
|
44
|
+
}
|
|
45
|
+
onClick() {
|
|
46
|
+
if (this.popover.triggerEvent === 'click') {
|
|
47
|
+
this.togglePopover();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
onMouseEnter() {
|
|
51
|
+
this._halt = false;
|
|
52
|
+
if (this.popover.triggerEvent === 'hover') {
|
|
53
|
+
this._mouseoverTimer = setTimeout(() => {
|
|
54
|
+
this.openPopover();
|
|
55
|
+
}, this.popover.enterDelay);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
onMouseLeave() {
|
|
59
|
+
if (this.popover.triggerEvent === 'hover') {
|
|
60
|
+
if (this._mouseoverTimer) {
|
|
61
|
+
clearTimeout(this._mouseoverTimer);
|
|
62
|
+
this._mouseoverTimer = null;
|
|
63
|
+
}
|
|
64
|
+
if (this._popoverOpen) {
|
|
65
|
+
setTimeout(() => {
|
|
66
|
+
if (!this.popover.closeDisabled) {
|
|
67
|
+
this.closePopover();
|
|
68
|
+
}
|
|
69
|
+
}, this.popover.leaveDelay);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this._halt = true;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
handleMousedown(event) {
|
|
77
|
+
if (event && !isFakeMousedownFromScreenReader(event)) {
|
|
78
|
+
this._openedByMouse = true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
ngAfterViewInit() {
|
|
82
|
+
this._checkPopover();
|
|
83
|
+
this._setCurrentConfig();
|
|
84
|
+
this.popover.closed.subscribe(() => this.closePopover());
|
|
85
|
+
}
|
|
86
|
+
ngOnDestroy() {
|
|
87
|
+
this.destroyPopover();
|
|
88
|
+
}
|
|
89
|
+
/** Toggles the popover between the open and closed states. */
|
|
90
|
+
togglePopover() {
|
|
91
|
+
return this._popoverOpen ? this.closePopover() : this.openPopover();
|
|
92
|
+
}
|
|
93
|
+
/** Opens the popover. */
|
|
94
|
+
openPopover() {
|
|
95
|
+
if (!this._popoverOpen && !this._halt) {
|
|
96
|
+
this._createOverlay().attach(this._portal);
|
|
97
|
+
this._subscribeToBackdrop();
|
|
98
|
+
this._subscribeToDetachments();
|
|
99
|
+
this._initPopover();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/** Closes the popover. */
|
|
103
|
+
closePopover() {
|
|
104
|
+
if (this._overlayRef) {
|
|
105
|
+
this._overlayRef.detach();
|
|
106
|
+
this._resetPopover();
|
|
107
|
+
}
|
|
108
|
+
this.destroyPopover();
|
|
109
|
+
}
|
|
110
|
+
/** Removes the popover from the DOM. */
|
|
111
|
+
destroyPopover() {
|
|
112
|
+
if (this._mouseoverTimer) {
|
|
113
|
+
clearTimeout(this._mouseoverTimer);
|
|
114
|
+
this._mouseoverTimer = null;
|
|
115
|
+
}
|
|
116
|
+
if (this._overlayRef) {
|
|
117
|
+
this._overlayRef.dispose();
|
|
118
|
+
this._overlayRef = null;
|
|
119
|
+
this._cleanUpSubscriptions();
|
|
120
|
+
}
|
|
121
|
+
this._onDestroy.next();
|
|
122
|
+
this._onDestroy.complete();
|
|
123
|
+
}
|
|
124
|
+
/** Focuses the popover trigger. */
|
|
125
|
+
focus() {
|
|
126
|
+
this._elementRef.nativeElement.focus();
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* This method ensures that the popover closes when the overlay backdrop is clicked.
|
|
130
|
+
* We do not use first() here because doing so would not catch clicks from within
|
|
131
|
+
* the popover, and it would fail to unsubscribe properly. Instead, we unsubscribe
|
|
132
|
+
* explicitly when the popover is closed or destroyed.
|
|
133
|
+
*/
|
|
134
|
+
_subscribeToBackdrop() {
|
|
135
|
+
if (this._overlayRef) {
|
|
136
|
+
/** Only subscribe to backdrop if trigger event is click */
|
|
137
|
+
if (this.triggerEvent === 'click' && this.popover.closeOnBackdropClick === true) {
|
|
138
|
+
this._overlayRef
|
|
139
|
+
.backdropClick()
|
|
140
|
+
.pipe(takeUntil(this.popoverClosed$), takeUntil(this._onDestroy))
|
|
141
|
+
.subscribe(() => {
|
|
142
|
+
this.popover.emitCloseEvent();
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
_subscribeToDetachments() {
|
|
148
|
+
if (this._overlayRef) {
|
|
149
|
+
this._overlayRef
|
|
150
|
+
.detachments()
|
|
151
|
+
.pipe(takeUntil(this.popoverClosed$), takeUntil(this._onDestroy))
|
|
152
|
+
.subscribe(() => {
|
|
153
|
+
this._setPopoverClosed();
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* This method sets the popover state to open and focuses the first item if
|
|
159
|
+
* the popover was opened via the keyboard.
|
|
160
|
+
*/
|
|
161
|
+
_initPopover() {
|
|
162
|
+
this._setPopoverOpened();
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* This method resets the popover when it's closed, most importantly restoring
|
|
166
|
+
* focus to the popover trigger if the popover was opened via the keyboard.
|
|
167
|
+
*/
|
|
168
|
+
_resetPopover() {
|
|
169
|
+
this._setPopoverClosed();
|
|
170
|
+
// Focus only needs to be reset to the host element if the popover was opened
|
|
171
|
+
// by the keyboard and manually shifted to the first popover item.
|
|
172
|
+
if (!this._openedByMouse) {
|
|
173
|
+
this.focus();
|
|
174
|
+
}
|
|
175
|
+
this._openedByMouse = false;
|
|
176
|
+
}
|
|
177
|
+
/** set state rather than toggle to support triggers sharing a popover */
|
|
178
|
+
_setPopoverOpened() {
|
|
179
|
+
if (!this._popoverOpen) {
|
|
180
|
+
this._popoverOpen = true;
|
|
181
|
+
this.popoverOpened$.next();
|
|
182
|
+
this.popoverOpened.emit();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/** set state rather than toggle to support triggers sharing a popover */
|
|
186
|
+
_setPopoverClosed() {
|
|
187
|
+
if (this._popoverOpen) {
|
|
188
|
+
this._popoverOpen = false;
|
|
189
|
+
this.popoverClosed$.next();
|
|
190
|
+
this.popoverClosed.emit();
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* This method checks that a valid instance of MdPopover has been passed into
|
|
195
|
+
* mdPopoverTriggerFor. If not, an exception is thrown.
|
|
196
|
+
*/
|
|
197
|
+
_checkPopover() {
|
|
198
|
+
if (!this.popover) {
|
|
199
|
+
throwCmatPopoverMissingError();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* This method creates the overlay from the provided popover's template and saves its
|
|
204
|
+
* OverlayRef so that it can be attached to the DOM when openPopover is called.
|
|
205
|
+
*/
|
|
206
|
+
_createOverlay() {
|
|
207
|
+
if (!this._overlayRef) {
|
|
208
|
+
this._portal = new TemplatePortal(this.popover.templateRef, this._viewContainerRef);
|
|
209
|
+
const config = this._getOverlayConfig();
|
|
210
|
+
this._subscribeToPositions(config.positionStrategy);
|
|
211
|
+
this._overlayRef = this._overlay.create(config);
|
|
212
|
+
}
|
|
213
|
+
return this._overlayRef;
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* This method builds the configuration object needed to create the overlay, the OverlayConfig.
|
|
217
|
+
*
|
|
218
|
+
* @returns OverlayConfig
|
|
219
|
+
*/
|
|
220
|
+
_getOverlayConfig() {
|
|
221
|
+
const overlayState = new OverlayConfig();
|
|
222
|
+
overlayState.positionStrategy = this._getPosition();
|
|
223
|
+
/** Display overlay backdrop if trigger event is click */
|
|
224
|
+
if (this.triggerEvent === 'click') {
|
|
225
|
+
overlayState.hasBackdrop = true;
|
|
226
|
+
overlayState.backdropClass = 'cdk-overlay-transparent-backdrop';
|
|
227
|
+
}
|
|
228
|
+
overlayState.direction = this._dir;
|
|
229
|
+
overlayState.scrollStrategy = this._getOverlayScrollStrategy(this.popover.scrollStrategy);
|
|
230
|
+
return overlayState;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* This method returns the scroll strategy used by the cdk/overlay.
|
|
234
|
+
*/
|
|
235
|
+
_getOverlayScrollStrategy(strategy) {
|
|
236
|
+
switch (strategy) {
|
|
237
|
+
case 'noop':
|
|
238
|
+
return this._overlay.scrollStrategies.noop();
|
|
239
|
+
case 'close':
|
|
240
|
+
return this._overlay.scrollStrategies.close();
|
|
241
|
+
case 'block':
|
|
242
|
+
return this._overlay.scrollStrategies.block();
|
|
243
|
+
case 'reposition':
|
|
244
|
+
default:
|
|
245
|
+
return this._overlay.scrollStrategies.reposition();
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Listens to changes in the position of the overlay and sets the correct classes
|
|
250
|
+
* on the popover based on the new position. This ensures the animation origin is always
|
|
251
|
+
* correct, even if a fallback position is used for the overlay.
|
|
252
|
+
*/
|
|
253
|
+
_subscribeToPositions(position) {
|
|
254
|
+
this._positionSubscription = position.positionChanges.subscribe((change) => {
|
|
255
|
+
const posX = change.connectionPair.overlayX === 'start'
|
|
256
|
+
? 'after'
|
|
257
|
+
: change.connectionPair.overlayX === 'end'
|
|
258
|
+
? 'before'
|
|
259
|
+
: 'center';
|
|
260
|
+
const posY = change.connectionPair.overlayY === 'top'
|
|
261
|
+
? 'below'
|
|
262
|
+
: change.connectionPair.overlayY === 'bottom'
|
|
263
|
+
? 'above'
|
|
264
|
+
: 'center';
|
|
265
|
+
const pos = this.popover.position[0] === 'above' || this.popover.position[0] === 'below'
|
|
266
|
+
? [posY, posX]
|
|
267
|
+
: [posX, posY];
|
|
268
|
+
// required for ChangeDetectionStrategy.OnPush
|
|
269
|
+
this._changeDetectorRef.markForCheck();
|
|
270
|
+
this.popover.zone.run(() => {
|
|
271
|
+
this.popover.setCurrentStyles(pos);
|
|
272
|
+
this.popover.setPositionClasses(pos);
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* This method builds the position strategy for the overlay, so the popover is properly connected
|
|
278
|
+
* to the trigger.
|
|
279
|
+
*
|
|
280
|
+
* @returns ConnectedPositionStrategy
|
|
281
|
+
*/
|
|
282
|
+
_getPosition() {
|
|
283
|
+
const [originX, origin2ndX, origin3rdX] = this.popover.position[0] === 'before' || this.popover.position[1] === 'after'
|
|
284
|
+
? ['start', 'center', 'end']
|
|
285
|
+
: this.popover.position[0] === 'after' || this.popover.position[1] === 'before'
|
|
286
|
+
? ['end', 'center', 'start']
|
|
287
|
+
: ['center', 'start', 'end'];
|
|
288
|
+
const [originY, origin2ndY, origin3rdY] = this.popover.position[0] === 'above' || this.popover.position[1] === 'below'
|
|
289
|
+
? ['top', 'center', 'bottom']
|
|
290
|
+
: this.popover.position[0] === 'below' || this.popover.position[1] === 'above'
|
|
291
|
+
? ['bottom', 'center', 'top']
|
|
292
|
+
: ['center', 'top', 'bottom'];
|
|
293
|
+
const [overlayX, overlayFallbackX] = this.popover.position[0] === 'below' || this.popover.position[0] === 'above'
|
|
294
|
+
? [originX, originX]
|
|
295
|
+
: this.popover.position[0] === 'before'
|
|
296
|
+
? ['end', 'start']
|
|
297
|
+
: ['start', 'end'];
|
|
298
|
+
const [overlayY, overlayFallbackY] = this.popover.position[0] === 'before' || this.popover.position[0] === 'after'
|
|
299
|
+
? [originY, originY]
|
|
300
|
+
: this.popover.position[0] === 'below'
|
|
301
|
+
? ['top', 'bottom']
|
|
302
|
+
: ['bottom', 'top'];
|
|
303
|
+
const originFallbackX = overlayX;
|
|
304
|
+
const originFallbackY = overlayY;
|
|
305
|
+
const offsetX = this.popover.xOffset && !isNaN(Number(this.popover.xOffset))
|
|
306
|
+
? Number(this.dir === 'ltr' ? this.popover.xOffset : -this.popover.xOffset)
|
|
307
|
+
: 0;
|
|
308
|
+
const offsetY = this.popover.yOffset && !isNaN(Number(this.popover.yOffset))
|
|
309
|
+
? Number(this.popover.yOffset)
|
|
310
|
+
: 0;
|
|
311
|
+
/**
|
|
312
|
+
* For overriding position element, when `cmatPopoverTargetAt` has a valid element reference.
|
|
313
|
+
* Useful for sticking popover to parent element and offsetting arrow to trigger element.
|
|
314
|
+
* If undefined defaults to the trigger element reference.
|
|
315
|
+
*/
|
|
316
|
+
let element = this._elementRef;
|
|
317
|
+
if (typeof this.targetElement !== 'undefined') {
|
|
318
|
+
this.popover.containerPositioning = true;
|
|
319
|
+
element = this.targetElement._elementRef;
|
|
320
|
+
}
|
|
321
|
+
let positions = [{ originX, originY, overlayX, overlayY }];
|
|
322
|
+
if (this.popover.position[0] === 'above' || this.popover.position[0] === 'below') {
|
|
323
|
+
positions = [
|
|
324
|
+
{ originX, originY, overlayX, overlayY, offsetY },
|
|
325
|
+
{ originX: origin2ndX, originY, overlayX: origin2ndX, overlayY, offsetY },
|
|
326
|
+
{ originX: origin3rdX, originY, overlayX: origin3rdX, overlayY, offsetY },
|
|
327
|
+
{
|
|
328
|
+
originX,
|
|
329
|
+
originY: originFallbackY,
|
|
330
|
+
overlayX,
|
|
331
|
+
overlayY: overlayFallbackY,
|
|
332
|
+
offsetY: -offsetY,
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
originX: origin2ndX,
|
|
336
|
+
originY: originFallbackY,
|
|
337
|
+
overlayX: origin2ndX,
|
|
338
|
+
overlayY: overlayFallbackY,
|
|
339
|
+
offsetY: -offsetY,
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
originX: origin3rdX,
|
|
343
|
+
originY: originFallbackY,
|
|
344
|
+
overlayX: origin3rdX,
|
|
345
|
+
overlayY: overlayFallbackY,
|
|
346
|
+
offsetY: -offsetY,
|
|
347
|
+
},
|
|
348
|
+
];
|
|
349
|
+
}
|
|
350
|
+
if (this.popover.position[0] === 'before' || this.popover.position[0] === 'after') {
|
|
351
|
+
positions = [
|
|
352
|
+
{ originX, originY, overlayX, overlayY, offsetX },
|
|
353
|
+
{ originX, originY: origin2ndY, overlayX, overlayY: origin2ndY, offsetX },
|
|
354
|
+
{ originX, originY: origin3rdY, overlayX, overlayY: origin3rdY, offsetX },
|
|
355
|
+
{
|
|
356
|
+
originX: originFallbackX,
|
|
357
|
+
originY,
|
|
358
|
+
overlayX: overlayFallbackX,
|
|
359
|
+
overlayY,
|
|
360
|
+
offsetX: -offsetX,
|
|
361
|
+
},
|
|
362
|
+
{
|
|
363
|
+
originX: originFallbackX,
|
|
364
|
+
originY: origin2ndY,
|
|
365
|
+
overlayX: overlayFallbackX,
|
|
366
|
+
overlayY: origin2ndY,
|
|
367
|
+
offsetX: -offsetX,
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
originX: originFallbackX,
|
|
371
|
+
originY: origin3rdY,
|
|
372
|
+
overlayX: overlayFallbackX,
|
|
373
|
+
overlayY: origin3rdY,
|
|
374
|
+
offsetX: -offsetX,
|
|
375
|
+
},
|
|
376
|
+
];
|
|
377
|
+
}
|
|
378
|
+
return this._overlay
|
|
379
|
+
.position()
|
|
380
|
+
.flexibleConnectedTo(element)
|
|
381
|
+
.withLockedPosition()
|
|
382
|
+
.withPositions(positions)
|
|
383
|
+
.withDefaultOffsetX(offsetX)
|
|
384
|
+
.withDefaultOffsetY(offsetY);
|
|
385
|
+
}
|
|
386
|
+
_cleanUpSubscriptions() {
|
|
387
|
+
if (this._backdropSubscription) {
|
|
388
|
+
this._backdropSubscription.unsubscribe();
|
|
389
|
+
}
|
|
390
|
+
if (this._positionSubscription) {
|
|
391
|
+
this._positionSubscription.unsubscribe();
|
|
392
|
+
}
|
|
393
|
+
if (this._detachmentsSubscription) {
|
|
394
|
+
this._detachmentsSubscription.unsubscribe();
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
_setCurrentConfig() {
|
|
398
|
+
if (this.triggerEvent) {
|
|
399
|
+
this.popover.triggerEvent = this.triggerEvent;
|
|
400
|
+
}
|
|
401
|
+
this.popover.setCurrentStyles();
|
|
402
|
+
}
|
|
403
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatPopoverTriggerDirective, deps: [{ token: i1.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i2.Directionality, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
404
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: CmatPopoverTriggerDirective, isStandalone: true, selector: "[cmatPopoverTriggerFor],[cmatPopoverTargetAt],[cmatPopoverTriggerOn]", inputs: { popover: ["cmatPopoverTriggerFor", "popover"], targetElement: ["cmatPopoverTargetAt", "targetElement"], triggerEvent: ["cmatPopoverTriggerOn", "triggerEvent"] }, outputs: { popoverOpened: "popoverOpened", popoverClosed: "popoverClosed" }, host: { listeners: { "click": "onClick($event)", "mouseenter": "onMouseEnter($event)", "mouseleave": "onMouseLeave($event)", "mousedown": "handleMousedown($event)" }, properties: { "attr.aria-haspopup": "this.ariaHaspopup" } }, exportAs: ["cmatPopoverTrigger"], ngImport: i0 }); }
|
|
405
|
+
}
|
|
406
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatPopoverTriggerDirective, decorators: [{
|
|
407
|
+
type: Directive,
|
|
408
|
+
args: [{
|
|
409
|
+
selector: '[cmatPopoverTriggerFor],[cmatPopoverTargetAt],[cmatPopoverTriggerOn]',
|
|
410
|
+
standalone: true,
|
|
411
|
+
exportAs: 'cmatPopoverTrigger'
|
|
412
|
+
}]
|
|
413
|
+
}], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i2.Directionality, decorators: [{
|
|
414
|
+
type: Optional
|
|
415
|
+
}] }, { type: i0.ChangeDetectorRef }], propDecorators: { ariaHaspopup: [{
|
|
416
|
+
type: HostBinding,
|
|
417
|
+
args: ['attr.aria-haspopup']
|
|
418
|
+
}], popover: [{
|
|
419
|
+
type: Input,
|
|
420
|
+
args: ['cmatPopoverTriggerFor']
|
|
421
|
+
}], targetElement: [{
|
|
422
|
+
type: Input,
|
|
423
|
+
args: ['cmatPopoverTargetAt']
|
|
424
|
+
}], triggerEvent: [{
|
|
425
|
+
type: Input,
|
|
426
|
+
args: ['cmatPopoverTriggerOn']
|
|
427
|
+
}], popoverOpened: [{
|
|
428
|
+
type: Output
|
|
429
|
+
}], popoverClosed: [{
|
|
430
|
+
type: Output
|
|
431
|
+
}], onClick: [{
|
|
432
|
+
type: HostListener,
|
|
433
|
+
args: ['click', ['$event']]
|
|
434
|
+
}], onMouseEnter: [{
|
|
435
|
+
type: HostListener,
|
|
436
|
+
args: ['mouseenter', ['$event']]
|
|
437
|
+
}], onMouseLeave: [{
|
|
438
|
+
type: HostListener,
|
|
439
|
+
args: ['mouseleave', ['$event']]
|
|
440
|
+
}], handleMousedown: [{
|
|
441
|
+
type: HostListener,
|
|
442
|
+
args: ['mousedown', ['$event']]
|
|
443
|
+
}] } });
|
|
444
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci10cmlnZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21hdC9jb21wb25lbnRzL3BvcG92ZXIvcG9wb3Zlci10cmlnZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBRVQsWUFBWSxFQUNaLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEdBRVQsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFcEUsT0FBTyxFQUtILGFBQWEsR0FJaEIsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFckQsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBUzNDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBRWhFOzs7R0FHRztBQU9ILE1BQU0sT0FBTywyQkFBMkI7SUFzQ3BDLFlBQ1ksUUFBaUIsRUFDakIsV0FBdUIsRUFDdkIsaUJBQW1DLEVBQ3ZCLElBQW9CLEVBQ2hDLGtCQUFxQztRQUpyQyxhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBa0I7UUFDdkIsU0FBSSxHQUFKLElBQUksQ0FBZ0I7UUFDaEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQTFDZCxpQkFBWSxHQUFHLElBQUksQ0FBQztRQVV2RCwyREFBMkQ7UUFDakQsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRW5ELDJEQUEyRDtRQUNqRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7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RUF6Q3NCLFlBQVk7c0JBQTlDLFdBQVc7dUJBQUMsb0JBQW9CO2dCQUVELE9BQU87c0JBQXRDLEtBQUs7dUJBQUMsdUJBQXVCO2dCQUdBLGFBQWE7c0JBQTFDLEtBQUs7dUJBQUMscUJBQXFCO2dCQUdHLFlBQVk7c0JBQTFDLEtBQUs7dUJBQUMsc0JBQXNCO2dCQUduQixhQUFhO3NCQUF0QixNQUFNO2dCQUdHLGFBQWE7c0JBQXRCLE1BQU07Z0JBeUNQLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBUWpDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBV3RDLFlBQVk7c0JBRFgsWUFBWTt1QkFBQyxZQUFZLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBbUJ0QyxlQUFlO3NCQURkLFlBQVk7dUJBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIEFmdGVyVmlld0luaXQsXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIERpcmVjdGl2ZSxcclxuICAgIEVsZW1lbnRSZWYsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0QmluZGluZyxcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIElucHV0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3B0aW9uYWwsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBWaWV3Q29udGFpbmVyUmVmLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcclxuaW1wb3J0IHsgRGlyZWN0aW9uLCBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcclxuaW1wb3J0IHtcclxuICAgIENvbm5lY3RlZFBvc2l0aW9uLFxyXG4gICAgRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5LFxyXG4gICAgSG9yaXpvbnRhbENvbm5lY3Rpb25Qb3MsXHJcbiAgICBPdmVybGF5LFxyXG4gICAgT3ZlcmxheUNvbmZpZyxcclxuICAgIE92ZXJsYXlSZWYsXHJcbiAgICBTY3JvbGxTdHJhdGVneSxcclxuICAgIFZlcnRpY2FsQ29ubmVjdGlvblBvcyxcclxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcblxyXG5pbXBvcnQgeyBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHsgQ21hdFBvcG92ZXJQYW5lbCwgQ21hdFRhcmdldCB9IGZyb20gJy4vcG9wb3Zlci5pbnRlcmZhY2VzJztcclxuaW1wb3J0IHtcclxuICAgIENtYXRQb3BvdmVyUG9zaXRpb24sXHJcbiAgICBDbWF0UG9wb3ZlclBvc2l0aW9uU3RhcnQsXHJcbiAgICBDbWF0UG9wb3ZlclNjcm9sbFN0cmF0ZWd5LFxyXG4gICAgQ21hdFBvcG92ZXJUcmlnZ2VyRXZlbnQsXHJcbn0gZnJvbSAnLi9wb3BvdmVyLnR5cGUnO1xyXG5pbXBvcnQgeyB0aHJvd0NtYXRQb3BvdmVyTWlzc2luZ0Vycm9yIH0gZnJvbSAnLi9wb3BvdmVyLmVycm9ycyc7XHJcblxyXG4vKipcclxuICogVGhpcyBkaXJlY3RpdmUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGFuIGNtYXQtcG9wb3ZlciB0YWcuIEl0IGlzXHJcbiAqIHJlc3BvbnNpYmxlIGZvciB0b2dnbGluZyB0aGUgZGlzcGxheSBvZiB0aGUgcHJvdmlkZWQgcG9wb3ZlciBpbnN0YW5jZS5cclxuICovXHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnW2NtYXRQb3BvdmVyVHJpZ2dlckZvcl0sW2NtYXRQb3BvdmVyVGFyZ2V0QXRdLFtjbWF0UG9wb3ZlclRyaWdnZXJPbl0nLFxyXG4gICAgc3RhbmRhbG9uZTp0cnVlLFxyXG4gICAgZXhwb3J0QXM6ICdjbWF0UG9wb3ZlclRyaWdnZXInXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0UG9wb3ZlclRyaWdnZXJEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtaGFzcG9wdXAnKSBhcmlhSGFzcG9wdXAgPSB0cnVlO1xyXG4gICAgLyoqIFJlZmVyZW5jZXMgdGhlIHBvcG92ZXIgaW5zdGFuY2UgdGhhdCB0aGUgdHJpZ2dlciBpcyBhc3NvY2lhdGVkIHdpdGguICovXHJcbiAgICBASW5wdXQoJ2NtYXRQb3BvdmVyVHJpZ2dlckZvcicpIHBvcG92ZXIhOiBDbWF0UG9wb3ZlclBhbmVsO1xyXG5cclxuICAgIC8qKiBSZWZlcmVuY2VzIHRoZSBwb3BvdmVyIHRhcmdldCBpbnN0YW5jZSB0aGF0IHRoZSB0cmlnZ2VyIGlzIGFzc29jaWF0ZWQgd2l0aC4gKi9cclxuICAgIEBJbnB1dCgnY21hdFBvcG92ZXJUYXJnZXRBdCcpIHRhcmdldEVsZW1lbnQhOiBDbWF0VGFyZ2V0O1xyXG5cclxuICAgIC8qKiBQb3BvdmVyIHRyaWdnZXIgZXZlbnQgKi9cclxuICAgIEBJbnB1dCgnY21hdFBvcG92ZXJUcmlnZ2VyT24nKSB0cmlnZ2VyRXZlbnQhOiBDbWF0UG9wb3ZlclRyaWdnZXJFdmVudDtcclxuXHJcbiAgICAvKiogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBhc3NvY2lhdGVkIHBvcG92ZXIgaXMgb3BlbmVkLiAqL1xyXG4gICAgQE91dHB1dCgpIHBvcG92ZXJPcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgYXNzb2NpYXRlZCBwb3BvdmVyIGlzIGNsb3NlZC4gKi9cclxuICAgIEBPdXRwdXQoKSBwb3BvdmVyQ2xvc2VkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIHBvcG92ZXJPcGVuZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuICAgIHBvcG92ZXJDbG9zZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgICBwcml2YXRlIF9wb3J0YWwhOiBUZW1wbGF0ZVBvcnRhbDtcclxuICAgIHByaXZhdGUgX292ZXJsYXlSZWY6IE92ZXJsYXlSZWYgfCBudWxsID0gbnVsbDtcclxuICAgIHByaXZhdGUgX3BvcG92ZXJPcGVuID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIF9oYWx0ID0gZmFsc2U7XHJcbiAgICBwcml2YXRlIF9iYWNrZHJvcFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcclxuICAgIHByaXZhdGUgX3Bvc2l0aW9uU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xyXG4gICAgcHJpdmF0ZSBfZGV0YWNobWVudHNTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgcHJpdmF0ZSBfbW91c2VvdmVyVGltZXI6IGFueTtcclxuXHJcbiAgICAvLyB0cmFja2luZyBpbnB1dCB0eXBlIGlzIG5lY2Vzc2FyeSBzbyBpdCdzIHBvc3NpYmxlIHRvIG9ubHkgYXV0by1mb2N1c1xyXG4gICAgLy8gdGhlIGZpcnN0IGl0ZW0gb2YgdGhlIGxpc3Qgd2hlbiB0aGUgcG9wb3ZlciBpcyBvcGVuZWQgdmlhIHRoZSBrZXlib2FyZFxyXG4gICAgcHJpdmF0ZSBfb3BlbmVkQnlNb3VzZSA9IGZhbHNlO1xyXG5cclxuICAgIHByaXZhdGUgX29uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9vdmVybGF5OiBPdmVybGF5LFxyXG4gICAgICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcclxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxyXG4gICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICAgKSB7IH1cclxuXHJcbiAgICAvKiogV2hldGhlciB0aGUgcG9wb3ZlciBpcyBvcGVuLiAqL1xyXG4gICAgZ2V0IHBvcG92ZXJPcGVuKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9wb3BvdmVyT3BlbjtcclxuICAgIH1cclxuICAgIC8qKiBUaGUgdGV4dCBkaXJlY3Rpb24gb2YgdGhlIGNvbnRhaW5pbmcgYXBwLiAqL1xyXG4gICAgZ2V0IGRpcigpOiBEaXJlY3Rpb24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kaXIgJiYgdGhpcy5fZGlyLnZhbHVlID09PSAncnRsJyA/ICdydGwnIDogJ2x0cic7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxyXG4gICAgb25DbGljaygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5wb3BvdmVyLnRyaWdnZXJFdmVudCA9PT0gJ2NsaWNrJykge1xyXG4gICAgICAgICAgICB0aGlzLnRvZ2dsZVBvcG92ZXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VlbnRlcicsIFsnJGV2ZW50J10pXHJcbiAgICBvbk1vdXNlRW50ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faGFsdCA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIudHJpZ2dlckV2ZW50ID09PSAnaG92ZXInKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX21vdXNlb3ZlclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Qb3BvdmVyKCk7XHJcbiAgICAgICAgICAgIH0sIHRoaXMucG9wb3Zlci5lbnRlckRlbGF5KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2VsZWF2ZScsIFsnJGV2ZW50J10pXHJcbiAgICBvbk1vdXNlTGVhdmUoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci50cmlnZ2VyRXZlbnQgPT09ICdob3ZlcicpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX21vdXNlb3ZlclRpbWVyKSB7XHJcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbW91c2VvdmVyVGltZXIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fbW91c2VvdmVyVGltZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9wb3BvdmVyT3Blbikge1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnBvcG92ZXIuY2xvc2VEaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlUG9wb3ZlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sIHRoaXMucG9wb3Zlci5sZWF2ZURlbGF5KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2hhbHQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcclxuICAgIGhhbmRsZU1vdXNlZG93bihldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChldmVudCAmJiAhaXNGYWtlTW91c2Vkb3duRnJvbVNjcmVlblJlYWRlcihldmVudCkpIHtcclxuICAgICAgICAgICAgdGhpcy5fb3BlbmVkQnlNb3VzZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2NoZWNrUG9wb3ZlcigpO1xyXG4gICAgICAgIHRoaXMuX3NldEN1cnJlbnRDb25maWcoKTtcclxuICAgICAgICB0aGlzLnBvcG92ZXIuY2xvc2VkLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsb3NlUG9wb3ZlcigpKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRlc3Ryb3lQb3BvdmVyKCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvKiogVG9nZ2xlcyB0aGUgcG9wb3ZlciBiZXR3ZWVuIHRoZSBvcGVuIGFuZCBjbG9zZWQgc3RhdGVzLiAqL1xyXG4gICAgdG9nZ2xlUG9wb3ZlcigpOiB2b2lkIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fcG9wb3Zlck9wZW4gPyB0aGlzLmNsb3NlUG9wb3ZlcigpIDogdGhpcy5vcGVuUG9wb3ZlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBPcGVucyB0aGUgcG9wb3Zlci4gKi9cclxuICAgIG9wZW5Qb3BvdmVyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5fcG9wb3Zlck9wZW4gJiYgIXRoaXMuX2hhbHQpIHtcclxuICAgICAgICAgICAgdGhpcy5fY3JlYXRlT3ZlcmxheSgpLmF0dGFjaCh0aGlzLl9wb3J0YWwpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaWJlVG9CYWNrZHJvcCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb0RldGFjaG1lbnRzKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9pbml0UG9wb3ZlcigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQ2xvc2VzIHRoZSBwb3BvdmVyLiAqL1xyXG4gICAgY2xvc2VQb3BvdmVyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGV0YWNoKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jlc2V0UG9wb3ZlcigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5kZXN0cm95UG9wb3ZlcigpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBSZW1vdmVzIHRoZSBwb3BvdmVyIGZyb20gdGhlIERPTS4gKi9cclxuICAgIGRlc3Ryb3lQb3BvdmVyKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9tb3VzZW92ZXJUaW1lcikge1xyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5fbW91c2VvdmVyVGltZXIpO1xyXG4gICAgICAgICAgICB0aGlzLl9tb3VzZW92ZXJUaW1lciA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYuZGlzcG9zZSgpO1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy5fY2xlYW5VcFN1YnNjcmlwdGlvbnMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX29uRGVzdHJveS5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy5fb25EZXN0cm95LmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEZvY3VzZXMgdGhlIHBvcG92ZXIgdHJpZ2dlci4gKi9cclxuICAgIGZvY3VzKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhpcyBtZXRob2QgZW5zdXJlcyB0aGF0IHRoZSBwb3BvdmVyIGNsb3NlcyB3aGVuIHRoZSBvdmVybGF5IGJhY2tkcm9wIGlzIGNsaWNrZWQuXHJcbiAgICAgKiBXZSBkbyBub3QgdXNlIGZpcnN0KCkgaGVyZSBiZWNhdXNlIGRvaW5nIHNvIHdvdWxkIG5vdCBjYXRjaCBjbGlja3MgZnJvbSB3aXRoaW5cclxuICAgICAqIHRoZSBwb3BvdmVyLCBhbmQgaXQgd291bGQgZmFpbCB0byB1bnN1YnNjcmliZSBwcm9wZXJseS4gSW5zdGVhZCwgd2UgdW5zdWJzY3JpYmVcclxuICAgICAqIGV4cGxpY2l0bHkgd2hlbiB0aGUgcG9wb3ZlciBpcyBjbG9zZWQgb3IgZGVzdHJveWVkLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zdWJzY3JpYmVUb0JhY2tkcm9wKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XHJcbiAgICAgICAgICAgIC8qKiBPbmx5IHN1YnNjcmliZSB0byBiYWNrZHJvcCBpZiB0cmlnZ2VyIGV2ZW50IGlzIGNsaWNrICovXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRyaWdnZXJFdmVudCA9PT0gJ2NsaWNrJyAmJiB0aGlzLnBvcG92ZXIuY2xvc2VPbkJhY2tkcm9wQ2xpY2sgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWZcclxuICAgICAgICAgICAgICAgICAgICAuYmFja2Ryb3BDbGljaygpXHJcbiAgICAgICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMucG9wb3ZlckNsb3NlZCQpLCB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSlcclxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLmVtaXRDbG9zZUV2ZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfc3Vic2NyaWJlVG9EZXRhY2htZW50cygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fb3ZlcmxheVJlZikge1xyXG4gICAgICAgICAgICB0aGlzLl9vdmVybGF5UmVmXHJcbiAgICAgICAgICAgICAgICAuZGV0YWNobWVudHMoKVxyXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMucG9wb3ZlckNsb3NlZCQpLCB0YWtlVW50aWwodGhpcy5fb25EZXN0cm95KSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NldFBvcG92ZXJDbG9zZWQoKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoaXMgbWV0aG9kIHNldHMgdGhlIHBvcG92ZXIgc3RhdGUgdG8gb3BlbiBhbmQgZm9jdXNlcyB0aGUgZmlyc3QgaXRlbSBpZlxyXG4gICAgICogdGhlIHBvcG92ZXIgd2FzIG9wZW5lZCB2aWEgdGhlIGtleWJvYXJkLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9pbml0UG9wb3ZlcigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9zZXRQb3BvdmVyT3BlbmVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCByZXNldHMgdGhlIHBvcG92ZXIgd2hlbiBpdCdzIGNsb3NlZCwgbW9zdCBpbXBvcnRhbnRseSByZXN0b3JpbmdcclxuICAgICAqIGZvY3VzIHRvIHRoZSBwb3BvdmVyIHRyaWdnZXIgaWYgdGhlIHBvcG92ZXIgd2FzIG9wZW5lZCB2aWEgdGhlIGtleWJvYXJkLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9yZXNldFBvcG92ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc2V0UG9wb3ZlckNsb3NlZCgpO1xyXG5cclxuICAgICAgICAvLyBGb2N1cyBvbmx5IG5lZWRzIHRvIGJlIHJlc2V0IHRvIHRoZSBob3N0IGVsZW1lbnQgaWYgdGhlIHBvcG92ZXIgd2FzIG9wZW5lZFxyXG4gICAgICAgIC8vIGJ5IHRoZSBrZXlib2FyZCBhbmQgbWFudWFsbHkgc2hpZnRlZCB0byB0aGUgZmlyc3QgcG9wb3ZlciBpdGVtLlxyXG4gICAgICAgIGlmICghdGhpcy5fb3BlbmVkQnlNb3VzZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX29wZW5lZEJ5TW91c2UgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogc2V0IHN0YXRlIHJhdGhlciB0aGFuIHRvZ2dsZSB0byBzdXBwb3J0IHRyaWdnZXJzIHNoYXJpbmcgYSBwb3BvdmVyICovXHJcbiAgICBwcml2YXRlIF9zZXRQb3BvdmVyT3BlbmVkKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5fcG9wb3Zlck9wZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5fcG9wb3Zlck9wZW4gPSB0cnVlO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyT3BlbmVkJC5uZXh0KCk7XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlck9wZW5lZC5lbWl0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBzZXQgc3RhdGUgcmF0aGVyIHRoYW4gdG9nZ2xlIHRvIHN1cHBvcnQgdHJpZ2dlcnMgc2hhcmluZyBhIHBvcG92ZXIgKi9cclxuICAgIHByaXZhdGUgX3NldFBvcG92ZXJDbG9zZWQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXJPcGVuKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJPcGVuID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJDbG9zZWQkLm5leHQoKTtcclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyQ2xvc2VkLmVtaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAgVGhpcyBtZXRob2QgY2hlY2tzIHRoYXQgYSB2YWxpZCBpbnN0YW5jZSBvZiBNZFBvcG92ZXIgaGFzIGJlZW4gcGFzc2VkIGludG9cclxuICAgICAqICBtZFBvcG92ZXJUcmlnZ2VyRm9yLiBJZiBub3QsIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2NoZWNrUG9wb3ZlcigpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMucG9wb3Zlcikge1xyXG4gICAgICAgICAgICB0aHJvd0NtYXRQb3BvdmVyTWlzc2luZ0Vycm9yKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogIFRoaXMgbWV0aG9kIGNyZWF0ZXMgdGhlIG92ZXJsYXkgZnJvbSB0aGUgcHJvdmlkZWQgcG9wb3ZlcidzIHRlbXBsYXRlIGFuZCBzYXZlcyBpdHNcclxuICAgICAqICBPdmVybGF5UmVmIHNvIHRoYXQgaXQgY2FuIGJlIGF0dGFjaGVkIHRvIHRoZSBET00gd2hlbiBvcGVuUG9wb3ZlciBpcyBjYWxsZWQuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2NyZWF0ZU92ZXJsYXkoKTogT3ZlcmxheVJlZiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9vdmVybGF5UmVmKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbCh0aGlzLnBvcG92ZXIudGVtcGxhdGVSZWYsIHRoaXMuX3ZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLl9nZXRPdmVybGF5Q29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3N1YnNjcmliZVRvUG9zaXRpb25zKGNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5IGFzIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSk7XHJcbiAgICAgICAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9vdmVybGF5LmNyZWF0ZShjb25maWcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXlSZWY7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBidWlsZHMgdGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IG5lZWRlZCB0byBjcmVhdGUgdGhlIG92ZXJsYXksIHRoZSBPdmVybGF5Q29uZmlnLlxyXG4gICAgICpcclxuICAgICAqIEByZXR1cm5zIE92ZXJsYXlDb25maWdcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfZ2V0T3ZlcmxheUNvbmZpZygpOiBPdmVybGF5Q29uZmlnIHtcclxuICAgICAgICBjb25zdCBvdmVybGF5U3RhdGUgPSBuZXcgT3ZlcmxheUNvbmZpZygpO1xyXG4gICAgICAgIG92ZXJsYXlTdGF0ZS5wb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5fZ2V0UG9zaXRpb24oKTtcclxuXHJcbiAgICAgICAgLyoqIERpc3BsYXkgb3ZlcmxheSBiYWNrZHJvcCBpZiB0cmlnZ2VyIGV2ZW50IGlzIGNsaWNrICovXHJcbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50ID09PSAnY2xpY2snKSB7XHJcbiAgICAgICAgICAgIG92ZXJsYXlTdGF0ZS5oYXNCYWNrZHJvcCA9IHRydWU7XHJcbiAgICAgICAgICAgIG92ZXJsYXlTdGF0ZS5iYWNrZHJvcENsYXNzID0gJ2Nkay1vdmVybGF5LXRyYW5zcGFyZW50LWJhY2tkcm9wJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG92ZXJsYXlTdGF0ZS5kaXJlY3Rpb24gPSB0aGlzLl9kaXI7XHJcbiAgICAgICAgb3ZlcmxheVN0YXRlLnNjcm9sbFN0cmF0ZWd5ID0gdGhpcy5fZ2V0T3ZlcmxheVNjcm9sbFN0cmF0ZWd5KHRoaXMucG9wb3Zlci5zY3JvbGxTdHJhdGVneSk7XHJcblxyXG4gICAgICAgIHJldHVybiBvdmVybGF5U3RhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzY3JvbGwgc3RyYXRlZ3kgdXNlZCBieSB0aGUgY2RrL292ZXJsYXkuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2dldE92ZXJsYXlTY3JvbGxTdHJhdGVneShzdHJhdGVneTogQ21hdFBvcG92ZXJTY3JvbGxTdHJhdGVneSk6IFNjcm9sbFN0cmF0ZWd5IHtcclxuICAgICAgICBzd2l0Y2ggKHN0cmF0ZWd5KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ25vb3AnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ub29wKCk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2Nsb3NlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMuY2xvc2UoKTtcclxuICAgICAgICAgICAgY2FzZSAnYmxvY2snOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX292ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5ibG9jaygpO1xyXG4gICAgICAgICAgICBjYXNlICdyZXBvc2l0aW9uJzpcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExpc3RlbnMgdG8gY2hhbmdlcyBpbiB0aGUgcG9zaXRpb24gb2YgdGhlIG92ZXJsYXkgYW5kIHNldHMgdGhlIGNvcnJlY3QgY2xhc3Nlc1xyXG4gICAgICogb24gdGhlIHBvcG92ZXIgYmFzZWQgb24gdGhlIG5ldyBwb3NpdGlvbi4gVGhpcyBlbnN1cmVzIHRoZSBhbmltYXRpb24gb3JpZ2luIGlzIGFsd2F5c1xyXG4gICAgICogY29ycmVjdCwgZXZlbiBpZiBhIGZhbGxiYWNrIHBvc2l0aW9uIGlzIHVzZWQgZm9yIHRoZSBvdmVybGF5LlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zdWJzY3JpYmVUb1Bvc2l0aW9ucyhwb3NpdGlvbjogRmxleGlibGVDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcG9zaXRpb25TdWJzY3JpcHRpb24gPSBwb3NpdGlvbi5wb3NpdGlvbkNoYW5nZXMuc3Vic2NyaWJlKChjaGFuZ2UpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcG9zWCA9XHJcbiAgICAgICAgICAgICAgICBjaGFuZ2UuY29ubmVjdGlvblBhaXIub3ZlcmxheVggPT09ICdzdGFydCdcclxuICAgICAgICAgICAgICAgICAgICA/ICdhZnRlcidcclxuICAgICAgICAgICAgICAgICAgICA6IGNoYW5nZS5jb25uZWN0aW9uUGFpci5vdmVybGF5WCA9PT0gJ2VuZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnYmVmb3JlJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICdjZW50ZXInO1xyXG4gICAgICAgICAgICBjb25zdCBwb3NZID1cclxuICAgICAgICAgICAgICAgIGNoYW5nZS5jb25uZWN0aW9uUGFpci5vdmVybGF5WSA9PT0gJ3RvcCdcclxuICAgICAgICAgICAgICAgICAgICA/ICdiZWxvdydcclxuICAgICAgICAgICAgICAgICAgICA6IGNoYW5nZS5jb25uZWN0aW9uUGFpci5vdmVybGF5WSA9PT0gJ2JvdHRvbSdcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyAnYWJvdmUnXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogJ2NlbnRlcic7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBwb3M6IENtYXRQb3BvdmVyUG9zaXRpb24gPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzBdID09PSAnYWJvdmUnIHx8IHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2JlbG93J1xyXG4gICAgICAgICAgICAgICAgICAgID8gW3Bvc1kgYXMgQ21hdFBvcG92ZXJQb3NpdGlvblN0YXJ0LCBwb3NYXVxyXG4gICAgICAgICAgICAgICAgICAgIDogW3Bvc1ggYXMgQ21hdFBvcG92ZXJQb3NpdGlvblN0YXJ0LCBwb3NZXTtcclxuXHJcbiAgICAgICAgICAgIC8vIHJlcXVpcmVkIGZvciBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnNldEN1cnJlbnRTdHlsZXMocG9zKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9wb3Zlci5zZXRQb3NpdGlvbkNsYXNzZXMocG9zKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGlzIG1ldGhvZCBidWlsZHMgdGhlIHBvc2l0aW9uIHN0cmF0ZWd5IGZvciB0aGUgb3ZlcmxheSwgc28gdGhlIHBvcG92ZXIgaXMgcHJvcGVybHkgY29ubmVjdGVkXHJcbiAgICAgKiB0byB0aGUgdHJpZ2dlci5cclxuICAgICAqXHJcbiAgICAgKiBAcmV0dXJucyBDb25uZWN0ZWRQb3NpdGlvblN0cmF0ZWd5XHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2dldFBvc2l0aW9uKCk6IEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSB7XHJcbiAgICAgICAgY29uc3QgW29yaWdpblgsIG9yaWdpbjJuZFgsIG9yaWdpbjNyZFhdOiBIb3Jpem9udGFsQ29ubmVjdGlvblBvc1tdID1cclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzBdID09PSAnYmVmb3JlJyB8fCB0aGlzLnBvcG92ZXIucG9zaXRpb25bMV0gPT09ICdhZnRlcidcclxuICAgICAgICAgICAgICAgID8gWydzdGFydCcsICdjZW50ZXInLCAnZW5kJ11cclxuICAgICAgICAgICAgICAgIDogdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzBdID09PSAnYWZ0ZXInIHx8IHRoaXMucG9wb3Zlci5wb3NpdGlvblsxXSA9PT0gJ2JlZm9yZSdcclxuICAgICAgICAgICAgICAgICAgICA/IFsnZW5kJywgJ2NlbnRlcicsICdzdGFydCddXHJcbiAgICAgICAgICAgICAgICAgICAgOiBbJ2NlbnRlcicsICdzdGFydCcsICdlbmQnXTtcclxuXHJcbiAgICAgICAgY29uc3QgW29yaWdpblksIG9yaWdpbjJuZFksIG9yaWdpbjNyZFldOiBWZXJ0aWNhbENvbm5lY3Rpb25Qb3NbXSA9XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2Fib3ZlJyB8fCB0aGlzLnBvcG92ZXIucG9zaXRpb25bMV0gPT09ICdiZWxvdydcclxuICAgICAgICAgICAgICAgID8gWyd0b3AnLCAnY2VudGVyJywgJ2JvdHRvbSddXHJcbiAgICAgICAgICAgICAgICA6IHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2JlbG93JyB8fCB0aGlzLnBvcG92ZXIucG9zaXRpb25bMV0gPT09ICdhYm92ZSdcclxuICAgICAgICAgICAgICAgICAgICA/IFsnYm90dG9tJywgJ2NlbnRlcicsICd0b3AnXVxyXG4gICAgICAgICAgICAgICAgICAgIDogWydjZW50ZXInLCAndG9wJywgJ2JvdHRvbSddO1xyXG5cclxuICAgICAgICBjb25zdCBbb3ZlcmxheVgsIG92ZXJsYXlGYWxsYmFja1hdOiBIb3Jpem9udGFsQ29ubmVjdGlvblBvc1tdID1cclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzBdID09PSAnYmVsb3cnIHx8IHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2Fib3ZlJ1xyXG4gICAgICAgICAgICAgICAgPyBbb3JpZ2luWCwgb3JpZ2luWF1cclxuICAgICAgICAgICAgICAgIDogdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzBdID09PSAnYmVmb3JlJ1xyXG4gICAgICAgICAgICAgICAgICAgID8gWydlbmQnLCAnc3RhcnQnXVxyXG4gICAgICAgICAgICAgICAgICAgIDogWydzdGFydCcsICdlbmQnXTtcclxuXHJcbiAgICAgICAgY29uc3QgW292ZXJsYXlZLCBvdmVybGF5RmFsbGJhY2tZXTogVmVydGljYWxDb25uZWN0aW9uUG9zW10gPVxyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdiZWZvcmUnIHx8IHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2FmdGVyJ1xyXG4gICAgICAgICAgICAgICAgPyBbb3JpZ2luWSwgb3JpZ2luWV1cclxuICAgICAgICAgICAgICAgIDogdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzBdID09PSAnYmVsb3cnXHJcbiAgICAgICAgICAgICAgICAgICAgPyBbJ3RvcCcsICdib3R0b20nXVxyXG4gICAgICAgICAgICAgICAgICAgIDogWydib3R0b20nLCAndG9wJ107XHJcblxyXG4gICAgICAgIGNvbnN0IG9yaWdpbkZhbGxiYWNrWCA9IG92ZXJsYXlYO1xyXG4gICAgICAgIGNvbnN0IG9yaWdpbkZhbGxiYWNrWSA9IG92ZXJsYXlZO1xyXG5cclxuICAgICAgICBjb25zdCBvZmZzZXRYID1cclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnhPZmZzZXQgJiYgIWlzTmFOKE51bWJlcih0aGlzLnBvcG92ZXIueE9mZnNldCkpXHJcbiAgICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLmRpciA9PT0gJ2x0cicgPyB0aGlzLnBvcG92ZXIueE9mZnNldCA6IC10aGlzLnBvcG92ZXIueE9mZnNldClcclxuICAgICAgICAgICAgICAgIDogMDtcclxuICAgICAgICBjb25zdCBvZmZzZXRZID1cclxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnlPZmZzZXQgJiYgIWlzTmFOKE51bWJlcih0aGlzLnBvcG92ZXIueU9mZnNldCkpXHJcbiAgICAgICAgICAgICAgICA/IE51bWJlcih0aGlzLnBvcG92ZXIueU9mZnNldClcclxuICAgICAgICAgICAgICAgIDogMDtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogRm9yIG92ZXJyaWRpbmcgcG9zaXRpb24gZWxlbWVudCwgd2hlbiBgY21hdFBvcG92ZXJUYXJnZXRBdGAgaGFzIGEgdmFsaWQgZWxlbWVudCByZWZlcmVuY2UuXHJcbiAgICAgICAgICogVXNlZnVsIGZvciBzdGlja2luZyBwb3BvdmVyIHRvIHBhcmVudCBlbGVtZW50IGFuZCBvZmZzZXR0aW5nIGFycm93IHRvIHRyaWdnZXIgZWxlbWVudC5cclxuICAgICAgICAgKiBJZiB1bmRlZmluZWQgZGVmYXVsdHMgdG8gdGhlIHRyaWdnZXIgZWxlbWVudCByZWZlcmVuY2UuXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgbGV0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50YXJnZXRFbGVtZW50ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBvcG92ZXIuY29udGFpbmVyUG9zaXRpb25pbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICBlbGVtZW50ID0gdGhpcy50YXJnZXRFbGVtZW50Ll9lbGVtZW50UmVmO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHBvc2l0aW9uczogQ29ubmVjdGVkUG9zaXRpb25bXSA9IFt7IG9yaWdpblgsIG9yaWdpblksIG92ZXJsYXlYLCBvdmVybGF5WSB9XTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2Fib3ZlJyB8fCB0aGlzLnBvcG92ZXIucG9zaXRpb25bMF0gPT09ICdiZWxvdycpIHtcclxuICAgICAgICAgICAgcG9zaXRpb25zID0gW1xyXG4gICAgICAgICAgICAgICAgeyBvcmlnaW5YLCBvcmlnaW5ZLCBvdmVybGF5WCwgb3ZlcmxheVksIG9mZnNldFkgfSxcclxuICAgICAgICAgICAgICAgIHsgb3JpZ2luWDogb3JpZ2luMm5kWCwgb3JpZ2luWSwgb3ZlcmxheVg6IG9yaWdpbjJuZFgsIG92ZXJsYXlZLCBvZmZzZXRZIH0sXHJcbiAgICAgICAgICAgICAgICB7IG9yaWdpblg6IG9yaWdpbjNyZFgsIG9yaWdpblksIG92ZXJsYXlYOiBvcmlnaW4zcmRYLCBvdmVybGF5WSwgb2Zmc2V0WSB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblgsXHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWTogb3JpZ2luRmFsbGJhY2tZLFxyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYLFxyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBvdmVybGF5RmFsbGJhY2tZLFxyXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFk6IC1vZmZzZXRZLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiBvcmlnaW4ybmRYLFxyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6IG9yaWdpbkZhbGxiYWNrWSxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogb3JpZ2luMm5kWCxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WTogb3ZlcmxheUZhbGxiYWNrWSxcclxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRZOiAtb2Zmc2V0WSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogb3JpZ2luM3JkWCxcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiBvcmlnaW5GYWxsYmFja1ksXHJcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IG9yaWdpbjNyZFgsXHJcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6IG92ZXJsYXlGYWxsYmFja1ksXHJcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogLW9mZnNldFksXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMucG9wb3Zlci5wb3NpdGlvblswXSA9PT0gJ2JlZm9yZScgfHwgdGhpcy5wb3BvdmVyLnBvc2l0aW9uWzBdID09PSAnYWZ0ZXInKSB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9ucyA9IFtcclxuICAgICAgICAgICAgICAgIHsgb3JpZ2luWCwgb3JpZ2luWSwgb3ZlcmxheVgsIG92ZXJsYXlZLCBvZmZzZXRYIH0sXHJcbiAgICAgICAgICAgICAgICB7IG9yaWdpblgsIG9yaWdpblk6IG9yaWdpbjJuZFksIG92ZXJsYXlYLCBvdmVybGF5WTogb3JpZ2luMm5kWSwgb2Zmc2V0WCB9LFxyXG4gICAgICAgICAgICAgICAgeyBvcmlnaW5YLCBvcmlnaW5ZOiBvcmlnaW4zcmRZLCBvdmVybGF5WCwgb3ZlcmxheVk6IG9yaWdpbjNyZFksIG9mZnNldFggfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5YOiBvcmlnaW5GYWxsYmFja1gsXHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWSxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WDogb3ZlcmxheUZhbGxiYWNrWCxcclxuICAgICAgICAgICAgICAgICAgICBvdmVybGF5WSxcclxuICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiAtb2Zmc2V0WCxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luWDogb3JpZ2luRmFsbGJhY2tYLFxyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblk6IG9yaWdpbjJuZFksXHJcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVg6IG92ZXJsYXlGYWxsYmFja1gsXHJcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmxheVk6IG9yaWdpbjJuZFksXHJcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WDogLW9mZnNldFgsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpblg6IG9yaWdpbkZhbGxiYWNrWCxcclxuICAgICAgICAgICAgICAgICAgICBvcmlnaW5ZOiBvcmlnaW4zcmRZLFxyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlYOiBvdmVybGF5RmFsbGJhY2tYLFxyXG4gICAgICAgICAgICAgICAgICAgIG92ZXJsYXlZOiBvcmlnaW4zcmRZLFxyXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFg6IC1vZmZzZXRYLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLl9vdmVybGF5XHJcbiAgICAgICAgICAgIC5wb3NpdGlvbigpXHJcbiAgICAgICAgICAgIC5mbGV4aWJsZUNvbm5lY3RlZFRvKGVsZW1lbnQpXHJcbiAgICAgICAgICAgIC53aXRoTG9ja2VkUG9zaXRpb24oKVxyXG4gICAgICAgICAgICAud2l0aFBvc2l0aW9ucyhwb3NpdGlvbnMpXHJcbiAgICAgICAgICAgIC53aXRoRGVmYXVsdE9mZnNldFgob2Zmc2V0WClcclxuICAgICAgICAgICAgLndpdGhEZWZhdWx0T2Zmc2V0WShvZmZzZXRZKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9jbGVhblVwU3Vic2NyaXB0aW9ucygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5fYmFja2Ryb3BTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3Bvc2l0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9kZXRhY2htZW50c1N1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLl9kZXRhY2htZW50c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgX3NldEN1cnJlbnRDb25maWcoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJpZ2dlckV2ZW50KSB7XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci50cmlnZ2VyRXZlbnQgPSB0aGlzLnRyaWdnZXJFdmVudDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucG9wb3Zlci5zZXRDdXJyZW50U3R5bGVzKCk7XHJcbiAgICB9XHJcblxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Directive } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class CmatPopoverTargetDirective {
|
|
4
|
+
constructor(elementRef) {
|
|
5
|
+
this.elementRef = elementRef;
|
|
6
|
+
}
|
|
7
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatPopoverTargetDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
8
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.2.4", type: CmatPopoverTargetDirective, isStandalone: true, selector: "cmat-popover-target, [cmatPopoverTarget]", exportAs: ["cmatPopoverTarget"], ngImport: i0 }); }
|
|
9
|
+
}
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: CmatPopoverTargetDirective, decorators: [{
|
|
11
|
+
type: Directive,
|
|
12
|
+
args: [{
|
|
13
|
+
selector: 'cmat-popover-target, [cmatPopoverTarget]',
|
|
14
|
+
standalone: true,
|
|
15
|
+
exportAs: 'cmatPopoverTarget',
|
|
16
|
+
}]
|
|
17
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci50YXJnZXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbWF0L2NvbXBvbmVudHMvcG9wb3Zlci9wb3BvdmVyLnRhcmdldC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sZUFBZSxDQUFDOztBQU90RCxNQUFNLE9BQU8sMEJBQTBCO0lBQ25DLFlBQW1CLFVBQXNCO1FBQXRCLGVBQVUsR0FBVixVQUFVLENBQVk7SUFDekMsQ0FBQzs4R0FGUSwwQkFBMEI7a0dBQTFCLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFMdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsMENBQTBDO29CQUNwRCxVQUFVLEVBQUMsSUFBSTtvQkFDZixRQUFRLEVBQUUsbUJBQW1CO2lCQUNoQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ2NtYXQtcG9wb3Zlci10YXJnZXQsIFtjbWF0UG9wb3ZlclRhcmdldF0nLFxyXG4gICAgc3RhbmRhbG9uZTp0cnVlLFxyXG4gICAgZXhwb3J0QXM6ICdjbWF0UG9wb3ZlclRhcmdldCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDbWF0UG9wb3ZlclRhcmdldERpcmVjdGl2ZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
export * from './popover.component';
|
|
2
|
-
|
|
2
|
+
export * from './popover-trigger';
|
|
3
|
+
export * from './popover.type';
|
|
4
|
+
export * from './popover.target';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9wb3BvdmVyL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcG9wb3Zlci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BvcG92ZXItdHJpZ2dlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vcG9wb3Zlci50eXBlJztcclxuZXhwb3J0ICogZnJvbSAnLi9wb3BvdmVyLnRhcmdldCc7XHJcbiJdfQ==
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
export * from './select-tree.component';
|
|
2
|
-
|
|
2
|
+
export * from './select-tree.node';
|
|
3
|
+
export * from './select-tree.flatnode';
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy9zZWxlY3QtdHJlZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHdCQUF3QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zZWxlY3QtdHJlZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdC10cmVlLm5vZGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlbGVjdC10cmVlLmZsYXRub2RlJztcclxuIl19
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
export * from './toast-modal.component';
|
|
2
2
|
export * from './toast.component';
|
|
3
|
-
|
|
3
|
+
export * from './toast.service';
|
|
4
|
+
export * from './models/global-config.model';
|
|
5
|
+
export * from './models/toast.model';
|
|
6
|
+
export * from './models/type.model';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NtYXQvY29tcG9uZW50cy90b2FzdC9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGlCQUFpQixDQUFDO0FBRWhDLGNBQWMsOEJBQThCLENBQUM7QUFDN0MsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLHFCQUFxQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi90b2FzdC1tb2RhbC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3RvYXN0LmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vdG9hc3Quc2VydmljZSc7XHJcblxyXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy9nbG9iYWwtY29uZmlnLm1vZGVsJztcclxuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMvdG9hc3QubW9kZWwnO1xyXG5leHBvcnQgKiBmcm9tICcuL21vZGVscy90eXBlLm1vZGVsJztcclxuIl19
|