@acorex/components 18.12.39 → 18.12.41
Sign up to get free protection for your applications and to get access to all the features.
- package/dialog/lib/dialog.component.d.ts +11 -11
- package/dialog/lib/dialog.service.d.ts +2 -2
- package/esm2022/common/lib/types/placement.mjs +8 -2
- package/esm2022/datetime-picker/lib/datetime-picker.component.mjs +3 -3
- package/esm2022/dialog/lib/dialog.component.mjs +12 -12
- package/esm2022/dialog/lib/dialog.service.mjs +5 -5
- package/esm2022/form/lib/validation-rule.directive.mjs +1 -1
- package/esm2022/notification/lib/notification.component.mjs +4 -4
- package/esm2022/notification/lib/notification.config.mjs +2 -1
- package/esm2022/notification/lib/notification.service.mjs +137 -39
- package/esm2022/toast/lib/toast.component.mjs +2 -2
- package/esm2022/toast/lib/toast.config.mjs +2 -1
- package/esm2022/toast/lib/toast.service.mjs +140 -36
- package/fesm2022/acorex-components-common.mjs +7 -1
- package/fesm2022/acorex-components-common.mjs.map +1 -1
- package/fesm2022/acorex-components-datetime-picker.mjs +2 -2
- package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-dialog.mjs +15 -15
- package/fesm2022/acorex-components-dialog.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-notification.mjs +139 -40
- package/fesm2022/acorex-components-notification.mjs.map +1 -1
- package/fesm2022/acorex-components-toast.mjs +140 -35
- package/fesm2022/acorex-components-toast.mjs.map +1 -1
- package/form/lib/validation-rule.directive.d.ts +1 -1
- package/notification/lib/notification.component.d.ts +3 -3
- package/notification/lib/notification.config.d.ts +1 -0
- package/notification/lib/notification.service.d.ts +13 -0
- package/package.json +1 -1
- package/toast/lib/toast.component.d.ts +1 -1
- package/toast/lib/toast.config.d.ts +1 -0
- package/toast/lib/toast.service.d.ts +13 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
import { Dialog } from '@angular/cdk/dialog';
|
2
2
|
import { GlobalPositionStrategy, ScrollStrategyOptions } from '@angular/cdk/overlay';
|
3
|
-
import { Injectable, inject } from '@angular/core';
|
3
|
+
import { Injectable, effect, inject, signal } from '@angular/core';
|
4
4
|
import { AXToastComponent } from './toast.component';
|
5
5
|
import { AX_TOAST_CONFIG } from './toast.config';
|
6
6
|
import * as i0 from "@angular/core";
|
@@ -10,8 +10,22 @@ export class AXToastService {
|
|
10
10
|
this.scrollStrategyOptions = scrollStrategyOptions;
|
11
11
|
this.dialog = inject(Dialog);
|
12
12
|
this.defaultConfig = inject(AX_TOAST_CONFIG);
|
13
|
+
this.activeToasts = signal([]);
|
14
|
+
this.reservedToasts = signal([]);
|
15
|
+
this.toastCounterElement = signal(null);
|
16
|
+
this.moreToastsColor = signal('primary');
|
17
|
+
this.moreToastsLocation = signal('bottom-center');
|
18
|
+
this.reserveCounter = signal(0);
|
19
|
+
this.#effect = effect(() => {
|
20
|
+
if (this.defaultConfig.limit <= 0)
|
21
|
+
return;
|
22
|
+
this.handleShowReservedToast();
|
23
|
+
this.handleShowReservedToastCounter();
|
24
|
+
this.handleReserveCounter();
|
25
|
+
}, { allowSignalWrites: true });
|
13
26
|
this.scrollStrategy = this.scrollStrategyOptions.noop();
|
14
27
|
}
|
28
|
+
#effect;
|
15
29
|
primary(content) {
|
16
30
|
this.show({
|
17
31
|
timeOut: this.defaultConfig.timeOut,
|
@@ -52,35 +66,21 @@ export class AXToastService {
|
|
52
66
|
closeButton: true,
|
53
67
|
location: this.defaultConfig.location ?? 'bottom-center',
|
54
68
|
}, config);
|
69
|
+
this.moreToastsColor.set(opt.color);
|
70
|
+
this.moreToastsLocation.set(opt.location);
|
71
|
+
if (this.defaultConfig.limit > 0) {
|
72
|
+
if (this.activeToasts().length >= this.defaultConfig.limit) {
|
73
|
+
this.reservedToasts.update((value) => [...value, opt]);
|
74
|
+
return {
|
75
|
+
close: () => {
|
76
|
+
//TODO close reserved toast
|
77
|
+
},
|
78
|
+
};
|
79
|
+
}
|
80
|
+
}
|
55
81
|
const gap = this.defaultConfig.gap;
|
56
|
-
let positionStrategy = new GlobalPositionStrategy();
|
57
82
|
const pos = this.getPosition(opt.location) + gap + 'px';
|
58
|
-
|
59
|
-
case 'bottom-center':
|
60
|
-
positionStrategy = positionStrategy.bottom(pos).centerHorizontally();
|
61
|
-
break;
|
62
|
-
case 'bottom-end':
|
63
|
-
positionStrategy = positionStrategy.bottom(pos).right(gap + 'px');
|
64
|
-
break;
|
65
|
-
case 'bottom-start':
|
66
|
-
positionStrategy = positionStrategy.bottom(pos).left(gap + 'px');
|
67
|
-
break;
|
68
|
-
case 'top-center':
|
69
|
-
positionStrategy = positionStrategy.top(pos).centerHorizontally();
|
70
|
-
break;
|
71
|
-
case 'top-end':
|
72
|
-
positionStrategy = positionStrategy.top(pos).right(gap + 'px');
|
73
|
-
break;
|
74
|
-
case 'top-start':
|
75
|
-
positionStrategy = positionStrategy.top(pos).left(gap + 'px');
|
76
|
-
break;
|
77
|
-
case 'center-start':
|
78
|
-
positionStrategy = positionStrategy.centerVertically().left(gap + 'px');
|
79
|
-
break;
|
80
|
-
case 'center-end':
|
81
|
-
positionStrategy = positionStrategy.centerVertically().right(gap + 'px');
|
82
|
-
break;
|
83
|
-
}
|
83
|
+
const positionStrategy = this.getPositionStrategy(new GlobalPositionStrategy(), opt.location, pos, gap);
|
84
84
|
const dialogRef = this.dialog.open(AXToastComponent, {
|
85
85
|
data: opt,
|
86
86
|
autoFocus: '__no_element__',
|
@@ -91,12 +91,16 @@ export class AXToastService {
|
|
91
91
|
closeOnDestroy: true,
|
92
92
|
hasBackdrop: false,
|
93
93
|
panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],
|
94
|
-
positionStrategy
|
94
|
+
positionStrategy,
|
95
95
|
scrollStrategy: this.scrollStrategy,
|
96
96
|
});
|
97
|
+
this.activeToasts.update((value) => [...value, dialogRef.id]);
|
97
98
|
const toastRef = dialogRef.componentInstance;
|
98
99
|
dialogRef.closed.subscribe(() => {
|
99
|
-
this.
|
100
|
+
this.activeToasts.update((value) => [...value].filter((dialogID) => dialogID !== dialogRef.id));
|
101
|
+
setTimeout(() => {
|
102
|
+
this.reposition(opt.location, gap);
|
103
|
+
}, 0);
|
100
104
|
});
|
101
105
|
return {
|
102
106
|
close: () => {
|
@@ -107,18 +111,118 @@ export class AXToastService {
|
|
107
111
|
hideAll() {
|
108
112
|
this.dialog.closeAll();
|
109
113
|
}
|
110
|
-
|
111
|
-
|
114
|
+
handleShowReservedToast() {
|
115
|
+
if (this.activeToasts().length > this.defaultConfig.limit - 1)
|
116
|
+
return;
|
117
|
+
if (!this.reservedToasts().length)
|
118
|
+
return;
|
119
|
+
this.show(this.reservedToasts()[0]);
|
120
|
+
this.reservedToasts.update((value) => {
|
121
|
+
const toasts = [...value];
|
122
|
+
toasts.shift();
|
123
|
+
return toasts;
|
124
|
+
});
|
125
|
+
}
|
126
|
+
handleShowReservedToastCounter() {
|
127
|
+
if (this.reservedToasts().length === this.reserveCounter())
|
128
|
+
return;
|
129
|
+
this.reserveCounter.set(this.reservedToasts().length);
|
130
|
+
if (this.toastCounterElement() !== null)
|
131
|
+
this.toastCounterElement().close();
|
132
|
+
this.createReservedCounterToast();
|
133
|
+
}
|
134
|
+
handleReserveCounter() {
|
135
|
+
if (this.reserveCounter() !== 0)
|
136
|
+
return;
|
137
|
+
if (this.toastCounterElement() === null)
|
138
|
+
return;
|
139
|
+
this.toastCounterElement().close();
|
140
|
+
}
|
141
|
+
createReservedCounterToast() {
|
142
|
+
const opt = {
|
143
|
+
closeButton: false,
|
144
|
+
color: this.moreToastsColor(),
|
145
|
+
location: this.moreToastsLocation(),
|
146
|
+
title: `And ${this.reserveCounter()} more...`,
|
147
|
+
timeOutProgress: false,
|
148
|
+
};
|
149
|
+
const gap = this.defaultConfig.gap;
|
150
|
+
const pos = this.getPosition(opt.location) + gap + 'px';
|
151
|
+
const positionStrategy = this.getPositionStrategy(new GlobalPositionStrategy(), opt.location, pos, gap);
|
152
|
+
const dialogRef = this.dialog.open(AXToastComponent, {
|
153
|
+
data: opt,
|
154
|
+
autoFocus: '__no_element__',
|
155
|
+
restoreFocus: true,
|
156
|
+
role: 'dialog',
|
157
|
+
ariaModal: true,
|
158
|
+
closeOnNavigation: true,
|
159
|
+
closeOnDestroy: true,
|
160
|
+
hasBackdrop: false,
|
161
|
+
panelClass: ['ax-animate-animated', 'ax-animate-fadeIn', 'ax-animate-faster'],
|
162
|
+
positionStrategy,
|
163
|
+
scrollStrategy: this.scrollStrategy,
|
164
|
+
});
|
165
|
+
this.toastCounterElement.set(dialogRef.componentInstance);
|
166
|
+
}
|
167
|
+
reposition(toastLocation, gap) {
|
168
|
+
const list = this.dialog.openDialogs
|
169
|
+
.map((c) => c.componentInstance)
|
170
|
+
.filter((c) => c.config?.location == toastLocation);
|
171
|
+
list.forEach((element, index) => {
|
172
|
+
const pos = this.getRepositionPosition(index, gap, list, toastLocation);
|
173
|
+
console.log(index, element);
|
174
|
+
this.getPositionStrategy(element.dialogRef.config.positionStrategy, toastLocation, pos, gap).apply();
|
175
|
+
});
|
176
|
+
}
|
177
|
+
getRepositionPosition(index, gap, list, toastLocation) {
|
178
|
+
if (index === 0)
|
179
|
+
return gap + 'px';
|
180
|
+
const previouseElement = list[index - 1];
|
181
|
+
if (toastLocation.split('-')[0] == 'bottom') {
|
182
|
+
return window.innerHeight - previouseElement.getHostElement().offsetTop + gap + 'px';
|
183
|
+
}
|
184
|
+
return (previouseElement.getHostElement().offsetTop +
|
185
|
+
previouseElement.getHostElement().offsetHeight +
|
186
|
+
gap +
|
187
|
+
'px');
|
112
188
|
}
|
113
189
|
getPosition(location) {
|
114
|
-
const list = this.dialog.openDialogs
|
190
|
+
const list = this.dialog.openDialogs
|
191
|
+
.map((c) => c.componentInstance)
|
192
|
+
.filter((c) => c.config?.location == location);
|
115
193
|
if (list.length == 0)
|
116
194
|
return 0;
|
117
195
|
if (location.split('-')[0] == 'bottom') {
|
118
196
|
return window.innerHeight - list[list.length - 1].getHostElement().offsetTop;
|
119
197
|
}
|
120
|
-
|
121
|
-
|
198
|
+
return (list[list.length - 1].getHostElement().offsetTop + list[list.length - 1].getHostElement().offsetHeight);
|
199
|
+
}
|
200
|
+
getPositionStrategy(positionStrategy, location, pos, gap) {
|
201
|
+
switch (location) {
|
202
|
+
case 'bottom-center':
|
203
|
+
return positionStrategy.bottom(pos).centerHorizontally();
|
204
|
+
break;
|
205
|
+
case 'bottom-end':
|
206
|
+
return positionStrategy.bottom(pos).right(gap + 'px');
|
207
|
+
break;
|
208
|
+
case 'bottom-start':
|
209
|
+
return positionStrategy.bottom(pos).left(gap + 'px');
|
210
|
+
break;
|
211
|
+
case 'top-center':
|
212
|
+
return positionStrategy.top(pos).centerHorizontally();
|
213
|
+
break;
|
214
|
+
case 'top-end':
|
215
|
+
return positionStrategy.top(pos).right(gap + 'px');
|
216
|
+
break;
|
217
|
+
case 'top-start':
|
218
|
+
return positionStrategy.top(pos).left(gap + 'px');
|
219
|
+
break;
|
220
|
+
case 'center-start':
|
221
|
+
return positionStrategy.centerVertically().left(gap + 'px');
|
222
|
+
break;
|
223
|
+
case 'center-end':
|
224
|
+
return positionStrategy.centerVertically().right(gap + 'px');
|
225
|
+
break;
|
122
226
|
}
|
123
227
|
}
|
124
228
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXToastService, deps: [{ token: i1.ScrollStrategyOptions }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
@@ -127,4 +231,4 @@ export class AXToastService {
|
|
127
231
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXToastService, decorators: [{
|
128
232
|
type: Injectable
|
129
233
|
}], ctorParameters: () => [{ type: i1.ScrollStrategyOptions }] });
|
130
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90b2FzdC9zcmMvbGliL3RvYXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxzQkFBc0IsRUFBa0IscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQWlCLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFHaEUsTUFBTSxPQUFPLGNBQWM7SUFNekIsWUFBNkIscUJBQTRDO1FBQTVDLDBCQUFxQixHQUFyQixxQkFBcUIsQ0FBdUI7UUFMakUsV0FBTSxHQUFXLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxrQkFBYSxHQUFrQixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFLN0QsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUQsQ0FBQztJQUNELE9BQU8sQ0FBQyxPQUFlO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDUixPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPO1lBQ25DLEtBQUssRUFBRSxTQUFTO1lBQ2hCLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxTQUFTLENBQUMsT0FBZTtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ1IsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTztZQUNuQyxLQUFLLEVBQUUsV0FBVztZQUNsQixPQUFP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TUFBTSxJQUFJLENBQUM7WUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvQixJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFLENBQUM7WUFDdkMsT0FBTyxNQUFNLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUMvRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLFlBQVksQ0FBQztRQUNoSCxDQUFDO0lBQ0gsQ0FBQzs4R0E5SFUsY0FBYztrSEFBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RpYWxvZyc7XG5pbXBvcnQgeyBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5LCBTY3JvbGxTdHJhdGVneSwgU2Nyb2xsU3RyYXRlZ3lPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBWFRvYXN0RGlzcGxheUNvbmZpZywgQVhUb2FzdFJlZiB9IGZyb20gJy4vdG9hc3QuY2xhc3MnO1xuaW1wb3J0IHsgQVhUb2FzdENvbXBvbmVudCB9IGZyb20gJy4vdG9hc3QuY29tcG9uZW50JztcbmltcG9ydCB7IEFYVG9hc3RDb25maWcsIEFYX1RPQVNUX0NPTkZJRyB9IGZyb20gJy4vdG9hc3QuY29uZmlnJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEFYVG9hc3RTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBkaWFsb2c6IERpYWxvZyA9IGluamVjdChEaWFsb2cpO1xuICBwcml2YXRlIGRlZmF1bHRDb25maWc6IEFYVG9hc3RDb25maWcgPSBpbmplY3QoQVhfVE9BU1RfQ09ORklHKTtcblxuICBzY3JvbGxTdHJhdGVneTogU2Nyb2xsU3RyYXRlZ3k7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzY3JvbGxTdHJhdGVneU9wdGlvbnM6IFNjcm9sbFN0cmF0ZWd5T3B0aW9ucykge1xuICAgIHRoaXMuc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLnNjcm9sbFN0cmF0ZWd5T3B0aW9ucy5ub29wKCk7XG4gIH1cbiAgcHJpbWFyeShjb250ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNob3coe1xuICAgICAgdGltZU91dDogdGhpcy5kZWZhdWx0Q29uZmlnLnRpbWVPdXQsXG4gICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgY29udGVudDogY29udGVudCxcbiAgICB9KTtcbiAgfVxuICBzZWNvbmRhcnkoY29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5zaG93KHtcbiAgICAgIHRpbWVPdXQ6IHRoaXMuZGVmYXVsdENvbmZpZy50aW1lT3V0LFxuICAgICAgY29sb3I6ICdzZWNvbmRhcnknLFxuICAgICAgY29udGVudDogY29udGVudCxcbiAgICB9KTtcbiAgfVxuICBzdWNjZXNzKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHRoaXMuc2hvdyh7XG4gICAgICB0aW1lT3V0OiB0aGlzLmRlZmF1bHRDb25maWcudGltZU91dCxcbiAgICAgIGNvbG9yOiAnc3VjY2VzcycsXG4gICAgICBjb250ZW50OiBjb250ZW50LFxuICAgIH0pO1xuICB9XG5cbiAgd2FybmluZyhjb250ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNob3coe1xuICAgICAgdGltZU91dDogdGhpcy5kZWZhdWx0Q29uZmlnLnRpbWVPdXQsXG4gICAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgICAgY29udGVudDogY29udGVudCxcbiAgICB9KTtcbiAgfVxuICBkYW5nZXIoY29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5zaG93KHtcbiAgICAgIHRpbWVPdXQ6IHRoaXMuZGVmYXVsdENvbmZpZy50aW1lT3V0LFxuICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgY29udGVudDogY29udGVudCxcbiAgICB9KTtcbiAgfVxuICBzaG93KGNvbmZpZzogQVhUb2FzdERpc3BsYXlDb25maWcpOiBBWFRvYXN0UmVmIHtcbiAgICBjb25zdCBvcHQgPSBPYmplY3QuYXNzaWduKFxuICAgICAge1xuICAgICAgICBjbG9zZUJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgbG9jYXRpb246IHRoaXMuZGVmYXVsdENvbmZpZy5sb2NhdGlvbiA/PyAnYm90dG9tLWNlbnRlcicsXG4gICAgICB9LFxuICAgICAgY29uZmlnLFxuICAgICk7XG4gICAgY29uc3QgZ2FwID0gdGhpcy5kZWZhdWx0Q29uZmlnLmdhcDtcblxuICAgIGxldCBwb3NpdGlvblN0cmF0ZWd5ID0gbmV3IEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3koKTtcbiAgICBjb25zdCBwb3MgPSB0aGlzLmdldFBvc2l0aW9uKG9wdC5sb2NhdGlvbikgKyBnYXAgKyAncHgnO1xuICAgIHN3aXRjaCAob3B0LmxvY2F0aW9uKSB7XG4gICAgICBjYXNlICdib3R0b20tY2VudGVyJzpcbiAgICAgICAgcG9zaXRpb25TdHJhdGVneSA9IHBvc2l0aW9uU3RyYXRlZ3kuYm90dG9tKHBvcykuY2VudGVySG9yaXpvbnRhbGx5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm90dG9tLWVuZCc6XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kgPSBwb3NpdGlvblN0cmF0ZWd5LmJvdHRvbShwb3MpLnJpZ2h0KGdhcCArICdweCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbS1zdGFydCc6XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kgPSBwb3NpdGlvblN0cmF0ZWd5LmJvdHRvbShwb3MpLmxlZnQoZ2FwICsgJ3B4Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wLWNlbnRlcic6XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kgPSBwb3NpdGlvblN0cmF0ZWd5LnRvcChwb3MpLmNlbnRlckhvcml6b250YWxseSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcC1lbmQnOlxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5ID0gcG9zaXRpb25TdHJhdGVneS50b3AocG9zKS5yaWdodChnYXAgKyAncHgnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3Atc3RhcnQnOlxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5ID0gcG9zaXRpb25TdHJhdGVneS50b3AocG9zKS5sZWZ0KGdhcCArICdweCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlci1zdGFydCc6XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3kgPSBwb3NpdGlvblN0cmF0ZWd5LmNlbnRlclZlcnRpY2FsbHkoKS5sZWZ0KGdhcCArICdweCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlci1lbmQnOlxuICAgICAgICBwb3NpdGlvblN0cmF0ZWd5ID0gcG9zaXRpb25TdHJhdGVneS5jZW50ZXJWZXJ0aWNhbGx5KCkucmlnaHQoZ2FwICsgJ3B4Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQVhUb2FzdENvbXBvbmVudCwge1xuICAgICAgZGF0YTogb3B0LFxuICAgICAgYXV0b0ZvY3VzOiAnX19ub19lbGVtZW50X18nLFxuICAgICAgcmVzdG9yZUZvY3VzOiB0cnVlLFxuICAgICAgcm9sZTogJ2RpYWxvZycsXG4gICAgICBhcmlhTW9kYWw6IHRydWUsXG4gICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgICAgIGNsb3NlT25EZXN0cm95OiB0cnVlLFxuICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgcGFuZWxDbGFzczogWydheC1hbmltYXRlLWFuaW1hdGVkJywgJ2F4LWFuaW1hdGUtZmFkZUluJywgJ2F4LWFuaW1hdGUtZmFzdGVyJ10sXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5OiBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuc2Nyb2xsU3RyYXRlZ3ksXG4gICAgfSk7XG5cbiAgICBjb25zdCB0b2FzdFJlZiA9IGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZSBhcyBBWFRvYXN0Q29tcG9uZW50O1xuICAgIGRpYWxvZ1JlZi5jbG9zZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMucmVwb3NpdGlvbigpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsb3NlOiAoKSA9PiB7XG4gICAgICAgIHRvYXN0UmVmLmNsb3NlKCk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgaGlkZUFsbCgpIHtcbiAgICB0aGlzLmRpYWxvZy5jbG9zZUFsbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXBvc2l0aW9uKCk6IHZvaWQge1xuICAgIC8vVE9ETzogcmVwb3NpdGlvbiB2ZXJ0aWNhbGx5IGFmZXIgY2xvc2UgdG9hc3RcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UG9zaXRpb24obG9jYXRpb246IHN0cmluZykge1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLmRpYWxvZy5vcGVuRGlhbG9ncy5tYXAoKGMpID0+IGMuY29tcG9uZW50SW5zdGFuY2UgYXMgQVhUb2FzdENvbXBvbmVudCkuZmlsdGVyKChjKSA9PiBjLmNvbmZpZz8ubG9jYXRpb24gPT0gbG9jYXRpb24pO1xuICAgIGlmIChsaXN0Lmxlbmd0aCA9PSAwKSByZXR1cm4gMDtcbiAgICBpZiAobG9jYXRpb24uc3BsaXQoJy0nKVswXSA9PSAnYm90dG9tJykge1xuICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lckhlaWdodCAtIGxpc3RbbGlzdC5sZW5ndGggLSAxXS5nZXRIb3N0RWxlbWVudCgpLm9mZnNldFRvcDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGxpc3RbbGlzdC5sZW5ndGggLSAxXS5nZXRIb3N0RWxlbWVudCgpLm9mZnNldFRvcCArIGxpc3RbbGlzdC5sZW5ndGggLSAxXS5nZXRIb3N0RWxlbWVudCgpLm9mZnNldEhlaWdodDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy90b2FzdC9zcmMvbGliL3RvYXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxzQkFBc0IsRUFBa0IscUJBQXFCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3JELE9BQU8sRUFBaUIsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUdoRSxNQUFNLE9BQU8sY0FBYztJQVl6QixZQUE2QixxQkFBNEM7UUFBNUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQVhqRSxXQUFNLEdBQVcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hDLGtCQUFhLEdBQWtCLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RCxpQkFBWSxHQUFHLE1BQU0sQ0FBVyxFQUFFLENBQUMsQ0FBQztRQUNwQyxtQkFBYyxHQUFHLE1BQU0sQ0FBeUIsRUFBRSxDQUFDLENBQUM7UUFDcEQsd0JBQW1CLEdBQUcsTUFBTSxDQUEwQixJQUFJLENBQUMsQ0FBQztRQUM1RCxvQkFBZSxHQUFHLE1BQU0sQ0FBbUIsU0FBUyxDQUFDLENBQUM7UUFDdEQsdUJBQWtCLEdBQUcsTUFBTSxDQUFhLGVBQWUsQ0FBQyxDQUFDO1FBQ3pELG1CQUFjLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBUW5DLFlBQU8sR0FBRyxNQUFNLENBQ2QsR0FBRyxFQUFFO1lBQ0gsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtB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RUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7Z0JBQzdELE1BQU07UUFDVixDQUFDO0lBQ0gsQ0FBQzs4R0ExUFUsY0FBYztrSEFBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhMb2NhdGlvbiwgQVhTdHlsZUNvbG9yVHlwZSB9IGZyb20gJ0BhY29yZXgvY29tcG9uZW50cy9jb21tb24nO1xuaW1wb3J0IHsgRGlhbG9nIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RpYWxvZyc7XG5pbXBvcnQgeyBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5LCBTY3JvbGxTdHJhdGVneSwgU2Nyb2xsU3RyYXRlZ3lPcHRpb25zIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQVhUb2FzdERhdGEsIEFYVG9hc3REaXNwbGF5Q29uZmlnLCBBWFRvYXN0UmVmIH0gZnJvbSAnLi90b2FzdC5jbGFzcyc7XG5pbXBvcnQgeyBBWFRvYXN0Q29tcG9uZW50IH0gZnJvbSAnLi90b2FzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQVhUb2FzdENvbmZpZywgQVhfVE9BU1RfQ09ORklHIH0gZnJvbSAnLi90b2FzdC5jb25maWcnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQVhUb2FzdFNlcnZpY2Uge1xuICBwcml2YXRlIGRpYWxvZzogRGlhbG9nID0gaW5qZWN0KERpYWxvZyk7XG4gIHByaXZhdGUgZGVmYXVsdENvbmZpZzogQVhUb2FzdENvbmZpZyA9IGluamVjdChBWF9UT0FTVF9DT05GSUcpO1xuICBwcml2YXRlIGFjdGl2ZVRvYXN0cyA9IHNpZ25hbDxzdHJpbmdbXT4oW10pO1xuICBwcml2YXRlIHJlc2VydmVkVG9hc3RzID0gc2lnbmFsPEFYVG9hc3REaXNwbGF5Q29uZmlnW10+KFtdKTtcbiAgcHJpdmF0ZSB0b2FzdENvdW50ZXJFbGVtZW50ID0gc2lnbmFsPEFYVG9hc3RDb21wb25lbnQgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSBtb3JlVG9hc3RzQ29sb3IgPSBzaWduYWw8QVhTdHlsZUNvbG9yVHlwZT4oJ3ByaW1hcnknKTtcbiAgcHJpdmF0ZSBtb3JlVG9hc3RzTG9jYXRpb24gPSBzaWduYWw8QVhMb2NhdGlvbj4oJ2JvdHRvbS1jZW50ZXInKTtcbiAgcHJpdmF0ZSByZXNlcnZlQ291bnRlciA9IHNpZ25hbCgwKTtcblxuICBzY3JvbGxTdHJhdGVneTogU2Nyb2xsU3RyYXRlZ3k7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBzY3JvbGxTdHJhdGVneU9wdGlvbnM6IFNjcm9sbFN0cmF0ZWd5T3B0aW9ucykge1xuICAgIHRoaXMuc2Nyb2xsU3RyYXRlZ3kgPSB0aGlzLnNjcm9sbFN0cmF0ZWd5T3B0aW9ucy5ub29wKCk7XG4gIH1cblxuICAjZWZmZWN0ID0gZWZmZWN0KFxuICAgICgpID0+IHtcbiAgICAgIGlmICh0aGlzLmRlZmF1bHRDb25maWcubGltaXQgPD0gMCkgcmV0dXJuO1xuICAgICAgdGhpcy5oYW5kbGVTaG93UmVzZXJ2ZWRUb2FzdCgpO1xuICAgICAgdGhpcy5oYW5kbGVTaG93UmVzZXJ2ZWRUb2FzdENvdW50ZXIoKTtcbiAgICAgIHRoaXMuaGFuZGxlUmVzZXJ2ZUNvdW50ZXIoKTtcbiAgICB9LFxuICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgKTtcblxuICBwcmltYXJ5KGNvbnRlbnQ6IHN0cmluZykge1xuICAgIHRoaXMuc2hvdyh7XG4gICAgICB0aW1lT3V0OiB0aGlzLmRlZmF1bHRDb25maWcudGltZU91dCxcbiAgICAgIGNvbG9yOiAncHJpbWFyeScsXG4gICAgICBjb250ZW50OiBjb250ZW50LFxuICAgIH0pO1xuICB9XG4gIHNlY29uZGFyeShjb250ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNob3coe1xuICAgICAgdGltZU91dDogdGhpcy5kZWZhdWx0Q29uZmlnLnRpbWVPdXQsXG4gICAgICBjb2xvcjogJ3NlY29uZGFyeScsXG4gICAgICBjb250ZW50OiBjb250ZW50LFxuICAgIH0pO1xuICB9XG4gIHN1Y2Nlc3MoY29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5zaG93KHtcbiAgICAgIHRpbWVPdXQ6IHRoaXMuZGVmYXVsdENvbmZpZy50aW1lT3V0LFxuICAgICAgY29sb3I6ICdzdWNjZXNzJyxcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXG4gICAgfSk7XG4gIH1cbiAgd2FybmluZyhjb250ZW50OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNob3coe1xuICAgICAgdGltZU91dDogdGhpcy5kZWZhdWx0Q29uZmlnLnRpbWVPdXQsXG4gICAgICBjb2xvcjogJ3dhcm5pbmcnLFxuICAgICAgY29udGVudDogY29udGVudCxcbiAgICB9KTtcbiAgfVxuICBkYW5nZXIoY29udGVudDogc3RyaW5nKSB7XG4gICAgdGhpcy5zaG93KHtcbiAgICAgIHRpbWVPdXQ6IHRoaXMuZGVmYXVsdENvbmZpZy50aW1lT3V0LFxuICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgY29udGVudDogY29udGVudCxcbiAgICB9KTtcbiAgfVxuXG4gIHNob3coY29uZmlnOiBBWFRvYXN0RGlzcGxheUNvbmZpZyk6IEFYVG9hc3RSZWYge1xuICAgIGNvbnN0IG9wdCA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7XG4gICAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgICBsb2NhdGlvbjogdGhpcy5kZWZhdWx0Q29uZmlnLmxvY2F0aW9uID8/ICdib3R0b20tY2VudGVyJyxcbiAgICAgIH0sXG4gICAgICBjb25maWcsXG4gICAgKTtcbiAgICB0aGlzLm1vcmVUb2FzdHNDb2xvci5zZXQob3B0LmNvbG9yKTtcbiAgICB0aGlzLm1vcmVUb2FzdHNMb2NhdGlvbi5zZXQob3B0LmxvY2F0aW9uKTtcblxuICAgIGlmICh0aGlzLmRlZmF1bHRDb25maWcubGltaXQgPiAwKSB7XG4gICAgICBpZiAodGhpcy5hY3RpdmVUb2FzdHMoKS5sZW5ndGggPj0gdGhpcy5kZWZhdWx0Q29uZmlnLmxpbWl0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZWRUb2FzdHMudXBkYXRlKCh2YWx1ZSkgPT4gWy4uLnZhbHVlLCBvcHRdKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjbG9zZTogKCkgPT4ge1xuICAgICAgICAgICAgLy9UT0RPIGNsb3NlIHJlc2VydmVkIHRvYXN0XG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBnYXAgPSB0aGlzLmRlZmF1bHRDb25maWcuZ2FwO1xuICAgIGNvbnN0IHBvcyA9IHRoaXMuZ2V0UG9zaXRpb24ob3B0LmxvY2F0aW9uKSArIGdhcCArICdweCc7XG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuZ2V0UG9zaXRpb25TdHJhdGVneShuZXcgR2xvYmFsUG9zaXRpb25TdHJhdGVneSgpLCBvcHQubG9jYXRpb24sIHBvcywgZ2FwKTtcbiAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEFYVG9hc3RDb21wb25lbnQsIHtcbiAgICAgIGRhdGE6IG9wdCxcbiAgICAgIGF1dG9Gb2N1czogJ19fbm9fZWxlbWVudF9fJyxcbiAgICAgIHJlc3RvcmVGb2N1czogdHJ1ZSxcbiAgICAgIHJvbGU6ICdkaWFsb2cnLFxuICAgICAgYXJpYU1vZGFsOiB0cnVlLFxuICAgICAgY2xvc2VPbk5hdmlnYXRpb246IHRydWUsXG4gICAgICBjbG9zZU9uRGVzdHJveTogdHJ1ZSxcbiAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgIHBhbmVsQ2xhc3M6IFsnYXgtYW5pbWF0ZS1hbmltYXRlZCcsICdheC1hbmltYXRlLWZhZGVJbicsICdheC1hbmltYXRlLWZhc3RlciddLFxuICAgICAgcG9zaXRpb25TdHJhdGVneSxcbiAgICAgIHNjcm9sbFN0cmF0ZWd5OiB0aGlzLnNjcm9sbFN0cmF0ZWd5LFxuICAgIH0pO1xuXG4gICAgdGhpcy5hY3RpdmVUb2FzdHMudXBkYXRlKCh2YWx1ZSkgPT4gWy4uLnZhbHVlLCBkaWFsb2dSZWYuaWRdKTtcblxuICAgIGNvbnN0IHRvYXN0UmVmID0gZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlIGFzIEFYVG9hc3RDb21wb25lbnQ7XG4gICAgZGlhbG9nUmVmLmNsb3NlZC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5hY3RpdmVUb2FzdHMudXBkYXRlKCh2YWx1ZSkgPT4gWy4uLnZhbHVlXS5maWx0ZXIoKGRpYWxvZ0lEKSA9PiBkaWFsb2dJRCAhPT0gZGlhbG9nUmVmLmlkKSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yZXBvc2l0aW9uKG9wdC5sb2NhdGlvbiwgZ2FwKTtcbiAgICAgIH0sIDApO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNsb3NlOiAoKSA9PiB7XG4gICAgICAgIHRvYXN0UmVmLmNsb3NlKCk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBoaWRlQWxsKCkge1xuICAgIHRoaXMuZGlhbG9nLmNsb3NlQWxsKCk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNob3dSZXNlcnZlZFRvYXN0KCkge1xuICAgIGlmICh0aGlzLmFjdGl2ZVRvYXN0cygpLmxlbmd0aCA+IHRoaXMuZGVmYXVsdENvbmZpZy5saW1pdCAtIDEpIHJldHVybjtcbiAgICBpZiAoIXRoaXMucmVzZXJ2ZWRUb2FzdHMoKS5sZW5ndGgpIHJldHVybjtcbiAgICB0aGlzLnNob3codGhpcy5yZXNlcnZlZFRvYXN0cygpWzBdKTtcbiAgICB0aGlzLnJlc2VydmVkVG9hc3RzLnVwZGF0ZSgodmFsdWUpID0+IHtcbiAgICAgIGNvbnN0IHRvYXN0cyA9IFsuLi52YWx1ZV07XG4gICAgICB0b2FzdHMuc2hpZnQoKTtcbiAgICAgIHJldHVybiB0b2FzdHM7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVNob3dSZXNlcnZlZFRvYXN0Q291bnRlcigpIHtcbiAgICBpZiAodGhpcy5yZXNlcnZlZFRvYXN0cygpLmxlbmd0aCA9PT0gdGhpcy5yZXNlcnZlQ291bnRlcigpKSByZXR1cm47XG4gICAgdGhpcy5yZXNlcnZlQ291bnRlci5zZXQodGhpcy5yZXNlcnZlZFRvYXN0cygpLmxlbmd0aCk7XG4gICAgaWYgKHRoaXMudG9hc3RDb3VudGVyRWxlbWVudCgpICE9PSBudWxsKSB0aGlzLnRvYXN0Q291bnRlckVsZW1lbnQoKS5jbG9zZSgpO1xuICAgIHRoaXMuY3JlYXRlUmVzZXJ2ZWRDb3VudGVyVG9hc3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlUmVzZXJ2ZUNvdW50ZXIoKSB7XG4gICAgaWYgKHRoaXMucmVzZXJ2ZUNvdW50ZXIoKSAhPT0gMCkgcmV0dXJuO1xuICAgIGlmICh0aGlzLnRvYXN0Q291bnRlckVsZW1lbnQoKSA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIHRoaXMudG9hc3RDb3VudGVyRWxlbWVudCgpLmNsb3NlKCk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVJlc2VydmVkQ291bnRlclRvYXN0KCkge1xuICAgIGNvbnN0IG9wdDogQVhUb2FzdERhdGEgPSB7XG4gICAgICBjbG9zZUJ1dHRvbjogZmFsc2UsXG4gICAgICBjb2xvcjogdGhpcy5tb3JlVG9hc3RzQ29sb3IoKSxcbiAgICAgIGxvY2F0aW9uOiB0aGlzLm1vcmVUb2FzdHNMb2NhdGlvbigpLFxuICAgICAgdGl0bGU6IGBBbmQgJHt0aGlzLnJlc2VydmVDb3VudGVyKCl9IG1vcmUuLi5gLFxuICAgICAgdGltZU91dFByb2dyZXNzOiBmYWxzZSxcbiAgICB9O1xuICAgIGNvbnN0IGdhcCA9IHRoaXMuZGVmYXVsdENvbmZpZy5nYXA7XG4gICAgY29uc3QgcG9zID0gdGhpcy5nZXRQb3NpdGlvbihvcHQubG9jYXRpb24pICsgZ2FwICsgJ3B4JztcbiAgICBjb25zdCBwb3NpdGlvblN0cmF0ZWd5ID0gdGhpcy5nZXRQb3NpdGlvblN0cmF0ZWd5KG5ldyBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5KCksIG9wdC5sb2NhdGlvbiwgcG9zLCBnYXApO1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQVhUb2FzdENvbXBvbmVudCwge1xuICAgICAgZGF0YTogb3B0LFxuICAgICAgYXV0b0ZvY3VzOiAnX19ub19lbGVtZW50X18nLFxuICAgICAgcmVzdG9yZUZvY3VzOiB0cnVlLFxuICAgICAgcm9sZTogJ2RpYWxvZycsXG4gICAgICBhcmlhTW9kYWw6IHRydWUsXG4gICAgICBjbG9zZU9uTmF2aWdhdGlvbjogdHJ1ZSxcbiAgICAgIGNsb3NlT25EZXN0cm95OiB0cnVlLFxuICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgcGFuZWxDbGFzczogWydheC1hbmltYXRlLWFuaW1hdGVkJywgJ2F4LWFuaW1hdGUtZmFkZUluJywgJ2F4LWFuaW1hdGUtZmFzdGVyJ10sXG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMuc2Nyb2xsU3RyYXRlZ3ksXG4gICAgfSk7XG4gICAgdGhpcy50b2FzdENvdW50ZXJFbGVtZW50LnNldChkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UgYXMgQVhUb2FzdENvbXBvbmVudCk7XG4gIH1cblxuICBwcml2YXRlIHJlcG9zaXRpb24odG9hc3RMb2NhdGlvbjogQVhMb2NhdGlvbiwgZ2FwOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3NcbiAgICAgIC5tYXAoKGMpID0+IGMuY29tcG9uZW50SW5zdGFuY2UgYXMgQVhUb2FzdENvbXBvbmVudClcbiAgICAgIC5maWx0ZXIoKGMpID0+IGMuY29uZmlnPy5sb2NhdGlvbiA9PSB0b2FzdExvY2F0aW9uKTtcblxuICAgIGxpc3QuZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHBvcyA9IHRoaXMuZ2V0UmVwb3NpdGlvblBvc2l0aW9uKGluZGV4LCBnYXAsIGxpc3QsIHRvYXN0TG9jYXRpb24pO1xuICAgICAgY29uc29sZS5sb2coaW5kZXgsIGVsZW1lbnQpO1xuXG4gICAgICB0aGlzLmdldFBvc2l0aW9uU3RyYXRlZ3koXG4gICAgICAgIGVsZW1lbnQuZGlhbG9nUmVmLmNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5IGFzIEdsb2JhbFBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICAgIHRvYXN0TG9jYXRpb24sXG4gICAgICAgIHBvcyxcbiAgICAgICAgZ2FwLFxuICAgICAgKS5hcHBseSgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXBvc2l0aW9uUG9zaXRpb24oaW5kZXg6IG51bWJlciwgZ2FwOiBudW1iZXIsIGxpc3Q6IEFYVG9hc3RDb21wb25lbnRbXSwgdG9hc3RMb2NhdGlvbjogc3RyaW5nKSB7XG4gICAgaWYgKGluZGV4ID09PSAwKSByZXR1cm4gZ2FwICsgJ3B4JztcbiAgICBjb25zdCBwcmV2aW91c2VFbGVtZW50ID0gbGlzdFtpbmRleCAtIDFdO1xuICAgIGlmICh0b2FzdExvY2F0aW9uLnNwbGl0KCctJylbMF0gPT0gJ2JvdHRvbScpIHtcbiAgICAgIHJldHVybiB3aW5kb3cuaW5uZXJIZWlnaHQgLSBwcmV2aW91c2VFbGVtZW50LmdldEhvc3RFbGVtZW50KCkub2Zmc2V0VG9wICsgZ2FwICsgJ3B4JztcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIHByZXZpb3VzZUVsZW1lbnQuZ2V0SG9zdEVsZW1lbnQoKS5vZmZzZXRUb3AgK1xuICAgICAgcHJldmlvdXNlRWxlbWVudC5nZXRIb3N0RWxlbWVudCgpLm9mZnNldEhlaWdodCArXG4gICAgICBnYXAgK1xuICAgICAgJ3B4J1xuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFBvc2l0aW9uKGxvY2F0aW9uOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsaXN0ID0gdGhpcy5kaWFsb2cub3BlbkRpYWxvZ3NcbiAgICAgIC5tYXAoKGMpID0+IGMuY29tcG9uZW50SW5zdGFuY2UgYXMgQVhUb2FzdENvbXBvbmVudClcbiAgICAgIC5maWx0ZXIoKGMpID0+IGMuY29uZmlnPy5sb2NhdGlvbiA9PSBsb2NhdGlvbik7XG4gICAgaWYgKGxpc3QubGVuZ3RoID09IDApIHJldHVybiAwO1xuICAgIGlmIChsb2NhdGlvbi5zcGxpdCgnLScpWzBdID09ICdib3R0b20nKSB7XG4gICAgICByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0IC0gbGlzdFtsaXN0Lmxlbmd0aCAtIDFdLmdldEhvc3RFbGVtZW50KCkub2Zmc2V0VG9wO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgbGlzdFtsaXN0Lmxlbmd0aCAtIDFdLmdldEhvc3RFbGVtZW50KCkub2Zmc2V0VG9wICsgbGlzdFtsaXN0Lmxlbmd0aCAtIDFdLmdldEhvc3RFbGVtZW50KCkub2Zmc2V0SGVpZ2h0XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0UG9zaXRpb25TdHJhdGVneShcbiAgICBwb3NpdGlvblN0cmF0ZWd5OiBHbG9iYWxQb3NpdGlvblN0cmF0ZWd5LFxuICAgIGxvY2F0aW9uOiBBWExvY2F0aW9uLFxuICAgIHBvczogc3RyaW5nLFxuICAgIGdhcDogbnVtYmVyLFxuICApIHtcbiAgICBzd2l0Y2ggKGxvY2F0aW9uKSB7XG4gICAgICBjYXNlICdib3R0b20tY2VudGVyJzpcbiAgICAgICAgcmV0dXJuIHBvc2l0aW9uU3RyYXRlZ3kuYm90dG9tKHBvcykuY2VudGVySG9yaXpvbnRhbGx5KCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYm90dG9tLWVuZCc6XG4gICAgICAgIHJldHVybiBwb3NpdGlvblN0cmF0ZWd5LmJvdHRvbShwb3MpLnJpZ2h0KGdhcCArICdweCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JvdHRvbS1zdGFydCc6XG4gICAgICAgIHJldHVybiBwb3NpdGlvblN0cmF0ZWd5LmJvdHRvbShwb3MpLmxlZnQoZ2FwICsgJ3B4Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wLWNlbnRlcic6XG4gICAgICAgIHJldHVybiBwb3NpdGlvblN0cmF0ZWd5LnRvcChwb3MpLmNlbnRlckhvcml6b250YWxseSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcC1lbmQnOlxuICAgICAgICByZXR1cm4gcG9zaXRpb25TdHJhdGVneS50b3AocG9zKS5yaWdodChnYXAgKyAncHgnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3Atc3RhcnQnOlxuICAgICAgICByZXR1cm4gcG9zaXRpb25TdHJhdGVneS50b3AocG9zKS5sZWZ0KGdhcCArICdweCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlci1zdGFydCc6XG4gICAgICAgIHJldHVybiBwb3NpdGlvblN0cmF0ZWd5LmNlbnRlclZlcnRpY2FsbHkoKS5sZWZ0KGdhcCArICdweCcpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlci1lbmQnOlxuICAgICAgICByZXR1cm4gcG9zaXRpb25TdHJhdGVneS5jZW50ZXJWZXJ0aWNhbGx5KCkucmlnaHQoZ2FwICsgJ3B4Jyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxufVxuIl19
|
@@ -274,7 +274,13 @@ const AX_PLACEMENT_MAP = {
|
|
274
274
|
},
|
275
275
|
'bottom-start': {
|
276
276
|
origin: AX_PLACEMENT_BOTTOM_START,
|
277
|
-
alts: [
|
277
|
+
alts: [
|
278
|
+
AX_PLACEMENT_BOTTOM_END,
|
279
|
+
AX_PLACEMENT_TOP_START,
|
280
|
+
AX_PLACEMENT_TOP_END,
|
281
|
+
AX_PLACEMENT_START,
|
282
|
+
AX_PLACEMENT_END,
|
283
|
+
],
|
278
284
|
},
|
279
285
|
'bottom-end': {
|
280
286
|
origin: AX_PLACEMENT_BOTTOM_END,
|