@villedemontreal/angular-ui 15.0.0 → 15.1.0
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/esm2020/lib/bao.module.mjs +8 -7
- package/esm2020/lib/snack-bar/index.mjs +12 -0
- package/esm2020/lib/snack-bar/module.mjs +52 -0
- package/esm2020/lib/snack-bar/simple-snack-bar.component.mjs +92 -0
- package/esm2020/lib/snack-bar/snack-bar-animations.mjs +28 -0
- package/esm2020/lib/snack-bar/snack-bar-config.mjs +37 -0
- package/esm2020/lib/snack-bar/snack-bar-container.mjs +272 -0
- package/esm2020/lib/snack-bar/snack-bar-ref.mjs +75 -0
- package/esm2020/lib/snack-bar/snack-bar.mjs +251 -0
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/villedemontreal-angular-ui.mjs +788 -11
- package/fesm2015/villedemontreal-angular-ui.mjs.map +1 -1
- package/fesm2020/villedemontreal-angular-ui.mjs +784 -11
- package/fesm2020/villedemontreal-angular-ui.mjs.map +1 -1
- package/lib/bao.module.d.ts +2 -1
- package/lib/snack-bar/index.d.ts +6 -0
- package/lib/snack-bar/module.d.ts +13 -0
- package/lib/snack-bar/simple-snack-bar.component.d.ts +51 -0
- package/lib/snack-bar/snack-bar-animations.d.ts +8 -0
- package/lib/snack-bar/snack-bar-config.d.ts +51 -0
- package/lib/snack-bar/snack-bar-container.d.ts +111 -0
- package/lib/snack-bar/snack-bar-ref.d.ts +51 -0
- package/lib/snack-bar/snack-bar.d.ts +89 -0
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { OverlayConfig } from '@angular/cdk/overlay';
|
|
2
|
+
import { ComponentPortal, PortalInjector, TemplatePortal } from '@angular/cdk/portal';
|
|
3
|
+
import { Inject, Injectable, InjectionToken, Optional, SkipSelf, TemplateRef } from '@angular/core';
|
|
4
|
+
import { BaoSimpleSnackBarComponent } from './simple-snack-bar.component';
|
|
5
|
+
import { BAO_SNACK_BAR_DATA, BaoSnackBarConfig } from './snack-bar-config';
|
|
6
|
+
import { BaoSnackBarContainerComponent } from './snack-bar-container';
|
|
7
|
+
import { BaoSnackBarRef } from './snack-bar-ref';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
10
|
+
import * as i2 from "@angular/cdk/a11y";
|
|
11
|
+
import * as i3 from "./snack-bar-config";
|
|
12
|
+
export function baoFactory() {
|
|
13
|
+
return new BaoSnackBarConfig();
|
|
14
|
+
}
|
|
15
|
+
/** Injection token that can be used to specify default snack bar. */
|
|
16
|
+
export const BAO_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken('bao-snack-bar-default-options', {
|
|
17
|
+
providedIn: 'root',
|
|
18
|
+
factory: baoFactory
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* Service to dispatch Material Design snack bar messages.
|
|
22
|
+
*/
|
|
23
|
+
export class BaoSnackBarService {
|
|
24
|
+
constructor(_overlay, _live, _injector, _parentSnackBar, _defaultConfig) {
|
|
25
|
+
this._overlay = _overlay;
|
|
26
|
+
this._live = _live;
|
|
27
|
+
this._injector = _injector;
|
|
28
|
+
this._parentSnackBar = _parentSnackBar;
|
|
29
|
+
this._defaultConfig = _defaultConfig;
|
|
30
|
+
/** The component that should be rendered as the snack bar's simple component. */
|
|
31
|
+
this.simpleSnackBarComponent = BaoSimpleSnackBarComponent;
|
|
32
|
+
/** The container component that attaches the provided template or component. */
|
|
33
|
+
this.snackBarContainerComponent = BaoSnackBarContainerComponent;
|
|
34
|
+
/**
|
|
35
|
+
* Reference to the current snack bar in the view *at this level* (in the Angular injector tree).
|
|
36
|
+
* If there is a parent snack-bar service, all operations should delegate to that parent
|
|
37
|
+
* via `_openedSnackBarRef`.
|
|
38
|
+
*/
|
|
39
|
+
this._snackBarRefAtThisLevel = null;
|
|
40
|
+
}
|
|
41
|
+
/** Reference to the currently opened snackbar at *any* level. */
|
|
42
|
+
get _openedSnackBarRef() {
|
|
43
|
+
const parent = this._parentSnackBar;
|
|
44
|
+
return parent ? parent._openedSnackBarRef : this._snackBarRefAtThisLevel;
|
|
45
|
+
}
|
|
46
|
+
set _openedSnackBarRef(value) {
|
|
47
|
+
if (this._parentSnackBar) {
|
|
48
|
+
this._parentSnackBar._openedSnackBarRef = value;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
this._snackBarRefAtThisLevel = value;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Creates and dispatches a snack bar with a custom component for the content, removing any
|
|
56
|
+
* currently opened snack bars.
|
|
57
|
+
*
|
|
58
|
+
* @param component Component to be instantiated.
|
|
59
|
+
* @param config Extra configuration for the snack bar.
|
|
60
|
+
*/
|
|
61
|
+
openFromComponent(component, config) {
|
|
62
|
+
return this.attach(component, config);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Creates and dispatches a snack bar with a custom template for the content, removing any
|
|
66
|
+
* currently opened snack bars.
|
|
67
|
+
*
|
|
68
|
+
* @param template Template to be instantiated.
|
|
69
|
+
* @param config Extra configuration for the snack bar.
|
|
70
|
+
*/
|
|
71
|
+
openFromTemplate(template, config) {
|
|
72
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
73
|
+
return this.attach(template, config);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Opens a snackbar with a message and an optional action.
|
|
77
|
+
* @param message The message to show in the snackbar.
|
|
78
|
+
* @param toastType The type of of toast to display the snackbar.
|
|
79
|
+
* @param actionLabelOrIcon The label or icon for the snackbar action.
|
|
80
|
+
* @param showClose If true, the snackbar will require user interaction to close.
|
|
81
|
+
* @param config Additional configuration options for the snackbar.
|
|
82
|
+
*/
|
|
83
|
+
open(config) {
|
|
84
|
+
const _config = { ...this._defaultConfig, ...config };
|
|
85
|
+
// Since the user doesn't have access to the component, we can
|
|
86
|
+
// override the data to pass in our own message, action and type.
|
|
87
|
+
_config.data = {
|
|
88
|
+
message: _config.message,
|
|
89
|
+
toastType: _config.toastType,
|
|
90
|
+
actionLabelOrIcon: _config.actionLabelOrIcon,
|
|
91
|
+
showClose: _config.showClose
|
|
92
|
+
};
|
|
93
|
+
if (_config.showClose)
|
|
94
|
+
_config.duration = 0;
|
|
95
|
+
if (!_config.announcementMessage) {
|
|
96
|
+
_config.announcementMessage = _config.message;
|
|
97
|
+
}
|
|
98
|
+
return this.openFromComponent(this.simpleSnackBarComponent, _config);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Dismisses the currently-visible snack bar.
|
|
102
|
+
*/
|
|
103
|
+
dismiss() {
|
|
104
|
+
if (this._openedSnackBarRef) {
|
|
105
|
+
this._openedSnackBarRef.dismiss();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
ngOnDestroy() {
|
|
109
|
+
// Only dismiss the snack bar at the current level on destroy.
|
|
110
|
+
if (this._snackBarRefAtThisLevel) {
|
|
111
|
+
this._snackBarRefAtThisLevel.dismiss();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Attaches the snack bar container component to the overlay.
|
|
116
|
+
*/
|
|
117
|
+
attachSnackBarContainer(overlayRef, config) {
|
|
118
|
+
const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
|
|
119
|
+
const injector = new PortalInjector(userInjector || this._injector, new WeakMap([[BaoSnackBarConfig, config]]));
|
|
120
|
+
const containerPortal = new ComponentPortal(this.snackBarContainerComponent, config.viewContainerRef, injector);
|
|
121
|
+
const containerRef = overlayRef.attach(containerPortal);
|
|
122
|
+
containerRef.instance.snackBarConfig = config;
|
|
123
|
+
return containerRef.instance;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Places a new component or a template as the content of the snack bar container.
|
|
127
|
+
*/
|
|
128
|
+
attach(content, userConfig) {
|
|
129
|
+
const config = {
|
|
130
|
+
...new BaoSnackBarConfig(),
|
|
131
|
+
...this._defaultConfig,
|
|
132
|
+
...userConfig
|
|
133
|
+
};
|
|
134
|
+
const overlayRef = this.createOverlay(config);
|
|
135
|
+
const container = this.attachSnackBarContainer(overlayRef, config);
|
|
136
|
+
const snackBarRef = new BaoSnackBarRef(container, overlayRef);
|
|
137
|
+
if (content instanceof TemplateRef) {
|
|
138
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
139
|
+
const portal = new TemplatePortal(content, null, {
|
|
140
|
+
$implicit: config.data,
|
|
141
|
+
snackBarRef
|
|
142
|
+
});
|
|
143
|
+
snackBarRef.instance = container.attachTemplatePortal(portal);
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
const injector = this.createInjector(config, snackBarRef);
|
|
147
|
+
const portal = new ComponentPortal(content, undefined, injector);
|
|
148
|
+
const contentRef = container.attachComponentPortal(portal);
|
|
149
|
+
// We can't pass this via the injector, because the injector is created earlier.
|
|
150
|
+
snackBarRef.instance = contentRef.instance;
|
|
151
|
+
}
|
|
152
|
+
this.animateSnackBar(snackBarRef, config);
|
|
153
|
+
this._openedSnackBarRef = snackBarRef;
|
|
154
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
155
|
+
return this._openedSnackBarRef;
|
|
156
|
+
}
|
|
157
|
+
/** Animates the old snack bar out and the new one in. */
|
|
158
|
+
animateSnackBar(snackBarRef, config) {
|
|
159
|
+
// When the snackbar is dismissed, clear the reference to it.
|
|
160
|
+
snackBarRef.afterDismissed().subscribe(() => {
|
|
161
|
+
// Clear the snackbar ref if it hasn't already been replaced by a newer snackbar.
|
|
162
|
+
// eslint-disable-next-line eqeqeq
|
|
163
|
+
if (this._openedSnackBarRef == snackBarRef) {
|
|
164
|
+
this._openedSnackBarRef = null;
|
|
165
|
+
}
|
|
166
|
+
if (config.announcementMessage) {
|
|
167
|
+
this._live.clear();
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
if (this._openedSnackBarRef) {
|
|
171
|
+
// If a snack bar is already in view, dismiss it and enter the
|
|
172
|
+
// new snack bar after exit animation is complete.
|
|
173
|
+
this._openedSnackBarRef.afterDismissed().subscribe(() => {
|
|
174
|
+
snackBarRef.containerInstance.enter();
|
|
175
|
+
});
|
|
176
|
+
this._openedSnackBarRef.dismiss();
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
// If no snack bar is in view, enter the new snack bar.
|
|
180
|
+
snackBarRef.containerInstance.enter();
|
|
181
|
+
}
|
|
182
|
+
// If a dismiss timeout is provided, set up dismiss based on after the snackbar is opened.
|
|
183
|
+
if (config.duration && config.duration > 0) {
|
|
184
|
+
snackBarRef
|
|
185
|
+
.afterOpened()
|
|
186
|
+
.subscribe(() => snackBarRef.dismissAfter(config.duration));
|
|
187
|
+
}
|
|
188
|
+
if (config.announcementMessage) {
|
|
189
|
+
void this._live.announce(config.announcementMessage, config.politeness);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Creates a new overlay and places it in the correct location.
|
|
194
|
+
* @param config The user-specified snack bar config.
|
|
195
|
+
*/
|
|
196
|
+
createOverlay(config) {
|
|
197
|
+
const overlayConfig = new OverlayConfig();
|
|
198
|
+
overlayConfig.direction = config.direction;
|
|
199
|
+
const positionStrategy = this._overlay.position().global();
|
|
200
|
+
// Set horizontal position.
|
|
201
|
+
const isRtl = config.direction === 'rtl';
|
|
202
|
+
const isLeft = config.horizontalPosition === 'left' ||
|
|
203
|
+
(config.horizontalPosition === 'start' && !isRtl) ||
|
|
204
|
+
(config.horizontalPosition === 'end' && isRtl);
|
|
205
|
+
const isRight = !isLeft && config.horizontalPosition !== 'center';
|
|
206
|
+
if (isLeft) {
|
|
207
|
+
positionStrategy.left('0');
|
|
208
|
+
}
|
|
209
|
+
else if (isRight) {
|
|
210
|
+
positionStrategy.right('0');
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
positionStrategy.centerHorizontally();
|
|
214
|
+
}
|
|
215
|
+
// Set horizontal position.
|
|
216
|
+
if (config.verticalPosition === 'top') {
|
|
217
|
+
positionStrategy.top('0');
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
positionStrategy.bottom('0');
|
|
221
|
+
}
|
|
222
|
+
overlayConfig.positionStrategy = positionStrategy;
|
|
223
|
+
return this._overlay.create(overlayConfig);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Creates an injector to be used inside of a snack bar component.
|
|
227
|
+
* @param config Config that was used to create the snack bar.
|
|
228
|
+
* @param snackBarRef Reference to the snack bar.
|
|
229
|
+
*/
|
|
230
|
+
createInjector(config, snackBarRef) {
|
|
231
|
+
const userInjector = config && config.viewContainerRef && config.viewContainerRef.injector;
|
|
232
|
+
return new PortalInjector(userInjector || this._injector, new WeakMap([
|
|
233
|
+
[BaoSnackBarRef, snackBarRef],
|
|
234
|
+
[BAO_SNACK_BAR_DATA, config.data]
|
|
235
|
+
]));
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
BaoSnackBarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoSnackBarService, deps: [{ token: i1.Overlay }, { token: i2.LiveAnnouncer }, { token: i0.Injector }, { token: BaoSnackBarService, optional: true, skipSelf: true }, { token: BAO_SNACK_BAR_DEFAULT_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
239
|
+
BaoSnackBarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoSnackBarService, providedIn: 'root' });
|
|
240
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.3", ngImport: i0, type: BaoSnackBarService, decorators: [{
|
|
241
|
+
type: Injectable,
|
|
242
|
+
args: [{ providedIn: 'root' }]
|
|
243
|
+
}], ctorParameters: function () { return [{ type: i1.Overlay }, { type: i2.LiveAnnouncer }, { type: i0.Injector }, { type: BaoSnackBarService, decorators: [{
|
|
244
|
+
type: Optional
|
|
245
|
+
}, {
|
|
246
|
+
type: SkipSelf
|
|
247
|
+
}] }, { type: i3.BaoSnackBarConfig, decorators: [{
|
|
248
|
+
type: Inject,
|
|
249
|
+
args: [BAO_SNACK_BAR_DEFAULT_OPTIONS]
|
|
250
|
+
}] }]; } });
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hY2stYmFyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci11aS9zcmMvbGliL3NuYWNrLWJhci9zbmFjay1iYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsT0FBTyxFQUFXLGFBQWEsRUFBYyxNQUFNLHNCQUFzQixDQUFDO0FBQzFFLE9BQU8sRUFDTCxlQUFlLEVBRWYsY0FBYyxFQUNkLGNBQWMsRUFDZixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFHTCxNQUFNLEVBQ04sVUFBVSxFQUNWLGNBQWMsRUFHZCxRQUFRLEVBQ1IsUUFBUSxFQUNSLFdBQVcsRUFFWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsMEJBQTBCLEVBRTNCLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0UsT0FBTyxFQUNMLDZCQUE2QixFQUU5QixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFFakQsTUFBTSxVQUFVLFVBQVU7SUFDeEIsT0FBTyxJQUFJLGlCQUFpQixFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVELHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FDeEMsSUFBSSxjQUFjLENBQW9CLCtCQUErQixFQUFFO0lBQ3JFLFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxVQUFVO0NBQ3BCLENBQUMsQ0FBQztBQUVMOztHQUVHO0FBRUgsTUFBTSxPQUFPLGtCQUFrQjtJQWdCN0IsWUFDVSxRQUFpQixFQUNqQixLQUFvQixFQUNwQixTQUFtQixFQUNLLGVBQW1DLEVBRTNELGNBQWlDO1FBTGpDLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUNwQixj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ZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMgVmlsbGUgZGUgTW9udHJlYWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuaW1wb3J0IHsgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQge1xuICBDb21wb25lbnRQb3J0YWwsXG4gIENvbXBvbmVudFR5cGUsXG4gIFBvcnRhbEluamVjdG9yLFxuICBUZW1wbGF0ZVBvcnRhbFxufSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIENvbXBvbmVudFJlZixcbiAgRW1iZWRkZWRWaWV3UmVmLFxuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIEluamVjdGlvblRva2VuLFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgU2tpcFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBUeXBlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQmFvU2ltcGxlU25hY2tCYXJDb21wb25lbnQsXG4gIElUZXh0T25seVNuYWNrQmFyXG59IGZyb20gJy4vc2ltcGxlLXNuYWNrLWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQkFPX1NOQUNLX0JBUl9EQVRBLCBCYW9TbmFja0JhckNvbmZpZyB9IGZyb20gJy4vc25hY2stYmFyLWNvbmZpZyc7XG5pbXBvcnQge1xuICBCYW9TbmFja0JhckNvbnRhaW5lckNvbXBvbmVudCxcbiAgSUJhb1NuYWNrQmFyQ29udGFpbmVyXG59IGZyb20gJy4vc25hY2stYmFyLWNvbnRhaW5lcic7XG5pbXBvcnQgeyBCYW9TbmFja0JhclJlZiB9IGZyb20gJy4vc25hY2stYmFyLXJlZic7XG5cbmV4cG9ydCBmdW5jdGlvbiBiYW9GYWN0b3J5KCkge1xuICByZXR1cm4gbmV3IEJhb1NuYWNrQmFyQ29uZmlnKCk7XG59XG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGRlZmF1bHQgc25hY2sgYmFyLiAqL1xuZXhwb3J0IGNvbnN0IEJBT19TTkFDS19CQVJfREVGQVVMVF9PUFRJT05TID1cbiAgbmV3IEluamVjdGlvblRva2VuPEJhb1NuYWNrQmFyQ29uZmlnPignYmFvLXNuYWNrLWJhci1kZWZhdWx0LW9wdGlvbnMnLCB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6IGJhb0ZhY3RvcnlcbiAgfSk7XG5cbi8qKlxuICogU2VydmljZSB0byBkaXNwYXRjaCBNYXRlcmlhbCBEZXNpZ24gc25hY2sgYmFyIG1lc3NhZ2VzLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEJhb1NuYWNrQmFyU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKiBUaGUgY29tcG9uZW50IHRoYXQgc2hvdWxkIGJlIHJlbmRlcmVkIGFzIHRoZSBzbmFjayBiYXIncyBzaW1wbGUgY29tcG9uZW50LiAqL1xuICBwcm90ZWN0ZWQgc2ltcGxlU25hY2tCYXJDb21wb25lbnQ6IFR5cGU8SVRleHRPbmx5U25hY2tCYXI+ID1cbiAgICBCYW9TaW1wbGVTbmFja0JhckNvbXBvbmVudDtcblxuICAvKiogVGhlIGNvbnRhaW5lciBjb21wb25lbnQgdGhhdCBhdHRhY2hlcyB0aGUgcHJvdmlkZWQgdGVtcGxhdGUgb3IgY29tcG9uZW50LiAqL1xuICBwcm90ZWN0ZWQgc25hY2tCYXJDb250YWluZXJDb21wb25lbnQ6IFR5cGU8SUJhb1NuYWNrQmFyQ29udGFpbmVyPiA9XG4gICAgQmFvU25hY2tCYXJDb250YWluZXJDb21wb25lbnQ7XG5cbiAgLyoqXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBzbmFjayBiYXIgaW4gdGhlIHZpZXcgKmF0IHRoaXMgbGV2ZWwqIChpbiB0aGUgQW5ndWxhciBpbmplY3RvciB0cmVlKS5cbiAgICogSWYgdGhlcmUgaXMgYSBwYXJlbnQgc25hY2stYmFyIHNlcnZpY2UsIGFsbCBvcGVyYXRpb25zIHNob3VsZCBkZWxlZ2F0ZSB0byB0aGF0IHBhcmVudFxuICAgKiB2aWEgYF9vcGVuZWRTbmFja0JhclJlZmAuXG4gICAqL1xuICBwcml2YXRlIF9zbmFja0JhclJlZkF0VGhpc0xldmVsOiBCYW9TbmFja0JhclJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfb3ZlcmxheTogT3ZlcmxheSxcbiAgICBwcml2YXRlIF9saXZlOiBMaXZlQW5ub3VuY2VyLFxuICAgIHByaXZhdGUgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICBAT3B0aW9uYWwoKSBAU2tpcFNlbGYoKSBwcml2YXRlIF9wYXJlbnRTbmFja0JhcjogQmFvU25hY2tCYXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoQkFPX1NOQUNLX0JBUl9ERUZBVUxUX09QVElPTlMpXG4gICAgcHJpdmF0ZSBfZGVmYXVsdENvbmZpZzogQmFvU25hY2tCYXJDb25maWdcbiAgKSB7fVxuXG4gIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnRseSBvcGVuZWQgc25hY2tiYXIgYXQgKmFueSogbGV2ZWwuICovXG4gIGdldCBfb3BlbmVkU25hY2tCYXJSZWYoKTogQmFvU25hY2tCYXJSZWY8YW55PiB8IG51bGwge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuX3BhcmVudFNuYWNrQmFyO1xuICAgIHJldHVybiBwYXJlbnQgPyBwYXJlbnQuX29wZW5lZFNuYWNrQmFyUmVmIDogdGhpcy5fc25hY2tCYXJSZWZBdFRoaXNMZXZlbDtcbiAgfVxuXG4gIHNldCBfb3BlbmVkU25hY2tCYXJSZWYodmFsdWU6IEJhb1NuYWNrQmFyUmVmPGFueT4gfCBudWxsKSB7XG4gICAgaWYgKHRoaXMuX3BhcmVudFNuYWNrQmFyKSB7XG4gICAgICB0aGlzLl9wYXJlbnRTbmFja0Jhci5fb3BlbmVkU25hY2tCYXJSZWYgPSB2YWx1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc25hY2tCYXJSZWZBdFRoaXNMZXZlbCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuZCBkaXNwYXRjaGVzIGEgc25hY2sgYmFyIHdpdGggYSBjdXN0b20gY29tcG9uZW50IGZvciB0aGUgY29udGVudCwgcmVtb3ZpbmcgYW55XG4gICAqIGN1cnJlbnRseSBvcGVuZWQgc25hY2sgYmFycy5cbiAgICpcbiAgICogQHBhcmFtIGNvbXBvbmVudCBDb21wb25lbnQgdG8gYmUgaW5zdGFudGlhdGVkLlxuICAgKiBAcGFyYW0gY29uZmlnIEV4dHJhIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzbmFjayBiYXIuXG4gICAqL1xuICBwdWJsaWMgb3BlbkZyb21Db21wb25lbnQ8VD4oXG4gICAgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPFQ+LFxuICAgIGNvbmZpZz86IEJhb1NuYWNrQmFyQ29uZmlnXG4gICk6IEJhb1NuYWNrQmFyUmVmPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5hdHRhY2goY29tcG9uZW50LCBjb25maWcpIGFzIEJhb1NuYWNrQmFyUmVmPFQ+O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW5kIGRpc3BhdGNoZXMgYSBzbmFjayBiYXIgd2l0aCBhIGN1c3RvbSB0ZW1wbGF0ZSBmb3IgdGhlIGNvbnRlbnQsIHJlbW92aW5nIGFueVxuICAgKiBjdXJyZW50bHkgb3BlbmVkIHNuYWNrIGJhcnMuXG4gICAqXG4gICAqIEBwYXJhbSB0ZW1wbGF0ZSBUZW1wbGF0ZSB0byBiZSBpbnN0YW50aWF0ZWQuXG4gICAqIEBwYXJhbSBjb25maWcgRXh0cmEgY29uZmlndXJhdGlvbiBmb3IgdGhlIHNuYWNrIGJhci5cbiAgICovXG4gIHB1YmxpYyBvcGVuRnJvbVRlbXBsYXRlKFxuICAgIHRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+LFxuICAgIGNvbmZpZz86IEJhb1NuYWNrQmFyQ29uZmlnXG4gICk6IEJhb1NuYWNrQmFyUmVmPEVtYmVkZGVkVmlld1JlZjxhbnk+PiB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIHRoaXMuYXR0YWNoKHRlbXBsYXRlLCBjb25maWcpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgc25hY2tiYXIgd2l0aCBhIG1lc3NhZ2UgYW5kIGFuIG9wdGlvbmFsIGFjdGlvbi5cbiAgICogQHBhcmFtIG1lc3NhZ2UgVGhlIG1lc3NhZ2UgdG8gc2hvdyBpbiB0aGUgc25hY2tiYXIuXG4gICAqIEBwYXJhbSB0b2FzdFR5cGUgVGhlIHR5cGUgb2Ygb2YgdG9hc3QgdG8gZGlzcGxheSB0aGUgc25hY2tiYXIuXG4gICAqIEBwYXJhbSBhY3Rpb25MYWJlbE9ySWNvbiBUaGUgbGFiZWwgb3IgaWNvbiBmb3IgdGhlIHNuYWNrYmFyIGFjdGlvbi5cbiAgICogQHBhcmFtIHNob3dDbG9zZSBJZiB0cnVlLCB0aGUgc25hY2tiYXIgd2lsbCByZXF1aXJlIHVzZXIgaW50ZXJhY3Rpb24gdG8gY2xvc2UuXG4gICAqIEBwYXJhbSBjb25maWcgQWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSBzbmFja2Jhci5cbiAgICovXG4gIHB1YmxpYyBvcGVuKGNvbmZpZzogQmFvU25hY2tCYXJDb25maWcpOiBCYW9TbmFja0JhclJlZjxJVGV4dE9ubHlTbmFja0Jhcj4ge1xuICAgIGNvbnN0IF9jb25maWcgPSB7IC4uLnRoaXMuX2RlZmF1bHRDb25maWcsIC4uLmNvbmZpZyB9O1xuXG4gICAgLy8gU2luY2UgdGhlIHVzZXIgZG9lc24ndCBoYXZlIGFjY2VzcyB0byB0aGUgY29tcG9uZW50LCB3ZSBjYW5cbiAgICAvLyBvdmVycmlkZSB0aGUgZGF0YSB0byBwYXNzIGluIG91ciBvd24gbWVzc2FnZSwgYWN0aW9uIGFuZCB0eXBlLlxuICAgIF9jb25maWcuZGF0YSA9IHtcbiAgICAgIG1lc3NhZ2U6IF9jb25maWcubWVzc2FnZSxcbiAgICAgIHRvYXN0VHlwZTogX2NvbmZpZy50b2FzdFR5cGUsXG4gICAgICBhY3Rpb25MYWJlbE9ySWNvbjogX2NvbmZpZy5hY3Rpb25MYWJlbE9ySWNvbixcbiAgICAgIHNob3dDbG9zZTogX2NvbmZpZy5zaG93Q2xvc2VcbiAgICB9O1xuXG4gICAgaWYgKF9jb25maWcuc2hvd0Nsb3NlKSBfY29uZmlnLmR1cmF0aW9uID0gMDtcblxuICAgIGlmICghX2NvbmZpZy5hbm5vdW5jZW1lbnRNZXNzYWdlKSB7XG4gICAgICBfY29uZmlnLmFubm91bmNlbWVudE1lc3NhZ2UgPSBfY29uZmlnLm1lc3NhZ2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMub3BlbkZyb21Db21wb25lbnQodGhpcy5zaW1wbGVTbmFja0JhckNvbXBvbmVudCwgX2NvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogRGlzbWlzc2VzIHRoZSBjdXJyZW50bHktdmlzaWJsZSBzbmFjayBiYXIuXG4gICAqL1xuICBwdWJsaWMgZGlzbWlzcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fb3BlbmVkU25hY2tCYXJSZWYpIHtcbiAgICAgIHRoaXMuX29wZW5lZFNuYWNrQmFyUmVmLmRpc21pc3MoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgLy8gT25seSBkaXNtaXNzIHRoZSBzbmFjayBiYXIgYXQgdGhlIGN1cnJlbnQgbGV2ZWwgb24gZGVzdHJveS5cbiAgICBpZiAodGhpcy5fc25hY2tCYXJSZWZBdFRoaXNMZXZlbCkge1xuICAgICAgdGhpcy5fc25hY2tCYXJSZWZBdFRoaXNMZXZlbC5kaXNtaXNzKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIHRoZSBzbmFjayBiYXIgY29udGFpbmVyIGNvbXBvbmVudCB0byB0aGUgb3ZlcmxheS5cbiAgICovXG4gIHByaXZhdGUgYXR0YWNoU25hY2tCYXJDb250YWluZXIoXG4gICAgb3ZlcmxheVJlZjogT3ZlcmxheVJlZixcbiAgICBjb25maWc6IEJhb1NuYWNrQmFyQ29uZmlnXG4gICk6IElCYW9TbmFja0JhckNvbnRhaW5lciB7XG4gICAgY29uc3QgdXNlckluamVjdG9yID1cbiAgICAgIGNvbmZpZyAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZiAmJiBjb25maWcudmlld0NvbnRhaW5lclJlZi5pbmplY3RvcjtcbiAgICBjb25zdCBpbmplY3RvciA9IG5ldyBQb3J0YWxJbmplY3RvcihcbiAgICAgIHVzZXJJbmplY3RvciB8fCB0aGlzLl9pbmplY3RvcixcbiAgICAgIG5ldyBXZWFrTWFwKFtbQmFvU25hY2tCYXJDb25maWcsIGNvbmZpZ11dKVxuICAgICk7XG5cbiAgICBjb25zdCBjb250YWluZXJQb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKFxuICAgICAgdGhpcy5zbmFja0JhckNvbnRhaW5lckNvbXBvbmVudCxcbiAgICAgIGNvbmZpZy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgaW5qZWN0b3JcbiAgICApO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlZjogQ29tcG9uZW50UmVmPElCYW9TbmFja0JhckNvbnRhaW5lcj4gPVxuICAgICAgb3ZlcmxheVJlZi5hdHRhY2goY29udGFpbmVyUG9ydGFsKTtcbiAgICBjb250YWluZXJSZWYuaW5zdGFuY2Uuc25hY2tCYXJDb25maWcgPSBjb25maWc7XG4gICAgcmV0dXJuIGNvbnRhaW5lclJlZi5pbnN0YW5jZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQbGFjZXMgYSBuZXcgY29tcG9uZW50IG9yIGEgdGVtcGxhdGUgYXMgdGhlIGNvbnRlbnQgb2YgdGhlIHNuYWNrIGJhciBjb250YWluZXIuXG4gICAqL1xuICBwcml2YXRlIGF0dGFjaDxUPihcbiAgICBjb250ZW50OiBDb21wb25lbnRUeXBlPFQ+IHwgVGVtcGxhdGVSZWY8VD4sXG4gICAgdXNlckNvbmZpZz86IEJhb1NuYWNrQmFyQ29uZmlnXG4gICk6IEJhb1NuYWNrQmFyUmVmPFQgfCBFbWJlZGRlZFZpZXdSZWY8YW55Pj4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgIC4uLm5ldyBCYW9TbmFja0JhckNvbmZpZygpLFxuICAgICAgLi4udGhpcy5fZGVmYXVsdENvbmZpZyxcbiAgICAgIC4uLnVzZXJDb25maWdcbiAgICB9O1xuICAgIGNvbnN0IG92ZXJsYXlSZWYgPSB0aGlzLmNyZWF0ZU92ZXJsYXkoY29uZmlnKTtcbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmF0dGFjaFNuYWNrQmFyQ29udGFpbmVyKG92ZXJsYXlSZWYsIGNvbmZpZyk7XG4gICAgY29uc3Qgc25hY2tCYXJSZWYgPSBuZXcgQmFvU25hY2tCYXJSZWY8VCB8IEVtYmVkZGVkVmlld1JlZjxhbnk+PihcbiAgICAgIGNvbnRhaW5lcixcbiAgICAgIG92ZXJsYXlSZWZcbiAgICApO1xuXG4gICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBUZW1wbGF0ZVJlZikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cbiAgICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBUZW1wbGF0ZVBvcnRhbChjb250ZW50LCBudWxsISwge1xuICAgICAgICAkaW1wbGljaXQ6IGNvbmZpZy5kYXRhLFxuICAgICAgICBzbmFja0JhclJlZlxuICAgICAgfSBhcyBhbnkpO1xuXG4gICAgICBzbmFja0JhclJlZi5pbnN0YW5jZSA9IGNvbnRhaW5lci5hdHRhY2hUZW1wbGF0ZVBvcnRhbChwb3J0YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpbmplY3RvciA9IHRoaXMuY3JlYXRlSW5qZWN0b3IoY29uZmlnLCBzbmFja0JhclJlZik7XG4gICAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbnRlbnQsIHVuZGVmaW5lZCwgaW5qZWN0b3IpO1xuICAgICAgY29uc3QgY29udGVudFJlZiA9IGNvbnRhaW5lci5hdHRhY2hDb21wb25lbnRQb3J0YWw8VD4ocG9ydGFsKTtcblxuICAgICAgLy8gV2UgY2FuJ3QgcGFzcyB0aGlzIHZpYSB0aGUgaW5qZWN0b3IsIGJlY2F1c2UgdGhlIGluamVjdG9yIGlzIGNyZWF0ZWQgZWFybGllci5cbiAgICAgIHNuYWNrQmFyUmVmLmluc3RhbmNlID0gY29udGVudFJlZi5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICB0aGlzLmFuaW1hdGVTbmFja0JhcihzbmFja0JhclJlZiwgY29uZmlnKTtcbiAgICB0aGlzLl9vcGVuZWRTbmFja0JhclJlZiA9IHNuYWNrQmFyUmVmO1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgIHJldHVybiB0aGlzLl9vcGVuZWRTbmFja0JhclJlZjtcbiAgfVxuXG4gIC8qKiBBbmltYXRlcyB0aGUgb2xkIHNuYWNrIGJhciBvdXQgYW5kIHRoZSBuZXcgb25lIGluLiAqL1xuICBwcml2YXRlIGFuaW1hdGVTbmFja0JhcihcbiAgICBzbmFja0JhclJlZjogQmFvU25hY2tCYXJSZWY8YW55PixcbiAgICBjb25maWc6IEJhb1NuYWNrQmFyQ29uZmlnXG4gICkge1xuICAgIC8vIFdoZW4gdGhlIHNuYWNrYmFyIGlzIGRpc21pc3NlZCwgY2xlYXIgdGhlIHJlZmVyZW5jZSB0byBpdC5cbiAgICBzbmFja0JhclJlZi5hZnRlckRpc21pc3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAvLyBDbGVhciB0aGUgc25hY2tiYXIgcmVmIGlmIGl0IGhhc24ndCBhbHJlYWR5IGJlZW4gcmVwbGFjZWQgYnkgYSBuZXdlciBzbmFja2Jhci5cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcWVxZXFcbiAgICAgIGlmICh0aGlzLl9vcGVuZWRTbmFja0JhclJlZiA9PSBzbmFja0JhclJlZikge1xuICAgICAgICB0aGlzLl9vcGVuZWRTbmFja0JhclJlZiA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIGlmIChjb25maWcuYW5ub3VuY2VtZW50TWVzc2FnZSkge1xuICAgICAgICB0aGlzLl9saXZlLmNsZWFyKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5fb3BlbmVkU25hY2tCYXJSZWYpIHtcbiAgICAgIC8vIElmIGEgc25hY2sgYmFyIGlzIGFscmVhZHkgaW4gdmlldywgZGlzbWlzcyBpdCBhbmQgZW50ZXIgdGhlXG4gICAgICAvLyBuZXcgc25hY2sgYmFyIGFmdGVyIGV4aXQgYW5pbWF0aW9uIGlzIGNvbXBsZXRlLlxuICAgICAgdGhpcy5fb3BlbmVkU25hY2tCYXJSZWYuYWZ0ZXJEaXNtaXNzZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBzbmFja0JhclJlZi5jb250YWluZXJJbnN0YW5jZS5lbnRlcigpO1xuICAgICAgfSk7XG4gICAgICB0aGlzLl9vcGVuZWRTbmFja0JhclJlZi5kaXNtaXNzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIElmIG5vIHNuYWNrIGJhciBpcyBpbiB2aWV3LCBlbnRlciB0aGUgbmV3IHNuYWNrIGJhci5cbiAgICAgIHNuYWNrQmFyUmVmLmNvbnRhaW5lckluc3RhbmNlLmVudGVyKCk7XG4gICAgfVxuXG4gICAgLy8gSWYgYSBkaXNtaXNzIHRpbWVvdXQgaXMgcHJvdmlkZWQsIHNldCB1cCBkaXNtaXNzIGJhc2VkIG9uIGFmdGVyIHRoZSBzbmFja2JhciBpcyBvcGVuZWQuXG4gICAgaWYgKGNvbmZpZy5kdXJhdGlvbiAmJiBjb25maWcuZHVyYXRpb24gPiAwKSB7XG4gICAgICBzbmFja0JhclJlZlxuICAgICAgICAuYWZ0ZXJPcGVuZWQoKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHNuYWNrQmFyUmVmLmRpc21pc3NBZnRlcihjb25maWcuZHVyYXRpb24pKTtcbiAgICB9XG5cbiAgICBpZiAoY29uZmlnLmFubm91bmNlbWVudE1lc3NhZ2UpIHtcbiAgICAgIHZvaWQgdGhpcy5fbGl2ZS5hbm5vdW5jZShjb25maWcuYW5ub3VuY2VtZW50TWVzc2FnZSwgY29uZmlnLnBvbGl0ZW5lc3MpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IG92ZXJsYXkgYW5kIHBsYWNlcyBpdCBpbiB0aGUgY29ycmVjdCBsb2NhdGlvbi5cbiAgICogQHBhcmFtIGNvbmZpZyBUaGUgdXNlci1zcGVjaWZpZWQgc25hY2sgYmFyIGNvbmZpZy5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlT3ZlcmxheShjb25maWc6IEJhb1NuYWNrQmFyQ29uZmlnKTogT3ZlcmxheVJlZiB7XG4gICAgY29uc3Qgb3ZlcmxheUNvbmZpZyA9IG5ldyBPdmVybGF5Q29uZmlnKCk7XG4gICAgb3ZlcmxheUNvbmZpZy5kaXJlY3Rpb24gPSBjb25maWcuZGlyZWN0aW9uO1xuXG4gICAgY29uc3QgcG9zaXRpb25TdHJhdGVneSA9IHRoaXMuX292ZXJsYXkucG9zaXRpb24oKS5nbG9iYWwoKTtcbiAgICAvLyBTZXQgaG9yaXpvbnRhbCBwb3NpdGlvbi5cbiAgICBjb25zdCBpc1J0bCA9IGNvbmZpZy5kaXJlY3Rpb24gPT09ICdydGwnO1xuICAgIGNvbnN0IGlzTGVmdCA9XG4gICAgICBjb25maWcuaG9yaXpvbnRhbFBvc2l0aW9uID09PSAnbGVmdCcgfHxcbiAgICAgIChjb25maWcuaG9yaXpvbnRhbFBvc2l0aW9uID09PSAnc3RhcnQnICYmICFpc1J0bCkgfHxcbiAgICAgIChjb25maWcuaG9yaXpvbnRhbFBvc2l0aW9uID09PSAnZW5kJyAmJiBpc1J0bCk7XG4gICAgY29uc3QgaXNSaWdodCA9ICFpc0xlZnQgJiYgY29uZmlnLmhvcml6b250YWxQb3NpdGlvbiAhPT0gJ2NlbnRlcic7XG4gICAgaWYgKGlzTGVmdCkge1xuICAgICAgcG9zaXRpb25TdHJhdGVneS5sZWZ0KCcwJyk7XG4gICAgfSBlbHNlIGlmIChpc1JpZ2h0KSB7XG4gICAgICBwb3NpdGlvblN0cmF0ZWd5LnJpZ2h0KCcwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3kuY2VudGVySG9yaXpvbnRhbGx5KCk7XG4gICAgfVxuICAgIC8vIFNldCBob3Jpem9udGFsIHBvc2l0aW9uLlxuICAgIGlmIChjb25maWcudmVydGljYWxQb3NpdGlvbiA9PT0gJ3RvcCcpIHtcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3kudG9wKCcwJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3kuYm90dG9tKCcwJyk7XG4gICAgfVxuXG4gICAgb3ZlcmxheUNvbmZpZy5wb3NpdGlvblN0cmF0ZWd5ID0gcG9zaXRpb25TdHJhdGVneTtcbiAgICByZXR1cm4gdGhpcy5fb3ZlcmxheS5jcmVhdGUob3ZlcmxheUNvbmZpZyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbmplY3RvciB0byBiZSB1c2VkIGluc2lkZSBvZiBhIHNuYWNrIGJhciBjb21wb25lbnQuXG4gICAqIEBwYXJhbSBjb25maWcgQ29uZmlnIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSBzbmFjayBiYXIuXG4gICAqIEBwYXJhbSBzbmFja0JhclJlZiBSZWZlcmVuY2UgdG8gdGhlIHNuYWNrIGJhci5cbiAgICovXG4gIHByaXZhdGUgY3JlYXRlSW5qZWN0b3I8VD4oXG4gICAgY29uZmlnOiBCYW9TbmFja0JhckNvbmZpZyxcbiAgICBzbmFja0JhclJlZjogQmFvU25hY2tCYXJSZWY8VD5cbiAgKTogUG9ydGFsSW5qZWN0b3Ige1xuICAgIGNvbnN0IHVzZXJJbmplY3RvciA9XG4gICAgICBjb25maWcgJiYgY29uZmlnLnZpZXdDb250YWluZXJSZWYgJiYgY29uZmlnLnZpZXdDb250YWluZXJSZWYuaW5qZWN0b3I7XG5cbiAgICByZXR1cm4gbmV3IFBvcnRhbEluamVjdG9yKFxuICAgICAgdXNlckluamVjdG9yIHx8IHRoaXMuX2luamVjdG9yLFxuICAgICAgbmV3IFdlYWtNYXA8YW55LCBhbnk+KFtcbiAgICAgICAgW0Jhb1NuYWNrQmFyUmVmLCBzbmFja0JhclJlZl0sXG4gICAgICAgIFtCQU9fU05BQ0tfQkFSX0RBVEEsIGNvbmZpZy5kYXRhXVxuICAgICAgXSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
package/esm2020/public-api.mjs
CHANGED
|
@@ -24,4 +24,5 @@ export * from './lib/modal';
|
|
|
24
24
|
export * from './lib/hyperlink';
|
|
25
25
|
export * from './lib/dropdown-menu';
|
|
26
26
|
export * from './lib/file';
|
|
27
|
-
|
|
27
|
+
export * from './lib/snack-bar';
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdWkvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyxzQkFBc0IsQ0FBQztBQUNyQyxjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjMgVmlsbGUgZGUgTW9udHJlYWwuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG4gKiBTZWUgTElDRU5TRSBmaWxlIGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGZ1bGwgbGljZW5zZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFvLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9idXR0b24vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaWNvbi9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hbGVydC9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9icmVhZGNydW1iL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NhcmQvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYmFkZ2UvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGFnL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2hlYWRlci1pbmZvL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2xpc3QvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hlY2tib3gvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmFkaW8vaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tbW9uLWNvbXBvbmVudHMvaW5kZXgnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3VtbWFyeS9pbmRleCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXZhdGFyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYnMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaHlwZXJsaW5rJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Ryb3Bkb3duLW1lbnUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zbmFjay1iYXInO1xuIl19
|